****************************************
*            CurrentDir V1.1           *
*   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
        subi.b #1,d0
        tst.l d0                 ; Teste ob Parameter vorhanden
        beq.s ParameterError     ; Nein? Dann Fehlertext schreiben
        addi.b #1,d0
        move.b #' ',-1(a0,d0.l)  ; Ersetze letztes Zeichen durch Leerzeichen
        lea Parameter,a1
        jsr Param                ; Parameter behandeln
        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,FileLock       ; und sichern
        tst.l d0                 ; ist Operation überhaupt geglückt?
        beq.s ParameterError     ; Nein? Dann Fehlertext schreiben
        move.l FileLock,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

Param   cmp.b #' ',(a0)+         ; Ignoriere alle Leerzeichen
        beq.s Param              ; vor Begin des Parameters
        subq.l #1,a0             ; Wieder eins von a0 abziehen
PWait   move.b (a0)+,(a1)+       ; Parameter übertragen
        cmp.b #' ',(a0)          ; bis ein Leerezeichen kommt
        bne.s PWait
        clr.b (a1)               ; Terminiere Parameter mit 0-Byte
        rts                      ; Zurück


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

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


