***************************************************************** Dynamic C for Rabbit Release Notes ***************************************************************** ***************************************************************** VERSION 9.62 NEW FEATURES BUG FIXES Compiler Bugs GUI Bugs - Defect #25923 fixed. Corrected .c part of file mask for grep. Library Bugs - Defect #25748 fixed. Corrected initialization of RCM3900 and RCM3910 boards' SD card select and SD card detect lines. Sample Program Bugs RFU Bugs OTHER FUNCTIONAL CHANGES ***************************************************************** VERSION 9.60 NEW FEATURES BUG FIXES Compiler Bugs GUI Bugs Library Bugs - Defect #24366 fixed. TCP connections to peers with large receive windows no longer time out or reset. - Defect #24941 fixed. The built-in uCOS-II statistics variables are now correctly initialized when used, so the OS_TaskStat() function now always provides a reasonable OSCPUUsage value. - Defect #24990 fixed. Incorrect #asm block accesses of the auto int statusbyte variable in the Lib\RabbitNet\RNET_KEYIF.LIB library's rn_keyProcess() function have been fixed. As a result of this fix, the Samples\RabbitNet\RN1600\zmenu.c sample now works correctly when making keypad menu selections. - Defect #25085 fixed. Partition begin / end tests in PART.LIB's mbr_ValidatePartitions() function now work correctly. A code generation problem work around is implemented for boolean conditional expressions which reference multi-dimensional arrays of long integer type where a non-constant expression is used to calculate at least one of the indices. The work around is to encapsulate such references in parentheses and explicitly cast the reference to the appropriate long integer type within the encapsulating parentheses. - Defect #25143 fixed. In non-blocking mode, FAT.LIB's fat_ReadDir() function no longer returns success (0) when zero bytes are read from the directory entry. In this case, fat_ReadDir() now correctly returns -EBUSY. Sample Program Bugs RFU Bugs OTHER FUNCTIONAL CHANGES ***************************************************************** VERSION 9.52 NEW FEATURES BUG FIXES Compiler Bugs - Defect #19939 fixed. Improper code generation with constant indicies in parenthesis used with multi-dimensional arrays now generates a warning. A workaround is detailed in the ReadMe.txt file. GUI Bugs Library Bugs - Defect #20472 fixed. PPP serial more reliable with bad link quality. - Defect #81727 fixed. OP72xx.LIB serMode function now always returns the appropriate result code. Sample Program Bugs - Defect #81695 fixed. Added check for years entered as more than 2 digits. Added date range notification to stdio window. RFU Bugs OTHER FUNCTIONAL CHANGES ***************************************************************** 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.41 NEW FEATURES - Samples, libraries and documentation added to support the new customizable RabbitFLEX boards. - Dynamic C's LIB.DIR library files list mechanism now searches for library files within a specified directory tree. The option to specify a complete or relative pathlist to each individual library file remains. Note that each library file name must be unique, regardless of whether the library is explicitly specified or is found via searching a specified directory tree. Also note that this feature was actually implemented in Dynamic C v. 9.30. ***************************************************************** VERSION 9.40 NEW FEATURES - Libraries and documentation updated for the OP7200 family, which has a new LCD controller. The updated libraries work with both old and new versions of the OP72xx. A BIN file created using the new libraries will also work with both old and new versions of the OP72xx. (Note that the old libraries will not work with the new OP72xx.) BUG FIXES Compiler Bugs - Defect #81131 fixed. New compiler fixes the "undefined but used global label main" problem. - Defect #81159 fixed. Disassembler correctly prints signed values. Note that this bug was actually fixed in version 9.30. - Defect #81198 fixed. New compiler fixes the "RCM3700 #rcodorg error - out of memory" problem. - Defect #81199 fixed. New compiler fixes the "out of memory conditions can put Dynamic C in an unusable state" problem. - Defect #81335 fixed. Assembler no longer generates incorrect binary for "rr a'" and related instructions. Note that this bug was actually fixed in version 9.30. - Defect #81497 fixed. "bbram" variables are not allowed with the "static" qualifier. - Defect #81505 fixed. Some RabbitWeb guard expressions incorrectly did not compile. - Defect #81534 fixed. Writing to internal interrupt vector offsets higher than 0x0100 in separate I&D space no longer corrupts memory. - Defect #81535 fixed. Lexer now properly recognizes '0h' and '0b'. - Defect #81536 fixed. RabbitLink did not work in DC 9.30. - Defect #81539 fixed. IO bug instructions in 2000 processors at end of asm blocks now properly emit nops following the instruction. - Defect #81541 fixed. Command line compiler now compiles and runs programs on boards with small sector flash (BL1800/1810). GUI Bugs - Defect #81222 fixed. New lib.dir handling fixes this problem. - Defect #81377 fixed. A scroll bar appears when neccessary. - Defect #81468 fixed. The parameters of the targetless compile boards in the Board Selection list of the Project Options dialog can now be modified. - Defect #81491 fixed. The board description had been missing from the compile dialogs if the Project Options dialog had never been opened since installing Dynamic C. - Defect #81502 fixed. Rabbit 3000A and 4000 keywords added to syntax highlighting. This was fixed for Dynamic C 9.30. Debugger Bugs - Defect #81462 fixed. Cursor placement is now correct when stepping over or into a nodebug function containing _TRACE. - Defect #81500 fixed. Leaving the execution tracing window open while running for a long time no longer causes a problem. Library Bugs - Defect #81477 fixed. For the PowerCoreFLEX ADC capability, it is now no longer possible for an ADC ISR to occur in the middle of reading the raw analog data. - Defect #81514 fixed. SMTP library now works correctly in non-RabbitSys mode (DC 9.30-only defect). - Defect #81525 fixed. BBRAM_RESERVE_SIZE now correctly calculated. - Defect #81526 fixed. BBRAM_RESERVEORG now correctly calculated in non-RabbitSys mode. - Defect #81529 fixed. Duplicate USERDATA definitions removed. - Defect #81531 fixed. Duplicate cloning definitions removed. - Defect #81532 fixed. Functionality moved to RemoteUpload libraries. - Defect #81540 fixed. Realtek driver now works correctly for SmartStar. Sample Program Bugs - Defect #81515 fixed. PowerCoreFLEX version of sflash_test.c will no longer display uninitialized variables on failure. Rabbit Field Utility Bugs - Defect #81537 fixed. RabbitLink did not work in version 3.01. - Defect #81538 fixed. RabbitSys user program did not run after being loaded through RFU 3.01. ***************************************************************** VERSION 9.30 NEW FEATURES - Ten bit quadrature decoder capability was added for the R3000A Rabbit microprocessor along with a new sample program. (See R3000.LIB and QD_Phase_10bit.C for implementation.) - New file called WIFI_INTERP_PINCONFIG.LIB added to TCPIP folder, which contains default pin configuration settings for developers using the Wi-Fi Add-On kit. - Improved code generation (approximately 1% size improvement in general). - Improved assembly language error reporting. BUG FIXES Compiler Bugs - Integer promotion rules now match ANSI C. This may cause some new warnings to appear in older Dynamic C programs. In rare cases, legacy code that relies on the original behavior could be wrong (primarily in character to integer promotions). - Defect #80437 fixed. Stack imbalance problem with certain C expressions. - Defect #80476 fixed. Using operator /= with field accessed from a structure pointer with sizeof expression causes stack imbalance. - Defect #80532 fixed. Character shift and multiply in test expressions was broken for certain values. - Defect #80533 fixed. Comparison between char and long return types (i.e. longfoo() != charfoo()) generated an internal error. - Defect #80624 fixed. Bug with character evaluation and logical OR operator. - Defect #80884 fixed. DC generates odd code for long index into array of structures. - Defect #80885 fixed. Odd #asm block code compiles without complaint. - Defect #80933 fixed. List files would occasionally show incorrect values for addresses and code. - Defect #80945 fixed. Type conversion bug in floating point causes stack imbalance. - Defect #80950 fixed. Documented form of ljp instruction, "ljp 0xXX, 0xMMNN" was rejected by the DC assembler. - Defect #80962 fixed. The placement of DB data in assembly had an off-by-one error. - Defect #80985 fixed. The types reported in a type mismatch warning were occaisonally incorrect. - Defect #81091 fixed. Dynamic C did not do error checking on project files before loading. - Defect #81105 fixed. Using the Ctrl-H help feature could result in undefined global label errors. - Defect #81226 fixed. The DC command-line-compiler would print benign token warnings for some if statements. - Defect #81232 fixed. Boundary condition for auto variables sometimes caused incorrect code generation (stack offsets) in array expressions. - Defect #81234 fixed. The BIOS was not recompiled after changing BIOS memory setting. - Defect #81271 fixed. Identifiers containing "sizeof" caused assembler errors, and out-of-range offsets were not reported in inline assembly. - Defect #81275 fixed. Assembler now handles long labels without failing. - Defect #81283 fixed. The BIOS was not recompiled after an error occured in prior BIOS compile attempt. - Defect #81327 fixed. Hitting Alt-O instead of the Ok button after Defines window change in Project Options dialog did not cause a BIOS recompile though hitting the Ok button did. - Defect #81334 fixed. Use of long casting in binary operator expressions (&, |, ~, etc...) would occasionally produce a stack imbalance. - Defect #81340 fixed. Long to float conversion was incorrect when the long was sufficiently large. - Defect #81387 fixed. The conditional operator ("?:") could cause a stack imbalance situation in some cases. - Defect #81410 fixed. The 'Program Terminated. Exit Code n' message was only showing the low byte of n. - Defect #81411 fixed. ROM file format missing newline characters. - Defect #81417 fixed. Prototypes having zero arguments are now properly checked. - Defect #81435 fixed. Rabbitbios.map file was corrupted when Rabbitbios.c compiled 2 or more times in a Dynamic C session. - Defect #81445 fixed. Void expressions as function call parameters are now disallowed. - Defect #81463 fixed. Fixed assembler's constant folding precedence rules. The rules are now identical to C constant expression semantics. - Defect #81498 fixed. Function name and structure offset name conflicts no long confuse the assembler. - Defect #81499 fixed. Excessively long lines (including logical lines generated by macro expansion) would sometimes be ignored by the compiler. - Defect #81511 fixed. Compiler no longer reports "internal temporary stack usage" error message when compiling expressions that convert longs to integers on the stack. - Defect #81512 fixed. Stack bug identified by "expression temporary stack usage" fixed. Gui Bugs - Defect #81095 fixed. Ctrl-H function lookup had an access violation after changing some libraries. - Defect #81203 fixed. Color selection for highlights changed when selection for background was changed in Envronment dialog. - Defect #81208 fixed. Ctrl-Enter, for Load file at cursor, did not check relative paths. - Defect #81213 fixed. Save Library prompt opened multiple times during compile for modified libraries. - Defect #81222 fixed. Hitting Cancel on Save Library prompt did not cancel compile. - Defect #81225 fixed. Icon blinking and beep alerts did not work on completion of compile with Dynamic C in background. - Defect #81230 fixed. Editor scrollbar context menu top/bottom did not work. - Defect #81235 fixed. A grep search with results found did not display any message at all. - Defect #81240 fixed. Tab navigation in the Goto Line dialog (Ctrl-g) did not work. - Defect #81253 fixed. Right click Find cleared text selection. - Defect #81263 fixed. an expression over 240 characters in the Evaluate Expression dialog could make Dymic C crash. - Defect #81269 fixed. A large file loaded into an edit window would sometimes make Dynamic C crash when the window was closed. - Defect #81326 fixed. The grep button was unresponsive if a grep filespec had only a folder pathname without *.*. - Defect #81332 fixed. Targetless CPU type selection in Project Options dialog was not being saved. - Defect #81337 fixed. The file name in the titlebar was capitalized when the window was resized. - Defect #81341 fixed. Assigning a different color to Stdio window could cause an access violation. - Defect #81346 fixed. A libray function could be unrecognized for lookup if whitespace was added to some places in the description. - Defect #81354 fixed. Execution trace fields did not remember group fields. - Defect #81363 fixed. Libraries were not being rescanned when a project file was opened which had a custom lib.dir. - Defect #81372 fixed. The color assigned to a printout had been dependent on unrelated changes but now has its own value and dialog in the Environment Options. - Defect #81382 fixed. A toolbar floated to the top of the screen could not be repositioned properly. - Defect #81384 fixed. An exception dialog could be hidden behind another window waiting for acknowledgement but unseen. - Defect #81385 fixed. The dialog showing the file names being compiled was not showing all of some long board descriptions. - Defect #81389 fixed. The "Inspect | Disassemble at cursor" menu option did not open the assembly window. - Defect #81391 fixed. Stack tracing display was incorrect for pointer to struct. - Defect #81392 fixed. A toolbar could appear detached from the mouse cursor as it was being dragged. - Defect #81395 fixed. Switching between Dynamic C and other tasks when a file was modified would lead to multiple update queries. - Defect #81397 fixed. Environment options allowed setting a Stdio window width of 0 which led to Tab space requirement problems. - Defect #81399 fixed. The Stdio window would pop up after returning to edit mode in some circumstances. - Defect #81400 fixed. The File Open dialog would not start in the 'Start in' directory of a Windows shortcut when Dynamic C was launched from the shortcut. - Defect #81403 fixed. A text window with srolled text could be resized to make the scrollbar disappear but with no ability to scroll it back with the mouse. - Defect #81404 fixed. Moving the dump widow thumb would make one or more lines repeat at the bottom. - Defect #81406 fixed. In the Environment Options dialog, setting the Stdio window row limit to a low but long enough to warrant a scroll bar and the stdio window was filled with text, there was no scroll bar. - Defect #81412 fixed. The 'Change Register value' dialog did not display the prime(') for BC', DE' or HL'. - Defect #81422 fixed. The flash and memory sizes were switched for the LP3510 in the Project Options dialog targetless tab. - Defect #81429 fixed. In the Environment Options dialog, the Stdio window row minimum had been allowed to be 0, leading to an access violation. - Defect #81432 fixed. Some exit codes used in return from main() could lead to an erroneous display of a runtime error message. - Defect #81440 fixed. The board description was missing from the messages shown when compiling if the Project Options dialog had never been opened since Dynamic C was installed. - Defect #81465 fixed. Targetless compile information was missing for BL2101, BL2105, BL2111, BL2115, BL2121. Rabbit Field Utility Bugs - Defect #81073 fixed. The state of the Use USB checkbox was not being remembered. - Defect #81331 fixed. Command line RFU did not work with the -fi switch to specifiy a flash.ini file. - Defect #81339 fixed. RFU did not support max download baud rate or disable baud negotiation options as Dynamic C does. Debugger Bugs - Defect #81348 fixed. Execution tracing with Buffer Wrap option checked could lead to an access violation. - Defect #81364 fixed. Using #nodebug disabled stack tracing. - Defect #81398 fixed. Execution tracing with 'Function entry/exit only' selected was not tracing function exits. - Defect #81414 fixed. Entering a base-offset address in a dump window did return the xmem equivalent physical memory data unless the offset address began with e or f. - Defect #81428 fixed. In the watch window, a struct member of an array of characters was being displayed incorrectly. Command Line Compiler Bugs - Defect #81390 fixed. The -i switch for taking inputs from a file instead of the keyboard did not work. - Defect #81413 fixed. The -lf and -bf switch values were not being used if the project file in use had values for a lib.dir file or for a BIOS file. Library Bugs - Defect #81349 fixed. HDLC_Packet.LIB Can now startup both serial ports E & F in HDLC mode without possible lockup. - Defect #81360 fixed. R3000.LIB Corrected possible incorrect overflow condition on channel 1 of the quadrature decoder. - Defect #81383 fixed. Graphic.LIB The glLeft1 function now properly scrolls a graphic image that crosses an xmem boundary. - Defect #81418 fixed. BL26XX.LIB Now does not generate a false runtime error when using the digHout function. - Defect #81419 fixed. Sflash.lib Now clears data rcv flag during initialization. - Defect #81444 fixed. Unsigned long to float conversion is now correct even when input's most significant ('sign') bit is set. - Defect #81446 fixed. Code now generates more unique DHCP transaction ID's and also checks the Client HW address field of the DHCP response packet from the server before accepting the IP addr. assignment, etc. - Defect #81454 fixed. IP layer now correctly responds to misdirected UDP packets with a properly formed ICMP packet. - Defect #81459 fixed. No longer an MSCG12232.LIB _glData() error when graphics buffer crosses 0xF000 boundary. - Defect #81464 fixed. The Graphic.lib Textborder function now handles redrawing text borders without error. - Defect #81501 fixed. RCM3365 (nand flash) & WiFi Addon Module had problems working together. baseaddress was set incorrectly on nflash.lib. bit5 has to be zero when using WiFi. ***************************************************************** 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. Command line Compiler Bugs Debugger Bugs GUI Bugs RFU Bugs 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. ***************************************************************** VERSION 8.61 Compiler Bugs - Defect #81224 fixed. The BIOS is only recompiled when necessary. - Defect #81228. Duplicate string literals in differents scopes may cause the compiler to crash or fail to compile. TCP/IP Bugs - Defect #81227 fixed. A warning is now issued when SSPEC_MAX_OPEN is less than HTTP_MAXSERVERS or FTP_MAXSERVERS. Setting SSPEC_MAX_OPEN too low (it is 4 by default) causes spurious "404 Not Found" errors in the HTTP server when it is under load. The "404 Not Found" message in this case has also been changed to a "503 Service Unavailable" message. - Defect #81231 fixed. Some cases where #web guard expressions were not generated correctly have been fixed. ***************************************************************** VERSION 8.51 NEW FEATURES - Ethernet Support for RCM3700. - BOOTP.LIB (BOOTP and DHCP support for TCP/IP) rewritten to be non-blocking and support multiple interfaces. dhcp_release() and dhcp_acquire() have been deprecated in favor of bringing the interface down and up using the normal ifconfig() function. Processing of DHCP options has been made more flexible, via a callback function. Support for automatic TFTP download of the boot file has been removed since it is too unwieldy for multiple i/f usage. Some global variables (such as _survivebootp) have been removed. The equivalent functionality is provided via more ifconfig() options. DHCP now works as part of the normal interface startup, driven via tcp_tick(). It uses fewer resources. In particular, worst-case stack usage has dropped to under 1k from over 2k. Fewer xmem and root data resources are required. No UDP socket is required. - DNS.LIB enhanced to use facilities of new SERVLIST.LIB. SERVLIST manages prioritized lists of IP addresses which represent server resources. In particular, DNS, the name resolver, now uses a DNS server list. This has the benefit of being able to mix predefined DNS servers together with DNS servers discovered via DHCP or PPP negotiation. - Support for SSL and HTTPS. - Added xgetfloat and xsetfloat functions to get and set a floating point value in xmem - Floating point support can be conditionally compiled out of stdio.lib by adding #define STDIO_DISABLE_FLOATS to either a user program or the Defines tab page in the Project Options dialog. This can save several thousand bytes of code space. - Three new format specifiers have been added to the printf family of functions: * %ls specifies a NULL terminated string in xmem. * %p specifies a 16-bit logical pointer. * %lp specifies a 32-bit physical pointer. - Support for printing strings longer than 127 bytes has been added to stdio.lib. A new macro, STDIO_ENABLE_LONG_STRINGS must be defined in either the user program or in the Defines tab page in the Project Options dialog (the library does not define this macro by default). Special care must be taken in a multi-tasking application where different tasks may be printing strings that are longer than 128 bytes so that output from different tasks is not interleaved in the stdio window. For instance, a semaphore could be used by different tasks in a uC/OS-II application that need to print long strings to serialize access to printf. - User can now add serial ports to Serial Port combobox in Communications tab of Project Options dialog. - The command line compiler normally compiles and runs the specified source file, but now when the project file "Default Compile Mode" is one of the options which compiles to a .bin file, the command line compiler will not run the program but will compile the source to a .bin file. - Provides stronger built-in support for certain large sector flash devices; in particular, the LS support files from tn226.zip are no longer required. See Tech Note 226 for a list of supported flash devices, and a description of the limitations of support for LS flash devices. Command line Compiler - Defect #80927 fixed. Help message printed for -b flag was incorrect. - Defect #80972 fixed. The command line compiler -rf switch now reads data correctly for a targetless compile to a file. - Defect #81050 fixed. The command line compiler reads libraries from a user defined lib.dir file in the project file, if one exists. - Defect #81053 fixed. The command line compiler now uses the files given with the -lf, -bf, -clf and -pbf switches correctly. - Defect #81150 fixed. The command line compiler will now honor the compile mode setting specified in the project file. - Defect #81158 fixed. The command line compiler will now properly handle a relative given for a project file with the -pf switch. Library Bugs - Defect #80625 fixed. Corrected parity mode values listed in serXParity function descriptions. - Defect #80637 fixed. Corrected prototype syntax in function descriptions for serXparity. - Defect #80644 fixed. Corrected an incorrect function pointer check before calling the con_user_timeout ZConsole handler. - Defect #80776 fixed. Serial TX pins now revert to normal outputs when a port is closed. - Defect #80870 fixed. Corrected long modulus function to give correct sign according to ANSI C standard. - Defect #80873 fixed. Eliminated apparent duplication caused by incorrect calculation of the entry's offset into the error log. - Defect #80888 fixed. The paddr() function returns the correct physical address even when either nybble of SEGSIZE contains 0. - Defect #80906 fixed. Old flash file system's fs_block_pushxpc function sets the correct XPC value in its #asm block. - Defect #80916 fixed. Corrected conversion of float values in range (LONG_MAX,ULONG_MAX] to unsigned long type. - Defect #80917 fixed. Pilot BIOS reliably loads programs to supported large and/or nonuniform flash types. - Defect #80924 fixed. 32-bit protected variables recoverable if corrupted by interruption due to power cycle or reset. - Defect #80928 fixed. Change creates a limit of 19140 hertz on both A and B inputs with a 29.4 Mhz clock. - Defect #80930 fixed. Corrected WriteFlashArray function's retval assignments in seldom-used conditional code. - Defect #80940 fixed. The errlogGetHeaderInfo() "Index last exception:" item displays correctly when errLogInfo.ExceptionIndexMod wraps back to zero. - Defect #80948 fixed. The BIOS's MMIDR_VALUE macro definition now shifts the CS1_ALWAYS_ON value into the correct bit position. - Defect #80949 fixed. The BIOS's special FastRAM_InRAM variable is now two bytes, to allow direct ldp write access. (NB: Only the LSB is meaningful.) - Defect #80952 fixed. MASTER_SERIAL.LIB now handles Auxillary I/O use correctly. - Defect #80976 fixed. PPP now checks for full connect status before processing IP packets. - Defect #80986 fixed. In RAM_COMPILE mode, RabbitBios.c made a subroutine call before the temporary stack was set up. - Defect #80987 fixed. A FAST_RAM_COMPILE mode application that set a short period WDT time out could lock up in a WDT time out reset cycle. (Also potentially affected FLASH_COMPILE mode if the CPU clock was extremely slow.) - Defect #80991 fixed. Fast RAM compile mode repeated xalloc calls do not fail prematurely. - Defect #80993 fixed. In PPP.LIB, PAP ACK and PAP NACK packets now include message length byte with a value of zero. - Defect #80994 fixed. Added automatic support for the 0x20 sector erase command that is required by supported SST29VFxxx flash devices. - Defect #81002 fixed. Register values changed via the Registers window change options are now retained while using separate instruction and data spaces. - Defect #81007 fixed. Corrected integer modulus function to give correct sign according to ANSI C standard. - Defect #81016 fixed. WriteFlashArray no longer (over)protects the last byte before the ID/User Blocks area. - Defect #81019 fixed. In separate I&D space, RabbitBios.c's interrupt vector, root code #rcodorgs do not collide. - Defect #81023 fixed. HDLC_PACKET driver now correctly tests for bad CRC on incoming packets. - Defect #81024 fixed. XMEM.LIB's paddr() result corrected for fast RAM compile mode bbram variables. - Defect #81026 fixed. In fast RAM compile mode, unreserved battery backed memory regions at the top of the /CS1 RAM are made available to xalloc. - Defect #81030 fixed. Optional user data reserve store no longer possibly collides with xmem code. - Defect #81041 fixed. XMEM.LIB's paddrDS() result corrected in fast RAM compile mode. - Defect #81043 fixed. RabbitBios.c preserves the initial GCSR value to its reset_status variable in all compile modes. - Defect #81054 fixed. In RabbitBios.c, separate I&D space flash compile mode 'DATAORG' double subtraction wastes flash xmemcode space. - Defect #81055 fixed. In RabbitBios.c, separate I&D space fast RAM compile mode 'DATAORG' double subtraction possibly misplaces FS2 flash file system. - Defect #81104 fixed. Now, the default for all compile modes when MicroC-OS is not used is a single 4 KB stack. - Defect #81109 fixed. FS2.LIB's fs_read_pbuf() function preserves the IX register (for use within costates/cofuncs). - Defect #81124 fixed. Run in RAM and run in fast RAM applications were corrupted by errant flash ID access during gflash_setup() and pflash_setup(). - Defect #81125 fixed. Two-flash cloning works correctly, given that each board is equipped with 2*256 KB flashes. Note that two-flash cloning of boards equipped with flashes of any other size is not supported. - Defect #81147 fixed. Control registers for serial ports E and F (SECR and SFCR) are initialized to zero. - Defect #81148 fixed. RN1100 rn_digOutConfig() now saves sourcing and sinking safe states correctly on subsequent power cycles. - Defect #81160 fixed. LP35xx.lib digBankOut() writes correct values on outputs OUT8 and OUT9. - Defect #81149 fixed. Preserved register ix in the _mosi_driver(). - Defect #81142 fixed. Changed is_valid_source() to only reject address if local_only flag is set. - Defect #81143 fixed. Functions is_subnet_net_addr() and is_subnet_bcast_addr() have been changed to check for subnet IP addresses and act accordingly. - Defect #81144 fixed. Eliminated usage of DNSGlobalLock semaphore due to Deadlock issue. - Defect #81145 fixed. uC/OS - related lock leak fixed in resolve_name_start(). - Defect #81165 fixed. Added additional modes of operation (2 and 3) to the serMode function to avoid conflict with the packet and Rabbitnet drivers. - Defect #81166 fixed. Memory devices are explicitly mapped before writes occur in RabbitBios.c, in particular when ZERO_OUT_STATIC_DATA is true. - Defect #81167 fixed. Packet driver initialization is now done prior to igmp initialization, in order to prevent packets from being sent before driver init. - Defect #81143 fixed. is_subnet_bcast_addr() and is_subnet_net_addr() modified for support of non-standard subnet masks. - Defect #81146 fixed. Multicasting caused lockup in board(s) using the ASIX chip. RMBC1,2 registers cleared before aborting remote DMA, as dictated by NE2000 specs. Debugger Bugs - Defect #80807 fixed. All breakpoints can now unconditionally be reset. - Defect #80929 fixed. Single stepping over an lcall to a debuggable pure assembly function with the assembly window open no longer causes stack corruption. - Defect #80958 fixed. Watch data is now correct for a watch that is automatically reloaded at program startup and that is set on the address of a local static variable where global variables are declared between function prototypes and the function in which the variable being watched occurs. - Defect #80963 fixed. Data in af' register is not trashed when single stepping at the instruction level over a jp f,mn instruction. - Defect #80988 fixed. Debugger handles samples that use serial ports E and F correctly. See defect #81147. - Defect #81152 fixed. Disabling watch expressions in GUI now prevents target from allocating space for watch code, which can be seen in Information window. Compiler Bugs - Defect #80904 fixed. Data variables are placed beginning exactly at the top of the data origin. - Defect #80923 fixed. On an RCM3200, the BIOS is only compiled when necessary, not every time a user program is compiled. - Defect #80944 fixed. When a call cannot be inlined for builtin I/O functions, arguments are properly demoted to expected type. - Defect #80951 fixed. Using the interrupt_vector keyword with an interrupt vector name of exactly 11 characters would cause an internal error - Defect #80973 fixed. An empty LIB.DIR would cause a GPF. - Defect #80983 fixed. Dynamic C did not properly handle write-protected BIN files. - Defect #80984 fixed. Variables named "i" or "I" would cause strange errors in assembly code - Defect #81009 fixed. Dynamic C crashes while compiling large xstring table. - Defect #81018 fixed. All origin (incl. #rcodorg) collisions are now detected and reported. - Defect #81027 fixed. Short-circuit evaluation for binaray operators && and || could generate improper fixups if the first operand evaluated to a constant (and thus optimizing out the second operand in some cases). - Defect #81032 fixed. Dynamic C did not properly handle function pointers to inline-I/O functions when inline I/O was enabled. - Defect #81033 fixed. When using inline-C return statements in #asm blocks within functions, Dynamic C would sometimes omit the final return in the function, even though there was valid code between the return statement and the end of the function. - Defect #81035 fixed. Large xdata and xstring tables are no longer truncated to modulo 64 KB. TCP/IP Bugs - Defect #80817 fixed. Long PPP send/expect sequences do not cause overflow of string buffer - new chat.lib implementation. - Defect #80849 fixed. PPP works with separate I&D space enabled. - Defect #80880 fixed. TCP socket data handler does not get zerod out when socket re-opened. Data handler field is persistent. - Defect #81138 fixed. HTTP server no longer gets stuck in closing state for the timeout period when long header lines are received. - Defect #81141 fixed. Filling the ARP cache can no longer disable sending information to remote networks. - Defect #81153 fixed. TCP/IP samples with active opens now properly wait for the interface to come up. - Defect #81155 fixed. arpresolve_start_iface() now checks the ip_iface() return value correctly. - Defect #81161 fixed. Some CGI-related HTTP samples were not working correctly with Mozilla. - Defect #81164 fixed. Multicast can now be used without IGMP support. - Defect #81172 fixed. DHCP support in ZConsole.lib is now fixed. - Defect #81175 fixed. The IFG_DHCP option in ifconfig() now works correctly. GUI Bugs - Defect #80956 fixed. Pasting of text with tabs now handles eol and caret placement correctly. - Defect #80964 fixed. Detection of library files prior to compilation now works for libraries given an absolute path in lib.dir - Defect #80970 fixed. Cut, copy and paste now work in the Evaluate Expression dialog - Defect #80971 fixed. The combo box drop-down lists in the Add Watch and Evaluate Expression dialogs are now updated correctly. - Defect #80978 fixed. Using function help (Ctrl-H) after modifying a library no longer causes a copile to fail. - Defect #80979 fixed. Function help now always shows the function description at the correct starting point after modifying the library of that function. - Defect #80981 fixed. Grepping text in non ASCII files can no longer cause Dynamic C to terminate. - Defect #80982 fixed. Targetless compilation selections now correctly update the Project Options dialog when switching projects. - Defect #80999 fixed. Edit | Go to Line Number... will now always scroll when necessary to put the selected line and caret in view. - Defect #81006 fixed. All changes to the Project Options dialog which require the BIOS to be recompiled now trigger a BIOS recompile. - Defect #81036 fixed. Message window can now be moved while downloading program to RabbitLink. - Defect #81044 fixed. Entering an address into the address field of the memory dump window now puts the main part of the window in focus for keyboard scrolling. - Defect #81049 fixed. The Center Bookmarks checkbox of the Editor tab in the Environment Options dialog now reflects its current functionality. - Defect #81051 fixed. The editor margin now shows all pen styles correctly when pen width is 1. - Defect #81052 fixed. Changing the editor margin position in the Environment Options dialog would error if the field was blank. - Defect #81056 fixed. All legal tab stop values can now be set in the Environment Option dialog without error. - Defect #81057 fixed. The clock cycle sum in the Assembly window is now removed immediately after disabling the sum clock cycles option. - Defect #81058 fixed. The editor syntax highlighting now handles all foreground and background changes correctly. - Defect #81059 fixed. "Dump' has been removed from the 'Open selected' options in the Debug Windows tab of the Environment Options dialog. - Defect #81060 fixed. In the Debug Windows tab of the Environment Options dialog, the 'Show Toolbar' option for the Memory Dump window is now applied to all open dump windows if the 'Apply changes to all' option is checked. - Defect #81062 fixed. The Stdio window was handling printf tabs incorrectly for capacity outputs when Columns exceeded Rows configured in Environment Options. - Defect #81065 fixed. In the Debug Windows tab of the Environment Options dialog, The Show Source and Show File Name in Source Line options show the correct states. - Defect #81066 fixed. The "Show tool bar" option of Memory Dump Winow preferences in the Environment Options dialog now affects all open memory dump windows if the "Apply changes to all" option is checked. - Defect #81067 fixed. Print and Print Preview now display all fonts properly. - Defect #81068 fixed. Print Preview 2 page mode can now zoom/drag either page. - Defect #81069 fixed. Print Preview now truncates all lines properly for any Print/Alerts settings when Wrap Lines is diabled. - Defect #81070 fixed. Clock cycle sums for any line selections. - Defect #81072 fixed. Multiple Memory Dump windows can now be opened and closed without error. - Defect #81074 fixed. A mousedown then mouseup on the last toolbutton of a consolidated toolbar while configuring toolbars no longer produces an error. - Defect #81075 fixed. The control holding toolbars under the menu now becomes invisible when all toolbars are unchecked and visible when any are checked. - Defect #81082 fixed. Syntax highlighting now works for the "xstring" keyword. - Defect #81084 fixed. The grep utility now always exits cleanly. - Defect #81089 fixed. The Project Options dialog edit windows for max errors and max warnings now limit entries properly. - Defect #81090 fixed. The spin edit controls in the Project Options dialog now all work as expected, such as for 'Max watch expressions' in the Debugger tab. - Defect #81092 fixed. Permanent deletion of custom targetless compile board configurations in the Project Options dialog now works properly. - Defect #81095 fixed. Function help (Ctrl-H) can no longer cause an access violation by prepending spaces to the /* START FUNCTION DESCRIPTION *** for that function. - Defect #81097 fixed. RTI files opened in the Targetless tab of the Project Options dialog now correctly reads user defined board ID numbers. - Defect #81100 fixed. Rapidly pressing keys or holding down a key no longer causes problems to programs with I/O intensive loops such as demo3.c. - Defect #81108 fixed. The Replace occurrence message box generated by the Search and Replace dialog now comes up where it was last positioned after initial showing. - Defect #81112 fixed. Assembly window options modified in the Debug Options tab of the Environment Options dialog now revert if the dialog is cancelled. - Defect #81113 fixed. The watch window can now be updated when a program is in run mode and the stop button (Ctrl-Q) now works when in a getchar() loop. - Defect #81117 fixed. The foreground (font) color can now be changed for non-syntax edit windows, in the Display tab of the Environment Options dialog. - Defect #81118 fixed. Changing the Background Edit Mode color in the Display tab of the Environment Options dialog now updates the default Background colors on the Syntax Colors tab. - Defect #81119 fixed. Dynamic C no longer crashes when rapidly changing the "Show Source" option in disassembly window. - Defect #81122 fixed. Inline I/O optimization of function parameter passed into BitWrPortI is now handled correctly. - Defect #81177 fixed. Edit Properties dialog bugs fixed. Center Bookmarks on the Editor now retains checked state, Code Template changes are discarded if the dialog is cancelled, and Syntax Color defaults are now relative to the last scheme loaded. RFU Bugs - Defect #80806 fixed. The RFU no longer reqires write access to the drive from which it is executing and can be run from CD. This fix has been implemented since version 7.26. Other Functional Changes - Existing FTP server programs must now define the macro SSPEC_NO_STATIC. This is due to changes in the underlying ZSERVER.LIB that makes its handling of the HTTP and FTP servers more uniform. In particular, it is now possible to create a static resource table for the FTP server as well as the HTTP server. SSPEC_NO_STATIC indicates that the user is not creating a static resource table. - The macro SSPEC_NO_STATIC is an alias for the old macro HTTP_NO_FLASHSPEC. ***************************************************************** VERSION 8.30-B LIBRARY BUGS - Defect 81081 fixed. ZCONSOLE.LIB has been updated to reflect DNS-related changes. VERSION 8.30 NEW FEATURES - DHCP rewritten to be better integrated into the TCP/IP library suite. You can now use DHCP with multiple interfaces. When you bring the interface up and down, DHCP is automatically applied. There are more ifconfig() options for setting DHCP parameters and less reliance on global variables. For full details, see the library description at the top of lib\tcpip\bootp.lib. The main feature of the old implementation which is no longer supported is the ability to "automatically" download a boot file using TFTP. TFTP is still usable for this purpose, however DHCP will not do it for you. - You can now define multiple home IP addresses on an ethernet interface by defining the macro VIRTUAL_ETH to the number of additional home addresses. You also need to call the virtual_eth() function at runtime to define the new home addresses. See the documentation for virtual_eth() for more details. - New function send_ping_iface() to send an ICMP echo request on a specified network interface. - New function aton2() for better parsing of dotted decimal IP address strings. - Added IFS_NAMESERVER_DEL option for ifconfig() to remove nameserver entries. - The samples\tcpip\dhcp.c sample program now demonstrates a lot of tcp/ip functionality Compiler Bugs - Defect #81025 fixed. Multiple root bouncer stubs were being generated for pointers to xmem functions. TCP/IP Bugs - Defect #80828 fixed. DHCP problem, no longer relevant with new DHCP implementation. - Defect #80942 fixed. Bootfile download has been defeatured from DHCP. - Defect #80953 fixed. In ZServer forms, null termination is no longer off-by-one for updating string variables. - Defect #81021 fixed. sock_abort() now reliably sends TCP RST flag. GUI Bugs Library Bugs - Defect #81029 fixed. Problem with serial port A in separate I&D space. - Defect #81031 fixed. No longer getting intermittent results when reading RN1100 digital inputs. - Defect #81064 fixed. For the Targetless Pulldown, the SRAM size is now correct for the RCM3610 and RCM3710 boards. - Defect 81071 fixed. Boardtype for RCM3410 now corrected. ***************************************************************** VERSION 8.20 NEW FEATURES - Samples, libraries, and documentation added for new RCM3600,RCM3610,RCM3700 and RCM3710 boards. Compiler Bugs - Defect #80975 fixed. Modifying libraries and using function help can cause GPFs in program compilation. TCP/IP Bugs GUI Bugs Library Bugs - Defect #81005 fixed. BIOS compile time unknown dkStackAddress, dkReturnAddress symbol errors when debug's instruction single stepping is disabled. ***************************************************************** VERSION 8.10 NEW FEATURES - Samples, libraries, and documentation for new RN1100, RN1200, RN1300 and RN1500 added. Compiler Bugs - Defect #80980 fixed. Datatype sizes reported in mapfile were incorrect. TCP/IP Bugs - Defect #80965 fixed. SHTML (SSI-enabled) files are no longer corrupted when a short HTML tag is followed by another HTML or SSI tag. - Defect #81001 fixed. RealTek does not auto-negotiate between full and half duplex. Added a warning and driver changes for RCM3000 and SR9150. See Technical Note #237. GUI Bugs - Defect #80954 fixed. Printing a file with the string "_page" somewhere in the text will no longer corrupt the printout. ***************************************************************** VERSION 8.03 Library Bugs - Defect #80960 fixed. BL20xx/BL21xx series boards' User Block information (eg: analog calibration constants) is accessible as situated on those boards. ***************************************************************** VERSION 8.02 NEW FEATURES - DeviceMate libraries and samples have been added. - Enhanced inlining of built-in internal I/O functions. Now WrPortI can be inlined with any expression as its third argument (value). Compiler Bugs - Defect #80938 fixed. Arguments that cause fixups to be generated when used with inlined built-in internal I/O functions no longer overwrite instructions. - Defect #80944 fixed. When a call cannot be inlined for built-in I/O functions, arguments are properly demoted to expected type. Debugger Bugs - Defect #80935 fixed. Debug kernel no longer causes code corruption when debugging from ram. GUI Bugs - Defect #80939 fixed. Backup files are created when a file is compiled (functionality missing since 7.26SE). File is created prior to coldbooting the target. Communication Bugs - Defect #80947 fixed. Downloading a program via Dynamic C to the RabbitLink or ethernet downloads to the RFU using Win95, Win98, or WinMe now work correctly. Library Bugs - Defect #80936 fixed. Port F handles low baud rates correctly. - Defect #80937 fixed. Incorrect reference to port E variable in port F code was removed. ***************************************************************** VERSION 8.01 IMPORTANT NOTE! The default storage class for local variables is now auto. You can change this back to static by placing #class static at the top of your main source file. NEW FEATURES - Gui Editor - Syntax highlighting - customizable via Options | Environment Options | Syntax Colors - Code templates - new templates can be added via Options | Environment Options | Code Templates, and can be inserted into the editor using either ctrl+j or right mouse click | Insert Code Template - Columnar selection - alt + left mouse button will put the editor into column mode - Bookmarks - shift + ctrl + [0-9] will toggle a book mark at the current cursor location. ctrl + [0-9] will return the cursor to that location. - Many preferences can be set via Options | Environment, Options | Editor - "Open file at cursor" command (on right click pop up menu) - Watch expressions can be evaluated in flyover hints Grep - Located under Edit | Find in Files (Grep) allows searches to be performed in directories or in all files open in Dynamic C. Regular expressions and specific file masks can be used. Function Lookup - A tree view of all libraries and all functions (with function descriptions) contained in each library has been added to the function lookup window. - An edit button has been added to the function description window that opens the library in which the function description appears, and positions the cursor at the function description. Debug Windows (General) - Fonts and colors for debug windows can be set on the debug windows tab under Options | Environment, Options | Debug Windows. Fonts and colors can be set on a case by case basis by choosing the desired window name from the window list box. Fonts and colors for the current debug window can be applied to all debug windows by pressing the "apply settings to all" button. - Which debug windows open when a program is compiled can be specified on the debug windows tab. Selecting "Open last used windows" will make dc8 behave like the 7.x releases of dc. Disassembly window - Each column (address, machine code, opcode, and clock cycle) can be resized or completely turned off. - Source line being disassembled can be shown in the window's output - Clock cycle summation can be disabled. - Window can use same syntax highlighting scheme as editor windows. If this option is enabled, the font color and font size cannot be set via the debug windows tab under Options | Environment Options. The font color and font size will only change if the syntax options for the editor change. - A new address can be disassembled via a right click. - The current execution address can be disassembled via a right click. - A highlighted selection can either be copied to the clipboard or saved to a file. Stdio window - This window can be set to automatically scroll vertically and/or horizontally. - Output can wrap at a defined column (default to 80) Register window - This window retains the current style of output, and adds a new view which is selectable either via a right mouse click on the window or on the debug windows tab under Options | Environment Options. If the old style is selected, it is possible to change register contents by right clicking anywhere on the window and selecting "Change Register Value(s)". If the new style is selected, right clicking on an editable register will bring up a menu which allows you to increment or decrement the register, or change the contents by selecting "New Register Value...". Each of the flags can be toggled via a right mouse click. Memory dump window(s) - Multiple memory dump windows can be active at the same time. - More than 128 bytes can be dumped at once. The dump region automatically grows or shrinks as the window size changes. - The Dump at Address dialog box (found under Inspect | Dump at Address...) is sensitive to the type of input entered into it. A 16-bit logical address is entered as a four digit hex number with an optional leading 0x. A 20-bit physical address is entered as a 5 digit hex number with an optional leading 0x. An xpc:offset style address is entered as a 6 digit hex number with a ':' separating the xpc portion from the offset portion. - The Data space and code space radio buttons are only visible if the compiler options have been set to enable separate instruction and data spaces. - As the mouse moves over the memory dump window, the byte under the cursor preceded by its address is displayed in the window caption bar and in a flyover hint. Both of these options can be enabled and disabled independently. - The memory dump window is capable of displaying three different types of dumps. A dump of a logical address will result in a 64k scrollable region (0x0000 - 0xffff). A dump of a physical address will result in a dump of a 1M region (0x00000 - 0xfffff). A dump of an xpc:offset address will result in either a 4k, 64k, or 1M dump range depending on the option set on the debug windows tab under Options | Environment Options. If a 4k or 64k range is selected, the dump window will dump a 4k or 64k chunk of memory using the given xpc. If 'Full Range' is selected, the window will dump 00:0000 - ff:ffff. To increment or decrement the xpc, use the '+' and '-' buttons located below and above the scroll bar. (These buttons are only visible for an xpc:offset dump where the range is either 4k or 64k). - Each window can be set to update or not update after every single step or program pause. - A dump window can be updated via a right mouse click or the button on the windows toolbar. - The dump window toolbar can be hidden. - A highlighted selection can either be copied to the clipboard or saved to a file. Watch window - Watches can be deleted in any order. - All watches can be deleted at once. - Evaluation of a watch (without adding it to the watch list) has been separated out. Use the 'Evaluate expression' button for this functionality. Toolbars - By default Dynamic C 8 shows a set of toolbar buttons very similar to the 7.x releases. However, the buttons are now grouped together by function and separated into individual toolbars. Each toolbar can be repositioned within the main control bar, or can be removed and floated individually. - The visibility of individual toolbars can be toggled through two different means. Right clicking anywhere on the toolbars, or choosing Options | Toolbars, will allow for turning on or off selected toolbars. - All toolbars can be shown by right clicking on the toolbars and choosing "Show All Buttons" or by choosing Options | Toolbars | Show All Buttons. - The visibility of all toolbars can be toggled by right clicking on the toolbars and choosing "View Menu Buttons", or by choosing Options | Toolbars | View Menu Buttons. - All visible buttons can be placed on a single toolbar by right clicking on the toolbars and choosing "Consolidate visible buttons to one toolbar" or by choosing Options | Toolbars | Consolidate visible buttons to one toolbars. - Toolbars can be customized by right clicking on the toolbars and choosing "Customize Button Groups...", or by choosing Options | Toolbars | Customize Button Groups.... This will bring up a dialog box showing all available buttons. Any button can be dragged out of the dialog and placed onto any toolbar in any position. The same button can appear in more than one place if desired. A button can be removed from a toolbar by dragging it away from the toolbar and releasing the left mouse button. Printing - Printing options are located on the Print/Alerts tab of the Environment Options dialog box. These options control the options set via the Setup button on this page or via File | Print Options. - A font different than the editor font can be used for printing - Options include printing a header, footer, numbering pages, syntax printing, word wrap, and definable margins. Other changes - Reverse find - located on the edit menu, will find the next occurrence of the current search string in the opposite direction last set in the Find dialog. - Go to execution point - located on the Inspect menu, will bring into focus the current execution point when in debug mode. - Save all - located on the File menu, will save the contents of all open editors. - Compile mode - Default project source file - located in Project Options | Compiler | Advanced Compiler Options, will compile the specified source file whenever the F5 or F9 button is pressed. If the specified source file is not open, it will be opened. If the specified source file cannot be found, an error will occur. Using this option will allow any source file to be focused when a compile is started. - Alerts - located in Environment Options | Print / Alerts, will cause Dynamic C to flash its icon on the taskbar after a successful compile and download if Dynamic C is not the active application, beep after a successful compile and download if Dynamic C is not the active application, and check the contents of open editor windows and prompt if the contents of any open files have been modified by an external source. NEW FEATURES - Compiler - Assembly list file generation - Located in Project Options | Compiler, a list file will be generated (with the extension .LST) in the same directory as the program source. The list file consists of a complete disassembly of all the code that was compiled with the program, including library code (a separate list file is generated for the BIOS and its associated libraries). The disassembly also includes intermixed source lines, with source file and line information. - #zimport compression - A special form of #ximport, #zimport executes an external compression utility to compress input files at compile time, before download. Support libraries allow for compressed files to be decompressed on-the-fly. See the \samples\zimport sample programs for more information. - Inline builtin internal I/O functions - Located in Project Options | Compiler, when the box is checked, builtin I/O functions (WrPortI, RdPortI, BitWrPortI, BitRdPortI) will be inlined if all arguments are constant. - __lcall__ function prefix. When used in a function definition, the __lcall__ function prefix forces long call and return (lcall and lret) instructions to be generated for that function, even if the function is in root. This allows root functions to be able to be safely called from xmem. __lcall__ has no effect on xmem functions, and use with cofunctions is prohibited. - Mapfiles now include #ximport (and #zimport) information in the global/static data section. - #pragma nowarn - Two forms are allowed that turn off either just trivial (warnt) or all (warns) warnings, depending on an option passed to the pragma. '#pragma nowarn [warnt/warns]' ignores warnings for the next physical line of code only. '#pragma nowarn [warnt/warns] start' ignores warnings until the '#pragma nowarn end' is encountered. The warnt/warns option is not required; if left off, default behavior is warnt. - Compiler now defaults to storage class auto. NEW FEATURES - Other - HTTP.LIB now supports digest authentication. Digest authentication can be enabled by setting USE_HTTP_DIGEST_AUTHENTICATION to 1. See the manual for more information. - Feature Request #335 implemented: You can now have multiple users per web page by setting SSPEC_USERSPERRESOURCE and using sspec_adduser() and sspec_removeuser(). - FTP_SERVER.LIB can now act as a full FTP server with the default handler functions. Define the macro FTP_USE_FS2_HANDLERS to enable this feature. The macros FTP_USERBLOCK_OFFSET and FTP_CREATE_MASK and the functions ftp_save_filenames() and ftp_load_filenames() also control this functionality. - HTTP.LIB supports compressed files. Support is enabled automatically if you #use zimport.lib before you #use http.lib. #zimported files are automatically detected when referenced in the http_flashspec array. Compressed files added through ZSERVER.LIB functions must have the server_mask ORed with SERVER_COMPRESSED. The macro INPUT_COMPRESSION_BUFFERS must be at least as large as HTTP_MAXSERVERS. - The dlm_tcp.c and dlp_tcp.c sample programs now support separate I&D space and also support single 512KB split-flash operation. TCP/IP Bugs - Defect #80820 fixed. The ASIX packet driver was reading from the wrong I/O address in the packet driver. This could cause the ASIX to come up in the wrong duplex or glitch port a. - Defect #80826 fixed. Random overwrite of memory when DHCP packet received. - Defect #80829 fixed. SNMP trap messages being set to wrong MAC address. - Defect #80837 fixed. SMTP servers that send multiple 220 greeting lines no longer cause the SMTP.LIB client to abort sending an email. - Defect #80842 fixed. Auto-negotiation is now properly done in ASIX.LIB. This affects the RCM3200 and now allows full duplex mode to be negotiated. - Defect #80843 fixed. A problem that could potentially cause the reception of packets to stop working has been fixed in ASIX.LIB. - Defect #80858 fixed. SMSC.lib no longer enables the reception of all multicast datagrams in the SMSC chip. - Defect #80859 fixed. sock_init() on the Realtek no longer causes spurious memory writes into xmem or the stack. - Defect #80861 fixed. Buffer overflows in the test_cgi() function in samples\tcpip\http\cgi.c were fixed. - Defect #80911 fixed. sock_gets() will now always wait for a line-termination before returning data (as long as space is available in the user buffer). - Defect #80912 fixed. sock_bytesready() and sock_dataready() will always indicate the remaining data when the other side closes the connection, even when the last data was not line-terminated. - Defect #80914 fixed. Raw connections in VSERIAL.LIB now close correctly and allow later connections. - Defect #80920 fixed. Multi-byte reads with telnet_fastread() in VSERIAL.LIB are no longer garbled. - Defect #80921 fixed. pd_setup_RCM3200CORE() in ASIX.LIB now saves the IX register Filesystem Bugs - Defect #80827 fixed. Filesystem corruption when shifting files to zero size after appending multiple of LS size bytes to file. - Defect #80909 fixed. A 2-flash (DLM, DLP or USE_2NDFLASH_CODE) program that uses FS2 in its first flash won't corrupt the code in the second flash. - Defect #80910 fixed. 2-flash DLP using FS2 in its program flash can format/write file system in its non-"ID/User Blocks" area. Compiler Bugs - Defect #80399 fixed. Single stepping through pure assembly functions in library code now works correctly. - Defect #80455 fixed. Bad stack handling with some integer expressions. - Defect #80616 fixed. The illegal instruction "ld (hl+xx), a" now generates an error. - Defect #80647 fixed. The address of operator (&) did not work properly with auto arrays. - Defect #80652 fixed. An internal buffer limited function argument size. Function arguments may now be of unlimited size. - Defect #80660 fixed. Unterminated conditional directives (#if, #ifdef, #ifndef, missing a #endif) now generate errors. - Defect #80662 fixed. The GUI now checks for the existence of the BIOS before attempting to compile it (in all cases). Previously, if the BIOS was missing, Dynamic C could GPF. - Defect #80690 fixed. Token checking was not suppressed when parsing character constants in assembly. - Defect #80699 fixed. Cosmetic fix to invalid symbol name error message. Previously, invalid symbol names would not be included in the error message in some cases. - Defect #80733 fixed. Using "..." as a parameter for indexed cofunctions now correctly generates an error. - Defect #80735 fixed. Assembly macros containing single quotes occasionally failed with an incorrect error message. - Defect #80758 fixed. C++ comments can now span multiple lines by using the "\" line continuation character. - Defect #80761 fixed. The error message for defining a constant with #class auto enabled was confusing and incorrect. A new error message is now generated for this case. - Defect #80775 fixed. Array dimensions that were too large were incorrectly allowed. - Defect #80778 fixed. Actually a library bug. Using #useix caused the builtin functions BIT, SET, and RES to fail in certain circumstances. - Defect #80782 fixed. Function pointers in xmem with an ximport caused watch expressions to occasionally crash the target. Improvements to target communication and the debugger in DC 8 seem to have eliminated the problem. - Defect #80785 fixed. The extended opcode for "LD HL, (mn)" no longer crashes the target when single-stepping. - Defect #80798 fixed. Root bouncers were not generated for #asm xmem functions. - Defect #80799 fixed. #asm functions could differ in memory mapping between the prototype and the definition. This could lead to a function marked as xmem in the protoype actually being compiled to root - with no warning. - Defect #80800 fixed. The fix for defect 799 also fixed this defect. If the prototype of a #asm function has an "xmem" mapping prefix, and the definition is in a block with no mapping (default=root), an error is now generated. - Defect #80803 fixed. Warnings in unrelated initializers can no longer prevent a watch expression from being added. - Defect #80804 fixed. Macros matching register names now generate warnings. - Defect #80811 fixed. The interrupt_vector keyword now works globally. - Defect #80825 fixed. #ximport now works with relative paths rather than absolute. - Defect #80830 fixed. Warning messages occasionally had strange line numbers that did not correspond to the program or the warning. - Defect #80831 fixed. (1) Watch expressions for string literals now give the actual address of the literal (for strings in the program, does not work with constant initializers). (2) Function watch expressions now give the xmem address of the function, or its bouncer address (if the bouncer exists). (3) Errors in watch expressions do not break following valid expressions. - Defect #80832 fixed. As part of the GUI overhaul, the information window now only displays info for root constants when separate I&D spaces is enabled (root constants do not exist in non-separate I&D mode). - Defect #80835 fixed. The interrupt_vector keyword would generate the ISR jump instruction in user code (instead of the relay) under Separate I&D with #memmap xmem. - Defect #80838 fixed. Cross-referential structures now compile. - Defect #80839 fixed. Structs can now be declared and used to define pointers before the definition of the struct itself. - Defect #80840 fixed. Aggregate member offset incorrect in asm code. - Defect #80844 fixed. The modulus operator no longer allows floating point operands in any case. - Defect #80845 fixed. Character constants are now correctly checked for improper octal values. - Defect #80856 fixed. An off-by-one error in code origin checking did not allow code to completely fill an origin. - Defect #80857 fixed. #xcodorg addresses are now checked and converted to xmem range addresses, with a warning. Previously this conversion was not done, and improper addresses could result in confusing error messages. - Defect #80862 fixed. A bug related to origin follows handling could cause root code to be compiled, but not transmitted to the target. - Defect #80868 fixed. Errors in watch expressions could cause the target to crash when a valid expression was entered later. - Defect #80876 fixed. The compiler will now generate errors if #class is compiled with bad, missing, or extra arguments. - Defect #80878 fixed. Actually a bug with the zcompress.exe utility, #zimport would fail if the directory the import file (and the program) was in contained spaces in its name. This was because the utility did not handle these spaces correctly. - Defect #80901 fixed. Unnecessary nops generated for parameter passing. Library Bugs - Defect #80006 fixed. Run-time math exceptions in watch expressions no longer cause target to crash. - Defect #80721 fixed. HDLCopenX now returns correct value - Defect #80819 fixed. useClockDivider3000's CLKDIV_8 macro value now affects CPU and peripheral clocks equally, consistent with other CLKDIV_x macro values. - Defect #80824 fixed. RFU can load USE_2NDFLASH_CODE program BIN file that crosses ID/User Blocks at the top of primary flash. - Defect #80841 fixed. Pilot BIOS protects appropriate size of ID/User Blocks for both mirrored and non-mirrored versions. - Defect #80846 fixed. Error logging was broken in Compile to Flash, Run in RAM, non-Separate I&D mode. - Defect #80850 fixed. LP35xx.lib. Modified sequence of configurations when switching between main oscillator and 32khz oscillator in powerMode(). C code converted into assembly code. - Defect #80851 fixed. Much improved keyboard response when STDIO redirected to serial port A. - Defect #80852 fixed. The con_put() command in ZConsole.lib will now work with files larger than CON_BUF_SIZE (1024 by default). - Defect #80854 fixed. Target sometimes gets watchdog reset when switching from 32 KHz oscillator to main oscillator. LP35xx.lib powerMode() revised to match and useMainOsc() removed from brdInit(). - Defect #80855 fixed. The con_createv() command in ZConsole.lib now creates INT32 type variables correctly. Previously, it used the value as the format specifier, so that the variable always displayed with the original value, even if changed. - Defect #80864 fixed. Writing to the User Block on supported large and/or nonuniform flash types works correctly. NB: The user is cautioned that a single sector erase on these types of flash may take up to two seconds, during which time no interrupts can be serviced! - Defect #80874 fixed. LP35xx.lib. Corrected calibration start addresses for differential and milli-amp inputs. - Defect #80875 fixed. RCM34xx.lib. Corrected calibration start addresses for differential and milli-amp inputs. - Defect #80886 fixed. Applications which are compiled to and run in RAM and use separate I&D space can map in and write to flash. - Defect #80890 fixed. Assembly level single stepping over a relative jump in the e000-e0ff range resulted in bad jump. - Defect #80891 fixed. Assembly level single stepping over a relative jump no longer trashes the af' register. - Defect #80903 fixed. INTVEC_BASE and XINTVEC_BASE are now correctly located in FAST_RAM_COMPILE mode, with or without separate I&D space. - Defect #80908 fixed. Debug kernel no longer causes stack leakage when single stepping through a ucos program compiled for separate I&D. Gui Bugs - Defect #80021 fixed. The task bar no longer fails to come up after a print preview when Dynamic C is in full screen mode. - Defect #80238 fixed. The preview text is no longer affected by invoking and accepting the Properties dialog from the Printer icon within Print Preview. - Defect #80306 fixed. The cursor no longer moves when using the horizontal scroll buttons. - Defect #80620 fixed. Setting a breakpoint in a pure assembly function no longer causes another window to pop/open up. - Defect #80673 fixed. Memory dumps to text file is now correct for large amounts of memory. - Defect #80689 fixed. Disassembly window now correct for 00:e000-00:ffff address range. - Defect #80772 fixed. Dumping entire flash from Inspect | Dump at Address now works correctly. - Defect #80780 fixed. The Defines window in the Project Options dialog accepts multi-line entries that do not word-wrap, including pastes. - Defect #80853 fixed. Ctrl+F2 correctly restarts a program being debugged via a RabbitLink without loss of communication. - Defect #80860 fixed. The Assembly window now treats the n offset in (sp+n)-style instructions properly, as an unsigned value. - Defect #80866 fixed. Gui "Include RST 28 Instructions" and compiler "DEBUG_RST" macro now synchronized properly. Other Functional Changes - Changed TCP/IP target communications to use the sock_xfastread/write functions to improve performance. - Commented out unsupported hybrid word/byte mode flash types in FLASHWR.LIB and in FLASH.INI which were originally added in error. - The User Block maximum size limit on supported flash types has been increased to 64KB. NB: The actual size of a User Block on supported large/nonuniform sector flash types is determined by the sector map of the particular flash device. - Compiling via F5 or F9 may not display BIOS warning messages. Use Ctrl-Y to check if warnings are generated during the BIOS compile. Known Problems - Some computers may have trouble displaying the I/O register help file (Registers.chm) and/or the main Dynamic C help file (dcw.hlp). Please contact Rabbit Tech Support for the files needed to update your system. ***************************************************************** VERSION 7.34P2 OTHER FUNCTIONAL CHANGES - Added support for RCM3220 core module. ***************************************************************** VERSION 7.34 BUG FIXES Compiler Bugs - Defect #862 fixed. A bug related to origin follows handling could cause root code to be compiled, but not transmitted to the target. - Defect #877 fixed. GetVectIntern, SetVectExtern3000, and GetVectExtern3000 were broken under I&D space. Library Bugs - Defect #879 fixed. The writeUserBlock function could overwrite a version 2 ID Block. TCP/IP Bugs - Defect #859 fixed. sock_init() on the Realtek no longer causes spurious memory writes into xmem or the stack. - Defect #861 fixed. Buffer overflows in the test_cgi() function in samples\tcpip\http\cgi.c were fixed. ***************************************************************** VERSION 7.33P3 BUG FIXES Library Bugs - Defect #848 fixed. LP35xx.lib xxxAlert() functions timeout early. OTHER FUNCTIONAL CHANGES - Added support for BL2500 with RCM3200 core module option. - Added support for EG2110 Rabbit Link. ***************************************************************** VERSION 7.33TSE2 Library Bugs - Defect #847 fixed. Fixes BL2500 analog input conversion by increasing time thus allowing circuitry to settle between the 10-step approximations. Increases conversion time from 71 ms to 86 ms. ***************************************************************** VERSION 7.33P NEW FEATURES - Samples, libraries, and documentation for new RCM3400 added. - Samples, libraries, and documentation for new BL2500 added. BUG FIXES Compiler Bugs - Defect #810 fixed. The keyword interrupt_vector did not work correctly when placed in xmem functions. Library Bugs - Defect #805 fixed. Single 256K split-flash DLM type program locks up when using FS2. - Defect #808 fixed. Cloning broken on RCM3200 in I&D space in fast RAM mode. - Defect #809 fixed. Single 256K split-flash DLM type program could unintentionally erase Id/User Blocks. - Defect #812 fixed. Sector write flash driver didn't work in I&D space. - Defect 823 fixed. I2C macros were broken. - Defect #833 fixed. Debugging at 57600 or 115200 baud works on fast boards when USE_TIMERA_PRESCALE is defined. - Defect #834 fixed. Bios did not include I&D relays for external interrupts. - Defect #836 fixed. SetVectIntern does not work in I&D space. TCP/IP Bugs - Defect #813 fixed. SMSC packet driver was incorrectly checking the ETH_BUFSIZE macro in assembly. Did not affect any released hardware products. - Defect #814 fixed. For automatically generated and parse HTTP forms, float variables are now checked correctly. GUI/Debugger Bugs - Defect #815 fixed. Saving an RTI File in the "Options | Define target configuration" dialog no longer causes an access violation if "Targetless Compiler" registry settings exist from a prior Dynamic C installation. - Defect #816 fixed. RCM3100 now included in the pulldown menu for "Options | Define target configuration". OTHER FUNCTIONAL CHANGES - Unnecessarily reserved XMEM flash space made available to single 256K split-flash DLM type and to twin 256K flash DLP type programs. - OP7200 drivers were updated to use the new WrExtPort function to assure that address-hold time is being met for the CPLD on external I/O cycles. ***************************************************************** VERSION 7.32P NEW FEATURES - Compile to binary file using attached target is enabled. - Download manager for single flash and TCPIP systems added to main tree. Files "Samples\Download\Dlm_tcp.c" and "DLP_256KFLASH.C" added. This uses Rabbit A18 to Flash A17 re-route board option. Compile-time option added to "Bios\RabbitBios.c" to not split SRAM between Primary and Secondary programs, DONT_SPLIT_RAM. See TN224 for details about TCP option, and TN218 for 256K option. BUG FIXES Compiler Bugs - Defect #793 fixed. Generated code for function calls can get corrupted depending on actual parameter expressions. - Defect #796 fixed. Command line compiler doesn't report compile time errors in the BIOS. - Defect #797 fixed. Long string literals could cause an overflow in an internal buffer, crashing Dynamic C. - Defect #802 fixed. Only the first 240 typedefs could be used as function parameters. Library Bugs - Defect #795 fixed. Serial Rx character interrupt service can't disrupt results from the serXrdFree, serXrdUsed, serXwrFree and serXwrUsed functions. - Defect #801 fixed. Active interrupts after forceSoftReset call don't cause subsequent baud rate value miscalculation. TCP/IP Bugs ***************************************************************** VERSION 7.31P NEW FEATURES - Samples, libraries, and documentation for new OP7200 added. - Separate I&D space uses memory that was previously reserved for xmem code and data, so when compiling in RAM only mode, some programs may not fit anymore. Moving code and data back to root may help the programs fit again. BUG FIXES Compiler Bugs - Defect #658 fixed. Assignment to a constant pointer produced an error, even when correctly assigning to a dereferenced constant pointer. - Defect #668 fixed. Local #asm labels that collide with global labels now generate an error. Previously, any references to the local label would silently resolve to the global label. - Defect #716 fixed. @pc was not evaluated correctly. @pc now evaluates to address of currently executing instruction. - Defect #740 fixed. Dynamic C sometimes compiles constant data to the wrong #rcodorg segment. - Defect #786 fixed. Breakpoints on second flash broken. - Defect #787 fixed. Bug with xdata and follows qualifier for origin directives. Library Bugs - Defect #779 fixed. character mode in PACKET.LIB now uses correct transmit sub TCP/IP Bugs - Defect #791 fixed. In ZCONSOLE.LIB, console_enable() and console_disable() now work for all I/O methods. - Defect #792 fixed. In ZCONSOLE.LIB, the "reset" commands now work for the telnet I/O method. - Defect #788 fixed. Changing PD0 before sock_init may cause the Ethernet not to initialize properly. ***************************************************************** VERSION 7.30 NEW FEATURES - Supports separate instruction and data space. - http_scanpost function added to make it easier to handle http posts in cgi's. - added the makecold function to create custom tuple mode programs. - Feature request #487 improved. STDIO redirect to serial now handles input as well, and will automatically switch between outputting to the STDIO window in debug mode and the serial port in run mode. - Breakpoints can now be set in ISRs. - Ethernet packet driver support for SMSC LAN91C113 10/100. - Ethernet packet driver support for ASIX AX88796 10/100. - New TCP/IP library IGMP.LIB allows the use of multicasting, IGMPv1, and IGMPv2. - New function writeUserBlockArray() allows writing data from scattered locations contiguously to the user block. readUserBlockArray() allows reading contiguous data from the user block into scattered destinations. - New function WriteFlash2Array() allows writing data from scattered locations to a contiguous second flash region. - ZCONSOLE.LIB now supports saving configuration to the user block. Hence, it is no longer dependent on the file systems. - ZCONSOLE.LIB supports more configuration options (including DHCP), as well as multi-interface support. - Additional xmem-related functions in XMEM.LIB: _LIN2SEG : assembler macro to convert linear (20-bit) physical address to segmented form in XPC window (0xE000-0xEFFF). xmemchr() : version of strchr() paddrDS() and paddrSS() : restricted but more efficient versions of the general paddr() function. xstrlen() : version of strlen() xgetint(), xgetlong() : read word or longword values from xmem. xsetint(), xsetlong() : write word or longword values to xmem. - New library RAND.LIB. Contains random number generators and a means for generating initial "seed" values based on external events. This library is a robust extension of the random number generators in MATH.LIB. - New TCP/IP libraries SNMP.LIB and MIB.LIB. Implements SNMP v1 basic protocol (using UDP as transport machanism) plus a data- base for the MIB tree. - TCP has RFC-compliant congestion avoidance algorithm. - You can eliminate all TCP code (and/or UDP code) by defining macros (DISABLE_TCP/DISABLE_UDP). This saves code space and download time in applications which do not require these protocols. - TCP/IP supports multiple interfaces. You can now have ethernet plus PPP at the same time. Each interface may be initialized using macro definitions, and is fully configurable at run-time by calling the ifconfig() function. ifconfig() is the replacement for the deprecated tcp_config() function, however tcp_config() is still supported for backwards compatibility. - TCP and UDP sockets now have well-defined data handler callbacks. The UDP handler allows you to create extremely efficient request/response type UDP servers. The TCP handler allows the callback to peek at the incoming data stream (possibly modifying it in-place before the application sees it). - New TCP socket functions sock_xfastwrite() and sock_xfastread(). These allow data transfer directly from/to extended memory. Also sock_aread(), sock_axread(), sock_awrite() and sock_axwrite() allow "atomic" reading and writing to sockets. - ARP handles ICMP redirect messages. - TCP write performance improved (about double the transmit speed compared with previous release). Read performance also slightly improved. - New style of configuring the TCP/IP libraries. This was necessitated by the additional complexity resulting from the multiple interface support. The old style of configuration is supported for backwards compatibility. The new style allows "set and forget" configurations, including the ability to create custom configurations which will not be overwritten by new releases of Dynamic C. You direct each sample program to use a particular configuration by defining a single macro (#define TCPCONFIG ). - BOOTP/DHCP allocates its own UDP socket buffer. No need to account for this in MAX_UDP_SOCKET_BUFFERS. - BOOTP.LIB can be forced to use only BOOTP (not DHCP) if symbol BOOTP_ONLY is defined. Other Functional Changes - A macro has been added to the BIOS, USE_TIMERA_PRESCALE, to enable the timer A prescale available on the Rabbit 3000. Enabling this feature will run the peripheral clock directly off the CPU clock instead of the default CPU clock/2, allowing higher baud rates. - The crystal frequency detection is now done in the BIOS as well (instead of just at compile time). This means that things like baud rates will work properly when a binary image from a board with one crystal frequency is loaded onto a board with a different crystal frequency. Works also with the download secondary programs. - Dynamic C now polls the target only when it is explicity told to. Polling remains enabled until explicilty disabled (via "Run | Poll Target" or Ctrl + O). - FTP server keeps a single copy of the handler functions, instead of a copy for each session. This means a handler function can call another function (since "state" ptr isn't needed to find the handlers). Improvement: ftp_dflt_list() now calls the "get size" handler for each file. - Improved the speed of the HTTP server sending static ximported files by replacing root copy with a sock_xfastwrite. - Modified enableIObus() and disableIObus() so that they do not use save variables of shadow registers. This allows the functions to be independent of each other. - RCM3000, RCM3100, RCM3200 samples libraries are now #use'd with lcd122key7.lib. This will produce an error message if PORTA_AUX_IO is not defined. - LCD_Keypad sample programs have been updated to use dispInit() in place of glInit() and keyInit(). dispLedOut() replaces ledOut(). - Smart Star milli-Amp function descriptions and samples modified to accommodate factory calibrations in unit amperes. BUG FIXES Compiler Bugs - Defect #657 fixed. Runtime errors in #nodebug code will now display the correct file and line information instead of causing Dynamic C to hang. - Defect #695 fixed. Files with the same pathname but different extensions can now be put into lib.dir without conflict. - Defect #702 fixed. Functions tolower and toupper now leave non-ASCII inputs unchanged. - Defect #717 fixed. Single stepping over long running functions (sock_init, gets, getchar, etc) now works correctly without causing a watchdog timeout. - Defect #727 fixed. In constant folding, division of negative constant cast to char or to unsigned type has correct result. - Defect #731 fixed. Exceptions that were thrown in Dynamic C before an rst 28h was encountered (such as at the beginning of main) were not handled correctly, resulting in lost target communications. - Defect #729 and #739 fixed. Removed serMode warning for TCP/IP Development Kits. - Defect #730 fixed. Bug caused xdata and sizeof to generate string literals in root code/constant space. - Defect #745 fixed. Jump out of range error reported when doing a backward relative jump in the 0xf000 range of xmem. - Defect #747 fixed. Debugging slice statements now works correctly. - Defect #748 fixed. Compiling to ram now works correctly for Rabbitlink. - Defect #770 fixed. The command line compiler will now use a user defined BIOS file read from the project file, providing the use BIOS file flag is true. - Defect #777 fixed. The packet driver emulation of the 9346 was corrupting the clock and address register in sock_init, typically the PDDR register. GUI/Debugger Bugs - Defect #674 fixed. Simplified "Inspect | Dump at Address | Save Entire Flash to File" dialog to remove potentially problematic interface elements. - Defect #769 fixed. State of menu item "Compile | Include debug code/RST 28 instructions" is now maintained solely by project files. Library Bugs - Defect #182 fixed. It was possible for read_rtc() to read the RTC while it was updating, occasionally causing invalid data. (Previously incorrectly listed as being fixed in VERSION 7.02P.) Note that read_rtc_32kHz(), added in 7.02P to allow access to the RTC while running off the 32kHz oscillator, is now deprecated. Use read_rtc() instead. - Defect #630 fixed. New PPP library handles escaped byte map correctly. - Defect #683 fixed. The code for WrPortI was not properly protected against a race condition with an ISR that is updating the same register. - Defect #686 fixed. Dynamic C version 7.25 was having problems with the flash file systems and some Atmel flash. - Defect #688 fixed. The clock doubler was being set with incorrect values for some Rabbit 3000 oscillator frequencies. - Defect #691 fixed. OSMemCreate now handles memory chunk allocations larger that 255 bytes. - Defect #696 fixed. A Deadlock issue with uC/OS-II in sock_gets() has been fixed. - Defect #698 fixed. New PPP library eliminates seperate PPPgetErrors function. - Defect #718 fixed. UDP sockets no longer sometimes accept an initial datagram directed to an incorrect port. - Defect #719 fixed. console_tick() will no longer block for long periods of time. - Defect #722 fixed. GetIDBlockSize() was returning incorrect values for version 2 ID blocks. - Defect #723 fixed. pd_resetinterface which is called from sock_init did not properly save and restore the IX register. - Defect #725 fixed. The errlogGetMessage(), errlogFormatEntry(), errlogGetHeaderInfo() functions returned pointers to auto char array buffers, now return pointers to static buffers. - Defect #726 fixed. UserBlockSector variable was incorrect for 128kb flash. - Defect #729 fixed. Removed warning from ICOM.LIB serMode for TCP/IP Development Kits. - Defect #732 fixed. FS2_RAM_PHYS macro in STACK.LIB is corrected for targets with 512KB SRAM. - Defect #734 fixed. enableport/disableport have non-ISR versions now - Defect #736 fixed. Form strings of the maximum length will now always be stored with null termination. - Defect #737 fixed. RCM2200 packet driver was incorrectly setting PD4 and PD7 as outputs and clearing the function and control registers for these bits. - Defect #739 fixed. Same as #729. - Defect #746 fixed. FS2 on 512KB first flash now works, and RAM FS2 stability problems have been fixed. - Defect #750 fixed. BL2100 digital outputs no longer change states when a digital input is read. - Defect #751 fixed. OP6800 backlight no longer changes states when toggling the LED's on the display. - Defect #753 fixed. Programs compiled to RAM-only boards load and run correctly. - Defect #755 fixed. Passive mode FTP client downloads will now work when it receives a "125" message instead of a "150" message. - Defect #756 fixed. Non-passive mode FTP client downloads will no longer abort before the data connection has a chance to establish. - Defect #759. The PE1-7 Function registers were being set instead of clearing PE0 function register for the BL2000 packet driver. - Defect #762 fixed . serEopen would not set low baud rate prescaler correctly. - Defect #765. The pilot BIOS would erase the entire contents of a 512kb flash if the code size was greater than 256kb. - Defect #771 fixed. uC/OS-II event flags now work properly for tasks with different stack semgents. - Defect #781 fixed. The bottom block in mirrored (v. 3 and up) ID/User Block systems is fully protected, and FS2 no longer attempts to write there. RFU Bugs - Defect #685 fixed. RFU now completely loads large programs over an ethernet connection. Sample Program Bugs - Defect #701 fixed. An incorrect shadow register was being used in the RCM2100 sample EXTSRAM2.C. Documentation Additions - Tech Note 220 - Two Flash Download Manager with FTP. ***************************************************************** VERSION 7.26TSE2 NEW FEATURES - Samples, libraries, and documentation added to TSE kits for BL2000, BL2100, OP6800 and SmartStar boards. ***************************************************************** VERSION 7.26P NEW FEATURES - Samples, libraries, and documentation for new LP3500 series controller added. Other Functional Changes - The automatic baud negotiation with the target can now be disabled in the Options/Communications dialog. Some laptops had problems with this feature. In addition, the maximum negotiated baud rate (up to 460800 baud) can be entered in the Communications dialog box. - 2400 and 4800 baud are now supported as debug baud rates. - The compiler will now reduce the debug baud rate if it determines that the target cannot support the selected value. - Enhanced driver in mscg12232.lib for "no line" display. BUG FIXES Compiler Bugs - Defect #697 fixed. Repeated use of Function Lookup (Ctrl-H) will no longer cause a GPF. - Defect #742 fixed. Duplicate symbol error message incorrect after saving library. Library Bugs - Changes in lp3500.lib. Added runtime check for installed analog device. Changed PF1 to output high in brdInit() if no analog device. Added detailed description to powerMode(). Note that these fixes do NOT affect 7.26SE, only 7.26SE2 and 7.26P. - Defect #677 fixed. Repeated calls to writeUserBlock() on a 4kb sector flash could cause a hardware watchdog timeout. (Previously incorrectly listed as being fixed in VERSION 7.25P.) - Defect #724 fixed. Dynamic C can now locate BL20xx, BL21xx calibration constants. - Defect #728 fixed. Serial ports will be opened with the correct baud rate after a call to clockDoublerOn() or clockDoublerOff(). - Defect #749 fixed. Version 4 ID Block / User Block mirroring works in both directions. - Defect #767. paddr returned an incorrect value for 0xd000-0xd0ff. ***************************************************************** VERSION 7.25SE2 NEW FEATURES - Samples, libraries, and documentation for new RCM3100 core module added. ***************************************************************** VERSION 7.25P NEW FEATURES - Samples, libraries, and documentation for new RCM3000 core module added. - Feature request #380. The clock doubler setting will now be optimized for the particular CPU clock detected instead of simply selecting a default value. - Feature request #487. STDIO output can now be directed to a serial port for debugging under run mode. - The baud rate used for downloading is now negotiated between the PC and the target. This will speed up downloading for various boards, particuarly if a USB converter is used where rates up to 460800 baud are possible. - The baud rates for debugging with the BIOS have been expanded from 57600 and 115200 to 9600, 19200, 38400, 57600, and 115200. This aids in debugging with boards with slower crystals. - Dynamic C now works with a wider selection of USB to Serial converters. The quality of drivers for converters varies widely, and Dynamic C attempts to compensate for these differences. - http_idle function added. This function returns non-zero if all of the http_handler functions are not handling active connections. - Support was added for more large-sector flash products. - Alt+F7 and Alt+F8 will force the debugger to step by c statements rather than by instruction when the assembly window is open. (Introduced in 7.10). - *.MAP files added to File Open dialog box. - Single-stepping control improved in uC/OS-II. Can now confine stepping to current task. - Callback function for ICMP echo requests (PING) can be defined. See documentation in ICMP.LIB for the macros ICMP_ECHOREQ_CALLBACK and ICMP_RESPOND_TO_BCAST_ECHOREQ. Other Functional Changes - Removed initial bios compile. Bios will automatically compile the first time a program is compiled. - Scrolling functionality improved for STDIO window. - New "Tips of the Day" added. - Overall compiler speed improved. - Debugger runs programs full speed after 1 or more set breakpoints have been removed, either by toggling each breakpoint off or by using the Run|Clear All Breakpoints command. - A "secondary program" can now read the System ID block stored at the top of the first Flash. Required for TCP-based DLP, see "Samples\DOWN_LOAD\DLP_2_FLASH.c" for example. BUG FIXES Compiler Bugs - Defect #619 fixed. Multi-line assembly macros with arguments now compile if alternate registers are used in the replacement list. - Defect #651 fixed. Removed superfluous warning when root functions are called via a long call. - Defect #653 fixed. Pressing cancel when downloading the pilot bios during a compile invoked by either F5 or F9 will no longer cause occasional crashes. - Defect #654 fixed. The command line compiler now reads the crystal frequency correctly when an RTI file is used with the -rf switch. - Defect #655 fixed. The first parameter in an indirect call to an xmem function was being corrupted by the root bouncer code. - Defect #656 fixed. Cofunctions in xmem using an everytime statement did not work correctly. All everytime statements are now placed in root space to avoid this. GUI/Debugger Bugs - Defect #649 fixed. CPU usage now drops to normal after a function lookup dialog is closed. - Defect #672 fixed. Print dialog page range corrected for STDIO window. - Defect #675 fixed. Macro definitions added to Defines window and then were causing Dynamic C to crash on the first compile. Library Bugs - Defect #605 fixed. TCP SYN queue fix to prevent occasional timeouts. - Defect #607 fixed. TCP connections do not lock up if socket buffer size is less than the MSS. - Defect #608 fixed. Incoming UDP packets do not alter flags in ARP cache. Prevents ARP resolve failures after long intervals of inactivity. - Defect #609 fixed. DHCP renew/rebind transmit loop fixed. - Defect #640 fixed. serMode() now returns the correct status when the serial ports have been successfully configured. - Defect #667 fixed. Telnet code in VSERIAL.LIB works properly with the Win2K and WinXP telnet. - Defect #669 fixed. Error generated when attempting to compile code containing calls to randg() and randb(). - Defect #670 fixed. i2c_wr_wait() correctly returns -1 after too many retries. - Defect #676 fixed. The clockDoublerOn/Off functions are supposed to keep target communications when called for most products, but target communications was consistently lost. ***************************************************************** VERSION 7.21P NEW FEATURES - Xmem code can now be compiled into the bios. Root code and data usage by libraries and BIOS reduced. BUG FIXES Compiler Bugs - Defect #634 fixed. An improper check was occurring in evaluating a function's return value when returning a char. This bug was caused by the fix to defect #532, so the fix was removed until a better one is implemented and #532 is now unfixed. - Defect #635 fixed. Using sizeof on a constant string literal incorrectly resulted in an error. - Defect #636 fixed. Char arrays assigned a string the same length as the array dimension produced errors when only a warning should have been produced. - Defect #641 fixed. Null terminator was omitted from strings in xdata statements. - Defect #643 fixed. Targetlesscomp.dll now has the correct base frequencies for the RCM2000, RCM2010, RCM2020, and SR9100. - Defect #646 fixed. Structure block copies failed when "#pragma DATAWAITSUSED on" was applied. - Defect #648 fixed. Cofunction abondonment in xmem broke when abondonment code appeared after the xmem page change. - Defect #665 fixed. More than about 256 variables could not be declared in a single statement in global scope. Library Bugs - Defect #638 fixed. writeUserBlock() now works when #class auto is used. - Defect #642 fixed. The debug kernel does not allow virtual watchdogs to be counted while single stepping. - Defect #645 fixed. SHort delay added to the end of ModemInit() and CofModemInit() to prevent modem lockups on some hardware. Documentation Additions - Tech Note 219 - Root memory usage reduction tips added. - Added uC/OS-II documentation from Jean J. Labrosse in the samples/ucos-ii directory. Newv251.pdf contains all of the features added since V2.00, and Relv251.pdf contains release notes for version 2.51. Several API changes have been introduced in v 2.51. ***************************************************************** VERSION 7.20P NEW FEATURES - SR9150/SR9160 libraries added for full support of SR9150 and SR9160 specific functionality. This includes libraries supporting IO, RS232,RS485, TCPIP and SR9150/SR9160 hardware specific functions. - Support has been improved for flash devices with 4096-byte sectors (i.e. the SST39 series). In addition, support for compiling to "large-sector" devices (sector sizes > 4kb) has been added. See the Rabbit Designer’s Handbook for a list of supported devices. - Feature Request #480. The enum keyword is now supported per the ANSI C specification. - ucos2.lib has been upgraded to version 2.51 which includes mutexes and event flags. The library has been broken up into multiple files to more closely match the source structure of uCOS-II. - Feature Request #473. Added the built in macros __FILE__, __LINE__, __DATE__, and __TIME__. Refers to section 6.8.8 of the ANSI standard. The difference between our implementation is that the __TIME__ and __DATE__ of the modules reflect either the time of compilation for the bios or the .c file. The reason for this is that we lack linking, so libraries are essentially compiled at the same time as the file being compiled (ie the bios, or the user’s program). - Sample program to interface to ADS787 chip added in /SAMPLES/SPI. - Cloning is now all "fast" cloning, and options have been added for "sterile" clones, unconditional copy of a second flash, and more. See RabbitBios.c for details. - Added console_enable and console_disable to Zconsole, which allow the sharing of the connection. - Added ConsoleLogin structure which will prompt for a name and password when a connection is established. There is a matching CONSOLE_LOGIN_BACKUP macro for saving and restoring the structure. - Efficiency and robustness improvements to FTP. - FTP_CLIENT and FTP_SERVER libraries updated to support passive mode connections. This makes it more convenient for clients and servers which are on different sides of a firewall. - FTP_CLIENT supports upload/download of more than 32k using a user-specified data handler function. The data handler can also generate dynamic content, or parse incoming content on-the-fly. - Both FTP_CLIENT and FTP_SERVER libraries can co-exist in the one application. - The default FTP server allows files owned by the anonymous user to be accessed by any other defined user. Only files which are accessible to the logged-in user are listed. The userID of the anonymous user is set via the ftp_set_anonymous() function. - The function names for the default FTP handlers in library TcpIp\FTP_SERVER.LIB have been changed. They are forward declared in the "header" portion. See "Samples\TcpIp\Http\GetFile.c". Defining FTP_WRITABLE_FILES permits FTP client to upload. This requires support from application. - TARGETPROC_LOADER has been reworked to support the new coldloader and PilotBIOS. Ethernet loading should be seamlessly transparent to the target board and DynamicC. - VSERIAL.LIB handles remote-echo over telnet properly. Programs that use this library will also have to #use "DCRTCP.LIB" directly now, instead of relying on VSERIAL.LIB to do it. - ZCONSOLE.LIB now uses the telnet code from VSERIAL.LIB, so echo is handled properly. - Added SERA_USEPORTD macro to RS232 library. Allows alternate pins to be used for serial port A. - Constant string optimization implemented. - The Communications Options dialog now contains a checkbox to enable/disable processor verification. The default is checked (verify the processor with the DSR line) and the state is maintained per project. This replaces the Tx Mode options which are no longer used. Other Functional Changes Improvements to Smart Star library - Added run-time error checking to functions. - Added display/keypad module configurations. - Added ledOut() function to library. - Added serMode(3) configuration to support both 5-wire and RS485. - Added end-of-conversion timeout to anaIn() function. - Added return value: -3, eeprom unreadable, to anaInEERd() and anaOutEERd() functions. - Modified AD/DA samples to demonstrate above eeprom error message. - Structs and unions now obey the same scoping rules as other identifiers. That is, a structure or union type defined in a function no longer has global scope. - Feature Request #477. Stdio window row capacity increased from 150 to 10000, with row and column limits maintained in the registry. - #asm blocks are now marked "nodebug" by default, even if an enclosing function is marked "debug". This means that a breakpoint can not be set inside a #asm block unless "#asm debug" is explicitly used. - Call graph in map file now suppresses subtrees of functions that have already been printed. - Compiling with "Used Attached Target" no longer compiles the bios, and requires that the target has a running bios/program. The Options menu now has a Define Target Configuration Command. The Compile to *.bin file command now use the target configuration defined in the new option to compile, instead of popping the Target Configuration Dialog up for every compilation. BUG FIXES Compiler Bugs - Defect #477 fixed. Multi-line ANSI-style string concatenations are not supported by Dynamic C. Before, Dynamic C silently failed, now it flags an error. - Defect #532 fixed. Assignment operators used in conditional expressions with char variables produced an incorrect promotion of the expression to an int. - Defect #536 fixed. Dynamic C would GPF if an array of type CoData was used as a name instead of a CoData pointer. - Defect #555 fixed. Escape characters in string constants do not cause GPFs. - Defect #559 fixed. Undefined origin directives would cause the compiler to crash. - Defect #560 fixed. Sizeof with complicated expressions does not generated bad code. - Defect #565 fixed. The compiler now performs parameter checking on built-in functions set and res. - Defect #575 fixed. Symbol table overflow may cause DC to live lock. - Defect #579 fixed. Struct and union tags that are reused defined now generate an error instead of a warning. - Defect #582 fixed. Declaring a union foo variable when struct foo had been defined earlier (and vice versa) now generates an error. - Defect #584 fixed. The compiler now performs parameter checking on built-in function bit. - Defect #595 fixed. The ISR in sample program TIMER_B.C wasn’t quite correct. - Defect #597 fixed. Instructions of the form ldp (mn), hl | ix | iy will now compile. - Defect #598 fixed. Global typedefs no longer override typedefs of the same name in functions. - Defect #599 fixed. A struct or union is no longer allowed to contain multiple members of the same name. - Defect #600 fixed. Initialized const struct with a pointer member is now properly recognized as const. - Defect #610 fixed. Pointers cast to void* are no longer allowed in integer arithmetic. - Defect #613 fixed. Complex expressions in #asm blocks for memory offsets were not evaluated correctly in some cases. - Defect #614 fixed. An error is now issued for an assignment to a member of a const struct variable. - Defect #622 fixed. The Rabbit Field utility can now be run from a CD and open binary files which are on a CD. - Defect #641 fixed. String literals in xdata blocks are now null terminated. GUI/Debugger Bugs - Defect #238 fixed. runwatch() now updates watches with the same snapshot. - Defect #510 fixed. Dynamic C did not handle const variables appropriately in watch expressions. - Defect #538 fixed. Opening a different project can now be cancelled when prompted with an unsaved Edit window. - Defect #539 fixed. Saving the current project settings to a new project name now updates the Dyn