print the cancel character for ^X and ^Z.

based on testing, this applies to vt52 and vt100.
use the current x pos to choose between $56 and $57 (mouse text checkerboard)
so multiple characters look pretty.
This commit is contained in:
Kelvin Sherlock 2022-01-17 13:13:07 -05:00
parent 4eb578b94e
commit 186d71de47
3 changed files with 22 additions and 8 deletions

View File

@ -109,8 +109,11 @@ xoff
rts
can
sub
ext draw_char_raw
* cancel esc sequence and display error character
stz state
lda #$57 ; mouse text block
jmp draw_char_raw
rts
esc

View File

@ -214,7 +214,7 @@ vt100
ext vt100_esc,vt100_csi,vt100_csi_2
ext vt100_esc_pound,vt100_esc_lparen,vt100_esc_rparen
ext vt100_esc_bad,vt100_csi_bad
ext draw_char
ext draw_char,draw_char_raw
dw draw_char
dw vt52_esc
@ -290,7 +290,16 @@ ctrl_18
ctrl_1a
* vt100 - abort current escape sequence
* and display error character.
* TODO - display error character (mouse text)
*
* based on testing, this applies to vt52 and vt100;
* cancel character is drawn regardless of current state.
lda x
and #$1
ora #$56 ; $56 or $57
* lda #$57
jsr draw_char_raw
bit DECANM
bpl :vt52
lda #st_vt100

View File

@ -236,16 +236,20 @@ draw_char ent
bpl :normal
; invert it.
cmp #$60 ; `, first lowercase
bge :draw ; nothing to do for lowercase
bge draw_char_raw ; nothing to do for lowercase
cmp #$40 ; @, first uppercase
bcc :draw ; nothing to do for special
bcc draw_char_raw ; nothing to do for special
:uc and #%10111111 ; ~ $40
bra :draw
bra draw_char_raw
:normal ora #$80
:draw
draw_char_raw ent
* entry point for writing character to screen w/o processing it
* sta cursor_saved_char
* with DECAWM, x = 79, will CR LF (with scroll) before drawing character.
@ -280,8 +284,6 @@ draw_char ent
rts
:wrap
stz x
ldy y