Difference between revisions of "Default I/O Port Summary"
From CPCWiki - THE Amstrad CPC encyclopedia!
(→I/O Ports) |
|||
Line 72: | Line 72: | ||
|- | |- | ||
|} | |} | ||
+ | |||
+ | The ASIC I/O page is defined as follows: | ||
+ | |||
+ | {|{{Prettytable|width: 700px; font-size: 2em;}} | ||
+ | ! ADDR !! SIZE !! POR !! TYPE !! MNEM !! USE | ||
+ | |- | ||
+ | | 4000h || 100h || N || R/W || || Sprite 0 image data | ||
+ | |- | ||
+ | | 4100h || 100h || N || R/W || || Sprite 1 image data | ||
+ | |- | ||
+ | | ... || ... || ... || ... || ... || ... | ||
+ | |- | ||
+ | | 4F00h || 100h || N || R/W || || Sprite 15 image data | ||
+ | |- | ||
+ | | 5000h || || || || || (unused) | ||
+ | |- | ||
+ | | 6000h || 2 || N || R/W || X0 || Sprite 0 X position | ||
+ | |- | ||
+ | | 6002h || 2 || N || R/W || Y0 || Sprite 0 Y position | ||
+ | |- | ||
+ | | 6004h || 1 || Y || W || M0 || Sprite 0 magnification | ||
+ | |- | ||
+ | | 6005h || 3 || || || || (unused) | ||
+ | |- | ||
+ | | 6008h || 2 || N || R/W || X1 || Sprite 1 X position | ||
+ | |- | ||
+ | | 600Ah || 2 || N || R/W || Y1 || Sprite 1 Y position | ||
+ | |- | ||
+ | | 600Ch || 1 || Y || W || M1 || Sprite 1 magnification | ||
+ | |- | ||
+ | | 600Dh || 3 || || || || (unused) | ||
+ | |- | ||
+ | | ... || ... || ... || ... || ... || ... | ||
+ | |- | ||
+ | | 6078h || 2 || N || R/W || X15 || Sprite 15 X position | ||
+ | |- | ||
+ | | 607Ah || 2 || N || R/W || Y15 || Sprite 15 Y position | ||
+ | |- | ||
+ | | 607Ch || 1 || N || W || M15 || Sprite 15 magnification | ||
+ | |- | ||
+ | | 607Dh || 3 || || || || (unused) | ||
+ | |- | ||
+ | | 6080h || || || || || (unused) | ||
+ | |- | ||
+ | | 6400h || 2 || N || R/W || || Colour palette, pen 0 | ||
+ | |- | ||
+ | | 6402h || 2 || N || R/W || || Colour palette, pen 1 | ||
+ | |- | ||
+ | | ... || ... || ... || ... || ... || ... | ||
+ | |- | ||
+ | | 641Eh || 2 || N || R/W || || Colour palette, pen 15 | ||
+ | |- | ||
+ | | 6420h || 2 || N || R/W || || Colour palette, border | ||
+ | |- | ||
+ | | 6422h || 2 || N || R/W || || Colour palette, sprite colour 1 | ||
+ | |- | ||
+ | | 6424h || 2 || N || R/W || || Colour palette, sprite colour 2 | ||
+ | |- | ||
+ | | ... || ... || ... || ... || ... || ... | ||
+ | |- | ||
+ | | 643Eh || 2 || N || R/W || || Colour palette, sprite colour 15 | ||
+ | |- | ||
+ | | 6440h || || || || || (unused) | ||
+ | |- | ||
+ | | 6800h || 1 || Y || W || PRI || Programmable raster interrupt scan line | ||
+ | |- | ||
+ | | 6801h || 1 || Y || W || SPLT || Screen split scan line | ||
+ | |- | ||
+ | | 6802h || 2 || N || W || SSA || Screen split secondary start address | ||
+ | |- | ||
+ | | 6804h || 1 || Y || W || SSCR || Soft scroll control register | ||
+ | |- | ||
+ | | 6805h || 1 || N || W || IVR || Interrupt Vector (Bit 0 set to 1 on reset) | ||
+ | |- | ||
+ | | 6806h || || || || || (unused) | ||
+ | |- | ||
+ | | 6808h || 1 || || R || ADC0 || Analogue input channel 0 | ||
+ | |- | ||
+ | | 6809h || 1 || || R || ADC1 || Analogue input channel 1 | ||
+ | |- | ||
+ | | 680Ah || 1 || || R || ADC2 || Analogue input channel 2 | ||
+ | |- | ||
+ | | 680Bh || 1 || || R || ADC3 || Analogue input channel 3 | ||
+ | |- | ||
+ | | 680Ch || 1 || || R || ADC4 || Analogue input channel 4 | ||
+ | |- | ||
+ | | 680Dh || 1 || || R || ADC5 || Analogue input channel 5 | ||
+ | |- | ||
+ | | 680Eh || 1 || || R || ADC6 || Analogue input channel 6 | ||
+ | |- | ||
+ | | 680Fh || 1 || || R || ADC7 || Analogue input channel 7 | ||
+ | |- | ||
+ | | 6810h || || || || || (unused) | ||
+ | |- | ||
+ | | 6C00h || 2 || N || W || SAR0 || "DMA" channel 0 address pointer | ||
+ | |- | ||
+ | | 6C02h || 1 || N || W || PPR0 || "DMA" channel 0 pause prescaler | ||
+ | |- | ||
+ | | 6C03h || 1 || || || || (unused) | ||
+ | |- | ||
+ | | 6C04h || 2 || N || W || SAR1 || "DMA" channel 1 address pointer | ||
+ | |- | ||
+ | | 6C06h || 1 || N || W || PPR1 || "DMA" channel 1 pause prescaler | ||
+ | |- | ||
+ | | 6C07h || 1 || || || || (unused) | ||
+ | |- | ||
+ | | 6C08h || 2 || N || W || SAR2 || "DMA" channel 2 address pointer | ||
+ | |- | ||
+ | | 6C0Ah || 1 || N || W || PPR2 || "DMA" channel 2 pause prescaler | ||
+ | |- | ||
+ | | 6C0Bh || 4 || || || || (unused) | ||
+ | |- | ||
+ | | 6C0Fh || 1 || Y || R/W || DCSR || "DMA" control/status register | ||
+ | |} | ||
+ | |||
+ | POR column indicates whether a register has power on reset. A "N" indicates that the contents of a register are undefined at power on. | ||
[[Category:Programming]] [[Category:CPC Internal Components]] | [[Category:Programming]] [[Category:CPC Internal Components]] |
Revision as of 12:05, 4 July 2024
This list shows only the internal standard I/O ports, as used in the BIOS ROM of the CPC 464/664/6128 BIOS, and in the AMSDOS ROM of the CPC 664/6128 and DDI-1. For a more complete list, including all Peripherals, see the Complete I/O Port Summary.
I/O Ports
I/O | Decoded as | Port | Read | Write |
#7FXX | %01xxxxxx xxxxxxxx | Gate Array | - | Write |
#7FXX | %0xxxxxxx xxxxxxxx | PAL 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 | - | Write |
#EFXX | %xxx0xxxx xxxxxxxx | Printer Port | - | Write |
#F4XX | %xxxx0x00 xxxxxxxx | 8255 PPI Port A (PSG Data) | Read | Write |
#F5XX | %xxxx0x01 xxxxxxxx | 8255 PPI Port B (Vsync,PrnBusy,Tape,etc.) | Read | - |
#F6XX | %xxxx0x10 xxxxxxxx | 8255 PPI Port C (KeybRow,Tape,PSG Control) | - | Write |
#F7XX | %xxxx0x11 xxxxxxxx | 8255 PPI Control-Register | - | Write |
#F8FF | N/A | Peripheral Soft Reset (MC_BOOT_PROGRAM and MC_START_PROGRAM do OUT [F8FF],FF) | - | Write |
#FA7E | %xxxxx0x0 0xxxxxxx | Floppy Motor Control (for 765 FDC) | - | Write |
#FADC | %xxxxx0x0 xx0xxx00 | Amstrad Serial Interface Z80-SIO / DART port A Data Register | Read | Write |
#FADD | %xxxxx0x0 xx0xxx01 | Amstrad Serial Interface Z80-SIO / DART port A Control Reg. | Read | Write |
#FADE | %xxxxx0x0 xx0xxx10 | Amstrad Serial Interface Z80-SIO / DART port B Data Register | Read | Write |
#FADF | %xxxxx0x0 xx0xxx11 | Amstrad Serial Interface Z80-SIO / DART port B Control Reg. | Read | Write |
#FB7E | %xxxxx0x1 0xxxxxx0 | 765 FDC (internal) Status Register | Read | - |
#FB7F | %xxxxx0x1 0xxxxxx1 | 765 FDC (internal) Data Register | Read | Write |
#FBDC | %xxxxx0x1 xx0xxx00 | Amstrad Serial Interface 8253 Timer counter 0 | Read | Write |
#FBDD | %xxxxx0x1 xx0xxx01 | Amstrad Serial Interface 8253 Timer counter 1 | Read | Write |
#FBDE | %xxxxx0x1 xx0xxx10 | Amstrad Serial Interface 8253 Timer counter 2 | Read | Write |
#FBDF | %xxxxx0x1 xx0xxx11 | Amstrad Serial Interface 8253 Timer Modus Select | - | Write |
- The three 765 FDC floppy ports are contained in CPC 664/6128/Plus and DDI-1 only.
- The eight Amstrad Serial Interface ports are pre-defined as shown above in the AMSDOS ROM. However, neither the CPC 664/6128/Plus nor DDI-1 do actually contain the corresponding RS232 hardware.
- Bit14 of the PAL selection address must be at 1 on CPCs equipped with CRTCs 0/1/2. It can be at 0 or 1 on CRTCs 3/4. For compatibility reasons, it is strongly advised to always set bit14 to 1 to select PAL.
- As components use partial address decoding, it is therefore possible to send the same value to different components simultaneously by carefully using custom I/O ports.
Memory Mapped I/O Ports
Mem | Decoded as | Port | Read | Write |
#4000-7FFF | %01xxxxxx xxxxxxxx | ASIC - CPC+/GX4000 registers | Read | Write |
The ASIC I/O page is defined as follows:
ADDR | SIZE | POR | TYPE | MNEM | USE |
---|---|---|---|---|---|
4000h | 100h | N | R/W | Sprite 0 image data | |
4100h | 100h | N | R/W | Sprite 1 image data | |
... | ... | ... | ... | ... | ... |
4F00h | 100h | N | R/W | Sprite 15 image data | |
5000h | (unused) | ||||
6000h | 2 | N | R/W | X0 | Sprite 0 X position |
6002h | 2 | N | R/W | Y0 | Sprite 0 Y position |
6004h | 1 | Y | W | M0 | Sprite 0 magnification |
6005h | 3 | (unused) | |||
6008h | 2 | N | R/W | X1 | Sprite 1 X position |
600Ah | 2 | N | R/W | Y1 | Sprite 1 Y position |
600Ch | 1 | Y | W | M1 | Sprite 1 magnification |
600Dh | 3 | (unused) | |||
... | ... | ... | ... | ... | ... |
6078h | 2 | N | R/W | X15 | Sprite 15 X position |
607Ah | 2 | N | R/W | Y15 | Sprite 15 Y position |
607Ch | 1 | N | W | M15 | Sprite 15 magnification |
607Dh | 3 | (unused) | |||
6080h | (unused) | ||||
6400h | 2 | N | R/W | Colour palette, pen 0 | |
6402h | 2 | N | R/W | Colour palette, pen 1 | |
... | ... | ... | ... | ... | ... |
641Eh | 2 | N | R/W | Colour palette, pen 15 | |
6420h | 2 | N | R/W | Colour palette, border | |
6422h | 2 | N | R/W | Colour palette, sprite colour 1 | |
6424h | 2 | N | R/W | Colour palette, sprite colour 2 | |
... | ... | ... | ... | ... | ... |
643Eh | 2 | N | R/W | Colour palette, sprite colour 15 | |
6440h | (unused) | ||||
6800h | 1 | Y | W | PRI | Programmable raster interrupt scan line |
6801h | 1 | Y | W | SPLT | Screen split scan line |
6802h | 2 | N | W | SSA | Screen split secondary start address |
6804h | 1 | Y | W | SSCR | Soft scroll control register |
6805h | 1 | N | W | IVR | Interrupt Vector (Bit 0 set to 1 on reset) |
6806h | (unused) | ||||
6808h | 1 | R | ADC0 | Analogue input channel 0 | |
6809h | 1 | R | ADC1 | Analogue input channel 1 | |
680Ah | 1 | R | ADC2 | Analogue input channel 2 | |
680Bh | 1 | R | ADC3 | Analogue input channel 3 | |
680Ch | 1 | R | ADC4 | Analogue input channel 4 | |
680Dh | 1 | R | ADC5 | Analogue input channel 5 | |
680Eh | 1 | R | ADC6 | Analogue input channel 6 | |
680Fh | 1 | R | ADC7 | Analogue input channel 7 | |
6810h | (unused) | ||||
6C00h | 2 | N | W | SAR0 | "DMA" channel 0 address pointer |
6C02h | 1 | N | W | PPR0 | "DMA" channel 0 pause prescaler |
6C03h | 1 | (unused) | |||
6C04h | 2 | N | W | SAR1 | "DMA" channel 1 address pointer |
6C06h | 1 | N | W | PPR1 | "DMA" channel 1 pause prescaler |
6C07h | 1 | (unused) | |||
6C08h | 2 | N | W | SAR2 | "DMA" channel 2 address pointer |
6C0Ah | 1 | N | W | PPR2 | "DMA" channel 2 pause prescaler |
6C0Bh | 4 | (unused) | |||
6C0Fh | 1 | Y | R/W | DCSR | "DMA" control/status register |
POR column indicates whether a register has power on reset. A "N" indicates that the contents of a register are undefined at power on.