		;--------------------------
		;--  Liten PrinterRutin  --
		;--------------------------

org	$20000
load	$20000


S:		movem.l	d0-d7/a0-a6,-(sp)
		bsr.S	SaveAll
		bsr	InitSpr
		bsr	StartCopper
		bsr	MainLoop
		bsr	RestoreAll
		movem.l	(sp)+,d0-d7/a0-a6
		rts

SaveAll:	move.l	$4.W,a6
		lea.l	GfxName(pc),a1
		moveq	#0,d0
		jsr	-408(a6)
		move.l	d0,a0
		lea	OldCop(pc),a2
		move.l	$26(a0),(a2)+
		move.l	a0,a1
		jsr	-414(a6)
		lea	$dff000,a6
		move.w	2(a6),d0
		bset	#15,d0
		move.w	d0,(a2)+
		move.w	#$4000,$9a(a6)

		lea	$bfd100,a0
		move.b	#$fd,(a0)
		nop
		nop
		move.b	#$f5,(a0)
		rts

RestoreAll:	lea	OldCop(pc),a0
		move.l	(a0)+,$80(a6)
		tst.w	$88(a6)
		move.w	(a0),$96(a6)
		rts

InitSpr:	lea.l	CopperList(pc),a0
		move.l	#BlindSpr,d0
		moveq	#8-1,d7
SprLoop1:	swap	d0
		move.w	d0,2(a0)
		swap	d0
		move.w	d0,6(a0)
		addq.l	#8,a0
		dbra	d7,SprLoop1
		move.l	#Pekare,d0
		lea.l	CopperList(pc),a0
		swap	d0
		move.w	d0,2(a0)
		swap	d0
		move.w	d0,6(a0)
		lea	OldX(pc),a0
		move.b	$b(a6),(a0)+
		move.b	$a(a6),(a0)+
		rts

StartCopper:	lea	CopperList(pc),a0
		move.l	a0,$80(a6)
		tst.w	$88(a6)
		move.w	#$85c0,$96(a6)
		rts

MainLoop:	cmp.b	#-1,$6(a6)
		bne.S	MainLoop
W2:		cmp.b	#$38,$6(a6)
		bne.S	W2
		bsr.S	Pointer
		btst	#6,$bfe001
		bne.S	MainLoop
		rts

Pointer:	lea.l	Pekare(pc),a0
		moveq	#0,d0
		moveq	#0,d1
		lea	OldX(pc),a2
		move.b	$b(a6),d0
		move.b	$a(a6),d1
		sub.b	(a2)+,d0
		sub.b	(a2)+,d1
		lea	2(a2),a3
		ext.w	d0
		ext.w	d1
		add.w	d0,(a2)
		add.w	d1,(a3)
		cmp.w	#$125,(a3)
		bmi.S	nn1
		move.w	#$125,(a3)
nn1:		cmp.w	#$2c,(a3)
		bhi.S	nn2
		move.w	#$2c,(a3)
nn2:		cmp.w	#$80,(a2)
		bhi.S	nn3
		move.w	#$80,(a2)
nn3:		cmp.w	#$1b8,(a2)
		bmi.S	nn4
		move.w	#$1b8,(a2)
nn4:		move.w	(a2),d0
		lsr.w	#1,d0
		move.b	d0,1(a0)
		move.w	(a2),d1
		and.w	#$1,d1
		move.w	(a3),d0
		cmp.w	#$100,d0
		blo.S	NoPal
		bset	#2,d1
NoPal:		addq.w	#7,d0
		cmp.w	#$100,d0
		blo.S	NoPal3
		bset	#1,d1
NoPal3:		subq.w	#$7,d0
		move.b	d1,3(a0)
		move.b	d0,(a0)
		add.b	#$7,d0
		move.b	d0,2(a0)
		move.b	$b(a6),-2(a2)
		move.b	$a(a6),-1(a2)
		rts

OldX:		dc.b	0
OldY:		dc.b	0
NewX:		dc.w	0
NewY:		dc.w	0

;------------------------------------------------------------------------

CopperList:	dc.l	$01200000,$01220000,$01240000,$01260000
		dc.l	$01280000,$012a0000,$012c0000,$012e0000
		dc.l	$01300000,$01320000,$01340000,$01360000
		dc.l	$01380000,$013a0000,$013c0000,$013e0000

		dc.l	$008e2c71,$00902cc0,$00920038,$009400d0
		dc.l	$01020000,$01040020,$01080000,$010a0000
		dc.l	$01800000,$01820000
		dc.l	$01a20008,$01a4000c,$01a60fff
		dc.l	$01001000,$00e00000,$00e20000

		dc.l	-2

;------------------------------------------------------------------------

OldCop:		dc.l	0
OldDma:		dc.w	0
BlindSpr:	dc.l	0
GfxName:	dc.b	'graphics.library',0
		even

Pekare:
dc.w	$2c40,$3300
dc.w	%0001000000000000,%0000000000000000
dc.w	%0000000000000000,%0001000000000000
dc.w	%0001000000000000,%0000000000000000
dc.w	%1011101000000000,%0101010000000000
dc.w	%0001000000000000,%0000000000000000
dc.w	%0000000000000000,%0001000000000000
dc.w	%0001000000000000,%0000000000000000
dc.l	0,0,0,0

