VERSION 10.07 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 #81255 fixed. Even if project file is read only, DC will exit correctly. - Defect #81485 fixed. Conditional (runtime if) test values in cofunctions are now always correctly normalized in HL before the condition's comparison is made. - Defect #81609 fixed. Invalid warnings are no longer generated for some implicitly upcast (far) NULL returns or comparisons. - Defect #81629 fixed. Pointer difference now checks pointer types correctly. - Defect #81631 fixed. Watches on string literals work correctly. - Defect #81658 fixed. The assembler now accepts subtraction for negative displacement in indexed instructions. EG: add a, (ix - d) is equivalent to add a, (ix + -d). - Defect #81687 fixed. The block instruction (LDIR, UMA, etc.) workaround for the Rabbit 4000 was not complete--the carry flag would be unconditionally cleared. This especially affected the UMA and UMS instructions. Library Bugs - Defect #81487 fixed. In LZSS.LIB, the LZ_LOOK_AHEAD_SIZE macro name has been corrected. Formerly, it was incorrectly defined as just LOOK_AHEAD_SIZE. - Defect #81581 fixed. The serial flash chip enable / disable functions in SFLASH.LIB now protect the WrPortI calls by setting ipset 1. - Defect #81604 fixed. The xalloc_stats function does not support a zero parameter, and now prints an error message asking for the required data structure. - Defect #81613 fixed. Error log exception values changed. - 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 #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. - Defect #81685 fixed. On the RCM 40xx series, brdInit() no longer sets PE6 as an output. This was sometimes causing Ethernet to stop functioning. - Defect #81688 fixed. Fix type checking error (multi-dimensional array) in BL20XX.lib. - Defect #81692 fixed. Cloning on boards with 8-bit flash now works properly. - Defect #81700 fixed. DNS no longer gets stuck when resolving multiple bad addresses. Also note that the list of hostnames for the dns2.c sample has changed. 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 #81673 fixed. Now warns user that #define's are missing, refers user to documentation comments at the top of SERVO_FIRST.c. OTHER FUNCTIONAL CHANGES - The RCM40xx Product Family has been separated with individual Product IDs. Specifically, in Dynamic C 10.07, the macro, ‘RCM4000A’, has been redefined to the product id for an RCM4000 (PID=0x2702). Likewise, the macro, ‘RCM4010’, is now defined to the product ID for an RCM4010 (PID=0x2701). The boards' internal product ID part numbers have not changed, just the macro value definitions in this version of Dynamic C. Previous versions of Dynamic C 10 used the macro ‘RCM4000A’ to identify the RCM4010 (PID=2701). - 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. - DLM/DLP programs in Samples\Download do not work with Rabbit 4000 processors. These programs were changed to reflect this. ***************************************************************** VERSION 10.05 NEW FEATURES BUG FIXES Compiler Bugs - Defect #81634 fixed. Pointers to far are now properly evaluated in boolean expressions. - Defect #81635 fixed. The casting of near pointers that have NULL value to far pointers now performs the correct up-conversion. Library Bugs - Defect #81543 fixed. Timeout is no longer calculated during SYN handshake. OTHER FUNCTIONAL CHANGES ***************************************************************** VERSION 10.03 NEW FEATURES BUG FIXES Compiler Bugs - Defect #80160 fixed. Constant expressions may now include the address of '&' operator. - Defect #80783 fixed. externed arrays having the same name now generate an error message. - Defect #80990 fixed. Empty function chains no longer generate prolog and epilog code. - Defect #81548 fixed. The assembler produces an intelligible error message for trailing '+' or '-' characters in an instruction. - Defect #81589 fixed. The assembler now omits long jumps over page boundaries when encountering inline c expressions embedded in assembly code. - Defect #81593 fixed. The compiler now properly promotes NULL pointer constants to the type of the other operand in equality comparisons provided the other operand is a pointer type. - Defect #81599 fixed. The compiler now uses labels instead of pseudocompilation to generate function blocks for cofunction related code. - Defect #81600 fixed. The RdPortI() inline function now produces an error message for undefined variables as parameters. - Defect #81602 fixed. Function implementations having the '__lcall__' function qualifier now generate parameter offsets properly. - Defect #81606 and 81611 fixed. Resolved corner cases involving pointer differences. - Defect #81612 fixed. Calling xmem functions through function pointers now honors established register conventions with respect to the first function parameter. - Defect #81615 fixed. The peephole optimizer now properly generates page shifts at source markers. Library Bugs - Defect #81479 fixed. The fmod() function now works properly when the numerator and denominator have the same (or nearly the same) value. - Defect #81492 fixed. The memcpy() and memmove() functions now properly return the destination parameter when the size is zero. - Defect #81528 fixed. Added a static keyword to a const string of encodable characters in HTTP.LIB. Note that this defect was actually fixed in Dynamic C 10.01. - Defect #81545 fixed. udp_waitopen() RabbitSys conditional compilation macros were removed because they were unneccessary. - Defect #81549 fixed. RabbitSys Macros caused incorrect logic to be compiled when compiling for non-RabbitSys applications. These errors were located in the network stack and appeared as failures in the gateway/router services. - 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 #81596 fixed. The library file "http.lib" compares the value of a state structure member instead of the pointer. - Defect #81603 fixed. RS232.LIB DMA transmit is now redesigned to be less interrupt intensive. - Defect #81605 fixed. RS232.LIB with DMA now will not cut off the last few bytes of a transfer. Rabbit Field Utility Bugs - Defect #81547 fixed. COM10 and higher is now supported. ***************************************************************** VERSION 10.01 NOTE: Dynamic C version 10.01 is supported only on the RCM4110 core module. Attempting to compile a program to any other Rabbit Core Module will result in a compile-time error. NEW FEATURES - Far Pointers and Far Data. The "far" keyword allows for direct access to xmem, without having to use xmem2root, root2xmem, or other library routines. A new library API for standard functions is provided to work with far pointers. - Rabbit 4000 CPU code generation. DC 10.01 introduces support for the Rabbit 4000 CPU and generates native code from C source. - Improved code generation. DC 10.01 has improved code generation over older Dynamic C releases, including the use of new Rabbit 4000 instructions to produce smaller, faster binaries. - Rabbit I/O LIB Utility. This utility is a powerful tool for initializing I/O pins and various Rabbit 4000 peripherals. - DMA support. The Rabbit 4000 supports Direct Memory Access for data transfers between I/O and memory. A full set of API are provided in the new DMA.LIB - Highly configurable serial libraries. RS232 serial API have been enhanced to support generalization. This allows for more maintainable and transferable code. RS232 also now supports DMA for less interrupt intensive serial transfers. BUG FIXES Compiler Bugs - Defect #81546 fixed. Constant structure assignment is fixed. - Defect #81550 fixed. Removed improper warning for functions returning function pointer types using typedef. - Defect #81556 fixed. Float to unsigned long conversion fixed. - Defect #81557 fixed. Accessing multi-dimensional arrays with constant indices fixed. - Defect #81562 fixed. Secondary watchdog timer is now disabled upon startup to avoid interaction problems between the primary and secondary watchdog timers. - Defect #81564 fixed. Assembler was generating incorrect code in #asm const blocks. - Defect #81570 fixed. Corrected removeram origin directive definition, fixing problems with running in RAM mode. - Defect #81577 fixed. Added a definition for the removeram origin directive for compiling in Flash Mode. - Defect #81582 fixed. The sizeof operator resulted in incorrect values when calculating the size of the address of an array. Library Bugs - Defect #81151 fixed. The functions clockDoublerOn, clockDoublerOff, and setClockModulation do not compile. - Defect #81563 fixed. Missing function prototypes for clockDoublerOn and setClockModulation were added. GUI Bugs - Defect #81572 fixed. The compiler messages window no longer leaks memory each time it is opened. - Defect #81574 fixed. Dynamic C no longer crashes if a program that loses communication before starting (yet runs to completion) is recompiled. - Defect #81576 fixed. Switch to debug mode (Shift+F5) now works correctly for programs compiled to RAM. Debugger Bugs - Defect #81573 fixed. Pressing F4 when a program is running on a BL1810 now stops the program from running and returns the IDE to edit mode. - Defect #81575 fixed. Returning to edit mode after compiling a program and turning on execution tracing no longer results in a target communication timeout. - Defect #81585 fixed. Setting a watch expression no longer corrupts data 1k below dkcWriteBufHeader in non-separate I&D. OTHER FUNCTIONAL CHANGES - Conversion of negative float values to unsigned long values, which is undefined C behavior, has changed. Previously, the float value's 32-bit representation was copied literally into the unsigned long's 32-bits. Now, conversion of a negative float value to unsigned long type results in the value 0ul. This change in behavior is coincident with the fix for defect #81556. Also note that the similarly undefined behavior for conversion of negative float values to unsigned int type has not yet changed; however, the equivalent change will occur in a future release of Dynamic C.