Patchen des RCS 1.4

Das Resource Construction Set ist eines der meistbenutzten Hilfsmittel bei der Programmerstellung für den ATARI. Mit ihm werden die Menüs, Dialogboxen, Icons usw. für ein Programm bequem erstellt. Die am weitesten verbreitete Version 1.4 (bei der Zeitschrift ST-Computer für 15,- Schutzgebühr zu haben) hat leider einen hässlichen Fehler, der verhindert, dass es in einem Ordner abgelegt werden kann.

Wird das RCS aus einem Ordner heraus gestartet, wird beim Zugriff auf die Diskette ein ungültiger Pfadname in der Fileselektorbox verwendet. Der Pfadname enthält einen überzähligen Backslash: z.B. A:\RCS*.RSC. Als Folge werden keine Dateien angezeigt.

Um diesen Fehler zu beheben, habe ich das RCS disassembliert und die fehlerhafte Stelle gesucht (kein allzu großes Vergnügen bei fast 500 kB Disassembler-Listing). Als Ergebnis kam heraus, daß sich anscheinend die Funktion Dgetpath (Gemdos $47) in den ausgelieferten TOS-Versionen leicht von den Beta-Testversionen unterscheidet, mit der das RCS entwickelt wurde. Dieses “Uralt”-TOS lieferte bei der Abfrage des aktuellen Pfadnamen keinen Backslash am Anfang. Die “sauberer’ programmierten Programme fragen ab, ob er dort vorhanden ist oder nicht; nicht so das RCS. Es setzt grundsätzlich einen Backslash ein. Die Programme Doodle von Digital Research und MichMon von Michtron stammen aus etwa der gleichen Zeit und enthalten ebenfalls diesen Fehler.

Sobald man die Stelle gefunden hat, ist der Patch relativ einfach: Der Backslash wird durch den ASCII-Code 0 (Zeichen für Stringende in C) ersetzt. Zusätzlich muß noch die Länge des Strings mit der Laufwerksbezeichnung von 3 aut 2 heruntergesetzt werden.

Das Programm in GFA-BASIC führt die notwendigen Änderungen am RCS durch, nachdem es geprüft hat, ob es sich tatsächlich um die richtige Version des RCS handelt.

Für den Patch spielt es übrigens keine Rolle, ob Sie Version 1.4 des RCS benutzen, oder ob Sie die von J. U. Bags (ATARI) gepatchte Version 1.4 verwenden. Dieser Patch ist genau wie meiner direkt am Objektcode durchgeführt worden und ändert deshalb die Lage der zu ändernden Stelle nicht. Warum der Quellcode zu diesem Programm anscheinend nicht von Digital Research an ATARI mitgeliefert worden ist, ist mir schleierhaft.

' Patch für RCS 1.4
' (c) Jan Willamowius, 1989
' Der "Ordner-Fehler" wird beseitigt
'
OPEN "U",#1,"RCS.PRG"
SEEK #1,&H2C03
IF INP(#1)=&H5C THEN    ! &H5C = "\"
    OUT #1,&H0          ! durch Null ersetzen
ENDIF 
SEEK #1,&H2C0A
IF INP(#1)=&H56 THEN    ! &H56 = addq.l #3,(a7)
    OUT #1,&H54	        ! durch addq.l #2,(a7) ersetzen
ENDIF 
CLOSE #1

Der RSC-Patch in GFA-BASIC


Jan Willamowius
Aus: ST-Computer 06 / 1989, Seite 84

Links

Copyright-Bestimmungen: siehe Über diese Seite