Files
open-roms/src/kernal/interrupts/fe66.default_brk_handler.s
T

48 lines
1001 B
ArmAsm

;; #LAYOUT# STD * #TAKE
;; #LAYOUT# * KERNAL_0 #TAKE
;; #LAYOUT# * * #IGNORE
default_brk_handler:
; Implemented according to Computes Mapping the Commodore 64, pages 73-74
sei ; disable IRQs, to be sure they wont interfere
!ifdef CONFIG_PLATFORM_COMMODORE_64 {
ldx #$00
sta VIC_SCROLX ; turn the display off - we want as little screen artifacts as possible
}
cld ; make sure this dangerous flag is disabled
!ifdef HAS_OPCODES_65CE02 {
see ; disable extended stack
}
!ifdef CONFIG_MB_M65 {
; Make sure we have normal memory mapping
jsr map_NORMAL
lda VIC_CTRLA
and #%01000111
sta VIC_CTRLA
}
jsr JRESTOR
jsr JIOINIT
; Original routine calls just a part of CINT - but I am not sure which one. Most likely it
; skips the PAL/NTSC check by calling $E518. I suspect bug in the original ROM, lets
; call the whole CINT, just to be sure everything is initialized.
jsr CINT
cli
jmp (IBASIC_WARM_START)