
*	Make for EZAsm Version 1.7

*	Test for success by Lock() / Examine() on produced file

*	Support for include path:

*		Mk [-iPathToIncludes] file


*	( Minutes combined with Tics to prevent "wrap around" problems )



CLEAR_PUBLIC	equ	$10001


	ARGS


LONG	Buf Tbuf Nm
LONG	FIB Cdays Flock Comb
LONG	Fhandle Rbuf PtrSave
BYTE	MkSw



	FIB = AllocMem( 260 #CLEAR_PUBLIC )	;FIB buffer
	beq	Quit

	Tbuf = AllocMem( 12 #CLEAR_PUBLIC )	;DateStamp() buffer
	beq	Quit

	Buf = AllocMem( 127 #CLEAR_PUBLIC )	;Execute() buffer
	beq	Quit

*   Get current time

	a0 = DateStamp( Tbuf )

	Cdays = (a0)	;save Days

	d0 = 4(a0)	;D0 = Minutes
	swap	d0	;Minutes to upper 2 bytes
	d0 |= 8(a0)	;combine Minutes with Tics

	Comb = d0	;save for compare

*   Adjust CLI args for an include path..

	strrchr( Args $20 )
	d0 != 0 {
		d0 ++
		Nm = d0
	} else {
		Nm = Args

		sprint( Buf "%s.mak" Nm )

		Fhandle = Open( Buf 1005 )
		beq	Cont

		MkSw = 1

		Rbuf = AllocMem( 1000 #CLEAR_PUBLIC )		
		beq	Quit

		PtrSave = d0

		Read( Fhandle d0 1000 ) 
		bmi	Quit
	}

Cont


	Print( "--------------------\n" * )

	MkSw = 1 {
		bsr	LoadNext
	} else {
		sprint( Buf "ezasm %s.s\n" Nm )
	}

	Execute( Buf 0 OutHandle )

	Print( "--------------------\n" * )

	sprint( Buf "%s.asm" Nm )	;name to Lock()
	bsr	Check

	MkSw = 1 {
		bsr	LoadNext
	} else {
		sprint( Buf "a68k %s.asm\n" Args )
	}

	Execute( Buf 0 OutHandle )

	Print( "--------------------\n" * )

	sprint( Buf "%s.o" Nm )
	bsr Check

	MkSw = 1 {
		bsr	LoadNext
	} else {
		sprint( Buf "blink FROM %s.o LIB ez.lib TO %s\n" Nm Nm )
	}

	Execute( Buf 0 OutHandle )

	jmp	Quit




Check


	Flock = Lock( Buf -2 )  	
	beq	Quit

*   It's here, but is it more recent than current values?

	Examine( d0 FIB )
	beq	Quit

	a0 = FIB
	d0 = 132(a0)		;D0 = Days
	d0 < Cdays  Quit

	d0 = 136(a0)		;D0 = Minutes
	swap	d0
	d0 |= 140(a0)		;combine with Tics

	d0 < Comb Quit

	UnLock( Flock )
	Flock = 0

	rts


*   Locate next line to Execute(), and load into Buf..

LoadNext


	a0 = PtrSave

Again
	isalpha( * ) {
		a0 = PtrSave 
		a1 = Buf

Nxt		(a1)+ = (a0)+ b
		-1(a1) != $0a Nxt

		(a1) = 0 b
		PtrSave = a0	;( byte after $0a )

		rts
	}

	a0 = PtrSave
Inc	(a0)+ = $0a {
		PtrSave = a0
		jmp	Again
	}
	jmp	Inc



Quit

	Fhandle != 0 {
		Close( Fhandle )
	}

	Rbuf != 0 {
		FreeMem( Rbuf 1000 )
	}

	Flock != 0 {
		UnLock( Flock )
	}

	FIB != 0 {
		FreeMem( FIB 260 )
	}

	Tbuf != 0 {
		FreeMem( Tbuf 12 )
	}

	Buf != 0 {
		FreeMem( Buf 127 )
	}


	END

