more work on SD card directory display
This commit is contained in:
1 parent
d79c1041e6
commit
ca54482c08
2 files changed
+88
-17
No files matched your search
@@ -39,14 +39,15 @@ dir_ext_02: !pet "prg" ; PRG
|
|||||||
dir_ext_03: !pet "usr" ; USR
|
dir_ext_03: !pet "usr" ; USR
|
||||||
dir_ext_04: !pet "rel" ; REL
|
dir_ext_04: !pet "rel" ; REL
|
||||||
dir_ext_05: !pet "dir" ; directory
|
dir_ext_05: !pet "dir" ; directory
|
||||||
dir_ext_06: !pet "d67" ; CBM 2040 (DOS 1) - disk image
|
; dir_ext_06: !pet "tap" ; tape image
|
||||||
dir_ext_07: !pet "d64" ; CBM 1541 / 2031 / 3040 / 4040 - disk image
|
; dir_ext_07: !pet "d67" ; CBM 2040 (DOS 1) - disk image
|
||||||
dir_ext_08: !pet "d71" ; CBM 1571 - disk image
|
; dir_ext_08: !pet "d64" ; CBM 1541 / 2031 / 3040 / 4040 - disk image
|
||||||
dir_ext_09: !pet "d81" ; CBM 1581 - disk image
|
; dir_ext_09: !pet "d71" ; CBM 1571 - disk image
|
||||||
dir_ext_0A: !pet "d80" ; CBM 8050 - disk image
|
; dir_ext_0A: !pet "d81" ; CBM 1581 - disk image
|
||||||
dir_ext_0B: !pet "d81" ; CBM 8250 / 1001 - disk image
|
; dir_ext_0B: !pet "d80" ; CBM 8050 - disk image
|
||||||
dir_ext_0C: !pet "d90" ; CBM D9060 / D9090 - hard disk image
|
; dir_ext_0C: !pet "d81" ; CBM 8250 / 1001 - disk image
|
||||||
dir_ext_0D: !pet "d1m" ; CMD FD 2000 / 4000 - disk image (DD)
|
; dir_ext_0D: !pet "d90" ; CBM D9060 / D9090 - hard disk image
|
||||||
dir_ext_0E: !pet "d2m" ; CMD FD 2000 / 4000 - disk image (HD)
|
; dir_ext_0E: !pet "d1m" ; CMD FD 2000 / 4000 - disk image (DD)
|
||||||
dir_ext_0F: !pet "d4m" ; CMD FD 4000 - disk image (ED)
|
; dir_ext_0F: !pet "d2m" ; CMD FD 2000 / 4000 - disk image (HD)
|
||||||
dir_ext_10: !pet "dhd" ; CMD HD - hard disk image
|
; dir_ext_10: !pet "d4m" ; CMD FD 4000 - disk image (ED)
|
||||||
|
; dir_ext_11: !pet "dhd" ; CMD HD - hard disk image
|
||||||
@@ -63,11 +63,12 @@ fs_hvsr_read_dir:
|
|||||||
|
|
||||||
; If nothing to read, output 'blocks free'
|
; If nothing to read, output 'blocks free'
|
||||||
|
|
||||||
bcc fs_hvsr_read_dir_blocksfree
|
+bcc fs_hvsr_read_dir_blocksfree
|
||||||
|
|
||||||
; Dirent structure - important fields:
|
; Dirent structure - important fields:
|
||||||
; - $00-$3F - file name
|
; - $00-$3F - file name
|
||||||
; - $40 - file name length
|
; - $40 - file name length
|
||||||
|
; - $51-$54 - file length
|
||||||
; - $55 - file type and attributes
|
; - $55 - file type and attributes
|
||||||
|
|
||||||
; Validate/fix characters in file name
|
; Validate/fix characters in file name
|
||||||
@@ -98,6 +99,8 @@ fs_hvsr_read_dir:
|
|||||||
dex
|
dex
|
||||||
bpl @lp1
|
bpl @lp1
|
||||||
|
|
||||||
|
inc $D020
|
||||||
|
|
||||||
; Validate file name length
|
; Validate file name length
|
||||||
|
|
||||||
; XXX check for directory!
|
; XXX check for directory!
|
||||||
@@ -111,17 +114,85 @@ fs_hvsr_read_dir:
|
|||||||
cmp #$11
|
cmp #$11
|
||||||
bcs fs_hvsr_read_dir ; if stripped name is 17 characters or longer, try the next entry
|
bcs fs_hvsr_read_dir ; if stripped name is 17 characters or longer, try the next entry
|
||||||
sta SD_DIRENT+$40 ; store corrected file name length
|
sta SD_DIRENT+$40 ; store corrected file name length
|
||||||
|
tax
|
||||||
|
|
||||||
; Detect file type (+64 for read-only, +128 = damaged)
|
; Detect file type (+64 for read-only, +128 = damaged)
|
||||||
|
|
||||||
; XXX detect image
|
lda SD_DIRENT, x
|
||||||
|
cmp #$2E
|
||||||
|
bne fs_hvsr_read_dir ; 3-character extension is required!
|
||||||
|
|
||||||
; Try to prepare output row
|
; XXX temporary; detect file type by extension instead
|
||||||
|
|
||||||
|
; Try to prepare output row, starting from SD_DIRENT+$80
|
||||||
|
|
||||||
; XXX provide proper implementation here
|
lda #$01 ; link to the next line - dummy, will be regenerated by BASIC
|
||||||
|
sta SD_DIRENT+$80
|
||||||
|
sta SD_DIRENT+$81
|
||||||
|
lda #$00 ; XXX calculate length in blocks instead
|
||||||
|
sta SD_DIRENT+$82
|
||||||
|
sta SD_DIRENT+$83
|
||||||
|
|
||||||
jmp fs_hvsr_read_dir_blocksfree ; XXX temporary
|
ldx #$04 ; XXX put correct amount of spaces instead
|
||||||
|
lda #' '
|
||||||
|
sta SD_DIRENT+$80, x
|
||||||
|
inx
|
||||||
|
sta SD_DIRENT+$80, x
|
||||||
|
|
||||||
|
lda #$22 ; opening quote
|
||||||
|
sta SD_DIRENT+$80, x
|
||||||
|
|
||||||
|
ldy #$FF ; put file name
|
||||||
|
|
||||||
|
@lp2:
|
||||||
|
|
||||||
|
inx
|
||||||
|
iny
|
||||||
|
lda SD_DIRENT, y
|
||||||
|
sta SD_DIRENT+$80,x
|
||||||
|
|
||||||
|
bne @lp2
|
||||||
|
inx
|
||||||
|
|
||||||
|
lda #$22 ; closing quote
|
||||||
|
sta SD_DIRENT+$80, x
|
||||||
|
inx
|
||||||
|
|
||||||
|
lda #' ' ; XXX put correct amount of spaces instead
|
||||||
|
sta SD_DIRENT+$80, x
|
||||||
|
inx
|
||||||
|
sta SD_DIRENT+$80, x
|
||||||
|
inx
|
||||||
|
|
||||||
|
; XXX put read-only mark if needed
|
||||||
|
|
||||||
|
ldy #$03 ; XXX select proper file type instead
|
||||||
|
lda dir_ext_01+0, y
|
||||||
|
sta SD_DIRENT+$80, x
|
||||||
|
inx
|
||||||
|
lda dir_ext_01+1, y
|
||||||
|
sta SD_DIRENT+$80, x
|
||||||
|
inx
|
||||||
|
lda dir_ext_01+2, y
|
||||||
|
sta SD_DIRENT+$80, x
|
||||||
|
inx
|
||||||
|
|
||||||
|
; No 'damaged' mark is needed here; put ending 0 and provide pointer
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
sta SD_DIRENT+$80, x
|
||||||
|
inx
|
||||||
|
|
||||||
|
stx SD_ACPTR_LEN+0
|
||||||
|
sta SD_ACPTR_LEN+1
|
||||||
|
|
||||||
|
lda #<(SD_DIRENT+$80)
|
||||||
|
sta SD_ACPTR_PTR+0
|
||||||
|
lda #>(SD_DIRENT+$80)
|
||||||
|
sta SD_ACPTR_PTR+1
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
fs_hvsr_read_dir_blocksfree:
|
fs_hvsr_read_dir_blocksfree:
|
||||||
|
|
||||||
@@ -152,7 +223,6 @@ fs_hvsr_read_dir_blocksfree:
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
;
|
;
|
||||||
; Helper routines
|
; Helper routines
|
||||||
;
|
;
|
||||||
|
|||||||
Reference in new issue
Block a user