DISPLAY: fix type340 character code, fix A, fix/complete lower case letters
This commit is contained in:
parent
abfb828cb8
commit
40dd3a3c7c
2 changed files with 43 additions and 41 deletions
|
@ -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
|
||||
|
|
|
@ -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<<y)) {
|
||||
for (x = 0; x < 5; x++) { /* column: 0 to 4, left to right */
|
||||
for (y = 0; y < 7; y++) { /* row: 0 to 6, bottom to top */
|
||||
if (chars[c|u->shift][x] & (2<<y)) {
|
||||
/* XXX check for raster violation? */
|
||||
point(u->xpos+x*s, u->ypos+y*s, n);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue