Improve SCOANSI emulation: The colours that SGR 0 returns to are now changed

by the SCO SNF and SNB sequences, which seems to be what the SCO console does
(at least in the new mode documented for OpenServer 5.0.6).

[originally from svn r3286]
This commit is contained in:
Ben Harris 2003-06-21 22:40:42 +00:00
Родитель 4c8bd3a8dd
Коммит b287bd5606
1 изменённых файлов: 14 добавлений и 8 удалений

Просмотреть файл

@ -201,7 +201,7 @@ static void power_on(Terminal *term)
term->in_vbell = FALSE;
term->cursor_on = 1;
term->big_cursor = 0;
term->save_attr = term->curr_attr = ATTR_DEFAULT;
term->default_attr = term->save_attr = term->curr_attr = ATTR_DEFAULT;
term->term_editing = term->term_echoing = FALSE;
term->app_cursor_keys = term->cfg.app_cursor;
term->app_keypad_keys = term->cfg.app_keypad;
@ -2376,7 +2376,7 @@ void term_out(Terminal *term)
for (i = 0; i < term->esc_nargs; i++) {
switch (def(term->esc_args[i], 0)) {
case 0: /* restore defaults */
term->curr_attr = ATTR_DEFAULT;
term->curr_attr = term->default_attr;
break;
case 1: /* enable bold */
compatibility(VT100AVO);
@ -2782,21 +2782,27 @@ void term_out(Terminal *term)
case ANSI('F', '='): /* set normal foreground */
compatibility(SCOANSI);
if (term->esc_args[0] >= 0 && term->esc_args[0] < 16) {
term->curr_attr &= ~ATTR_FGMASK;
term->curr_attr |=
(sco2ansicolour[term->esc_args[0] & 0x7] |
long colour =
(sco2ansicolour[term->esc_args[0] & 0x7] |
((term->esc_args[0] & 0x8) << 1)) <<
ATTR_FGSHIFT;
term->curr_attr &= ~ATTR_FGMASK;
term->curr_attr |= colour;
term->default_attr &= ~ATTR_FGMASK;
term->default_attr |= colour;
}
break;
case ANSI('G', '='): /* set normal background */
compatibility(SCOANSI);
if (term->esc_args[0] >= 0 && term->esc_args[0] < 16) {
term->curr_attr &= ~ATTR_BGMASK;
term->curr_attr |=
(sco2ansicolour[term->esc_args[0] & 0x7] |
long colour =
(sco2ansicolour[term->esc_args[0] & 0x7] |
((term->esc_args[0] & 0x8) << 1)) <<
ATTR_BGSHIFT;
term->curr_attr &= ~ATTR_BGMASK;
term->curr_attr |= colour;
term->default_attr &= ~ATTR_BGMASK;
term->default_attr |= colour;
}
break;
case ANSI('L', '='):