== 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, ...).
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 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 EFxx - Printer Port Output 74LS273 (7bit Data and Strobe) (W)
Bit 0-6 Printer Data (7bit) (0=Low, 1=High)
== Busy (PPI PortB Bit6) ==
Port &F5XX F5xx - PPI Port B
Bit 0 VSYNC CRTC Vsync flag (1=VSYNC active)
== General Specifications ==
*[https://en.wikipedia.org/wiki/ESC/P Epson Standard Code for Printers (ESC/P)] Wikipedia article
*[https://files.support.epson.com/pdf/general/escp2ref.pdf Epson ESC/P Reference Manual]
For (detailed) general information about Amstrad/Scheider printers, see:
* [[8bit Printer Ports]]
Amstrad Plus machines can handle 8bit data natively. 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.
== 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 EFxxh &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 Ports|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 EFXXh&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 ==