Lines Matching defs:tem

59  *    ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
67 #include <sys/tem.h>
125 static void tem_safe_clear_chars(struct tem_vt_state *tem,
128 static void tem_safe_copy_area(struct tem_vt_state *tem,
136 static void tem_safe_bell(struct tem_vt_state *tem,
138 static void tem_safe_pix_clear_prom_output(struct tem_vt_state *tem,
149 static void tem_safe_align_cursor(struct tem_vt_state *tem);
150 static void bit_to_pix4(struct tem_vt_state *tem, uchar_t c,
152 static void bit_to_pix8(struct tem_vt_state *tem, uchar_t c,
154 static void bit_to_pix24(struct tem_vt_state *tem, uchar_t c,
210 #define tem_safe_callback_bit2pix(tem, c, fg, bg) { \
212 (void) (*tems.ts_callbacks->tsc_bit2pix)((tem), (c), (fg), (bg));\
217 struct tem_vt_state *tem,
223 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
237 tem_safe_text_cursor(tem, VIS_GET_CURSOR, credp, called_from);
238 tem_safe_align_cursor(tem);
257 struct tem_vt_state *tem = (struct tem_vt_state *)tem_arg;
264 if (!tem->tvs_initialized) {
268 tem_safe_check_first_time(tem, kcred, CALLED_FROM_STANDALONE);
269 tem_safe_terminal_emulate(tem, buf, len, NULL, CALLED_FROM_STANDALONE);
283 struct tem_vt_state *tem,
290 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
293 if (tem->tvs_isactive)
294 tem_safe_callback_cursor(tem,
298 tem_safe_parse(tem, *buf, credp, called_from);
303 tem_safe_send_data(tem, credp, called_from);
305 if (tem->tvs_isactive)
306 tem_safe_callback_cursor(tem,
369 struct tem_vt_state *tem,
374 tem->tvs_state = A_STATE_START;
377 tem_safe_bell(tem, called_from);
381 tem_safe_mv_cursor(tem,
382 tem->tvs_c_cursor.row,
383 tem->tvs_c_cursor.col - 1,
388 tem_safe_tab(tem, credp, called_from);
393 * tem_safe_send_data(tem, credp, called_from);
394 * tem_safe_new_line(tem, credp, called_from);
399 tem_safe_send_data(tem, credp, called_from);
400 tem_safe_lf(tem, credp, called_from);
404 tem_safe_send_data(tem, credp, called_from);
405 tem_safe_cls(tem, credp, called_from);
409 tem_safe_send_data(tem, credp, called_from);
410 tem_safe_cr(tem);
414 tem->tvs_state = A_STATE_ESC;
420 tem->tvs_curparam = 0;
421 tem->tvs_paramval = 0;
422 tem->tvs_gotparam = B_FALSE;
425 tem->tvs_params[i] = -1;
426 tem->tvs_state = A_STATE_CSI;
431 tem_safe_back_tab(tem, credp, called_from);
446 tem_safe_setparam(struct tem_vt_state *tem, int count, int newparam)
451 if (tem->tvs_params[i] == -1)
452 tem->tvs_params[i] = newparam;
461 tem_safe_selgraph(struct tem_vt_state *tem)
467 tem->tvs_state = A_STATE_START;
469 curparam = tem->tvs_curparam;
471 param = tem->tvs_params[count];
477 tem->tvs_fg_color = tems.ts_init_color.fg_color;
478 tem->tvs_bg_color = tems.ts_init_color.bg_color;
479 tem->tvs_flags = tems.ts_init_color.a_flags;
483 tem->tvs_flags |= TEM_ATTR_BOLD;
487 tem->tvs_flags &= ~TEM_ATTR_BOLD;
491 tem->tvs_flags |= TEM_ATTR_BLINK;
495 if (tem->tvs_flags & TEM_ATTR_SCREEN_REVERSE) {
496 tem->tvs_flags &= ~TEM_ATTR_REVERSE;
498 tem->tvs_flags |= TEM_ATTR_REVERSE;
510 tem->tvs_fg_color = param - 30;
511 tem->tvs_flags &= ~TEM_ATTR_BRIGHT_FG;
518 tem->tvs_fg_color = tems.ts_init_color.fg_color;
520 tem->tvs_flags |= TEM_ATTR_BRIGHT_FG;
522 tem->tvs_flags &= ~TEM_ATTR_BRIGHT_FG;
533 tem->tvs_bg_color = param - 40;
534 tem->tvs_flags &= ~TEM_ATTR_BRIGHT_BG;
541 tem->tvs_bg_color = tems.ts_init_color.bg_color;
543 tem->tvs_flags |= TEM_ATTR_BRIGHT_BG;
545 tem->tvs_flags &= ~TEM_ATTR_BRIGHT_BG;
556 tem->tvs_fg_color = param - 90;
557 tem->tvs_flags |= TEM_ATTR_BRIGHT_FG;
568 tem->tvs_bg_color = param - 100;
569 tem->tvs_flags |= TEM_ATTR_BRIGHT_BG;
589 struct tem_vt_state *tem,
599 MUTEX_HELD(&tem->tvs_lock));
601 row = tem->tvs_c_cursor.row;
602 col = tem->tvs_c_cursor.col;
607 tem_safe_send_data(tem, credp, called_from);
608 tem_safe_selgraph(tem);
612 tem_safe_setparam(tem, 1, 1);
613 tem_safe_shift(tem, tem->tvs_params[0], TEM_SHIFT_RIGHT,
618 tem_safe_setparam(tem, 1, 1);
619 tem_safe_mv_cursor(tem, row - tem->tvs_params[0], col,
624 tem_safe_setparam(tem, 1, 1);
625 tem_safe_mv_cursor(tem, tem->tvs_params[0] - 1, col,
631 tem_safe_setparam(tem, 1, 1);
632 tem_safe_mv_cursor(tem, row + tem->tvs_params[0], col,
638 tem_safe_setparam(tem, 1, 1);
639 tem_safe_mv_cursor(tem, row, col + tem->tvs_params[0],
644 tem_safe_setparam(tem, 1, 1);
645 tem_safe_mv_cursor(tem, row, tem->tvs_params[0] - 1,
650 tem_safe_setparam(tem, 1, 1);
651 tem_safe_mv_cursor(tem, row, col - tem->tvs_params[0],
656 tem_safe_setparam(tem, 1, 1);
657 tem_safe_mv_cursor(tem, row + tem->tvs_params[0], 0,
662 tem_safe_setparam(tem, 1, 1);
663 tem_safe_mv_cursor(tem, row - tem->tvs_params[0], 0,
668 tem_safe_setparam(tem, 1, 1);
669 tem_safe_mv_cursor(tem, row, tem->tvs_params[0] - 1,
674 tem_safe_setparam(tem, 1, 0);
675 tem_safe_clear_tabs(tem, tem->tvs_params[0]);
680 tem_safe_setparam(tem, 2, 1);
681 tem_safe_mv_cursor(tem,
682 tem->tvs_params[0] - 1,
683 tem->tvs_params[1] - 1,
692 tem_safe_send_data(tem, credp, called_from);
693 tem_safe_setparam(tem, 1, 0);
694 switch (tem->tvs_params[0]) {
698 tem_safe_clear_chars(tem,
700 tem->tvs_c_cursor.col,
701 tem->tvs_c_cursor.row,
702 tem->tvs_c_cursor.col, credp, called_from);
705 for (row = tem->tvs_c_cursor.row + 1;
708 tem_safe_clear_chars(tem,
718 row < tem->tvs_c_cursor.row;
720 tem_safe_clear_chars(tem,
725 tem_safe_clear_chars(tem,
726 tem->tvs_c_cursor.col + 1,
727 tem->tvs_c_cursor.row,
736 tem_safe_clear_chars(tem,
745 tem_safe_send_data(tem, credp, called_from);
746 tem_safe_setparam(tem, 1, 0);
747 switch (tem->tvs_params[0]) {
750 tem_safe_clear_chars(tem,
752 tem->tvs_c_cursor.col),
753 tem->tvs_c_cursor.row,
754 tem->tvs_c_cursor.col,
760 tem_safe_clear_chars(tem,
761 tem->tvs_c_cursor.col + 1,
762 tem->tvs_c_cursor.row,
768 tem_safe_clear_chars(tem,
770 tem->tvs_c_cursor.row,
777 tem_safe_send_data(tem, credp, called_from);
778 tem_safe_setparam(tem, 1, 1);
779 tem_safe_scroll(tem,
780 tem->tvs_c_cursor.row,
782 tem->tvs_params[0], TEM_SCROLL_DOWN,
787 tem_safe_send_data(tem, credp, called_from);
788 tem_safe_setparam(tem, 1, 1);
789 tem_safe_scroll(tem,
790 tem->tvs_c_cursor.row,
792 tem->tvs_params[0], TEM_SCROLL_UP,
797 tem_safe_setparam(tem, 1, 1);
798 tem_safe_shift(tem, tem->tvs_params[0], TEM_SHIFT_LEFT,
803 tem_safe_send_data(tem, credp, called_from);
804 tem_safe_setparam(tem, 1, 1);
805 tem_safe_scroll(tem, 0,
807 tem->tvs_params[0], TEM_SCROLL_UP,
812 tem_safe_send_data(tem, credp, called_from);
813 tem_safe_setparam(tem, 1, 1);
814 tem_safe_scroll(tem, 0,
816 tem->tvs_params[0], TEM_SCROLL_DOWN,
821 tem_safe_setparam(tem, 1, 1);
822 tem_safe_clear_chars(tem,
823 tem->tvs_params[0],
824 tem->tvs_c_cursor.row,
825 tem->tvs_c_cursor.col,
830 tem_safe_setparam(tem, 1, 1);
839 if (tem->tvs_params[0] > tems.ts_c_dimension.width)
840 tem->tvs_params[0] = tems.ts_c_dimension.width;
842 for (i = 0; i < tem->tvs_params[0]; i++)
843 tem_safe_back_tab(tem, credp, called_from);
846 tem->tvs_state = A_STATE_START;
854 tem_safe_getparams(struct tem_vt_state *tem, uchar_t ch,
858 MUTEX_HELD(&tem->tvs_lock));
861 tem->tvs_paramval = ((tem->tvs_paramval * 10) + (ch - '0'));
862 tem->tvs_gotparam = B_TRUE; /* Remember got parameter */
864 } else if (tem->tvs_state == A_STATE_CSI_EQUAL ||
865 tem->tvs_state == A_STATE_CSI_QMARK) {
866 tem->tvs_state = A_STATE_START;
868 if (tem->tvs_curparam < TEM_MAXPARAMS) {
869 if (tem->tvs_gotparam) {
871 tem->tvs_params[tem->tvs_curparam] =
872 tem->tvs_paramval;
874 tem->tvs_curparam++;
879 tem->tvs_gotparam = B_FALSE;
880 tem->tvs_paramval = 0; /* No parame value yet */
883 tem_safe_chkparam(tem, ch, credp, called_from);
894 tem_safe_outch(struct tem_vt_state *tem, uchar_t ch,
898 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
903 tem->tvs_outbuf[tem->tvs_outindex++] = ch;
904 tem->tvs_c_cursor.col++;
905 if (tem->tvs_c_cursor.col >= tems.ts_c_dimension.width) {
906 tem_safe_send_data(tem, credp, called_from);
907 tem_safe_new_line(tem, credp, called_from);
912 tem_safe_new_line(struct tem_vt_state *tem,
915 tem_safe_cr(tem);
916 tem_safe_lf(tem, credp, called_from);
920 tem_safe_cr(struct tem_vt_state *tem)
922 tem->tvs_c_cursor.col = 0;
923 tem_safe_align_cursor(tem);
927 tem_safe_lf(struct tem_vt_state *tem,
933 MUTEX_HELD(&tem->tvs_lock));
941 row = tem->tvs_c_cursor.row + 1;
944 if (tem->tvs_nscroll != 0) {
945 tem_safe_scroll(tem, 0,
947 tem->tvs_nscroll, TEM_SCROLL_UP,
950 tem->tvs_nscroll;
961 tem_safe_mv_cursor(tem, row, tem->tvs_c_cursor.col,
964 if (tem->tvs_nscroll == 0) {
966 tem_safe_clear_chars(tem,
968 tem->tvs_c_cursor.col,
969 tem->tvs_c_cursor.row,
970 tem->tvs_c_cursor.col,
975 tem_safe_align_cursor(tem);
979 tem_safe_send_data(struct tem_vt_state *tem, cred_t *credp,
986 MUTEX_HELD(&tem->tvs_lock));
988 if (tem->tvs_outindex == 0) {
989 tem_safe_align_cursor(tem);
993 tem_safe_get_color(tem, &fg_color, &bg_color, TEM_ATTR_REVERSE);
994 tem_safe_virtual_display(tem,
995 tem->tvs_outbuf, tem->tvs_outindex,
996 tem->tvs_s_cursor.row, tem->tvs_s_cursor.col,
999 if (tem->tvs_isactive) {
1003 tem_safe_callback_display(tem,
1004 tem->tvs_outbuf, tem->tvs_outindex,
1005 tem->tvs_s_cursor.row, tem->tvs_s_cursor.col,
1010 tem->tvs_outindex = 0;
1012 tem_safe_align_cursor(tem);
1022 tem_safe_align_cursor(struct tem_vt_state *tem)
1024 tem->tvs_s_cursor.row = tem->tvs_c_cursor.row;
1025 tem->tvs_s_cursor.col = tem->tvs_c_cursor.col;
1034 tem_safe_parse(struct tem_vt_state *tem, uchar_t ch,
1040 MUTEX_HELD(&tem->tvs_lock));
1042 if (tem->tvs_state == A_STATE_START) { /* Normal state? */
1045 tem_safe_control(tem, ch, credp, called_from);
1048 tem_safe_outch(tem, ch, credp, called_from);
1054 if (tem->tvs_state != A_STATE_ESC) { /* Need to get parameters? */
1055 if (tem->tvs_state != A_STATE_CSI) {
1056 tem_safe_getparams(tem, ch, credp, called_from);
1062 tem->tvs_state = A_STATE_CSI_QMARK;
1065 tem->tvs_state = A_STATE_CSI_EQUAL;
1084 * tem->tvs_r_cursor.row = tem->tvs_c_cursor.row;
1085 * tem->tvs_r_cursor.col = tem->tvs_c_cursor.col;
1086 * tem->tvs_state = A_STATE_START;
1089 tem->tvs_state = A_STATE_START;
1092 tem_safe_mv_cursor(tem, tem->tvs_r_cursor.row,
1093 tem->tvs_r_cursor.col, credp, called_from);
1094 tem->tvs_state = A_STATE_START;
1097 tem_safe_send_data(tem, credp, called_from);
1102 if (tem->tvs_flags & TEM_ATTR_SCREEN_REVERSE) {
1103 tem->tvs_flags &= ~TEM_ATTR_SCREEN_REVERSE;
1109 if (tem->tvs_flags & TEM_ATTR_REVERSE)
1110 tem->tvs_flags &= ~TEM_ATTR_REVERSE;
1112 tem->tvs_flags |= TEM_ATTR_REVERSE;
1114 tem_safe_cls(tem, credp, called_from);
1115 tem->tvs_state = A_STATE_START;
1118 tem_safe_send_data(tem, credp, called_from);
1123 if (!(tem->tvs_flags & TEM_ATTR_SCREEN_REVERSE)) {
1124 tem->tvs_flags |= TEM_ATTR_SCREEN_REVERSE;
1130 if (!(tem->tvs_flags & TEM_ATTR_REVERSE))
1131 tem->tvs_flags |= TEM_ATTR_REVERSE;
1133 tem->tvs_flags &= ~TEM_ATTR_REVERSE;
1136 tem_safe_cls(tem, credp, called_from);
1137 tem->tvs_state = A_STATE_START;
1143 tem->tvs_nscroll = tem->tvs_paramval;
1144 if (tem->tvs_nscroll > tems.ts_c_dimension.height)
1145 tem->tvs_nscroll = tems.ts_c_dimension.height;
1146 if (tem->tvs_nscroll < 0)
1147 tem->tvs_nscroll = 1;
1148 tem->tvs_state = A_STATE_START;
1151 tem_safe_getparams(tem, ch, credp, called_from);
1158 tem->tvs_curparam = 0;
1159 tem->tvs_paramval = 0;
1160 tem->tvs_gotparam = B_FALSE;
1163 tem->tvs_params[i] = -1;
1164 tem->tvs_state = A_STATE_CSI;
1166 tem->tvs_state = A_STATE_START;
1168 tem->tvs_state = A_STATE_START;
1170 tem->tvs_state = A_STATE_START;
1173 tem_safe_reset_display(tem, credp, called_from,
1177 tem_safe_set_tab(tem);
1180 tem->tvs_r_cursor.row = tem->tvs_c_cursor.row;
1181 tem->tvs_r_cursor.col = tem->tvs_c_cursor.col;
1184 tem_safe_mv_cursor(tem, tem->tvs_r_cursor.row,
1185 tem->tvs_r_cursor.col, credp, called_from);
1188 tem_safe_control(tem, ch, credp, called_from);
1190 tem_safe_outch(tem, ch, credp, called_from);
1197 tem_safe_bell(struct tem_vt_state *tem, enum called_from called_from)
1207 tem_safe_scroll(struct tem_vt_state *tem, int start, int end, int count,
1213 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1225 tem_safe_copy_area(tem, 0, start + count,
1230 tem_safe_clear_chars(tem, tems.ts_c_dimension.width,
1237 tem_safe_copy_area(tem, 0, start,
1243 tem_safe_clear_chars(tem, tems.ts_c_dimension.width,
1251 tem_safe_copy_area(struct tem_vt_state *tem,
1260 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1283 tem_safe_virtual_copy(tem,
1288 if (!tem->tvs_isactive)
1291 tem_safe_callback_copy(tem, s_col, s_row,
1296 tem_safe_clear_chars(struct tem_vt_state *tem, int count, screen_pos_t row,
1299 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1315 tem_safe_virtual_cls(tem, count, row, col);
1317 if (!tem->tvs_isactive)
1320 tem_safe_callback_cls(tem, count, row, col, credp, called_from);
1325 tem_safe_text_display(struct tem_vt_state *tem, uchar_t *string,
1332 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1358 tem_safe_image_display(struct tem_vt_state *tem, uchar_t *image,
1365 mutex_enter(&tem->tvs_lock);
1375 mutex_exit(&tem->tvs_lock);
1382 tem_safe_text_copy(struct tem_vt_state *tem,
1390 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1404 tem_safe_text_cls(struct tem_vt_state *tem,
1410 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1418 tem_safe_get_color(tem, &da.fg_color, &da.bg_color,
1426 tem_safe_pix_display(struct tem_vt_state *tem,
1435 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1438 da.data = (uchar_t *)tem->tvs_pix_data;
1445 tem_safe_callback_bit2pix(tem, string[i], fg_color, bg_color);
1452 tem_safe_pix_copy(struct tem_vt_state *tem,
1462 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1465 if (need_clear && tem->tvs_first_line > 0) {
1474 tem_safe_pix_clear_prom_output(tem, credp, called_from);
1486 if (tem->tvs_first_line > 0 && t_row < s_row && t_col == 0 &&
1505 if (tem->tvs_first_line > 0 && t_row < s_row) {
1507 tem->tvs_first_line -= (s_row - t_row);
1508 if (tem->tvs_first_line <= 0) {
1510 tem->tvs_first_line = 0;
1517 tem_safe_pix_bit2pix(struct tem_vt_state *tem, unsigned char c,
1535 fp(tem, c, fg, bg);
1543 tem_safe_pix_cls(struct tem_vt_state *tem, int count,
1547 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1550 tem_safe_pix_cls_range(tem, row, 1, tems.ts_p_offset.y,
1578 tem_safe_pix_clear_prom_output(struct tem_vt_state *tem, cred_t *credp,
1583 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1592 tem_safe_pix_cls_range(tem, 0, nrows, 0, 0, ncols, 0,
1601 tem_safe_pix_clear_entire_screen(struct tem_vt_state *tem, cred_t *credp,
1606 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1615 tem_safe_pix_cls_range(tem, 0, nrows, 0, 0, ncols, 0,
1622 if (tem->tvs_first_line > 0)
1623 tem->tvs_first_line = 0;
1631 tem_safe_cls(struct tem_vt_state *tem,
1636 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1641 tem_safe_clear_chars(tem, tems.ts_c_dimension.width,
1644 tem->tvs_c_cursor.row = 0;
1645 tem->tvs_c_cursor.col = 0;
1646 tem_safe_align_cursor(tem);
1653 tem_safe_virtual_cls(tem, tems.ts_c_dimension.width, row, 0);
1655 tem->tvs_c_cursor.row = 0;
1656 tem->tvs_c_cursor.col = 0;
1657 tem_safe_align_cursor(tem);
1659 if (!tem->tvs_isactive)
1662 tem_safe_pix_clear_entire_screen(tem, credp, called_from);
1666 tem_safe_back_tab(struct tem_vt_state *tem,
1672 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1677 for (i = tem->tvs_ntabs - 1; i >= 0; i--) {
1678 if (tem->tvs_tabs[i] < tem->tvs_c_cursor.col) {
1679 tabstop = tem->tvs_tabs[i];
1684 tem_safe_mv_cursor(tem, tem->tvs_c_cursor.row,
1689 tem_safe_tab(struct tem_vt_state *tem,
1695 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1700 for (i = 0; i < tem->tvs_ntabs; i++) {
1701 if (tem->tvs_tabs[i] > tem->tvs_c_cursor.col) {
1702 tabstop = tem->tvs_tabs[i];
1707 tem_safe_mv_cursor(tem, tem->tvs_c_cursor.row,
1712 tem_safe_set_tab(struct tem_vt_state *tem)
1717 if (tem->tvs_ntabs == TEM_MAXTAB)
1719 if (tem->tvs_ntabs == 0 ||
1720 tem->tvs_tabs[tem->tvs_ntabs] < tem->tvs_c_cursor.col) {
1721 tem->tvs_tabs[tem->tvs_ntabs++] = tem->tvs_c_cursor.col;
1724 for (i = 0; i < tem->tvs_ntabs; i++) {
1725 if (tem->tvs_tabs[i] == tem->tvs_c_cursor.col)
1727 if (tem->tvs_tabs[i] > tem->tvs_c_cursor.col) {
1728 for (j = tem->tvs_ntabs - 1; j >= i; j--)
1729 tem->tvs_tabs[j+ 1] = tem->tvs_tabs[j];
1730 tem->tvs_tabs[i] = tem->tvs_c_cursor.col;
1731 tem->tvs_ntabs++;
1738 tem_safe_clear_tabs(struct tem_vt_state *tem, int action)
1745 tem->tvs_ntabs = 0;
1749 for (i = 0; i < tem->tvs_ntabs; i++) {
1750 if (tem->tvs_tabs[i] == tem->tvs_c_cursor.col) {
1751 tem->tvs_ntabs--;
1752 for (j = i; j < tem->tvs_ntabs; j++)
1753 tem->tvs_tabs[j] = tem->tvs_tabs[j + 1];
1762 tem_safe_mv_cursor(struct tem_vt_state *tem, int row, int col,
1765 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1782 tem_safe_send_data(tem, credp, called_from);
1783 tem->tvs_c_cursor.row = (screen_pos_t)row;
1784 tem->tvs_c_cursor.col = (screen_pos_t)col;
1785 tem_safe_align_cursor(tem);
1790 tem_safe_reset_emulator(struct tem_vt_state *tem,
1796 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1799 tem->tvs_c_cursor.row = 0;
1800 tem->tvs_c_cursor.col = 0;
1801 tem->tvs_r_cursor.row = 0;
1802 tem->tvs_r_cursor.col = 0;
1803 tem->tvs_s_cursor.row = 0;
1804 tem->tvs_s_cursor.col = 0;
1805 tem->tvs_outindex = 0;
1806 tem->tvs_state = A_STATE_START;
1807 tem->tvs_gotparam = B_FALSE;
1808 tem->tvs_curparam = 0;
1809 tem->tvs_paramval = 0;
1810 tem->tvs_nscroll = 1;
1814 tem->tvs_fg_color = tems.ts_init_color.fg_color;
1815 tem->tvs_bg_color = tems.ts_init_color.bg_color;
1816 tem->tvs_flags = tems.ts_init_color.a_flags;
1822 tem->tvs_ntabs = 0;
1824 tem->tvs_tabs[tem->tvs_ntabs++] = (screen_pos_t)j;
1827 tem->tvs_params[j] = 0;
1831 tem_safe_reset_display(struct tem_vt_state *tem,
1835 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1838 tem_safe_reset_emulator(tem, credp, called_from, init_color);
1841 if (tem->tvs_isactive)
1842 tem_safe_callback_cursor(tem,
1845 tem_safe_cls(tem, credp, called_from);
1847 if (tem->tvs_isactive)
1848 tem_safe_callback_cursor(tem,
1855 struct tem_vt_state *tem,
1863 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1866 rest_of_line = tems.ts_c_dimension.width - tem->tvs_c_cursor.col;
1876 tem_safe_copy_area(tem,
1877 tem->tvs_c_cursor.col + count,
1878 tem->tvs_c_cursor.row,
1880 tem->tvs_c_cursor.row,
1881 tem->tvs_c_cursor.col,
1882 tem->tvs_c_cursor.row,
1886 tem_safe_clear_chars(tem, count, tem->tvs_c_cursor.row,
1892 tem_safe_copy_area(tem,
1893 tem->tvs_c_cursor.col,
1894 tem->tvs_c_cursor.row,
1896 tem->tvs_c_cursor.row,
1897 tem->tvs_c_cursor.col + count,
1898 tem->tvs_c_cursor.row,
1902 tem_safe_clear_chars(tem, count, tem->tvs_c_cursor.row,
1903 tem->tvs_c_cursor.col, credp, called_from);
1909 tem_safe_text_cursor(struct tem_vt_state *tem, short action,
1914 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1917 ca.row = tem->tvs_c_cursor.row;
1918 ca.col = tem->tvs_c_cursor.col;
1924 tem->tvs_c_cursor.row = ca.row;
1925 tem->tvs_c_cursor.col = ca.col;
1930 tem_safe_pix_cursor(struct tem_vt_state *tem, short action,
1935 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1938 ca.row = tem->tvs_c_cursor.row * tems.ts_font.height +
1940 ca.col = tem->tvs_c_cursor.col * tems.ts_font.width +
1945 if (tem->tvs_flags & TEM_ATTR_REVERSE) {
1953 if (tem->tvs_flags & TEM_ATTR_REVERSE) {
2034 struct tem_vt_state *tem,
2048 dest = (uint8_t *)tem->tvs_pix_data;
2089 struct tem_vt_state *tem,
2104 dest = (uint8_t *)tem->tvs_pix_data;
2149 struct tem_vt_state *tem,
2169 destp = (pixel32_t *)tem->tvs_pix_data;
2188 ansi_bg_to_solaris(struct tem_vt_state *tem, int ansi)
2190 if (tem->tvs_flags & TEM_ATTR_BRIGHT_BG)
2197 ansi_fg_to_solaris(struct tem_vt_state *tem, int ansi)
2199 if (tem->tvs_flags & TEM_ATTR_BRIGHT_FG ||
2200 tem->tvs_flags & TEM_ATTR_BOLD) {
2211 tem_safe_get_color(struct tem_vt_state *tem, text_color_t *fg,
2214 if (tem->tvs_flags & flag) {
2215 *fg = ansi_fg_to_solaris(tem,
2216 tem->tvs_bg_color);
2217 *bg = ansi_bg_to_solaris(tem,
2218 tem->tvs_fg_color);
2220 *fg = ansi_fg_to_solaris(tem,
2221 tem->tvs_fg_color);
2222 *bg = ansi_bg_to_solaris(tem,
2223 tem->tvs_bg_color);
2241 tem_safe_pix_cls_range(struct tem_vt_state *tem,
2253 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
2262 tem_safe_get_color(tem, &fg_color, &bg_color, TEM_ATTR_SCREEN_REVERSE);
2264 tem_safe_callback_bit2pix(tem, ' ', fg_color, bg_color);
2265 da.data = (uchar_t *)tem->tvs_pix_data;
2281 tem_safe_virtual_display(struct tem_vt_state *tem, unsigned char *string,
2296 addr = tem->tvs_screen_buf + (row * width + col);
2297 pfgcolor = tem->tvs_fg_buf + (row * width + col);
2298 pbgcolor = tem->tvs_bg_buf + (row * width + col);
2356 tem_safe_virtual_copy(struct tem_vt_state *tem,
2384 i_virtual_copy(tem->tvs_screen_buf, s_col, s_row,
2388 i_virtual_copy((unsigned char *)tem->tvs_fg_buf,
2390 i_virtual_copy((unsigned char *)tem->tvs_bg_buf,
2396 tem_safe_virtual_cls(struct tem_vt_state *tem,
2402 tem_safe_get_color(tem, &fg_color, &bg_color, TEM_ATTR_SCREEN_REVERSE);
2403 tem_safe_virtual_display(tem, tems.ts_blank_line, count, row, col,
2411 tem_safe_blank_screen(struct tem_vt_state *tem, cred_t *credp,
2416 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
2420 tem_safe_pix_clear_entire_screen(tem, credp, called_from);
2425 tem_safe_callback_cls(tem,
2432 * unblank screen with associated tem from its screen buffer
2435 tem_safe_unblank_screen(struct tem_vt_state *tem, cred_t *credp,
2445 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
2449 tem_safe_pix_clear_entire_screen(tem, credp, called_from);
2451 tem_safe_callback_cursor(tem, VIS_HIDE_CURSOR, credp, called_from);
2462 buf = tem->tvs_screen_buf + (row * width);
2466 tem->tvs_fg_buf[(row * width + col) * tc_size];
2468 tem->tvs_bg_buf[(row * width + col) * tc_size];
2478 tem_safe_callback_display(tem,
2497 tem_safe_callback_display(tem,
2502 tem_safe_callback_cursor(tem, VIS_DISPLAY_CURSOR, credp, called_from);