April 1993 |
||||
Meinungen, Programme und Hardware ProgrammprojekteAutor: Sven Friedrichs |
||||
Giga-Print V2.0 (Fehlerbeschreibung)"Giga-Print V2.0" ist zur Zeit das Druckprogramm für den C64 schlechthin, denn bis jetzt kann wahrlich kein anderes Programm an dessen Leistung heranreichen. Leider ist den Programmierern ein kleiner Fehler unterlaufen, der sich auf der 1541/71 netterweise nicht bemerkbar macht. Es geht hierbei um die Option "XY-Files", die das gesamte Directory unabhängig vom jeweiligen Suffix (f'; g'; c'; d') zur Auswahl stellen soll. Während eine 1541 diese Aufgabe anstandslos erledigen würde, meldet die 1581 unbeeinflußt von der tatsächlichen Anzahl der Programme auf Diskette: "Keine Files vorhanden". Die Ursache hierfür liegt in einer abgeänderten Abkürzroutine (auch Wildcard-Routine genannt) des 1581-Kernals. Zur Veranschaulichung sind hier einige Beispiele zum Gebrauch der alten 1541/71 Abkürzroutine:
a) load'*',8 Auf der 1581 führen nur noch die Programmaufrufe a) und b) zum Erfolg, da dieses Laufwerk alle Zeichen bis zum zweiten Anführungszeichen mit berücksichtigt. Das Sternchen verliert auf der 1581 somit seine eigentliche Funktion und ein 'file not found error' wird ausgegeben. Bei Giga-Print verhält es sich ähnlich, nur daß hier der Directoryaufruf eine besondere Rolle spielt. Giga-Print V2.0 (Intern) Um das Directory von Giga-Paint-Grafiken zu laden, benutzt Giga-Print an der Adresse $656a den Filenamen: S-1$:G'*S-0. Sollen jedoch alle Files gelistet werden, so wird der Filename in: S-1$:*'*S-0 umgeändert. Nach dem ersten Sternchen folgt also noch ein zweites Zeichen, welches für ein Nichtauffinden des Directorys verantwortlich ist. Nachdem der Fehler lokalisiert worden war, wurde im freien Speicher ab $6659 eine kleine Routine eingefügt, die zunächst abfragt, ob an der dritten Stelle des Directoryfilenamens ein Sternchen auftritt. Ist dies der Fall, so wird die Länge des Filenamens von fünf ($:*'*) auf drei reduziert ($:*) und die 1581 zeigt nun auch das gesamte Directory an. Giga-Print V2.0 (Lösung) Um diesen Fehler zu beseitigen, laden Sie nun einen Maschinensprachemonitor, wie z.B. 'Final Mon V3.2' aus 64'er 11/92, oder benutzen Sie den im Action Replay bereits eingebauten Ms-Monitor. Nun müssen folgende Arbeitsschritte durchgeführt werden: l"pr1",08 Hauptprogramm von $0810 bis $47d8
a 4470 20 59 66 jsr $6659 Spring neue Routine an Wird keine neue Diskette zum Speichern von "pr1" verwendet, so muß es vorher gelöscht werden. Um Mißverständnissen vorzubeugen, sollte ich vielleicht noch erwähnen, daß 'pr1' beim Laden von Giga-Print im Speicher zumindest teilweise verschoben wird. Die Adresse $4710 entspricht danach auch wirklich $6659. |
||||
|