
; Assembler: DevPac 2.14

; use Tab 11


	opt	o+,p+

*****  Message-Bootblock V1.1  *****

bootcode	dc.l	$444f5300
	dc.l	$00000000
	dc.l	$00000370

	move.l	4.w,a6
	jsr	-132(a6)		; _LVOForbid

.alloc_mem	move.l	#320+12+100+108,d0	; BitPlane+BitMap+RastPort+CopperList
	move.l	#$10002,d1
	jsr	-198(a6)		; _LVOAllocMem
	tst.l	d0
	beq	.dos_boot
	move.l	d0,d7

.open_gfx	lea	gfx_lib(pc),a1
	moveq	#33,d0
	jsr	-552(a6)		; _LVOOpenLibrary
	tst.l	d0
	beq	.free_mem
	move.l	d0,a6

	move.l	d7,a1
	adda.l	#320+12,a1
	jsr	-198(a6)		; _LVOInitRastPort

	move.l	d7,a0
	adda.l	#320,a0
	moveq	#1,d0
	move.l	#320,d1
	moveq	#8,d2
	jsr	-390(a6)		; _LVOInitBitMap

	move.l	d7,a0
	adda.l	#320+12,a0		; Strukturen verbinden
	move.l	d7,a1
	adda.l	#320,a1
	move.l	d7,a2
	move.l	a1,$04(a0)
	move.l	a2,$08(a1)

	move.l	d7,a1
	adda.l	#320+12,a1
	moveq	#52,d0
	moveq	#6,d1
	jsr	-240(a6)		; _LVOMove
	move.l	d7,a1
	adda.l	#320+12,a1
	lea	boot_text(pc),a0
	moveq	#24,d0
	jsr	-60(a6)		; _LVOText

	moveq	#107,d0
	move.l	d7,a0
	adda.l	#320+12+100,a0
	move.l	a0,a2
	lea	coplist(pc),a1
.loop	move.b	(a1)+,(a0)+
	dbf	d0,.loop

	move.l	d7,d0
	move.w	d0,46(a2)		; BitPlane-Zeiger in
	swap	d0		; BPL1PTH / BPL1PTL
	move.w	d0,42(a2)		; schreiben (s.u.)

	lea	$dff000,a0
	move.l	a2,$080(a0)	; COP1LCH
	move.w	#0,$088(a0)	; COPJMP1
	move.w	#$8300,$096(a0)	; DMACON

	move.w	#$000c,d1
	move.w	#$ffff,d0
.wait	nop
	dbf.w	d0,.wait
	dbf.w	d1,.wait

	move.l	$26(a6),$080(a0)	; COP1LCH
	move.w	#0,$088(a0)

.close_gfx	move.l	a6,a1
	move.l	4.w,a6
	jsr	-414(a6)		; _LVOCloseLibrary

.free_mem	move.l	d7,a1
	move.l	#320+12+100+108,d0
	jsr	-210(a6)		; _LVOFreeMem

	jsr	-138(a6)		; _LVOPermit

.dos_boot	lea	exp_lib(pc),a1
	moveq	#37,d0
	jsr	-552(a6)		; _LVOOpenLibrary
	tst.l	d0
	beq.s	no_explib
	movea.l	d0,a1
	bset	#6,34(a1)
	jsr	-414(a6)		; _LVOCloseLibrary
no_explib	lea	dos_lib(pc),a1
	jsr	-96(a6)		; _LVOFindResident
	tst.l	d0
	beq.s	not_found
	movea.l	d0,a0
	movea.l	22(a0),a0
	moveq	#0,d0
	rts
not_found	moveq	#-1,d0
	rts

gfx_lib	dc.b	"graphics.library",0
dos_lib	dc.b	"dos.library",0
exp_lib	dc.b	"expansion.library",0
boot_text	dc.b	"No Virus on Bootblock !!",0

coplist	dc.w	$2001,$fffe
	dc.w	$0100		; BPLCON0
	dc.w	$0200
	dc.w	$008e		; DIWSTRT
	dc.w	$0581
	dc.w	$0090		; DIWSTOP
	dc.w	$40c1
	dc.w	$0092		; DDFSTRT
	dc.w	$0038
	dc.w	$0094		; DDFSTOP
	dc.w	$00d0
	dc.w	$0102		; BPLCON1
	dc.w	$0000
	dc.w	$0104		; BPLCON2
	dc.w	$0024
	dc.w	$0108		; BPL1MOD
	dc.w	$0000
	dc.w	$010a		; BPL2MOD
	dc.w	$0000
	dc.w	$00e0		; BPL1PTH
	dc.w	0		; wird während Boot gefüllt (s.o.)
	dc.w	$00e2		; BPL1PTL
	dc.w	0		; wird während Boot gefüllt (s.o.)
	dc.w	$182		; COLOR01
	dc.w	$00f0
	dc.w	$180		; COLOR00
	dc.w	$0040
	dc.w	$9b0f		; Zeile
	dc.w	$fffe
	dc.w	$180		; COLOR00
	dc.w	$00f0
	dc.w	$9d0f		; Zeile
	dc.w	$fffe
	dc.w	$180		; COLOR00
	dc.w	$0000
	dc.w	$a20f,$fffe
	dc.w	$0100		; BPLCON0
	dc.w	$1200
	dc.w	$a90f,$fffe
	dc.w	$0100		; BPLCON0
	dc.w	$0200
	dc.w	$af0f		; Zeile
	dc.w	$fffe
	dc.w	$180		; COLOR00
	dc.w	$00f0
	dc.w	$b10f		; Zeile
	dc.w	$fffe
	dc.w	$180		; COLOR00
	dc.w	$0040
	dc.l	$fffffffe		; End der CopperList
	
coplist_end

bootcode_end

	end

