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
|
; BASIC header with a SYS call
|
||||||
|
|
||||||
.org $1BFF
|
.org $1BFF
|
||||||
.word Head ; Load address
|
.word Head ; Load address
|
||||||
Head: .word @Next
|
Head: .word @Next
|
||||||
.word .version ; Line number
|
.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
|
.byte $00 ; End of BASIC line
|
||||||
@Next: .word 0 ; BASIC end marker
|
@Next: .word 0 ; BASIC end marker
|
||||||
.reloc
|
.reloc
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; Actual code
|
; Actual code
|
||||||
|
|
||||||
; Close open files
|
; Close open files
|
||||||
|
|
||||||
jsr CLRCH
|
Start: jsr CLRCH
|
||||||
|
|
||||||
; Switch to the second charset
|
; Switch to the second charset
|
||||||
|
|
||||||
lda #14
|
lda #14
|
||||||
jsr BSOUT
|
jsr BSOUT
|
||||||
|
|
||||||
; Before doing anything else, we have to setup our banking configuration.
|
; Before doing anything else, we have to setup our banking configuration.
|
||||||
; Otherwise just the lowest 16K are actually RAM. Writing through the ROM
|
; Otherwise just the lowest 16K are actually RAM. Writing through the ROM
|
||||||
; to the underlying RAM works, but it is bad style.
|
; 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
|
pha ; ...and save it for later
|
||||||
lda #MMU_CFG_CC65 ; Bank0 with kernal ROM
|
lda #MMU_CFG_CC65 ; Bank0 with kernal ROM
|
||||||
sta MMU_CR
|
sta MMU_CR
|
||||||
|
|
||||||
; Save the zero page locations we need
|
; Save the zero page locations we need
|
||||||
|
|
||||||
ldx #zpspace-1
|
ldx #zpspace-1
|
||||||
L1: lda sp,x
|
L1: lda sp,x
|
||||||
sta zpsave,x
|
sta zpsave,x
|
||||||
dex
|
dex
|
||||||
bpl L1
|
bpl L1
|
||||||
|
|
||||||
; Clear the BSS data
|
; Clear the BSS data
|
||||||
|
|
||||||
jsr zerobss
|
jsr zerobss
|
||||||
|
|
||||||
; Save system stuff and setup the stack
|
; Save system stuff and setup the stack
|
||||||
|
|
||||||
pla ; Get MMU setting
|
pla ; Get MMU setting
|
||||||
sta mmusave
|
sta mmusave
|
||||||
|
|
||||||
tsx
|
tsx
|
||||||
stx spsave ; Save the system stack pointer
|
stx spsave ; Save the system stack pointer
|
||||||
|
@ -26,14 +26,18 @@
|
|||||||
.word Head ; Load address
|
.word Head ; Load address
|
||||||
Head: .word @Next
|
Head: .word @Next
|
||||||
.word .version ; Line number
|
.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
|
.byte $00 ; End of BASIC line
|
||||||
@Next: .word 0 ; BASIC end marker
|
@Next: .word 0 ; BASIC end marker
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; Actual code
|
; Actual code
|
||||||
|
|
||||||
ldx #zpspace-1
|
Start: ldx #zpspace-1
|
||||||
L1: lda sp,x
|
L1: lda sp,x
|
||||||
sta zpsave,x ; save the zero page locations we need
|
sta zpsave,x ; save the zero page locations we need
|
||||||
dex
|
dex
|
||||||
|
@ -25,14 +25,18 @@
|
|||||||
.word Head ; Load address
|
.word Head ; Load address
|
||||||
Head: .word @Next
|
Head: .word @Next
|
||||||
.word .version ; Line number
|
.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
|
.byte $00 ; End of BASIC line
|
||||||
@Next: .word 0 ; BASIC end marker
|
@Next: .word 0 ; BASIC end marker
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; Actual code
|
; Actual code
|
||||||
|
|
||||||
ldx #zpspace-1
|
Start: ldx #zpspace-1
|
||||||
L1: lda sp,x
|
L1: lda sp,x
|
||||||
sta zpsave,x ; Save the zero page locations we need
|
sta zpsave,x ; Save the zero page locations we need
|
||||||
dex
|
dex
|
||||||
|
@ -24,14 +24,18 @@
|
|||||||
.word Head ; Load address
|
.word Head ; Load address
|
||||||
Head: .word @Next
|
Head: .word @Next
|
||||||
.word .version ; Line number
|
.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
|
.byte $00 ; End of BASIC line
|
||||||
@Next: .word 0 ; BASIC end marker
|
@Next: .word 0 ; BASIC end marker
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; Actual code
|
; Actual code
|
||||||
|
|
||||||
ldx #zpspace-1
|
Start: ldx #zpspace-1
|
||||||
L1: lda sp,x
|
L1: lda sp,x
|
||||||
sta zpsave,x ; Save the zero page locations we need
|
sta zpsave,x ; Save the zero page locations we need
|
||||||
dex
|
dex
|
||||||
|
@ -28,14 +28,18 @@ IRQInd = $500 ; JMP $0000 - used as indirect IRQ vector
|
|||||||
.word Head ; Load address
|
.word Head ; Load address
|
||||||
Head: .word @Next
|
Head: .word @Next
|
||||||
.word .version ; Line number
|
.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
|
.byte $00 ; End of BASIC line
|
||||||
@Next: .word 0 ; BASIC end marker
|
@Next: .word 0 ; BASIC end marker
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; Actual code
|
; 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
|
sta ENABLE_RAM
|
||||||
ldx #zpspace-1
|
ldx #zpspace-1
|
||||||
L1: lda sp,x
|
L1: lda sp,x
|
||||||
|
@ -25,18 +25,17 @@
|
|||||||
Head: .word @Next
|
Head: .word @Next
|
||||||
.word .version ; Line number
|
.word .version ; Line number
|
||||||
.byte $9E ; SYS token
|
.byte $9E ; SYS token
|
||||||
.byte <(((@Start / 1000) .mod 10) + $30)
|
.byte <(((Start / 1000) .mod 10) + $30)
|
||||||
.byte <(((@Start / 100) .mod 10) + $30)
|
.byte <(((Start / 100) .mod 10) + $30)
|
||||||
.byte <(((@Start / 10) .mod 10) + $30)
|
.byte <(((Start / 10) .mod 10) + $30)
|
||||||
.byte <(((@Start / 1) .mod 10) + $30)
|
.byte <(((Start / 1) .mod 10) + $30)
|
||||||
.byte $00 ; End of BASIC line
|
.byte $00 ; End of BASIC line
|
||||||
@Next: .word 0 ; BASIC end marker
|
@Next: .word 0 ; BASIC end marker
|
||||||
@Start:
|
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; Actual code
|
; Actual code
|
||||||
|
|
||||||
ldx #zpspace-1
|
Start: ldx #zpspace-1
|
||||||
L1: lda sp,x
|
L1: lda sp,x
|
||||||
sta zpsave,x ; Save the zero page locations we need
|
sta zpsave,x ; Save the zero page locations we need
|
||||||
dex
|
dex
|
||||||
|
Loading…
x
Reference in New Issue
Block a user