VERSIONS (OLDEST FIRST):
  2011-12-19  Arne Rossius
   * first version for BlinkenLEDs Plus Rev. 3
   * added support for BlinkstroemAdvanced Plus
   * switched from Mega16 to Mega8515
   * reduced frame rate from 112.5 Hz to 100 Hz and sync'ed with 100 Hz ticks
   * changed multiplexing to once per PWM step to increase refresh rate
   * removed BlinkstroemAdvanced compatible mode (~124 Hz instead of 100 Hz)
   * added support for SD card detect switch
   * removed SD card sector buffer because of RAM limitations in Mega8515
   * FAT bugfixes
   * code clean-up
   * more debugging output
  2011-12-23  Arne Rossius
   * Arcade (520 pixels) support for "ArcadeMicro" project
   * changed name from "BlinkenLEDs Plus" to "BlinkenPlus Software"
   * switched to packed framebuffer (2 pixels per byte)
   * FAT and file parsing bugfixes & code clean-up
  2011-12-27  Arne Rossius
   * RAM buffer for stream input (fixes display for very fast streams)
  2012-04-13  Arne Rossius
   * BUGFIX: not all outputs correct for COLUMNS_INVERTED = 0 with 144 pixels
   * BUGFIX: program crashed (stack messed up) on SD card error with DEBUG = 0
   * corrected BS2BIN option for ARCADEMICRO (now set to 0)
   * support for ATmega16 (BLplus Prototype & Rev.1)
   * support for BLplus Rev.1 kit layout error correction
  2012-04-14  Arne Rossius
   * BUGFIX: program hangs after playing BS2.BIN (missing sd_finish_block)
   * BUGFIX: program tried to play empty BS2.BIN (flag set before size check)
  2012-06-12  Arne Rossius
   * BUGFIX: program hangs if BML <data> line too short
   * BUFGIX: BML files with >= 5 bits per pixel displayed only first column
   * added EXPERIMENTAL support for BlinkstroemAdvanced(-Stream) (BSA(-S))
   * changed debugging options, added more debugging output
  2012-09-28  Arne Rossius
   * BUGFIX: swapped JP1 and JP2 for ATmega16 (BlinkenLEDs Plus Rev. 1)
   * replaced undocumented call instructions with rcall (needs patched avra)
   * added support and logo for "TicTacLights" project
   * corrected Mega16 pinout (above) for baudrate jumpers
  2013-03-30  Arne Rossius
   * added support for 20x8 bi-colour matrix display
   * added support for multi-channel (multi-colour) streaming (not for SD card)
   * code and constants clean-up, seperate files for different output drivers
   * added support for ATmega32
  2013-07-20  Arne Rossius
   * added support for Blinkstroem Colour (18x8xRGB display)
   * added support for playing colour animations from SD card (all formats)
   * added support for playing BBM files (Binary Blinken Movie)
   * added OUT_INVERT_ROWS setting (for all output modules)
   * rounding instead of truncating of frame durations for BLM and BML
   * BUGFIX: invalid BML files weren't closed when debugging enabled
   * improved conversion for MCUF streams with 1 or 2 bits per pixel
   * improved conversion for BML files with 5 and 6 bits per pixel
   * moved functions around to avoid "Relative address out of range" errors
   * cleanup of BIN file reader
  2013-12-20  Arne Rossius
   * added Stream Splitter output driver
   * added ARCADE RGB output driver
   * modified BIN file reader to support larger resolutions
   * BUGFIX: lock-up when playing BIN file (introduced in 2013-07-20)
   * BUGFIX: stream never timed out with debugging disabled
   * BUGFIX: output_blinkenlights: fixed reading baud rate jumpers on PORTD
   * BUGFIX: output_20x8-2: added support for inverted rows
   * output_arcade*, output_blinkenlights_rgb: init shift register at start-up
   * output_*: replaced OUT_TIMING_DIV64 option with OUT_TIMING_DIV
   * output_*: removed obsolete OUT_LATCHES option
   * output_20x8-2: added SD card detect input
   * moved common code from output drivers to macro tick_100hz
   * added sreg_backup register instead of pushing SREG during interrupts
  2014-06-23  Arne Rossius
   * BUGFIX: added missing constants for ATmega644 UART
   * output_splitter: added support for vertical splits
   * replaced USE_LEGACY_BAUDRATES with per-project baud rate settings
  2014-12-27  Arne Rossius
   * added support for multiple copies in one controller (for StreamSplitter)
     - EXPERIMENTAL
   * added configuration settings for TicTacLights Colour (no code changes)
   * moved changes into their own file
  2015-01-29  Arne Rossius
   * added missing calls to sd_finish_block to prevent occasional lock-ups
  2015-08-14  Arne Rossius
   * ignore "illegal command" response in SDHC check (assume standard SD)
   * detect FAT type (16 or 32) from boot sector instead of partition type
  2015-11-12  Arne Rossius
   * added configuration settings for BlinkenLEDs Plus Colour (no code changes)
   * removed duplicate label in baudrate selection
  2015-12-28  Arne Rossius
   * correct UART support for BlinkstroemAdvanced and BSA-Stream
   * improved stream-display.pl script
  2016-03-13  Arne Rossius
   * removed stray data near sd_blplus_bbm (no change in functionality)
  2016-09-08  Arne Rossius
   * added BlinkenLights output driver for ATmega128 (BlinkenBadge)
   * added support for TicTacLights Nano
   * added support for flash pages (more than 64 KiB flash)
   * BUGFIX: output_blinkenlights: fixed row turn-off for OUT_INVERT_ROWS = 1
   * BUGFIX: output_blinkenlights: corrupted SREG for OUT_INVERT_ROWS = 1
   * output_blinkenlights: added option to reverse bit order on PORTB
   * output_blinkenlights_rgb: increased turn-off delay (decreased ghosting)
   * new UART reception method allows faster frame rates and uses less RAM
   * replaced OUT_TIMING_DIV option with OUT_T0_DIV containing CS02~CS00 value
   * hex numbers in debug output prefixed with 0x
   * adjustable brightness for scrolling messages on single-channel projects
  2017-11-05  Arne Rossius
   * output_arcade_rgb: added support for ATmega644A (no code changes)
   