Files
open-roms/c64/kernal/screen/chrout_screen_control.s
T

62 lines
940 B
ArmAsm

//
// CHROUT routine - screen support, control codes
//
chrout_screen_control:
txa
chrout_try_jumptable:
ldx #(__chrout_screen_jumptable_codes_end - chrout_screen_jumptable_codes - 1)
chrout_try_jumptable_loop:
cpx #(__chrout_screen_jumptable_quote_guard - chrout_screen_jumptable_codes - 1)
bne chrout_try_jumptable_loop_noquote
// Is this insert/quote mode?
tay
lda QTSW
ora INSRT
beq !+
tya
jmp chrout_screen_quote
!:
tya
// FALLTROUGH
chrout_try_jumptable_loop_noquote:
cmp chrout_screen_jumptable_codes, x
bne !+
// Found, perform a jump to subroutine
lda chrout_screen_jumptable_hi, x
pha
lda chrout_screen_jumptable_lo, x
pha
rts
!:
dex
bpl chrout_try_jumptable_loop
chrout_try_COLOR:
ldx #$0F
chrout_try_color_loop:
cmp colour_codes,x
bne !+
stx COLOR
jmp chrout_screen_done
!:
dex
bpl chrout_try_color_loop
// Unknown code, or key not requiring any handling
jmp chrout_screen_done