[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