Z80 port map: Difference between revisions
Jump to navigation
Jump to search
(Mirroring infos) |
m (Note about port $C0) |
||
Line 44: | Line 44: | ||
|} | |} | ||
Note that the [[M1 ROM|Z80 ROM]] bank selection is done by '''reading''' ports. | Note that the [[M1 ROM|Z80 ROM]] [[Z80 bankswitching|bank selection]] is done by '''reading''' ports. | ||
SNK used an obscure feature of the Z80: when accessing ports, the entire address bus is set, not only the lower 8 bits. | SNK used an obscure feature of the Z80: when accessing ports, the entire address bus is set, not only the lower 8 bits. | ||
Line 50: | Line 50: | ||
The banks can then be chosen by putting the bank number in B, the port number in C and doing IN A,(C). | The banks can then be chosen by putting the bank number in B, the port number in C and doing IN A,(C). | ||
This is handled by {{Chipname|NEO-ZMC}} in cartridges. | This is handled by {{Chipname|NEO-ZMC}} in cartridges. | ||
Some [[sound driver]]s use port $C0 (and others ?) in their code. Since only SDA2 and SDA3 are used for port decoding, port $C0 maps to a mirror of port $00. It's believed to be a remnant of some development tool. | |||
[[Category:Base system]] | [[Category:Base system]] |
Revision as of 05:23, 3 November 2016
Some infos from User:kyuusaku
The decode mask for reading ports is always $0C. The one for writes is indicated for each case.
Address | Read | Write | Decode mask |
$00 | Clear sound code from 68k to $00 | $0C | |
$04 | YM2610 I/O | ||
$08 | Set $F000~$F7FF bank | Enable NMIs | $1C |
$09 | Set $E000~$EFFF bank | ||
$0A | Set $C000~$DFFF bank | ||
$0B | Set $8000~$BFFF bank | ||
$0C | See SDRD1 | Reply to 68k | $0C |
$18 | See address $08 | Disable NMIs | $1C |
Note that the Z80 ROM bank selection is done by reading ports.
SNK used an obscure feature of the Z80: when accessing ports, the entire address bus is set, not only the lower 8 bits.
The banks can then be chosen by putting the bank number in B, the port number in C and doing IN A,(C). This is handled by NEO-ZMC in cartridges.
Some sound drivers use port $C0 (and others ?) in their code. Since only SDA2 and SDA3 are used for port decoding, port $C0 maps to a mirror of port $00. It's believed to be a remnant of some development tool.