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

63 lines
1.2 KiB
ArmAsm

// BASIC Cold start entry point
// Compute's Mapping the 64 p211
basic_cold_start:
// Setup BASIC vectors at $0300
// Initialise interpretor
// Print start up message
// Print coloured part of the message
// ldy #>startup_message
// lda #<startup_message
// jsr print_string
jsr printf // XXX don't use printf, keep it for debug purposes only
startup_banner:
TARGET_HOOK_BANNER()
// Print PAL/NTSC
ldx #30 // NTSC
lda TVSFLG
beq !+
ldx #31 // PAL
!:
jsr print_packed_message
// Work out free bytes, and display
jsr basic_do_new
lda basic_top_of_memory_ptr+0
sec
sbc basic_end_of_text_ptr+0
tax
lda basic_top_of_memory_ptr+1
sbc basic_end_of_text_ptr+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
startup_message: // XXX this is probably not needed anymore
// Clear the screen
.byte $93
// Vertical bars in different colours
.byte $1C,$B4
.byte $9E,$B5
.byte $1E,$A1
// <RVS><WHITE>MEGA<NORMAL>BASIC\r\r
.byte $12,$05,$4D,$45,$47,$41,$92
.byte $42,$41,$53,$49,$43
.byte $20,$56,$32,$2e,$30,$2e,$30
.byte $0D,$0D
.byte 0