Difference between revisions of "Printer Port"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
(How it works)
(How it works)
 
(8 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
== How it works ==
 
== 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.
+
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.
+
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 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.
+
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 ==
 
== Data / Strobe ==
  
Port &EFXX - Printer Port Output 74LS273 (7bit Data and Strobe) (W)
+
Port &EFxx - Printer Port Output 74LS273 (7bit Data and Strobe) (W)
  
 
   Bit 0-6  Printer Data (7bit)      (0=Low, 1=High)
 
   Bit 0-6  Printer Data (7bit)      (0=Low, 1=High)
Line 21: Line 21:
 
== Busy (PPI PortB Bit6) ==
 
== Busy (PPI PortB Bit6) ==
  
Port &F5XX - PPI Port B
+
Port &F5xx - PPI Port B
  
 
   Bit 0    VSYNC    CRTC Vsync flag (1=VSYNC active)
 
   Bit 0    VSYNC    CRTC Vsync flag (1=VSYNC active)
Line 46: Line 46:
  
 
The Printer Port in the [[KC Compact]] is fully compatible with the CPCs Printer Port, and includes some additional features:
 
The Printer Port in the [[KC Compact]] is fully compatible with the CPCs Printer Port, and includes some additional features:
* Port EFxxh 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)
+
* 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 Ports|8bit Printer Port]] mod)
 
* 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
 
* 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
Line 52: Line 52:
 
== Aleste 520EX Printer Port ==
 
== 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). Aside from the compatibility problem it's better than the CPCs port: Data is 8bit bi-directional.
+
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 ==
 
== Non-Printer Devices that connect to the Printer Port ==

Latest revision as of 09:06, 7 July 2024

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