>extern 'df0:gfx/smallfont.raw',font,4000

; 15x16x3 planes font
; remember to save it as raw.blit in the Kefrens iff-converter!
; press 'y' to load imagefiles...

strt:	movem.l	d0-d7/a0-a6,-(sp)
	movem.l	clsrg(pc),d0-d7/a0-a6
	lea.w	$dff000,a6
	bsr.l	setpls
	bsr.l 	start

vblank:	tst.b	$06(a6)
	bne.s	vblank

leftm:	btst 	#6,$bfe001
	bne.s 	vblank
	bsr.l 	stop
	movem.l	(sp)+,d0-d7/a0-a6
	clr.l	d0
	rts

lev3int:movem.l d0-d7/a0-a6/sr,-(sp)
	move.w 	#$0020,$9c(a6)
wrast:	cmp.b	#$40,$06(a6)
	bne.s	wrast
	move.w	#$000a,$180(a6)
	bsr.l	scroll
	move.w	#$0000,$180(a6)
	movem.l	(sp)+,d0-d7/a0-a6/sr
	rte

scroll:	movem.l	d0-d7/a0-a6,-(sp)
	sub.w	#$22,scr
	bpl.l	exitscr
	move.w	#$00ff,scr
	addq.l	#2,bpls1
	addq.l	#2,bpls1+4
	addq.l	#2,bpls1+8
	lea.w 	bpls1(pc),a0
	lea.w 	bplanes(pc),a1
	move.w	#3,d0
	move.w 	#$e0,d2
	bsr.l 	setbpl
txtcon:	lea.w	text(pc),a0
	add.w	howfar(pc),a0
	addq.w	#1,howfar
	move.b	(a0),d0
	bpl.s	nostop1
	clr.w	howfar
	bra.s	txtcon
nostop1:sub.b	#$20,d0
	lsl.w	#1,d0
	lea.w	chartab(pc),a1
	lea.w	font(pc),a0
	add.w	(a1,d0.w),a0
	cmp.w	#20,blocks
	beq.s	tilbake
	move.l	adr1(pc),a1
	addq.l	#2,adr1
	addq.w	#1,blocks
	bsr.s	copit
	move.l	adr2(pc),a1
	addq.l	#2,adr2
	bsr.s	copit
exitscr:movem.l	(sp)+,d0-d7/a0-a6
	rts

copit:	btst	#14,$02(a6)
	bne.s	copit
	move.l	a0,$50(a6)
	move.l	a1,$54(a6)
	move.l	#$09f00000,$40(a6)
	move.l	#$ffffffff,$44(a6)
	move.l	#$00260052,$64(a6)	;modulo: look in paper!
	move.w	#[64*45]+1,$58(a6)	;15*16*3 planes
	rts

tilbake:move.l	adr1(pc),a1
	bsr.s	copit
	move.l	adr2(pc),a1
	bsr.s	copit
	move.l	oldadr1(pc),adr1
	move.l	oldadr2(pc),adr2
	move.l	orgbpl(pc),bpls1
	move.l	orgbpl+4(pc),bpls1+4
	move.l	orgbpl+8(pc),bpls1+8
	bsr.s	setpls
	clr.w	blocks
	movem.l	(sp)+,d0-d7/a0-a6
	rts

setpls:	movem.l	d0-d7/a0-a6,-(sp)
	movem.l	clsrg(pc),d0-d2
	lea.w 	orgbpl(pc),a0
	lea.w 	bplanes(pc),a1
	moveq	#3,d0
	move.b 	#$e0,d2
	bsr.s 	setbpl
	movem.l	(sp)+,d0-d7/a0-a6
	rts

start:	tst.b	$06(a6)
	bne.s	start
	move.w 	$02(a6),dmaconr
	move.w 	$1c(a6),intenar
	move.w 	#$7fff,$96(a6)
	move.w 	#$3fdf,$9a(a6)
	move.l 	$6c.w,oldlev3
	move.l 	#lev3int,$6c.w
	move.w 	#$87c0,$96(a6)
	move.l 	#copl,$84(a6)
	clr.w 	$8a(a6)
	rts

stop:	tst.b	$06(a6)
	bne.s	stop
	move.l 	oldlev3(pc),$6c.w
	or.w 	#$8000,dmaconr
	move.w 	#$0100,$96(a6)
	move.w 	dmaconr(pc),$96(a6)
	or.w	#$8000,intenar
	move.w 	intenar(pc),$9a(a6)
	rts

setbpl:	move.w 	d2,(a1)+
	move.l 	(a0)+,d1
	swap 	d1
	move.w 	d1,(a1)+
	addq.w 	#2,d2
	move.w 	d2,(a1)+
	swap 	d1
	move.w 	d1,(a1)+
	addq.w 	#2,d2
	subq.w 	#1,d0
	bne.s 	setbpl
	rts

copl:	dc.w 	$008e,$2c81,$0090,$2cc1,$0092,$0020,$0094,$00d8
	dc.w	$0100,$3200,$0102,$0000,$0104,$0040,$0108,$00cc
	dc.w 	$010a,$00cc
bplanes:blk.l	$0c,$00f60000
colors:	dc.w	$0180,$0000,$0182,$0fff,$0184,$0ddd,$0186,$0bbb
	dc.w	$0188,$0888,$018a,$0666,$018c,$0444,$018e,$0222
	dc.w	$0102
scr:	dc.w	$00ff
	dc.w 	$ffff,$fffe


intenar:dc.w 	0
dmaconr:dc.w 	0
oldlev3:dc.l 	0
blocks:	dc.w	0
howfar:	dc.w	0
adr1:	dc.l	bpl1+4
adr2:	dc.l	bpl1+46
oldadr1:dc.l	bpl1+4
oldadr2:dc.l	bpl1+46
bpls1:	dc.l 	bpl1,bpl1+84,bpl1+168
orgbpl:	dc.l 	bpl1,bpl1+84,bpl1+168
clsrg:	blk.l	16,0

text:	
DC.B	'DETTE ER EN TEST FOR AA SE OM SCROLLEN FUNKER OG JEG'
DC.B	' MAA SKRIVE GANSKE MYE FOR AA TESTE ROUTEN GODT NOK!!'
DC.B	$FF
even

; the 'chartab' is built up as ascii offsets in memory
; that is: it starts with ascci0 = $20 = space!
; look in hardware manual for the rest of the offsets

chartab:
dc.w	3618,1834,0,0,0,0,1836,0,1838,3600
dc.w	3602,3608,3616,3606,3614,0,1812,1814,1816,1818
dc.w	1820,1822,1824,1826,1828
dc.w	1830,3604,0,3610,0
dc.w	3612,1832,0,0,2,4,6,8,10,12
dc.w	14,16,18,20,22,24,26,28,30,32
dc.w	34,36,38,1800,1802,1804,1806,1808,1810

font:	blk.b	5400,$00
bpl1:	blk.b 	[[662/8*256]*3],$00
prgend:
