Kaum hat man sich an die terroristischen Aktivitäten der alten ROMs (Bombenanschläge etc.) gewöhnt, taucht schon eine neue Version des TOS auf. Es wird vor allem in den MegaSTs gebraucht, die damit den Blitter ansteuern (wann endlich gibt es den Blitter für die alten STs??? Seufz...). Aber wir haben Glück: Wir müssen uns nicht an ein langweiliges, fehlerloses neues TOS gewöhnen; vielmehr gewinnt auch diese Version einen ganz typischen Charakter durch ihre erfrischenden Eigenwilligkeiten. Dazu kommt, daß viele Progamme nicht mehr laufen oder zumindest nicht so wie gewohnt. Unter diesen auch GfABASIC...
GfABASIC und das Blitter-TOS leben zwar recht friedlich nebeneinander her, doch wenn man versucht, ein GfABASIC-Programm - wie man es gewohnt ist - mit der Tastenkombination ALTERNATE-CONTROL-SHIFT zu stoppen, zeitigt das ganz unerhörte Wirkung, nämlich gar keine. Systemabsturz? Kaputte Tastatur? Mitnichten. GfA-Programmierer Ostrowski hat nur etwas unsauber auf undokumentierte Systemvariablen zugegriffen, deren Lage sich im neuen TOS verschoben hat.
Im „alten“ ROM-TOS vom 6.2.86 merkte sich die Tastaturroutine den Zustand der Sondertasten (wozu auch ALTERNATE, CONTROL und SEIIFT gehören) in der Speicherstelle $E1B. Das nutzte das GfABASIC weidlich aus, anstatt sich an die vorgeschriebenen Wege über die KBSHIFT-Funk-tion des BIOS zu halten. Im neuen TOS vom 22.4.87 steht diese Variable aber bei $E61 - und schon läuft die Stopabfrage nicht mehr.
Nach einer intensiven Suchaktion habe ich die Stelle gefunden, die im GfABASIC abzuändern ist. Das Programm BLTPATCH.BAS (Listing 1) erledigt die Modifikation automatisch. Die gepatchte Version ist allerdings auch nur auf dem Blitter-TOS (neue Version) voll lauffähig - auf der alten ROM-Version funktioniert die Stopabfrage nicht mehr. Deswegen sollten Sie sich eine Kopie des Originals aufheben und die gepatchte Version umbenennen. Übrigens funktioniert der Patch nur bei der Version 2.0 von GfABASIC.
Damit ist es aber noch nicht getan. GfABASIC hat die hilfreiche Angewohnheit, beim Speichern von MER-GE-Files (Extension .LST) und Programmdateien (Extension .BAS) die Extension selbständig anzufügen, wenn man sie nicht eintippt. Beim Experimentieren unter Blitter-TOS fiel auf, daß das nicht mehr funktioniert, wenn der Dateiname genau 8 Zeichen lang ist. Zuerst vermutete ich einen Fehler im GfABASIC, doch wie sich herausstellte, ist Ostrowski unschuldig und braucht dieserhalb und desterwegen nicht gelyncht zu werden.: Im neuen ROM ist (mindestens) ein Fehler!
Die Fileselect-Box (das ist der im GEM vordefinierte Dialog zum Bestimmen des Dateinamens beim Einladen und Abspeichern) hat bei den Aufräumungsarbeiten eine Macke abbekommen: Tippt man weniger als acht Zeichen ein, ist alles in Ordnung (Beispiel: Man gibt ’TESTDAT’ ein, und die Fileselect-Funktion liefert dann auch den String ’TESTDAT’). Ist der eingegebene Dateiname aber gerade acht Zeichen lang, zum Beispiel ’TESTFILE’, bekommt man ’TESTFILE.’ von der Fileselect-Routine zurück (man beachte den Punkt nach dem Dateinamen)! Das ist nun aber so falsch, wie es nur sein kann. Im GfABASIC steht nun offensichtlich eine Abfrage auf die Länge des Rückgabestrings der Fileselect-Box. Ist dieser String weniger als neun Zeichen (also höchstens acht Zeichen) lang, ergänzt das Programm die Extension (.LST oder .BAS je nach An des Abspeicherns); ist der String länger, nimmt GfABASIC an, daß der Anwender selbst eine Extension eingetippt hat und beläßt es dabei. Durch den fehlerhaft zurückgelieferten Punkt im neuen ROM greift diese Abfrage schon, wenn man nur acht Zeichen eingegeben hat - weil der Punkt zusätzlich mitgeliefern wird.
Abhilfe: Extension mit eintippen. Oder darauf warten, bis entweder Ostrowski seinem BASIC eine Krücke baut (was nicht viel helfen würde, denn vom ROM-Fehler sind ja auch andere Programme betroffen), oder bis ich mich im ROM-Code zur fehlerhaften Stelle durchgewühlt habe.
Wenn Sie selbst Fehler im neuen TOS gefunden oder gar schon gepatcht haben, schreiben Sie doch mal der ST-Computer.
Patch für GfABASIC Seite 1 (C) 1987 Claus Brod
' Patch für GfABASIC 2.0
' für Blitter—TOS
' Beseitigt Fehler bei ALT—CTRL—SHIFT—Abfrage
' Found and written 9.8.1987 by
' Claus Brod
Alert 1,"Patch für GfABASIC I auf Blitter-TOS".1,"OK I Raus!",A
If A=1
Open "U".#1,"\gfabasic.prg"
Seek #1.&H63AD
Out #1.&H61
Close #1
Print "Fertig - GfABASIC für Blitter-TOS gepatcht"
Endif