Home | History | Annotate | Download | only in wscons

Lines Matching refs:vd

57 wsemul_vt100_scrollup(struct vt100base_data *vd, int n)
61 if (n > vd->scrreg_nrows)
62 n = vd->scrreg_nrows;
64 help = vd->scrreg_nrows - n;
66 (*vd->emulops->copyrows)(vd->emulcookie,
67 vd->scrreg_startrow + n,
68 vd->scrreg_startrow,
70 if (vd->dblwid)
71 memmove(&vd->dblwid[vd->scrreg_startrow],
72 &vd->dblwid[vd->scrreg_startrow + n],
75 (*vd->emulops->eraserows)(vd->emulcookie,
76 vd->scrreg_startrow + help, n,
77 vd->bkgdattr);
78 if (vd->dblwid)
79 memset(&vd->dblwid[vd->scrreg_startrow + help], 0, n);
80 CHECK_DW(vd);
87 wsemul_vt100_scrolldown(struct vt100base_data *vd, int n)
91 if (n > vd->scrreg_nrows)
92 n = vd->scrreg_nrows;
94 help = vd->scrreg_nrows - n;
96 (*vd->emulops->copyrows)(vd->emulcookie,
97 vd->scrreg_startrow,
98 vd->scrreg_startrow + n,
100 if (vd->dblwid)
101 memmove(&vd->dblwid[vd->scrreg_startrow + n],
102 &vd->dblwid[vd->scrreg_startrow],
105 (*vd->emulops->eraserows)(vd->emulcookie,
106 vd->scrreg_startrow, n,
107 vd->bkgdattr);
108 if (vd->dblwid)
109 memset(&vd->dblwid[vd->scrreg_startrow], 0, n);
110 CHECK_DW(vd);
117 wsemul_vt100_ed(struct vt100base_data *vd, int arg)
123 ERASECOLS(vd, vd->ccol, COLS_LEFT(vd) + 1, vd->bkgdattr);
124 n = vd->nrows - vd->crow - 1;
126 (*vd->emulops->eraserows)(vd->emulcookie,
127 vd->crow + 1, n,
128 vd->bkgdattr);
129 if (vd->dblwid)
130 memset(&vd->dblwid[vd->crow + 1], 0, n);
134 if (vd->crow > 0) {
135 (*vd->emulops->eraserows)(vd->emulcookie,
136 0, vd->crow,
137 vd->bkgdattr);
138 if (vd->dblwid)
139 memset(&vd->dblwid[0], 0, vd->crow);
141 ERASECOLS(vd, 0, vd->ccol + 1, vd->bkgdattr);
144 (*vd->emulops->eraserows)(vd->emulcookie,
145 0, vd->nrows,
146 vd->bkgdattr);
147 if (vd->dblwid)
148 memset(&vd->dblwid[0], 0, vd->nrows);
156 CHECK_DW(vd);
163 wsemul_vt100_el(struct vt100base_data *vd, int arg)
167 ERASECOLS(vd, vd->ccol, COLS_LEFT(vd) + 1, vd->bkgdattr);
170 ERASECOLS(vd, 0, vd->ccol + 1, vd->bkgdattr);
173 (*vd->emulops->erasecols)(vd->emulcookie, vd->crow,
174 0, vd->ncols,
175 vd->bkgdattr);
189 wsemul_vt100_handle_csi(struct vt100base_data *vd, u_char c)
195 switch (A3(vd->modif1, vd->modif2, c)) {
197 wsdisplay_emulinput(vd->cbcookie, WSEMUL_VT_ID2,
203 wsemul_vt100_ed(vd, ARG(vd, 0));
207 wsemul_vt100_el(vd, ARG(vd, 0));
210 for (n = 0; n < vd->nargs; n++)
211 vt100_ansimode(vd, ARG(vd, n), VTMODE_SET);
214 for (n = 0; n < vd->nargs; n++)
215 vt100_decmode(vd, ARG(vd, n), VTMODE_SET);
218 for (n = 0; n < vd->nargs; n++)
219 vt100_ansimode(vd, ARG(vd, n), VTMODE_RESET);
222 for (n = 0; n < vd->nargs; n++)
223 vt100_decmode(vd, ARG(vd, n), VTMODE_RESET);
226 vt100_ansimode(vd, ARG(vd, 0), VTMODE_REPORT);
229 vt100_decmode(vd, ARG(vd, 0), VTMODE_REPORT);
233 switch (ARG(vd, 0)) {
239 printf("CSI%di ignored\n", ARG(vd, 0));
244 printf("CSI%di unknown\n", ARG(vd, 0));
258 switch (ARG(vd, 0)) {
266 printf("CSI%d\"p unknown\n", ARG(vd, 0));
270 switch (ARG(vd, 1)) {
274 printf("CSI%d;%d\"p ignored\n", ARG(vd, 0), ARG(vd, 1));
281 printf("CSI%d;%d\"p unknown\n", ARG(vd, 0), ARG(vd, 1));
287 switch (ARG(vd, 0)) {
298 printf("CSI%d\"q unknown\n", ARG(vd, 0));
305 switch (ARG(vd, 0)) {
315 printf("CSI%d$u unknown\n", ARG(vd, 0));
322 switch (ARG(vd, 0)) {
334 KASSERT(vd->tabs != NULL);
335 wsdisplay_emulinput(vd->cbcookie, "\033P2$u", 5);
336 for (i = 0; i < vd->ncols; i++)
337 if (vd->tabs[i]) {
340 wsdisplay_emulinput(vd->cbcookie,
345 wsdisplay_emulinput(vd->cbcookie, "\033\\", 2);
349 printf("CSI%d$w unknown\n", ARG(vd, 0));
355 switch (ARG(vd, 0)) {
359 printf("CSI%d$} ignored\n", ARG(vd, 0));
364 printf("CSI%d$} unknown\n", ARG(vd, 0));
370 switch (ARG(vd, 0)) {
375 printf("CSI%d$~ ignored\n", ARG(vd, 0));
380 printf("CSI%d$~ unknown\n", ARG(vd, 0));
388 wsdisplay_emulinput(vd->cbcookie, "\033P0!u%5\033\\", 9);
392 n = uimin(DEF1_ARG(vd, 0), COLS_LEFT(vd) + 1);
393 help = NCOLS(vd) - (vd->ccol + n);
395 COPYCOLS(vd, vd->ccol, vd->ccol + n, help);
396 ERASECOLS(vd, vd->ccol, n, vd->bkgdattr);
400 m = vd->scrreg_startrow;
401 if (vd->crow < m)/* but if already above the margin */
403 help = vd->crow - m; /* rows above */
404 vd->crow -= uimin(DEF1_ARG(vd, 0), help);
405 CHECK_DW(vd);
409 m = vd->scrreg_startrow + vd->scrreg_nrows - 1;
410 if (vd->crow > m) /* but if already below the margin */
411 m = vd->nrows - 1; /* then at the screen bottom */
412 help = m - vd->crow; /* rows below */
413 vd->crow += uimin(DEF1_ARG(vd, 0), help);
414 CHECK_DW(vd);
417 vd->ccol += uimin(DEF1_ARG(vd, 0), COLS_LEFT(vd));
420 vd->ccol -= uimin(DEF1_ARG(vd, 0), vd->ccol);
421 vd->flags &= ~VTFL_LASTCHAR;
424 vd->ccol = uimin(DEF1_ARG(vd, 0) - 1, vd->ncols -1);
428 if (vd->flags & VTFL_DECOM)
429 vd->crow = vd->scrreg_startrow +
430 uimin(DEF1_ARG(vd, 0), vd->scrreg_nrows) - 1;
432 vd->crow = uimin(DEF1_ARG(vd, 0), vd->nrows) - 1;
433 CHECK_DW(vd);
434 vd->ccol = uimin(DEF1_ARG(vd, 1), NCOLS(vd)) - 1;
435 vd->flags &= ~VTFL_LASTCHAR;
440 if (vd->crow < vd->scrreg_startrow
441 || vd->scrreg_startrow + vd->scrreg_nrows <= vd->crow)
443 n = uimin(DEF1_ARG(vd, 0), ROWS_BELOW(vd) + 1);
446 savscrstartrow = vd->scrreg_startrow;
447 savscrnrows = vd->scrreg_nrows;
448 vd->scrreg_nrows -= ROWS_ABOVE(vd);
449 vd->scrreg_startrow = vd->crow;
451 wsemul_vt100_scrolldown(vd, n);
453 wsemul_vt100_scrollup(vd, n);
454 vd->scrreg_startrow = savscrstartrow;
455 vd->scrreg_nrows = savscrnrows;
457 vd->ccol = 0;
460 n = uimin(DEF1_ARG(vd, 0), COLS_LEFT(vd) + 1);
461 help = NCOLS(vd) - (vd->ccol + n);
463 COPYCOLS(vd, vd->ccol + n, vd->ccol, help);
464 ERASECOLS(vd, NCOLS(vd) - n, n, vd->bkgdattr);
467 wsemul_vt100_scrollup(vd, DEF1_ARG(vd, 0));
470 wsemul_vt100_scrolldown(vd, DEF1_ARG(vd, 0));
473 n = uimin(DEF1_ARG(vd, 0), COLS_LEFT(vd) + 1);
474 ERASECOLS(vd, vd->ccol, n, vd->bkgdattr);
477 if (vd->ccol == 0)
479 for (m = 0; m < DEF1_ARG(vd, 0); m++) {
480 if (vd->tabs) {
481 for (n = vd->ccol - 1; n > 0; n--) {
482 if (vd->tabs[n])
486 n = (vd->ccol - 1) & ~7;
487 vd->ccol = n;
493 if (ARG(vd, 0) == 0)
494 wsdisplay_emulinput(vd->cbcookie, WSEMUL_VT_ID1,
498 vd->crow = uimin(DEF1_ARG(vd, 0) - 1, vd->nrows - 1);
501 KASSERT(vd->tabs != NULL);
502 switch (ARG(vd, 0)) {
504 vd->tabs[vd->ccol] = 0;
507 memset(vd->tabs, 0, vd->ncols);
511 printf("CSI%dg unknown\n", ARG(vd, 0));
517 flags = vd->attrflags;
518 fgcol = vd->fgcol;
519 bgcol = vd->bgcol;
520 for (n = 0; n < vd->nargs; n++) {
521 switch (ARG(vd, n)) {
523 if (n == vd->nargs - 1) {
524 vd->bkgdattr = vd->curattr = vd->defattr;
525 vd->attrflags = vd->msgattrs.default_attrs;
526 vd->fgcol = vd->msgattrs.default_fg;
527 vd->bgcol = vd->msgattrs.default_bg;
530 flags = vd->msgattrs.default_attrs;
531 fgcol = vd->msgattrs.default_fg;
532 bgcol = vd->msgattrs.default_bg;
562 fgcol = ARG(vd, n) - 30;
565 fgcol = vd->msgattrs.default_fg;
571 bgcol = ARG(vd, n) - 40;
574 bgcol = vd->msgattrs.default_bg;
578 printf("CSI%dm unknown\n", ARG(vd, n));
583 if (vt100_selectattribute(vd, flags, fgcol, bgcol, &attr,
590 vd->curattr = attr;
591 vd->bkgdattr = bkgdattr;
592 vd->attrflags = flags;
593 vd->fgcol = fgcol;
594 vd->bgcol = bgcol;
598 switch (ARG(vd, 0)) {
603 vd->nrows, vd->ncols);
604 wsdisplay_emulinput(vd->cbcookie, buf, n);
610 switch (ARG(vd, 0)) {
613 wsdisplay_emulinput(vd->cbcookie, "\033[0n", 4);
618 vd->flags & VTFL_DECOM)
619 row = ROWS_ABOVE(vd);
621 row = vd->crow;
623 row + 1, vd->ccol + 1);
624 wsdisplay_emulinput(vd->cbcookie, buf, n);
629 wsdisplay_emulinput(vd->cbcookie, "\033[?13n", 6);
633 wsdisplay_emulinput(vd->cbcookie, "\033[?21n", 6);
637 wsdisplay_emulinput(vd->cbcookie, "\033[?27;1n", 8);
641 printf("CSI%dn unknown\n", ARG(vd, 0));
647 help = uimin(DEF1_ARG(vd, 0), vd->nrows) - 1;
648 n = uimin(DEFx_ARG(vd, 1, vd->nrows), vd->nrows) - help;
653 vd->scrreg_startrow = help;
654 vd->scrreg_nrows = n;
656 vd->crow = ((vd->flags & VTFL_DECOM) ?
657 vd->scrreg_startrow : 0);
658 vd->ccol = 0;
661 switch (ARG(vd, 0)) {
667 printf("CSI%dy unknown\n", ARG(vd, 0));
674 printf("CSI%c (%d, %d) unknown\n", c, ARG(vd, 0), ARG(vd, 1));
686 vt100_selectattribute(struct vt100base_data *vd,
691 if (!(vd->scrcapabilities & WSSCREEN_WSCOLORS)) {
698 error = (*vd->emulops->allocattr)(vd->emulcookie, fgcol, bgcol,
704 !(vd->scrcapabilities & WSSCREEN_HILIT)) {
706 if (vd->scrcapabilities & WSSCREEN_WSCOLORS) {
723 !(vd->scrcapabilities & WSSCREEN_UNDERLINE)) {
725 if (vd->scrcapabilities & WSSCREEN_WSCOLORS) {
742 !(vd->scrcapabilities & WSSCREEN_BLINK)) {
749 !(vd->scrcapabilities & WSSCREEN_REVERSE)) {
751 if (vd->scrcapabilities & WSSCREEN_WSCOLORS) {
763 error = (*vd->emulops->allocattr)(vd->emulcookie, fgcol, bgcol,
773 * told so by setting vd->dcstype to a nonzero value
776 wsemul_vt100_handle_dcs(struct vt100base_data *vd)
780 switch (vd->dcstype) {
784 KASSERT(vd->tabs != NULL);
785 KASSERT(vd->ncols <= 1024);
786 memset(vd->tabs, 0, vd->ncols);
788 for (i = 0; i < vd->dcspos; i++) {
789 char c = vd->dcsarg[i];
796 pos * 10 > vd->ncols - c0) {
805 KASSERT(pos <= vd->ncols);
806 vd->tabs[pos - 1] = 1;
818 KASSERT(pos <= vd->ncols);
819 vd->tabs[pos - 1] = 1;
823 panic("wsemul_vt100_handle_dcs: bad type %d", vd->dcstype);
825 vd->dcstype = 0;
829 vt100_ansimode(struct vt100base_data *vd, int nr, int op)
840 vd->flags |= VTFL_INSERTMODE;
842 vd->flags &= ~VTFL_INSERTMODE;
843 res = ((vd->flags & VTFL_INSERTMODE) ? 1 : 2);
863 vt100_decmode(struct vt100base_data *vd, int nr, int op)
868 flags = vd->flags;
910 if (flags != vd->flags)
911 (*vd->emulops->cursor)(vd->emulcookie,
913 vd->crow, vd->ccol);
934 vd->flags = flags;