Switchable I/O ports
When a value is written to the register 40h, this allows to access to the corresponding device(s) via ports 41h~4Fh. The value is an ID to select the device(s).
Here are the reserved or used IDs so far:
ID | Devices |
---|---|
1 | ASCII/Microsoft |
2 | Canon |
3 | Casio |
4 | Fujitsu |
5 | General |
6 | Hitachi |
7 | Kyocera |
8 | Matsushita (Used for MSX2+) |
9 | Mitsubishi |
10 | NEC |
11 | Yamaha |
12 | JVC |
13 | Philips |
14 | Pioneer |
15 | Sanyo |
16 | Sharp |
17 | SONY |
18 | Spectravideo |
19 | Toshiba |
20 | Mitsumi |
21 | Telematica |
22 | Gradiente |
23 | Sharp Brazil |
24 | GoldStar (LG) |
25 | Daewoo |
26 | Samsung |
128 | Matsushita's Image Scanner |
165 | WORP3 |
170 | SuperSoniqs's Darky |
171 | SuperSoniqs's Darky second setting |
212 | 1chipMSX / Zemmix Neo (KdL firmware) |
254 | ASCII's MPS2 |
ID numbers between 1 and 127 are ID numbers for MSX manufacturers for built-in devices, and ID numbers 128 to 254 are for external devices.
Writing 0 (or an unused value) to port 40h disables extended I/O ports.
Example of use with Panasonic MSX2+:
- Write value 8 at port 40h to enable extended I/O ports for Panasonic MSX2+.
- Read the port 040h. If the value read is 247, it is that it is a Panasonic MSX2+ having a Z80 with turbo mode (5.37MHz).
- You can therefore write 0 to port 41h to activate turbo mode or 1 to deactivate it. Reading bit 0 of this port will tell you the current mode and bit 7 will show you the internal software switch state (0 for Off).