screen editor now supports tabulators

This commit is contained in:
FeralChild64 committed 2019-10-31 17:10:03 +01:00
1 parent 01024278f4
commit bdcebb554f
11 files changed
+84 -19

No files matched your search

+4
View File
@@ -51,6 +51,10 @@ __kb_matrix_ctrl:
.byte $9C,$12,$04,$1E,$03,$06,$14,$18
.byte $1F,$19,$07,$9E,$02,$08,$15,$16
.byte $12,$09,$0A,$92,$0D,$0B,$0F,$0E
#if CONFIG_EDIT_TABULATORS
.byte $00,$10,$0C,$00,KEY_TAB_FW,$1B,$00,KEY_TAB_BW
#else
.byte $00,$10,$0C,$00,$00,$1B,$00,$00
#endif
.byte $1C,$00,$1D,$00,$00,$1F,$1E,$00
.byte $90,$06,$00,$05,$00,$00,$11,$00
+16 -12
View File
@@ -337,18 +337,6 @@ scnkey_output_65_no_shift:
!:
lda (KEYTAB), y // retrieve key code from standard matrix
// XXX this will be needed for extended screen editor and C128 keyboard
// cmp KEY_TAB_FW // special handling for SHIFT+TAB
// bne scnkey_got_petscii // XXX or to scnkey_handle_caps_lock
// lda SHFLAG // special handling for SHIFT+TAB
// and #KEY_FLAG_SHIFT
// bne !+
// lda KEY_TAB_FW
// bne scnkey_got_petscii // branch alWAYS
// !:
// lda KEY_TAB_BW // bne scnkey_got_petscii if CAPS LOCK is handled
#endif // CONFIG_KEYBOARD_C128 or CONFIG_KEYBOARD_C65
#if CONFIG_KEYBOARD_C128_CAPS_LOCK || CONFIG_KEYBOARD_C65_CAPS_LOCK
@@ -391,6 +379,22 @@ scnkey_handle_caps_lock:
scnkey_got_petscii:
#if CONFIG_KEYBOARD_C128 && CONFIG_EDIT_TABULATORS
// Special handling for SHIFT+TAB; it is easier than creating new matrix
tax
cmp #KEY_TAB_FW
bne !+
lda SHFLAG
and #KEY_FLAG_SHIFT
beq !+
ldx #KEY_TAB_BW
!:
txa
#endif // CONFIG_KEYBOARD_C128 and CONFIG_EDIT_TABULATORS
beq scnkey_no_keys // branch if we have no PETSCII code for this key
ldy NDX
sta KEYD, y
+4 -1
View File
@@ -12,6 +12,7 @@ chrout_screen_CRSR_UP:
sta PNTR
jmp chrout_screen_calc_lptr_done
chrout_screen_CRSR_DOWN:
lda PNTR
@@ -25,15 +26,17 @@ chrout_screen_CRSR_DOWN:
jsr screen_scroll_up_if_on_last_line
jmp chrout_screen_calc_lptr_done
chrout_screen_CRSR_LEFT:
lda TBLX
ora PNTR
beq !+ // recalculating pointer is not really necessary, but this is a very rare case nevertheless
beq !+ // top-left corner, recalculating pointer is not necessary, but this is a very rare case nevertheless
dec PNTR
!:
jmp chrout_screen_calc_lptr_done
chrout_screen_CRSR_RIGHT:
inc PNTR
@@ -24,6 +24,10 @@ __chrout_screen_jumptable_quote_guard:
#if CONFIG_EDIT_STOPQUOTE
.byte KEY_STOP
#endif
#if CONFIG_EDIT_TABULATORS
.byte KEY_TAB_BW
.byte KEY_TAB_FW
#endif
.byte KEY_INS
.byte KEY_DEL
@@ -48,6 +52,10 @@ chrout_screen_jumptable_lo:
.byte <(chrout_screen_CRSR_UP - 1)
#if CONFIG_EDIT_STOPQUOTE
.byte <(chrout_screen_STOP - 1)
#endif
#if CONFIG_EDIT_TABULATORS
.byte <(chrout_screen_TAB_BW - 1)
.byte <(chrout_screen_TAB_FW - 1)
#endif
.byte <(chrout_screen_INS - 1)
.byte <(chrout_screen_DEL - 1)
@@ -69,6 +77,10 @@ chrout_screen_jumptable_hi:
.byte >(chrout_screen_CRSR_UP - 1)
#if CONFIG_EDIT_STOPQUOTE
.byte >(chrout_screen_STOP - 1)
#endif
#if CONFIG_EDIT_TABULATORS
.byte >(chrout_screen_TAB_BW - 1)
.byte >(chrout_screen_TAB_FW - 1)
#endif
.byte >(chrout_screen_INS - 1)
.byte >(chrout_screen_DEL - 1)
+33
View File
@@ -0,0 +1,33 @@
//
// Tabulation keys handling within CHROUT
//
#if CONFIG_EDIT_TABULATORS
chrout_screen_TAB_FW:
lda PNTR
ora #%00000111
sta PNTR
inc PNTR
jmp chrout_screen_calc_lptr_done
chrout_screen_TAB_BW:
lda TBLX
ora PNTR
beq !+ // top-left corner, recalculating pointer is not necessary, but this is a very rare case nevertheless
dec PNTR
lda PNTR
and #%11111000
sta PNTR
!:
jmp chrout_screen_calc_lptr_done
#endif // CONFIG_EDIT_TABULATORS