From 6f54a3f22549572c736c5a19927e989829e6e17e Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Fri, 5 Mar 2021 22:23:00 +0100 Subject: [PATCH] floppy directory display is now complete --- src/dos_m65/dev_floppy/fs_1581_read_dir.s | 50 +++++++++++++++++++++-- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/src/dos_m65/dev_floppy/fs_1581_read_dir.s b/src/dos_m65/dev_floppy/fs_1581_read_dir.s index 05bad9f0..c1023604 100644 --- a/src/dos_m65/dev_floppy/fs_1581_read_dir.s +++ b/src/dos_m65/dev_floppy/fs_1581_read_dir.s @@ -260,18 +260,47 @@ fs_1581_read_dir: fs_1581_read_dir_blocksfree: - ; XXX calculate free blocks from BAM instead + ; Copy the 'BLOCKS FREE' line - ; Set pointer to 'BLOCKS FREE.' line + ldx #$13 +@lp1: + lda dir_end, x + sta FD_DIRENT_BUF, x + dex + bpl @lp1 + + ; Calculate free blocks from the BAM + + ldx #$10 +@lp2: + lda FD_BAM_CACHE_0+$100,x + jsr @sub_free_add + cpx #$FA + beq @lp2_end + lda FD_BAM_CACHE_0+$000,x + jsr @sub_free_add + inx + inx + inx + inx + inx + inx + bra @lp2 + +@lp2_end: + + + + ; Set pointer and length lda #$13 sta FD_ACPTR_LEN+0 lda #$00 sta FD_ACPTR_LEN+1 - lda #dir_end + lda #>FD_DIRENT_BUF sta FD_ACPTR_PTR+1 ; Mark end of directory @@ -281,3 +310,16 @@ fs_1581_read_dir_blocksfree: clc rts + + +@sub_free_add: + + ; Helper routine to calculate free blocks + + clc + adc FD_DIRENT_BUF+2 + sta FD_DIRENT_BUF+2 + bcc @noinc + inc FD_DIRENT_BUF+3 +@noinc: + rts