>>>>>>>    Eine kurze Anleitung zum Patchprogramm "MODPATCH.PRG"    <<<<<<<

Generelles: "MODPATCH.PRG" ist samt Quellcode 'public domain'. Viel tut
            das Programm ohnehin nicht (s.u.).
            WICHTIG: Ich bernehme keine Haftung fr irgendwelche Schden
            die sich aus der Benutzung des Programms oder des Quellcodes
            ergeben. Die Benutzung geschieht auf eigene Gefahr.

Zweck:      Die Module fr Fast-Fourier-Transformationen die "Photolab"
            beiliegen und die fr den Atari TT gedacht sind sollten
            prinzipiell auch auf anderer Atari(-kompatibler) Hardware
            laufen, sofern diese mit einer entsprechenden CPU/FPU
            Kombination ausgestattet ist. Jedoch bekommt der Anwender bei
            Benutzung dieser Module leider nur eine Meldung
            
            "This program will only run on an Atari TT."
            
            zu sehen, wenn er statt des TT zum Beispiel Beschleunigerkarten
            mit 680x0 (x>=2) & 68881/2 Gespann benutzt.
            
            Wie Peter mir mitgeteilt hat, ist dieses Verhalten nicht "ein-
            programmiert" sondern ein 'feature' des verwendeten Compilers
            (oder besser dessen Bibliotheken) und kann deshalb nicht allzu
            leicht abgendert werden.
            
            "MODPATCH" versucht deshalb die Module in geeigneter Weise zu
            patchen. Bei mir klappt das fr einen Atari 1040STF mit PAK2 
            und TOS 2.06 hervorragend. Bei anderen Rechner sollte es
            eigentlich auch keine greren Probleme geben. In jedem Fall
            mu jedoch ein Cookie-Jar installiert und der "_FPU" cookie
            gesetzt sein. Bei den neueren TOS-Varianten (ab Version 1.6
            soweit ich wei) ist dies der Fall.
            
Benutzung:  "MODPATCH" sollte so gestartet werden, da das "Module"
            Verzeichnis das aktuelle Verzeichnis ist und die (ungepatchten)
            Module mssen sich in einem Unterverzeichnis "TT.FPU" befinden.
            Dies entspricht der Verzeichnisstruktur, wie sie sich nach dem
            Auspacken des "Photolab" Archivs (Version 1.7) ergibt. Die
            gepatchen Varianten werden dann in "Module" abgelegt (wo sie
            schlielich fr den Einsatz mit Photolab auch stehen mssen).  
            WARNUNG: Irgendwelche dort (in "Module") befindlichen Programme
            gleichen Namens werden ohne Rckfrage berschrieben!!!
            ACHTUNG: Das Programm pat die Module einfach auf die
            vorhandene Hardware an ohne zu berprfen ob dies sinnvoll ist.
            Insbesondere lassen sich Versionen erzeugen, die zwar ohne die
            oben erwhnte Meldung starten, aber bei ungeigneter Hardware
            dann Bomben werfen. Es bleibt der Anwenderin berlassen
            festzustellen, ob ihr Rechner eine 68881/2 FPU und eine
            68020, 68030 CPU hat!

            Sptestens wenn irgendwas nicht klappt, sollte man auch den
            Rest dieser Anleitung lesen.
            
Patch:      Die originalen Module testen die Hardware (u.a.(?)) durch
            Abfrage des "_MCH" cookies. Wenn dieser ungleich $0002000 sein
            (d.h. kein Atari TT benutzt wird) sollte wird das Programm
            abgebrochen. Wesentlich sinnvoller erscheint es mir hier den
            "_FPU" cookie zu Rate zu ziehen, denn dann sollten die
            "TT-Module" auch auf anderer geeigneter Hardware betrieben
            werden knnen.
            Im Prinzip mten die Bits 1+2 dieses cookies berprft werden.
            Die Originalmodule hingegen berprfen den Wert eines cookie
            Eintrages. Um den Patch einfach zu halten, wird daher wie folgt
            gepatcht:
            a) Statt nach "_MPU" im cookie-jar zu suchen wird in der
            gepatchen Variante "_FPU" aufgesucht.
            b) Dann wird das Modul so abgendert, da der "_FPU" cookie mit
            dem Wert verglichen wird, der zur Zeit des "patchens" gesetzt
            war. Alternativ kann das obere Wort des "_FPU" cookies als
            Kommandozeilenparameter bergeben werden. Zum Beispiel wenn auf
            _FPU = $00020000 getestet werden soll, dann bergibt man "2".
			Dies sollte hinreichend sein, um die Module auf dem eigenen
			Rechner lauffhig zu bekommen. Allerdings sind verschiedene
			cookie-Werte denkbar, die eine geeignete Hardware
			widerspiegeln. Daher kann es sein, da die gepatchen Module, auf
			anderen Rechnern oder Rechnerkonfigurationen nicht ohne
			erneutes patchen (der Originalmodule!) laufen.
			
			Wie wird nun gepatched? Der originale Code sieht wie folgt aus:
                    ...
                    beq.b    l1db4
            l1d6a:  cmpi.b   #$5f,(a0)          ; = '_' ?
                    bne.b    l1d9a
                    cmpi.b   #$4d,($0001,a0)    ; = 'M' ?
                    bne.b    l1d9a
                    cmpi.b   #$43,($0002,a0)    ; = 'C' ?
                    bne.b    l1d9a
                    cmpi.b   #$48,($0003,a0)    ; = 'H' ?
                    bne.b    l1d9a
                    cmpi.b   #$00,($0004,a0)    ; = $00 ?
                    bne.b    l1db4
                    cmpi.b   #$02,($0005,a0)    ; = $02 ?
                    bne.b    l1db4
                    bra.b    l1df6
                    ...
    		'M', 'C' und 'H` werden durch 'F', 'P', 'U' ersetzt. Die Werte
    		'$00' und '$02' werden auf das obere Wort des akutellen "_FPU"
    		cookies, bzw. des in der Kommandozeile bergebenen Wertes
    		gesetzt.
    		
Quellcode:  Ich habe das Programm mit Turbo C geschrieben. Es sollte daher
            nach Abndern der Projekt-Datei ohne weiteres mit Pure C zu
            bersetzen sein. Will man GNU-C benutzen so mu darauf geachtet
            werden mit 16Bit Integern zu bersetzen.
            
Kommentare: Fr eventuelle Kommentare usw. bin ich zu erreichen unter

            Dietmar Herrendrfer
            Dept. of Physics
            Trinity College
            Dublin 2, Ireland
            email: dhrrndrf@alice.phy.tcd.ie
