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

	Dynamic C for Rabbit Release Notes
******************************************************
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.05P

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 manger 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 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 server 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 userid for a given username.  sauth_setpassword()
  sets the password for a given userid.  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 confunction 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
  generatea 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 causinb compiler
  errors in certain cases when used 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 multiline 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 #410 fixed.  Sock_mode now sets flags properly.
- 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 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 independant 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 #432 fixed. Xmem buffers in Packet.lib no longer
  have potential problem if on odd boundary.
- Defect #435 fixed.  Serial port initialization clarified in brdInit. 
- 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 #440 fixed.  Directed UDP datagrams are no longer
  mistakenly sent using the broadcast MAC address.
- 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 #450 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
- Defect #466 fixed ser_paritytable was defined in both the
  RS232 and PACKET libraries causing compile errors if both
  were used.

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 inital 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 checksummin using word-wise mthods.
- 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.
- Updated Targetless Compilation Configuration GUI board descriptive
  names to show 512k flash where appropriate.

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 #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 boundry 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 reenabled 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 menuitem 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 #182 fixed.  It was possible for read_rtc() to
  occasionally read the RTC while it was updating, causing
  invalid data.  A similar function, read_rtc_32kHz(), was
  added to allow access to the RTC while running off
  the 32kHz oscillator.
- 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 giviing 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 concatentation 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 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 supressed 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.

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

VERSION 6.04B
- The carry flag in the alternate flag register was being reset 
  to zero when single stepping
- sqrt() inaccuracy for selected numbers corrected

