Finally some
progress on the Rainbow driver:
First, the Z80 still wrote to reserved address space (...with GIT code).
Caused 8088 crashes - and Z80 test failures! Fall through wasn't right - see
correction below...
WRITE8_MEMBER(rainbow_state::share_z80_w)
{
if (m_zflip)
{
if (offset < 0x8000)
{
m_shared[offset + 0x8000] = data;
return; // [!]
}
else if (offset < 0x8800)
{
m_z80_private[offset & 0x7ff] = data; // SRAM
return; // [!]
}
m_shared[offset ^ 0x8000] = data;
}
else
{
if (offset < 0x800)
m_z80_private[offset] = data; // SRAM
else
m_shared[offset] = data;
}
return;
}
(Second)
* (from schematics) the
TEST input of the 8088 (active low) is wired to
IRQ_COMM_PTR_INTR_L - the built-in 7201 COMM/Printer interrupt.
This is used for on board tests (WAIT loop). See previous text about the unimplemented loopback.We really should fix the comm and printer in- and outputs to get the LK201 keyboard back on track.
Unfortunately I have no clue how to set 8251 baud rates or program the MPSC.So, what is left? A list of registers still unmapped in 'rainbow.c':
[06] : MPSC bit rates (see page 21 of PC 100 SPEC)
[0e] : PRINTER BIT RATE REGISTER (WO)
[40] COMMUNICATIONS DATA REGISTER (MPSC)
[41] PRINTER DATA REGISTER (MPSC)
[42] COMMUNICATIONS CONTROL / STATUS REGISTER (MPSC)
[43] PRINTER CONTROL / STATUS REGISTER (MPSC)
Mirror registers (?)
not correctly serviced in LK201:
0x12 R/W
':lk201:lk201_cpu' (0313): unmapped program memory read from 0012 & FF
':lk201:lk201_cpu' (0392): unmapped program memory read from 0012 & FF
':lk201:lk201_cpu' (0C7A): unmapped program memory read from 0012 & FF
':lk201:lk201_cpu' (0104): unmapped program memory write to 0012 = 00 & FF
':lk201:lk201_cpu' (0185): unmapped program memory write to 0012 = 40 & FF
':lk201:lk201_cpu' (0392): unmapped program memory write to 0012 = 01 & FF
0x13 Read
':lk201:lk201_cpu' (0112): unmapped program memory read from 0013 & FF
0x16 WRITE
':lk201:lk201_cpu' (0110): unmapped program memory write to 0016 = 81 & FF
':lk201:lk201_cpu' (0177): unmapped program memory write to 0016 = 00 & FF
0x17 R/W
':lk201:lk201_cpu' (0114): unmapped program memory read from 0017 & FF
':lk201:lk201_cpu' (0181): unmapped program memory write to 0017 = A7 & FF
0x1A READ
':lk201:lk201_cpu' (0175): unmapped program memory read from 001A & FF
0x1B READ
':lk201:lk201_cpu' (0179): unmapped program memory read from 001B & FF
Any hints are welcome! Thanks!
@R.Belmont: you made interesting statements back then
Are there new developments (or old code not yet in GIT)...?
It is unlikely i will be able to fix anything related to the 8251 / MPSC.