work towards INS key support in MEGA65 mode
This commit is contained in:
1 parent
3fc9f6fb29
commit
c5f195fcdc
2 files changed
+74
-2
No files matched your search
@@ -79,8 +79,6 @@ m65_chrout_screen_CLR:
|
|||||||
nop
|
nop
|
||||||
m65_chrout_screen_HOME:
|
m65_chrout_screen_HOME:
|
||||||
nop
|
nop
|
||||||
m65_chrout_screen_INS:
|
|
||||||
nop
|
|
||||||
m65_chrout_screen_TAB:
|
m65_chrout_screen_TAB:
|
||||||
nop
|
nop
|
||||||
m65_chrout_screen_LINE_FEED:
|
m65_chrout_screen_LINE_FEED:
|
||||||
|
|||||||
@@ -49,3 +49,77 @@ m65_chrout_screen_STOP:
|
|||||||
sta QTSW
|
sta QTSW
|
||||||
sta INSRT
|
sta INSRT
|
||||||
jmp_8 m65_chrout_screen_ctrl2_end
|
jmp_8 m65_chrout_screen_ctrl2_end
|
||||||
|
|
||||||
|
|
||||||
|
// INS key
|
||||||
|
|
||||||
|
m65_chrout_screen_INS:
|
||||||
|
|
||||||
|
// First prepare the pointer to the current row
|
||||||
|
|
||||||
|
jsr m65_helper_scrlpnt_color
|
||||||
|
jsr m65_helper_scrlpnt_to_screen
|
||||||
|
|
||||||
|
// Check for windowed mode
|
||||||
|
|
||||||
|
lda M65_SCRWINMODE
|
||||||
|
bmi_16 m65_chrout_screen_INS_winmode
|
||||||
|
|
||||||
|
// Check if last character of the line is space
|
||||||
|
|
||||||
|
ldy M65_SCRMODE
|
||||||
|
lda m65_scrtab_txtwidth,y
|
||||||
|
dec_a
|
||||||
|
taz
|
||||||
|
lda_lp (M65_LPNT_SCR), z
|
||||||
|
cmp #$20
|
||||||
|
bne_16 m65_chrout_screen_ctrl2_end
|
||||||
|
phz
|
||||||
|
|
||||||
|
// Last character is space - move the characters
|
||||||
|
|
||||||
|
jsr m65_chrout_screen_INS_copy
|
||||||
|
|
||||||
|
// Store space in the current character cell
|
||||||
|
|
||||||
|
lda #$20
|
||||||
|
sta_lp (M65_LPNT_SCR), z
|
||||||
|
|
||||||
|
// Move the color memory
|
||||||
|
|
||||||
|
jsr m65_helper_scrlpnt_color
|
||||||
|
plz
|
||||||
|
jsr m65_chrout_screen_INS_copy
|
||||||
|
|
||||||
|
// Store current colour in the current character cell
|
||||||
|
|
||||||
|
lda COLOR
|
||||||
|
and #$0F
|
||||||
|
sta_lp (M65_LPNT_SCR), z
|
||||||
|
|
||||||
|
// Increase insert mode count (which causes quote-mode like behaviour) and quit
|
||||||
|
|
||||||
|
inc INSRT
|
||||||
|
jmp_8 m65_chrout_screen_ctrl2_end
|
||||||
|
|
||||||
|
m65_chrout_screen_INS_winmode:
|
||||||
|
|
||||||
|
// Check if last character of the line within window is space
|
||||||
|
|
||||||
|
// XXX provide implementation
|
||||||
|
|
||||||
|
jmp_8 m65_chrout_screen_ctrl2_end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
m65_chrout_screen_INS_copy:
|
||||||
|
|
||||||
|
dez
|
||||||
|
lda_lp (M65_LPNT_SCR), z
|
||||||
|
inz
|
||||||
|
sta_lp (M65_LPNT_SCR), z
|
||||||
|
dez
|
||||||
|
cpz M65__TXTCOL
|
||||||
|
bne m65_chrout_screen_INS_copy
|
||||||
|
|
||||||
|
rts
|
||||||
Reference in new issue
Block a user