Z80 port map: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
mNo edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 20: | Line 20: | ||
|- | |- | ||
|$08 | |$08 | ||
|Set [[Z80 | |Set [[Z80|window 0]] bank | ||
|rowspan="4"|Enable NMIs | |rowspan="4"|Enable NMIs | ||
|rowspan="4"|$1C | |rowspan="4"|$1C | ||
|- | |- | ||
|$09 | |$09 | ||
|Set | |Set window 1 bank | ||
|- | |- | ||
|$0A | |$0A | ||
|Set | |Set window 2 bank | ||
|- | |- | ||
|$0B | |$0B | ||
|Set | |Set window 3 bank | ||
|- | |- | ||
|$0C | |$0C | ||
Line 44: | Line 44: | ||
|} | |} | ||
Note that the [[M1 | Note that the [[M1 ROM]] [[Z80|bankswitching]] is done by '''reading''' ports. | ||
SNK used an obscure feature of the Z80: when accessing ports, the | SNK used an obscure feature of the Z80: when accessing ports, the top address bus byte is set to register C. | ||
The banks can | The banks can be chosen by putting the bank number in C, and doing IN A,(port). | ||
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. | 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. |
Latest revision as of 09:19, 28 January 2024
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-$07 | YM2610 I/O | ||
$08 | Set window 0 bank | Enable NMIs | $1C |
$09 | Set window 1 bank | ||
$0A | Set window 2 bank | ||
$0B | Set window 3 bank | ||
$0C | See SDRD1 | Reply to 68k | $0C |
$18 | See address $08 | Disable NMIs | $1C |
Note that the M1 ROM bankswitching is done by reading ports.
SNK used an obscure feature of the Z80: when accessing ports, the top address bus byte is set to register C.
The banks can be chosen by putting the bank number in C, and doing IN A,(port). 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.