Lines Matching refs:tem
140 static void tem_safe_clear_chars(struct tem_vt_state *tem,
143 static void tem_safe_copy_area(struct tem_vt_state *tem,
154 static void tem_safe_bell(struct tem_vt_state *tem,
156 static void tem_safe_pix_clear_prom_output(struct tem_vt_state *tem,
169 static void tem_safe_align_cursor(struct tem_vt_state *tem);
170 static void bit_to_pix4(struct tem_vt_state *tem, tem_char_t c,
172 static void bit_to_pix8(struct tem_vt_state *tem, tem_char_t c,
174 static void bit_to_pix16(struct tem_vt_state *tem, tem_char_t c,
176 static void bit_to_pix24(struct tem_vt_state *tem, tem_char_t c,
178 static void bit_to_pix32(struct tem_vt_state *tem, tem_char_t c,
190 #define tem_safe_callback_bit2pix(tem, c) { \ argument
192 (void) (*tems.ts_callbacks->tsc_bit2pix)((tem), (c));\
197 struct tem_vt_state *tem, in tem_safe_check_first_time() argument
203 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_check_first_time()
217 tem_safe_text_cursor(tem, VIS_GET_CURSOR, credp, called_from); in tem_safe_check_first_time()
219 tem_safe_pix_cursor(tem, VIS_GET_CURSOR, credp, called_from); in tem_safe_check_first_time()
220 tem_safe_align_cursor(tem); in tem_safe_check_first_time()
238 struct tem_vt_state *tem = (struct tem_vt_state *)tem_arg; in tem_safe_polled_write() local
245 if (!tem->tvs_initialized) { in tem_safe_polled_write()
249 tem_safe_check_first_time(tem, kcred, CALLED_FROM_STANDALONE); in tem_safe_polled_write()
250 tem_safe_terminal_emulate(tem, buf, len, NULL, CALLED_FROM_STANDALONE); in tem_safe_polled_write()
255 tem_safe_input_partial(struct tem_vt_state *tem, cred_t *credp, in tem_safe_input_partial() argument
261 if (tem->tvs_utf8_left == 0) in tem_safe_input_partial()
264 for (i = 0; i < sizeof (tem->tvs_utf8_partial); i++) { in tem_safe_input_partial()
265 c = (tem->tvs_utf8_partial >> (24 - (i << 3))) & 0xff; in tem_safe_input_partial()
267 tem_safe_parse(tem, c, credp, called_from); in tem_safe_input_partial()
270 tem->tvs_utf8_left = 0; in tem_safe_input_partial()
271 tem->tvs_utf8_partial = 0; in tem_safe_input_partial()
278 tem_safe_input_byte(struct tem_vt_state *tem, uchar_t c, cred_t *credp, in tem_safe_input_byte() argument
289 tem_safe_input_partial(tem, credp, called_from); in tem_safe_input_byte()
290 tem_safe_parse(tem, c, credp, called_from); in tem_safe_input_byte()
295 tem_safe_input_partial(tem, credp, called_from); in tem_safe_input_byte()
296 tem->tvs_utf8_left = 1; in tem_safe_input_byte()
297 tem->tvs_utf8_partial = c; in tem_safe_input_byte()
302 tem_safe_input_partial(tem, credp, called_from); in tem_safe_input_byte()
303 tem->tvs_utf8_left = 2; in tem_safe_input_byte()
304 tem->tvs_utf8_partial = c; in tem_safe_input_byte()
309 tem_safe_input_partial(tem, credp, called_from); in tem_safe_input_byte()
310 tem->tvs_utf8_left = 3; in tem_safe_input_byte()
311 tem->tvs_utf8_partial = c; in tem_safe_input_byte()
316 if (tem->tvs_utf8_left == 0) { in tem_safe_input_byte()
317 tem_safe_parse(tem, c, credp, called_from); in tem_safe_input_byte()
320 tem->tvs_utf8_left--; in tem_safe_input_byte()
321 tem->tvs_utf8_partial = (tem->tvs_utf8_partial << 8) | c; in tem_safe_input_byte()
322 if (tem->tvs_utf8_left == 0) { in tem_safe_input_byte()
331 u = tem->tvs_utf8_partial; in tem_safe_input_byte()
353 tem_safe_parse(tem, v, credp, called_from); in tem_safe_input_byte()
354 tem->tvs_utf8_partial = 0; in tem_safe_input_byte()
359 tem_safe_input_partial(tem, credp, called_from); in tem_safe_input_byte()
360 tem_safe_parse(tem, c, credp, called_from); in tem_safe_input_byte()
373 struct tem_vt_state *tem, in tem_safe_terminal_emulate() argument
380 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_terminal_emulate()
383 if (tem->tvs_isactive && !tem->tvs_cursor_hidden) in tem_safe_terminal_emulate()
384 tem_safe_callback_cursor(tem, in tem_safe_terminal_emulate()
388 tem_safe_input_byte(tem, *buf, credp, called_from); in tem_safe_terminal_emulate()
393 tem_safe_send_data(tem, credp, called_from); in tem_safe_terminal_emulate()
395 if (tem->tvs_isactive && !tem->tvs_cursor_hidden) in tem_safe_terminal_emulate()
396 tem_safe_callback_cursor(tem, in tem_safe_terminal_emulate()
452 tem_safe_control(struct tem_vt_state *tem, tem_char_t ch, cred_t *credp, in tem_safe_control() argument
455 tem->tvs_state = A_STATE_START; in tem_safe_control()
458 tem_safe_bell(tem, called_from); in tem_safe_control()
462 tem_safe_mv_cursor(tem, in tem_safe_control()
463 tem->tvs_c_cursor.row, in tem_safe_control()
464 tem->tvs_c_cursor.col - 1, in tem_safe_control()
469 tem_safe_tab(tem, credp, called_from); in tem_safe_control()
480 tem_safe_send_data(tem, credp, called_from); in tem_safe_control()
481 tem_safe_lf(tem, credp, called_from); in tem_safe_control()
485 tem_safe_send_data(tem, credp, called_from); in tem_safe_control()
486 tem_safe_cls(tem, credp, called_from); in tem_safe_control()
490 tem_safe_send_data(tem, credp, called_from); in tem_safe_control()
491 tem_safe_cr(tem); in tem_safe_control()
495 tem->tvs_state = A_STATE_ESC; in tem_safe_control()
501 tem->tvs_curparam = 0; in tem_safe_control()
502 tem->tvs_paramval = 0; in tem_safe_control()
503 tem->tvs_gotparam = B_FALSE; in tem_safe_control()
506 tem->tvs_params[i] = -1; in tem_safe_control()
507 tem->tvs_state = A_STATE_CSI; in tem_safe_control()
512 tem_safe_back_tab(tem, credp, called_from); in tem_safe_control()
527 tem_safe_setparam(struct tem_vt_state *tem, int count, int newparam) in tem_safe_setparam() argument
532 if (tem->tvs_params[i] == -1) in tem_safe_setparam()
533 tem->tvs_params[i] = newparam; in tem_safe_setparam()
543 tem_select_color(struct tem_vt_state *tem, int color, boolean_t fg) in tem_select_color() argument
554 tem->tvs_flags &= ~TEM_ATTR_RGB_FG; in tem_select_color()
555 tem->tvs_fg_color.n = color; in tem_select_color()
557 tem->tvs_flags &= ~TEM_ATTR_RGB_BG; in tem_select_color()
558 tem->tvs_bg_color.n = color; in tem_select_color()
566 tem->tvs_flags &= ~TEM_ATTR_BRIGHT_FG; in tem_select_color()
568 tem->tvs_flags &= ~TEM_ATTR_BRIGHT_BG; in tem_select_color()
577 tem->tvs_fg_color.n -= 8; in tem_select_color()
578 tem->tvs_flags |= TEM_ATTR_BRIGHT_FG; in tem_select_color()
580 tem->tvs_bg_color.n -= 8; in tem_select_color()
581 tem->tvs_flags |= TEM_ATTR_BRIGHT_BG; in tem_select_color()
590 tem_safe_selgraph(struct tem_vt_state *tem) in tem_safe_selgraph() argument
597 tem->tvs_state = A_STATE_START; in tem_safe_selgraph()
599 curparam = tem->tvs_curparam; in tem_safe_selgraph()
601 param = tem->tvs_params[count]; in tem_safe_selgraph()
607 tem->tvs_fg_color = tems.ts_init_color.fg_color; in tem_safe_selgraph()
608 tem->tvs_bg_color = tems.ts_init_color.bg_color; in tem_safe_selgraph()
609 tem->tvs_flags = tems.ts_init_color.a_flags; in tem_safe_selgraph()
613 tem->tvs_flags |= TEM_ATTR_BOLD; in tem_safe_selgraph()
617 tem->tvs_flags &= ~TEM_ATTR_BOLD; in tem_safe_selgraph()
621 tem->tvs_flags |= TEM_ATTR_UNDERLINE; in tem_safe_selgraph()
624 tem->tvs_flags |= TEM_ATTR_BLINK; in tem_safe_selgraph()
628 if (tem->tvs_flags & TEM_ATTR_SCREEN_REVERSE) { in tem_safe_selgraph()
629 tem->tvs_flags &= ~TEM_ATTR_REVERSE; in tem_safe_selgraph()
631 tem->tvs_flags |= TEM_ATTR_REVERSE; in tem_safe_selgraph()
636 tem->tvs_flags &= ~TEM_ATTR_BOLD; in tem_safe_selgraph()
640 tem->tvs_flags &= ~TEM_ATTR_UNDERLINE; in tem_safe_selgraph()
644 tem->tvs_flags &= ~TEM_ATTR_BLINK; in tem_safe_selgraph()
648 if (tem->tvs_flags & TEM_ATTR_SCREEN_REVERSE) { in tem_safe_selgraph()
649 tem->tvs_flags |= TEM_ATTR_REVERSE; in tem_safe_selgraph()
651 tem->tvs_flags &= ~TEM_ATTR_REVERSE; in tem_safe_selgraph()
663 tem->tvs_fg_color.n = param - 30; in tem_safe_selgraph()
664 tem->tvs_flags &= ~TEM_ATTR_BRIGHT_FG; in tem_safe_selgraph()
665 tem->tvs_flags &= ~TEM_ATTR_RGB_FG; in tem_safe_selgraph()
684 param = tem->tvs_params[count]; in tem_safe_selgraph()
691 r = tem->tvs_params[++count]; in tem_safe_selgraph()
692 g = tem->tvs_params[++count]; in tem_safe_selgraph()
693 b = tem->tvs_params[++count]; in tem_safe_selgraph()
701 tem->tvs_flags |= TEM_ATTR_RGB_FG; in tem_safe_selgraph()
702 tem->tvs_flags &= ~TEM_ATTR_BRIGHT_FG; in tem_safe_selgraph()
703 tem->tvs_fg_color.rgb.a = in tem_safe_selgraph()
704 tem->tvs_alpha; in tem_safe_selgraph()
705 tem->tvs_fg_color.rgb.r = r; in tem_safe_selgraph()
706 tem->tvs_fg_color.rgb.g = g; in tem_safe_selgraph()
707 tem->tvs_fg_color.rgb.b = b; in tem_safe_selgraph()
713 tem_select_color(tem, tem->tvs_params[count], in tem_safe_selgraph()
726 tem->tvs_fg_color = tems.ts_init_color.fg_color; in tem_safe_selgraph()
727 tem->tvs_flags &= ~TEM_ATTR_RGB_FG; in tem_safe_selgraph()
729 tem->tvs_flags |= TEM_ATTR_BRIGHT_FG; in tem_safe_selgraph()
731 tem->tvs_flags &= ~TEM_ATTR_BRIGHT_FG; in tem_safe_selgraph()
742 tem->tvs_bg_color.n = param - 40; in tem_safe_selgraph()
743 tem->tvs_flags &= ~TEM_ATTR_RGB_BG; in tem_safe_selgraph()
744 tem->tvs_flags &= ~TEM_ATTR_BRIGHT_BG; in tem_safe_selgraph()
763 param = tem->tvs_params[count]; in tem_safe_selgraph()
770 r = tem->tvs_params[++count]; in tem_safe_selgraph()
771 g = tem->tvs_params[++count]; in tem_safe_selgraph()
772 b = tem->tvs_params[++count]; in tem_safe_selgraph()
780 tem->tvs_flags |= TEM_ATTR_RGB_BG; in tem_safe_selgraph()
781 tem->tvs_flags &= ~TEM_ATTR_BRIGHT_BG; in tem_safe_selgraph()
782 tem->tvs_bg_color.rgb.a = in tem_safe_selgraph()
783 tem->tvs_alpha; in tem_safe_selgraph()
784 tem->tvs_bg_color.rgb.r = r; in tem_safe_selgraph()
785 tem->tvs_bg_color.rgb.g = g; in tem_safe_selgraph()
786 tem->tvs_bg_color.rgb.b = b; in tem_safe_selgraph()
792 tem_select_color(tem, tem->tvs_params[count], in tem_safe_selgraph()
805 tem->tvs_bg_color = tems.ts_init_color.bg_color; in tem_safe_selgraph()
806 tem->tvs_flags &= ~TEM_ATTR_RGB_BG; in tem_safe_selgraph()
808 tem->tvs_flags |= TEM_ATTR_BRIGHT_BG; in tem_safe_selgraph()
810 tem->tvs_flags &= ~TEM_ATTR_BRIGHT_BG; in tem_safe_selgraph()
821 tem->tvs_fg_color.n = param - 90; in tem_safe_selgraph()
822 tem->tvs_flags |= TEM_ATTR_BRIGHT_FG; in tem_safe_selgraph()
823 tem->tvs_flags &= ~TEM_ATTR_RGB_FG; in tem_safe_selgraph()
834 tem->tvs_bg_color.n = param - 100; in tem_safe_selgraph()
835 tem->tvs_flags |= TEM_ATTR_BRIGHT_BG; in tem_safe_selgraph()
836 tem->tvs_flags &= ~TEM_ATTR_RGB_BG; in tem_safe_selgraph()
852 tem_safe_window(struct tem_vt_state *tem, enum called_from called_from) in tem_safe_window() argument
861 tem->tvs_state = A_STATE_START; in tem_safe_window()
862 curparam = tem->tvs_curparam; in tem_safe_window()
864 param = tem->tvs_params[index]; in tem_safe_window()
876 if (!canputnext(tem->tvs_queue)) in tem_safe_window()
889 (void) putnext(tem->tvs_queue, bp); in tem_safe_window()
906 tem_safe_chkparam(struct tem_vt_state *tem, tem_char_t ch, cred_t *credp, in tem_safe_chkparam() argument
914 MUTEX_HELD(&tem->tvs_lock)); in tem_safe_chkparam()
916 row = tem->tvs_c_cursor.row; in tem_safe_chkparam()
917 col = tem->tvs_c_cursor.col; in tem_safe_chkparam()
922 tem_safe_send_data(tem, credp, called_from); in tem_safe_chkparam()
923 tem_safe_selgraph(tem); in tem_safe_chkparam()
927 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
928 tem_safe_shift(tem, tem->tvs_params[0], TEM_SHIFT_RIGHT, in tem_safe_chkparam()
933 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
934 tem_safe_mv_cursor(tem, row - tem->tvs_params[0], col, in tem_safe_chkparam()
939 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
940 tem_safe_mv_cursor(tem, tem->tvs_params[0] - 1, col, in tem_safe_chkparam()
946 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
947 tem_safe_mv_cursor(tem, row + tem->tvs_params[0], col, in tem_safe_chkparam()
953 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
954 tem_safe_mv_cursor(tem, row, col + tem->tvs_params[0], in tem_safe_chkparam()
959 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
960 tem_safe_mv_cursor(tem, row, tem->tvs_params[0] - 1, in tem_safe_chkparam()
965 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
966 tem_safe_mv_cursor(tem, row, col - tem->tvs_params[0], in tem_safe_chkparam()
971 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
972 tem_safe_mv_cursor(tem, row + tem->tvs_params[0], 0, in tem_safe_chkparam()
977 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
978 tem_safe_mv_cursor(tem, row - tem->tvs_params[0], 0, in tem_safe_chkparam()
983 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
984 tem_safe_mv_cursor(tem, row, tem->tvs_params[0] - 1, in tem_safe_chkparam()
989 tem_safe_setparam(tem, 1, 0); in tem_safe_chkparam()
990 tem_safe_clear_tabs(tem, tem->tvs_params[0]); in tem_safe_chkparam()
995 tem_safe_setparam(tem, 2, 1); in tem_safe_chkparam()
996 tem_safe_mv_cursor(tem, in tem_safe_chkparam()
997 tem->tvs_params[0] - 1, in tem_safe_chkparam()
998 tem->tvs_params[1] - 1, in tem_safe_chkparam()
1007 tem_safe_send_data(tem, credp, called_from); in tem_safe_chkparam()
1008 tem_safe_setparam(tem, 1, 0); in tem_safe_chkparam()
1009 switch (tem->tvs_params[0]) { in tem_safe_chkparam()
1013 tem_safe_clear_chars(tem, in tem_safe_chkparam()
1015 tem->tvs_c_cursor.col, in tem_safe_chkparam()
1016 tem->tvs_c_cursor.row, in tem_safe_chkparam()
1017 tem->tvs_c_cursor.col, credp, called_from); in tem_safe_chkparam()
1020 for (row = tem->tvs_c_cursor.row + 1; in tem_safe_chkparam()
1023 tem_safe_clear_chars(tem, in tem_safe_chkparam()
1033 row < tem->tvs_c_cursor.row; in tem_safe_chkparam()
1035 tem_safe_clear_chars(tem, in tem_safe_chkparam()
1040 tem_safe_clear_chars(tem, in tem_safe_chkparam()
1041 tem->tvs_c_cursor.col + 1, in tem_safe_chkparam()
1042 tem->tvs_c_cursor.row, in tem_safe_chkparam()
1051 tem_safe_clear_chars(tem, in tem_safe_chkparam()
1060 tem_safe_send_data(tem, credp, called_from); in tem_safe_chkparam()
1061 tem_safe_setparam(tem, 1, 0); in tem_safe_chkparam()
1062 switch (tem->tvs_params[0]) { in tem_safe_chkparam()
1065 tem_safe_clear_chars(tem, in tem_safe_chkparam()
1067 tem->tvs_c_cursor.col), in tem_safe_chkparam()
1068 tem->tvs_c_cursor.row, in tem_safe_chkparam()
1069 tem->tvs_c_cursor.col, in tem_safe_chkparam()
1075 tem_safe_clear_chars(tem, in tem_safe_chkparam()
1076 tem->tvs_c_cursor.col + 1, in tem_safe_chkparam()
1077 tem->tvs_c_cursor.row, in tem_safe_chkparam()
1083 tem_safe_clear_chars(tem, in tem_safe_chkparam()
1085 tem->tvs_c_cursor.row, in tem_safe_chkparam()
1092 tem_safe_send_data(tem, credp, called_from); in tem_safe_chkparam()
1093 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
1094 tem_safe_scroll(tem, in tem_safe_chkparam()
1095 tem->tvs_c_cursor.row, in tem_safe_chkparam()
1097 tem->tvs_params[0], TEM_SCROLL_DOWN, in tem_safe_chkparam()
1102 tem_safe_send_data(tem, credp, called_from); in tem_safe_chkparam()
1103 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
1104 tem_safe_scroll(tem, in tem_safe_chkparam()
1105 tem->tvs_c_cursor.row, in tem_safe_chkparam()
1107 tem->tvs_params[0], TEM_SCROLL_UP, in tem_safe_chkparam()
1112 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
1113 tem_safe_shift(tem, tem->tvs_params[0], TEM_SHIFT_LEFT, in tem_safe_chkparam()
1118 tem_safe_send_data(tem, credp, called_from); in tem_safe_chkparam()
1119 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
1120 tem_safe_scroll(tem, 0, in tem_safe_chkparam()
1122 tem->tvs_params[0], TEM_SCROLL_UP, in tem_safe_chkparam()
1127 tem_safe_send_data(tem, credp, called_from); in tem_safe_chkparam()
1128 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
1129 tem_safe_scroll(tem, 0, in tem_safe_chkparam()
1131 tem->tvs_params[0], TEM_SCROLL_DOWN, in tem_safe_chkparam()
1136 tem_safe_send_data(tem, credp, called_from); in tem_safe_chkparam()
1137 tem_safe_window(tem, called_from); in tem_safe_chkparam()
1141 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
1142 tem_safe_clear_chars(tem, in tem_safe_chkparam()
1143 tem->tvs_params[0], in tem_safe_chkparam()
1144 tem->tvs_c_cursor.row, in tem_safe_chkparam()
1145 tem->tvs_c_cursor.col, in tem_safe_chkparam()
1150 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam()
1159 if (tem->tvs_params[0] > tems.ts_c_dimension.width) in tem_safe_chkparam()
1160 tem->tvs_params[0] = tems.ts_c_dimension.width; in tem_safe_chkparam()
1162 for (i = 0; i < tem->tvs_params[0]; i++) in tem_safe_chkparam()
1163 tem_safe_back_tab(tem, credp, called_from); in tem_safe_chkparam()
1166 tem->tvs_state = A_STATE_START; in tem_safe_chkparam()
1170 tem_safe_chkparam_qmark(struct tem_vt_state *tem, tem_char_t ch, cred_t *credp, in tem_safe_chkparam_qmark() argument
1174 MUTEX_HELD(&tem->tvs_lock)); in tem_safe_chkparam_qmark()
1178 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam_qmark()
1179 switch (tem->tvs_params[0]) { in tem_safe_chkparam_qmark()
1181 tem->tvs_stateflags |= TVS_AUTOWRAP; in tem_safe_chkparam_qmark()
1191 tem_safe_send_data(tem, credp, called_from); in tem_safe_chkparam_qmark()
1192 tem->tvs_cursor_hidden = B_FALSE; in tem_safe_chkparam_qmark()
1199 tem_safe_setparam(tem, 1, 1); in tem_safe_chkparam_qmark()
1200 switch (tem->tvs_params[0]) { in tem_safe_chkparam_qmark()
1202 tem->tvs_stateflags &= ~TVS_AUTOWRAP; in tem_safe_chkparam_qmark()
1212 tem_safe_send_data(tem, credp, called_from); in tem_safe_chkparam_qmark()
1213 tem->tvs_cursor_hidden = B_TRUE; in tem_safe_chkparam_qmark()
1218 tem->tvs_state = A_STATE_START; in tem_safe_chkparam_qmark()
1225 tem_safe_getparams(struct tem_vt_state *tem, tem_char_t ch, in tem_safe_getparams() argument
1229 MUTEX_HELD(&tem->tvs_lock)); in tem_safe_getparams()
1232 tem->tvs_paramval = ((tem->tvs_paramval * 10) + (ch - '0')); in tem_safe_getparams()
1233 tem->tvs_gotparam = B_TRUE; /* Remember got parameter */ in tem_safe_getparams()
1235 } else if (tem->tvs_state == A_STATE_CSI_EQUAL) { in tem_safe_getparams()
1236 tem->tvs_state = A_STATE_START; in tem_safe_getparams()
1237 } else if (tem->tvs_state == A_STATE_CSI_QMARK) { in tem_safe_getparams()
1238 if (tem->tvs_curparam < TEM_MAXPARAMS) { in tem_safe_getparams()
1239 if (tem->tvs_gotparam) { in tem_safe_getparams()
1241 tem->tvs_params[tem->tvs_curparam] = in tem_safe_getparams()
1242 tem->tvs_paramval; in tem_safe_getparams()
1244 tem->tvs_curparam++; in tem_safe_getparams()
1248 tem->tvs_gotparam = B_FALSE; in tem_safe_getparams()
1249 tem->tvs_paramval = 0; /* No parameter value yet */ in tem_safe_getparams()
1252 tem_safe_chkparam_qmark(tem, ch, credp, called_from); in tem_safe_getparams()
1255 if (tem->tvs_curparam < TEM_MAXPARAMS) { in tem_safe_getparams()
1256 if (tem->tvs_gotparam) { in tem_safe_getparams()
1258 tem->tvs_params[tem->tvs_curparam] = in tem_safe_getparams()
1259 tem->tvs_paramval; in tem_safe_getparams()
1261 tem->tvs_curparam++; in tem_safe_getparams()
1266 tem->tvs_gotparam = B_FALSE; in tem_safe_getparams()
1267 tem->tvs_paramval = 0; /* No parameter value yet */ in tem_safe_getparams()
1270 tem_safe_chkparam(tem, ch, credp, called_from); in tem_safe_getparams()
1281 tem_safe_outch(struct tem_vt_state *tem, tem_char_t ch, in tem_safe_outch() argument
1288 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_outch()
1292 if ((tem->tvs_stateflags & (TVS_AUTOWRAP | TVS_WRAPPED)) == in tem_safe_outch()
1294 tem_safe_new_line(tem, credp, called_from); in tem_safe_outch()
1298 tem_safe_get_attr(tem, &fg, &bg, &attr, TEM_ATTR_REVERSE); in tem_safe_outch()
1299 tem->tvs_outbuf[tem->tvs_outindex].tc_char = ch | TEM_ATTR(attr); in tem_safe_outch()
1300 tem->tvs_outbuf[tem->tvs_outindex].tc_fg_color = fg; in tem_safe_outch()
1301 tem->tvs_outbuf[tem->tvs_outindex].tc_bg_color = bg; in tem_safe_outch()
1302 tem->tvs_outindex++; in tem_safe_outch()
1303 tem->tvs_c_cursor.col++; in tem_safe_outch()
1304 if (tem->tvs_c_cursor.col >= tems.ts_c_dimension.width) { in tem_safe_outch()
1305 tem->tvs_stateflags |= TVS_WRAPPED; in tem_safe_outch()
1306 tem->tvs_c_cursor.col--; in tem_safe_outch()
1307 tem_safe_send_data(tem, credp, called_from); in tem_safe_outch()
1309 tem->tvs_stateflags &= ~TVS_WRAPPED; in tem_safe_outch()
1314 tem_safe_new_line(struct tem_vt_state *tem, in tem_safe_new_line() argument
1317 tem_safe_cr(tem); in tem_safe_new_line()
1318 tem_safe_lf(tem, credp, called_from); in tem_safe_new_line()
1322 tem_safe_cr(struct tem_vt_state *tem) in tem_safe_cr() argument
1324 tem->tvs_c_cursor.col = 0; in tem_safe_cr()
1325 tem->tvs_stateflags &= ~TVS_WRAPPED; in tem_safe_cr()
1326 tem_safe_align_cursor(tem); in tem_safe_cr()
1330 tem_safe_lf(struct tem_vt_state *tem, in tem_safe_lf() argument
1336 MUTEX_HELD(&tem->tvs_lock)); in tem_safe_lf()
1338 tem->tvs_stateflags &= ~TVS_WRAPPED; in tem_safe_lf()
1345 row = tem->tvs_c_cursor.row + 1; in tem_safe_lf()
1348 if (tem->tvs_nscroll != 0) { in tem_safe_lf()
1349 tem_safe_scroll(tem, 0, in tem_safe_lf()
1351 tem->tvs_nscroll, TEM_SCROLL_UP, in tem_safe_lf()
1354 tem->tvs_nscroll; in tem_safe_lf()
1365 tem_safe_mv_cursor(tem, row, tem->tvs_c_cursor.col, in tem_safe_lf()
1368 if (tem->tvs_nscroll == 0) { in tem_safe_lf()
1370 tem_safe_clear_chars(tem, in tem_safe_lf()
1372 tem->tvs_c_cursor.col, in tem_safe_lf()
1373 tem->tvs_c_cursor.row, in tem_safe_lf()
1374 tem->tvs_c_cursor.col, in tem_safe_lf()
1379 tem_safe_align_cursor(tem); in tem_safe_lf()
1383 tem_safe_send_data(struct tem_vt_state *tem, cred_t *credp, in tem_safe_send_data() argument
1387 MUTEX_HELD(&tem->tvs_lock)); in tem_safe_send_data()
1389 if (tem->tvs_outindex == 0) { in tem_safe_send_data()
1390 tem_safe_align_cursor(tem); in tem_safe_send_data()
1394 tem_safe_virtual_display(tem, in tem_safe_send_data()
1395 tem->tvs_outbuf, tem->tvs_outindex, in tem_safe_send_data()
1396 tem->tvs_s_cursor.row, tem->tvs_s_cursor.col); in tem_safe_send_data()
1398 if (tem->tvs_isactive) { in tem_safe_send_data()
1402 tem_safe_callback_display(tem, in tem_safe_send_data()
1403 tem->tvs_outbuf, tem->tvs_outindex, in tem_safe_send_data()
1404 tem->tvs_s_cursor.row, tem->tvs_s_cursor.col, in tem_safe_send_data()
1408 tem->tvs_outindex = 0; in tem_safe_send_data()
1410 tem_safe_align_cursor(tem); in tem_safe_send_data()
1420 tem_safe_align_cursor(struct tem_vt_state *tem) in tem_safe_align_cursor() argument
1422 tem->tvs_s_cursor.row = tem->tvs_c_cursor.row; in tem_safe_align_cursor()
1423 tem->tvs_s_cursor.col = tem->tvs_c_cursor.col; in tem_safe_align_cursor()
1432 tem_safe_parse(struct tem_vt_state *tem, tem_char_t ch, in tem_safe_parse() argument
1438 MUTEX_HELD(&tem->tvs_lock)); in tem_safe_parse()
1440 if (tem->tvs_state == A_STATE_START) { /* Normal state? */ in tem_safe_parse()
1443 tem_safe_control(tem, ch, credp, called_from); in tem_safe_parse()
1446 tem_safe_outch(tem, ch, credp, called_from); in tem_safe_parse()
1452 if (tem->tvs_state != A_STATE_ESC) { /* Need to get parameters? */ in tem_safe_parse()
1453 if (tem->tvs_state != A_STATE_CSI) { in tem_safe_parse()
1454 tem_safe_getparams(tem, ch, credp, called_from); in tem_safe_parse()
1460 tem->tvs_state = A_STATE_CSI_QMARK; in tem_safe_parse()
1463 tem->tvs_state = A_STATE_CSI_EQUAL; in tem_safe_parse()
1487 tem->tvs_state = A_STATE_START; in tem_safe_parse()
1490 tem_safe_mv_cursor(tem, tem->tvs_r_cursor.row, in tem_safe_parse()
1491 tem->tvs_r_cursor.col, credp, called_from); in tem_safe_parse()
1492 tem->tvs_state = A_STATE_START; in tem_safe_parse()
1495 tem_safe_send_data(tem, credp, called_from); in tem_safe_parse()
1500 if (tem->tvs_flags & TEM_ATTR_SCREEN_REVERSE) { in tem_safe_parse()
1501 tem->tvs_flags &= ~TEM_ATTR_SCREEN_REVERSE; in tem_safe_parse()
1507 if (tem->tvs_flags & TEM_ATTR_REVERSE) in tem_safe_parse()
1508 tem->tvs_flags &= ~TEM_ATTR_REVERSE; in tem_safe_parse()
1510 tem->tvs_flags |= TEM_ATTR_REVERSE; in tem_safe_parse()
1512 tem_safe_cls(tem, credp, called_from); in tem_safe_parse()
1513 tem->tvs_state = A_STATE_START; in tem_safe_parse()
1516 tem_safe_send_data(tem, credp, called_from); in tem_safe_parse()
1521 if (!(tem->tvs_flags & TEM_ATTR_SCREEN_REVERSE)) { in tem_safe_parse()
1522 tem->tvs_flags |= TEM_ATTR_SCREEN_REVERSE; in tem_safe_parse()
1528 if (!(tem->tvs_flags & TEM_ATTR_REVERSE)) in tem_safe_parse()
1529 tem->tvs_flags |= TEM_ATTR_REVERSE; in tem_safe_parse()
1531 tem->tvs_flags &= ~TEM_ATTR_REVERSE; in tem_safe_parse()
1534 tem_safe_cls(tem, credp, called_from); in tem_safe_parse()
1535 tem->tvs_state = A_STATE_START; in tem_safe_parse()
1541 tem->tvs_nscroll = tem->tvs_paramval; in tem_safe_parse()
1542 if (tem->tvs_nscroll > tems.ts_c_dimension.height) in tem_safe_parse()
1543 tem->tvs_nscroll = tems.ts_c_dimension.height; in tem_safe_parse()
1544 if (tem->tvs_nscroll < 0) in tem_safe_parse()
1545 tem->tvs_nscroll = 1; in tem_safe_parse()
1546 tem->tvs_state = A_STATE_START; in tem_safe_parse()
1549 tem_safe_getparams(tem, ch, credp, called_from); in tem_safe_parse()
1556 tem->tvs_curparam = 0; in tem_safe_parse()
1557 tem->tvs_paramval = 0; in tem_safe_parse()
1558 tem->tvs_gotparam = B_FALSE; in tem_safe_parse()
1561 tem->tvs_params[i] = -1; in tem_safe_parse()
1562 tem->tvs_state = A_STATE_CSI; in tem_safe_parse()
1564 tem->tvs_state = A_STATE_START; in tem_safe_parse()
1566 tem->tvs_state = A_STATE_START; in tem_safe_parse()
1568 tem->tvs_state = A_STATE_START; in tem_safe_parse()
1571 tem_safe_reset_display(tem, credp, called_from, in tem_safe_parse()
1575 tem_safe_set_tab(tem); in tem_safe_parse()
1578 tem->tvs_r_cursor.row = tem->tvs_c_cursor.row; in tem_safe_parse()
1579 tem->tvs_r_cursor.col = tem->tvs_c_cursor.col; in tem_safe_parse()
1582 tem_safe_mv_cursor(tem, tem->tvs_r_cursor.row, in tem_safe_parse()
1583 tem->tvs_r_cursor.col, credp, called_from); in tem_safe_parse()
1586 tem_safe_control(tem, ch, credp, called_from); in tem_safe_parse()
1588 tem_safe_outch(tem, ch, credp, called_from); in tem_safe_parse()
1595 tem_safe_bell(struct tem_vt_state *tem, enum called_from called_from) in tem_safe_bell() argument
1605 tem_safe_scroll(struct tem_vt_state *tem, int start, int end, int count, in tem_safe_scroll() argument
1611 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_scroll()
1623 tem_safe_copy_area(tem, 0, start + count, in tem_safe_scroll()
1628 tem_safe_clear_chars(tem, tems.ts_c_dimension.width, in tem_safe_scroll()
1635 tem_safe_copy_area(tem, 0, start, in tem_safe_scroll()
1641 tem_safe_clear_chars(tem, tems.ts_c_dimension.width, in tem_safe_scroll()
1674 tem_safe_copy_area(struct tem_vt_state *tem, in tem_safe_copy_area() argument
1685 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_copy_area()
1710 src = tem->tvs_screen_buf + soffset; in tem_safe_copy_area()
1711 dst = tem->tvs_screen_buf + toffset; in tem_safe_copy_area()
1725 tem_safe_virtual_copy(tem, s_col, s_row + i, in tem_safe_copy_area()
1729 if (tem->tvs_isactive) { in tem_safe_copy_area()
1730 tem_safe_callback_copy(tem, s_col, s_row + i, in tem_safe_copy_area()
1743 tem_safe_virtual_copy(tem, s_col, s_row + i, in tem_safe_copy_area()
1747 if (tem->tvs_isactive) { in tem_safe_copy_area()
1748 tem_safe_callback_copy(tem, s_col, s_row + i, in tem_safe_copy_area()
1757 tem_safe_clear_chars(struct tem_vt_state *tem, int count, screen_pos_t row, in tem_safe_clear_chars() argument
1760 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_clear_chars()
1776 tem_safe_virtual_cls(tem, count, row, col); in tem_safe_clear_chars()
1778 if (!tem->tvs_isactive) in tem_safe_clear_chars()
1781 tem_safe_callback_cls(tem, count, row, col, credp, called_from); in tem_safe_clear_chars()
1786 tem_safe_text_display(struct tem_vt_state *tem, term_char_t *string, in tem_safe_text_display() argument
1795 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_text_display()
1804 tem_safe_get_color(tem, &fg, &bg, &string[i]); in tem_safe_text_display()
1826 tem_safe_image_display(struct tem_vt_state *tem, uchar_t *image,
1833 mutex_enter(&tem->tvs_lock);
1843 mutex_exit(&tem->tvs_lock);
1850 tem_safe_text_copy(struct tem_vt_state *tem, in tem_safe_text_copy() argument
1858 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_text_copy()
1872 tem_safe_text_cls(struct tem_vt_state *tem, in tem_safe_text_cls() argument
1880 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_text_cls()
1883 tem_safe_get_attr(tem, &c.tc_fg_color, &c.tc_bg_color, &attr, in tem_safe_text_cls()
1894 tem_safe_text_display(tem, tems.ts_blank_line, count, row, col, in tem_safe_text_cls()
1899 tem_safe_pix_display(struct tem_vt_state *tem, in tem_safe_pix_display() argument
1907 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_pix_display()
1910 da.data = (uchar_t *)tem->tvs_pix_data; in tem_safe_pix_display()
1919 tem_safe_callback_bit2pix(tem, &string[i]); in tem_safe_pix_display()
1927 tem_safe_pix_copy(struct tem_vt_state *tem, in tem_safe_pix_copy() argument
1937 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_pix_copy()
1940 if (need_clear && tem->tvs_first_line > 0) { in tem_safe_pix_copy()
1949 tem_safe_pix_clear_prom_output(tem, credp, called_from); in tem_safe_pix_copy()
1962 if (tem->tvs_first_line > 0 && t_row < s_row && t_col == 0 && in tem_safe_pix_copy()
1981 if (tem->tvs_first_line > 0 && t_row < s_row) { in tem_safe_pix_copy()
1983 tem->tvs_first_line -= (s_row - t_row); in tem_safe_pix_copy()
1984 if (tem->tvs_first_line <= 0) { in tem_safe_pix_copy()
1986 tem->tvs_first_line = 0; in tem_safe_pix_copy()
1993 tem_safe_pix_bit2pix(struct tem_vt_state *tem, term_char_t *c) in tem_safe_pix_bit2pix() argument
1999 tem_safe_get_color(tem, &fg, &bg, c); in tem_safe_pix_bit2pix()
2021 fp(tem, c->tc_char, fg, bg); in tem_safe_pix_bit2pix()
2029 tem_safe_pix_cls(struct tem_vt_state *tem, int count, in tem_safe_pix_cls() argument
2033 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_pix_cls()
2036 tem_safe_pix_cls_range(tem, row, 1, tems.ts_p_offset.y, in tem_safe_pix_cls()
2064 tem_safe_pix_clear_prom_output(struct tem_vt_state *tem, cred_t *credp, in tem_safe_pix_clear_prom_output() argument
2069 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_pix_clear_prom_output()
2080 tem_safe_pix_cls_range(tem, 0, nrows, offset, 0, ncols, 0, in tem_safe_pix_clear_prom_output()
2089 tem_safe_pix_clear_entire_screen(struct tem_vt_state *tem, cred_t *credp, in tem_safe_pix_clear_entire_screen() argument
2099 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_pix_clear_entire_screen()
2103 tem_safe_get_attr(tem, &c.tc_fg_color, &c.tc_bg_color, &attr, in tem_safe_pix_clear_entire_screen()
2107 tem_safe_get_color(tem, &fg_color, &bg_color, &c); in tem_safe_pix_clear_entire_screen()
2118 tem_safe_pix_cls_range(tem, 0, nrows, tems.ts_p_offset.y, 0, ncols, in tem_safe_pix_clear_entire_screen()
2125 if (tem->tvs_first_line > 0) in tem_safe_pix_clear_entire_screen()
2126 tem->tvs_first_line = 0; in tem_safe_pix_clear_entire_screen()
2134 tem_safe_cls(struct tem_vt_state *tem, in tem_safe_cls() argument
2139 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_cls()
2144 tem_safe_clear_chars(tem, tems.ts_c_dimension.width, in tem_safe_cls()
2147 tem->tvs_c_cursor.row = 0; in tem_safe_cls()
2148 tem->tvs_c_cursor.col = 0; in tem_safe_cls()
2149 tem_safe_align_cursor(tem); in tem_safe_cls()
2156 tem_safe_virtual_cls(tem, tems.ts_c_dimension.width, row, 0); in tem_safe_cls()
2158 tem->tvs_c_cursor.row = 0; in tem_safe_cls()
2159 tem->tvs_c_cursor.col = 0; in tem_safe_cls()
2160 tem_safe_align_cursor(tem); in tem_safe_cls()
2162 if (!tem->tvs_isactive) in tem_safe_cls()
2165 tem_safe_pix_clear_entire_screen(tem, credp, called_from); in tem_safe_cls()
2169 tem_safe_back_tab(struct tem_vt_state *tem, in tem_safe_back_tab() argument
2175 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_back_tab()
2180 for (i = tem->tvs_ntabs - 1; i >= 0; i--) { in tem_safe_back_tab()
2181 if (tem->tvs_tabs[i] < tem->tvs_c_cursor.col) { in tem_safe_back_tab()
2182 tabstop = tem->tvs_tabs[i]; in tem_safe_back_tab()
2187 tem_safe_mv_cursor(tem, tem->tvs_c_cursor.row, in tem_safe_back_tab()
2192 tem_safe_tab(struct tem_vt_state *tem, in tem_safe_tab() argument
2198 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_tab()
2203 for (i = 0; i < tem->tvs_ntabs; i++) { in tem_safe_tab()
2204 if (tem->tvs_tabs[i] > tem->tvs_c_cursor.col) { in tem_safe_tab()
2205 tabstop = tem->tvs_tabs[i]; in tem_safe_tab()
2210 tem_safe_mv_cursor(tem, tem->tvs_c_cursor.row, in tem_safe_tab()
2215 tem_safe_set_tab(struct tem_vt_state *tem) in tem_safe_set_tab() argument
2219 if (tem->tvs_ntabs == tem->tvs_maxtab) in tem_safe_set_tab()
2221 if (tem->tvs_ntabs == 0 || in tem_safe_set_tab()
2222 tem->tvs_tabs[tem->tvs_ntabs] < tem->tvs_c_cursor.col) { in tem_safe_set_tab()
2223 tem->tvs_tabs[tem->tvs_ntabs++] = tem->tvs_c_cursor.col; in tem_safe_set_tab()
2226 for (i = 0; i < tem->tvs_ntabs; i++) { in tem_safe_set_tab()
2227 if (tem->tvs_tabs[i] == tem->tvs_c_cursor.col) in tem_safe_set_tab()
2229 if (tem->tvs_tabs[i] > tem->tvs_c_cursor.col) { in tem_safe_set_tab()
2230 for (j = tem->tvs_ntabs - 1; j >= i; j--) in tem_safe_set_tab()
2231 tem->tvs_tabs[j+ 1] = tem->tvs_tabs[j]; in tem_safe_set_tab()
2232 tem->tvs_tabs[i] = tem->tvs_c_cursor.col; in tem_safe_set_tab()
2233 tem->tvs_ntabs++; in tem_safe_set_tab()
2240 tem_safe_clear_tabs(struct tem_vt_state *tem, int action) in tem_safe_clear_tabs() argument
2246 tem->tvs_ntabs = 0; in tem_safe_clear_tabs()
2250 for (i = 0; i < tem->tvs_ntabs; i++) { in tem_safe_clear_tabs()
2251 if (tem->tvs_tabs[i] == tem->tvs_c_cursor.col) { in tem_safe_clear_tabs()
2252 tem->tvs_ntabs--; in tem_safe_clear_tabs()
2253 for (j = i; j < tem->tvs_ntabs; j++) in tem_safe_clear_tabs()
2254 tem->tvs_tabs[j] = tem->tvs_tabs[j + 1]; in tem_safe_clear_tabs()
2263 tem_safe_mv_cursor(struct tem_vt_state *tem, int row, int col, in tem_safe_mv_cursor() argument
2266 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_mv_cursor()
2281 tem->tvs_stateflags |= TVS_WRAPPED; in tem_safe_mv_cursor()
2284 tem->tvs_stateflags &= ~TVS_WRAPPED; in tem_safe_mv_cursor()
2287 tem_safe_send_data(tem, credp, called_from); in tem_safe_mv_cursor()
2288 tem->tvs_c_cursor.row = (screen_pos_t)row; in tem_safe_mv_cursor()
2289 tem->tvs_c_cursor.col = (screen_pos_t)col; in tem_safe_mv_cursor()
2290 tem_safe_align_cursor(tem); in tem_safe_mv_cursor()
2295 tem_safe_reset_emulator(struct tem_vt_state *tem, in tem_safe_reset_emulator() argument
2301 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_reset_emulator()
2304 tem->tvs_c_cursor.row = 0; in tem_safe_reset_emulator()
2305 tem->tvs_c_cursor.col = 0; in tem_safe_reset_emulator()
2306 tem->tvs_r_cursor.row = 0; in tem_safe_reset_emulator()
2307 tem->tvs_r_cursor.col = 0; in tem_safe_reset_emulator()
2308 tem->tvs_s_cursor.row = 0; in tem_safe_reset_emulator()
2309 tem->tvs_s_cursor.col = 0; in tem_safe_reset_emulator()
2310 tem->tvs_outindex = 0; in tem_safe_reset_emulator()
2311 tem->tvs_state = A_STATE_START; in tem_safe_reset_emulator()
2312 tem->tvs_gotparam = B_FALSE; in tem_safe_reset_emulator()
2313 tem->tvs_curparam = 0; in tem_safe_reset_emulator()
2314 tem->tvs_paramval = 0; in tem_safe_reset_emulator()
2315 tem->tvs_nscroll = 1; in tem_safe_reset_emulator()
2318 tem->tvs_alpha = 0xff; in tem_safe_reset_emulator()
2319 tem->tvs_fg_color = tems.ts_init_color.fg_color; in tem_safe_reset_emulator()
2320 tem->tvs_bg_color = tems.ts_init_color.bg_color; in tem_safe_reset_emulator()
2321 tem->tvs_flags = tems.ts_init_color.a_flags; in tem_safe_reset_emulator()
2327 tem->tvs_ntabs = 0; in tem_safe_reset_emulator()
2329 tem->tvs_tabs[tem->tvs_ntabs++] = (screen_pos_t)j; in tem_safe_reset_emulator()
2332 tem->tvs_params[j] = 0; in tem_safe_reset_emulator()
2336 tem_safe_reset_display(struct tem_vt_state *tem, in tem_safe_reset_display() argument
2340 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_reset_display()
2343 tem_safe_reset_emulator(tem, credp, called_from, init_color); in tem_safe_reset_display()
2346 if (tem->tvs_isactive) in tem_safe_reset_display()
2347 tem_safe_callback_cursor(tem, in tem_safe_reset_display()
2350 tem_safe_cls(tem, credp, called_from); in tem_safe_reset_display()
2352 if (tem->tvs_isactive) in tem_safe_reset_display()
2353 tem_safe_callback_cursor(tem, in tem_safe_reset_display()
2360 struct tem_vt_state *tem, in tem_safe_shift() argument
2368 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_shift()
2371 rest_of_line = tems.ts_c_dimension.width - tem->tvs_c_cursor.col; in tem_safe_shift()
2381 tem_safe_copy_area(tem, in tem_safe_shift()
2382 tem->tvs_c_cursor.col + count, in tem_safe_shift()
2383 tem->tvs_c_cursor.row, in tem_safe_shift()
2385 tem->tvs_c_cursor.row, in tem_safe_shift()
2386 tem->tvs_c_cursor.col, in tem_safe_shift()
2387 tem->tvs_c_cursor.row, in tem_safe_shift()
2391 tem_safe_clear_chars(tem, count, tem->tvs_c_cursor.row, in tem_safe_shift()
2397 tem_safe_copy_area(tem, in tem_safe_shift()
2398 tem->tvs_c_cursor.col, in tem_safe_shift()
2399 tem->tvs_c_cursor.row, in tem_safe_shift()
2401 tem->tvs_c_cursor.row, in tem_safe_shift()
2402 tem->tvs_c_cursor.col + count, in tem_safe_shift()
2403 tem->tvs_c_cursor.row, in tem_safe_shift()
2407 tem_safe_clear_chars(tem, count, tem->tvs_c_cursor.row, in tem_safe_shift()
2408 tem->tvs_c_cursor.col, credp, called_from); in tem_safe_shift()
2414 tem_safe_text_cursor(struct tem_vt_state *tem, short action, in tem_safe_text_cursor() argument
2419 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_text_cursor()
2422 ca.row = tem->tvs_c_cursor.row; in tem_safe_text_cursor()
2423 ca.col = tem->tvs_c_cursor.col; in tem_safe_text_cursor()
2429 tem->tvs_c_cursor.row = ca.row; in tem_safe_text_cursor()
2430 tem->tvs_c_cursor.col = ca.col; in tem_safe_text_cursor()
2435 tem_safe_pix_cursor(struct tem_vt_state *tem, short action, in tem_safe_pix_cursor() argument
2443 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_pix_cursor()
2446 ca.row = tem->tvs_c_cursor.row * tems.ts_font.vf_height + in tem_safe_pix_cursor()
2448 ca.col = tem->tvs_c_cursor.col * tems.ts_font.vf_width + in tem_safe_pix_cursor()
2453 tem_safe_get_attr(tem, &c.tc_fg_color, &c.tc_bg_color, &attr, in tem_safe_pix_cursor()
2457 tem_safe_get_color(tem, &fg, &bg, &c); in tem_safe_pix_cursor()
2466 tem->tvs_c_cursor.row = 0; in tem_safe_pix_cursor()
2467 tem->tvs_c_cursor.col = 0; in tem_safe_pix_cursor()
2470 tem->tvs_c_cursor.row = (ca.row - tems.ts_p_offset.y) / in tem_safe_pix_cursor()
2474 tem->tvs_c_cursor.col = (ca.col - tems.ts_p_offset.x) / in tem_safe_pix_cursor()
2481 bit_to_pix4(struct tem_vt_state *tem, tem_char_t c, text_color_t fg, in bit_to_pix4() argument
2484 uint8_t *dest = (uint8_t *)tem->tvs_pix_data; in bit_to_pix4()
2490 bit_to_pix8(struct tem_vt_state *tem, tem_char_t c, text_color_t fg, in bit_to_pix8() argument
2493 uint8_t *dest = (uint8_t *)tem->tvs_pix_data; in bit_to_pix8()
2499 bit_to_pix16(struct tem_vt_state *tem, tem_char_t c, text_color_t fg, in bit_to_pix16() argument
2504 dest = (uint16_t *)tem->tvs_pix_data; in bit_to_pix16()
2509 bit_to_pix24(struct tem_vt_state *tem, tem_char_t c, text_color_t fg, in bit_to_pix24() argument
2514 dest = (uint8_t *)tem->tvs_pix_data; in bit_to_pix24()
2519 bit_to_pix32(struct tem_vt_state *tem, tem_char_t c, text_color_t fg, in bit_to_pix32() argument
2524 dest = (uint32_t *)tem->tvs_pix_data; in bit_to_pix32()
2532 tem_safe_get_attr(struct tem_vt_state *tem, text_color_t *fg, in tem_safe_get_attr() argument
2535 if (tem->tvs_flags & flag) { in tem_safe_get_attr()
2536 *fg = tem->tvs_bg_color; in tem_safe_get_attr()
2537 *bg = tem->tvs_fg_color; in tem_safe_get_attr()
2539 *fg = tem->tvs_fg_color; in tem_safe_get_attr()
2540 *bg = tem->tvs_bg_color; in tem_safe_get_attr()
2544 *attr = tem->tvs_flags; in tem_safe_get_attr()
2548 tem_safe_get_color(struct tem_vt_state *tem, text_color_t *fg, in tem_safe_get_color() argument
2604 fg->n = rgb_color_map(&rgb_info, fg->n, tem->tvs_alpha); in tem_safe_get_color()
2616 bg->n = rgb_color_map(&rgb_info, bg->n, tem->tvs_alpha); in tem_safe_get_color()
2661 tem_safe_pix_cls_range(struct tem_vt_state *tem, in tem_safe_pix_cls_range() argument
2673 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_pix_cls_range()
2682 tem_safe_get_attr(tem, &c.tc_fg_color, &c.tc_bg_color, &attr, in tem_safe_pix_cls_range()
2687 tem_safe_callback_bit2pix(tem, &c); in tem_safe_pix_cls_range()
2688 da.data = (uchar_t *)tem->tvs_pix_data; in tem_safe_pix_cls_range()
2704 tem_safe_virtual_display(struct tem_vt_state *tem, term_char_t *string, in tem_safe_virtual_display() argument
2716 addr = tem->tvs_screen_buf + (row * width + col); in tem_safe_virtual_display()
2772 tem_safe_virtual_copy(struct tem_vt_state *tem, in tem_safe_virtual_copy() argument
2800 i_virtual_copy_tem_chars(tem->tvs_screen_buf, s_col, s_row, in tem_safe_virtual_copy()
2805 tem_safe_virtual_cls(struct tem_vt_state *tem, in tem_safe_virtual_cls() argument
2812 tem_safe_get_attr(tem, &c.tc_fg_color, &c.tc_bg_color, &attr, in tem_safe_virtual_cls()
2819 tem_safe_virtual_display(tem, tems.ts_blank_line, count, row, col); in tem_safe_virtual_cls()
2826 tem_safe_blank_screen(struct tem_vt_state *tem, cred_t *credp, in tem_safe_blank_screen() argument
2831 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_blank_screen()
2835 tem_safe_pix_clear_entire_screen(tem, credp, called_from); in tem_safe_blank_screen()
2840 tem_safe_callback_cls(tem, in tem_safe_blank_screen()
2850 tem_safe_unblank_screen(struct tem_vt_state *tem, cred_t *credp, in tem_safe_unblank_screen() argument
2855 ASSERT((MUTEX_HELD(&tems.ts_lock) && MUTEX_HELD(&tem->tvs_lock)) || in tem_safe_unblank_screen()
2859 tem_safe_pix_clear_entire_screen(tem, credp, called_from); in tem_safe_unblank_screen()
2861 tem_safe_callback_cursor(tem, VIS_HIDE_CURSOR, credp, called_from); in tem_safe_unblank_screen()
2870 tem_safe_callback_display(tem, tem->tvs_screen_rows[row], in tem_safe_unblank_screen()
2874 tem_safe_callback_cursor(tem, VIS_DISPLAY_CURSOR, credp, called_from); in tem_safe_unblank_screen()