;**** GrabKick.a ******************************************

	INCDIR	AINCLUDE:
	INCLUDE	libraries/dosextens.i
	INCLUDE lvo.i
	INCLUDE dos/dos.i
	INCLUDE	workbench/startup.i
	INCLUDE	workbench/workbench.i

; Programmheader
;
;	Name:		GrabKick
;	Author:		SDI
;	Distribution:	PD
;	Description:	liest Kickstart aus und schreibt ihn in Datei
;	Compileropts:	-
;	Linkeropts:	-
;	CLI-Parameter:	-
;
; 1.2   07.08.95 : neue Berechnung für Revisionsnummer gleicht Rechen-
;	fehler von MaxonC++ aus - Länge 880
; 1.3   03.12.95 : Mit Assembler neukompiliert - Länge 244
; 1.4   04.12.95 : etwas verkürzt - Länge 236
; 1.5   10.12.95 : etwas verkürzt - Länge 228
; 1.6   19.12.95 : läuft auch von WB aus - Länge 300

;**** Programm ********************************************

	SECTION "0",CODE
	SUB.L	A1,A1			;A1=0 = eigener Task
	MOVEQ	#0,D7
	MOVEA.L	4.W,A6
	JSR	_LVOFindTask(A6)	;wo sind wir?
	MOVEA.L	D0,A4			;Adresse retten

	TST.L	pr_CLI(A4)		;Laufen wir unter WB?
	BNE.B	fromCLI
	LEA	pr_MsgPort(A4),A0
	JSR	_LVOWaitPort(A6)	;Warte auf Start-Message
	LEA	pr_MsgPort(A4),A0
	JSR	_LVOGetMsg(A6)		;Hole Msg
	MOVE.L	D0,D7				;D7 - WBStartUp Message
fromCLI	LEA	KICKEND(PC),A2			;A2 - KickStr-Ende
	MOVEQ	#33,D0
	LEA	DOSNAME(PC),A1
	JSR	_LVOOpenLibrary(A6)
	MOVE.L	D0,A6			;DosBase -> A6, da nur Dos-Calls
	BEQ.W	ENDE			;Librarybase != 0 ?
	TST.L	D7
	BEQ.B	NoWB
	MOVEA.L	D7,A0
	MOVEA.L	sm_ArgList(A0),A0
	BEQ.W	ENDE
	MOVE.L	(A0),D1
	JSR	_LVOCurrentDir(A6)
NoWB	MOVE.L	$00FFFFEC.L,D3		;D3 - RomSize
	MOVE.L	#$01000000,A3
	SUB.L	D3,A3			;A3 - Romstart
	MOVEQ	#0,D4
	MOVE.W	12(A3),D4		;D4 - Romvers
	MULU	#1000,D4
	ADD.W	14(A3),D4		;D4 - Fullversion
LOOP
	MOVE.L	D4,D2
	DIVU	#10,D2			;durch Zehn teilen
	MOVE.W	D2,D4			;Ergebnis nach D4
	SWAP	D2
	ADD.B	D2,(A2)			;Rest in Namensfile
	SUBQ.L	#1,A2			;Zähler 1 weiter zurück
	TST.L	D4
	BNE.B	LOOP
;Schleifenende
	MOVE.W	#MODE_NEWFILE,D2	;Modus-Parameter
	LEA	KICKSTR(PC),A2
	MOVE.L	A2,D1			;Name-Parameter
	JSR	_LVOOpen(A6)
	MOVE.L	D0,D4		;D4 - Filehandle
	BEQ.B	CLEANUP
;					Anzahl-Parameter D3 hat schon Wert

	MOVE.L	A3,D2			;Puffer-Parameter
	MOVE.L	D4,D1			;Filehandle-Parameter
	JSR	_LVOWrite(A6)
	MOVE.L	D0,D2		;D2 - Write Rückgabe
	MOVE.L	D4,D1			;Filehandle-Parameter
	JSR	_LVOClose(A6)
	CMP.L	#$FFFFFFFF,D2	;D2 == -1 --> File löschen
	BNE.B	CLEANUP
	MOVE.L	A2,D1
	JSR	_LVODeleteFile(A6)
CLEANUP
	MOVEA.L	A6,A1
	MOVEA.L	4.W,A6
	JSR	_LVOCloseLibrary(A6)
ENDE
	TST.L	D7			;von Workbench ?
	BEQ.B	_exit			;nein - war CLI

	MOVEA.L	4.W,A6
	JSR	_LVOForbid(A6)		;Schutzmaßnahme
	MOVEA.L	D7,A1			;Message holen
	JSR	_LVOReplyMsg(A6)

	MOVEQ	#0,D0
_exit	RTS	
	CSTRING	'$VER: GrabKick 1.6 (19.12.95) (PD) by SDI'
DOSNAME	CSTRING	'dos.library'
KICKSTR	DC.B	'kick0000'
KICKEND	CSTRING	'0'
	END

