From 1ec13590204a9f6422c4f328b9e27482d5343207 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Tue, 16 Feb 2021 00:21:07 +0100 Subject: [PATCH] can now distinguish files from directories --- src/dos_m65/assets/dos_parts_dir.s | 2 +- src/dos_m65/dev_sdcard/fs_hvsr_read_dir.s | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/dos_m65/assets/dos_parts_dir.s b/src/dos_m65/assets/dos_parts_dir.s index a1805c31..648ec0a8 100644 --- a/src/dos_m65/assets/dos_parts_dir.s +++ b/src/dos_m65/assets/dos_parts_dir.s @@ -28,7 +28,7 @@ dir_hdr_sd: ; 32 bytes - header dir_end: ; 19 bytes !byte $01, $01 ; link to the next line - dummy, will be regenerated by BASIC - !byte $00, $00 ; line number 0 + !byte $FF, $FF ; line number 65535 (for SD2IEC compatibility) !pet "blocks free." !byte $00, $00, $00 ; end of the line, end of program marker diff --git a/src/dos_m65/dev_sdcard/fs_hvsr_read_dir.s b/src/dos_m65/dev_sdcard/fs_hvsr_read_dir.s index 9be04389..bf171661 100644 --- a/src/dos_m65/dev_sdcard/fs_hvsr_read_dir.s +++ b/src/dos_m65/dev_sdcard/fs_hvsr_read_dir.s @@ -85,7 +85,7 @@ fs_hvsr_read_dir: @rdonly: lda #'<' - sta SD_DIRENT+$FF + sta SD_DIRENT+$FE ; Validate/fix characters in file name @@ -116,18 +116,18 @@ fs_hvsr_read_dir: dex bpl @lp1 - ; Determine type (file/directory), store marker offset in SD_DIRENT+$FE + ; Determine type (file/directory), store marker offset in SD_DIRENT+$FF lda SD_DIRENT+$56 and #$FE - - ; XXX code below does not work - ;cmp #$20 - ;beq @cklen_file ; branch on file - ;cmp #$10 - ;bne fs_hvsr_read_dir ; this type is unknown + beq @cklen_file ; XXX temporary workaround for XEMU - bra @cklen_file ; XXX temporary + and #$20 + bne @cklen_file ; branch on file + + lda SD_DIRENT+$56 + and #$10 + beq fs_hvsr_read_dir ; this type is unknown @cklen_dir: @@ -250,7 +250,9 @@ fs_hvsr_read_dir: fs_hvsr_read_dir_blocksfree: - ; Set pointer to '0 BLOCKS FREE.' line + ; Set pointer to '65535 BLOCKS FREE.' line + + ; XXX determine free space lda #$13 sta SD_ACPTR_LEN+0