Add partial SCS support
Allow G0 to be set to the DEC Special Graphics Character Set or ASCII.
This commit is contained in:
parent
0e87a03761
commit
c11447fc8b
15
ANSI.c
15
ANSI.c
@ -211,7 +211,7 @@ int es_argc; // escape sequence args count
|
|||||||
int es_argv[MAX_ARG]; // escape sequence args
|
int es_argv[MAX_ARG]; // escape sequence args
|
||||||
TCHAR Pt_arg[MAX_PATH*2]; // text parameter for Operating System Command
|
TCHAR Pt_arg[MAX_PATH*2]; // text parameter for Operating System Command
|
||||||
int Pt_len;
|
int Pt_len;
|
||||||
BOOL shifted;
|
BOOL shifted, G0_special;
|
||||||
int screen_top = -1; // initial window top when cleared
|
int screen_top = -1; // initial window top when cleared
|
||||||
|
|
||||||
|
|
||||||
@ -1573,7 +1573,7 @@ ParseAndPrintString( HANDLE hDev,
|
|||||||
{
|
{
|
||||||
hConOut = hDev;
|
hConOut = hDev;
|
||||||
state = 1;
|
state = 1;
|
||||||
shifted = FALSE;
|
shifted = G0_special = FALSE;
|
||||||
}
|
}
|
||||||
for (i = nNumberOfBytesToWrite, s = (LPCTSTR)lpBuffer; i > 0; i--, s++)
|
for (i = nNumberOfBytesToWrite, s = (LPCTSTR)lpBuffer; i > 0; i--, s++)
|
||||||
{
|
{
|
||||||
@ -1594,7 +1594,7 @@ ParseAndPrintString( HANDLE hDev,
|
|||||||
hBell = CreateThread( NULL, 4096, BellThread, NULL, 0, NULL );
|
hBell = CreateThread( NULL, 4096, BellThread, NULL, 0, NULL );
|
||||||
}
|
}
|
||||||
else if (c == SO) shifted = TRUE;
|
else if (c == SO) shifted = TRUE;
|
||||||
else if (c == SI) shifted = FALSE;
|
else if (c == SI) shifted = G0_special;
|
||||||
else PushBuffer( (WCHAR)c );
|
else PushBuffer( (WCHAR)c );
|
||||||
}
|
}
|
||||||
else if (state == 2)
|
else if (state == 2)
|
||||||
@ -1611,7 +1611,16 @@ ParseAndPrintString( HANDLE hDev,
|
|||||||
else if (c >= '\x20' && c <= '\x2f')
|
else if (c >= '\x20' && c <= '\x2f')
|
||||||
suffix2 = c;
|
suffix2 = c;
|
||||||
else if (suffix2 != 0)
|
else if (suffix2 != 0)
|
||||||
|
{
|
||||||
|
if (suffix2 == '(') // Designate G0 character set
|
||||||
|
{
|
||||||
|
if (c == '0')
|
||||||
|
shifted = G0_special = TRUE;
|
||||||
|
else if (c == 'B')
|
||||||
|
shifted = G0_special = FALSE;
|
||||||
|
}
|
||||||
state = 1;
|
state = 1;
|
||||||
|
}
|
||||||
else if (c == 'E') // NEL Next Line
|
else if (c == 'E') // NEL Next Line
|
||||||
{
|
{
|
||||||
PushBuffer( '\n' );
|
PushBuffer( '\n' );
|
||||||
|
31
readme.txt
31
readme.txt
@ -202,6 +202,8 @@ Sequences Recognised
|
|||||||
\eE NEL Next Line
|
\eE NEL Next Line
|
||||||
\e[#b REP Repeat
|
\e[#b REP Repeat
|
||||||
\eM RI Reverse Index
|
\eM RI Reverse Index
|
||||||
|
\e(0 SCS Select Character Set (DEC special graphics)
|
||||||
|
\e(B SCS Select Character Set (ASCII)
|
||||||
\e[#;#;#m SGR Select Graphic Rendition
|
\e[#;#;#m SGR Select Graphic Rendition
|
||||||
\e[#d VPA Line Position Absolute
|
\e[#d VPA Line Position Absolute
|
||||||
\e[#k VPB Line Position Backward
|
\e[#k VPB Line Position Backward
|
||||||
@ -209,12 +211,14 @@ Sequences Recognised
|
|||||||
|
|
||||||
'\e' represents the escape character (ASCII 27); '#' represents a decimal
|
'\e' represents the escape character (ASCII 27); '#' represents a decimal
|
||||||
number (optional, in most cases defaulting to 1); BEL, SO and SI are ASCII
|
number (optional, in most cases defaulting to 1); BEL, SO and SI are ASCII
|
||||||
7, 14 and 15. Regarding SGR: bold will set the foreground intensity; blink
|
7, 14 and 15. See "sequences.txt" for a more complete description.
|
||||||
and underline will set the background intensity; conceal uses background as
|
|
||||||
foreground. See "sequences.txt" for a more complete description.
|
|
||||||
|
|
||||||
Escape followed by a control character will display that character, not
|
Escape followed by a control character will display that character, not
|
||||||
perform its function. An unrecognised sequence will preserve the escape.
|
perform its function; an unrecognised character will preserve the escape.
|
||||||
|
|
||||||
|
SO will select the G1 character set; SI will select the G0 set. The G0
|
||||||
|
character set is set by SCS; the G1 character set is always the DEC
|
||||||
|
Special Graphics Character Set.
|
||||||
|
|
||||||
I make a distinction between '\e[m' and '\e[0;...m'. Both will restore the
|
I make a distinction between '\e[m' and '\e[0;...m'. Both will restore the
|
||||||
original foreground/background colors (and so '0' should be the first para-
|
original foreground/background colors (and so '0' should be the first para-
|
||||||
@ -230,20 +234,6 @@ Sequences Recognised
|
|||||||
scroll in a new window.
|
scroll in a new window.
|
||||||
|
|
||||||
|
|
||||||
Sequences Ignored
|
|
||||||
=================
|
|
||||||
|
|
||||||
The following escape sequences are explicitly ignored.
|
|
||||||
|
|
||||||
\e(? Designate G0 character set ('?' is any character).
|
|
||||||
\e)? Designate G1 character set ('?' is any character).
|
|
||||||
\e[?... Private sequence
|
|
||||||
\e[>... Private sequence
|
|
||||||
|
|
||||||
The G0 character set is always ASCII; the G1 character set is always the
|
|
||||||
DEC Special Graphics Character Set.
|
|
||||||
|
|
||||||
|
|
||||||
DEC Special Graphics Character Set
|
DEC Special Graphics Character Set
|
||||||
==================================
|
==================================
|
||||||
|
|
||||||
@ -253,7 +243,7 @@ DEC Special Graphics Character Set
|
|||||||
|
|
||||||
Char Unicode Code Point & Name
|
Char Unicode Code Point & Name
|
||||||
---- -------------------------
|
---- -------------------------
|
||||||
_ U+00A0 No-Break Space (blank)
|
_ U+00A0 No-Break Space
|
||||||
` U+2666 Black Diamond Suit
|
` U+2666 Black Diamond Suit
|
||||||
a U+2592 Medium Shade
|
a U+2592 Medium Shade
|
||||||
b U+2409 Symbol For Horizontal Tabulation
|
b U+2409 Symbol For Horizontal Tabulation
|
||||||
@ -330,7 +320,8 @@ Version History
|
|||||||
+ added '+' intermediate byte to use the buffer, rather than the window;
|
+ added '+' intermediate byte to use the buffer, rather than the window;
|
||||||
+ added palette sequences;
|
+ added palette sequences;
|
||||||
+ added -pu to unload from the parent;
|
+ added -pu to unload from the parent;
|
||||||
+ added IND, NEL, RI, DA, DECCOLM, DECNCSM, DECSC & DECRC.
|
+ added IND, NEL, RI, DA, DECCOLM, DECNCSM, DECSC & DECRC;
|
||||||
|
+ added SCS, but only for special/ASCII (same as Win10).
|
||||||
|
|
||||||
1.72 - 24 December, 2015:
|
1.72 - 24 December, 2015:
|
||||||
- handle STD_OUTPUT_HANDLE & STD_ERROR_HANDLE in WriteFile;
|
- handle STD_OUTPUT_HANDLE & STD_ERROR_HANDLE in WriteFile;
|
||||||
|
@ -124,6 +124,9 @@ M move cursor up one line (scroll if necessary; always uses buffer)
|
|||||||
[u move cursor to saved position (or top-left, if nothing was saved)
|
[u move cursor to saved position (or top-left, if nothing was saved)
|
||||||
8 as above
|
8 as above
|
||||||
|
|
||||||
|
(0 select the DEC Special Graphics Character Set
|
||||||
|
(B select ASCII
|
||||||
|
|
||||||
[3h display control characters (LF is also performed)
|
[3h display control characters (LF is also performed)
|
||||||
[3l perform control functions (the only such recognised during above)
|
[3l perform control functions (the only such recognised during above)
|
||||||
[?3h set 132 columns
|
[?3h set 132 columns
|
||||||
|
Loading…
x
Reference in New Issue
Block a user