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)) {

Reply via email to