Module Name:src
Committed By: martin
Date: Sun Sep 11 18:10:23 UTC 2022
Modified Files:
src/sys/arch/atari/dev [netbsd-9]: ite.c ite_cc.c ite_et.c itevar.h
Log Message:
Pull up following revision(s) (requested by tsutsui in ticket #1518):
sys/arch/atari/dev/ite.c: revision 1.82
sys/arch/atari/dev/ite_cc.c: revision 1.45
sys/arch/atari/dev/ite_et.c: revision 1.36
sys/arch/atari/dev/itevar.h: revision 1.15
Add a minimum DEC special graphics character support for atari ite(4).
This closes PR port-atari/46647 (Menu borders in sysinst appear as
characters with diacritical marks instead of graphics characters).
Switching encoding support by "ESC ( " sequence for vt220 was
pulled from x68k ite(4) (that already supports ISO-2022-JP and EUC-JP).
Note atari's fonts already include DEC special graphics characters.
ET4000 on Hades is untested due to long-term lack of hardware.
Discussed on port-atari@ etc.
To generate a diff of this commit:
cvs rdiff -u -r1.79 -r1.79.2.1 src/sys/arch/atari/dev/ite.c
cvs rdiff -u -r1.40 -r1.40.2.1 src/sys/arch/atari/dev/ite_cc.c
cvs rdiff -u -r1.31 -r1.31.2.1 src/sys/arch/atari/dev/ite_et.c
cvs rdiff -u -r1.14 -r1.14.58.1 src/sys/arch/atari/dev/itevar.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/atari/dev/ite.c
diff -u src/sys/arch/atari/dev/ite.c:1.79 src/sys/arch/atari/dev/ite.c:1.79.2.1
--- src/sys/arch/atari/dev/ite.c:1.79 Sat Jun 29 16:41:19 2019
+++ src/sys/arch/atari/dev/ite.c Sun Sep 11 18:10:23 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: ite.c,v 1.79 2019/06/29 16:41:19 tsutsui Exp $ */
+/* $NetBSD: ite.c,v 1.79.2.1 2022/09/11 18:10:23 martin Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -44,7 +44,7 @@
*/
#include
-__KERNEL_RCSID(0, "$NetBSD: ite.c,v 1.79 2019/06/29 16:41:19 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ite.c,v 1.79.2.1 2022/09/11 18:10:23 martin Exp $");
#include "opt_ddb.h"
@@ -736,6 +736,12 @@ ite_reset(struct ite_softc *sc)
sc->keypad_appmode = 0;
sc->imode = 0;
sc->key_repeat = 1;
+ sc->G0 = CSET_ASCII;
+ sc->G1 = CSET_DECGRAPH;
+ sc->G2 = 0;
+ sc->G3 = 0;
+ sc->GL = &sc->G0;
+ sc->GR = &sc->G1;
memset(sc->tabs, 0, sc->cols);
for (i = 0; i < sc->cols; i++)
sc->tabs[i] = ((i & 7) == 0);
@@ -1247,6 +1253,14 @@ ite_lf (struct ite_softc *sc)
}
SUBR_CURSOR(sc, MOVE_CURSOR);
clr_attr(sc, ATTR_INV);
+
+ /* reset character set */
+ sc->G0 = CSET_ASCII;
+ sc->G1 = CSET_DECGRAPH;
+ sc->G2 = 0;
+ sc->G3 = 0;
+ sc->GL = &sc->G0;
+ sc->GR = &sc->G1;
}
static inline void
@@ -1446,7 +1460,7 @@ iteputchar(register int c, struct ite_so
case 'B': /* ASCII */
case 'A': /* ISO latin 1 */
case '<': /* user preferred suplemental */
- case '0': /* dec special graphics */
+ case '0': /* DEC special graphics */
/* 96-character sets: */
case '-': /* G1 */
@@ -1471,27 +1485,32 @@ iteputchar(register int c, struct ite_so
/* locking shift modes (as you might guess, not yet supported..) */
case '`':
- sc->GR = sc->G1;
+ sc->GR = &sc->G1;
sc->escape = 0;
return;
case 'n':
- sc->GL = sc->G2;
+ sc->GL = &sc->G2;
sc->escape = 0;
return;
case '}':
- sc->GR = sc->G2;
+ sc->GR = &sc->G2;
sc->escape = 0;
return;
case 'o':
- sc->GL = sc->G3;
+ sc->GL = &sc->G3;
sc->escape = 0;
return;
case '|':
- sc->GR = sc->G3;
+ sc->GR = &sc->G3;
+ sc->escape = 0;
+ return;
+
+ case '~':
+ sc->GR = &sc->G1;
sc->escape = 0;
return;
@@ -1511,16 +1530,30 @@ iteputchar(register int c, struct ite_so
case '7':
+ /* save cursor */
sc->save_curx = sc->curx;
sc->save_cury = sc->cury;
sc->save_attribute = sc->attribute;
+ sc->sc_G0 = sc->G0;
+ sc->sc_G1 = sc->G1;
+ sc->sc_G2 = sc->G2;
+ sc->sc_G3 = sc->G3;
+ sc->sc_GL = sc->GL;
+ sc->sc_GR = sc->GR;
sc->escape = 0;
return;
case '8':
+ /* restore cursor */
sc->curx = sc->save_curx;
sc->cury = sc->save_cury;
sc->attribute = sc->save_attribute;
+ sc->G0 = sc->sc_G0;
+ sc->G1 = sc->sc_G1;
+ sc->G2 = sc->sc_G2;
+ sc->G3 = sc->sc_G3;
+ sc->GL = sc->sc_GL;
+ sc->GR = sc->sc_GR;
SUBR_CURSOR(sc, MOVE_CURSOR);
sc->escape = 0;
return;
@@ -1551,8 +1584,22 @@ iteputchar(register int c, struct ite_so
break;
- case '(':
- case ')':
+ case '(': /* designated G0 */
+ switch (c) {
+ case 'B': /* US-ASCII */
+ sc->G0 = CSET_ASCII;
+ sc->escape = 0;
+ return;
+ case '0': /* DEC special graphics */
+ sc->G0 = CSET_DECGRAPH;
+ sc->escape = 0;
+ return;
+ default:
+ /* not supported */
+ sc->escape = 0;
+