Printer Port

From CPCWiki - THE Amstrad CPC encyclopedia!
Revision as of 09:06, 7 July 2024 by Phi2x (Talk | contribs) (How it works)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

The printer port supports parallel one-directional 7bit data, strobe, and busy signals.

How it works

To send a byte to the printer, you first have to verify if it's ready, via bit6 of port B of the PPI located at &F500. When this bit is 0, you can send a byte. When it's 1, the printer is busy (its buffer is full, it's out of paper, it's turned off, not Online, ...).

Note that the system can differentiate between a full buffer and another type of error when the control bit stays at state 1 for too long.


On CPC, the printer is operated as follows: to send a byte, use port &EF00 by sending the value 3 times (1st: Bit7=0; 2nd: Bit7=1; 3rd: Bit7=0), with bit7 used to validate the byte. For this reason, only the 7 least significant bits were taken into account.

On Plus machines, the 8th bit of the printer port is on bit3 of register 12 of the emulated CRTC. This bit must have "seemed" unused to Amstrad engineers. Unfortunately, they didn't know about the Overscan Bits.

Data / Strobe

Port &EFxx - Printer Port Output 74LS273 (7bit Data and Strobe) (W)

 Bit 0-6  Printer Data (7bit)      (0=Low, 1=High)
 Bit 7    Printer Strobe           (0=High, 1=Low)

Busy (PPI PortB Bit6)

Port &F5xx - PPI Port B

 Bit 0     VSYNC    CRTC Vsync flag (1=VSYNC active)
 Bit 1-3   LK1-3    Distributor Code (see below)
 Bit 4     LK4      Desired Screen Refresh Rate (0=60Hz, 1=50Hz) (see below)
 Bit 5     /EXP     External Input (used for external hardware only)
 Bit 6     BUSY     Printer Busy flag (1=Busy, 0=Ready)
 Bit 7     RD DATA  Tape Data Input

General Specifications

For (detailed) general information about Amstrad/Scheider printers, see:

DMP4000 Mechanics.jpg

Pinouts

Upgrade to 8bit data

KC Compact Printer Port

The Printer Port in the KC Compact is fully compatible with the CPCs Printer Port, and includes some additional features:

  • Port &EFxx is CIO Port A, by default configured as Output, with inverted polarity on bit7 (same as on CPC). However, CIO Port A could be reprogrammed by software (for example: making it an Input, or disabling the bit7 inversion)
  • The 8th Printer bit connects to Bit5 of PIO Port C (same as the Happy Computer 8bit Printer Port mod)
  • The "TEST" Feature of the KC Compact BIOS allows to boot the computer remotely via some kind of "network" connection, which connects to some of the CIO Port A signals

Aleste 520EX Printer Port

The Aleste 520EX is not compatible with the CPCs Printer Port (it's having other, non-printer related hardware mapped to &EFxx). Aside from the compatibility problem it's better than the CPCs port: Data is 8bit bi-directional.

Non-Printer Devices that connect to the Printer Port