home *** CD-ROM | disk | FTP | other *** search
/ Micro R&D 1 / MicroRD-CD-ROM-Vol1-1994.iso / os20 / util / sslexamp.lha / AsmCheck.asm < prev    next >
Assembly Source File  |  1993-11-06  |  2KB  |  145 lines

  1. ; Assembly Program Checker (also a test of ss.library), (c) 1993 MJSoft
  2.  
  3. ;    opt    x+
  4.  
  5.     include    "ssmac.h"
  6.  
  7.     tbase    a4
  8.     clistart
  9.  
  10.     dbuf    anchor,ap_SIZEOF+256
  11.  
  12.     geta    anchor,a0
  13.     move.w    #$1000,ap_BreakBits+2(a0)
  14.     move.w    #256,ap_Strlen(a0)
  15.     get.l    files,d1
  16.     move.l    a0,d2
  17.     call    dos,MatchFirst
  18.     tst.l    d0
  19.     beq.s    loopit
  20.     sub.l    a0,a0
  21.     jump    ss,DosError
  22.  
  23. loopit    geta    anchor,a0
  24.     tst.l    ap_Info+fib_DirEntryType(a0)
  25.     bmi.s    isfile
  26.     bclr    #APB_DIDDIR,ap_Flags(a0)
  27.     bne    donext
  28.     bset    #APB_DODIR,ap_Flags(a0)
  29.     bra    donext
  30.  
  31. isfile    geta    anchor+ap_Buf,a0
  32.     call    ss,PutsNL
  33.     call    CreateResList
  34.     geta    anchor+ap_Buf,a0
  35.     call    LoadFile
  36.     move.l    d0,a0
  37.     moveq    #0,d7        ; LineCount
  38. scanline    move.l    a0,a2
  39.     addq.l    #1,d7
  40.     call    TestBreak
  41.     move.l    a2,a0
  42. scan1    move.b    (a0)+,d0    ; 1st field
  43.     beq    scanend
  44.     cmp.b    #';',d0
  45.     beq    scanskip
  46.     cmp.b    #10,d0
  47.     beq.s    scanline
  48.     cmp.b    #33,d0
  49.     bcc.s    scan1
  50. scan1a    move.b    (a0)+,d0    ; space between fields
  51.     beq    scanend
  52.     cmp.b    #10,d0
  53.     beq.s    scanline
  54.     cmp.b    #33,d0
  55.     bcs.s    scan1a
  56.     subq.l    #1,a0
  57. scan2    move.b    (a0)+,d0    ; 2nd field
  58.     beq    scanend
  59.     cmp.b    #';',d0
  60.     beq.s    scanskip
  61.     cmp.b    #10,d0
  62.     beq.s    scanline
  63.     cmp.b    #33,d0
  64.     bcc.s    scan2
  65. scan2a    move.b    (a0)+,d0    ; space between fields
  66.     beq    scanend
  67.     cmp.b    #10,d0
  68.     beq.s    scanline
  69.     cmp.b    #33,d0
  70.     bcs.s    scan2a
  71.     subq.l    #1,a0
  72. scan3    move.b    (a0)+,d0    ; 3rd field
  73.     beq    scanend
  74.     cmp.b    #10,d0
  75.     beq.s    scanline
  76.     cmp.b    #'''',d0
  77.     beq.s    scanq
  78.     cmp.b    #'<',d0
  79.     beq.s    scanl
  80.     cmp.b    #';',d0
  81.     beq.s    scanskip
  82.     cmp.b    #33,d0
  83.     bcc.s    scan3
  84. scan3a    move.b    (a0)+,d0
  85.     beq.s    scanend
  86.     cmp.b    #10,d0
  87.     beq    scanline
  88.     cmp.b    #33,d0
  89.     bcs.s    scan3a
  90.     move.b    -1(a0),d0
  91.     cmp.b    #';',d0
  92.     bne.s    scanwarn
  93. scanskip    move.b    (a0)+,d0
  94.     beq.s    scanend
  95.     cmp.b    #10,d0
  96.     bne.s    scanskip
  97.     bra    scanline
  98.  
  99. scanq    move.b    (a0)+,d0
  100.     beq.s    scanend
  101.     cmp.b    #10,d0
  102.     beq    scanline
  103.     cmp.b    #'''',d0
  104.     bne.s    scanq
  105.     bra.s    scan3
  106.  
  107. scanl    move.b    (a0)+,d0
  108.     beq.s    scanend
  109.     cmp.b    #10,d0
  110.     beq    scanline
  111.     cmp.b    #'>',d0
  112.     bne.s    scanl
  113.     bra.s    scan3
  114.  
  115. scanwarn    push    a0
  116.     printfr.l    <Look at line %ld!>,d7
  117.     pop    a0
  118.     bra.s    scanskip
  119.  
  120. scanend    call    FreeResList
  121.  
  122. donext    geta    anchor,a0
  123.     move.l    a0,d1
  124.     call    dos,MatchNext
  125.     tst.l    d0
  126.     beq    loopit
  127.  
  128. ready
  129.     rts
  130.  
  131. cleanup    geta    anchor,a0
  132.     move.l    a0,d1
  133.     call    dos,MatchEnd
  134.     rts
  135.  
  136.     tags
  137.  
  138.     exitrout    cleanup
  139.     template    <FILES/A>
  140.     dv.l    files
  141.  
  142.     finish
  143.  
  144.     end
  145.