A> CPS8256 (Centronics Parallel- und RS232C Serielle Schnittstelle)
Beschreibung, Kontext und Historie

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.

Hardware-Architektur und Silizium-Komponenten

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.
Z80 Eingabe/Ausgabe (I/O) Port-Mapping

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.
Interne Registerstruktur des Z80 DART (Port 0E1h)

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).
Anschlüsse und Pinbelegungen (Pinout)

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).
Betriebssystemunterstützung und Emulator-Integration
  • Dynamisches BIOS-Patching: Wenn das CPS8256 während des Kaltstarts physisch mit dem seitlichen Erweiterungsbus verbunden ist, erkennt die im Systemladeblock des CP/M Plus-Betriebssystems gespeicherte Startroutine die Hardware automatisch. Das BIOS ändert die offizielle Begrüßungsnachricht auf dem CRT-Monitor dynamisch und fügt die Zeichenfolge hinzu: (SIO/Centronics add-on).
  • MAIL232 Kommunikations-Tool: Die original von Amstrad verteilte Systemprogramm-Diskette enthielt die ausführbare Datei MAIL232.COM. Dieses Dienstprogramm interagierte direkt mit den seriellen Registern des CPS8256 und verwandelte den Computer in ein kompatibles Terminal für frühe BBS-Systeme.
  • CP/M Box (von Habi / Habisoft): Habis Emulator fängt alle Lese- und Schreibzugriffe auf die logischen Ports 0E0h-0E7h vollständig ab. Es ermöglicht Benutzern, diesen gesamten Datenstrom auf moderne physische/virtuelle COM-Ports des Hostsystems umzuleiten oder die Centronics-Paralleldaten direkt in Textdateien oder Windows LPT-Druckwarteschlangen zu leuten.
  • Joyce (von John Elliott): Bildet die interne Logik des integrierten Schaltkreises Z80 CTC und das synchrone Verhalten des Z80 DART im ursprünglichen Hardware-Adressraum mit absoluter, zyklengenauer Präzision nach.
Dokumentation und Downloads