]> git.sur5r.net Git - cc65/commitdiff
Don't hardcode the address of the SYS call for the startup code of the
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 23 Nov 2009 12:01:24 +0000 (12:01 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 23 Nov 2009 12:01:24 +0000 (12:01 +0000)
Commodore machines.

git-svn-id: svn://svn.cc65.org/cc65/trunk@4474 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/c128/crt0.s
libsrc/c16/crt0.s
libsrc/c64/crt0.s
libsrc/pet/crt0.s
libsrc/plus4/crt0.s
libsrc/vic20/crt0.s

index d0a61ab00a403cc58ced470045f6725d693cdcc6..a9fd8e6d156330e5c2f642685c050e35898b2531 100644 (file)
@@ -28,52 +28,56 @@ IRQInd              = $2FD  ; JMP $0000 - used as indirect IRQ vector
 
 ; BASIC header with a SYS call
 
-       .org    $1BFF
+       .org    $1BFF
         .word   Head            ; Load address
 Head:   .word   @Next
         .word   .version        ; Line number
-        .byte   $9E,"7181"      ; SYS 7181
+        .byte   $9E             ; SYS token
+        .byte   <(((Start / 1000) .mod 10) + $30)
+        .byte   <(((Start /  100) .mod 10) + $30)
+        .byte   <(((Start /   10) .mod 10) + $30)
+        .byte   <(((Start /    1) .mod 10) + $30)
         .byte   $00             ; End of BASIC line
 @Next:  .word   0               ; BASIC end marker
-       .reloc
+       .reloc
 
 ; ------------------------------------------------------------------------
 ; Actual code
 
 ; Close open files
 
-       jsr     CLRCH
+Start:         jsr     CLRCH
 
 ; Switch to the second charset
 
-       lda     #14
-       jsr     BSOUT
+       lda     #14
+       jsr     BSOUT
 
 ; Before doing anything else, we have to setup our banking configuration.
 ; Otherwise just the lowest 16K are actually RAM. Writing through the ROM
 ; to the underlying RAM works, but it is bad style.
 
-       lda     MMU_CR          ; Get current memory configuration...
+       lda     MMU_CR          ; Get current memory configuration...
                pha                     ; ...and save it for later
                lda     #MMU_CFG_CC65   ; Bank0 with kernal ROM
-       sta     MMU_CR
+       sta     MMU_CR
 
 ; Save the zero page locations we need
 
                ldx     #zpspace-1
-L1:    lda     sp,x
-       sta     zpsave,x
-       dex
+L1:    lda     sp,x
+       sta     zpsave,x
+       dex
                bpl     L1
 
 ; Clear the BSS data
 
-       jsr     zerobss
+       jsr     zerobss
 
 ; Save system stuff and setup the stack
 
-       pla                     ; Get MMU setting
-       sta     mmusave
+       pla                     ; Get MMU setting
+       sta     mmusave
 
                tsx
                stx     spsave          ; Save the system stack pointer
index 805d1c5ab2648604b0b02a994e4a82ed9b5e0e11..9ac67f8f3725476c678d5419ca8c007b9c1eb204 100644 (file)
         .word   Head            ; Load address
 Head:   .word   @Next
         .word   .version        ; Line number
-        .byte   $9E,"4109"     ; SYS 4109
+        .byte   $9E             ; SYS token
+        .byte   <(((Start / 1000) .mod 10) + $30)
+        .byte   <(((Start /  100) .mod 10) + $30)
+        .byte   <(((Start /   10) .mod 10) + $30)
+        .byte   <(((Start /    1) .mod 10) + $30)
         .byte   $00             ; End of BASIC line
 @Next:  .word   0               ; BASIC end marker
 
 ; ------------------------------------------------------------------------
 ; Actual code
 
-               ldx     #zpspace-1
+Start:  ldx    #zpspace-1
 L1:    lda     sp,x
        sta     zpsave,x        ; save the zero page locations we need
        dex
index 18ef109048821c6860eb4b6fedbbc99c7d44f36a..9f434ecbed32bd77e1bf917550615cdad1a1e06a 100644 (file)
         .word   Head            ; Load address
 Head:   .word   @Next
         .word   .version        ; Line number
-        .byte   $9E,"2061"      ; SYS 2061
+        .byte   $9E             ; SYS token
+        .byte   <(((Start / 1000) .mod 10) + $30)
+        .byte   <(((Start /  100) .mod 10) + $30)
+        .byte   <(((Start /   10) .mod 10) + $30)
+        .byte   <(((Start /    1) .mod 10) + $30)
         .byte   $00             ; End of BASIC line
 @Next:  .word   0               ; BASIC end marker
 
 ; ------------------------------------------------------------------------
 ; Actual code
 
-       ldx     #zpspace-1
+Start:  ldx            #zpspace-1
 L1:    lda     sp,x
        sta     zpsave,x        ; Save the zero page locations we need
        dex
index 23ff90ea353d4ca1bcfe34d602e0cff6f0588b82..135147d368de4ae43c84d6303065628011be745a 100644 (file)
         .word   Head            ; Load address
 Head:   .word   @Next
         .word   .version        ; Line number
-        .byte   $9E,"1037"      ; SYS 1037
+        .byte   $9E             ; SYS token
+        .byte   <(((Start / 1000) .mod 10) + $30)
+        .byte   <(((Start /  100) .mod 10) + $30)
+        .byte   <(((Start /   10) .mod 10) + $30)
+        .byte   <(((Start /    1) .mod 10) + $30)
         .byte   $00             ; End of BASIC line
 @Next:  .word   0               ; BASIC end marker
 
 ; ------------------------------------------------------------------------
 ; Actual code
 
-               ldx     #zpspace-1
+Start:  ldx    #zpspace-1
 L1:    lda     sp,x
        sta     zpsave,x        ; Save the zero page locations we need
        dex
index 9cf776a774ce6b6ce68329aaae8e4e1fe0b706c2..e5e2fd7bfaf17eab2071455d7ff43c2e0d1c382b 100644 (file)
@@ -28,14 +28,18 @@ IRQInd              = $500  ; JMP $0000 - used as indirect IRQ vector
         .word   Head            ; Load address
 Head:   .word   @Next
         .word   .version        ; Line number
-        .byte   $9E,"4109"     ; SYS 4109
+        .byte   $9E             ; SYS token
+        .byte   <(((Start / 1000) .mod 10) + $30)
+        .byte   <(((Start /  100) .mod 10) + $30)
+        .byte   <(((Start /   10) .mod 10) + $30)
+        .byte   <(((Start /    1) .mod 10) + $30)
         .byte   $00             ; End of BASIC line
 @Next:  .word   0               ; BASIC end marker
 
 ; ------------------------------------------------------------------------
 ; Actual code
 
-        sei                     ; No interrupts since we're banking out the ROM
+Start:  sei                     ; No interrupts since we're banking out the ROM
         sta     ENABLE_RAM
                ldx     #zpspace-1
 L1:    lda     sp,x
index a5d61386551f27a3be3c8f95a34ff96bc3c56919..559f22dff3180b81c8bd95d9ef6e02279f6f41c8 100644 (file)
 Head:   .word   @Next
         .word   .version        ; Line number
         .byte   $9E             ; SYS token
-        .byte   <(((@Start / 1000) .mod 10) + $30)
-        .byte   <(((@Start /  100) .mod 10) + $30)
-        .byte   <(((@Start /   10) .mod 10) + $30)
-        .byte   <(((@Start /    1) .mod 10) + $30)
+        .byte   <(((Start / 1000) .mod 10) + $30)
+        .byte   <(((Start /  100) .mod 10) + $30)
+        .byte   <(((Start /   10) .mod 10) + $30)
+        .byte   <(((Start /    1) .mod 10) + $30)
         .byte   $00             ; End of BASIC line
 @Next:  .word   0               ; BASIC end marker
-@Start:
 
 ; ------------------------------------------------------------------------
 ; Actual code
 
-       ldx     #zpspace-1
+Start:  ldx            #zpspace-1
 L1:    lda     sp,x
        sta     zpsave,x        ; Save the zero page locations we need
        dex