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

ExecBase:       equ 4
OldOpenLibrary: equ -408
CloseLibrary:   equ -414
Output:         equ -60
Input:          equ -54
Write:          equ -48
Read:           equ -42
SetComment:     equ -180

          move.l a0,Parameter     ; Parameter retten
          subi.b #1,d0            ; Parameterlänge um eins erniedrigen
          move.l d0,d5            ; terminiere Parameter mit 0-Byte
          clr.b 0(a0,d0)
          move.l ExecBase,a6      ; dos.library öffnen
          lea DosName,a1
          jsr OldOpenLibrary(a6)
          tst.l d0                ; ist alles gut gegangen?
          beq.w LibraryError      ; Nein? Dann Programm beenden
          move.l d0,DosBase       ; DosBase sichern
          move.l DosBase,a6
          jsr Output(a6)          ; OutputHandle holen
          move.l d0,OutputHandle  ; und sichern
          jsr Input(a6)           ; InputHandle holen
          move.l d0,InputHandle   ; und sichern
          tst.l d5                ; Ist überhaupt ein Parameter vorhanden
          beq.s ParameterError    ; Nein? Dann Fehlertext schreiben
          move.l OutputHandle,d1  ; OutputHandle nach d1
          move.l #Inputtext,d2    ; Text nach d2
          move.l #Inputbuffer-Inputtext,d3 ; Textlänge nach d3
          jsr Write(a6)           ; und schreiben
          move.l InputHandle,d1   ; InputHandle nach d1
          move.l #Inputbuffer,d2  ; Eingabebuffer nach d2
          move.l #Parametertext-Inputbuffer,d3 ; maximale Eingabelänge nach d3
          jsr Read(a6)            ; und Kommentar lesen
          move.l d0,d5            ; Kommentarlänge nach d5
          subi.b #1,d5            ; terminiere Kommentarlänge mit 0-Byte
          move.l #Inputbuffer,a3
          clr.b 0(a3,d5)
          move.l Parameter,d1     ; Dateiname nach d1
          move.l a3,d2            ; Kommentar nach d2
          jsr SetComment(a6)      ; und neuen Kommentar setzen
          tst.l d0                ; Testen ob Operation geglückt
          beq.s Error             ; Wenn nein dann Fehlertext schreiben
End2:
          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  ; Schreiben des Fehlertextes
          move.l #End1,d2
          move.l #End3-End1,d3
          jsr Write(a6)
          jmp End2                ; Und wieder zurück
ParameterError:
          move.l OutputHandle,d1  ; Schreiben des Parameterfehlertextes
          move.l #Parametertext,d2
          move.l #End1-Parametertext,d3
          jsr Write(a6)
          jmp End2                ; und wieder zurück

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

Parameter: dc.l 0
DosName: dc.b "dos.library",0
DosBase: dc.l 0
OutputHandle: dc.l 0
InputHandle: dc.l 0
Inputtext:
          dc.b "Geben Sie den neuen Kommentar ein: ",10
          even
Inputbuffer:
          ds.b 255
Parametertext:
          dc.b "Benutze folgendes Foramt: <SetComment Dateiname>",7,10
End1:
          dc.b "Es ist ein Fehler aufgetreten",7,10
End3:
          end

