	OPT	C-
fd_buffer	equ	190000
sprites		equ	200000
convert		equ	400000

	CLR.L	-(SP)	;TEMPORARY LOADER
	MOVE.W	#$20,-(SP)
	TRAP 	#1
	ADDQ.L	#6,SP
	MOVE.W	#$12,-(SP)
	MOVE.W	#4,-(SP)
	MOVE.W	#3,-(SP)
	TRAP	#13
	ADDQ.L	#6,SP
	MOVE.L	#NAME0,D7
	MOVE.L	#sprites,D6
	MOVE.L	#850,D5
	JSR	READDATA
	lea	sprites,a0
	move.w	#500,d0
rt	cmp.l	#$12345,(a0)
	bne	rj
rg	move.w	#$770,$ff8240
	bra	rg
rj	addq.l	#2,a0
	dbra	d0,rt
self	move.w	#$777,$ff8240
	bra	self
		
readkeys	move.w	#$0b,-(sp)
		trap	#1
		addq.l	#2,sp
		tst.w	d0
		beq	please
		move.w	#8,-(sp)
		trap	#1
		addq.l	#2,sp
		move.b	d0,keycode
please		rts

READDATA
	MOVE.W	#2,-(SP)
	MOVE.L	D7,-(SP)
	MOVE.W	#$3D,-(SP)
	TRAP	#1
	ADDQ.L	#8,SP
	MOVE	D0,FHANDLE
	MOVE.L	D6,-(SP)
	MOVE.L	D5,-(SP)
	MOVE.W	FHANDLE,-(SP)
	move.w	#$3f,-(sp)
	TRAP	#1
	ADD.L	#12,SP
	tst.l	d0
	bmi	disk_error
	MOVE.W	FHANDLE,-(SP)
	MOVE.W	#$3E,-(SP)
	TRAP	#1
	ADDQ.L	#4,SP
	RTS

SAVEDATA
	MOVE.W	#0,-(SP)
	move.l	d7,-(sp)
	MOVE.W	#$3c,-(SP)
	TRAP	#1
	ADDQ.L	#8,SP
	MOVE	D0,FHANDLE
	MOVE.L	D6,-(SP)
	MOVE.L	D5,-(SP)
	MOVE.W	FHANDLE,-(SP)
	move.w	#$40,-(sp)
	TRAP	#1
	ADD.L	#12,SP
	tst.l	d0
	bmi	disk_error
	MOVE.W	FHANDLE,-(SP)
	MOVE.W	#$3E,-(SP)
	TRAP	#1
	ADDQ.L	#4,SP
	RTS

FHANDLE	DC.L	0	
NAME0	DC.B	"7.dat",0
NAME1	DC.B	"sprite1.spr",0
NAME1b	DC.B	"sprite1b.spr",0
NAME2	DC.B	"sprite2.spr",0
NAME4	DC.B	"sprite4.spr",0
NAME5	DC.B	"sprite5.spr",0
NAME6	DC.B	"sprite6.spr",0
NAME7	DC.B	"sprite7.spr",0
NAME8	DC.B	"sprite8.spr",0
NAME9	DC.B	"sprite9.spr",0
NAME10	DC.B	"sprite10.spr",0
NAME11	DC.B	"sprite11.spr",0
NAME12	DC.B	"sprite12.spr",0
NAME13	DC.B	"sprite13.spr",0
NAME14	DC.B	"sprite14.spr",0
NAME15	DC.B	"sprite15.spr",0
NAME16	DC.B	"sprite16.spr",0
NAME17	DC.B	"sprite17.spr",0
NAME18	DC.B	"sprite18.spr",0
NAME19	DC.B	"sprite19.spr",0
NAME20	DC.B	"sprite20.spr",0
NAME21	DC.B	"sprite21.spr",0
NAME22	DC.B	"close1.spr",0
NAME23	DC.B	"close2.spr",0
NAME24	DC.B	"markers.spr",0
SAVE0	dc.b	"SPRITES.GFX",0

NbSect1:   	dc.l   	0
FirstSec:   	dc.l   	0
LongAddr:   	dc.l	0
LongAddr2:   	dc.l	0
diskbuffer	dc.l	0

disk_bitl:      
	movem.l	d0-d7/a0-a4,-(sp)
	move.l	sp,stksv
	move.w  SR,-(a7)      ; save SR
      	btst   	#5,(a7)         ; in Super ???
      	bne.s   bra1         ; just SEI
      	clr.l   -(a7)         ; GO in super
      	move.w  #$20,-(a7)      ; Toggle SuperU
      	trap   	#1         ; go in suprervisor
      	move.l  d0,2(a7)      ; Set restore SStack
      
bra1:	bsr   	Mouse_OFF
      	moveq   #-1,d0
loop2:	dbf   	d0,loop2      ; wait for any pending int.
      	move.w  #$2700,SR      ; SEI
	bsr	doio
	move.l	stksv,sp
	movem.l (sp)+,d0-d7/a0-a4
	rts

;------------------------------------------------

Mouse_OFF:   	
	moveq   #$12,d0
      	bsr.s   WriteKey
      	moveq   #$1a,d0
      	bra.s   WriteKey
Mouse_ON:   
	moveq   #$8,d0
      	bsr.s   WriteKey
      	moveq   #$16,d0
WriteKey:   
	btst   	#1,-$400.w      ; wait for kbd READY
      	beq.s   WriteKey
      	move.b 	d0,-$3fe.w      ; write command
      	rts

;------------------------------------------------
doio 	moveq.l	#8,d0		;drive A, double sided
	move.l	firstsec,d1		;track 0, side 1, sector 1
	move.l	nbsect1,d2		;sectors
	move.w	function,d3	;read, leave motor on
	move.l	diskbuffer,a0
	bsr	diskio		;read
	tst.l	d0
	bne.s	disk_error	branch if error
	move.w	#$040,$ff8240
	rts

disk_error	
error	move.w	#$400,$ff8240
	bra	error

diskio		dc.l $48E778C0,$4E56FFE4,$38000244,$00013D44,$FFE43D41,$FFEA3D42,$FFEE3D43,$FFF82D48
		dc.l $FFF4E698,$02400001,$0A000001,$52003D40,$FFF04240,$E3983D40,$FFF27015,$D441B47C
;		dc.l $06406E00,$009A82FC,$000a0C6E,$0001FFF0,$6702D241,$3D41FFE6,$48415241,$3D41FFE8
		dc.l $06406E00,$009A82FC,$00090C6E,$0001FFF0,$6702D241,$3D41FFE6,$48415241,$3D41FFE8
;		dc.l $61000244,$302EFFE8,$720b9240,$B26EFFEE,$6F04322E,$FFEE3D41,$FFEC6100,$00706634
		dc.l $61000244,$302EFFE8,$720A9240,$B26EFFEE,$6F04322E,$FFEE3D41,$FFEC6100,$00706634
		dc.l $70000C2E,$0002FFF9,$672A302E,$FFEE906E,$FFEC6720,$3D40FFEE,$302EFFEC,$E188D080
		dc.l $D1AEFFF4,$3D7C0001,$FFE8302E,$FFF0D16E,$FFE660B0,$22006726,$02000058,$721CB03C
		dc.l $0050671A,$7219B03C,$00086712,$7218B03C,$0018670A,$7215B03C,$00106702,$72FF6100
		dc.l $02004E5E,$20014CDF,$031E4E75,$6100022E,$363C0002,$600AB03C,$0010660E,$61000192
		dc.l $302EFFE6,$E2486100,$016A206E,$FFF4322E,$FFE8342E,$FFEC6100,$00104A40,$6708B07C
		dc.l $004057CB,$FFD24E75,$4A2EFFF9,$67046000,$009E6100,$011633FC,$009000FF,$860633FC
		dc.l $019000FF,$860633FC,$009000FF,$86067000,$30026100,$0294E188,$D0802248,$D3C033FC
		dc.l $008000FF,$8606303C,$00906100,$027C203C,$00040000,$42AEFFFC,$08390005,$00FFFA01
		dc.l $67265380,$67401D79,$00FF8609,$FFFD1D79,$00FF860B,$FFFE1D79,$00FF860D,$FFFFB3EE
		dc.l $FFFC6ED4,$61000206,$33FC0090,$00FF8606,$303900FF,$86060800,$0000670E,$61000210
		dc.l $02000018,$4E756100,$01E470FF,$4E756100,$007A33FC,$019000FF,$860633FC,$009000FF
		dc.l $860633FC,$019000FF,$86067001,$0C2E0001,$FFF96702,$701F6100,$01F033FC,$018000FF
		dc.l $8606303C,$00A00C2E,$0001FFF9,$6706303C,$00F07401,$610001D2,$203C0004,$00000839
		dc.l $000500FF,$FA01670C,$538066F2,$6100017E,$70FF4E75,$6100018E,$0200005C,$660A41E8
		dc.l $02005201,$53026686,$4E752008,$13C000FF,$860DE088,$13C000FF,$860BE088,$13C000FF
		dc.l $860933FC,$008400FF,$86063001,$6100017A,$4E754A40,$671A33FC,$008600FF,$86066100
		dc.l $0168303C,$00106100,$00F26B02,$70004E75,$70006100,$00E66B0C,$0A000004,$08000002
		dc.l $66027000,$4E753D79,$0000043E,$FFFA50F9,$0000043E,$61000066,$302EFFE4,$D04033FC
		dc.l $008200FF,$860641FA,$01443030,$0000E248,$61000116,$B07C00A0,$6D046100,$FFB44E75
		dc.l $48E7C000,$302EFFE4,$D04041FA,$0120322E,$FFE63181,$00004A6E,$FFF86A0A,$203C000C
		dc.l $35006100,$0102103C,$00076100,$004A33EE,$FFFA0000,$043E4CDF,$00034E75,$3F00302E
		dc.l $FFE40240,$00015200,$D0003F00,$302EFFF0,$B07C0001,$6706302E,$FFF26008,$302EFFE6
		dc.l $02400001,$805F0A00,$00070200,$00076100,$0006301F,$4E7540E7,$007C0700,$13FC000E
		dc.l $00FF8800,$123900FF,$88000201,$00F88200,$13C100FF,$880246DF,$4E75B03C,$00806404
		dc.l $00000003,$33FC0080,$00FF8606,$6100005A,$203C0006,$00000839,$000500FF,$FA01672E
		dc.l $538066F2,$61000006,$70FF4E75,$33FC0080,$00FF8606,$303C00D0,$6100002E,$700F6100
		dc.l $0046600A,$33FC0180,$00FF8606,$600833FC,$008000FF,$86066100,$001A3039,$00FF8604
		dc.l $02800000,$00FF600A,$61000008,$33C000FF,$860440E7,$3F00203C,$00000018,$61000008
		dc.l $301F46DF,$4E755380,$66FC4E75,$FFFFFFFF,$FFFFFFFF
stksv		dc.l	0
function	dc.l	0
keycode		dc.l	0
spritecount	dc.l	0
		end
