From 0c6e8bc68ce22b32f840e5976014bcc3780a3b5f Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Sun, 27 Dec 2020 21:16:23 +0100 Subject: [PATCH] implemented first escape sequences --- .../screen_m65/mega65_chrout_screen_escmode.s | 42 ++++++++++++++++--- .../screen_m65/mega65_screen_tables_misc.s | 4 +- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/src/kernal/screen_m65/mega65_chrout_screen_escmode.s b/src/kernal/screen_m65/mega65_chrout_screen_escmode.s index bedbcc91..e93f8eeb 100644 --- a/src/kernal/screen_m65/mega65_chrout_screen_escmode.s +++ b/src/kernal/screen_m65/mega65_chrout_screen_escmode.s @@ -9,13 +9,47 @@ m65_chrout_screen_escmode: lda #$00 sta M65_ESCMODE - ; XXX + ; Select subroutine -m65_chrout_screen_escmode_end: + txa + ; XXX cmp #$BD ; SHIFT + '@' + ; XXX beq m65_chrout_esc_AT + sec + sbc #$30 ; '0' + cmp #$2E + bcs m65_chrout_esc_done + + ; XXX add workaround for SHIFT+key + + asl + tax + jmp (m65_chrout_screen_jumptable_escape, x) + +m65_chrout_esc_J: ; move cursor to the beginning of the line + + lda #$00 + sta M65__TXTCOL + bra m65_chrout_esc_done + +m65_chrout_esc_O: ; cancel quote, reverse, underline, flash, etc + + lda COLOR + and #$0F + sta COLOR + + lda #$00 + sta QTSW + sta INSRT + sta RVS + + ; FALLTROUGH + +m65_chrout_esc_done: jmp m65_chrout_screen_done + ; XXX: implement screen routines below: m65_chrout_esc_0: @@ -58,8 +92,6 @@ m65_chrout_esc_H: +nop m65_chrout_esc_I: +nop -m65_chrout_esc_J: - +nop m65_chrout_esc_K: +nop m65_chrout_esc_L: @@ -68,8 +100,6 @@ m65_chrout_esc_M: +nop m65_chrout_esc_N: +nop -m65_chrout_esc_O: - +nop m65_chrout_esc_P: +nop m65_chrout_esc_Q: diff --git a/src/kernal/screen_m65/mega65_screen_tables_misc.s b/src/kernal/screen_m65/mega65_screen_tables_misc.s index 98f7de36..b3b3412a 100644 --- a/src/kernal/screen_m65/mega65_screen_tables_misc.s +++ b/src/kernal/screen_m65/mega65_screen_tables_misc.s @@ -123,8 +123,8 @@ m65_chrout_screen_jumptable_escape: !word m65_chrout_esc_7 !word m65_chrout_esc_8 !word m65_chrout_esc_9 - !word m65_chrout_screen_done ; ':' - !word m65_chrout_screen_done ; ';' + !word m65_chrout_esc_LBR ; ':' + !word m65_chrout_esc_RBR ; ';' !word m65_chrout_screen_done ; '<' !word m65_chrout_screen_done ; '=' !word m65_chrout_screen_done ; '>'