*****************************************************************

               Dynamic C for Rabbit Release Notes

*****************************************************************
*****************************************************************
VERSION 9.25

NEW FEATURES
- Samples, libraries updated and documentation added for the new
  RCM3305 and RCM3315 boards.

BUG FIXES

Library Bugs
- Defect #81461 fixed. SFLASH.LIB's sf_devtable pagebitshift
  value for the AT45DB321 serial flash type has been corrected.
- Defect #81473 fixed. SFLASH.LIB's sfspi_bitrev, sfspi_xbitrev
  functions now explicitly clear b register to zero as required.
- Defect #81475 fixed. In default.h, the ADC, DAC and Ethernet
  options are now properly specified for the BL2000B.

Compiler Bugs
- Defect #81470 fixed. One byte hl-indirect instructions following
  an io prefix instruction require a preceding nop in order to
  function correctly in 2T and 3T 2000 processors. This fix broke
  in version 9.01 by way of simply replacing the instruction by a
  nop. The correct behavior has now been restored.

*****************************************************************
VERSION 9.24

NEW FEATURES
- Samples, libraries updated and documentation added for the new
  RCM3365, RCM3375 boards and development kit.
- Samples, libraries updated and documentation added for the new
  RCM3750 board and development kit.
- Samples (Samples\LowPower\*.c),library (Lib\LOWPOWER.LIB) added
  to demonstrate low power (via run-time selection of lower clock
  rates) capabilities of the Rabbit 3000 CPU.

BUG FIXES

Library Bugs
- Defect #81401 fixed. In NFLASH.LIB nf_initDevice function, the
  correct shadow register address is now used for IBxCR where "x"
  is nonzero.
- Defect #81402 fixed.  In BL25XX.LIB, the low-level anaIn and
  cof_anaIn functions will not hang on stepping direction inputs
  that stabilize at a level different from their initial level.
- Defect #81431 fixed. Realtek power up function now works as
  expected to power Realtek up after power down.

*****************************************************************
VERSION 9.22

BUG FIXES

Library Bugs
- Defect #81424 fixed.  RCM34XX.LIB ADC functions now return the
  proper error code for a timeout (ADTIMEOUT macro value, -4095).

*****************************************************************
VERSION 9.21

NEW FEATURES
- The program samples\tcpip\virtualeth.c demonstrates the
  virtual Ethernet capability introduced in Dynamic C 8.30.

BUG FIXES

TCP/IP Bugs
- Defect #81322 fixed.  SMTP Auth support will now fall back to
  non-authenticated access if authentication fails.  The macro
  SMTP_AUTH_FAIL_IF_NO_AUTH can be defined to return to the old
  behavior.
- Defect #81380 fixed.  For ASIX chipsets, removing the Ethernet
  cable and subsequently sending frames will no longer lock up
  the program.

Other Functional Changes
- VSERIAL.LIB now has support for serial ports E and F.
- The macro SMTP_AUTH_FAIL_IF_NO_AUTH can be defined for
  SMTP.LIB, which will cause the library to not fall back to
  non-authenticated access should authentication fail.
- UDP will now accept datagrams with a source address of
  0.0.0.0.

*****************************************************************
VERSION 9.20

NEW FEATURES
- Samples, libraries, and documentation added for new
  PowerCoreFLEX standard series boards.

BUG FIXES

Library Bugs
- Defect #81304 fixed.  In PART.LIB, format device and create
  partition functions cause a run time exception if not enough
  xmem RAM is available.  Note that this bug was actually fixed
  in Dynamic C v. 9.01.
- Defect #81371 fixed. The RCM2260 was not properly recognized in
  RS232.LIB, PKTDRV.LIB and others.
- Defect #81374 fixed. PART.LIB - Unexpected interrupt while
  running fat_shell.c "format 0" in fast RAM compile mode, or
  system nak on exit afterward.

Debugger Bugs
- Defect #81361 fixed.  Adding a watch expression of more than
  around 240 characters crashes DC.  Note that this bug was
  actually fixed in Dynamic C v. 9.10.

Gui Bugs
- Defect #81193 fixed.  Selecting the first row in the STDIO
  window changes the font size.  Note that this bug was actually
  fixed in Dynamic C v. 9.01.
- Defect #81265 fixed.  Memory dump code/data space options not
  autogreyed out.  Note that this bug was actually fixed in
  Dynamic C v. 9.10.
- Defect #81355 fixed. Compiler messages window wasn't "in focus"
  immediately after messages are generated.
- Defect #81357 fixed.  Can't copy selected text from STDIO
  window.
- Defect #81358 fixed.  Tabs are not always correctly expanded in
  the STDIO window.

*****************************************************************
VERSION 9.10

NEW FEATURES
- PKTDRV.LIB is now optionally controlled by a macro named
  DISABLE_ETHERNET_AUTOCONF, which if #defined in the user's
  program, excludes all ethernet driver's from being
  automatically compiled into the user's code based on board
  type.  Usage of this macro gives other users the option to
  simply turn off automatic selection and compilation of ethernet
  drivers based on board type.

BUG FIXES

Library Bugs
- Defect #81243 fixed.  LP3500 xxxxAlert() functions were not
  using shadow registers and incorrectly using data registers to
  write data.  This defect is actually fixed in 9.01.
- Defect #81244 fixed.  LP3500 missing bitmask value in
  digInAlert() function.  This defect is actually fixed in 9.01.
- Defect #81251 fixed.  powerMode() main oscillator modes fixed,
  now allows debugging at lower baud rates.  This defect is
  actually fixed in 9.01.
- Defect #81285 fixed.  Eliminated RCM37XX brdInit signal pin
  contention between PG2 and IRDA chip.  This defect is actually
  fixed in 9.01.
- Defect #81303 fixed. The region of memory allocated for stacks
  can no longer overlap with other regions allocated via
  xalloc().
- Defect #81324 fixed.  HDLC_PACKET.LIB now supports 1 byte
  packets.
- Defect #81333 fixed.  FAST_RAM_COMPILE mode limits xmem code to
  64 KB less than maximum available.

Compiler Bugs

- Defect #81241. Using a #elif inside a nested block of #if,
  #ifdef, or #ifndef would result in improper conditional
  compilation.
  This defect was actually fixed in Dynamic C 9.01.
- Defect #81315. Duplicate label errors now refer to the
  line where the label was originally defined, not line 1.
- Defect #81316. File and line information were not reported
  correctly for undefined labels in assembly blocks.
- Defect #80881 fixed. Function calls with no corresponding
  prototype incur a warning if the option is checked in the
  gui.
- Defect #80985 fixed. Warning "assigning a value of type
  'char' to 'char *'" and similar warnings are now displayed
  correctly.
- Defect #81128 fixed. Externed arrays without dimension info
  now have correct sizes in the map file.
- Defect #81205 fixed. ximport path error fixed.
- Defect #81302 fixed. Disallowed typedefs to be used as
  offsets in assembly.
- Defect #81307 fixed. Recompilation of BIOS is now forced if
  prior attempts fail.

Gui Bugs
- Defect #81192. Moving the mouse in the Assembly window could
  cause an error.  This defect is actually fixed in 9.01.
- Defect #81201. Print can now be executed from Print preview
  without access violation. This defect is actually fixed in
  9.01.
- Defect #81202. Printing selected text with line numbers and
  syntax highlighting no longer produces incorrect highlighting.
- Defect #81277. Files were sometimes erroneously reported as
  being changed when switching application back to Dynamic C.
- Defect #81278. Print Preview now previews highlighted text
  with the option to print the entire document or a page range.
- Defect #81279. Memory dump characters on the right margin are
  now always printed correctly.
- Defect #81280. The register window now updates differences
  correctly when stepping or stopping at a breakpoint.
- Defect #81281. A program would terminate improperly if tracing
  was enabled and the trace window was closed.
- Defect #81282. The stack window could show some shadow pixels
  in difference updates with some fonts with bold attribute.
- Defect #81286. Execution tracing would only write traces to a
  file as directed in project options if the progam terminates,
  but now writes if the program is ended by the user or by an
  error.
- Defect #81288. The board ID/type in the compiling messages now
  shows correctly after switching boards.
- Defect #81289. Dynamic C will now exit cleanly when project
  file is made read-only.
- Defect #81297. The stdio window caret was not being reset to
  the origin when a program terminated and would start in the
  wrong position when re-running the program.
- Defect #81298. The Environment Options' "Apply Changes to All"
  applied to all open memory dump windows even when unchecked.
- Defect #81299. The number of allowable execution trace
  'Entries:' was initially wrong when opening the Project Options
  dialog.
- Defect #81300. The execution tracing timestamp was not
  synchronized with the start of the trace.
- Defect #81301. The editor window caret is no longer moved after
  a program is compiled and downloaded.  Inspect | Go to
  execution point (Ctrl-E) can be used to move the caret to the
  current execution point.
- Defect #81306. An access violation could occur while stepping
  after making some dump window environment changes to multiple
  dump windows, such as changing colors or fonts.
- Defect #81308. Stepping over a function which contains an
  exception would cause a timeout when execution tracing is
  enabled.
- Defect #81311. Using the execution tracing macro _TRACEON could
  cause a timeout when stepping.
- Defect #81312. Writing memory dump to a file now works
  correctly.
- Defect #81313. The syntax highlighting whitespace color
  selection would persist after changing schemes and reopening
  the Environment Options dialog.
- Defect #81314. The Evauate Expression dialog was clipped when
  using Windows Large Fonts.
- Defect #81319. Persistent breakpoints would not work with stack
  tracing disabled.
- Defect #81325. The Print/Print Preview functions were enabled
  when the stdio window was in focus and an access violation
  would occur if Print or Print Preview were executed. Those
  function are now disabled as in prior versions when the stdio
  window is in focus.
- Defect #81329. The stdio, when empty, can have shaded regions
  from z-order window movements.

Command Line Compiler Bugs
- Defect #81196. Command line compiler prinf now prints string
  literals correctly which contain '%' character. This defect
  is actually fixed in 9.01.
- Defect #81317. Command line compiler programs run on NT would
  not terminate without external stimulus such as opening and
  closing the Task Manager - they would seem to hang even after
  completing.

*****************************************************************
VERSION 9.01

NEW FEATURES
- Execution Tracing - Traces at each statement, each
  function, or customer inserted points. Displays results
  in the Trace window. The options for execution tracing
  are configurable. This feature is disabled by default.
- Stack Tracing - Helps customers find out the path of the
  program at each single step or break point. By looking
  through the stack, it is possible to reconstruct the path
  and allow the customer to easily move backwards in the
  current call tree to get a better feeling for the current
  debugging context.
- Persistent Breakpoints - Persistent breakpoints mean the
  information is retained when transitioning back and forth
  from edit mode to debug mode and when a file is closed and
  re-opened.
- Enhanced Watch Expressions - The Watches window is now a
  tree structure capable of showing struct members. That is,
  all members of a structure become viewable as watch
  expressions when a structure is added, without having to add
  them each separately.
- Enhanced Memory Dumps - Changed data in the Memory Dump
  window is highlighted in reverse video or in customizable
  colors every time you single step in either C or assembly.
- Enhanced Mode Switching - Debug mode can be entered
  without a recompile and download. If the contents of the
  debugged program are edited, Dynamic C prompts for a
  recompile.
- Enhanced Stdio Window - The Stdio window is directly
  searchable.
- Enhanced bookmark support - Bookmark menu items are
  checked when the corresponding bookmark is set, and
  unchecked when the corresponding bookmark is not set.
  When a book mark is set, the menu item also displays
  the line of text as well as the column and line number
  where the bookmark is placed. See Edit | Toggle Bookmark,
  Edit | Goto Bookmark, and Editor window popup menu.
- Samples, libraries, and documentation added for new RCM3360
  and RCM3370 boards equipped with soldered-on and/or socketed
  nand flash devices.  (Note that the RCM3300's Remote
  Application Upload requires serial flash, and so is
  incompatible with the new nand flash equipped RCM3360 and
  RCM3370 boards.)
- Support for SMTP Auth added to SMTP library.
- TCP/IP stack has been reorganized to dramatically reduce
  the amount of root data memory used.  This change frees
  up almost 6k of root data memory, which will allow
  applications which are constrained by root memory (code
  and/or data) to be enhanced.  If the application is
  constrained by available root code space, the definition
  of DATAORG may be increased by one or two pages (4 or
  8k) to allow additional root code functions.  Applications
  which need more root data space can just use the
  additional root data space.
- TCP/IP packet buffers used to default to 10 packets of
  600 bytes each, stored in root data space.  This version
  now defaults to 10 packets of 1536 bytes each, in xmem.
  The xmem buffers are allocated in units of 512 bytes,
  and default to 30 buffers.  These buffers are shared
  amongst the default 10 packets.  The number of packets
  is specified using #define ETH_MAXBUFS.  Each packet
  uses a small amount of root data space (currently 48 bytes
  each).  The data buffers, in xmem, are specified using
  #define PKT_XBUFS to the number of 512-byte chunks desired.
  This defaults to 30. In order to take advantage of the
  larger buffer space available, the default interface
  MTU has been increased to 1500 (from 600).  This
  should produce an immediate performance improvement for
  applications which handle bulk network data.
- TCP/IP stack packet (ethernet) drivers have been
  reorganized so that more than one type of packet driver
  may be included in the same application program.  This is
  to support future products which have more than one
  ethernet interface, or which do not know which ethernet
  device is on-board until runtime.
- POOL.LIB has high-speed allocation/deallocation and
  linked-list handling functions, in addition to the
  previous C implementations.

BUG FIXES

Library Bugs
- Defect #80928 which was fixed in Dynamic C 8.51 involved
  a change in the default value of QD_DIVISOR used in the
  quadrature decoder system.

TCP/IP Bugs
- Defect #81272. Removed unnecessary code that used port G
  for reseting SMSC on RCM3300. Corrected initializations
  for other boards where the DDR register for the reset line
  was prematurely set to output.
- Defect #81191.  The "list variables" command in ZCONSOLE.LIB
  now works again.
- Defect #81220.  The time zone compensation in HTTP.LIB
  is now done correctly.
- Defect #81276.  Some problems with multicasting on ASIX
  and Realtek chipsets have been fixed.
- Defect #81257 fixed. The smsc_writephy function returns
  incorrect values if uC/OS-II is defined. This effects the
  pd_havelink and prt_nicreg functions for the smsc based
  boards (RCM3400 and RCM3300).
- Defect #81258 fixed. Selection variables in RabbitWeb can
  now additionally have guard expressions.

Compiler Bugs
- Defect #81256 fixed.  The PCDR register is no longer set
  to 0x40 at cold boot time, preventing bits 0/2/4/6
  transition on Rabbit 3000 CPUs and bit 6 transition on Rabbit
  2000 CPUs. RabbitBios.c is also updated to prevent start
  up transitions on these bits after hardware reset.  If
  the BIOS's previous transition behavior is desired, add
  _ZW_RESET_PCDR_ALL_ZEROS into the "Options > Project
  Options > Defines" tab.
- Defect #81264 fixed.  Auto "protected" variables allowed
  (but not protected) and local static protected variables
  disallowed.
- Defect #81273 fixed.  Long labels in the assembler (>= 32
  characters) no longer cause odd errors.
- Defect #81261 fixed.  Pointer checking incorrectly reports
  runtime exceptions for battery backed root variables error
  under Code and BIOS in Flash, Run in RAM compile mode.

Command line Compiler Bugs

Debugger Bugs

GUI Bugs

RFU Bugs

Other Functional Changes
- TCP/IP:
  Ping responses are supported up to a maximum of 982 bytes.
  This is a reduction from previous versions, but is
  necessary for reasonable efficiency.  If using a ping
  command from a host such as ping -s 1000 10.10.6.100
  (which specifies 1000 bytes of data) then only the first
  982 bytes will be echoed.  Default ping commands will
  usually only send 56 bytes of data, so this should not
  be a problem in practice.

  The old style of TCP/IP configuration (using MY_IP_ADDRESS,
  MY_NETMASK, etc.) must be slightly modified to work with the
  new packet drivers.  The macro USE_ETHERNET must be defined
  to 1 before the "#use dcrtcp.lib" line.  Also, a warning will
  be issued if the macro TCPCONFIG is not defined.  If you are
  using the old style configuration, TCPCONFIG should be defined
  to 0.  We do, however, recommend migrating to the new style of
  configuration using the TCPCONFIG macro, the TCP_CONFIG.LIB
  library, and the ifconfig() function.

*****************************************************************
VERSION 8.61

Compiler Bugs
- Defect #81224 fixed.  The BIOS is only recompiled when
  necessary.
- Defect #81228.  Duplicate string literals in differents
  scopes may cause the compiler to crash or fail to compile.

TCP/IP Bugs
- Defect #81227 fixed.  A warning is now issued when
  SSPEC_MAX_OPEN is less than HTTP_MAXSERVERS or
  FTP_MAXSERVERS.  Setting SSPEC_MAX_OPEN too low
  (it is 4 by default) causes spurious "404 Not Found"
  errors in the HTTP server when it is under load.
  The "404 Not Found" message in this case has
  also been changed to a "503 Service Unavailable" message.
- Defect #81231 fixed.  Some cases where #web guard
  expressions were not generated correctly have been fixed.

*****************************************************************
VERSION 8.51

NEW FEATURES
- Ethernet Support for RCM3700.
- BOOTP.LIB (BOOTP and DHCP support for TCP/IP) rewritten
  to be non-blocking and support multiple interfaces.
  dhcp_release() and dhcp_acquire() have been deprecated in
  favor of bringing the interface down and up using the
  normal ifconfig() function.  Processing of DHCP options has
  been made more flexible, via a callback function.  Support
  for automatic TFTP download of the boot file has been
  removed since it is too unwieldy for multiple i/f usage.
  Some global variables (such as _survivebootp) have been
  removed. The equivalent functionality is provided via more
  ifconfig() options. DHCP now works as part of the normal
  interface startup, driven via tcp_tick().  It uses fewer
  resources.  In particular, worst-case stack usage has
  dropped to under 1k from over 2k.  Fewer xmem and root data
  resources are required.  No UDP socket is required.
- DNS.LIB enhanced to use facilities of new SERVLIST.LIB.
  SERVLIST manages prioritized lists of IP addresses which
  represent server resources.  In particular, DNS, the name
  resolver, now uses a DNS server list.  This has the benefit
  of being able to mix predefined DNS servers together with
  DNS servers discovered via DHCP or PPP negotiation.
- Support for SSL and HTTPS.
- Added xgetfloat and xsetfloat functions to get and set a
  floating point value in xmem
- Floating point support can be conditionally compiled out
  of stdio.lib by adding #define STDIO_DISABLE_FLOATS to either
  a user program or the Defines tab page in the Project
  Options dialog.  This can save several thousand bytes of
  code space.
- Three new format specifiers have been added to the printf
  family of functions:
   * %ls specifies a NULL terminated string in xmem.
   * %p  specifies a 16-bit logical pointer.
   * %lp specifies a 32-bit physical pointer.
- Support for printing strings longer than 127 bytes has
  been added to stdio.lib.  A new macro,
  STDIO_ENABLE_LONG_STRINGS must be defined in either the user
  program or in the Defines tab page in the Project Options
  dialog (the library does not define this macro by default).
  Special care must be taken in a multi-tasking application
  where different tasks may be printing strings that are
  longer than 128 bytes so that output from different tasks
  is not interleaved in the stdio window.  For instance, a
  semaphore could be used by different tasks in a uC/OS-II
  application that need to print long strings to serialize
  access to printf.
- User can now add serial ports to Serial Port combobox in
  Communications tab of Project Options dialog.
- The command line compiler normally compiles and runs the
  specified source file, but now when the project file
  "Default Compile Mode" is one of the options which compiles
  to a .bin file, the command line compiler will not
  run the program but will compile the source to a .bin file.
- Provides stronger built-in support for certain large sector
  flash devices; in particular, the LS support files from
  tn226.zip are no longer required.  See Tech Note 226 for a
  list of supported flash devices, and a description of the
  limitations of support for LS flash devices.

Command line Compiler
- Defect #80927 fixed.  Help message printed for -b flag was
  incorrect.
- Defect #80972 fixed.  The command line compiler -rf switch
  now reads data correctly for a targetless compile to a file.
- Defect #81050 fixed.  The command line compiler reads
  libraries from a user defined lib.dir file in the project
  file, if one exists.
- Defect #81053 fixed.  The command line compiler now uses
  the files given with the -lf, -bf, -clf and -pbf switches
  correctly.
- Defect #81150 fixed.  The command line compiler will now
  honor the compile mode setting specified in the project file.
- Defect #81158 fixed.  The command line compiler will now
  properly handle a relative given for a project file with
  the -pf switch.

Library Bugs
- Defect #80625 fixed. Corrected parity mode values listed
  in serXParity function descriptions.
- Defect #80637 fixed. Corrected prototype syntax in function
  descriptions for serXparity.
- Defect #80644 fixed. Corrected an incorrect function
  pointer check before calling the con_user_timeout ZConsole
  handler.
- Defect #80776 fixed. Serial TX pins now revert to normal
  outputs when a port is closed.
- Defect #80870 fixed. Corrected long modulus function to
  give correct sign according to ANSI C standard.
- Defect #80873 fixed.  Eliminated apparent duplication caused
  by incorrect calculation of the entry's offset into the
  error log.
- Defect #80888 fixed.  The paddr() function returns the
  correct physical address even when either nybble of SEGSIZE
  contains 0.
- Defect #80906 fixed.  Old flash file system's fs_block_pushxpc
  function sets the correct XPC value in its #asm block.
- Defect #80916 fixed.  Corrected conversion of float values
  in range (LONG_MAX,ULONG_MAX] to unsigned long type.
- Defect #80917 fixed.  Pilot BIOS reliably loads programs
  to supported large and/or nonuniform flash types.
- Defect #80924 fixed.  32-bit protected variables recoverable
  if corrupted by interruption due to power cycle or reset.
- Defect #80928 fixed.  Change creates a limit of 19140 hertz
  on both A and B inputs with a 29.4 Mhz clock.
- Defect #80930 fixed.  Corrected WriteFlashArray function's
  retval assignments in seldom-used conditional code.
- Defect #80940 fixed.  The errlogGetHeaderInfo() "Index last
  exception:" item displays correctly when
  errLogInfo.ExceptionIndexMod wraps back to zero.
- Defect #80948 fixed.  The BIOS's MMIDR_VALUE macro definition
  now shifts the CS1_ALWAYS_ON value into the correct bit
  position.
- Defect #80949 fixed.  The BIOS's special FastRAM_InRAM
  variable is now two bytes, to allow direct ldp write access.
  (NB:  Only the LSB is meaningful.)
- Defect #80952 fixed. MASTER_SERIAL.LIB now handles Auxillary
  I/O use correctly.
- Defect #80976 fixed. PPP now checks for full connect status
  before processing IP packets.
- Defect #80986 fixed.  In RAM_COMPILE mode, RabbitBios.c
  made a subroutine call before the temporary stack was set up.
- Defect #80987 fixed.  A FAST_RAM_COMPILE mode application that
  set a short period WDT time out could lock up in a WDT time out
  reset cycle.  (Also potentially affected FLASH_COMPILE mode if
  the CPU clock was extremely slow.)
- Defect #80991 fixed.  Fast RAM compile mode repeated xalloc
  calls do not fail prematurely.
- Defect #80993 fixed. In PPP.LIB, PAP ACK and PAP NACK packets
  now include message length byte with a value of zero.
- Defect #80994 fixed.  Added automatic support for the 0x20
  sector erase command that is required by supported SST29VFxxx
  flash devices.
- Defect #81002 fixed. Register values changed via the Registers
  window change options are now retained while using separate
  instruction and data spaces.
- Defect #81007 fixed. Corrected integer modulus function to give
  correct sign according to ANSI C standard.
- Defect #81016 fixed.  WriteFlashArray no longer (over)protects
  the last byte before the ID/User Blocks area.
- Defect #81019 fixed.  In separate I&D space, RabbitBios.c's
  interrupt vector, root code #rcodorgs do not collide.
- Defect #81023 fixed. HDLC_PACKET driver now correctly tests
  for bad CRC on incoming packets.
- Defect #81024 fixed.  XMEM.LIB's paddr() result corrected for
  fast RAM compile mode bbram variables.
- Defect #81026 fixed.  In fast RAM compile mode, unreserved
  battery backed memory regions at the top of the /CS1 RAM are
  made available to xalloc.
- Defect #81030 fixed.  Optional user data reserve store no
  longer possibly collides with xmem code.
- Defect #81041 fixed.  XMEM.LIB's paddrDS() result corrected
  in fast RAM compile mode.
- Defect #81043 fixed.  RabbitBios.c preserves the initial GCSR
  value to its reset_status variable in all compile modes.
- Defect #81054 fixed.  In RabbitBios.c, separate I&D space
  flash compile mode 'DATAORG' double subtraction wastes flash
  xmemcode space.
- Defect #81055 fixed.  In RabbitBios.c, separate I&D space
  fast RAM compile mode 'DATAORG' double subtraction possibly
  misplaces FS2 flash file system.
- Defect #81104 fixed.  Now, the default for all compile
  modes when MicroC-OS is not used is a single 4 KB stack.
- Defect #81109 fixed.  FS2.LIB's fs_read_pbuf() function
  preserves the IX register (for use within costates/cofuncs).
- Defect #81124 fixed.  Run in RAM and run in fast RAM
  applications were corrupted by errant flash ID access
  during gflash_setup() and pflash_setup().
- Defect #81125 fixed.  Two-flash cloning works correctly,
  given that each board is equipped with 2*256 KB flashes.
  Note that two-flash cloning of boards equipped with flashes
  of any other size is not supported.
- Defect #81147 fixed.  Control registers for serial ports
  E and F (SECR and SFCR) are initialized to zero.
- Defect #81148 fixed. RN1100 rn_digOutConfig() now saves
  sourcing and sinking safe states correctly on subsequent
  power cycles.
- Defect #81160 fixed. LP35xx.lib digBankOut() writes
  correct values on outputs OUT8 and OUT9.
- Defect #81149 fixed. Preserved register ix in the
  _mosi_driver().
- Defect #81142 fixed.  Changed is_valid_source() to only
  reject address if local_only flag is set.
- Defect #81143 fixed. Functions is_subnet_net_addr()
  and is_subnet_bcast_addr() have been changed to check
  for subnet IP addresses and act accordingly.
- Defect #81144 fixed. Eliminated usage of DNSGlobalLock
  semaphore due to Deadlock issue.
- Defect #81145 fixed. uC/OS - related lock leak fixed in
  resolve_name_start().
- Defect #81165 fixed. Added additional modes of operation
  (2 and 3) to the serMode function
  to avoid conflict with the packet and Rabbitnet drivers.
- Defect #81166 fixed.  Memory devices are explicitly mapped
  before writes occur
  in RabbitBios.c, in particular when ZERO_OUT_STATIC_DATA
  is true.
- Defect #81167 fixed. Packet driver initialization is now
  done prior to igmp initialization, in order to prevent
  packets from being sent before driver init.
- Defect #81143 fixed. is_subnet_bcast_addr() and
  is_subnet_net_addr() modified for support of non-standard
  subnet masks.
- Defect #81146 fixed. Multicasting caused lockup in
  board(s) using the ASIX chip. RMBC1,2 registers cleared
  before aborting remote DMA, as dictated by NE2000 specs.

Debugger Bugs
- Defect #80807 fixed. All breakpoints can now unconditionally
  be reset.
- Defect #80929 fixed. Single stepping over an lcall
  to a debuggable pure assembly function with the
  assembly window open no longer causes stack corruption.
- Defect #80958 fixed. Watch data is now correct for
  a watch that is automatically reloaded at program
  startup and that is set on the address of a local
  static variable where global variables are declared
  between function prototypes and the function in which
  the variable being watched occurs.
- Defect #80963 fixed. Data in af' register is not
  trashed when single stepping at the instruction level
  over a jp f,mn instruction.
- Defect #80988 fixed.  Debugger handles samples that
  use serial ports E and F correctly.  See defect #81147.
- Defect #81152 fixed. Disabling watch expressions in
  GUI now prevents target from allocating space for watch
  code, which can be seen in Information window.

Compiler Bugs
- Defect #80904 fixed.  Data variables are placed beginning
  exactly at the top of the data origin.
- Defect #80923 fixed. On an RCM3200, the BIOS is only
  compiled when necessary, not every time a user program
  is compiled.
- Defect #80944 fixed. When a call cannot be inlined for
  builtin I/O functions, arguments are properly demoted to
  expected type.
- Defect #80951 fixed. Using the interrupt_vector keyword
  with an interrupt vector name of exactly 11 characters
  would cause an internal error
- Defect #80973 fixed. An empty LIB.DIR would cause a GPF.
- Defect #80983 fixed. Dynamic C did not properly handle
  write-protected BIN files.
- Defect #80984 fixed. Variables named "i" or "I" would
  cause strange errors in assembly code
- Defect #81009 fixed.  Dynamic C crashes while compiling
  large xstring table.
- Defect #81018 fixed.  All origin (incl. #rcodorg) collisions
  are now detected and reported.
- Defect #81027 fixed. Short-circuit evaluation for binaray
  operators && and || could generate improper fixups if
  the first operand evaluated to a constant (and thus
  optimizing out the second operand in some cases).
- Defect #81032 fixed. Dynamic C did not properly handle
  function pointers to inline-I/O functions when inline
  I/O was enabled.
- Defect #81033 fixed. When using inline-C return statements
  in #asm blocks within functions, Dynamic C would sometimes
  omit the final return in the function, even though there
  was valid code between the return statement and the end
  of the function.
- Defect #81035 fixed.  Large xdata and xstring tables are
  no longer truncated to modulo 64 KB.

TCP/IP Bugs
- Defect #80817 fixed. Long PPP send/expect sequences do
  not cause overflow of string buffer - new chat.lib
  implementation.
- Defect #80849 fixed. PPP works with separate I&D space
  enabled.
- Defect #80880 fixed. TCP socket data handler does not
  get zerod out when socket re-opened.  Data handler field
  is persistent.
- Defect #81138 fixed. HTTP server no longer gets stuck
  in closing state for the timeout period when long header
  lines are received.
- Defect #81141 fixed. Filling the ARP cache can no longer
  disable sending information to remote networks.
- Defect #81153 fixed. TCP/IP samples with active opens now
  properly wait for the interface to come up.
- Defect #81155 fixed. arpresolve_start_iface() now checks
  the ip_iface() return value correctly.
- Defect #81161 fixed. Some CGI-related HTTP samples were
  not working correctly with Mozilla.
- Defect #81164 fixed. Multicast can now be used without
  IGMP support.
- Defect #81172 fixed. DHCP support in ZConsole.lib is
  now fixed.
- Defect #81175 fixed. The IFG_DHCP option in ifconfig()
  now works correctly.

GUI Bugs
- Defect #80956 fixed. Pasting of text with tabs now handles
  eol and caret placement correctly.
- Defect #80964 fixed. Detection of library files prior to
  compilation now works for libraries given an absolute path
  in lib.dir
- Defect #80970 fixed. Cut, copy and paste now work in the
  Evaluate Expression dialog
- Defect #80971 fixed. The combo box drop-down lists in the
  Add Watch and Evaluate Expression dialogs are now updated
  correctly.
- Defect #80978 fixed.  Using function help (Ctrl-H) after
  modifying a library no longer causes a copile to fail.
- Defect #80979 fixed.  Function help now always shows the
  function description at the correct starting point after
  modifying the library of that function.
- Defect #80981 fixed. Grepping text in non ASCII files can
  no longer cause Dynamic C to terminate.
- Defect #80982 fixed. Targetless compilation selections now
  correctly update the Project Options dialog when switching
  projects.
- Defect #80999 fixed. Edit | Go to Line Number... will now
  always scroll when necessary to put the selected line and
  caret in view.
- Defect #81006 fixed. All changes to the Project Options
  dialog which require the BIOS to be recompiled now trigger
  a BIOS recompile.
- Defect #81036 fixed. Message window can now be moved while
  downloading program to RabbitLink.
- Defect #81044 fixed. Entering an address into the address
  field of the memory dump window now puts the main part of
  the window in focus for keyboard scrolling.
- Defect #81049 fixed. The Center Bookmarks checkbox of the
  Editor tab in the Environment Options dialog now reflects
  its current functionality.
- Defect #81051 fixed. The editor margin now shows all pen
  styles correctly when pen width is 1.
- Defect #81052 fixed. Changing the editor margin position
  in the Environment Options dialog would error if the field
   was blank.
- Defect #81056 fixed. All legal tab stop values can now
  be set in the Environment Option dialog without error.
- Defect #81057 fixed.  The clock cycle sum in the Assembly
  window is now removed immediately after disabling the sum
  clock cycles option.
- Defect #81058 fixed.  The editor syntax highlighting now
  handles all foreground and background changes correctly.
- Defect #81059 fixed.  "Dump' has been removed from the
  'Open selected' options in the Debug Windows tab of the
  Environment Options dialog.
- Defect #81060 fixed.  In the Debug Windows tab of the
  Environment Options dialog, the 'Show Toolbar' option for
  the Memory Dump window is now applied to all open
  dump windows if the 'Apply changes to all' option is checked.
- Defect #81062 fixed. The Stdio window was handling printf
  tabs incorrectly for capacity outputs when Columns exceeded
  Rows configured in Environment Options.
- Defect #81065 fixed. In the Debug Windows tab of the
  Environment Options dialog, The Show Source and Show
  File Name in Source Line options show the correct states.
- Defect #81066 fixed. The "Show tool bar" option of Memory
  Dump Winow preferences in the Environment Options dialog
  now affects all open memory dump windows if the
  "Apply changes to all" option is checked.
- Defect #81067 fixed. Print and Print Preview now display
  all fonts properly.
- Defect #81068 fixed. Print Preview 2 page mode can now
  zoom/drag either page.
- Defect #81069 fixed. Print Preview now truncates all
  lines properly for any Print/Alerts settings when Wrap
  Lines is diabled.
- Defect #81070 fixed. Clock cycle sums for any line
  selections.
- Defect #81072 fixed. Multiple Memory Dump windows can now
  be opened and closed without error.
- Defect #81074 fixed. A mousedown then mouseup on the last
  toolbutton of a consolidated toolbar while configuring
  toolbars no longer produces an error.
- Defect #81075 fixed. The control holding toolbars under
  the menu now becomes invisible when all toolbars are
  unchecked and visible when any are checked.
- Defect #81082 fixed.  Syntax highlighting now works for
  the "xstring" keyword.
- Defect #81084 fixed. The grep utility now always exits
  cleanly.
- Defect #81089 fixed. The Project Options dialog edit
  windows for max errors and max warnings now limit entries
  properly.
- Defect #81090 fixed. The spin edit controls in the Project
  Options dialog now all work as expected, such as for 'Max
  watch expressions' in the Debugger tab.
- Defect #81092 fixed. Permanent deletion of custom targetless
  compile board configurations in the Project Options dialog
  now works properly.
- Defect #81095 fixed. Function help (Ctrl-H) can no longer
  cause an access violation by prepending spaces to the /* START
  FUNCTION DESCRIPTION *** for that function.
- Defect #81097 fixed. RTI files opened in the Targetless tab of
  the Project Options dialog now correctly reads user defined
  board ID numbers.
- Defect #81100 fixed. Rapidly pressing keys or holding down a
  key no longer causes problems to programs with I/O intensive
  loops such as demo3.c.
- Defect #81108 fixed. The Replace occurrence message box
  generated by the Search and Replace dialog now comes up where
  it was last positioned after initial showing.
- Defect #81112 fixed. Assembly window options modified in the
  Debug Options tab of the Environment Options dialog now revert
  if the dialog is cancelled.
- Defect #81113 fixed. The watch window can now be updated
  when a program is in run mode and the stop button (Ctrl-Q)
  now works when in a getchar() loop.
- Defect #81117 fixed. The foreground (font) color can now be
  changed for non-syntax edit windows, in the Display tab of
  the Environment Options dialog.
- Defect #81118 fixed. Changing the Background Edit Mode color
  in the Display tab of the Environment Options dialog now
  updates the default Background colors on the Syntax Colors tab.
- Defect #81119 fixed. Dynamic C no longer crashes when rapidly
  changing the "Show Source" option in disassembly window.
- Defect #81122 fixed.  Inline I/O optimization of function
  parameter passed into BitWrPortI is now handled correctly.
- Defect #81177 fixed.  Edit Properties dialog bugs fixed.
  Center Bookmarks on the Editor now retains checked state,
  Code Template changes are discarded if the dialog is cancelled,
  and Syntax Color defaults are now relative to the last scheme
  loaded.

RFU Bugs
- Defect #80806 fixed. The RFU no longer reqires write access to
  the drive from which it is executing and can be run from CD.
  This fix has been implemented since version 7.26.

Other Functional Changes
- Existing FTP server programs must now define the macro
  SSPEC_NO_STATIC.  This is due to changes in the underlying
  ZSERVER.LIB that makes its handling of the HTTP and FTP
  servers more uniform.  In particular, it is now possible to
  create a static resource table for the FTP server as well
  as the HTTP server. SSPEC_NO_STATIC indicates that the user
  is not creating a static resource table.
- The macro SSPEC_NO_STATIC is an alias for the old macro
  HTTP_NO_FLASHSPEC.

*****************************************************************
VERSION 8.30-B

LIBRARY BUGS
- Defect 81081 fixed. ZCONSOLE.LIB has been updated to
  reflect DNS-related changes.


VERSION 8.30

NEW FEATURES
- DHCP rewritten to be better integrated into the TCP/IP
  library suite. You can now use DHCP with multiple interfaces.
  When you bring the interface up and down, DHCP is
  automatically applied.  There are more ifconfig() options
  for setting DHCP parameters and less reliance on global
  variables.  For full details, see the library description
  at the top of lib\tcpip\bootp.lib.  The main feature of
  the old implementation which is no longer supported is
  the ability to "automatically" download a boot file using
  TFTP.  TFTP is still usable for this purpose, however
  DHCP will not do it for you.
- You can now define multiple home IP addresses on an
  ethernet interface by defining the macro VIRTUAL_ETH
  to the number of additional home addresses.  You also
  need to call the virtual_eth() function at runtime to
  define the new home addresses.  See the documentation for
  virtual_eth() for more details.
- New function send_ping_iface() to send an ICMP echo request
  on a specified network interface.
- New function aton2() for better parsing of dotted decimal
  IP address strings.
- Added IFS_NAMESERVER_DEL option for ifconfig() to remove
  nameserver entries.
- The samples\tcpip\dhcp.c sample program now demonstrates
  a lot of tcp/ip functionality

Compiler Bugs
- Defect #81025 fixed. Multiple root bouncer stubs were being
  generated for pointers to xmem functions.


TCP/IP Bugs
- Defect #80828 fixed.  DHCP problem, no longer relevant with
  new DHCP implementation.
- Defect #80942 fixed.  Bootfile download has been defeatured
  from DHCP.
- Defect #80953 fixed. In ZServer forms, null termination is
  no longer off-by-one for updating string variables.
- Defect #81021 fixed.  sock_abort() now reliably sends TCP
  RST flag.

GUI Bugs

Library Bugs
- Defect #81029 fixed.  Problem with serial port A in separate
  I&D space.
- Defect #81031 fixed.  No longer getting intermittent results
  when reading RN1100 digital inputs.
- Defect #81064 fixed. For the Targetless Pulldown, the SRAM size
  is now correct for the RCM3610 and RCM3710 boards.
- Defect 81071 fixed.  Boardtype for RCM3410 now corrected.
*****************************************************************
VERSION 8.20

NEW FEATURES
- Samples, libraries, and documentation added for new
  RCM3600,RCM3610,RCM3700 and RCM3710 boards.

Compiler Bugs
- Defect #80975 fixed.  Modifying libraries and using function
  help can cause GPFs in program compilation.

TCP/IP Bugs

GUI Bugs

Library Bugs
- Defect #81005 fixed.  BIOS compile time unknown dkStackAddress,
  dkReturnAddress symbol errors when debug's instruction single
  stepping is disabled.

*****************************************************************
VERSION 8.10

NEW FEATURES
- Samples, libraries, and documentation for new
  RN1100, RN1200, RN1300 and RN1500 added.

Compiler Bugs
- Defect #80980 fixed.  Datatype sizes reported in
  mapfile were incorrect.

TCP/IP Bugs
- Defect #80965 fixed.  SHTML (SSI-enabled) files
  are no longer corrupted when a short HTML tag is
  followed by another HTML or SSI tag.
- Defect #81001 fixed. RealTek does not auto-negotiate
  between full and half duplex. Added a warning and
  driver changes for RCM3000 and SR9150. See Technical
  Note #237.

GUI Bugs
- Defect #80954 fixed. Printing a file with the
  string "_page" somewhere in the text will no longer
  corrupt the printout.

*****************************************************************
VERSION 8.03

Library Bugs
- Defect #80960 fixed.  BL20xx/BL21xx series boards' User Block
  information (eg:  analog calibration constants) is accessible
  as situated on those boards.

*****************************************************************
VERSION 8.02

NEW FEATURES
- DeviceMate libraries and samples have been added.
- Enhanced inlining of built-in internal I/O functions.
  Now WrPortI can be inlined with any expression as its
  third argument (value).

Compiler Bugs
- Defect #80938 fixed. Arguments that cause fixups to
  be generated when used with inlined built-in internal
  I/O functions no longer overwrite instructions.
- Defect #80944 fixed. When a call cannot be inlined for
  built-in I/O functions, arguments are properly demoted
  to expected type.

Debugger Bugs
- Defect #80935 fixed.  Debug kernel no longer causes
  code corruption when debugging from ram.

GUI Bugs
- Defect #80939 fixed.  Backup files are created when
  a file is compiled (functionality missing since 7.26SE).
  File is created prior to coldbooting the target.

Communication Bugs
- Defect #80947 fixed. Downloading a program via Dynamic C
  to the RabbitLink or ethernet downloads to the RFU
  using Win95, Win98, or WinMe now work correctly.

Library Bugs
- Defect #80936 fixed. Port F handles low baud rates
  correctly.
- Defect #80937 fixed. Incorrect reference to port E
  variable in port F code was removed.

*****************************************************************
VERSION 8.01

IMPORTANT NOTE!

 The default storage class for local variables
 is now auto. You can change this back to
 static by placing #class static at the top
 of your main source file.

NEW FEATURES - Gui

Editor
- Syntax highlighting - customizable via
  Options | Environment Options | Syntax Colors
- Code templates - new templates can be added via
  Options | Environment Options | Code Templates,
  and can be inserted into the editor using either
  ctrl+j or right mouse click | Insert Code Template
- Columnar selection - alt + left mouse button will
  put the editor into column mode
- Bookmarks - shift + ctrl + [0-9] will toggle a book
  mark at the current cursor location.  ctrl + [0-9]
  will return the cursor to that location.
- Many preferences can be set via Options | Environment,
  Options | Editor
- "Open file at cursor" command (on right click pop
  up menu)
- Watch expressions can be evaluated in flyover hints

Grep
- Located under Edit | Find in Files (Grep) allows
  searches to be performed in directories or in all files
  open in Dynamic C.  Regular expressions and specific
  file masks can be used.

Function Lookup
- A tree view of all libraries and all functions (with
  function descriptions) contained in each library has
  been added to the function lookup window.
- An edit button has been added to the function description
  window that opens the library in which the function
  description appears, and positions the cursor at
  the function description.

Debug Windows (General)
- Fonts and colors for debug windows can be set on the
  debug windows tab under  Options | Environment,
  Options | Debug Windows.  Fonts and colors can be set
  on a case  by case basis by choosing the desired window
  name from the window list box. Fonts and colors for the
  current debug window can be applied to all debug windows
  by pressing the "apply settings to all" button.
- Which debug windows open when a program is compiled
  can be specified on the debug windows tab.  Selecting
  "Open last used windows" will make dc8 behave like the
  7.x releases of dc.

Disassembly window
- Each column (address, machine code, opcode, and clock cycle)
  can be resized or completely turned off.
- Source line being disassembled can be shown in the window's
  output
- Clock cycle summation can be disabled.
- Window can use same syntax highlighting scheme as editor
  windows.  If this option is enabled, the font color and
  font size cannot be set via the debug windows tab under
  Options | Environment Options.  The font color and font
  size will only change if the syntax options for the editor
  change.
- A new address can be disassembled via a right click.
- The current execution address can be disassembled via a
  right click.
- A highlighted selection can either be copied to the
  clipboard or saved to a file.

Stdio window
- This window can be set to automatically scroll vertically
  and/or horizontally.
- Output can wrap at a defined column (default to 80)

Register window
- This window retains the current style of output, and adds
  a new view which is selectable either via a right mouse
  click on the window or on the debug windows tab under
  Options | Environment Options.  If the old style is
  selected, it is possible to change register contents by
  right clicking anywhere on the window and selecting
  "Change Register Value(s)". If the new style is selected,
  right clicking on an editable register will bring up a
  menu which allows you to increment or decrement the
  register, or change the contents  by selecting "New
  Register Value...".  Each of the flags can be toggled
  via a right mouse click.

Memory dump window(s)
- Multiple memory dump windows can be active at the same
  time.
- More than 128 bytes can be dumped at once. The dump
  region automatically grows or shrinks as the window
  size changes.
- The Dump at Address dialog box (found under
  Inspect | Dump at Address...) is sensitive to the type
  of input entered into it.  A 16-bit logical address is
  entered as a four digit hex number with an optional
  leading 0x.  A 20-bit physical address is entered as a
  5 digit hex number with an optional leading 0x.
  An xpc:offset style address is entered as a 6 digit hex
  number with a ':' separating the xpc portion from the
  offset portion.
- The Data space and code space radio buttons are only
  visible if the compiler options have been set to enable
  separate instruction and data spaces.
- As the mouse moves over the memory dump window, the byte
  under the cursor preceded by its address is displayed
  in the window caption bar and in a flyover hint. Both of
  these options can be enabled and disabled independently.
- The memory dump window is capable of displaying three
  different types of dumps.  A dump of a logical address
  will result in a 64k scrollable region (0x0000 - 0xffff).
  A dump of a physical address will result in a dump of a
  1M region (0x00000 - 0xfffff).  A dump of an xpc:offset
  address will result in either a 4k, 64k, or 1M dump range
  depending on the option set on the debug windows tab under
  Options | Environment Options.  If a 4k or 64k range is
  selected, the dump window will dump a 4k or 64k chunk of
  memory using the given xpc. If 'Full Range' is selected,
  the window will dump 00:0000 - ff:ffff.  To increment or
  decrement the xpc, use the '+' and '-' buttons located
  below and above the scroll bar. (These buttons are only
  visible for an xpc:offset dump where the range is either
  4k or 64k).
- Each window can be set to update or not update after every
  single step or program pause.
- A dump window can be updated via a right mouse click or
  the button on the windows toolbar.
- The dump window toolbar can be hidden.
- A highlighted selection can either be copied to the
  clipboard or saved to a file.

Watch window
- Watches can be deleted in any order.
- All watches can be deleted at once.
- Evaluation of a watch (without adding it to the watch
  list) has been separated out. Use the 'Evaluate expression'
  button for this functionality.

Toolbars
- By default Dynamic C 8 shows a set of toolbar buttons very
  similar to the 7.x releases. However, the buttons are now
  grouped together by function and separated into individual
  toolbars.  Each toolbar can be repositioned within the main
  control bar, or can be removed  and floated individually.
- The visibility of individual toolbars can be toggled through
  two different means. Right clicking anywhere on the toolbars,
  or choosing Options | Toolbars, will allow for turning on or
  off selected toolbars.
- All toolbars can be shown by right clicking on the toolbars
  and choosing "Show All Buttons" or by choosing
  Options | Toolbars | Show All Buttons.
- The visibility of all toolbars can be toggled by right
  clicking on the toolbars and choosing "View Menu Buttons",
  or by choosing Options | Toolbars | View Menu Buttons.
- All visible buttons can be placed on a single toolbar by
  right clicking on the toolbars and choosing "Consolidate
  visible buttons to one toolbar" or by choosing Options |
  Toolbars | Consolidate visible buttons to one toolbars.
- Toolbars can be customized by right clicking on the toolbars
  and choosing "Customize Button Groups...", or by choosing
  Options | Toolbars | Customize Button Groups....  This will
  bring  up a dialog box showing all available buttons. Any
  button can be dragged out of the dialog and placed onto
  any toolbar in any position.  The same button can appear in
  more than one place if desired.  A button can be removed
  from a toolbar by dragging it away from the toolbar
  and releasing the left mouse button.

Printing
- Printing options are located on the Print/Alerts tab of
  the Environment Options dialog box. These options control the
  options set via the Setup button on this page or via
  File | Print Options.
- A font different than the editor font can be used for printing
- Options include printing a header, footer, numbering pages,
  syntax printing, word wrap, and definable margins.

Other changes
- Reverse find - located on the edit menu, will find the next
  occurrence of the current search string in the opposite
  direction last set in the Find dialog.
- Go to execution point - located on the Inspect menu, will
  bring into focus the current execution point when in debug
  mode.
- Save all - located on the File menu, will save the contents
  of all open editors.
- Compile mode
- Default project source file - located in
  Project Options | Compiler | Advanced Compiler Options,
  will compile the specified source file whenever the F5 or F9
  button is pressed.  If the specified source file is not open,
  it will be opened.  If the specified source file cannot be
  found, an error will occur.  Using this option will allow
  any source file to be focused when a compile is  started.
- Alerts - located in Environment Options | Print / Alerts, will
  cause Dynamic C to flash its icon on the taskbar after a
  successful compile and download if Dynamic C is not the active
  application, beep after a successful compile and download if
  Dynamic C is not the active application, and check the
  contents of open editor windows and prompt if the contents of
  any open files have been modified by an external source.

NEW FEATURES - Compiler
- Assembly list file generation - Located in Project
  Options | Compiler, a list file will be generated (with the
  extension .LST) in the same directory as the program source.
  The list file consists of a complete disassembly of all the
  code that was compiled with the program, including library
  code (a separate list file is generated for the BIOS and its
  associated libraries). The disassembly also includes intermixed
  source lines, with source file and line information.
- #zimport compression - A special form of #ximport, #zimport
  executes an external compression utility to compress input
  files at compile time, before download. Support libraries allow
  for  compressed files to be decompressed on-the-fly. See the
  \samples\zimport sample programs for  more information.
- Inline builtin internal I/O functions - Located in
  Project Options | Compiler, when the box is checked, builtin
  I/O functions (WrPortI, RdPortI, BitWrPortI, BitRdPortI) will
  be inlined if all arguments are constant.
- __lcall__ function prefix. When used in a function definition,
  the __lcall__ function prefix forces long call and return
  (lcall and lret) instructions to be generated for that
  function, even if the function is in root. This allows root
  functions to be able to be safely called from xmem. __lcall__
  has no effect on xmem functions, and use with cofunctions is
  prohibited.
- Mapfiles now include #ximport (and #zimport) information in the
  global/static data section.
- #pragma nowarn - Two forms are allowed that turn off either
  just trivial (warnt) or all (warns) warnings, depending on an
  option passed to the pragma. '#pragma nowarn [warnt/warns]'
  ignores warnings for the next physical line of code only.
  '#pragma nowarn [warnt/warns] start' ignores warnings until the
  '#pragma nowarn end' is encountered. The warnt/warns option
  is not required; if left off, default behavior is warnt.
- Compiler now defaults to storage class auto.

NEW FEATURES - Other
- HTTP.LIB now supports digest authentication.  Digest
  authentication can be enabled by setting
  USE_HTTP_DIGEST_AUTHENTICATION to 1. See the manual
  for more information.
- Feature Request #335 implemented:  You can now have multiple
  users per web page by setting SSPEC_USERSPERRESOURCE and
  using sspec_adduser() and sspec_removeuser().
- FTP_SERVER.LIB can now act as a full FTP server with the
  default handler functions.  Define the macro
  FTP_USE_FS2_HANDLERS to enable this feature.  The macros
  FTP_USERBLOCK_OFFSET and FTP_CREATE_MASK and the functions
  ftp_save_filenames() and ftp_load_filenames() also control
  this functionality.
- HTTP.LIB supports compressed files.  Support is enabled
  automatically if you #use zimport.lib before you #use http.lib.
  #zimported files are automatically detected when referenced in
  the http_flashspec array.  Compressed files added through
  ZSERVER.LIB functions must have the server_mask ORed with
  SERVER_COMPRESSED.  The macro INPUT_COMPRESSION_BUFFERS must be
  at least as large as HTTP_MAXSERVERS.
- The dlm_tcp.c and dlp_tcp.c sample programs now support
  separate I&D space and also support single 512KB split-flash
  operation.

TCP/IP Bugs
- Defect #80820 fixed.  The ASIX packet driver was reading
  from the wrong I/O address in the packet driver.  This
  could cause the ASIX to come up in the wrong duplex or
  glitch port a.
- Defect #80826 fixed.  Random overwrite of memory when DHCP
  packet received.
- Defect #80829 fixed.  SNMP trap messages being set to wrong
  MAC address.
- Defect #80837 fixed.  SMTP servers that send multiple 220
  greeting lines no longer cause the SMTP.LIB client to
  abort sending an email.
- Defect #80842 fixed.  Auto-negotiation is now properly done
  in ASIX.LIB.  This affects the RCM3200 and now allows
  full duplex mode to be negotiated.
- Defect #80843 fixed.  A problem that could potentially cause
  the reception of packets to stop working has been fixed in
  ASIX.LIB.
- Defect #80858 fixed.  SMSC.lib no longer enables the reception
  of all multicast datagrams in the SMSC chip.
- Defect #80859 fixed.  sock_init() on the Realtek no longer
  causes spurious memory writes into xmem or the stack.
- Defect #80861 fixed.  Buffer overflows in the test_cgi()
  function in samples\tcpip\http\cgi.c were fixed.
- Defect #80911 fixed.  sock_gets() will now always wait for a
  line-termination before returning data (as long as space is
  available in the user buffer).
- Defect #80912 fixed.  sock_bytesready() and sock_dataready()
  will always indicate the remaining data when the other side
  closes the connection, even when the last data was not
  line-terminated.
- Defect #80914 fixed.  Raw connections in VSERIAL.LIB now close
  correctly and allow later connections.
- Defect #80920 fixed.  Multi-byte reads with telnet_fastread()
  in VSERIAL.LIB are no longer garbled.
- Defect #80921 fixed.  pd_setup_RCM3200CORE() in ASIX.LIB now
  saves the IX register

Filesystem Bugs
- Defect #80827 fixed.  Filesystem corruption when shifting
  files to zero size after appending multiple of LS size
  bytes to file.
- Defect #80909 fixed.  A 2-flash (DLM, DLP, or USE_2NDFLASH_CODE)
  program that uses FS2 in its first flash won't corrupt the code
  in the second flash.
- Defect #80910 fixed.  2-flash DLP using FS2 in its program
  flash can format/write file system in its non-"ID/User Blocks"
  area.

Compiler Bugs
- Defect #80399 fixed. Single stepping through pure assembly
  functions in library code now works correctly.
- Defect #80455 fixed. Bad stack handling with some
  integer expressions.
- Defect #80616 fixed. The illegal instruction "ld (hl+xx), a"
  now generates an error.
- Defect #80647 fixed. The address of operator (&) did not
  work properly with auto arrays.
- Defect #80652 fixed. An internal buffer limited function
  argument size. Function arguments may now be of unlimited
  size.
- Defect #80660 fixed. Unterminated conditional directives
  (#if, #ifdef, #ifndef, missing a #endif) now generate
  errors.
- Defect #80662 fixed. The GUI now checks for the existence of
  the BIOS before attempting to compile it (in all cases).
  Previously, if the BIOS was missing, Dynamic C could GPF.
- Defect #80690 fixed. Token checking was not suppressed when
  parsing character constants in assembly.
- Defect #80699 fixed. Cosmetic fix to invalid symbol name
  error message. Previously, invalid symbol names would not
  be included in the error message in some cases.
- Defect #80733 fixed. Using "..." as a parameter for indexed
  cofunctions now correctly generates an error.
- Defect #80735 fixed. Assembly macros containing single quotes
  occasionally failed with an incorrect error message.
- Defect #80758 fixed. C++ comments can now span multiple lines
  by using the "\" line continuation character.
- Defect #80761 fixed. The error message for defining a constant
  with #class auto enabled was confusing and incorrect. A new
  error message is now generated for this case.
- Defect #80775 fixed. Array dimensions that were too large were
  incorrectly allowed.
- Defect #80778 fixed. Actually a library bug. Using #useix
  caused the builtin functions BIT, SET, and RES to fail in
  certain circumstances.
- Defect #80782 fixed. Function pointers in xmem with an ximport
  caused watch expressions to occasionally crash the target.
  Improvements to target communication and the debugger in DC 8
  seem to have eliminated the problem.
- Defect #80785 fixed. The extended opcode for "LD HL, (mn)"
  no longer crashes the target when single-stepping.
- Defect #80798 fixed. Root bouncers were not generated for
  #asm xmem functions.
- Defect #80799 fixed. #asm functions could differ in memory
  mapping between the prototype and the definition. This could
  lead to a function marked as xmem in the protoype actually
  being compiled to root - with no warning.
- Defect #80800 fixed. The fix for defect 799 also fixed this
  defect. If the prototype of a #asm function has an "xmem"
  mapping prefix, and the definition is in a block with no
  mapping (default=root), an error is now generated.
- Defect #80803 fixed. Warnings in unrelated initializers can no
  longer prevent a watch expression from being added.
- Defect #80804 fixed. Macros matching register names now
  generate warnings.
- Defect #80811 fixed. The interrupt_vector keyword now works
  globally.
- Defect #80825 fixed. #ximport now works with relative paths
  rather than absolute.
- Defect #80830 fixed. Warning messages occasionally had strange
  line numbers that did not correspond to the program or the
  warning.
- Defect #80831 fixed. (1) Watch expressions for string literals
  now give the actual address of the literal (for strings in the
  program, does not work with constant initializers).
  (2) Function watch expressions now give the xmem address of the
  function, or its bouncer address (if the bouncer exists).
  (3) Errors in watch expressions do not break following valid
  expressions.
- Defect #80832 fixed. As part of the GUI overhaul, the
  information window now only displays info for root constants
  when separate I&D spaces is enabled (root constants do not
  exist in non-separate I&D mode).
- Defect #80835 fixed. The interrupt_vector keyword would
  generate the ISR jump instruction in user code (instead of the
  relay) under Separate I&D with #memmap xmem.
- Defect #80838 fixed. Cross-referential structures now compile.
- Defect #80839 fixed. Structs can now be declared and used to
  define pointers before the definition of the struct itself.
- Defect #80840 fixed. Aggregate member offset incorrect in asm
  code.
- Defect #80844 fixed. The modulus operator no longer allows
  floating point operands in any case.
- Defect #80845 fixed. Character constants are now correctly
  checked for improper octal values.
- Defect #80856 fixed. An off-by-one error in code origin
  checking did not allow code to completely fill an origin.
- Defect #80857 fixed. #xcodorg addresses are now checked and
  converted to xmem range addresses, with a warning. Previously
  this conversion was not done, and improper addresses could
  result in confusing error messages.
- Defect #80862 fixed. A bug related to origin follows handling
  could cause root code to be compiled, but not transmitted to
  the target.
- Defect #80868 fixed. Errors in watch expressions could cause
  the target to crash when a valid expression was entered later.
- Defect #80876 fixed. The compiler will now generate errors if
  #class is compiled with bad, missing, or extra arguments.
- Defect #80878 fixed. Actually a bug with the zcompress.exe
  utility, #zimport would fail if the directory the import file
  (and the program) was in contained spaces in its name. This was
  because the utility did not handle these spaces correctly.
- Defect #80901 fixed. Unnecessary nops generated for parameter
  passing.

Library Bugs
- Defect #80006 fixed.  Run-time math exceptions in watch
  expressions no longer cause target to crash.
- Defect #80721 fixed. HDLCopenX now returns correct value
- Defect #80819 fixed. useClockDivider3000's CLKDIV_8 macro value
  now affects CPU and peripheral clocks equally, consistent with
  other CLKDIV_x macro values.
- Defect #80824 fixed. RFU can load USE_2NDFLASH_CODE program BIN
  file that crosses ID/User Blocks at the top of primary flash.
- Defect #80841 fixed. Pilot BIOS protects appropriate size of
  ID/User Blocks for both mirrored and non-mirrored versions.
- Defect #80846 fixed. Error logging was broken in Compile to
  Flash, Run in RAM, non-Separate I&D mode.
- Defect #80850 fixed. LP35xx.lib. Modified sequence of
  configurations when switching between main oscillator and 32khz
  oscillator in powerMode(). C code converted into assembly code.
- Defect #80851 fixed. Much improved keyboard response when STDIO
  redirected to serial port A.
- Defect #80852 fixed.  The con_put() command in ZConsole.lib
  will now work with files larger than CON_BUF_SIZE (1024
  by default).
- Defect #80854 fixed. Target sometimes gets watchdog reset when
  switching from 32 KHz oscillator to main oscillator.
  LP35xx.lib powerMode() revised to match and useMainOsc()
  removed from brdInit().
- Defect #80855 fixed. The con_createv() command in ZConsole.lib
  now creates INT32 type variables correctly.  Previously, it
  used the value as the format specifier, so that the variable
  always displayed with the original value, even if changed.
- Defect #80864 fixed. Writing to the User Block on supported
  large and/or nonuniform flash types works correctly. NB: The
  user is cautioned that a single  sector erase on these types of
  flash may take up to two seconds, during which time no
  interrupts can be serviced!
- Defect #80874 fixed. LP35xx.lib. Corrected calibration start
  addresses for differential and milli-amp inputs.
- Defect #80875 fixed. RCM34xx.lib. Corrected calibration start
  addresses for differential and milli-amp inputs.
- Defect #80886 fixed. Applications which are compiled to and run
  in RAM and use separate I&D space can map in and write to
  flash.
- Defect #80890 fixed. Assembly level single stepping over a
  relative jump in the e000-e0ff range resulted in bad jump.
- Defect #80891 fixed. Assembly level single stepping over a
  relative jump no longer trashes the af' register.
- Defect #80903 fixed.  INTVEC_BASE and XINTVEC_BASE are now
  correctly located in FAST_RAM_COMPILE mode, with or without
  separate I&D space.
- Defect #80908 fixed.  Debug kernel no longer causes stack
  leakage when single stepping through a ucos program compiled
  for separate I&D.

Gui Bugs
- Defect #80021 fixed. The task bar no longer fails to come up
  after a print preview when Dynamic C is in full screen mode.
- Defect #80238 fixed. The preview text is no longer affected by
  invoking and accepting the Properties dialog from the Printer
  icon within Print Preview.
- Defect #80306 fixed. The cursor no longer moves when using the
  horizontal scroll buttons.
- Defect #80620 fixed. Setting a breakpoint in a pure assembly
  function no longer causes another window to pop/open up.
- Defect #80673 fixed. Memory dumps to text file is now correct
  for large amounts of memory.
- Defect #80689 fixed. Disassembly window now correct for
  00:e000-00:ffff address range.
- Defect #80772 fixed. Dumping entire flash from Inspect |
  Dump at Address now works correctly.
- Defect #80780 fixed. The Defines window in the Project Options
  dialog accepts multi-line entries that do not word-wrap,
  including pastes.
- Defect #80853 fixed. Ctrl+F2 correctly restarts a program being
  debugged via a RabbitLink without loss of communication.
- Defect #80860 fixed. The Assembly window now treats the n
  offset in (sp+n)-style instructions properly, as an unsigned
  value.
- Defect #80866 fixed. Gui "Include RST 28 Instructions" and
  compiler "DEBUG_RST" macro now synchronized properly.


Other Functional Changes
- Changed TCP/IP target communications to use the
  sock_xfastread/write functions to improve performance.
- Commented out unsupported hybrid word/byte mode flash types in
  FLASHWR.LIB and in FLASH.INI which were originally added in
  error.
- The User Block maximum size limit on supported flash types has
  been increased to 64KB. NB: The actual size of a User Block on
  supported large/nonuniform sector flash types is determined by
  the sector map of the particular flash device.
- Compiling via F5 or F9 may not display BIOS warning messages.
  Use Ctrl-Y to check if warnings are generated during the BIOS
  compile.

Known Problems
- Some computers may have trouble displaying the I/O register
  help file (Registers.chm) and/or the main Dynamic C help file
  (dcw.hlp).  Please contact Rabbit Tech Support for the files
  needed to update your system.

*****************************************************************
VERSION 7.34P2

OTHER FUNCTIONAL CHANGES
- Added support for RCM3220 core module.

*****************************************************************
VERSION 7.34

BUG FIXES

Compiler Bugs
- Defect #862 fixed. A bug related to origin follows handling
  could cause root code to be compiled, but not transmitted to
  the target.
- Defect #877 fixed. GetVectIntern, SetVectExtern3000, and
  GetVectExtern3000 were broken under I&D space.

Library Bugs
- Defect #879 fixed. The writeUserBlock function could overwrite
  a version 2 ID Block.

TCP/IP Bugs
- Defect #859 fixed.  sock_init() on the Realtek no longer
  causes spurious memory writes into xmem or the stack.
- Defect #861 fixed.  Buffer overflows in the test_cgi()
  function in samples\tcpip\http\cgi.c were fixed.

*****************************************************************
VERSION 7.33P3

BUG FIXES

Library Bugs
- Defect #848 fixed. LP35xx.lib xxxAlert() functions timeout
  early.

OTHER FUNCTIONAL CHANGES
- Added support for BL2500 with RCM3200 core module
  option.
- Added support for EG2110 Rabbit Link.

*****************************************************************
VERSION 7.33TSE2

Library Bugs
- Defect #847 fixed.  Fixes BL2500 analog input conversion by
  increasing time thus allowing circuitry to settle between the
  10-step approximations.  Increases conversion time from 71 ms
  to 86 ms.

*****************************************************************
VERSION 7.33P

NEW FEATURES
- Samples, libraries, and documentation for new
  RCM3400 added.
- Samples, libraries, and documentation for new
  BL2500 added.

BUG FIXES

Compiler Bugs
- Defect #810 fixed.  The keyword interrupt_vector
  did not work correctly when placed in xmem functions.

Library Bugs
- Defect #805 fixed.  Single 256K split-flash DLM type
  program locks up when using FS2.
- Defect #808 fixed. Cloning broken on RCM3200 in I&D space
  in fast RAM mode.
- Defect #809 fixed.  Single 256K split-flash DLM type
  program could unintentionally erase Id/User Blocks.
- Defect #812 fixed.  Sector write flash driver didn't work
  in I&D space.
- Defect 823 fixed.  I2C macros were broken.
- Defect #833 fixed. Debugging at 57600 or 115200 baud works
  on fast boards when USE_TIMERA_PRESCALE is defined.
- Defect #834 fixed. Bios did not include I&D relays for
  external interrupts.
- Defect #836 fixed. SetVectIntern does not work in I&D space.

TCP/IP Bugs
- Defect #813 fixed.  SMSC packet driver was incorrectly
  checking the ETH_BUFSIZE macro in assembly.  Did not
  affect any released hardware products.
- Defect #814 fixed.  For automatically generated and parse
  HTTP forms, float variables are now checked correctly.

GUI/Debugger Bugs
- Defect #815 fixed.  Saving an RTI File in the
  "Options | Define target configuration"  dialog no longer
  causes an access violation if "Targetless Compiler" registry
  settings exist from a prior Dynamic C installation.
- Defect #816 fixed.  RCM3100 now included in the pulldown
  menu for "Options | Define target configuration".

OTHER FUNCTIONAL CHANGES

- Unnecessarily reserved XMEM flash space made available
  to single 256K split-flash DLM type and to twin 256K
  flash DLP type programs.

- OP7200 drivers were updated to use the new WrExtPort
  function to assure that address-hold time is being
  met for the CPLD on external I/O cycles.

*****************************************************************
VERSION 7.32P

NEW FEATURES

- Compile to binary file using attached target is enabled.
- Download manager for single flash and TCPIP systems added
  to main tree. Files "Samples\Download\Dlm_tcp.c" and
  "DLP_256KFLASH.C" added. This uses Rabbit A18 to Flash
  A17 re-route board option. Compile-time option added to
  "Bios\RabbitBios.c" to not split SRAM between Primary
  and Secondary programs, DONT_SPLIT_RAM. See TN224 for
  details about TCP option, and TN218 for 256K option.

BUG FIXES

Compiler Bugs
- Defect #793 fixed.  Generated code for function calls can
  get corrupted depending on actual parameter expressions.
- Defect #796 fixed.  Command line compiler doesn't report
  compile time errors in the BIOS.
- Defect #797 fixed. Long string literals could cause an
  overflow in an internal buffer, crashing Dynamic C.
- Defect #802 fixed.  Only the first 240 typedefs could be
  used as function parameters.

Library Bugs
- Defect #795 fixed.  Serial Rx character interrupt service
  can't disrupt results from the serXrdFree, serXrdUsed,
  serXwrFree and serXwrUsed functions.
- Defect #801 fixed.  Active interrupts after forceSoftReset
  call don't cause subsequent baud rate value miscalculation.

TCP/IP Bugs

*****************************************************************
VERSION 7.31P

NEW FEATURES
- Samples, libraries, and documentation for new
  OP7200 added.
- Separate I&D space uses memory that was previously reserved
  for xmem code and data, so when compiling in RAM only mode,
  some programs may not fit anymore.  Moving code and data back
  to root may help the programs fit again.

BUG FIXES

Compiler Bugs
- Defect #658 fixed. Assignment to a constant pointer produced
  an error, even when correctly assigning to a dereferenced
  constant pointer.
- Defect #668 fixed. Local #asm labels that collide with global
  labels now generate an error. Previously, any references to
  the local label would silently resolve to the global label.
- Defect #716 fixed. @pc was not evaluated correctly.  @pc now
  evaluates to address of currently executing instruction.
- Defect #740 fixed. Dynamic C sometimes compiles constant
  data to the wrong #rcodorg segment.
- Defect #786 fixed. Breakpoints on second flash broken.
- Defect #787 fixed. Bug with xdata and follows
  qualifier for origin directives.

Library Bugs
- Defect #779 fixed. character mode in PACKET.LIB now uses
  correct transmit sub

TCP/IP Bugs
- Defect #791 fixed. In ZCONSOLE.LIB, console_enable() and
  console_disable() now work for all I/O methods.
- Defect #792 fixed. In ZCONSOLE.LIB, the "reset" commands
  now work for the telnet I/O method.
- Defect #788 fixed. Changing PD0 before sock_init may
  cause the Ethernet not to initialize properly.

*****************************************************************

VERSION 7.30

NEW FEATURES
- Supports separate instruction and data space.
- http_scanpost function added to make it easier to handle
  http posts in cgi's.
- added the makecold function to create custom tuple mode
  programs.
- Feature request #487 improved.  STDIO redirect to serial
  now handles input as well, and will automatically switch
  between outputting to the STDIO window in debug mode and
  the serial port in run mode.
- Breakpoints can now be set in ISRs.
- Ethernet packet driver support for SMSC LAN91C113 10/100.
- Ethernet packet driver support for ASIX AX88796 10/100.
- New TCP/IP library IGMP.LIB allows the use of multicasting,
  IGMPv1, and IGMPv2.
- New function writeUserBlockArray() allows writing data from
  scattered locations contiguously to the user block.
  readUserBlockArray() allows reading contiguous data from the
  user block into scattered destinations.
- New function WriteFlash2Array() allows writing data from
  scattered locations to a contiguous second flash region.
- ZCONSOLE.LIB now supports saving configuration to the user
  block.  Hence, it is no longer dependent on the file systems.
- ZCONSOLE.LIB supports more configuration options (including
  DHCP), as well as multi-interface support.
- Additional xmem-related functions in XMEM.LIB:
  _LIN2SEG : assembler macro to convert linear (20-bit) physical
    address to segmented form in XPC window (0xE000-0xEFFF).
  xmemchr() : version of strchr()
  paddrDS() and paddrSS() : restricted but more efficient
    versions of the general paddr() function.
  xstrlen() : version of strlen()
  xgetint(), xgetlong() : read word or longword values from xmem.
  xsetint(), xsetlong() : write word or longword values to xmem.
- New library RAND.LIB.  Contains random number generators and
  a means for generating initial "seed" values based on external
  events.  This library is a robust extension of the random
  number generators in MATH.LIB.
- New TCP/IP libraries SNMP.LIB and MIB.LIB.  Implements SNMP v1
  basic protocol (using UDP as transport machanism) plus a data-
  base for the MIB tree.
- TCP has RFC-compliant congestion avoidance algorithm.
- You can eliminate all TCP code (and/or UDP code) by defining
  macros (DISABLE_TCP/DISABLE_UDP).  This saves code space and
  download time in applications which do not require these
  protocols.
- TCP/IP supports multiple interfaces.  You can now have ethernet
  plus PPP at the same time.  Each interface may be initialized
  using macro definitions, and is fully configurable at run-time
  by calling the ifconfig() function.  ifconfig() is the
  replacement for the deprecated tcp_config() function, however
  tcp_config() is still supported for backwards compatibility.
- TCP and UDP sockets now have well-defined data handler
  callbacks.  The UDP handler allows you to create extremely
  efficient request/response type UDP servers.  The TCP handler
  allows the callback to peek at the incoming data stream
  (possibly modifying it in-place before the application sees
  it).
- New TCP socket functions sock_xfastwrite() and
  sock_xfastread().  These allow data transfer directly from/to
  extended memory.  Also sock_aread(), sock_axread(),
  sock_awrite() and sock_axwrite() allow "atomic" reading and
  writing to sockets.
- ARP handles ICMP redirect messages.
- TCP write performance improved (about double the transmit
  speed compared with previous release).  Read performance also
  slightly improved.
- New style of configuring the TCP/IP libraries.  This was
  necessitated by the additional complexity resulting from the
  multiple interface support.  The old style of configuration is
  supported for backwards compatibility.  The new style allows
  "set and forget" configurations, including the ability to
  create custom configurations which will not be overwritten by
  new releases of Dynamic C.  You direct each sample program to
  use a particular configuration by defining a single macro
  (#define TCPCONFIG <config-number>).
- BOOTP/DHCP allocates its own UDP socket buffer.  No need to
  account for this in MAX_UDP_SOCKET_BUFFERS.
- BOOTP.LIB can be forced to use only BOOTP (not DHCP) if symbol
  BOOTP_ONLY is defined.

Other Functional Changes
- A macro has been added to the BIOS, USE_TIMERA_PRESCALE,
  to enable the timer A prescale available on the Rabbit 3000.
  Enabling this feature will run the peripheral clock directly
  off the CPU clock instead of the default CPU clock/2, allowing
  higher baud rates.
- The crystal frequency detection is now done in the BIOS
  as well (instead of just at compile time).  This means that
  things like baud rates will work properly when a binary
  image from a board with one crystal frequency is loaded
  onto a board with a different crystal frequency.  Works also
  with the download secondary programs.
- Dynamic C now polls the target only when it is explicity
  told to.  Polling remains enabled until explicilty disabled
  (via "Run | Poll Target" or Ctrl + O).
- FTP server keeps a single copy of the handler functions,
  instead of a copy for each session.  This means a handler
  function can call another function (since "state" ptr isn't
  needed to find the handlers).  Improvement: ftp_dflt_list() now
  calls the "get size" handler for each file.
- Improved the speed of the HTTP server sending static ximported
  files by replacing root copy with a sock_xfastwrite.
- Modified enableIObus() and disableIObus() so that they do not
  use save variables of shadow registers.  This allows the
  functions to be independent of each other.
- RCM3000, RCM3100, RCM3200 samples libraries are now #use'd with
  lcd122key7.lib.  This will produce an error message if
  PORTA_AUX_IO is not defined.
- LCD_Keypad sample programs have been updated to use dispInit()
  in place of glInit() and keyInit().  dispLedOut() replaces
  ledOut().
- Smart Star milli-Amp function descriptions and samples modified
  to accommodate factory calibrations in unit amperes.

BUG FIXES

Compiler Bugs
- Defect #657 fixed. Runtime errors in #nodebug code will now
  display the correct file and line information instead of
  causing Dynamic C to hang.
- Defect #695 fixed. Files with the same pathname but different
  extensions can now be put into lib.dir without conflict.
- Defect #702 fixed. Functions tolower and toupper now leave
  non-ASCII inputs unchanged.
- Defect #717 fixed. Single stepping over long running functions
  (sock_init, gets, getchar, etc) now works correctly without
  causing a watchdog timeout.
- Defect #727 fixed. In constant folding, division of negative
  constant cast to char or to unsigned type has correct result.
- Defect #731 fixed. Exceptions that were thrown in Dynamic C
  before an rst 28h was encountered (such as at the beginning of
  main) were not handled correctly, resulting in lost target
  communications.
- Defect #729 and #739 fixed.  Removed serMode warning for TCP/IP
  Development Kits.
- Defect #730 fixed. Bug caused xdata and sizeof to generate
  string literals in root code/constant space.
- Defect #745 fixed. Jump out of range error reported when doing
  a backward relative jump in the 0xf000 range of xmem.
- Defect #747 fixed. Debugging slice statements now works
  correctly.
- Defect #748 fixed. Compiling to ram now works correctly for
  Rabbitlink.
- Defect #770 fixed. The command line compiler will now use a
  user defined BIOS file read from the project file, providing
  the use BIOS file flag is true.
- Defect #777 fixed.  The packet driver emulation of the 9346 was
  corrupting the clock and address register in sock_init,
  typically the PDDR register.

GUI/Debugger Bugs
- Defect #674 fixed. Simplified "Inspect | Dump at Address | Save
  Entire Flash to File" dialog to remove potentially problematic
  interface elements.
- Defect #769 fixed. State of menu item "Compile | Include debug
  code/RST 28 instructions" is now maintained solely by project
  files.

Library Bugs
- Defect #182 fixed.  It was possible for read_rtc() to read the
  RTC while it was updating, occasionally causing invalid data.
  (Previously incorrectly listed as being fixed in VERSION
  7.02P.)  Note that read_rtc_32kHz(), added in 7.02P to allow
  access to the RTC while running off the 32kHz oscillator, is
  now deprecated.  Use read_rtc() instead.
- Defect #630 fixed. New PPP library handles escaped byte map
  correctly.
- Defect #683 fixed.  The code for WrPortI was not properly
  protected against a race condition with an ISR that is
  updating the same register.
- Defect #686 fixed. Dynamic C version 7.25 was having problems
  with the flash file systems and some Atmel flash.
- Defect #688 fixed. The clock doubler was being set with
  incorrect values for some Rabbit 3000 oscillator frequencies.
- Defect #691 fixed. OSMemCreate now handles memory chunk
  allocations larger that 255 bytes.
- Defect #696 fixed. A Deadlock issue with uC/OS-II in
  sock_gets() has been fixed.
- Defect #698 fixed. New PPP library eliminates seperate
  PPPgetErrors function.
- Defect #718 fixed. UDP sockets no longer sometimes accept an
  initial datagram directed to an incorrect port.
- Defect #719 fixed. console_tick() will no longer block for long
  periods of time.
- Defect #722 fixed. GetIDBlockSize() was returning incorrect
  values for version 2 ID blocks.
- Defect #723 fixed. pd_resetinterface which is called from
  sock_init did not properly save and restore the IX register.
- Defect #725 fixed. The errlogGetMessage(), errlogFormatEntry(),
  errlogGetHeaderInfo() functions returned pointers to auto char
  array buffers, now return pointers to static buffers.
- Defect #726 fixed. UserBlockSector variable was incorrect for
  128kb flash.
- Defect #729 fixed. Removed warning from ICOM.LIB serMode for
  TCP/IP Development Kits.
- Defect #732 fixed. FS2_RAM_PHYS macro in STACK.LIB is corrected
  for targets with 512KB SRAM.
- Defect #734 fixed. enableport/disableport have non-ISR versions
  now
- Defect #736 fixed. Form strings of the maximum length will now
  always be stored with null termination.
- Defect #737 fixed. RCM2200 packet driver was incorrectly
  setting PD4 and PD7 as outputs and clearing the function and
 control registers for these bits.
- Defect #739 fixed. Same as #729.
- Defect #746 fixed. FS2 on 512KB first flash now works, and RAM
  FS2 stability problems have been fixed.
- Defect #750 fixed. BL2100 digital outputs no longer change
  states when a digital input is read.
- Defect #751 fixed. OP6800 backlight no longer changes states
  when toggling the LED's on the display.
- Defect #753 fixed. Programs compiled to RAM-only boards load
  and run correctly.
- Defect #755 fixed. Passive mode FTP client downloads will now
  work when it receives a "125" message instead of a "150"
  message.
- Defect #756 fixed. Non-passive mode FTP client downloads will
  no longer abort before the data connection has a chance to
  establish.
- Defect #759.  The PE1-7 Function registers were being set
  instead of clearing PE0 function register for the BL2000 packet
  driver.
- Defect #762 fixed . serEopen would not set low baud rate
  prescaler correctly.
- Defect #765.  The pilot BIOS would erase the entire contents of
  a 512kb flash if the code size was greater than 256kb.
- Defect #771 fixed. uC/OS-II event flags now work properly for
  tasks with different stack semgents.
- Defect #781 fixed.  The bottom block in mirrored (v. 3 and up)
  ID/User Block systems is fully protected, and FS2 no longer
  attempts to write there.

RFU Bugs
- Defect #685 fixed. RFU now completely loads large programs over
  an ethernet connection.

Sample Program Bugs
- Defect #701 fixed.  An incorrect shadow register was
  being used in the RCM2100 sample EXTSRAM2.C.

Documentation Additions
- Tech Note 220 - Two Flash Download Manager with FTP.

*****************************************************************
VERSION 7.26TSE2

NEW FEATURES
- Samples, libraries, and documentation added to TSE
  kits for BL2000, BL2100, OP6800 and SmartStar boards.

*****************************************************************
VERSION 7.26P

NEW FEATURES
- Samples, libraries, and documentation for new
  LP3500 series controller added.

Other Functional Changes
- The automatic baud negotiation with the target can
  now be disabled in the Options/Communications dialog.
  Some laptops had problems with this feature.  In
  addition, the maximum negotiated baud rate (up to
  460800 baud) can be entered in the Communications
  dialog box.
- 2400 and 4800 baud are now supported as debug baud
  rates.
- The compiler will now reduce the debug baud rate if
  it determines that the target cannot support the
  selected value.
- Enhanced driver in mscg12232.lib for "no line"
  display.

BUG FIXES

Compiler Bugs
-  Defect #697 fixed.  Repeated use of Function Lookup (Ctrl-H)
   will no longer cause a GPF.
-  Defect #742 fixed.  Duplicate symbol error message incorrect
   after saving library.

Library Bugs
- Changes in lp3500.lib. Added runtime check for
  installed analog device. Changed PF1 to output
  high in brdInit() if no analog device. Added
  detailed description to powerMode().
  Note that these fixes do NOT affect 7.26SE, only
  7.26SE2 and 7.26P.
- Defect #677 fixed. Repeated calls to writeUserBlock() on a 4kb
  sector flash could cause a hardware watchdog timeout.
  (Previously incorrectly listed as being fixed in VERSION
  7.25P.)
- Defect #724 fixed. Dynamic C can now locate BL20xx, BL21xx
  calibration constants.
- Defect #728 fixed. Serial ports will be opened with
  the correct baud rate after a call to clockDoublerOn()
  or clockDoublerOff().
- Defect #749 fixed. Version 4 ID Block / User Block mirroring
  works in both directions.
- Defect #767.  paddr returned an incorrect value for
  0xd000-0xd0ff.

*****************************************************************
VERSION 7.25SE2

NEW FEATURES
- Samples, libraries, and documentation for new
  RCM3100 core module added.

*****************************************************************
VERSION 7.25P

NEW FEATURES

- Samples, libraries, and documentation for new
  RCM3000 core module added.
- Feature request #380.  The clock doubler setting will
  now be optimized for the particular CPU clock detected
  instead of simply selecting a default value.
- Feature request #487.  STDIO output can now be
  directed to a serial port for debugging under run mode.
- The baud rate used for downloading is now negotiated
  between the PC and the target.  This will speed up
  downloading for various boards, particuarly if a USB
  converter is used where rates up to 460800 baud are possible.
- The baud rates for debugging with the BIOS have been
  expanded from 57600 and 115200 to 9600, 19200, 38400,
  57600, and 115200.  This aids in debugging with boards
  with slower crystals.
- Dynamic C now works with a wider selection of USB to Serial
  converters.  The quality of drivers for converters varies
  widely, and Dynamic C attempts to compensate for these
  differences.
- http_idle function added.  This function returns non-zero
  if all of the http_handler functions are not handling
  active connections.
- Support was added for more large-sector flash products.
- Alt+F7 and Alt+F8 will force the debugger to step by c
  statements rather than by instruction when the assembly
  window is open. (Introduced in 7.10).
- *.MAP files added to File Open dialog box.
- Single-stepping control improved in uC/OS-II. Can now
  confine stepping to current task.
- Callback function for ICMP echo requests (PING) can be
  defined.  See documentation in ICMP.LIB for the macros
  ICMP_ECHOREQ_CALLBACK and ICMP_RESPOND_TO_BCAST_ECHOREQ.

Other Functional Changes

- Removed initial bios compile. Bios will automatically compile
  the first time a program is compiled.
- Scrolling functionality improved for STDIO window.
- New "Tips of the Day" added.
- Overall compiler speed improved.
- Debugger runs programs full speed after 1 or more set
  breakpoints have been removed, either by toggling each
  breakpoint off or by using the Run|Clear All Breakpoints
  command.
- A "secondary program" can now read the System ID block stored
  at the top of the first Flash.  Required for TCP-based DLP, see
  "Samples\DOWN_LOAD\DLP_2_FLASH.c" for example.

BUG FIXES

Compiler Bugs
- Defect #619 fixed. Multi-line assembly macros with arguments
  now compile if alternate registers are used in the replacement
  list.
- Defect #651 fixed. Removed superfluous warning when root
  functions are called via a long call.
- Defect #653 fixed. Pressing cancel when downloading the pilot
  bios during a compile invoked by either F5 or F9 will no longer
  cause occasional crashes.
- Defect #654 fixed. The command line compiler now reads the
  crystal frequency correctly when an RTI file is used with the
  -rf switch.
- Defect #655 fixed. The first parameter in an indirect call to
  an xmem function was being corrupted by the root bouncer code.
- Defect #656 fixed. Cofunctions in xmem using an everytime
  statement did not work correctly. All everytime statements are
  now placed in root space to avoid this.

GUI/Debugger Bugs
- Defect #649 fixed. CPU usage now drops to normal after a
  function lookup dialog is closed.
- Defect #672 fixed. Print dialog page range corrected for STDIO
  window.
- Defect #675 fixed. Macro definitions added to Defines window
  and then were causing Dynamic C to crash on the first compile.

Library Bugs
- Defect #605 fixed. TCP SYN queue fix to prevent occasional
  timeouts.
- Defect #607 fixed. TCP connections do not lock up if socket
  buffer size is less than the MSS.
- Defect #608 fixed. Incoming UDP packets do not alter flags in
  ARP cache.  Prevents ARP resolve failures after long intervals
  of inactivity.
- Defect #609 fixed. DHCP renew/rebind transmit loop fixed.
- Defect #640 fixed. serMode() now returns the correct status
  when the serial ports have been successfully configured.
- Defect #667 fixed. Telnet code in VSERIAL.LIB works properly
  with the Win2K and WinXP telnet.
- Defect #669 fixed. Error generated when attempting to compile
  code containing calls to randg() and randb().
- Defect #670 fixed. i2c_wr_wait() correctly returns -1 after too
  many retries.
- Defect #676 fixed. The clockDoublerOn/Off functions are
  supposed to keep target communications when called for most
  products, but target communications was consistently lost.

*****************************************************************
VERSION 7.21P

NEW FEATURES

- Xmem code can now be compiled into the bios.  Root code
  and data usage by libraries and BIOS reduced.

BUG FIXES

Compiler Bugs
- Defect #634 fixed. An improper check was occurring in
  evaluating a function's return value when returning a char.
  This bug was caused by the fix to defect #532, so the fix
  was removed until a better one is implemented and #532
  is now unfixed.
- Defect #635 fixed. Using sizeof on a constant string literal
  incorrectly resulted in an error.
- Defect #636 fixed. Char arrays assigned a string the same
  length as the array dimension produced errors
  when only a warning should have been produced.
- Defect #641 fixed. Null terminator was omitted from strings
  in xdata statements.
- Defect #643 fixed. Targetlesscomp.dll now has the correct base
  frequencies for the RCM2000, RCM2010, RCM2020, and SR9100.
- Defect #646 fixed. Structure block copies failed
  when "#pragma DATAWAITSUSED on" was applied.
- Defect #648 fixed. Cofunction abondonment in xmem broke
  when abondonment code appeared after the xmem page change.
- Defect #665 fixed. More than about 256 variables could not
  be declared in a single statement in global scope.

Library Bugs
- Defect #638 fixed. writeUserBlock() now works when #class
  auto is used.
- Defect #642 fixed. The debug kernel does not allow virtual
  watchdogs to be counted while single stepping.
- Defect #645 fixed. SHort delay added to the end of ModemInit()
  and CofModemInit() to prevent modem lockups on some hardware.

Documentation Additions
- Tech Note 219 - Root memory usage reduction tips added.
- Added uC/OS-II documentation from Jean J. Labrosse in the
  samples/ucos-ii directory. Newv251.pdf contains all of the
  features added since V2.00, and Relv251.pdf contains release
  notes for version 2.51. Several API changes have been
  introduced in v 2.51.

*****************************************************************
VERSION 7.20P

NEW FEATURES
- SR9150/SR9160 libraries added for full support of
  SR9150 and SR9160 specific functionality. This
  includes libraries supporting IO, RS232,RS485, TCPIP
  and SR9150/SR9160 hardware specific functions.
- Support has been improved for flash devices with 4096-byte
  sectors (i.e. the SST39 series).  In addition, support for
  compiling to "large-sector" devices (sector sizes > 4kb) has
  been added. See the Rabbit Designer’s Handbook for a list of
  supported devices.
- Feature Request #480. The enum keyword is now supported per the
  ANSI C specification.
- ucos2.lib has been upgraded to version 2.51 which includes
  mutexes and event flags.  The library has been broken up into
  multiple files to more closely match the source structure of
  uCOS-II.
- Feature Request #473. Added the built in macros __FILE__,
  __LINE__, __DATE__, and __TIME__. Refers to section 6.8.8 of
  the ANSI standard.  The difference between our implementation
  is that the __TIME__ and __DATE__ of the modules reflect either
  the time of compilation for the bios or the .c file.  The
  reason for this is that we lack linking, so libraries are
  essentially compiled at the same time as the file being
  compiled (ie the bios, or the user’s program).
- Sample program to interface to ADS787 chip added in
  /SAMPLES/SPI.
- Cloning is now all "fast" cloning, and options have been added
  for "sterile" clones, unconditional copy of a second flash, and
  more.  See RabbitBios.c for details.
- Added console_enable and console_disable to Zconsole, which
  allow the sharing of the connection.
- Added ConsoleLogin structure which will prompt for a name and
  password when a connection is established.  There is a matching
  CONSOLE_LOGIN_BACKUP macro for saving and restoring the
  structure.
- Efficiency and robustness improvements to FTP.
- FTP_CLIENT and FTP_SERVER libraries updated to support passive
  mode connections.  This makes it more convenient for clients
  and servers which are on different sides of a firewall.
- FTP_CLIENT supports upload/download of more than 32k using a
  user-specified data handler function.  The data handler can
  also generate dynamic content, or parse incoming content
  on-the-fly.
- Both FTP_CLIENT and FTP_SERVER libraries can co-exist in the
  one application.
- The default FTP server allows files owned by the anonymous user
  to be accessed by any other defined user.  Only files which are
  accessible to the logged-in user are listed.  The userID of the
  anonymous user is set via the ftp_set_anonymous() function.
- The function names for the default FTP handlers in library
  TcpIp\FTP_SERVER.LIB have been changed.  They are forward
  declared in the "header" portion.  See
  "Samples\TcpIp\Http\GetFile.c".  Defining FTP_WRITABLE_FILES
  permits FTP client to upload.  This requires support from
  application.
- TARGETPROC_LOADER has been reworked to support the new
  coldloader and PilotBIOS. Ethernet loading should be seamlessly
  transparent to the target board and DynamicC.
- VSERIAL.LIB handles remote-echo over telnet properly. Programs
  that use this library will also have to #use "DCRTCP.LIB"
  directly now, instead of relying on VSERIAL.LIB to do it.
- ZCONSOLE.LIB now uses the telnet code from VSERIAL.LIB, so echo
  is handled properly.
- Added SERA_USEPORTD macro to RS232 library. Allows alternate
  pins to be used for serial port A.
- Constant string optimization implemented.
- The Communications Options dialog now contains a checkbox to
  enable/disable processor verification. The default is checked
  (verify the processor with the DSR line) and the state is
  maintained per project.  This replaces the Tx Mode options
  which are no longer used.

Other Functional Changes

  Improvements to Smart Star library
- Added run-time error checking to functions.
- Added display/keypad module configurations.
- Added ledOut() function to library.
- Added serMode(3) configuration to support both 5-wire
  and RS485.
- Added end-of-conversion timeout to anaIn() function.
- Added return value: -3, eeprom unreadable, to
  anaInEERd() and anaOutEERd() functions.
- Modified AD/DA samples to demonstrate above eeprom
  error message.

- Structs and unions now obey the same scoping rules as other
  identifiers.  That is, a structure or union type defined in a
  function no longer has global scope.
- Feature Request #477. Stdio window row capacity increased from
  150 to 10000, with row and column limits maintained in the
  registry.
- #asm blocks are now marked "nodebug" by default, even if an
  enclosing function is marked "debug". This means that a
  breakpoint can not be set inside a #asm block unless "#asm
  debug" is explicitly used.
- Call graph in map file now suppresses subtrees of functions
  that have already been printed.
- Compiling with "Used Attached Target" no longer compiles the
  bios, and requires that the target has a running bios/program.
  The Options menu now has a Define Target Configuration Command.
  The Compile to *.bin file command now use the target
  configuration defined in the new option to compile, instead of
  popping the Target Configuration Dialog up for every
  compilation.

BUG FIXES

Compiler Bugs
- Defect #477 fixed. Multi-line ANSI-style string concatenations
  are not supported by Dynamic C. Before, Dynamic C silently
  failed, now it flags an error.
- Defect #532 fixed. Assignment operators used in conditional
  expressions with char variables produced an incorrect
  promotion of the expression to an int.
- Defect #536 fixed. Dynamic C would GPF if an array of
  type CoData was used as a name instead of a CoData pointer.
- Defect #555 fixed.  Escape characters in string constants do
  not cause GPFs.
- Defect #559 fixed.  Undefined origin directives would cause
  the compiler to crash.
- Defect #560 fixed. Sizeof with complicated expressions
  does not generated bad code.
- Defect #565 fixed. The compiler now performs parameter
  checking on built-in functions set and res.
- Defect #575 fixed. Symbol table overflow may cause DC
  to live lock.
- Defect #579 fixed. Struct and union tags that are reused
  defined now generate an error instead of a warning.
- Defect #582 fixed. Declaring a union foo variable when
  struct foo had been defined earlier (and vice versa) now
  generates an error.
- Defect #584 fixed. The compiler now performs parameter
  checking on built-in function bit.
- Defect #595 fixed.  The ISR in sample program TIMER_B.C wasn’t
  quite correct.
- Defect #597 fixed. Instructions of the form
  ldp (mn), hl | ix | iy will now compile.
- Defect #598 fixed. Global typedefs no longer override
  typedefs of the same name in functions.
- Defect #599 fixed. A struct or union is no longer  allowed
  to contain multiple members of the same name.
- Defect #600 fixed. Initialized const struct with a pointer
  member is now properly recognized as const.
- Defect #610 fixed. Pointers cast to void* are no longer
  allowed in integer arithmetic.
- Defect #613 fixed. Complex expressions in #asm blocks for
  memory offsets were not evaluated correctly in some cases.
- Defect #614 fixed. An error is now issued for an
  assignment to a member of a const struct variable.
- Defect #622 fixed. The Rabbit Field utility can now be run
  from a CD and open binary files which are on a CD.
- Defect #641 fixed. String literals in xdata blocks are now
  null terminated.

GUI/Debugger Bugs
- Defect #238 fixed. runwatch() now updates watches with
  the same snapshot.
- Defect #510 fixed. Dynamic C did not handle const variables
  appropriately in watch expressions.
- Defect #538 fixed. Opening a different project can now be
  cancelled when prompted with an unsaved Edit window.
- Defect #539 fixed. Saving the current project settings to a new
  project name now updates the Dynamic c status bar and title
  bar.
- Defect #577 fixed. Dynamic C will not crash if more than six
  watch expressions are added.
- Defect #564 fixed. A font change can now be cancelled after
  selecting a new font.
- Defect #596 fixed. When compiling, the Compile button is now
  inactive until compilation is completed. Hitting the Compile
  button again during a compile no longer causes a problem.

Library Bugs
- Defect #398 fixed. Due to fundamental changes in the
  RabbitLink, the polling bug is no longer applicable.
- Defect #403 fixed. Due to fundamental changes in the
  RabbitLink, the problem of stdin characters not being received
  is no longer applicable.
- Defect #543 fixed. serMode(2) description corrected
  to PD0=RTS and PD2=CTS.
- Defect #544 fixed. Comment on use of SERB_USEPORTD added
  to serBopen() function description.
- Defect #545 fixed. Added to descriptions for packet
  send and receive functions.
- Defect #549 fixed. ID and user blocks are properly protected
  when a 512kb flash is installed (didn't affect 2x256kb).
- Defect #551 fixed. _EraseFlashChip function now works.
- Defect #561 fixed. DMFile structures can now be on the
  stack if uC/OS is being used.
- Defect #567 fixed. The BIOS was performing an
  inadvertent write to a register.
- Defect #570 fixed. PACKET.LIB now handles a change from
  a low to high baud rate correctly.
- Defect #571 fixed. PACKET.LIB parity modes are now correct
- Defect #572 fixed. Corrected library header typo.
- Defect #578 fixed. Dynamic C no longer loses communication
  after breakpoint set and removed in a program with a lot of
  stdio output.
- Defect #580 fixed. Added srand() to initialize random seed
  from a program instead of using default value.
- Defect #581 fixed. Zconsole parameter "" was not handled
  properly.
- Defect #586 fixed. Added input buffer overflow to serial errors
- Defect #587 fixed. Dynamic C now returns 1.0 for pow(0, y)
  where y is greater than 0 but not equal to 1.
- Defect #588 fixed. MODEM.LIB functions now handle MS_TIMER
  rollover correctly.
- Defect #589 fixed. The BinWrPortE function prototype was
  incorrect.
- Defect #591 fixed. Header blocks in RS232.LIB now only have
  extern variable declarations.
- Defect #594 fixed. Packet library can use alternate serial B
  pins by defining ’PKTB_USEPORTD’.
- Defect #601 fixed. Corrected chip part number in sample
  description.
- Defect #602 fixed. Incorrect mask value in anaOut function
  (JRIO.LIB).
- Defect #608 fixed. correct value for MY_NETMASK in PPP_ANSWER.C
- Defect #609 fixed. Zserver forms were missing the HTTP
  Content-Type field.
- Defect #617 fixed. Occasional zero raw data values and 10V
  in float values resolved.
- Defect #618 fixed. The RabbitLink has been updated to match
  changes in the underlying ARP code.
- Defect #629 fixed. The printf format strings "lX" and "LX" did
  not produce uppercase hex values.
- Defect #631 fixed. Filesystem Mk II (FS2) should now work with
  costatements/cofunctions.  Was not preserving IX register.

*****************************************************************

NOTE:
Dynamic C 7.10 was a Special Edition (DSE) only version sold
only with DeviceMate. Users going from version 7.06 or older to
version 7.20 should read the version 7.10DSE release notes also.

*****************************************************************
VERSION 7.10DSE

NEW FEATURES
- Project files implemented. See the Dynamic C manual for
  details.
- Feature Request #440. Hotkeys ArrowUp, ArrowDown,
  PageUp, PageDown can now be used in memory
  dump window.
  Documented in the Dynamic C User’s manual rev. O.
- Feature Request #448. Added command in Run menu
  to clear all breakpoints.
  Documented in the Dynamic C User’s manual rev. O.
- Added #precompile functionality. This includes a new
  directive, #precompile, and a new library, precompile.lib.
  Any functions listed in precompile.lib using #precompile
  will be compiled and downloaded with the BIOS, increasing
  user program compile/download speed significantly.
  Documented in the Dynamic C User’s manual rev. O.
- Changed error about compiling to RAM while cloning is
  enabled to a warning that automatically disables
  cloning when compiling to RAM.
- Feature Request #250. Improved targetless compile GUI to
  configure with "Options | Define target configuration" and
  compile with "Compile | Compile target configuration".
  Compilation dialog title bar informs of RAM or flash target.
- Feature Request #464. Added a message after a Compile target
  configuration, stating Object file successfully created.
- A new directive for #asm blocks, "xmem" has  been added to
  facilitate placing blocks of assembly code
  directly into Xmem.
  Documented in the Dynamic C User’s Manual rev. 0.
- Internal macro __DynamicC__ is now a synonym for CC_VER

BUG FIXES
Compiler Bugs
- Defect #263 fixed. Extra semicolons in function calls generate
  compiler errors.
- Defect #326 fixed. Size of character buffers are reported
  correctly in the map file.
- Defect #408 fixed. The compiler no longer generates errors
  when compiling the following inline assembly statements:
  - asm  ld  bc’,bc
  - asm  ld  de’,bc
  - asm  ld  hl’,bc
  - asm  ld  bc’,de
  - asm  ld  de’,de
  - asm  ld  hl’.de
- Defect #442 fixed. Assembly instructions with alternate
  registers that are followed by C++ style comments compile.
- Defect #452 fixed. Nested switch statements compile with the
  correct context.
- Defect #453 fixed. Escape character constants and hex values
  in assembly code are parsed correctly.
- Defect #459 fixed. Watch expressions no longer corrupt
  variables.
- Defect #492 fixed. Compiler generated incorrect code
  for some tests with characters in logical expressions.
- Defect #495 fixed. The case where an array is declared
  extern without a dimension, and the sizeof operator is
  used on that array before its size is known now generates
  an error because the array is an incomplete type.
- Defect #499 fixed. White space in arithmetic operations
  was not ignored.
- Defect #505 fixed. Compiler incorrectly handles sizeof
  operator result as a signed integer (should be unsigned).
- Defect #508 fixed. Disallowed cofunctions to have
  old-style argument declarations.
- Defect #514 fixed. Old-style function declarations are
  now compared to their prototypes, if a prototype exists.
  Old-style declarations also flag an error if they do not
  have a parameter declaration list.
- Defect #518 fixed. Compiler no longer generates bad byte in
  startup code.
- Defect #621 fixed. Macros entered into the Options | Compiler |
  Defines dialog are read at Dynamic C startup.

TCP/IP Bugs
- Defect #444 fixed. LCP negotiation fixed. Added Echo-Request
  handling.
- Defect #454 fixed. cgi_sendstring() no longer causes garbled
  data to be output.
- Defect #460 fixed. PAP authentication now checks
  name and password length.
- Defect #464 fixed. PPP_ANSWER.C handles failed
  connect properly.
- Defect #488 fixed. ZSERVER.LIB’s telnet I/O method
  now works correctly with uC/OS-II.
- Defect #528 fixed. PPP and FTP_CLIENT.LIB now work
  together properly.
- Defect #541 fixed. SAMPLES\RTDK\UCOS.C and
  SAMPLES\TCPIP\UCOS\UCOS2.C now correctly call sock_init()
  after OSInit().

GUI/Debugger Bugs
- Defect #451 fixed. Highlighted text now becomes
  the default selection in the Watch window.
- Defect #457 fixed. Search & Replace now works for a reverse
  search when the replace text contains the replace text.
- Defect #494 fixed. When a compile is cancelled, the window
  focus is now returned to the edit window for keyboard input.

Library Bugs
- Defect #438 fixed. Argument syntax in pktXopen() is now correct
- Defect #466 fixed. parity table is now only defined once.
- Defect #467 fixed. Address calculation in fs_writesector(),
  in fs_flash_single.lib is cast properly.
- Defect #481 fixed. fdelete() in FILESYSTEM.LIB now returns
  the correct values.
- Defect #487 fixed. FILESYSTEM.LIB no longer mixes
  up files in its RAM cache.
- Defect #491 improved. PACKET.LIB now makes less use of
  the IP buffer, so a user program is less likely to
  overflow it.
- Defect #500 fixed. WAIT_5_us macro would not compile
- Defect #521 fixed. 7 bit bytes now transmitted correctly.

Other Functional Changes
- Feature Request #429. printf and sprintf now return
  the number of characters written. Documented in
  the Dynamic C User’s Manual revision 0.
- Feature Request #459. Long calls and long jumps
  to xmem addresses are resolved to symbol names
  where possible.


KNOWN PROBLEMS
- Due to target communications changes, normal cloning does not
  work.  Fast cloning, however, does work. This will be fixed in
  the next release.
- Also due to target communications changes, the RabbitLink
  product will not work with this version of Dynamic C. This will
  be fixed in the next release.
- A problem exists with PC serial ports that have the FIFO
  disabled.  This problem may cause a Dynamic C lockup.  If you
  experience downloading/debugging problems, please make sure
  that the FIFO is enabled for your PC’s serial port.  This
  setting can be found in the Control Panel in the Ports section.

*****************************************************************
VERSION 7.06P2

BUG FIXES

Sample Program Bugs
- Defect #583 fixed. Printf statements in the sample program
  xstring.c are accurate.

File System Bugs
- Defect #548 fixed. FS2_RAM_RESERVE is no longer counted twice
  in the reserved RAM.
- Defect #592 fixed. FS2_RAM_RESERVE definition in
  RABBITBIOS.C is now in terms of 4096-byte blocks rather
  than byte count. This allows use of more than 32k for
  the RAM filesystem without getting warnings when
  compiling the BIOS.

Library Bugs
- Defect #445 fixed. In Ucos-II, task can now be deleted if
  it is created with OSTaskCreate.
- Defect #468 fixed. DHCP options 12 and/or 15 do not cause
  array overwrite and crash.
- Defect #469 fixed. Redundant code to validate pevent in
  OSQPost has been removed.
- Defect #585 fixed.  _glInitLCDPort no longer has hardcoded
  addresses.  These address were problematic for new controllers
- Defect #611 fixed. BL2100 digital port strobe changed from a
  chip select to a qualified RD & WR I/O strobe to eliminate
  an inadvertent channel selection.

TCP/IP Bugs
- Defect #409 fixed. TCP not sending correct keepalive segments.
- Defect #411 fixed. TCP timeout/retransmit strategy not
  implemented correctly.
- Defect #412 fixed. TCP not handling dropped or out-of-order
  segments correctly.
- Defect #413 fixed. TCP not handling closed window properly.
- Defect #465 fixed. sock_bytesready() and sock_dataready()
  no longer return more bytes than are available for ASCII
  sockets.
- Defect #471 fixed. After a connection was SYN queued,
  a re-transmit of the initial opening of the window does
  not have the proper flags set.
- Defect #473 fixed. Specifying the remote IP address
  and remote port in tcp_listen() and tcp_extlisten()
  now works correctly.
- Defect #474 fixed. DHCP did not accept packets <250
  bytes. It now rejects a packet if it is <240.
- Defect #480 fixed. SMTP.LIB and FTP_CLIENT.LIB
  were relying on MY_IP_ADDRESS directly, and now
  use the proper API call to catch runtime address changes.
- Defect #483 fixed. resolve_cancel(0) no longer makes
  subsequent DNS resolves fail.
- Defect #490 fixed. The HTTP server now properly
  ends 401 responses (in particular, the Opera browser
  now works with HTTP.LIB’s authentication).
- Defect #502 fixed. A UDP socket will no longer receive
  broadcast data sent to a different port from the one
  on which it is listening.
- Defect #503 fixed. HTTP.LIB no longer misreports a
  Content-Length field from a client of over 32768 bytes.
- Defect #504 fixed. sock_close() now correctly closes
  a listening but unconnected socket.
- Defect #509 fixed. sock_init() now only sets up uC/OS
  semaphores on first time through.
- Defect #520 fixed. Compilation error when DHCP_USE_BOOTP
   defined, when compiling BOOTP.LIB.
- Defect #522 fixed. Inability to use the TFTP.LIB library if
   not using DHCP client library (BOOTP.LIB)
- Defect #530 fixed. The macros BUFSIZE and MAXBUFS in
  NET.LIB have been renamed to ETH_BUFSIZE and ETH_MAXBUFS.
- Defect #535 fixed. Using the resolve functions in DNS.LIB
  without a nameserver defined no longer causes a divide-by-
  zero error.  In conjunction with this fix, some error
  return values for the resolve functions have been changed
  (see below).
- Defect #562 fixed. Ethernet frames of larger than
  ETH_MTU are no longer accepted by the packet driver.
  This caused a potential crash problem in ICMP.LIB.
- Defect #566 fixed. Echo request packets now generated
  correctly. Also, echo requests are no longer lost
  when using PPPoE
- Defect #569 fixed. In ZCONSOLE.LIB, the subject line in
  a mail message was sometimes incorrectly treated as the
  first line in the body.
- Defect #593 fixed. Under heavy load specific sized
  packets could cause a lockup.
- Defect #605 fixed. HTTP server long delays when processing
  post-style form data.  Especially noticeable with MSIE
  browser.
- Defect #607 fixed. PPP buffer now allocated correctly
  after packet is dropped.

Changes to ARP (Address Resolution Protocol):

- These changes should be transparent to most applications
  except those that use UDP sockets.  A call to udp_open() or
  udp_extopen() used to block while waiting for ARP resolution.
  These calls are now non-blocking, so it is possible for the
  application to call udp_sendto() on a socket which is not
  resolved.  This will cause the datagram to be dropped.  To
  help old applications, two new UDP functions are provided:
  udp_waitopen() and udp_waitsend().  These functions are
  identical to udp_extopen() and udp_sendto() respectively,
  except that an additional parameter specifies the maximum
  amount of time to block waiting for ARP resolution to
  complete.  A value of 100ms should be sufficient in most
  cases.
- ARP is now handled using a cache table in all cases.
  The table includes router and host information.  There is no
  blocking waiting for ARP when opening a TCP or UDP socket.
  ARP cache entries are automatically refreshed
  based on short or long timeouts.  ethernet address is no
  longer stored in the socket structure.
- New sock_resolved() function for testing whether a TCP or
  UDP socket is resolved to a valid hardware (ethernet)
  address.

General improvements to the TCP/IP library suite:

- TCP: The "functions" sock_wait_established(), sock_wait_data()
  and sock_wait_clsoed() are deprecated; do not use them in new
  code.  These are really macros that "goto sock_err" when
  trouble is noticed.  All sample program have had these removed
  and replaced with looping code that calls tcp_tick().  See the
  file "Samples/RCM2200/myecho.c" for an example.
- TCP correctly computes round-trip-time estimators, which is
  important for handling timeout/retransmit strategy.
- TCP protocol core rewritten.  Much better throughput
  over long latency and/or unreliable links.  Code efficiency
  improvements for lower processor overhead.  Better conformance
  to host requirements RFC.  Nagle algorithm performed correctly.
  Common sections of code factored out into functions since
  the old code was somewhat inconsistent.  TCP is believed to
  be much more reliable and less prone to odd "lock-ups".
- New APIs for setting TTL and TOS for TCP/UDP sockets.
  sock_set_ttl() and sock_set_tos().
- ICMP errors passed up to transport protocol layers via
  upcall functions.  TCP handles transparently to the
  application.  UDP allows the application to receive ICMP
  messages via the normal udp_recvfrom() interface.  Additional
  UDP socket mode flags to control ICMP processing.
- Socket error messages handled by number (not strings).  New
  API in NETERRNO.LIB for checking and printing errors e.g.
  sock_perror().  Up to two error codes may be queued to a
  socket.
- Debugging and verbosity defines have been rationalized.  The
  programmer can #define xxx_DEBUG and xxx_VERBOSE to control
  DC "nodebug" settings and debugging messages.  xxx is the
  library name e.g. TCP_VERBOSE for TCP.LIB.  Can also set
  DCRTCP_DEBUG and DCRTCP_VERBOSE to enable for all TCP/IP core
  libraries.
- Improved control over library constants via #defines.
- Packet driver time delays reduced.
- IP and transport layers drop malformed packets which used
  to get through (causing possible crashes and security
  problems).
- Minor UDP checksumming bug fixed.
- TCP ignores unbelievable RST segments.
- DHCP client sets broadcast flag correctly, and understands more
  information from the server.  Does not crash with host option.
  Accepts timezone information from server. New API:
  dhcp_get_timezone().
- Miscellaneous documentation clarifications for some of the
  API functions.  (Control-H function descriptions).
- Many of the polymorphic API functions now take void * for
  socket rather than "sock_type *".
- sock_mode() enhanced by addition of some macros to perform
  type-safe updates of single mode flags.
- New udp_peek() function for examining datagram information
  before actually removing the datagram from the UDP socket
  receive buffer.  This also returns more detail than
  udp_recvfrom(), including the incoming TOS and whether the
  datagram was directed to the broadcast address.
- In HTTP.LIB, calling the epilog function automatically in an
  abort condition after the prolog function has been called has
  now been changed. Now, the user must set the abort_notify field
  in the HttpState structure to 1 in the prolog function to
  indicate that the epilog function should be called on abort.
  As before, the cancel field in the HttpState structure will be
  set to 1 in such a situation. This functionality has been
  extended to CGI functions as well (see the New Features below).
- In HTTP.LIB, the abort_notify field in the HttpState structure
  can be set to 1 in a CGI function if the user wants the CGI
  function to be called one more time in case of a connection
  abort condition.  The cancel field in the HttpState structure
  will be set to 1 in such a situation.  This could be used to
  release resources that have been locked, for example.
- HTTP: Added HTTP_USERDATA_SIZE to extend make
  "HttpState.userdata[]".  This space is totally for user
  program.  It’s cleared on each new connection.  If
  HTTP_USERDATA_SIZE is left undefined, this
  additional field of HttpState isn’t included.  See
  "Samples/TargetProc/SLog-App.c" for usage. Documented in the
  TCP/IP User’s Manual rev. C.
- For automatically generated forms in HTTP.LIB, the
  epilog function will now be called even if the connection
  is aborted (as long as the prolog function has been called
  first).  The "cancel" variable in the HttpState structure
  is 0 to indicate that the epilog function is being called
  normally, and 1 to indicate that it is being called in a
  cancel situation.
  Documented in the TCP/IP User’s Manual rev. C.
- Added support for dotted decimal IP addresses in
  resolve_name_start.
- New error return code RESOLVE_NONAMESERVER has been
  added to resolve_name_start(), resolve_name_check(),
  and resolve_cancel() in DNS.LIB.  Also, the return codes
  -1 and -2 for resolve_name_start() have been given the
  symbolic names RESOLVE_NOENTRIES and RESOLVE_LONGHOSTNAME,
  respectively. Documented in the TCP/IP User’s Manual, rev. C.
- Feature Request #442. Extended smtp_sendmailxmem
  to data larger than 32K.


NEW FEATURES
- OP6800 libraries added for full support of OP6800
  specific functionality. This includes libraries
  supporting IO, RS232,RS485, TCPIP and OP6800
  hardware specific functions.
- SF1000 libraries are now provided in all versions of Dynamic C
  including the TSE and SE versions.

*****************************************************************
VERSION 7.06

BUG FIXES
Compiler Bugs
- Defect #360 fixed. Library functions that were declared
  in a BeginHeader block were not correctly read when the
  function name was > 32 chars.
- Defect 461 fixed. Corrected division bug for unsigned
  constant powers of two which was caused by a call to
  c_divt instead of c_usr.
- Defect #485. Dynamic C crashes on some macros due to
  a bug in the preprocessor.
- Defect #497 fixed. The command line compiler does not
  recognize board types. Programs which  require specific
  board libraries do not run correctly.

TCP/IP Bugs
- Defect #470 fixed. DNS now only does table allocation
  once
- Defect #486 fixed. DNS lookups no longer fail when
  a type CNAME answer is given first.
- Defect #511 fixed. DNS support no longer crashes the
  board when used in conjunction with uC/OS-II.
- Defect #527 fixed. Large fragmented packets could
  cause lockup.

GUI/Debugger Bugs
- Defect #515 fixed. The message window can now be closed
  without problem after compiling a program following one or
  more warnings generated from compiling the BIOS.
- Defect #516 fixed. Changes to the Lib directory in the Compiler
  Options dialog are now effective immediately.
- Defect #517 fixed. The Rabbit Field Utility now sizes dialog
  windows correctly if Windows Display Properties large fonts
  are used.

Library Bugs
- Defect #506 fixed. The macro _BOARD_TYPE_  used in
  RS232.lib in order to define SERB_USEPORTD  is also
  defined for the RCM2300.
- Defect #507 fixed.  Cloning would occasionally fail
  depending on the size of the program being compiled.
- Defect #513 fixed. The packet driver was incorrectly updating
  the PDFR and PDCR for the RCM2200.
- Defect #534 fixed. Stack was corrupted when errlogGetNthEntry
  detected a checksum error.

Other Functional Changes

NEW FEATURES

- BL2100 libraries added for full support of BL2100 specific
  and display specific functionality.  This includes libraries
  supporting display, character, graphic and BL2100 hardware
  specific functions.
- SF1000.LIB added to Dynamic C Libraries.  The SF1000 series
  offers serial-interfaced Flash memory that is designed to
  increase storage capabilities of Z·World single-board computers.
- New font converter executable (fbmcnvtr.exe) and help files
  (FONTBMP.HLP) are now included in the Dynamic C installations.
- "STERILE_CLONES" option added to fast cloning to disable
  cloning of clones.

Additional Documentation

*****************************************************************
VERSION 7.05

NEW FEATURES
- Command line compiler released and documented in Dynamic C
  User’s Manual.
- Compiling a program  into two flash chips has been made
  nearly seamless. #defining the macro USE_2NDFLASH_CODE is the
  only thing the user needs to do to make it work. Two extra bin
  files are generated when the program goes into two flash so
  that an EPROM burner can be used. A single large bin file
  is also generated for use with the Rabbit Field Utility and
  cloning.
- SPI library added along with a sample interfacing to a
  serial ADC chip. See \SAMPLES\SPI\.
- GPS library added along with a sample interfacing to a
  GPS receiver. See \SAMPLES\GPS\.
- New I2C library and sample. Allows Rabbit to act as a
  master for a Philips I2C bus. Documented in Application
  Note AN215.  See \SAMPLES\I2C\.
- Major changes have been made to the
  UDP socket API.  These changes will greatly improve the
  flexibility of our UDP implementation. They are
  documented in the Dynamic C TCP/IP User’s Manual
- Instruction Set Reference item added to Help Menu.
- Error logging implemented and documented in Dynamic C
  User’s Manual.
- A serial download manager sample program for boards with 2
  flash has been added in \SAMPLES\DOWN_LOAD\.
- New filesystem library (FS2.LIB and friends). FS2 documented
  in Dynamic C User’s Manual.  It is mostly compatible with
  the current filesystem (FILESYSTEM.LIB) except for
  initialization.  FS2 provides the following enhancements:
  . Allows overwriting parts of an existing file.
  . Multiple extents ("partitions") may be defined.
  . Supports any combination of flash memory, battery-backed
    RAM, or user-defined devices with a flash-like interface.
  . Supports large- and small-sector flash memory.
  . Runtime error reporting improved by using symbols
    defined in ERRNO.LIB.  These codes are returned in the
    errno variable if a filesystem routine encounters an
    error.
  The original filesystem is still supported, however any
  enhancements will only be made to FS2.
- Runtime error reporting is now improved, adding the
  file and line at which the error occurred, unless
  nodebug was in effect in the source code for that line.
- Sample serial downloader for 2 flash board added,
- If a file generates errors, compilation now stops at the
  end of the file.
- Added packet drivers. These drivers allow for packet based
  serial communication using a variety of packet separation
  modes. Function description documented in Dynamic C User’s
  Manual.
- BL2000 serves Java applet to control Analog output.
  Samples\BL2000\Applet\ has web page to deliver a Java
  applet (source in Applet\pages\AnalogApplet.java).
  Includes pre-compiled .class files, so you can just
  re-compile from Dynamic C, download and run!  Applet
  tested on NS Communicator 4.72 and MSIE 5.00.  See
  Samples\BL2000\Applet\README.txt for details.
- "Smart" BIOS Recompilation. Dynamic C now keeps a dependency
  list for the libraries included in the BIOS with #use.
  The BIOS is only recompiled when one of the libraries it is
  dependent upon is modified (or a library that one of those
  libraries #use’s). Nested #use is also supported,
  but any #use in a library must be in a BeginHeader/EndHeader
  block.
- Fast cloning option added, see RabbitBIOS.c.
- Complete rewrite of the DNS subsystem.
- New functions sauth_getuserid(), sauth_setpassword(), and
  sauth_removeuser() in ZSERVER.LIB.  sauth_getuserid()
  gets the user id for a given username.  sauth_setpassword()
  sets the password for a given user id.  sauth_removeuser()
  removes the given user from the user list.  Note any web
  pages associated with that user should be reassigned to
  another user, or have authentication removed (by passing
  the parameter "" to sspec_setrealm()).
- New function http_urldecode() to HTTP.LIB. Converts
  a string with HTTP transfer-coding "tokens" (such as
  %20 (hex) for space) into actual values.  Changes "+"
   into a space.
- New function http_contentencode() to HTTP.LIB. Converts
  a string to include HTTP transfer-coding "tokens"
  (e.g. &#64; (decimal) for at-sign) where appropriate.
  Encodes these chars: "<>@%#&"
- New callback macro HTTP_CUSTOM_HEADERS in
  HTTP.LIB.  The developer  can define this macro to be a
  function of the following prototype:  void my_headers
  (HttpState* state, char* buffer, int bytes); The state
  parameter is a pointer to the state structure for the
  calling web server, the buffer parameter is the buffer
  in which the header(s) can be written, and bytes is the
  number of bytes available in the buffer. The macro will
  be called whenever HTTP headers are being sent.
  Collected all runtime error code into a single new library,
  ERRORS.LIB.  Also added three new runtime errors:
  "invalid cofunction instance", "unexpected interrupt",
  and "bad parameter passed to I/O function".
- New functions sspec_setpreformfunction() and
  sspec_getpreformfunction() in ZSERVER.LIB.  These
  functions add support for a user-supplied function that
  will be called just before HTML form generation.
- New function udp_send, which will send a datagram to the
   remote host on the UDP socket.
- New function udp_sendto, which will send a datagram to a
  specified remote host and port.
- New function udp_recv, which will receive a datagram from
  a remote host.
- New function udp_recvfrom, which will receive a datagram
  from a remote host, and also return the IP address and port
  number of the sender.
- New functions tcp_extopen, tcp_extlisten, and udp_extopen
  have been defined.  These allow a user to specify their
  own socket buffers in xmem (with xalloc) instead of having
  them allocated from the pool.  Hence, it is now possible for
  the user to handle socket buffer management.
- Added functions resolve_name_start(), resolve_name_check(),
  and resolve_cancel() to perform nonblocking DNS lookups.
- Added the following configuration macros for DNS:
  * DNS_MAX_RESOLVES (4 by default) -- number of
  concurrent DNS queries that can be done.  This specifies
  the size of an internal table that is allocated in xmem.
  * DNS_MAX_NAME (64 by default) -- hostnames to look up
  (including an appended default domain) must be no larger
  than this macro, including the null-terminator.  For
  temporary storage, a variable of this size must be placed
  on the stack in DNS processing.
  * DNS_MAX_DATAGRAM_SIZE (512 by default) --
  specifies the maximum length in bytes of a DNS datagram
  that can be sent or received.  A root data buffer of this
  size is allocated for DNS support.
  * DNS_RETRY_TIMEOUT (2000 by default) -- specifies
  the number of milliseconds to wait before retrying a
  DNS request.
  * DNS_NUMBER_RETRIES (2 by default) -- specifies the
  number of times a request will be retried after an error
  or a timeout.
  * DNS_MIN_KEEP_COMPLETED (10000 by default) --
  specifies the number of milliseconds a completed request
  will be kept in an internal table before it can be flushed,
  so that the user can retrieve the results.
  * DNS_SOCK_BUF_SIZE (1024 by default) -- specifies
  the size in bytes of the socket receive buffer for the
  DNS socket.  An xmem buffer of this size will be allocated.
  Compatibility has been preserved for the resolve() function,
  call the MAX_DOMAIN_LENGTH macro, and the
  DISABLE_DNS macro.
- The sizeof operator can be used inside assembly blocks.
  Documented in the Dynamic C User’s Manual.
- ZCONSOLE.LIB now supports FS2.LIB.  The functions
  con_backup_bytes(), con_set_files_lx(), and
  con_set_backup_lx() have been created for use with FS2.LIB.
- All of the new and improved TCP/IP functionality has been
  documented in the Dynamic C TCP/IP User’s Manual
- A new registry entry, Include Time Stamp, has been added under
  the Dynamic C Compiler Section. This setting is set to true
  by default, but can be edited so that Dynamic C will compile
  files without including time stamp information.
- Access to time/date stamp added:
  long dc_timestamp;
- Ability to #define macros in compiler options GUI added.
- Ability to select a different LIB.DIR file in compiler
  options GUI added.
- When a program is compiled for debug, the source file will
  no longer scroll to the beginning of the code when debug
  mode is entered.

BUG FIXES
Compiler Bugs
- Defect #42 fixed.  Post and pre increments and decrements of
  auto character variables  are implemented correctly.
- Defect #100 fixed.  Compiler did not generate an error when
  assigning a cofunction to a function pointer.
- Defect #105 fixed.  Conversions from float to long for some
  overflow values caused Dynamic C to crash.
- Defect #151 fixed.  Selection operator did not work with
  arrays of structures.
- Defect #161 fixed.  Adding constant to function pointer now
  generates compiler error.
- Defect #168 fixed. Address of operator did not work properly
  for functions.
- Defect #169 fixed. Address of operator did not work properly
  for arrays.
- Defect #194 fixed.  Compiler now permits white space between
  the name and the colon of a label definition.
- Defect #207 fixed.  The compiler warns when global assembly
  labels are redefined and when symbols contained in library
  headers are defined in a user’s program.
- Defect #210 fixed. Indirect calls to functions with arguments
  work correctly when made multiple times, and when their return
  values are assigned to auto or dereferenced pointers.
- Defect #226 fixed.  An internal error occurred when using the
  auto keyword with certain variables.
- Defect #232 fixed. The sizeof operator was causing compiler
  errors in certain cases when used as an array index.
- Defect #242 fixed. In some rare instances, incorrect forward
  jumps were generated for expressions with multiple
  logical operators.
- Defect #246 fixed.  same as #42 and defect #282.
- Defect #249 fixed. Same as defect #333.
- Defect 266 fixed. Cofunction local variables outside the
  range of indexing with IX (~128 bytes) incorrectly were
  assigned the SP Relative address mode.
- Defect #273 fixed.  Invalid characters in macro identifiers
  produce errors.
- Defect #279 fixed.  Missing endheader caused compiler to crash.
- Defect #282 fixed.  same as defect #42 and defect #246.
- Defect #304 fixed.  Assembly statements in multi line macros
  expand correctly.
- Defect #312 fixed.  same as defect #210.
- Defect #313 fixed.  TCP connections could have a transient
  problem when MS_TIMER rolls over.
- Defect #314 fixed.  same as defect #210.
- Defect #329 fixed.  Sample programs that cause seg chains
  to be compiled on the bios no longer result in Abnormal
  Program Terminations when run with targetless compilation
  or on the rabbit link.
- Defect #331 fixed. Defect caused optimization to be
  incorrectly applied to test expressions containing a new line.
- Defect #333 fixed.  GPF when initializing a variable that
  was declared using an undefined structure name.
- Defect #334 fixed. Character arrays that are initialized with
  a constant string having the same length as the array are not
  null-terminated. Added a warning message to highlight this
  problem.
- Defect #349 fixed. The correct address is assigned in
  references to extern variables between libraries.
- Defect #370 fixed. The result of x%1 gave incorrect result
  of x with constant 1, should be 0 instead.
- Defect #377 fixed.  GPF when syntax error is encountered
  while parsing initializer list.

TCP/IP Bugs
- Defect #337 fixed. Using TCP/IP now forces debug, grays out
  menu item "Compile | Include debug code/RST 28
  instructions" in a checked state.
- Defect #359 fixed.  Compiler crashed on some syntax errors.
- Defect #365 fixed. RabbitLink now sets the TCP port correctly
  on bootup, if changed from the default.
- Defect #388 fixed.  Can now allocate more than a total of 32k
  of socket buffers.
- Defect #405 fixed.  sock_preread() now compiles correctly.
- Defect #407 fixed.  Some problems in HTTP
  username/password authentication are now fixed.
- Defect #427 fixed.  Sockets on reserved ports no longer stall
  in the 2MSL wait state.
- Defect #428 fixed.  HTTP servers are no longer leaked due to
  missed requests.
- Defect #429 fixed.  The HTTP server would sometimes freeze on
  startup.  This freezing no longer occurs.
- Defect #430 fixed.  A problem with some TCP/IP timeouts longer
  than 65 seconds has been resolved.
- Defect #443 fixed.  Deadlock problem using TCP/IP with uC/OS.

GUI/Debugger Bugs
- Defect #148 fixed.  Tabbing through help lookup controls no
  longer tabs to Parameter Number window when in View
  Only mode.
- Defect #164 fixed.  Watch window no longer incorrectly
  promotes integer expression to unsigned integer (Incorrectly
  marked as fixed in version 7.02P).
- Defect #229 fixed.  The Print Setup Dialog Box is now
  initialized with the default margin values.
- Defect #251 fixed.  Focus is set to file with breakpoint hit.
- Defect #253 fixed.  Ctl-H Insert Call no longer corrupts
  function name in source file after call is inserted.
- Defect #272 fixed. Closing the "Loading Initial Loader"
  window when attempting to compile a user program after
  having closed the "Loading Initial Loader" window that
  appears immediately after starting Dynamic C  stops
  compilation instead of causing a GPF.
- Defect #297 fixed. Redo (Alt-Shift-Backspace) now works
  correctly.
- Defect #299 fixed.  Now only attempts to save a file if there
  is sufficient disk space, otherwise displays a warning message.
- Defect #310 fixed. Removed length restriction to Watch
  expressions.
- Defect #317 fixed. Hitting F9 to run and F10 immediately
  after no longer causes the compilation to stall.
- Defect #319 fixed. Dynamic C no longer hangs up when
  characters with high bit set are in the source file, as can
  be introduced by other editors or other software.
- Defect #323 fixed. The default BIOS is now used if the
  Compiler Options ’Use’ checkbox is checked but
  filename is blank.
- Defect #361 fixed. Watch window Delete button is enabled
  when watch list is not empty.
- Defect #384 fixed.  Watch expressions involving arguments to
  root functions that are called by xmem functions are evaluated
  correctly.
- Defect #402 fixed. The destination address of altd djnz is
  correctly disassembled.
- Defect #433 fixed.  Print to file of a memory dump now works
  properly for logical addresses.
- Defect #456 fixed.  Some PCs were getting "received XX
  instead of ACK." message at times. This should be
  reduced now if not eliminated.

Library Bugs
- Defect #220 fixed. WrPortI and BitWrPortI now suspend
  interrupts when updating shadow registers to prevent a race
  condition with an ISR.
- Defect #255 fixed.  Incorrect references to chkPowerFail
  in SYS.LIB were changed to the correct chkHardReset.
- Defect #301 fixed.  A comment was incorrect in the
  KEYLCD.C demo.
- Defect #311 fixed. Added minimum baud rate to serXopen to
  prevent divide by zero errors.
- Defects #232, #294, and #348 fixed. (All related)
  Declarations were allowed in sizeof and cast expressions.
  Declarations using sizeof did not compile. Complex types in
  sizeof caused crashes and other problems.
- Defect #355 fixed. The RFU no longer overwrites the ID block
  when downloading a binary image larger than the primary flash.
- Defect #357 fixed. Incorrect definition of _FlashData was
  changed.
- Defect #358 fixed. Hex formats in printf now work correctly,
  with %x printing in lower case and %X in upper case.
- Defect #376 fixed.  dispContrast function now works for values
  between 45 and 60.
- Defect #382 fixed.  Long variables may now be inspected
   via Rabbitlink.
- Defect #389 fixed. strtod now converts strings longer than 9
  characters.
- Defect #391 fixed.SmartStar read analog now faster.
- Defect #392 fixed. userClockDivider() was incorrectly dividing
  peripheral clock by eight and not changing the status of
  the periodic interrupt.
- Defect #419 fixed.  Casting from long to char works with both
  direct and indirect assignments independent of storage class.
- Defect #421 fixed.  chkSoftReset() was reporting hard resets
  instead.
- Defect #425 fixed.  An external interrupt routine was
  automatically up for the RCM21xx.  This would clobber any
  user interrupt vector that was set up before sock_init.
  It now only sets up a vector if PD_INTVEC is defined to
  the interrupt vector.
- Defect #426 fixed.  WriteFlash2() was assuming an ID block
  existed at the top of the second flash and not writing
  to the top sector.
- Defect #439 fixed.  Added a runtime warning when a user
  passes an auto socket to tcp_open, tcp_listen, or
  udp_open when using uC/OS-II.
- Defect #441 fixed.  Fixed a race condition in vdriver.lib that
  would cause ucos/slice task aware isrs to not work.
- Defect #448 fixed.  Flash driver was rewriting every sector,
  even when the data was identical and a rewrite was unnecessary.
- Defect #452 fixed.  the read/writeUserBlock() functions would
  return an error when compiling to RAM.
- Defect #463 fixed.  MS_TIMER roll-over not handled in
  ConsoleFinish function

Other Functional Changes
- Feature Request #260. Using a C long macro in an assembly
  block now produces a demotion-of-value warning.
- Feature Request #270. P flag is V in register window. V and
  nv are synonymous with lo and lz.
- Feature Request #325. Users can compile with or without
  debug information to the target after compiling to a
  file without debug information.
- Feature Request #332. The Rabbit Field Utility will now look
  for the cold loader and pilot BIOS in the current working
  directory if a pathname is not found in the registry.
- Feature Request #341. Error and warning messages are now
  shortened by replacing the full pathname with just the
  filename and extension.
- Feature Request #351. All error messagebox messages now stay
  on top of all other windows within Dynamic C.
- Feature Request #443. Added HTTP_PORT to make it easy to
  override the default port on a HTTP server.
- It is no longer necessary to change USE115KBAUD in the
  BIOS to change the baud rate between 115200 and 57600 ,
  an internal macro was defined.
- The initial load of the pilot BIOS has been sped up to
  57600 baud, resulting in a reduced BIOS load time.
- Symbol and literal string table size increased.
- filesystem: File access is faster due to lookup tables in RAM
  added fshift() for removing data from the beginning of
  a file  added fs_reserve_blocks() to reserve space that can
  only be allocated by privileged files (128-143) Documented in
  Dynamic C User’s Manual.
- Dynamic C now always generates an even sized program to
  facilitate checksumming using word-wise methods.
- For uC/OS-II support, you should define the new macro
  MAX_SOCKET_LOCKS.  This defines the number of
  socket locks that will be allocated.  It defaults to
  MAX_TCP_SOCKET_BUFFERS + MAX_UDP_SOCKET_BUFFERS.
  This macro is necessary because we can no longer calculate
  the number of socket locks needed based on the number of
  socket buffers, now that the user can manage their own
  socket buffers.
- sock_bytesready and sock_dataready have been modified to
  work with the new UDP sockets.  They will return the size
  of the next datagram to be read if there is one waiting.
  sock_bytesready will return -1 if there is no datagram
  waiting. sock_dataready will return 0 if there is no datagram
  waiting--hence, sock_dataready can not distinguish between
  no datagram waiting and an empty datagram waiting.
- The functions sock_read, sock_write, sock_fastread,
  sock_fastwrite, sock_gets, sock_puts, sock_getc, sock_putc,
  and sock_preread no longer support UDP sockets.
- The functions sock_recv_init, sock_recv, and sock_recv_from
  have been removed
- UDP socket buffers are now circular, and can accept as many
  datagrams as will fit in the buffer
- TCP and UDP socket buffer management has been changed:
- The socket buffer pool has been split into separate TCP and
  UDP buffer pools
- The macro MAX_TCP_SOCKET_BUFFERS gives the
  number of TCP socket buffers that will be allocated.  It
  defaults to 4.
- The macro TCP_BUF_SIZE gives the size of a TCP socket
  buffer.  It is split into a read buffer and a write buffer of
  equal sizes. It defaults to 4096 bytes.
- The macro MAX_UDP_SOCKET_BUFFERS gives the number of UDP
  socket buffers that will be allocated. It defaults to 0.
- The macro UDP_BUF_SIZE gives the size of a UDP socket
  buffer.  It is all one read buffer, since UDP datagrams are
  sent out immediately.  It defaults to 4096 bytes.
- For backwards compatibility, MAX_TCP_SOCKET_BUFFERS
  will take on the value of MAX_SOCKETS if it is defined.
- For backwards compatibility, TCP_BUF_SIZE and UDP_BUF_SIZE
  will take on the value of SOCK_BUF_SIZE if it is defined.
- For backwards compatibility, TCP_BUF_SIZE and UDP_BUF_SIZE
  will take on twice the value of tcp_MaxBufSize if it is
  defined.
- The preprocessor symbol FS2_RAM_RESERVE may be defined in
  STACK.LIB in order to reserve a block of RAM for use by FS2.
- The maximum compilation errors and warnings can now be set in
  the dialog box shown with the Options | Compiler menu
  selection.
- Defining the label SERB_USEPORTD will cause serial
  port B to use it’s alternate rx/tx pins on parallel port D
- Additional error checking for module headers.  Specifically,
  errors are reported if BeginHeaders and EndHeaders
  do not match.
- Origin directives now support a follows specifier and a
  resume specifier to allow compiling around the system ID
  block kludgelessly. Documented in Designer’s Handbook
- Compile to bin file has an option for padding or not padding
  the file with zero’s for program code that starts at
  addresses > 0.
- A Intel HEX file is now always generated for all compiles.
- Use HTTP_MAXNAME in "HttpType" structure instead of
  hardcoded constant 20 for field "type[]".  This allows
  MIME types of longer than 19 chars in the HttpType structure.
  Developer can override HTTP_MAXNAME in their source file.
- sock_puts now has error code (-1).  It can be generated if it
  is called with a UDP socket.
- sock_gets now has error code (-1).  It can be generated if it
  is called with a UDP socket.
- Made readUserBlock, writeUserBlock functions backward
  compatible with older or no system ID block.

Additional Documentation
- All new/improved TCP/IP functionality has been documented in
  the Dynamic C TCP/IP User’s Manual.
- An appendix of useful compiler and library defined macros has
  been added to the Dynamic C User’s Manual.
- PCB Layout and EMI information was added to the Hardware Design
  chapter of the Designer’s Handbook.
- Wait State Bug information was added as an appendix to the
  Designer’s Handbook.

*****************************************************************
VERSION 7.04SE4

New Features
- Dynamic C now supports the RCM2300 series including
  new samples and documentation.

*****************************************************************
VERSION 7.04P3

New Features
- Dynamic C Premier now supports the BL200 series
  as well as Smart Star D/A boards.
- Added packet drivers. These drivers allow for
  packet based serial communication using a
  variety of packet separation modes.

Bug Fixes
- Defect #387 fixed.  The packet driver for RCM2100
  did not use shadow registers properly.
- Defect #396 fixed. Time-outs in RS232.LIB did not
  handle MS_TIMER rollover correctly.

*****************************************************************
VERSION 7.04T2

New Features
- Samples, libraries, and documentation for new
  RCM2200 core module added.
- Slave port support functions added.
- A "user block" has been added to the flash device
  along with the ID block for protected storage of
  calibration constants, IP addresses, etc.  To
  support large-sectored flash, these two protected
  blocks take up 16KB at the top of flash.  If more
  code space is needed, the user block can be removed
  from boards that are not currently using it;
  contact Tech Support for more information.
- New library tftp.lib provides a TFTP client
- Improved DHCP support (including reacquiring leases
  and file transfer support)
- New library zconsole.lib implements a customizable
  serial console with or without TCP/IP functionality
  such as a web server and mail client
- New libraries for using the Rabbit slave port:
  slave_port.lib master_serial.lib, and sp_stream.lib
- New function smtp_sendmailxmem() in SMTP.LIB.  It
  works much like smtp_sendmail(), except that it
  gets the body of the message from an xmem buffer.
- TCP Keepalives are now available. See the function
  tcp_keepalive() to turn on keepalives on a
  per-socket basis.

Bug Fixes
- Defect #254 fixed.  spkrOut() was not included in
  ctrl-H function lookup.
- Defect #257 fixed.  The flash transfer buffer will
  now be located at the top of available RAM instead
  of in the middle.
- Defect #258 fixed.  The MAC address for the second
  interface on the EG2000 is now handled correctly.
- Defect #259 fixed.  The spkrOut() function now
  disables the timer B interrupt when volume is set
  to zero.
- Defect #274 fixed. The runtime error list has been
  cleaned up.
- Defect #275 fixed. PPP driver no longer requires
  compression options
- Defect #281 fixed.  Potential buffer overflow in
  DNS lookups has been corrected.
- Defect #296 fixed. PPPsetAuthenticator() now has
  correct description
- Defect #298 fixed.  Some packets were being
  unnecessarily broadcast when the destination
  combined with the netmask was FFFFFFFF.
- Defect #302 fixed. Function description blocks in
  modem.lib have correct library name
- Defect #315 fixed. A potential race condition in the
  Realtek initialization on TCP/IP Development Kits
  was removed.
- Defect #316 fixed. Added ModemSetDTR() call and port
  pin idle high to ModemInit() for more standardized
  modem initialization.
- Defect #318 fixed. sock_recv_from() now returns
  the IP address and port number in host byte order
  instead of network byte order.  Note that this does
  affect code that depends on the old behavior.
- Defect #327 fixed.  Cloning now works for CPU clock
  frequencies > 19MHz.
- Defect #328 fixed.  512kb flash device support was
  fixed.
- Defect #336 fixed. TCP/IP stack sent unnecessary
  ACKS when a connection  was actively opened, but
  no data has been sent.
- Defect #343 fixed.  Auto variables are no longer
  corrupted when certain transcendental functions are
  called from useix functions.
- Defect #344 fixed. Serial port A now sets parallel
  port C pin correctly.
- Defect #350 fixed.  Error reading ID on some Atmel
  flash fixed.
- Defect #352 fixed. xmem2root and root2xmem were not
  reentrant.  This caused problems using HTTP with
  MuC/OS.
- Defect #354 fixed.  RES and SET forced to root
- Defect #362 fixed.  tcp_reserveport() would only
  work the first time it  was called.
- Defect #363 fixed.  FFT problems with powerspectrum
  and fft_hann  when 256 or 512 data points used fixed.
- Defect #365 fixed.  RabbitLink wouldn’t restore the
  modified TCP port on bootup.
- Defect #375 fixed.  All valid shadow registers are
  now initialized by the BIOS.
- Defect #383 fixed.  TargetlessComp GUI boards list
  now contains all Rabbit boards. New board will be
  added upon compiler upgrade, while retaining any
  previously configured boards.
- Defect #416 fixed.  The header for chkHardReset() has
  been corrected.

Other Functional Changes
- The GOCR register is now initialized to A0h. This makes the
  CLK pin low, before it was driven by the crystal. This
  actually changed in 7.02, but was omitted in the release note.
- Cloning is set to NOT clone the whole flash by default now,
  just the user program and BIOS.
- DNS lookup behavior with default domains has changed
  slightly.  If the name to be looked up contains a ’.’, then it
  is looked up directly first; if that fails, it is looked up
  with the default domain appended.  If the name to be looked up
  does not contain a ’.’, then it is looked up with the default
  domain appended first; if that fails, it is looked up directly.


Additional Documentation
- Runtime error chapter in Dynamic C manual has been
  updated and expanded.

*****************************************************************
VERSION 7.04P

New features
- New library for AES(Rijndael) encryption
- New RCM2100 specific samples have been added along with
  Realtek and IP driver modifications for full RCM2100 support.
- Added the WriteFlash2() function, which will write a buffer
  to the second flash devices on boards with two flash installed
  (this function is NOT compatible with the flash file system).
- New sample to display memory usage.
- The allocation of memory quadrants was rearranged when
  compiling to flash:
    quadrant 0 (0x00000-0x3FFFF) is the primary flash
    quadrant 1 (0x40000-0x7FFFF) is the second flash (if
                                 installed)
    quadrant 2 (0x80000-0xBFFFF) is RAM
    quadrant 3 (0xC0000-0xFFFFF) is RAM
  Previous releases of Dynamic C would swap quadrant 3 between
  RAM and the second flash to write to the second flash.

Bug Fixes
- Defect #256 fixed.  The TBCSR and TBCR registers are
  now cleared in the BIOS, preventing odd behavior with
  some programs that used the timer B interrupt.
- Defect #278 fixed.  Dynamic C correctly reports errors concerning
  running out of xmem code space.
- Defect #280 fixed.  Dynamic C crashes when the same function
  names is used in a function description block in three or
  more libraries.
- Defect #283 fixed.  Cloning was broken in Dynamic C
  versions 7.02 and 7.03.
- Defect #288 fixed. ModemSetDTR() was incorrect in modem.lib
- Defect #289 fixed. RabbitLink no longer loses serial console
  communication with the target in normal run mode.
- Defect #290 fixed. GUI for defining targetless compile data
  will now accept international floating point separators and
  will automatically convert any existing registry targetless
  compile data to use the current symbol.
- Defect #293 fixed.  Dynamic C lost communication with the BIOS
  on boards running low-frequency crystals (e.g. 3MHz).
- Defect #307 fixed. Delays in cofunctions were not working.
- Defect #309 fixed.  Flash file system could cause inadvertent
  writes to Rabbit 2000 registers.
- Defect #330 fixed. fshift() could corrupt lookup tables
- Defect #346 fixed.  Conversion programming in fs_block_init
  in fs_flash.lib no longer causes a boundary check to fail.


Other Functional Changes
- Changes to BIOS, flash drivers to make use of 512K RAM seamless

Documentation Changes
- RCM2100 manual added

*****************************************************************
VERSION 7.03P

New features
- The library zserver.lib now provides support for variables
  located in xmem.  sspec_addxmemvar() adds an xmem variable,
  and the macro SSPEC_XMEMVARLEN defines the size of the
  stack-allocated buffer that is used in sspec_readvariable()
  for xmem variables.  SSPEC_XMEMVARLEN is 20 by default.
- New function sspec_getvarkind() in zserver.lib returns the
  kind of variable represented (i.e., INT8, INT16, INT32,
  FLOAT32, or PTR16).
- New function sspec_getvartype() in zserver.lib returns the
  type of variable (i.e., SSPEC_XMEMVAR or SSPEC_ROOTVAR)
- Flash filesystem features: shifting out contents from the
  beginning of a file using fshift(), reserving blocks that
  will remain available for privileged files.

Bug Fixes
- Defect #248 fixed.  Mail sent through the SMTP client was not
  readable by some mail readers.
- Defect #265 fixed.  sock_bytesready() sometimes failed
  with ASCII TCP sockets.
- Defect #267 fixed. block checksums were being incorrectly
  modified

Other Functional Changes

Documentation Changes

*****************************************************************
VERSION 7.02P3

Bug Fixes
- Defect #261 fixed.  WriteFlash() would write the data
  requested but trash the rest of the flash sector.

*****************************************************************
VERSION 7.02P

New features
- Libraries for dial-up PPP connections
- Dynamic C can now be used to program and debug over Ethernet
  and Internet.
- The Rabbit Field Utility can now load over Ethernet/Internet.
- Programs can now be compiled to a .bin file
  without an attached target.
- Calls to xmem functions no longer use a root proxy
  (i.e., "root bouncer"), but use the lcall instruction.
  This improves code size and speed.
- Protected and shared variables are now supported.
- More descriptive error messages can be displayed by
  pressing F1 when the message window is active.
- A good map file is now generated for compiled programs.
- The #class directive can be used to change the
  default storage class to auto/static.  In DC, the
  default is normally static.
- Users can now define their own runtime error handler
  instead of the default function using the
  defineErrorHandler() function.
- ’Sleepy mode’ is better supported:  periodic
  interrupts are disabled when the CPU is switched to
  the 32kHz oscillator and re enabled when switching
  back to the main oscillator.  In addition, a new
  function, updateTimers(), can be called while in
  sleepy mode to update TICK_TIMER, MS_TIMER, and
  SEC_TIMER which normally depend on the periodic
  interrupt.
- New functions strcmpi() and strncmpi() perform case-
  insensitive string compares
- New function Disable_HW_WDT() disables the hardware
  watchdog timer.
- Watch expression text control is now a combobox
- A Tip of the Day dialog will come up if its ’Show on startup’
  checkbox is checked, or when the tip menu item in Help is
  clicked.
- New TCP/IP function, sock_bytesready(), provides
  functionality similar to sock_dataready(), except
  that it is more useful for ASCII mode sockets.
  To save memory, sock_dataready() should no longer be
  used, although it is provided for backward
  compatibility. Note that sock_bytesready() returns
  -1 for an empty socket, whereas sock_dataready()
  returns 0 for an empty socket.
- Compiler option for creating a .bin file
  with or without including the bios.
- New Watch Code radio buttons in Options/Compiler menu dialog
  box to enable any watch expressions or to restrict expressions
  to save space.
- New library zserver.lib (automatically included for the web
  and FTP servers) provides the basis for server object handling.
  It handles files (in both root and extended memory), variables,
  functions, forms, and users.  Files and users may now be
  directly shared between the web and FTP servers.  Server-
  specific notes follow:
  * HTTP Server
    http_flashspec may still be used for the web server.  Define
    HTTP_NO_FLASHSPEC if you do not wish to use the
    http_flashspec structure.
  * FTP Server
    The FTP server must use the new zserver.lib functionality.
    The FTP handler interface has changed.  One more function to
    handle directory listings has been added, and an offset
    parameter has been added to the read and write functions.
  See the TCP/IP High Level Protocols manual for more\
  information.
- The web server can now automatically generate and parse forms,
  which makes it much easier to modify variables through a web
  browser.  See the sample program form1.c and the TCP/IP High
  Level Protocols manual for more information.
- Added a new function paddr which converts a logical address
  into a physical address.
- Added smtp_setserver() to smtp.lib, which allows setting the
  SMTP server at runtime.
- bios/ramonlybios.c and bios/ramonlycoldload provided for custom
  boards having no flash with RAM connected to CS0/OE0/WE0
- A macro CS1_ALWAYS_ON was added to allow the BIOS to easily be
  changed to keep CS1 always active
- Added support for 12 new flash devices.
- A library for performing MD5 hashes, MD5.LIB, including a demo
  program, MD5_TEST.C

Bug Fixes
- Defect #3 fixed.  Line highlighting when stepping through code
  is accurate.
- Defect #12 fixed. Breakpoints can be set for jump and call
  expressions.
- Defect #26 fixed. Costatements now work correctly in
  (non-indexed) cofunctions.
- Defect #39 fixed. Compiling programs with #nodebug will cause
  the debugger to malfunction until DC is restarted.
- Defect #40 fixed. External declarations can be used with xdata.
- Defect #45 fixed. strtol tailptr problem corrected.
- Defect #53 fixed.  Expressions to sizeof operator do not
  generate code unless they have a side effect (i.e., contain ++,
  --, or an assigment operator).  This feature is not portable,
  since no sizeof expressions are evaluated in ANSI C.
- Defect #74 fixed. Fixes bug with runwatch for auto variables.
- Defect #82 fixed. A warning is now issued if a library (.lib)
  or a source (.c) file line length exceeds maximum allowed
  (512).
- Defect #85 fixed.  Lcalls can be made with two arguments: the
  first being a constant, interpreted as the xpc, followed by
  either a label or a constant, interpreted as the logical
  address.  Lcalls can also be made with a label as the only
  argument.
- Defect #87 fixed. Dynamic C no longer crashes when attempting
  to compile to a write protected directory, but issues an error
  message instead.
- Defect #107 fixed.  Fixed a GPF that can occur if Dynamic C
  is opened on a com port that is already in use.
- Defect #112 fixed.  In HTTP.LIB, file lengths are now
  represented by long integers to allow images and
  SSI-included files > 32kb.
- Defect #113 fixed.
- Defect #114 fixed.  Not a bug.  Warning should not be generated
  as arithmetic character expressions are promoted to integer.
  Improved typechecking for constant data initializers.  Shown
  program should not compile.
- Defect #115 fixed. Fixed constant initializers to match
  ISO/ANSI specification.  Only constant literals or static
  storage addresses should be allowed in initializer expressions.
  Some complex expressions with addresses are unsupported.
- Defect #117 fixed.  Oversized single and multi-dimensional root
  data arrays compiled due to 16-bit overflow.  Root data arrays
  now limited to a total of 32,767 elements.
- Defect #119 fixed.  Com port used by Dynamic C is correctly
  initialized.
- Defect #120 fixed.  Function prolog/epilogs are generated
  inline if compiling optimized for speed, and are only used
  when optimizing for size if the function includes debug
  information, or if the function is nodebug and uses auto
  variables.
- Defect #123 fixed.  Programs with certain compile time errors
  caused the compiler to enter an endless loop.
- Defect #124 fixed.  Bug limits nesting of #if and #ifdef’s
  to 3 or 4 levels.  New limit is 2048.
- Defect #126 fixed. printf problems with max neg int & long
  corrected.
- Defect #130 fixed. Landscape printing is corrected.
- Defect #131 fixed.  Using long symbol names in certain
  circumstances caused a general protection fault.
- Defect #135 fixed. HTTP header field names and SSI commands
  are now parsed in a case-insensitive manner
- Defect #138 fixed.  Programs with unclosed comments now
  generate an error during compilation.
- Defect #142 fixed. RS-485 and D/A channel 1 are now
  compatible on newer Jackrabbits.
- Defect #144 fixed. Errors reporting undefined global symbols
  reoprt the line number on which the symbol is first used.
- Defect #146 fixed. Board specific libraries not #used
  in default.h if compiling BIOS now.
- Defect #147 fixed. Duplicate case statements will produce an
  error.
- Defect #154 fixed. Fixed short circuit evaluation logical
  expressions   with a constant first operand.
- Defect #156 fixed. Now pathnames starting with \\ such as
  \\zintranet\sweng\.. can be used.
- Defect #157 fixed - MSB is masked out when receiving 7bit
  serial data.
- Defect #163 fixed. Dynamic C can now be installed to
  directories nested to many levels, and can run programs with
  long path names.
- Defect #165 fixed. pktdrv.lib will mark buffers while it is
  using them. This will prevent future problems with multiple net
  drivers sharing TCP/IP buffers.
- Defect #172 fixed. Keyword checking on identifiers has been
  implemented.
- Defect #174 fixed. Improved documentation of serial receive
  functions.
- Defect #176 fixed. More checking is done on initializer lists.
- Defect #180 fixed. Added to documentation for serXread()
- Defect #184 fixed.  pow(-x,y) would return a runtime error
  even if y was an integer.
- Defect #185 fixed. Cofunction write routines in RS232.lib now
  do a write unlock in the abandon clause.
- Defect #187 fixed. Syntax error with unions caused general
  protection fault.
- Defect #192 fixed. pd_resetinterface()--usually called
  from sock_init()--no longer locks up on custom boards.
- Defect #193 fixed. Corrected field width problems with sprintf,
  with f, e format chars.
- Defect #195 fixed. Scrolling the dump window could cause
  abnormal program termination if programming cable is
  disconnected.
- Defect #196 fixed. Disassembling could cause abnormal
  program termination if programming cable is disconnected.
- Defect #197 fixed. sock_read(), sock_fastread(), sock_write(),
  sock_fastwrite() now return -1 when a UDP socket is halted
  because of a ICMP Port Unreachable message.
- Defect #198 fixed. Bug with post inc/dec with type char.
- Defect #199 fixed. RS232.LIB function descriptions now
  documented as being non-reentrant.
- Defect #200 fixed. RS232.LIB functions separated into different
  headers to reduce code size.
- Defect #201 fixed. Floating point operators >, <, <=, and >=
  called the wrong comparison function when the compiler reorders
  the operands.
- Defect #202 fixed.  the xstring label points to the memory
  location after the table, which holds the address of the first
  table entry.
- Defect #204 fixed. The invalid instruction ld r, (hl+d) now
  produces an error.
- Defect #205 fixed. Interference between #ximport and comments.
- Defect #208 fixed. The assembler would not allow long jumps
  to forward references.
- Defect #209 fixed. All serial interrupts are explicitly
  disabled during BIOS startup. This should eliminate target
  communication errors.
- Defect #211 fixed. Register collision not detected when mixing
  long and int/char types in some expressions using the mod
  operator ’%’.
- Defect #213 fixed. A potential problem with reading and writing
  Ethernet packets whose length is 14 bytes more than an even
  256 byte multiple.
- Defect #214 fixed. A missing #endif could cause the compiler
  to hang.
- Defect #215 fixed. A bug in the flash driver could prevent
  flash writes under special conditions.
- Defect #219 fixed. 2 error/warning messages were opening up
  under certain circumstances.
- Defect #222 fixed. POP3.LIB would not receive some messages if
  they had no message-body.
- Defect #223 fixed. ucos2.lib was not deallocating a task’s
  stack when the task was deleted.
- Defect #224 fixed. Code alignment problem that incorrectly
  generated a "Out of root code space" error.
- Defect #225 fixed. #ximport defined macro symbol as int instead
  of long.
- Defect #227 fixed. Default CTS/RTS macro values work properly
- Defect #228 fixed. Fixed a problem with extremely high (attack
  level) traffic handling in the RealTek packet driver.
- Defect #233 fixed. DNS lookups no longer overflow 512-byte
  stacks in uC/OS-II.
- Defect #234 fixed. When running in RAM, bug caused xalloc
  failure to go undetected and would cause the program to crash.
- Defect #235 fixed. The PUSH flag is now set for all TCP packets
  that contain data.
- Defect #240 fixed. #ximport works correctly in header sections
  now.
- Defect #241 fixed. An If-Modified-Since header caused the HTTP
  server to close the connection.
Other Functional Changes
- The error window now displays a maximum of 10 errors,
  10 serious warnings, and 10 trivial warnings.  Checks
  for warnings and errors are separate so that when one
  category is filled, messages from the other category
  can still be reported.
- The coldloader can now be up to 0x4000 bytes in length.
- Any IO (ioe, ioi) instruction that immediately precedes
  certain 1 byte instructions using hl to access memory
  are now followed by a nop to fix hardware bug with
  these instructions.
- sock_fastwrite() now refuses to send a UDP datagram that
  would need to be fragmented, instead of only sending out
  the first fragment
- Target communication errors are now more informative, stating
  the high level activity being executed when the error occurred
  as well as the read/write address if applicable.
- Default MTU size for IP packets is set to 600. This allows for
  smaller packet buffers
- DCRTCP supports SYN queing, where new connections can be
  accepted and maintained before an available socket is made
  ready.
- Floating point code moved to xmem to save root code space.
- Pointer checking code was moved to xmem
  and BIOS, start-up, and program code now immediately follow
  each other to conserve root memory space.
- Pointer checking initialization is now done at compile
  time.  Turning runtime pointer checking off will reduce the
  amount of root code space used by 256 bytes.
- The semantics of the keywords "xmem" and "root" apply to
  function prototypes.
- New limits.h file (that is automatically included) defines
  constants representing the limits of representable values
  for C variable types (such as INT_MAX and INT_MIN)
- The flash buffer has been moved from root memory to XMEM,
  freeing up 1024 bytes of root memory for user programs and
  variables.
- Ctrl-S shortcut key for save file added.

Documentation Changes
- DC User’s Manual
   * Chap 2 Removed list of improvements over old Z180 version.
            Noted that DC can be used to program and debug over             the Internet.
   * Chap 4 Replaced graphic of primitive data types with             limits.h values.
   * Chap 4,11 class keyword added
   * Chap 4 Removed tables showing recommended prog. form;
	    replaced with more readable text.
   * Chap 4 Improved descriptions of Modules and function             pointers.
   * Chap 5 Added loophead(), loopinit() descriptions.
            Noted that costatements are not used with indexed             cofunctions.
   * Chap 8 Added run-time errors to table: 250 and 251
   * Chap 10 New chapter on the flash file system
   * Chap 12 keyword descriptions updated for: const, class,              xmem, xdata, xstring, memmap, while.
   * Chap 14 Added new function descriptions:
             defineErrorHandler,forceSoftReset, fsck,
             read_rtc_32kHz, paddr, flashfile functions, removed
             Alloc_Stack Corrected various function descriptions.
   * Chap 15 Noted that multiple instances of DC can run
             simultaneously. Updated Compiler Menu, described new
             options. Updated Compiler and Communications Options
             dialog boxes. Updated Print description.

-Designer’s Handbook
   * Added appendix about baud rates
   * Updated information on flash driver
   * Updated table of supported flash memories

-TCP/IP High-Level Protocols
   * Added chapter on the Server Utility Library
   * Added chapter on Remotely Modifiable Variables
   * Added chapter on console.c
   * Added 2 appendices on HTML forms
   * Updated function descriptions, added sspec_setformepilog and
     sspec_setformprolog
-TCP/IP Function Reference
   * Added new flash file system functions
   * Added low-level flash memory access functions
   * Updated various other functions
-IP Drivers Manual
   * Created new manual for IP drivers; currently contains PPP
     driver.

*****************************************************************
VERSION 6.57P2 / 6.57T2
Bug Fixes
-Added reference to LIB.DIR for POP3.LIB

*****************************************************************
VERSION 6.57P1 / 6.57T1

Bug Fixes
-Defect #192 fixed. pd_resetinterface()--usually called
 from sock_init()--no longer locks up on custom boards.

*****************************************************************
VERSION 6.57

New features
-TCP/IP socket buffers are now in extended memory,
 thus freeing up some root memory and allowing more
 sockets to be used.  This change required several
 other changes:
 * Use the macro MAX_SOCKETS to define the number
   of sockets that will be allocated (not including
   the socket for DNS lookups). Code that uses more
   than 4 sockets will not work without using the
   MAX_SOCKETS macro.
 * Use the macro SOCK_BUF_SIZE to determine the
   size of the socket buffers--note that a TCP
   socket will have two buffers of size
   (SOCK_BUF_SIZE / 2) for send and receive, and a
   UDP socket will have a single socket of size
   SOCK_BUF_SIZE.
 * Define the macro DISABLE_DNS to disable DNS
   lookups.  This prevents a UDP socket for DNS
   from being allocated, thus saving some memory.
 * tcp_MaxBufSize should no longer be used,
   although backwards compatibility is preserved.
 * Auto sockets (sockets allocated on the stack)
   should not be used. When auto sockets are
   deallocated (go out of scope), their buffer area
   will not be freed for future auto sockets to use.
-TCP/IP stack is reentrant, and can be used with uC/OS
-New function xmem2xmem() added
-New cloning option, CLONEWHOLEFLASH, allows user to
 clone entire flash device or just the program code.
-Flow control and parity control added to serial library

Bug Fixes
-Defect #140 fixed. Calling tcp_config("HOSTNAME", ...)
 after sethostname() now works correctly.
-Defect #150 fixed. Broadcast addresses of the form
 X.Y.Z.255 work correctly.
-Defect #167 fixed.  Bug caused the compiler to incorrectly
 evaluate some #if expressions.  This problem only occured after
 a previous compile error occurred.
-Defect #170 fixed. Cloning was not copying the
 top 32kb of flash.
-Defect #178 fixed. TCP sockets took 10 seconds to close
 when the remote side initiated the close.
-Any IO (ioe, ioi) instruction that immediately precedes
 certain 1 byte instructions using hl to access memory
 are now followed by a nop to fix hardware bug with
 these instructions.
-Defect #181 fixed.  Jackrabbit D/A channel 1 was
 always disabled.
-Defect #186 fixed.  Jackrabbit D/A channels would
 occasionally produce inverted voltages, i.e. a high voltage
 when a low voltage was requested and vice-versa.
-Defect #188 fixed. Corrected update of PDDRShadow in
 Jr485Init().

Documentation Changes
-TCP/IP An Introduction rev. D
 * tcp/ip and µC/OS-II compatibility documented
 * tcp_MaxBufSize deprecated
-TCP/IP Function Reference rev. B
 * MAX_SOCKETS, SOCK_BUF_SIZE and DISABLE_DNS documented
 * Packet Driver functions deleted from category section
 * tcp_config documented
 * _arp_resolve documented
-TCP/IP High-level Protocols rev C
 * FTP_MODE_UPLOAD and FTP_MODE_DOWNLOAD documented
 * Chapter on POP3 added
-Dynamic C Users Manual rev. I
 * xmem2xmem documented
 * Help Menu screen updated
 * Error messages documented in run-time error msg. table
 * tcp/ip and µC/OS-II compatibility documented
 * write_rtc and tm_wr function descriptions updated
 * Delay function descriptions updated
 * serXread tmout parameter clarified
-Dynamic C Users Manual rev. J
 * Multitasking chapter overhauled
 * Dump at Address dialog box updated
 * serXparity description expanded
-Rabbit 2000 Designers Handbook rev. E
 * Cloning chapter updated
*****************************************************************
VERSION 6.56
Upgrade Core Module Dev Kits from 6.52

New features
-New function Disable_HW_WDT added

Bug Fixes
-Defect #154 fixed. Fixed short circuit evaluation
 logical expressions with a constant first operand.
-Defect #131 fixed. Using long symbol names in certain
 circumstances caused a general protection fault.
-Defect #162 fixed. strncmp() and strncmpi() no longer
 compare beyond a null terminator.

Documentation Changes
-The Dynamic C User’s Manual revised to Rev H. The
 Function Reference now includes a functional grouping
 listing.
-Description of Disable_HW_WDT added.
-Descriptions of new serial flow control and parity
 functions added
-The Rabbit 2000 Designers Handbook is revised to Rev D.
 Improvements were made to the Cloning chapter.

*****************************************************************
VERSION 6.55
Upgrade JackRabbit Dev Kits from 6.52

New features
-New functions strcmpi() and strncmpi() perform case-
 insensitive string compares

Bug Fixes
-Defect #135 fixed. HTTP header field names and SSI
 commands are now parsed in a case-insensitive manner
-Defect #141 fixed. Clearing TACR bit for timer A1 usage,
 allowing reopening at a high baud after opening at a low
 baud that required the bit to be set.
-Defect #142 fixed. RS-485 and D/A channel 1 are now
 compatible on newer Jackrabbits.
-Defect #146 fixed. Board specific libraries not #used
 in default.h if compiling BIOS now.
-Defect #152 fixed. Board now correctly reads in ID
 block while running in RAM.

*****************************************************************
VERSION 6.54
Dynamic C Premier initial release

-No compiler or GUI changes. All libraries and sample
 programs for all Rabbit based products released.
-First release to include uC/OS-II. Jean Labrosse’s
 real time kernel is now available royalty free for
 Dynamic C for Rabbit users.

Bug Fixes
-Defect #129 fixed. Some #use lines in default.h were
 incorrectly commented out in 6.52. This caused compiler
 errors in some JackRabbit and LCST sample programs.

Documentation Changes
-The Dynamic C User’s Manual Revved to Rev F. A new
 chapter 6 on the virtual driver was inserted.

*****************************************************************
VERSION 6.53
New Features
-uC/OS-II Library and samples programs added. (Premier
 version only)
-The Rabbit Field Utility, RFU.EXE has been added. This
 program is for loading BIN files created by Dynamic C
 to a Rabbit target without using Dynamic C.
-Highlighted text in assembly window now continuously
 updates sum of cycle times as the mouse is moved.

Bug Fixes
-Defect #48 fixed.  GPF occurred if initial BIOS compile
 was interrupted.
-Defect #77 fixed. Added function to update TICK_TIMER,
 MS_TIMER, and SEC_TIMER while running off 32kHz
 oscillator.
-Defect #78 fixed. The About Box can no longer have
 multiple instances.
-Defect #90 fixed. Lib.dir can now contain CR/LFs on the
 last line.
-Defect #91 fixed. Unnecessary write to GOCR eliminated.
-Defect #92 fixed. The user BIOS file selection dialog
 box is now modal.
-Defect #95 fixed.  Bug introduced while fixing defect #64
 would disable Jackrabbit high-power outputs 0 and 1.
-Defect #104 fixed. Slice statement debugging works
 correctly.
-Defect #106 fixed.  ISR’s using ’interrupt’ keyword were
 not being forced to root.
-Defect #108 fixed.  ftoa was giving compiler errors due
 to missing headers.
-Defect #110 fixed. Shadow registers SxCRShadow are now
 being used in RS232.LIB serXopen and serXclose functions.
-Defect #111 fixed.  Fixed a problem with rx buffers on
 RealTek getting corrupted.  Optimized overflow handling
 in the ethernet packet driver.
-Defect #121 fixed.  BIOS no longer assumes cloning mode
 if PB1/CLKA pulled low unless cloning is enabled.
-Defect #122 fixed.  IB0CRShadow is now correct.

Other Functional Changes
-Updated PDDRShadow in Jr485Init().

*****************************************************************
VERSION 6.52

Bug Fixes
-Defect #88 fixed. Some relational expressions
 were generating bad code.
-Defect #89 fixed. Missing SPxCR shadow registers added.
-Defect #96 fixed. Closing Dynamic C while the app. was
 minimized, then opening it, could cause bad registry
 entries for the main window coordinates.
-Defect #97 fixed. Rearranged ports D and E register
 initialization in BIOS to avoid occasional problems
 when program is recompiled.
-Defect #98 fixed. SMTP.LIB (TCP/IP) now resets the
 timeout value correctly when activity happens.
-Defect #101 fixed Recovered 8k of free space from top
 of RAM by moving up data segment to top.
-Defect #103 fixed. used correct TACR mask for serial
 ports A, B and D when low baud requires timer A.
-Defect #125 fixed. DNS cache lookups work consistently.

Other Functional Changes
-Data segment moved up in RAM to free more space
 for xalloc.
-Core Module samples added.

Document Changes
-Major overhaul to Rabbit Designer’s Manual

*****************************************************************
VERSION 6.51

Bug Fixes
-Defect #80 fixed. Post decrement of integers in logical
 expressions handled correctly now.
Document Changes
-#ximport description added

*****************************************************************
VERSION 6.50 (Release 3)

New Features
- TCP/IP (Available with the TCP/IP dev. kit and
 Premier versions of Dynamic C).
 TCP/IP stack with support for the RealTek NE2000
 Ethernet chipset.  Library support for:
 * Socket level TCP and UDP programming.
 * HTTP (web server ) with server side includes (SSI)
   and a CGI interface.
 * SMTP client (mail)
 * FTP client and server
 * TFTP
 * TELNET
 * PING

 Added to DC user’s manual as chap. 13.

-Fast Fourier Transform functions added:
 fftcplxinv, fftcplx, fftreal, fftrealinv, hanncplx,
 hannreal, powerspectrum
 Documented in DC user’s manual.

-A new flash driver has been added to the BIOS.  This
 driver recognizes a variety of small-sector flash
 devices and manufacturers.  In addition, an
 "ID block" on the flash device containing useful
 information about the product is now supported.
 A new macro, _BOARD_TYPE_, is internally defined by
 Dynamic C using the a field of the system ID block.

-Support for "cloning" (copying the contents of one
 board’s flash device to another board via a special
 cable) has been added to the BIOS.  See the designers’
 manual for more details.

-Dynamic C now determines the sizes of the RAM and
 Flash automatically so that manual changes to BIOS
 code are no longer necessary for different memory
 sizes. The determination is done during the boot-
 strap stage and is based on the hardware present.

-"No debug compile" compiles all code as "nodebug"
 to flash memory on target.  To run the program
 after compiling with this command, disconnect
 the target from the programming port and
 toggle the reset line.  Documented in DC user’s
 manual in chap. 12.

-"Compile to .bin file" compiles the program to a file
 with the .bin extension.  The .bin file may then be used
 with a flash burner to program similar flash devices.
 Documented in DC user’s manual in chap.12.

-Selecting RAM or FLASH located in the
 "Default BIOS Memory Setting" box in the "Compiler"
 options window now defines the macros _RAM_ or
 _FLASH_, respectively.  Using these macros,
 a single, user defined BIOS file can be developed
 for both types of memory.  Documented in DC user’s
 manual in chap. 12.

-The Help menu has new commands, "Operators" and
 "Keywords" which open the HTML index pages for the
 descriptions of those items.

-Stack Allocation Functions added; documented in DC user’s
 manual.
___________________________________________________

Other Functional Changes

-Constant data may be created in extended memory
 through the constructs xdata and xstring.
-Supports extended memory (xmem) allocation
 through function Xalloc.
-Supports allocation of multiple stack sizes
 through function Stack_Alloc.
-Sample program SEEPARAM.C added.
-RAM and flash BIOS files were merged.
-Serial open functions now automatically modify timer A1
 and use timer A1 when the baudrate specified is low
 enough to require a timer A1 modification.
-The two BIOS source files, JRABBIOS.C and JRAMBIOS.C
 have been replaced by one file, RABBITBIOS.C
-PILOT.BPF was renamed to PILOT.BIN
-JRABBIOS.RTI was renamed to RABBIOS.RTI
-The cycle time total in the assembly window is
 now updated continuously, not just when the mouse
 button is released.
-sprintf, printf and several other functions were made
 reentrant. The uC/OS-II documentation specifies which
 library functions are not reentrant.
-A new macro CLOCK_DOUBLER in the BIOS was added. If this
 macro is set to 1 (default) then clock speed is doubled
 by the BIOS code if the crystal frequency is <= 12.9 MHz.

Bug Fixes

-Defect #17 fixed. Illegal use of type void is now
 caught by the compiler.
-Defect #20 fixed. Adding a char to char value returned
 from a function works now. Compiler now promotes character
 math to integers to fix the bug and to more closely match
 ISO/ANSI C.
-Fixes bug with expression "*(p++)" where p is a pointer.
-Defect #22 fixed. Crashes were happening when too large a
 string was created with concatenation using continuations.
-Defect #27 fixed. Log functions now cause run-time
 error if given zero for an argument instead of returning
 a garbage value.
-Defect #28 fixed. pow(-0,1) returns zero instead of
 causing a run-time error.
-Defect #29 fixed. Serial port ISRs no longer write
 incorrectly to status registers.
-Defect #30 fixed. Comments corrected for serial sample
 programs.
-Defect #31 fixed. The main application window now
 retains its position, size and maximization state
 between runs.
-Defect #32 fixed. setvect and getvect documentation
 removed from manual.
-Defect #35 fixed. Changing the user defined BIOS now takes
 effect immediately.
-Defect #36 fixed. Virtual watchdog timers can be allocated
 and deallocated more than 10 times.
-Defect #37 fixed. Access to the first array element of
 char pointer in an array of structures generates correct
 code now.
-Defect #38 fixed. DC now compiles files using
 UNIX style newlines.
-Defect #41 fixed. Problem with bitwise operators
 ’&’,’|’, and ’^’ with char operands.
-Defect #42 fixed. Problem indexing arrays with auto variable
 as index corrected.
-Defect #43 fixed. Error with subtraction of constants in
 pointer arithmetic corrected.
-Defect #44 fixed. Last line of library files was not compiled
 if a newline was not present.
-Defect #46 fixed. Specifying string length with a variable
 argument in printf, sprintf now works.
-Defect #47 fixed. Problem with incrementing/dereferencing
 a pointer corrected.
-Defect #51 fixed.  Xmem defect no longer crashes.
-Defect #52 fixed. Casting addresses of integers to integers
 now longer causes incorrect dereference.
-Defect #54 fixed.  Using a variable for the precision
 specifier in  sprintf, printf floating point output
 now works.
-Defect #55 fixed.  Returning a long value from a cofunction
 to an auto variable was generating an internal error.
-Defect #56 workaround.  A hardware bug that
 affected external interrupts has been circumvented
 via a new function, SetVectExtern2000(). Sample
 program Samples\Intrupts\Int0demo.c has been modified
 to reflect use the workaround. A new function
 GetVectExtern2000() has been created  also.
-Defect #57 fixed.  DC now correctly dereferences and casts
pointers from unsigned longs to unsigned integers.
-Defect #61 fixed. For find, find/replace, disassemble at
 address, and dump at address dialogs, current search
 string is properly added to list of previous search strings.
-Defect #62 fixed.  Clock counts in the Assembly window
 correctly now.
-Defect #63 fixed. Assembler generated bad code
 for adc hl’, hl and rl hl’.  The latter now generates
 a compiler error.
-Defect #64 Fixed. jrioInit now properly sets port E pins
 for A/D.
-Defect #66 Fixed. Bug that prevented use of 29MHz crystals.
-Defect #67 Fixed. Problem choosing between jump relative and
 jump conditional with nodebug for loops.
-Defect #68 Fixed. Bug with compiling C statements embedded
 in assembly code across the xmem page boundary.
-Defect #69 Fixed. Bug in compiler that prevented code
 generation above 512k.
-Defect #70 Fixed. Compile information reported in
 prog_param structure and information window now correct.
-Defect #71 Fixed. Placed the inline function bit/BIT into
 root memory.
-Defect #72 Fixed. Support is now given for serial baudrates
 requested in serXopen(baudrate) for which a divisor greater
 the maximum allowable 255 would be required, by prescaling
 with Timer A1.
-Defect #73 Fixed. Cofunctions with abandonment code
 were not properly restoring the xpc.
-Defect #75 Fixed.  periodic_init was not using the
 GCSR shadow register.  Now does.
-Defect #76 Fixed. Compiler allowed slice statements to access
 variables with local extent instead of causing a
 compile-time error.
-Defect #79 Fixed. Allow timer to decrement to zero
 after setting for baud rate divisor.

Other changes in the DC user’s manual
-Chapter 9: addition of keywords, xdata and xstring
-References to RS232.lib were changed to SERIAL.lib
-Chapter 11: setvect and getvect deleted.  SetVectIntern,
 SetVectIntern2000
 GetVectIntern, GetVectIntern2000 were added.

*****************************************************************
VERSION 6.19

New Features
-Compiler now recognizes 32 significant characters in
 identifier names.

Bug Fixes

-Defect #56 workaround.  The hardware bug that
 affected external interrupts has been circumvented
 via a new function, SetVectExtern2000().
-A new function GetVectExtern2000() has been created
 also.
-Defect #34 fixed. Serial open functions no longer
 dependent on value stored in battery backed RAM.
-Defect #59 fixed. Integer division by constants equal
 to powers of 2 + 1 now works correctly.
-Target reset/BIOS compile is now suppressed when the
 warning report options are changed.
-Defect #60 fixed. Fixed problem with printing on some
 operating system/printer combinations.

*****************************************************************
VERSION 6.18

Bug Fixes

-Fixed bug with inline function bit/BIT.
-Added prototypes to util.lib so that inline
 functions bit, set, res, ipset, and ipres compile.
-Fixed parsing bug with ipres.
-Defect #33 fixed. Fixed communication error messages
 "CE_FRAME" and "CE_BREAK" that were happening on
 some PCs.
-Fixed bug where BIOS compiles when Warning Report
 options change.

*****************************************************************
VERSION 6.17

New Features

 The processor instruction cycle times are now
 displayed in a column to the right of each opcode
 in the Assembly window. Selecting text in the
 Assembly window replaces the cycle time in the
 lowest selected row with the total of the cycle
 times in the selection when the left mouse button
 is  released. On the next mouse click, the original
 cycle time is restored. There are some instructions
 whose time cycle times depend on whether a branch is
 taken or the count stored in BC. These are not
 totaled  and an asterisk will appear next to the
 total time if they are selected. Cycle times assume
 0 wait states.

 The online documentation can be accessed from a new
 Help Menu command. The default URL can be changed
 in the Registry entry:
 Software/ZWorld/DCW/Rabbit/6.17/Dynamic C Personality/DEFAULTURL

 The Dump feature now has an option to dump the flash
 image to a binary file.
______________________________________________________

Other Functional Changes

-Floating point math including transcendental functions
 has been speeded up considerably.
-The BIOS and programs are now compiled from file
 unless the corresponding edit window is dirty.
-Function chains now work between the precompile
 section (after the pragma in the bios) and the user
 program compile.
-The #precompile can be used after the pragma to
 precompile library functions.
-The compiler options now support a persistent user
 selected BIOS file.
-Code generated for relational operators (signed/unsigned
 integers), post-increment, and "nodebug" loops is faster.
-Compiler now uses sp relative load/store and jump
 relative instructions for faster/smaller code.
-Integer assignment to zero is faster.
-Dynamic C now takes a command line option (-c <name>)
 to append a string to the version number registry sub key.
 This change allows multiple installations of the same
 version.
-Added missing Interval Tick function
-Added some sample programs
-Dump window now accepts segmented root address, bb:aaaa.
-Printing of selected text, specified page ranges, and
 user control of print margin settings are now implemented.
-Serial port options extended to include COM7: & COM8:
-"Assembly code compiled to xmem" warning disabled

Bug Fixes
-useix was being ignored, this is fixed
-Issuing a compile while a program is running shows the
 correct program name in the dialog.
-Xmem boundary checking is improved.
-Added necessary library support for the interrupt keyword
-Fixed bugs in anaIn function that could cause port A to
 change values.
-Fixed bug with pointer and character type addition.
-Slice statement tick now matches TICK_TIMER.
-Fixed a problem with slice statement yield and waitfor.
-Fixed a problem with bitwise operations on functions that
 return a character.
-LIB.DIR file was not being closed properly after checking
 it for updates.
-Fixed bug where calling root cofunctions from xmem did
 not restore xpc.
-Removed shortcut key conflicts on the Options and Edit
 pull down menus.
-Fixed access violation when attempting to close
-Memory leaks repaired
-Fixed a problem with xmem address check for
 switch statements and cofunctions.
-Fixed general protection fault caused by interaction
 between message window and source windows.
-Fixed printf bug for smallest signed int (-32768).
-Fixed bug with string literals located in global
 assembly blocks.
-Fixed bug that was reporting atan(-1) as pi/4, now -pi/4
-PDCR was not addressed in Jr485Init(), but now is set to
 0 (pclk/2) to resolve possible contention with DA1.
-Fixed bugs with jumps across xmem page boundaries.
-Fixed bug in serDputc, return value was 0 if unsuccessful
 but uninitialized if the character was successfully put.
-Fixed alignment/allocation of constant data pointers.
-Fixed message box bug with closing modified edit windows.
-Fixed sqrt(-0.0) it now returns -0.0

*****************************************************************
VERSION 6.04D

Bug Fix
- storage of freq_divider in the RAM BIOS source was
  incorrect causing serial open functions in serial
  library to set the wrong baud rate when running from
  RAM.

*****************************************************************
VERSION 6.04C

Bug Fixes
- Installation
    Remove Read-only attributes from Dynamic C root
    directory during installation.
Updates
- JackRabbit Board Schematic 090-0092.pdf updated.
- Added C operator reference to Dynamic C Help.

*****************************************************************