home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / develop / ezasm / mk.s < prev    next >
Text File  |  1995-02-27  |  3KB  |  227 lines

  1.  
  2. *    Make for EZAsm Version 1.8
  3.  
  4. *    Support for include path:
  5.  
  6. *        Mk [-iPathToIncludes] [path]file
  7.  
  8.  
  9.  
  10.  
  11. CLEAR_PUBLIC    equ    $10001
  12.  
  13.  
  14.     ARGS
  15.  
  16.  
  17. LONG    Buf Tbuf Nm
  18. LONG    FIB Cdays Flock Flock1 Comb
  19. LONG    Fhandle Rbuf PtrSave WinSv
  20. BYTE    MkSw
  21.  
  22.  
  23.  
  24.     Flock1 = Lock( "ezasm" -2 )
  25.     Flock1 != 0 {    ;CD'd?
  26.  
  27.         a0 = &Path
  28.         (a0) = 0
  29.  
  30.     } else {    ;ASSIGN?
  31.  
  32.         a3 = FindTask( 0 )
  33.  
  34.         WinSv = 184(a3)        ;pr_WindowPtr
  35.         184(a3) = -1 l        ;stop error
  36.  
  37.         Flock1 = Lock( "EZASM:" -2 )        
  38.  
  39.         184(a3) = WinSv        ;restore
  40.  
  41.         Flock1 = 0 Quit
  42.     }
  43.  
  44.     FIB = AllocMem( 260 #CLEAR_PUBLIC )    ;FIB buffer
  45.     beq    Quit
  46.  
  47.     Tbuf = AllocMem( 12 #CLEAR_PUBLIC )    ;DateStamp() buffer
  48.     beq    Quit
  49.  
  50.     Buf = AllocMem( 127 #CLEAR_PUBLIC )    ;Execute() buffer
  51.     beq    Quit
  52.  
  53. *   Get current time
  54.  
  55.     a0 = DateStamp( Tbuf )
  56.  
  57.     Cdays = (a0)    ;ds_Days
  58.  
  59.     d0 = 4(a0)    ;ds_Minute
  60.     swap    d0
  61.     d0 |= 8(a0)    ;ds_Tick
  62.  
  63.     Comb = d0    ;save for compare
  64.  
  65. *   Adjust CLI args for an include path..
  66.  
  67.     Nm = Args
  68.  
  69.     strrchr( Args $20 )    ; -i arg?
  70.     d0 != 0 {
  71.         d0 ++
  72.         Nm = d0
  73.     }
  74.  
  75.     sprint( Buf "%s.mak" Nm )
  76.  
  77.     Fhandle = Open( Buf 1005 )
  78.     beq    Cont
  79.  
  80.     MkSw = 1
  81.  
  82.     Rbuf = AllocMem( 1000 #CLEAR_PUBLIC )        
  83.     beq    Quit
  84.  
  85.     PtrSave = d0
  86.  
  87.     Read( Fhandle d0 1000 ) 
  88.     bmi    Quit
  89.  
  90. Cont
  91.  
  92.  
  93.     print( "--------------------\n" )
  94.  
  95.     MkSw = 1 {
  96.         bsr    LoadNext
  97.     } else {
  98.         sprint( Buf "%sezasm %s.s\n" &Path Nm )
  99.     }
  100.  
  101.     Execute( Buf 0 OutHandle )
  102.  
  103.     print( "--------------------\n" )
  104.  
  105.     sprint( Buf "%s.asm" Nm )    ;name to Lock()
  106.     bsr    Check
  107.  
  108.     MkSw = 1 {
  109.         bsr    LoadNext
  110.     } else {
  111.         sprint( Buf "%sa68k %s.asm\n" &Path Args )
  112.     }
  113.  
  114.     Execute( Buf 0 OutHandle )
  115.  
  116.     print( "--------------------\n" )
  117.  
  118.     sprint( Buf "%s.o" Nm )
  119.     bsr Check
  120.  
  121.     MkSw = 1 {
  122.         bsr    LoadNext
  123.     } else {
  124.         sprint( Buf "%sblink FROM %s.o LIB %sez.lib TO %s\n" &Path Nm &Path Nm )
  125.     }
  126.  
  127.     Execute( Buf 0 OutHandle )
  128.  
  129.     bra    Quit
  130.  
  131.  
  132.  
  133.  
  134. Check
  135.  
  136.  
  137.     Flock = Lock( Buf -2 )      
  138.     beq    Quit
  139.  
  140. *   It's here, but is it more recent than current values?
  141.  
  142.     Examine( d0 FIB )
  143.     beq    Quit
  144.  
  145.     a0 = FIB
  146.     d0 = 132(a0)        ;fib_Date
  147.     d0 < Cdays  Quit
  148.  
  149.     d0 = 136(a0)        ;fib_Date.ds_Minute
  150.     swap    d0
  151.     d0 |= 140(a0)        ;fib_Date.ds_Tick
  152.  
  153.     d0 < Comb Quit
  154.  
  155.     UnLock( Flock )
  156.     Flock = 0
  157.  
  158.     rts
  159.  
  160.  
  161. *   Locate next line to Execute(), load into Buf..
  162.  
  163. LoadNext
  164.  
  165.  
  166.     a0 = PtrSave
  167.  
  168. Again
  169.     isalpha( * ) {
  170.         a0 = PtrSave 
  171.         a1 = Buf
  172.  
  173. Nxt        (a1)+ = (a0)+ b
  174.         -1(a1) != $0a Nxt
  175.  
  176.         (a1) = 0 b
  177.         PtrSave = a0    ;( byte after $0a )
  178.  
  179.         rts
  180.     }
  181.  
  182.     a0 = PtrSave
  183. Inc    (a0)+ = $0a {
  184.         PtrSave = a0
  185.         bra    Again
  186.     }
  187.     bra    Inc
  188.  
  189.  
  190. Quit
  191.  
  192.     Fhandle != 0 {
  193.         Close( Fhandle )
  194.     }
  195.  
  196.     Rbuf != 0 {
  197.         FreeMem( Rbuf 1000 )
  198.     }
  199.  
  200.     Flock1 != 0 {
  201.         UnLock( Flock1 )
  202.     }
  203.  
  204.     Flock != 0 {
  205.         UnLock( Flock )
  206.     }
  207.  
  208.     FIB != 0 {
  209.         FreeMem( FIB 260 )
  210.     }
  211.  
  212.     Tbuf != 0 {
  213.         FreeMem( Tbuf 12 )
  214.     }
  215.  
  216.     Buf != 0 {
  217.         FreeMem( Buf 127 )
  218.     }
  219.  
  220.  
  221.     END
  222.  
  223.  
  224.         ds.w    0
  225. Path    dc.b    "EZASM:",0
  226.  
  227.