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

	Dynamic C for Rabbit Release Notes

******************************************************
******************************************************
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 Ppreview 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 SKRAM 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.

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