On Sun, Dec 8, 2024 at 12:39 PM Rob Jarratt via cctalk <
cctalk(a)classiccmp.org> wrote:
Hello everyone,
I am working on a Rainbow 100A which is showing a diagnostic code on the
lights at the back of 0110101. This is supposed to be Message 1 "Main Board
Video".
OK That's likely a failure of the main VT100 chips that's are buried inside
the Rainbow.
I have disassembled the 8088 firmware and checked
address traces with a
logic analyser and my suspicion is that actually this is something to do
with the interaction with the Z80 because it is reading a status from the
shared memory and then using that to set the status lights.
The video controller is connected directly to the 8088 side of the world.
The Z80
has to make calls to the 8088 to output to the screen.
I have been unable so far to work out where in the
ROMs the Z80 code lives
or where in the 8088 code it transfers it to the shared memory to allow the
Z80 to run.
https://github.com/shattered/retro-bios/blob/master/dec-rainbow100b/8086_DI…
has disassembled 8088 code.
https://github.com/shattered/retro-bios/blob/master/dec-rainbow100b/Z80_DIS…
has the Z80 code (so both are in the ROMs). This may be the 100B code, but
the two
models are quite similar in this detail.
You can look through the 8086 assembly, I think to find where this error
code is generated.
I looked at this stuff ages ago when I was getting Venix to run under
emulation, but that was 5
years ago now I think.
Can anyone tell me where the Z80 firmware is in the
ROMs? And does anyone
have any insight into the above error or have details of the interaction
between the Z80 and the 8088? The Technical Manual only goes so far
unfortunately.
You might look at the mame emulation of the Rainbow. It does a decent job
of things.
There's a 2k shared memory area between the Z80 and 8088 that they use to
do I/O.
The floppy is connected to the Z80, while the hard disk, keyboard and video
are connected
to the 8088. The 8088 loads the Z80 code by writing a magic value that
'flips' the mapping.
It then writes to the 'flipped' RAM and flips things back and restarts the
Z80.
bitsavers also has the schematics for both the 100A and 100B models. You
really need them
because they have the only documentation (or best documentation) for the
I/O ports that are
mapped. There is some registers documented in the TRM, but it's incomplete
in some details
at least if you are trying to write an emulator.
It's a bit of a shame that the MAME efforts have run into personality
issues that I'm not close
enough to to positively affect. As such, all rainbow efforts have stalled
for a couple of years now
and the port uses older interfaces that have proven resistant to recoding
in the new APIs.
Warner