AMSTRAD CPS8256 TECHNISCHE REFERENZ
Die Quellen für dieses Dokument sind zwei PD-Textdateien, DART.DOC (von SJ Dibble) und AMS-SIO.DAT, die ausschließlich die serielle Schnittstelle behandeln. Informationen über den Parallelport und jede andere serielle/parallele Schnittstelle wären willkommen.
Richard Fairhurst, 1997
PORT-ADRESSEN
Das CPS8256 verwendet die folgenden E/A-Adressen. Als Referenz sind die entsprechenden Ports der Amstrad-, Pace- und Cirkit-Schnittstellen für den CPC in Klammern angegeben.
| &E0 | (&FADC) | DART Daten |
| &E1 | (&FADD) | DART Steuerung |
| &E2 | (&FADE) | DART Daten (Port B) |
| &E3 | (&FADF) | DART Steuerung (Port B) |
| &E4 | (&FBDC) | 8253 Zähler 0 |
| &E5 | (&FBDD) | 8253 Zähler 1 |
| &E6 | (&FBDE) | nicht verwendet |
| &E7 | (&FBDF) | 8253 Modus-Wort (Schreiben) |
BAUDRATEN
Um die Senderate (Transmit) einzustellen, senden Sie &36 an Port &E7 und zwei Werte aus der Tabelle (in der angegebenen Reihenfolge) an Port &E4. Um die Empfangsrate (Receive) einzustellen, ersetzen Sie &36 durch &76. Diese Werte beziehen sich auf den 8253 CTC bei einer Taktung von 1,84375 MHz.
Beachten Sie, dass der 8250 nur bis zu Geschwindigkeiten von 9600 Baud zuverlässig arbeitet. Für höhere Geschwindigkeiten sollte er durch einen 16550AF-Chip ersetzt werden, der zum 8250 kompatibel ist. (Danke an Rob Scott für diese Information).
| 31250 | &00, &04 |
| 19200 | &00, &07 |
| 9600 | &00, &0D |
| 7200 | &00, &11 |
| 4800 | &00, &1A |
| 3600 | &00, &23 |
| 2400 | &00, &34 |
| 2000 | &00, &3F |
| 1800 | &00, &45 |
| 1200 | &00, &68 |
| 600 | &00, &D0 |
| 300 | &01, &A0 |
| 200 | &02, &71 |
| 150 | &03, &41 |
| 110 | &04, &70 |
| 75 | &06, &83 |
| 50 | &09, &C4 |
| 45 | &0A, &D9 |
DART-REGISTER
Weitere Steuerungsfunktionen erfordern die Programmierung des DART. Um einen Wert in ein Register zu schreiben, senden Sie zuerst die Registernummer und dann den neuen Wert an &E1. Um einen Wert zu lesen, senden Sie die Registernummer und lesen Sie anschließend vom selben Port.
- Register 0 schreiben
| &18: | Port zurücksetzen |
| &38: | Fehlerbits zurücksetzen |
- Register 3 schreiben
| b7 und b6: | Rx-Datenbits (11 = 8 Bits, 10 = 7, 01 = 6, 00 = 5) |
| b5: | Hardware-Handshake über RTS/CTS |
| b4 bis b1: | müssen 0 sein |
| b0: | Rx-Datenleitung aktivieren |
- Register 4 schreiben
| b7 und b6: | DART-Taktmodus (auf 01 setzen) |
| b5 und b4: | ungenutzt (auf 0 setzen) |
| b3 und b2: | Stoppbits (11 = 2 Bits, 10 = 1, 01 = 1.5, 00 = illegal) |
| b1: | Paritätstyp (1 = gerade/even, 0 = ungerade/odd) |
| b0: | Paritätsprüfung ein/aus |
- Register 5 schreiben
| b7: | DTR aktiviert/deaktiviert |
| b6: | Tx-Datenbits (11 = 8 Bits, 10 = 7, 01 = 6, 00 = 5) |
| b4: | Sende-Unterbrechung (Send Break) |
| b3: | Tx-Datenleitung aktivieren |
| b2: | ungenutzt |
| b1: | RTS aktiviert/deaktiviert |
| b0: | ungenutzt |
- Register 0 lesen
| b7: | Unterbrechung empfangen (Break received) |
| b6: | ungenutzt |
| b5: | CTS |
| b4: | Rufanzeige (Ring Indicator) |
| b3: | DCD (Trägererkennung) |
| b2: | Sendepuffer bereit |
| b1: | Interrupt-bezogen |
| b0: | Empfangszeichen verfügbar |
- Register 1 lesen
| b7: | ungenutzt |
| b6: | Framing-Fehler |
| b5: | Rx-Überlauffehler |
| b4: | Paritätsfehler |
| b3 bis b1: | ungenutzt |
| b0: | alle gesendet |
