14 Commits

Author SHA1 Message Date
Jason Hood
80d9e7da78 Add IRM
Setting IRM will cause characters to be inserted, discarding anything
that goes beyond the edge.

Turn off the wrap flag when the cursor moves.

SM/RM allow more than one parameter.
2017-12-17 11:13:12 +10:00
Jason Hood
66c527a624 Tweak colors
SGR parameters 90-97 are bright foreground (leaving bold unchanged) and
100-107 are bright background (leaving underline/blink unchanged);
`38;5;#` & `48;5;#` will work for the first 16 colors, setting both
foreground & bold or background & underline (0-7 bold/underline off,
8-15 bold/underline on).
2017-12-16 12:37:43 +10:00
Jason Hood
7c14985a5d Modify DECSC/DECRC
Save/restore the attributes and G0 character set (the ANSI version still
only does the cursor).

Add the comment I missed when adding SCS; remove `DEC` from the sequence
descriptions.
2017-12-11 11:34:32 +10:00
Jason Hood
d20ab7471f Add tab handling
Support setting (HTS & DECST8C) and clearing (TBC) tabs, overriding the
console's own tab processing.  I've extended TBC with `\e[8g` to restore
console processing and added an extra parameter to DECST8C to set a
particular tab size.
2017-12-10 22:52:38 +10:00
Jason Hood
c11447fc8b Add partial SCS support
Allow G0 to be set to the DEC Special Graphics Character Set or ASCII.
2017-12-09 21:01:13 +10:00
Jason Hood
0e87a03761 Add DA, DECCOLM, DECNSCM, DECSC & DECRC
DECSC (Save Cursor) & DECRC (Restore Cursor) are the same as their
ANSI.sys equivalents (`\e[s` & `\e[u`).

DA (Device Attributes) will respond with `\e[?62;1c` - VT220 with 132
columns.

Setting DECCOLM will size the buffer & window to 132 columns; resetting
will restore the original values (NOT set 80 columns).	Setting DECNSCM
will prevent the display from being erased; however, the first time
DECCOLM is used will scroll in a new window, if appropriate.
2017-12-09 11:11:52 +10:00
Jason Hood
eb997019c1 Add IND, NEL and RI
These controls always operate on the buffer, in keeping with LF.
2017-12-03 12:50:13 +10:00
Jason Hood
523c478d67 Fix some things
Prevent `ESC LF` from performing the newline.
Only recognise `, ~`, not `,` anything.
Document BEL and the ignored sequences.
2017-11-30 11:38:15 +10:00
Jason Hood
e2f9b4e417 Add palette sequences
Recognise the xterm ESC]4 & ESC]104 OSC commands to set/reset colors.
Three color specs are recognised: `#RGB`, `#RRGGBB` and `R,G,B`; in
addition, multiple specs can be given (separated by commas) to
automatically increase the index.  I also allow `*` to query this index
and all subsequent ones.  Reset will restore the colors from when the
DLL was first loaded, not from the Console Properties.
2017-11-29 11:06:57 +10:00
Jason Hood
e44cbb848f Add + to use the buffer
Normally the display uses the window height; adding an intermediate
character of `+` will use the buffer height.  Report cursor position
will also output `+R` when used with `+n`.
2017-11-23 12:06:33 +10:00
Jason Hood
826b0b66ba Add DECPS Play Sound
There are some differences from the VT520: volume is ignored (although
silence is honored); duration is in 1/32 of a second up to and including
48 (1.5 seconds), after which it is in milliseconds (but still a maximum
of 8 seconds); notes are 1..25, anything else is frequency.
2017-11-19 12:07:28 +10:00
Jason Hood
1fe1d8f130 Recognise more sequences; ignore newline immediately after wrap.
Added support for CHT & CBT (move forward/backward by tabs), DECAWM (don't
wrap at EOL), CRM (display control characters, but still perform newline)
and REP (repeat last character, including BEL, BS, TAB, LF and CR).

It always bugged me that newline would add an unneeded blank line due to
wrap, but not enough to do anything about it.  For some reason, adding CRM
got me to thinking about it, so I finally did it.

Stopped \e[K from erasing the first character of the next line.
Restore cursor visibility on unload.
2014-02-26 21:18:45 +10:00
Jason Hood
9fa86512f3 Better parsing of escape & CSI sequences.
Recognise general Parameter & Intermediate Bytes, rather than testing
specific characters.  Explicitly ignore xterm 38 & 48 SGR values.
2014-02-18 21:34:39 +10:00
Jason Hood
a52a46c9c1 New method to obtain 32-bit LoadLibraryW from 64-bit code, eliminating the need
for ANSI-LLW.exe.
Set the code page so ansicon.exe can display some strings properly.
Expand wildcards for -t.
VC6 can now compile the 32-bit version; use it for the release binaries.
Improvements to the VC makefile.
Describe the sequences in a bit more detail.
2012-11-24 23:41:29 +10:00