###   Projekte und Informationen rund um den KC85   ### 

HIRES.KCC

von Ralf Kästner

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 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+STOP< und >A< 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" 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 kommen.

Das Ergebnis soll allen 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 jetzt ganz normale Programme im HIRES-Modus schreiben. Das Programm befindet sich einschließlich des Quelltextes (EDAS 164) auch auf der Beilagediskette, 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 finden vielleicht in nachfolgenden CAOS-Versionen ihren Platz.

Zum Glück hat CAOS ein sehr flexibles Ein-/Ausgabekonzept, wodurch die Einbindung recht einfach ist, wenn man weiß, wie. Das wäre auch mal einen Artikel wert, da es dort viele Möglichkeiten gibt, welche allgemein unbekannt sind.

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 während des Laufes von Anwenderprogrammen, sondern auch im ganz normalen Eingabemodus im CAOS-Menü, dies kann man auch sofort testen, indem man >SH+STOP<, >A< 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! Das dürfte erst mal genügen, um sich mit der Arbeitsweise des Programmes vertraut zu machen, in den letzten "News" wurden ja mehr Tips und Tricks gewünscht, deshalb habe ich den Vorspann etwas ausführlicher gestaltet.

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 sinvoll. 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 können, 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.