diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 37653693..db70e6d7 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/ETCONFIG.S.txt b/BIN/ETCONFIG.S.txt index d06298ab..0d0708dd 100644 --- a/BIN/ETCONFIG.S.txt +++ b/BIN/ETCONFIG.S.txt @@ -75,7 +75,6 @@ L.HOSTNAME .DA HOSTNAME L.CFG.DefaultHost .DA CFG.DefaultHost L.ETKCFG .DA ETKCFG L.ETKCFG.OBJECT .DA ETKCFG+S.ETKCFG.OBJECT -L.IOCTL .DA IOCTL *-------------------------------------- L.MSG.PROBE .DA MSG.PROBE L.MSG.PROBE.KO .DA MSG.PROBE.KO @@ -129,20 +128,16 @@ CS.RUN.SETUP lda ETKCFG+S.NETCFG.STATUS CS.RUN.SETUP.RTS rts *-------------------------------------- -CS.RUN.DUMP >PUSHB ETKCFG+S.NETCFG.DevID - >PUSHEA.G DIB - >SYSCALL GetDevStatus - bcs CS.RUN.SETUP.RTS +CS.RUN.DUMP >LEA.G DCB.NIC - >LEA.G DCB.NIC - >STYA IOCTL+S.IOCTL.BUFPTR - lda #S.IOCTL.S.GETDCB - sta IOCTL+S.IOCTL.S + ldx #S.IOCTL.S.GETDCB + jsr CS.RUN.IOCTL + bcs CS.RUN.SETUP.RTS - >PUSHB ETKCFG+S.NETCFG.DevID - >PUSHBI IOCTL.STATUS - >PUSHW L.IOCTL - >SYSCALL IOCTL + >LEA.G DIB + + ldx #S.IOCTL.S.GETDIB + jsr CS.RUN.IOCTL bcs CS.RUN.SETUP.RTS CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV @@ -150,14 +145,15 @@ CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV lda ETKCFG+S.NETCFG.DevID >PUSHA - ldx ETKCFG+S.NETCFG.DevID - lda Dev.Table-1,x + >SYSCALL GetMemPtr + + pha + tya clc adc #S.FD.DEV tay - lda Dev.Table,x + pla adc /S.FD.DEV - >PUSHYA >PUSHEA.G DIB+S.DIB.IDS @@ -299,14 +295,13 @@ CS.RUN.PROBE >LDYA L.MSG.PROBE sta ProbeCnt .3 >LDYA L.AARP.PRB - >STYA IOCTL+S.IOCTL.BUFPTR + >STYA.G DEV.IOCTL+S.IOCTL.BUFPTR >LDYAI AARP.PRB.LEN - >STYA IOCTL+S.IOCTL.BYTECNT + >STYA.G DEV.IOCTL+S.IOCTL.BYTECNT >PUSHB ETKCFG+S.NETCFG.DevID - >PUSHBI IOCTL.WRITE - >PUSHW L.IOCTL - >SYSCALL IOCTL + lda #IOCTL.WRITE + jsr CS.RUN.IOCTL.A >SLEEP dec ProbeCnt @@ -330,14 +325,13 @@ CS.RUN.PROBE >LDYA L.MSG.PROBE *-------------------------------------- CS.RUN.GETNETINFO >LDYA L.DDP.GetNetInfo - >STYA IOCTL+S.IOCTL.BUFPTR + >STYA.G DEV.IOCTL+S.IOCTL.BUFPTR >LDYAI DDP.GetNetInfo.LEN - >STYA IOCTL+S.IOCTL.BYTECNT + >STYA.G DEV.IOCTL+S.IOCTL.BYTECNT >PUSHW ETKCFG+S.NETCFG.DevID - >PUSHBI IOCTL.WRITE - >PUSHW L.IOCTL - >SYSCALL IOCTL + lda #IOCTL.WRITE + jsr CS.RUN.IOCTL.A lda #TIMEOUT.MAX sta TimeOut @@ -348,9 +342,8 @@ CS.RUN.GETNETINFO beq .9 >PUSHW ETKCFG+S.NETCFG.DevID - >PUSHBI IOCTL.READ - >PUSHW L.IOCTL - >SYSCALL IOCTL + lda #IOCTL.READ + jsr CS.RUN.IOCTL.A bcs .1 sta hFrame @@ -367,12 +360,25 @@ CS.RUN.GETNETINFO rts .9 sec -CS.RUN.GETNETINFO.RTS + rts +*-------------------------------------- +CS.RUN.IOCTL >STYA.G DEV.IOCTL+S.IOCTL.BUFPTR + + txa + >STA.G DEV.IOCTL+S.IOCTL.S + + >PUSHB ETKCFG+S.NETCFG.DevID + lda #IOCTL.STATUS + +CS.RUN.IOCTL.A >PUSHA + + >PUSHEA.G DEV.IOCTL + >SYSCALL IOCTL rts *-------------------------------------- CFG.EtcFiles >LDYAI 256 >SYSCALL GetMem - bcs CS.RUN.GETNETINFO.RTS + bcs .9 >STYA BufPtr stx CFG.hBuf1 @@ -381,7 +387,7 @@ CFG.EtcFiles >LDYAI 256 jsr CFG.Read.HOSTNAME lda ETKCFG+S.ETKCFG.OBJECT - bne .4 + bne .2 >LDYA L.ETKCFG.OBJECT iny @@ -397,9 +403,10 @@ CFG.EtcFiles >LDYAI 256 lda #10 sta ETKCFG+S.ETKCFG.OBJECT -.4 lda CFG.hBuf1 +.2 lda CFG.hBuf1 >SYSCALL FreeMem - rts + +.9 rts *-------------------------------------- CFG.Read.PrintF pha >PUSHW L.MSG.CFG @@ -592,13 +599,12 @@ DDP.GetNetInfo.DDP DDP.GetNetInfo.DEND .EQ * .BS DDP.GetNetInfo+60-* DDP.GetNetInfo.LEN .EQ 60 -*-------------------------------------- -IOCTL .BS S.IOCTL *-------------------------------------- .DUMMY .OR 0 DS.START DIB .BS S.DIB +DEV.IOCTL .BS S.IOCTL DCB.NIC .BS S.DCB.NIC DS.END .ED *-------------------------------------- diff --git a/BIN/FORMAT.S.txt b/BIN/FORMAT.S.txt index 56618780..98beaf59 100644 --- a/BIN/FORMAT.S.txt +++ b/BIN/FORMAT.S.txt @@ -171,7 +171,7 @@ CS.RUN ldy #S.PS.ARGC .8 lda hDevID beq .99 *-------------------------------------- -CS.RUN.Format jsr CS.RUN.GetDevStatus +CS.RUN.Format jsr CS.RUN.GetDevDIB bcs .99 >PUSHW L.MSG.INIT @@ -223,14 +223,20 @@ CS.RUN.Format jsr CS.RUN.GetDevStatus sec rts *-------------------------------------- -CS.RUN.GetDevStatus +CS.RUN.GetDevDIB lda bCustomBlkSize bmi .8 - >PUSHB hDevID - >PUSHEA.G DIB + >LEA.G DIB + >STYA.G IOCTL+S.IOCTL.BUFPTR - >SYSCALL GetDevStatus + lda #S.IOCTL.S.GETDIB + >STA.G IOCTL+S.IOCTL.S + + >PUSHB hDevID + >PUSHBI IOCTL.STATUS + >PUSHEA.G IOCTL + >SYSCALL IOCTL bcs .9 >LDA.G DIB+S.DIB.SIZE diff --git a/BIN/IPCONFIG.S.txt b/BIN/IPCONFIG.S.txt index 8a0a5ffc..38b8df7f 100644 --- a/BIN/IPCONFIG.S.txt +++ b/BIN/IPCONFIG.S.txt @@ -208,21 +208,21 @@ CS.RUN.SETUP .8 lda #0 sec + +CS.RUN.SETUP.RTS rts *-------------------------------------- -CS.RUN.DUMP >PUSHB IPCFG+S.NETCFG.DevID - >PUSHEA.G DIB - >SYSCALL GetDevStatus +CS.RUN.DUMP >LEA.G DCB.NIC + + ldx #S.IOCTL.S.GETDCB + jsr CS.RUN.IOCTL + bcs CS.RUN.SETUP.RTS - >LEA.G DCB.NIC - >STYA.G IOCTL+S.IOCTL.BUFPTR - lda #S.IOCTL.S.GETDCB - >STA.G IOCTL+S.IOCTL.S - - >PUSHB IPCFG+S.NETCFG.DevID - >PUSHBI IOCTL.STATUS - >PUSHEA.G IOCTL - >SYSCALL IOCTL + >LEA.G DIB + + ldx #S.IOCTL.S.GETDIB + jsr CS.RUN.IOCTL + bcs CS.RUN.SETUP.RTS CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV @@ -396,6 +396,17 @@ CS.RUN.DUMPIP >PUSHW L.MSG2 sec we do not want to stay in memory rts *-------------------------------------- +CS.RUN.IOCTL >STYA.G DEV.IOCTL+S.IOCTL.BUFPTR + + txa + >STA.G DEV.IOCTL+S.IOCTL.S + + >PUSHB IPCFG+S.NETCFG.DevID + >PUSHBI IOCTL.STATUS + >PUSHEA.G DEV.IOCTL + >SYSCALL IOCTL + rts +*-------------------------------------- CS.DOEVENT lda (pEvent) bpl .9 is it a TIMER event? @@ -540,7 +551,7 @@ DHCP.REQ.LEN .EQ *-DHCP.REQ .OR 0 DS.START DIB .BS S.DIB -IOCTL .BS S.IOCTL +DEV.IOCTL .BS S.IOCTL DCB.NIC .BS S.DCB.NIC DS.END .ED *-------------------------------------- diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 277f254d..841b4da7 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -15,7 +15,12 @@ X.ENTER.SUBDIR .EQ 1 X.COPY.TO.DEST .EQ 0 X.DELETE.SOURCE .EQ 0 *-------------------------------------- -MAX.COL .EQ 4 +MAX.COLW .EQ 20 +MAX.COLC .EQ 4 +COLOR.ENTER .EQ 32 +COLOR.REG .EQ 93 +COLOR.DIR .EQ 92 +COLOR.BDEV .EQ 96 *-------------------------------------- .DUMMY .OR ZPBIN @@ -25,21 +30,23 @@ ZPPtr2 .BS 2 ZPFileName .BS 2 ZPFileStat .BS 2 -ZPLineBuf .BS 2 ZPPWBuf .BS 2 +ArgCount .BS 1 ColCount .BS 1 -bPass2 .BS 1 hLineBuf .BS 1 hPWBuf .BS 1 -ArgCount .BS 1 +bPass2 .BS 1 bPause .BS 1 bAllmostAll .BS 1 bColumn .BS 1 bFullPath .BS 1 bLong .BS 1 bRecurse .BS 1 -bIsTTY .BS 1 +bToFile .BS 1 + +ZPLineBuf .BS 2 +ZPLineBufPtr .BS 2 ZS.END .ED *-------------------------------------- @@ -65,31 +72,38 @@ CS.START cld .DA CS.QUIT L.MSG.USAGE .DA MSG.USAGE L.MSG.ENTER .DA MSG.ENTER -L.MSG.REG .DA MSG.REG L.MSG.REGEXT .DA MSG.REGEXT -L.MSG.DIR .DA MSG.DIR L.MSG.DIREXT .DA MSG.DIREXT -L.MSG.BDEV .DA MSG.BDEV L.MSG.BDEVEXT .DA MSG.BDEVEXT +L.MSG.SETCOLOR .DA MSG.SETCOLOR L.PRODOS.FT.TXT .DA PRODOS.FT.TXT +L.MSG.NODATE .DA MSG.NODATE L.FMT.Date .DA FMT.Date L.FMT.Time .DA FMT.Time -L.FMT.string6 .DA FMT.string6 L.FMT.int16 .DA FMT.int16 J.CS.RUN.PRINT .DA CS.RUN.PRINT.REG .DA CS.RUN.PRINT.DIR .DA CS.RUN.PRINT.CDEV .DA CS.RUN.PRINT.BDEV - .DA CS.RUN.PRINT.CDEV - .DA CS.RUN.PRINT.CDEV - .DA CS.RUN.PRINT.CDEV - .DA CS.RUN.PRINT.CDEV + .DA CS.RUN.PRINT.LNK + .DA CS.RUN.PRINT.DSOCK + .DA CS.RUN.PRINT.SSOCK + .DA CS.RUN.PRINT.PIPE .DA 0 *-------------------------------------- CS.INIT clc rts *-------------------------------------- -CS.RUN jsr CS.RUN.ISATTY +CS.RUN ldy #S.PS.hStdOut + lda (pPS),y + tax + lda hFDs-1,x + >SYSCALL GetMemPtr + >STYA ZPPtr1 + lda (ZPPtr1) + bne .1 + + dec bToFile .1 inc ArgCount lda ArgCount @@ -155,11 +169,14 @@ CS.RUN jsr CS.RUN.ISATTY bcs .9 >STYA ZPLineBuf + >STYA ZPLineBufPtr stx hLineBuf *-------------------------------------- CS.RUN.LOOP stz bPass2 -.1 ldy #S.PS.hStdIn +.1 >SLEEP + + ldy #S.PS.hStdIn lda (pPS),y >SYSCALL FEOF bcs .99 I/O error @@ -212,6 +229,9 @@ CS.RUN.LOOP stz bPass2 bit bPass2 bmi .6 + jsr CS.RUN.CheckRoot + beq .6 + jsr ResetSrcDir bcs .99 @@ -221,7 +241,7 @@ CS.RUN.LOOP stz bPass2 .6 bit bLong bmi .7 - jsr CS.RUN.NewLine + jsr CS.RUN.LineBufFlush bcs .99 .7 jsr LeaveSubDir @@ -239,6 +259,14 @@ CS.RUN.LOOP stz bPass2 sec .99 rts *-------------------------------------- +CS.RUN.CheckRoot + >LDA.G hSrcBasePath + >SYSCALL GetMemPtr + >STYA ZPPtr1 + ldy #1 + lda (ZPPtr1),y + rts +*-------------------------------------- CS.RUN.PRINT.JMP jmp (J.CS.RUN.PRINT,x) *-------------------------------------- @@ -247,36 +275,35 @@ CS.RUN.PRINT.REG bpl .8 bit bLong - bmi .1 + bmi CS.RUN.PRINT.REGEXT + + ldy #COLOR.REG + jsr CS.RUN.SetColorY bit bColumn - bmi .23 + bmi CS.RUN.PRINT.REG1 bit bFullPath - bpl .22 + bpl .2 - jsr CS.RUN.PRINT.SRCPATH + jsr CS.RUN.SrcPathOut -.23 >LDYA ZPFileName - >SYSCALL PutS - rts + bra CS.RUN.PRINT.REG1 -.22 >PUSHW L.MSG.REG - >PUSHW ZPFileName - >PUSHBI 2 - >SYSCALL PrintF - bcs .9 - - jmp CS.RUN.UpdateColCnt +.2 ldx #MAX.COLW + clc + jsr CS.RUN.FN2LineBuf + jmp CS.RUN.IncColCnt .8 clc .9 rts *-------------------------------------- -.1 >PUSHW L.MSG.REGEXT +CS.RUN.PRINT.REGEXT + jsr CS.RUN.PrintMod + jsr CS.RUN.PrintUidGid - jsr Mod2CSTR (2) - - jsr CS.RUN.PushUidGid (4) + >PUSHW ZPLineBufPtr + >PUSHW L.MSG.REGEXT ldy #S.STAT.SIZE+3 ldx #4 @@ -285,193 +312,117 @@ CS.RUN.PRINT.REG >PUSHA dey dex - bne .2 (4) + bne .2 - jsr CS.RUN.PUSHDATES (4) + >PUSHBI 4 + jsr CS.RUN.ToLineBuf - ldy #S.STAT.P.TYPE - lda (ZPFileStat),y - jsr FileType2PSTR - >PUSHYA (2) + jsr CS.RUN.PrintTypeAux + jsr CS.RUN.PrintDates - ldy #S.STAT.P.AUXTYPE+1 - lda (ZPFileStat),y - >PUSHA - dey - lda (ZPFileStat),y - >PUSHA (2) + ldy #COLOR.REG + jsr CS.RUN.SetColorY - >PUSHW ZPFileName (2) - - >PUSHBI 20 - >SYSCALL PrintF - bcs .9 - - jmp CS.RUN.NewLine.1 +CS.RUN.PRINT.REG1 + ldx #0 + clc + jsr CS.RUN.FN2LineBuf + jmp CS.RUN.LineBufOut *-------------------------------------- CS.RUN.PRINT.DIR bit bPass2 bmi .8 bit bLong - bmi .4 + bmi CS.RUN.PRINT.DIREXT + + ldy #COLOR.DIR + jsr CS.RUN.SetColorY bit bColumn - bmi .23 + bmi CS.RUN.PRINT.DIR1 bit bFullPath - bpl .22 + bpl .2 - jsr CS.RUN.PRINT.SRCPATH + jsr CS.RUN.SrcPathOut + bra CS.RUN.PRINT.DIR1 -.23 >LDYA ZPFileName - >SYSCALL PutS +.2 ldx #MAX.COLW-1 + sec + jsr CS.RUN.FN2LineBuf + jsr CS.RUN.IncColCnt bcs .9 - bit bRecurse - bpl .8 - - lda (ZPFileName) - cmp #'.' - beq .8 - - >LDYA ZPFileName - jmp EnterSubDirYA + jmp CS.RUN.PRINT.DIREND .8 clc .9 rts +*-------------------------------------- +CS.RUN.PRINT.DIREXT + jsr CS.RUN.PrintMod + jsr CS.RUN.PrintUidGid -.22 >PUSHW L.MSG.DIR - >PUSHW ZPFileName - >PUSHBI 2 - >SYSCALL PrintF + >LDYA L.MSG.DIREXT + jsr CS.RUN.LineBufYAOut + + jsr CS.RUN.PrintDates + + ldy #COLOR.DIR + jsr CS.RUN.SetColorY + +CS.RUN.PRINT.DIR1 + ldx #0 + sec + jsr CS.RUN.FN2LineBuf + jsr CS.RUN.LineBufOut bcs .9 - ldy #0 + jmp CS.RUN.PRINT.DIREND -.1 iny - lda (ZPFileName),y - bne .1 - -.11 iny - cpy #19 - bcs .2 - - lda #C.SPACE - phy - >SYSCALL PutChar - ply - bcc .11 - rts - -.2 jsr CS.RUN.UpdateColCnt - bcc .5 - 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 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 -.90 rts +.9 rts *-------------------------------------- CS.RUN.PRINT.CDEV clc rts *-------------------------------------- CS.RUN.PRINT.BDEV + clc bit bPass2 - bmi .8 + bmi .9 bit bLong - bmi .20 + bmi CS.RUN.PRINT.BDEVEXT + + ldy #COLOR.BDEV + jsr CS.RUN.SetColorY bit bColumn - bmi .23 + bmi CS.RUN.PRINT.BDEV1 bit bFullPath - bpl .22 + bpl .2 - jsr CS.RUN.PRINT.SRCPATH + jsr CS.RUN.SrcPathOut + bra CS.RUN.PRINT.BDEV2 -.23 >LDYA ZPFileName - >SYSCALL PutS - bcs .9 +.2 lda #'/' + jsr CS.RUN.LineBufCOut - bit bRecurse - bpl .8 + ldx #MAX.COLW-1 + sec + jsr CS.RUN.FN2LineBuf + jsr CS.RUN.IncColCnt + bcc CS.RUN.PRINT.BDEVEND - lda (ZPFileName) - cmp #'.' - beq .8 - - >LDYA ZPFileName - jmp EnterSubDirYA - -.8 clc .9 rts - -.22 >PUSHW L.MSG.BDEV - >PUSHW ZPFileName - >PUSHBI 2 - >SYSCALL PrintF - bcs .9 - - ldy #0 - -.1 iny - lda (ZPFileName),y - bne .1 - -.11 iny - cpy #19 - bcs .2 - - lda #C.SPACE - phy - >SYSCALL PutChar - ply - bcc .11 - - rts - -.2 jsr CS.RUN.UpdateColCnt -* bcc .5 - rts *-------------------------------------- -.20 >PUSHW L.MSG.BDEVEXT - >PUSHW ZPFileName +CS.RUN.PRINT.BDEVEXT + jsr CS.RUN.PrintMod + jsr CS.RUN.PrintUidGid - ldy #S.STAT.P.SLOT - >PUSHB (ZPFileStat),y - iny DRIVE - >PUSHB (ZPFileStat),y + >PUSHW ZPLineBufPtr + >PUSHW L.MSG.BDEVEXT ldy #S.STAT.BLOCKS+1 >PUSHB (ZPFileStat),y @@ -483,36 +434,127 @@ CS.RUN.PRINT.BDEV dey >PUSHB (ZPFileStat),y - >PUSHBI 8 + ldy #S.STAT.P.SLOT + >PUSHB (ZPFileStat),y + iny DRIVE + >PUSHB (ZPFileStat),y - >SYSCALL PrintF - bcs .90 + >PUSHBI 6 + jsr CS.RUN.ToLineBuf - jsr CS.RUN.NewLine.1 - bcs .90 + jsr CS.RUN.PrintDates + ldy #COLOR.BDEV + jsr CS.RUN.SetColorY + +CS.RUN.PRINT.BDEV1 + lda #'/' + jsr CS.RUN.LineBufCOut + +CS.RUN.PRINT.BDEV2 + ldx #0 + sec + jsr CS.RUN.FN2LineBuf + jsr CS.RUN.LineBufOut + bcc CS.RUN.PRINT.BDEVEND + + rts +*-------------------------------------- +CS.RUN.PRINT.LNK +CS.RUN.PRINT.DSOCK +CS.RUN.PRINT.SSOCK +CS.RUN.PRINT.PIPE + clc + rts +*-------------------------------------- +CS.RUN.PRINT.DIREND +CS.RUN.PRINT.BDEVEND bit bRecurse - bpl .80 + bpl .8 - >LDYA ZPFileName + lda (ZPFileName) + cmp #'.' + bne .7 + + ldy #1 + lda (ZPFileName),y + beq .8 + + cmp #'.' + bne .7 + + iny + lda (ZPFileName),y + beq .8 + + bit bLong + bmi .7 + + jsr CS.RUN.LineBufFlush + bcs .9 + +.7 >LDYA ZPFileName jsr EnterSubDirYA - bcs .90 + bcs .9 jmp CS.RUN.ENTER.MSG -.80 clc -.90 rts +.8 clc +.9 rts *-------------------------------------- -CS.RUN.PRINT.SRCPATH +CS.RUN.ENTER.MSG + ldy #COLOR.ENTER + jsr CS.RUN.SetColorY + + >LDYA L.MSG.ENTER + jsr CS.RUN.LineBufYAOut + ldy #hSrcBasePath lda (pData),y >SYSCALL GetMemPtr - >PUSHYA - >PUSHBI 0 - >SYSCALL PrintF + jsr CS.RUN.LineBufYAOut + + ldy #0 + jsr CS.RUN.SetColorY + + jmp CS.RUN.LineBufOut +*-------------------------------------- +CS.RUN.PrintMod ldy #S.STAT.MODE+1 + lda (ZPFileStat),y + lsr + php C = RU + + lsr + lsr + lsr + tax + lda TYPES,x + jsr CS.RUN.LineBufCOut + + ldy #S.STAT.MODE + lda (ZPFileStat),y + + ldx #8 + + plp C = RU + +.1 pha + lda #'-' + bcc .2 + + lda ACCESS,x + +.2 jsr CS.RUN.LineBufCOut + + pla + asl + + dex + bpl .1 + rts *-------------------------------------- -CS.RUN.PushUidGid +CS.RUN.PrintUidGid ldy #S.STAT.UID lda (ZPFileStat),y >PUSHA @@ -520,195 +562,290 @@ CS.RUN.PushUidGid >SYSCALL GetPWUID bcs .2 - >PUSHEA.G USER - jsr CS.RUN.PushUidGidStr + jsr .8 bra .3 -.2 >PUSHEA.G USER - >PUSHW L.FMT.int16 - - ldy #S.STAT.UID+1 - lda (ZPFileStat),y - >PUSHA - dey - lda (ZPFileStat),y - >PUSHA - >PUSHBI 2 - >SYSCALL SPrintF - +.2 ldy #S.STAT.UID+1 + jsr .7 +*-------------------------------------- .3 ldy #S.STAT.GID lda (ZPFileStat),y >PUSHA >PUSHW ZPPWBuf >SYSCALL GetGRGID - bcs .5 - - >PUSHEA.G GROUP - jsr CS.RUN.PushUidGidStr - - bra .8 - -.5 >PUSHEA.G GROUP - >PUSHW L.FMT.int16 + bcc .8 ldy #S.STAT.GID+1 + +.7 >PUSHW ZPLineBufPtr + >PUSHW L.FMT.int16 + lda (ZPFileStat),y >PUSHA dey lda (ZPFileStat),y >PUSHA - >PUSHBI 2 - >SYSCALL SPrintF -.8 >PUSHEA.G USER - >PUSHEA.G GROUP - clc - rts - -CS.RUN.PushUidGidStr - >PUSHW L.FMT.string6 - >PUSHW ZPPWBuf >PUSHBI 2 - >SYSCALL SPrintF - rts + jmp CS.RUN.ToLineBuf + +.8 >LDYA ZPPWBuf + ldx #5 + jmp CS.RUN.LineBufYAOutX *-------------------------------------- -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 - +CS.RUN.PrintDates 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 - tay - lda ZPFileStat+1 - adc #0 - jsr CS.RUN.DATEFMT.SELECT - >SYSCALL StrFTime - -.1 ldy #S.STAT.CTIME+S.TIME.MONTH - lda (ZPFileStat),y - beq .2 Month=0, nvalid date/time - - >PUSHEA.G TIME.Create - - lda ZPFileStat - clc - adc #S.STAT.CTIME - tay - lda ZPFileStat+1 - adc #0 - jsr CS.RUN.DATEFMT.SELECT - >SYSCALL StrFTime - -.2 >PUSHEA.G TIME.Mod - >PUSHEA.G TIME.Create - rts -*-------------------------------------- -CS.RUN.NODATES.INIT - ldx #$ff - -.1 inx - iny - lda MSG.NODATE,x - sta (pData),y bne .1 - rts -*-------------------------------------- -CS.RUN.DATEFMT.SELECT - >STYA ZPPtr1 + jsr .8 + bra .2 - ldy #S.TIME.CENTURY - lda (ZPPtr1),y - ldy #TIME.SysTime+S.TIME.CENTURY - cmp (pData),y - bne .9 +.1 lda #S.STAT.MTIME + jsr .5 - ldy #S.TIME.YEAR - lda (ZPPtr1),y - ldy #TIME.SysTime+S.TIME.YEAR - cmp (pData),y - bne .9 +.2 ldy #S.STAT.CTIME+S.TIME.MONTH + lda (ZPFileStat),y + beq .8 - ldy #S.TIME.MONTH - lda (ZPPtr1),y - ldy #TIME.SysTime+S.TIME.MONTH - cmp (pData),y - bne .9 + lda #S.STAT.CTIME + +.5 clc + adc ZPFileStat + sta ZPPtr1 + + lda #0 + adc ZPFileStat+1 + sta ZPPtr1+1 + + >PUSHW ZPLineBufPtr + + ldx #0 ldy #S.TIME.DAY - lda (ZPPtr1),y - ldy #TIME.SysTime+S.TIME.DAY - cmp (pData),y - bne .9 -.8 >PUSHW L.FMT.Time - >PUSHW ZPPtr1 - rts +.6 lda (ZPPtr1),y + cmp (pData),y TIME.SysTime + bne .7 + + dey S.TIME.MONTH,S.TIME.YEAR,S.TIME.CENTURY + bpl .6 + + inx + inx Select L.FMT.Time + +.7 >PUSHW L.FMT.Date,x -.9 >PUSHW L.FMT.Date >PUSHW ZPPtr1 + >SYSCALL StrFTime + + lda #10 + jmp CS.RUN.LineBufPtrAddA + +.8 >LDYA L.MSG.NODATE + jmp CS.RUN.LineBufYAOut +*-------------------------------------- +CS.RUN.PrintTypeAux + ldy #S.STAT.P.TYPE + lda (ZPFileStat),y + + ldy #PRODOS.FT.TXT-PRODOS.FT.HEX-1 + +.1 cmp PRODOS.FT.HEX,y + beq .2 + + dey + bpl .1 + + pha + lda #'$' + jsr CS.RUN.LineBufCOut + pla + jsr CS.RUN.LineBufHOut + bra .3 + +.2 tya + asl + asl CC + adc L.PRODOS.FT.TXT + tay + + lda L.PRODOS.FT.TXT+1 + adc #0 + jsr CS.RUN.LineBufYAOut + +.3 lda #C.SPACE + jsr CS.RUN.LineBufCOut + + ldy #S.STAT.P.AUXTYPE+1 + lda (ZPFileStat),y + tax + dey + ora (ZPFileStat),y + beq .4 + + txa + jsr CS.RUN.LineBufHOut + + lda (ZPFileStat),y + jsr CS.RUN.LineBufHOut + + ldx #0 + bra .5 + +.4 ldx #4 + +.5 lda #C.SPACE + +.6 jsr CS.RUN.LineBufCOut + dex + bpl .6 + rts *-------------------------------------- -CS.RUN.UpdateColCnt +CS.RUN.FN2LineBuf + phx X = MaxLen + + php + + >LDYA ZPFileName + jsr CS.RUN.LineBufYAOutX Y = output count + + plp + bcc .1 + + lda #'/' + jsr CS.RUN.LineBufCOut + +.1 pla MaxLen was 0, no extra SPACE needed + beq .3 + + txa + beq .3 all chars printed, no more SPACE + + lda #C.SPACE + +.2 jsr CS.RUN.LineBufCOut + dex + bne .2 + +.3 ldy #0 Reset Color +*-------------------------------------- +CS.RUN.SetColorY + bit bToFile + bmi CS.RUN.IncColCnt.8 + + >PUSHW ZPLineBufPtr + >PUSHW L.MSG.SETCOLOR + tya + >PUSHA + >PUSHBI 1 +*-------------------------------------- +CS.RUN.ToLineBuf + >SYSCALL SPrintF +*-------------------------------------- +CS.RUN.LineBufPtrAddY + tya +CS.RUN.LineBufPtrAddA + clc + adc ZPLineBufPtr + sta ZPLineBufPtr + bcc .8 + + inc ZPLineBufPtr+1 + +.8 rts +*-------------------------------------- +CS.RUN.IncColCnt inc ColCount lda ColCount - cmp #MAX.COL - bne CS.RUN.NewLine.8 + cmp #MAX.COLC + beq CS.RUN.LineBufFlush1 - stz ColCount - - bra CS.RUN.NewLine.1 +CS.RUN.IncColCnt.8 + clc + rts *-------------------------------------- -CS.RUN.ENTER.MSG - >PUSHW L.MSG.ENTER +CS.RUN.LineBufFlush + lda ColCount + beq CS.RUN.IncColCnt.8 + +CS.RUN.LineBufFlush1 + stz ColCount +*-------------------------------------- +CS.RUN.LineBufOut + lda #C.CR + jsr CS.RUN.LineBufCOUT + bit bToFile + bmi .1 + + lda #C.LF + jsr CS.RUN.LineBufCOUT + +.1 lda #0 + sta (ZPLineBufPtr) + + ldy #S.PS.hStdOut + lda (pPS),y + >PUSHA + + >LDYA ZPLineBuf + >STYA ZPLineBufPtr + + >PUSHYA + + >SYSCALL fputs + rts +*-------------------------------------- +CS.RUN.SrcPathOut ldy #hSrcBasePath lda (pData),y >SYSCALL GetMemPtr - >PUSHYA - >PUSHBI 2 +*-------------------------------------- +CS.RUN.LineBufYAOut + ldx #0 +*-------------------------------------- +CS.RUN.LineBufYAOutX + >STYA ZPPtr1 X = MaxLen - >SYSCALL PrintF - bcc CS.RUN.NewLine.1 + ldy #$ff + +.1 iny + lda (ZPPtr1),y + beq .8 + + jsr CS.RUN.LineBufCOut + dex + bne .1 + +.8 clc rts *-------------------------------------- -CS.RUN.NewLine lda ColCount - beq CS.RUN.NewLine.8 -CS.RUN.NewLine.1 - lda #C.CR - >SYSCALL PutChar +CS.RUN.LineBufHOut + pha + lsr + lsr + lsr + lsr + jsr .1 - lda bIsTTY - beq CS.RUN.NewLine.8 + pla + and #$0F - lda #C.LF - >SYSCALL PutChar +.1 ora #$30 + cmp #'9'+1 + bcc CS.RUN.LineBufCOut -CS.RUN.NewLine.8 - clc - rts + adc #6 *-------------------------------------- -CS.RUN.ISATTY ldy #S.PS.hStdOut - lda (pPS),y - tax - lda hFDs-1,x - >SYSCALL GetMemPtr - >STYA ZPPtr1 - lda (ZPPtr1) - beq .9 +CS.RUN.LineBufCOut + sta (ZPLineBufPtr) + inc ZPLineBufPtr + bne .8 - inc bIsTTY + inc ZPLineBufPtr+1 -.9 rts +.8 rts *-------------------------------------- CS.DOEVENT sec rts @@ -731,86 +868,6 @@ CS.QUIT jsr LeaveSubDir .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 #'9'+1 - bcc .2 - - adc #6 - -.2 sta PRODOS.FT.DFLT+1 - pla - and #$0F - ora #$30 - cmp #'9'+1 - bcc .3 - - adc #6 - -.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 - lda (ZPFileStat),y - lsr - php C = RU - - lsr - lsr - lsr - tax - lda TYPES,x - >STA.G MOD - - plp - - ldy #S.STAT.MODE - lda (ZPFileStat),y - - ldy #MOD+1 - ldx #8 - -.1 pha - lda #'-' - bcc .2 - - lda ACCESS,x - -.2 sta (pData),y - - iny - pla - asl - - dex - bpl .1 - - >PUSHEA.G MOD - rts *-------------------------------------- .INB usr/src/shared/x.fileenum.s *-------------------------------------- @@ -826,14 +883,13 @@ MSG.USAGE .AS "Usage : LS [-A] [-C] [-F] [-L] [-R] [filespec]\r\n" .AS " -L : Use long listing format\r\n" .AZ " -R : Recursively list subdirectories\r\n" *-------------------------------------- -MSG.ENTER .AZ "Directory:%s" -MSG.REGEXT .AZ "%s %6s %6s %10u %s %s %s %H %s" -MSG.REG .AZ "%19s" -MSG.DIREXT .AS "%s %6s %6s %s %s " -MSG.DIR .AZ "\e[32m%s/\e[0m" -MSG.BDEVEXT .AZ "\e[36m/%15s\e[0m s%dd%d Blocks Used:%5D Total:%5D" -MSG.BDEV .AZ "\e[36m/%s\e[0m" +MSG.ENTER .AZ "Directory:" *-------------------------------------- +MSG.REGEXT .AZ " %10u " +MSG.DIREXT .AZ " " +MSG.BDEVEXT .AZ " %5D/%5D s%dd%d " +*-------------------------------------- +MSG.SETCOLOR .AZ "\e[1;%dm" PRODOS.FT.HEX .HS 0406FAFCFDCBCCCFFF PRODOS.FT.TXT .AZ "txt" .AZ "bin" @@ -844,27 +900,18 @@ PRODOS.FT.TXT .AZ "txt" .AZ "fon" .AZ "pak" .AZ "sys" -PRODOS.FT.DFLT .AZ "$ " -MSG.NODATE .AZ "" -FMT.Date .AZ "%d-%b-%y" -FMT.Time .AZ "%H:%M:%S " -FMT.string6 .AZ "%6s" +MSG.NODATE .AZ " " +FMT.Date .AZ "%d-%b-%y " +FMT.Time .AZ " %H:%M:%S " FMT.int16 .AZ "%6D" -TYPES .AS "-dbclssp" +TYPES .AS "-dcblssp" ACCESS .AS "xwrxwrxwr" *-------------------------------------- .DUMMY .OR 0 DS.START -MOD .BS 11 drwxrwxrwx\0 -USER .BS 7 -GROUP .BS 7 - TIME.SysTime .BS S.TIME -TIME.Create .BS 10 DD-mmm-YY\0 -TIME.Mod .BS 10 - .INB usr/src/shared/x.fileenum.g DS.END .ED *-------------------------------------- diff --git a/BIN/LSDEV.S.txt b/BIN/LSDEV.S.txt index 30c8079c..2552bfe0 100644 --- a/BIN/LSDEV.S.txt +++ b/BIN/LSDEV.S.txt @@ -132,10 +132,17 @@ DumpFD.BDEV >PUSHW L.MSG.DEV dex bpl .1 + lda #S.IOCTL.S.GETDIB + >STA.G DEV.IOCTL+S.IOCTL.S + + >LEA.G DEV.DIB + >STYA.G DEV.IOCTL+S.IOCTL.BUFPTR + ldx Index >PUSHB hFDs,x - >PUSHEA.G DEV.DIB - >SYSCALL GetDevStatus + >PUSHBI IOCTL.STATUS + >PUSHEA.G DEV.IOCTL + >SYSCALL IOCTL bcc DumpFD.DevDIB pha @@ -270,6 +277,7 @@ BLANK.DIB .DA #0 #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ .DUMMY .OR 0 DS.START +DEV.IOCTL .BS S.IOCTL DEV.DIB .BS S.DIB DEV.SFLAGS .BS 9 DS.END .ED diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index ead4c91d..573310e8 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -257,7 +257,7 @@ SYS.StrCmp .EQ $8C SYS.StrCaseCmp .EQ $8E * DEV SYS.GetDevByName .EQ $90 -SYS.GetDevStatus .EQ $92 +SYS.MKFD .EQ $92 SYS.MKDev .EQ $94 SYS.IOCTL .EQ $96 * BIN diff --git a/ProDOS.FX/ProDOS.S.XDOS.A.txt b/ProDOS.FX/ProDOS.S.XDOS.A.txt index 98cdd45e..f547f7d4 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.A.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.A.txt @@ -581,23 +581,23 @@ XDOS.Online jsr mvdbufr figure out how big buffer has to be. lda (A3L),y if 0 then cbytes=$100 else $010 for one and #$F0 device. mask out unused nibble. sta devnum last device used. - beq H343C branch if all devices. + beq .1 branch if all devices. lda #$10 cbytes = $010 sta cbytes - bne H343F always taken + bne .2 always taken -H343C inc cbytes+1 cbytes = $100 +.1 inc cbytes+1 cbytes = $100 -H343F jsr valdbuf go validate buffer range against - bcs onlinerr allocated memory. +.2 jsr valdbuf go validate buffer range against + bcs .9 allocated memory. lda #$00 zero out user buffer space ldy cbytes -H3449 dey +.3 dey sta (usrbuf),y - bne H3449 + bne .3 sta namptr used as pointer to user buffer. lda devnum get device # again. @@ -605,7 +605,7 @@ H3449 dey jsr mvdevnums get list of currently recognized dev's. -H3459 phx save index to last item on list +.4 phx save index to last item on list lda loklst,x sta devnum save desired device to look at. jsr online1 log this volume and return it's name. @@ -615,60 +615,60 @@ H3459 phx save index to last item on list sta namptr plx get index to device list. dex next device. - bpl H3459 branch if there is another device. + bpl .4 branch if there is another device. lda #$00 no errors for multiple on-line clc -onlinerr rts +.9 rts *-------------------------------------- online1 jsr XDOS.FindVCBForDevNum see if it has already been logged in. - bcs olinerr1 branch if vcb is full. + bcs online1.ERR branch if vcb is full. lda #$02 ldx #$00 read in root (volume) directory jsr XDOS.ReadGBufAX read ROOT VOL into general purpose buffer. - bcc volfound branch if read was ok. + bcc .1 branch if read was ok. ldx vcbptr ldy VCBs+VCB.OFCNT,x don't take the vcb offline if - bne olinerr1 there are active files present. + bne online1.ERR there are active files present. stz VCBs,x now take the volume offline stz VCBs+VCB.DEV,x - bra olinerr1 branch if unable to read. + bra online1.ERR branch if unable to read. -volfound .DO LOWERCASE=1 +.1 .DO LOWERCASE=1 jsr XDOS.CheckAndUnpackGBuf - bcs olinerr1 + bcs online1.ERR .FIN ldx vcbptr lda VCBs,x has it been logged in before? - beq H349E if not. + beq .2 if not. lda VCBs+VCB.OFCNT,x it has, are there active files? - bne H34AA branch if volume is currently busy. + bne .3 branch if volume is currently busy. -H349E jsr XDOS.VCBMountAtX - bcs olinerr1 branch if there is a problem. +.2 jsr XDOS.VCBMountAtX + bcs online1.ERR branch if there is a problem. lda #MLI.E.DUPVOL anticipate a duplicate active volume bit duplflag exits. - bmi olinerr1 branch if so. + bmi online1.ERR branch if so. -H34AA ldx vcbptr +.3 ldx vcbptr jsr XDOS.VCBCmpGBUF does vol read compare with logged vol? lda #MLI.E.DSKSWIT anticipate wrong volume mounted. - bcc H34D0 branch if ok. - -olinerr1 pha save error code. + bcc online1.OK branch if ok. +*-------------------------------------- +online1.ERR pha save error code. jsr svdevn report what device has problem. pla error code. iny tell what error was encountered. sta (usrbuf),y cmp #MLI.E.DUPVOL duplicate volume error? - bne H34CE no. + bne .1 no. iny report which other device has same name ldx vcbentry @@ -678,19 +678,19 @@ olinerr1 pha save error code. lda #MLI.E.DUPVOL duplicate volume error code. -H34CE sec flag error +.1 sec flag error rts - -H34D0 lda VCBs,x get volume name count +*-------------------------------------- +online1.OK lda VCBs,x get volume name count sta namcnt ldy namptr index to user's buffer. -H34D9 lda VCBs,x move name to user's buffer +.1 lda VCBs,x move name to user's buffer sta (usrbuf),y inx iny dec namcnt - bpl H34D9 + bpl .1 svdevn ldy namptr index to 1st byte of this entry. lda devnum upper nibble = device# and diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index fd540268..d8b83afd 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -66,68 +66,20 @@ K.GetDevByName >STYA ZPPtr1 requested dev name K.GetDev.9 rts */-------------------------------------- -* # GetDevStatus +* # MkFD * ## C -* `int getdevstatus(short int DevID, S.DIB *dstat);` +* `short int mkfd(short int type, );` * ## ASM * `>PUSHB DevID` * `>PUSHW S.DIB` * `>SYSCALL GetDevStatus` * ## RETURN VALUE *\-------------------------------------- -K.GetDevStatus >PULLW K.S.IOCTL+S.IOCTL.BUFPTR - >PULLA +K.MkFD - jsr DEV.GetPFD - bcs K.GetDev.9 - lda #S.IOCTL.S.GETDIB - .HS 2C BIT ABS -*-------------------------------------- -DEV.EOF lda #S.IOCTL.S.EOF -*-------------------------------------- -DEV.GetStatus sta K.S.IOCTL+S.IOCTL.S - - ldy #S.FD.DEV.DEVID - lda (pFD),y - sta K.S.IOCTL+S.IOCTL.UNITNUM - - >LDYAI K.S.IOCTL - ldx #IOCTL.STATUS -*-------------------------------------- - jmp (pDrv) -*-------------------------------------- -DEV.OPEN ldx #IOCTL.OPEN - lda IO.hFD - jsr DEV.pDrvJmp - bcs .9 - - lda IO.hFD - -.9 rts -*-------------------------------------- -DEV.CLOSE ldx #IOCTL.CLOSE - lda IO.hFD - -DEV.pDrvJmp jmp (pDrv) -*-------------------------------------- -DEV.READ ldx #IOCTL.READ - .HS 2C BIT ABS -*-------------------------------------- -DEV.WRITE ldx #IOCTL.WRITE - - >PULLW K.S.IOCTL+S.IOCTL.BYTECNT - >PULLW K.S.IOCTL+S.IOCTL.BUFPTR - - inc pStack pop hFD - - >LDYAI K.S.IOCTL - jsr DEV.pDrvJmp - bcs .9 - - >LDYA K.S.IOCTL+S.IOCTL.BYTECNT - -.9 rts + clc + rts */-------------------------------------- * # MKDev * Create a hDEV @@ -239,6 +191,51 @@ K.IOCTL ldy #3 hFD jmp (pDrv) *-------------------------------------- +DEV.OPEN ldx #IOCTL.OPEN + lda IO.hFD + jsr DEV.pDrvJmp + bcs .9 + + lda IO.hFD + +.9 rts +*-------------------------------------- +DEV.CLOSE ldx #IOCTL.CLOSE + lda IO.hFD + + jmp (pDrv) +*-------------------------------------- +DEV.READ ldx #IOCTL.READ + .HS 2C BIT ABS +*-------------------------------------- +DEV.WRITE ldx #IOCTL.WRITE + + >PULLW K.S.IOCTL+S.IOCTL.BYTECNT + >PULLW K.S.IOCTL+S.IOCTL.BUFPTR + + inc pStack pop hFD + + >LDYAI K.S.IOCTL + jsr DEV.pDrvJmp + bcs .9 + + >LDYA K.S.IOCTL+S.IOCTL.BYTECNT + +.9 rts +*-------------------------------------- +DEV.EOF lda #S.IOCTL.S.EOF +*-------------------------------------- +DEV.GetStatus sta K.S.IOCTL+S.IOCTL.S + + ldy #S.FD.DEV.DEVID + lda (pFD),y + sta K.S.IOCTL+S.IOCTL.UNITNUM + + ldx #IOCTL.STATUS + >LDYAI K.S.IOCTL +*-------------------------------------- +DEV.pDrvJmp jmp (pDrv) +*-------------------------------------- DEV.GetPFD sta IO.hFD jsr K.GetMemPtr diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index f3c110b3..0b3a66d1 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -89,7 +89,7 @@ K.SYSCALL .DA K.ChTyp $00 : STAT .DA K.StrCaseCmp .DA K.GetDevByName $90 : DEV - .DA K.GetDevStatus + .DA K.MKFD .DA K.MKDev .DA K.IOCTL .DA K.LoadLib BIN diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index 9368df3d..168f676a 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -12,16 +12,14 @@ NEW * ## RETURN VALUE *\-------------------------------------- K.ChTyp jsr PFT.CheckPath1 - bcs K.ChTyp.9 + bcs K.ChMod.RET3 >MLICALL MLIGETFILEINFO - bcs K.ChTyp.9 + bcs K.ChMod.RET3 lda (pStack) sta K.MLI.PARAMS+S.FI.T -K.ChTyp.8 >MLICALL MLISETFILEINFO - -K.ChTyp.9 >RET 3 + bra K.SetAttr.I */-------------------------------------- * # SetAttr * Change Attributes of a ProDOS File @@ -34,14 +32,16 @@ K.ChTyp.9 >RET 3 * ## RETURN VALUE *\-------------------------------------- K.SetAttr jsr PFT.CheckPath1 - bcs K.ChTyp.9 + bcs K.ChMod.RET3 >MLICALL MLIGETFILEINFO - bcs K.ChTyp.9 + bcs K.ChMod.RET3 lda (pStack) sta K.MLI.PARAMS+S.FI.A - bra K.ChTyp.8 + +K.SetAttr.I >MLICALL MLISETFILEINFO + bra K.ChMod.RET3 *-------------------------------------- * # ChMod * change permissions of a file @@ -73,6 +73,7 @@ K.ChMod jsr PFT.CheckPath2 .9 rts K.ChMod.RET4 inc pStack + K.ChMod.RET3 inc pStack inc pStack inc pStack diff --git a/SYS/KM.VSDRIVE.S.txt b/SYS/KM.VSDRIVE.S.txt index b7722f78..b36ff827 100644 --- a/SYS/KM.VSDRIVE.S.txt +++ b/SYS/KM.VSDRIVE.S.txt @@ -302,11 +302,13 @@ VSDRIVE.Install ldx #PATCH.LEN asl ora #SSC.DATA + sta DRV.SSCWrite.D+1 sta DRV.SSCSend.D+1 sta DRV.SSCGet.D+1 inc #SSC.STATUS + sta DRV.SSCWrite.S+1 sta DRV.SSCSend.S+1 sta DRV.SSCGet.S+1 sta DRV.SSCClose.S+1 @@ -363,12 +365,22 @@ PATCH.LEN .EQ *-PATCH * PC,A1,A2 are used by Disk II Driver, * so we use it safely as Tmp Ptr *-------------------------------------- -DRV.PCL .EQ $3A -DRV.PCH .EQ $3B -DRV.A1L .EQ $3C -DRV.A1H .EQ $3D -DRV.A2L .EQ $3E -DRV.A2H .EQ $3F +*DRV.PCL .EQ $3A +*DRV.PCH .EQ $3B +*DRV.A1L .EQ $3C +*DRV.A1H .EQ $3D +*DRV.A2L .EQ $3E +*DRV.A2H .EQ $3F +*-------------------------------------- + .DUMMY + .OR $3A +DRV.CmdBuf.Sum .BS 1 Reverse order for dey +DRV.CmdBuf.BlkH .BS 1 +DRV.CmdBuf.BlkL .BS 1 +DRV.CmdBuf.Cmd .BS 1 +DRV.CmdBuf.Env .BS 1 + .ED +*-------------------------------------- DRV.COMMAND .EQ $42 DRV.UNITNUM .EQ $43 DRV.BUFF .EQ $44 @@ -400,27 +412,37 @@ DRV.START.OK tax ora #2 W=2,R=3 - ldy DRV.UNITNUM + bit DRV.UNITNUM bpl .2 adc #2 CC from bcs .2 sta DRV.CmdBuf.Cmd store cmd - eor #ADT.CMD.VSD - eor DRV.BLKNUM - eor DRV.BLKNUM+1 - sta DRV.CmdBuf.Sum Compute & store CheckSum + lda #ADT.CMD.VSD + sta DRV.CmdBuf.Env + lda DRV.BLKNUM sta DRV.CmdBuf.BlkL lda DRV.BLKNUM+1 sta DRV.CmdBuf.BlkH + + stz DRV.CmdBuf.Sum *-------------------------------------- * send CMD+CS *-------------------------------------- php sei + + phx + + ldy #DRV.200.LEN-1 + +.1 lda DRV.200,y + sta $200,y + dey + bpl .1 * lda #SSC.CMD.NOP+SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR DRV.INIT.C inc SSC.CMD SELF MODIFIED @@ -429,29 +451,27 @@ DRV.INIT.C inc SSC.CMD SELF MODIFIED .3 lda DRV.CmdBuf.Sum,y jsr DRV.SSCSend + eor DRV.CmdBuf.Sum + sta DRV.CmdBuf.Sum dey - bpl .3 + bne .3 - ldy #DRV.200.LEN-1 - -.5 lda DRV.200,y - sta $200,y - dey - bpl .5 + jsr DRV.SSCSend A = Sum *-------------------------------------- + plx dex 1-1=0 if read bne DRV.DO.CMD.W go write *-------------------------------------- * Read block *-------------------------------------- -DRV.DO.CMD.R ldy #3 Read Back and check 4 bytes +DRV.DO.CMD.R ldy #4 Read Back and check 4 bytes .1 jsr DRV.SSCGet - eor DRV.CmdBuf.BlkH,y + eor DRV.CmdBuf.Sum,y bne DRV.DO.CMD.ERR dey - bpl .1 + bne .1 ldy #4 Read 4 bytes DATE/TIME + 1 Byte Checksum @@ -505,17 +525,27 @@ DRV.DO.CMD.W lda #$B1 lda (),y sec .HS 90 BCC -.1 clc +DRV.SSCWrite.1 clc -.2 jsr $200 - jsr DRV.SSCSend +DRV.SSCWrite.2 jsr $200 + + tax + +DRV.SSCWrite.S lda SSC.STATUS SELF MODIFIED + and #SSC.STATUS.TDRE Outgoing char? + beq DRV.SSCWrite.S + +DRV.SSCWrite.D stx SSC.DATA SELF MODIFIED + + txa + eor DRV.CmdBuf.Sum sta DRV.CmdBuf.Sum iny - bne .2 + bne DRV.SSCWrite.2 inc DRV.BUFF+1 - bcs .1 + bcs DRV.SSCWrite.1 dec DRV.BUFF+1 dec DRV.BUFF+1 @@ -541,19 +571,21 @@ DRV.SSCClose DRV.SSCClose.C dec SSC.CMD SELF MODIFIED DRV.SSCClose.S bit SSC.STATUS SELF MODIFIED bmi DRV.SSCClose.S + plp clc rts *-------------------------------------- -DRV.SSCSend pha +DRV.SSCSend tax DRV.SSCSend.S lda SSC.STATUS SELF MODIFIED and #SSC.STATUS.TDRE Outgoing char? beq DRV.SSCSend.S - pla +DRV.SSCSend.D stx SSC.DATA SELF MODIFIED + + txa Restore A for checksumming -DRV.SSCSend.D sta SSC.DATA SELF MODIFIED rts *-------------------------------------- DRV.SSCGet @@ -569,12 +601,6 @@ DRV.200 bit RRAMWRAMBNK1 bit RRAMWRAMBNK2 rts DRV.200.LEN .EQ *-DRV.200 -*-------------------------------------- -DRV.CmdBuf.Sum .BS 1 Reverse order for dey -DRV.CmdBuf.BlkH .BS 1 -DRV.CmdBuf.BlkL .BS 1 -DRV.CmdBuf.Cmd .BS 1 -DRV.CmdBuf.Env .DA #ADT.CMD.VSD *-------------------------------------- .EP *--------------------------------------