From dfc8a43ac8a189ca1c1ec3421dfdfed541fbfc80 Mon Sep 17 00:00:00 2001
From: sun <sun@unleashedmind.com>
Date: Tue, 1 Jul 2014 22:56:13 +0200
Subject: [PATCH] Converted readme.txt into Markdown.

---
 readme.md  | 481 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 readme.txt | 465 ---------------------------------------------------
 2 files changed, 481 insertions(+), 465 deletions(-)
 create mode 100644 readme.md
 delete mode 100644 readme.txt

diff --git a/readme.md b/readme.md
new file mode 100644
index 0000000..575000d
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,481 @@
+# ANSICON [![Latest release](http://img.shields.io/github/release/adoxa/ansicon.svg)](https://github.com/adoxa/ansicon/releases)
+
+ANSICON provides ANSI escape sequences for Windows console programs.  It
+provides much the same functionality as `ANSI.SYS` does for MS-DOS.
+
+## Requirements
+
+* 32-bit: Windows 2000 Professional or later (it won't work with NT or 9X).
+* 64-bit: Vista or later (it won't work with XP64).
+
+## Installation
+
+Add `x86`(if your OS is 32-bit) or `x64` (if 64-bit) to your PATH, or copy the
+relevant files to a directory already in the PATH.
+
+Alternatively, use option `-i` (or `-I`, if permitted) to install it
+permanently, by adding an entry to `CMD.EXE`'s AutoRun registry value (current
+user or local machine, respectively).
+
+### Upgrading
+
+- Delete `ANSI.dll`, it has been replaced with `ANSI32.dll`.
+- Delete `ANSI-LLA.exe` and `ANSI-LLW.exe`, they are no longer used.
+- Uninstall a pre-1.50 version and reinstall with this version.
+
+### Uninstalling
+
+Uninstall simply involves closing any programs that are currently using it;
+running with `-u` (and/or `-U`) to remove it from AutoRun, removing the
+directory from PATH, and deleting the files.  No other changes are made
+(although you may have created custom environment variables).
+
+
+## Usage
+
+Running ANSICON with no arguments will start a new instance of the command
+processor (the program defined by the `ComSpec` environment variable, typically
+`CMD.EXE`), or display standard input if it is redirected.  Any argument will be
+treated as a program and its arguments.
+
+Options (case-sensitive):
+
+    -l  Log to `%TEMP%\ansicon.log`.
+
+    -p  Enable the parent process (i.e. the command shell used to run
+        ANSICON) to recognise escapes.
+
+    -m  Set the current (and default) attribute to grey on black
+        (`monochrome`), or the attribute following the `m` (please
+        use `COLOR /?` for attribute values).
+
+    -e  Echo the command line - a space or tab after the `e` is
+        ignored, the remainder is displayed verbatim.
+
+    -E  Like `e`, but no newline is added.
+
+    -t  Display ("type") each file (or standard input if none or the
+        name is `-`) as though they are a single file.
+
+    -T  Display `==> FILE NAME <==`, a blank line (or an error
+        message), the file and another blank line.
+
+For example, to display `file.ans` using black on cyan as the default color:
+
+    ansicon -m30 -t file.ans
+
+The attribute may start with `-` to permanently reverse the foreground and
+background colors (but not when using `-p`).
+
+For example, to use reversed black on white as the default (i.e. white on black,
+with foreground sequences changing the background):
+
+    ansicon -m-f0 -t file.log
+
+If you experience trouble with certain programs, the log may help in finding the
+cause; it can be found at `%TEMP%\ansicon.log`.  A number should follow the `l`:
+
+    0   No logging
+    1   Log process start and end
+    2   Above, plus log modules used by the process
+    3   Above, plus log functions that are hooked
+    4   Log console output (add to any of the above)
+    8   Append to the existing file (add to any of the above)
+    16  Log all imported modules (add to any of the above)
+
+The log option will not work with `-p`; set the environment variable
+`ANSICON_LOG` instead.  The variable is only read once when a new process is
+started; changing it won't affect running processes.  If you identify a module
+that causes problems, add it to the `ANSICON_EXC` environment variable (see
+`ANSICON_API` below, but the extension is required).
+
+E.g.: `ansicon -l5` will start a new command processor, logging every process it
+starts along with their output.
+
+Once installed, the ANSICON environment variable will be created.  This variable
+is of the form `WxH (wxh)`, where `W` & `H` are the width and height of the
+buffer and `w` & `h` are the width and height of the window.  The variable is
+updated whenever a program reads it directly (i.e. as an individual request, not
+as part of the entire environment block).  For example, `set an` will not update
+it, but `echo %ansicon%` will.
+
+Also created is `ANSICON_VER`, which contains the version without the point
+(`1.50` becomes `150`).  This variable does not exist as part of the environment
+block (`set an` will not show it).
+
+If installed, GUI programs will not be hooked.  Either start the program
+directly with `ansicon`, or add it to the `ANSICON_GUI` variable (see
+`ANSICON_API` below).
+
+Using `ansicon` after install will always start with the default attributes,
+restoring the originals on exit; all other programs will use the current
+attributes.  The shift state is always reset for a new process.
+
+The Windows API `WriteFile` and `WriteConsoleA` functions will set the number of
+characters written, not the number of bytes.  When using a multibyte character
+set, this results in a smaller number (since multiple bytes are used to
+represent a single character).  Some programs recognise this as a reduced write
+and will inadvertently repeat previous characters.  If you discover such a
+program, use the `ANSICON_API` environment variable to record it and override
+the API, returning the original byte count.  Ruby (prior to 1.9.3) is an example
+of such a program, so use `set ANSICON_API=ruby` to avoid the repitition.  The
+full syntax is:
+
+    ANSICON_API=[!]program;program;program...
+
+PROGRAM is the name of the program, with no path and extension.  The leading
+exclamation inverts the usage, meaning the API will always be overridden, unless
+the program is in the list.  The variable can be made permanent by going to
+_System Properties_, selecting the _Advanced_ tab (with Vista onwards, this can
+be done by running _"SystemPropertiesAdvanced"_) and clicking _Environment
+Variables_.
+
+
+## Limitations
+
+- The entire console buffer is used, not just the visible window.
+- There's a conflict with NVIDIA's drivers, requiring the setting of the
+  Environment Variable:
+
+        ANSICON_EXC=nvd3d9wrap.dll;nvd3d9wrapx.dll
+
+
+## Sequences
+
+### Recognized Sequences
+
+The following escape sequences are recognised.
+
+    \e]0;titleBEL   Set (xterm) window's title (and icon)
+    \e[21t          Report (xterm) window's title
+    \e[s            Save Cursor
+    \e[u            Restore Cursor
+    \e[#G           CHA Cursor Character Absolute
+    \e[#E           CNL Cursor Next Line
+    \e[#F           CPL Cursor Preceding Line
+    \e[#D           CUB Cursor Left
+    \e[#B           CUD Cursor Down
+    \e[#C           CUF Cursor Right
+    \e[#;#H         CUP Cursor Position
+    \e[#A           CUU Cursor Up
+    \e[#P           DCH Delete Character
+    \e[?25h         DECTCEM DEC Text Cursor Enable Mode (show cursor)
+    \e[?25l         DECTCEM DEC Text Cursor Enable Mode (hide cursor)
+    \e[#M           DL  Delete Line
+    \e[#n           DSR Device Status Report
+    \e[#X           ECH Erase Character
+    \e[#J           ED  Erase In Page
+    \e[#K           EL  Erase In Line
+    \e[#`           HPA Character Position Absolute
+    \e[#j           HPB Character Position Backward
+    \e[#a           HPR Character Position Forward
+    \e[#;#f         HVP Character And Line Position
+    \e[#@           ICH Insert Character
+    \e[#L           IL  Insert Line
+    SI              LS0 Locking-shift Zero (see below)
+    SO              LS1 Locking-shift One
+    \e[#;#;#m       SGR Select Graphic Rendition
+    \e[#d           VPA Line Position Absolute
+    \e[#k           VPB Line Position Backward
+    \e[#e           VPR Line Position Forward
+
+- `\e` represents the escape character (ASCII 27).
+- `#` represents a decimal 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 and underline
+  will set the background intensity; conceal uses background as foreground.
+  See `sequences.txt` for a more complete description.
+
+I make a distinction between `\e[m` and `\e[0;...m`.  Both will restore the
+original foreground/background colors (so `0` should be the first parameter);
+the former will also restore the original bold and underline attributes, whilst
+the latter will explicitly reset them.  The environment variable `ANSICON_DEF`
+can be used to change the default colors (same value as `-m`; setting the
+variable does not change the current colors).
+
+
+### Ignored Sequences
+
+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
+
+This is my interpretation of the set, as shown by
+http://vt100.net/docs/vt220-rm/table2-4.html.
+
+    Char    Unicode Code Point & Name
+    ----    -------------------------
+    _       U+0020  Space (blank)
+    `       U+2666  Black Diamond Suit
+    a       U+2592  Medium Shade
+    b       U+2409  Symbol For Horizontal Tabulation
+    c       U+240C  Symbol For Form Feed
+    d       U+240D  Symbol For Carriage Return
+    e       U+240A  Symbol For Line Feed
+    f       U+00B0  Degree Sign
+    g       U+00B1  Plus-Minus Sign
+    h       U+2424  Symbol For Newline
+    i       U+240B  Symbol For Vertical Tabulation
+    j       U+2518  Box Drawings Light Up And Left
+    k       U+2510  Box Drawings Light Down And Left
+    l       U+250C  Box Drawings Light Down And Right
+    m       U+2514  Box Drawings Light Up And Right
+    n       U+253C  Box Drawings Light Vertical And Horizontal
+    o       U+00AF  Macron (SCAN 1)
+    p       U+25AC  Black Rectangle (SCAN 3)
+    q       U+2500  Box Drawings Light Horizontal (SCAN 5)
+    r       U+005F  Low Line (SCAN 7)
+    s       U+005F  Low Line (SCAN 9)
+    t       U+251C  Box Drawings Light Vertical And Right
+    u       U+2524  Box Drawings Light Vertical And Left
+    v       U+2534  Box Drawings Light Up And Horizontal
+    w       U+252C  Box Drawings Light Down And Horizontal
+    x       U+2502  Box Drawings Light Vertical
+    y       U+2264  Less-Than Or Equal To
+    z       U+2265  Greater-Than Or Equal To
+    {       U+03C0  Greek Small Letter Pi
+    |       U+2260  Not Equal To
+    }       U+00A3  Pound Sign
+    ~       U+00B7  Middle Dot
+
+`G1.txt` is a Unicode file to view the glyphs "externally".  `G1.bat` is a batch
+file (using `x86\ansicon`) to show the glyphs in the console.  The characters
+will appear as they should using Lucida (other than the Symbols), but code page
+will influence them when using a raster font (but of particular interest, 437
+and 850 both show the Box Drawings).
+
+
+## Version History
+
+Legend: `+` added, `-` bug-fixed, `*` changed.
+
+1.66 - 20 September, 2013:
+
+    - fix 32-bit process trying to detect 64-bit process.
+
+1.65 - 4 September, 2013:
+
+    - fix finding 32-bit LoadLibraryW address from 64-bit;
+    - fix \e[K (was using window, not buffer).
+
+1.64 - 2 August, 2013:
+
+    - improved detection of console output.
+
+1.63 - 25 July, 2013:
+
+    - don't write the reset sequence (when it's already installed) if output is
+      redirected.
+
+1.62 - 18 July, 2013:
+
+    - indicate if opening HKLM failed;
+    * removed ANSI-LLW.exe again, properly this time;
+    * add the architecture (32- or 64-bit) to the log.
+
+1.61 - 14 February, 2013:
+
+    * revert back to using ANSI-LLW.exe, as the new method was unreliable.
+
+1.60 - 24 November, 2012:
+
+    * new method to get the 32-bit LoadLibraryW address from 64-bit code.
+      This removes the need for ANSI-LLW.exe, which caused lots of virus
+      warnings, for some reason.
+    - set the code page to display some file names properly;
+    + expand wildcards for -t (ignoring directories and hidden/binary files).
+
+1.53 - 12 June, 2012:
+
+    - fix for multiple simultaneous process creation (e.g. "cl /MP ...").
+
+1.52 - 2 June, 2012:
+
+    + 32-bit processes can inject into 64-bit processes;
+    + implemented \e[39m & \e[49m (set default foreground/background color);
+    + added \e[#X, \e[#`, \e[#a, \e[#d, \e[#e, \[e#j and \e[#k;
+    * changed sequence descriptions to those in ECMA-48, ordered by acronym.
+
+1.51 - 24 February, 2012:
+
+    - fixed installing into a piped/redirected CMD.EXE;
+    - fixed 32-bit process trying to identify a 64-bit process;
+    - ignore version within core API DLL names (now Win8 works);
+    + hook _lwrite & _hwrite (now Silverfrost FTN95 v6.20 works).
+
+1.50 - 14 December, 2011:
+
+    - -u does not imply -p;
+    - return the program's exit code;
+    - -p by itself will not restore original color;
+    - output error messages to stderr;
+    * logging is always available, with various levels; include the pid;
+    * don't automatically hook GUI programs, use 'ansicon' or ANSICON_GUI;
+    * always place first in AutoRun; don't run if already installed;
+    + global reverse video capability;
+    + added ANSICON_VER to provide version/install test;
+    + added ANSICON_EXC to exclude selected modules;
+    + added ANSICON_DEF to explicitly set the default SGM.
+
+1.40 - 1 March, 2011:
+
+    - hook GetProcAddress (now PowerShell works);
+    + add SO/SI, using the DEC Special Graphics Character Set for G1;
+    + add DECTCEM to show/hide the cursor.
+
+1.32 - 22 December, 2010:
+
+    - fixed crash due to NULL lpNumberOfBytesWritten/lpNumberOfCharsWritten;
+    - -p will test the parent process for validity;
+    * hook into GUI processes;
+    + recognise DSR and xterm window title sequences;
+    - fixed MinGW32 binaries (LLW was wrong).
+
+1.31 - 19 November, 2010:
+
+    - fixed multibyte support (no extra junk with UTF-8 files);
+    * provide workaround for API byte/character differences;
+    * fixed potential problem if install path uses Unicode.
+
+1.30 - 7 September, 2010:
+
+    + x64 version.
+
+1.25 - 22 July, 2010:
+
+    - hook LoadLibraryEx (now CScript works);
+    - fixed -i when AutoRun existed, but was empty;
+    + support for Windows 7;
+    + -I (and -U) use HKEY_LOCAL_MACHINE.
+
+1.24 - 7 January, 2010:
+
+    - fix -t and -e when ANSICON was already running;
+    + read standard input if redirected with no arguments, if -t has no
+      files, or if the name is "-" (which also serves as a workaround for
+      programs that don't get hooked, such as CScript).
+
+1.23 - 11 November, 2009:
+
+    - restore hooked functions when unloading;
+    - reverse the "bold" and "underline" settings;
+    * conceal characters by making foreground color same as background.
+
+1.22 - 5 October, 2009:
+
+    - hook LoadLibrary to inject into applications started via association.
+
+1.21 - 23 September, 2009:
+
+    + -i (and -u) option to add (remove) entry to AutoRun value.
+
+1.20 - 21 June, 2009:
+
+    * use another injection method;
+    + create ANSICON environment variable;
+    + -e (and -E) option to echo the command line (without newline);
+    + -t (and -T) option to type (display) files (with file name).
+
+1.15 - 17 May, 2009:
+
+    - fix output corruption for long (over 8192 characters) ANSI strings.
+
+1.14 - 3 April, 2009:
+
+    - fix the test for an empty import section (eg. XCOPY now works).
+
+1.13 - 21 & 27 March, 2009:
+
+    * use a new injection method (to work with DEP);
+    * use Unicode.
+
+1.12 - 9 March, 2009:
+
+    - fix processing child programs (generate a relocatable DLL).
+
+1.11 - 28 February, 2009:
+
+    - fix processing child programs (only use for console executables).
+
+1.10 - 22 February, 2009:
+
+    - fix output corruption (buffer overflow in MyConsoleWriteW);
+    - recognise current screen attributes as current ANSI atrributes;
+    - ignore Ctrl+C and Ctrl+Break;
+    + process child programs.
+
+1.01 - 12 March, 2006:
+
+    * \e[m will restore original color, not set grey on black;
+    + -m option to set default (and initial) color;
+    - restore original color on exit;
+    - disable escape processing when console has disabled processed output;
+    + \e[5m (blink) is the same as \e[4m (underline);
+    - do not conceal control characters (0 to 31).
+
+1.00 - 23 October, 2005:
+
+    + initial release.
+
+
+## Acknowledgments
+
+- Jean-Louis Morel, for his Perl package `Win32::Console::ANSI`.  It provided
+  the basis of `ANSI.dll`.
+
+- Sergey Oblomov (hoopoepg), for Console Manager.  It provided the basis of
+  `ansicon.exe`.
+
+- Anton Bassov's article _"Process-wide API spying - an ultimate hack"_ in _"The
+  Code Project"_.
+
+- Richard Quadling - his persistence in finding bugs has made ANSICON what it is
+  today.
+
+- Dmitry Menshikov, Marko Bozikovic and Philippe Villiers, for their assistance
+  in making the 64-bit version a reality.
+
+- Luis Lavena and the Ruby people for additional improvements.
+
+- Leigh Hebblethwaite for documentation tweaks.
+
+- Vincent Fatica for pointing out `\e[K` was not right.
+
+
+## Contact
+
+mailto:jadoxa@yahoo.com.au  
+http://ansicon.adoxa.vze.com/  
+https://github.com/adoxa/ansicon  
+
+Jason Hood  
+11 Buckle Street  
+North Rockhampton  
+Qld 4701  
+Australia  
+
+
+## Distribution
+
+The original zipfile can be freely distributed, by any means.  However, I would
+like to be informed if it is placed on a CD-ROM (other than an archive
+compilation; permission is granted, I'd just like to know).
+
+Modified versions may be distributed, provided it is indicated as such in the
+version text and a source diff is made available.
+
+In particular, the supplied binaries are freely redistributable.
+
+A formal license (zlib) is available in `LICENSE.txt`.
+
+---
+Copyright 2005-2014 Jason Hood
diff --git a/readme.txt b/readme.txt
deleted file mode 100644
index c088d82..0000000
--- a/readme.txt
+++ /dev/null
@@ -1,465 +0,0 @@
-
-				    ANSICON
-
-			 Copyright 2005-2013 Jason Hood
-
-			    Version 1.66.  Freeware
-
-
-Description
-===========
-
-    ANSICON provides ANSI escape sequences for Windows console programs.  It
-    provides much the same functionality as 'ANSI.SYS' does for MS-DOS.
-
-
-Requirements
-============
-
-    32-bit: Windows 2000 Professional and later (it won't work with NT or 9X).
-    64-bit: Vista and later (it won't work with XP64).
-
-
-Installation
-============
-
-    Add "x86" (if your OS is 32-bit) or "x64" (if 64-bit) to your PATH, or copy
-    the relevant files to a directory already on the PATH.  Alternatively, use
-    option '-i' (or '-I', if permitted) to install it permanently, by adding an
-    entry to CMD.EXE's AutoRun registry value (current user or local machine,
-    respectively).
-
-    Uninstall simply involves closing any programs that are currently using it;
-    running with '-u' (and/or '-U') to remove it from AutoRun; removing the
-    directory from PATH; and deleting the files.  No other changes are made
-    (although you may have also created environment variables).
-
-Upgrading
----------
-
-    Delete ANSI.dll, it has been replaced with ANSI32.dll.
-    Delete ANSI-LLA.exe and ANSI-LLW.exe, they are no longer used.
-    Uninstall a pre-1.50 version and reinstall with this version.
-
-
-Usage
-=====
-
-    Options (case sensitive):
-
-	-l	Log to "%TEMP%\ansicon.log".
-
-	-p	Enable the parent process (i.e. the command shell used to run
-		ANSICON) to recognise escapes.
-
-	-m	Set the current (and default) attribute to grey on black
-		("monochrome"), or the attribute following the 'm' (please
-		use 'COLOR /?' for attribute values).
-
-	-e	Echo the command line - a space or tab after the 'e' is
-		ignored, the remainder is displayed verbatim.
-
-	-E	As above, but no newline is added.
-
-	-t	Display ("type") each file (or standard input if none or the
-		name is "-") as though they are a single file.
-
-	-T	Display "==> FILE NAME <==", a blank line (or an error
-		message), the file and another blank line.
-
-    Running ANSICON with no arguments will start a new instance of the command
-    processor (the program defined by the 'ComSpec' environment variable, typ-
-    ically 'CMD.EXE'), or display standard input if it is redirected.  Any arg-
-    ument will be treated as a program and its arguments.
-    
-    E.g.: 'ansicon -m30 -t file.ans' will display "file.ans" using black on
-    cyan as the default color.
-
-    The attribute may start with '-' to permanently reverse the foreground and
-    background colors (but not when using '-p').  E.g.: 'ansicon -m-f0 -t
-    file.log' will use reversed black on white as the default (i.e. white on
-    black, with foreground sequences changing the background).
-
-    If you experience trouble with certain programs, the log may help in find-
-    ing the cause; it can be found at "%TEMP%\ansicon.log".  A number should
-    follow the 'l':
-
-	0	No logging
-	1	Log process start and end
-	2	Above, plus log modules used by the process
-	3	Above, plus log functions that are hooked
-	4	Log console output (add to any of the above)
-	8	Append to the existing file (add to any of the above)
-       16	Log all imported modules (add to any of the above)
-
-    The log option will not work with '-p'; set the environment variable
-    ANSICON_LOG instead.  The variable is only read once when a new process is
-    started; changing it won't affect running processes.  If you identify a
-    module that causes problems, add it to the ANSICON_EXC environment variable
-    (see ANSICON_API below, but the extension is required).
-
-    E.g.: 'ansicon -l5' will start a new command processor, logging every pro-
-    cess it starts along with their output.
-
-    Once installed, the ANSICON environment variable will be created.  This
-    variable is of the form "WxH (wxh)", where 'W' & 'H' are the width and
-    height of the buffer and 'w' & 'h' are the width and height of the window.
-    The variable is updated whenever a program reads it directly (i.e. as an
-    individual request, not as part of the entire environment block).  For
-    example, 'set an' will not update it, but 'echo %ansicon%' will.  Also
-    created is ANSICON_VER, which contains the version without the point (1.50
-    becomes "150").  This variable does not exist as part of the environment
-    block ('set an' will not show it).
-
-    If installed, GUI programs will not be hooked.  Either start the program
-    directly with 'ansicon', or add it to the ANSICON_GUI variable (see
-    ANSICON_API below).
-
-    Using 'ansicon' after install will always start with the default attrib-
-    utes, restoring the originals on exit; all other programs will use the cur-
-    rent attributes.  The shift state is always reset for a new process.
-
-    The Windows API WriteFile and WriteConsoleA functions will set the number
-    of characters written, not the number of bytes.  When using a multibyte
-    character set, this results in a smaller number (since multiple bytes are
-    used to represent a single character).  Some programs recognise this as a
-    reduced write and will inadvertently repeat previous characters.  If you
-    discover such a program, use the ANSICON_API environment variable to record
-    it and override the API, returning the original byte count.  Ruby (prior to
-    1.9.3) is an example of such a program, so use 'set ANSICON_API=ruby' to
-    avoid the repitition.  The full syntax is:
-
-	ANSICON_API=[!]program;program;program...
-
-    PROGRAM is the name of the program, with no path and extension.  The lead-
-    ing exclamation inverts the usage, meaning the API will always be over-
-    ridden, unless the program is in the list.	The variable can be made perm-
-    anent by going to System Properties, selecting the Advanced tab (with Vista
-    onwards, this can be done by running "SystemPropertiesAdvanced") and click-
-    ing Environment Variables.
-
-
-Sequences Recognised
-====================
-
-    The following escape sequences are recognised.
-
-	\e]0;titleBEL		Set (xterm) window's title (and icon)
-	\e[21t			Report (xterm) window's title
-	\e[s			Save Cursor
-	\e[u			Restore Cursor
-	\e[#G		CHA	Cursor Character Absolute
-	\e[#E		CNL	Cursor Next Line
-	\e[#F		CPL	Cursor Preceding Line
-	\e[#D		CUB	Cursor Left
-	\e[#B		CUD	Cursor Down
-	\e[#C		CUF	Cursor Right
-	\e[#;#H 	CUP	Cursor Position
-	\e[#A		CUU	Cursor Up
-	\e[#P		DCH	Delete Character
-	\e[?25h 	DECTCEM DEC Text Cursor Enable Mode (show cursor)
-	\e[?25l 	DECTCEM DEC Text Cursor Enable Mode (hide cursor)
-	\e[#M		DL	Delete Line
-	\e[#n		DSR	Device Status Report
-	\e[#X		ECH	Erase Character
-	\e[#J		ED	Erase In Page
-	\e[#K		EL	Erase In Line
-	\e[#`		HPA	Character Position Absolute
-	\e[#j		HPB	Character Position Backward
-	\e[#a		HPR	Character Position Forward
-	\e[#;#f 	HVP	Character And Line Position
-	\e[#@		ICH	Insert Character
-	\e[#L		IL	Insert Line
-	SI		LS0	Locking-shift Zero (see below)
-	SO		LS1	Locking-shift One
-	\e[#;#;#m	SGR	Select Graphic Rendition
-	\e[#d		VPA	Line Position Absolute
-	\e[#k		VPB	Line Position Backward
-	\e[#e		VPR	Line Position Forward
-
-    '\e' represents the escape character (ASCII 27); '#' represents a decimal
-    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
-    and underline will set the background intensity; conceal uses background as
-    foreground.  See "sequences.txt" for a more complete description.
-
-    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-
-    meter); the former will also restore the original bold and underline attri-
-    butes, whilst the latter will explicitly reset them.  The environment var-
-    iable ANSICON_DEF can be used to change the default colors (same value as
-    '-m'; setting the variable does not change the current colors).
-
-
-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
-==================================
-
-    This is my interpretation of the set, as shown by
-    http://vt100.net/docs/vt220-rm/table2-4.html.
-
-
-	Char	Unicode Code Point & Name
-	----	-------------------------
-	_	U+0020	Space (blank)
-	`	U+2666	Black Diamond Suit
-	a	U+2592	Medium Shade
-	b	U+2409	Symbol For Horizontal Tabulation
-	c	U+240C	Symbol For Form Feed
-	d	U+240D	Symbol For Carriage Return
-	e	U+240A	Symbol For Line Feed
-	f	U+00B0	Degree Sign
-	g	U+00B1	Plus-Minus Sign
-	h	U+2424	Symbol For Newline
-	i	U+240B	Symbol For Vertical Tabulation
-	j	U+2518	Box Drawings Light Up And Left
-	k	U+2510	Box Drawings Light Down And Left
-	l	U+250C	Box Drawings Light Down And Right
-	m	U+2514	Box Drawings Light Up And Right
-	n	U+253C	Box Drawings Light Vertical And Horizontal
-	o	U+00AF	Macron (SCAN 1)
-	p	U+25AC	Black Rectangle (SCAN 3)
-	q	U+2500	Box Drawings Light Horizontal (SCAN 5)
-	r	U+005F	Low Line (SCAN 7)
-	s	U+005F	Low Line (SCAN 9)
-	t	U+251C	Box Drawings Light Vertical And Right
-	u	U+2524	Box Drawings Light Vertical And Left
-	v	U+2534	Box Drawings Light Up And Horizontal
-	w	U+252C	Box Drawings Light Down And Horizontal
-	x	U+2502	Box Drawings Light Vertical
-	y	U+2264	Less-Than Or Equal To
-	z	U+2265	Greater-Than Or Equal To
-	{	U+03C0	Greek Small Letter Pi
-	|	U+2260	Not Equal To
-	}	U+00A3	Pound Sign
-	~	U+00B7	Middle Dot
-
-    G1.txt is a Unicode file to view the glyphs "externally".  G1.bat is a
-    batch file (using 'x86\ansicon') to show the glyphs in the console.  The
-    characters will appear as they should using Lucida (other than the Sym-
-    bols), but code page will influence them when using a raster font (but of
-    particular interest, 437 and 850 both show the Box Drawings).
-
-
-Limitations
-===========
-
-    The entire console buffer is used, not just the visible window.
-
-    There's a conflict with NVIDIA's drivers, requiring the setting of the
-    Environment Variable:
-
-	ANSICON_EXC=nvd3d9wrap.dll;nvd3d9wrapx.dll
-
-
-Version History
-===============
-
-    Legend: + added, - bug-fixed, * changed.
-
-    1.66 - 20 September, 2013:
-    - fix 32-bit process trying to detect 64-bit process.
-
-    1.65 - 4 September, 2013:
-    - fix finding 32-bit LoadLibraryW address from 64-bit;
-    - fix \e[K (was using window, not buffer).
-
-    1.64 - 2 August, 2013:
-    - improved detection of console output.
-
-    1.63 - 25 July, 2013:
-    - don't write the reset sequence (when it's already installed) if output is
-      redirected.
-
-    1.62 - 18 July, 2013:
-    - indicate if opening HKLM failed;
-    * removed ANSI-LLW.exe again, properly this time;
-    * add the architecture (32- or 64-bit) to the log.
-
-    1.61 - 14 February, 2013:
-    * revert back to using ANSI-LLW.exe, as the new method was unreliable.
-
-    1.60 - 24 November, 2012:
-    * new method to get the 32-bit LoadLibraryW address from 64-bit code.
-      This removes the need for ANSI-LLW.exe, which caused lots of virus
-      warnings, for some reason.
-    - set the code page to display some file names properly;
-    + expand wildcards for -t (ignoring directories and hidden/binary files).
-
-    1.53 - 12 June, 2012:
-    - fix for multiple simultaneous process creation (e.g. "cl /MP ...").
-
-    1.52 - 2 June, 2012:
-    + 32-bit processes can inject into 64-bit processes;
-    + implemented \e[39m & \e[49m (set default foreground/background color);
-    + added \e[#X, \e[#`, \e[#a, \e[#d, \e[#e, \[e#j and \e[#k;
-    * changed sequence descriptions to those in ECMA-48, ordered by acronym.
-
-    1.51 - 24 February, 2012:
-    - fixed installing into a piped/redirected CMD.EXE;
-    - fixed 32-bit process trying to identify a 64-bit process;
-    - ignore version within core API DLL names (now Win8 works);
-    + hook _lwrite & _hwrite (now Silverfrost FTN95 v6.20 works).
-
-    1.50 - 14 December, 2011:
-    - -u does not imply -p;
-    - return the program's exit code;
-    - -p by itself will not restore original color;
-    - output error messages to stderr;
-    * logging is always available, with various levels; include the pid;
-    * don't automatically hook GUI programs, use 'ansicon' or ANSICON_GUI;
-    * always place first in AutoRun; don't run if already installed;
-    + global reverse video capability;
-    + added ANSICON_VER to provide version/install test;
-    + added ANSICON_EXC to exclude selected modules;
-    + added ANSICON_DEF to explicitly set the default SGM.
-
-    1.40 - 1 March, 2011:
-    - hook GetProcAddress (now PowerShell works);
-    + add SO/SI, using the DEC Special Graphics Character Set for G1;
-    + add DECTCEM to show/hide the cursor.
-
-    1.32 - 22 December, 2010:
-    - fixed crash due to NULL lpNumberOfBytesWritten/lpNumberOfCharsWritten;
-    - -p will test the parent process for validity;
-    * hook into GUI processes;
-    + recognise DSR and xterm window title sequences;
-    - fixed MinGW32 binaries (LLW was wrong).
-
-    1.31 - 19 November, 2010:
-    - fixed multibyte support (no extra junk with UTF-8 files);
-    * provide workaround for API byte/character differences;
-    * fixed potential problem if install path uses Unicode.
-
-    1.30 - 7 September, 2010:
-    + x64 version.
-
-    1.25 - 22 July, 2010:
-    - hook LoadLibraryEx (now CScript works);
-    - fixed -i when AutoRun existed, but was empty;
-    + support for Windows 7;
-    + -I (and -U) use HKEY_LOCAL_MACHINE.
-
-    1.24 - 7 January, 2010:
-    - fix -t and -e when ANSICON was already running;
-    + read standard input if redirected with no arguments, if -t has no
-      files, or if the name is "-" (which also serves as a workaround for
-      programs that don't get hooked, such as CScript).
-
-    1.23 - 11 November, 2009:
-    - restore hooked functions when unloading;
-    - reverse the "bold" and "underline" settings;
-    * conceal characters by making foreground color same as background.
-
-    1.22 - 5 October, 2009:
-    - hook LoadLibrary to inject into applications started via association.
-
-    1.21 - 23 September, 2009:
-    + -i (and -u) option to add (remove) entry to AutoRun value.
-
-    1.20 - 21 June, 2009:
-    * use another injection method;
-    + create ANSICON environment variable;
-    + -e (and -E) option to echo the command line (without newline);
-    + -t (and -T) option to type (display) files (with file name).
-
-    1.15 - 17 May, 2009:
-    - fix output corruption for long (over 8192 characters) ANSI strings.
-
-    1.14 - 3 April, 2009:
-    - fix the test for an empty import section (eg. XCOPY now works).
-
-    1.13 - 21 & 27 March, 2009:
-    * use a new injection method (to work with DEP);
-    * use Unicode.
-
-    1.12 - 9 March, 2009:
-    - fix processing child programs (generate a relocatable DLL).
-
-    1.11 - 28 February, 2009:
-    - fix processing child programs (only use for console executables).
-
-    1.10 - 22 February, 2009:
-    - fix output corruption (buffer overflow in MyConsoleWriteW);
-    - recognise current screen attributes as current ANSI atrributes;
-    - ignore Ctrl+C and Ctrl+Break;
-    + process child programs.
-
-    1.01 - 12 March, 2006:
-    * \e[m will restore original color, not set grey on black;
-    + -m option to set default (and initial) color;
-    - restore original color on exit;
-    - disable escape processing when console has disabled processed output;
-    + \e[5m (blink) is the same as \e[4m (underline);
-    - do not conceal control characters (0 to 31).
-
-    1.00 - 23 October, 2005:
-    + initial release.
-
-
-Acknowledgments
-===============
-
-    Jean-Louis Morel, for his Perl package Win32::Console::ANSI.  It provided
-    the basis of 'ANSI.dll'.
-
-    Sergey Oblomov (hoopoepg), for Console Manager.  It provided the basis of
-    'ansicon.exe'.
-
-    Anton Bassov's article "Process-wide API spying - an ultimate hack" in "The
-    Code Project".
-
-    Richard Quadling - his persistence in finding bugs has made ANSICON what it
-    is today.
-
-    Dmitry Menshikov, Marko Bozikovic and Philippe Villiers, for their assis-
-    tance in making the 64-bit version a reality.
-
-    Luis Lavena and the Ruby people for additional improvements.
-
-    Leigh Hebblethwaite for documentation tweaks.
-
-    Vincent Fatica for pointing out \e[K was not right.
-
-
-Contact
-=======
-
-    mailto:jadoxa@yahoo.com.au
-    http://ansicon.adoxa.vze.com/
-    https://github.com/adoxa/ansicon
-
-    Jason Hood
-    11 Buckle Street
-    North Rockhampton
-    Qld 4701
-    Australia
-
-
-Distribution
-============
-
-    The original zipfile can be freely distributed, by any means.  However, I
-    would like to be informed if it is placed on a CD-ROM (other than an arch-
-    ive compilation; permission is granted, I'd just like to know).  Modified
-    versions may be distributed, provided it is indicated as such in the ver-
-    sion text and a source diff is made available.  In particular, the supplied
-    binaries are freely redistributable.  A formal license (zlib) is available
-    in LICENSE.txt.
-
-
-===============================
-Jason Hood, 20 September, 2013.