KERNEL:bugfix for ReadDir on directory blocks filled by deleted entries

This commit is contained in:
burniouf 2024-02-03 08:25:29 +01:00
parent f76765cb13
commit 9190fc0a94
13 changed files with 252 additions and 246 deletions

Binary file not shown.

View File

@ -110,7 +110,7 @@ CODE.PutChar lda #$A9 LDA #imm
jsr CODE.EmitByte jsr CODE.EmitByte
txa txa
jsr CODE.EmitByte jsr CODE.EmitByte
ldx #SYS.PutChar ldx #_PutChar
*-------------------------------------- *--------------------------------------
CODE.SYSCALL lda #$A2 LDX #imm CODE.SYSCALL lda #$A2 LDX #imm
jsr CODE.EmitByte jsr CODE.EmitByte

View File

@ -828,85 +828,85 @@ CC.MAIN.DEF .DA #SYM.T.SINT,#0,#SYM.T.SINT,#0,#SYM.T.UCHAR,#SYM.Q.PPOINTER,0
CC.MAIN.DEF.LEN .EQ *-CC.MAIN.DEF CC.MAIN.DEF.LEN .EQ *-CC.MAIN.DEF
*-------------------------------------- *--------------------------------------
CC.SYSCALL .PS "chtyp" CC.SYSCALL .PS "chtyp"
.DA #SYS.ChTyp .DA #_ChTyp
.PS "chmod" .PS "chmod"
.DA #SYS.ChMod .DA #_ChMod
.PS "fstat" .PS "fstat"
.DA #SYS.FStat .DA #_FStat
.PS "stat" .PS "stat"
.DA #SYS.Stat .DA #_Stat
.PS "mkdir" .PS "mkdir"
.DA #SYS.MKDir .DA #_MKDir
.PS "mknod" .PS "mknod"
.DA #SYS.MKNod .DA #_MKNod
.PS "mkfifo" .PS "mkfifo"
.DA #SYS.MKFIFO .DA #_MKFIFO
.PS "pipe" .PS "pipe"
.DA #SYS.Pipe .DA #_Pipe
.PS "opendir" .PS "opendir"
.DA #SYS.OpenDir .DA #_OpenDir
.PS "readdir" .PS "readdir"
.DA #SYS.ReadDir .DA #_ReadDir
.PS "closedir" .PS "closedir"
.DA #SYS.CloseDir .DA #_CloseDir
.PS "open" .PS "open"
.DA #SYS.Open .DA #_Open
.PS "close" .PS "close"
.DA #SYS.Close .DA #_Close
.PS "read" .PS "read"
.DA #SYS.Read .DA #_Read
.PS "write" .PS "write"
.DA #SYS.Write .DA #_Write
.PS "chown" .PS "chown"
.DA #SYS.ChOwn .DA #_ChOwn
.PS "fputc" .PS "fputc"
.DA #SYS.FPutC .DA #_FPutC
.PS "putchar" .PS "putchar"
.DA #SYS.PutChar .DA #_PutChar
.PS "getc" .PS "getc"
.DA #SYS.GetC .DA #_GetC
.PS "getchar" .PS "getchar"
.DA #SYS.GetChar .DA #_GetChar
.PS "fputs" .PS "fputs"
.DA #SYS.FPutS .DA #_FPutS
.PS "puts" .PS "puts"
.DA #SYS.PutS .DA #_PutS
.PS "fgets" .PS "fgets"
.DA #SYS.FGetS .DA #_FGetS
.PS "ungetc" .PS "ungetc"
.DA #SYS.UngetC .DA #_UngetC
.PS "fopen" .PS "fopen"
.DA #SYS.FOpen .DA #_FOpen
.PS "fclose" .PS "fclose"
.DA #SYS.FClose .DA #_FClose
.PS "fread" .PS "fread"
.DA #SYS.FRead .DA #_FRead
.PS "fwrite" .PS "fwrite"
.DA #SYS.FWrite .DA #_FWrite
.PS "fflush" .PS "fflush"
.DA #SYS.FFlush .DA #_FFlush
.PS "fseek" .PS "fseek"
.DA #SYS.FSeek .DA #_FSeek
.PS "ftell" .PS "ftell"
.DA #SYS.FTell .DA #_FTell
.PS "feof" .PS "feof"
.DA #SYS.FEOF .DA #_FEOF
.PS "remove" .PS "remove"
.DA #SYS.Remove .DA #_Remove
.PS "rename" .PS "rename"
.DA #SYS.Rename .DA #_Rename
.PS "printf" .PS "printf"
.DA #SYS.PrintF .DA #_PrintF
.PS "fprintf" .PS "fprintf"
.DA #SYS.FPrintF .DA #_FPrintF
.PS "sprintf" .PS "sprintf"
.DA #SYS.SPrintF .DA #_SPrintF
.PS "scanf" .PS "scanf"
.DA #SYS.ScanF .DA #_ScanF
.PS "fscanf" .PS "fscanf"
.DA #SYS.FScanF .DA #_FScanF
.PS "sscanf" .PS "sscanf"
.DA #SYS.SScanF .DA #_SScanF
* .PS "$50" * .PS "$50"
* .DA #0 * .DA #0
* .PS "$52" * .PS "$52"
@ -922,7 +922,7 @@ CC.SYSCALL .PS "chtyp"
* .PS "$5C" * .PS "$5C"
* .DA #0 * .DA #0
.PS "setattr" .PS "setattr"
.DA #SYS.SetAttr .DA #_SetAttr
* .PS "mount" * .PS "mount"
* .DA #0 * .DA #0
* .PS "umount" * .PS "umount"
@ -940,37 +940,37 @@ CC.SYSCALL .PS "chtyp"
* .PS "geterrmsg" * .PS "geterrmsg"
* .DA #0 * .DA #0
.PS "atof" .PS "atof"
.DA #SYS.AToF .DA #_AToF
.PS "atoi" .PS "atoi"
.DA #SYS.AToI .DA #_AToI
.PS "atol" .PS "atol"
.DA #SYS.AToL .DA #_AToL
.PS "strtof" .PS "strtof"
.DA #SYS.StrToF .DA #_StrToF
.PS "strtol" .PS "strtol"
.DA #SYS.StrToL .DA #_StrToL
.PS "strtoul" .PS "strtoul"
.DA #SYS.StrToUL .DA #_StrToUL
.PS "realpath" .PS "realpath"
.DA #SYS.RealPath .DA #_RealPath
.PS "expand" .PS "expand"
.DA #SYS.Expand .DA #_Expand
.PS "strlen" .PS "strlen"
.DA #SYS.StrLen .DA #_StrLen
.PS "strcpy" .PS "strcpy"
.DA #SYS.StrCpy .DA #_StrCpy
.PS "strcat" .PS "strcat"
.DA #SYS.StrCat .DA #_StrCat
.PS "strdup" .PS "strdup"
.DA #SYS.StrDup .DA #_StrDup
.PS "strupr" .PS "strupr"
.DA #SYS.StrUpr .DA #_StrUpr
.PS "strlwr" .PS "strlwr"
.DA #SYS.StrLwr .DA #_StrLwr
.PS "strcmp" .PS "strcmp"
.DA #SYS.StrCmp .DA #_StrCmp
.PS "strcasecmp" .PS "strcasecmp"
.DA #SYS.StrCaseCmp .DA #_StrCaseCmp
* .PS "getdevbyname" * .PS "getdevbyname"
* .DA #0 * .DA #0
* .PS "getdevstatus" * .PS "getdevstatus"
@ -988,13 +988,13 @@ CC.SYSCALL .PS "chtyp"
* .PS "insdrv" * .PS "insdrv"
* .DA #0 * .DA #0
.PS "execl" .PS "execl"
.DA #SYS.ExecL .DA #_ExecL
* .PS "execv" * .PS "execv"
* .DA #0 * .DA #0
.PS "fork" .PS "fork"
.DA #SYS.Fork .DA #_Fork
.PS "kill" .PS "kill"
.DA #SYS.Kill .DA #_Kill
* .PS "loadfile" * .PS "loadfile"
* .DA #0 * .DA #0
* .PS "loadtxtfile" * .PS "loadtxtfile"
@ -1012,41 +1012,41 @@ CC.SYSCALL .PS "chtyp"
* .PS "strvfree" * .PS "strvfree"
* .DA #0 * .DA #0
.PS "putenv" .PS "putenv"
.DA #SYS.PutEnv .DA #_PutEnv
.PS "setenv" .PS "setenv"
.DA #SYS.SetEnv .DA #_SetEnv
.PS "getenv" .PS "getenv"
.DA #SYS.GetEnv .DA #_GetEnv
.PS "unsetenv" .PS "unsetenv"
.DA #SYS.UnsetEnv .DA #_UnsetEnv
.PS "time" .PS "time"
.DA #SYS.Time .DA #_Time
.PS "strftime" .PS "strftime"
.DA #SYS.StrFTime .DA #_StrFTime
* .PS "ptime2time" * .PS "ptime2time"
* .DA #0 * .DA #0
.PS "ctime2time" .PS "ctime2time"
.DA #SYS.CTime2Time .DA #_CTime2Time
.PS "md5" .PS "md5"
.DA #SYS.MD5 .DA #_MD5
.PS "md5init" .PS "md5init"
.DA #SYS.MD5Init .DA #_MD5Init
.PS "md5update" .PS "md5update"
.DA #SYS.MD5Update .DA #_MD5Update
.PS "md5finalize" .PS "md5finalize"
.DA #SYS.MD5Finalize .DA #_MD5Finalize
.PS "getpwuid" .PS "getpwuid"
.DA #SYS.GetPWUID .DA #_GetPWUID
.PS "getpwname" .PS "getpwname"
.DA #SYS.GetPWName .DA #_GetPWName
.PS "putpw" .PS "putpw"
.DA #SYS.PutPW .DA #_PutPW
.PS "getgrpgid" .PS "getgrpgid"
.DA #SYS.GetGRGID .DA #_GetGRGID
.PS "getgrpname" .PS "getgrpname"
.DA #SYS.GetGRName .DA #_GetGRName
.PS "putgr" .PS "putgr"
.DA #SYS.PutGR .DA #_PutGR
* .PS "opensession" * .PS "opensession"
* .DA #0 * .DA #0
* .PS "closesession" * .PS "closesession"
@ -1068,15 +1068,15 @@ CC.SYSCALL .PS "chtyp"
* .PS "slistnew" * .PS "slistnew"
* .DA #0 * .DA #0
.PS "malloc" .PS "malloc"
.DA #SYS.GetMem .DA #_GetMem
.PS "realloc" .PS "realloc"
.DA #SYS.Realloc .DA #_Realloc
* .PS "getmemptr" * .PS "getmemptr"
* .DA #0 * .DA #0
* .PS "freemem" * .PS "freemem"
* .DA #SYS.FreeMem * .DA #_FreeMem
.PS "free" .PS "free"
.DA #SYS.Free .DA #_Free
* .PS "newstkobj" * .PS "newstkobj"
* .DA #0 * .DA #0
* .PS "getstkobjptr" * .PS "getstkobjptr"

View File

@ -42,7 +42,7 @@ CP.PRINT ldy #$ff
>LDYA ZPDataPtr >LDYA ZPDataPtr
jsr CP.Emit.LDYAI jsr CP.Emit.LDYAI
ldx #SYS.PutS ldx #_PutS
jsr CP.Emit.SYSCALL jsr CP.Emit.SYSCALL
pla pla

View File

@ -173,161 +173,161 @@ SL.EndDollar .EQ %00000001
*--------------------------------------D1 *--------------------------------------D1
* STAT * STAT
* .EQ $00 * .EQ $00
SYS.ChMod .EQ $02 _ChMod .EQ $02
SYS.FStat .EQ $04 _FStat .EQ $04
SYS.Stat .EQ $06 _Stat .EQ $06
SYS.MKDir .EQ $08 _MKDir .EQ $08
SYS.MKNod .EQ $0A _MKNod .EQ $0A
SYS.MKFIFO .EQ $0C _MKFIFO .EQ $0C
SYS.Pipe .EQ $0E _Pipe .EQ $0E
* DIRENT * DIRENT
SYS.OpenDir .EQ $10 _OpenDir .EQ $10
SYS.ReadDir .EQ $12 _ReadDir .EQ $12
SYS.CloseDir .EQ $14 _CloseDir .EQ $14
* UNISTD * UNISTD
SYS.Open .EQ $16 _Open .EQ $16
SYS.Close .EQ $18 _Close .EQ $18
SYS.Read .EQ $1A _Read .EQ $1A
SYS.Write .EQ $1C _Write .EQ $1C
SYS.ChOwn .EQ $1E _ChOwn .EQ $1E
* STDIO * STDIO
SYS.FPutC .EQ $20 _FPutC .EQ $20
SYS.PutChar .EQ $22 _PutChar .EQ $22
SYS.GetC .EQ $24 _GetC .EQ $24
SYS.GetChar .EQ $26 _GetChar .EQ $26
SYS.FPutS .EQ $28 _FPutS .EQ $28
SYS.PutS .EQ $2A _PutS .EQ $2A
SYS.FGetS .EQ $2C _FGetS .EQ $2C
SYS.UngetC .EQ $2E _UngetC .EQ $2E
SYS.FOpen .EQ $30 _FOpen .EQ $30
SYS.FClose .EQ $32 _FClose .EQ $32
SYS.FRead .EQ $34 _FRead .EQ $34
SYS.FWrite .EQ $36 _FWrite .EQ $36
SYS.FFlush .EQ $38 _FFlush .EQ $38
SYS.FSeek .EQ $3A _FSeek .EQ $3A
SYS.FTell .EQ $3C _FTell .EQ $3C
SYS.FEOF .EQ $3E _FEOF .EQ $3E
SYS.Remove .EQ $40 _Remove .EQ $40
SYS.Rename .EQ $42 _Rename .EQ $42
SYS.PrintF .EQ $44 _PrintF .EQ $44
SYS.FPrintF .EQ $46 _FPrintF .EQ $46
SYS.SPrintF .EQ $48 _SPrintF .EQ $48
SYS.ScanF .EQ $4A _ScanF .EQ $4A
SYS.FScanF .EQ $4C _FScanF .EQ $4C
SYS.SScanF .EQ $4E _SScanF .EQ $4E
* .EQ $50 * .EQ $50
* .EQ $52 * .EQ $52
* .EQ $54 * .EQ $54
* .EQ $56 * .EQ $56
* PRODOS * PRODOS
SYS.Online .EQ $58 _Online .EQ $58
SYS.ChTyp .EQ $5A _ChTyp .EQ $5A
SYS.ChAux .EQ $5C _ChAux .EQ $5C
SYS.SetAttr .EQ $5E _SetAttr .EQ $5E
*--------------------------------------D2 *--------------------------------------D2
* MOUNT * MOUNT
SYS.Mount .EQ $60 _Mount .EQ $60
SYS.UMount .EQ $62 _UMount .EQ $62
* STKOBJ * STKOBJ
SYS.LoadStkObj .EQ $64 _LoadStkObj .EQ $64
SYS.GetStkObj .EQ $66 _GetStkObj .EQ $66
* ARG * ARG
SYS.Shift .EQ $68 _Shift .EQ $68
SYS.ArgV .EQ $6A _ArgV .EQ $6A
SYS.ArgVDup .EQ $6C _ArgVDup .EQ $6C
* ERROR * ERROR
SYS.GetErrMsg .EQ $6E _GetErrMsg .EQ $6E
* STDLIB * STDLIB
SYS.AToF .EQ $70 _AToF .EQ $70
SYS.AToI .EQ $72 _AToI .EQ $72
SYS.AToL .EQ $74 _AToL .EQ $74
SYS.StrToF .EQ $76 _StrToF .EQ $76
SYS.StrToL .EQ $78 _StrToL .EQ $78
SYS.StrToUL .EQ $7A _StrToUL .EQ $7A
SYS.RealPath .EQ $7C _RealPath .EQ $7C
SYS.Expand .EQ $7E _Expand .EQ $7E
* STRING * STRING
SYS.StrLen .EQ $80 _StrLen .EQ $80
SYS.StrCpy .EQ $82 _StrCpy .EQ $82
SYS.StrCat .EQ $84 _StrCat .EQ $84
SYS.StrDup .EQ $86 _StrDup .EQ $86
SYS.StrUpr .EQ $88 _StrUpr .EQ $88
SYS.StrLwr .EQ $8A _StrLwr .EQ $8A
SYS.StrCmp .EQ $8C _StrCmp .EQ $8C
SYS.StrCaseCmp .EQ $8E _StrCaseCmp .EQ $8E
* DEV * DEV
SYS.GetDevByName .EQ $90 _GetDevByName .EQ $90
* .EQ $92 * .EQ $92
SYS.MKDev .EQ $94 _MKDev .EQ $94
SYS.IOCTL .EQ $96 _IOCTL .EQ $96
* BIN * BIN
SYS.LoadLib .EQ $98 _LoadLib .EQ $98
SYS.UnloadLib .EQ $9A _UnloadLib .EQ $9A
SYS.LoadDrv .EQ $9C _LoadDrv .EQ $9C
SYS.InsDrv .EQ $9E _InsDrv .EQ $9E
* PS * PS
SYS.ExecL .EQ $A0 _ExecL .EQ $A0
SYS.ExecV .EQ $A2 _ExecV .EQ $A2
SYS.Fork .EQ $A4 _Fork .EQ $A4
SYS.Kill .EQ $A6 _Kill .EQ $A6
SYS.LoadFile .EQ $A8 _LoadFile .EQ $A8
SYS.LoadTxtFile .EQ $AA _LoadTxtFile .EQ $AA
SYS.FileSearch .EQ $AC _FileSearch .EQ $AC
SYS.GetMemStat .EQ $AE _GetMemStat .EQ $AE
*--------------------------------------E0/AUX *--------------------------------------E0/AUX
* STRV / STRVX * STRV / STRVX
SYS.StrVNew .EQ $B0 _StrVNew .EQ $B0
SYS.StrVSet .EQ $B2 _StrVSet .EQ $B2
SYS.StrVGet .EQ $B4 _StrVGet .EQ $B4
SYS.StrVFree .EQ $B6 _StrVFree .EQ $B6
* ENV / ENVX * ENV / ENVX
SYS.PutEnv .EQ $B8 _PutEnv .EQ $B8
SYS.SetEnv .EQ $BA _SetEnv .EQ $BA
SYS.GetEnv .EQ $BC _GetEnv .EQ $BC
SYS.UnsetEnv .EQ $BE _UnsetEnv .EQ $BE
* TIME / TIMEX * TIME / TIMEX
SYS.Time .EQ $C0 _Time .EQ $C0
SYS.StrFTime .EQ $C2 _StrFTime .EQ $C2
SYS.PTime2Time .EQ $C4 _PTime2Time .EQ $C4
SYS.CTime2Time .EQ $C6 _CTime2Time .EQ $C6
* MD5 / MD5X * MD5 / MD5X
SYS.MD5 .EQ $C8 _MD5 .EQ $C8
SYS.MD5Init .EQ $CA _MD5Init .EQ $CA
SYS.MD5Update .EQ $CC _MD5Update .EQ $CC
SYS.MD5Finalize .EQ $CE _MD5Finalize .EQ $CE
* PWD / PWDX * PWD / PWDX
SYS.GetPWUID .EQ $D0 _GetPWUID .EQ $D0
SYS.GetPWName .EQ $D2 _GetPWName .EQ $D2
SYS.PutPW .EQ $D4 _PutPW .EQ $D4
SYS.GetGRGID .EQ $D6 _GetGRGID .EQ $D6
SYS.GetGRName .EQ $D8 _GetGRName .EQ $D8
SYS.PutGR .EQ $DA _PutGR .EQ $DA
SYS.OpenSession .EQ $DC _OpenSession .EQ $DC
SYS.CloseSession .EQ $DE _CloseSession .EQ $DE
* SLIST / SLISTX * SLIST / SLISTX
SYS.SListGetData .EQ $E0 _SListGetData .EQ $E0
SYS.SListAddData .EQ $E2 _SListAddData .EQ $E2
SYS.SListSetData .EQ $E4 _SListSetData .EQ $E4
SYS.SListGetByID .EQ $E6 _SListGetByID .EQ $E6
SYS.SListNewKey .EQ $E8 _SListNewKey .EQ $E8
SYS.SListLookup .EQ $EA _SListLookup .EQ $EA
SYS.SListFree .EQ $EC _SListFree .EQ $EC
SYS.SListNew .EQ $EE _SListNew .EQ $EE
*--------------------------------------F0 *--------------------------------------F0
* MEM * MEM
SYS.GetMem .EQ $F0 _GetMem .EQ $F0
SYS.Malloc .EQ $F0 _Malloc .EQ $F0
SYS.Realloc .EQ $F2 _Realloc .EQ $F2
SYS.GetMemPtr .EQ $F4 _GetMemPtr .EQ $F4
SYS.FreeMem .EQ $F6 _FreeMem .EQ $F6
SYS.Free .EQ $F8 _Free .EQ $F8
SYS.NewStkObj .EQ $FA _NewStkObj .EQ $FA
SYS.GetStkObjPtr .EQ $FC _GetStkObjPtr .EQ $FC
SYS.FreeStkObj .EQ $FE _FreeStkObj .EQ $FE
*-------------------------------------- *--------------------------------------
* MEM STRUCT * MEM STRUCT
*-------------------------------------- *--------------------------------------

View File

@ -17,7 +17,7 @@ NEW
* SYSCALLs Macros * SYSCALLs Macros
*-------------------------------------- *--------------------------------------
.MA SYSCALL .MA SYSCALL
ldx #SYS.]1 ldx #_]1
jsr A2osX.SYSCALL jsr A2osX.SYSCALL
.EM .EM
*-------------------------------------- *--------------------------------------
@ -32,7 +32,7 @@ NEW
.EM .EM
*-------------------------------------- *--------------------------------------
.MA SYSCALL2 .MA SYSCALL2
ldx #SYS.]1 ldx #_]1
jsr A2osX.SYSCALL2 jsr A2osX.SYSCALL2
.EM .EM
*-------------------------------------- *--------------------------------------

View File

@ -43,7 +43,7 @@ K.ReadDir.EL .BS 1
K.ReadDir.EPB .BS 1 K.ReadDir.EPB .BS 1
K.ReadDir.EC .BS 2 K.ReadDir.EC .BS 2
K.ReadDir.BufSize .BS 2 K.ReadDir.BufS .BS 2
K.ReadDir.hBuf .BS 1 K.ReadDir.hBuf .BS 1
.ED .ED
*-------------------------------------- *--------------------------------------
@ -94,13 +94,13 @@ K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ?
.2 lda (ZPPtr2),y .2 lda (ZPPtr2),y
sta K.MLI.PATH+1,y sta K.MLI.PATH+1,y
jsr K.ReadDir.AddToBuf jsr K.ReadDir.Add2B
iny iny
dex dex
bne .2 bne .2
txa Add ending 0 for C String txa Add ending 0 for C String
jsr K.ReadDir.AddToBuf jsr K.ReadDir.Add2B
jsr FS.ClrStat jsr FS.ClrStat
@ -160,7 +160,7 @@ K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ?
.7 iny .7 iny
lda (ZPPtr2),y lda (ZPPtr2),y
jsr K.ReadDir.AddToBuf jsr K.ReadDir.Add2B
eor #0 eor #0
bne .7 bne .7
@ -190,7 +190,7 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF
lda /512 lda /512
sta K.MLI.PARAMS+5 sta K.MLI.PARAMS+5
>MLICALL MLI.READ Read A block from directory K.ReadDir.DIR0 >MLICALL MLI.READ Read A block from directory
bcs .99 bcs .99
ldy #S.FD.DIR.EL Check if first run.... ldy #S.FD.DIR.EL Check if first run....
@ -245,29 +245,33 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF
tay tay
inx Any entry remaining ? inx Any entry remaining ?
bne .5 bne K.ReadDir.DIR1
iny iny
bne .5 bne K.ReadDir.DIR1
lda #MLI.E.EOF lda #MLI.E.EOF
sec sec
rts rts
*-------------------------------------- *--------------------------------------
* pass #1 compute BufSize... * pass #1 compute BufS...
*-------------------------------------- *--------------------------------------
.5 lda K.ReadDir.EPB K.ReadDir.DIR1 lda K.ReadDir.EPB
sta K.ReadDir.ECIB sta K.ReadDir.ECIB
lda #1 For Ending 0 lda #1 For Ending 0
sta K.ReadDir.BufSize sta K.ReadDir.BufS
stz K.ReadDir.BufSize+1 stz K.ReadDir.BufS+1
jsr K.ReadDir.P3Init jsr K.ReadDir.P3Init
stz .8+1
K.ReadDir.DIR1 lda (ZPPtr3) .10 lda (ZPPtr3)
beq .7 Free slot....goto next beq .7 Free slot....goto next
inc .8+1
and #$F0 get storage_type and #$F0 get storage_type
cmp #$F0 Volume header ? cmp #$F0 Volume header ?
beq .1 beq .1
@ -285,11 +289,11 @@ K.ReadDir.DIR1 lda (ZPPtr3)
.2 lda #2+S.STAT+3+S.STAT add "1." + S.STAT + "2.." + S.STAT... .2 lda #2+S.STAT+3+S.STAT add "1." + S.STAT + "2.." + S.STAT...
clc clc
adc K.ReadDir.BufSize adc K.ReadDir.BufS
sta K.ReadDir.BufSize sta K.ReadDir.BufS
bcc .3 bcc .3
inc K.ReadDir.BufSize+1 inc K.ReadDir.BufS+1
.3 inx X,Y = !Total entry Count .3 inx X,Y = !Total entry Count
bne .7 bne .7
@ -298,14 +302,19 @@ K.ReadDir.DIR1 lda (ZPPtr3)
beq K.ReadDir.DIR2 we reached last entry in whole DIR beq K.ReadDir.DIR2 we reached last entry in whole DIR
.7 jsr K.ReadDir.P3Next .7 jsr K.ReadDir.P3Next
bne K.ReadDir.DIR1 bne .10
.8 lda #$FF
bne K.ReadDir.DIR2
jmp K.ReadDir.DIR0
*-------------------------------------- *--------------------------------------
* pass #2 Fill Buffer...(ZPPtr1 & Ptr2 can now be trashed) * pass #2 Fill Buffer...(ZPPtr1 & Ptr2 can now be trashed)
*-------------------------------------- *--------------------------------------
K.ReadDir.DIR2 lda K.ReadDir.EPB K.ReadDir.DIR2 lda K.ReadDir.EPB
sta K.ReadDir.ECIB sta K.ReadDir.ECIB
>LDYA K.ReadDir.BufSize Get a BufSize bytes buffer for storing results >LDYA K.ReadDir.BufS Get a BufS bytes buffer for storing results
jsr K.ReadDir.GetBuf jsr K.ReadDir.GetBuf
bcc .10 bcc .10
@ -327,14 +336,14 @@ K.ReadDir.DIR2 lda K.ReadDir.EPB
bne .3 bne .3
jsr K.ReadDir.ADD. jsr K.ReadDir.ADD.
jsr K.ReadDir.AddStatACL jsr K.ReadDir.SA2B
jsr K.ReadDir.ADD.. jsr K.ReadDir.ADD..
bra .4 bra .4
.3 jsr K.ReadDir.AddFNToBuf .3 jsr K.ReadDir.FN2B
.4 jsr K.ReadDir.AddStatACL .4 jsr K.ReadDir.SA2B
lda K.ReadDir.EC decrease global counter... lda K.ReadDir.EC decrease global counter...
sec sec
@ -398,15 +407,14 @@ K.ReadDir.ADD..
ldx #2 filename="2.." ldx #2 filename="2.."
lda #'.' lda #'.'
.1 jsr K.ReadDir.AddToBuf Add X dot(s) .1 jsr K.ReadDir.Add2B Add X dot(s)
dex dex
bne .1 bne .1
txa txa
jmp K.ReadDir.AddToBuf Add Ending 0 jmp K.ReadDir.Add2B Add Ending 0
*-------------------------------------- *--------------------------------------
K.ReadDir.AddFNToBuf K.ReadDir.FN2B ldy #$1D version/min_version for lowercase bitmap
ldy #$1D version/min_version for lowercase bitmap
lda (ZPPtr3),y check bxxxxxxx.xxxxxxxx... lda (ZPPtr3),y check bxxxxxxx.xxxxxxxx...
bpl .7 not set, no lowercase bitmap present bpl .7 not set, no lowercase bitmap present
@ -445,18 +453,17 @@ K.ReadDir.AddFNToBuf
ldy #1 ldy #1
.8 lda (ZPPtr3),y .8 lda (ZPPtr3),y
jsr K.ReadDir.AddToBuf jsr K.ReadDir.Add2B
iny iny
dex dex
bne .8 bne .8
txa txa
* jsr K.ReadDir.AddToBuf * jsr K.ReadDir.Add2B
* rts * rts
*-------------------------------------- *--------------------------------------
K.ReadDir.AddToBuf K.ReadDir.Add2B sta (ZPPtr4)
sta (ZPPtr4)
inc ZPPtr4 inc ZPPtr4
bne .8 bne .8
@ -464,8 +471,7 @@ K.ReadDir.AddToBuf
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
K.ReadDir.AddStatACL K.ReadDir.SA2B jsr FS.DirEnt2Stat
jsr FS.DirEnt2Stat
ldy #S.FD.DIR.UID ldy #S.FD.DIR.UID
ldx #S.STAT.UID ldx #S.STAT.UID
@ -491,7 +497,7 @@ K.ReadDir.AddStat
ldy #0 ldy #0
.1 lda K.S.STAT,y .1 lda K.S.STAT,y
jsr K.ReadDir.AddToBuf jsr K.ReadDir.Add2B
iny iny
cpy #S.STAT cpy #S.STAT
bne .1 bne .1

View File

@ -183,7 +183,7 @@ ENVX.GetEnv sta ENVX.hEnv
bne .2 bne .2
inc inc
.2 ldx #SYS.GetMem .2 ldx #_GetMem
jsr JMP.M !!! Get a buffer In MAIN Mem !!! jsr JMP.M !!! Get a buffer In MAIN Mem !!!
bcs .99 bcs .99

View File

@ -1,7 +1,7 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
JMPX jmp (.1-SYS.StrVNew,x) JMPX jmp (.1-_StrVNew,x)
.1 .DA STRVX.StrVNew .1 .DA STRVX.StrVNew
.DA STRVX.StrVSet .DA STRVX.StrVSet

View File

@ -52,7 +52,7 @@ SLISTX.GetData jsr SLISTX.Select
sec sec
ror SLISTX.b0 ror SLISTX.b0
.11 ldx #SYS.GetMem .11 ldx #_GetMem
jsr JMP.M !!! Get a buffer In MAIN Mem !!! jsr JMP.M !!! Get a buffer In MAIN Mem !!!
bcs .9 bcs .9

View File

@ -306,7 +306,7 @@ STDIO.Get1 >PUSHA
>PUSHA >PUSHA
inc read 1 byte inc read 1 byte
>PUSHA >PUSHA
ldx #SYS.FRead ldx #_FRead
jmp K.FRead jmp K.FRead
*/-------------------------------------- */--------------------------------------
* # ungetc * # ungetc
@ -465,7 +465,7 @@ K.FRead.RTS rts
* ## RETURN VALUE * ## RETURN VALUE
* Y,A = Bytes Written * Y,A = Bytes Written
*\-------------------------------------- *\--------------------------------------
K.FWrite.PFT ldx #SYS.FWrite Needed by PFT K.FWrite.PFT ldx #_FWrite Needed by PFT
K.FWrite jsr PFT.CheckNode4 K.FWrite jsr PFT.CheckNode4
bcs K.FWrite.RET5 bcs K.FWrite.RET5

View File

@ -387,7 +387,7 @@ K.Expand ldy #2
lda /K.Buf256 lda /K.Buf256
>STYA FORPNT >STYA FORPNT
ldx #SYS.GetEnv ldx #_GetEnv
jsr K.GetEnv.I jsr K.GetEnv.I
bcs .70 bcs .70

View File

@ -15,7 +15,7 @@ K.Time >PULLW FORPNT
>MLICALL MLI.GETTIME >MLICALL MLI.GETTIME
>LDYAI GP.DATE >LDYAI GP.DATE
>STYA TXTPTR >STYA TXTPTR
ldx #SYS.PTime2Time ldx #_PTime2Time
jmp JMP.X jmp JMP.X
*/-------------------------------------- */--------------------------------------
* # StrFTime * # StrFTime