Readme and TODO for github with other bits

A .gitignore file

A README.md for github

A working GUNmakefile with proper cleanup that builds both the Linux host and
Windows cross compile at the same time.

An old Windows makefile to call nmake 'correctly'

A TODO file with some minor idea notes
Changes for cross compiling under modern Linux

Uses: GNU C compiler for MinGW-w64 targeting Win32

Tested with the packages gcc-mingw-w64-i686 and mingw-w64-i686-dev under
Debian Linux

Note: rather than creating a new Makefile this steals the cygwin version.
This patch adds ANSI.SYS, SCO Xenix 2.3.2 and a general ANSI emulation.

The SCO Xenix is a well defined but rather old style emulation similar
in many respects to the ANSI.SYS emulation but a bit nicer. The later
SCO Unix variants are far more uncertain as they cover may versions of
SCO Unix where the emulation was changed to maintain or provide minimal
compatibility with other systems.

In the SCO Xenix emulation I have assumed the mapchan(1) facility has
been used to set the default character set to the putty line codepage. So
if your application assumes the mapchan process hasn't been run you will
need to set the line charset to CP437. The ANSI.SYS emulation forces CP437.

echo -e '\e[41"p'     # Set normal PuTTY (xterm) mode.
echo -e '\e[41;1"p'   # Set modern Ansi mode, all available non VT sequences.
echo -e '\e[41;2"p'   # Set ANSI.SYS emulation
echo -e '\e[41;3"p'   # Set SCO Xenix

echo -e '\e[41;4"p'   # Set pure VT52 mode
echo -e '\e[41;5"p'   # Set pure VT220+ mode

These and all the compatibility stuff can be turned off using the compile
option DISABLE_COMPAT. Note, CSI 40;4"p turns off _nearly_ all the CSI
sequences, the exception being 'ESC[41"p'.
The SCO emulation overrides the configured function key definitions.

The SCO Xenix emulation does not have the reverse or graphic attribute
variables. However, I do have full details if these are needed.

In ANSI.SYS mode CSI-J homes cursor.

Some cleanups to the emulation switching.
DEBUG messages for tracing
Reconfigure PuTTY colour scheme from Unix host.

This is possibly related to: /wishlist/colour-scheme.html

These colour schemes are not stored in the PuTTY session file but are
instead "dynamically" configured from the host.

This script can send the required control sequences suitable for any
modern version of PuTTY or the Linux console.

It can calculate several standard forms and contains a default PuTTY
and XTerm mappings. In addition it can extract the colour scheme from
a Windows PuTTY registry dump, a Unix session file and a few other
file types.
Fix support of 256 colour palettes.

PuTTY will now correctly redraw it's window when the system palette
changes. In addition the default colours are now at the start of the
palette given to Windows so it's more likely to choose a good colour
when the user is most interested.
Windows font drawing change.

I've finally given up on using the hDC returned by BeginPaint.
Instead the BeginPaint/EndPaint pair is used to fetch the invalidated
rectangle and tell Windows that it's been validated.

After that we get a proper DC for the entire window and use that for
all the drawing.

This allows us to always update the screen immediatly during the WM_PAINT
message processing and avoid all the bugs in other applications that seem
to trip us when we assume the clip region that BeginPaint sets up is okay.

The end result is that it appears to be much more reliable.

Note, however, we still have the issue that windows is getting slower.
The proportional font update and the do_paint change should help.
Don't let do_paint eat too much CPU
Remove unneeded special case code for proportional fonts.

Proportional fonts used to be too unpredictable to print as strings of
characters because they would frequently spread across multiple cells.
With the change to terminal.c that ensures that text strings will be
completely redrawn when any part is changed this is no longer a problem.

This means that using proportional fonts is now the same speed as fixed
width ones so there's no downside to using a fixed width font that's
stored in a truetype font because it also contains CJK characters.

Prime example is the GNU unifont.

True proportional fonts will now display a little differently, but no
more ugly.