86 lines
1.2 KiB
ArmAsm
86 lines
1.2 KiB
ArmAsm
;; #LAYOUT# STD * #TAKE
|
|
;; #LAYOUT# * KERNAL_0 #TAKE
|
|
;; #LAYOUT# * * #IGNORE
|
|
|
|
|
|
default_irq_handler:
|
|
|
|
!ifdef CONFIG_RS232_UP9600 {
|
|
|
|
jsr rs232_count_channels
|
|
cpx #$00
|
|
beq @1
|
|
jsr up9600_irq
|
|
@1:
|
|
}
|
|
|
|
|
|
!ifdef CONFIG_MB_M65 {
|
|
|
|
jsr M65_MODEGET
|
|
bcs @2
|
|
|
|
; Map KERNAL_C segment
|
|
|
|
lda VIC_CTRLA
|
|
pha
|
|
ora #%00100000
|
|
sta VIC_CTRLA
|
|
|
|
; Call the native mode blink routine
|
|
|
|
jsr (VKC__m65_cursor_blink)
|
|
|
|
; Restore mapping and quit
|
|
|
|
pla
|
|
sta VIC_CTRLA
|
|
|
|
bra default_irq_handler_common
|
|
@2:
|
|
jsr cursor_blink
|
|
|
|
default_irq_handler_common:
|
|
|
|
jsr JSCNKEY
|
|
jsr JUDTIM ; update jiffy clock
|
|
|
|
} else {
|
|
|
|
jsr cursor_blink
|
|
jsr JSCNKEY
|
|
jsr JUDTIM ; update jiffy clock
|
|
}
|
|
|
|
|
|
!ifdef HAS_TAPE {
|
|
|
|
; Turn tape motor on/off depending on the button state
|
|
; For CAS1 (tape motor interlock) variable description, see Mapping the C64, page 7
|
|
|
|
lda CPU_R6510
|
|
and #$10
|
|
beq @3 ; branch if tape button pressed
|
|
|
|
jsr tape_motor_off
|
|
lda #$00
|
|
sta CAS1
|
|
beq @4 ; branch always
|
|
@3:
|
|
lda CAS1
|
|
bne @4
|
|
jsr tape_motor_on
|
|
@4:
|
|
}
|
|
|
|
|
|
!ifdef CONFIG_PLATFORM_COMMODORE_64 {
|
|
|
|
; Acknowledge CIA interrupt and return
|
|
jmp clear_cia1_interrupt_flag_and_return_from_interrupt
|
|
|
|
} else {
|
|
|
|
jmp return_from_interrupt
|
|
}
|