From f162bd0bbeb91824d5a6747019368cf74bea2322 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sat, 7 Dec 2019 14:20:04 +0100 Subject: [PATCH] Kernel 0.93+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/WC.S.txt | 227 +++++++++++++++++++++++++++++++-------- 2 files changed, 184 insertions(+), 43 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 1051aea7a33d2fa9c763b05d7378e3c3acc1a8fe..7e7e92b79772d5eafeb5cb8ac05740c9fb2cb736 100644 GIT binary patch delta 8868 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 delta 7343 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.G ArgIndex >SYSCALL ArgV - bcs .8 + bcs .5 >STYA ZPPtr1 lda (ZPPtr1) cmp #'-' bne .4 jsr CS.RUN.CheckOpt bcc CS.RUN + .9 >PUSHBI 0 >LDYA L.MSG.USAGE >SYSCALL printf lda #E.SYN sec -.99 rts + rts *-------------------------------------- .4 >LDA.G hSrcBasePath bne .9 >LDYA ZPPtr1 jsr InitSrcDirYA bcc CS.RUN - rts -.8 >LDA.G hSrcBasePath - beq .9 - >LDYAI 256 +.99 rts + +.5 >LDA.G hSrcBasePath + bne .6 + + ldy #S.PS.hStdIn + lda (pPS),y + tax + lda OF.Table.hFD-1,x + >SYSCALL GetMemPtr + >STYA ZPPtr1 + lda (ZPPtr1) + cmp #S.FD.T.PIPE + bne .9 + + jmp CS.RUN.PIPE + +.6 >LDYAI 256 >SYSCALL getmem bcs .99 >STYA ZPFullPath @@ -101,10 +121,13 @@ CS.RUN >INC.G ArgIndex >LDA.G hSrcBasePath >SYSCALL GetMemPtr >STYA ZPPtr1 + ldy #$ff + .80 iny lda (ZPPtr1),y bne .80 + tya clc adc ZPFullPath @@ -166,11 +189,31 @@ CS.RUN.LOOP ldy #S.PS.hStdIn jsr BasePath.. .8 jsr GetNextEntry jmp CS.RUN.LOOP + .90 jsr CS.RUN.PrintTstat lda #0 sec .99 rts *-------------------------------------- +CS.RUN.PIPE >LDYAI 256 + >SYSCALL getmem + bcs .99 + >STYA ZPLineBuf + txa + >STA.G hMem + + ldy #S.PS.hStdIn + lda (pPS),y + + >STA.G hFile + + jsr CS.RUN.FILE.LOOP + jsr CS.RUN.PrintFstat + + lda #0 + sec +.99 rts +*-------------------------------------- CS.RUN.DIR lda bRecurse bpl .8 lda (ZPFileName) @@ -184,54 +227,37 @@ CS.RUN.DIR lda bRecurse *-------------------------------------- CS.RUN.DEV .8 jsr GetNextEntry + +CS.RUN.DEV.CLC.RTS clc -.9 rts + rts *-------------------------------------- CS.RUN.FILE jsr FilterMatch - bcs .8 no match, skip.... + bcs CS.RUN.DEV.CLC.RTS no match, skip.... jsr CS.RUN.GetFilePath + jsr CS.RUN.OpenFile bcs .9 -.1 >PUSHWI 256 - >PUSHW ZPLineBuf - >LDA.G hFile - >SYSCALL fgets - bcs .6 - jsr CS.RUN.IncFLine - ldy #$ff - stz bInWord -.2 iny - lda (ZPLineBuf),y - beq .1 - - cmp #C.SPACE - beq .3 - cmp #C.TAB - bne .4 -.3 lda bInWord - beq .5 - - jsr CS.RUN.IncFWord - stz bInWord - bra .5 -.4 inc bInWord -.5 jsr CS.RUN.IncFChar - bra .2 -.6 cmp #MLI.E.EOF - bne .7 + jsr CS.RUN.FILE.LOOP + bcs .7 + jsr CS.RUN.CloseFile jsr CS.RUN.PrintFstat bcs .99 + jsr CS.RUN.AddFstat2Tstat lda bTotal bmi .8 beq .61 + lda #$fe + .61 inc sta bTotal + .8 clc rts @@ -242,6 +268,52 @@ CS.RUN.FILE jsr FilterMatch .9 jmp CS.RUN.CheckErr .99 rts *-------------------------------------- +CS.RUN.FILE.LOOP +.1 >PUSHWI 256 + >PUSHW ZPLineBuf + >LDA.G hFile + >SYSCALL fgets + bcs .8 + + jsr CS.RUN.IncFLine + ldy #$ff + stz bInWord + +.2 iny + lda (ZPLineBuf),y + bne .21 + + lda bInWord + beq .1 + + jsr CS.RUN.IncFWord + bra .1 + +.21 cmp #C.SPACE + beq .3 + cmp #C.TAB + bne .4 + +.3 lda bInWord + beq .5 + + jsr CS.RUN.IncFWord + stz bInWord + bra .5 + +.4 inc bInWord + +.5 jsr CS.RUN.IncFChar + bra .2 + +.8 cmp #MLI.E.EOF + bne .9 + clc + rts + +.9 sec + rts +*-------------------------------------- CS.RUN.CheckErr bcc .9 pha >PUSHA @@ -329,24 +401,89 @@ CS.RUN.AddFstat2Tstat *-------------------------------------- CS.RUN.PrintFstat >PUSHW ZPRelPath + ldx #0 + + bit bWord + bpl .1 + >PUSHL.G fWordCount + inx + +.1 bit bLine + bpl .2 + + >PUSHL.G fLineCount + inx + +.2 bit bChar + bpl .3 + + >PUSHL.G fCharCount + inx + +.3 txa + beq .4 + + asl + tax + asl +* clc + adc #2 + >PUSHA + >LDYA L.MSG.FILE1-2,x + >SYSCALL printf + rts + +.4 >PUSHL.G fWordCount >PUSHL.G fLineCount >PUSHL.G fCharCount >PUSHBI 14 - >LDYA L.MSG.FILE + >LDYA L.MSG.FILE3 >SYSCALL printf rts *-------------------------------------- CS.RUN.PrintTstat lda bTotal bpl .8 + + ldx #0 + + bit bWord + bpl .1 + >PUSHL.G tWordCount + inx + +.1 bit bLine + bpl .2 + + >PUSHL.G tLineCount + inx + +.2 bit bChar + bpl .3 + + >PUSHL.G tCharCount + inx + +.3 txa + beq .4 + + asl + tax + asl + >PUSHA + >LDYA L.MSG.TOTAL1-2,x + >SYSCALL printf +.8 rts + +.4 >PUSHL.G tWordCount >PUSHL.G tLineCount >PUSHL.G tCharCount >PUSHBI 12 - >LDYA L.MSG.TOTAL + >LDYA L.MSG.TOTAL3 >SYSCALL printf -.8 rts + rts *-------------------------------------- CS.DOEVENT sec rts @@ -398,8 +535,12 @@ MSG.USAGE .AS "Usage : WC File(s) (*,? wildcards allowed)\r\n" .AS " -L : Print the LINE counts\r\n" .AZ " -W : Print the WORD counts\r\n" MSG.ERR .AZ "[%h]\r\n" -MSG.FILE .AZ "%10L %10L %10L %s\r\n" -MSG.TOTAL .AZ "%10L %10L %10L\r\n" +MSG.FILE3 .AS "%10L " +MSG.FILE2 .AS "%10L " +MSG.FILE1 .AZ "%10L %s\r\n" +MSG.TOTAL3 .AS "%10L " +MSG.TOTAL2 .AS "%10L " +MSG.TOTAL1 .AZ "%10L (total)\r\n" *-------------------------------------- .DUMMY .OR 0