home *** CD-ROM | disk | FTP | other *** search
-
- ; ***** wbarg.asm *****
-
- ; Jens Gelhar 07.11.92
-
- argsize = 200
-
- sm_NumArgs = 28
- sm_ArgList = 36
-
- fib_filename = 8
-
- UnLock = -90
- DupLock = -96
- Examine = -102
- CurrentDir = -126
- ParentDir = -210
-
- xdef _wbparse
-
- xref main_
- xref _DOSBase
-
- _wbparse: ; Stack-Argument: Zeiger auf Startup-Msg
- move.l 4(a7),a0
- movem.l d2-d7/a2-a6,-(a7)
- move.l a7,a5
-
- move.l a7,a2
- lea -1000(a7),a7
- clr.b -(a2)
-
- move.l a0,d0
- beq.b nix
- btst #0,d0
- bne.b nix
-
- move.l sm_NumArgs(a0),d0
- beq nix
- asl.l #3,d0
- move.l sm_ArgList(a0),a0
- add.l d0,a0
- loop ; Strings puschen:
- move.l -(a0),a1 ; wa_Name
- move.l -(a0),d1 ; wa_Lock
-
- move.b #" ",-(a2)
- move.b #'"',-(a2)
- .1 tst.b (a1)+ ; Stringende suchen
- bne.b .1
- subq.l #1,a1
- .2 cmp.l 4(a0),a1
- bls.b .3
- move.b -(a1),-(a2)
- bra.b .2
- .3
- movem.l d0/a0,-(a7)
- move.l _DOSBase,a6
- jsr DupLock(a6)
- bsr.b FullPath
- movem.l (a7)+,d0/a0
-
- move.b #'"',-(a2)
-
- subq.l #8,d0
- bhi.b loop
-
- done: ; Verzeichnis setzen:
- move.l (a0),d1
- move.l _DOSBase,a6
- jsr CurrentDir(a6)
- nix
- move.l a2,d0 ; Stack sparen...
- and.w #$fffc,d0
- move.l d0,a7
-
- move.l a2,a0
- moveq #-1,d0
- .1 addq.l #1,d0
- tst.b (a2)+
- bne.b .1
-
- call movem.l d0/a0/a5,-(a7)
- jsr main_
- move.l 8(a7),a7
- movem.l (a7)+,d2-d7/a2-a6
- rts
-
- FullPath ; zu Lock d0 (destruktiv)
- move.l d0,d1
- beq.b .0
- move.l d0,-(a7)
- jsr ParentDir(a6)
- move.l d0,-(a7)
-
- tst.l (a7)
- beq.b .dev
- move.b #'/',-(a2)
- bra.b .3
- .dev move.b #":",-(a2)
- .3
- ; Namen feststellen:
- move.l 4(a7),d1
- lea -300(a7),a7
- move.l a7,d2
- addq.l #4,d2
- and.w #$fffc,d2
- move.l d2,-(a7)
- jsr Examine(a6)
- move.l (a7)+,a0
- tst.l d0
- beq.b .ok
-
- lea fib_filename(a0),a0
- move.l a0,a1
- .1 tst.b (a1)+
- bne.b .1
- subq.l #1,a1
- .2 cmp.l a0,a1
- bls.b .ok
- move.b -(a1),-(a2)
- bra.b .2
- .ok
- lea 300(a7),a7
-
- move.l 4(a7),d1
- jsr UnLock(a6)
- move.l (a7)+,d0
- addq.l #4,a7
- bra.b FullPath
- .0 rts
-
- Dummy dc.b 10,0
-
- end
-