]> git.sur5r.net Git - cc65/blobdiff - libsrc/c128/mainargs.s
Typo
[cc65] / libsrc / c128 / mainargs.s
index fb5fd1554da2d30b8876e6c673d29e5e9d8c7a4b..f53ceafa083875bfc03030afde4852bd20bd0e7a 100644 (file)
 
 MAXARGS  = 10                   ; Maximum number of arguments allowed
 REM      = $8f                  ; BASIC token-code
-NAME_LEN = 16                   ; maximum length of command-name
+NAME_LEN = 16                   ; Maximum length of command-name
 
-
-; Get possible command-line arguments. Goes into the special INIT segment,
+; Get possible command-line arguments. Goes into the special ONCE segment,
 ; which may be reused after the startup code is run
 
-.segment        "INIT"
+.segment        "ONCE"
 
 initmainargs:
 
 ; Assume that the program was loaded, a moment ago, by the traditional LOAD
 ; statement.  Save the "most-recent filename" as argument #0.
-; Because the buffer, that we're copying into, was zeroed out,
-; we don't need to add a NUL character.
-;
+
+        lda     #0              ; The terminating NUL character
         ldy     FNAM_LEN
         cpy     #NAME_LEN + 1
         bcc     L1
-        ldy     #NAME_LEN - 1   ; limit the length
+        ldy     #NAME_LEN       ; Limit the length
+        bne     L1              ; Branch always
 L0:     lda     #FNAM           ; Load vector address for FETCH routine
         ldx     FNAM_BANK       ; Load bank for FETCH routine
         jsr     INDFET          ; Load byte from (FETVEC),y
-        sta     name,y          ; Save byte from filename
-L1:     dey
+L1:     sta     name,y          ; Save byte from filename
+        dey
         bpl     L0
         inc     __argc          ; argc always is equal to, at least, 1
 
 ; Find the "rem" token.
-;
+
         ldx     #0
 L2:     lda     BASIC_BUF,x
-        beq     done            ; no "rem," no args.
+        beq     done            ; No "rem," no args.
         inx
         cmp     #REM
         bne     L2
@@ -73,7 +72,7 @@ next:   lda     BASIC_BUF,x
         beq     done            ; End of line reached
         inx
         cmp     #' '            ; Skip leading spaces
-        beq     next            ;
+        beq     next
 
 ; Found start of next argument. We've incremented the pointer in X already, so
 ; it points to the second character of the argument. This is useful since we
@@ -128,15 +127,13 @@ done:   lda     #<argv
         stx     __argv + 1
         rts
 
-; These arrays are zeroed before initmainargs is called.
-; char  name[16+1];
-; char* argv[MAXARGS+1]={name};
-;
-.bss
+.segment        "INIT"
+
 term:   .res    1
 name:   .res    NAME_LEN + 1
 
 .data
+
+; char* argv[MAXARGS+1]={name};
 argv:   .addr   name
         .res    MAXARGS * 2
-