mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-09-09 12:27:50 -04:00
132 lines
3.1 KiB
Plaintext
132 lines
3.1 KiB
Plaintext
$NetBSD: patch-ad,v 1.2 2002/02/11 18:30:23 fredb Exp $
|
|
|
|
--- vt.c.orig Fri May 24 10:13:52 1996
|
|
+++ vt.c
|
|
@@ -748,6 +748,9 @@
|
|
register int line, i;
|
|
|
|
if (v->state == ESnormal && ch >= ' ' && ch < 256) {
|
|
+ if ( (v->attr & T_LINEDRAW) && ch >= 'a' && ch <= 'z')
|
|
+ ch -= 95;
|
|
+
|
|
if (v->hanging_cursor) {
|
|
v->x = 0;
|
|
movecursordown(v);
|
|
@@ -796,13 +799,38 @@
|
|
v->hanging_cursor = 0; /* XXX Is this right? */
|
|
return;
|
|
case 13:
|
|
+ /*
|
|
+ * This is a hack! Do what I mean: after setting GS0,
|
|
+ * activate GS0 for next line, but don't just activate
|
|
+ * GS0 for every new line.
|
|
+ */
|
|
+ if (v->gset0changed) {
|
|
+ if (v->gset0 == S_ASCII)
|
|
+ v->attr &= ~T_LINEDRAW;
|
|
+ else
|
|
+ v->attr |= T_LINEDRAW;
|
|
+ v->gset0changed = 0;
|
|
+ v->gset0mapped = 0;
|
|
+ }
|
|
v->x = 0; /* Carriage return (^M) */
|
|
v->hanging_cursor = 0;
|
|
return;
|
|
case 14:
|
|
- return; /* Alternate font (^N) */
|
|
+ if (v->gset1 == S_ASCII)
|
|
+ v->attr &= ~T_LINEDRAW;
|
|
+ else
|
|
+ v->attr |= T_LINEDRAW;
|
|
+ return; /* Lock Shift 1 (^N) */
|
|
+ v->gset0changed = 0;
|
|
+ v->gset0mapped = 0;
|
|
case 15:
|
|
- return; /* Normal font (^O) */
|
|
+ if (v->gset0 == S_ASCII)
|
|
+ v->attr &= ~T_LINEDRAW;
|
|
+ else
|
|
+ v->attr |= T_LINEDRAW;
|
|
+ v->gset0changed = 1; /* to clear map bit at EOL */
|
|
+ v->gset0mapped = 1;
|
|
+ return; /* Lock Shift 0 (^O) */
|
|
case 24: /* (^X) */
|
|
case 26:
|
|
v->state = ESnormal; /* (^Z) */
|
|
@@ -1070,36 +1098,38 @@
|
|
break;
|
|
case ESsetG0:
|
|
if (ch == '0') {
|
|
- /* Set graphics character set */
|
|
- } else
|
|
- if (ch == 'B') {
|
|
- /* Set normal character set */
|
|
- } else
|
|
- if (ch == 'U') {
|
|
- /* Set null character set */
|
|
- } else
|
|
- if (ch == 'K') {
|
|
- /* Set user-defined character
|
|
- * set */
|
|
- }
|
|
- /* If currently G0, then make active set */
|
|
+ v->gset0 = S_LINEDRAW;
|
|
+ if (v->gset0mapped)
|
|
+ /*
|
|
+ * Activate immediately. We'll still mark it
|
|
+ * changed, so the mapped bit will get cleared
|
|
+ * for the next line.
|
|
+ */
|
|
+ v->attr |= T_LINEDRAW;
|
|
+ v->gset0changed = 1;
|
|
+ } else if (ch == 'B') {
|
|
+ v->gset0 = S_ASCII;
|
|
+ if (v->gset0mapped)
|
|
+ /*
|
|
+ * Activate immediately. We'll still mark it
|
|
+ * changed, so the mapped bit will get cleared
|
|
+ * for the next line.
|
|
+ */
|
|
+ v->attr &= ~T_LINEDRAW;
|
|
+ v->gset0changed = 1;
|
|
+ }
|
|
v->state = ESnormal;
|
|
break;
|
|
+ /*
|
|
+ * Not very useful. Typically, G1 would be changed to one
|
|
+ * of the other character sets, which we don't support.
|
|
+ */
|
|
case ESsetG1:
|
|
if (ch == '0') {
|
|
- /* Set graphics character set */
|
|
- } else
|
|
- if (ch == 'B') {
|
|
- /* Set normal character set */
|
|
- } else
|
|
- if (ch == 'U') {
|
|
- /* Set null character set */
|
|
- } else
|
|
- if (ch == 'K') {
|
|
- /* Set user-defined character
|
|
- * set */
|
|
- }
|
|
- /* If currently G1, then make active set */
|
|
+ v->gset1 = S_LINEDRAW;
|
|
+ } else if (ch == 'B') {
|
|
+ v->gset1 = S_ASCII;
|
|
+ }
|
|
v->state = ESnormal;
|
|
break;
|
|
default:
|
|
@@ -1187,6 +1217,10 @@
|
|
v->tab_stop[3] = 0x01010101;
|
|
v->tab_stop[4] = 0x01010101;
|
|
v->copying = 0;
|
|
+ v->gset0 = S_ASCII;
|
|
+ v->gset0changed = 0;
|
|
+ v->gset0mapped = 0;
|
|
+ v->gset1 = S_LINEDRAW;
|
|
}
|
|
}
|
|
|