Files
open-roms/c64/kernal/interrupts/fe47.default_nmi_handler.s
T

31 lines
607 B
ArmAsm

default_nmi_handler:
;; Implemented according to Compute's Mapping the Commodore 64, page 74
;; and to https://www.c64-wiki.com/wiki/Interrupt
;; Save registers, sequence according to Compute's Mapping the Commodore 64, page 73
pha
txa
pha
tya
pha
;; XXX: RS-232 support is not implemented
;; XXX confirm NMIs from CIA, or no other NMI will arrive!
jsr cartridge_check
bcc +
jmp (ICART_WARM_START)
*
;; According to C64 Wiki, if STOP key is pressed, the routine assumes warm start request
jsr JSTOP
bcs +
jmp return_from_interrupt ; no STOP pressed
*
jmp (CBINV) ; STOP + RESTORE