home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
programs
/
develop
/
ezasm
/
mk.s
< prev
next >
Wrap
Text File
|
1995-02-27
|
3KB
|
227 lines
* Make for EZAsm Version 1.8
* Support for include path:
* Mk [-iPathToIncludes] [path]file
CLEAR_PUBLIC equ $10001
ARGS
LONG Buf Tbuf Nm
LONG FIB Cdays Flock Flock1 Comb
LONG Fhandle Rbuf PtrSave WinSv
BYTE MkSw
Flock1 = Lock( "ezasm" -2 )
Flock1 != 0 { ;CD'd?
a0 = &Path
(a0) = 0
} else { ;ASSIGN?
a3 = FindTask( 0 )
WinSv = 184(a3) ;pr_WindowPtr
184(a3) = -1 l ;stop error
Flock1 = Lock( "EZASM:" -2 )
184(a3) = WinSv ;restore
Flock1 = 0 Quit
}
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) ;ds_Days
d0 = 4(a0) ;ds_Minute
swap d0
d0 |= 8(a0) ;ds_Tick
Comb = d0 ;save for compare
* Adjust CLI args for an include path..
Nm = Args
strrchr( Args $20 ) ; -i arg?
d0 != 0 {
d0 ++
Nm = d0
}
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 "%sezasm %s.s\n" &Path Nm )
}
Execute( Buf 0 OutHandle )
print( "--------------------\n" )
sprint( Buf "%s.asm" Nm ) ;name to Lock()
bsr Check
MkSw = 1 {
bsr LoadNext
} else {
sprint( Buf "%sa68k %s.asm\n" &Path Args )
}
Execute( Buf 0 OutHandle )
print( "--------------------\n" )
sprint( Buf "%s.o" Nm )
bsr Check
MkSw = 1 {
bsr LoadNext
} else {
sprint( Buf "%sblink FROM %s.o LIB %sez.lib TO %s\n" &Path Nm &Path Nm )
}
Execute( Buf 0 OutHandle )
bra 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) ;fib_Date
d0 < Cdays Quit
d0 = 136(a0) ;fib_Date.ds_Minute
swap d0
d0 |= 140(a0) ;fib_Date.ds_Tick
d0 < Comb Quit
UnLock( Flock )
Flock = 0
rts
* Locate next line to Execute(), 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
bra Again
}
bra Inc
Quit
Fhandle != 0 {
Close( Fhandle )
}
Rbuf != 0 {
FreeMem( Rbuf 1000 )
}
Flock1 != 0 {
UnLock( Flock1 )
}
Flock != 0 {
UnLock( Flock )
}
FIB != 0 {
FreeMem( FIB 260 )
}
Tbuf != 0 {
FreeMem( Tbuf 12 )
}
Buf != 0 {
FreeMem( Buf 127 )
}
END
ds.w 0
Path dc.b "EZASM:",0