	jmp	startmain

	org	$40000
	load	$40000

startmain:
	lea	intrpt0(pc),a0
	move.l	$80.w,(a0)
	lea	gogo(pc),a0
	move.l 	a0,$80.w
	trap 	#0
	rts
gogo:
	lea	gogo(pc),a5
	lea	$dff000,a6
	move.w 	#$2700,sr

Clearstuff:
	lea	$60000,a0
	lea	$7a000,a1

Clearloop:
	clr.l	(a0)+
	cmpa.l	a0,a1
	bne.b	clearloop

	
	move.w 	#$87f0,$96(a6)
	bsr.w	propwriter
	lea	copperl(pc),a0
	move.l 	a0,$80(a6)

Waitmouse:
wtl:
	cmp.b	#255,$6(a6)
	bne.s 	wtl
	btst	#6,$bfe001
	bne.b 	waitmouse
	
end:
	move.w 	#$8030,$96(a6)
	move.l 	intrpt0(pc),$80.w
	lea 	gn(pc),a1
	move.l	4.w,a6
	jsr	-408(a6)
	move.l	d0,a1
	move.l	$26(a1),$dff080
	jsr	-414(a6)
	moveq 	#$00,d0
	rte


INTRPT0:DC.L	$0
gn:	dc.b 	'graphics.library',0,0

copperl:
	dc.w $0120,$0000,$0122,$0000,$0124,$0000,$0126,$0000,$0128,$0000
	dc.w $012a,$0000,$012c,$0000,$012e,$0000,$0130,$0000,$0132,$0000
	dc.w $0134,$0000,$0136,$0000,$0138,$0000,$013a,$0000,$013c,$0000
	dc.w $013e,$0000,$0102,$0000,$0104,$0000,$0108,$0000,$010a,$0000
	dc.w $0092,$0038,$0094,$00d0,$008e,$2c81,$0090,$28c1
	dc.w $0100,$3200
	dc.w $00e0,$0006,$00e2,$0000
	dc.w $00e4,$0006,$00e6,$2800
	dc.w $00e8,$0006,$00ea,$5000

	dc.w	$0180,$0000
	dc.w	$0182,$0FFD
	dc.w	$0184,$0DDA
	dc.w	$0186,$0BA8
	dc.w	$0188,$0985
	dc.w	$018A,$0764
	dc.w	$018C,$0653
	dc.w	$018E,$0542
	dc.l	-2
	dc.l	-2



***********************************
*       PROPORTIONAL WRITER       *
*          AUTO-CENTERING         *
*   (C) FILIPPETTO/ZENITH 1992    *
***********************************

centering=		1		; 0 = no centering, 1 = centering
maxchr=			20		; max # of chars in a row
bitplanes=		3		; number of bitplanes
step=			1		; space between 2 rows
charwidth=		2		; bytes between 2 chars in font
fontwidth= 		120		; font width (bytes)
fontheight=		8		; font height
scrwdth= 		40		; screen width (bytes)
scrheight= 		256		; screen height
destination=		$60000		; where to plot

Propwriter:

comeon:
	lea	testo(pc),a0
	add.l	toffs(pc),a0
	addq.l	#1,toffs-gogo(a5)
	move.b	(a0),d0
	bpl.s	norestart
	rts

Norestart:
	cmpi.b	#10,d0
	bne.w	noreturn

	tst.w	xp-gogo(a5)
	bne.b	itsok
	add.w	#fontheight+step,yp-gogo(a5)
	bra.b	comeon

itsok:
	IF	CENTERING
		move.w	xp(pc),d2
		move.w	#scrwdth*8,d0
		sub.w	d2,d0
		lsr.w	#1,d0
		move.w	d0,xp-gogo(a5)
	ELSE
		clr.w	xp-gogo(a5)
	ENDIF
	 	move.w	yp(pc),d1
		moveq	#bitplanes-1,d7

	btst	#6,2(a6)
.wb0:
	btst	#6,2(a6)
	bne.b	.wb0

	move.w	#0,$42(a6)
	clr.w	$46(a6)
	move.w	#scrwdth-maxchr,$62(a6)
	clr.w	$64(a6)
	move.w	#scrwdth-maxchr,$66(a6)

aspa:
	move.w	xp(pc),d0
	move.w	yp(pc),d1

	move.l	screen(pc),a0
	add.w	d1,d1
	lea	multab(pc),a2
	add.w	(a2,d1.w),a0
	move.w	d0,d1
	and.w	#$fff0,d0
	lsr.w	#3,d0
	add.w	d0,a0
	and.w	#$000f,d1
	ror.w	#4,d1
	or.w	#$0dfc,d1
	move.w	d1,$40(a6)
	move.l	a0,$4c(a6)
	move.l	myscr(pc),$50(a6)
	move.l	a0,$54(a6)
	move.w	#fontheight*64+(maxchr/2),$58(a6)

	btst	#6,2(a6)
.wb1:
	btst	#6,2(a6)
	bne.b	.wb1

	add.l	#scrwdth*scrheight,screen-gogo(a5)
	add.l	#maxchr*fontheight,myscr-gogo(a5)
	dbf	d7,aspa

	lea	myrow(pc),a4
	move.l	a4,myscr-gogo(a5)
	move.l	#destination,screen-gogo(a5)

	move.l	#$1000000,$40(a6)
	move.l	#-1,$44(a6)
	move.l	myscr(pc),$54(a6)
	move.w	#0,$66(a6)
	move.w	#(fontheight*3)*64+(maxchr/2),$58(a6)

	btst	#6,2(a6)
.wb2:
	btst	#6,2(a6)
	bne.b	.wb2

	clr.w	xp-gogo(a5)
	add.w	#fontheight+step,yp-gogo(a5)
	bra.w	comeon

Noreturn:
	lea	charmap(pc),a1
	lea	addmap(pc),a2
	lea	font(pc),a4
	move.l	a4,addtocopy-gogo(a5)

Comploop:
	move.b	(a1)+,d1
	cmp.b	d0,d1
	beq.s	found
	add.l	#charwidth,addtocopy-gogo(a5)
	addq.l	#2,a2
	bra.s	comploop

Found:
	move.w	(a2),d4
	moveq	#bitplanes-1,d7

	btst	#6,2(a6)
.wb30:
	btst	#6,2(a6)
	bne.b	.wb30

	move.w	#0,$42(a6)
	clr.w	$46(a6)
	move.w	#maxchr-(charwidth*2),$62(a6)
	move.w	#fontwidth-(charwidth*2),$64(a6)
	move.w	#maxchr-(charwidth*2),$66(a6)


chattanuga:
	move.w	xp(pc),d0
	clr.w	d1

	move.l	myscr(pc),a0
	add.w	d1,d1
	lea	multab(pc),a2
	add.w	(a2,d1.w),a0
	move.w	d0,d1
	and.w	#$fff0,d0
	lsr.w	#3,d0
	add.w	d0,a0
	and.w	#$000f,d1
	ror.w	#4,d1
	or.w	#$0dfc,d1
	move.w	d1,$40(a6)
	move.l	a0,$4c(a6)
	move.l	addtocopy(pc),$50(a6)
	move.l	a0,$54(a6)
	move.w	#fontheight*64+charwidth,$58(a6)


	btst	#6,2(a6)
.wb3:
	btst	#6,2(a6)
	bne.b	.wb3

	add.l	#maxchr*fontheight,myscr-gogo(a5)
	add.l	#fontwidth*fontheight,addtocopy-gogo(a5)
	dbf	d7,chattanuga

	add.w	d4,xp-gogo(a5)
	lea	myrow(pc),a4
	move.l	a4,myscr-gogo(a5)
	bra.w	comeon

Charmap:dc.b	'!"'
	dc.b	"#$%&'()*,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ<>Ø "
	even
	;	! " # $ % & ' ( ) * , - . / 0 1 2 3 4 5 6 7 8 9
Addmap: dc.w	6,6,8,8,8,8,6,8,8,8,6,8,6,8,8,8,8,8,8,8,8,8,8,8
	;	: ; ? @
	dc.w	6,6,8,8
	;	A B C D E F G H I J K L M N O P Q R S T U V W X Y Z < > Ø
	dc.w	8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,6

Toffs:			dc.l	0
Xp:			dc.w	0
Yp:			dc.w	0
addtocopy:		dc.l	0
myscr:			dc.l	myrow
screen:			dc.l	destination

multab:	dc.w	000*scrwdth,001*scrwdth,002*scrwdth,003*scrwdth,004*scrwdth
	dc.w	005*scrwdth,006*scrwdth,007*scrwdth,008*scrwdth,009*scrwdth
	dc.w	010*scrwdth,011*scrwdth,012*scrwdth,013*scrwdth,014*scrwdth
	dc.w	015*scrwdth,016*scrwdth,017*scrwdth,018*scrwdth,019*scrwdth
	dc.w	020*scrwdth,021*scrwdth,022*scrwdth,023*scrwdth,024*scrwdth
	dc.w	025*scrwdth,026*scrwdth,027*scrwdth,028*scrwdth,029*scrwdth
	dc.w	030*scrwdth,031*scrwdth,032*scrwdth,033*scrwdth,034*scrwdth
	dc.w	035*scrwdth,036*scrwdth,037*scrwdth,038*scrwdth,039*scrwdth
	dc.w	040*scrwdth,041*scrwdth,042*scrwdth,043*scrwdth,044*scrwdth
	dc.w	045*scrwdth,046*scrwdth,047*scrwdth,048*scrwdth,049*scrwdth
	dc.w	050*scrwdth,051*scrwdth,052*scrwdth,053*scrwdth,054*scrwdth
	dc.w	055*scrwdth,056*scrwdth,057*scrwdth,058*scrwdth,059*scrwdth
	dc.w	060*scrwdth,061*scrwdth,062*scrwdth,063*scrwdth,064*scrwdth
	dc.w	065*scrwdth,066*scrwdth,067*scrwdth,068*scrwdth,069*scrwdth
	dc.w	070*scrwdth,071*scrwdth,072*scrwdth,073*scrwdth,074*scrwdth
	dc.w	075*scrwdth,076*scrwdth,077*scrwdth,078*scrwdth,079*scrwdth
	dc.w	080*scrwdth,081*scrwdth,082*scrwdth,083*scrwdth,084*scrwdth
	dc.w	085*scrwdth,086*scrwdth,087*scrwdth,088*scrwdth,089*scrwdth
	dc.w	090*scrwdth,091*scrwdth,092*scrwdth,093*scrwdth,094*scrwdth
	dc.w	095*scrwdth,096*scrwdth,097*scrwdth,098*scrwdth,099*scrwdth
	dc.w	100*scrwdth,101*scrwdth,102*scrwdth,103*scrwdth,104*scrwdth
	dc.w	105*scrwdth,106*scrwdth,107*scrwdth,108*scrwdth,109*scrwdth
	dc.w	110*scrwdth,111*scrwdth,112*scrwdth,113*scrwdth,114*scrwdth
	dc.w	115*scrwdth,116*scrwdth,117*scrwdth,118*scrwdth,119*scrwdth
	dc.w	120*scrwdth,121*scrwdth,122*scrwdth,123*scrwdth,124*scrwdth
	dc.w	125*scrwdth,126*scrwdth,127*scrwdth,128*scrwdth,129*scrwdth
	dc.w	130*scrwdth,131*scrwdth,132*scrwdth,133*scrwdth,134*scrwdth
	dc.w	135*scrwdth,136*scrwdth,137*scrwdth,138*scrwdth,139*scrwdth
	dc.w	140*scrwdth,141*scrwdth,142*scrwdth,143*scrwdth,144*scrwdth
	dc.w	145*scrwdth,146*scrwdth,147*scrwdth,148*scrwdth,149*scrwdth
	dc.w	150*scrwdth,151*scrwdth,152*scrwdth,153*scrwdth,154*scrwdth
	dc.w	155*scrwdth,156*scrwdth,157*scrwdth,158*scrwdth,159*scrwdth
	dc.w	160*scrwdth,161*scrwdth,162*scrwdth,163*scrwdth,164*scrwdth
	dc.w	165*scrwdth,166*scrwdth,167*scrwdth,168*scrwdth,169*scrwdth
	dc.w	170*scrwdth,171*scrwdth,172*scrwdth,173*scrwdth,174*scrwdth
	dc.w	175*scrwdth,176*scrwdth,177*scrwdth,178*scrwdth,179*scrwdth
	dc.w	180*scrwdth,181*scrwdth,182*scrwdth,183*scrwdth,184*scrwdth
	dc.w	185*scrwdth,186*scrwdth,187*scrwdth,188*scrwdth,189*scrwdth
	dc.w	190*scrwdth,191*scrwdth,192*scrwdth,193*scrwdth,194*scrwdth
	dc.w	195*scrwdth,196*scrwdth,197*scrwdth,198*scrwdth,199*scrwdth
	dc.w	200*scrwdth,201*scrwdth,202*scrwdth,203*scrwdth,204*scrwdth
	dc.w	205*scrwdth,206*scrwdth,207*scrwdth,208*scrwdth,209*scrwdth
	dc.w	210*scrwdth,211*scrwdth,212*scrwdth,213*scrwdth,214*scrwdth
	dc.w	215*scrwdth,216*scrwdth,217*scrwdth,218*scrwdth,219*scrwdth
	dc.w	220*scrwdth,221*scrwdth,222*scrwdth,223*scrwdth,224*scrwdth
	dc.w	225*scrwdth,226*scrwdth,227*scrwdth,228*scrwdth,229*scrwdth
	dc.w	230*scrwdth,231*scrwdth,232*scrwdth,233*scrwdth,234*scrwdth
	dc.w	235*scrwdth,236*scrwdth,237*scrwdth,238*scrwdth,239*scrwdth
	dc.w	240*scrwdth,241*scrwdth,242*scrwdth,243*scrwdth,244*scrwdth
	dc.w	245*scrwdth,246*scrwdth,247*scrwdth,248*scrwdth,249*scrwdth
	dc.w	250*scrwdth,251*scrwdth,252*scrwdth,253*scrwdth,254*scrwdth
	dc.w	255*scrwdth,256*scrwdth,257*scrwdth,258*scrwdth,259*scrwdth

testo:
	DC.B	10
	DC.B	"YOU CAN EASILY",10
	DC.B	"CHECK THAT",10
	DC.B	"THIS TEXT IS",10
	DC.B	"AUTO-CENTERED!",10
	DC.B	10
	DC.B	"ARE YOU HAPPY",10
	DC.B	"NOW???",10
	DC.B	-1

myrow:	blk.b	maxchr*fontheight*bitplanes,0
font:	incbin	"FC#11-1:sources/booster"
