Warum sieht man nach ESC "A" bis CAOS 4.2 nur Müll auf dem KC-Bildschirm?

Die Antwort steht in folgendem Artikel, welcher in den KC-News 01/95 veröffentlicht wurde und hier etwas aktualisiert die Betriebssystemerweiterung HIRES.KCC beschreibt. Das Programm und die EDAS-Quelle sind auch im Downloadbereich zu finden.

Allgemeines

Der KC 85/4 bietet neben der normalen Farbauflösung von 1*8 Bildpunkten in 16 Vorder- und 8 Hintergrundfarben eine zweite hohe Farbauflösung, wo man jeden Bildpunkt in einer aus vier Farben darstellen kann. Bis auf das lapidare Linienprogramm im Systemhandbuch und die kurzen Erläuterungen auf S. 103 ff. schweigt sich die gesamte Dokumentation dazu aus, selbst das BASIC-Handbuch enthält keine Hinweise, nur in den BASIC-Übersichten auf S. 7 findet man den Hinweis, daß PSET, LINE und CIRCLE auch in der hochauflösenden Grafik verwendet werden können.

Unverständlicherweise unterstützt das CAOS bis Version 4.2 aber auch nur diese Befehle in Form der Unterprogramme 30H, 3EH und 3FH. Will man im HIRES-Modus arbeiten, schaltet man im CAOS mit >SH+STOPA< bzw. im Programm durch Ausgabe von 1BH und 41H an den eingestellten Ausgabekanal um. Dann verwandelt sich der Bildschirm in einen "Streifenmonitor" und alle eingetippten Zeichen haben auch dieses nette blinkende Zebramuster, nur schnell wieder zurück, habe ich beim ersten Mal gedacht.

Wer sich mal mit dem Quelltext des CAOS etwas auseinandergesetzt hat, stellt fest, daß der HIRES-Modus bei der Zeichenausgabe von den Programmentwicklern vollkommen "vergessen" wurde, nur durch geschickte Wahl der eingestellten Farben bringt man CAOS dazu auch im HIRES-Modus die Zeichen richtig auf den Bildschirm zu schreiben, so ergibt z.B. %COLOR 0 0 - rot auf schwarz und %COLOR 1F 7 - weiß auf türkis, mehr ist nicht machbar. Im Zuge der Weiterentwicklung von UNIPIC 1.0 mußte ich mich zwangsläufig mit diesem Sachverhalt beschäftigen, da ein Programm nun mal nicht ohne Textanzeigen auskommt und die beiden o.g. Farbkombinationen im Interesse eines einheitlichen Aussehens ohnehin nicht in Betracht gekommen wären.

Das Ergebnis soll in Form des kleinen Programmes HIRES.KCC zugänglich gemacht werden, wer sich mit dem HIRES-Modus näher befassen möchte, kann es sofort nutzen, selbst in BASIC kann man über den PRINT-Befehl ganz normale Programme im HIRES-Modus schreiben.

CAOS-Einbindung

Das Programm befindet sich einschließlich des Quelltextes (EDAS 164) auch im Downloadbereich, wodurch es auf beliebigen Adressen lauffähig gemacht oder in eigene Programme integriert werden kann. Im Prinzip stellt es eine CAOS-Erweiterung für die Zeichenausgabe dar und wurde auch ähnlich dem Original-CAOS programmiert, wodurch es etwas länger ist, als eigentlich notwendig. Die unbedingt notwendigen Routinen für die HIRES-Textausgabe sind wesentlich kürzer und fanden teilweise im nachfolgenden CAOS 4.3 ihren Platz, wobei Mario Leubner aus Geschwindigkeitsgründen Änderungen vornahm.

Zum Glück hat CAOS ein sehr flexibles Ein-/Ausgabekonzept, wodurch die Einbindung recht einfach ist, wenn man weis, wie. Auf Adresse 0B7B9H befindet sich OUTAB, darin steht eine Speicheradresse (Zeiger), welche die Nummer für den aktuellen Ausgabekanal enthält (sinvoll 00H, 38H, 02H, 03H, entsprechend der vorhandenen CAOS-UP's). Gibt man jetzt CAOS den Befehl über das Programm OCHR (Nr. 24H) ein Zeichen auszugeben, holt es sich über OUTAB die Nummer und berechnet mittels SUTAB (0B7B0H) die entsprechende Unterprogrammadresse und gibt das auszugebende Zeichen dorthin aus. OCHR muß daher immer für die Zeichenausgaben genutzt werden und nicht!!! das UP 00H - CRT.

Das gesamte CAOS gibt so die Bildschirmmeldungen aus, Ausnahmen bestätigen die Regel, z.B. Blocknummern bei Kassettenausgabe und Nummern im SYSTEM-Kommando, dort versagt die hier verwendete Einbindung, da CAOS direkt sein CRT-Programm aufruft und sich damit selbst ein Bein stellt.

HIRES.KCC startet nach dem Einladen selbst, trägt in OUTAB eine Adresse ein, wo die 03H steht und in 0B7C4H (User-Ausgabekanal 3) die eigene Testroutine für die Zeichenbehandlung. Damit ist es aktiviert und nimmt seine Arbeit auf.

Jedesmal, wenn ein Zeichen oder Steuercode (0...1FH ASCII) ausgegeben werden soll, prüft die Testroutine anhand Bit 3,(IX+1), ob mittlerweile in den HIRES-Modus umgeschalten wurde, wenn nein, wird es über die normale CRT-Routine geschickt, wenn ja, werden die nun HIRES-tauglichen Funktionen des Programmes benutzt.

Das funktioniert nicht nur mit Anwenderprogrammen, sondern auch im ganz normalen Eingabemodus im CAOS-Menü, dies kann man sofort testen, indem man >SH+STOPA< ausführt und mittels %MENU das CAOS-Menü ausgibt - kein unmotiviertes Blinken mehr auf dem Bildschirm. Im CAOS-Menü steht als zusätzliches Menüwort %HIRES, womit man das Programm jederzeit neu initialisieren kann.

Probleme gibt es nur bei Programmen, welche OUTAB oder UOUT2 verändern, wie z.B. bei allen Druckertreibern, wenn der Protokollbetrieb über >SH+CLR< ein- bzw. ausgeschaltet wird oder im Programm GRZEI. Nochmals zur Wiederholung, in Maschinenprogrammen dürfen die Bildschirmausgaben nicht mehr über UP Nr.00H, sondern nur noch über UP Nr.24H vorgenommen werden, das ist unproblematisch und sollte ohnehin immer so gemacht werden!

Funktionen

Die eigentlichen Leistungen des Programmes sollen nun folgen, ich habe es so programmiert, daß alle Systemzellen genau wie in der normalen Farbauflösung genutzt werden. Es sind natürlich nur noch vier Farben verwendbar, welche sowohl als Vorder- als auch als Hintergrundfarbe genutzt werden können. Es gelten die folgenden Farbcodes:

0 - schwarz
1 - rot
2 - türkis
3 - weiß


Der Farbcode für INK steht in Bit 3 und 4, für PAPER in Bit 0 und 1 der COLOR-Zelle 0B7A3H für die Zeichenausgabe. Um die Farben einzustellen, nutzt man die COLOR-Anweisungen im CAOS oder BASIC genau wie vorher, wobei eben nur Werte von 0...3 sinnvoll sind, das trifft genauso auf das CAOS-UP Nr.0FH zu. Die Bedeutung von Bit 0 bzw. 1 des STBT in 0B7A2H sind im HIRES-Modus nicht mehr realisierbar, da jeder Bildpunkt immer in der entsprechenden Farbe von VIDEO-Interface dargestellt wird, es gibt also keine Trennung mehr in Bildpunkt und zugehörige Farbe! Damit sie aber nicht nutzlos dahinvegetieren, wurden die folgenden Optionen realisiert:

Bit 0
= 0 - Schreiben INK ein
= 1 - Schreiben INK aus
Bit 1
= 0 - Schreiben PAPER ein
= 1 - Schreiben PAPER aus


Die Funktionen für ESC 7 (inverses Schreiben) und ESC 8 (Vertauschen von INK und PAPER) werden ebenfalls unterstützt und bei der Ausgabe von Zeichen realisiert. Mehr ist dazu gar nicht zu sagen, einfach laden und ausprobieren.

Die beschriebenen Erweiterungen beziehen sich nur auf den Textmode, wer die Vollgrafik benutzt (UP's 30H, 3EH, 3FH) muß den o.g. gewünschten Farbcode in Bit 3 und 4 der Zelle 0B7D6H eintragen, da dort nicht auf 0B7A3H zurückgegriffen wird. Im BASIC sind dann bei diesen Anweisungen für COLOR natürlich auch nur Werte von 0...3 sinnvoll.

Das CAOS-UP Nr. 2FH, PUDE, kann im HIRES-Modus nicht verwendet werden, wie oben bereits gesagt, kann man in HIRES keinen Punkt wirklich löschen, dieses Programm erzeugt im ungünstigen Fall lediglich Farbverfälschungen.

Man kann aber im HIRES-Modus natürlich auch Punkte "löschen", dazu ist der Punkt, die Linie oder der Kreis mit der gewählten Hintergrundfarbe zu "zeichnen", er nimmt dadurch PAPER an und "erscheint gelöscht". Dieses Beispiel sollte man gedanklich einmal durchspielen, es ist nämlich etwas ungewohnt HIRES-Grafiken zu planen, da man sich total umstellen muß.

Alle, die das schon kennen, mögen mir verzeihen, wenn ich sie langweile, der HIRES-Modus bietet aber doch eine ganze Reihe interessanter Möglichkeiten, wenn man sich damit beschäftigt und die andere Darstellungsweise verstanden hat, dazu soll dieses Programm auch etwas beitragen.

 

CAOS ab Version 4.3

Wie bereits geschrieben, ist CAOS ab Version 4.3 auch bei der Zeichenausgabe HIRES-fähig. Es gibt neben der alten Funktion, welche unverändert vorhanden ist, um kompatibel mit den alten CAOS-Versionen zu bleiben:

>SH+STOPA< bzw. durch die Ausgabe von 1BH + 41H per Programm

eine neue Funktion

>SH+STOPB< bzw. im Programm durch Ausgabe von 1BH + 42H
den sogenannten HRG-Modus (High-Resolution-Grafik).

Dort kann man dann die eben beschriebenen Erweiterungen der Textausgabe im HIRES-Mode nutzen, wobei alles identisch zu HIRES.KCC zu handhaben ist, AUSSER die Bedeutung der Bits 0 bzw. 1 des Bildschirmsteuerbytes auf 0B7A2H, sie können nur verwendet werden, um den Zugriff auf den Pixel- bzw. Color-RAM zu unterbinden:
Bit 0
= 0 - Schreiben Pixel-IRM erlaubt
= 1 - Schreiben Pixel-IRM gesperrt
Bit 1
= 0 - Schreiben Color-IRM erlaubt
= 1 - Schreiben Color-IRM gesperrt