Files
open-roms/c64/basic/basic_cold_start.s
T

62 lines
948 B
ArmAsm

// BASIC Cold start entry point
// Compute's Mapping the 64 p211
basic_cold_start:
// Setup vectors at $300
ldy #$0B
!:
lda basic_vector_defaults_1, y
sta IERROR, y
dey
bpl !-
// Setup misc vectors
ldy #$04
!:
lda basic_vector_defaults_2, y
sta ADRAY1, y
dey
bpl !-
// Setup USRPOK
lda #$4C // JMP opcode
sta USRPOK
lda #<do_ILLEGAL_QUANTITY_error
sta USRADD+0
lda #>do_ILLEGAL_QUANTITY_error
sta USRADD+1
// Print startup banner
jsr printf // XXX don't use printf, keep it for debug purposes only
TARGET_HOOK_BANNER()
// Print PAL/NTSC
ldx #30 // NTSC
lda TVSFLG
beq !+
ldx #31 // PAL
!:
jsr print_packed_message
// Work out free bytes, display them
jsr basic_do_new
lda MEMSIZ+0
sec
sbc TXTTAB+0
tax
lda MEMSIZ+1
sbc TXTTAB+1
jsr print_integer
lda #$20
jsr JCHROUT
// Print the rest of the start up message
ldx #34
jsr print_packed_message
// jump into warm start loop
jmp basic_warm_start