60 lines
818 B
ArmAsm
60 lines
818 B
ArmAsm
// #LAYOUT# STD * #TAKE
|
|
// #LAYOUT# X16 * #IGNORE
|
|
// #LAYOUT# * KERNAL_0 #TAKE
|
|
// #LAYOUT# * * #IGNORE
|
|
|
|
//
|
|
// Cursor keys handling within CHROUT
|
|
//
|
|
|
|
|
|
chrout_screen_CRSR_UP:
|
|
|
|
lda TBLX
|
|
beq chrout_screen_CRSR_done
|
|
dec TBLX
|
|
|
|
// FALLTROUGH
|
|
|
|
chrout_screen_CRSR_done:
|
|
|
|
jmp chrout_screen_calc_lptr_done
|
|
|
|
|
|
chrout_screen_CRSR_DOWN:
|
|
|
|
lda TBLX
|
|
cmp #24
|
|
bne !+
|
|
jsr screen_scroll_up
|
|
!:
|
|
inc TBLX
|
|
jmp chrout_screen_calc_lptr_done
|
|
|
|
|
|
chrout_screen_CRSR_RIGHT:
|
|
|
|
jsr screen_get_clipped_PNTR
|
|
cpy #39
|
|
beq_16 screen_advance_to_next_line
|
|
|
|
iny
|
|
!:
|
|
sty PNTR
|
|
bpl chrout_screen_CRSR_done // branch always
|
|
|
|
|
|
chrout_screen_CRSR_LEFT:
|
|
|
|
jsr screen_get_clipped_PNTR
|
|
dey
|
|
bpl !-
|
|
|
|
lda TBLX
|
|
beq chrout_screen_CRSR_done
|
|
|
|
dec TBLX
|
|
lda #39
|
|
sta PNTR
|
|
bne chrout_screen_CRSR_done // branch always
|