We might need 23-090B1 for a more faithful emulation, just like the PLA in a C-64.

I * guess * the E13 / 23-090B1 is a 256 x 8 lookup table; Needed for -external- DMA access to lower memory (shared between Z80 and 8088).

Even more important: the arbitration chip also decides which of the two CPUs (Z80 or 8088) has access to contended, shared memory (< 64 K).

We observe strange floppy errors on writes (even with newest wd_fdc code). One explanation is that the arbitration slows down RAM accesses and floppy routines currently run too fast. Just a theory... WAIT is also wired on the Z80, but i dont ´get´ the logic behind it.

E13 on Rainbow-100 B
https://dl.dropboxusercontent.com/u/37819653/ARBITRATOR.png

E11 on Rainbow-100 A
https://dl.dropboxusercontent.com/u/37819653/PC100_A__E11_Arbitrator_-_256_x_8.png

Full schematics:
MP01722_PC100-B_Rainbow_Schematic_Jul84.pdf

E13 inputs (A = address lines)
Code
+SH5 RF SH REQ H   -> Pin 19 (A7) shared memory request / refresh ?
+     1K -> +5 V   -> Pin 18 (A6) < UNUSED >
+SH 2 BDL ACK (L)  -> Pin 17 (A5) BUNDLE OPTION: IRQ acknowledged (*)
+SH 2 NONSHRCYC H  -> Pin 5 (A4) unshared memory cycle is in progress
+SH 2 PRECHARGE H  -> Pin 4 (A3) 
+SH 2 SHMUX 88 ENB -> Pin 3 (A2) shared memory
+SH2 DO REFRESH H  -> Pin 2 (A1) indicates that extended memory must be refreshed -> on J6 as (L)
+SH10 BDL REQ (L)  -> Pin 1 (A0) BUNDLE OPTION wishes to use shared memory  (*)

(*) BDL ACK + BDL REQ from external J4 connector

Additional header files required for the keyboard workaround (to test drive the Rainbow):
https://dl.dropboxusercontent.com/u/37819653/BANNISTER/RAINBOW-100_KEYBOARD_WORKAROUND.7z

Last edited by Bavarese; 05/03/15 04:01 PM.