Difference between revisions of "I/O Port Summary"
(→I/O Port Summary) |
|||
(100 intermediate revisions by 17 users not shown) | |||
Line 1: | Line 1: | ||
− | This is a list of all known I/O ports of the Amstrad CPC, including all [[Peripherals]]. For a list showing only the built-in standard addresses see [[Default I/O Port Summary]]. | + | This is a list of all known I/O ports of the Amstrad CPC, including all [[Peripherals]]. For a list showing only the built-in standard addresses see [[Default I/O Port Summary]]. The original list of I/O ports was taken from the [[FutureOS]] handbook. |
− | + | == I/O Port Summary == | |
− | + | Note: While most of these devices can be reached via a range of addresses due to the partial address decoding, code should never use any address other than the canonical one (all 'x'/don't care positions filled by 1's). Otherwise multiple devices will be enabled simultaneously, which is unlikely to be what you want. | |
+ | |||
+ | {| class="wikitable" | ||
+ | !I/O | ||
+ | !Decoded as | ||
+ | !Port | ||
+ | !Read | ||
+ | !Write | ||
|- | |- | ||
|#1C00||%x0xxxx00 xxxxxxxx||[[Dk'tronics Lightpen]] faulty mirror of #BCXX [[CRTC]] Index|| - ||Write | |#1C00||%x0xxxx00 xxxxxxxx||[[Dk'tronics Lightpen]] faulty mirror of #BCXX [[CRTC]] Index|| - ||Write | ||
Line 8: | Line 15: | ||
|#1F00||%x0xxxx11 xxxxxxxx||[[Dk'tronics Lightpen]] faulty mirror of #BFXX [[CRTC]] Data In|| Read || - | |#1F00||%x0xxxx11 xxxxxxxx||[[Dk'tronics Lightpen]] faulty mirror of #BFXX [[CRTC]] Data In|| Read || - | ||
|- | |- | ||
− | |#78XX|| | + | |#78XX||%0xxxx000 xxxxxxxx||[[CPC4MB|4Mb Memory extension]]||-||Write |
|- | |- | ||
− | |#79XX|| | + | |#79XX||%0xxxx001 xxxxxxxx||[[CPC4MB|4Mb Memory extension]]||-||Write |
|- | |- | ||
− | |#7AXX|| | + | |#7AXX||%0xxxx010 xxxxxxxx||[[CPC4MB|4Mb Memory extension]]||-||Write |
|- | |- | ||
− | |#7BXX|| | + | |#7BXX||%0xxxx011 xxxxxxxx||[[CPC4MB|4Mb Memory extension]]||-||Write |
|- | |- | ||
− | |#7CXX|| | + | |#7CXX||%0xxxx100 xxxxxxxx||[[CPC4MB|4Mb Memory extension]]||-||Write |
|- | |- | ||
− | |# | + | |#7CXX||%0xxxxx00 xxxxxxxx||[[Aleste 520EX]] RAM Mapper page 0 (extended "Gate Array 3")||Read||Write |
|- | |- | ||
− | |# | + | |#7DXX||%0xxxx101 xxxxxxxx||[[CPC4MB|4Mb Memory extension]]||-||Write |
|- | |- | ||
− | |#7FXX|| | + | |#7DXX||%0xxxxx01 xxxxxxxx||[[Aleste 520EX]] RAM Mapper page 1 (extended "Gate Array 3")||Read||Write |
+ | |- | ||
+ | |#7EXX||%0xxxx110 xxxxxxxx||[[CPC4MB|4Mb Memory extension]]||-||Write | ||
+ | |- | ||
+ | |#7EXX||%0xxxxx10 xxxxxxxx||[[Aleste 520EX]] RAM Mapper page 2 (extended "Gate Array 3")||Read||Write | ||
+ | |||
+ | |- | ||
+ | |||
+ | |#7EXX||%0xxxxxx0 xxxxxxxx||[[Y-MEM]] 512K RAM Expansion part||Read||Write | ||
+ | |||
+ | |- | ||
+ | |#7FXX||%0xxxx111 xxxxxxxx||[[CPC4MB|4Mb Memory extension]]||-||Write | ||
+ | |- | ||
+ | |#7FXX||%0xxxxx11 xxxxxxxx||[[Aleste 520EX]] RAM Mapper page 3 (extended "Gate Array 3")||Read||Write | ||
+ | |- | ||
+ | |||
+ | |#7FXX||%0xxxxxx1 xxxxxxxx||[[X-MEM]] 512K RAM Expansion part||Read||Write | ||
|- | |- | ||
|#7FXX||?||[[Dk'tronics memory expansion]]||-||Write | |#7FXX||?||[[Dk'tronics memory expansion]]||-||Write | ||
Line 30: | Line 53: | ||
|#7FXX||%01xxxxxx xxxxxxxx||[[Gate Array]]||-||Write | |#7FXX||%01xxxxxx xxxxxxxx||[[Gate Array]]||-||Write | ||
|- | |- | ||
− | |#7FXX||%0xxxxxxx xxxxxxxx|| | + | |#7FXX||%0xxxxxxx xxxxxxxx||[[PAL16L8]] extension to [[Gate Array]] for 128K RAM banking||-||Write |
|- | |- | ||
|#BCXX||%x0xxxx00 xxxxxxxx||6845 [[CRTC]] Index|| - ||Write | |#BCXX||%x0xxxx00 xxxxxxxx||6845 [[CRTC]] Index|| - ||Write | ||
Line 40: | Line 63: | ||
|#BFXX||%x0xxxx11 xxxxxxxx||6845 [[CRTC]] Data In (as far as supported)||Read|| - | |#BFXX||%x0xxxx11 xxxxxxxx||6845 [[CRTC]] Data In (as far as supported)||Read|| - | ||
|- | |- | ||
− | |#DFXX||%xx0xxxxx xxxxxxxx||[[Upper ROM Bank Number]]|| - ||Write | + | |#DFXX||%xx0xxxxx xxxxxxxx||[[Upper ROM Bank Number]] (as decoded within CPC664, CPC6128, 464+, 6128+, decoding in ROM expansions may be different)|| - ||Write |
+ | |- | ||
+ | |#ECXX||%xxx0xx00 xxxxxxxx||[[KC Compact]] CIO Port B (timer)|| Read ||Write | ||
+ | |- | ||
+ | |#EDXX||%xxx0xx01 xxxxxxxx||[[KC Compact]] CIO Port C (timer)|| Read ||Write | ||
+ | |- | ||
+ | |#EEXX||%xxx0xx10 xxxxxxxx||[[KC Compact]] CIO Control|| Read ||Write | ||
+ | |- | ||
+ | |#EEXX||%xxx0xxx0 xxxxxxxx||[[Aleste 520EX]] USART 8251 (RS232/Mouse) Data|| Read ||Write | ||
+ | |- | ||
+ | |#EFXX||%xxx0xx11 xxxxxxxx||[[KC Compact]] CIO Port A (Bi-drectional [[Printer Port]])|| Read ||Write | ||
+ | |- | ||
+ | |#EFXX||%xxx0xxx1 xxxxxxxx||[[Aleste 520EX]] USART 8251 (RS232/Mouse) Control/Status|| Read ||Write | ||
|- | |- | ||
|#EFXX||%xxx0xxxx xxxxxxxx||[[Printer Port]]|| - ||Write | |#EFXX||%xxx0xxxx xxxxxxxx||[[Printer Port]]|| - ||Write | ||
+ | |- | ||
+ | |#F0E0||?||[[Draysoft Doubler]] External Tape Data Input (Bit5)||Read|| - | ||
|- | |- | ||
|#F4XX||%xxxx0x00 xxxxxxxx||[[8255]] PIO Port A ([[PSG]] Data)||Read||Write | |#F4XX||%xxxx0x00 xxxxxxxx||[[8255]] PIO Port A ([[PSG]] Data)||Read||Write | ||
Line 52: | Line 89: | ||
|#F7XX||%xxxx0x11 xxxxxxxx||[[8255]] PIO Control-Register|| - ||Write | |#F7XX||%xxxx0x11 xxxxxxxx||[[8255]] PIO Control-Register|| - ||Write | ||
|- | |- | ||
− | |# | + | |#F880-#F88F||%1111100x 1000xxxx||[[PlayCity]] Expansion CTC channels and YMZ data|| - || Write |
|- | |- | ||
− | |# | + | |#F890-#F89F||%1111100x 1--1xxxx||[[MultiPlay]] Expansion (mirror port, use #F9xx)|| Read || - |
+ | |- | ||
+ | |#F8A0-#F8AF||%11111000 1010xxxx||[[X-CPC]] ClockPort RTC|| Read || Write | ||
+ | |- | ||
+ | |#F8B0||?||[[VIDI digitizer|Vidi-CPC Video-Digitiser]], CRTC Index||?||Write | ||
+ | |- | ||
+ | |#F8B1||?||[[VIDI digitizer|Vidi-CPC Video-Digitiser]], CRTC Data||?||Write | ||
|- | |- | ||
|#F8DC||?||[[CPCI RS232 Interface|CPCI Serial Interface]] MC6850 Control/Status||Read||Write | |#F8DC||?||[[CPCI RS232 Interface|CPCI Serial Interface]] MC6850 Control/Status||Read||Write | ||
Line 62: | Line 105: | ||
|#F8E0||?||[[DHCP MIDI Interface]]||Read||Write | |#F8E0||?||[[DHCP MIDI Interface]]||Read||Write | ||
|- | |- | ||
− | |#F8E0|| | + | |#F8E0||%11111000 11100000||[[Schneider RS232 Interface]] Z80-STI Indirect Data Register||Read||Write |
|- | |- | ||
− | |#F8E1|| | + | |#F8E1||%11111000 11100001||[[Schneider RS232 Interface]] Z80-STI General Purpose I/O Data Register||Read||Write |
+ | |- | ||
+ | |#F8E2||%11111000 11100010||[[Schneider RS232 Interface]] Z80-STI Interrupt Pending Register B (unused)||Read||Write | ||
+ | |- | ||
+ | |#F8E2||?||[[Universeller EPROM Programmer 4004|Dobbertin Eprommer 4003]]||?||? | ||
+ | |- | ||
+ | |#F8E3||%11111000 11100011||[[Schneider RS232 Interface]] Z80-STI Interrupt Pending Register A (unused)||Read||Write | ||
+ | |- | ||
+ | |#F8E3||?||[[Universeller EPROM Programmer 4004|Dobbertin Eprommer 4003]]||?||? | ||
+ | |- | ||
+ | |#F8E4||%11111000 11100100||[[Schneider RS232 Interface]] Z80-STI Interrupt in-Service Register B (unused)||Read||Write | ||
+ | |- | ||
+ | |#F8E4||?||[[Universeller EPROM Programmer 4004|Dobbertin Eprommer 4003]]||?||? | ||
+ | |- | ||
+ | |#F8E5||%11111000 11100101||[[Schneider RS232 Interface]] Z80-STI Interrupt in-Service Register A (unused)||Read||Write | ||
+ | |- | ||
+ | |#F8E6||%11111000 11100110||[[Schneider RS232 Interface]] Z80-STI Interrupt Mask Register B (unused)||Read||Write | ||
|- | |- | ||
|#F8E6||?||Port A - [[IDE8255]]||?||? | |#F8E6||?||Port A - [[IDE8255]]||?||? | ||
+ | |- | ||
+ | |#F8E7||%11111000 11100111||[[Schneider RS232 Interface]] Z80-STI Interrupt Mask Register A (unused)||Read||Write | ||
|- | |- | ||
|#F8E7||?||Port C - [[IDE8255]]||?||? | |#F8E7||?||Port C - [[IDE8255]]||?||? | ||
|- | |- | ||
− | |#F8E8|| | + | |#F8E8||%11111000 11101000||[[Schneider RS232 Interface]] Z80-STI Indirect Index and Interrupt Vector Register||Read||Write |
|- | |- | ||
|#F8E8||?||[[Music Machine]] Interrupt Sel|| - ||Write | |#F8E8||?||[[Music Machine]] Interrupt Sel|| - ||Write | ||
|- | |- | ||
− | |#F8EC|| | + | |#F8E9||%11111000 11101001||[[Schneider RS232 Interface]] Z80-STI Timers A and B Control Register (unused)||Read||Write |
+ | |- | ||
+ | |#F8EA||%11111000 11101010||[[Schneider RS232 Interface]] Z80-STI Timer B Data Register (unused)||Read||Write | ||
+ | |- | ||
+ | |#F8EB||%11111000 11101011||[[Schneider RS232 Interface]] Z80-STI Timer A Data Register (unused)||Read||Write | ||
+ | |- | ||
+ | |#F8EC||%11111000 11101100||[[Schneider RS232 Interface]] Z80-STI USART Control Register||Read||Write | ||
|- | |- | ||
|#F8EC||?||[[Music Machine]] ACIA Control|| - ||Write | |#F8EC||?||[[Music Machine]] ACIA Control|| - ||Write | ||
Line 80: | Line 147: | ||
|#F8ED||?||[[Music Machine]] ACIA Data Write|| - || Write | |#F8ED||?||[[Music Machine]] ACIA Data Write|| - || Write | ||
|- | |- | ||
− | |#F8ED|| | + | |#F8ED||%11111000 11101101||[[Schneider RS232 Interface]] Z80-STI Receiver Status Register||Read||Write |
|- | |- | ||
|#F8EE||?||[[Music Machine]] ACIA Status||Read|| - | |#F8EE||?||[[Music Machine]] ACIA Status||Read|| - | ||
|- | |- | ||
− | |#F8EE|| | + | |#F8EE||%11111000 11101110||[[Schneider RS232 Interface]] Z80-STI Transmitter Status Register||Read||Write |
|- | |- | ||
− | |#F8EF|| | + | |#F8EF||%11111000 11101111||[[Schneider RS232 Interface]] Z80-STI USART Data Register||Read||Write |
|- | |- | ||
|#F8EF||?||[[Music Machine]] ACIA Data Read||Read|| - | |#F8EF||?||[[Music Machine]] ACIA Data Read||Read|| - | ||
|- | |- | ||
− | |# | + | |#F8FX||%xxxxx0xx 1111NNNx||[[Maplins 8bit Input Port]] and [[Maplins Weather Satellite Receiver]]||Read|| - |
|- | |- | ||
|#F8F0||?||[[Music Machine]] DAC Write|| - ||Write | |#F8F0||?||[[Music Machine]] DAC Write|| - ||Write | ||
Line 96: | Line 163: | ||
|#F8F2||?||[[EMR MIDI Interface]]|| - ||Write | |#F8F2||?||[[EMR MIDI Interface]]|| - ||Write | ||
|- | |- | ||
− | |#F8F2||?||[[Universeller EPROM Programmer 4004|Dobbertin Eprommer 4003]]|| | + | |#F8F2||?||[[Universeller EPROM Programmer 4004|Dobbertin Eprommer 4003]]||Read||Write |
+ | |- | ||
+ | |- | ||
+ | |#F8F2||?||[[EMR MIDI Interface]]||Read||Write | ||
|- | |- | ||
|#F8F4||?||[[Music Machine]] ADC Read||Read|| - | |#F8F4||?||[[Music Machine]] ADC Read||Read|| - | ||
+ | |||
+ | |- | ||
+ | |#F8F5||?||[[ARA Video Digitizer]] - Read Sync Signal (bit0)||Read|| - | ||
|- | |- | ||
|#F8F8||?||[[Music Machine]] ADC Start|| - ||Write | |#F8F8||?||[[Music Machine]] ADC Start|| - ||Write | ||
|- | |- | ||
− | |# | + | |#F8F8||?||[[ANTA 64K Memory Expansion]] ANTA 64k.3 latch||Read||Write |
|- | |- | ||
− | |# | + | |#F8FE||%11111000 11111110||[[Z-MEM]] Software Memory Configuration|| - || Write |
|- | |- | ||
− | |#F9B0||?||[[VIDI digitizer|Vidi-CPC Video-Digitiser]]||?||? | + | |#F8FF||%1111100x 111xxxxx||[[CPCISA|CPCISA control port]]|| - ||Write |
+ | |- | ||
+ | |#F8FF||%xxxxx0xx 111111xx||[[Peripheral Soft Reset]] (MC_BOOT_PROGRAM and MC_START_PROGRAM do OUT [F8FF],FF)|| - ||Write | ||
+ | |- | ||
+ | |#F980-#F98F||%1111100x 1000xxxx||[[PlayCity]] Expansion CTC channels (mirror) and YMZ registers|| - || Write | ||
+ | |- | ||
+ | |#F990-#F99F||%1111100x 1--1xxxx||[[MultiPlay]] Expansion|| Read || - | ||
+ | |- | ||
+ | |#F9A0-#F9AF||%11111001 1010xxxx||[[X-CPC]] ClockPort SPR|| Read || Write | ||
+ | |- | ||
+ | |#F9B0||?||[[VIDI digitizer|Vidi-CPC Video-Digitiser]], Config (W) and Capture Data (R)||Read||Write | ||
+ | |- | ||
+ | |#F9D0||%11111000 11010000||[[Sid|SwinSID part of SONIQUE Sound Board WIP]] by [[User:DaDMaN|DaDMaN]] SwinSID1 + SwinSID2 DATA (MONO Mode / 3 Channels)||-||Write | ||
+ | |- | ||
+ | |#F9D1||%11111000 11010001||[[Sid|SwinSID part of SONIQUE Sound Board WIP]] by [[User:DaDMaN|DaDMaN]] SwinSID1 (LEFT) DATA (STEREO Mode / 6 Channels)||-||Write | ||
+ | |- | ||
+ | |#F9D2||%11111000 11010010||[[Sid|SwinSID part of SONIQUE Sound Board WIP]] by [[User:DaDMaN|DaDMaN]] SwinSID2 (RIGHT) DATA (STEREO Mode / 6 Channels)||-||Write | ||
+ | |- | ||
+ | |#F9DC||?||[[Panda Electronics Communications Interface Unit]] PPI Port A - 8bit Printer data||Read||Write | ||
+ | |- | ||
+ | |#F9DD||?||[[Panda Electronics Communications Interface Unit]] PPI Port B - 8bit general purpose I/O port||Read||Write | ||
+ | |- | ||
+ | |#F9DE||?||[[Panda Electronics Communications Interface Unit]] PPI Port C - Handshake (bit0=Strobe.out, Bit5=Busy.in)||Read||Write | ||
+ | |- | ||
+ | |#F9DF||?||[[Panda Electronics Communications Interface Unit]] PPI Control - 8bit Printer data|| - ||Write | ||
|- | |- | ||
|#F9E6||?||Port B - [[IDE8255]]||?||? | |#F9E6||?||Port B - [[IDE8255]]||?||? | ||
|- | |- | ||
|#F9E7||?||RS Port - [[IDE8255]]||?||? | |#F9E7||?||RS Port - [[IDE8255]]||?||? | ||
+ | |- | ||
+ | |#F9F5||?||[[ARA Video Digitizer]] - Reset 10bit Config Value|| - ||Write | ||
|- | |- | ||
|#F9F7||?||[[Grafpad II|Hegotron grafpad II]]||?||? | |#F9F7||?||[[Grafpad II|Hegotron grafpad II]]||?||? | ||
Line 119: | Line 218: | ||
|- | |- | ||
|#FA7E||%xxxxx0x0 0xxxxxxx||Floppy Motor Control (for [[765 FDC]])|| - ||Write | |#FA7E||%xxxxx0x0 0xxxxxxx||Floppy Motor Control (for [[765 FDC]])|| - ||Write | ||
+ | |- | ||
+ | |#FABC||%xxxxx0x0 10xxxx00||[[Aleste 520EX]] EXTPORT with CS53: Forward PPI Port A to 8253 Timer 0|| - ||Write | ||
+ | |- | ||
+ | |#FABD||%xxxxx0x0 10xxxx01||[[Aleste 520EX]] EXTPORT with CS53: Forward PPI Port A to 8253 Timer 1|| - ||Write | ||
+ | |- | ||
+ | |#FABE||%xxxxx0x0 10xxxx10||[[Aleste 520EX]] EXTPORT with CS53: Forward PPI Port A to 8253 Timer 2|| - ||Write | ||
+ | |- | ||
+ | |#FABF||%xxxxx0x0 10xxxx11||[[Aleste 520EX]] EXTPORT with CS53: Forward PPI Port A to 8253 Control|| - ||Write | ||
+ | |- | ||
+ | |#FABF||%xxxxx0x0 10xxxxxx||[[Aleste 520EX]] EXTPORT (config for internal hardware)|| - ||Write | ||
+ | |- | ||
+ | |#FAD0||%11111010 11010000||[[Sid|SwinSID part of SONIQUE Sound Board WIP]] by [[User:DaDMaN|DaDMaN]] Select SID (1&2) Register MONO mode||-||Write | ||
+ | |- | ||
+ | |#FAD1||%11111010 11010001||[[Sid|SwinSID part of SONIQUE Sound Board WIP]] by [[User:DaDMaN|DaDMaN]] Select SID1 Register||-||Write | ||
+ | |- | ||
+ | |#FAD2||%11111010 11010010||[[Sid|SwinSID part of SONIQUE Sound Board WIP]] by [[User:DaDMaN|DaDMaN]] Select SID2 Register||-||Write | ||
|- | |- | ||
|#FADC||?||[[Amstrad Serial Interface]] Z80-SIO / DART port A Data Register||Read||Write | |#FADC||?||[[Amstrad Serial Interface]] Z80-SIO / DART port A Data Register||Read||Write | ||
+ | |- | ||
+ | |#FADC||?||[[RS-232 para Amstrad|MHT Ingenieros RS232 para Amstrad]] 8251 USART data|| Read || Write | ||
|- | |- | ||
|#FADD||?||[[Amstrad Serial Interface]] Z80-SIO / DART port A Control Reg.||Read||Write | |#FADD||?||[[Amstrad Serial Interface]] Z80-SIO / DART port A Control Reg.||Read||Write | ||
+ | |- | ||
+ | |#FADD||?||[[RS-232 para Amstrad|MHT Ingenieros RS232 para Amstrad]] 8251 USART control/status|| Read || Write | ||
|- | |- | ||
|#FADE||?||[[Amstrad Serial Interface]] Z80-SIO / DART port B Data Register||Read||Write | |#FADE||?||[[Amstrad Serial Interface]] Z80-SIO / DART port B Data Register||Read||Write | ||
|- | |- | ||
|#FADF||?||[[Amstrad Serial Interface]] Z80-SIO / DART port B Control Reg.||Read||Write | |#FADF||?||[[Amstrad Serial Interface]] Z80-SIO / DART port B Control Reg.||Read||Write | ||
+ | |- | ||
+ | |#FADF||?||[[Cirkit serial interface]] 8251 UART data register||Read||Write | ||
|- | |- | ||
|#FAE6||?||Port A - [[IDE8255]]||?||? | |#FAE6||?||Port A - [[IDE8255]]||?||? | ||
Line 133: | Line 254: | ||
|- | |- | ||
|#FAEE||?||[[Amstrad SSA-1 Speech Synthesizer]] (faulty mirror used by included RSX driver)||Read||Write | |#FAEE||?||[[Amstrad SSA-1 Speech Synthesizer]] (faulty mirror used by included RSX driver)||Read||Write | ||
+ | |- | ||
+ | |#FAEF||%xxxxx0x0 xxx0xxxx||[[Kempston Mouse]] - Mouse Buttons||Read||- | ||
+ | |- | ||
+ | |#FAF5||?||[[ARA Video Digitizer]] - Read Capture Data||Read|| - | ||
+ | |- | ||
+ | |#FAF5||?||[[ARA Video Digitizer]] - Increment 10bit Config Value|| - ||Write | ||
|- | |- | ||
|#FB7E||%xxxxx0x1 0xxxxxx0||[[765 FDC]] (internal) Status Register||Read|| - | |#FB7E||%xxxxx0x1 0xxxxxx0||[[765 FDC]] (internal) Status Register||Read|| - | ||
Line 138: | Line 265: | ||
|#FB7F||%xxxxx0x1 0xxxxxx1||[[765 FDC]] (internal) Data Register||Read||Write | |#FB7F||%xxxxx0x1 0xxxxxx1||[[765 FDC]] (internal) Data Register||Read||Write | ||
|- | |- | ||
− | |#FBBD|| | + | |#FBBD||%xxxxx0xx x0xxxx0x||Ram select mode [[Vortex Expansions RAM card|Vortex SP512]]||?||Write |
|- | |- | ||
|#FBDC||?||[[Amstrad Serial Interface]] 8253 Timer counter 0||Read||Write | |#FBDC||?||[[Amstrad Serial Interface]] 8253 Timer counter 0||Read||Write | ||
+ | |- | ||
+ | |#FBDC||?||[[RS-232 para Amstrad|MHT Ingenieros RS232 para Amstrad]] 8253 timer 0 (transmit baudrate)|| Read || Write | ||
|- | |- | ||
|#FBDD||?||[[Amstrad Serial Interface]] 8253 Timer counter 1||Read||Write | |#FBDD||?||[[Amstrad Serial Interface]] 8253 Timer counter 1||Read||Write | ||
+ | |- | ||
+ | |#FBDD||?||[[RS-232 para Amstrad|MHT Ingenieros RS232 para Amstrad]] 8253 timer 1 (receive baudrate)|| Read || Write | ||
|- | |- | ||
|#FBDE||?||[[Amstrad Serial Interface]] 8253 Timer counter 2||Read||Write | |#FBDE||?||[[Amstrad Serial Interface]] 8253 Timer counter 2||Read||Write | ||
+ | |- | ||
+ | |#FBDE||?||[[RS-232 para Amstrad|MHT Ingenieros RS232 para Amstrad]] 8253 timer 2 (used as 1ms timer)|| Read || Write | ||
|- | |- | ||
|#FBDF||?||[[Amstrad Serial Interface]] 8253 Timer Modus Select|| - ||Write | |#FBDF||?||[[Amstrad Serial Interface]] 8253 Timer Modus Select|| - ||Write | ||
+ | |- | ||
+ | |#FBDF||?||[[RS-232 para Amstrad|MHT Ingenieros RS232 para Amstrad]] 8253 timer 0-2 control|| - || Write | ||
+ | |- | ||
+ | |#FBDF||?||[[Cirkit serial interface]] 8251 UART status/control register||Read||Write | ||
|- | |- | ||
|#FBxx+0||?||CPCI [[Real Time Clock]] Index (DIY)||-||Write | |#FBxx+0||?||CPCI [[Real Time Clock]] Index (DIY)||-||Write | ||
Line 152: | Line 289: | ||
|#FBxx+1||?||CPCI [[Real Time Clock]] Data (DIY)||Read||Write | |#FBxx+1||?||CPCI [[Real Time Clock]] Data (DIY)||Read||Write | ||
|- | |- | ||
− | |#FBE0 | + | |#FBE0||?||[[Dk'tronics Real Time Clock]] - Z80 PIO Port A Data (HD146818P RTC Data bus)|| Read || Write |
|- | |- | ||
|#FBE0||?||[[Dobbertin Harddisc]] Data Port||Read||Write | |#FBE0||?||[[Dobbertin Harddisc]] Data Port||Read||Write | ||
+ | |- | ||
+ | |#FBE1||?||[[Dk'tronics Real Time Clock]] - Z80 PIO Port B Data (General Purpose 8bit I/O Port)|| Read || Write | ||
|- | |- | ||
|#FBE1||?||[[Dobbertin Harddisc]] Status, Reset||Read||Write | |#FBE1||?||[[Dobbertin Harddisc]] Status, Reset||Read||Write | ||
+ | |- | ||
+ | |#FBE2||?||[[Dk'tronics Real Time Clock]] - Z80 PIO Port A Control||?|| Write | ||
|- | |- | ||
|#FBE2||?||[[Dobbertin Harddisc]] Select, Configuration||Read||Write | |#FBE2||?||[[Dobbertin Harddisc]] Select, Configuration||Read||Write | ||
+ | |- | ||
+ | |#FBE3||?||[[Dk'tronics Real Time Clock]] - Z80 PIO Port B Control||?|| Write | ||
|- | |- | ||
|#FBE3||?||[[Dobbertin Harddisc]] DMA, Interrupt||Read||Write | |#FBE3||?||[[Dobbertin Harddisc]] DMA, Interrupt||Read||Write | ||
Line 170: | Line 313: | ||
|#FBE7||?||[[ACU Real Time Clock (DIY)]] Z80-PIO Data In/Out Port A ||Read||Write | |#FBE7||?||[[ACU Real Time Clock (DIY)]] Z80-PIO Data In/Out Port A ||Read||Write | ||
|- | |- | ||
− | |#FBE8||?||[[Dk'tronics Real Time Clock]]||?|| | + | |#FBE8||?||[[Dk'tronics Real Time Clock]] "4bit latch" (details unknown)|| ? || Write |
|- | |- | ||
|#FBE8||?||[[KDS_Electronics_Serial_Interface|KDS RS232]] 8253 Timer0 (RX Clock)||Read||Write | |#FBE8||?||[[KDS_Electronics_Serial_Interface|KDS RS232]] 8253 Timer0 (RX Clock)||Read||Write | ||
Line 181: | Line 324: | ||
|- | |- | ||
|#FBEC||?||[[KDS_Electronics_Serial_Interface|KDS RS232]] 6850 (reversed bit-order) Control||-||Write | |#FBEC||?||[[KDS_Electronics_Serial_Interface|KDS RS232]] 6850 (reversed bit-order) Control||-||Write | ||
+ | |- | ||
+ | |#FBEC||?||[[PDS development system]] Z80 PIO Port A Data (8bit data to/from PC)||Read||Write | ||
|- | |- | ||
|#FBED||?||[[KDS_Electronics_Serial_Interface|KDS RS232]] 6850 (reversed bit-order) TX Data||-||Write | |#FBED||?||[[KDS_Electronics_Serial_Interface|KDS RS232]] 6850 (reversed bit-order) TX Data||-||Write | ||
+ | |- | ||
+ | |#FBED||?||[[PDS development system]] Z80 PIO Port B Data (handshake to/from PC)||Read||Write | ||
+ | |- | ||
+ | |#FBEE||?||[[PDS development system]] Z80 PIO Port A Control||?||Write | ||
|- | |- | ||
|#FBEE||?||[[Amstrad SSA-1 Speech Synthesizer]]||Read||Write | |#FBEE||?||[[Amstrad SSA-1 Speech Synthesizer]]||Read||Write | ||
+ | |- | ||
+ | |#FBEE||?||[[LambdaSpeak III ROM|LambdaSpeak Speech Synthesizer]]||Read||Write | ||
+ | |- | ||
+ | |#FBEE||%xxxxx0x1 xxx0xxx0||[[Kempston Mouse]] - 8bit X position||Read||- | ||
|- | |- | ||
|#FBEE||?||[[KDS_Electronics_Serial_Interface|KDS RS232]] 6850 (reversed bit-order) Status||Read||- | |#FBEE||?||[[KDS_Electronics_Serial_Interface|KDS RS232]] 6850 (reversed bit-order) Status||Read||- | ||
+ | |- | ||
+ | |#FBEF||?||[[PDS development system]] Z80 PIO Port B Control||?||Write | ||
+ | |- | ||
+ | |#FBEF||%xxxxx0x1 xxx0xxx1||[[Kempston Mouse]] - 8bit Y position||Read||- | ||
|- | |- | ||
|#FBEF||?||[[KDS_Electronics_Serial_Interface|KDS RS232]] 6850 (reversed bit-order) RX Data||Read||- | |#FBEF||?||[[KDS_Electronics_Serial_Interface|KDS RS232]] 6850 (reversed bit-order) RX Data||Read||- | ||
Line 193: | Line 350: | ||
|- | |- | ||
|#FBF0 - #FBFF||?||[[Otten & Fecht 1 MB RAM-Disc]]||Read||Write | |#FBF0 - #FBFF||?||[[Otten & Fecht 1 MB RAM-Disc]]||Read||Write | ||
+ | |- | ||
+ | |#FBF0||%xxxx1011 1111xxxx||[[AMRAM2]]||-||Write | ||
+ | |- | ||
+ | |#FBF0||%xxxxx011 1111xxx0||[[AMSSIO]] Serial Interface MC6850 Control/Status Register||Read||Write | ||
+ | |- | ||
+ | |#FBF1||%xxxxx011 1111xxx1||[[AMSSIO]] Serial Interface MC6850 Data Register||Read||Write | ||
+ | |- | ||
+ | |#FBF5||?||[[ARA Video Digitizer]] - Invoke Video Capture|| - ||Write | ||
|- | |- | ||
|#FBF6||?||[[Vortex Disc Drives]] 765 FDC (Vortex,ext) Status Register||Read|| - | |#FBF6||?||[[Vortex Disc Drives]] 765 FDC (Vortex,ext) Status Register||Read|| - | ||
Line 199: | Line 364: | ||
|- | |- | ||
|#FBF7||?||[[ACU Real Time Clock (DIY)]] Z80-PIO Configure Port A ||Read||Write | |#FBF7||?||[[ACU Real Time Clock (DIY)]] Z80-PIO Configure Port A ||Read||Write | ||
+ | |- | ||
+ | |#FBF8||%11111011 11111000||[[8bit Printer Port (Amstrad Action)]] Strobe/Busy||Read||Write | ||
+ | |- | ||
+ | |#FBF9||%11111011 11111001||[[8bit Printer Port (Amstrad Action)]] Data|| - ||Write | ||
|- | |- | ||
|#FBFE||?||[[Amstrad Magnum Phaser|Magnum Light Phaser]]||-||Write | |#FBFE||?||[[Amstrad Magnum Phaser|Magnum Light Phaser]]||-||Write | ||
+ | |- | ||
+ | |#FBFE||?||[[Dart Scanner for DMP-Printers]]||Read||? | ||
|- | |- | ||
|#FBFE||?||[[Dk'tronics Speech Synthesizer]]||Read||Write | |#FBFE||?||[[Dk'tronics Speech Synthesizer]]||Read||Write | ||
|- | |- | ||
− | |#FBFE|| | + | |#FBFE||%xxxxxxxx 11111110||[[TMPI speech synthesizer]] Data Register ||||Write |
|- | |- | ||
− | |#FBFF|| | + | |#FBFF||%xxxxxxxx 11111111||[[TMPI speech synthesizer]] Command/Status Register ||Read||Write |
|- | |- | ||
|#FBFF||?||[[ACU Real Time Clock (DIY)]] Z80-PIO Configure Port B ||Read||Write | |#FBFF||?||[[ACU Real Time Clock (DIY)]] Z80-PIO Configure Port B ||Read||Write | ||
− | |||
|- | |- | ||
− | |#FC00 - #FDFF||%1111110x xxxxxxxx||[[CPCISA | + | |#FC00 - #FDFF||%1111110x xxxxxxxx||[[CPCISA|CPCISA]] 16bits mode high byte latch||Read||Write |
|- | |- | ||
− | |# | + | |#FC00||?||[[M4 Board]] ACK/KICK|| - ||Write |
|- | |- | ||
− | |# | + | |#FC5C||?||[[Z80-SIO dual ports RS232 interface for CPC (French)|French DIY Dual Port RS232]] - Baudrate Selection|| - ||Write |
|- | |- | ||
− | |# | + | |#FC7C||?||[[Z80-SIO dual ports RS232 interface for CPC (French)|French DIY Dual Port RS232]] - Z80-SIO Channel A Data||Read||Write |
|- | |- | ||
− | |# | + | |#FC7D||?||[[Z80-SIO dual ports RS232 interface for CPC (French)|French DIY Dual Port RS232]] - Z80-SIO Channel A Control/Status||Read||Write |
|- | |- | ||
− | |# | + | |#FC7E||?||[[Z80-SIO dual ports RS232 interface for CPC (French)|French DIY Dual Port RS232]] - Z80-SIO Channel B Data||Read||Write |
|- | |- | ||
− | |# | + | |#FC7F||?||[[Z80-SIO dual ports RS232 interface for CPC (French)|French DIY Dual Port RS232]] - Z80-SIO Channel B Control/Status||Read||Write |
|- | |- | ||
− | |# | + | |#FCE6||?||Port A - [[IDE8255]]||Read||Write |
|- | |- | ||
− | |# | + | |#FCE7||?||Port C - [[IDE8255]]||Read||Write |
|- | |- | ||
− | |# | + | |#FD00 - #FD3F||%11111101 00xxxxxx||[[Programming:SYMBiFACE_II|SYMBiFACE II]]||Read||Write |
|- | |- | ||
− | |# | + | |#FD08 - #FD0F||%11111101 00001xxx||[[X-Mass|X-MASS]] 2.5" 44-pin IDE interface / DOM / CF adapter (SYMBiFACE II compatible)||Read||Write |
|- | |- | ||
− | |# | + | |#FD40 - #FD4F||%11111101 0100xxxx||[[Programming:SYMBiFACE_III|SYMBiFACE III]]||Read||Write |
|- | |- | ||
− | |# | + | |#FD80 - #FD87||%11111101 10000xxx||CPC-CPLink - FIFO Interface card for Co-processors, incl. Raspberry Pi ||Read||Write |
|- | |- | ||
− | |# | + | |#FDE6||?||Port B - [[IDE8255]]||Read||Write |
|- | |- | ||
− | |# | + | |#FDE7||?||RS Port - [[IDE8255]]||Read||Write |
|- | |- | ||
− | | | + | |#FE00||?||[[M4 Board]] Data|| - ||Write |
− | + | ||
− | + | ||
− | + | ||
− | | | + | |
|- | |- | ||
− | | | + | |#FE00 - #FFFF||%1111111x xxxxxxxx||[[CPCISA|CPCISA]] I/O access (low byte)||Read||Write |
|- | |- | ||
− | | | + | |#FE80 - #FE81||%11111110 1000000x||[[Albireo]] CH376 controller||Read||Write |
|- | |- | ||
− | | | + | |#FE82||%11111110 10000010||[[Nova]] RTC & NVRAM|| - ||Write |
|- | |- | ||
− | | | + | |#FE84 - #FEA7||%11111110 10xxx1xx||[http://shinra.cpcscene.net/willy.html Willy] Future use or multi-soundchip ||-||- |
|- | |- | ||
− | | | + | |#FEAC - #FEAD||%11111110 101011xx||[http://shinra.cpcscene.net/willy.html Willy] S2P Dream SAM2965 MIDI synthetizer ||Read||Write |
|- | |- | ||
− | | | + | |#FEB0 - #FEB7||%11111110 10110xxx||[[Albireo]] serial port||Read||Write |
|- | |- | ||
− | | | + | |#FEBC - #FEBF||%11111110 101111xx||[http://shinra.cpcscene.net/willy.html Willy] OPL3 ||-||Write |
|- | |- | ||
− | | | + | |#FEE6||?||Port A - [[IDE8255]]||Read||Write |
|- | |- | ||
− | | | + | |#FEE7||?||Port C - [[IDE8255]]||Read||Write |
|- | |- | ||
− | | | + | |#FEE8||%11111110 1110100x||[[Multiface II]] - Enable Multiface II ROM/RAM||-||Write |
|- | |- | ||
− | | | + | |#FEEA||%11111110 1110110x||[[Multiface II]] - Disable Multiface II ROM/RAM||-||Write |
|- | |- | ||
− | | | + | |#FEF0 - #FEF7||%11111110 11110xxx||[[CPC-CompactFlash]] - IDE registers||Read||Write |
|- | |- | ||
− | | | + | |#FEF0 - #FEF7||%11111110 11110xxx||[[uIDE 16]] - IDE registers||Read||Write |
|- | |- | ||
− | | | + | |#FF00 - #FFFF||%11111111 xxxxxxxx||AMSDAP (Amstrad MSx aDAPter, MSX-to-CPC I/O hardware interface (MSX ports #00-#ff)||Read||Write |
|- | |- | ||
− | | | + | |#FF20 - #FF27||%11111111 00100xxx||MP3MSX (MP3 player) via AMSDAP||Read||Write |
|- | |- | ||
− | | | + | |#FF20 - #FF27||%11111111 00100xxx||SE-ONE (MP3 player, FM radio receiver, USB master interface) via AMSDAP||Read||Write |
|- | |- | ||
− | | | + | |#FF60 - #FF6F||%11111111 0110xxxx||CPC [[V9990]] [[PowerGraph]] (upcoming graphic card based on the Graphics 9000 for the MSX)||Read||Write |
|- | |- | ||
− | | | + | |#FFXX||%11111111 xxxxxxxx||[[CPC Booster]] (XX=#00..#28 are used now)||Read||Write |
|- | |- | ||
− | | | + | |#FFXX||%11111111 xxxxxxxx||[[Amdrum]] (unsigned 8bit DAC)||-||Write |
− | + | ||
− | + | ||
− | + | ||
− | | | + | |
|- | |- | ||
− | | | + | |#FFE6||?||Port B - [[IDE8255]]||Read||Write |
|- | |- | ||
− | | | + | |#FFE7||?||RS Port - [[IDE8255]]||Read||Write |
|- | |- | ||
− | | | + | |} |
+ | |||
+ | == Memory Mapped I/O Ports == | ||
+ | |||
+ | {| class="wikitable" | ||
+ | !Mem | ||
+ | !Decoded as | ||
+ | !Port | ||
+ | !Read | ||
+ | !Write | ||
|- | |- | ||
− | | | + | |#4000-7FFF||%01xxxxxx xxxxxxxx||[[ASIC]] - CPC+/GX4000 registers|| Read || Write |
|- | |- | ||
− | | | + | |#C00?||%11000000 0000000x||[[Dobbertin Smart Watch]] data read (A0=data)|| Read || - |
|- | |- | ||
− | | | + | |#C00?||%11000000 0000000x||[[Dobbertin Smart Watch]] data write (A0=data)|| Read || - |
− | | | + | |
− | | | + | |
− | |- | + | |
− | + | ||
|- | |- | ||
|} | |} | ||
− | [[Category:Programming]] [[Category:Stub]] | + | == More Ports == |
+ | |||
+ | Some more I/O addresses (which aren't included in the above list) are here: | ||
+ | * [[Schneiderware Summary]] | ||
+ | * [[CPCISA]] | ||
+ | |||
+ | == Other I/O Ports == | ||
+ | |||
+ | A number of peripherals connect to the joystick/printer ports, and so, they do not include "own" I/O addresses. This includes hardware ''other than joysticks/printers'' - for example, mice, robots, audio devices, and simple network adapters. For a more complete list, see corresponding sections on [[Digital Joysticks|Digital Joystick]] and [[Printer Port]] pages. | ||
+ | |||
+ | Aside from I/O addresses, there are some other important I/O signals, for example: [[NMI]] or [[External Interrupt|INT]]. | ||
+ | |||
+ | [[Category:Programming]] [[Category:Stub]][[Category:CPC Internal Components]][[Category:Hardware]][[Category:Electronic Component]] |
Latest revision as of 14:30, 11 August 2024
This is a list of all known I/O ports of the Amstrad CPC, including all Peripherals. For a list showing only the built-in standard addresses see Default I/O Port Summary. The original list of I/O ports was taken from the FutureOS handbook.
I/O Port Summary
Note: While most of these devices can be reached via a range of addresses due to the partial address decoding, code should never use any address other than the canonical one (all 'x'/don't care positions filled by 1's). Otherwise multiple devices will be enabled simultaneously, which is unlikely to be what you want.
I/O | Decoded as | Port | Read | Write |
---|---|---|---|---|
#1C00 | %x0xxxx00 xxxxxxxx | Dk'tronics Lightpen faulty mirror of #BCXX CRTC Index | - | Write |
#1F00 | %x0xxxx11 xxxxxxxx | Dk'tronics Lightpen faulty mirror of #BFXX CRTC Data In | Read | - |
#78XX | %0xxxx000 xxxxxxxx | 4Mb Memory extension | - | Write |
#79XX | %0xxxx001 xxxxxxxx | 4Mb Memory extension | - | Write |
#7AXX | %0xxxx010 xxxxxxxx | 4Mb Memory extension | - | Write |
#7BXX | %0xxxx011 xxxxxxxx | 4Mb Memory extension | - | Write |
#7CXX | %0xxxx100 xxxxxxxx | 4Mb Memory extension | - | Write |
#7CXX | %0xxxxx00 xxxxxxxx | Aleste 520EX RAM Mapper page 0 (extended "Gate Array 3") | Read | Write |
#7DXX | %0xxxx101 xxxxxxxx | 4Mb Memory extension | - | Write |
#7DXX | %0xxxxx01 xxxxxxxx | Aleste 520EX RAM Mapper page 1 (extended "Gate Array 3") | Read | Write |
#7EXX | %0xxxx110 xxxxxxxx | 4Mb Memory extension | - | Write |
#7EXX | %0xxxxx10 xxxxxxxx | Aleste 520EX RAM Mapper page 2 (extended "Gate Array 3") | Read | Write |
#7EXX | %0xxxxxx0 xxxxxxxx | Y-MEM 512K RAM Expansion part | Read | Write |
#7FXX | %0xxxx111 xxxxxxxx | 4Mb Memory extension | - | Write |
#7FXX | %0xxxxx11 xxxxxxxx | Aleste 520EX RAM Mapper page 3 (extended "Gate Array 3") | Read | Write |
#7FXX | %0xxxxxx1 xxxxxxxx | X-MEM 512K RAM Expansion part | Read | Write |
#7FXX | ? | Dk'tronics memory expansion | - | Write |
#7FXX | ? | Dobbertin Memory Expansion | - | Write |
#7FXX | %01xxxxxx xxxxxxxx | Gate Array | - | Write |
#7FXX | %0xxxxxxx xxxxxxxx | PAL16L8 extension to Gate Array for 128K RAM banking | - | Write |
#BCXX | %x0xxxx00 xxxxxxxx | 6845 CRTC Index | - | Write |
#BDXX | %x0xxxx01 xxxxxxxx | 6845 CRTC Data Out | - | Write |
#BEXX | %x0xxxx10 xxxxxxxx | 6845 CRTC Status (as far as supported) | Read | - |
#BFXX | %x0xxxx11 xxxxxxxx | 6845 CRTC Data In (as far as supported) | Read | - |
#DFXX | %xx0xxxxx xxxxxxxx | Upper ROM Bank Number (as decoded within CPC664, CPC6128, 464+, 6128+, decoding in ROM expansions may be different) | - | Write |
#ECXX | %xxx0xx00 xxxxxxxx | KC Compact CIO Port B (timer) | Read | Write |
#EDXX | %xxx0xx01 xxxxxxxx | KC Compact CIO Port C (timer) | Read | Write |
#EEXX | %xxx0xx10 xxxxxxxx | KC Compact CIO Control | Read | Write |
#EEXX | %xxx0xxx0 xxxxxxxx | Aleste 520EX USART 8251 (RS232/Mouse) Data | Read | Write |
#EFXX | %xxx0xx11 xxxxxxxx | KC Compact CIO Port A (Bi-drectional Printer Port) | Read | Write |
#EFXX | %xxx0xxx1 xxxxxxxx | Aleste 520EX USART 8251 (RS232/Mouse) Control/Status | Read | Write |
#EFXX | %xxx0xxxx xxxxxxxx | Printer Port | - | Write |
#F0E0 | ? | Draysoft Doubler External Tape Data Input (Bit5) | Read | - |
#F4XX | %xxxx0x00 xxxxxxxx | 8255 PIO Port A (PSG Data) | Read | Write |
#F5XX | %xxxx0x01 xxxxxxxx | 8255 PIO Port B (Vsync,PrnBusy,Tape,etc.) | Read | - |
#F6XX | %xxxx0x10 xxxxxxxx | 8255 PIO Port C (KeybRow,Tape,PSG Control) | - | Write |
#F7XX | %xxxx0x11 xxxxxxxx | 8255 PIO Control-Register | - | Write |
#F880-#F88F | %1111100x 1000xxxx | PlayCity Expansion CTC channels and YMZ data | - | Write |
#F890-#F89F | %1111100x 1--1xxxx | MultiPlay Expansion (mirror port, use #F9xx) | Read | - |
#F8A0-#F8AF | %11111000 1010xxxx | X-CPC ClockPort RTC | Read | Write |
#F8B0 | ? | Vidi-CPC Video-Digitiser, CRTC Index | ? | Write |
#F8B1 | ? | Vidi-CPC Video-Digitiser, CRTC Data | ? | Write |
#F8DC | ? | CPCI Serial Interface MC6850 Control/Status | Read | Write |
#F8DD | ? | CPCI Serial Interface MC6850 Data | Read | Write |
#F8E0 | ? | DHCP MIDI Interface | Read | Write |
#F8E0 | %11111000 11100000 | Schneider RS232 Interface Z80-STI Indirect Data Register | Read | Write |
#F8E1 | %11111000 11100001 | Schneider RS232 Interface Z80-STI General Purpose I/O Data Register | Read | Write |
#F8E2 | %11111000 11100010 | Schneider RS232 Interface Z80-STI Interrupt Pending Register B (unused) | Read | Write |
#F8E2 | ? | Dobbertin Eprommer 4003 | ? | ? |
#F8E3 | %11111000 11100011 | Schneider RS232 Interface Z80-STI Interrupt Pending Register A (unused) | Read | Write |
#F8E3 | ? | Dobbertin Eprommer 4003 | ? | ? |
#F8E4 | %11111000 11100100 | Schneider RS232 Interface Z80-STI Interrupt in-Service Register B (unused) | Read | Write |
#F8E4 | ? | Dobbertin Eprommer 4003 | ? | ? |
#F8E5 | %11111000 11100101 | Schneider RS232 Interface Z80-STI Interrupt in-Service Register A (unused) | Read | Write |
#F8E6 | %11111000 11100110 | Schneider RS232 Interface Z80-STI Interrupt Mask Register B (unused) | Read | Write |
#F8E6 | ? | Port A - IDE8255 | ? | ? |
#F8E7 | %11111000 11100111 | Schneider RS232 Interface Z80-STI Interrupt Mask Register A (unused) | Read | Write |
#F8E7 | ? | Port C - IDE8255 | ? | ? |
#F8E8 | %11111000 11101000 | Schneider RS232 Interface Z80-STI Indirect Index and Interrupt Vector Register | Read | Write |
#F8E8 | ? | Music Machine Interrupt Sel | - | Write |
#F8E9 | %11111000 11101001 | Schneider RS232 Interface Z80-STI Timers A and B Control Register (unused) | Read | Write |
#F8EA | %11111000 11101010 | Schneider RS232 Interface Z80-STI Timer B Data Register (unused) | Read | Write |
#F8EB | %11111000 11101011 | Schneider RS232 Interface Z80-STI Timer A Data Register (unused) | Read | Write |
#F8EC | %11111000 11101100 | Schneider RS232 Interface Z80-STI USART Control Register | Read | Write |
#F8EC | ? | Music Machine ACIA Control | - | Write |
#F8ED | ? | Music Machine ACIA Data Write | - | Write |
#F8ED | %11111000 11101101 | Schneider RS232 Interface Z80-STI Receiver Status Register | Read | Write |
#F8EE | ? | Music Machine ACIA Status | Read | - |
#F8EE | %11111000 11101110 | Schneider RS232 Interface Z80-STI Transmitter Status Register | Read | Write |
#F8EF | %11111000 11101111 | Schneider RS232 Interface Z80-STI USART Data Register | Read | Write |
#F8EF | ? | Music Machine ACIA Data Read | Read | - |
#F8FX | %xxxxx0xx 1111NNNx | Maplins 8bit Input Port and Maplins Weather Satellite Receiver | Read | - |
#F8F0 | ? | Music Machine DAC Write | - | Write |
#F8F2 | ? | EMR MIDI Interface | - | Write |
#F8F2 | ? | Dobbertin Eprommer 4003 | Read | Write |
#F8F2 | ? | EMR MIDI Interface | Read | Write |
#F8F4 | ? | Music Machine ADC Read | Read | - |
#F8F5 | ? | ARA Video Digitizer - Read Sync Signal (bit0) | Read | - |
#F8F8 | ? | Music Machine ADC Start | - | Write |
#F8F8 | ? | ANTA 64K Memory Expansion ANTA 64k.3 latch | Read | Write |
#F8FE | %11111000 11111110 | Z-MEM Software Memory Configuration | - | Write |
#F8FF | %1111100x 111xxxxx | CPCISA control port | - | Write |
#F8FF | %xxxxx0xx 111111xx | Peripheral Soft Reset (MC_BOOT_PROGRAM and MC_START_PROGRAM do OUT [F8FF],FF) | - | Write |
#F980-#F98F | %1111100x 1000xxxx | PlayCity Expansion CTC channels (mirror) and YMZ registers | - | Write |
#F990-#F99F | %1111100x 1--1xxxx | MultiPlay Expansion | Read | - |
#F9A0-#F9AF | %11111001 1010xxxx | X-CPC ClockPort SPR | Read | Write |
#F9B0 | ? | Vidi-CPC Video-Digitiser, Config (W) and Capture Data (R) | Read | Write |
#F9D0 | %11111000 11010000 | SwinSID part of SONIQUE Sound Board WIP by DaDMaN SwinSID1 + SwinSID2 DATA (MONO Mode / 3 Channels) | - | Write |
#F9D1 | %11111000 11010001 | SwinSID part of SONIQUE Sound Board WIP by DaDMaN SwinSID1 (LEFT) DATA (STEREO Mode / 6 Channels) | - | Write |
#F9D2 | %11111000 11010010 | SwinSID part of SONIQUE Sound Board WIP by DaDMaN SwinSID2 (RIGHT) DATA (STEREO Mode / 6 Channels) | - | Write |
#F9DC | ? | Panda Electronics Communications Interface Unit PPI Port A - 8bit Printer data | Read | Write |
#F9DD | ? | Panda Electronics Communications Interface Unit PPI Port B - 8bit general purpose I/O port | Read | Write |
#F9DE | ? | Panda Electronics Communications Interface Unit PPI Port C - Handshake (bit0=Strobe.out, Bit5=Busy.in) | Read | Write |
#F9DF | ? | Panda Electronics Communications Interface Unit PPI Control - 8bit Printer data | - | Write |
#F9E6 | ? | Port B - IDE8255 | ? | ? |
#F9E7 | ? | RS Port - IDE8255 | ? | ? |
#F9F5 | ? | ARA Video Digitizer - Reset 10bit Config Value | - | Write |
#F9F7 | ? | Hegotron grafpad II | ? | ? |
#F9FC - #F9FE | ? | Otten & Fecht 1 MB RAM-Disc | Read | Write |
#F9FF | ? | Hegotron grafpad II | ? | ? |
#FA7E | %xxxxx0x0 0xxxxxxx | Floppy Motor Control (for 765 FDC) | - | Write |
#FABC | %xxxxx0x0 10xxxx00 | Aleste 520EX EXTPORT with CS53: Forward PPI Port A to 8253 Timer 0 | - | Write |
#FABD | %xxxxx0x0 10xxxx01 | Aleste 520EX EXTPORT with CS53: Forward PPI Port A to 8253 Timer 1 | - | Write |
#FABE | %xxxxx0x0 10xxxx10 | Aleste 520EX EXTPORT with CS53: Forward PPI Port A to 8253 Timer 2 | - | Write |
#FABF | %xxxxx0x0 10xxxx11 | Aleste 520EX EXTPORT with CS53: Forward PPI Port A to 8253 Control | - | Write |
#FABF | %xxxxx0x0 10xxxxxx | Aleste 520EX EXTPORT (config for internal hardware) | - | Write |
#FAD0 | %11111010 11010000 | SwinSID part of SONIQUE Sound Board WIP by DaDMaN Select SID (1&2) Register MONO mode | - | Write |
#FAD1 | %11111010 11010001 | SwinSID part of SONIQUE Sound Board WIP by DaDMaN Select SID1 Register | - | Write |
#FAD2 | %11111010 11010010 | SwinSID part of SONIQUE Sound Board WIP by DaDMaN Select SID2 Register | - | Write |
#FADC | ? | Amstrad Serial Interface Z80-SIO / DART port A Data Register | Read | Write |
#FADC | ? | MHT Ingenieros RS232 para Amstrad 8251 USART data | Read | Write |
#FADD | ? | Amstrad Serial Interface Z80-SIO / DART port A Control Reg. | Read | Write |
#FADD | ? | MHT Ingenieros RS232 para Amstrad 8251 USART control/status | Read | Write |
#FADE | ? | Amstrad Serial Interface Z80-SIO / DART port B Data Register | Read | Write |
#FADF | ? | Amstrad Serial Interface Z80-SIO / DART port B Control Reg. | Read | Write |
#FADF | ? | Cirkit serial interface 8251 UART data register | Read | Write |
#FAE6 | ? | Port A - IDE8255 | ? | ? |
#FAE7 | ? | Port C - IDE8255 | ? | ? |
#FAEE | ? | Amstrad SSA-1 Speech Synthesizer (faulty mirror used by included RSX driver) | Read | Write |
#FAEF | %xxxxx0x0 xxx0xxxx | Kempston Mouse - Mouse Buttons | Read | - |
#FAF5 | ? | ARA Video Digitizer - Read Capture Data | Read | - |
#FAF5 | ? | ARA Video Digitizer - Increment 10bit Config Value | - | Write |
#FB7E | %xxxxx0x1 0xxxxxx0 | 765 FDC (internal) Status Register | Read | - |
#FB7F | %xxxxx0x1 0xxxxxx1 | 765 FDC (internal) Data Register | Read | Write |
#FBBD | %xxxxx0xx x0xxxx0x | Ram select mode Vortex SP512 | ? | Write |
#FBDC | ? | Amstrad Serial Interface 8253 Timer counter 0 | Read | Write |
#FBDC | ? | MHT Ingenieros RS232 para Amstrad 8253 timer 0 (transmit baudrate) | Read | Write |
#FBDD | ? | Amstrad Serial Interface 8253 Timer counter 1 | Read | Write |
#FBDD | ? | MHT Ingenieros RS232 para Amstrad 8253 timer 1 (receive baudrate) | Read | Write |
#FBDE | ? | Amstrad Serial Interface 8253 Timer counter 2 | Read | Write |
#FBDE | ? | MHT Ingenieros RS232 para Amstrad 8253 timer 2 (used as 1ms timer) | Read | Write |
#FBDF | ? | Amstrad Serial Interface 8253 Timer Modus Select | - | Write |
#FBDF | ? | MHT Ingenieros RS232 para Amstrad 8253 timer 0-2 control | - | Write |
#FBDF | ? | Cirkit serial interface 8251 UART status/control register | Read | Write |
#FBxx+0 | ? | CPCI Real Time Clock Index (DIY) | - | Write |
#FBxx+1 | ? | CPCI Real Time Clock Data (DIY) | Read | Write |
#FBE0 | ? | Dk'tronics Real Time Clock - Z80 PIO Port A Data (HD146818P RTC Data bus) | Read | Write |
#FBE0 | ? | Dobbertin Harddisc Data Port | Read | Write |
#FBE1 | ? | Dk'tronics Real Time Clock - Z80 PIO Port B Data (General Purpose 8bit I/O Port) | Read | Write |
#FBE1 | ? | Dobbertin Harddisc Status, Reset | Read | Write |
#FBE2 | ? | Dk'tronics Real Time Clock - Z80 PIO Port A Control | ? | Write |
#FBE2 | ? | Dobbertin Harddisc Select, Configuration | Read | Write |
#FBE3 | ? | Dk'tronics Real Time Clock - Z80 PIO Port B Control | ? | Write |
#FBE3 | ? | Dobbertin Harddisc DMA, Interrupt | Read | Write |
#FBE4 | ? | Dobbertin Harddisc Reset | Read | Write |
#FBE6 | ? | Port B - IDE8255 | ? | ? |
#FBE7 | ? | RS Port - IDE8255 | ? | ? |
#FBE7 | ? | ACU Real Time Clock (DIY) Z80-PIO Data In/Out Port A | Read | Write |
#FBE8 | ? | Dk'tronics Real Time Clock "4bit latch" (details unknown) | ? | Write |
#FBE8 | ? | KDS RS232 8253 Timer0 (RX Clock) | Read | Write |
#FBE9 | ? | KDS RS232 8253 Timer1 (TX Clock) | Read | Write |
#FBEA | ? | KDS RS232 8253 Timer2 (not used) | Read | Write |
#FBEB | ? | KDS RS232 8253 Timer Control | - | Write |
#FBEC | ? | KDS RS232 6850 (reversed bit-order) Control | - | Write |
#FBEC | ? | PDS development system Z80 PIO Port A Data (8bit data to/from PC) | Read | Write |
#FBED | ? | KDS RS232 6850 (reversed bit-order) TX Data | - | Write |
#FBED | ? | PDS development system Z80 PIO Port B Data (handshake to/from PC) | Read | Write |
#FBEE | ? | PDS development system Z80 PIO Port A Control | ? | Write |
#FBEE | ? | Amstrad SSA-1 Speech Synthesizer | Read | Write |
#FBEE | ? | LambdaSpeak Speech Synthesizer | Read | Write |
#FBEE | %xxxxx0x1 xxx0xxx0 | Kempston Mouse - 8bit X position | Read | - |
#FBEE | ? | KDS RS232 6850 (reversed bit-order) Status | Read | - |
#FBEF | ? | PDS development system Z80 PIO Port B Control | ? | Write |
#FBEF | %xxxxx0x1 xxx0xxx1 | Kempston Mouse - 8bit Y position | Read | - |
#FBEF | ? | KDS RS232 6850 (reversed bit-order) RX Data | Read | - |
#FBEF | ? | ACU Real Time Clock (DIY) Z80-PIO Data In/Out Port B | Read | Write |
#FBF0 - #FBFF | ? | Otten & Fecht 1 MB RAM-Disc | Read | Write |
#FBF0 | %xxxx1011 1111xxxx | AMRAM2 | - | Write |
#FBF0 | %xxxxx011 1111xxx0 | AMSSIO Serial Interface MC6850 Control/Status Register | Read | Write |
#FBF1 | %xxxxx011 1111xxx1 | AMSSIO Serial Interface MC6850 Data Register | Read | Write |
#FBF5 | ? | ARA Video Digitizer - Invoke Video Capture | - | Write |
#FBF6 | ? | Vortex Disc Drives 765 FDC (Vortex,ext) Status Register | Read | - |
#FBF7 | ? | Vortex Disc Drives 765 FDC (Vortex,ext) Data Register | Read | Write |
#FBF7 | ? | ACU Real Time Clock (DIY) Z80-PIO Configure Port A | Read | Write |
#FBF8 | %11111011 11111000 | 8bit Printer Port (Amstrad Action) Strobe/Busy | Read | Write |
#FBF9 | %11111011 11111001 | 8bit Printer Port (Amstrad Action) Data | - | Write |
#FBFE | ? | Magnum Light Phaser | - | Write |
#FBFE | ? | Dart Scanner for DMP-Printers | Read | ? |
#FBFE | ? | Dk'tronics Speech Synthesizer | Read | Write |
#FBFE | %xxxxxxxx 11111110 | TMPI speech synthesizer Data Register | Write | |
#FBFF | %xxxxxxxx 11111111 | TMPI speech synthesizer Command/Status Register | Read | Write |
#FBFF | ? | ACU Real Time Clock (DIY) Z80-PIO Configure Port B | Read | Write |
#FC00 - #FDFF | %1111110x xxxxxxxx | CPCISA 16bits mode high byte latch | Read | Write |
#FC00 | ? | M4 Board ACK/KICK | - | Write |
#FC5C | ? | French DIY Dual Port RS232 - Baudrate Selection | - | Write |
#FC7C | ? | French DIY Dual Port RS232 - Z80-SIO Channel A Data | Read | Write |
#FC7D | ? | French DIY Dual Port RS232 - Z80-SIO Channel A Control/Status | Read | Write |
#FC7E | ? | French DIY Dual Port RS232 - Z80-SIO Channel B Data | Read | Write |
#FC7F | ? | French DIY Dual Port RS232 - Z80-SIO Channel B Control/Status | Read | Write |
#FCE6 | ? | Port A - IDE8255 | Read | Write |
#FCE7 | ? | Port C - IDE8255 | Read | Write |
#FD00 - #FD3F | %11111101 00xxxxxx | SYMBiFACE II | Read | Write |
#FD08 - #FD0F | %11111101 00001xxx | X-MASS 2.5" 44-pin IDE interface / DOM / CF adapter (SYMBiFACE II compatible) | Read | Write |
#FD40 - #FD4F | %11111101 0100xxxx | SYMBiFACE III | Read | Write |
#FD80 - #FD87 | %11111101 10000xxx | CPC-CPLink - FIFO Interface card for Co-processors, incl. Raspberry Pi | Read | Write |
#FDE6 | ? | Port B - IDE8255 | Read | Write |
#FDE7 | ? | RS Port - IDE8255 | Read | Write |
#FE00 | ? | M4 Board Data | - | Write |
#FE00 - #FFFF | %1111111x xxxxxxxx | CPCISA I/O access (low byte) | Read | Write |
#FE80 - #FE81 | %11111110 1000000x | Albireo CH376 controller | Read | Write |
#FE82 | %11111110 10000010 | Nova RTC & NVRAM | - | Write |
#FE84 - #FEA7 | %11111110 10xxx1xx | Willy Future use or multi-soundchip | - | - |
#FEAC - #FEAD | %11111110 101011xx | Willy S2P Dream SAM2965 MIDI synthetizer | Read | Write |
#FEB0 - #FEB7 | %11111110 10110xxx | Albireo serial port | Read | Write |
#FEBC - #FEBF | %11111110 101111xx | Willy OPL3 | - | Write |
#FEE6 | ? | Port A - IDE8255 | Read | Write |
#FEE7 | ? | Port C - IDE8255 | Read | Write |
#FEE8 | %11111110 1110100x | Multiface II - Enable Multiface II ROM/RAM | - | Write |
#FEEA | %11111110 1110110x | Multiface II - Disable Multiface II ROM/RAM | - | Write |
#FEF0 - #FEF7 | %11111110 11110xxx | CPC-CompactFlash - IDE registers | Read | Write |
#FEF0 - #FEF7 | %11111110 11110xxx | uIDE 16 - IDE registers | Read | Write |
#FF00 - #FFFF | %11111111 xxxxxxxx | AMSDAP (Amstrad MSx aDAPter, MSX-to-CPC I/O hardware interface (MSX ports #00-#ff) | Read | Write |
#FF20 - #FF27 | %11111111 00100xxx | MP3MSX (MP3 player) via AMSDAP | Read | Write |
#FF20 - #FF27 | %11111111 00100xxx | SE-ONE (MP3 player, FM radio receiver, USB master interface) via AMSDAP | Read | Write |
#FF60 - #FF6F | %11111111 0110xxxx | CPC V9990 PowerGraph (upcoming graphic card based on the Graphics 9000 for the MSX) | Read | Write |
#FFXX | %11111111 xxxxxxxx | CPC Booster (XX=#00..#28 are used now) | Read | Write |
#FFXX | %11111111 xxxxxxxx | Amdrum (unsigned 8bit DAC) | - | Write |
#FFE6 | ? | Port B - IDE8255 | Read | Write |
#FFE7 | ? | RS Port - IDE8255 | Read | Write |
Memory Mapped I/O Ports
Mem | Decoded as | Port | Read | Write |
---|---|---|---|---|
#4000-7FFF | %01xxxxxx xxxxxxxx | ASIC - CPC+/GX4000 registers | Read | Write |
#C00? | %11000000 0000000x | Dobbertin Smart Watch data read (A0=data) | Read | - |
#C00? | %11000000 0000000x | Dobbertin Smart Watch data write (A0=data) | Read | - |
More Ports
Some more I/O addresses (which aren't included in the above list) are here:
Other I/O Ports
A number of peripherals connect to the joystick/printer ports, and so, they do not include "own" I/O addresses. This includes hardware other than joysticks/printers - for example, mice, robots, audio devices, and simple network adapters. For a more complete list, see corresponding sections on Digital Joystick and Printer Port pages.
Aside from I/O addresses, there are some other important I/O signals, for example: NMI or INT.