home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / MAXONC3_6OF8.DMS / in.adf / LIBSRC.LHA / LIBSRC / wbarg.asm < prev    next >
Encoding:
Assembly Source File  |  1994-04-16  |  1.8 KB  |  136 lines

  1.  
  2. ; ***** wbarg.asm *****
  3.  
  4. ; Jens Gelhar  07.11.92
  5.  
  6. argsize    = 200
  7.  
  8. sm_NumArgs    = 28
  9. sm_ArgList    = 36
  10.  
  11. fib_filename    = 8
  12.  
  13. UnLock        = -90
  14. DupLock        = -96
  15. Examine        = -102
  16. CurrentDir    = -126
  17. ParentDir    = -210
  18.  
  19.     xdef    _wbparse
  20.  
  21.     xref    main_
  22.     xref    _DOSBase
  23.  
  24. _wbparse:    ; Stack-Argument: Zeiger auf Startup-Msg
  25.     move.l    4(a7),a0
  26.     movem.l d2-d7/a2-a6,-(a7)
  27.     move.l    a7,a5
  28.  
  29.     move.l    a7,a2
  30.     lea    -1000(a7),a7
  31.     clr.b    -(a2)
  32.  
  33.     move.l    a0,d0
  34.     beq.b    nix
  35.     btst    #0,d0
  36.     bne.b    nix
  37.  
  38.     move.l    sm_NumArgs(a0),d0
  39.     beq    nix
  40.     asl.l    #3,d0
  41.     move.l    sm_ArgList(a0),a0
  42.     add.l    d0,a0
  43. loop    ; Strings puschen:
  44.     move.l    -(a0),a1    ; wa_Name
  45.     move.l    -(a0),d1    ; wa_Lock
  46.  
  47.     move.b    #" ",-(a2)
  48.     move.b    #'"',-(a2)
  49. .1    tst.b    (a1)+        ; Stringende suchen
  50.     bne.b    .1
  51.     subq.l    #1,a1
  52. .2    cmp.l    4(a0),a1
  53.     bls.b    .3
  54.     move.b    -(a1),-(a2)
  55.     bra.b    .2
  56. .3    
  57.     movem.l    d0/a0,-(a7)
  58.     move.l    _DOSBase,a6
  59.     jsr    DupLock(a6)
  60.     bsr.b    FullPath
  61.     movem.l    (a7)+,d0/a0
  62.  
  63.     move.b    #'"',-(a2)
  64.  
  65.     subq.l    #8,d0
  66.     bhi.b    loop
  67.  
  68. done:    ; Verzeichnis setzen:
  69.     move.l    (a0),d1
  70.     move.l    _DOSBase,a6
  71.     jsr    CurrentDir(a6)
  72. nix
  73.     move.l    a2,d0            ; Stack sparen...
  74.     and.w    #$fffc,d0
  75.     move.l    d0,a7
  76.  
  77.     move.l    a2,a0
  78.     moveq    #-1,d0
  79. .1    addq.l    #1,d0
  80.     tst.b    (a2)+
  81.     bne.b    .1
  82.  
  83. call    movem.l    d0/a0/a5,-(a7)    
  84.     jsr    main_
  85.     move.l    8(a7),a7
  86.     movem.l    (a7)+,d2-d7/a2-a6
  87.     rts
  88.  
  89. FullPath ; zu Lock d0 (destruktiv)
  90.     move.l    d0,d1
  91.     beq.b    .0
  92.     move.l    d0,-(a7)
  93.     jsr    ParentDir(a6)
  94.     move.l    d0,-(a7)
  95.  
  96.     tst.l    (a7)
  97.     beq.b    .dev
  98.     move.b    #'/',-(a2)
  99.     bra.b    .3
  100. .dev    move.b    #":",-(a2)
  101. .3
  102.     ; Namen feststellen:
  103.     move.l    4(a7),d1
  104.     lea    -300(a7),a7
  105.     move.l    a7,d2
  106.     addq.l    #4,d2
  107.     and.w    #$fffc,d2
  108.     move.l    d2,-(a7)
  109.     jsr    Examine(a6)
  110.     move.l    (a7)+,a0
  111.     tst.l    d0
  112.     beq.b    .ok
  113.  
  114.     lea    fib_filename(a0),a0
  115.     move.l    a0,a1
  116. .1    tst.b    (a1)+
  117.     bne.b    .1
  118.     subq.l    #1,a1
  119. .2    cmp.l    a0,a1
  120.     bls.b    .ok
  121.     move.b    -(a1),-(a2)
  122.     bra.b    .2
  123. .ok
  124.     lea    300(a7),a7
  125.  
  126.     move.l    4(a7),d1
  127.     jsr    UnLock(a6)
  128.     move.l    (a7)+,d0
  129.     addq.l    #4,a7
  130.     bra.b    FullPath    
  131. .0    rts
  132.  
  133. Dummy    dc.b    10,0
  134.  
  135.     end
  136.