; *******************************
; *           Rename            *
; * Written in 1991 by N.Tausch *
; *        Public Domain        *
; *******************************

ExecBase:       equ 4
OpenLibrary:    equ -408
CloseLibrary:   equ -414
Output:                         equ -60
Write:                          equ -48
Rename:                         equ -78

                movem.l a0/d0,-(sp)   ; Parameter retten
                move.l ExecBase,a6    ; dos.library öffen
                lea DosName,a1
                jsr OpenLibrary(a6)
                move.l d0,DosBase     ; DosBase sichern
                tst.l d0              ; Ist ein Fehler beim Öffnen aufgetreten?
                beq.s LibraryError    ; Ja dann schreibe Fehlertext
                move.l DosBase,a6
                movem.l (sp)+,a0/d0   ; Parameter vom Stack holen
                subi.b #1,d0          ; Testen ob Parameter
                tst.l d0              ; überhaupt vorhanden
                beq.s ParameterError  ; Nein? Dann Fehlertext schreiben
                addi.b #1,d0
                move.b #' ',-1(a0,d0.l) ; Terminiere Parameter mit Leerzeichen
                lea FileName1,a1      ; FileName1 nach a1
                jsr Parameterholen    ; Und Namen aus Parameter holen
                lea FileName2,a1      ; FileName2 nach a1
                jsr Parameterholen    ; Und Namen aus Parameter holen

                move.l #FileName1,d1  ; FileName1 nach d1
                move.l #FileName2,d2  ; FileName2 nach d2
                jsr Rename(a6)        ; Und Namen ändern
                tst.l d0              ; Ging alles Gut?
                beq.s ParameterError  ; Nein? Dann Fehlertext schreiben
                move.l ExecBase,a6    ; dos.library schließen
                move.l DosBase,a1
                jsr CloseLibrary(a6)

LibraryError:
                clr.l d0
                rts                   ; Rücksprung

ParameterError:
                move.l DosBase,a6     ; DosBase nach a6
                jsr Output(a6)        ; OutputHandle holen
                move.l d0,d1          ; und gleich nach d1 damit
                move.l #ParaText,d2   ; Text nach d2
                move.l #ParaTextEnde-ParaText,d3  ; Textlänge nach d3
                jsr Write(a6)         ; Text schreiben
                jmp LibraryError      ; Programm beenden

Parameterholen:
                cmp.b #' ',(a0)+      ; Vergleiche Zeichen mit Leerzeichen
                beq.s Parameterholen  ; Gleichheit? Dann nocheinmal
                subq.l #1,a0          ; Wir waren eins zu weit
Para2:          move.b (a0)+,(a1)+    ; Byte übetragen
                cmp.b #' ',(a0)       ; Mit Leerzeichen vergleichen
                bne.s Para2           ; Keins? Dann nochmal übertragen
                clr.b (a1)            ; Letztes Zeichen durch 0-byte ersetzen
                rts                   ; Rücksprung

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

DosName: dc.b "dos.library",0
DosBase: dc.l 0
FileName1: ds.b 60
FileName2: ds.b 60
ParaText:
                dc.b "Es ist ein Fehler aufgetreten !!",10
                dc.b "  Benutze folgendes Format: <Rename Alt Neu>",10
ParaTextEnde:
                end
