some work towards 2nd floppy
This commit is contained in:
1 parent
6180472a9b
commit
f6abf8e4cd
23 files changed
+370
-186
No files matched your search
@@ -20,56 +20,56 @@ fs_cbm_read_dir_open:
|
||||
ldx #$1F ; first fetch the template
|
||||
@lp1:
|
||||
lda dir_hdr,x
|
||||
sta FD_DIRENT_BUF,x
|
||||
sta F0_DIRENT_BUF,x
|
||||
dex
|
||||
bpl @lp1
|
||||
|
||||
ldx #$0F ; file name
|
||||
@lp2:
|
||||
lda SHARED_BUF_1+$04,x
|
||||
sta FD_DIRENT_BUF+$08,x
|
||||
sta F0_DIRENT_BUF+$08,x
|
||||
dex
|
||||
bpl @lp2
|
||||
|
||||
lda SHARED_BUF_1+$16 ; disk ID XXX test this on a disk with ID
|
||||
cmp #$A0
|
||||
beq @skip1
|
||||
sta FD_DIRENT_BUF+$1A
|
||||
sta F0_DIRENT_BUF+$1A
|
||||
@skip1:
|
||||
lda SHARED_BUF_1+$17
|
||||
cmp #$A0
|
||||
beq @skip2
|
||||
sta FD_DIRENT_BUF+$1B
|
||||
sta F0_DIRENT_BUF+$1B
|
||||
@skip2:
|
||||
|
||||
lda SHARED_BUF_1+$19 ; dos version
|
||||
sta FD_DIRENT_BUF+$1D
|
||||
sta F0_DIRENT_BUF+$1D
|
||||
lda SHARED_BUF_1+$1A
|
||||
sta FD_DIRENT_BUF+$1E
|
||||
sta F0_DIRENT_BUF+$1E
|
||||
|
||||
; Provide pointer to the header
|
||||
|
||||
lda #$20
|
||||
sta FD_ACPTR_LEN+0
|
||||
sta F0_ACPTR_LEN+0
|
||||
lda #$00
|
||||
sta FD_ACPTR_LEN+1
|
||||
sta F0_ACPTR_LEN+1
|
||||
|
||||
lda #<FD_DIRENT_BUF
|
||||
sta FD_ACPTR_PTR+0
|
||||
lda #>FD_DIRENT_BUF
|
||||
sta FD_ACPTR_PTR+1
|
||||
lda #<F0_DIRENT_BUF
|
||||
sta F0_ACPTR_PTR+0
|
||||
lda #>F0_DIRENT_BUF
|
||||
sta F0_ACPTR_PTR+1
|
||||
|
||||
; Set directory phase to 'file name'
|
||||
|
||||
lda #$01
|
||||
sta FD_DIR_PHASE
|
||||
sta F0_DIR_PHASE
|
||||
|
||||
; Copy 1st BAM sector to the cache
|
||||
|
||||
ldx #$00
|
||||
@lp3:
|
||||
lda SHARED_BUF_1+$100, x
|
||||
sta FD_BAM_CACHE_0,x
|
||||
sta F0_BAM_CACHE,x
|
||||
inx
|
||||
bne @lp3
|
||||
|
||||
@@ -85,14 +85,14 @@ fs_cbm_read_dir_open:
|
||||
ldx #$00
|
||||
@lp4:
|
||||
lda SHARED_BUF_1, x
|
||||
sta FD_BAM_CACHE_0+$100,x
|
||||
sta F0_BAM_CACHE+$100,x
|
||||
inx
|
||||
bne @lp4
|
||||
|
||||
; Set variables to point to the 1st directory entry in the 2nd sector of the buffer
|
||||
|
||||
lda #$08
|
||||
sta FD_DIRENT
|
||||
sta F0_DIRENT
|
||||
|
||||
; Make sure the 1st sector in buffer points to 2nd one
|
||||
|
||||
@@ -117,22 +117,22 @@ fs_cbm_read_dir:
|
||||
; Prepare output entry, starting from XX_DIRENT_BUF + initial offset
|
||||
|
||||
jsr util_dir_filesize_blocks
|
||||
ldx #(FD_DIRENT_BUF - XX_DIRENT_BUF)
|
||||
ldx #(F0_DIRENT_BUF - XX_DIRENT_BUF)
|
||||
ldx #$30
|
||||
jsr util_dir_basic
|
||||
|
||||
; Provide pointers and length
|
||||
|
||||
sta FD_ACPTR_LEN+1
|
||||
sta F0_ACPTR_LEN+1
|
||||
txa
|
||||
sec
|
||||
sbc #$30
|
||||
sta FD_ACPTR_LEN+0
|
||||
sta F0_ACPTR_LEN+0
|
||||
|
||||
lda #<(FD_DIRENT_BUF)
|
||||
sta FD_ACPTR_PTR+0
|
||||
lda #>(FD_DIRENT_BUF)
|
||||
sta FD_ACPTR_PTR+1
|
||||
lda #<(F0_DIRENT_BUF)
|
||||
sta F0_ACPTR_PTR+0
|
||||
lda #>(F0_DIRENT_BUF)
|
||||
sta F0_ACPTR_PTR+1
|
||||
clc
|
||||
rts
|
||||
|
||||
@@ -143,7 +143,7 @@ fs_cbm_read_dir_blocksfree:
|
||||
ldx #$13
|
||||
@lp1:
|
||||
lda dir_end, x
|
||||
sta FD_DIRENT_BUF, x
|
||||
sta F0_DIRENT_BUF, x
|
||||
dex
|
||||
bpl @lp1
|
||||
|
||||
@@ -151,11 +151,11 @@ fs_cbm_read_dir_blocksfree:
|
||||
|
||||
ldx #$10
|
||||
@lp2:
|
||||
lda FD_BAM_CACHE_0+$100,x
|
||||
lda F0_BAM_CACHE+$100,x
|
||||
jsr @sub_free_add
|
||||
cpx #$FA
|
||||
beq @lp2_end
|
||||
lda FD_BAM_CACHE_0+$000,x
|
||||
lda F0_BAM_CACHE+$000,x
|
||||
jsr @sub_free_add
|
||||
inx
|
||||
inx
|
||||
@@ -170,19 +170,19 @@ fs_cbm_read_dir_blocksfree:
|
||||
; Set pointer and length
|
||||
|
||||
lda #$13
|
||||
sta FD_ACPTR_LEN+0
|
||||
sta F0_ACPTR_LEN+0
|
||||
lda #$00
|
||||
sta FD_ACPTR_LEN+1
|
||||
sta F0_ACPTR_LEN+1
|
||||
|
||||
lda #<FD_DIRENT_BUF
|
||||
sta FD_ACPTR_PTR+0
|
||||
lda #>FD_DIRENT_BUF
|
||||
sta FD_ACPTR_PTR+1
|
||||
lda #<F0_DIRENT_BUF
|
||||
sta F0_ACPTR_PTR+0
|
||||
lda #>F0_DIRENT_BUF
|
||||
sta F0_ACPTR_PTR+1
|
||||
|
||||
; Mark end of directory
|
||||
|
||||
lda #$00
|
||||
sta FD_DIR_PHASE
|
||||
sta F0_DIR_PHASE
|
||||
|
||||
clc
|
||||
rts
|
||||
@@ -193,9 +193,9 @@ fs_cbm_read_dir_blocksfree:
|
||||
; Helper routine to calculate free blocks
|
||||
|
||||
clc
|
||||
adc FD_DIRENT_BUF+2
|
||||
sta FD_DIRENT_BUF+2
|
||||
adc F0_DIRENT_BUF+2
|
||||
sta F0_DIRENT_BUF+2
|
||||
bcc @noinc
|
||||
inc FD_DIRENT_BUF+3
|
||||
inc F0_DIRENT_BUF+3
|
||||
@noinc:
|
||||
rts
|
||||
Reference in new issue
Block a user