From 7e48d85553c78c0b38833c24cc14da8b28b9f9b4 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Sun, 20 Jun 2021 18:29:06 -0400 Subject: [PATCH] Added new command XARGS.S.TXT --- BIN/XARGS.S.TXT | 252 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 252 insertions(+) create mode 100644 BIN/XARGS.S.TXT diff --git a/BIN/XARGS.S.TXT b/BIN/XARGS.S.TXT new file mode 100644 index 00000000..11906460 --- /dev/null +++ b/BIN/XARGS.S.TXT @@ -0,0 +1,252 @@ + .LIST OFF + .OP 65C02 + .OR $2000 + .TF bin/xargs +*-------------------------------------- + .INB inc/macros.i + .INB inc/a2osx.i + .INB inc/kernel.i + .INB inc/mli.i + .INB inc/mli.e.i +*-------------------------------------- + .DUMMY + .OR ZPBIN +ZS.START +ArgIndex .BS 1 +ArgPattern .BS 1 +ZPPtr1 .BS 2 +ZPCommandPtr .BS 2 +ZPBufPtr .BS 2 +ZPCmdBuf .BS 2 +hFile .BS 1 +hBuf .BS 1 +hCmdBuf .BS 1 +DashArgs .BS 1 + +ZS.END .ED +*-------------------------------------- +* File Header (16 Bytes) +*-------------------------------------- +CS.START cld + jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA #0 S.PS.F.EVENT + .DA #0 + .DA CS.END-CS.START Code Size (without Constants) + .DA DS.END-DS.START Data Segment Size + .DA #16 Stack Size + .DA #ZS.END-ZS.START Zero Page Size + .DA 0 +*-------------------------------------- +* Relocation Table +*-------------------------------------- +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT +L.MSG.USAGE .DA MSG.USAGE +L.MSG.CRLF .DA MSG.CRLF +L.CMD.SPC .DA CMD.SPC + .DA 0 +*-------------------------------------- +CS.INIT clc + rts +*-------------------------------------- +CS.RUN jsr CS.RUN.CheckArgs + bcs CS.RUN.LOOP.RTS + +CS.RUN.LOOP >SLEEP + + >PUSHB hFile + >PUSHW ZPBufPtr + >PUSHWI 256 + >SYSCALL FGetS + bcs .9 + +.2 jsr CS.RUN.PRINT + + bcc CS.RUN.LOOP + rts + +.9 cmp #MLI.E.EOF + bne .99 + + lda #0 Exit with no Error + +.99 sec +CS.RUN.LOOP.RTS rts +*-------------------------------------- +CS.RUN.CheckArgs + jsr CS.RUN.NextArg + bcs .4 + + lda (ZPPtr1) + cmp #'-' + beq .1 + + lda ArgPattern + bne .11 + + lda ArgIndex + sta ArgPattern + >LDYA ZPPtr1 + >STYA ZPCommandPtr + bra CS.RUN.CheckArgs + +.11 lda hFile + bne .97 + + >LDYA ZPPtr1 + jsr CS.RUN.OPEN + bcs .9 + + sta hFile + bra CS.RUN.CheckArgs + +.1 ldy #1 + lda (ZPPtr1),y + + ldx #OptionList.Cnt-1 + +.2 cmp OptionList,x + beq .3 + + dex + bpl .2 + + bra .97 + +.3 txa + lsr + beq .98 + + tax + lda #$80 + sta DashArgs-1,x + bra CS.RUN.CheckArgs + +.4 lda hFile + bne .80 + + ldy #S.PS.hStdIn + lda (pPS),y + tax + + lsr + bcs .97 + + lda Nod.Table.hFD-2,x + >SYSCALL GetMemPtr + >STYA ZPPtr1 + lda (ZPPtr1) + cmp #S.FD.T.PIPE + bne .97 + + ldy #S.PS.hStdIn + lda (pPS),y + sta hFile + +.80 >LDYAI 256 + >SYSCALL GetMem + bcs .9 + + >STYA ZPBufPtr + stx hBuf + + >LDYAI 256 + >SYSCALL GetMem + bcs .9 + + >STYA ZPCmdBuf + stx hCmdBuf + +* clc + +.9 rts + +.97 lda #E.SYN + +.98 pha + >PUSHW L.MSG.USAGE + >PUSHBI 0 + >SYSCALL PrintF + pla + sec + rts +*-------------------------------------- +CS.RUN.NextArg inc ArgIndex + lda ArgIndex + >SYSCALL ArgV + bcs .9 + + >STYA ZPPtr1 + +.9 rts +*-------------------------------------- +CS.RUN.OPEN >PUSHYA + >PUSHBI O.RDONLY+O.TEXT + >PUSHBI S.FI.T.TXT + >PUSHWZ Aux type + >SYSCALL FOpen + bcs .9 + + sta hFile + +.9 rts +*-------------------------------------- +CS.RUN.PRINT >PUSHW ZPCmdBuf + >PUSHW ZPCommandPtr + >SYSCALL StrCpy + + >PUSHW ZPCmdBuf + >PUSHW L.CMD.SPC + >SYSCALL StrCat + + >PUSHW ZPCmdBuf + >LDYA ZPBufPtr + >PUSHYA + >SYSCALL StrCat + + >LDYA ZPCmdBuf + >SYSCALL PutS + + >PUSHW ZPCmdBuf + >PUSHBI S.PS.F.HOLD + >SYSCALL ExecL + rts +*-------------------------------------- +CS.QUIT lda hFile + beq .1 + + >SYSCALL FClose + +.1 lda hBuf + beq .8 + >SYSCALL FreeMem + + lda hCmdBuf + beq .8 + >SYSCALL FreeMem + +.8 clc + rts +*-------------------------------------- +CS.DOEVENT sec + rts +*-------------------------------------- +CS.END +*-------------------------------------- +OptionList .AS "Hh" +OptionList.Cnt .EQ *-OptionList +*-------------------------------------- +MSG.USAGE .AS "Usage : XARGS command \r\n" + .AS " or : CMD|XARGS command" +MSG.CRLF .AZ "\r\n" +CMD.SPC .AZ " " +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +DS.END .ED +*--------------------------------------