****************************************
*              CurrentDir              *
*   Written in 1990 by Norbert Tausch  *
*             Public-Domain            *
****************************************

ExecBase:       equ 4
OldOpenLibrary: equ -408
Write:          equ -48
Output:         equ -60
Lock:           equ -84
CurrentDir:     equ -126
Exit:           equ -144
Modus:          equ -2

        movem.l d0/a0,-(sp)      ; Parameter retten
        move.l ExecBase,a6       ; dos.library öffnen
        lea DosName,a1
        jsr OldOpenLibrary(a6)
        move.l d0,a6
        movem.l (sp)+,d0/a0      ; Parameter nach a0; Länge nach d0
        move.l a0,Parameter      ; und sichern
        subq.l #1,d0             ; letztes Zeichen durch 0-Byte
        clr.b 0(a0,d0)           ; ersetzen
        tst.l d0                 ; Ist ein Parameter vorhanden?
        beq.s ParameterError     ; Nein? Dann Fehlertext schreiben
        move.l Parameter,d1      ; Parameter nach d1
        move.l #Modus,d2         ; Modus - altes File nach d2
        jsr Lock(a6)             ; Und Filelock holen
        move.l d0,Locki          ; und sichern
        tst.l d0                 ; ist Operation überhaupt geglückt?
        beq.s ParameterError     ; Nein? Dann Fehlertext schreiben
        move.l Locki,d1          ; Lock nach d1
        jsr CurrentDir(a6)       ; und aktuelles Verzeichniss setzen
        moveq.l #0,d1            ; Returncode 0 nach d1
        jsr Exit(a6)             ; und Programm beenden
ParameterError:
        jsr Output(a6)           ; Output-handle holen
        move.l d0,d1             ; und nach d1
        move.l #Error,d2         ; Fehlertext nach d2
        move.l #ErrorEnd-Error,d3 ; Fehlertextlänge nach d3
        jsr Write(a6)            ; und schreiben
        clr.l d0
        moveq.l #0,d1            ; returncode = 0 setzen
        jsr Exit(a6)             ; Programm beenden

; ********************** Daten *************************

DosName: dc.b 'dos.library',0
Parameter: dc.l 0
Locki: dc.l 0
Error:          dc.b 10,'  Es ist ein Fehler aufgetreten.'
                dc.b 10,'  Benutze folgendes Format: » CD Directory «',10,10
ErrorEnd:
        end

