From 1913697cd3c17a87509de10edd679dff3664172d Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Mon, 28 Dec 2020 18:27:18 +0100 Subject: [PATCH] more MEGA65 screen editor features --- src/aliases/,aliases_petscii_codes.s | 2 +- .../screen_m65/mega65_chrout_screen_control.s | 4 - .../mega65_chrout_screen_control_2.s | 21 ++++- .../screen_m65/mega65_chrout_screen_escmode.s | 88 +++++++++++++------ 4 files changed, 82 insertions(+), 33 deletions(-) diff --git a/src/aliases/,aliases_petscii_codes.s b/src/aliases/,aliases_petscii_codes.s index 6ea92426..199d3f53 100644 --- a/src/aliases/,aliases_petscii_codes.s +++ b/src/aliases/,aliases_petscii_codes.s @@ -56,7 +56,7 @@ !set KEY_TAB_SET_CLR = $18 ; XXX add to M65 matrix !set KEY_UNDERLINE_ON = $02 ; XXX add to M65 matrix !set KEY_UNDERLINE_OFF = $82 ; XXX add to M65 matrix - !set KEY_FLASHING_ON = $0F ; XXX add to M65 matrix + !set KEY_FLASHING_ON = $0F !set KEY_FLASHING_OFF = $8F ; XXX add to M65 matrix } diff --git a/src/kernal/screen_m65/mega65_chrout_screen_control.s b/src/kernal/screen_m65/mega65_chrout_screen_control.s index 07b9d196..fd6e930a 100644 --- a/src/kernal/screen_m65/mega65_chrout_screen_control.s +++ b/src/kernal/screen_m65/mega65_chrout_screen_control.s @@ -83,10 +83,6 @@ m65_chrout_screen_UNDERLINE_ON: +nop m65_chrout_screen_UNDERLINE_OFF: +nop -m65_chrout_screen_FLASHING_ON: - +nop -m65_chrout_screen_FLASHING_OFF: - +nop m65_chrout_screen_TAB_SET_CLR: +nop m65_chrout_screen_BELL: diff --git a/src/kernal/screen_m65/mega65_chrout_screen_control_2.s b/src/kernal/screen_m65/mega65_chrout_screen_control_2.s index f0d235f2..97fdfb00 100644 --- a/src/kernal/screen_m65/mega65_chrout_screen_control_2.s +++ b/src/kernal/screen_m65/mega65_chrout_screen_control_2.s @@ -10,6 +10,25 @@ m65_chrout_screen_ESC: sta M65_ESCMODE bra m65_chrout_screen_ctrl2_end +; Flashing support + +m65_chrout_screen_FLASHING_ON: + + lda COLOR + ora #%00010000 + bra m65_chrout_screen_FLASHING_common + +m65_chrout_screen_FLASHING_OFF: ; XXX how to trigger it? + + lda COLOR + and #%11101111 + + ; FALLTROUGH + +m65_chrout_screen_FLASHING_common: + + sta COLOR + bra m65_chrout_screen_ctrl2_end ; 'REVERSE' mode support @@ -149,8 +168,6 @@ m65_chrout_screen_INS_winmode: bra m65_chrout_screen_ctrl2_end - - m65_chrout_screen_INS_copy: dez diff --git a/src/kernal/screen_m65/mega65_chrout_screen_escmode.s b/src/kernal/screen_m65/mega65_chrout_screen_escmode.s index 21b7ff8a..b97b3e1b 100644 --- a/src/kernal/screen_m65/mega65_chrout_screen_escmode.s +++ b/src/kernal/screen_m65/mega65_chrout_screen_escmode.s @@ -40,7 +40,20 @@ m65_chrout_screen_escmode: tax jmp (m65_chrout_screen_jumptable_escape, x) -m65_chrout_esc_J: ; move cursor to the beginning of the line +m65_chrout_esc_LBR: ; set monochrome display + + lda #$80 + +skip_2_bytes_trash_nvz + + ; FALLTROUGH + +m65_chrout_esc_RBR: ; set color display + + lda #$00 + jsr m65_colorset + bra m65_chrout_esc_done_1 + +m65_chrout_esc_J: ; move cursor to the beginning of the line XXX update for window mode lda #$00 sta M65__TXTCOL @@ -80,6 +93,36 @@ m65_chrout_esc_done_1: jmp m65_chrout_screen_done +m65_chrout_esc_P: ; erase everything from start of the line to cursor XXX update for window mode + + phz + ldz #$FF + lda #$20 +@1: + inz + sta [M65_LPNT_SCR], z + cpz M65__TXTCOL + bne @1 + + plz + bra m65_chrout_esc_done_1 + +m65_chrout_esc_Q: ; erase everything from cursor till the end of line XXX update for window mode + + phz + ldx M65_SCRMODE + lda m65_scrtab_txtwidth,x + taz + lda #$20 +@1: + dez + sta [M65_LPNT_SCR], z + cpz M65__TXTCOL + bne @1 + + plz + bra m65_chrout_esc_done_1 + m65_chrout_esc_X: ; cycle through available screen modes lda M65_SCRMODE @@ -137,47 +180,40 @@ m65_chrout_esc_R: ; 'reversed' screen colors ; XXX: implement screen routines below: -m65_chrout_esc_AT: +m65_chrout_esc_AT: ; clears everything from cursor till end of the screen +nop -m65_chrout_esc_A: +m65_chrout_esc_A: ; enable auto-insert mode +nop -m65_chrout_esc_B: +m65_chrout_esc_B: ; set bottom-right window position +nop -m65_chrout_esc_C: +m65_chrout_esc_C: ; disable auto-insert mode +nop -m65_chrout_esc_D: +m65_chrout_esc_D: ; delete current line, move content up +nop -m65_chrout_esc_E: +m65_chrout_esc_E: ; disable cursor flashing +nop -m65_chrout_esc_F: +m65_chrout_esc_F: ; enable cursor flashing +nop -m65_chrout_esc_G: +m65_chrout_esc_G: ; enable bell +nop -m65_chrout_esc_H: +m65_chrout_esc_H: ; disable bell +nop -m65_chrout_esc_I: +m65_chrout_esc_I: ; insert empty line, move content down +nop -m65_chrout_esc_L: +m65_chrout_esc_L: ; enable screen scrolling +nop -m65_chrout_esc_M: +m65_chrout_esc_M: ; disable screen scrolling, wrap-around mode +nop -m65_chrout_esc_P: +m65_chrout_esc_T: ; set top-left window position +nop -m65_chrout_esc_Q: +m65_chrout_esc_V: ; scroll screen up one line +nop -m65_chrout_esc_T: +m65_chrout_esc_W: ; scroll screen down one line +nop -m65_chrout_esc_V: +m65_chrout_esc_Y: ; set default TAB stops +nop -m65_chrout_esc_W: - +nop -m65_chrout_esc_Y: - +nop -m65_chrout_esc_Z: - +nop -m65_chrout_esc_LBR: - +nop -m65_chrout_esc_RBR: +m65_chrout_esc_Z: ; clear all the TAB stops +nop + jmp m65_chrout_screen_done