VERSION 9.50 NEW FEATURES - Added the error_message function to errors.lib. This function returns a descriptive string in xmem corresponding to an error code. - New sample tcpip\http\cgi_concurrent.c demonstrates how to manage concurrent CGI instances accessing a single shared resource, including proper behavior when the HTTP connection aborts. BUG FIXES Compiler Bugs - Defect #81458 fixed. Missing right parens in statements generated bogus line numbers, and a 2nd compile could cause a fatal error. - Defect #81474 fixed. Compiler reported bogus error message about an unclosed comment at end of file if there was a name collision between symbols. - Defect #81482 fixed. Execution cursor could be incorrect when stepping over a nodebug function containing _TRACE. - Defect #81485 fixed. DC now generates correct code for complex conditionals in cofunctions. - Defect #81546 fixed. Constant structure assignment fixed. - Defect #81556 fixed. Float to Unsigned Long cast error fixed. - Defect #81557 fixed. Constant multi-dimensional array of structs access fixed. - Defect #81564 fixed. Forward jumps in asm const blocks now correctly fixed. - Defect #81568 fixed. Setting FAST_INTERRUPT to 1 in separate I&D no longer generates compile-time errors. - Defect #81575 fixed. Execution tracing no longer generates a Target communication error. - Defect #81587 fixed. Many memory leaks fixed. - Defect #81613 fixed. Error log exception values changed. - Defect #81636 fixed. Nested structure and union member access and assignment fixed for multiple levels of structure nesting. GUI Bugs - Defect #81255 fixed. Dynamic C will now exit if the project file is read-only. - Defect #81448 fixed. Dissassemble at cursor function was not working in libraries. - Defect #81449 fixed. Warnings highlighted incorrect lines and the single step debug cursor placement was sometimes incorrect in library code. - Defect #81450 fixed. Copy-and-paste containing TABs could cause strange behavior. - Defect #81455 fixed. Watches for some constant constructs not working. - Defect #81476 fixed. Dynamic C no longer can consume all available virtual memory and effectively lock up the PC. - Defect #81483 fixed. Project open/close did not cancel if modified file close query was cancelled. - Defect #81490 fixed. You can now right click for copy/paste in project options defines box. - Defect #81547 fixed. The compiler can now use COM10 or higher for target communications. - Defect #81566 fixed. Switching focus to DC no longer moves the cursor to the compiler message box. - Defect #81572 fixed. Memory leak in compiler messages window corrected. - Defect #81573 fixed. Debug mode problems when running BL1810 (14 MHz) JackRabbit (did not stop on F4) corrected. - Defect #81576 fixed. Switch to debug mode (shift + F5) now works in compile-to-RAM mode. - Defect #81621 fixed. Flyover watch expressions are now correct for string constants in xmem code. - Defect #81631 fixed. Watching string literals has been fixed. Library Bugs - Defect #81480 fixed. FS2.LIB's fs_sync() will no longer return an uninitialized value as its result. - Defect #81487 fixed. Constant LZ_LOOK_AHEAD_SIZE now defined in LZSS.LIB. - Defect #81492 fixed. STRING.LIB's memcpy / memmove functions returned src instead of dst if copy size was zero. - Defect #81543 fixed. Timeout is no longer calculated during SYN handshake. - Defect #81560 fixed. PCFR and PCFRShadow were not set correctly in spa_init in RS232.LIB. - Defect #81570 fixed. Corrected removeram origin directive definition. - Defect #81574 fixed. Dynamic C crash and exit due to incorrect origin directive definition fixed. - Defect #81577 fixed. Removeram origin now defined for flash compile mode. - Defect #81580 fixed. Documentation: WrPortI can be interrupted by ISRs. - Defect #81581 fixed. sf_enableCS() and sf_disableCS() now protect shadow values when calling WrPortI. - Defect #81585 fixed. Setting a watch expression will no longer corrupt memory in non-separate I&D mode. - Defect #81590 fixed. RabbitFLEX keypads with other than 2 outputs now work correctly. Also, this change will cause the outputs on a 2-output keypad to swap, so reported keycodes on a 2-output keypad will change. - Defect #81597 fixed. DHCP Fallback is working again. - Defect #81604 fixed. xalloc_stats(0) is working again. - Defect #81608 fixed. DHCP client now updates the IP address assigned when the server requires it. - Defect #81657 fixed. On the ASIX AX88796 Ethernet chip, when the Ethernet cable is rapidly plugged and unplugged, the PHY could fail to detect a connection. The ASIX driver will now periodically check the link status, and will reset the PHY when it is down to work around the problem. - Defect #81662 fixed. Analog and Ethernet related macros are now defined appropriately for the BL2000B. - Defect #81663 fixed. The BL2010 and BL2030 specific "ADC_1OBIT" macro has been corrected to read "ADC_10BIT" (capital letter O typo changed to a numeral zero). - Defect #81666 fixed. The TCP/IP stack will no longer respond on TCP port 0 when the reserve ports functionality is enabled. - Defect #81667 fixed. Programs now initialize properly after reset. This bug had only affected non-looping programs. - Defect #81675 fixed. BIOS's UserBlockAddr variable is now correct in Compile to flash, run in fast RAM compile mode when target board has a unique version 5 ID block installed. - Defect #81678 fixed. Can now read all of User block when version 5 unique ID block and large size User block are installed. Sample Program Bugs - Defect #81507 fixed. Userblock_clear.c now correctly attempts to clear only the available User block area. - Defect #81508 fixed. Userblock_info.c now reports correct information for unique v. 5 ID block. - Defect #81551 fixed. SerialToEthernet/FastSer2Eth.c no longer causes timeout errors. - Defect #81552 fixed. MultiPort_S2E - Errors no longer generated when compiling to a .bin file. - Defect #81559 fixed. The dlm_serial_2_flash.c sample now works again. - Defect #81561 fixed. Sample zconsole\userblock_tcpipconsole.c did not compile. NetConfSave is now defined. RFU Bugs - Defect #81578 fixed. The RFU will no longer issue an error if the file dropdown list exceeds 9 entries. OTHER FUNCTIONAL CHANGES - Error logging is updated to version 2. Run time exceptions are now reported / recorded as negative int values and Dynamic C's traditional run time error codes have changed. See details in Lib\errno.lib and in Lib\BiosLib\errors.lib. ***************************************************************** VERSION 9.25 NEW FEATURES - Samples, libraries updated and documentation added for the new RCM3305 and RCM3315 boards. BUG FIXES Library Bugs - Defect #81461 fixed. SFLASH.LIB's sf_devtable pagebitshift value for the AT45DB321 serial flash type has been corrected. - Defect #81473 fixed. SFLASH.LIB's sfspi_bitrev, sfspi_xbitrev functions now explicitly clear b register to zero as required. - Defect #81475 fixed. In default.h, the ADC, DAC and Ethernet options are now properly specified for the BL2000B. Compiler Bugs - Defect #81470 fixed. One byte hl-indirect instructions following an io prefix instruction require a preceding nop in order to function correctly in 2T and 3T 2000 processors. This fix broke in version 9.01 by way of simply replacing the instruction by a nop. The correct behavior has now been restored. ***************************************************************** VERSION 9.24 NEW FEATURES - Samples, libraries updated and documentation added for the new RCM3365, RCM3375 boards and development kit. - Samples, libraries updated and documentation added for the new RCM3750 board and development kit. - Samples (Samples\LowPower\*.c),library (Lib\LOWPOWER.LIB) added to demonstrate low power (via run-time selection of lower clock rates) capabilities of the Rabbit 3000 CPU. BUG FIXES Library Bugs - Defect #81401 fixed. In NFLASH.LIB nf_initDevice function, the correct shadow register address is now used for IBxCR where "x" is nonzero. - Defect #81402 fixed. In BL25XX.LIB, the low-level anaIn and cof_anaIn functions will not hang on stepping direction inputs that stabilize at a level different from their initial level. - Defect #81431 fixed. Realtek power up function now works as expected to power Realtek up after power down. ***************************************************************** VERSION 9.22 BUG FIXES Library Bugs - Defect #81424 fixed. RCM34XX.LIB ADC functions now return the proper error code for a timeout (ADTIMEOUT macro value, -4095). ***************************************************************** VERSION 9.21 NEW FEATURES - The program samples\tcpip\virtualeth.c demonstrates the virtual Ethernet capability introduced in Dynamic C 8.30. BUG FIXES TCP/IP Bugs - Defect #81322 fixed. SMTP Auth support will now fall back to non-authenticated access if authentication fails. The macro SMTP_AUTH_FAIL_IF_NO_AUTH can be defined to return to the old behavior. - Defect #81380 fixed. For ASIX chipsets, removing the Ethernet cable and subsequently sending frames will no longer lock up the program. Other Functional Changes - VSERIAL.LIB now has support for serial ports E and F. - The macro SMTP_AUTH_FAIL_IF_NO_AUTH can be defined for SMTP.LIB, which will cause the library to not fall back to non-authenticated access should authentication fail. - UDP will now accept datagrams with a source address of 0.0.0.0. ***************************************************************** VERSION 9.20 NEW FEATURES - Samples, libraries, and documentation added for new PowerCoreFLEX standard series boards. BUG FIXES Library Bugs - Defect #81304 fixed. In PART.LIB, format device and create partition functions cause a run time exception if not enough xmem RAM is available. Note that this bug was actually fixed in Dynamic C v. 9.01. - Defect #81371 fixed. The RCM2260 was not properly recognized in RS232.LIB, PKTDRV.LIB and others. - Defect #81374 fixed. PART.LIB - Unexpected interrupt while running fat_shell.c "format 0" in fast RAM compile mode, or system nak on exit afterward. Debugger Bugs - Defect #81361 fixed. Adding a watch expression of more than around 240 characters crashes DC. Note that this bug was actually fixed in Dynamic C v. 9.10. Gui Bugs - Defect #81193 fixed. Selecting the first row in the STDIO window changes the font size. Note that this bug was actually fixed in Dynamic C v. 9.01. - Defect #81265 fixed. Memory dump code/data space options not autogreyed out. Note that this bug was actually fixed in Dynamic C v. 9.10. - Defect #81355 fixed. Compiler messages window wasn't "in focus" immediately after messages are generated. - Defect #81357 fixed. Can't copy selected text from STDIO window. - Defect #81358 fixed. Tabs are not always correctly expanded in the STDIO window. ***************************************************************** VERSION 9.10 NEW FEATURES - PKTDRV.LIB is now optionally controlled by a macro named DISABLE_ETHERNET_AUTOCONF, which if #defined in the user's program, excludes all ethernet driver's from being automatically compiled into the user's code based on board type. Usage of this macro gives other users the option to simply turn off automatic selection and compilation of ethernet drivers based on board type. BUG FIXES Library Bugs - Defect #81243 fixed. LP3500 xxxxAlert() functions were not using shadow registers and incorrectly using data registers to write data. This defect is actually fixed in 9.01. - Defect #81244 fixed. LP3500 missing bitmask value in digInAlert() function. This defect is actually fixed in 9.01. - Defect #81251 fixed. powerMode() main oscillator modes fixed, now allows debugging at lower baud rates. This defect is actually fixed in 9.01. - Defect #81285 fixed. Eliminated RCM37XX brdInit signal pin contention between PG2 and IRDA chip. This defect is actually fixed in 9.01. - Defect #81303 fixed. The region of memory allocated for stacks can no longer overlap with other regions allocated via xalloc(). - Defect #81324 fixed. HDLC_PACKET.LIB now supports 1 byte packets. - Defect #81333 fixed. FAST_RAM_COMPILE mode limits xmem code to 64 KB less than maximum available. Compiler Bugs - Defect #81241. Using a #elif inside a nested block of #if, #ifdef, or #ifndef would result in improper conditional compilation. This defect was actually fixed in Dynamic C 9.01. - Defect #81315. Duplicate label errors now refer to the line where the label was originally defined, not line 1. - Defect #81316. File and line information were not reported correctly for undefined labels in assembly blocks. - Defect #80881 fixed. Function calls with no corresponding prototype incur a warning if the option is checked in the gui. - Defect #80985 fixed. Warning "assigning a value of type 'char' to 'char *'" and similar warnings are now displayed correctly. - Defect #81128 fixed. Externed arrays without dimension info now have correct sizes in the map file. - Defect #81205 fixed. ximport path error fixed. - Defect #81302 fixed. Disallowed typedefs to be used as offsets in assembly. - Defect #81307 fixed. Recompilation of BIOS is now forced if prior attempts fail. Gui Bugs - Defect #81192. Moving the mouse in the Assembly window could cause an error. This defect is actually fixed in 9.01. - Defect #81201. Print can now be executed from Print preview without access violation. This defect is actually fixed in 9.01. - Defect #81202. Printing selected text with line numbers and syntax highlighting no longer produces incorrect highlighting. - Defect #81277. Files were sometimes erroneously reported as being changed when switching application back to Dynamic C. - Defect #81278. Print Preview now previews highlighted text with the option to print the entire document or a page range. - Defect #81279. Memory dump characters on the right margin are now always printed correctly. - Defect #81280. The register window now updates differences correctly when stepping or stopping at a breakpoint. - Defect #81281. A program would terminate improperly if tracing was enabled and the trace window was closed. - Defect #81282. The stack window could show some shadow pixels in difference updates with some fonts with bold attribute. - Defect #81286. Execution tracing would only write traces to a file as directed in project options if the progam terminates, but now writes if the program is ended by the user or by an error. - Defect #81288. The board ID/type in the compiling messages now shows correctly after switching boards. - Defect #81289. Dynamic C will now exit cleanly when project file is made read-only. - Defect #81297. The stdio window caret was not being reset to the origin when a program terminated and would start in the wrong position when re-running the program. - Defect #81298. The Environment Options' "Apply Changes to All" applied to all open memory dump windows even when unchecked. - Defect #81299. The number of allowable execution trace 'Entries:' was initially wrong when opening the Project Options dialog. - Defect #81300. The execution tracing timestamp was not synchronized with the start of the trace. - Defect #81301. The editor window caret is no longer moved after a program is compiled and downloaded. Inspect | Go to execution point (Ctrl-E) can be used to move the caret to the current execution point. - Defect #81306. An access violation could occur while stepping after making some dump window environment changes to multiple dump windows, such as changing colors or fonts. - Defect #81308. Stepping over a function which contains an exception would cause a timeout when execution tracing is enabled. - Defect #81311. Using the execution tracing macro _TRACEON could cause a timeout when stepping. - Defect #81312. Writing memory dump to a file now works correctly. - Defect #81313. The syntax highlighting whitespace color selection would persist after changing schemes and reopening the Environment Options dialog. - Defect #81314. The Evauate Expression dialog was clipped when using Windows Large Fonts. - Defect #81319. Persistent breakpoints would not work with stack tracing disabled. - Defect #81325. The Print/Print Preview functions were enabled when the stdio window was in focus and an access violation would occur if Print or Print Preview were executed. Those function are now disabled as in prior versions when the stdio window is in focus. - Defect #81329. The stdio, when empty, can have shaded regions from z-order window movements. Command Line Compiler Bugs - Defect #81196. Command line compiler prinf now prints string literals correctly which contain '%' character. This defect is actually fixed in 9.01. - Defect #81317. Command line compiler programs run on NT would not terminate without external stimulus such as opening and closing the Task Manager - they would seem to hang even after completing. ***************************************************************** VERSION 9.01 NEW FEATURES - Execution Tracing - Traces at each statement, each function, or customer inserted points. Displays results in the Trace window. The options for execution tracing are configurable. This feature is disabled by default. - Stack Tracing - Helps customers find out the path of the program at each single step or break point. By looking through the stack, it is possible to reconstruct the path and allow the customer to easily move backwards in the current call tree to get a better feeling for the current debugging context. - Persistent Breakpoints - Persistent breakpoints mean the information is retained when transitioning back and forth from edit mode to debug mode and when a file is closed and re-opened. - Enhanced Watch Expressions - The Watches window is now a tree structure capable of showing struct members. That is, all members of a structure become viewable as watch expressions when a structure is added, without having to add them each separately. - Enhanced Memory Dumps - Changed data in the Memory Dump window is highlighted in reverse video or in customizable colors every time you single step in either C or assembly. - Enhanced Mode Switching - Debug mode can be entered without a recompile and download. If the contents of the debugged program are edited, Dynamic C prompts for a recompile. - Enhanced Stdio Window - The Stdio window is directly searchable. - Enhanced bookmark support - Bookmark menu items are checked when the corresponding bookmark is set, and unchecked when the corresponding bookmark is not set. When a book mark is set, the menu item also displays the line of text as well as the column and line number where the bookmark is placed. See Edit | Toggle Bookmark, Edit | Goto Bookmark, and Editor window popup menu. - Samples, libraries, and documentation added for new RCM3360 and RCM3370 boards equipped with soldered-on and/or socketed nand flash devices. (Note that the RCM3300's Remote Application Upload requires serial flash, and so is incompatible with the new nand flash equipped RCM3360 and RCM3370 boards.) - Support for SMTP Auth added to SMTP library. - TCP/IP stack has been reorganized to dramatically reduce the amount of root data memory used. This change frees up almost 6k of root data memory, which will allow applications which are constrained by root memory (code and/or data) to be enhanced. If the application is constrained by available root code space, the definition of DATAORG may be increased by one or two pages (4 or 8k) to allow additional root code functions. Applications which need more root data space can just use the additional root data space. - TCP/IP packet buffers used to default to 10 packets of 600 bytes each, stored in root data space. This version now defaults to 10 packets of 1536 bytes each, in xmem. The xmem buffers are allocated in units of 512 bytes, and default to 30 buffers. These buffers are shared amongst the default 10 packets. The number of packets is specified using #define ETH_MAXBUFS. Each packet uses a small amount of root data space (currently 48 bytes each). The data buffers, in xmem, are specified using #define PKT_XBUFS to the number of 512-byte chunks desired. This defaults to 30. In order to take advantage of the larger buffer space available, the default interface MTU has been increased to 1500 (from 600). This should produce an immediate performance improvement for applications which handle bulk network data. - TCP/IP stack packet (ethernet) drivers have been reorganized so that more than one type of packet driver may be included in the same application program. This is to support future products which have more than one ethernet interface, or which do not know which ethernet device is on-board until runtime. - POOL.LIB has high-speed allocation/deallocation and linked-list handling functions, in addition to the previous C implementations. BUG FIXES Library Bugs - Defect #80928 which was fixed in Dynamic C 8.51 involved a change in the default value of QD_DIVISOR used in the quadrature decoder system. TCP/IP Bugs - Defect #81272. Removed unnecessary code that used port G for reseting SMSC on RCM3300. Corrected initializations for other boards where the DDR register for the reset line was prematurely set to output. - Defect #81191. The "list variables" command in ZCONSOLE.LIB now works again. - Defect #81220. The time zone compensation in HTTP.LIB is now done correctly. - Defect #81276. Some problems with multicasting on ASIX and Realtek chipsets have been fixed. - Defect #81257 fixed. The smsc_writephy function returns incorrect values if uC/OS-II is defined. This effects the pd_havelink and prt_nicreg functions for the smsc based boards (RCM3400 and RCM3300). - Defect #81258 fixed. Selection variables in RabbitWeb can now additionally have guard expressions. Compiler Bugs - Defect #81256 fixed. The PCDR register is no longer set to 0x40 at cold boot time, preventing bits 0/2/4/6 transition on Rabbit 3000 CPUs and bit 6 transition on Rabbit 2000 CPUs. RabbitBios.c is also updated to prevent start up transitions on these bits after hardware reset. If the BIOS's previous transition behavior is desired, add _ZW_RESET_PCDR_ALL_ZEROS into the "Options > Project Options > Defines" tab. - Defect #81264 fixed. Auto "protected" variables allowed (but not protected) and local static protected variables disallowed. - Defect #81273 fixed. Long labels in the assembler (>= 32 characters) no longer cause odd errors. - Defect #81261 fixed. Pointer checking incorrectly reports runtime exceptions for battery backed root variables error under Code and BIOS in Flash, Run in RAM compile mode. Other Functional Changes - TCP/IP: Ping responses are supported up to a maximum of 982 bytes. This is a reduction from previous versions, but is necessary for reasonable efficiency. If using a ping command from a host such as ping -s 1000 10.10.6.100 (which specifies 1000 bytes of data) then only the first 982 bytes will be echoed. Default ping commands will usually only send 56 bytes of data, so this should not be a problem in practice. The old style of TCP/IP configuration (using MY_IP_ADDRESS, MY_NETMASK, etc.) must be slightly modified to work with the new packet drivers. The macro USE_ETHERNET must be defined to 1 before the "#use dcrtcp.lib" line. Also, a warning will be issued if the macro TCPCONFIG is not defined. If you are using the old style configuration, TCPCONFIG should be defined to 0. We do, however, recommend migrating to the new style of configuration using the TCPCONFIG macro, the TCP_CONFIG.LIB library, and the ifconfig() function.