Changes

Jump to: navigation, search

Printer Port

965 bytes added, 7 July
The printer port supports parallel one-directional 7bit data, strobe, and busy signals.
 
== How it works ==
 
To send a byte to the printer, you just need to ask 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. This is still the case on this port for compatibility reasons.
 
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 (PIO.PPI PortB.Bit6) ==
Port &F5XX PIO - PPI Port B
Bit 0 VSYNC CRTC Vsync flag (1=VSYNC active)
6,109
edits