Das Interface CPS8256 wurde 1985 von Amstrad plc zeitgleich mit der Einführung der Modelle Amstrad PCW 8256 und PCW 8512 offiziell auf den Markt gebracht. Es stellt die wichtigste offizielle Erweiterung für die gesamte PCW-Reihe dar. Das Basisdesign des PCW verzichtete bewusst auf universelle Kommunikationsanschlüsse und beschränkte sich auf proprietäre Verbindungen, die ausschließlich für den eigenen Monitor und den nativen Nadeldrucker vorgesehen waren. Das CPS8256 wurde entwickelt, um diese Isolation aufzubrechen. Es ermöglichte erstmals den direkten Anschluss von Telefonmodems, seriellen Mäusen, Plottern sowie die Ausgabe an Matrix-, Typenrad- oder Laserdrucker von Drittanbietern.
In Bezug auf die historische Dokumentation hielt sich in Computerzeitschriften der 1980er Jahre hartnäckig das Gerücht, dass die Parallelschnittstelle nicht dem Centronics-Standard entsprach, da sie mit einer reinen Wortlänge von 8 Bit statt 7 Bit arbeitete. Low-Level-Hardwareanalysen haben dies als Mythos entkräftet: Der physische Port entspricht zu 100 % den elektrischen Leitungen und dem Protokoll des Standards. Der eigentliche Konflikt lag in der mitgelieferten Textverarbeitung LocoScript von Locomotive Software. Diese nutzte eine interne Zeichentabelle und proprietäre Formatierungssteuerzeichen. Dies führte zu unleserlichem Zeichensalat beim Drucken, sofern Textdokumente vor der Ausgabe über den Parallelport nicht explizit in ein Standard-ASCII-Format exportiert oder konvertiert wurden.
Diese Erweiterung veränderte das professionelle Ökosystem des PCW grundlegend. Sie ermöglichte asynchrone Verbindungen zu Mainframes oder IBM-kompatiblen PCs über Transfer-Suites wie LocoLink oder Terminal-Protokolle wie Kermit. Dadurch etablierte sich der Computer als offene Büro-Workstation statt als geschlossene Schreibmaschine.
Aus elektronischer Sicht beherbergt das CPS8256 eine Reihe integrierter Schaltkreise der Zilog-Logikfamilie (oder lizenzierte Klone), die perfekt aufeinander abgestimmt sind, um asynchrone E/A-Operationen zu verwalten, ohne die Z80-Haupt-CPU des Computers zu überlasten:
- Z80 DART (Dual Asynchronous Receiver/Transmitter) / Z80 SIO: Dies ist der Kommunikationskern des Geräts. Physisch verfügt er über zwei unabhängige Datenübertragungs- und Empfangskanäle. Im Layout von Amstrad ist Kanal A vollständig für die Steuerung der seriellen Schnittstelle nach dem RS-232C-Standard verdrahtet, während Kanal B geschickt umfunktioniert wurde, um die Statusleitungen, Steuersignale und das Handshaking des Centronics-Parallelports zu überwachen und zu sequenzieren.
- Z80 CTC (Counter/Timer Circuit): Dieser Timer-Baustein wird exklusiv als dedizierter, programmierbarer Baudraten-Generator (Baud Rate Generator) genutzt. Seine unabhängigen internen Kanäle verarbeiten die Taktfrequenzen, die zur Synchronisation der internen Register des Z80 DART erforderlich sind, wodurch stabile Datenübertragungsraten etabliert werden können.
- Spannungswandler-Subsystem: Der seitliche Erweiterungsbus des Amstrad PCW liefert nur +5V und +12V Versorgungsspannungen. Da die internationale RS-232C-Spezifikation zwingend symmetrische negative Spannungsschwellen zur Kodierung serieller Logikzustände vorschreibt (um Hintergrundrauschen zu vermeiden), integriert das CPS8256 eine interne Inverter-/Spannungswandlerschaltung, die die für die Signalisierung erforderliche -12V-Schiene erzeugt.
Das CPS8256-Interface wird auf dem Systembus decodiert, indem es einen festen Bereich von 8 adressierbaren Ports belegt, der von 0E0h bis 0E7h reicht. Das Hardware-Register-Layout gliedert sich wie folgt:
| Port (Hex) |
Port (Dez) |
Zugriff |
Systemfunktion und Registerziel |
0E0h |
224 |
R / W |
Z80 DART (Kanal A) - Datenregister: Liest eingehende Zeichen aus dem seriellen Puffer (Rx) und schreibt zu übertragende Daten (Tx). |
0E1h |
225 |
R / W |
Z80 DART (Kanal A) - Kontrollregister: Schreiben, um auf interne Register (WR0-WR5) zu verweisen, und Lesen von Statusregistern (RR0-RR1). |
0E2h |
226 |
Nur Schreiben |
Centronics Parallelport - Ausgaberegister (Data Latch): Speichert und hält das 8-Bit-Datenbyte auf den physischen Leitungen D0-D7 für den Drucker. |
0E3h |
227 |
Nur Lesen |
Centronics Parallelport - Statusregister: Echtzeit-Auslesen der physischen Hardware-Steuerleitungen (Busy, /Ack, Paper Empty, Select). |
0E4h |
228 |
Nur Schreiben |
Z80 CTC (Kanal 0) - Sender-Timer: Setzt die Zeitkonstante, die die Baudrate für die serielle Übertragung (Tx) definiert. |
0E5h |
229 |
Nur Schreiben |
Z80 CTC (Kanal 1) - Empfänger-Timer: Setzt die Zeitkonstante, die die Baudrate für den seriellen Empfang (Rx) definiert. |
0E6h |
230 |
— |
Vom Decodierungs-Hardware reservierte Leitung / Im Standarddesign von Amstrad ungenutzt. |
0E7h |
231 |
Nur Schreiben |
Z80 CTC (Kanal 3) - Allgemeines Kontrollregister: Initialisiert den Betriebsmodus der Zählerschaltungen und Hardware-Timer-Interrupts. |
Für die direkte Low-Level-Programmierung (z. B. in Z80-Assembler unter Umgehung von CP/M-BIOS-Aufrufen) arbeitet der Kontrollport des CPS8256 sequenziell. Die interne Registernummer, auf die zugegriffen werden soll, wird nach 0E1h geschrieben, und im folgenden I/O-Taktzyklus wird der Konfigurationswert an denselben Port gesendet oder von ihm gelesen. Die kritischen Bit-Funktionen zur Erhaltung des Systems sind im Folgenden aufgeführt:
- WR3 (Write Register 3 - Empfängerkonfiguration): Die Bits 7 und 6 definieren die empfangene Datenwortlänge (
11 = 8 Bit, 10 = 7 Bit, 01 = 6 Bit, 00 = 5 Bit). Bit 5 aktiviert die automatische Hardware-Flusssteuerung über die CTS/RTS-Leitungen, und Bit 0 aktiviert physisch die Empfängerlogik (Rx Enable).
- WR4 (Write Register 4 - Übertragungsparameter): Die Bits 7 and 6 steuern den Taktmultiplikator-Faktor (für das PCW-Design unveränderlich auf
01 gesetzt). Die Bits 3 und 2 definieren die Stoppbits oder Stop Bits (11 = 2 Bits, 10 = 1 Bit). Bit 1 aktiviert das Paritätsbit (1 = Even / Gerade, 0 = Odd / Ungerade), und Bit 0 aktiviert oder deaktiviert die Paritätsprüfung.
- WR5 (Write Register 5 - Senderkonfiguration): Bit 7 steuert den Zustand der physischen DTR-Leitung. Die Bits 6 und 5 legen die Wortlänge für die übertragenen Daten fest (
11 = 8 Bit, 10 = 7 Bit). Bit 3 aktiviert die Datenübertragung (Tx Enable), und Bit 1 steuert direkt die Ausgangs-RTS-Leitung.
- RR0 (Read Register 0 - Leitungsstatusregister): Ermöglicht die Übertragungsüberprüfung per Polling. Bit 7 überwacht die Break-Bedingung. Bit 5 spiegelt den logischen Zustand der CTS-Leitung wider, Bit 4 zeigt RI (Ring Indicate) und Bit 3 verfolgt DCD (Carrier Detect). Bit 2 wechselt in einen hohen Zustand (1), wenn der Hardware-Sendepuffer leer und bereit ist, während Bit 0 anzeigt, dass ein eingehendes Zeichen im Empfängerpuffer zum Lesen bereitsteht.
- RR1 (Read Register 1 - Fehlerregister): Speichert akkumulierte logische Fehler. Bit 6 erkennt Frame-Fehler (Framing Error), Bit 5 fängt Hardware-Empfänger-Overrun-Fehler (Rx Overrun Error) ab und Bit 4 markiert logische Paritätsfehler (Parity Error).
Das CPS8256 verfügt über zwei international standardisierte physische Anschlüsse, die gemäß den elektronischen Designspezifikationen von Amstrad verdrahtet sind:
1. Serieller Port (DB25-Stecker - DTE-Standardkonfiguration):
| DB25 Pin |
RS-232C Signal |
Fluss (PCW) |
Funktion der elektrischen Leitung |
| Pin 1 |
GND (Shield) |
— |
Schutzerde (Chassismasse / Abschirmungsreferenz des Kabels). |
| Pin 2 |
TXD (Transmit Data) |
Ausgang |
Serielle Sendeleitung für asynchrone Binärdaten. |
| Pin 3 |
RXD (Receive Data) |
Eingang |
Serielle Empfangsleitung für asynchrone Binärdaten. |
| Pin 4 |
RTS (Request To Send) |
Ausgang |
Hardware-Flusssteuerungsanforderung des PCW zum Senden von Daten. |
| Pin 5 |
CTS (Clear To Send) |
Eingang |
Signal vom Peripheriegerät, das dem PCW das Senden von Daten erlaubt. |
| Pin 6 |
DSR (Data Set Ready) |
Eingang |
Bestätigung, dass das externe Gerät/Modem eingeschaltet und bereit ist. |
| Pin 7 |
GND (Signal Ground) |
— |
Gemeinsame Massegreferenz für alle digitalen Datensignale. |
| Pin 8 |
DCD (Data Carrier Detect) |
Eingang |
Leitung zur Erkennung des Telefon-Trägertons (von Modems verwendet). |
| Pin 20 |
DTR (Data Terminal Ready) |
Ausgang |
Signal zur Bestätigung, dass der Amstrad PCW online und betriebsbereit ist. |
| Pin 22 |
RI (Ring Indicator) |
Eingang |
Anzeigeleitung für die Erkennung von Telefonklingeln. |
2. Parallelport (36-polige Amphenol Centronics-Buchse):
- Pin 1:
/STROBE-Steuersignal (Active-Low-Ausgang. Synchronisationspuls, der vom PCW ausgegeben wird, um den Drucker zu warnen, dass die Daten auf dem Bus D0-D7 gültig sind und übernommen werden müssen).
- Pins 2 bis 9: 8-Bit-paralleler Datenbus (Logische Signalleitungen
D0 bis D7).
- Pin 10:
/ACK-Steuersignal (Active-Low-Eingang. Impuls vom Drucker, der anzeigt, dass das vorherige Byte erfolgreich verarbeitet wurde).
- Pin 11:
BUSY-Signal (Active-High-Eingang. Diese Leitung wird vom Drucker auf 1 gehalten, wenn er offline ist, Daten verarbeitet oder sein Puffer voll ist, was den PCW anweist, die Übertragung anzuhalten).
- Pin 12:
PE-Fehlersignal (Paper Empty - Active-High-Eingang, der das physische Fehlen von Papier im externen Drucker meldet).
- Pin 13:
SLCT-Statussignal (Select - Aktiver Eingang, der bestätigt, dass das Peripheriegerät ausgewählt und online ist).
- Pins 19 bis 30: Logische Masserückleitungen zur gemeinsamen Masse (Signal Ground / GND).