**********************************
*         MakeDir V1.1           *
*  Written in 1991 by N.Tausch   *
*         Public Domain          *
**********************************

ExecBase:       equ 4
OldOpenLibrary: equ -408
CloseLibrary:   equ -414
Output:         equ -60
Write:          equ -48
CreateDir:      equ -120
UnLock:         equ -90

         movem.l a0/d0,-(sp)      ; Parameter sichern
         move.l ExecBase,a6       ; dos.library öffnen
         lea.l DosName,a1
         jsr OldOpenLibrary(a6)
         tst.l d0                 ; war Operation erfolgreich?
         beq.s LibraryError       ; Nein? Programmende
         move.l d0,DosBase        ; DosBase sichern
         move.l DosBase,a6        ; und gleich nach a6 damit
         jsr Output(a6)           ; Outputhandle holen
         move.l d0,OutputHandle   ; und sichern
         movem.l (sp)+,a0/d0      ; Parameter vom Stack
         subi.b #1,d0
         tst.l d0                 ; und testen ob überhaupt ein Parameter vorhanden ist
         beq.w NoParameter        ; Falls nein, dann Fehlertext schreiben
         addi.b #1,d0
         move.b #' ',-1(a0,d0.l)  ; Parameter auf Behandlung vor-
         lea Parameter,a1         ; bereiten
         jsr Param                ; Und Parameter bearbeiten
         move.l #Parameter,d1     ; Gleich nach d1 damit
         jsr CreateDir(a6)        ; Und neues Verzeichnis erstellen
         tst.l d0                 ; Ist die Operation geglückt?
         beq.s Error              ; Nein? dann verzweige zu Fehler
         move.l d0,d1             ; Lock des Verzeichnisses nach d1
         jsr UnLock(a6)           ; Und Lock wieder freigeben
         move.l OutputHandle,d1   ; Outputhandle nach d1
         move.l #Createtext,d2    ; Text nach d2
         move.l #Endtext-Createtext,d3 ; textlänge nach d3
         jsr Write(a6)            ; und schreiben
         move.l DosBase,a1        ; dos.library wieder schließen
         move.l ExecBase,a6
         jsr CloseLibrary(a6)

LibraryError:
         clr.l d0
         rts                      ; Programm beenden
Error:
         move.l OutputHandle,d1   ; OutputHandle nach d1
         move.l #Endtext,d2       ; Fehlertext nach d2
         move.l #End2text-Endtext,d3 ; Fehlertextlänge nach d3
         jsr Write(a6)            ; Text schreiben
         rts                      ; Programm beenden
NoParameter:
         move.l OutputHandle,d1    ; Outputhandle nach d1
         move.l #Parametertext,d2  ; Text nach d2
         move.l #Createtext-Parametertext,d3 ; Textlänge nach d3
         jsr Write(a6)             ; und Text schreiben
         jmp LibraryError          ; 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
DosBase: dc.l 0
Parameter: ds.b 60
Length: dc.l 0
OutputHandle: dc.l 0
Parametertext:
                dc.b "Benutze folgendes Format: <MakeDir Name>",10
Createtext:
                dc.b "Ich erstelle ein neues Directory",10
Endtext:
                dc.b "Ich kann kein neues Verzeichnis erstellen !",10
End2text:
          end

