Home | History | Annotate | Download | only in dev

Lines Matching refs:sc

84 #define SUBR_INIT(sc)			(sc)->grf->g_iteinit(sc)
85 #define SUBR_DEINIT(sc) (sc)->grf->g_itedeinit(sc)
86 #define SUBR_PUTC(sc,c,dy,dx,m) (sc)->grf->g_iteputc(sc,c,dy,dx,m)
87 #define SUBR_CURSOR(sc,flg) (sc)->grf->g_itecursor(sc,flg)
88 #define SUBR_CLEAR(sc,sy,sx,h,w) (sc)->grf->g_iteclear(sc,sy,sx,h,w)
89 #define SUBR_SCROLL(sc,sy,sx,cnt,dir) (sc)->grf->g_itescroll(sc,sy,sx,cnt,dir)
138 static void iteputchar(int c, struct ite_softc *sc);
205 struct ite_softc *sc;
210 sc = device_private(self);
224 memcpy(&sc->grf, &con_itesoftc.grf,
225 (char *)&sc[1] - (char *)&sc->grf);
227 kbd_ite = sc;
229 sc->grf = gsc;
233 aprint_normal(": %dx%d", sc->rows, sc->cols);
238 kbd_ite = sc;
239 if (kbd_ite == sc)
242 sc->flags |= ITE_ATTACHED;
290 struct ite_softc *sc;
292 sc = getitesp(cd->cn_dev);
293 sc->flags |= ITE_ISCONS;
295 sc->flags |= ITE_ACTIVE | ITE_ISCONS;
304 ite_cnfinish(struct ite_softc *sc)
329 struct ite_softc *sc;
332 sc = getitesp(dev);
336 (sc->flags & (ITE_ACTIVE | ITE_INGRF)) != ITE_ACTIVE) {
340 SUBR_CURSOR(sc, START_CURSOROPT);
341 iteputchar(ch, sc);
342 SUBR_CURSOR(sc, END_CURSOROPT);
357 struct ite_softc *sc;
359 sc = getitesp(dev);
360 if (sc->flags & ITE_INITED)
363 if (sc->kbdmap && sc->kbdmap != &ascii_kbdmap)
364 kmem_free(sc->kbdmap, sizeof(*sc->kbdmap));
365 sc->kbdmap = kmem_alloc(sizeof(*sc->kbdmap), KM_SLEEP);
366 memcpy(sc->kbdmap, &ascii_kbdmap, sizeof(struct kbdmap));
369 sc->kbdmap = &ascii_kbdmap;
371 sc->cursorx = 0;
372 sc->cursory = 0;
373 SUBR_INIT(sc);
374 SUBR_CURSOR(sc, DRAW_CURSOR);
375 if (sc->tabs == NULL)
376 sc->tabs = kmem_alloc(MAX_TABS * sizeof(u_char), KM_SLEEP);
377 ite_reset(sc);
378 sc->flags |= ITE_INITED;
384 struct ite_softc *sc;
393 sc = getitesp(dev);
394 if (sc == NULL)
396 if ((sc->flags & ITE_ATTACHED) == 0)
399 if (sc->tp == NULL) {
400 tp = sc->tp = tty_alloc();
404 tp = sc->tp;
409 if ((sc->flags & ITE_ACTIVE) == 0) {
436 tp->t_winsize.ws_row = sc->rows;
437 tp->t_winsize.ws_col = sc->cols;
509 struct ite_softc *sc;
516 sc = getitesp(dev);
517 tp = sc->tp;
518 view = viewview(sc->grf->g_viewdev);
534 memcpy(sc->kbdmap, addr, sizeof(struct kbdmap));
544 memcpy(addr, sc->kbdmap, sizeof(struct kbdmap));
573 sc->grf->g_mode(sc->grf, GM_GRFON, NULL, 0, 0);
576 sc->grf->g_mode(sc->grf, GM_GRFOFF, NULL, 0, 0);
591 return (sc->itexx_ioctl)(sc, cmd, addr, flag, l);
630 struct ite_softc *sc;
631 sc = getitesp(dev);
635 sc->flags |= ITE_ACTIVE;
636 sc->flags &= ~(ITE_INGRF | ITE_INITED);
640 sc->flags &= ~ITE_INGRF;
641 if ((sc->flags & ITE_ACTIVE) == 0)
644 sc->flags |= ITE_ACTIVE;
645 if (sc->flags & ITE_INGRF)
653 struct ite_softc *sc;
655 sc = getitesp(dev);
657 sc->flags |= ITE_INGRF;
658 if ((sc->flags & ITE_ACTIVE) == 0)
661 (sc->flags & (ITE_INGRF | ITE_ISCONS | ITE_INITED)) == ITE_INITED)
662 SUBR_DEINIT(sc);
664 sc->flags &= ~ITE_ACTIVE;
670 struct ite_softc *sc;
673 sc = device_lookup_private(&ite_cd, unit);
674 if (sc == NULL || (sc->flags & (ITE_ATTACHED | ITE_INITED)) == 0)
680 if (sc->flags & ITE_ACTIVE)
681 kbd_ite = sc;
686 (*view_cdevsw.d_ioctl)(sc->grf->g_viewdev, VIOCDISPLAY, NULL,
692 SUBR_CURSOR(sc, DRAW_CURSOR);
700 struct ite_softc *sc;
702 sc = getitesp(dev);
703 sc->flags &= ~ITE_INITED;
717 ite_reset(struct ite_softc *sc)
721 sc->curx = 0;
722 sc->cury = 0;
723 sc->attribute = ATTR_NOR;
724 sc->save_curx = 0;
725 sc->save_cury = 0;
726 sc->save_attribute = ATTR_NOR;
727 sc->ap = sc->argbuf;
728 sc->emul_level = 0;
729 sc->eightbit_C1 = 0;
730 sc->top_margin = 0;
731 sc->bottom_margin = sc->rows - 1;
732 sc->inside_margins = 0;
733 sc->linefeed_newline = 0;
734 sc->auto_wrap = ite_default_wrap;
735 sc->cursor_appmode = 0;
736 sc->keypad_appmode = 0;
737 sc->imode = 0;
738 sc->key_repeat = 1;
739 sc->G0 = CSET_ASCII;
740 sc->G1 = CSET_DECGRAPH;
741 sc->G2 = 0;
742 sc->G3 = 0;
743 sc->GL = &sc->G0;
744 sc->GR = &sc->G1;
745 memset(sc->tabs, 0, sc->cols);
746 for (i = 0; i < sc->cols; i++)
747 sc->tabs[i] = ((i & 7) == 0);
1083 alignment_display(struct ite_softc *sc)
1087 for (j = 0; j < sc->rows; j++)
1088 for (i = 0; i < sc->cols; i++)
1089 SUBR_PUTC(sc, 'E', j, i, ATTR_NOR);
1090 attrclr(sc, 0, 0, sc->rows, sc->cols);
1091 SUBR_CURSOR(sc, DRAW_CURSOR);
1095 snap_cury(struct ite_softc *sc)
1098 if (sc->inside_margins) {
1099 if (sc->cury < sc->top_margin)
1100 sc->cury = sc->top_margin;
1101 if (sc->cury > sc->bottom_margin)
1102 sc->cury = sc->bottom_margin;
1107 ite_dnchar(struct ite_softc *sc, int n)
1110 n = uimin(n, sc->cols - sc->curx);
1111 if (n < sc->cols - sc->curx) {
1112 SUBR_SCROLL(sc, sc->cury, sc->curx + n, n, SCROLL_LEFT);
1113 attrmov(sc, sc->cury, sc->curx + n, sc->cury, sc->curx,
1114 1, sc->cols - sc->curx - n);
1115 attrclr(sc, sc->cury, sc->cols - n, 1, n);
1118 SUBR_PUTC(sc, ' ', sc->cury, sc->cols - n - 1, ATTR_NOR);
1119 SUBR_CURSOR(sc, DRAW_CURSOR);
1123 ite_inchar(struct ite_softc *sc, int n)
1126 n = uimin(n, sc->cols - sc->curx);
1127 if (n < sc->cols - sc->curx) {
1128 SUBR_SCROLL(sc, sc->cury, sc->curx, n, SCROLL_RIGHT);
1129 attrmov(sc, sc->cury, sc->curx, sc->cury, sc->curx + n,
1130 1, sc->cols - sc->curx - n);
1131 attrclr(sc, sc->cury, sc->curx, 1, n);
1134 SUBR_PUTC(sc, ' ', sc->cury, sc->curx + n, ATTR_NOR);
1135 SUBR_CURSOR(sc, DRAW_CURSOR);
1139 ite_clrtoeol(struct ite_softc *sc)
1141 int y = sc->cury, x = sc->curx;
1143 if (sc->cols - x > 0) {
1144 SUBR_CLEAR(sc, y, x, 1, sc->cols - x);
1145 attrclr(sc, y, x, 1, sc->cols - x);
1146 SUBR_CURSOR(sc, DRAW_CURSOR);
1151 ite_clrtobol(struct ite_softc *sc)
1153 int y = sc->cury, x = uimin(sc->curx + 1, sc->cols);
1155 SUBR_CLEAR(sc, y, 0, 1, x);
1156 attrclr(sc, y, 0, 1, x);
1157 SUBR_CURSOR(sc, DRAW_CURSOR);
1161 ite_clrline(struct ite_softc *sc)
1163 int y = sc->cury;
1165 SUBR_CLEAR(sc, y, 0, 1, sc->cols);
1166 attrclr(sc, y, 0, 1, sc->cols);
1167 SUBR_CURSOR(sc, DRAW_CURSOR);
1173 ite_clrtoeos(struct ite_softc *sc)
1176 ite_clrtoeol(sc);
1177 if (sc->cury < sc->rows - 1) {
1178 SUBR_CLEAR(sc, sc->cury + 1, 0,
1179 sc->rows - 1 - sc->cury, sc->cols);
1180 attrclr(sc, sc->cury, 0, sc->rows - sc->cury, sc->cols);
1181 SUBR_CURSOR(sc, DRAW_CURSOR);
1186 ite_clrtobos(struct ite_softc *sc)
1189 ite_clrtobol(sc);
1190 if (sc->cury > 0) {
1191 SUBR_CLEAR(sc, 0, 0, sc->cury, sc->cols);
1192 attrclr(sc, 0, 0, sc->cury, sc->cols);
1193 SUBR_CURSOR(sc, DRAW_CURSOR);
1198 ite_clrscreen(struct ite_softc *sc)
1201 SUBR_CLEAR(sc, 0, 0, sc->rows, sc->cols);
1202 attrclr(sc, 0, 0, sc->rows, sc->cols);
1203 SUBR_CURSOR(sc, DRAW_CURSOR);
1209 ite_dnline(struct ite_softc *sc, int n)
1216 if (sc->cury < sc->top_margin || sc->cury > sc->bottom_margin)
1219 n = uimin(n, sc->bottom_margin + 1 - sc->cury);
1220 if (n <= sc->bottom_margin - sc->cury) {
1221 SUBR_SCROLL(sc, sc->cury + n, 0, n, SCROLL_UP);
1222 attrmov(sc, sc->cury + n, 0, sc->cury, 0,
1223 sc->bottom_margin + 1 - sc->cury - n, sc->cols);
1225 SUBR_CLEAR(sc, sc->bottom_margin - n + 1, 0, n, sc->cols);
1226 attrclr(sc, sc->bottom_margin - n + 1, 0, n, sc->cols);
1227 SUBR_CURSOR(sc, DRAW_CURSOR);
1231 ite_inline(struct ite_softc *sc, int n)
1238 if (sc->cury < sc->top_margin || sc->cury > sc->bottom_margin)
1241 n = uimin(n, sc->bottom_margin + 1 - sc->cury);
1242 if (n <= sc->bottom_margin - sc->cury) {
1243 SUBR_SCROLL(sc, sc->cury, 0, n, SCROLL_DOWN);
1244 attrmov(sc, sc->cury, 0, sc->cury + n, 0,
1245 sc->bottom_margin + 1 - sc->cury - n, sc->cols);
1247 SUBR_CLEAR(sc, sc->cury, 0, n, sc->cols);
1248 attrclr(sc, sc->cury, 0, n, sc->cols);
1249 SUBR_CURSOR(sc, DRAW_CURSOR);
1253 ite_lf(struct ite_softc *sc)
1256 ++sc->cury;
1257 if ((sc->cury == sc->bottom_margin+1) || (sc->cury == sc->rows)) {
1258 sc->cury--;
1259 SUBR_SCROLL(sc, sc->top_margin + 1, 0, 1, SCROLL_UP);
1260 ite_clrline(sc);
1262 SUBR_CURSOR(sc, MOVE_CURSOR);
1263 clr_attr(sc, ATTR_INV);
1266 sc->G0 = CSET_ASCII;
1267 sc->G1 = CSET_DECGRAPH;
1268 sc->G2 = 0;
1269 sc->G3 = 0;
1270 sc->GL = &sc->G0;
1271 sc->GR = &sc->G1;
1275 ite_crlf(struct ite_softc *sc)
1278 sc->curx = 0;
1279 ite_lf(sc);
1283 ite_cr(struct ite_softc *sc)
1286 if (sc->curx) {
1287 sc->curx = 0;
1288 SUBR_CURSOR(sc, MOVE_CURSOR);
1293 ite_rlf(struct ite_softc *sc)
1296 sc->cury--;
1297 if ((sc->cury < 0) || (sc->cury == sc->top_margin - 1)) {
1298 sc->cury++;
1299 SUBR_SCROLL(sc, sc->top_margin, 0, 1, SCROLL_DOWN);
1300 ite_clrline(sc);
1302 SUBR_CURSOR(sc, MOVE_CURSOR);
1303 clr_attr(sc, ATTR_INV);
1318 ite_argnum(struct ite_softc *sc)
1324 if (sc->ap == sc->argbuf)
1326 ch = *sc->ap;
1327 *sc->ap = 0;
1328 n = atoi (sc->argbuf);
1329 *sc->ap = ch;
1335 ite_zargnum(struct ite_softc *sc)
1341 if (sc->ap == sc->argbuf)
1343 ch = *sc->ap;
1344 *sc->ap = 0;
1345 n = atoi (sc->argbuf);
1346 *sc->ap = ch;
1354 struct ite_softc *sc;
1357 sc = getitesp(dev);
1360 if ((sc->flags & (ITE_ACTIVE|ITE_INGRF)) != ITE_ACTIVE)
1363 SUBR_CURSOR(sc, START_CURSOROPT);
1366 iteputchar(s[i], sc);
1367 SUBR_CURSOR(sc, END_CURSOROPT);
1372 iteputchar(register int c, struct ite_softc *sc)
1383 if (sc->escape)
1385 switch (sc->escape)
1394 sc->escape = 0;
1399 sc->escape = 0;
1404 sc->escape = 0;
1409 sc->escape = 0;
1414 sc->escape = 0;
1419 sc->escape = 0;
1424 sc->escape = 0;
1429 sc->escape = 0;
1434 sc->escape = 0;
1439 sc->escape = 0;
1444 sc->escape = 0;
1449 sc->escape = 0;
1456 sc->escape = ' ';
1464 sc->escape = c;
1490 sc->escape = 0;
1497 sc->GR = &sc->G1;
1498 sc->escape = 0;
1502 sc->GL = &sc->G2;
1503 sc->escape = 0;
1507 sc->GR = &sc->G2;
1508 sc->escape = 0;
1512 sc->GL = &sc->G3;
1513 sc->escape = 0;
1517 sc->GR = &sc->G3;
1518 sc->escape = 0;
1522 sc->GR = &sc->G1;
1523 sc->escape = 0;
1529 sc->escape = '#';
1535 ite_reset (sc);
1536 SUBR_CURSOR(sc, MOVE_CURSOR);
1537 sc->escape = 0;
1543 sc->save_curx = sc->curx;
1544 sc->save_cury = sc->cury;
1545 sc->save_attribute = sc->attribute;
1546 sc->sc_G0 = sc->G0;
1547 sc->sc_G1 = sc->G1;
1548 sc->sc_G2 = sc->G2;
1549 sc->sc_G3 = sc->G3;
1550 sc->sc_GL = sc->GL;
1551 sc->sc_GR = sc->GR;
1552 sc->escape = 0;
1557 sc->curx = sc->save_curx;
1558 sc->cury = sc->save_cury;
1559 sc->attribute = sc->save_attribute;
1560 sc->G0 = sc->sc_G0;
1561 sc->G1 = sc->sc_G1;
1562 sc->G2 = sc->sc_G2;
1563 sc->G3 = sc->sc_G3;
1564 sc->GL = sc->sc_GL;
1565 sc->GR = sc->sc_GR;
1566 SUBR_CURSOR(sc, MOVE_CURSOR);
1567 sc->escape = 0;
1571 sc->keypad_appmode = 1;
1572 sc->escape = 0;
1576 sc->keypad_appmode = 0;
1577 sc->escape = 0;
1581 if (sc->emul_level == EMUL_VT100)
1585 sc->escape = 0;
1590 sc->escape = 0;
1599 sc->G0 = CSET_ASCII;
1600 sc->escape = 0;
1603 sc->G0 = CSET_DECGRAPH;
1604 sc->escape = 0;
1608 sc->escape = 0;
1612 sc->escape = 0;
1620 sc->eightbit_C1 = 0;
1621 sc->escape = 0;
1625 sc->eightbit_C1 = 1;
1626 sc->escape = 0;
1631 sc->escape = 0;
1642 sc->escape = 0;
1647 sc->escape = 0;
1652 sc->escape = 0;
1657 sc->escape = 0;
1662 alignment_display (sc);
1663 sc->escape = 0;
1667 sc->escape = 0;
1681 if (sc->ap < sc->argbuf + MAX_ARGSIZE)
1682 *sc->ap++ = c;
1689 if (--sc->curx < 0)
1690 sc->curx = 0;
1692 SUBR_CURSOR(sc, MOVE_CURSOR);
1696 *sc->ap = 0;
1697 if (! strncmp (sc->argbuf, "61\"", 3))
1698 sc->emul_level = EMUL_VT100;
1699 else if (! strncmp (sc->argbuf, "63;1\"", 5)
1700 || ! strncmp (sc->argbuf, "62;1\"", 5))
1701 sc->emul_level = EMUL_VT300_7;
1703 sc->emul_level = EMUL_VT300_8;
1704 sc->escape = 0;
1709 *sc->ap = 0;
1710 sc->escape = '?';
1711 sc->ap = sc->argbuf;
1716 *sc->ap = 0;
1717 if (sc->argbuf[0] == '>')
1721 else switch (ite_zargnum(sc))
1725 if (sc->emul_level == EMUL_VT100)
1731 sc->escape = 0;
1735 switch (ite_zargnum(sc))
1742 snprintf (sc->argbuf, sizeof(sc->argbuf), "\033[%d;%dR",
1743 sc->cury + 1, sc->curx + 1);
1744 ite_sendstr (sc->argbuf);
1747 sc->escape = 0;
1752 switch (ite_zargnum(sc))
1762 sc->escape = 0;
1767 switch (ite_zargnum(sc))
1770 if (sc->curx < sc->cols)
1771 sc->tabs[sc->curx] = 0;
1774 for (n = 0; n < sc->cols; n++)
1775 sc->tabs[n] = 0;
1778 sc->escape = 0;
1783 n = ite_zargnum (sc);
1787 sc->imode = (c == 'h'); /* insert/replace mode */
1790 sc->linefeed_newline = (c == 'h');
1793 sc->escape = 0;
1798 ite_dnline (sc, ite_argnum (sc));
1799 sc->escape = 0;
1804 ite_inline (sc, ite_argnum (sc));
1805 sc->escape = 0;
1810 ite_dnchar (sc, ite_argnum (sc));
1811 sc->escape = 0;
1816 ite_inchar (sc, ite_argnum (sc));
1817 sc->escape = 0;
1825 *sc->ap = 0;
1826 x = atoi (sc->argbuf);
1828 sc->curx = uimin(x, sc->cols - 1);
1829 sc->escape = 0;
1830 SUBR_CURSOR(sc, MOVE_CURSOR);
1831 clr_attr (sc, ATTR_INV);
1838 *sc->ap = 0;
1839 y = atoi (sc->argbuf);
1841 if (sc->inside_margins)
1842 y += sc->top_margin;
1843 sc->cury = uimin(y, sc->rows - 1);
1844 sc->escape = 0;
1845 snap_cury(sc);
1846 SUBR_CURSOR(sc, MOVE_CURSOR);
1847 clr_attr (sc, ATTR_INV);
1853 *sc->ap = 0;
1854 y = atoi (sc->argbuf);
1856 cp = strchr(sc->argbuf, ';');
1861 if (sc->inside_margins)
1862 y += sc->top_margin;
1863 sc->cury = uimin(y, sc->rows - 1);
1864 sc->curx = uimin(x, sc->cols - 1);
1865 sc->escape = 0;
1866 snap_cury(sc);
1867 SUBR_CURSOR(sc, MOVE_CURSOR);
1868 clr_attr (sc, ATTR_INV);
1872 n = ite_argnum (sc);
1873 n = sc->cury - (n ? n : 1);
1875 if (sc->inside_margins)
1876 n = uimax(sc->top_margin, n);
1877 else if (n == sc->top_margin - 1)
1880 n = sc->top_margin;
1881 sc->cury = n;
1882 sc->escape = 0;
1883 SUBR_CURSOR(sc, MOVE_CURSOR);
1884 clr_attr (sc, ATTR_INV);
1888 n = ite_argnum (sc);
1889 n = sc->cury + (n ? n : 1);
1890 n = uimin(sc->rows - 1, n);
1891 if (sc->inside_margins)
1892 n = uimin(sc->bottom_margin, n);
1893 else if (n == sc->bottom_margin + 1)
1896 n = sc->bottom_margin;
1897 sc->cury = n;
1898 sc->escape = 0;
1899 SUBR_CURSOR(sc, MOVE_CURSOR);
1900 clr_attr (sc, ATTR_INV);
1904 n = ite_argnum (sc);
1906 sc->curx = uimin(sc->curx + n, sc->cols - 1);
1907 sc->escape = 0;
1908 SUBR_CURSOR(sc, MOVE_CURSOR);
1909 clr_attr (sc, ATTR_INV);
1913 n = ite_argnum (sc);
1915 n = sc->curx - n;
1916 sc->curx = n >= 0 ? n : 0;
1917 sc->escape = 0;
1918 SUBR_CURSOR(sc, MOVE_CURSOR);
1919 clr_attr (sc, ATTR_INV);
1926 *sc->ap = 0;
1927 n = ite_zargnum (sc);
1929 ite_clrtoeos(sc);
1931 ite_clrtobos(sc);
1933 ite_clrscreen(sc);
1934 sc->escape = 0;
1939 n = ite_zargnum (sc);
1941 ite_clrtoeol(sc);
1943 ite_clrtobol(sc);
1945 ite_clrline(sc);
1946 sc->escape = 0;
1951 n = ite_argnum(sc) - 1;
1952 n = uimin(n, sc->cols - 1 - sc->curx);
1955 attrclr(sc, sc->cury, sc->curx + n, 1, 1);
1956 SUBR_PUTC(sc, ' ', sc->cury, sc->curx + n, ATTR_NOR);
1958 sc->escape = 0;
1964 sc->escape = 0;
1969 *sc->ap = 0;
1970 x = atoi (sc->argbuf);
1972 y = sc->rows;
1973 cp = strchr(sc->argbuf, ';');
1977 y = y ? y : sc->rows;
1983 y = sc->rows;
1987 sc->top_margin = uimin(x, sc->rows - 1);
1988 sc->bottom_margin = uimin(y, sc->rows - 1);
1989 if (sc->inside_margins)
1991 sc->cury = sc->top_margin;
1992 sc->curx = 0;
1993 SUBR_CURSOR(sc, MOVE_CURSOR);
1995 sc->escape = 0;
2003 *sc->ap = 0;
2005 if (sc->ap == sc->argbuf)
2006 sc->ap++;
2007 for (chp = sc->argbuf; chp < sc->ap; )
2013 clr_attr (sc, ATTR_ALL);
2018 set_attr (sc, ATTR_BOLD);
2026 clr_attr (sc, ATTR_BOLD);
2031 clr_attr (sc, ATTR_UL);
2036 clr_attr (sc, ATTR_BLINK);
2041 clr_attr (sc, ATTR_INV);
2052 set_attr (sc, ATTR_UL);
2057 set_attr (sc, ATTR_BLINK);
2062 set_attr (sc, ATTR_INV);
2073 sc->escape = 0;
2080 sc->escape = 0;
2086 sc->escape = 0;
2100 if (sc->ap < sc->argbuf + MAX_ARGSIZE - 1)
2101 *sc->ap++ = c;
2106 *sc->ap = 0;
2107 if (sc->ap == &sc->argbuf[2])
2109 if (! strncmp (sc->argbuf, "15", 2))
2113 else if (! strncmp (sc->argbuf, "25", 2))
2117 else if (! strncmp (sc->argbuf, "26", 2))
2121 sc->escape = 0;
2126 n = ite_zargnum (sc);
2130 sc->cursor_appmode = (c == 'h');
2145 sc->inside_margins = (c == 'h');
2146 sc->curx = 0;
2147 sc->cury = sc->inside_margins ? sc->top_margin : 0;
2148 SUBR_CURSOR(sc, MOVE_CURSOR);
2152 sc->auto_wrap = (c == 'h');
2156 sc->key_repeat = (c == 'h');
2160 sc->linefeed_newline = (c == 'h');
2164 SUBR_CURSOR(sc, (c == 'h') ? DRAW_CURSOR : ERASE_CURSOR);
2167 sc->escape = 0;
2171 sc->escape = 0;
2178 sc->escape = 0;
2190 if (sc->linefeed_newline)
2191 ite_crlf (sc);
2193 ite_lf (sc);
2197 ite_cr (sc);
2201 if (--sc->curx < 0)
2202 sc->curx = 0;
2204 SUBR_CURSOR(sc, MOVE_CURSOR);
2208 for (n = sc->curx + 1; n < sc->cols; n++) {
2209 if (sc->tabs[n]) {
2210 sc->curx = n;
2211 SUBR_CURSOR(sc, MOVE_CURSOR);
2223 sc->GL = &sc->G1;
2227 sc->GL = &sc->G0;
2235 sc->escape = 0; /* cancel any escape sequence in progress */
2239 sc->escape = 0; /* dito, but see below */
2244 sc->escape = ESC;
2250 ite_lf (sc);
2254 ite_crlf (sc);
2258 if (sc->curx < sc->cols)
2259 sc->tabs[sc->curx] = 1;
2263 ite_rlf (sc);
2274 sc->escape = DCS;
2275 sc->ap = sc->argbuf;
2279 sc->escape = CSI;
2280 sc->ap = sc->argbuf;
2288 sc->escape = OSC;
2292 sc->escape = PM;
2296 sc->escape = APC;
2302 if (sc->imode)
2303 ite_inchar(sc, 1);
2304 iteprecheckwrap(sc);
2306 if ((sc->attribute & ATTR_INV) || attrtest(sc, ATTR_INV)) {
2307 attrset(sc, ATTR_INV);
2308 SUBR_PUTC(sc, c, sc->cury, sc->curx, ATTR_INV);
2310 SUBR_PUTC(sc, c, sc->cury, sc->curx, ATTR_NOR);
2312 SUBR_PUTC(sc, c, sc->cury, sc->curx, sc->attribute);
2314 SUBR_CURSOR(sc, DRAW_CURSOR);
2315 itecheckwrap(sc);
2321 iteprecheckwrap(struct ite_softc *sc)
2323 if (sc->auto_wrap && sc->curx == sc->cols) {
2324 sc->curx = 0;
2325 clr_attr(sc, ATTR_INV);
2326 if (++sc->cury >= sc->bottom_margin + 1) {
2327 sc->cury = sc->bottom_margin;
2328 SUBR_CURSOR(sc, MOVE_CURSOR);
2329 SUBR_SCROLL(sc, sc->top_margin + 1, 0, 1, SCROLL_UP);
2330 ite_clrtoeol(sc);
2332 SUBR_CURSOR(sc, MOVE_CURSOR);
2337 itecheckwrap(struct ite_softc *sc)
2339 if (sc->curx < sc->cols) {
2340 sc->curx++;
2341 SUBR_CURSOR(sc, MOVE_CURSOR);