★ APPLICATIONS ★ DIVERS ★ RSX 640X400 ★ |
RSX 640x400 | Applications Divers |
Grafik-Gigant inkognito Auch aus dem Schneider CPC 464 läßt sich eine monochrome Bildschirmauflösung von 640 mal 400 Punkten »herauskitzeln«. Der Schneider CPC 464 reiht sich mit seiner Grafikauflösung von 640 mal 200 Punkten zwar schon in die Spitzenklasse der Heimcomputer ein, aber bei manchen Grafikanwendungen wünscht man sich doch eine noch höhere Zeilendichte. Allein mit Software — so vermutet man zunächst— läßt sich keine Abhilfe schaffen. Und doch: es geht! Um das Verfahren zu verstehen, mit dem die 400 Zeilen auf den Bildschirm gebracht werden, muß man sich zunächst mit der Hardware auseinandersetzen. Im CPC sorgt ein CRTC 6845 für den Bildaufbau. Er verfügt über eine Reihe von Registern, die beispielsweise die Anzahl der dargestellten Zeilen und Zeichen pro Zeile, die Größe der Zeichenmatrix und Lage der Fenster auf dem Bildschirm bestimmen. Die Information, ob ein Bildpunkt gesetzt wird, entnimmt der Video-Controller normalerweise dem RAM-Bereich zwischen den Adressen C000 hex und FFFF hex (entspricht 16 KByte). Dieser Speicherbereich wird jede fünfzigste! Sekunde gelesen und ausgewertet. 2 x 200 = 400 Die doppelte Auflösung läßt sich realisieren, indem zwei voneinander unabhängige Bildschirmspeicher abwechselnd um eine halbe Zeile versetzt auf den Monitor gebracht werden. Leider ist diese Umsetzung auf dem CPC nicht ganz ideal, da der Feinabgleich des 6845 (in Register 5) nur mit je 1,5 Zeilen arbeitet. Beim Wechsel des Speicherbereichs hilft die Betriebssystem-Routine SCR-SET-BASE (Vektor BC08 hex). Für den zweiten Bildspeicher kommt nur der Bereich von 4000 hex bis 7FFF hex in Frage, da 0 bis 3FFF hex und 8000 hex bis BFFF hex vom Basic beziehungsweise Betriebssystem belegt sind und somit keinesfalls mit Bildschirmdaten überschrieben werden dürfen. Das Programm aus Listing 1 wechselt nun alle 1/25 Sekunden synchron zum Bildrücklauf den Bildschirmspeicher, verschiebt den vertikalen Bildschirmanfang um 1,5 Zeilen und baut dann das Bild auf. Daraus folgt, daß zum Beispiel bei einer senkrechten Linie jeder nachfolgende Bildpunkt in den jeweils anderen Speicherbereich muß Also arbeiten sämtliche normalen Grafik-und Textbefehle in diesem neuen Modus nicht mehr richtig. Aber das Programm sorgt auch hier für entsprechende Änderungen. Zunächst geben Sie das Listing wie gewohnt ein. Vor dem ersten Lauf speichern Sie es sicherheitshalber. Geben Sie dann »RUN« ein und nach einiger Zeit speichert der Basic-Lader das erzeugte Maschinencode-Programm selbsttätig unter dem Namen »640X400.BIN«. Wollen Sie in Zukunft mit der erhöhten Auflösung arbeiten, so benötigen Sie den Basic-Lader nicht mehr. Sie aktivieren dann die RSX-Befehls-Erweiterung mit der Befehlsfolge: »MEMORY &3FFF:LOAD "640X400.BIN" :CALL &81C0«. Der Befehl »|G400« schaltet in den neuen 400-Zeilen-Modus und löscht den Inhalt der beiden Teil-Bildschirme »|G200« bringt Sie wieder in die normale Auflösung zurück. »|PLOT,x,y« dient der Grafikerzeugung. Beispiele für den Einsatz dieser Befehle entnehmen Sie bitte Listing 2. Wenn Sie dieses Demo-Programm starten, fällt Ihnen sicher das etwas unruhige Bild des Monitors auf. Der Grund dafür ist in der verminderten Bild-Wiederholfrequenz von 25 Hertz zu finden (siehe oben). Dieser Effekt läßt sich mildem, indem Sie Kontrast und Helligkeit (beim Farbmonitor nur Helligkeit) reduzieren. Aufgrund unterschiedlicher Einsprung-Adressen läuft der Maschinencode aus Listing 1 nur auf dem CPC 464. Eine Anpassung an die beiden anderen CPC-Modelle ist durch entsprechende Änderungen aber durchaus möglich. Besitzer eines CPC 664 oder 6128 informieren sich am besten über das Prinzip mit Hilfe des Programms aus Listing 3 (es läuft auf allen CPCs).
|