summaryrefslogtreecommitdiff
path: root/sys/dev/wscons/wsemul_vt100_subr.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/wscons/wsemul_vt100_subr.c')
-rw-r--r--sys/dev/wscons/wsemul_vt100_subr.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/sys/dev/wscons/wsemul_vt100_subr.c b/sys/dev/wscons/wsemul_vt100_subr.c
index f0676f6b8c4..e97d65bbb8e 100644
--- a/sys/dev/wscons/wsemul_vt100_subr.c
+++ b/sys/dev/wscons/wsemul_vt100_subr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: wsemul_vt100_subr.c,v 1.25 2023/01/09 07:48:12 nicm Exp $ */
+/* $OpenBSD: wsemul_vt100_subr.c,v 1.26 2023/01/12 12:23:40 nicm Exp $ */
/* $NetBSD: wsemul_vt100_subr.c,v 1.7 2000/04/28 21:56:16 mycroft Exp $ */
/*
@@ -461,6 +461,10 @@ wsemul_vt100_handle_csi(struct wsemul_vt100_emuldata *edp,
edp->ccol -= min(DEF1_ARG(0), edp->ccol);
edp->flags &= ~VTFL_LASTCHAR;
break;
+ case 'G': /* CHA */
+ case '`': /* HPA */
+ edp->ccol = min(DEF1_ARG(0), edp->ncols) - 1;
+ break;
case 'H': /* CUP */
case 'f': /* HVP */
if (edp->flags & VTFL_DECOM)
@@ -502,6 +506,12 @@ wsemul_vt100_handle_csi(struct wsemul_vt100_emuldata *edp,
WSEMULOP(rc, edp, &edp->abortstate, erasecols,
ERASECOLS(NCOLS - n, n, edp->bkgdattr));
break;
+ case 'S': /* SU scroll up */
+ wsemul_vt100_scrollup(edp, DEF1_ARG(0));
+ break;
+ case 'T': /* SD scroll down */
+ wsemul_vt100_scrolldown(edp, DEF1_ARG(0));
+ break;
case 'X': /* ECH erase character */
n = min(DEF1_ARG(0), COLS_LEFT + 1);
WSEMULOP(rc, edp, &edp->abortstate, erasecols,
@@ -512,6 +522,9 @@ wsemul_vt100_handle_csi(struct wsemul_vt100_emuldata *edp,
wsdisplay_emulinput(edp->cbcookie, WSEMUL_VT_ID1,
sizeof(WSEMUL_VT_ID1) - 1);
break;
+ case 'd': /* VPA */
+ edp->crow = min(DEF1_ARG(0), edp->nrows) - 1;
+ break;
case 'g': /* TBC */
if (edp->tabs != NULL)
switch (ARG(0)) {