Memory setup - UncleBod/z88dk GitHub Wiki

How the memory map works

All of MZ-80x/MZ700/MZ800 have a character VRAM that is not counted in the total memory of the machine. In most cases it is placed at $D000 and upwards. All machines except MZ-80K/C have a memory banking system that can change the memory map in different ways. The exact commands to swap the banks differs between the machines. Computers also differs in if they use memory mapped I/O or the Z80s IN/OUT commands

Memmory mapped I/O MZ-80A

Address Memory Read Memory Write Device
E000 D7 : Resets cursor timer 8255
D3 ~ D0 : Key strobe 8255
E001 D7 ~ D0 : Key data 8255
E002 D7 : V-Blank D3 : Motor ON/OFF (cassette) 8255
D6 : Status of cursor timer D2 : Masking of timer interrupt 8255
D5 : Read data (cassette) D1 ; Write data (cassette) 8255
D4 : READ/WRITE status (cassette) D0 : V-Gate 8255
E003 Mode control 8255
E004 Setting of counter #0 8253
E005 Reading of counter # 1 Setting of counter # 1 8253
E006 Reading of counter #2 Setting of counter #2 8253
E007 Mode control 8253
E008 D7 : Status of tempo timer
D„ : H-Blank
D0 ; Sound ON/OFF
EOOC Memory swap
E010 Resets memory swap
E014 Normal (CRT display)
E015 Reverse (CRT display)
E200 Roll up/roll down
E2FF
⚠️ **GitHub.com Fallback** ⚠️