

;*** NOISETRACKER PACKED MODULE  ***
;*** CLI-COMMAND FOR REPLAY      ***
;*** WRITTEN ON 05/03/91 BY      ***
;*** ANTICHRIST OF UNITED FORCES ***

; This little routine will load the module specified
; in the command line (e.g. packreplay mymodule.pak)
; and replay it.




	SECTION	PACKREPLAY,CODE

start:
	subq.w	#1,d0
	bne.s	.valid
.invalid
	rts
.valid
	clr.b	(a0,d0.w)
	move.l	a0,fileName

	move.l	4.w,a6
	lea	dosName(pc),a1
	jsr	-408(a6) ;OldOpenLibrary
	move.l	d0,dosBase

	move.l	d0,a6
	move.l	filename(pc),d1
	moveq	#-2,d2
	jsr	-84(a6)	;Lock
	tst.l	d0
	beq.s	.invalid
	move.l	d0,fileLock

	move.l	d0,d1
	move.l	#infoBlock,d2
	jsr	-102(a6) ;Examine

	move.l	fileLock(pc),d1
	jsr	-90(a6) ;UnLock

	move.l	infoBlock+124(pc),d0
	move.l	d0,moduleLen

	moveq	#2,d1
	move.l	4.w,a6
	jsr	-198(a6) ;AllocMem
	tst.l	d0
	beq	nomem
	move.l	d0,moduleBuffer

	move.l	fileName(pc),d1
	move.l	#1005,d2
	move.l	dosBase(pc),a6
	jsr	-30(a6) ;Open
	move.l	d0,fileHandle
	tst.l	d0
	beq.s	noFile

	move.l	d0,d1
	move.l	moduleBuffer(pc),d2
	move.l	moduleLen(pc),d3
	jsr	-42(a6) ;Read

	move.l	fileHandle(pc),d1
	jsr	-36(a6) ;Close

	moveq	#0,d0			;Start Position (in PatternList!)
	move.l	moduleBuffer(pc),a0
	cmpi.l	#$4efa0012,(a0)
	bne	noFile
	jsr	(a0)			;jsr mt_init

	lea	vtbstruct(pc),a1
	move.b	#2,8(a1)
	move.b	#0,9(a1)
	move.l	#replayName,10(a1)
	clr.l	14(a1)
	lea	Vblank(pc),a0
	move.l	a0,18(a1)

	moveq	#5,d0
	move.l	4.w,a6
	jsr	-168(a6) ;AddIntServer

wait	btst	#6,$bfe001
	bne.s	wait

	lea	vtbstruct(pc),a1
	moveq	#5,d0
	jsr	-174(a6) ;RemIntServer

	move.l	moduleBuffer(pc),a0		
	jsr	8(a0)			;jsr mt_end

noFile	move.l	moduleBuffer(pc),a1
	move.l	moduleLen(pc),d0
	move.l	4.w,a6
	jsr	-210(a6) ;FreeMem
	clr.l	d0
	rts

nomem	moveq	#103,d0
	rts

VBlank	movem.l	d0-d7/a0-a6,-(sp)
	move.l	moduleBuffer(pc),a0
	jsr	4(a0)			;jsr mt_music
	movem.l	(sp)+,d0-d7/a0-a6
	moveq	#0,d0
	rts
	

fileName	dc.l	0
fileHandle	dc.l	0
fileLock	dc.l	0
moduleBuffer	dc.l	0
moduleLen	dc.l	0
vtbstruct	ds.l	8
dosBase		dc.l	0
replayName	dc.b	"PackReplay 1.3",0
dosName		dc.b	"dos.library",0
	CNOP	0,4
infoBlock	ds.b	260


