How to wire a simple ROM cartridge to connect to your MSX Computer.
From MSX BUS, each physical slot has a signal called /SLTSL, activate in low, which signals when CPU may want access physically that slot. Note that this signal do not specify if it is a memory read, memory write or even a memory refresh cycle (?).
Another interesting signals are: /CS1, /CS2, /CS12, activate in low, which signals when CPU want to read that memory address range. In this case, It’s for sure a memory read! BUT every slot will receive this signal, so you can not tell if this read attempt is for you or not.
Signal /CS1 activates when memory read address is between &H4000 and &H7FFF; signal /CS2 activates when memory read address is between &H8000 and &HBFFF; and /CS12 when address is between &H4000 and &HBFFF.
So to connect a simple ROM you’ll use two signals: /SLTSL to chip enable and /CS1 or /CS2 or /CS12 to output enable.
IMPORTANT: DO NOT use /SLTSL to control output enable (/OE) because it can be asserted in a memory write cycle, which will lead to a bus contention.
Summary
All examples below are pictured with a 64KB ROM (like 27C512) with all its data pins (D0..D7), addresses (A0..A13), Vcc and GND connected to the bus.
16KB cartridge (PAGE1, addresses &H4000..&H7FFF)
MSX | ROM |
---|---|
/CS1 | /OE |
/SLTSL | /CE |
A15 or GND | A14 |
GND | A15 |
16KB cartridge (PAGE2, addresses &H8000..&HBFFF)
MSX | ROM |
---|---|
/CS2 | /OE |
/SLTSL | /CE |
A14 or GND | A14 |
GND | A15 |
32KB cartridge (PAGES 1 and 2, addresses &H4000..&HBFFF)
MSX | ROM |
---|---|
/CS12 | /OE |
/SLTSL | /CE |
A15 | A14 |
GND | A15 |
64KB cartridge (all pages, maybe not useful but it’s possible)
MSX | ROM |
---|---|
/RD | /OE |
/SLTSL | /CE |
A14 | A14 |
A15 | A15 |