Lines Matching defs:tem

55  *    ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
63 #include <sys/tem.h>
121 static void tem_safe_clear_chars(struct tem_vt_state *tem,
124 static void tem_safe_copy_area(struct tem_vt_state *tem,
132 static void tem_safe_bell(struct tem_vt_state *tem,
134 static void tem_safe_pix_clear_prom_output(struct tem_vt_state *tem,
145 static void tem_safe_align_cursor(struct tem_vt_state *tem);
146 static void bit_to_pix4(struct tem_vt_state *tem, uchar_t c,
148 static void bit_to_pix8(struct tem_vt_state *tem, uchar_t c,
150 static void bit_to_pix24(struct tem_vt_state *tem, uchar_t c,
207 #define tem_safe_callback_bit2pix(tem, c, fg, bg) { \
209 (void) (*tems.ts_callbacks->tsc_bit2pix)((tem), (c), (fg), (bg));\
214 struct tem_vt_state *tem,
220 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
234 tem_safe_text_cursor(tem, VIS_GET_CURSOR, credp, called_from);
235 tem_safe_align_cursor(tem);
254 struct tem_vt_state *tem = (struct tem_vt_state *)tem_arg;
261 if (!tem->tvs_initialized) {
265 tem_safe_check_first_time(tem, kcred, CALLED_FROM_STANDALONE);
266 tem_safe_terminal_emulate(tem, buf, len, NULL, CALLED_FROM_STANDALONE);
280 struct tem_vt_state *tem,
287 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
290 if (tem->tvs_isactive)
291 tem_safe_callback_cursor(tem,
295 tem_safe_parse(tem, *buf, credp, called_from);
300 tem_safe_send_data(tem, credp, called_from);
302 if (tem->tvs_isactive)
303 tem_safe_callback_cursor(tem,
366 struct tem_vt_state *tem,
371 tem->tvs_state = A_STATE_START;
374 tem_safe_bell(tem, called_from);
378 tem_safe_mv_cursor(tem,
379 tem->tvs_c_cursor.row,
380 tem->tvs_c_cursor.col - 1,
385 tem_safe_tab(tem, credp, called_from);
390 * tem_safe_send_data(tem, credp, called_from);
391 * tem_safe_new_line(tem, credp, called_from);
396 tem_safe_send_data(tem, credp, called_from);
397 tem_safe_lf(tem, credp, called_from);
401 tem_safe_send_data(tem, credp, called_from);
402 tem_safe_cls(tem, credp, called_from);
406 tem_safe_send_data(tem, credp, called_from);
407 tem_safe_cr(tem);
411 tem->tvs_state = A_STATE_ESC;
417 tem->tvs_curparam = 0;
418 tem->tvs_paramval = 0;
419 tem->tvs_gotparam = B_FALSE;
422 tem->tvs_params[i] = -1;
423 tem->tvs_state = A_STATE_CSI;
428 tem_safe_back_tab(tem, credp, called_from);
443 tem_safe_setparam(struct tem_vt_state *tem, int count, int newparam)
448 if (tem->tvs_params[i] == -1)
449 tem->tvs_params[i] = newparam;
458 tem_safe_selgraph(struct tem_vt_state *tem)
464 tem->tvs_state = A_STATE_START;
466 curparam = tem->tvs_curparam;
468 param = tem->tvs_params[count];
474 tem->tvs_fg_color = tems.ts_init_color.fg_color;
475 tem->tvs_bg_color = tems.ts_init_color.bg_color;
476 tem->tvs_flags = tems.ts_init_color.a_flags;
480 tem->tvs_flags |= TEM_ATTR_BOLD;
484 tem->tvs_flags &= ~TEM_ATTR_BOLD;
488 tem->tvs_flags |= TEM_ATTR_BLINK;
492 if (tem->tvs_flags & TEM_ATTR_SCREEN_REVERSE) {
493 tem->tvs_flags &= ~TEM_ATTR_REVERSE;
495 tem->tvs_flags |= TEM_ATTR_REVERSE;
507 tem->tvs_fg_color = param - 30;
518 tem->tvs_bg_color = param - 40;
538 struct tem_vt_state *tem,
548 MUTEX_HELD(&tem->tvs_lock));
550 row = tem->tvs_c_cursor.row;
551 col = tem->tvs_c_cursor.col;
556 tem_safe_send_data(tem, credp, called_from);
557 tem_safe_selgraph(tem);
561 tem_safe_setparam(tem, 1, 1);
562 tem_safe_shift(tem, tem->tvs_params[0], TEM_SHIFT_RIGHT,
567 tem_safe_setparam(tem, 1, 1);
568 tem_safe_mv_cursor(tem, row - tem->tvs_params[0], col,
573 tem_safe_setparam(tem, 1, 1);
574 tem_safe_mv_cursor(tem, tem->tvs_params[0] - 1, col,
580 tem_safe_setparam(tem, 1, 1);
581 tem_safe_mv_cursor(tem, row + tem->tvs_params[0], col,
587 tem_safe_setparam(tem, 1, 1);
588 tem_safe_mv_cursor(tem, row, col + tem->tvs_params[0],
593 tem_safe_setparam(tem, 1, 1);
594 tem_safe_mv_cursor(tem, row, tem->tvs_params[0] - 1,
599 tem_safe_setparam(tem, 1, 1);
600 tem_safe_mv_cursor(tem, row, col - tem->tvs_params[0],
605 tem_safe_setparam(tem, 1, 1);
606 tem_safe_mv_cursor(tem, row + tem->tvs_params[0], 0,
611 tem_safe_setparam(tem, 1, 1);
612 tem_safe_mv_cursor(tem, row - tem->tvs_params[0], 0,
617 tem_safe_setparam(tem, 1, 1);
618 tem_safe_mv_cursor(tem, row, tem->tvs_params[0] - 1,
623 tem_safe_setparam(tem, 1, 0);
624 tem_safe_clear_tabs(tem, tem->tvs_params[0]);
629 tem_safe_setparam(tem, 2, 1);
630 tem_safe_mv_cursor(tem,
631 tem->tvs_params[0] - 1,
632 tem->tvs_params[1] - 1,
641 tem_safe_send_data(tem, credp, called_from);
642 tem_safe_setparam(tem, 1, 0);
643 switch (tem->tvs_params[0]) {
647 tem_safe_clear_chars(tem,
649 tem->tvs_c_cursor.col,
650 tem->tvs_c_cursor.row,
651 tem->tvs_c_cursor.col, credp, called_from);
654 for (row = tem->tvs_c_cursor.row + 1;
657 tem_safe_clear_chars(tem,
667 row < tem->tvs_c_cursor.row;
669 tem_safe_clear_chars(tem,
674 tem_safe_clear_chars(tem,
675 tem->tvs_c_cursor.col + 1,
676 tem->tvs_c_cursor.row,
685 tem_safe_clear_chars(tem,
694 tem_safe_send_data(tem, credp, called_from);
695 tem_safe_setparam(tem, 1, 0);
696 switch (tem->tvs_params[0]) {
699 tem_safe_clear_chars(tem,
701 tem->tvs_c_cursor.col),
702 tem->tvs_c_cursor.row,
703 tem->tvs_c_cursor.col,
709 tem_safe_clear_chars(tem,
710 tem->tvs_c_cursor.col + 1,
711 tem->tvs_c_cursor.row,
717 tem_safe_clear_chars(tem,
719 tem->tvs_c_cursor.row,
726 tem_safe_send_data(tem, credp, called_from);
727 tem_safe_setparam(tem, 1, 1);
728 tem_safe_scroll(tem,
729 tem->tvs_c_cursor.row,
731 tem->tvs_params[0], TEM_SCROLL_DOWN,
736 tem_safe_send_data(tem, credp, called_from);
737 tem_safe_setparam(tem, 1, 1);
738 tem_safe_scroll(tem,
739 tem->tvs_c_cursor.row,
741 tem->tvs_params[0], TEM_SCROLL_UP,
746 tem_safe_setparam(tem, 1, 1);
747 tem_safe_shift(tem, tem->tvs_params[0], TEM_SHIFT_LEFT,
752 tem_safe_send_data(tem, credp, called_from);
753 tem_safe_setparam(tem, 1, 1);
754 tem_safe_scroll(tem, 0,
756 tem->tvs_params[0], TEM_SCROLL_UP,
761 tem_safe_send_data(tem, credp, called_from);
762 tem_safe_setparam(tem, 1, 1);
763 tem_safe_scroll(tem, 0,
765 tem->tvs_params[0], TEM_SCROLL_DOWN,
770 tem_safe_setparam(tem, 1, 1);
771 tem_safe_clear_chars(tem,
772 tem->tvs_params[0],
773 tem->tvs_c_cursor.row,
774 tem->tvs_c_cursor.col,
779 tem_safe_setparam(tem, 1, 1);
788 if (tem->tvs_params[0] > tems.ts_c_dimension.width)
789 tem->tvs_params[0] = tems.ts_c_dimension.width;
791 for (i = 0; i < tem->tvs_params[0]; i++)
792 tem_safe_back_tab(tem, credp, called_from);
795 tem->tvs_state = A_STATE_START;
803 tem_safe_getparams(struct tem_vt_state *tem, uchar_t ch,
807 MUTEX_HELD(&tem->tvs_lock));
810 tem->tvs_paramval = ((tem->tvs_paramval * 10) + (ch - '0'));
811 tem->tvs_gotparam = B_TRUE; /* Remember got parameter */
813 } else if (tem->tvs_state == A_STATE_CSI_EQUAL ||
814 tem->tvs_state == A_STATE_CSI_QMARK) {
815 tem->tvs_state = A_STATE_START;
817 if (tem->tvs_curparam < TEM_MAXPARAMS) {
818 if (tem->tvs_gotparam) {
820 tem->tvs_params[tem->tvs_curparam] =
821 tem->tvs_paramval;
823 tem->tvs_curparam++;
828 tem->tvs_gotparam = B_FALSE;
829 tem->tvs_paramval = 0; /* No parame value yet */
832 tem_safe_chkparam(tem, ch, credp, called_from);
843 tem_safe_outch(struct tem_vt_state *tem, uchar_t ch,
847 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
852 tem->tvs_outbuf[tem->tvs_outindex++] = ch;
853 tem->tvs_c_cursor.col++;
854 if (tem->tvs_c_cursor.col >= tems.ts_c_dimension.width) {
855 tem_safe_send_data(tem, credp, called_from);
856 tem_safe_new_line(tem, credp, called_from);
861 tem_safe_new_line(struct tem_vt_state *tem,
864 tem_safe_cr(tem);
865 tem_safe_lf(tem, credp, called_from);
869 tem_safe_cr(struct tem_vt_state *tem)
871 tem->tvs_c_cursor.col = 0;
872 tem_safe_align_cursor(tem);
876 tem_safe_lf(struct tem_vt_state *tem,
882 MUTEX_HELD(&tem->tvs_lock));
890 row = tem->tvs_c_cursor.row + 1;
893 if (tem->tvs_nscroll != 0) {
894 tem_safe_scroll(tem, 0,
896 tem->tvs_nscroll, TEM_SCROLL_UP,
899 tem->tvs_nscroll;
910 tem_safe_mv_cursor(tem, row, tem->tvs_c_cursor.col,
913 if (tem->tvs_nscroll == 0) {
915 tem_safe_clear_chars(tem,
917 tem->tvs_c_cursor.col,
918 tem->tvs_c_cursor.row,
919 tem->tvs_c_cursor.col,
924 tem_safe_align_cursor(tem);
928 tem_safe_send_data(struct tem_vt_state *tem, cred_t *credp,
935 MUTEX_HELD(&tem->tvs_lock));
937 if (tem->tvs_outindex == 0) {
938 tem_safe_align_cursor(tem);
942 tem_safe_get_color(tem, &fg_color, &bg_color, TEM_ATTR_REVERSE);
943 tem_safe_virtual_display(tem,
944 tem->tvs_outbuf, tem->tvs_outindex,
945 tem->tvs_s_cursor.row, tem->tvs_s_cursor.col,
948 if (tem->tvs_isactive) {
952 tem_safe_callback_display(tem,
953 tem->tvs_outbuf, tem->tvs_outindex,
954 tem->tvs_s_cursor.row, tem->tvs_s_cursor.col,
959 tem->tvs_outindex = 0;
961 tem_safe_align_cursor(tem);
971 tem_safe_align_cursor(struct tem_vt_state *tem)
973 tem->tvs_s_cursor.row = tem->tvs_c_cursor.row;
974 tem->tvs_s_cursor.col = tem->tvs_c_cursor.col;
983 tem_safe_parse(struct tem_vt_state *tem, uchar_t ch,
989 MUTEX_HELD(&tem->tvs_lock));
991 if (tem->tvs_state == A_STATE_START) { /* Normal state? */
994 tem_safe_control(tem, ch, credp, called_from);
997 tem_safe_outch(tem, ch, credp, called_from);
1003 if (tem->tvs_state != A_STATE_ESC) { /* Need to get parameters? */
1004 if (tem->tvs_state != A_STATE_CSI) {
1005 tem_safe_getparams(tem, ch, credp, called_from);
1011 tem->tvs_state = A_STATE_CSI_QMARK;
1014 tem->tvs_state = A_STATE_CSI_EQUAL;
1033 * tem->tvs_r_cursor.row = tem->tvs_c_cursor.row;
1034 * tem->tvs_r_cursor.col = tem->tvs_c_cursor.col;
1035 * tem->tvs_state = A_STATE_START;
1038 tem->tvs_state = A_STATE_START;
1041 tem_safe_mv_cursor(tem, tem->tvs_r_cursor.row,
1042 tem->tvs_r_cursor.col, credp, called_from);
1043 tem->tvs_state = A_STATE_START;
1046 tem_safe_send_data(tem, credp, called_from);
1051 if (tem->tvs_flags & TEM_ATTR_SCREEN_REVERSE) {
1052 tem->tvs_flags &= ~TEM_ATTR_SCREEN_REVERSE;
1058 if (tem->tvs_flags & TEM_ATTR_REVERSE)
1059 tem->tvs_flags &= ~TEM_ATTR_REVERSE;
1061 tem->tvs_flags |= TEM_ATTR_REVERSE;
1063 tem_safe_cls(tem, credp, called_from);
1064 tem->tvs_state = A_STATE_START;
1067 tem_safe_send_data(tem, credp, called_from);
1072 if (!(tem->tvs_flags & TEM_ATTR_SCREEN_REVERSE)) {
1073 tem->tvs_flags |= TEM_ATTR_SCREEN_REVERSE;
1079 if (!(tem->tvs_flags & TEM_ATTR_REVERSE))
1080 tem->tvs_flags |= TEM_ATTR_REVERSE;
1082 tem->tvs_flags &= ~TEM_ATTR_REVERSE;
1085 tem_safe_cls(tem, credp, called_from);
1086 tem->tvs_state = A_STATE_START;
1092 tem->tvs_nscroll = tem->tvs_paramval;
1093 if (tem->tvs_nscroll > tems.ts_c_dimension.height)
1094 tem->tvs_nscroll = tems.ts_c_dimension.height;
1095 if (tem->tvs_nscroll < 0)
1096 tem->tvs_nscroll = 1;
1097 tem->tvs_state = A_STATE_START;
1100 tem_safe_getparams(tem, ch, credp, called_from);
1107 tem->tvs_curparam = 0;
1108 tem->tvs_paramval = 0;
1109 tem->tvs_gotparam = B_FALSE;
1112 tem->tvs_params[i] = -1;
1113 tem->tvs_state = A_STATE_CSI;
1115 tem->tvs_state = A_STATE_START;
1117 tem->tvs_state = A_STATE_START;
1119 tem->tvs_state = A_STATE_START;
1122 tem_safe_reset_display(tem, credp, called_from,
1126 tem_safe_set_tab(tem);
1129 tem->tvs_r_cursor.row = tem->tvs_c_cursor.row;
1130 tem->tvs_r_cursor.col = tem->tvs_c_cursor.col;
1133 tem_safe_mv_cursor(tem, tem->tvs_r_cursor.row,
1134 tem->tvs_r_cursor.col, credp, called_from);
1137 tem_safe_control(tem, ch, credp, called_from);
1139 tem_safe_outch(tem, ch, credp, called_from);
1146 tem_safe_bell(struct tem_vt_state *tem, enum called_from called_from)
1156 tem_safe_scroll(struct tem_vt_state *tem, int start, int end, int count,
1163 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1175 tem_safe_copy_area(tem, 0, start + count,
1180 tem_safe_clear_chars(tem, tems.ts_c_dimension.width,
1187 tem_safe_copy_area(tem, 0, start,
1193 tem_safe_clear_chars(tem, tems.ts_c_dimension.width,
1201 tem_safe_copy_area(struct tem_vt_state *tem,
1210 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1233 tem_safe_virtual_copy(tem,
1238 if (!tem->tvs_isactive)
1241 tem_safe_callback_copy(tem, s_col, s_row,
1246 tem_safe_clear_chars(struct tem_vt_state *tem, int count, screen_pos_t row,
1249 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1265 tem_safe_virtual_cls(tem, count, row, col);
1267 if (!tem->tvs_isactive)
1270 tem_safe_callback_cls(tem, count, row, col, credp, called_from);
1275 tem_safe_text_display(struct tem_vt_state *tem, uchar_t *string,
1282 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1308 tem_safe_image_display(struct tem_vt_state *tem, uchar_t *image,
1315 mutex_enter(&tem->tvs_lock);
1325 mutex_exit(&tem->tvs_lock);
1332 tem_safe_text_copy(struct tem_vt_state *tem,
1340 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1354 tem_safe_text_cls(struct tem_vt_state *tem,
1360 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1368 tem_safe_get_color(tem, &da.fg_color, &da.bg_color,
1376 tem_safe_pix_display(struct tem_vt_state *tem,
1385 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1388 da.data = (uchar_t *)tem->tvs_pix_data;
1395 tem_safe_callback_bit2pix(tem, string[i], fg_color, bg_color);
1402 tem_safe_pix_copy(struct tem_vt_state *tem,
1412 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1415 if (need_clear && tem->tvs_first_line > 0) {
1424 tem_safe_pix_clear_prom_output(tem, credp, called_from);
1436 if (tem->tvs_first_line > 0 && t_row < s_row && t_col == 0 &&
1455 if (tem->tvs_first_line > 0 && t_row < s_row) {
1457 tem->tvs_first_line -= (s_row - t_row);
1458 if (tem->tvs_first_line <= 0) {
1460 tem->tvs_first_line = 0;
1467 tem_safe_pix_bit2pix(struct tem_vt_state *tem, unsigned char c,
1485 fp(tem, c, fg, bg);
1493 tem_safe_pix_cls(struct tem_vt_state *tem, int count,
1497 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1500 tem_safe_pix_cls_range(tem, row, 1, tems.ts_p_offset.y,
1528 tem_safe_pix_clear_prom_output(struct tem_vt_state *tem, cred_t *credp,
1533 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1542 tem_safe_pix_cls_range(tem, 0, nrows, 0, 0, ncols, 0,
1551 tem_safe_pix_clear_entire_screen(struct tem_vt_state *tem, cred_t *credp,
1556 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1565 tem_safe_pix_cls_range(tem, 0, nrows, 0, 0, ncols, 0,
1572 if (tem->tvs_first_line > 0)
1573 tem->tvs_first_line = 0;
1581 tem_safe_cls(struct tem_vt_state *tem,
1586 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1591 tem_safe_clear_chars(tem, tems.ts_c_dimension.width,
1594 tem->tvs_c_cursor.row = 0;
1595 tem->tvs_c_cursor.col = 0;
1596 tem_safe_align_cursor(tem);
1603 tem_safe_virtual_cls(tem, tems.ts_c_dimension.width, row, 0);
1605 tem->tvs_c_cursor.row = 0;
1606 tem->tvs_c_cursor.col = 0;
1607 tem_safe_align_cursor(tem);
1609 if (!tem->tvs_isactive)
1612 tem_safe_pix_clear_entire_screen(tem, credp, called_from);
1616 tem_safe_back_tab(struct tem_vt_state *tem,
1622 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1627 for (i = tem->tvs_ntabs - 1; i >= 0; i--) {
1628 if (tem->tvs_tabs[i] < tem->tvs_c_cursor.col) {
1629 tabstop = tem->tvs_tabs[i];
1634 tem_safe_mv_cursor(tem, tem->tvs_c_cursor.row,
1639 tem_safe_tab(struct tem_vt_state *tem,
1645 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1650 for (i = 0; i < tem->tvs_ntabs; i++) {
1651 if (tem->tvs_tabs[i] > tem->tvs_c_cursor.col) {
1652 tabstop = tem->tvs_tabs[i];
1657 tem_safe_mv_cursor(tem, tem->tvs_c_cursor.row,
1662 tem_safe_set_tab(struct tem_vt_state *tem)
1667 if (tem->tvs_ntabs == TEM_MAXTAB)
1669 if (tem->tvs_ntabs == 0 ||
1670 tem->tvs_tabs[tem->tvs_ntabs] < tem->tvs_c_cursor.col) {
1671 tem->tvs_tabs[tem->tvs_ntabs++] = tem->tvs_c_cursor.col;
1674 for (i = 0; i < tem->tvs_ntabs; i++) {
1675 if (tem->tvs_tabs[i] == tem->tvs_c_cursor.col)
1677 if (tem->tvs_tabs[i] > tem->tvs_c_cursor.col) {
1678 for (j = tem->tvs_ntabs - 1; j >= i; j--)
1679 tem->tvs_tabs[j+ 1] = tem->tvs_tabs[j];
1680 tem->tvs_tabs[i] = tem->tvs_c_cursor.col;
1681 tem->tvs_ntabs++;
1688 tem_safe_clear_tabs(struct tem_vt_state *tem, int action)
1695 tem->tvs_ntabs = 0;
1699 for (i = 0; i < tem->tvs_ntabs; i++) {
1700 if (tem->tvs_tabs[i] == tem->tvs_c_cursor.col) {
1701 tem->tvs_ntabs--;
1702 for (j = i; j < tem->tvs_ntabs; j++)
1703 tem->tvs_tabs[j] = tem->tvs_tabs[j + 1];
1712 tem_safe_mv_cursor(struct tem_vt_state *tem, int row, int col,
1715 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1732 tem_safe_send_data(tem, credp, called_from);
1733 tem->tvs_c_cursor.row = (screen_pos_t)row;
1734 tem->tvs_c_cursor.col = (screen_pos_t)col;
1735 tem_safe_align_cursor(tem);
1740 tem_safe_reset_emulator(struct tem_vt_state *tem,
1746 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1749 tem->tvs_c_cursor.row = 0;
1750 tem->tvs_c_cursor.col = 0;
1751 tem->tvs_r_cursor.row = 0;
1752 tem->tvs_r_cursor.col = 0;
1753 tem->tvs_s_cursor.row = 0;
1754 tem->tvs_s_cursor.col = 0;
1755 tem->tvs_outindex = 0;
1756 tem->tvs_state = A_STATE_START;
1757 tem->tvs_gotparam = B_FALSE;
1758 tem->tvs_curparam = 0;
1759 tem->tvs_paramval = 0;
1760 tem->tvs_nscroll = 1;
1764 tem->tvs_fg_color = tems.ts_init_color.fg_color;
1765 tem->tvs_bg_color = tems.ts_init_color.bg_color;
1766 tem->tvs_flags = tems.ts_init_color.a_flags;
1772 tem->tvs_ntabs = 0;
1774 tem->tvs_tabs[tem->tvs_ntabs++] = (screen_pos_t)j;
1777 tem->tvs_params[j] = 0;
1781 tem_safe_reset_display(struct tem_vt_state *tem,
1785 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1788 tem_safe_reset_emulator(tem, credp, called_from, init_color);
1791 if (tem->tvs_isactive)
1792 tem_safe_callback_cursor(tem,
1795 tem_safe_cls(tem, credp, called_from);
1797 if (tem->tvs_isactive)
1798 tem_safe_callback_cursor(tem,
1805 struct tem_vt_state *tem,
1813 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1816 rest_of_line = tems.ts_c_dimension.width - tem->tvs_c_cursor.col;
1826 tem_safe_copy_area(tem,
1827 tem->tvs_c_cursor.col + count,
1828 tem->tvs_c_cursor.row,
1830 tem->tvs_c_cursor.row,
1831 tem->tvs_c_cursor.col,
1832 tem->tvs_c_cursor.row,
1836 tem_safe_clear_chars(tem, count, tem->tvs_c_cursor.row,
1842 tem_safe_copy_area(tem,
1843 tem->tvs_c_cursor.col,
1844 tem->tvs_c_cursor.row,
1846 tem->tvs_c_cursor.row,
1847 tem->tvs_c_cursor.col + count,
1848 tem->tvs_c_cursor.row,
1852 tem_safe_clear_chars(tem, count, tem->tvs_c_cursor.row,
1853 tem->tvs_c_cursor.col, credp, called_from);
1859 tem_safe_text_cursor(struct tem_vt_state *tem, short action,
1864 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1867 ca.row = tem->tvs_c_cursor.row;
1868 ca.col = tem->tvs_c_cursor.col;
1874 tem->tvs_c_cursor.row = ca.row;
1875 tem->tvs_c_cursor.col = ca.col;
1880 tem_safe_pix_cursor(struct tem_vt_state *tem, short action,
1885 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
1888 ca.row = tem->tvs_c_cursor.row * tems.ts_font.height +
1890 ca.col = tem->tvs_c_cursor.col * tems.ts_font.width +
1895 if (tem->tvs_flags & TEM_ATTR_REVERSE) {
1903 if (tem->tvs_flags & TEM_ATTR_REVERSE) {
1984 struct tem_vt_state *tem,
1998 dest = (uint8_t *)tem->tvs_pix_data;
2039 struct tem_vt_state *tem,
2054 dest = (uint8_t *)tem->tvs_pix_data;
2099 struct tem_vt_state *tem,
2119 destp = (pixel32_t *)tem->tvs_pix_data;
2139 ansi_bg_to_solaris(struct tem_vt_state *tem, int ansi)
2145 ansi_fg_to_solaris(struct tem_vt_state *tem, int ansi)
2147 if (tem->tvs_flags & TEM_ATTR_BOLD)
2157 tem_safe_get_color(struct tem_vt_state *tem, text_color_t *fg,
2160 if (tem->tvs_flags & flag) {
2161 *fg = ansi_fg_to_solaris(tem,
2162 tem->tvs_bg_color);
2163 *bg = ansi_bg_to_solaris(tem,
2164 tem->tvs_fg_color);
2166 *fg = ansi_fg_to_solaris(tem,
2167 tem->tvs_fg_color);
2168 *bg = ansi_bg_to_solaris(tem,
2169 tem->tvs_bg_color);
2187 tem_safe_pix_cls_range(struct tem_vt_state *tem,
2199 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
2208 tem_safe_get_color(tem, &fg_color, &bg_color, TEM_ATTR_SCREEN_REVERSE);
2210 tem_safe_callback_bit2pix(tem, ' ', fg_color, bg_color);
2211 da.data = (uchar_t *)tem->tvs_pix_data;
2227 tem_safe_virtual_display(struct tem_vt_state *tem, unsigned char *string,
2242 addr = tem->tvs_screen_buf + (row * width + col);
2243 pfgcolor = tem->tvs_fg_buf + (row * width + col);
2244 pbgcolor = tem->tvs_bg_buf + (row * width + col);
2302 tem_safe_virtual_copy(struct tem_vt_state *tem,
2330 i_virtual_copy(tem->tvs_screen_buf, s_col, s_row,
2334 i_virtual_copy((unsigned char *)tem->tvs_fg_buf,
2336 i_virtual_copy((unsigned char *)tem->tvs_bg_buf,
2342 tem_safe_virtual_cls(struct tem_vt_state *tem,
2348 tem_safe_get_color(tem, &fg_color, &bg_color, TEM_ATTR_SCREEN_REVERSE);
2349 tem_safe_virtual_display(tem, tems.ts_blank_line, count, row, col,
2357 tem_safe_blank_screen(struct tem_vt_state *tem, cred_t *credp,
2362 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
2366 tem_safe_pix_clear_entire_screen(tem, credp, called_from);
2371 tem_safe_callback_cls(tem,
2378 * unblank screen with associated tem from its screen buffer
2381 tem_safe_unblank_screen(struct tem_vt_state *tem, cred_t *credp,
2391 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) ||
2395 tem_safe_pix_clear_entire_screen(tem, credp, called_from);
2397 tem_safe_callback_cursor(tem, VIS_HIDE_CURSOR, credp, called_from);
2408 buf = tem->tvs_screen_buf + (row * width);
2412 tem->tvs_fg_buf[(row * width + col) * tc_size];
2414 tem->tvs_bg_buf[(row * width + col) * tc_size];
2424 tem_safe_callback_display(tem,
2443 tem_safe_callback_display(tem,
2448 tem_safe_callback_cursor(tem, VIS_DISPLAY_CURSOR, credp, called_from);