Module Name: src
Committed By: christos
Date: Wed Jan 18 17:02:17 UTC 2023
Modified Files:
src/sys/dev/wscons: wsemul_vt100_subr.c
Log Message:
Add rin, indn, vpa, hpa, and cbt terminfo capabilities (Crystal Kolipe)
To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/sys/dev/wscons/wsemul_vt100_subr.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/wscons/wsemul_vt100_subr.c
diff -u src/sys/dev/wscons/wsemul_vt100_subr.c:1.25 src/sys/dev/wscons/wsemul_vt100_subr.c:1.26
--- src/sys/dev/wscons/wsemul_vt100_subr.c:1.25 Mon Jan 9 16:53:44 2023
+++ src/sys/dev/wscons/wsemul_vt100_subr.c Wed Jan 18 12:02:17 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: wsemul_vt100_subr.c,v 1.25 2023/01/09 21:53:44 christos Exp $ */
+/* $NetBSD: wsemul_vt100_subr.c,v 1.26 2023/01/18 17:02:17 christos Exp $ */
/*
* Copyright (c) 1998
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wsemul_vt100_subr.c,v 1.25 2023/01/09 21:53:44 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wsemul_vt100_subr.c,v 1.26 2023/01/18 17:02:17 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -188,7 +188,7 @@ wsemul_vt100_el(struct vt100base_data *e
void
wsemul_vt100_handle_csi(struct vt100base_data *edp, u_char c)
{
- int n, help, flags, fgcol, bgcol;
+ int n, m, help, flags, fgcol, bgcol;
long attr, bkgdattr;
#define A3(a, b, c) (((a) << 16) | ((b) << 8) | (c))
@@ -410,6 +410,9 @@ wsemul_vt100_handle_csi(struct vt100base
edp->ccol -= uimin(DEF1_ARG(edp, 0), edp->ccol);
edp->flags &= ~VTFL_LASTCHAR;
break;
+ case 'G': /* CHA */
+ edp->ccol = uimin(DEF1_ARG(edp, 0) - 1, edp->ncols -1);
+ break;
case 'H': /* CUP */
case 'f': /* HVP */
if (edp->flags & VTFL_DECOM)
@@ -445,15 +448,40 @@ wsemul_vt100_handle_csi(struct vt100base
COPYCOLS(edp, edp->ccol + n, edp->ccol, help);
ERASECOLS(edp, NCOLS(edp) - n, n, edp->bkgdattr);
break;
+ case 'S': /* SU */
+ wsemul_vt100_scrollup(edp, DEF1_ARG(edp, 0));
+ break;
+ case 'T': /* SD */
+ wsemul_vt100_scrolldown(edp, DEF1_ARG(edp, 0));
+ break;
case 'X': /* ECH erase character */
n = uimin(DEF1_ARG(edp, 0), COLS_LEFT(edp) + 1);
ERASECOLS(edp, edp->ccol, n, edp->bkgdattr);
break;
+ case 'Z': /* CBT */
+ if (edp->ccol == 0)
+ break;
+ for (m = 0; m < DEF1_ARG(edp, 0); m++) {
+ if (edp->tabs) {
+ for (n = edp->ccol - 1; n > 0; n--) {
+ if (edp->tabs[n])
+ break;
+ }
+ } else
+ n = (edp->ccol - 1) & ~7;
+ edp->ccol = n;
+ if (n == 0)
+ break;
+ }
+ break;
case 'c': /* DA primary */
if (ARG(edp, 0) == 0)
wsdisplay_emulinput(edp->cbcookie, WSEMUL_VT_ID1,
sizeof(WSEMUL_VT_ID1) - 1);
break;
+ case 'd': /* VPA */
+ edp->crow = uimin(DEF1_ARG(edp, 0) - 1, edp->nrows - 1);
+ break;
case 'g': /* TBC */
KASSERT(edp->tabs != 0);
switch (ARG(edp, 0)) {