DISPLAY: fix type340 character code, fix A, fix/complete lower case letters

This commit is contained in:
Phil Budne 2018-02-20 01:05:53 -05:00
parent abfb828cb8
commit 40dd3a3c7c
2 changed files with 43 additions and 41 deletions

View file

@ -66,15 +66,13 @@ int words[] = {
CHAR(060, 061, 062), CHAR(063, 064, 065), CHAR(066, 067, ' '), CHAR(060, 061, 062), CHAR(063, 064, 065), CHAR(066, 067, ' '),
CHAR(070, 071, 072), CHAR(073, 074, 075), CHAR(076, 077, ' '), CHAR(070, 071, 072), CHAR(073, 074, 075), CHAR(076, 077, ' '),
CHAR(CHRESC, CHRESC, CHRESC),
MCHR|S2|IN7,
CHAR(CHRLC, CHRCR, CHRLF), CHAR(CHRLC, CHRCR, CHRLF),
CHAR(000, 001, 002), CHAR(003, 004, 005), CHAR(006, 007, ' '), CHAR(000, 001, 002), CHAR(003, 004, 005), CHAR(006, 007, ' '),
CHAR(010, 011, 012), CHAR(013, 014, 015), CHAR(016, 017, ' '), CHAR(010, 011, 012), CHAR(013, 014, 015), CHAR(016, 017, ' '),
CHAR(020, 021, 022), CHAR(023, 024, 025), CHAR(026, 027, ' '), CHAR(020, 021, 022), CHAR(023, 024, 025), CHAR(026, 027, ' '),
CHAR(030, 031, 032), /* 33-37 are control codes */ CHAR(030, 031, 032),
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(CHRESC, 0, 0), CHAR(CHRESC, 0, 0),
STP STP
#elif 1 #elif 1

View file

@ -1,6 +1,7 @@
/* /*
* wrap, or clip? * wrap, or clip?
* finish lc bitmaps * skip vector points when scaling?
* are scaled character sizes right??
*/ */
/* /*
@ -154,8 +155,11 @@ ty340_reset(void)
#endif #endif
u->xpos = u->ypos = 0; u->xpos = u->ypos = 0;
u->mode = 0; u->mode = 0;
u->status = 0; /* set ST340_DONE? */ u->status = 0;
u->scale = 1; u->scale = 1;
#if TYPE342
u->shift = 0;
#endif
#if TYPE347 #if TYPE347
u->SAVE_FF = 0; u->SAVE_FF = 0;
#endif #endif
@ -557,12 +561,12 @@ ipoint(int i, int n, unsigned char byte)
* 342 character generator - first 64 characters * 342 character generator - first 64 characters
* 7-13_340_Display_Programming_Manual.pdf p.24 * 7-13_340_Display_Programming_Manual.pdf p.24
* each char contains a vertical stripe of the matrix. * 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 * first char is leftmost
*/ */
static const unsigned char chars[128][5] = { static const unsigned char chars[128][5] = {
{ 0070, 0124, 0154, 0124, 0070 }, /* 00 blob */ { 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 */ { 0376, 0222, 0222, 0222, 0154 }, /* 02 B */
{ 0174, 0202, 0202, 0202, 0104 }, /* 03 C */ { 0174, 0202, 0202, 0202, 0104 }, /* 03 C */
{ 0376, 0202, 0202, 0202, 0174 }, /* 04 D */ { 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 */ { 0000, 0202, 0376, 0202, 0000 }, /* 11 I */
{ 0004, 0002, 0002, 0002, 0374 }, /* 12 J */ { 0004, 0002, 0002, 0002, 0374 }, /* 12 J */
{ 0376, 0020, 0050, 0104, 0202 }, /* 13 K */ { 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 */ { 0374, 0100, 0040, 0100, 0374 }, /* 15 M */
{ 0376, 0100, 0040, 0020, 0376 }, /* 16 N */ { 0376, 0100, 0040, 0020, 0376 }, /* 16 N */
{ 0174, 0202, 0202, 0202, 0174 }, /* 17 O */ { 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???? * PLB: I wonder if VT52 was 5x7????
*/ */
{ 0070, 0124, 0154, 0124, 0070 }, /* 00 blob */ { 0070, 0124, 0154, 0124, 0070 }, /* 00 blob */
{ 0070, 0204, 0204, 0050, 0274 }, /* 01 a needs fixing! */ { 0034, 0042, 0042, 0024, 0076 }, /* 01 a */
{ 0377, 0050, 0204, 0204, 0070 }, /* 02 b needs fixing! */ { 0376, 0024, 0042, 0042, 0034 }, /* 02 b */
{ 0070, 0204, 0204, 0204, 0050 }, /* 03 c needs fixing! */ { 0034, 0042, 0042, 0042, 0024 }, /* 03 c */
{ 0376, 0202, 0202, 0202, 0174 }, /* 04 D */ { 0034, 0042, 0042, 0024, 0376 }, /* 04 d */
{ 0376, 0222, 0222, 0222, 0222 }, /* 05 E */ { 0034, 0052, 0052, 0052, 0032 }, /* 05 e */
{ 0376, 0220, 0220, 0220, 0220 }, /* 06 F */ { 0010, 0176, 0210, 0200, 0100 }, /* 06 f */
{ 0174, 0202, 0222, 0222, 0134 }, /* 07 G */ { 0020, 0052, 0052, 0052, 0074 }, /* 07 g */
{ 0376, 0020, 0020, 0020, 0376 }, /* 10 H */ { 0376, 0020, 0040, 0040, 0036 }, /* 10 h */
{ 0000, 0202, 0376, 0202, 0000 }, /* 11 I */ { 0000, 0022, 0136, 0002, 0000 }, /* 11 i */
{ 0004, 0002, 0002, 0002, 0374 }, /* 12 J */ { 0000, 0004, 0042, 0274, 0000 }, /* 12 j */
{ 0376, 0020, 0050, 0104, 0202 }, /* 13 K */ { 0376, 0010, 0024, 0042, 0000 }, /* 13 k */
{ 0376, 0002, 0002, 0002, 0002 }, /* 14 K */ { 0374, 0002, 0002, 0000, 0000 }, /* 14 l */
{ 0376, 0100, 0040, 0100, 0376 }, /* 15 M */ { 0076, 0040, 0036, 0040, 0036 }, /* 15 m */
{ 0376, 0100, 0040, 0020, 0376 }, /* 16 N */ { 0076, 0020, 0040, 0040, 0036 }, /* 16 n */
{ 0174, 0202, 0202, 0202, 0174 }, /* 17 O */ { 0034, 0042, 0042, 0042, 0034 }, /* 17 o */
{ 0376, 0220, 0220, 0220, 0140 }, /* 20 P */ { 0076, 0050, 0050, 0050, 0020 }, /* 20 p */
{ 0174, 0202, 0212, 0206, 0176 }, /* 21 Q */ { 0020, 0050, 0050, 0050, 0076 }, /* 21 q */
{ 0376, 0220, 0230, 0224, 0142 }, /* 22 R */ { 0076, 0020, 0040, 0040, 0000 }, /* 22 r */
{ 0144, 0222, 0222, 0222, 0114 }, /* 23 S */ { 0022, 0052, 0052, 0052, 0044 }, /* 23 s */
{ 0200, 0200, 0376, 0200, 0200 }, /* 24 T */ { 0020, 0174, 0022, 0004, 0000 }, /* 24 t */
{ 0374, 0002, 0002, 0002, 0374 }, /* 25 U */ { 0074, 0002, 0002, 0004, 0076 }, /* 25 u */
{ 0370, 0004, 0002, 0004, 0370 }, /* 26 V */ { 0060, 0014, 0002, 0014, 0060 }, /* 26 v */
{ 0376, 0004, 0010, 0004, 0376 }, /* 27 W */ { 0070, 0006, 0030, 0006, 0070 }, /* 27 w */
{ 0202, 0104, 0070, 0104, 0202 }, /* 30 X */ { 0042, 0024, 0010, 0024, 0042 }, /* 30 x */
{ 0200, 0100, 0076, 0100, 0200 }, /* 31 Y */ { 0060, 0012, 0012, 0012, 0074 }, /* 31 y */
{ 0226, 0232, 0222, 0262, 0322 }, /* 32 Z */ { 0042, 0046, 0052, 0062, 0042 }, /* 32 z */
{ 0000, 0000, 0000, 0000, 0000 }, /* 33 LF */ { 0000, 0000, 0000, 0000, 0000 }, /* 33 LF */
{ 0000, 0000, 0000, 0000, 0000 }, /* 34 CR */ { 0000, 0000, 0000, 0000, 0000 }, /* 34 CR */
{ 0000, 0000, 0000, 0000, 0000 }, /* 35 HORIZ */ { 0000, 0000, 0000, 0000, 0000 }, /* 35 HORIZ */
@ -720,18 +724,18 @@ character(int n, unsigned char c)
u->xpos = 0; u->xpos = 0;
return 0; return 0;
case CHRUC: /* "SHIFT IN (HORIZ)" */ case CHRUC: /* "SHIFT IN (HORIZ)" */
u->shift = 0; /* upper case in spcwac.163 */ u->shift = 0; /* upper case in SPCWAR 163 */
return 0; return 0;
case CHRLC: /* "SHIFT OUT (VERT)" */ case CHRLC: /* "SHIFT OUT (VERT)" */
u->shift = 0100; /* lower case in spcwar.163 */ u->shift = 0100; /* lower case in SPCWAR 163 */
return 0; return 0;
case CHRESC: /* escape */ case CHRESC: /* escape */
return 1; return 1;
} }
/* plot character from character set selected by "shift" */ /* plot character from character set selected by "shift" */
for (x = 0; x < 5; x++) { for (x = 0; x < 5; x++) { /* column: 0 to 4, left to right */
for (y = 0; y < 8; y++) { for (y = 0; y < 7; y++) { /* row: 0 to 6, bottom to top */
if (chars[c|u->shift][x] & (1<<y)) { if (chars[c|u->shift][x] & (2<<y)) {
/* XXX check for raster violation? */ /* XXX check for raster violation? */
point(u->xpos+x*s, u->ypos+y*s, n); point(u->xpos+x*s, u->ypos+y*s, n);
} }