ZAS 1.0 - die neue Steuerschleife für MicroDOS

von Mario Leubner

Einigen KC85/4-Usern ist ZAS (in einer älteren Version) sicher schon bekannt. Für alle anderen will ich erst mal das Anliegen des Programms erläutern: ZAS ("Z"entrale "A"bfrage"S"chleife) ersetzt die Steuerschleife, die während der Arbeit mit MicroDOS im CAOS-Grundgerät läuft und die Terminalfunktionen (Eingabe, Ausgabe, Drucken...) gewährleistet. ZAS läuft nur auf dem KC 85/4 (bzw. KC 85/5), da Programmcode enthalten ist, der speziell für den IRM-Aufbau dieser Rechner geschrieben wurde. Das Programm testet selbst das Vorhandensein eines KC 85/4 und bricht sonst mit einer Fehlermeldung ab.

Zum Laden von ZAS in der PC-Betriebsart einfach "ZAS" eingeben oder "ZAS" in die INITIAL.SUB-Datei schreiben und nach wenigen Sekunden erscheint die Bereitschaftsmeldung von ZAS. Erkennbar ist ZAS schon an der inversen Schrift, dem neuen Zeichensatz (!) und dem blinkenden Strichcursor.

Beim Start von ZAS wird das gesamte Programm zunächst ab 4000H in den RAM4 übertragen, um es dann mit einem LDIR-Befehl im DI auf den Bereich ab 400H zu kopieren. Im RAM4 wird ZAS danach gelöscht und dieser Speicherbereich ist wieder frei für andere Anwendungen. Die bereits installierten Drucker- und Koppeltreiber sowie die RAM-Floppy-Verwaltungstabelle bleiben unverändert erhalten! ZAS läuft wie die Originalsteuerschleife auf der Adresse 400H, ist aber etwas länger.

Da der Speicherbereich der Originalroutine nirgends dokumentiert wurde, kann man davon ausgehen, daß bisher kaum Programme in den nahen Bereich der Steuerschleife geschrieben wurden und so Konflikte mit ZAS bekommen. Allgemein gilt für die (alte als auch neue) zentrale Steuerschleife folgende Speicherbelegung im CAOS- RAM:

0200H..037FH Druckertreiber
0380H..03FFH Koppeltreiber
0400H..17FFH Zentrale Steuerschleife mit KTAB, CCTL80, ESCTAB
1800H..1FFFH hier liegen bei ZAS die IBM-Zeichencodetabellen für den 40-Zeichenmodus, wenn nicht mit dem IBM-Zeichensatz von CAOS4.3 (ZAS43.COM) gearbeitet wird.
2000H..3AFFH mit Vorsicht als frei anzusehen (Erweiterungen!)
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. Wird zum Laden von ZAS benötigt, ist danach aber wieder frei verfügbar.

Das Ziel von ZAS ist es, Fehler der Originalsteuerschleife zu beseitigen und dem Programmierer wie dem Anwender eine komfortablere Arbeitsumgebung zu bieten. Welche Möglichkeiten hat ZAS nun gegenüber der mit "JUMP FC" aus dem D004-ROM geladenen Steuerschleife?

Fehlerbeseitigung

  • Cursor on/off von Tastatur ohne Nebeneffekte
  • sichere Tastatur-Routine
  • Wechsel 80/40 Zeichen ohne Nebeneffekte
  • (IX+1) stimmt zu jeder Zeit mit OUT84 überein
  • Wechsel zwischen PAGE- und SCROLL-Modus jederzeit möglich
  • Punkttesten (ESC-'d') jetzt wirklich 16 Bit in XX
  • Bildschirm-Steuerzeichen funktionieren jetzt auch im 40-Zeichenmodus
  • Kein Absturz bei Tastencodes 81H und 92H..0F0H (Diese Codes könnten z.B. von einer externen V.24-Tastatur oder einer geänderten KTAB kommen.)
  • Quittierung von ESC-'Ö' (Exit): Nach Warmstart wird dieses Zeichen nicht nochmals auf dem Bildschirm dargestellt
  • Deutscher Zeichensatz auch bei Code 40H: Klammeraffe/Paragraph
  • Blinken ein/aus bei Wechsel zwischen HIRES- und Normalmodus
  • ESC-Funktionen vordefiniert bis ESC-7FH, dadurch kein Absturz durch Programmfehler mehr möglich
  • über HEX-Funktion (F1+STOP) kann jetzt auch der Code 00H erzeugt werden, bei eingeschaltetem Tastenclick erfolgt die Tonausgabe nach der zweiten Hex-Ziffer, also bei Aktivierung des Codes als Tastencode.

Änderungen/Erweiterungen

Die KC85/4-Overlays wurden aufgelöst und teilweise effektiver programmiert. Deshalb ist ZAS auch nur auf dem KC85/4 lauffähig. Eine neue 80-Zeichen-Routine für Zeichensatz mit 10*4 Pixel gestattet wahlweise auch IBM-Grafikzeichen (Codes 20H-0FFH). Die Zeichenhöhe von 10 Byte ist erforderlich, damit bei den Grafikzeichen geschlossene Linien entstehen!

Im Vierzig-Zeichenmodus kann wahlweise ein IBM-Zeichensatz nachgeladen (ZAS.COM) bzw. der IBM-Zeichensatz aus CAOS4.3 (ZAS43.COM) verwendet werden. Der Cursor kann in 4 Varianten dargestellt werden. Eine Umschaltung ist nur über die Tastatur möglich. Das Blinken erfolgt mit CTC-Steuerung. Neue Tastenkombinationen gestatten außerdem den Wechsel des Zeichensatzes (ASCII/IBM) und die Nutzung der beiden Bilder des KC85/4.

ZAS V1.0

Mit der Version 1.0 hat ZAS die bisher umfangreichsten Erweiterungen erhalten. Das betrifft vor allem Funktionen zum Einfügen und Löschen von einzelnen Zeichen und ganzen Zeilen, und die Möglichkeit, Farbe und Fenstertechnik auch im 80- Zeichenmodus effektiver nutzen zu können. Im folgenden sind alle Neuerungen gegenüber der Version vom 09.06.94 erläutert, ausführlich ist alles nochmals in der Datei ZASINFO.DOK beschrieben, die im Archiv ZAS4.COM enthalten ist.

Zur Tastatureingabe ist zwischen der Steuerschleife und MicroDOS ein 32 Byte langer Puffer im Koppel-RAM angelegt. Schnelle Tastatureingaben werden also zwischengespeichert bis der Puffer voll ist ­ dann gehen die Tastencodes verloren. ZAS 1.0 erzeugt bei gefülltem Tastenpuffer einen "Puffer-voll-Click", um den Bediener anzuzeigen, daß der Tastencode nicht übernommen wurde. Der erzeugte Ton ist etwas tiefer und doppelt so lang wie der normale Tastenclick und damit gut von diesem zu unterscheiden.

Neue Bildschirmsteuerzeichen und ESCape-Routinen wurden definiert, um den Programmierern eine bessere Betriebssystemumgebung zu präsentieren und Programmieraufwand abzunehmen. Das Einfügen/Löschen von Zeilen/Zeichen sollte (wenn möglich) von den neuen Routinen ausgeführt werden. Daraus ergibt sich ein schnellerer Bildaufbau, da die Bytes direkt im IRM verschoben werden und nicht wie sonst üblich der Bildschirmrest komplett neu geschrieben werden muß. In den folgenden beiden Tabellen sind nur die neuen Funktionen aufgelistet, die komplette Liste steht in der Datei ZASINFO.DOK:

Tabelle 1: neue Bildschirmsteuerzeichen

ASCII hex. dez.

Wirkung der Kommandos

^B 02H 2 Cursor einschalten
^C 03H 3 Cursor ausschalten
^D 04H 4 Normaldarstellung (invers aus)
^E 05H 5 Inversdarstellung ein
^I 09H 9 Tabulatorschritt vorwärts
^K 0BH 11 Zeichen löschen, alle rechts vom Cursor befindlichen Zeichen der Zeile rücken um eine Stelle nach links
^N 0EH 14 Zeichensatz 1 (deutsch)
^O 0FH 15 Zeichensatz 2 (amerikanisch)
^R 12H 18 Leerzeichen an der Cursorposition einfügen, alle rechts davon befindlichen Zeichen werden um eine Stelle nach rechts verschoben. Der Cursor befindet sich anschließend auf dem erzeugten Leerzeichen.
^W 17H 23 Alle Zeichen ab der Cursorzeile (diese eingeschlossen) werden um eine Zeile nach unten verschoben. In der Zeile, in der sich der Cursor befindet, wird eine Leerzeile erzeugt. Der Cursor befindet sich anschließend am Anfang dieser Leerzeile.
^Y 19H 25 Löschen der Cursorzeile, alle weiteren Zeilen rücken von unten auf. Der Cursor befindet sich danach am Anfang der gelöschten bzw. der ersten nachgerückten Zeile.
1CH 28 Scroll-Modus einschalten
1DH 29 Page-Modus einschalten


Tabelle 2: neue ESCape-Funktionen

ASCII hex. dez. Bedeutung Name Anz. Parameter
I 49H 73 Tabulator rückwärts BACKTAB 0 -
J 4AH 74 IBM-Zeichensatz ZIBM 0 -
K 4BH 75 ASCII-Zeichensatz ZASCII 0 -
Y 59H 89 256 Byte lesen RD256 2 AA
Z 5AH 90 256 Byte schreiben WR256 2 AA
f 66H 102 Farbmodus ein/aus FARB80 1 S
g 67H 103 Fenster setzen 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

Hinweise zu den ESCape-Funktionen

ESC-J und ESC-K

ESC-J schaltet den IBM-Grafikzeichensatz (8 Bit) ein. Der eingestellte Zeichensatz deutsch/amerikanisch bleibt davon unbeeinflußt. Wenn der IBM-Zeichensatz angewählt wurde, bewirken die Codes 80H die Anzeige des entsprechenden Grafikzeichens des IBM-Zeichensatzes, auch für die Codes 82H bis 85H, die im ASCII-Modus Steuerfunktionen haben! Diese Steuerfunktionen sind im IBM-Modus nur noch über die Codes 02 bis 05 erreichbar.

Wird Kompatibilität bei SCP-Programmen gewünscht, muß im ASCII-Modus gearbeitet werden. Im 40-Zeichenmodus wird der geladene IBM-Zeichensatz ab Adresse 1800H verwendet (bei ZAS43.COM der IBM-Zeichensatz von CAOS4.3 durch Setzen von Bit 5 von STBT). ESC-K schaltet auf ASCII-Zeichensatz (7 Bit) zurück, das entspricht der alten Darstellungsweise. Die Steuercodes 82H bis 85H sind wieder aktiv. Im 40-Zeichenmodus wird der Zeichensatz des CAOS-ROM auf den Adressen EE00H/FE00H verwendet (bei ZAS43.COM durch rücksetzen von Bit 5 von STBT).

ESC-Y und ESC-Z

Diese bisher nicht belegten ESC-Sequenzen wurden mit zwei neuen Funktionen zum schnellen Datenaustausch mit dem Grundgerät belegt. Dem Aufruf müssen 2 Parameter folgen, die der Anfangsadresse des gewünschten Bereiches im Grundgerät entspricht. Der Puffer für beide Routinen liegt im D004 von FD00H bis FDFFH, das hat den Vorteil, daß ein folgender RAM- Floppy-Zugriff den Inhalt des Puffers nicht verändert. ESC-Y liest 256 Bytes vom Grundgerät in den Koppelpuffer und ESC-Z schreibt 256 Bytes vom Koppelpuffer in den RAM des Grundgerätes. Es werden immer alle 256 Bytes übertragen, wobei dies von beiden Routinen nach Beendigung in der Speicherzelle MEMANF in gewohnter Weise quittiert wird.

ESC-f

Diese Funktion schaltet den Farbmodus für die 80-Zeichenroutine ein (S=1) bzw. aus (S=0). Die Rückmeldung erfolgt in Bit 5 von BSSTAT. Bei zugeschaltetem Farbmodus werden die Zeichen entsprechend der eingestellten Textfarbe eingefärbt. Zu beachten ist, daß durch die Zeichenbreite von 4 Bit jeweils 2 benachbarte Zeichen die gleiche Farbe erhalten!

Das gleiche Problem besteht ja auch bei der Erzeugung von Linien oder dem Setzen von Punkten. Die Berücksichtigung des Color-RAM erfolgt außerdem bei den Funktionen CLS, Zeile löschen, Zeile einfügen und beim Scrolling am Bildschirmende, nicht beim Einfügen/Löschen einzelner Zeichen mit ^K bzw. ^R. Im HIRES-Modus sollte der Farbzugriff ausgeschaltet werden, da hier eine andere Belegung der Pixel- und Color-Ebene erforderlich ist. Dies wird von ZAS noch nicht unterstützt.

ESC-g bis ESC-j

Diese Gruppe von Funktionen ist für den Einsatz im 80-Zeichenmodus gedacht. Mit ESC-g kann ein Fenster unter Angabe der Anfangszeile/Anfangsspalte, Breite und Länge definiert werden. Die anderen Funktionen beziehen sich auf dieses definierte Fenster und erzeugen Rahmen, Schatten oder Löschen den Pixelinhalt.

ESC-k

Zeichnet einen ein- oder mehrfachen Rahmen (wie bei ESC-j), die X- und Y-Koordinaten können frei gewählt werden.

Erweiterte Belegung des Koppel-RAM

Der Status, mit dem alle BS-Ausgaben von ZAS ausgeführt werden, ist an der Speicherzelle BSSTAT (0FFB6H) im MicroDOS zu erkennen. Die Aktualisierung von BSSTAT erfolgt von ZAS bei der Ausführung von Steuerzeichen, die die Einstellungen verändern. Beim Testen der Speicherzelle von Programmen aus, muß jedoch beachtet werden, daß zur Ausgabe ein Puffer von 32 Zeichen vorhanden ist und BSSTAT erst dann aktualisiert wird, wenn ZAS das entsprechende Steuerzeichen abgearbeitet hat. Die Zeit hängt also ganz davon ab, welche Ausgaben vorher noch auszuführen sind.

BSSTAT
(Adresse FFB6, Anfangswert=0)

Bit 0 0=80 Zeichen, 1=40 Zeichen
Bit 1 0=amerikanisch, 1=deutsch
Bit 2 0=groß, 1=klein
Bit 3 0=Scroll-Modus, 1=Page-Modus
Bit 4 0=ASCII (7 Bit), 1=IBM (8 Bit)
Bit 5 0=Pixelmodus, 1=Farbmodus

VERSION
(Adresse FFB9)

Beim Starten von ZAS wird hier die ZAS-Versionsnummer eingetragen, der Wert 10H entspricht dabei der Version 1.0. Ältere Versionen nutzen diese Speicherzelle nicht, beim Start von MicroDOS steht auf FFB9H der Wert 0. Zu beachten ist, daß ein Nachladen einer älteren ZAS-Version, die von ZAS V1.0 eingetragene Versionsnummer nicht zurücksetzt. Die Leistungen von ZAS V1.0 stehen dann nicht zur Verfügung, obwohl die Versionsnummer 1.0 noch erkannt wird!

Hinweise bei Problemen

ZAS ist so geschrieben worden, daß alle vorhandenen Funktionen weiterhin verfügbar sind ­ abgesehen von den beseitigten Fehlern! Dennoch ist es nicht auszuschließen, daß einige Programme nicht mehr laufen können. Hier noch ein paar Tips zur Abhilfe:

  1. Programme, die direkt auf den IRM des KC zugreifen und diesen schalten, ohne die CAOS-Arbeitszelle (IX+1) zu aktualisieren, bekommen Probleme mit den Interrupts für den blinkenden Cursor. In solchen Fällen, kann es helfen wenn man sich eine nicht blinkende Cursorform zur Darstellung auswählt.
  2. Programme, die im KC-Grundgerät RAM-Bereiche im Adreßbereich von 400H bis 2000H benutzen, können den Programmcode der neuen Steuerschleife zerstören. Eigene Programme sollten deshalb nur oberhalb 2000H, oder besser noch im RAM4 laufen.
  3. Programme, die die Originalsteuerschleife teilweise durch Überschreiben modifizieren, sind unter ZAS nicht mehr lauffähig.
  4. ZAS nutzt die ESC-Sequenzen des Grundgerätes. Wenn diese erweitert werden, muß sichergestellt sein, daß die Funktionen '0' bis 'A' unverändert weiter verfügbar bleiben.

Programm ZSMENU.COM

ZSMENU ist ein Beispiel für die Anwendung der neuen Möglichkeiten von ZAS. Es wird getestet, ob die Version 1.0 von ZAS geladen wurde (Speicherzelle VERSION). ZSMENU enthält auch eine Kurzform der Dokumentation, die anschaulich unter Verwendung der Fenstertechnik, Farbe, Inversdarstellung und Nutzung der Grafikzeichen und auf dem Bildschirm dargestellt wird. Der Ausdruck der Informationen ist außerdem mit einem EPSON-kompatiblen Drucker möglich. Weitere Menüpunkte in ZSMENU stellen die möglichen Zeichensätze dar und demonstrieren die Möglichkeiten zu Grafik und Tonausgabe.

 

Alle hier beschriebenen Programme sollen den KC85/4 unter MicroDOS, CP/M und NZ-COM aufwerten. Eine kostenlose Weitergabe der Programme unter Wahrung der Urheberschaft ist erwünscht. Zum Programmpaket gehören:

ZAS.COM
die neue Steuerschleife (IBM-Zeichensatz ab 1800H)
ZAS43.COM
ZAS-Version für IBM-Zeichensatz von CAOS4.3
ZSHOW.COM
ein Programm zur Anzeige des Zeichensatzes
ZSMENU.COM
menügeführtes Demoprogramm
ZASINFO.DOK
die Beschreibung
TYPEMOD,COM
Schreibmaschinenmodus der Tastatur ­ ZAS-Version
COMPUMOD.COM
Computermodus der Tastatur ­ ZAS-Version

Ursprünglich wurden diese Dateien in einem selbstentpackenden Archiv zusammengefaßt. In Anlehnung an die anderen Archive auf der Beilagen-Diskette wurden sie jedoch in einem "normalen" PMA-Archiv abgelegt. Die Bezeichnung ZAS4V10.PMA leitet sich von ZAS für KC 85/4 Version 1.0 ab.

Für Hinweise und Vorschläge, die ZAS betreffen, bin ich jederzeit zum Erfahrungsaustausch bereit. Die Tabelle der ESC-Sequenzen läßt sich noch bis ESC-7FH erweitern, auch hierfür nehme ich gern noch Vorschläge entgegen. Viel Spaß und wenige Rechnerabstürze bei der Arbeit mit ZAS wünscht

Mario Leubner