80 Zeichen/Zeile
Ch. Schiewe hat in der mp 6/1990 eine Schaltung vorgestellt, mit der der Z9001 80 Zeichen in jeder Zeile darstellen kann.
Das Bildschirmformat 24×80 hat sich als Standard für CP/M in der Computertechnik durchgesetzt. Es ermöglicht u.a. die Anwendung von leistungsfähigen Textverarbeitungsprogrammen (zum Beispiel Wordstar).
Der Umbau des Z9001 ist recht einfach. Benötigt werden lediglich vier zusätzliche Schaltkreise und natürlich zusätzliche Bildwiederholspeicher-RAMs.
Damit in der gleichen Zeiteinheit die doppelte Anzahl von Zeichen aus dem Bildwiederholspeicher ausgelesen werden kann, ist als eine Verdopplung der Grundtaktfrequenz erforderlich. Der Bildwiederholspeicher EC00-EFFF wird doppelt ausgeführt, über ein Umschaltsignal (OUT CS1 bzw. OUT CS2) werden die beiden Speicherebenen angesprochen. Speicherebene 1 enthält die Zeichen der Spalten 0,2,4,.. Speicherebene 2 enthält die Zeichen der Spalten 1,3,5,… Ein weiteres Umschaltsignal erlaubt das Umschalten zwischen originalem 40-Zeichen-Modus (dann ist nur Speicherebene 1 aktiv), und dem 80-Zeichen-Modus.
Ein neuer CRT-Treiber CRT80 übernimmt unter CP/M die Ansteuerung der Hardware.
Von U.Zander kommt eine kombinierte Hardware, die diesen 80-Zeichen-Modus und die KRT-Grafik auf einer Platine vereint! → http://www.sax.de/~zander/z9001/ex/80z.html
Wird der Farbspeicher E800-EBFF nicht auch doppelt ausgeführt, gelten die Farbattribute immer für 2 nebeneinanderliegende Zeichen (d.h. für beide Speicherebenen).
Download
- z9001_crt80.zip enthält Treiber, Quellcode, Zeichensatz, mp-Artikel
CRT-Treiber
Der CRT-Treiber wird unter CPM mit CRT82 geladen. (die originale Version heißt CRT80, U. Zander hat seine Version CRT81 genannt, deshalb hier CRT82). CRT82 wurde von mir gegenüber der originalen Version auf die Hardware nach U. Zander angepasst (andere Port-Adressen) und erweitert (andere Umlautcodierung, zusätzliche ESc-Kommandos).
Zur Nutzung des Treibers wird ein 64K-RAM-Modul zwingend benötigt. Der Treiber selbst kopiert sich in den Shadow-RAM des 64K-Moduls (7000h-73FFh).
spezielle Funktionen:
^O statt der Klammern werden Umlaute ausgebenen (EPSON-kompatible Belegung der Zeichen)
^N Zurückschalten auf Klammernausgabe
ESC-Funktionen kompatibel zu CP/A (z.B. PC1715):
; der Treiber realisiert ein SCP kompatibles Terminal ; - Realisierung der SCP1715-Steuerzeichen 1b 5e xx (Feldattribut) und 1b 5f xx (Spezialzeichen) ; Andere ESC-Folgen führen i.a. auf '^' (unzulaessig), ; ausser Feldattribute invers und hell (Reaktion wie Steuerz. 84..87) ; - Umlaut-Umkodierung fuer deutschen Zeichensatz wie SCP1715-Steuerzeichen 0Eh und 0Fh ; d.h. Umlaute werden nach Umschalten auf Deutsch auf den Zeichen {|}[\]~ ausgegeben. ; 00h ;nop ; 01h ;home ; 02h ;(auch 82h) cursor an ; 03h ;(auch 83h) cursor aus ; 04h ;(auch 84h) normal, nicht inv. grün auf schwarz ; 05h ;(auch 85h) normal, inv. schwarz auf grün ; 06h ;(auch 86h) hell , nicht inv. gelb auf schwarz ; (nur 87h) hell , inv. ; 07h ;bell (akustisches zeichen) ; 08h ;cursor zurueck ; 0ah ;LF ; 0bh ;cursor hoch (nur CRT82) ; 0ch ;bs loeschen, cursor links oben ; 0dh ;CR ; 0eh ;umschalten auf 2. Zeichensatz ; 0fh ;umschalten auf 1. Zeichensatz ; 14h ;rest bs loeschen ; 15h ;cursor vorwaerts ; 16h ;rest der zeile loeschen ; 18h ;zeile loeschen, cursor an zeilanf. ; 1ah ;eine zeile hoch ; 1bh ;escape ; 1b zeile+80h spalte+80h Kursor posit. SCP ; 1b zeile+00h spalte+00h geht auch bei CP/A ; 1b 5e xx Feldattribut setzen ; mit xx= 01urggbh ; u unterstreichen, ; r invers (* wird unterstützt), ; gg Zeichengenerator-Umschaltung, ; b blinken, ; h heller (* wird unterstützt) ; 1b 5f xx Spezialzeichen setzen ; mit xx= 01ssssbh ; ssss Zeichencode (1100 Sonderfkt) ; b blinken des Sonderzeichens ; h heller des Sonderzeichens ; 1ch ;Farbbefehl ; 1c 40h+Farbe Randfarbe ; 1c 10h+Farbe Hintergrundfarbe ; 1c 20h+Farbe Vordergrundfarbe ; +80h blinkend ; 0 schwarz ; 1 rot ; 2 grün ; 3 gelb ; 4 blau ; 5 purpur (violett) ; 6 cyan (hellblau) ; 7 weiss ; 7fh ;delete ; 87h ;(nicht 07h) hell , inv.
Beispiel: Ausgabe der farbigen Startmeldung (s.o. Bild):
db 0Ch ; cls db ESC,27h ; Vordergrund weiss db 0Fh ; deutscher ZS db ESC,14h," 80 Zeichentreiber f}r " ; Hintergrund blau db ESC,023h+80h,"KC87" ; blinkend, Vordergrund gelb db ESC,27h," installiert " ; Vordergrund weiss db ESC,20h,ESC,11h ; Vordergrund scharz, Hintergrund rot db " von Chr. Schiewe am 27.12.1989 ! ",7,7,7 db ESC,17h,0Dh,0Ah," Farben : " ; Hintergrund weiss db ESC,11h," " ; Hintergrund rot db ESC,12h," " ; Hintergrund grün db ESC,13h," " ; Hintergrund gelb db ESC,14h," " ; Hintergrund blau db ESC,15h," " ; Hintergrund purpur db ESC,16h," " ; Hintergrund cyan db ESC,17h," " ; Hintergrund weiss db ESC,10h,ESC,22h ; Hintergrund scharz, Vordergrund grün db 0Dh,0Ah,0Dh,0Ah ; db "^O -> deutscher Zeichensatz: { } | [ ] \\ ~",0Dh,0Ah db 0Eh,"^N -> normaler Zeichensatz: { } | [ ] \\ ~",0Dh,0Ah,"$"
Zeichensatz
Für eine gut lesbare Darstellung der nun halb so breiten Zeichen und natürlich für Umlaute ist ein neuer Zeichensatz sinnvoll. Hier empfiehlt sich der IBM-CGA-Zeichensatz, wie er in der mp vorgestellt wurde.
Unter CP/M-80-Zeichen werden wohl keine Z9001-Grafik-Programme zum Einsatz kommen, die die Grafikzeichen des Z9001 nutzen. Damit kann der Zeichensatz für die 80-Zeichen-Hardware komplett IBM-kompatibel gelassen werden; incl. aller Umlaute, Sonderzeichen, Rahmenzeichen etc. Alle CP/M-Programme von anderen Rechnern, die den gleichen Zeichensatz nutzen, wie z.B. PC1715, laufen damit unverändert.
In Wordstar können dadurch gleichzeitig Umlaute und die Klammern verwendet werden!
Dokumente, die die EPSON-Kodierung für Umlaute nutzen, können durch Umschalten auf Umlautdarstellung mit ^O ebenfalls lesbar gemacht werden.
Ansteuerung
Port | Bedeutung |
---|---|
BB | Zeichensatz umschalten (Z9001 ↔ CGA) |
BC | 40-Zeichen-Modus an (Z9001) |
BD | 80-Zeichen-Modus an |
BE | Speicherebene 1 aktivieren |
BF | Speicherebene 2 aktivieren |
Durch Ausgabe eines beliebigen Wertes auf den jeweiligen Port wird die Funktion aktiviert.