diff --git a/vt100.ctrl.S b/vt100.ctrl.S index 46851b0..3099cf3 100644 --- a/vt100.ctrl.S +++ b/vt100.ctrl.S @@ -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 diff --git a/vt100.main.S b/vt100.main.S index a8c8a1a..3be2c85 100644 --- a/vt100.main.S +++ b/vt100.main.S @@ -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 diff --git a/vt100.screen.S b/vt100.screen.S index 529deae..d9cba64 100644 --- a/vt100.screen.S +++ b/vt100.screen.S @@ -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