From 40dd3a3c7cfecadce4eda2f3bdb39a41189ad51f Mon Sep 17 00:00:00 2001 From: Phil Budne Date: Tue, 20 Feb 2018 01:05:53 -0500 Subject: [PATCH] DISPLAY: fix type340 character code, fix A, fix/complete lower case letters --- display/tst340.c | 8 ++--- display/type340.c | 76 +++++++++++++++++++++++++---------------------- 2 files changed, 43 insertions(+), 41 deletions(-) diff --git a/display/tst340.c b/display/tst340.c index 1cae5d75..3d7ce297 100644 --- a/display/tst340.c +++ b/display/tst340.c @@ -66,15 +66,13 @@ int words[] = { CHAR(060, 061, 062), CHAR(063, 064, 065), CHAR(066, 067, ' '), CHAR(070, 071, 072), CHAR(073, 074, 075), CHAR(076, 077, ' '), + CHAR(CHRESC, CHRESC, CHRESC), + MCHR|S2|IN7, CHAR(CHRLC, CHRCR, CHRLF), CHAR(000, 001, 002), CHAR(003, 004, 005), CHAR(006, 007, ' '), CHAR(010, 011, 012), CHAR(013, 014, 015), CHAR(016, 017, ' '), CHAR(020, 021, 022), CHAR(023, 024, 025), CHAR(026, 027, ' '), - CHAR(030, 031, 032), /* 33-37 are control codes */ - CHAR(040, 041, 042), CHAR(043, 044, 045), CHAR(046, 047, ' '), - CHAR(050, 051, 052), CHAR(053, 054, 055), CHAR(056, 057, ' '), - CHAR(060, 061, 062), CHAR(063, 064, 065), CHAR(066, 067, ' '), - CHAR(070, 071, 072), CHAR(073, 074, 075), CHAR(076, 077, ' '), + CHAR(030, 031, 032), CHAR(CHRESC, 0, 0), STP #elif 1 diff --git a/display/type340.c b/display/type340.c index d3c22560..8e657bbc 100644 --- a/display/type340.c +++ b/display/type340.c @@ -1,6 +1,7 @@ /* * wrap, or clip? - * finish lc bitmaps + * skip vector points when scaling? + * are scaled character sizes right?? */ /* @@ -154,8 +155,11 @@ ty340_reset(void) #endif u->xpos = u->ypos = 0; u->mode = 0; - u->status = 0; /* set ST340_DONE? */ + u->status = 0; u->scale = 1; +#if TYPE342 + u->shift = 0; +#endif #if TYPE347 u->SAVE_FF = 0; #endif @@ -557,12 +561,12 @@ ipoint(int i, int n, unsigned char byte) * 342 character generator - first 64 characters * 7-13_340_Display_Programming_Manual.pdf p.24 * each char contains a vertical stripe of the matrix. - * lowest bit is bottom + * highest bit is top, lowest bit is unused (what was I drinking? -PLB) * first char is leftmost */ static const unsigned char chars[128][5] = { { 0070, 0124, 0154, 0124, 0070 }, /* 00 blob */ - { 0174, 0240, 0240, 0240, 0174 }, /* 01 A */ + { 0176, 0240, 0240, 0240, 0176 }, /* 01 A */ { 0376, 0222, 0222, 0222, 0154 }, /* 02 B */ { 0174, 0202, 0202, 0202, 0104 }, /* 03 C */ { 0376, 0202, 0202, 0202, 0174 }, /* 04 D */ @@ -573,7 +577,7 @@ static const unsigned char chars[128][5] = { { 0000, 0202, 0376, 0202, 0000 }, /* 11 I */ { 0004, 0002, 0002, 0002, 0374 }, /* 12 J */ { 0376, 0020, 0050, 0104, 0202 }, /* 13 K */ - { 0376, 0002, 0002, 0002, 0002 }, /* 14 K */ + { 0376, 0002, 0002, 0002, 0002 }, /* 14 L */ { 0374, 0100, 0040, 0100, 0374 }, /* 15 M */ { 0376, 0100, 0040, 0020, 0376 }, /* 16 N */ { 0174, 0202, 0202, 0202, 0174 }, /* 17 O */ @@ -632,32 +636,32 @@ static const unsigned char chars[128][5] = { * PLB: I wonder if VT52 was 5x7???? */ { 0070, 0124, 0154, 0124, 0070 }, /* 00 blob */ - { 0070, 0204, 0204, 0050, 0274 }, /* 01 a needs fixing! */ - { 0377, 0050, 0204, 0204, 0070 }, /* 02 b needs fixing! */ - { 0070, 0204, 0204, 0204, 0050 }, /* 03 c needs fixing! */ - { 0376, 0202, 0202, 0202, 0174 }, /* 04 D */ - { 0376, 0222, 0222, 0222, 0222 }, /* 05 E */ - { 0376, 0220, 0220, 0220, 0220 }, /* 06 F */ - { 0174, 0202, 0222, 0222, 0134 }, /* 07 G */ - { 0376, 0020, 0020, 0020, 0376 }, /* 10 H */ - { 0000, 0202, 0376, 0202, 0000 }, /* 11 I */ - { 0004, 0002, 0002, 0002, 0374 }, /* 12 J */ - { 0376, 0020, 0050, 0104, 0202 }, /* 13 K */ - { 0376, 0002, 0002, 0002, 0002 }, /* 14 K */ - { 0376, 0100, 0040, 0100, 0376 }, /* 15 M */ - { 0376, 0100, 0040, 0020, 0376 }, /* 16 N */ - { 0174, 0202, 0202, 0202, 0174 }, /* 17 O */ - { 0376, 0220, 0220, 0220, 0140 }, /* 20 P */ - { 0174, 0202, 0212, 0206, 0176 }, /* 21 Q */ - { 0376, 0220, 0230, 0224, 0142 }, /* 22 R */ - { 0144, 0222, 0222, 0222, 0114 }, /* 23 S */ - { 0200, 0200, 0376, 0200, 0200 }, /* 24 T */ - { 0374, 0002, 0002, 0002, 0374 }, /* 25 U */ - { 0370, 0004, 0002, 0004, 0370 }, /* 26 V */ - { 0376, 0004, 0010, 0004, 0376 }, /* 27 W */ - { 0202, 0104, 0070, 0104, 0202 }, /* 30 X */ - { 0200, 0100, 0076, 0100, 0200 }, /* 31 Y */ - { 0226, 0232, 0222, 0262, 0322 }, /* 32 Z */ + { 0034, 0042, 0042, 0024, 0076 }, /* 01 a */ + { 0376, 0024, 0042, 0042, 0034 }, /* 02 b */ + { 0034, 0042, 0042, 0042, 0024 }, /* 03 c */ + { 0034, 0042, 0042, 0024, 0376 }, /* 04 d */ + { 0034, 0052, 0052, 0052, 0032 }, /* 05 e */ + { 0010, 0176, 0210, 0200, 0100 }, /* 06 f */ + { 0020, 0052, 0052, 0052, 0074 }, /* 07 g */ + { 0376, 0020, 0040, 0040, 0036 }, /* 10 h */ + { 0000, 0022, 0136, 0002, 0000 }, /* 11 i */ + { 0000, 0004, 0042, 0274, 0000 }, /* 12 j */ + { 0376, 0010, 0024, 0042, 0000 }, /* 13 k */ + { 0374, 0002, 0002, 0000, 0000 }, /* 14 l */ + { 0076, 0040, 0036, 0040, 0036 }, /* 15 m */ + { 0076, 0020, 0040, 0040, 0036 }, /* 16 n */ + { 0034, 0042, 0042, 0042, 0034 }, /* 17 o */ + { 0076, 0050, 0050, 0050, 0020 }, /* 20 p */ + { 0020, 0050, 0050, 0050, 0076 }, /* 21 q */ + { 0076, 0020, 0040, 0040, 0000 }, /* 22 r */ + { 0022, 0052, 0052, 0052, 0044 }, /* 23 s */ + { 0020, 0174, 0022, 0004, 0000 }, /* 24 t */ + { 0074, 0002, 0002, 0004, 0076 }, /* 25 u */ + { 0060, 0014, 0002, 0014, 0060 }, /* 26 v */ + { 0070, 0006, 0030, 0006, 0070 }, /* 27 w */ + { 0042, 0024, 0010, 0024, 0042 }, /* 30 x */ + { 0060, 0012, 0012, 0012, 0074 }, /* 31 y */ + { 0042, 0046, 0052, 0062, 0042 }, /* 32 z */ { 0000, 0000, 0000, 0000, 0000 }, /* 33 LF */ { 0000, 0000, 0000, 0000, 0000 }, /* 34 CR */ { 0000, 0000, 0000, 0000, 0000 }, /* 35 HORIZ */ @@ -720,18 +724,18 @@ character(int n, unsigned char c) u->xpos = 0; return 0; case CHRUC: /* "SHIFT IN (HORIZ)" */ - u->shift = 0; /* upper case in spcwac.163 */ + u->shift = 0; /* upper case in SPCWAR 163 */ return 0; case CHRLC: /* "SHIFT OUT (VERT)" */ - u->shift = 0100; /* lower case in spcwar.163 */ + u->shift = 0100; /* lower case in SPCWAR 163 */ return 0; case CHRESC: /* escape */ return 1; } /* plot character from character set selected by "shift" */ - for (x = 0; x < 5; x++) { - for (y = 0; y < 8; y++) { - if (chars[c|u->shift][x] & (1<shift][x] & (2<xpos+x*s, u->ypos+y*s, n); }