Lines Matching refs:tcp
114 static void scterm_scan_esc(scr_stat *scp, term_stat *tcp,
116 static int mask2attr(term_stat *tcp);
121 term_stat *tcp; in scterm_init() local
128 tcp = *softc; in scterm_init()
132 bzero(tcp, sizeof(*tcp)); in scterm_init()
133 tcp->flags = SCTERM_BUSY; in scterm_init()
134 tcp->esc = 0; in scterm_init()
135 tcp->saved_xpos = -1; in scterm_init()
136 tcp->saved_ypos = -1; in scterm_init()
137 tcp->attr_mask = NORMAL_ATTR; in scterm_init()
139 tcp->dflt_std_color.fg = SC_NORM_ATTR & 0x0f; in scterm_init()
140 tcp->dflt_std_color.bg = (SC_NORM_ATTR >> 4) & 0x0f; in scterm_init()
141 tcp->dflt_rev_color.fg = SC_NORM_REV_ATTR & 0x0f; in scterm_init()
142 tcp->dflt_rev_color.bg = (SC_NORM_REV_ATTR >> 4) & 0x0f; in scterm_init()
143 tcp->std_color = tcp->dflt_std_color; in scterm_init()
144 tcp->rev_color = tcp->dflt_rev_color; in scterm_init()
145 tcp->cur_color = tcp->std_color; in scterm_init()
146 tcp->cur_attr = mask2attr(tcp); in scterm_init()
151 tcp->esc = 0; in scterm_init()
152 tcp->saved_xpos = -1; in scterm_init()
153 tcp->saved_ypos = -1; in scterm_init()
155 tcp->std_color = tcp->dflt_std_color; in scterm_init()
156 tcp->rev_color = tcp->dflt_rev_color; in scterm_init()
158 tcp->cur_color = tcp->std_color; in scterm_init()
159 tcp->cur_attr = mask2attr(tcp); in scterm_init()
178 scterm_scan_esc(scr_stat *scp, term_stat *tcp, u_char c) in scterm_scan_esc() argument
205 if (tcp->esc == 1) { /* seen ESC */ in scterm_scan_esc()
208 tcp->saved_xpos = scp->xpos; in scterm_scan_esc()
209 tcp->saved_ypos = scp->ypos; in scterm_scan_esc()
213 if (tcp->saved_xpos >= 0 && tcp->saved_ypos >= 0) in scterm_scan_esc()
214 sc_move_cursor(scp, tcp->saved_xpos, in scterm_scan_esc()
215 tcp->saved_ypos); in scterm_scan_esc()
219 tcp->esc = 2; in scterm_scan_esc()
220 tcp->last_param = -1; in scterm_scan_esc()
221 for (i = tcp->num_param; i < MAX_ESC_PAR; i++) in scterm_scan_esc()
222 tcp->param[i] = 1; in scterm_scan_esc()
223 tcp->num_param = 0; in scterm_scan_esc()
228 tcp->cur_attr, 0, 0); in scterm_scan_esc()
232 tcp->esc = 4; in scterm_scan_esc()
236 tcp->attr_mask = NORMAL_ATTR; in scterm_scan_esc()
237 tcp->cur_color = tcp->std_color in scterm_scan_esc()
238 = tcp->dflt_std_color; in scterm_scan_esc()
239 tcp->rev_color = tcp->dflt_rev_color; in scterm_scan_esc()
240 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
247 tcp->esc = 5; in scterm_scan_esc()
250 } else if (tcp->esc == 2) { /* seen ESC [ */ in scterm_scan_esc()
252 if (tcp->num_param < MAX_ESC_PAR) { in scterm_scan_esc()
253 if (tcp->last_param != tcp->num_param) { in scterm_scan_esc()
254 tcp->last_param = tcp->num_param; in scterm_scan_esc()
255 tcp->param[tcp->num_param] = 0; in scterm_scan_esc()
257 tcp->param[tcp->num_param] *= 10; in scterm_scan_esc()
259 tcp->param[tcp->num_param] += c - '0'; in scterm_scan_esc()
263 tcp->num_param = tcp->last_param + 1; in scterm_scan_esc()
266 if (tcp->num_param < MAX_ESC_PAR) in scterm_scan_esc()
271 tcp->esc = 3; in scterm_scan_esc()
272 tcp->last_param = -1; in scterm_scan_esc()
273 for (i = tcp->num_param; i < MAX_ESC_PAR; i++) in scterm_scan_esc()
274 tcp->param[i] = 1; in scterm_scan_esc()
275 tcp->num_param = 0; in scterm_scan_esc()
279 sc_term_up(scp, tcp->param[0], 0); in scterm_scan_esc()
283 sc_term_down(scp, tcp->param[0], 0); in scterm_scan_esc()
287 sc_term_right(scp, tcp->param[0]); in scterm_scan_esc()
291 sc_term_left(scp, tcp->param[0]); in scterm_scan_esc()
295 n = tcp->param[0]; in scterm_scan_esc()
302 n = tcp->param[0]; in scterm_scan_esc()
310 if (tcp->num_param == 0) in scterm_scan_esc()
312 else if (tcp->num_param == 2) in scterm_scan_esc()
313 sc_move_cursor(scp, tcp->param[1] - 1, in scterm_scan_esc()
314 tcp->param[0] - 1); in scterm_scan_esc()
318 if (tcp->num_param == 0) in scterm_scan_esc()
321 n = tcp->param[0]; in scterm_scan_esc()
323 tcp->cur_attr); in scterm_scan_esc()
327 if (tcp->num_param == 0) in scterm_scan_esc()
330 n = tcp->param[0]; in scterm_scan_esc()
332 tcp->cur_attr); in scterm_scan_esc()
336 sc_term_ins_line(scp, scp->ypos, tcp->param[0], in scterm_scan_esc()
337 sc->scr_map[0x20], tcp->cur_attr, 0); in scterm_scan_esc()
341 sc_term_del_line(scp, scp->ypos, tcp->param[0], in scterm_scan_esc()
342 sc->scr_map[0x20], tcp->cur_attr, 0); in scterm_scan_esc()
346 sc_term_del_char(scp, tcp->param[0], in scterm_scan_esc()
347 sc->scr_map[0x20], tcp->cur_attr); in scterm_scan_esc()
351 sc_term_ins_char(scp, tcp->param[0], in scterm_scan_esc()
352 sc->scr_map[0x20], tcp->cur_attr); in scterm_scan_esc()
356 sc_term_del_line(scp, 0, tcp->param[0], in scterm_scan_esc()
357 sc->scr_map[0x20], tcp->cur_attr, 0); in scterm_scan_esc()
361 sc_term_ins_line(scp, 0, tcp->param[0], in scterm_scan_esc()
362 sc->scr_map[0x20], tcp->cur_attr, 0); in scterm_scan_esc()
366 n = tcp->param[0]; in scterm_scan_esc()
372 sc->scr_map[0x20], tcp->cur_attr); in scterm_scan_esc()
378 sc_term_backtab(scp, tcp->param[0]); in scterm_scan_esc()
382 sc_term_col(scp, tcp->param[0]); in scterm_scan_esc()
386 sc_term_right(scp, tcp->param[0]); in scterm_scan_esc()
390 sc_term_row(scp, tcp->param[0]); in scterm_scan_esc()
394 sc_term_down(scp, tcp->param[0], 0); in scterm_scan_esc()
398 if (tcp->num_param == 0) { in scterm_scan_esc()
399 tcp->attr_mask = NORMAL_ATTR; in scterm_scan_esc()
400 tcp->cur_color = tcp->std_color; in scterm_scan_esc()
401 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
404 for (i = 0; i < tcp->num_param; i++) { in scterm_scan_esc()
405 switch (n = tcp->param[i]) { in scterm_scan_esc()
407 tcp->attr_mask = NORMAL_ATTR; in scterm_scan_esc()
408 tcp->cur_color = tcp->std_color; in scterm_scan_esc()
409 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
412 tcp->attr_mask |= BOLD_ATTR; in scterm_scan_esc()
413 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
416 tcp->attr_mask |= UNDERLINE_ATTR; in scterm_scan_esc()
417 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
420 tcp->attr_mask |= BLINK_ATTR; in scterm_scan_esc()
421 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
424 tcp->attr_mask |= REVERSE_ATTR; in scterm_scan_esc()
425 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
428 tcp->attr_mask &= ~BOLD_ATTR; in scterm_scan_esc()
429 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
432 tcp->attr_mask &= ~UNDERLINE_ATTR; in scterm_scan_esc()
433 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
436 tcp->attr_mask &= ~BLINK_ATTR; in scterm_scan_esc()
437 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
440 tcp->attr_mask &= ~REVERSE_ATTR; in scterm_scan_esc()
441 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
446 tcp->attr_mask |= FG_CHANGED; in scterm_scan_esc()
447 tcp->cur_color.fg = ansi_col[n - 30]; in scterm_scan_esc()
448 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
451 tcp->attr_mask &= ~(FG_CHANGED|BOLD_ATTR); in scterm_scan_esc()
452 tcp->cur_color.fg = tcp->std_color.fg; in scterm_scan_esc()
453 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
458 tcp->attr_mask |= BG_CHANGED; in scterm_scan_esc()
459 tcp->cur_color.bg = ansi_col[n - 40]; in scterm_scan_esc()
460 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
463 tcp->attr_mask &= ~BG_CHANGED; in scterm_scan_esc()
464 tcp->cur_color.bg = tcp->std_color.bg; in scterm_scan_esc()
465 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
472 tcp->saved_xpos = scp->xpos; in scterm_scan_esc()
473 tcp->saved_ypos = scp->ypos; in scterm_scan_esc()
477 if (tcp->saved_xpos >= 0 && tcp->saved_ypos >= 0) in scterm_scan_esc()
478 sc_move_cursor(scp, tcp->saved_xpos, in scterm_scan_esc()
479 tcp->saved_ypos); in scterm_scan_esc()
483 if (tcp->num_param == 0) in scterm_scan_esc()
486 n = tcp->param[0]; in scterm_scan_esc()
489 tcp->attr_mask = NORMAL_ATTR; in scterm_scan_esc()
490 tcp->cur_color = tcp->std_color in scterm_scan_esc()
491 = tcp->dflt_std_color; in scterm_scan_esc()
492 tcp->rev_color = tcp->dflt_rev_color; in scterm_scan_esc()
493 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
496 tcp->attr_mask &= ~BG_CHANGED; in scterm_scan_esc()
497 tcp->cur_color.bg = tcp->std_color.bg in scterm_scan_esc()
498 = ansi_col[tcp->param[1] & 0x0f]; in scterm_scan_esc()
499 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
502 tcp->attr_mask &= ~FG_CHANGED; in scterm_scan_esc()
503 tcp->cur_color.fg = tcp->std_color.fg in scterm_scan_esc()
504 = ansi_col[tcp->param[1] & 0x0f]; in scterm_scan_esc()
505 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
508 tcp->attr_mask &= ~(FG_CHANGED | BG_CHANGED); in scterm_scan_esc()
509 tcp->cur_color.fg = tcp->std_color.fg in scterm_scan_esc()
510 = tcp->param[1] & 0x0f; in scterm_scan_esc()
511 tcp->cur_color.bg = tcp->std_color.bg in scterm_scan_esc()
512 = (tcp->param[1] >> 4) & 0x0f; in scterm_scan_esc()
513 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
516 tcp->rev_color.bg = ansi_col[tcp->param[1] & 0x0f]; in scterm_scan_esc()
517 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
520 tcp->rev_color.fg = ansi_col[tcp->param[1] & 0x0f]; in scterm_scan_esc()
521 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
524 tcp->rev_color.fg = tcp->param[1] & 0x0f; in scterm_scan_esc()
525 tcp->rev_color.bg = (tcp->param[1] >> 4) & 0x0f; in scterm_scan_esc()
526 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
532 if (tcp->num_param == 1) in scterm_scan_esc()
533 sc_switch_scr(sc, tcp->param[0]); in scterm_scan_esc()
536 } else if (tcp->esc == 3) { /* seen ESC [0-9]+ = */ in scterm_scan_esc()
538 if (tcp->num_param < MAX_ESC_PAR) { in scterm_scan_esc()
539 if (tcp->last_param != tcp->num_param) { in scterm_scan_esc()
540 tcp->last_param = tcp->num_param; in scterm_scan_esc()
541 tcp->param[tcp->num_param] = 0; in scterm_scan_esc()
543 tcp->param[tcp->num_param] *= 10; in scterm_scan_esc()
545 tcp->param[tcp->num_param] += c - '0'; in scterm_scan_esc()
549 tcp->num_param = tcp->last_param + 1; in scterm_scan_esc()
552 if (tcp->num_param < MAX_ESC_PAR) in scterm_scan_esc()
557 if (tcp->num_param == 1) { in scterm_scan_esc()
558 scp->border=tcp->param[0] & 0xff; in scterm_scan_esc()
565 if (tcp->num_param == 2) { in scterm_scan_esc()
566 scp->bell_pitch = tcp->param[0]; in scterm_scan_esc()
568 (tcp->param[1] * hz + 99) / 100; in scterm_scan_esc()
574 n = tcp->num_param; in scterm_scan_esc()
575 v0 = tcp->param[0]; in scterm_scan_esc()
576 v1 = tcp->param[1]; in scterm_scan_esc()
577 v2 = tcp->param[2]; in scterm_scan_esc()
605 if (tcp->num_param == 1) { in scterm_scan_esc()
606 tcp->attr_mask &= ~FG_CHANGED; in scterm_scan_esc()
607 tcp->cur_color.fg = tcp->std_color.fg in scterm_scan_esc()
608 = tcp->param[0] & 0x0f; in scterm_scan_esc()
609 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
614 if (tcp->num_param == 1) { in scterm_scan_esc()
615 tcp->attr_mask &= ~BG_CHANGED; in scterm_scan_esc()
616 tcp->cur_color.bg = tcp->std_color.bg in scterm_scan_esc()
617 = tcp->param[0] & 0x0f; in scterm_scan_esc()
618 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
623 if (tcp->num_param == 1) { in scterm_scan_esc()
624 tcp->rev_color.fg = tcp->param[0] & 0x0f; in scterm_scan_esc()
625 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
630 if (tcp->num_param == 1) { in scterm_scan_esc()
631 tcp->rev_color.bg = tcp->param[0] & 0x0f; in scterm_scan_esc()
632 tcp->cur_attr = mask2attr(tcp); in scterm_scan_esc()
638 n = tcp->num_param; in scterm_scan_esc()
639 v0 = tcp->param[0]; in scterm_scan_esc()
654 } else if (tcp->esc == 4) { /* seen ESC Q */ in scterm_scan_esc()
657 } else if (tcp->esc == 5) { /* seen ESC ( */ in scterm_scan_esc()
666 tcp->esc = 0; in scterm_scan_esc()
672 term_stat *tcp; in scterm_puts() local
674 tcp = scp->ts; in scterm_puts()
678 if (tcp->esc) { in scterm_puts()
679 scterm_scan_esc(scp, tcp, *buf); in scterm_puts()
685 tcp->esc = 1; in scterm_puts()
686 tcp->num_param = 0; in scterm_puts()
691 sc_term_gen_print(scp, &buf, &len, tcp->cur_attr); in scterm_puts()
696 sc_term_gen_scroll(scp, scp->sc->scr_map[0x20], tcp->cur_attr); in scterm_puts()
707 term_stat *tcp = scp->ts; in scterm_ioctl() local
713 *(int*)data = (tcp->cur_attr >> 8) & 0xff; in scterm_ioctl()
719 vi->mv_norm.fore = tcp->std_color.fg; in scterm_ioctl()
720 vi->mv_norm.back = tcp->std_color.bg; in scterm_ioctl()
721 vi->mv_rev.fore = tcp->rev_color.fg; in scterm_ioctl()
722 vi->mv_rev.back = tcp->rev_color.bg; in scterm_ioctl()
741 term_stat *tcp = scp->ts; in scterm_default_attr() local
743 tcp->dflt_std_color.fg = color & 0x0f; in scterm_default_attr()
744 tcp->dflt_std_color.bg = (color >> 4) & 0x0f; in scterm_default_attr()
745 tcp->dflt_rev_color.fg = rev_color & 0x0f; in scterm_default_attr()
746 tcp->dflt_rev_color.bg = (rev_color >> 4) & 0x0f; in scterm_default_attr()
747 tcp->std_color = tcp->dflt_std_color; in scterm_default_attr()
748 tcp->rev_color = tcp->dflt_rev_color; in scterm_default_attr()
749 tcp->cur_color = tcp->std_color; in scterm_default_attr()
750 tcp->cur_attr = mask2attr(tcp); in scterm_default_attr()
756 term_stat *tcp = scp->ts; in scterm_clear() local
759 sc_vtb_clear(&scp->vtb, scp->sc->scr_map[0x20], tcp->cur_attr); in scterm_clear()
798 mask2attr(term_stat *tcp) in mask2attr() argument
800 int attr, mask = tcp->attr_mask; in mask2attr()
804 tcp->cur_color.bg : tcp->rev_color.fg) | in mask2attr()
806 tcp->cur_color.fg : tcp->rev_color.bg) << 4); in mask2attr()
808 attr = tcp->cur_color.fg | (tcp->cur_color.bg << 4); in mask2attr()