]> git.sur5r.net Git - cc65/commitdiff
Don't add a mode when opening files for reading
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 13 Mar 2003 23:09:53 +0000 (23:09 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 13 Mar 2003 23:09:53 +0000 (23:09 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2014 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/cbm/filename.s
libsrc/cbm/open.s

index ea1dfdee3bc55ec952c9790dd7646e38921e649a..4189bdefa20dd0efd4d8e0e05f865bd3e4c50ff7 100644 (file)
@@ -4,7 +4,7 @@
 ; File name handling for CBM file I/O
 ;
 
-        .export         fnparse, fnset, fncomplete
+        .export         fnparse, fnset, fnaddmode, fncomplete
         .export         fnunit, fnlen, fncmd, fnbuf
 
         .import         SETNAM
@@ -94,8 +94,7 @@ nameok: ldx     fnlen
         cpx     #18             ; Maximum length reached?
         bcs     invalidname
         lda     (ptr1),y        ; Reload char
-        sta     fnbuf,x         ; Store into buffer
-        inc     fnlen           ; Count characters
+        jsr     fnadd           ; Add character to name
         iny                     ; Next char from name
         bne     nameloop        ; Branch always
 
@@ -127,27 +126,28 @@ namedone:
 ;--------------------------------------------------------------------------
 ; fncomplete: Complete a filename by adding ",t,m" where t is the file type
 ; and m is the access mode passed in in the A register
+;
+; fnaddmode: Add ",m" to a filename, where "m" is passed in A
 
-.proc  fncomplete
-
+fncomplete:
        pha                     ; Save mode
-       ldx     fnlen
-       lda     #','
-       sta     fnbuf,x
-       inx
-       lda     __filetype
-       sta     fnbuf,x
-       inx
-       lda     #','
-       sta     fnbuf,x
-       inx
-       pla
-       sta     fnbuf,x
-       inx
-       stx     fnlen
-       rts
+        jsr     fnaddcomma      ; Add a comma
+        lda     __filetype
+        jsr     fnadd           ; Add the type
+        pla
+fnaddmode:
+        pha
+        jsr     fnaddcomma
+        pla
+
+fnadd:  ldx     fnlen
+        inc     fnlen
+        sta     fnbuf,x
+        rts
 
-.endproc
+fnaddcomma:
+        lda     #','
+        bne     fnadd
 
 ;--------------------------------------------------------------------------
 ; Data
@@ -167,4 +167,4 @@ fnchars:.byte   ".,-_+()"
 fncharcount = *-fnchars
 
 
-                  
+
index 5f2d7b6274d15b0f6c36b8253c29e465da46f2fa..a08bb31aa6bcde0b1e32dad34cda730e8d99596f 100644 (file)
@@ -13,7 +13,7 @@
 
         .import         SETLFS, OPEN, CLOSE
         .import         addysp, popax
-        .import         scratch, fnparse, fncomplete, fnset
+        .import         scratch, fnparse, fnaddmode, fncomplete, fnset
         .import         opencmdchannel, closecmdchannel, readdiskerror
         .import         __oserror
         .import         fnunit
@@ -109,7 +109,7 @@ notrunc:
         bne     append          ; Branch if yes
         ldx     #'w'
 append: txa
-        jsr     fncomplete
+        jsr     fncomplete      ; Add type and mode to the name
 
 ; Setup the real open flags
 
@@ -119,7 +119,7 @@ append: txa
 ; Read bit is set. Add an 'r' to the name
 
 doread: lda     #'r'
-        jsr     fncomplete
+        jsr     fnaddmode       ; Add the mode to the name
         lda     #LFN_READ
 
 ; Common read/write code. Flags in A, handle in tmp2