VERSION 10.21 NEW FEATURES - Supports the RCM4020 and RCM4300 family of core modules - Improvements to the RCM4510W/Zigbee library - Networking parameters are now configurable in Options/Project Options/Defines or in user code. - STDIO_DEBUG_SERIAL mode on serial port A now defaults to "no character assembly during break." (I.e., continuous null characters are no longer generated when no cable is attached.) - Please see the README.TXT for more information about the features included in this release. BUG FIXES Compiler Bugs - Defect #21428 fixed. Structs of any size can now be added to the watch window. The amount of data actually read from the target will be limited by the size of Watch memory defined in the Environment Options. - Defect #21442 fixed. Leading blanks are now ignored in lib.dir entries. - Defect #21614 fixed. The memory leak in the Environment Options dialog has been fixed. - Defect #21773 fixed. Single step debug cursor placement for library code had been off by the number of blank lines after the start of library function descriptions. - Defect #22027 fixed. Trailing blanks are now ignored in lib.dir entries. - Defect #23043 fixed. WiFi ad-hoc beacon time reduced from ~26 seconds to ~100 ms. - Defect #80867 fixed. The compiler now requires forward declared cofunctions to be prototypes (This was actually fixed in 10.09). Library Bugs - Defect #20120 fixed. Defining USE_FAR_LIB_API was causing code crashes on programs which enabled ethernet on 4xxx cores with ASIX hardware. - Defect #20238 fixed. UCos-II samples (ucosdemo3.c, ucosdelreq.c, JackRab\UCOSJRAB1.C) complain about overriding stub functions in the library. Added pragmas that can be uncommented to quiet the warnings. - Defect #20248 fixed. dhcp_check_lease did not have a case for DHCP_ST_EXPIRED. Added. - Defect #20417 fixed. Root (char *) promoted to (far char *) now prints correctly when using printf("%ls", far_var). - Defect #20472 fixed. PPP serial more reliable with bad link quality. - Defect #20559 fixed. Grep dialog no longer stays on top when switching to another application during a time consuming grep. - Defect #20818 fixed. __con_convert_num_to_iface function was updated to take into account that wifi interfaces are IF_WIFI0 and IF_WIFI1 and that the Rabbit 3k/4k have IF_PPP4 and IF_PPP5. - Defect #20819 fixed. __con_convert_iface_to_num function was updated to take into account that wifi interfaces are numeric interfaces 2 & 3 so now PPPoE and PPP interfaces get moved down 2 spots. However, the zconsole.lib still does not support wifi interfaces. - Defect #20835 fixed. In the con_show_multi function when ifconfig attempts to get IFG_PPP_SENDEXPECT and IFG_PPP_HANGUP, there is no checking for if NULL is returned. Added conditional statement to check for NULL. - Defect #20934 fixed. Resetting an FTP socket should no longer cause bad FTP state (reported on Windows XP FTP server) - Defect #20939 fixed. Samples program "samples\tcpip\zserver\filesystem.c" compiles correctly. - Defect #20941 fixed. Zserver.lib was not filling in FAT partition info to caller, causing problems with unmount/mount operations within filesystem.c sample program. - Defect #21049 fixed. When RS232.LIB's serXopen functions are called with a baud parameter lower than can be actually achieved on a Rabbit 4000-based board, the lowest possible baud rate is now always set. Note that the serXopen functions' result indicates whether or not the achieved baud setting is within 5% of the requested baud parameter. - Defect #21226 fixed. Long HTTP headers no longer cause the HTTP connection to abort. This was causing problems on Internet Explorer under Windows Vista. - Defect #21426 fixed. Function help is now available for the _xalloc function. - Defect #21467 fixed. Fixed an off-by-one error in setting the RTS/CTS threshold in the WiFi driver. - Defect #21470 fixed. Fixed problems with setting and interpreting the fragmentation threshold in the WiFi driver. - Defect #21674 fixed. When using MS_TIMER for delays and timeouts, the elapsed interval should always be compared to the desired period, instead of direct comparisons between MS_TIMER and an end time to avoid errors when MS_TIMER rolls over. - Defect #21725 fixed. The error log's ERRLOG_PHYSICAL_ADDR macro value is now correctly defined in error log supporting compile modes. - Defect #21780 fixed. For FLASH_COMPILE or RAM_COMPILE mode programs compiled to 16-bit flash and RAM memories, A19 is no longer inverted in the MB2CR or MB3CR quadrants. Note that the A19 inversion is of no consequence to memories of size 256 KWords (512 KBytes) or smaller. - Defect #21828 fixed. A copy of the system macros table is now available for use by the _GetSysMacro* functions in "Code and BIOS in RAM" compile mode. - Defect #22044 fixed. When DCRTCP is not defined, ZCONSOLE.LIB no longer #uses the network configuration save support library. This eliminates "XXX is out of scope / not declared" error messages when compiling the basicconsole.c or loginconsole.c standard samples. - Defect #22050 fixed. When resolving multiple host names that are a mix of "dotted decimal" and name-type URLs, DNS.LIB's DNS request counter is now always incremented and decremented in a balanced fashion. - Defect #22054 fixed. The non-API repl_getCurrentNetworkConfig library support function is now properly prototyped and exposed for use by other library API functions. This eliminates the "Undefined (but used) global label" error when compiling the userblock_tcpipconsole.c standard sample. - Defect #22055 fixed. Fixed a problem where changing SSIDs would sometimes not trigger a new association with the WiFi driver. - Defect #22068 fixed. Incorrect comparisons of types char vs. NULL in ZCONSOLE.LIB's con_set_param and con_set_tcpip_debug functions have been corrected to compare char vs. char. - Defect #22091 fixed. RS232_NOCHARASSYINBRK now turns on "no character assembly in break" while in STDIO_DEBUG_SERIAL mode. If STDIO_DEBUG_SERIAL == SADR on a Rabbit 4000 (or greater), this is now the default behavior. - Defect #22094 fixed. The redundant xrelease() function help header is removed from XMEM.LIB. - Defect #22095 fixed. Modified documentation for rand16_range(). - Defect #22255 fixed. By default, excluded flash driver variables and code which are not normally necessary in "Code and BIOS in RAM" compile mode. - Defect #22730 fixed. Compilation errors in samples/LowPower/lp_ping.c and lp_smtp.c - Defect #22910 fixed. SYS.LIB's useMainOsc and 32khzOsc functions now check the current oscillator(s) setting to avoid making unwanted oscillator setting changes. The unwanted settings changes particularly affected programs run in debug no-poll mode, preventing Dynamic C from detecting end-of- program. - Defect #22945 fixed. The Nflash library had compiler errors when NFLASH_DEBUG switch was enabled. - Defect #22950 fixed. The ADC library for RCM4xxx modules had unsigned int return values for several functions that needed a signed value. This caused negative error conditions to produce incorrect large positive readings back to the caller. - Defect #22995 fixed. ADC calibration fails with non-default gain running adc_cal_chan.c or adc_cal_all.c on RCM4xxx core. - Defect #23075 fixed. Incorrect calibration of analog channel on RCM4100. - Defect #23095 fixed. When USE_FAR_LIB_API or USE_FAR_STRING_LIB was defined, several "call memcpy" asm instructions in ASIX.LIB, REALTEK.LIB and SMSC.LIB were changed to "call _f_memcpy" inappropriately. - Defect #23133 fixed. The SxER registers and SxERShadow variables are now all initialized to their HW reset state on BIOS startup. In particular, this fixes STDIO redirection problems due to reliance on uninitialized shadow register values. - Defect #23240 fixed. ioconfig_switchecho.c, double output possible due to shared variable between costates. - Defect #23256 fixed. When using TICK_TIMER for delays and timeouts, the elapsed interval should always be compared to the desired period, instead of direct comparisons between TICK_TIMER and an end time to avoid errors when TICK_TIMER rolls over. - Defect #23552 fixed. Switching power modes with set_cpu_power_mode() could sometimes cause a crash on the RCM40xx series core modules. - Defect #23638 fixed. sspec_readvariable() in ZSERVER.LIB could return incorrect values for a variable of type INT8. - Defect #23720 fixed. The help description for sspec_setfvlen() in ZSERVER.LIB has been corrected (NULL terminator should be included in PTR16 lengths). - Defect #23806 fixed. Rabbit 4000's HDLC_PACKET.LIB asm instruction mnemonic "pd" typo has been corrected to read "ld" instead. - Defect #23818 fixed. On the RCM4400W, calling tcp_tick() no longer corrupts IX register content. This fix allows RCM4400W applications that call tcp_tick() within costates or cofunctions to work correctly. - Defect #81642 fixed. HDLC driver had an incorrect check for CPU being used. - Defect #81697 fixed. _WriteFlashByteX and _WriteFlashWord no longer cause a stack imbalance when a write into the user/System ID block is detected. Gui Bugs - Defect #21215 fixed. Project changes can now be made after compiling and before returning to edit mode. - Defect #21315 fixed. Characters less than 0x20 now show as '.' on the right side of dump windows. - Defect #21763 fixed. Grep Progress window is now a fixed size and once a grep begins another cannot be started until the first ends. - Defect #21879 fixed. Edit window misbehavior from selecting Message window items is fixed. - Defect #81439 fixed. Grep in files with *.* mask now runs without error. - Defect #81450 fixed. Copy-and-paste containing tabs now works properly. (Note that this bug was actually fixed in Dynamic C version 10.09.) - Defect #81483 fixed. Project open/close will now cancel if modified file close query is cancelled. (Note that this bug was actually fixed in Dynamic C version 9.30.) - Defect #81689 fixed. Dynamic C: Serial No. Dialog now appears center-screen on a dual-monitor system. Sample Program Bugs - Defect #20941 fixed. Zserver.lib was not filling in FAT partition info to caller, causing problems with unmount/mount operations within filesystem.c sample program. - Defect #21800 fixed. Unused input capture ISR code is removed from the qd_phase_10bit.c standard sample program. - Defect #22730 fixed. The \Samples\LowPower\lp_ping.c and lp_smtp.c were missing configuration for RCM4xxx modules causing compilation errors. Configuration for all released RCM4xxx modules added. - Defect #22804 fixed. The \Samples\SysClock\test_32khz_3000.c standard sample has been renamed to test_32khz_3000_4000.c and updated with support for blinky LEDs on the RCM4xxx prototyping board. - Defect #22805 fixed. The Samples\SysClock\Test_Osc3000.c standard sample has been renamed to Test_Osc3000_4000.c and updated accordingly to work with a selection of both Rabbit 3000 and 4000 targets. - Defect #23004 fixed. The \Samples\Filesystem\FAT\fmt_device.c sample did not format additional partitions correctly, only partition 0. - Defect #23001 fixed. The \Samples\Filesystem\FAT\fmt_device.c sample had erratic partition mounting behavior after formatting a partition other than partition 0. - Defect #22986 fixed. The \Samples\Filesystem\FAT\fmt_device.c sample did not handle uncondition format of device properly with multiple partitions on the device. - Defect #23202 fixed. For PPP sample programs which define DIALOUT_SENDEXPECT, added 1.5 second pause between modem reset and dial out commands for those modems which respond with an early OK to their modem reset command. - Defect #23457 fixed. The Samples\UserBlock\idblock_report.c standard sample now includes RCM4400W board information. - Defect #23645 fixed. Corrected a logic error in checking the high temperature in Samples\TCPIP\HTTP\form1.c . - Defect #81695 fixed. In Samples\RTCLOCK\SETRTCKB.C, added check for years entered as more than 2 digits. Added date range notification to stdio window. Debugger Bugs - Defect #22163 fixed. Only one clear breakpoint command sent from compiler side. Command Line Compiler Bugs - Defect #22083 fixed. Typo corrected in help to Poll target while running. IOConfig Utility Bugs - Defect #22147 fixed. The IOConfig utility now sets up serial port D DMA correctly and the serial port works correctly after calling the generated function. - Defect #23088 fixed. Erroneous warnings about other serial ports' setup interfering with debugging via serial port A have been eliminated; valid warnings occur when appropriate. OTHER FUNCTIONAL CHANGES - The Rabbit 4000 CPU's advanced 16-bit memory mode has a defect which affects ioe instructions (auxiliary I/O, external I/O) and self-timed chip select. The Dynamic C BIOS has been updated to work around this ioe defect on affected boards, all of the RCM40xx family. If absolute top performance is required and the User is certain their application is unaffected by the ioe bug, the work around can be disabled by adding the __ALLOW_16BIT_AUXIO_DEFECT macro into Dynamic C's Project Options Defines Box. See the Rabbit 4000 Users Manual Appendix B (errata section) or TN255 for complete details. - The RCM4xxx board-specific ioconfig_switchecho.c sample and related RCM4*_IOCONFIG.LIB libraries are updated to also demonstrate configuration of serial port D with DMA enabled. - The wifi_ioctl() API function has slightly different semantics for some commands. In particular, many of the commands require that the WiFi network interface is brought down before the command is accepted. See the function help (Ctrl-H) for wifi_ioctl() for details. Application code should ensure that the return code from wifi_ioctl() is checked after each call. - WiFi Protected Access (WPA), with Pre-Shared Key (PSK), is now available for applications which require robust privacy and integrity. In order to use WPA/PSK, define WIFI_USE_WPA plus a suitable ascii passphrase or hexadecimal key, and define _WIFI_WEP_FLAG to WIFICONF_WEP_TKIP. See samples\rcm4400w\tcpip\pingled_wpa_psk.c for more details. More documentation on the relevant macros may be found by performing a Function Lookup (Ctrl+H) on TCPCONFIG. - In order to be acceptable to various countries' regulatory authorities, there is an improved API for customizing the WiFi library to conform to the radio regulations. The wifi_ioctl() API function has new commands to query and set the channel list and transmit power. The commands are WIFI_MULTI_DOMAIN which allows automatic configuration via 802.11d capable access points; WIFI_COUNTRY_SET which allows one of several known regulatory domains to be configured; WIFI_COUNTRY_GET which queries the current regulatory domain information. ***************************************************************** VERSION 10.11 NEW FEATURES - New sample TimerC\TIMER_C_INT.C demonstrates how to set up and use the timer C interrupt. - Support for sorting far arrays using qsort (_f_qsort) with a comparison function that accepts far arguments - Networking parameters are now configurable in Options/Project Options/Defines or in user code. BUG FIXES Compiler Bugs - Defect #21139 fixed. The intermittent "Internal Error: Expression Temporary Stack Usage" message no longer appears when recompiling a sample. - Defect #21483 fixed. "Internal Error: Expression Temporary Stack Usage" message no longer appears when adding a new watch expression after experiencing an error in a previous watch expression. Library Bugs - Defect #20101 fixed. I2C.LIB had an incorrect anonymous header. - Defect #20248 fixed. dhcp_check_lease did not have a case for DHCP_ST_EXPIRED. Added. - Defect #20272 fixed. The ZWORLD_RESERVED_SIZE macro is now correctly defined to 0 for RCM4xxx boards that do not have analog I/O calibration constants stored in their User block. - Defect #20472 fixed. PPP serial more reliable with bad link quality. - Defect #20570 fixed. Targetless compile to BIN file of ADC-using application for RCM4000 w/ ADC now works correctly. - Defect #20761 fixed. DMA.LIB's DMAalloc function #GLOBAL_INIT section now clears possible residual DMA setup following a soft reset. This prevents the DMAflagSetup functon from incorrectly reporting busy status following a soft reset. - Defect #20818 fixed. __con_convert_num_to_iface function was updated to take into account that wifi interfaces are IF_WIFI0 and IF_WIFI1 and that the Rabbit 3k/4k have IF_PPP4 and IF_PPP5. - Defect #20819 fixed. __con_convert_iface_to_num function was updated to take into account that wifi interfaces are numeric interfaces 2 & 3 so now PPPoE and PPP interfaces get moved down 2 spots. However, the zconsole.lib still does not support wifi interfaces. - Defect #20835 fixed. In the con_show_multi function when ifconfig attempts to get IFG_PPP_SENDEXPECT and IFG_PPP_HANGUP, there is no checking for if NULL is returned. Added conditional statement to check for NULL. - Defect #20934 fixed. Reseting an FTP socket should no longer cause bad FTP state (reported on Windows XP FTP server) - Defect #21021 fixed. In SYS.LIB, the setClockModulation() function is now declared nodebug. - Defect #21325 fixed. The function help for SYS.LIB's _sysIsSoftReset function now correctly declares the function's type to be void. - Defect #21422 fixed. Xalloc regions in battery backed SRAM are now correctly flagged as such on boards capable of "Code and BIOS in Flash, Run in RAM" compile mode. - Defect #81356 fixed. RS232.LIB serXgetc function help return value descriptions are improved, both possible reasons for a failure result are listed. - Defect #81669 fixed. ADC_ADS7870.LIB now generates helpful warning or error messages when ADC_ONBOARD or ADC_RESOLUTION macros are not defined or defined incorrectly. - Defect #81693 fixed. PWM.LIB now generates helpful error messages for boards that do not have PWM functionality available. - Defect #81727 fixed. OP72xx.LIB serMode function now always returns the appropriate result code. - Defect #81421 fixed. Pinging Rabbit from gateway router is no longer problematic. Sample Program Bugs - Defect #20939 fixed. Samples program "samples\tcpip\zserver\filesystem.c" compiles correctly. - Defect #21019 fixed. RCM40xx and RCM41xx series boards do not have pull-ups installed on the serial Rx lines, so most RCM40xx and RCM41xx serial samples have been updated to demonstrate how to disable character assembly in RS-232 line break condition. - Defect #21191 fixed. Samples\fp_benchmark.c is improved. It now calculates the appropriate amount of loop overhead time. - Defect #21192 fixed. Samples\global_init.c comment is corrected to say auto is the default storage class. - Defect #21193 fixed. Samples\random.c is improved. It now demonstrates use of RAND.LIB functionality to generate a pseudo-random sequence of range-limited integers. - Defect #21287 fixed. RCM40xx, RCM42xx Serial\serDMA.c samples now demonstrate enabled DMA (serXdmaOn call is uncommented). - Defect #81695 fixed. Added check for years entered as more than 2 digits. Added date range notification to stdio window. GUI Bugs - Defect #20177 fixed. Watch window char array data display now correct for chars with high bit set. - Defect #20599 fixed. The find in files grep window obscurred other application windows when alt-tab is used to switch to other applications. - Defect #21009 fixed. When pasting text, the cursor had been placed at the end of the text when tabs preceeded it on the line. - Defect #21208 fixed. A "Cannot open clipboard" error message will no longer appear when the Stdio window is opened while an Office program is open with Edit | Office Clipboard selected. - Defect #21215 fixed. Project changes can now be made while after compiling and before returning to edit mode. - Defect #81439 fixed. Grep in files with *.* mask now runs without error. - Defect #81448 fixed. Disassemble at Cursor now works in libraries. Debugger Bugs - Defect #81638 fixed. In execution tracing, one can now step over _TRACE placed in functions other than main. RFU Bugs - Defect #81619 fixed. If the file selected from the File mru list was not the first in the list, the prior file was loaded, but now the selected one is always loaded. ***************************************************************** VERSION 10.09 BUG FIXES Compiler Bugs - Defect #81741 fixed. The compiler now generates correct code for arithmetic assignment operators with complex left-hand sides having far storage. - Defect #81739 fixed. The compiler now generates correct code for function calls returning characters in a conditional expression. - Defect #81732 & 81733 fixed. The compiler now generates correct addresses for externed far variables. - Defect #81714 fixed. The '&' operator now works correctly in array initialization. - Defect #81710 fixed. The compiler now omits warnings it had previously emitted erroneously in the assignment of far pointers with different storage. - Defect #81709 fixed. Using "&" and "->" operators together did not work correctly, when used as: "(&my_struct)->x". - Defect #81661 fixed. The compiler now properly processors the _system macro. - Defect #81660 fixed. Compiler and libraries now properly support the interrupt keyword for the Rabbit 4000 processor. - Defect #81636 fixed. Using multiple '.' operators on nested structures sometimes resulted in incorrect code generation. Library Bugs - Defect #20191 fixed. serXrdFlush and serXwrFlush work with serial DMA enabled and with serial DMA not enabled. - Defect #81737 fixed. FTP User can now download a file s/he uploaded to a FAT partition. - Defect #81736 fixed. SFLASH.LIB's sf_enableCS(), sf_disableCS() functions now properly protect their WrPortI() call. - Defect #81715 fixed, _n_strncat (strncat) now properly returns the address of the destination string. - Defect #81688 fixed, type checking error (multi-dimensional array) in BL20XX.lib. - Defect #81656 fixed, in the variable name parser there was an error in the range checking for the allowed character set. - Defect #81642 fixed. HDLC_Packet.lib had two bad CPU checks for the Rabbit 4000 chip. - Defect #81254 fixed, uppercased header sentinel macro __I2C_LIB in I2C.LIB GUI Bugs - Defect #81698 fixed. The flags order in the Registers window History view is now the same order as when copied and pasted. - Defect #81699 fixed. In STOP mode while execution tracing with autoscroll on, the window is no longer scrolled to the top. ***************************************************************** 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.