
*	Make for EZAsm, A68k, Blink
*	Test for success by Lock() / Examine() on produced file

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



LONG	CLIName CLILen _DosBase OutHandle
LONG	Buf Tbuf
LONG	FIB Cdays Flock Comb



	CLIName = a0
	CLILen = d0	;save 'um

	_DosBase = OpenLibrary( "dos.library" 0 )
	beq	Quit

	FIB = AllocMem( 300 $10001 )
	beq	Quit

	Tbuf = AllocMem( 12 $10001 )	;DateStamp() buffer
	beq	Quit

	Buf = AllocMem( 100 $10001 )	;Execute() buffer
	beq	Quit

	PrintInit( )
	beq	Quit

	OutHandle = Output( )

*   Null name arg

	a0 = CLIName
	CLILen --	;adjust
	a0 += CLILen
	(a0) = 0 b	;$0A -> $00

*   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

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

	strcpy( Buf "ezasm " )
	strcat( Buf CLIName )
	strcat( Buf ".s\n" )

	Execute( Buf 0 OutHandle )	; "ezasm [file].s\n"

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

	strcpy( Buf CLIName )	;get name to Lock() 
	strcat( Buf ".asm" )

	bsr	Check

	strcpy( Buf "a68k " )
	strcat( Buf CLIName )
	strcat( Buf ".asm\n" )

	Execute( Buf 0 OutHandle )	; "a68k [file].asm\n"

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

	strcpy( Buf CLIName )	;get name to Lock() 
	strcat( Buf ".o" )

	bsr Check

	strcpy( Buf "blink FROM " )
	strcat( Buf CLIName )
	strcat( Buf ".o LIBRARY ez.lib TO " )
	strcat( Buf CLIName )
	strcat( Buf "\n" );


*  Blink FROM [file].o LIBRARY ez.lib TO [file]

	Execute( Buf 0 OutHandle )

*  Don't worry if Blink fails..

	jmp	Quit




Check


	Flock = Lock( Buf -2 )  	
	beq	Quit

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

	Examine( Flock 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


Quit
	PrintClose( )

	Flock != 0 {
		UnLock( Flock )
	}

	FIB != 0 {
		FreeMem( FIB 300 )
	}

	Tbuf != 0 {
		FreeMem( Tbuf 12 )
	}

	Buf != 0 {
		FreeMem( Buf 100 )
	}

	_DosBase != 0 {
		CloseLibrary( _DosBase )
	}

	END

