Lines Matching refs:ip

87 #define SUBR_INIT(ip)		ip->isw->ite_init(ip)  argument
88 #define SUBR_DEINIT(ip) ip->isw->ite_deinit(ip) argument
89 #define SUBR_PUTC(ip,c,dy,dx,m) ip->isw->ite_putc(ip,c,dy,dx,m) argument
90 #define SUBR_CURSOR(ip,flg) ip->isw->ite_cursor(ip,flg) argument
91 #define SUBR_CLEAR(ip,sy,sx,h,w) ip->isw->ite_clear(ip,sy,sx,h,w) argument
92 #define SUBR_SCROLL(ip,sy,sx,count,dir) \ argument
93 ip->isw->ite_scroll(ip,sy,sx,count,dir)
204 struct ite_softc *ip; in iteattach() local
208 ip = device_private(self); in iteattach()
209 ip->device = self; in iteattach()
216 memcpy(&ip->grf, &con_itesoftc.grf, in iteattach()
217 (char *)&ip[1] - (char *)&ip->grf); in iteattach()
219 kbd_ite = ip; in iteattach()
221 ip->grf = gp; in iteattach()
223 aprint_normal(": rows %d cols %d", ip->rows, ip->cols); in iteattach()
225 kbd_ite = ip; in iteattach()
244 struct ite_softc *ip; in iteinit() local
246 ip = getitesp(dev); in iteinit()
248 if (ip->flags & ITE_INITED) in iteinit()
252 ip->curx = 0; in iteinit()
253 ip->cury = 0; in iteinit()
254 ip->cursorx = 0; in iteinit()
255 ip->cursory = 0; in iteinit()
257 ip->isw = &itesw[device_unit(ip->device)]; /* XXX */ in iteinit()
258 SUBR_INIT(ip); in iteinit()
259 SUBR_CURSOR(ip, DRAW_CURSOR); in iteinit()
260 if (ip->tabs == NULL) in iteinit()
261 ip->tabs = malloc(MAX_TABS * sizeof(u_char), in iteinit()
263 ite_reset(ip); in iteinit()
264 ip->flags |= ITE_INITED; in iteinit()
286 struct ite_softc *ip; in iteon() local
289 (ip = getitesp(dev)) == NULL || (ip->flags & ITE_ALIVE) == 0) in iteon()
293 ip->flags |= ITE_ACTIVE; in iteon()
294 ip->flags &= ~(ITE_INGRF|ITE_INITED); in iteon()
298 ip->flags &= ~ITE_INGRF; in iteon()
299 if ((ip->flags & ITE_ACTIVE) == 0) in iteon()
302 ip->flags |= ITE_ACTIVE; in iteon()
303 if ((ip->flags & ITE_INGRF) != 0) in iteon()
307 ite_reset(ip); in iteon()
324 struct ite_softc *ip; in iteoff() local
328 (ip = getitesp(dev)) == NULL || (ip->flags & ITE_ALIVE) == 0) in iteoff()
331 ip->flags |= ITE_INGRF; in iteoff()
333 if ((ip->flags & ITE_ACTIVE) == 0) in iteoff()
336 (ip->flags & (ITE_INGRF | ITE_ISCONS | ITE_INITED)) == ITE_INITED) in iteoff()
337 SUBR_DEINIT(ip); in iteoff()
346 if ((flag & 2) == 0 && (ip->flags & ITE_ISCONS) == 0) { in iteoff()
347 ip->flags &= ~ITE_ACTIVE; in iteoff()
364 struct ite_softc *ip; in iteopen() local
368 if (unit >= ite_cd.cd_ndevs || (ip = getitesp(dev)) == NULL) in iteopen()
377 if ((ip->flags & ITE_ACTIVE) == 0) { in iteopen()
398 tp->t_winsize.ws_row = ip->rows; in iteopen()
399 tp->t_winsize.ws_col = ip->cols; in iteopen()
551 struct ite_softc *ip; in ite_reinit() local
556 (ip = getitesp(dev)) == NULL) in ite_reinit()
559 ip->flags &= ~ITE_INITED; in ite_reinit()
564 ite_reset(struct ite_softc *ip) in ite_reset() argument
568 ip->curx = 0; in ite_reset()
569 ip->cury = 0; in ite_reset()
570 ip->attribute = 0; in ite_reset()
571 ip->save_curx = 0; in ite_reset()
572 ip->save_cury = 0; in ite_reset()
573 ip->save_attribute = 0; in ite_reset()
574 ip->ap = ip->argbuf; in ite_reset()
575 ip->emul_level = EMUL_VT300_8; in ite_reset()
576 ip->eightbit_C1 = 0; in ite_reset()
577 ip->top_margin = 0; in ite_reset()
578 ip->bottom_margin = ip->rows - 1; in ite_reset()
579 ip->inside_margins = 0; /* origin mode == absolute */ in ite_reset()
580 ip->linefeed_newline = 0; in ite_reset()
581 ip->auto_wrap = 1; in ite_reset()
582 ip->cursor_appmode = 0; in ite_reset()
583 ip->keypad_appmode = 0; in ite_reset()
584 ip->imode = 0; in ite_reset()
585 ip->key_repeat = 1; in ite_reset()
586 ip->G0 = CSET_ASCII; in ite_reset()
587 ip->G1 = CSET_JIS1983; in ite_reset()
588 ip->G2 = CSET_JISKANA; in ite_reset()
589 ip->G3 = CSET_JIS1990; in ite_reset()
590 ip->GL = &ip->G0; in ite_reset()
591 ip->GR = &ip->G1; in ite_reset()
592 ip->save_GL = 0; in ite_reset()
593 ip->save_char = 0; in ite_reset()
594 ip->fgcolor = 7; in ite_reset()
595 ip->bgcolor = 0; in ite_reset()
596 for (i = 0; i < ip->cols; i++) in ite_reset()
597 ip->tabs[i] = ((i & 7) == 0); in ite_reset()
599 SUBR_CLEAR(ip, 0, 0, ip->rows, ip->cols); in ite_reset()
600 attrclr(ip, 0, 0, ip->rows, ip->cols); in ite_reset()
919 ite_sendstr(struct ite_softc *ip, const char *str) in ite_sendstr() argument
927 alignment_display(struct ite_softc *ip) in alignment_display() argument
931 for (j = 0; j < ip->rows; j++) in alignment_display()
932 for (i = 0; i < ip->cols; i++) in alignment_display()
933 SUBR_PUTC(ip, 'E', j, i, ATTR_NOR); in alignment_display()
934 attrclr(ip, 0, 0, ip->rows, ip->cols); in alignment_display()
938 snap_cury(struct ite_softc *ip) in snap_cury() argument
941 if (ip->inside_margins != 0) { in snap_cury()
942 if (ip->cury < ip->top_margin) in snap_cury()
943 ip->cury = ip->top_margin; in snap_cury()
944 if (ip->cury > ip->bottom_margin) in snap_cury()
945 ip->cury = ip->bottom_margin; in snap_cury()
950 ite_dnchar(struct ite_softc *ip, int n) in ite_dnchar() argument
953 n = uimin(n, ip->cols - ip->curx); in ite_dnchar()
954 if (n < ip->cols - ip->curx) { in ite_dnchar()
955 SUBR_SCROLL(ip, ip->cury, ip->curx + n, n, SCROLL_LEFT); in ite_dnchar()
956 attrmov(ip, ip->cury, ip->curx + n, ip->cury, ip->curx, in ite_dnchar()
957 1, ip->cols - ip->curx - n); in ite_dnchar()
958 attrclr(ip, ip->cury, ip->cols - n, 1, n); in ite_dnchar()
961 SUBR_PUTC(ip, ' ', ip->cury, ip->cols - n - 1, ATTR_NOR); in ite_dnchar()
965 ite_inchar(struct ite_softc *ip, int n) in ite_inchar() argument
967 int c = ip->save_char; in ite_inchar()
969 ip->save_char = 0; in ite_inchar()
970 n = uimin(n, ip->cols - ip->curx); in ite_inchar()
971 if (n < ip->cols - ip->curx) { in ite_inchar()
972 SUBR_SCROLL(ip, ip->cury, ip->curx, n, SCROLL_RIGHT); in ite_inchar()
973 attrmov(ip, ip->cury, ip->curx, ip->cury, ip->curx + n, in ite_inchar()
974 1, ip->cols - ip->curx - n); in ite_inchar()
975 attrclr(ip, ip->cury, ip->curx, 1, n); in ite_inchar()
978 SUBR_PUTC(ip, ' ', ip->cury, ip->curx + n, ATTR_NOR); in ite_inchar()
979 ip->save_char = c; in ite_inchar()
983 ite_clrtoeol(struct ite_softc *ip) in ite_clrtoeol() argument
985 int y = ip->cury, x = ip->curx; in ite_clrtoeol()
987 if (ip->cols - x > 0) { in ite_clrtoeol()
988 SUBR_CLEAR(ip, y, x, 1, ip->cols - x); in ite_clrtoeol()
989 attrclr(ip, y, x, 1, ip->cols - x); in ite_clrtoeol()
994 ite_clrtobol(struct ite_softc *ip) in ite_clrtobol() argument
996 int y = ip->cury, x = uimin(ip->curx + 1, ip->cols); in ite_clrtobol()
998 SUBR_CLEAR(ip, y, 0, 1, x); in ite_clrtobol()
999 attrclr(ip, y, 0, 1, x); in ite_clrtobol()
1003 ite_clrline(struct ite_softc *ip) in ite_clrline() argument
1005 int y = ip->cury; in ite_clrline()
1007 SUBR_CLEAR(ip, y, 0, 1, ip->cols); in ite_clrline()
1008 attrclr(ip, y, 0, 1, ip->cols); in ite_clrline()
1012 ite_clrtoeos(struct ite_softc *ip) in ite_clrtoeos() argument
1015 ite_clrtoeol(ip); in ite_clrtoeos()
1016 if (ip->cury < ip->rows - 1) { in ite_clrtoeos()
1017 SUBR_CLEAR(ip, ip->cury + 1, 0, in ite_clrtoeos()
1018 ip->rows - 1 - ip->cury, ip->cols); in ite_clrtoeos()
1019 attrclr(ip, ip->cury, 0, ip->rows - ip->cury, ip->cols); in ite_clrtoeos()
1024 ite_clrtobos(struct ite_softc *ip) in ite_clrtobos() argument
1027 ite_clrtobol(ip); in ite_clrtobos()
1028 if (ip->cury > 0) { in ite_clrtobos()
1029 SUBR_CLEAR(ip, 0, 0, ip->cury, ip->cols); in ite_clrtobos()
1030 attrclr(ip, 0, 0, ip->cury, ip->cols); in ite_clrtobos()
1035 ite_clrscreen(struct ite_softc *ip) in ite_clrscreen() argument
1038 SUBR_CLEAR(ip, 0, 0, ip->rows, ip->cols); in ite_clrscreen()
1039 attrclr(ip, 0, 0, ip->rows, ip->cols); in ite_clrscreen()
1043 ite_dnline(struct ite_softc *ip, int n) in ite_dnline() argument
1050 if (ip->cury < ip->top_margin || ip->cury > ip->bottom_margin) in ite_dnline()
1053 n = uimin(n, ip->bottom_margin + 1 - ip->cury); in ite_dnline()
1054 if (n <= ip->bottom_margin - ip->cury) { in ite_dnline()
1055 SUBR_SCROLL(ip, ip->cury + n, 0, n, SCROLL_UP); in ite_dnline()
1056 attrmov(ip, ip->cury + n, 0, ip->cury, 0, in ite_dnline()
1057 ip->bottom_margin + 1 - ip->cury - n, ip->cols); in ite_dnline()
1059 SUBR_CLEAR(ip, ip->bottom_margin - n + 1, 0, n, ip->cols); in ite_dnline()
1060 attrclr(ip, ip->bottom_margin - n + 1, 0, n, ip->cols); in ite_dnline()
1064 ite_inline(struct ite_softc *ip, int n) in ite_inline() argument
1071 if (ip->cury < ip->top_margin || ip->cury > ip->bottom_margin) in ite_inline()
1077 n = uimin(n, ip->bottom_margin + 1 - ip->cury); in ite_inline()
1078 if (n <= ip->bottom_margin - ip->cury) { in ite_inline()
1079 SUBR_SCROLL(ip, ip->cury, 0, n, SCROLL_DOWN); in ite_inline()
1080 attrmov(ip, ip->cury, 0, ip->cury + n, 0, in ite_inline()
1081 ip->bottom_margin + 1 - ip->cury - n, ip->cols); in ite_inline()
1083 SUBR_CLEAR(ip, ip->cury, 0, n, ip->cols); in ite_inline()
1084 attrclr(ip, ip->cury, 0, n, ip->cols); in ite_inline()
1085 ip->curx = 0; in ite_inline()
1089 ite_index(struct ite_softc *ip) in ite_index() argument
1092 ++ip->cury; in ite_index()
1093 if ((ip->cury == ip->bottom_margin+1) || (ip->cury == ip->rows)) { in ite_index()
1094 ip->cury--; in ite_index()
1095 SUBR_SCROLL(ip, ip->top_margin + 1, 0, 1, SCROLL_UP); in ite_index()
1096 ite_clrline(ip); in ite_index()
1102 ite_lf(struct ite_softc *ip) in ite_lf() argument
1105 ++ip->cury; in ite_lf()
1106 if (ip->cury > ip->bottom_margin) { in ite_lf()
1107 ip->cury--; in ite_lf()
1108 SUBR_SCROLL(ip, ip->top_margin + 1, 0, 1, SCROLL_UP); in ite_lf()
1109 ite_clrline(ip); in ite_lf()
1114 ip->G0 = CSET_ASCII; in ite_lf()
1115 ip->G1 = CSET_JIS1983; in ite_lf()
1116 ip->G2 = CSET_JISKANA; in ite_lf()
1117 ip->G3 = CSET_JIS1990; in ite_lf()
1118 ip->GL = &ip->G0; in ite_lf()
1119 ip->GR = &ip->G1; in ite_lf()
1120 ip->save_GL = 0; in ite_lf()
1121 ip->save_char = 0; in ite_lf()
1125 ite_crlf(struct ite_softc *ip) in ite_crlf() argument
1128 ip->curx = 0; in ite_crlf()
1129 ite_lf(ip); in ite_crlf()
1133 ite_cr(struct ite_softc *ip) in ite_cr() argument
1136 if (ip->curx != 0) { in ite_cr()
1137 ip->curx = 0; in ite_cr()
1142 ite_rlf(struct ite_softc *ip) in ite_rlf() argument
1145 ip->cury--; in ite_rlf()
1146 if ((ip->cury < 0) || (ip->cury == ip->top_margin - 1)) { in ite_rlf()
1147 ip->cury++; in ite_rlf()
1148 SUBR_SCROLL(ip, ip->top_margin, 0, 1, SCROLL_DOWN); in ite_rlf()
1149 ite_clrline(ip); in ite_rlf()
1151 clr_attr(ip, ATTR_INV); in ite_rlf()
1165 ite_argnum(struct ite_softc *ip) in ite_argnum() argument
1171 if (ip->ap == ip->argbuf) in ite_argnum()
1173 ch = *ip->ap; in ite_argnum()
1174 *ip->ap = 0; in ite_argnum()
1175 n = atoi(ip->argbuf); in ite_argnum()
1176 *ip->ap = ch; in ite_argnum()
1182 ite_zargnum(struct ite_softc *ip) in ite_zargnum() argument
1188 if (ip->ap == ip->argbuf) in ite_zargnum()
1190 ch = *ip->ap; in ite_zargnum()
1191 *ip->ap = 0; /* terminate string */ in ite_zargnum()
1192 n = atoi(ip->argbuf); in ite_zargnum()
1193 *ip->ap = ch; in ite_zargnum()
1201 struct ite_softc *ip; in ite_putstr() local
1204 ip = getitesp(dev); in ite_putstr()
1207 if ((ip->flags & (ITE_ACTIVE|ITE_INGRF)) != ITE_ACTIVE) in ite_putstr()
1210 SUBR_CURSOR(ip, START_CURSOROPT); in ite_putstr()
1213 iteputchar(s[i], ip); in ite_putstr()
1214 SUBR_CURSOR(ip, END_CURSOROPT); in ite_putstr()
1218 iteputchar(int c, struct ite_softc *ip) in iteputchar() argument
1223 if (c >= 0x20 && ip->escape != 0) { in iteputchar()
1224 switch (ip->escape) { in iteputchar()
1235 ip->escape = 0; in iteputchar()
1245 ip->escape = 0; in iteputchar()
1251 ip->escape = 0; in iteputchar()
1257 ip->escape = 0; in iteputchar()
1263 ip->escape = 0; in iteputchar()
1269 ip->escape = 0; in iteputchar()
1275 ip->escape = 0; in iteputchar()
1280 ip->escape = 0; in iteputchar()
1286 ip->escape = 0; in iteputchar()
1291 ip->escape = 0; in iteputchar()
1296 ip->escape = 0; in iteputchar()
1301 ip->escape = 0; in iteputchar()
1307 ip->escape = ' '; in iteputchar()
1314 ip->escape = c; in iteputchar()
1340 ip->escape = 0; in iteputchar()
1346 ip->escape = '$'; in iteputchar()
1351 ip->GR = &ip->G1; in iteputchar()
1352 ip->escape = 0; in iteputchar()
1356 ip->GL = &ip->G2; in iteputchar()
1357 ip->escape = 0; in iteputchar()
1361 ip->GR = &ip->G2; in iteputchar()
1362 ip->escape = 0; in iteputchar()
1366 ip->GL = &ip->G3; in iteputchar()
1367 ip->escape = 0; in iteputchar()
1371 ip->GR = &ip->G3; in iteputchar()
1372 ip->escape = 0; in iteputchar()
1376 ip->GR = &ip->G1; in iteputchar()
1377 ip->escape = 0; in iteputchar()
1382 ip->escape = '#'; in iteputchar()
1387 ite_reset(ip); in iteputchar()
1388 SUBR_CURSOR(ip, MOVE_CURSOR); in iteputchar()
1389 ip->escape = 0; in iteputchar()
1394 ip->save_curx = ip->curx; in iteputchar()
1395 ip->save_cury = ip->cury; in iteputchar()
1396 ip->save_attribute = ip->attribute; in iteputchar()
1397 ip->sc_om = ip->inside_margins; in iteputchar()
1398 ip->sc_G0 = ip->G0; in iteputchar()
1399 ip->sc_G1 = ip->G1; in iteputchar()
1400 ip->sc_G2 = ip->G2; in iteputchar()
1401 ip->sc_G3 = ip->G3; in iteputchar()
1402 ip->sc_GL = ip->GL; in iteputchar()
1403 ip->sc_GR = ip->GR; in iteputchar()
1404 ip->escape = 0; in iteputchar()
1409 ip->curx = ip->save_curx; in iteputchar()
1410 ip->cury = ip->save_cury; in iteputchar()
1411 ip->attribute = ip->save_attribute; in iteputchar()
1412 ip->inside_margins = ip->sc_om; in iteputchar()
1413 ip->G0 = ip->sc_G0; in iteputchar()
1414 ip->G1 = ip->sc_G1; in iteputchar()
1415 ip->G2 = ip->sc_G2; in iteputchar()
1416 ip->G3 = ip->sc_G3; in iteputchar()
1417 ip->GL = ip->sc_GL; in iteputchar()
1418 ip->GR = ip->sc_GR; in iteputchar()
1419 SUBR_CURSOR(ip, MOVE_CURSOR); in iteputchar()
1420 ip->escape = 0; in iteputchar()
1425 ip->keypad_appmode = 1; in iteputchar()
1426 ip->escape = 0; in iteputchar()
1431 ip->keypad_appmode = 0; in iteputchar()
1432 ip->escape = 0; in iteputchar()
1436 if (ip->emul_level == EMUL_VT100) { in iteputchar()
1438 ite_sendstr(ip, "\033[61;0c"); in iteputchar()
1441 ite_sendstr(ip, "\033[63;0c"); in iteputchar()
1443 ip->escape = 0; in iteputchar()
1448 ip->escape = 0; in iteputchar()
1456 ip->G0 = CSET_ASCII; in iteputchar()
1457 ip->escape = 0; in iteputchar()
1460 ip->G0 = CSET_JISKANA; in iteputchar()
1461 ip->escape = 0; in iteputchar()
1464 ip->G0 = CSET_JISROMA; in iteputchar()
1465 ip->escape = 0; in iteputchar()
1468 ip->G0 = CSET_DECGRAPH; in iteputchar()
1469 ip->escape = 0; in iteputchar()
1479 ip->escape = 0; in iteputchar()
1484 ip->escape = 0; in iteputchar()
1490 ip->G0 = CSET_JIS1978; in iteputchar()
1491 ip->escape = 0; in iteputchar()
1494 ip->G0 = CSET_JIS1983; in iteputchar()
1495 ip->escape = 0; in iteputchar()
1498 ip->G0 = CSET_JIS1990; in iteputchar()
1499 ip->escape = 0; in iteputchar()
1503 ip->escape = 0; in iteputchar()
1510 ip->eightbit_C1 = 0; in iteputchar()
1511 ip->escape = 0; in iteputchar()
1515 ip->eightbit_C1 = 1; in iteputchar()
1516 ip->escape = 0; in iteputchar()
1521 ip->escape = 0; in iteputchar()
1530 ip->escape = 0; in iteputchar()
1535 ip->escape = 0; in iteputchar()
1540 ip->escape = 0; in iteputchar()
1545 ip->escape = 0; in iteputchar()
1550 alignment_display(ip); in iteputchar()
1551 ip->escape = 0; in iteputchar()
1555 ip->escape = 0; in iteputchar()
1577 if (ip->ap < ip->argbuf + MAX_ARGSIZE) in iteputchar()
1578 *ip->ap++ = c; in iteputchar()
1582 *ip->ap = 0; in iteputchar()
1583 if (!strncmp(ip->argbuf, "61\"", 3)) in iteputchar()
1584 ip->emul_level = EMUL_VT100; in iteputchar()
1585 else if (!strncmp(ip->argbuf, "63;1\"", 5) || in iteputchar()
1586 !strncmp(ip->argbuf, "62;1\"", 5)) in iteputchar()
1587 ip->emul_level = EMUL_VT300_7; in iteputchar()
1589 ip->emul_level = EMUL_VT300_8; in iteputchar()
1590 ip->escape = 0; in iteputchar()
1594 *ip->ap = 0; in iteputchar()
1595 ip->escape = '?'; in iteputchar()
1596 ip->ap = ip->argbuf; in iteputchar()
1601 *ip->ap = 0; in iteputchar()
1602 if (ip->argbuf[0] == '>') { in iteputchar()
1603 ite_sendstr(ip, "\033[>24;0;0;0c"); in iteputchar()
1605 switch (ite_zargnum(ip)) { in iteputchar()
1611 if (ip->emul_level == in iteputchar()
1613 ite_sendstr(ip, in iteputchar()
1616 ite_sendstr(ip, in iteputchar()
1621 ip->escape = 0; in iteputchar()
1625 switch (ite_zargnum(ip)) { in iteputchar()
1628 ite_sendstr(ip, "\033[0n"); in iteputchar()
1632 snprintf(ip->argbuf, sizeof(ip->argbuf), in iteputchar()
1634 ip->cury + 1, ip->curx + 1); in iteputchar()
1635 ite_sendstr(ip, ip->argbuf); in iteputchar()
1638 ip->escape = 0; in iteputchar()
1642 switch (ite_zargnum(ip)) { in iteputchar()
1645 ite_sendstr(ip, in iteputchar()
1649 ite_sendstr(ip, in iteputchar()
1653 ip->escape = 0; in iteputchar()
1658 switch (ite_zargnum(ip)) { in iteputchar()
1660 if (ip->curx < ip->cols) in iteputchar()
1661 ip->tabs[ip->curx] = 0; in iteputchar()
1664 for (n = 0; n < ip->cols; n++) in iteputchar()
1665 ip->tabs[n] = 0; in iteputchar()
1672 ip->escape = 0; in iteputchar()
1677 n = ite_zargnum(ip); in iteputchar()
1681 ip->imode = (c == 'h'); in iteputchar()
1684 ip->linefeed_newline = (c == 'h'); in iteputchar()
1687 ip->escape = 0; in iteputchar()
1692 ite_dnline(ip, ite_argnum(ip)); in iteputchar()
1693 ip->escape = 0; in iteputchar()
1698 ite_inline(ip, ite_argnum(ip)); in iteputchar()
1699 ip->escape = 0; in iteputchar()
1704 ite_dnchar(ip, ite_argnum(ip)); in iteputchar()
1705 ip->escape = 0; in iteputchar()
1710 ite_inchar(ip, ite_argnum(ip)); in iteputchar()
1711 ip->escape = 0; in iteputchar()
1716 ip->escape = 0; /* XXX */ in iteputchar()
1726 *ip->ap = 0; in iteputchar()
1727 x = atoi(ip->argbuf); in iteputchar()
1730 ip->curx = uimin(x, ip->cols - 1); in iteputchar()
1731 ip->escape = 0; in iteputchar()
1732 SUBR_CURSOR(ip, MOVE_CURSOR); in iteputchar()
1733 clr_attr(ip, ATTR_INV); in iteputchar()
1742 *ip->ap = 0; in iteputchar()
1743 y = atoi(ip->argbuf); in iteputchar()
1746 if (ip->inside_margins) in iteputchar()
1747 y += ip->top_margin; in iteputchar()
1748 ip->cury = uimin(y, ip->rows - 1); in iteputchar()
1749 ip->escape = 0; in iteputchar()
1750 snap_cury(ip); in iteputchar()
1751 SUBR_CURSOR(ip, MOVE_CURSOR); in iteputchar()
1752 clr_attr(ip, ATTR_INV); in iteputchar()
1757 *ip->ap = 0; in iteputchar()
1758 y = atoi(ip->argbuf); in iteputchar()
1760 cp = strchr(ip->argbuf, ';'); in iteputchar()
1767 if (ip->inside_margins != 0) in iteputchar()
1768 y += ip->top_margin; in iteputchar()
1769 ip->cury = uimin(y, ip->rows - 1); in iteputchar()
1770 ip->curx = uimin(x, ip->cols - 1); in iteputchar()
1771 ip->escape = 0; in iteputchar()
1772 snap_cury(ip); in iteputchar()
1773 SUBR_CURSOR(ip, MOVE_CURSOR); in iteputchar()
1779 n = ite_argnum(ip); in iteputchar()
1780 n = ip->cury - (n ? n : 1); in iteputchar()
1783 if (ip->inside_margins) in iteputchar()
1784 n = uimax(ip->top_margin, n); in iteputchar()
1785 else if (n == ip->top_margin - 1) in iteputchar()
1791 n = ip->top_margin; in iteputchar()
1792 ip->cury = n; in iteputchar()
1793 ip->escape = 0; in iteputchar()
1794 SUBR_CURSOR(ip, MOVE_CURSOR); in iteputchar()
1795 clr_attr(ip, ATTR_INV); in iteputchar()
1800 n = ite_argnum(ip); in iteputchar()
1801 n = ip->cury + (n ? n : 1); in iteputchar()
1802 n = uimin(ip->rows - 1, n); in iteputchar()
1804 if (ip->inside_margins) in iteputchar()
1806 n = uimin(ip->bottom_margin, n); in iteputchar()
1808 else if (n == ip->bottom_margin + 1) in iteputchar()
1814 n = ip->bottom_margin; in iteputchar()
1816 ip->cury = n; in iteputchar()
1817 ip->escape = 0; in iteputchar()
1818 SUBR_CURSOR(ip, MOVE_CURSOR); in iteputchar()
1819 clr_attr(ip, ATTR_INV); in iteputchar()
1824 n = ite_argnum(ip); in iteputchar()
1826 ip->curx = uimin(ip->curx + n, ip->cols - 1); in iteputchar()
1827 ip->escape = 0; in iteputchar()
1828 SUBR_CURSOR(ip, MOVE_CURSOR); in iteputchar()
1829 clr_attr(ip, ATTR_INV); in iteputchar()
1834 n = ite_argnum(ip); in iteputchar()
1836 n = ip->curx - n; in iteputchar()
1837 ip->curx = n >= 0 ? n : 0; in iteputchar()
1838 ip->escape = 0; in iteputchar()
1839 SUBR_CURSOR(ip, MOVE_CURSOR); in iteputchar()
1840 clr_attr(ip, ATTR_INV); in iteputchar()
1845 *ip->ap = 0; in iteputchar()
1846 n = ite_zargnum(ip); in iteputchar()
1848 ite_clrtoeos(ip); in iteputchar()
1850 ite_clrtobos(ip); in iteputchar()
1852 ite_clrscreen(ip); in iteputchar()
1853 ip->escape = 0; in iteputchar()
1858 n = ite_zargnum(ip); in iteputchar()
1860 ite_clrtoeol(ip); in iteputchar()
1862 ite_clrtobol(ip); in iteputchar()
1864 ite_clrline(ip); in iteputchar()
1865 ip->escape = 0; in iteputchar()
1870 n = ite_zargnum(ip); in iteputchar()
1873 else if (n > ip->rows-1) in iteputchar()
1874 n = ip->rows-1; in iteputchar()
1875 SUBR_SCROLL(ip, ip->rows-1, 0, n, SCROLL_UP); in iteputchar()
1876 ip->escape = 0; in iteputchar()
1881 n = ite_zargnum(ip); in iteputchar()
1884 else if (n > ip->rows-1) in iteputchar()
1885 n = ip->rows-1; in iteputchar()
1886 SUBR_SCROLL(ip, 0, 0, n, SCROLL_DOWN); in iteputchar()
1887 ip->escape = 0; in iteputchar()
1892 n = ite_argnum(ip) - 1; in iteputchar()
1893 n = uimin(n, ip->cols - 1 - ip->curx); in iteputchar()
1895 attrclr(ip, ip->cury, ip->curx + n, in iteputchar()
1897 SUBR_PUTC(ip, ' ', in iteputchar()
1898 ip->cury, ip->curx + n, ATTR_NOR); in iteputchar()
1900 ip->escape = 0; in iteputchar()
1905 ip->escape = 0; in iteputchar()
1910 ip->escape = 0; in iteputchar()
1911 *ip->ap = 0; in iteputchar()
1912 x = atoi(ip->argbuf); in iteputchar()
1914 y = ip->rows; in iteputchar()
1915 cp = strchr(ip->argbuf, ';'); in iteputchar()
1918 y = y ? y : ip->rows; in iteputchar()
1924 ip->top_margin = uimin(x, ip->rows - 2); in iteputchar()
1925 ip->bottom_margin = uimin(y, ip->rows - 1); in iteputchar()
1926 if (ip->inside_margins) { in iteputchar()
1927 ip->cury = ip->top_margin; in iteputchar()
1929 ip->cury = 0; in iteputchar()
1930 ip->curx = 0; in iteputchar()
1938 *ip->ap = 0; in iteputchar()
1940 if (ip->ap == ip->argbuf) in iteputchar()
1941 ip->ap++; in iteputchar()
1942 for (c_p = ip->argbuf; c_p < ip->ap; ) { in iteputchar()
1946 clr_attr(ip, ATTR_ALL); in iteputchar()
1947 ip->fgcolor = 7; in iteputchar()
1948 ip->bgcolor = 0; in iteputchar()
1953 set_attr(ip, ATTR_BOLD); in iteputchar()
1960 clr_attr(ip, ATTR_BOLD); in iteputchar()
1965 clr_attr(ip, ATTR_UL); in iteputchar()
1970 clr_attr(ip, in iteputchar()
1976 clr_attr(ip, ATTR_INV); in iteputchar()
1997 ip->fgcolor = in iteputchar()
2018 ip->bgcolor = in iteputchar()
2023 set_attr(ip, ATTR_UL); in iteputchar()
2030 set_attr(ip, ATTR_BLINK); in iteputchar()
2035 set_attr(ip, ATTR_INV); in iteputchar()
2046 ip->escape = 0; in iteputchar()
2051 ite_sendstr(ip, "\033P\033\\"); in iteputchar()
2052 ip->escape = 0; in iteputchar()
2056 ip->escape = 0; in iteputchar()
2080 if (ip->ap < ip->argbuf + MAX_ARGSIZE - 1) in iteputchar()
2081 *ip->ap++ = c; in iteputchar()
2086 *ip->ap = 0; in iteputchar()
2087 if (ip->ap == &ip->argbuf[2]) { in iteputchar()
2088 if (!strncmp(ip->argbuf, "15", 2)) in iteputchar()
2090 ite_sendstr(ip, "\033[13n"); in iteputchar()
2091 else if (!strncmp(ip->argbuf, "25", 2)) in iteputchar()
2093 ite_sendstr(ip, "\033[20n"); in iteputchar()
2094 else if (!strncmp(ip->argbuf, "26", 2)) in iteputchar()
2096 ite_sendstr(ip, "\033[27;1n"); in iteputchar()
2098 ip->escape = 0; in iteputchar()
2103 n = ite_zargnum(ip); in iteputchar()
2107 ip->cursor_appmode = (c == 'h'); in iteputchar()
2125 ip->inside_margins = (c == 'h'); in iteputchar()
2127 ip->curx = 0; in iteputchar()
2128 ip->cury = ip->inside_margins ? in iteputchar()
2129 ip->top_margin : 0; in iteputchar()
2130 SUBR_CURSOR(ip, MOVE_CURSOR); in iteputchar()
2135 ip->auto_wrap = (c == 'h'); in iteputchar()
2139 ip->key_repeat = (c == 'h'); in iteputchar()
2143 ip->linefeed_newline = (c == 'h'); in iteputchar()
2147 SUBR_CURSOR(ip, (c == 'h') ? in iteputchar()
2151 ip->escape = 0; in iteputchar()
2160 ip->escape = 0; in iteputchar()
2166 ip->escape = 0; in iteputchar()
2189 if (--ip->curx < 0) in iteputchar()
2190 ip->curx = 0; in iteputchar()
2192 SUBR_CURSOR(ip, MOVE_CURSOR); in iteputchar()
2196 for (n = ip->curx + 1; n < ip->cols; n++) { in iteputchar()
2197 if (ip->tabs[n]) { in iteputchar()
2198 ip->curx = n; in iteputchar()
2199 SUBR_CURSOR(ip, MOVE_CURSOR); in iteputchar()
2212 if (ip->linefeed_newline) in iteputchar()
2213 ite_crlf(ip); in iteputchar()
2215 ite_lf(ip); in iteputchar()
2219 ite_cr(ip); in iteputchar()
2223 ip->GL = &ip->G1; in iteputchar()
2227 ip->GL = &ip->G0; in iteputchar()
2241 ip->escape = 0; /* cancel any escape sequence in progress */ in iteputchar()
2248 ip->escape = 0; /* dito, but see below */ in iteputchar()
2253 ip->escape = ESC; in iteputchar()
2264 ite_index(ip); in iteputchar()
2268 ite_crlf(ip); in iteputchar()
2272 if (ip->curx < ip->cols) in iteputchar()
2273 ip->tabs[ip->curx] = 1; in iteputchar()
2277 ite_rlf(ip); in iteputchar()
2281 ip->save_GL = ip->GR; /* GL XXX EUC */ in iteputchar()
2282 ip->GR = &ip->G2; /* GL XXX */ in iteputchar()
2286 ip->save_GL = ip->GR; /* GL XXX EUC */ in iteputchar()
2287 ip->GR = &ip->G3; /* GL XXX */ in iteputchar()
2291 ip->escape = DCS; in iteputchar()
2292 ip->ap = ip->argbuf; in iteputchar()
2296 ip->escape = CSI; in iteputchar()
2297 ip->ap = ip->argbuf; in iteputchar()
2306 ip->escape = OSC; in iteputchar()
2311 ip->escape = PM; in iteputchar()
2316 ip->escape = APC; in iteputchar()
2323 if (ip->save_char == 0 && in iteputchar()
2324 (*((c & 0x80) ? ip->GR : ip->GL) & CSET_MULTI) != 0) { in iteputchar()
2325 ip->save_char = c; in iteputchar()
2328 if (ip->imode != 0) in iteputchar()
2329 ite_inchar(ip, ip->save_char ? 2 : 1); in iteputchar()
2330 iteprecheckwrap(ip); in iteputchar()
2332 if ((ip->attribute & ATTR_INV) || attrtest(ip, ATTR_INV)) { in iteputchar()
2333 attrset(ip, ATTR_INV); in iteputchar()
2334 SUBR_PUTC(ip, c, ip->cury, ip->curx, ATTR_INV); in iteputchar()
2337 SUBR_PUTC(ip, c, ip->cury, ip->curx, ATTR_NOR); in iteputchar()
2339 SUBR_PUTC(ip, c, ip->cury, ip->curx, ip->attribute); in iteputchar()
2342 itecheckwrap(ip); in iteputchar()
2343 if (ip->save_char) { in iteputchar()
2344 itecheckwrap(ip); in iteputchar()
2345 ip->save_char = 0; in iteputchar()
2347 if (ip->save_GL) { in iteputchar()
2351 ip->GR = ip->save_GL; in iteputchar()
2352 ip->save_GL = 0; in iteputchar()
2359 iteprecheckwrap(struct ite_softc *ip) in iteprecheckwrap() argument
2362 if (ip->auto_wrap && ip->curx + (ip->save_char ? 1 : 0) == ip->cols) { in iteprecheckwrap()
2363 ip->curx = 0; in iteprecheckwrap()
2364 clr_attr(ip, ATTR_INV); in iteprecheckwrap()
2365 if (++ip->cury >= ip->bottom_margin + 1) { in iteprecheckwrap()
2366 ip->cury = ip->bottom_margin; in iteprecheckwrap()
2368 SUBR_SCROLL(ip, ip->top_margin + 1, 0, 1, SCROLL_UP); in iteprecheckwrap()
2369 ite_clrtoeol(ip); in iteprecheckwrap()
2376 itecheckwrap(struct ite_softc *ip) in itecheckwrap() argument
2380 if (++ip->curx == ip->cols) { in itecheckwrap()
2381 if (ip->auto_wrap) { in itecheckwrap()
2382 ip->curx = 0; in itecheckwrap()
2383 clr_attr(ip, ATTR_INV); in itecheckwrap()
2384 if (++ip->cury >= ip->bottom_margin + 1) { in itecheckwrap()
2385 ip->cury = ip->bottom_margin; in itecheckwrap()
2386 SUBR_CURSOR(ip, MOVE_CURSOR); in itecheckwrap()
2387 SUBR_SCROLL(ip, ip->top_margin + 1, 0, 1, in itecheckwrap()
2389 ite_clrtoeol(ip); in itecheckwrap()
2394 ip->curx--; in itecheckwrap()
2397 if (ip->curx < ip->cols) { in itecheckwrap()
2398 ip->curx++; in itecheckwrap()
2504 struct ite_softc *ip; in itecninit() local
2506 ip = getitesp(cd->cn_dev); in itecninit()
2508 ip->flags |= ITE_ACTIVE | ITE_ISCONS; in itecninit()
2519 itecnfinish(struct ite_softc *ip) in itecnfinish() argument
2545 struct ite_softc *ip = getitesp(dev); in itecnputc() local
2552 (ip->flags & (ITE_ACTIVE|ITE_INGRF)) != ITE_ACTIVE) { in itecnputc()
2557 save_attribute = ip->attribute; in itecnputc()
2558 ip->attribute = ITE_KERNEL_ATTR; in itecnputc()
2562 ip->attribute = save_attribute; in itecnputc()