From 12d66a2bd081f2bb068f5fc24f76f82eaf257551 Mon Sep 17 00:00:00 2001 From: Christian Groessler Date: Mon, 11 Sep 2017 23:35:16 +0200 Subject: [PATCH] Atari: add line-drawing chars in font. Also adds a check for valid ASCII char (<= 0x7f) in ProcIn, and fixes two typos in a2vt100.s. --- drivers/a2vt100.s | 4 +- drivers/atrvt100.s | 35 +--- drivers/atrvt100font.s | 402 ++++++++++++++++++++++++++++------------- 3 files changed, 284 insertions(+), 157 deletions(-) diff --git a/drivers/a2vt100.s b/drivers/a2vt100.s index 5e70a16..252485f 100644 --- a/drivers/a2vt100.s +++ b/drivers/a2vt100.s @@ -1646,7 +1646,7 @@ ExitScr ; ------------------------------------- ; table reverse to ScreenCode ; -; This tabel is used to convert incoming +; This table is used to convert incoming ; reverse chars. ; ------------------------------------- @@ -1671,7 +1671,7 @@ rtsc;_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f ; ------------------------------------- ; table line drawing to ScreenCode ; -; This tabel is used to convert incoming +; This table is used to convert incoming ; line drawing chars. ; ------------------------------------- diff --git a/drivers/atrvt100.s b/drivers/atrvt100.s index 5518345..b0b6702 100644 --- a/drivers/atrvt100.s +++ b/drivers/atrvt100.s @@ -192,8 +192,9 @@ ProcIn lda EMode ; handle esc mode cpy #$20 ; control? bcc Special tya + bmi PIrts ; ignore non-ASCII jsr CPrnChr ; print to screen - rts +PIrts rts ; to far for branch PIEsc jmp Esc @@ -945,7 +946,7 @@ crsrU ldx #ScrsrR jsr SendStr @@ -1154,6 +1155,7 @@ PrnChr sta xVector ; save char bvc PCreg cmp #$60 ; line drawing char? bcc PCreg + sbc #$60 ; adapt index for table starting at offset $60 tax lda ltsc,x ; line drawing to ScreenCode eor Rvs @@ -1614,37 +1616,18 @@ ExitScr ; ------------------------------------- ; table line drawing to ScreenCode ; -; This tabel is used to convert incoming -; line drawing chars. +; This table is used to convert incoming +; line drawing chars. First entry is for +; offset $60 (see PrnChr). ; ------------------------------------- ltsc;_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f -; --- unused ------------------------------------------------------- -.byt $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; 0_ -.byt $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; 1_ - -; --- reverse ------------------------------------------------------ -; ◆ ▒ ␉ ␌ ␍ ␊ ° ± ␤ ␋ ┘ ┐ ┌ └ ┼ ⎺ -; ' ' ▒ ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' | ' ' ' ' | | _ -.byt $20,$57,$20,$20,$20,$20,$20,$20,$20,$20,$7c,$20,$20,$7c,$7c,$1f ; 2_ -; ⎻ ─ ⎼ ⎽ ├ ┤ ┴ ┬ │ ≤ ≥ π ≠ £ · ' ' -; _ _ _ _ | | _ _ | ' ' ' ' ' ' ' ' ' ' ' ' ' ' -.byt $1f,$1f,$1f,$1f,$7c,$7c,$1f,$1f,$7c,$20,$20,$20,$20,$20,$20,$20 ; 3_ - -; --- unused ------------------------------------------------------- -.byt $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; 4_ -.byt $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; 5_ - ; --- normal ------------------------------------------------------- ; ◆ ▒ ␉ ␌ ␍ ␊ ° ± ␤ ␋ ┘ ┐ ┌ └ ┼ ⎺ -; ◆ ▒ ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ⎸ ' ' _ ⎿ ⎿ ⎺ -;.byt $5b,$56,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$5f,$a0,$9f,$54,$54,$4c ; 6_ -.byt $5b,$56,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$43,$45,$51,$5a,$53,$4c ; 6_ +.byt $5b,$5c,$40,$48,$49,$4a,$4b,$50,$54,$55,$43,$45,$51,$5a,$53,$4d ; 6_ ; ⎻ ─ ⎼ ⎽ ├ ┤ ┴ ┬ │ ≤ ≥ π ≠ £ · ' ' -; ─ _ _ _ ⎿ ⎸ ⎿ _ ⎸ ' ' ' ' ' ' ' ' ' ' ' ' ' ' -;.byt $53,$9f,$9f,$9f,$54,$5f,$54,$9f,$5f,$a0,$a0,$a0,$a0,$a0,$a0,$a0 ; 7_ -.byt $53,$52,$9f,$9f,$41,$44,$54,$9f,$7c,$a0,$a0,$a0,$a0,$a0,$a0,$a0 ; 7_ +.byt $4c,$52,$4f,$4e,$41,$44,$58,$57,$7c,$59,$5d,$5e,$5f,$47,$46,$00 ; 7_ ; ------------------------------------- ; table keyboard to ASCII diff --git a/drivers/atrvt100font.s b/drivers/atrvt100font.s index b9f4d6a..ea9ce37 100644 --- a/drivers/atrvt100font.s +++ b/drivers/atrvt100font.s @@ -652,14 +652,22 @@ vt100_font: .byte %11111111 .byte %00000000 -;$40 - heart card +;$40 - original: heart card; now 'HT' (line drawing mode) +; .byte %00000000 +; .byte %00110110 +; .byte %01111111 +; .byte %01111111 +; .byte %00111110 +; .byte %00011100 +; .byte %00001000 +; .byte %00000000 .byte %00000000 - .byte %00110110 - .byte %01111111 - .byte %01111111 - .byte %00111110 - .byte %00011100 - .byte %00001000 + .byte %01010000 + .byte %01110000 + .byte %01010000 + .byte %00001110 + .byte %00000100 + .byte %00000100 .byte %00000000 ;$41 - mid left window @@ -712,74 +720,130 @@ vt100_font: .byte %00011000 .byte %00011000 -;$46 - right slant box - .byte %00000011 - .byte %00000111 - .byte %00001110 +;$46 - original: right slant box; now 'dot' (line drawing mode) +; .byte %00000011 +; .byte %00000111 +; .byte %00001110 +; .byte %00011100 +; .byte %00111000 +; .byte %01110000 +; .byte %11100000 +; .byte %11000000 + .byte %00000000 + .byte %00000000 + .byte %00000000 + .byte %00011000 + .byte %00011000 + .byte %00000000 + .byte %00000000 + .byte %00000000 + +;$47 - original: left slant box; now 'pound' (line drawing mode) +; .byte %11000000 +; .byte %11100000 +; .byte %01110000 +; .byte %00111000 +; .byte %00011100 +; .byte %00001110 +; .byte %00000111 +; .byte %00000011 .byte %00011100 - .byte %00111000 + .byte %00110110 + .byte %01100000 + .byte %01111100 + .byte %01100000 + .byte %00110000 + .byte %01111110 + .byte %00000000 + +;$48 - original: right slant solid; now 'FF' (line drawing mode) +; .byte %00000001 +; .byte %00000011 +; .byte %00000111 +; .byte %00001111 +; .byte %00011111 +; .byte %00111111 +; .byte %01111111 +; .byte %11111111 + .byte %00000000 .byte %01110000 - .byte %11100000 - .byte %11000000 + .byte %01000000 + .byte %01101110 + .byte %01001000 + .byte %00001100 + .byte %00001000 + .byte %00000000 -;$47 - left slant box - .byte %11000000 - .byte %11100000 +;$49 - original: low right solid; now 'CR' (line drawing mode) +; .byte %00000000 +; .byte %00000000 +; .byte %00000000 +; .byte %00000000 +; .byte %00001111 +; .byte %00001111 +; .byte %00001111 +; .byte %00001111 + .byte %00000000 .byte %01110000 - .byte %00111000 - .byte %00011100 - .byte %00001110 - .byte %00000111 - .byte %00000011 + .byte %01000000 + .byte %01001100 + .byte %01111010 + .byte %00001100 + .byte %00001010 + .byte %00000000 -;$48 - right slant solid - .byte %00000001 - .byte %00000011 - .byte %00000111 - .byte %00001111 - .byte %00011111 - .byte %00111111 - .byte %01111111 +;$4A - original: left slant solid; now 'LF' (line drawing mode) +; .byte %10000000 +; .byte %11000000 +; .byte %11100000 +; .byte %11110000 +; .byte %11111000 +; .byte %11111100 +; .byte %11111110 +; .byte %11111111 + .byte %00000000 + .byte %01000000 + .byte %01000000 + .byte %01001110 + .byte %01111000 + .byte %00001100 + .byte %00001000 + .byte %00000000 + +;$4B - original: up right solid; now ° (line drawing mode) +; .byte %00001111 +; .byte %00001111 +; .byte %00001111 +; .byte %00001111 +; .byte %00000000 +; .byte %00000000 +; .byte %00000000 +; .byte %00000000 + .byte %00000000 + .byte %00011000 + .byte %01100110 + .byte %01100110 + .byte %00011000 + .byte %00000000 + .byte %00000000 + .byte %00000000 + +;$4C - original: up left solid; now upper line +; .byte %11110000 +; .byte %11110000 +; .byte %11110000 +; .byte %11110000 +; .byte %00000000 +; .byte %00000000 +; .byte %00000000 +; .byte %00000000 + .byte %00000000 .byte %11111111 - -;$49 - low right solid - .byte %00000000 - .byte %00000000 - .byte %00000000 - .byte %00000000 - .byte %00001111 - .byte %00001111 - .byte %00001111 - .byte %00001111 - -;$4A - left slant solid - .byte %10000000 - .byte %11000000 - .byte %11100000 - .byte %11110000 - .byte %11111000 - .byte %11111100 - .byte %11111110 .byte %11111111 - -;$4B - up right solid - .byte %00001111 - .byte %00001111 - .byte %00001111 - .byte %00001111 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 - -;$4C - up left solid - .byte %11110000 - .byte %11110000 - .byte %11110000 - .byte %11110000 - .byte %00000000 - .byte %00000000 - .byte %00000000 .byte %00000000 ;$4D - top box @@ -802,24 +866,40 @@ vt100_font: .byte %11111111 .byte %11111111 -;$4F - low left solid +;$4F - original: low left solid; now lower line +; .byte %00000000 +; .byte %00000000 +; .byte %00000000 +; .byte %00000000 +; .byte %11110000 +; .byte %11110000 +; .byte %11110000 +; .byte %11110000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 - .byte %11110000 - .byte %11110000 - .byte %11110000 - .byte %11110000 + .byte %00000000 + .byte %11111111 + .byte %11111111 + .byte %00000000 -;$50 - club card +;$50 - original: club card; now plus/minus (line drawing mode) +; .byte %00000000 +; .byte %00011100 +; .byte %00011100 +; .byte %01110111 +; .byte %01110111 +; .byte %00001000 +; .byte %00011100 +; .byte %00000000 + .byte %00000000 + .byte %00011000 + .byte %01111110 + .byte %00011000 + .byte %00000000 + .byte %01111110 .byte %00000000 - .byte %00011100 - .byte %00011100 - .byte %01110111 - .byte %01110111 - .byte %00001000 - .byte %00011100 .byte %00000000 ;$51 - up left window @@ -852,25 +932,41 @@ vt100_font: .byte %00011000 .byte %00011000 -;$54 - solid circle +;$54 - original: solid circle; now 'NL' (line drawing mode) +; .byte %00000000 +; .byte %00000000 +; .byte %00111100 +; .byte %01111110 +; .byte %01111110 +; .byte %01111110 +; .byte %00111100 +; .byte %00000000 .byte %00000000 - .byte %00000000 - .byte %00111100 - .byte %01111110 - .byte %01111110 - .byte %01111110 - .byte %00111100 + .byte %01001000 + .byte %01101000 + .byte %01011000 + .byte %01001000 + .byte %00001000 + .byte %00001110 .byte %00000000 -;$55 - bottom solid +;$55 - original: bottom solid; now 'VT' (line drawing mode) +; .byte %00000000 +; .byte %00000000 +; .byte %00000000 +; .byte %00000000 +; .byte %11111111 +; .byte %11111111 +; .byte %11111111 +; .byte %11111111 .byte %00000000 + .byte %01010000 + .byte %01010000 + .byte %01011110 + .byte %00100100 + .byte %00000100 + .byte %00000100 .byte %00000000 - .byte %00000000 - .byte %00000000 - .byte %11111111 - .byte %11111111 - .byte %11111111 - .byte %11111111 ;$56 - left box .byte %11000000 @@ -902,15 +998,23 @@ vt100_font: .byte %00000000 .byte %00000000 -;$59 - left solid - .byte %11110000 - .byte %11110000 - .byte %11110000 - .byte %11110000 - .byte %11110000 - .byte %11110000 - .byte %11110000 - .byte %11110000 +;$59 - original: left solid; now '<=' (line drawing mode) +; .byte %11110000 +; .byte %11110000 +; .byte %11110000 +; .byte %11110000 +; .byte %11110000 +; .byte %11110000 +; .byte %11110000 +; .byte %11110000 + .byte %00000000 + .byte %00001100 + .byte %00011000 + .byte %00110000 + .byte %00011000 + .byte %00001100 + .byte %00111110 + .byte %00000000 ;$5A - low left window .byte %00011000 @@ -922,54 +1026,94 @@ vt100_font: .byte %00000000 .byte %00000000 -;$5B - display escape - .byte %01111000 - .byte %01100000 - .byte %01111000 - .byte %01100000 - .byte %01111110 - .byte %00011000 - .byte %00011110 - .byte %00000000 - -;$5C - up arrow +;$5B - original: display escape; now diamond +; .byte %01111000 +; .byte %01100000 +; .byte %01111000 +; .byte %01100000 +; .byte %01111110 +; .byte %00011000 +; .byte %00011110 +; .byte %00000000 .byte %00000000 .byte %00011000 .byte %00111100 .byte %01111110 - .byte %00011000 - .byte %00011000 - .byte %00011000 - .byte %00000000 - -;$5D - down arrow - .byte %00000000 - .byte %00011000 - .byte %00011000 - .byte %00011000 .byte %01111110 .byte %00111100 .byte %00011000 .byte %00000000 -;$5E - left arrow +;$5C - original: up arrow; now checkerboard +; .byte %00000000 +; .byte %00011000 +; .byte %00111100 +; .byte %01111110 +; .byte %00011000 +; .byte %00011000 +; .byte %00011000 +; .byte %00000000 + .byte %10101010 + .byte %01010101 + .byte %10101010 + .byte %01010101 + .byte %10101010 + .byte %01010101 + .byte %10101010 + .byte %01010101 + +;$5D - original: down arrow; now '>=' (line drawing mode) +; .byte %00000000 +; .byte %00011000 +; .byte %00011000 +; .byte %00011000 +; .byte %01111110 +; .byte %00111100 +; .byte %00011000 +; .byte %00000000 .byte %00000000 - .byte %00011000 - .byte %00110000 - .byte %01111110 .byte %00110000 .byte %00011000 - .byte %00000000 + .byte %00001100 + .byte %00011000 + .byte %00110000 + .byte %01111100 .byte %00000000 -;$5F - right arrow +;$5E - original: left arrow; now 'pi' (line drawing mode) +; .byte %00000000 +; .byte %00011000 +; .byte %00110000 +; .byte %01111110 +; .byte %00110000 +; .byte %00011000 +; .byte %00000000 +; .byte %00000000 + .byte %00000000 + .byte %00000001 + .byte %11111111 + .byte %01100110 + .byte %01100110 + .byte %01100110 + .byte %01100110 + .byte %00000000 + +;$5F - original: right arrow; now 'unequal' (line drawing mode) +; .byte %00000000 +; .byte %00011000 +; .byte %00001100 +; .byte %01111110 +; .byte %00001100 +; .byte %00011000 +; .byte %00000000 +; .byte %00000000 .byte %00000000 .byte %00011000 - .byte %00001100 .byte %01111110 - .byte %00001100 .byte %00011000 - .byte %00000000 + .byte %00011000 + .byte %01111110 + .byte %00011000 .byte %00000000 ;$60 - original: diamond card; now `