62 lines
940 B
ArmAsm
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
|