[Coco] Does the DIR option of OPEN work in Basic09 ?
L. Curtis Boyle
curtisboyle at sasktel.net
Sat May 22 22:58:33 EDT 2021
As others have mentioned, directory entries are not just the filenames, but also include a 24 bit start cluster number. The name is also high bit terminated (so basically +$80 on the ASCII value). You also should be checking for filenames that start with a CHR$(0), which is a directory entry for a deleted file.
A program to do this would look something like this:
PROCEDURE ReadDir
DIM dirprintname:STRING[29]
TYPE direntry=name:STRING[29];startcluster(3):BYTE
DIM dirent:direntry
DIM c:INTEGER
DIM curchar,dirpath:BYTE
DIM dirpathname:STRING2[256]
dirpathname="/dd/sys"
OPEN #dirpath,dirpathname:READ+DIR
WHILE NOT(EOF(#dirpath)) DO
GET #dirpath,dirent
IF LEFT$(dirent.name,1)<>CHR$(0) THEN
dirprintname=""
FOR c=1 TO 29
curchar=ASC(MID$(dirent.name,c,1))
EXITIF curchar>127 THEN
dirprintname=dirprintname+CHR$(curchar-128)
ENDEXIT
dirprintname=dirprintname+CHR$(curchar)
NEXT c
PRINT dirprintname
ENDIF
ENDWHILE
CLOSE #dirpath
END
L. Curtis Boyle
curtisboyle at sasktel.net
TRS-80 Color Computer Games website
http://www.lcurtisboyle.com/nitros9/coco_game_list.html
NitrOS-9 Ease of Use (EOU) Project
http://www.lcurtisboyle.com/nitros9/nitros9.html
> On May 22, 2021, at 1:33 PM, coco at jechar.ca wrote:
>
>
> I tried this OPEN #dp,dline$:READ+DIR
>
> But
> dline$="/dd/SYS"
> OPEN #dp,dline$:READ+DIR
> REPEAT
> READ #dp,line$
> PRINT line$
> UNTIL EOF(#dp)
>
> Did not print the SYS directory, Why ?
>
> Charlie
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> https://pairlist5.pair.net/mailman/listinfo/coco
>
More information about the Coco
mailing list