mirror of
https://github.com/cc65/cc65.git
synced 2025-01-10 19:29:45 +00:00
Don't hardcode the address of the SYS call for the startup code of the
Commodore machines. git-svn-id: svn://svn.cc65.org/cc65/trunk@4474 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
61b2834508
commit
c7a33334ba
@ -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
|
||||
|
@ -26,14 +26,18 @@
|
||||
.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
|
||||
|
@ -25,14 +25,18 @@
|
||||
.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
|
||||
|
@ -24,14 +24,18 @@
|
||||
.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
|
||||
|
@ -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
|
||||
|
@ -25,18 +25,17 @@
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user