]> git.sur5r.net Git - cc65/commitdiff
Fixes for program arguments and TAP header by Stefan Haubenthal.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 3 Jul 2011 13:23:07 +0000 (13:23 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 3 Jul 2011 13:23:07 +0000 (13:23 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@5071 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/atmos/crt0.s
libsrc/atmos/mainargs.s

index 5a5d0852aee52439b077062c3a7e4df6ee570cab..15aa9509a7740ca5923b6b6d9c6edf8f502deca5 100644 (file)
@@ -28,7 +28,7 @@
        .byte   $00                             ; $2AF
        .byte   $80                             ; $2AE Machine code flag
        .byte   $C7                             ; $2AD Autoload flag
-       .dbyt   __ZPSAVE_LOAD__                 ; $2AB
+       .dbyt   __ZPSAVE_LOAD__ - 1             ; $2AB
        .dbyt   __RAM_START__                   ; $2A9
        .byte   $00                             ; $2A8
        .byte   ((.VERSION >> 8) & $0F) + '0'
index d06cec3ef4ab43a50ca153326ab01a39ad1d538a..54fdb61e989731fc3a34bcdb31986b4c9ac520e3 100644 (file)
@@ -11,8 +11,9 @@
 
 MAXARGS         = 10                   ; Maximum number of arguments allowed
 REM     = $9d                  ; BASIC token-code
-NAME_LEN =                   ; maximum length of command-name
+NAME_LEN = 16                  ; maximum length of command-name
 BASIC_BUF = $35
+FNAM    = $293
 
 
 ;---------------------------------------------------------------------------
@@ -23,6 +24,16 @@ BASIC_BUF = $35
 
 .proc  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.
+;
+       ldy     #NAME_LEN - 1   ; limit the length
+L0:    lda     FNAM,y
+       sta     name,y
+       dey
+       bpl     L0
        inc     __argc          ; argc always is equal to, at least, 1
 
 ; Find the "rem" token.
@@ -55,15 +66,12 @@ found:      cmp     #'"'            ; Is the argument quoted?
 setterm:sta    term            ; Set end of argument marker
 
 ; Now store a pointer to the argument into the next slot. Since the BASIC
-; input buffer is located at the start of a RAM page, no calculations are
-; necessary.
+; input buffer is located at the zero page, no calculations are necessary.
 
        txa                     ; Get low byte
        add     #<BASIC_BUF     ; Not at page boundary
        sta     argv,y          ; argv[y]= &arg
        iny
-;;     lda     #>BASIC_BUF
-;;     sta     argv,y
        iny
        inc     __argc          ; Found another arg