********** BigBoot-Header *********
***** Fügen Sie Ihr Programm ******
** am Schluß dieses Listings ein **
**+**** von Michael Göckel ********

ExecBase:	EQU	4
FindResident:	EQU	-$60
DoIO:		EQU	-$1C8
Location:	EQU	$50000	; feste Adresse
				; für Code
org Location
load Location

	DC.B	"DOS",0		; DOS Kennzeichen
	DC.L	$0		; Checksumme
	DC.L	$370		; DOS Extension (Rootblock)
start:
	move.w	#$8100,$DFF096	; BPLDMA an
	move.l	#Location,a2	; Location
	lea.l	BlockLong(PC),a3; nur kurz benötigt
	move.l	(a3),d1		; welche Blocks?
	move.l	#0,a3		; Offset
	move.l	#0,d2
checkloop:
	bclr	d2,d1
	bne	loadthis	; wenn noch nicht 0 gewesen -> load
	add.l	#$0200,a3	; diesen Block nicht (Offset erhöhen)
	addq.l	#1,d2		; nächster Block
	tst.l	d1
	bne	checkloop	; Wenn 0, dann alle Blocks fertig
	bra	fertig_geladen

*********** LadeRoutine ***********
loadthis:
	move.l	ExecBase,a6
	move.w	#2,28(a1)	; TD_CMD_Read
	move.l	a3,44(a1)	; TD_Offset (Diskposition)
	move.l	a2,40(a1)	; TD_Location
	move.l	#$0200,36(a1)	; Eine Blocklänge
	movem.l	d1-d2/a1-a3,-(a7) ; Parameter sichern
	jsr	DoIO(a6)
	movem.l	(a7)+,d1-d2/a1-a3 ; Parameter zurückholen
	add.l	#$0200,a3	; Nächster Block
	add.l	#$0200,a2	; Nächste Location
	addq.l	#1,d2		; Blocknummer erhöhen
	tst.l	d0
	beq	CheckLoop	; Kein Fehler beim Laden ?
	bra	Continue_Boot
fertig_geladen:
	jsr	begin
Continue_Boot:
	move.l	ExecBase,a6
	lea	DosName(PC),a1
	jsr	FindResident(a6)
	tst.l	d0
	beq	Boot_Failed
	move.l	d0,a0
	move.l	22(a0),a0	; Resident_Init nach a0
	moveq	#0,d0		; Zero Bit setzen
	rts			; Boot geklappt
Boot_Failed:
	moveq	#1,d0		; Zero Bit löschen
	rts			; Boot nicht ok

***** Variable und Konstanten *****

DosName:	DC.B	"dos.library",0
BlockLong:	DC.L	%00000000000000000000000000000001

**** Hier Ihr Programm einfügen ***
even
begin:
;	** Programm Code **
Finis:
