
	BRA	TOPBIT

PROGRAM	EQU	$06000
CHRLEN	EQU	85200
SPRLEN	EQU	63840
CUSTOM	EQU	$DFF000
BPLCON0	EQU	$100
BPLCON1	EQU	$102
BPL1MOD	EQU	$108
DDFSTRT	EQU	$092
DDFSTOP	EQU	$094
DIWSTRT	EQU	$08E
DIWSTOP	EQU	$090
VPOSR	EQU	$004
COLOURS	EQU	$180
DMACON	EQU	$096
COP1LCH	EQU	$080
COPJMP1	EQU	$088
INTENA	EQU	$09A				INTERRUPT ENABLE MASK
INTREQ	EQU	$09C

* it uses the DOS and EXEC libraries
	incdir	"df1:include/"		where to look
	include	exec/exec_lib.i		I want to call EXEC
	include exec/memory.i
	include	libraries/dos_lib.i	and DOS
	include	libraries/dos.i

* start by opening the DOS library
TOPBIT	LEA	dosname,A1
	MOVEQ	#0,d0			any version
	CALLEXEC OpenLibrary
	move.l	d0,_DOSBase		save pointer
	MOVE.L	#SPRLEN+CHRLEN+32044+32768+1000,D0
	MOVE.L	#MEMF_CHIP,D1
	CALLEXEC AllocMem
	LEA	MEMORY,A0
	ADD.L	#10,D0
	BCLR	#0,D0			WORD ALIGNED
	MOVE.L	D0,(A0)			SAVE MEMORY POINTER
	LEA	MEMORY,A0
	MOVE.L	(A0),A1
	LEA	FILE0,A0
	MOVE.L	#32768,D0
	BSR	DLOAD
	LEA	MEMORY,A0
	MOVE.L	(A0),A1
	ADD.L	#32768,A1
	LEA	FILE1,A0
	MOVE.L	#32044,D0
	BSR	DLOAD
	LEA	MEMORY,A0
	MOVE.L	(A0),A1
	ADD.L	#32044+32768,A1		OFFSET TO START OF CHRS
	LEA	FILE2,A0
	MOVE.L	#CHRLEN,D0
	BSR	DLOAD
	LEA	MEMORY,A0
	MOVE.L	(A0),A1
	ADD.L	#32044+CHRLEN+32768,A1
	LEA	FILE3,A0
	MOVE.L	#SPRLEN,D0
	BSR	DLOAD
	MOVE	#4000,D0
	BSR	DELAY			GET DRIVE OFF
*	CALLEXEC SuperState		into supervisory
	LEA	CUSTOM,A0
	MOVE	#$4000,INTENA(A0)	ALL INTERRUPTS OFF
	MOVE	#$7FFF,DMACON(A0)	ALL DMA OFF
	LEA	MEMORY,A0
	MOVE.L	(A0),A0
FINDP	CMPI	#$43F9,(A0)
	BEQ	FOUND
	ADDQ.L	#2,A0
	BRA	FINDP
FOUND	LEA	PROGRAM,A1
	MOVE	#16383,D0		PROGRAM LENGTH/2
RELOC1	MOVE	(A0)+,(A1)+		TO BEGINING OF MEMORY
	DBRA	D0,RELOC1
	LEA	MEMORY,A0
	MOVE.L	(A0),A0			A0 HOLDS ADDRESS OF DATA
	LEA	PROGRAM,A6
	JMP	(A6)			JUMP TO START

* open a file, A0 FILE NAME, A1 START ADDRESS, D0 - LENGTH
	EVEN
FILEL	DC.L	0
LENGTH	DC.L	0
HANDLE	DC.L	0
DLOAD	LEA	FILEL,A6
	MOVE.L	A1,(A6)
	MOVE.L	D0,4(A6)
	MOVE.L	A0,D1
	MOVE.L	#MODE_OLDFILE,D2	file just loading
	CALLDOS	Open
	LEA	HANDLE,A0
	MOVE.L	D0,(A0)			SAVE FILE HANDLE
	MOVE.L	D0,D1
	LEA	FILEL,A0
	MOVE.L	(A0),D2			START ADDRESS
	MOVE.L	4(A0),D3		AND LENGTH
	CALLDOS	Read
	LEA	HANDLE,A0
	MOVE.L	(A0),D1
	CALLDOS	Close
	RTS

DELAY	MOVE	#799,D1
DEL1	DBRA	D1,DEL1
	DBRA	D0,DELAY
	RTS

dosname	DOSNAME				defines dos name

_DOSBase	DC.L	0		space for pointer
MEMORY	DC.L	0
FILE0	DC.B	"DF1:GAME",0
FILE1	DC.B	"DF1:MAINR.PI1",0
FILE2	DC.B	"DF1:ROLLING.DTA",0
FILE3	DC.B	"DF1:SPRITES.DTA",0
