Der Blitter-'Emulator'

Mal ehrlich, wer besitzt schon den Blitterchip, den Atari den Käufern der 'kleinen' ST-Modelle schon vor Jahren versprochen hat? Viele haben sich dazu verleiten lassen, den billigeren Atari zu kaufen, weil man doch "irgendwann" den Blitter nachrüsten können sollte.

Doch nichts geschah (bzw. geschieht). Zwar bieten ein paar wenige Händler den Blitterchip als Ersatzteil an, aber im Verhältnis zum Nutzen ist der Preis zu hoch. Nun ist aber in jedem neueren ST (ab TOS1.2) die XBIOS-Routine zur Verwaltung des Blitterchips implementiert; nur ohne Blitter ist sie ziemlich nutzlos.
Daher die berechtigte Frage, ob man den Vektor nicht auch für andere Zwecke (miß-)brauchen kann. Nach einigen Überlegungen kam ich auf eine Idee, wie man den brachliegenden Eintrag im EXTRAS-Menü für eigene Zwecke nutzen könnte.

Dabei achtete ich darauf, nur von Atari dokumentierte Eigenschaften auszunutzen. Daher hat der Eintrag im Menü Extras immer noch den Namen Blitter, obwohl man durch Patchen ab Adresse $cea9 (TOS 1.4) einen neuen Namen eintragen könnte.

Was man wissen sollte...

Beim Atari ST wird ein eingebauter Blitter über die XBIOS-Funktion #64 angesprochen. Man kann den Status abfragen bzw. den Blitter ein- oder ausschalten. Einige (wenige) Programme überprüfen den Blitter-Status, um zeitkritische Programmfunktionen zuzulassen (z. B.: Geminishell); die meisten Programme interessieren sich für den Blitter jedoch überhaupt nicht.

Da war für mich das Verhalten des Desktops doch sehr verwunderlich: Hier wird nicht nur während des Bootvorgangs der Blitterstatus gemäß der Desktop.inf-Datei gesetzt, nein, nach jedem Programm wird der aktuelle Blitter-Status abgefragt bzw. neu gesetzt. Zum Glück ist bis jetzt kein Virusprogrammierer auf die Idee gekommen, dieses Verhalten des Desktops auszunutzen.

Aber man kann das ja nicht nur für schändliche Absichten ausnutzen, sondern einige nützliche Hintergrundprogramme über den Blitter-Aufruf regelmäßig aktivieren (wie wär's mit einem Virencheck?).

Zur Sache...

Mein Programm klinkt sich über den Trap #14-Handler in das System ein. Dabei wird die XBIOS-Funktion Blitmode durch eine eigene ersetzt. Diese macht nun nichts anderes, als dem Betriebssystem (oder wer immer es auch wissen möchte) mitzuteilen, daß der Blitter in diesem Rechner eingebaut ist. Weiterhin wird auch der aktuelle Status geliefert. Wenn nun ein Programm versucht, den Blitter einzuschalten, wird das Unterprogramm Do_it aufgerufen. In meinem Beispielprogramm wird dadurch ein kleiner Bildschirmschoner gestartet, der auf eine Reaktion des Tastaturprozessors (Maus, Tastendruck) wartet, um sich dann wieder zu verabschieden.
Das ist aber nur ein Beispiel, es gibt bestimmt viel sinnvollere Anwendungsgebiete (z. B.: Umschaltung der FloppyLaufwerke zwischen Normal und Hyper-Density; Virencheck).

Aus der obigen Beschreibung ergibt sich auch schnell der Personenkreis, der von diesem Programm ausgeschlossen ist. Die, die einen Blitter eingebaut haben. Jene müssen vor dem Start des Programms den Blitter aktivieren/deaktivieren, da man den Status später nicht mehr ändern kann!
Übrigens...

Wie man unschwer erkennt, ist BLITTER.S in Assembler geschrieben und setzt daher auch einen ebensolchen zur Übersetzung voraus. Da aber keine Spezialitäten eines bestimmten Assemblers benutzt werden, kann man wohl jeden zur Übersetzung heranziehen.
Friedel van Megen


Links

Copyright-Bestimmungen: siehe Über diese Seite
Classic Computer Magazines
[ Join Now | Ring Hub | Random | << Prev | Next >> ]