	incdir "include/"
	include "exec/exec_lib.i"
	include "libraries/dos_lib.i"
	include "libraries/dosextens.i"

	section Programm,DATA
	
	move.l d0,d6		;anzahl Parameter sichern in d6
	move.l a0,text		;Parametertextstartadresse sichern
	move.l d0,d5		;Parameter nach d5 zum zählen
	lea dosname,a1		; Öffnen der Doslib und Test ob ok
	move.l #15,d0
	CALLEXEC OpenLibrary
	move.l d0,_DOSBase
	cmp.l #0,d0
	beq ende1
	cmp.l #2,d6			;anzahl Parameter <2 ?
	bls zeige			;kleiner 2? -> dann Fehler
	move.l text,a0		;Zeiger auf Originaltext in a0
	jsr tloop			;Warten bis " " dann " "=chr$(0)
	cmp.l #1,d5			;Schon Textende ?
	bls zeige			;Nur ein Parameter -> Fehler
	move.l a0,text1		;DEST- Text Sichern
	jsr tloop			;                 ^
	jsr totest			;Schlüsselwort TO isolieren (falls da)
	move.l text,d1		;Zeiger auf Text 
	move.l #MODE_OLDFILE,d2	;und Datei öffnen
	CALLDOS Open
	move.l d0,file1		;Filehandle
	cmp.l #0,d0			;0 dann Fehler
	beq err1
	move.l text1,d1		;Zeiger auf neue Datei
	move.l #MODE_NEWFILE,d2	;und öffnen
	CALLDOS Open
	move.l d0,file2
	cmp.l #0,d0			;Test ob ok
	beq err2
copy:
	move.l file1,d1		;filehandle
	move.l #puffer,d2		;Adresse des Pufferbereiches
	move.l #10000,d3		;10 Kb Puffer
	CALLDOS Read		;und Amiga macht den Puffer voll
	cmpi.l #0,d0		;Anzahl der gelesenen Bytes
	beq err4			;kleiner dann Fehler
	move.l d0,d3		;anzahl sichern
	move.l d0,d5
	move.l file2,d1		;filehandle
	move.l #puffer,d2		;adresse des Puffers
	CALLDOS Write		;und Amiga schreibt den Inhalt
	cmp.l d0,d5			;Ganzer Puffer geschrieben ?
	bne err3			;Mist irgendwas ist faul
	cmpi.l #10000,d0		;Test ob datei größer 10K
	beq copy			;dann noch einmal
	move.l file1,d1		;und Dateien schließen
	CALLDOS Close
	move.l file2,d1
	CALLDOS Close
	move.l text,d1
	CALLDOS DeleteFile	;alte Datei löschen
	cmpi.l #0,d0
	beq err5
	bra e2

err1:					;Source nicht gefunden
	move.l #f1,d5
	bra zeige1
err2:					;Dest nicht zu öffnen
	move.l #f2,d5
	bra zeige1
err3:					;Fehler beim Schreiben	
	move.l #f3,d5
	bra zeige1
err4:					;Fehler beim Lesen	
	move.l #f4,d5
	bra zeige1
err5:					;Fehler beim löschen
	move.l #f5,d5
	bra zeige1
zeige:				;Fehler bei Parametern
	move.l #f6,d5
zeige1:
	CALLDOS Output		;Aktuelle Ausgabe holen
	move.l d0,d1		;auf den richtigen Platz
	move.l d5,d2		;Adresse der Fehlermeldung
	move.l #30,d3		;30 Zeichen
	CALLDOS Write		;und ausgeben
ende:	
	cmp.l _DOSBase,d0		;braucht man nun nicht mehr
	beq ende1	
	cmpi.l #0,file1		;testen ob irgendwas offen
	beq e1			;wenn ja schließen
	move.l file1,d1
	CALLDOS Close
e1:
	cmpi.l #0,file2
	beq e2
	move.l file2,d1
	CALLDOS Close
e2:
	move.l _DOSBase,a1
	CALLEXEC CloseLibrary	
ende1:
	move.l #0,d0
	rts				;Tschüß

tloop:
	move.b (a0)+,d0		;Zeichen in d0 und a0=nächstes Zeichen
	subi.l #1,d5		;Anzahl der Zeichen -1
	cmpi.b #32,d0		;Test auf " " (space)
	bgt tloop			;nei ?,- auch gut
	suba.l #1,a0		;a0 ein Zeichen zurück
	move.b #0,(a0)		;Space durch chr$(0) ersetzen
	adda.l #1,a0		;a0 wieder auf alte Position
	rts

totest:
	move.l text1,a1		;Text
	cmp.b #"t",(a1)		;und einzelne Bytes vergleichen
	beq t
	cmp.b #"T",(a1)
	beq t
	rts
t:
	cmp.b #"o",1(a1)
	beq o
	cmp.b #"O",1(a1)
	beq o				;To oder ähnliches erkannt dann 3. Textteil lesen
	rts
o:	move.l a0,text1
	jsr tloop
	rts
	
f1: dc.b "Source Datei nicht zu öffnen ",10
f2: dc.b "Dest.  Datei nicht zo öffnen ",10
f3: dc.b "Fehler beim Schreiben        ",10
f4: dc.b "Fehler beim Lesen            ",10
f5: dc.b "Datei nicht löschbar         ",10
f6: dc.b "Move Source [to] Dest        ",10

dosname:  DOSNAME	
	even	
text: dc.l 0
text1: dc.l 0
_DOSBase: dc.l 0
file1: dc.l 0
file2: dc.l 0
	section puffer,BSS_C
puffer dcb.b 10000,0

