AMSTRAD PCW HARDWARE-REFERENZHANDBUCH


Dies ist ein unvollständiges Hardware-Handbuch für die ursprüngliche Amstrad PCW-Serie: 8256/8512, 9256/9512 und 10. Das PCW16 wird hier nicht behandelt.

Die Quellen umfassen “Everything you always wanted to know…” von CP Software, John Elliott, Jacob Nevins (und seine exzellenten Webseiten), Cliff Lawson (der freundlicherweise die optische Zeichenerkennung (OCR) der Original-Amstrad-Dokumentation durchführte), Howard Fisher (der mir eine KeyMouse lieh), Paul Hunt und Kevin Thackers CPC-Ressource, die für das PCW relevante Informationen über Z80 und FDC enthält. Danke, Leute. Weitere Informationen sind jederzeit willkommen.

Richard Fairhurst, 1996-1997

EINFÜHRUNG

Das Betriebssystem des PCW ist CP/M, das aus zwei Hauptteilen besteht.

Das BDOS (Basic Disc Operating System) ist der Code des Betriebssystems, geschrieben von Digital Research. Es sollte auf jeder Maschine, auf der CP/M läuft, praktisch identisch bleiben.

Das BIOS (Basic Input/Output System) stellt eine Reihe von Routinen bereit, die auf die Hardware der Maschine zugreifen, und wurde im Falle des PCW von Locomotive/Amstrad geschrieben. Das BDOS ruft die BIOS-Routinen für alle Bildschirm-, Disketten- und Druckeroperationen auf.

Ebenfalls relevant ist der CCP (Console Command Processor), die Schnittstelle, die Befehle über die Eingabeaufforderung A> entgegennimmt. Die CP/M-Implementierung auf dem PCW lädt diesen nur beim Systemstart, daher sollte er nicht überschrieben werden.

Die TPA (Transient Program Area) ist der Speicherbereich, der bei &0100 in einem 64k-Adressraum beginnt und in den Benutzerprogramme (.COM-Dateien) geladen und ausgeführt werden.

E/A-PORTS

&00 E FDC-Statusregister
&01 E/A FDC-Datenregister
&88-&8F Parallele Ports
&9F E Kempston Joystick
&A0 E AMX-Maus. Vertikale Bewegung: b0-3 4-Bit-Aufwärtszähler, b4-7 Abwärtszähler.
&A1 E AMX-Maus. Horizontale Bewegung: b0-3 4-Bit-Rechtszähler, b4-7 Linkszähler.
&A2 E AMX-Maus. Tastenstatus: b2 rechts, b1 mitte, b0 links (0 wenn gedrückt, 1 wenn nicht).
&A0-&A2 EMR MIDI-Schnittstelle
&A8-&AF Festplatte
&C8-&CF E/A Fax-Link-Schnittstelle (CPS8256 kompatible Schaltung).
&D0-&D4 Kempston Maus (ähnlich wie AMX)
&DF E MasterScan: b0 Tinte unter dem Scankopf.
&E0 E Cascade/Spectravideo Joystick. b4 rechts, b3 oben, b2 links, b1 Feuer, b0 unten.
&E0-&EF E/A Serielle Ports (klicken für mehr Informationen)
&F0 A Bank für &0000 auswählen
&F1 A Bank für &4000 auswählen
&F2 A Bank für &8000 auswählen
&F3 A Bank für &C000 auswählen. Normalerweise &87.
&F4 A b7-b4: Wenn gesetzt, erzwingt es, dass Speicherlesezugriffe auf dieselbe Bank zugreifen wie Schreibzugriffe für &C000, &0000, &8000 bzw. &4000.
&F4 E Wie &F8, unter der Bedingung, dass b3-0 beim Lesen des Ports zurückgesetzt werden. Daher lesen, um Interrupts zu reaktivieren.
&F5 A Roller-RAM-Adresse. b7-5: Bank (0-7). b4-1: Adresse / 512.
&F6 A Vertikale Bildposition
&F7 A b7: Inverses Video. b6: Bildschirmfreigabe.
&F8 A 0 Bootvorgang beenden, 1 Reset, 2/3/4 FDC an NMI/Standard-Interrupts/Keine anschließen, 5/6 FDC Terminal Count setzen/löschen, 7/8 Bildschirm an/aus (für externes Video), 9/10 Diskettenmotor an/aus, 11/12 Signalton an/aus.
&F8 E b6: 1-Zeilen-Rücklauf, zweimaliges Lesen hintereinander zeigt Frame-Rücklauf an. b5: FDC-Interrupt. b4: Zeigt 32-Zeilen-Bildschirm an. b3-0: 300-Hz-Interrupt-Zähler: bleibt auf 1111, bis er mit in a,(&F4) zurückgesetzt wird (siehe oben).
&FC-&FD Paralleler Port (PCW9512)
&FC E/A Nadeldrucker-Daten
&FD A Nadeldrucker-Befehle
&FD E Nadeldrucker-Status. b7 Sicherheitsbügel (0 offen), b2 Papier gefunden.

Im Gegensatz zum CPC verwendet der PCW die Standard-Z80-Methode für den Zugriff auf E/A-Ports. Der Port wird als (Einzelbyte-)Nummer in C gespeichert und ein Befehl wie out ( c ),a wird verwendet [Nummer einfügen], oder er wird als Teil des Befehls out (&port),a übergeben.

INTERRUPTS / TAKTRATE

Interrupts treten 300 Mal pro Sekunde auf, oder 6 Mal pro Frame (wie beim CPC), an den 2 Scanzeilen des Frame-Flybacks und danach alle 52 Zeilen. Der Frame-Flyback kann durch zweimaliges aufeinanderfolgendes Lesen von Port &F8 erkannt werden. Nur wenn b6 jedes Mal gesetzt ist, befindet sich der PCW im Frame-Flyback.

Die Taktrate des PCW beträgt 3,4 MHz, was niedriger ist als bei einer 4-MHz-CPU. Der Zugriff der Video-Hardware verlangsamt jedoch den Speicherzugriff auf die ersten 128k (Banken 0-7). Der BIOS-Interrupt ist ebenfalls langsam und sollte für zeitkritische Operationen deaktiviert werden, bei denen keine Funktionen wie Tastaturabfrage oder Diskettenzugriff erforderlich sind.

SPEICHERBELEGUNG

Der PCW 8256 verfügt über 16 Banken zu je 16k. 512k-Maschinen und erweiterte Systeme enthalten offensichtlich mehr. Der Standardinhalt ist:

0 &0000-&3FFF: BIOS, erweiterter Jumpblock
1 &0000-&192F: BIOS
&1930-&3FFF: Bildschirm
2 &0000-&332F: Bildschirm
&3600-&37FF: Roller-RAM
&3800-&3FFF: Zeichensatz
3 &0000-&3FEF: BIOS, BDOS
&3FF0-&3FFF: DMA-Tastaturbelegung
4 &0000-&00FF: Arbeitsbereich und BIOS/BDOS-Sprünge
&0100-&3FFF: TPA
5 &0000-&3FFF: TPA
6 &0000-&3FFF: TPA
7 &0000-&2FFF: Gemeinsames RAM (verfügbar für die Nutzung in allen Konfigurationen)
&3000-&3FFF: CP/M-Arbeitsbereich
8 &0000-&3FFF: CCP, Hash-Tabellen, Datenpuffer
9-16 &0000-&3FFF: RAM-Disk (Laufwerk M:)

Das Roller-RAM und der Bildschirmspeicher können in jeder der Banken 0 bis 7 gespeichert werden. Daher verlangsamen die Zugriffsanforderungen der Videoschaltkreise den Zugriff auf Code/Daten in diesen Banken.

Jede Bank kann über die Ports &F0-&F3 in jedes der vier 16k-Segmente des Z80-Adressraums gemappt werden. Unter CP/M sind die folgenden (benannten) Konfigurationen Standard:

Bildschirm BDOS (0) Extra (n+2) TPA (1)
&C000 (&F3) 7 gemeinsam 7 gemeinsam 7 gemeinsam 7 gemeinsam
&8000 (&F2) 2 Bildschirm 3 BDOS/BIOS 3 BDOS/BIOS 6 TPA
&4000 (&F1) 1 Bilds./BIOS 1 Bilds./BIOS 8+n CCP oder M: 5 TPA
&0000 (&F0) 0 BIOS 0 BIOS 0 BIOS 4 TPA

Durch Senden der Banknummer (mit aktiviertem b7) an einen der Ports &F0-&F3 wird diese Bank zum Lesen und Schreiben ausgewählt. Durch Senden der Banknummer für Schreibvorgänge an b0-2 eines Ports und der Bank für Lesevorgänge an b4-b6 (mit deaktiviertem b7) werden separate Banken für Lesen und Schreiben zugewiesen: Dies kann nur für die ersten 8 Banken verwendet werden.

Als Beispiel für den Lese-/Schreibzugriff: Um Bank 5 im Speicher ab &4000 zu mappen, verwenden Sie ld a,&85: out (&F1),a.

BILDSCHIRMSPEICHER

Der PCW-Bildschirm bei den 50-Hz-Modellen (nicht US-Modelle) hat eine Auflösung von 90 x 32 Zeichen oder 720 x 256 Pixeln. Jede Pixelzeile kann an einer beliebigen Adresse innerhalb der ersten 128 kB des Speichers beginnen: Die Adresse jeder Zeile wird in einem 512-Byte-Speicherbereich gespeichert, der als Roller-RAM bekannt ist. Standardmäßig befindet sich das Roller-RAM bei &3600 (gemappt auf &B600) in Bank 2, dies kann jedoch über den Port &F5 geändert werden. Es enthält 256 aufeinanderfolgende Adressen, die im üblichen Z80-Format gespeichert sind, zuerst das Low-Byte: b16-14 steuern, in welcher Bank sich die Zeile befindet, b13-3 die Adresse in der Bank (in 16-Byte-Einheiten) und b2-0 den Offset. Daher zeigt eine Roller-RAM-Adresse bbbxxxxxxxxxxxyyy auf Bank bbb, Adresse 00xxxxxxxxxxx0yyy.

Jede Zeile hat eine Länge von 720 Bytes, nicht 90. Dies liegt daran, dass der PCW jedes achte Byte ab der vom Roller-RAM angegebenen Adresse belegt. Auf diese Weise können acht Bildschirmzeilen wie folgt verschachtelt werden, um das Schreiben von Zeichen zu erleichtern (unter der Annahme einer fortlaufenden Roller-RAM-Anordnung):

(a+0) (a+8)  (a+16) ... 
(a+1) (a+9)  (a+17) 
(a+2) (a+10) (a+18) 
(a+3) (a+11) (a+19) 
(a+4) (a+12) (a+20) 
(a+5) (a+13) (a+21) 
(a+6) (a+14) (a+22) 
(a+7) (a+15) (a+23)

Die vertikale Bildschirmposition auf dem Monitor kann durch Erhöhen oder Verringern des Ports &F6 verändert werden.

TASTATURBELEGUNG

Die Tastatur des PCW wird direkt auf die letzten 16 Bytes von Bank 3 abgebildet, selbst wenn die Interrupts deaktiviert sind. Jede Taste spiegelt sich in einem Bit in den Bytes &3FF0-&3FFA wider.

b7: k2 k1 [+] . , Leer VXZ del< alt
b6: k3 k5 1/2 / MNBC k. sperren
b5: k6 k4 Shift ; KJFDA Enter
b4: k9 k8 k7 ¤ LHGS Tab f8
b3: Paste Copy # PIYTWQ [-]
b2: f2 Cut Return [ OURE Stop Can
b1: k0 ptr ] - 9 7 5 3 2 Extra
b0: f4 Exit del> = 0 8 6 4 1 f6
&3FF0 &3FF1 &3FF2 &3FF3 &3FF4 &3FF5 &3FF6 &3FF7 &3FF8 &3FF9 &3FFA

Die Bytes &3FFB-&3FFF spiegeln die Tastatur anders und unvollständig wider. Diese Bytes werden auch von der KeyMouse von Creative Technology (im MicroDesign-Standardmodus) und der Teqniche 102-Tasten-Tastatur verwendet, um zusätzliche Funktionen bereitzustellen, was zu einigen Inkompatibilitäten führt. Zu den interessantesten Zuweisungen gehören:

&3FFB Standard-Tastatur b7-b0 ungenutzt (0)
KeyMouse b6-b0 Zähler für horizontale Bewegung.
&3FFC KeyMouse b7-b6 High-Bits des vertikalen Bewegungszählers.
&3FFD Alle b7 immer gesetzt; b6 aktueller Status von SHIFT LOCK
Standard-Tastaturen b3-b0 Cursortasten, b4 Matrix-Taste
KeyMouse b3-b0 Low-Bits des vertikalen Bewegungszählers.
&3FFE KeyMouse b7 linke Taste, b6 rechte Taste.