Version 21 (xx-DEC-2006)
----------

- m8cbscan/: new static connection checker that performs a boundary scan
  through ISSP
- Common.make: VERSION is now a string, not a number
- as/tests/Common: added function "edit" to run sed on _out
- as/tests/Common: added function files_noas to add a file without putting it
  on the command line of m8cas
- Common.make: set YACC to "bison -y" to gain access to extension "YYEMPTY"
  (updated as/tests/redef_undef)
- shared/error.c:set_file: convert empty file names to "<stdin>"
- as/: added support for IF ... ELSE ... ENDIF (as/tests/if, as/tests/if_nest,
  as/tests/if_la, as/tests/if_err)
- as/: added support for MACRO ... ENDM (as/tests/macro, as/tests/macro_nest,
  as/tests/macro_sep, as/tests/macro_if, as/tests/macro_err; updated
  as/tests/sep_cpp)
- as/: added support for INCLUDE (as/tests/include)

Version 20 (5-DEC-2006)
----------

- shared/file.c:read_binary: complained that files of exactly 32 kB were
  already too big
- prog/torture.c: updated and made compile again, now for real
- prog/torture.c: added optional cycles per session argument
- prog/torture.c: added detection of session loss (chip stops responding)
- prog/Makefile: added target torture-static and changed -lssl to -lcrypto
- prog/Makefile: also remove "torture" when cleaning up
- prog/README: updated description of the protocol stack
- prog/README: added a "quick start" section
- shared/util.h: added convenience functions alloc_type_n and realloc_type
- prog/cli.[ch]:prog_close_cli: now has an argument to indicate whether a new
  session will be opened with the same settings
- prog/vector.h:VECTOR_ADDR, VECTOR_DATA: new macros to extract vector
  components
- shared/interact.c:progress: reduced number of characters output for the
  progress bar by a factor of up to 250
- prog/prog_ops.c:ops_write_program: skip blocks containing only zeroes
- prog/drv/*.c: made bit- and vector-level operations structures "static"
- prog/prog_vector.c:vec_vector, prog/prog_bit.[ch]: added new bit-banging
  operation "invert_phase" to invert the SCLK phase when receiving
- prog/drv/watpp.c, prog/drv/watsp.c: added support for phase inversion
- prog/drv/watsp.c: set SDATA only when it changed, reducing the number of I/O
  operations by about 25%
- prog/drv/waspic.c: increased the read timeout from 1 to 5 seconds to allow
  large host-side buffers to drain
- prog/drv/wadsp.[ch]: added driver for the wadsp programmer
- prog/tty.[ch]:tty_discard_input: new function to flush queued-up input
- README: the license is plain GPLv2, no longer with an augmented version (that
  was for the programmer hardware, which has since moved to m8cprogs)
- shared/file.c:read_hex, shared/symmap.c:sym_read_file,
  as/code.c:store_offset, prog/prog_vector.c:prog_vector,
  prog/prog_vector.c:do_prog_acquire_reset, sim/lang.y:read_lvalue,
  sim/lang.y:write_lvalue, sim/lang.y: fixed portability problems with uint32_t
  in printf and sscanf (reported by Mike Moreton)
- Common.make: invocation with TEST32=1 now enables uint32_t portability
  testing for 32 bit platforms (this hack only works with glibc)
- shared/symmap.c:sym_read_file: replaced non-portable %as with %s (based on a
  patch by Mike Moreton)
- Config.make, Makefile: added configuration variable BUILD_LIBPROG to control
  whether to build libprog and things that depend on it, such as m8cprog (based
  on a patch by Mike Moreton)
- Config.make, shared/Makefile, shared/cpp.c: CPP is now set by configration
  variable CPP_COMMAND, which now defaults to "cpp" instead of /lib/cpp (based
  on a patch by Mike Moreton)
- */Makefile: "clean" now removed y.output (by Mike Moreton)
- */Makefile: "spotless" also removes executables with .exe suffix, for Cygwin
  compatibility (by Mike Moreton)
- sim/Makefile, sim/icestubs.c: added support for building m8csim without the
  DIY ICE (by Mike Moreton)
- sim/code.c:m8c_run: breakpoint at interrupt table entry wasn't taken
  (sim/tests/breakint, reported by Mike Moreton)
- as/: added ASSERT directive (as/tests/assert)
- as/: added re-definable local labels, defined e.g., with ".1:", and used
  with ".1b", ".1f", etc. (as/tests/redef_before, as/tests/redef_after,
  as/tests/redef_syntax, as/tests/redef_undef, as/tests/redef_mix,
  as/tests/redef_ext; updated as/tests/reuse_after)
- as/id.c: reusable symbols didn't get removed between files 
  (as/tests/sep_undef_re)
- as/id.c:scrap_reusable: don't make a backup entry if there are no reusable
  labels
- as/tests/sep_undef_re: tests for re-usable and re-definable labels crossing
  file boundaries
- shared/cpp.c:run_cpp: leave cpp_argv and cpp_argc in a state that allows
  reuse
- as/m8cas.c: if using -e with multiple files, set up CPP arguments for each 
  file (as/tests/sep_cpp)
- as/: added special variable "@"  containing the cumulative number of CPUCLK
  cycles of the instructions since the beginning of the program
  (as/tests/cycles)
- Makefile: added target "valgrind" to run the regression tests under valgrind

Version 19 (30-OCT-2006)
----------

- shared/security.[ch]: sanity checks for protection bits
- as/: added support for reading protection bits from flashsecurity.txt
  (as/tests/prot_all, as/tests/prot_hole, as/tests/prot_short,
  as/tests/prot_comment)
- m8cas: new option "-f protection_file" to select Flash protection file
- prog/m8cprog.c:main: added sanity checking for protection bits
- m8cprog: new option "-f protection_file" to set/override Flash protection
- m8cprog: new option "-F mode" to set chip-wide protection mode
- shared/file.c:write_hex: did not write the Extended Linear Address record for
  security data
- prog/ops.c:prog_write_security: always write all protection bits
- prog/ops.c:prog_write_security: pad with 0xAA (R), not 0, and pad all banks
- prog/vector.h:VECTOR_VALUE: limit address and data to 8 bits
- prog/vector.h: removed 8 bit masking from various vectors
- prog/ops.c:prog_write_program: use KEY1 and KEY2 instead of numeric constants
- prog/ops.c:prog_compare_program: if any blocks have been skipped, also
  verify the checksum
- prog/ops.c:prog_read_security: corrected various errors in the handling of
  multiple banks
- m8cprog: -s -s now prints the full block of security data, including normally
  unused bytes
- prog/drv/watpp.c: added calls to "delay_hook" (weak) to allow for external
  speed adjustments
- prog/ice.h: removed unused #include "chips.h"
- prog/prog.[ch]: split into prog_bit.[ch], prog_common.[ch], and
  prog_vector.[ch]
- prog/ops.[ch]: renamed to prog_ops.[ch]
- prog/: streamlined programmer function stack, and added new layers "ops" and
  "prim"
- m8cprog: new option "-O option" to pass options to the driver's "open"
  function
- prog/drv/: updated all drivers for new stack
- prog/drv/dummy.c: dummy driver that simulates Flash through a file
- prog/torture.c: updated and made compile again
- prog/tests/: regression tests for m8cprog and support libraries
- sim/Makefile: removed -t from invocation of yacc, which caused code with a
  warning to be generated

Version 18 (9-OCT-2006)
----------

- sim/sim.c:main: when looking for default.m8csim, searched install directory
  before directory specified with -I
- sim/tests/Common: added ../regs to include path for m8cas
- sim/tests/Common: pass chip name to m8cas, capitalized chip name
- sim/lang.y: removed duplicate definition of TOK_REG
- sim/lang.y: didn't check if there is an ICE when using the "ice" prefix
  (sim/tests/noice)
- prog/drv/watpp.c:watpp_open: COMMIT was done after waiting, not before it,
  thereby violating timings
- as/Makefile: LIBDEP was mis-spelled as LIBDEPS
- shared/file.c:write_hex_record: record length field was always 0x40
- prog/pp.c:pp_close: do PPRELEASE, to avoid complaints from the kernel

Version 17 (7-SEP-2006)
----------

- shared/error.[ch]: moved general portion of as/error.[ch] and as/m8c.l here 
- as/error-as.[ch]: assembler-specific part of previous as/error.[ch]
- shared/backslash.[ch]: moved as/m8c.l:backslash here
- shared/reg2hdrs.pl, shared/regdef.h: dual-banked registers are now flagged
  with PSOC_REG_ADDR_X in "c" mode
- misc/reginfo.c: added support for dual-banked registers
- prog/: new programmer driver operation prog_detach and command line option -D
  to detach from target (currently only supported by watpp)
- prog/cli.[ch]:prog_close_cli: new function to disconnect programmer while
  respecting the -D option
- prog/m8cprog.c: call prog_close_cli at the end (note: changes behaviour,
  target may now be powered down and held in reset, unless using -D)
- shared/chips.c:chip_list: corrected formatting to leave the last column empty
- shared/chips.c:chip_by_name,chip_by_id: simplified curiously awkward return
  logic
- shared/{m8c-registers,reg2hdrs.pl,regdf.h}: moved to new directory regs/
- regs/reg2hdr.pl: added support for chip-specific register definitions
- regs/reg2hdr.pl: allow more whitespace, for compatibility with old CPPs
- regs/m8c-registers: added all missing registers and classified unclassified
  ones
- regs/m8c-register,regs/capabilities: added chip-specific attributes and
  definitions
- shared/Makefile: installed ssc.inc (and not ssh.h) as ssc.h
- misc/reginfo.c: added optional first argument to select the chip
- sim/sim.c: pass default.m8csim through CPP
- sim/core.c:m8c_init: didn't initialize regs[CPU_SCR1].user, causing a crash
  when trying to read CPU_SCR1

Version 16 (2-AUG-2006)
----------

- shared/chips.[ch]: added the CY8C24423A with ID 0x34, not 0x14 as AN2026A
  claims
- shared/m8c-registers: added more registers and organized them by function,
  not address
- shared/m8c-registers, shared/reg2hdrs.pl: register numbers are now in the
  M,Nh format, including x,Nh
- shared/reg2hdrs.pl: renamed "c" mode to "h"
- as/code.c: report first undefined label, not last (as/tests/dundef)
- sim/core.c: setting a page register didn't update the page pointers
  (sim/tests/ppreg)
- sim/tests/ppreg: added tests for direct and indirect access for all page
  modes
- sim/util.h: moved to shared/, and removed as/util.h
- */Makefile: moved dependencies, tests, and the "filelist" target into
  Common.make
- Config.make: moved definition of INSTALL_PREFIX from Common.make
- Makefile: include Config.make instead of Common.make
- misc/reginfo.c: utility to pretty-print register structure and content
- as/README: incorrectly called unary >> "log2", while it's ffs()-1
- sim/: added support for breakpoints (sim/tests/break, sim/tests/unbreak)

Version 15 (5-JUL-2006)
----------

- sim/lang.y: expressions can now be used almost everywhere where numbers are
  expected (sim/tests/symexpr, sim/tests/regreg)
- sim/lang.y: symbols names can be distinguished from keywords by putting them
  in double quotes (sim/tests/symquot)
- shared/m8c-registers: added more registers
- as/: error messages call identifiers now "labels" (updated
  as/tests/reuse_undef, as/tests/reuse_before, as/tests/reuse_after,
  as/tests/blk, as/tests/org)
- as/: the assembler can now process multiple files in one run. Global labels
  are shared among files, while local labels remain local per file.
  (as/tests/sep_local, as/tests/sep_global, as/tests/sep_undef,
  as/tests/sep_mix, as/tests/sep_export; updated as/tests/export)
- prog/drv/watpp.c: cleaned up some debugging code
- prog/: added support for power-on mode, with the command-line option -P
- prog/drv/watpp.c: added support for power-on mode
- as/Makefile, sim/Makefile: $(OBJS) now depend on .depend, like everywhere
  else
- Common.make, */Makefile: dependency generation is now defined in Common.make
- Common.make: dependency generation can now be quiet or verbose
- Common.make: use `...` instead of $(shell ...) to cat VERSION, so that we
  don't get a stray error during top-level make

Version 14 (22-JUN-2006)
----------

- shared/reg2hdrs.pl: register definitions can be spread over multiple lines
- shared/reg2hdrs.pl: register definitions may also contain field values
- shared/reg2hdrs.pl: field and value names can also begin with a digit
- shared/Makefile, sim/Makefile: input of reg2hdrs.pl is now passed through cpp
- shared/m8c-registers: added lots of registers, including those of the two
  column limited analog system
- prog/ice.c: removed unused ice_open and ice_close
- prog/ops.c:prog_identify: made raising CPUCLK to 12 MHz optional
- prog/torture.c, sim/sim.c: use prog_identify without raising CPUCLK
- sim/sim.c: omitting the chip name while loading a program caused a segfault
- sim/Makefile: added dependency on ../prog/libprog.a
- sim/ice.c:ice_write: after a write to CPU_SCR0, either do WAIT-AND-POLL or
  send a zero vector
- sim/ice.c: restart the clock after each register access
- README: clarified copyright of prog/drv/ecb_at91.[ch]
- sim/lang.y:status: also display the next instruction to execute
- as/: new option -m to generate a symbol map file (as/tests/sym_local,
  as/tests/sym_global, as/tests/sym_reuse)
- as/lang.l, as/tests/reuse_global: explicitly catch reusable global labels, to
  avoid version-dependent "syntax error" message from lexer
- as/error.c:set_file: returned a pointer into yytext instead to the malloc'ed
  string
- shared/file.[ch]: header still used called this the "CY8C2" utilities
- shared/symmap.[ch]: new functions to read and use symbol maps generated by
  m8cas
- das/: new option -m to load a symbol map, and to use symbols in disassembled
  code (das/tests/sym_rom, das/tests/sym_ram)
- sim/: new option -m to load a symbol map, to use symbols in disassembled
  code, and to accept symbols as rvalues (sim/tests/symbols)
- as/error.h, sim/sim.h: added __attribute__((format(printf,...
- as/id.c:assign: added three missing arguments to call to lerrorf and made it
  print the current location (as/tests/redefine)
- shared/cpp.c:run_cpp: did not free argv[1]

Version 13 (13-JUN-2006)
----------

- sim/lang.y: added direct register accesses through the ICE, see sim/README
- moved all files describing programmer hardware to a separate package called
  "m8cprogs"
- TODO: still used the old name "cy8c2utils"
- README: corrected the path to COPYING.GPLv2
- renamed the top-level directory from "m8c" to "m8cutils-<version>"

Version 12 (9-JUN-2006)
----------

- prog/drv/ecb_at91.[ch]: added driver for an AT91RM9200-based programmer (by
  Carlos Camargo)
- prog/cli.h and prog/cli.c were missing in m8cutils-11
- sim/lang.y: to drive GPIO pins, the specifcation now has to be prefixed with
  the keyword "drive" (updated sim/README, sim/example/README,
  sim/tests/drive_0, sim/tests/drive_0r, sim/tests/drive_1, sim/tests/drive_1r,
  sim/tests/drive_z, sim/tests/tst_reg, sim/tests/gpioint, sim/tests/bugs8)
- sim/: GPIO pins can now be set with "set <spec> = <value>", similar to how
  "drive" works (sim/tests/set_0, sim/tests/set_1, sim/tests/set_0r,
  sim/tests/set_1r, sim/tests/set_long_r, sim/tests/set_z,
  sim/tests/set_analog)
- sim/: entering a GPIO pin range now also displays the current DMx and DR
  settings, and the ICE status
- sim/gpio.c: also check for interrupts when changing PRTxDR, PRTxDM0, and
  PRTxDM1 (sim/tests/gpiointcfg)
- sim/tests/gpioint: enabled mode 00 test case
- sim/sim.c: if the program argument is omitted, no program is loaded
- sim/sim.c: if using an ICE, the chip is auto-detected, and the name can be
  omitted
- sim/lang.y: new command "printf", to print a message (sim/tests/printf)
- sim/lang.y: new command "sleep", to pause script execution (sim/tests/sleep)
- sim/README: clarified that register and field names are not necessarily
  implemented as #defines
- sim/lang.y: the address operator "&" now also works with ram[...], rom[...],
  and symbolic register names (sim/tests/addrop)
- sim/lang.y: flush stdout after each command, to better synchronize with
  stderr
- {libfdr,shared}/Makefile: make "install" depend on "all", so that "make
  clean" followed by "make install" works

Version 11 (7-JUN-2006)
----------

- prog/drv/watsp.c: added parentheses to macro arguments
- prog/prog.c: moved WAIT-AND-POLL to separate function, for clarity
- prog/cli.[ch]: common parts of command line handling
- prog/m8cprog.c, prog/torture.c, sim/sim.c: now use the common CLI functions
- prog/ops.c:prog_initialize: "exit" if the voltage is not known, don't "abort"
- watpp/: new simple bit-banging programmer for the parallel port
- as/m8c.l: use "[01]" instead of the somewhat pompous "[0-1]"
- as/op.c:make_op: fixed idiot "optimization", which caused evaluation to
  clobber its input (as/tests/evalconst)
- shared/m8c-registers: added VLT_CR and VLT_CMP

Version 10 (7-MAR-2006)
----------

- prog/torture.c: torture-tester for host to target communication
- prog/drv/watsp.c: oops, comment shouldn't claim anymore that it doesn't work
- prog/Makefile: prog.o now depends on drv/*.c, as a feeble attempt to force a
  rebuild when a new driver is added
- prog/Makefile: don't insist on -Werror when doing dependencies
- sim/gpio.c:gpio_ice_disconnect: write gpio->dm2 to PRT0DM2, not PRT0DM1
- sim/gpio.c:gpio_ice_connect: trying to take over the ICE pins is no longer
  punished with a fatal error (if in interactive mode)
- sim/lang.l:yyerrorf: still exit on errors if running a script
- sim/gpio.c:gpio_write_dr: set bits not under ICE control to zero (otherwise,
  writing to PRT1DR[1] would break contact with the ICE)
- tests/ref/main.c: added #include for "chips.h"
- prog/vectors.h: moved SSC-related definitions to shared/ssc.inc
- prog/cy8c2regs.h: merged into shared/m8c-registers
- as/Makefile: moved handling of m8c.inc to shared/Makefile
- sim/: registers.h is now shared/m8c.h
- prog/drv/{waspic,watsp}.c: removed unused #includes
- sim/core.c: arguments to FROM_REG_OP were reversed for "TST reg[expr..." 
  (sim/tests/tst_reg)
- sim/core.c:TST: unexplicably, did a comparison instead of a bit test
  (sim/tests/tst_ram, sim/tests/tst_reg)
- sim/tests/: ASR didn't preserve the MSB (tests/asr)
- sim/tests/: various files were lacking the #!/bin/sh
- sim/tests/: new test cases asl, asr, cmp, cpl, dec, inc, rlc, rrc, swap,
  tst_ram, and tst_reg
- */tests/Common: use 0 if "passed" is not defined, to avoid complaints from
  "expr"
- prog/m8cprog.c: if -r and -c were set, m8cprog would try to read a file
- prog/: added support for retrieving the Flash protection bits (-s) (joint
  work with Dennis Geurts)
- prog/ref/README: added a bit of documentation
- prog/ref/vdecode.pl: made output format nicer and added more constants
- prog/: added support for switching to real-time priority when sending the
  first nine bits of Initialize-1 (option -R)
- prog/proc.c:prog_acquire_reset: new function to acquire the target in reset
  mode, while checking that the Txresinit deadline is met
- prog/prog.h: new programmer operation "acquire", to acquire the target
  without m8cprog trying to enforce correct timing
- prog/prog.c:prog_vector: reduced wait for SDATA to go H before WAIT-AND-POLL
  from 100 us to 10 us

Version 9 (2-MAR-2006)
---------

- Common.make:SLOPPY_PROTOTYPES: added -Wno-strict-prototypes for bison 1.35
  compatibility
- sim/Makefile:LDLIBS: added -lcurses for compatibility with older libraries
- sim/sim.c: added -v to the programmer options
- sim/gpio.c:is_input: also resistive without a strong drive is an input if the
  line is assigned to the ICE
- sim/lang.y:drive_port: moved drive logic to gpio.c:gpio_drive*, making it
  atomic
- sim/lang.y:drive_port: drive value was masked before shifting, not the other
  way around (tests/bugs8)
- sim/core.c: LJMP and LCALL had the byte order wrong plus a weird +3 offset
  (tests/ljmp, tests/lcall)
- sim/core.c: LCALL had the return address off by one
- sim/example/blink.asm: use m8c.inc instead of ../registers.h
- sim/lang.y:run_cycles: moved printing of "HALT to core.c, in order to
  properly distinguish between HALT and timeout (tests/bugs8)
- libfdr/jval.c: removed broken functions jval_iarray, jval_farray, and
  jval_carray
- sim/core.c:m8c_run: split into m8c_check_interrupt, m8c_prep, and m8c_one,
  and handle taking an interrupt like an instruction
- sim/: programs can now be single-stepped with "step"
- sim/lang.l:my_yyinput: don't add empty lines to the history
- sim/lang.l:my_yyinput: a completely empty line now repeats the previous
  input, just like in gdb
- sim/: "run" can now be interrupted with ^C
- sim/: added "quit" command
- sim/sim.c: prog_close is now executed through "atexit"
- {as,sim}/Makefile: print "GENERATE" when making machine-generated sources,
  not the actual command (unless in verbose mode)

Version 8 (1-MAR-2006)
---------

- sim/lang.l: now uses GNU readline to read from a tty
- sim/lang.l:yyerrorf: line numbers are only printed if reading from a non-tty
- all programs now support a -V option to print their version number to
  standard output
- Makefile: global "make tests" now counts the total number of test case
- Makefile: global "make" no longer tries to build optional site-specific items
  like "waspic"
- Common.make, {as,sim}/Makefile: flex- and bison-generated code is now
  compiled without -w
- sim/m8c.c: when writing to a bit field in a register, the old value of the
  register (i.e., the bits not part of the field) was not properly preserved
  (tests/bugs7)
- sim/m8c.c: removed value range checks, since they got in the way of negation
  too easily
- sim/registers: moved to shared/m8c-registers
- sim/reg2simhdr.pl: moved to shared/reg2hdrs.pl
- sim/Makefile: "spotless" target still tried to remove cy8c2sim, not m8csim
- added "make install" and "make uninstall" for installation in
  $(INSTALL_PREFIX)/bin and $(INSTALL_PREFIX)/share/m8cutils/; default
  $(INSTALL_PREFIX) is /usr
- {as,sim}/Makefile
- */Makefile: already "make clean" removes .depend, not only "make spotless"
- sim/m8c.[ch]: renamed to core.[ch]
- sim/Makefile: updated dependencies on registers.h
- sim/sim.c:find_file: segfaulted if the file could not be found (tests/bugs7)
- sim/core.c: offsets of 0x80-0xff operations were off by one (tests/call,
  tests/jmp)
- Makefile: enabled SourceForge upload
- sim/example/: step-by-step usage example for simulator and DIY ICE

Version 7 (28-FEB-2006)
---------

- prog/: voltage now only needs to be known if programming or erasing the
  target
- sim/lang.u: simulation script can now also write to ROM
- sim/lang.y: reg[REGISTER] can now be used as a short-cut for reg[&REGISTER]
- sim/gpio.c: verified that the PRTxDMx change sequence does not cause
  undesirable transitions
- shared/disasm.[ch]:m8c_bytes: array of instruction lengths
- sim/m8c.c: "pc" is now a uint16_t variable and not a pointer, simplifying all
  sorts of calculations, at the price of slightly more complex accesses
- sim/m8c.c: inside the simulator, "ram" is no longer banked
- sim/m8c.c: "cycles" are now real clock cycles, not instructions
- sim/m8c.c: ADD SP,expr affected the flags
- sim/lang.y: the bit field operator can now also be applied to lvalues, but is
  no longer a general operator
- sim/lang.y: value for gpio_drive was incorrectly shifted
- sim/gpio.[ch]: port bits can now be driven resistive and Hi-Z
- sim/gpio.[ch]:gpio_drive_z: removed left-over "bit" argument
- sim/reg2simhdr.pl: now allows duplicate definitions (e.g., INT_CLR2)
- sim/{gpio,int}.[ch]: added interrupt support
- sim/m8c.c: MOV_REG_TO_A didn't "break"
- as/lang.l:yyerrorf: va_start had its arguments in the wrong order
- sim/lang.l: removed unused STRING token
- sim/: no longer uses CPP and is therefore suitable for interactive use
- sim/: register and field definitions now use a new sytax omitting the "#" in
  "#define"

Version 6 (23-FEB-2006)
---------

- as/: added unary >> operator that returns the number of trailing clear bits
- as/lang.l:yyerrorf: didn't initialize "ap", oops
- as/cpp.[ch]: moved to shared/
- prog/libprog.a: new home of all interactions with the programmer that are not
  part of the user interface
- shared/interact.[ch]: new home for all "verbose" and progress reporting items
- cleaned up library inclusion in all Makefiles
- shared/README: moved the cpp.[ch] license, too
- sim/: added a simulator (proof of concept only and certainly full of bugs)
- waspic/: reset also if restarting through start1
- prog/drv/waspic.c: reset target when closing
- prog/drv/watsp.c: reset target and disable output when closing

Version 5 (22-FEB-2006)
---------

- m8cprog: verified that READ_REG(REG_CPU_X) indeed reads CPU register X
- "make" now prints terse message (to obtain the full command text, set V=1)
- waspic/waspic.asm: the first vector now ends in 000 instead of 111 (which was
  incorrect, but didn't seem to have any effect)
- waspic/: added protective resistors to SDATA, SCLK, and XRES
- watsp/: new simple bit-banging programmer for the serial port
- m8cprog: terminal width is now determined at run-time
- m8cprog/vectors.h: moved chip IDs to chips.h
- m8cprog/chips.[ch]: moved to shared/
- das/tests/input: a reference to m8cdasm escaped the great renaming

Version 4 (20-FEB-2006)
---------

- renamed CY8C2 to M8C (package name, cy8c2prog, etc.)
- renamed m8cdasm to m8cdas
- m8cprog: added support for chips with banked Flash (CY8C24x94 and CY8C29xxx);
  UNTESTED !
- shared/file.h: increased sizes to 32 kB Flash
- m8cprog: write security data after reading or comparing
- m8cprog: the INITIALIZE_3 vector must set BDG_TR, not ILO_TR
- m8cprog: as an exception, if there are 128 blocks, CHECKUP_SETUP sets POINTER
  to 0 instead of 0x80
- prog/m8cprog.c: turn off progress bar if verbose > 1
- prog/ref/: tools and data for comparing the vectors against the official
  published reference AN2026A and AN2026B
- m8cas: cleaned up implementation of AREA and made list of attributes optional
- m8cas: added support for overlaid areas
- m8cas: code area is now called "text" and is pre-defined as (ROM, ABS, CON).
- as/tests/{blk,blkw}: updated to use the "text" area

Version 3 (18-FEB-2006)
---------

- prog/tty.[ch]: added functions to access individual lines of the serial port
- prog/: moved drivers to subdirectory prog/drv/
- proc/Makefile: introduced central driver list
- proc/cy8c2prog.c: option -d didn't take an argument, crashing cy8c2prog
- proc/prog.c:prog_vector: was completely broken, now is less so
- m8cas: added support for the AREA directive (with limitations)
- as/tests/{blk,blkw}: updated to use AREA
- m8cas: unary operators caused a segfault
- m8cas: unary - was implemented as ~
- m8cas: hexadecimal numbers in the XXh format were not handled properly

Version 2 (17-FEB-2006)
---------

- prog/cy8c2prog.c: programmer can now also be invoked without any operation,
  in which case it will only establish communication and retrieve the IDs
- prog/cy8c2prog.c: new erase device only option -e
- prog/cy8c2prog.c: new option -z to skip read-protected blocks when reading or
  comparing
- prog/cy8c2prog.c: now also retrieves the silicon revision (experimental)
- prog/cy8c2prog.c: restructured the code
- proc/README: documented that programmers with hard-coded vectors aren't
  supported
- Makefile: didn't stop on errors in subdirectories
- libfdr/: added red-black trees by James S. Plank
- as/: added an assembler (experimental and largely untested)
- dasm/tests/Common: regression tests now print the script name on failure

Version 1 (15-FEB-2006)
---------

- waspic: schematic uses transistor symbols with correct pin information,
  removed BC337.sym and pic16LF88.sym, and updated the READMEs
- waspic: added "project", which guides the operation of gsch2pcb
- prog/Makefile: moved common settings to top-level Common.make, and added
  -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wshadow
  -Werror to CFLAGS
- moved prog/file.[ch] to shared/
- shared/file.[ch]: added support for reading and writing ROM files
- shared/file.c: Intel HEX file records now output with \n, not \r\n, as record
  terminator
- shared/file.c: added full support for security data and cleaned up confusion
  with checksum data
- shared/file.[ch]: program and security data size now has byte granularity,
  and no automatic padding occurs
- cy8c2prog: files are now only padded to full blocks when writing
- cy8c2prog: added support for writing security data
- cy8c2prog: added detection of error codes returned by SSC when reading
- cy8c2prog: new option -i to write an Intel HEX file, changed the default to
  "ROM"
- cy8c2prog: default isn't as silent as README claimed; added option -q to make
  it so (i.e., to suppress progress bars)
- dasm/: added a disassembler
- improved the READMEs a little
- moved prog/TODO to the top level
- prog/vectors.h: some macro arguments lacked parentheses
- added CHANGES (forgot that one, oops)

Version 0 (14-FEB-2006)
---------

- Initial release
