ESCAPE-Steuerfolgen (2)
von Mario Leubner
Aus aktuellem Anlaß möchte ich an dieser Stelle den Beitrag von Uwe Felgentreu fortsetzen. Mit dem neuen SYSGEN ist es ja leicht möglich, ZAS direkt in die Systemspuren zu integrieren. Darum soll auch jeder wissen, welche Möglichkeiten sich dadurch ergeben. Ich möchte jedoch für alle, die ZAS noch nicht kennen, kurz ein paar Grundlagen erläutern bevor ich zu den ESC-Sequenzen komme.
Mit JUMP FC werden zunächst 3 Standardtreiber im Grundgerät erzeugt. Diese stammen aus dem EPROM im D004 und enthalten:
- einen einfachen V.24-Druckertreiber mit 1200 Baud (Kanal 1)
- einen einfachen Koppeltreiber mit 1200 Baud (Kanal 2)
- einen Terminaltreiber für die Standardfunktionen
Wer andere Treiber benötigt, kann mit MSYSG.COM seine eigenen in den Systemspuren installieren. Die installierten Treiber überschreiben dann beim Booten die Standardtreiber. Eine Möglichkeit zum Ersetzen des Terminaltreibers gab es jedoch nicht. Deshalb entstand ZAS, zunächst als COM-Datei und später als ZAS-Treiberdatei.
Beide Varianten sind identisch, nur daß die COM-Datei den Programmteil zum Laden des Treibers mit enthält, während für *.ZAS eine spezielle Laderoutine eines anderen Programmes genutzt wird. Es gibt also zunächst 3 Varianten, ZAS zu laden.
- Start der Datei ZAS.COM:
Das dürfte den meisten schon bekannt sein und ist die einfachste Art ZAS zu laden. Der Ladevorgang wird am Bildschirm angezeigt. - Laden der Datei *.ZAS mit dem Programm LADE.COM:
Das Programm LADE.COM stellt einen universellen Lader für die KC-Treiber dar. Es können also Druckertreiber *.LST, Koppeltreiber *.KOP und Terminaltreiber *.ZAS geladen werden. - Installation in den Systemspuren des neuen Systems:
Wer das ZSDOS-Paket besitzt und damit die Möglichkeiten des neuen Systems nutzen kann, hat jetzt noch die Möglichkeit ZAS mit in die Systemspuren zu schreiben. Das hat den Vorteil, daß ZAS nicht mehr als Datei von der Diskette (Festplatte) geladen werden muß und der Bootvorgang alle gewünschten Treiber automatisch lädt.
ZAS4 V1.1
ZAS wurde ja bereits in den KC-News 2/95 (Version 1.0) und KC-News 4/95 (Version 1.1) vorgestellt. Seit dieser Version gab es keine Änderungen mehr, es gibt jedoch bereits Vorstellungen über eine effektive Erweiterung zur Verwaltung des RAM4, wie in dieser Ausgabe nachzulesen ist.
ZAS läuft nur auf dem KC85/4 (bzw. KC85/5)! ZAS belegt im Grundgerät den Speicher von 400H bis 2000H. Beim Laden von ZAS wird außerdem der RAM4 benutzt, da das laufende ZAS nicht einfach überschrieben werden kann. Allgemein gilt im Grundgerät folgende Belegung:
0200H..037FH Druckertreiber 0380H..03FFH Koppeltreiber 0400H..1FFFH Terminaltreiber 2000H..3AFFH frei 3B00H..3CFFH RAM-Floppy-Verwaltungstabelle (für max. 4 MByte) 3D00H..3FFFH Bildschirmhilfstabelle für KC85/2,3 4000H..7FFFH bei KC85/2,3 nicht vorhanden, bei KC85/4,5 frei.
Gegenüber dem Terminaltreiber aus dem EPROM FC wurden einige Fehler beseitigt und viele neue Funktionen eingebaut. Dabei sind viele Programmteile optimiert worden. Es ist davon auszugehen, daß kein Programmteil mehr auf der ursprünglichen Adresse läuft. Aber das ist ja eigentlich nicht von Bedeutung, wenn man sich an die definierten Schnittstellen hält.
Bildschirmsteuerzeichen und ESC-Sequenzen:
Die Steuerzeichen und ESC-Sequenzen sind aufwärtskompatibel. Alle im "Handbuch für den Programmierer" abgedruckten Funktionen sind also uneingeschränkt weiterverwendbar. Als Programmierer sollte man beachten, daß die neuen Funktionen nur mit ZAS und nur auf dem KC85/4 verfügbar sind. Wer also Programme schreiben will, die auch auf dem KC85/3 laufen sollen, muß sich mit den alten Funktionen begnügen - doch auch dabei sind noch Abstriche zu machen bei den Funktionen ESC-60H bis ESC-62H.
Als erstes folgt eine Tabelle aller zur Zeit gültigen Bildschirmsteuerzeichen. Die in der ersten Spalte mit einem + gekennzeichneten Funktionen sind nur mit ZAS verfügbar. Vergleiche dazu Anlage 2 im Handbuch für den Programmierer.
Neu | ASCII | Hex. | dez. | Wirkung der Kommandos |
^A | 01H | 1 | Cursor in HOME-Position (links/oben) | |
+ | ^B | 02H | 2 | Cursor einschalten |
+ | ^C | 03H | 3 | Cursor ausschalten |
+ | ^D | 04H | 4 | Normaldarstellung (invers aus) |
+ | ^E | 05H | 5 | Inversdarstellung ein |
^G | 07H | 7 | BEEP (Signalton) | |
^H | 08H | 8 | Cursor eine Position nach links | |
+ | ^I | 09H | 9 | Tabulatorschritt vorwärts |
^J | 0AH | 10 | Cursor eine Zeile nach unten | |
+ | ^K | 0BH | 11 | Zeichen löschen (Zeichen rechts rücken nach) |
^L | 0CH | 12 | Bildschirm löschen und Cursor HOME | |
^M | 0DH | 13 | Cursor zum Zeilenanfang | |
+ | ^N | 0EH | 14 | Zeichensatz 1 (deutsch) |
+ | ^O | 0FH | 15 | Zeichensatz 2 (amerikanisch) |
+ | ^R | 12H | 18 | Leerzeichen einfügen |
^T | 14H | 20 | Löschen bis Bildschirmende | |
^U | 15H | 21 | Cursor um eine Position nach rechts | |
^V | 16H | 22 | Löschen bis Zeilenende | |
+ | ^W | 17H | 23 | Leerzeile einfügen |
^X | 18H | 24 | Zeile löschen | |
+ | ^Y | 19H | 25 | Zeile löschen (Zeilen unterhalb rücken nach) |
^Z | 1AH | 26 | Cursor um eine Zeile nach oben | |
ESC | 1BH | 27 | ESCape-Funktion bzw. Cursorpositionierung | |
+ | 1CH | 28 | Scroll-Modus einschalten | |
+ | 1DH | 29 | Page-Modus einschalten | |
DEL | 7FH | 127 | Zeichen links vom Cursor löschen | |
82H | 130 | Cursor einschalten | ||
83H | 131 | Cursor ausschalten | ||
+ | 84H | 132 | Normaldarstellung (invers aus) | |
+ | 85H | 133 | Inversdarstellung ein |
Die Steuercodes 82H bis 85H sind nur im ASCII-Modus wirksam, im IBM-Modus werden hiermit Zeichen erzeugt! Im IBM-Modus sollten deshalb nur die Steuerzeichen 2-5 für diese Funktionen eingesetzt werden. Kommen wir nun aber zu den ESC-Funktionen, die dem KC unter CP/M die Verwendung von Grafik, Farbe und Tonausgabe ermöglichen. Vergleiche dazu Anlage 3 im Handbuch für den Programmierer.
ASCII | Hex. | dez. | Bedeutung | Name | Anz. | Parameter | |
A | 41H | 65 | Punktsetzen | PSET | 3 | XX,Y | |
B | 42H | 66 | Punktlöschen | PRES | 3 | XX,Y | |
C | 43H | 67 | Grafikfarbe | GFARB | 1 | F | |
D | 44H | 68 | Linie | LINE | 6 | XX1,Y1,XX2,Y2 | |
E | 45H | 69 | Kreis | CIRCL | 4 | XX,Y,R | |
F | 46H | 70 | Fensteraufruf | WINDOW | 1 | N | |
G | 47H | 71 | Tonausgabe | SOUND | 6 | T1,V1,T2,V2,L,Z | |
H | 48H | 72 | Textfarbe | COLORZ | 2 | F,H | |
+ | I | 49H | 73 | Tabulator rückwärts | BACKTAB | 0 | - |
+ | J | 4AH | 74 | IBM-Zeichensatz | ZIBM | 0 | - |
+ | K | 4BH | 75 | ASCII-Zeichensatz | ZASCII | 0 | - |
L | 4CH | 76 | Fenster initial. | WININI | 5 | N,X1,Y1,X2,Y2 | |
M | 4DH | 77 | Pixel löschen | CLSG | 0 | - | |
N | 4EH | 78 | Vordergrund wechseln | INK | 1 | F | |
O | 4FH | 79 | Hintergrund wechseln | BACK | 1 | H | |
P | 50H | 80 | Bildschirmmode 80/40 | BSMODE | 0 | - | |
Q | 51H | 81 | 1 Byte lesen | READ1 | 2 | AA | |
R | 52H | 82 | 256 Byte lesen | READN | 3 | AA,D | |
S | 53H | 83 | 1 Byte schreiben | WRITE1 | 3 | AA,B | |
T | 54H | 84 | nn Bytes schreiben | WRITEN | 4+ | AA,NN,(NN*B) | |
U | 55H | 85 | Unterprogrammaufruf | GOSUB | 2 | AA | |
V | 56H | 86 | CAOS-Zeichenausgabe | CAOSBS | 1 | B | |
W | 57H | 87 | Ausgabe USERPORT 2 | USOUT2 | 1 | B | |
X | 58H | 88 | Ausgabe USERPORT 3 | USOUT3 | 1 | B | |
+ | Y | 59H | 89 | 256 Byte lesen | RD256 | 2 | AA |
+ | Z | 5AH | 90 | 256 Byte schreiben | WR256 | 2 | AA |
Ä | 5BH | 91 | CAOS-Sprungverteiler | CAOSP | 1 | N | |
Ö | 5CH | 92 | Rückkehr zu CAOS | EXIT | 0 | - | |
Ü | 5DH | 93 | Wechsel USA/deutsch | ZSATZ | 0 | - | |
^ | 5EH | 94 | PAGE/SCROLL-Mode | SCRMOD | 0 | - | |
_ | 5FH | 95 | KEYBOARD klein/groß | KBDMOD | 0 | - | |
` | 60H | 96 | Wechsel IRM-Ebene | IRMEB | 1 | S | |
a | 61H | 97 | IRM-Auflösung normal | IRMLO | 0 | - | |
b | 62H | 98 | IRM-Auflösung hoch | IRMHI | 0 | - | |
c | 63H | 99 | Module schalten | SWITCH | 2 | M,S | |
d | 64H | 100 | Punkttesten | PTEST | 2 | XX | |
e | 65H | 101 | F-Taste belegen | FKEY | 1 | N | |
+ | f | 66H | 102 | Farbmodus ein/aus | FARB80 | 1 | S |
+ | g | 67H | 103 | Fenster definieren | WIN80 | 6 | X1,Y1,X2,Y2,F,H |
+ | h | 68H | 104 | Fenster löschen | WCLS | 0 | - |
+ | i | 69H | 105 | Schatten um Fenster | SHADOW | 2 | F,H |
+ | j | 6AH | 106 | Rahmen in Fenster | FRAHM | 1 | F,N |
+ | k | 6BH | 107 | Rahmen zeichnen | RAHM | 7 | XX1,Y1,XX2,Y2,N |
80H | 128 | Locate Zeile, Spalte | |||||
..D0H | ..208 |
Bedeutung der Parameter:
1 Zeichen
= 1 Byte
Doppelzeichen
= 2 Byte (Wort, low/high)
AA - Adresse M - Moduladresse V - Vorteiler B - Byte N - Nummer XX - X-Koordinate D - Dummy NN - Anzahl Y - Y-Koordinate F - Farbcode R - Radius Z - Tondauer H - Hindergrund S - Steuerbyte L - Lautstärke T - Tonhöhe
Auch hier habe ich den neuen Funktionen wieder ein "+" vorangestellt. Neue Funktionen ohne Parameter können auch ohne ZAS4 aufgerufen werden, d. h. sie richten keinen Schaden an - es erfolgt aber auch keine Reaktion! So kann man z. B. durch Ausgabe von ESC-J testen, ob ein ZAS mit IBM-Steuerzeichen aktiv ist. Der IBM-Zeichensatz wird ja in Bit 4 von BSSTAT zurückgemeldet.
Auf eine ausführliche Beschreibung der neuen ESC-Sequenzen möchte ich an dieser Stelle verzichten. In der Datei ZASINFO.DOK ist alles nachzulesen und kann bei Bedarf auch ausgedruckt werden. Eine Kurzübersicht gibt auch das Demoprogramm ZASDEMO.COM.