From 942c0b6b2f175ce0eb83e2c3ee0e373230cfd4d3 Mon Sep 17 00:00:00 2001 From: uz Date: Mon, 6 Aug 2012 18:45:26 +0000 Subject: [PATCH] Choose another way to fix the issue from r5804: When parsing the directory name, add a file mask, so the result is "$0:*" or similar. When specified like this, the drive accepts the r/o specifier ",R" so we don't have to complicate the code in open(). git-svn-id: svn://svn.cc65.org/cc65/trunk@5805 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/cbm/filename.s | 9 +++++++++ libsrc/cbm/open.s | 11 ++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/libsrc/cbm/filename.s b/libsrc/cbm/filename.s index 0674db07e..37caef21d 100644 --- a/libsrc/cbm/filename.s +++ b/libsrc/cbm/filename.s @@ -125,6 +125,15 @@ drivedone: stx fnbuf+1 sta fnbuf+0 +; Add the file mask + + lda #':' + sta fnbuf+2 + lda #'*' + sta fnbuf+3 + lda #4 + sta fnlen + ; No need to check the name. Length is already 2 lda #0 ; ok flag diff --git a/libsrc/cbm/open.s b/libsrc/cbm/open.s index 678dd0441..dadf82d33 100644 --- a/libsrc/cbm/open.s +++ b/libsrc/cbm/open.s @@ -96,7 +96,7 @@ parmok: jsr popax ; Get flags ; Invalid open mode -einval: lda #EINVAL + lda #EINVAL ; Error entry. Sets _errno, clears _oserror, returns -1 @@ -119,14 +119,11 @@ closeandexit: oserror:jmp __mappederrno - ; Read bit is set. Add an 'r' to the name -doread: ldy fnisfile ; File or directory? - beq isdir ; Don't add ,R for directory - lda #'r' +doread: lda #'r' jsr fnaddmode ; Add the mode to the name -isdir: lda #LFN_READ + lda #LFN_READ bne common ; Branch always ; If O_TRUNC is set, scratch the file, but ignore any errors @@ -202,4 +199,4 @@ nofile: ; ... else use SA=0 (read) .endproc - +