diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 76c4c30c..d4cc8b03 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -25,13 +25,23 @@ ZPPtr2 .BS 2 ZPFileName .BS 2 ZPFileStat .BS 2 -ZPPW .BS 2 - -bCRLF .BS 1 -hLineBuf .BS 1 ZPLineBuf .BS 2 -ZS.END - .ED +ZPPWBuf .BS 2 + +ArgCount .BS 1 + +ColCount .BS 1 +bPass2 .BS 1 + +bPause .BS 1 +bAllmostAll .BS 1 +bColumn .BS 1 +bFullPath .BS 1 +bLong .BS 1 +bRecurse .BS 1 + + +ZS.END .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -51,7 +61,7 @@ CS.START cld *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN - .DA CS.DOEVENT + .DA CS.DOEVENT .DA CS.QUIT L.MSG.REG .DA MSG.REG L.MSG.REGEXT .DA MSG.REGEXT @@ -78,8 +88,9 @@ J.CS.RUN.PRINT .DA CS.RUN.PRINT.REG CS.INIT clc rts *-------------------------------------- -CS.RUN -.1 >INC.G ArgCount +CS.RUN +.1 inc ArgCount + lda ArgCount >SYSCALL ArgV bcs .6 @@ -90,26 +101,28 @@ CS.RUN ldy #1 lda (ZPPtr1),y - + ldx #OptionVars-OptionList-1 - + .2 cmp OptionList,x beq .3 + dex bpl .2 - + lda #E.SYN sec rts - + .3 ldy OptionVars,x lda #$80 - sta (pData),y + sta $0,y bra .1 .4 >LDYA ZPPtr1 jsr InitSrcDirYA bcc .1 scan for any other args + .9 rts .6 >LDA.G index do we have a Source dir ? @@ -120,39 +133,30 @@ CS.RUN >SYSCALL GetMemPtr jsr InitSrcDirYA bcs .9 - + .8 >PUSHEA.G TIME.SysTime >SYSCALL Time - + >LDYAI S.PW >SYSCALL GetMem bcs .9 - >STYA ZPPW + + >STYA ZPPWBuf txa - >STA.G hPW - + >STA.G hPWBuf + >LDYAI 256 >SYSCALL GetMem bcs .9 + >STYA ZPLineBuf - stx hLineBuf - -* ldy #S.PS.hStdOut -* lda (pPS),y -* tax -* lda OF.Table.hFD-1,x -* >SYSCALL GetMemPtr -* >STYA ZPPtr1 + txa -* lda (ZPPtr1) S.FD.T -* beq CS.RUN.LOOP S.FD.T.REG - -* cmp #S.FD.T.PIPE -* beq CS.RUN.LOOP - - dec bCRLF + >STA.G hLineBuf *-------------------------------------- -CS.RUN.LOOP ldy #S.PS.hStdIn +CS.RUN.LOOP stz bPass2 + +.1 ldy #S.PS.hStdIn lda (pPS),y >SYSCALL FEOF bcs .99 I/O error @@ -162,20 +166,18 @@ CS.RUN.LOOP ldy #S.PS.hStdIn >SYSCALL GetChar cmp #$03 Ctrl-C - bne .1 Abort.... + beq .99 Abort.... - rts CS - -.1 cmp #$13 Ctrl-S + cmp #$13 Ctrl-S bne .2 - >LDA.G bPause + lda bPause eor #$ff - sta (pData),y - bne CS.RUN.LOOP + sta bPause + bne .1 -.2 >LDA.G bPause - bne CS.RUN.LOOP +.2 bit bPause + bmi .1 jsr GetEntry bcs .9 @@ -183,7 +185,7 @@ CS.RUN.LOOP ldy #S.PS.hStdIn jsr FilterMatch bcs .8 no match, skip.... - >LDA.G bAllmostAll + bit bAllmostAll bmi .4 lda (ZPFileName) @@ -202,11 +204,18 @@ CS.RUN.LOOP ldy #S.PS.hStdIn bcs .99 .8 jsr GetNextEntry + bcc .1 - bcc .92 + bit bPass2 + bmi .9 -.9 ldy #bLong - lda (pData),y + jsr ResetSrcDir + bcs .99 + + dec bPass2 + bra .1 + +.9 bit bLong bmi .91 jsr CS.RUN.NewLine @@ -216,8 +225,13 @@ CS.RUN.LOOP ldy #S.PS.hStdIn bcs .98 jsr BasePath.. + + jsr CS.RUN.ENTER.MSG + bcs .99 + jsr GetNextEntry -.92 jmp CS.RUN.LOOP + jmp CS.RUN.LOOP + .98 lda #0 sec .99 rts @@ -226,18 +240,20 @@ CS.RUN.PRINT.JMP jmp (J.CS.RUN.PRINT,x) *-------------------------------------- CS.RUN.PRINT.REG - ldy #bLong - lda (pData),y - bmi .1 + bit bPass2 + bpl .8 - >LDA.G bColumn + bit bLong + bmi .1 + + bit bColumn bmi .23 - >LDA.G bFullPath + bit bFullPath bpl .22 - + jsr CS.RUN.PRINT.SRCPATH - + .23 >LDYA ZPFileName >SYSCALL PutS rts @@ -247,12 +263,14 @@ CS.RUN.PRINT.REG >PUSHBI 2 >SYSCALL PrintF bcs .9 - jmp CS.RUN.UpdateColCnt + + jmp CS.RUN.UpdateColCnt + +.8 clc +.9 rts *-------------------------------------- -.1 -* >PUSHW ZPLineBuf - >PUSHW L.MSG.REGEXT - +.1 >PUSHW L.MSG.REGEXT + jsr Mod2CSTR (2) jsr CS.RUN.PushUidGid (4) @@ -285,18 +303,20 @@ CS.RUN.PRINT.REG >PUSHBI 20 >SYSCALL PrintF bcs .9 - + jmp CS.RUN.NewLine.1 - -.9 rts *-------------------------------------- CS.RUN.PRINT.DIR - >LDA.G bLong + bit bPass2 + bmi .8 + + bit bLong bmi .4 - >LDA.G bColumn + bit bColumn bmi .23 - >LDA.G bFullPath + + bit bFullPath bpl .22 jsr CS.RUN.PRINT.SRCPATH @@ -304,13 +324,17 @@ CS.RUN.PRINT.DIR .23 >LDYA ZPFileName >SYSCALL PutS bcs .9 - >LDA.G bRecurse + + bit bRecurse bpl .8 + lda (ZPFileName) cmp #'.' beq .8 + >LDYA ZPFileName - jmp EnterSubDirYA + jmp EnterSubDirYA + .8 clc .9 rts @@ -342,29 +366,33 @@ CS.RUN.PRINT.DIR rts *-------------------------------------- .4 >PUSHW L.MSG.DIREXT - + jsr Mod2CSTR - + jsr CS.RUN.PushUidGid jsr CS.RUN.PUSHDATES >PUSHW ZPFileName >PUSHBI 12 >SYSCALL PrintF bcs .90 - + jsr CS.RUN.NewLine.1 bcs .90 - -.5 >LDA.G bRecurse + +.5 bit bRecurse bpl .80 + lda (ZPFileName) cmp #'.' beq .80 + jsr CS.RUN.NewLine bcs .90 + >LDYA ZPFileName jsr EnterSubDirYA bcs .90 + jmp CS.RUN.ENTER.MSG .80 clc @@ -375,12 +403,13 @@ CS.RUN.PRINT.CDEV rts *-------------------------------------- CS.RUN.PRINT.BDEV - >LDA.G bLong + bit bLong bmi .20 - >LDA.G bColumn + bit bColumn bmi .23 - >LDA.G bFullPath + + bit bFullPath bpl .22 jsr CS.RUN.PRINT.SRCPATH @@ -388,16 +417,19 @@ CS.RUN.PRINT.BDEV .23 >LDYA ZPFileName >SYSCALL PutS bcs .9 - >LDA.G bRecurse + + bit bRecurse bpl .8 + lda (ZPFileName) cmp #'.' beq .8 + >LDYA ZPFileName jmp EnterSubDirYA .8 clc -.9 rts +.9 rts .22 >PUSHW L.MSG.BDEV >PUSHW ZPFileName @@ -420,6 +452,7 @@ CS.RUN.PRINT.BDEV >SYSCALL PutChar ply bcc .11 + rts .2 jsr CS.RUN.UpdateColCnt @@ -428,7 +461,7 @@ CS.RUN.PRINT.BDEV *-------------------------------------- .20 >PUSHW L.MSG.BDEVEXT >PUSHW ZPFileName - + ldy #S.STAT.P.SLOT >PUSHB (ZPFileStat),y iny DRIVE @@ -443,22 +476,24 @@ CS.RUN.PRINT.BDEV >PUSHB (ZPFileStat),y dey >PUSHB (ZPFileStat),y - + >PUSHBI 8 >SYSCALL PrintF bcs .90 - + jsr CS.RUN.NewLine.1 bcs .90 - ldy #bRecurse - lda (pData),y + bit bRecurse bpl .80 + >LDYA ZPFileName jsr EnterSubDirYA bcs .90 + jmp CS.RUN.ENTER.MSG + .80 clc .90 rts *-------------------------------------- @@ -475,17 +510,17 @@ CS.RUN.PushUidGid ldy #S.STAT.UID lda (ZPFileStat),y >PUSHA - >PUSHW ZPPW + >PUSHW ZPPWBuf >SYSCALL GetPWUID bcs .2 >PUSHEA.G USER jsr CS.RUN.PushUidGidStr bra .3 - + .2 >PUSHEA.G USER >PUSHW L.FMT.int16 - + ldy #S.STAT.UID+1 lda (ZPFileStat),y >PUSHA @@ -498,18 +533,18 @@ CS.RUN.PushUidGid .3 ldy #S.STAT.GID lda (ZPFileStat),y >PUSHA - >PUSHW ZPPW + >PUSHW ZPPWBuf >SYSCALL GetGRGID bcs .5 - + >PUSHEA.G GROUP jsr CS.RUN.PushUidGidStr - + bra .8 - + .5 >PUSHEA.G GROUP >PUSHW L.FMT.int16 - + ldy #S.STAT.GID+1 lda (ZPFileStat),y >PUSHA @@ -518,15 +553,15 @@ CS.RUN.PushUidGid >PUSHA >PUSHBI 2 >SYSCALL SPrintF - + .8 >PUSHEA.G USER >PUSHEA.G GROUP clc rts - + CS.RUN.PushUidGidStr >PUSHW L.FMT.string6 - >PUSHW ZPPW + >PUSHW ZPPWBuf >PUSHBI 2 >SYSCALL SPrintF rts @@ -534,16 +569,16 @@ CS.RUN.PushUidGidStr CS.RUN.PUSHDATES ldy #TIME.Mod-1 Set NODATE as default jsr CS.RUN.NODATES.INIT - + ldy #TIME.Create-1 Set NODATE as default jsr CS.RUN.NODATES.INIT - + ldy #S.STAT.MTIME+S.TIME.MONTH lda (ZPFileStat),y beq .1 Month=0.....invalid date/time >PUSHEA.G TIME.Mod - + lda ZPFileStat clc adc #S.STAT.MTIME @@ -558,7 +593,7 @@ CS.RUN.PUSHDATES beq .2 Month=0.....invalid date/time >PUSHEA.G TIME.Create - + lda ZPFileStat clc adc #S.STAT.CTIME @@ -580,7 +615,7 @@ CS.RUN.NODATES.INIT lda MSG.NODATE,x sta (pData),y bne .1 - + rts *-------------------------------------- CS.RUN.DATEFMT.SELECT @@ -609,20 +644,21 @@ CS.RUN.DATEFMT.SELECT ldy #TIME.SysTime+S.TIME.DAY cmp (pData),y bne .9 - + .8 >PUSHW L.FMT.Time >PUSHW ZPPtr1 rts - + .9 >PUSHW L.FMT.Date >PUSHW ZPPtr1 rts *-------------------------------------- CS.RUN.UpdateColCnt - >INC.G ColCount + inc ColCount + lda ColCount cmp #MAX.COL bne CS.RUN.NewLine.8 - + lda #0 sta (pData),y bra CS.RUN.NewLine.1 @@ -634,20 +670,17 @@ CS.RUN.ENTER.MSG >SYSCALL GetMemPtr >PUSHYA >PUSHBI 2 - + >SYSCALL PrintF bcc CS.RUN.NewLine.1 rts *-------------------------------------- -CS.RUN.NewLine >LDA.G ColCount +CS.RUN.NewLine lda ColCount beq CS.RUN.NewLine.8 CS.RUN.NewLine.1 lda #C.CR >SYSCALL PutChar - -* bit bCRLF -* bpl CS.RUN.NewLine.8 - + lda #C.LF >SYSCALL PutChar @@ -660,54 +693,63 @@ CS.DOEVENT sec *-------------------------------------- CS.QUIT jsr LeaveSubDir bcc CS.QUIT - >LDA.G hFilter - beq .3 - >SYSCALL FreeMem + ldy #hFilter + jsr .7 -.3 >LDA.G hPW - beq .4 - - >SYSCALL FreeMem - -.4 lda hLineBuf + ldy #hPWBuf + jsr .7 + + ldy #hLineBuf + +.7 lda (pData),y beq .8 - + >SYSCALL FreeMem - + .8 clc rts *-------------------------------------- FileType2PSTR ldy #0 + .1 cmp PRODOS.FT.HEX,y beq .8 + iny cpy #PRODOS.FT.TXT-PRODOS.FT.HEX bne .1 + pha lsr lsr lsr lsr ora #$30 - cmp #$3A + cmp #'9'+1 bcc .2 + adc #6 -.2 sta PRODOS.FT.DFLT+2 + +.2 sta PRODOS.FT.DFLT+1 pla and #$0F ora #$30 - cmp #$3A + cmp #'9'+1 bcc .3 + adc #6 -.3 sta PRODOS.FT.DFLT+3 + +.3 sta PRODOS.FT.DFLT+2 + .8 tya asl asl CC adc L.PRODOS.FT.TXT tay + lda L.PRODOS.FT.TXT+1 adc #0 + rts *-------------------------------------- Mod2CSTR ldy #S.STAT.MODE+1 @@ -733,15 +775,15 @@ Mod2CSTR ldy #S.STAT.MODE+1 .1 pha lda #'-' bcc .2 - + lda ACCESS,x .2 sta (pData),y - + iny pla asl - + dex bpl .1 @@ -755,7 +797,7 @@ CS.END OptionList .AS "ACFLRacflr" OptionVars .DA #bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse,#bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse *-------------------------------------- -MSG.REGEXT .AZ "%s %6s %6s %10u %s %s %S %H %s" +MSG.REGEXT .AZ "%s %6s %6s %10u %s %s %s %H %s" MSG.REG .AZ "%19s" MSG.DIREXT .AZ "%s %6s %6s %s %s