Read error b

Time to align your Azimuth

User Tools

Site Tools


tech:amstrad:pcw:ioports

This is an old revision of the document!


I/O Ports

Port (hex) Direction Peripheral / Function Notes
00h Read/Write Floppy Disk Controller (uPD765A) - Main Status Register FDC status register
01h Read/Write Floppy Disk Controller (uPD765A) - Data Register FDC data register
80h Read AMX Mouse - Vertical Movement (alternate) Alternate mapping of A0h. Stop Press relocates the mouse to 80h-83h if 0A2h reads 10h at startup (believed to avoid an ASD hard drive conflict)
81h Read AMX Mouse - Horizontal Movement (alternate) Alternate mapping of A1h
82h Read/Write AMX Mouse - Button State & Reset (alternate) Alternate mapping of A2h
83h Write AMX Mouse - PPI Mode Register (alternate) Alternate mapping of A3h
84h Read Standalone Centronics (CEN) Port - Status Bit 0: 1=busy / 0=ready
85h Write Standalone Centronics (CEN) Port - Strobe Write byte to 87h then 85h then 87h to toggle STROBE
87h Write Standalone Centronics (CEN) Port - Data Write data byte here as part of output sequence
9Fh Read Kempston Joystick Interface Bit 4=Fire, Bit 3=Down, Bit 2=Up, Bit 1=Left, Bit 0=Right
A0h Read AMX Mouse - Vertical Movement (8255 PPI Port A) Low nibble=moves up, high nibble=moves down
A0h Read/Write Timatic Winchester / SASI (NCR 5380) - SCSI Data Also used by ASD PCWHD10/20 as Data register (see A0h conflict)
A0h Read/Write ASD PCWHD10/PCWHD20 - Data Register Conflicts with Timatic and AMX Mouse
A1h Read AMX Mouse - Horizontal Movement (8255 PPI Port B) Low nibble=moves right, high nibble=moves left
A1h Read/Write Timatic Winchester / SASI (NCR 5380) - Initiator Command Register Also used by ASD PCWHD10/20 as Error/Features
A1h Read/Write ASD PCWHD10/PCWHD20 - Error / Features Conflicts with Timatic
A2h Read/Write AMX Mouse - Button State & Reset (8255 PPI Port C) Input: bits 0-2=button states, Output: write FFh then 0 to reset
A2h Read EMR MIDI Interface - Status Register ~31250 baud serial-style interface. Bit 1=ready to receive data. Requires EMR's supplied init software to be run first. Conflicts with AMX Mouse, Timatic and ASD at A2h
A2h Read/Write Timatic Winchester / SASI (NCR 5380) - Mode Register Also used by ASD PCWHD10/20 as Sector Count
A2h Read/Write ASD PCWHD10/PCWHD20 - Sector Count Conflicts with Timatic
A3h Write AMX Mouse - PPI Mode Register Write 93h at startup for basic I/O mode
A3h Read/Write Timatic Winchester / SASI (NCR 5380) - Target Command Register Also used by ASD PCWHD10/20 as Sector Number
A3h Read/Write ASD PCWHD10/PCWHD20 - Sector Number Conflicts with Timatic
A3h Read/Write EMR MIDI Interface - Data I/O Register MIDI data in/out. Note: Fairhurst (systemed.net) lists the interface as A0h-A2h rather than A2h-A3h
A4h Read/Write Timatic Winchester / SASI (NCR 5380) - SCSI Bus Status / Select Register Also used by ASD PCWHD10/20 as Cylinder Low
A4h Read/Write ASD PCWHD10/PCWHD20 - Cylinder Low Conflicts with Timatic
A5h Read/Write Timatic Winchester / SASI (NCR 5380) - Bus and Status Register Also used by ASD PCWHD10/20 as Cylinder High
A5h Read/Write ASD PCWHD10/PCWHD20 - Cylinder High Conflicts with Timatic
A6h Read Electric Studio Light Pen - Position Low 8 Bits 12-bit position counter low byte
A6h Read/Write Multilink Network Interface - Control / Status Input: Bit 7=1 (8251 DSR), Bits 6-2=0 (error flags), Bit 1=byte waiting to send to PCW, Bit 0=ready to receive from PCW. Output: write 48h to reset the card
A6h Read/Write Timatic Winchester / SASI (NCR 5380) - Start DMA Target Receive / Input Data Not used by PCW, also used by ASD PCWHD10/20 as Drive/Head
A6h Read/Write ASD PCWHD10/PCWHD20 - Drive / Head Conflicts with Timatic and Light Pen and Multilink
A7h Read Electric Studio Light Pen - Position High 4 Bits + Retrace Flags Bits 6=V.Retrace, Bit 5=H.Retrace, Bits 3-0=high 4 bits of position
A7h Read/Write Multilink Network Interface - Data Read/write data byte
A7h Read/Write Timatic Winchester / SASI (NCR 5380) - Start DMA Initiator Receive / Reset Parity Not used by PCW, also used by ASD PCWHD10/20 as Status/Command
A7h Read/Write ASD PCWHD10/PCWHD20 - Status / Command Conflicts with Timatic and Light Pen and Multilink
A8h Read/Write Cirtech Gem (XTA) - Data Register XTA hard drive interface, ATA variant maps A8h-AFh
A8h Read/Write Cirtech Gem (ATA) - Data ATA variant. Cirtech Insyder / Hardpak use the same register layout but additionally write 0 to 0FF94h before each transfer, believed to reset the mechanism that converts between 8-bit and 16-bit transfers
A9h Read Cirtech Gem (XTA) - Controller Status Also: Write=Reset controller
A9h Read/Write Cirtech Gem (ATA) - Error / Features ATA variant
A9h Read DKTronics Sound Generator - Read Selected AY-3-8912 Register Read currently selected register
AAh Read/Write Cirtech Gem (XTA) - Controller DIP Switches / Generate Controller-Select Pulse Read=DIP switches, Write=select pulse
AAh Read/Write Cirtech Gem (ATA) - Sector Count ATA variant
AAh Write DKTronics Sound Generator - Select AY-3-8912 Register Write register number to select it
ABh Write Cirtech Gem (XTA) - DMA and Interrupt Mask Not used on PCW
ABh Read/Write Cirtech Gem (ATA) - Sector Number ATA variant
ABh Write DKTronics Sound Generator - Write to Selected AY-3-8912 Register Write value to selected register
ACh Read/Write Cirtech Gem (ATA) - Cylinder Low ATA variant only
ADh Read/Write Cirtech Gem (ATA) - Cylinder High ATA variant only
AEh Read/Write Cirtech Gem (ATA) - Drive / Head ATA variant only
AFh Read/Write Cirtech Gem (ATA) - Status / Command ATA variant only
C8h Read/Write Fax Link Interface CPS8256-compatible serial circuitry (cf. E0h-E7h) but with different baud-rate values
C9h Read/Write Fax Link Interface CPS8256-compatible serial circuitry (cf. E0h-E7h) but with different baud-rate values
CAh Read/Write Fax Link Interface CPS8256-compatible serial circuitry (cf. E0h-E7h) but with different baud-rate values
CBh Read/Write Fax Link Interface CPS8256-compatible serial circuitry (cf. E0h-E7h) but with different baud-rate values
CCh Read/Write Fax Link Interface CPS8256-compatible serial circuitry (cf. E0h-E7h) but with different baud-rate values
CDh Read/Write Fax Link Interface CPS8256-compatible serial circuitry (cf. E0h-E7h) but with different baud-rate values
CEh Read/Write Fax Link Interface CPS8256-compatible serial circuitry (cf. E0h-E7h) but with different baud-rate values
CFh Read/Write Fax Link Interface CPS8256-compatible serial circuitry (cf. E0h-E7h) but with different baud-rate values
D0h Read Kempston Mouse - X Position 0-255, also readable at D2h
D1h Read Kempston Mouse - Y Position 0-255, also readable at D3h
D2h Read Kempston Mouse - X Position (mirror) Same value as D0h
D3h Read Kempston Mouse - Y Position (mirror) Same value as D1h
D4h Read Kempston Mouse - Button State Bit 0=Left, Bit 1=Right, 0=pressed
D8h Read Cirtech Flash Drive - Page In Reading pages the drive into memory; high byte of the 16-bit port address selects the 32k bank. Bank appears at 00h-7Fh, 0100h-017Fh … 0FF00h-0FF7Fh. Flash-based (Intel E28F008SA) replacement for Gem drive + boot ROM
D9h Read Cirtech Flash Drive - Page Out Reading pages the drive back out of memory
DFh Read MasterScan Optical Scanner Bit 0: 0=light, 1=dark
E0h Read Spectravideo Joystick Interface Bit 4=Right, Bit 3=Up, Bit 2=Left, Bit 1=Fire, Bit 0=Down
E0h Read Cascade (JoyceStick) Joystick Interface Bit 7=Fire, Bit 4=Up, Bit 2=Down, Bit 1=Right, Bit 0=Left, conflicts with Spectravideo
E0h Read/Write CPS8256 - DART Channel A Data Serial/comms interface
E1h Read/Write CPS8256 - DART Channel A Control
E2h Read/Write CPS8256 - DART Channel B Data
E3h Read/Write CPS8256 - DART Channel B Control / CEN Port Status & Control Also used as CPS8256 CEN port: write 10h to select status mode, bit 5=printer ready
E4h Read/Write CPS8256 - 8253 Counter 0 Used for baud rate setting (transmit)
E5h Read/Write CPS8256 - 8253 Counter 1 Used for baud rate setting (receive)
E7h Write CPS8256 - 8253 Write Mode Word Write mode byte here (e.g. 36h or 76h for baud rate)
E8h Write CPS8256 CEN Port - Data Output Write character to this port before toggling STROBE via E3h
E9h Read/Write ProScan Interface - Base Port Interface for Naksha hand scanner / fax
EAh Read/Write ProScan Interface - Fax Device Select (FX1) Select fax as image source
EBh Read/Write ProScan Interface - Fax Device Select (FX2) Select fax (second type) as image source
ECh Read/Write ProScan Interface - Hand Scanner Select Select hand scanner as image source
EDh Read/Write ProScan Interface - Unknown Device Select Possibly a second type of hand scanner
EFh Read/Write ProScan Interface - Upper Bound Port Upper port of ProScan range
F0h Write Memory Management - Bank Select for 0000h-3FFFh PCW paging: bit 7=1, bits 6-0=block number
F1h Write Memory Management - Bank Select for 4000h-7FFFh PCW paging
F2h Write Memory Management - Bank Select for 8000h-BFFFh PCW paging
F3h Write Memory Management - Bank Select for C000h-FFFFh PCW paging
F4h Write CPC Paging Mode - Lock Register Bits lock memory ranges from being read from alternate block, not used by CP/M or LocoScript
F4h Read Timer Counter Bottom 4 bits: counter incremented by timer interrupt (0-15), reading resets it
F5h Write Video Controller - Roller-RAM Address Bits 7-0 specify block and offset / 512
F6h Write Video Controller - Vertical Scroll Origin Specifies which Roller-RAM line is at top of screen
F7h Write Video Controller - Display Control Bit 7=inverse video, Bit 6=screen on/off
F8h Write System Control Port Multi-function: video enable/disable, FDC interrupt mode, boot sequence end (value 0 ends boot)
F8h Read System Control Port - Status Bit 6=frame flyback, Bit 5=FDC interrupt pending, Bit 4=60Hz PCW flag
F9h Read Prototype Serial Interface (IM6403 UART) - Status Register Only on prototype PCW, not on production hardware
FCh Read PCW8256/8512/9256/10 Dot-Matrix Printer Controller - Error Status Returns controller error number. Note: the PCW9512 has different controller hardware and decodes 16 bits here - its 00FCh is instead a data register (read: data returned by a command), and 01FCh is its status register (read twice in succession for a stable value)
FCh Write PCW8256/8512/9256/10 Dot-Matrix Printer Controller - Command Port Used to send commands during reset. Note: the PCW9512 has different controller hardware and decodes 16 bits here - its 00FCh is instead a data register (write: data byte of a two-byte command), and 01FCh is its command register (write: command byte)
FDh Read PCW8256/8512/9256/10 Dot-Matrix Printer Controller - Printer Status Bit 7=bail bar, Bit 6=command done, Bit 1=busy, Bit 0=fault, also used by PCW9512 at 00FDh
FDh Write PCW8256/8512/9256/10 Dot-Matrix Printer Controller - Command/Data Port Sends printer commands during normal operation
FEh Read/Write LocoLink Parallel Transfer Interface Bit 1=Data 1 (input) / ACK (output), Bit 0=Data 0 (input) / BUSY (output)
FEh Read/Write Prototype Serial Interface (IM6403 UART) - Data Register Only on prototype PCW, not on production hardware, conflicts with LocoLink
FFh Read/Write PCW Linkit Parallel Transfer Interface Two-bit communication channel, value read is binary inverse of value written by other PCW

The above information is derived from John Elliott's excellent PCW Hardware manual. Please note that the hard drive, and SCA Mark 2 Interface information have not been verified.

tech/amstrad/pcw/ioports.1786452728.txt.gz · Last modified: by pollito