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...

Code
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':

Code
[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:

Code
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.
smile

Last edited by Bavarese; 05/09/15 10:56 AM.