From 20020524 on, see the ChangeLog file.

The project is now hosted on http://savannah.gnu.org/projects/uisp/ .

Changes in uisp-20020524:
 - add (GPL) copyright notices to all files, as required before the project
   can be added to savannah.gnu.org (again, thanks to Theodore A. Roth)
 - add preliminary ATmega8515 and ATmega162 support (untested, not yet
   supported by pavr/stk500, just added signature bytes to the list)
 - add a few items to the TODO list :)

Changes in uisp-20020420:
 - add preliminary ATtiny26 and ATmega32 support (untested, not yet
   supported by pavr/stk500)
 - another parallel port programmer (MAXI - http://www.invtech.com.au/),
   thanks to Hamish Moffatt <hamish@cloud.net.au>
 - fix upload/verify of >64K srec/ihex files,
   fix STK500 swapped signature bytes, and
   support case-insensitive AVR device names,
   thanks to Theodore A. Roth <troth@openavr.org>
 - ATtiny15 has a calibration byte, too (was not in an older version of
   the datasheet), thanks to Alexander Popov <sasho@vip.orbitel.bg>

Changes in uisp-20020303:
 - add support for fuse bits with avr910/pavr programmers, and fix NULL
   pointer segfaults with no -dprog, thanks to Bryce Denney <bryce@tlw.com>

Changes in uisp-20011025:
 - DASA2 (aka PonyProg interface) fixes (thanks to Uwe Bonnes):
   AVR RESET# = inverted TXD (so sending BREAK resets the AVR)
   -dinvert=sck,miso,mosi,reset (invert each specified line)
   -dt_reset=N (reset inactive high time in microseconds)
 - add S2/S3 record support necessary for ATmega103 (thanks to Uwe Bonnes)
 - add ATmega64 to the device table (untested)
 - read/write ATmega64/128 extended fuse bits (untested, no pavr support yet)
 - tested on ATmega323 (thanks to Lars Thore W. Aarrestad <ltwa@atmel.com>
   for sending me samples)

Changes in uisp-20011006:
 - add ATmega103-old back (bad sig bytes), these chips still exist :)
 - comment out free(argv_ok) to work around a segfault

Changes in uisp-20010909:
 - add preliminary ATmega8/ATmega16/ATmega128 support based on recently
   released datasheets (not tested, no extended fuse bits, no pavr yet)
 - add support for yet another parallel port cable (DT006)
 - include pavr firmware source (hacked a little by me) as part of uisp
   (should also work in existing old "Atmel low cost" programmers after
   1200 -> 2313 upgrade, assuming the original 1200 was in a socket...)

Changes in uisp-20010818:
 - clear O_NONBLOCK flag with fcntl() instead of re-opening serial ports
   (failed with "Permission denied" on Cygwin, reported by Jason Kyle)
 - enable direct serial support only if TIOCMGET is defined, remove dummy
   TIOCM* defines added for Cygwin port

Changes in uisp-20010813:
 - STK500 support (not yet complete, reverse-engineered communication
   protocol), thanks to Daniel Berntsson <danbe628@student.liu.se>
 - Win9x/ME/NT/2K (Cygwin) port (needs the giveio.sys driver for direct
   I/O port access), thanks to Dean Ferreyra <dferreyra@igc.org>

Changes in uisp-20010805:
 - fix recent termios changes (forgot to clear CRTSCTS and set VMIN, VTIME),
   also now set termios modes for dasa, dasa2 (still untested)
 - rename ATmega32 to ATmega323 (now that the official datasheet is out)
 - accept -dprog=pavr (for now as alias for -dprog=avr910, but may include
   more features in the future, see http://avr.jpk.co.nz/pavr/pavr.html)

Changes in uisp-20010715:
 - rename AVR3 to FBPRG (-dprog=fbprg), as it seems that smartcard
   development boards might have illegal uses in some countries ;)
 - fix avr910 page write for ATmega163 (please test ATmega103 too!)
 - save/restore termios modes on serial ports, please test
 - change -datmel to -dprog=avr910
 - uisp --help now prints to stdout, not stderr
 - change #include <string> to #include <string.h>
 - #include <string.h> in Terminal.C
 - fix -dspeed handling in Serial.C

Changes in uisp-20010701:
 - fix compile with g++ 3.0
 - fix Programming Enable error message after 32 retries
 - add yet another parallel port interface (FBPRG/AVR3)
 - more about --download of=file in uisp --help

Changes in uisp-20010616:
 - hopefully fix serial support (can't test), broken by my 20010211 -dpart
   changes, in code common to both serial and parallel modes that use
   different AVR device names :(
 - CHANGES -> CHANGES.old, README -> CHANGES, TODO
 - document FBPRG interface (not yet supported), and possible new design
   using tables to make adding these new cables easier, in DAPA.C comments

Changes in uisp-20010501:
 - direct serial support: -dlpt=/dev/ttyS0 -dprog=dasa (or dasa2, see help)
   warning: completely untested, might or might not work
 - incompatible change: programmer type (for all these dummy parallel and
   serial programmers) is specified with -dprog=... (-dstk200 etc. is gone)
 - more portability changes (please test especially on non-x86 Linux and
   FreeBSD, and send me patches if I broke something...)
 - fix AT90S2323 signature byte (0x02 not 0x04)
 - increase SCK delay (4us to 5us) for devices with slow RC oscillators
 - don't skip 0xFF for page write
 - fix a few typos
 - remove OLD_DELAY_LOOP
 - longer timeout for -datmel (500ms -> 1s)

Changes in uisp-20010211:
 - now available from http://www.amelek.gda.pl/avr/uisp/ and
   officially maintained by me (many thanks to Uros for all previous work)
 - device type can be specified if auto-detection fails, necessary for
   AT90S1200 and other parts with erased signature bytes: -dpart=at90s1200
 - assume -dno-retry -dno-poll for AT90S1200 (data polling should work
   according to the datasheet, but bug reports indicate it doesn't, and
   1K of program memory doesn't take that long to write anyway...)
 - support for yet another AVR ISP parallel port cable (not tested),
   based on information from http://www.bsdhome.com/avrprog/
 - FreeBSD support (not tested, uncomment -DHAVE_PPI in the Makefile
   and tell me if it works, or send me a patch if it doesn't :)

Changes in uisp-20001216:
 - ATmega163 now supported, and tested (many thanks to Odd Jostein Svendsli
   of Atmel Norway for help - sending me two samples of these new chips)
 - reading Flash and EEPROM contents to a srec file (--download of=file)
 - read/write fuse bits and boot lock bits, read calibration byte (use
   --segment=fuse, address 0 = fuse low, 1 = fuse high, 2 = calibration,
   3 = lock bits: 1 1 BLB12 BLB11 BLB02 BLB01 LB2 LB1)
 - data polling with page write, if supported by device
 - added timer{add,sub,cmp} macros for systems that don't have them
 - security fix, drop privileges before opening the serial device too
   (warning: installation setuid root still not recommended, these are
   just random fixes, and not a complete review for security holes;
   using ppdev instead of direct I/O is highly recommended)

Changes in uisp-20001125:
 - fix a bug where erasing a locked device (not possible to identify)
   might fail, now always wait 200 ms for chip erase
 - add support for "Atmel AVR ISP" parallel port cable
 - various cleanups (duplicated code to report statistics, etc.)

Changes in uisp-20001118:
 - make it possible to compile without direct I/O port access for non-PC
   architectures, but still allow parallel port access via /dev/parportX
   (Linux ppdev driver)
 - include the latest ppdev driver (kernel patch) for Linux 2.2.17
 - security: drop privileges before opening /dev/parportX (only matters
   if accidentally installed setuid root - still not recommended!)
 - data polling statistics reworked: min/avg/max ms/byte (so you can
   compare them with datasheet specs - maybe it helps in detecting chips
   that were programmed too many times)
 - fix a longstanding bug in data polling that caused random programming
   failures (could be worked around by specifying longer t_wd_flash -
   no, that really wasn't the chips failing :)
 - update write timing specs from the current datasheets (flash 8ms -> 4ms
   for most chips, programs a bit faster - now that the above bug is gone)
 - add more device codes for "Atmel low cost" (serial port) programmer
   (still looking for updated avr910.asm - it must exist somewhere, as
   avrprog.exe from AVR Studio claims to support all devices...)
 - started work on fuse bits (not finished yet), will be needed for
   ATmega163 (internal RC oscillator enabled by default)

Changes in uisp-20001014:
 - fix some stupid bugs (SCK delay, writing lock bits)
 - avoid "invalid parameter" errors for -dt_wd_flash etc. if device locked
 - updated help and version information

Changes in uisp-20000930:
 - compiles with g++ 2.95.2 (tested on Debian 2.2), does not depend on
   kernel header files for parallel port bit definitions
 - as in PonyProg, support for the "ppdev" Linux driver (included in
   pre-2.4.0 kernels, available separately for 2.2.x - please bug Alan
   to add it to 2.2.18 :), as well as the old direct I/O port access
   (works with any kernel, but requires root privileges)
 - more reliable delays on very fast machines, using gettimeofday()
   (programming may be very slow on <=486 but should work otherwise)
 - support for more new devices, such as ATmega161 (not tested)
 - support for programming lock bits with --lock option (currently
   only both at the same time, and no ATmega161 BLBxx bits yet)
 - when not programming, try to disable (PS/2) parallel port data outputs -
   this may allow cheap cables (no 74HC244 inside) to work if the ISP pins
   are also used for other things (not tested)
 - removed endian_bug backwards compatibility, various other cleanups

