***************************************************************** Dynamic C for Rabbit Release Notes ***************************************************************** ***************************************************************** VERSION 10.66 NEW FEATURES - Addition of the Flash Translation Layer (FTL) restores FAT access to NAND flash devices on RCM40xx series modules, or NAND flash added to user designs (using Aux I/O bus). This library also includes full wear leveling support across the NAND flash device. - The stdio window now allows pasting. - Simple UserBlock File System now available. This library (SUBFS.LIB) contains some API functions for managing a very small filesystem in the userID block. It is recommended to use SUBFS instead of manually administered, hard-coded offsets into the userID block area. Note that iDigi uses SUBFS to manage its configuration data. SUBFS is intended to contain small amounts of infrequently changed data such as application calibration constants and configuration. Up to 15 files may be defined (with names up to 12 characters). All operations either succeeed or fail completely, thus the integrity of the filesystem is maintained. See samples\filesystem\subfs\subfs.c - RabbitWeb for HTTP has been upgraded to take advantage of new libraries introduced for iDigi support. The following features have been added to the ZHTML scripting language: 1) with(): specify a variable name prefix This statement is syntactically like echo(). It takes the name (or partial name) of a RabbitWeb variable, and uses that name as a prefix for other references to the variable which start with '.' or '['. For example, prints the value of the #web variable foo.bar.baz twice. The first echo statement uses the normal (absolute) method of access by spelling out the name fully. The second uses the prefix specified by the most recent with() statement. On entry to a new brace level, any existing with() prefix is propagated into the braces. A new with() inside the braces will change to a new prefix, however when the brace level is closed then the original with() prefix (outside the braces) will be restored. Thus, each brace level gets its own with() prefix, which is initialized from the current with() prefix of the enclosing level. The initial default (at the outermost level) is to have an empty prefix. Once set, the prefix cannot be emptied. The effect of an empty prefix is obtained simply by not using the initial '.' prefix in variable references. with() resolves any loop variables when executed. Thus, sets the prefix to $foo[2].bar (or whatever the value of $A was at the time of executing the with() statement). The purpose of with() is to save typing and reduce the possibility of coding errors. 2) sizeof(): echo decimal size of a text field This is used to avoid hard-coding text field widths and the like in HTML input fields. For example will insert a decimal number in the HTML stream at that point. The value of the number depends on the type and size of the #web variable 'foo'. The following table lists the numbers generated based on the type: int: 6 unsigned int: 5 long: 11 unsigned long: 10 float: 12 char[N]: N-1 other: 0 3) json(): echo JavaScript Object Notation This is used to insert an entire variable tree in the HTML stream. For example, if a #web C variable is defined with the following structure: struct { int a; float b; struct { char s[10]; int t[5]; } c; } X; #web X then the following ZHTML markup: will insert {X:{a:5,b:44,c:{s:"hello",t:[0,1,2,3,4]}}} into the HTML stream at that point. This is a compact representation for sending arbitrary data structures in a machine-independent manner, and is particularly suitable for use with JavaScript. Note that the variable specified in the json() statement MUST be a root level variable (e.g. you CANNOT use something like json($foo.bar)). Access is only checked for the root itself, and inner content is not checked. Thus, any read/write permissions must be specified on the root variable and are assumed to apply to the entire contents of the structure. There is always an outer, "wrapper", object level created in the JSON string. This object has a single member with the name of the specified root variable. A common JavaScript idiom is thus to assign the object attribute immediately, using something like the following code: which assigns the JavaScript variable 'x' the object X, which recapitulates the C variable X on the Rabbit device. See samples\tcpip\rabbitweb\thermo_graph.c for demonstration. - When using userblock API functions, you must now add the following LIB to the application program. #use "idblock_api.lib" - When using sfbxxx serial flash API functions, you must now add the following LIB to the application program. #use "bootdev_sf_api.lib" - UDP sockets support transmit buffering. This is enabled by passing a negative buffer length to udp_extopen(). In this case, the provided buffer is split in half, with the first half used for receive and the second half for transmit. With a normal (positive) buffer length parameter, the functionality is unchanged and the entire buffer is used for receive buffering. Prior to this change, udp_sendto() always tried to push the datagram to the driver. This could fail in two common cases: (1) The hardware address of the destination was not yet resolved (via ARP) or (2) the network driver did not have sufficient buffering to accept the next packet. With the new behavior, udp_sendto() will attempt to send the datagram immediately if possible, otherwise it will buffer the datagram for later automatic transmission. Other networking libraries which use UDP, such as SNMP.LIB, have been modified to take advantage of the transmit buffer. In general, it is recommended to use a transmit buffer in any of the following cases: . RAM usage is not critical; there is spare RAM for the buffer . The UDP protocol does not include any acknowledgment/retransmit protocol . Very large datagrams are transmitted (such as would require outgoing fragmentation) . The additional code complexity of checking for ARP resolution before each udp_sendto() is not desired. Note that this change is not intended to make UDP "reliable", however it should improve the performance of UDP applications by removing most causes of datagram "infant mortality". - LZ compression library now supports I/O streams for input to and output from compression/decompression functions. This allows use of FAT files. BUG FIXES Compiler Bugs - Defect #21843. Label scoping has been corrected and the compiler now disallows goto targets outside the current function and warns if branch instruction targets are not labels. - Defect #23181. The final entry in an xstring declaration can now be followed by a comma for easier macro formatting. - Defect #25265: The maximum length for a unique symbol name is now 63, doubled from the ANSI C89 minimum of 31. - Defect #25589. Casts to array type are not allowed and now generate the appropriate errors. - Defect #25911. Casts to array type are not allowed and now generate the appropriate errors. - Defect #26670. Using far with array typedefs in declarations could cause internal stack imbalance errors. - Defect #27885: Non-prototyped assembly labels called from C now warn If a label is defined in an asm statement or #asm block, and the label is called as a C function, the label should be given a C prototype. If an unprototyped label is assigned to a function pointer, a warning will also be issued that the return type of the label does not match that of the function pointer. - Defect #30627. Assigning the return value of a function returning structure type to a structure in far was broken if the destination (left-hand-side of the assignment) was a complex expression, such as a structure pointer dereference. - Defect #32597: Strings are concatenated across lines ANSI C requires adjacent character strings to be concatenated. Previously, if the strings were on separate lines, the newline had to be escaped with a backslash. This restriction has been removed. - Defect #32723. The IDE will now ask to save .C and .H files that are modified in editor windows before proceeding with a compile. - Defect #33006. Garbage following #ifdef, #ifndef, and #elif was incorrectly ignored. - Defect #33066. String literals in sizeof expressions (i.e. sizeof("string")) are no longer emitted to the target as data. - Defect #33382: !(-0.0) now evaluates to true. - Defect #33579. Passing a const array to a function taking a non-const void pointer did not warn even though the const is discarded. - Defect #33880. Removed constant-index array bounds checking as per the ANSI C spec. - Defect #33887, 30892, 35113: casting to void now works. Examples: (void) 0; (void) function_returning_int(); - Defect #34174. Structures (not pointers) can now be used as operands in ternary operators. - Defect #34323: function pointer returning char as condition generates incorrect code. - Defect #34939. The compiler would not parse a function name in parentheses, which was needed for ANSI masking macros. - Defect #35077, 33618: newline after open paren caused the beginning of the next line to be ignored. GUI Bugs Library Bugs - Defect #28280. Corrected the spectrum spreader setting value, when enabled, for Rabbit 4000+ boards with non-doubled main clock where the main clock is less than 50 MHz. - Defect #28355. Adding watches on string literals in a program with separate I&D space disabled no longer overwrites root constants or code. - Defect #28609. Watch expressions on variables while single- stepping inside a cofunction now works correctly. - Defect #29079. The compiler defined _CRYSTAL_SPEED_ macro value is now exact for boards with 20 MHz or 25 MHz main oscillators. - Defect #34017. ZSERVER.LIB's sspec_changefv() no longer NUL- terminates maximum length string type form variables at one less than the maximum specified length. - Defect #33401. The strtod function now sets errno = ERANGE and returns (with appropriate sign) one of HUGE_VAL or 0 when overflow or underflow is detected. - Defect #34292. ASIX.LIB functionality now conforms to the "BUFFER RING OVERFLOW" recovery method as described in the AX88796 L data sheet. - Defect #34414. Comments, CDATA and PIs now supported (and ignored) in XML. - Defect #34508. element in query descriptor does not cause reboot. - Defect #34530. Empty element content in a set command now sets string variable to empty rather than leaving the value unchanged. - Defect #34449. Fixed a CoData structure corruption error in RS232.LIB's internal indexed cofunction which underlies the cof_serXputs and cof_serXwrite cofunction macros. - Defect #34549. The default value of the _SYS_MALLOC_BLOCKS macro is reduced on Rabbit boards whose primary RAM size is <= 128 KBytes, e.g. RCM5700/10. Note that applications which use malloc may define custom values for the _SYS_MALLOC_BLOCKS and _APP_MALLOC_BLOCKS macros, within the limits of the application-specific available memory. - Defect #34699. STDIO_FAT.c's fopen() with 'w' access mode doesn't truncate file to zero length. - Defect #35080: board_update.lib now automatically #uses "sflash.lib" if needed. - Defect #35084 and #36084: reading from stdin now blocks instead of returning EOF. - Defect #35113: getenv() now returns "char *" instead of "char far *". - Defect #37026. Fixed a Samples\FileSystem\FAT\fat_ucos.c run time crash when fat_AutoMount() is called before OSStart(). - Defect #37713. "strcspn() result is always 0 when its brk (i.e. 2nd) parameter is an empty string." - getswf() and getsn() flush every character to stdout (which is now buffered). - Added crc16.lib for shared use by serlink.lib, sdflash.lib and idblock.lib; deprecate getcrc() and getfarcrc() in favor of crc16_calc(). - Fixed incorrect return type of _f_memset. - Fixed incorrect macro definitions for 5 of 13 functions when USE_FAR_STRING_LIB is defined. OTHER FUNCTIONAL CHANGES - To provide improved application stability and lower EMI/RFI noise, the MiniCore RCM67xx family's recommended, default PLL output frequency is now 325 MHz (162.5 MHz Rabbit clock). - iDigi now supports writable (from the iDigi app) keepalive timers and counters. - HTTP library has been upgraded to use less root memory. The following incompatibilities may need to be fixed at the application level: . HTTP_CUSTOM_HEADERS: if this macro is used in order to manage custom HTTP headers, note that the function parameters are changed to use far pointers. . http_getData() and http_getURL(): these API functions changed to return far data. Should not cause too many changes in applications since most API functions like sprintf() will transparently accept far pointers. Some functions like memcpy() and strcpy() may need to be changed to use the far versions of these functions (_f_memcpy() and _f_strcpy()). - New RabbitWeb compatibility issues The new RabbitWeb library has a different underlying implementation than the previous version, and there are a few differences that may prevent direct recompilation of existing RabbitWeb code. If required, you can continue to use the old RabbitWeb library by #define USE_LEGACY_RABBITWEB at the top of your C code. This will bring in the old library, however it is not guaranteed that the old RabbitWeb library will work with iDigi. If using iDigi, then it is recommended to upgrade any RabbitWeb (HTTP) code to use the new RabbitWeb libraries. It is expected that free maintenance will no longer be available for the old RabbitWeb library, thus customers should upgrade to the new library within the next few releases of Dynamic C, particularly if intending to use iDigi. The following items are different between RabbitWeb versions: 1) Root of data structures must be #web'd The old RabbitWeb allows #web foo.bar without necessarily requiring #web foo The new RabbitWeb requires the root name of any #web variables to be registered using #web. This introduces the following potential problems: a) If only a few members of a large structure were registered, registering the root will now require more memory. b) Structure and array members that were inaccessible now become accessible to web browser users. Workarounds: a) Split out the desired members into their own smaller structure. b) Explicitly add access protection to the structure and array elements that were "exposed". Note: when registering variables which are arrays at the root level, use #web foo[@] not just #web foo 2) Arrays are now homogeneous The old RabbitWeb allowed individual array elements to be #web'd with different attributes (guard and update expressions, group permissions etc.). The new RabbitWeb enforces uniform attributes for all elements in an array. This considerably speeds up access and reduces memory requirements. Any existing application which takes advantage of this may need to be re- factored to make all elements have the same behavior. If there are different guard requirements for different array elements, then this can be achieved by creative use of auxiliary arrays which hold different information for the corresponding elements in the original array. See samples\tcpip\rabbitweb\arrays.c for a demonstration. Another style of work-around can be used in more complex cases. For example, old style: typedef struct { int baud; int stopbits; } SerPort; SerPort ports[3]; #web ports[@] #web ports[2] (...unique to port 2...) becomes: typedef struct { int baud; int stopbits; } SerPort; struct { SerPort port0, port1, port2; } _ports; #web _ports #web _ports.port2 (...unique to port 2...) SerPort * ports = &_ports.port0; This does require some changes to ZHTML files, because the names of the variables are necessarily changed. The last statement above initializes a pointer to simulate the original array style, thus a lot of the application code can remain unchanged. It is realatively easy to identify application code where this incompatibility will cause problems: simply look for #web statement which specify explicit numeric array indices (rather than the '@' placeholder). Such constructs identify non-homogenous array metadata. 3) char fields are now numbers, not ASCII characters For compatibility with iDigi, variables declared as single C characters are now considered to be unsigned numbers from 0 to 255. The old RabbitWeb treated these as single character strings. The workaround for this is to change the web variable definition from 'char x' to 'char x[2]', i.e. a single char string plus null terminator. This may necessitate some code changes (e.g. prefixing some expressions with '*' in order to dereference to the first character of the string). All such places will be picked up by the compiler's type checking. 4) [n] suffix on @ placeholders now ignored Multidimensional array placeholders used to require constructs of the following form: $arry[@[0]][@[1]] The new library ignores the index suffix, and thus the above construct should be simplified to $arry[@][@] The only place where this would cause a problem is if code had deliberately swapped the array indices from the usual order, for example to transpose the elements of a matrix. There is no simple workaround other than to rework the relevant piece of code. This change is considered extremely unlikely to affect any customers. - Longer symbol names supported Previous versions of Dynamic C used the first 31 characters in a symbol to define a unique symbol, the minimum required by the ANSI C89 specification. As of 10.66, the first 63 characters are used. Note: the compiler preprocesses library files into MD1 files to determine the locations of header (the line after a BeginHeader statement) and module (after the EndHeader statement) blocks, and their associated labels (the list of symbols within the BeginHeader statement). If a module label is more than 31 characters, the MD1 file will not be correct, and the module will not be found. Modifying and saving the file will force the compiler to regenerate the MD1 file. For example, open the library in Dynamic C, add a space and delete it, then save the library. - Introduced compiler improvements to generate shorter code sequences for many instances. Compiler should generate smaller binary files than in previous releases. - The User now has more flexible control of serial character assembly during RS-232 line break condition on any or all of serial ports A through F. When defined by the User, the previously supported RS232_NOCHARASSYINBRK macro disables character assembly during line breaks for all serial ports. When RS232_NOCHARASSYINBRK is not defined but one or more of the newly supported RS232_A_NOCHARASSYINBRK through RS232_F_NOCHARASSYINBRK macros are defined by the User, then character assembly during line break is disabled for only the associated serial port(s). - Sample program samples\tcpip\NIST_TIME.C has been removed as of this release. The protocol used, TCP time, is obsolete and may not work reliably or accurately with public time servers. See SNTP_TIME.C for improved protocol which is more accurate and reliable, and is widely supported by public time servers. - Secure HTTP samples (in samples\tcpip\SSL\HTTPS) have been modified to use PEM format certificates instead of DCC format. DCC format is deprecated as of this release, since (for RSA) it is about 3-4 times slower at run-time than PEM format. The Dynamic C Certificate Utility already produces the appropriate .pem files. The .dcc file need not be generated or used. ***************************************************************** VERSION 10.64 NEW FEATURES - Added support for ANSI-C file scoping. Each C file in a project now has its own scope independent of the other C files in the project. #use still works but the interaction with the new file scoping is different. See the Dynamic C User's Manual for more information. - Added support for ANSI-C block (nested) scoping. As per the specification, every curly-brace-delimited block now defines a new scope that is a child of the function or block in which the block occurs. Note that this also allows the declaration of variables at the beginning of any block. - Added ANSI C89/ISO C90 compliant support for 'const'. Dynamic C now handles the 'const' modifier in a manner consistent with the ANSI/ISO specification, unlike previous versions that limited the use of 'const' to initialized variables. See the Dynamic C User's Manual for more information. - Added support for 'signed char' type and use of 'signed' to describe 'int' and 'long int' types. - Updated libraries for compliance with ANSI C89/ISO C90 Standard. Define the macro __ANSI_STRICT__ to get ANSI behavior instead of legacy Dynamic C behavior. Notable additions and changes include: stdarg.h: Standard macros for accessing variable arguments. stdio.h: Includes full support of streams (FILE *) via standard functions like fopen(), fread(), fwrite(), etc. Includes scanf functions (fscanf, sscanf, vfscanf, etc.) with support for most of C99 format specifiers. Includes formatted print functions (printf, fprintf, snprintf, vfprintf, etc.) with support for most of C99 format specifiers. If __ANSI_PRINTF__ is defined, field widths in *printf functions grow to display full value (instead of displaying "***" to indicate overflow). If __ANSI_PUTS__ is defined, puts() appends a newline to the string sent to STDOUT (instead of just sending the string). stdlib.h: Adds atexit() to register functions that will auto- matically run when a program exits. Adds _n_bsearch() and _f_bsearch() for performing binary searches on sorted lists. Limited recursion in _n_qsort() and _f_qsort() to improve performance and eliminate possible stack overflow when sorting a large sorted list. Adds div() and ldiv() for getting quotient and remainder with a single division call. time.h: Includes strftime(), ctime() and asctime() for formatted time printing. If __ANSI_TIME__ is defined, uses ANSI-compliant 'struct tm' structure. - MiniCore RCM6700, RCM6710, RCM6750 and RCM6760 support added. The MiniCore RCM6700/10s have a 1 MB serial boot flash while the RCM6750/60s have a 4MB serial boot flash. Using the API from sflash.lib, on the RCM6750/60 up to 3MB are available for data storage. See sample programs in Samples\RCM6700. - iDigi library support added. iDigi allows devices to be managed remotely using web services and/or a web browser. See http://www.idigi.com. Support for iDigi in a Rabbit/Dynamic C environment is available by #use "idigi.lib". Sample programs are in samples\idigi. iDigi on the Rabbit provides the following features: . Robust remote network configuration, even when devices are deployed behind firewalls . Integration of Digi ADDP (Advanced Device Discovery Protocol) . Security via TLS/SSL. . Registration of custom commands for access by web services via the SCI (Server Command Interface) . Ability to upload data to the iDigi server using http (or https) PUT requests . Remote firmware update. iDigi runs on any Rabbit module or SBC with a Rabbit 4000 or more recent procesor, and an Ethernet and/or WiFi network interface. Use of TLS/SSL also requires at least 256k RAM. PPP is not yet supported. Storage of network configurations in non-volatile storage requires a recommended 8kB space in the Rabbit userID block. This storage includes a backup network configuration. The backup configuration is tried if the desired configuration fails to achieve a connection to the iDigi server within a specified timeout. This will eliminate the need for on-site access in order to fix any misconfigurations. The network configurations are also stored in a manner which is insensitive to firmware upgrades that maintain iDigi support. This will eliminate any necessity to provide special upgrade or data conversion routines for network configurations. BUG FIXES Compiler Bugs - Defect #24007. Number literals over 30 digits used to crash Dynamic C. - Defect #24330. Parsing did not properly continue following an xstring or xdata statement in a local function scope. - Defect #22592. Constant comparison of floating point 0.0 to itself (equality/inequality) was incorrect. - Defect #24547. List file constant data addresses were not incrementing properly. - Defect #28149. Rabbit 4000 registers were not checked against macro names to avoid naming conflicts. - Defect #32085. When opening editor windows, file paths were not normalized so it was possible to have multiple windows of the same file open and not have them synchronized. - Defect #32741. Compiler sometimes did not sychronize multiple open editor windows of the same file when saving the file. - Defect #33005. BIOS map file indicated that the BIOS root data usage was zero when there was actually root data being used. - Defect #33722. Two empty switch statements back-to-back would generate strange errors. - Defect #33736. A local assembly label could override a global label in a different #asm block in certain circumstances. - Defect #33878. Map file call graph has been fixed. - Defect #33885. __FUNCTION__ macro no longer appears in map files. - Defect #33886. Now accepts "F" or "f" suffix on floating point values. - Defect #34024. Equivalent recursive structures defined in different scopes but used together could cause compiler crashes. GUI Bugs Library Bugs - Defect #24080. SERLINK.LIB's ppplink_asymap() function now respects the peer's asynchronous serial escape character table setting. - Defect #27171. When redirecting STDIO to a serial port, CR is now sent before (instead of after) LF. - Defect #31637. RabbitWeb did not properly handle structs containing arrays of structs. - Defect #33060. RCM56xxW boards now permit limited FAT file system usage of the serial program flash. - Defect #33100. STRING.LIB's _f_strncmp() function is fixed. - Defect #33123. The BL4S1xx.lib's and BLxS2xx.LIB's setExtInterrupt functions' help descriptions now clearly state that the RIO supports a maximum of two external interrupt channels per block. - Defect #33266. Battery-backable RAM (BBRAM) is correctly reported as such in all compile modes for all Rabbit boards equipped with BBRAM. - Defect #33285. The fix for defect #28999 (failure in RabbitWeb select) was accidentally reverted in 10.54 release. Re-committed fix for this release. - Defect #33443. SERLINK.LIB's serial ISRs now preserve all Rabbit 4000+ registers. - Defect #33718. Dynamic C 10.62 was configuring PD2 as an output before calling main. Now left as power-on default of input. - Defect #33797. PPP serial port E initialization in SERLINK.LIB no longer disrupts serial port A (programming port) when IFS_PPP_USEPORTD or IFS_PPP_USEPORTE is configured. - Defect #33853. All serial ports' initialization in SERLINK.LIB now reads SxDR four times, which suffices to clear any possible pending data in any serial port. - HTTP client no longer returns -ENOTCONN at end of body when server doesn't send a Content-Length header. - 0.0 is now considered equal to -0.0. OTHER FUNCTIONAL CHANGES - Serial library now includes serXsending() function to check transmit status of serial port. Returns non-zero if bytes are buffered or in CPU's serial shift register. - Functions rand() and srand() were renamed to randf() and srandf() to allow for C90-compliant versions (which return an integer instead of a float). - Updated samples/xmem/xstring.c demonstrates efficient method for using xstrings directly, instead of copying to root buffer. DEPRECATED FEATURES - Macro STDIO_ENABLE_LONG_STRINGS is deprecated. printf() is no longer restricted to 127 characters. - The near/far-prefixed versions (e.g., _f_strlen and _n_strlen) of some functions have been deprecated and the non-prefixed name (e.g., strlen) should be used instead. Functions: atof, atoi, atol, memcmp, strcmp, strncmp, strcspn, strspn, strcmpi, strncmpi, strlen. ***************************************************************** VERSION 10.62 NEW FEATURES - TLS/SSL security is now available for use with any TCP/IP socket, as a general facility, via the new sock_secure() and sock_unsecure() API functions. Previously, TLS was only available as an internal component when using the HTTP server library, or as part of WiFi authentication. It is now available for general use, in client or server roles as applicable. HTTP, SMTP and POP3 are all TLS-capable, with minor modifications to existing applications. Once a socket is secured, the same set of API functions that are used for ordinary TCP sockets may be used with the secure socket. This makes it very easy to convert an existing TCP socket application to use SSL/TLS for enhanced security. The TLS/SSL API is compatible with products that have more than 128k of RAM and a Rabbit 4000 or newer CPU. - TCP/IP client libraries HTTP_CLIENT.LIB, SMTP.LIB and POP3.LIB now support TLS encryption. HTTP client supports the "https://" scheme. SMTP allows use of the STARTTLS command (RFC 3207), and POP3 allows use of POP3 tunneled via a TLS connection. New sample programs demonstrate the TLS features of these libraries. See: samples\tcpip\http\https_client.c samples\tcpip\http\https_client_nb.c samples\tcpip\pop3\pop_tls.c samples\tcpip\smtp\smtp_tls.c - Function pointer prototypes with parameters are now allowed and type-checked in Dynamic C. - Addition of __FUNCTION__ macro, which is defined to a string literal containing the name of the surrounding function (it is not defined outside of functions). - HTTP_CLIENT.LIB now supports redirection (3xx response codes from HTTP servers may be handled transparently to the application), plus non-blocking open and close of HTTP client connections are now supported. - Serial library (RS232.LIB) now supports far buffers for reading and writing data. You need to update your code if you use function pointers to call serXread, serXputs, serXwrite, cof_serXgets, cof_serXread, cof_serXputs, cof_serXwrite or the equivalent functions with X replaced by A-F. Update your function pointer prototypes to include parameters, or upcast pointer parameters to far in the function pointer calls. Example: char buffer[32]; // buffer in root or on stack int (*ser_read1)(); int (*ser_read2( void far *, int, unsigned long); int (*ser_puts1)(); int (*ser_puts2)( void far *); serDread( buffer, 32, 0); // OK ser_read1 = serDread; ser_read1( buffer, 32, 0); // BAD ser_read1( (char far *) buffer, 32, 0); // OK ser_read2 = serDread; ser_read2( buffer, 32, 0); // OK ser_puts1 = serDputs; ser_puts1( "Test"); // BAD ser_puts1( (char far *) "Test"); // OK ser_puts2 = serDputs; ser_puts2( "Test"); // OK - Added power-fail safe option to Remote Program Update on boards that boot from serial flash. Define BU_ENABLE_SECONDARY in the project defines to enable the feature. View Samples\ RemoteProgramUpdate\download_firmware.c for an example of how it is used. - Some functions from Remote Program Update API are now available on all boards (e.g., buOpenFirmwareBoot, buOpenFirmwareRunning, buVerifyFirmware). See Samples\RemoteProgramUpdate\verify_firmware.c for examples on how to use the API to check for corruption of boot firmware or firmware running in RAM. - Added Samples\tcpip\http\Twitter.c to demonstrate use of http client library to post status updates to Twitter. - RS232.LIB adds ser[A-F]txBreak functions for generating character (or longer) breaks by holding the transmit pin low. - RS232.LIB adds serXfastwrite for partial writes to the serial transmit buffer. serXwrite continues to block until all bytes have been copied to the buffer. - serXparity can configure a port for 1 or 2 stop bits, in addition to even/odd/mark/space/no parity bit. BUG FIXES Compiler Bugs - Defect #21410. Modifier "xmem" on a variable was ignored without warning. - Defect #21586. Stack imbalance was generated when directly returning the return value of a function returning struct. - Defect #21715. Certain pragmas would cause incorrect syntax errors in #asm blocks. - Defect #21794. Comments were not handled correctly in some statements where a '\\' character occured, resulting in strange syntax errors. - Defect #21821. Dynamic C did not catch missing commas between initializer blocks (sub-initializers) in the initializer lists for arrays and structs. - Defect #32282. Map file root data info did not match the org file in some cases. GUI Bugs - Defect #32027. GUI did not allow compilation of default source file (Compiler Options->Advanced) if no editor window was open. - Fixed Help Menu bugs related to having spaces in the Dynamic C pathname. I/O Registers item now works correctly on systems where the default web browser isn't Internet Explorer. Debugger Bugs - Defect #21625. Run-time exceptions did not always show the correct line and file information. Run-time exceptions now display the file, function, and line information when available, and the address of the exception otherwise. - Debug evaluation of expressions containing string literals now gives correct results. Library Bugs - Defect #20900. In certain cases, the UDP library wasn't releasing a bad ARP table handle. - Defect #21640. Stack(s) are now allocated more space- efficiently, using _xalloc's alignment capability. Also, the correct value is assigned to the global BaseOfStacks1 variable. - Defect #21940. In RabbitWeb, a POST without variables could result in a "403 Forbidden" server response. - Defect #26368. DMA.LIB's mem2ioe, mem2ioi, ioe2mem and ioi2mem functions now set up the I/O DMA source or destination flags correctly. - Defect #31459. The sprintf/printf ragged left justification plus associated possible buffer overflow can no longer occur. - Defect #32272. Fixed bug in SNMP library introduced in 10.54. - Defect #32281. FTP_CLIENT.LIB is updated to work with the IIS FTP server by discarding any extra arguments in the response to Rabbit's QUIT. - Defect #32426. Packet receive is no longer attempted on powered-down polled network interfaces. In particular, WiFi boards' powerdown.c samples now work as expected when IFC_WIFI_WPA_PSK_HEXSTR is appropriately defined. - Defect #32434. SDFLASH.LIB's sdspi_get_csd() function now supports SD cards whose CSD block uses CRC7 instead of CRC16. - Defect #32470. Serial data flash sizes in SFLASH.LIB's sf_devtable[] information array now reflect the full number of pages on each of the supported devices. - Defect #31863. Updated TextBorderInit() to accept either NULL or an empty string for no title. - Defect #30862. Updated documentation in tcp_config.lib for the case where an access point is set to TKIP OR CCMP. - Defect #32032. Fixed error "Internal error Assertion "false" failed in file COMPCORE\CC_IA.CPP, line 627" OTHER FUNCTIONAL CHANGES - Serial library ISRs (interrupt service routines) updated for increased reliability and better performance. Rabbit processor should handle higher baud rates and use less CPU time to manage serial data. - RS232.LIB now uses more efficient thresholds for controlling the RTS pin when using hardware flow control. - Calling serXread with a timeout of 0ms no longer copies bytes received during the function call (a problem at higher baud rates). - STDIO.LIB adds getsn(), a length-limited version of gets(). Updated getswf() keeps the user's input null-terminated so caller can re-print it if necessary. - buDownloadTick (board_update.lib) now returns error -ENODATA on 0-byte download. - ifconfig(...IFS_NAMESERVER_ADD...) allows zero nameserver address, which is ignored. - HTTPS server improved tear-down code to eliminate possible delays at the client (browser) sode. - Added gethostid_iface() function to return local IP address of specified interface (instead of just the default interface). - Added ability to dynamically allocate TCP socket buffers using _sys_malloc(). This feature is enabled by calling tcp_extopen() or tcp_extlisten() with a NULL buffer parameter, but a non-zero buffer length parameter. The buffers are freed when the socket is closed. See the function descriptions for details. - URL.LIB now supports all far strings. DEPRECATED FEATURES - Some macros and functions have been removed from the TCP/IP libraries. The following macros have been removed, but may be added back if [#define _DC10_LEGACY] is placed before [#use "dcrtcp.lib"]: #define MAXINT 0x7fff // Use stdc INT_MAX instead // Use functions (i_min, i_max, u_min, u_max, // long_min, long_max, ulong_min, ulong_max) // Functions are as good or faster than macros in this case. #define min(X,Y) (((X)<=(Y))?(X):(Y)) #define max(X,Y) (((X)>=(Y))?(X):(Y)) // Use memcpy() #define movmem(X,Y,Z) memcpy((Y),(X),(Z)) #define FP_OFF(X) ((unsigned int)X) // These already defined #define TRUE 1 #define true TRUE #define FALSE 0 #define false FALSE // These have been deprecated a long time #define my_ip_addr _if_tab[IF_DEFAULT].ipaddr #define sin_mask _if_tab[IF_DEFAULT].mask #define _mtu _if_tab[IF_DEFAULT].mtu #define multihomes 0 // never did this (can use virtual ethernets) - Following functions and macros removed. These have been deprecated for a long time, and have replacements as noted. tcp_config() // function removed, see ifconfig() rip() // no replacement. _add_server() // function removed, see servlist.lib. sethostid() // Use ifconfig(). - Following undocumented functions and macros removed: tcp_checkfor, tcp_shutdown, tcp_set_ports, tcp_get_ports, sock_sselect, sock_debugdump, debugpsocketlen, sem_up, sock_stats, sock_stats_reset, tcp_set_debug_state Following were visible for sock_sselect routine return values: #define SOCKESTABLISHED 1 #define SOCKDATAREADY 2 #define SOCKCLOSED 4 A number of macros and function related to IP fragmentation support were removed, since these were non-functional. _cookie, _last_cookie - unused variables. ***************************************************************** VERSION 10.60 NEW FEATURES - #include. In addition to Dynamic C's #use (which is designed to work with specially formatted source files), Dynamic C 10.60 introduces the standard C #include, which follows the ANSI C 1989/ISO C 1990 specification. - Multiple C file projects. The new Project Explorer Window allows for the creation of projects utilizing multiple C files, and several menu options have been added to allow compilation of the current project. - Variable initializer support Variables can now be initialized when they are declared. For example, void foo(int bar) { int i = 0, j = bar * 2; struct FOO {float pi, e, sqrt2;} fvals = {3.14159, 2.71828, 1.41421}; static far char carray[] = "String literal initializer"; ... } Variable initialization follows the ANSI C 1989/ISO C 1990 specification: - Simple variables (numeric types and pointers) can be initialized with any expression that evaluates to the correct type. - Initializers for aggregate types (structs, arrays, unions) may only contain constants that are known at compile time. - Initializers for auto (non-static local) variables are evaluated at each function entry. - Initializers for static and global variables are evaluated once at boot (much like Dynamic C's #GLOBAL_INIT statements). - Preprocessor support for "defined" keyword The "defined" keyword can be used in #if/#elif expressions to determine whether a macro is already defined. If MACRO is defined, "defined MACRO" evaluates to 1, otherwise it evaluates to 0. The macro can be optionally surrounded by parentheses for clarity. - Added library, sample and Windows utilities demonstrating ADDP (Advanced Device Discovery Protocol), a UDP multicast protocol used for discoverying and configuring devices on a LAN. Look at Samples/tcpip/addp.c for sample Rabbit code using the ADDP server library, and the folder Utilities/ADDP for programs and a DLL for running an ADDP client under Windows. - Added support for automatic selection of a link-local IP address (169.254.1.0 to 169.254.254.255) as a fallback when DHCP is not available, or for zero-configuration static IP networks. Inclue [#define USE_LINKLOCAL] in your program before [#use "dcrtcp.lib"], and then use any 169.254.x.x address for a static IP or DHCP fallback IP. The Rabbit will automatically select an available, valid address as outlined in RFC 3927. - MiniCore RCM5650W support added. The MiniCore RCM5650W uses a 4MB serial boot flash in place of the 1MB flash used on the RCM5600W. Using the API from sflash.lib, 3MB are available for data storage. See sample programs in Samples\RCM5600W. - Several new commands are available on the File menu. In addition to the "Open..." command, separate "Open Source File..." and "Open Library..." commands are available to specifically open .c and .lib files respectively. Also, a recently used list of projects is now available under File | Project. Choosing a project from the list will cause the current project to close and the selected project to open. - The default width and height for new editor windows can now be set on the Display tab of the Environment Options dialog box. - "Time Stamp Each Run" is a new checkbox that helps to clearly identify different runs in logged stdio output by placing a timestamp between each run in the log file. This checkbox is in the stdio options on the Debug Windows tab of the Environment Options dialog. BUG FIXES Compiler Bugs - Defect #27144. Bounds checking now allows access to the null-terminator of a string literal using direct array indexing. - Defect #30578. Constant arithmetic operations on characters now result in an expression of integral type. - Defect #30588. When indexing a string literal directly, array bounds checking had an off-by-one error according to the ANSI C spec treatment of string literals. - Defect #31381. Sizeof incorrectly returned the size of a pointer when string literal optimization was on. Sizeof now correctly returns the size of the string literal in this case. - Defect #31446, #31076: Far pointer in near const array gets wrong value. Pointers in arrays were being initialized according to the storage of the array, not the storage of the dereferenced object. Pointer values now correctly correspond to the dereferenced object. - Defect #31227, #31189: Const far static local variable in watch expression is wrong, or breaks watch expressions. Local far and const variables are now evaluated correctly in watch expressions, flyovers, and the expression evaluation dialog. - Defect #25812: Compile time array bounds checking is wrong. Compile time array bounds checking now issues a warning instead of an error, and checks both lower and upper bound. - Defect #21373: Correct problems with \u in string literals and escaped characters in assembly character literals. Library Bugs - TCP/IP stack no longer classifies ARP packets with a source address of 0.0.0.0 as an IP conflict. - Defect #29565: LIMITS.H incorrectly defined INT_MIN and SHRT_MIN as -32,767 and LONG_MIN as -2,147,483,647. All three macros are now correctly defined as the most-negative value that can be represented by each data type. INT_MIN and SHRT_MIN (16-bit integer) evaluate to -32,768 and LONG_MIN (32-bit integer) evaluates to -2,147,483,648. This corrects a bug in RabbitWeb and ZServer where it was impossible to set an integer to -32,768 or a long to -2,147,483,648. - Defect #31404: Fixed memory leak when using RabbitWeb and calling http_shutdown(0) and then http_init() to take HTTP server down and up. - Defect #31442 fixed. After bringing down a PPP interface, all far buffer pointers are now correctly freed to prevent buffer allocation problems when bringing the PPP interface back up. - Defect #31780 fixed. Multicast UDP sockets will continue to receive packets after an interface goes down and comes back up. Gui Bugs - Defect #25072: Dynamic C will not compile or return to debug mode (Shift+F5) if a read-only library file used in the program is opened, modified and not saved while in debug mode. - Defect #27207: The editor now treats the double quote and backslash characters as delimiters. Double clicking on a word surrounded by double quotes will no longer include the quotes in the selection. OTHER FUNCTIONAL CHANGES - Added to ASIX.LIB and extended in DMAETH100.LIB support for the PD_NETWORK_MODE ioctl, which is now updated to accept -1 "Don't change . . . setting" values for each of its Ethernet speed and duplex setting parameters. See the pd_networkmode() online function help for details. - Applications can now specify additional data to append to ICMP echo request packets ("ping"). See the documentation for _send_ping_iface() for details. DEPRECATED FEATURES - Cloning is not supported on the RCM5750, RCM5760, and RCM5650W, and is deprecated on all other Rabbit 4000 and Rabbit 5000 based products. The Rabbit Field Utility (RFU) has been enhanced to handle loading firmware onto many devices at once. Please use RFU.exe located in the utilities directory instead of cloning. ***************************************************************** VERSION 10.56 NEW FEATURES - MiniCore RCM5750/RCM5760 support added. The MiniCore RCM5750 and RCM5760 add an additional 512k fast SRAM and a 2 MB serial flash to the RCM5700 and RCM5710 respectively. - The Rabbit Embedded Security Pack is now included with Dynamic C, adding enterprise level Wi-Fi authentication, SSL, and AES to the Dynamic C standard set of libraries. BUG FIXES Compiler Bugs Library Bugs - Defect #30649: ModemFWLoad.c now works with Separate I&D enabled on an RCM4510W. - Defect #30694: xbee_init can still initialize an XBee with multiple buffered frames waiting at startup. - Defect #30725: xbee_api.lib is now using correct maximum payload size of 84 bytes (instead of 80) with ZigBee firmware. - Defect #30799: Fixed compile errors in httpc_post-related functions of http_client.lib. ***************************************************************** VERSION 10.54 NEW FEATURES - Remote Program Update library and samples added, used to update boot firmware without having physical access to the hardware. Supported on the RCM4200, RCM4300-series, RCM4400W-series, RCM5400W-series, RCM5600W, BL4S100-series, BL4S200 and BL5S220. Please read Application Note AN421 for details on the use of this new functionality. - Wi-Fi Enterprise Authentication is now supported. This feature is sold separately in the Rabbit Embedded Security Pack. - Added an HTTP client library with samples (http client.c, dyndns.c added to Samples/tcpip/http). - Added libraries and samples to download files from HTTP (web) or FTP servers and store them on a FAT filesystem. See Samples/tcpip/http/http2fat.c and Samples/tcpip/ftp/ftp2fat.c. - FAT filesystem now supported on unused portion of RCM4400W serial data flash and serial boot flash of BL4S100-series boards. Since the RCM4400W uses part of the serial flash to bootstrap its FPGA, you should ensure that your program does not try to access the serial flash during the first call to sock_init(). If your program has written to the flash before calling sock_init(), be sure to spin on sf_isWriting() to ensure that the write is complete. while (sf_isWriting()) { // waiting for write to complete before calling sock_init } sock_init(); BUG FIXES Compiler Bugs Library Bugs - Fixed bug where FTP client library could fail on some multi-line responses. - Fixed compiler error message when using xbee_api.lib with Rabbit 5000. - Defect #26902: TCP/IP stack now uses a random starting value for the local port on outbound socket connections. Previous behavior of using a fixed value (1024) would cause failures when re-running sample programs before remote server socket exited timewait state. - Defect #27981: Replaced x[get|set][int|long|float] functions with macros that use far pointer casts. Should result in improved performance. Original functions are still available with an underscore prefix (e.g., _xgetint() for xgetint()). New code should make use of far pointers instead of these helper macros. - Defect #28627: dc_timestamp global moved from BIOS to PROGRAM.LIB and only compiled into programs if referenced in user code. Also, dc_timestamp is now set to GMT instead of GMT-0700. Note that macro _DC_GMT_TIMESTAMP_ is the preferred method for referencing the compile timestamp within your program. - Defect #28763 fixed. Improved baud calculations for pktXopen, return value now allows for up to 5% error in calculated rate. Fixed pktEopen (was using incorrect TATxR register). serXopen and pktXopen functions now use a common set of functions for setting timers. - Defect #29709 fixed. User block writes to 16-bit (word write) parallel flash that end with a single byte on an even address boundary are now handled correctly. - Defect #29707 fixed. Compile-time macro IFC_WIFI_RTS_THRESHOLD was being ignored and IFC_WIFI_FRAG_THRESHOLD was used in its place. Could cause misconfiguration if IFC_WIFI_FRAG_THRESHOLD was set to a valid value for IFS_WIFI_RTS_THRESHOLD. - Defect #29800: Fixed bugs in _f_strtol. - Defect #30021: Fixed bugs in _f_strstr. - Defect 30186 fixed. Boards equipped with ASIX Ethernet now reliably recover link after a cable unplug, replug sequence. Gui Bugs Sample Program Bugs - Defect #29097 fixed. The Samples\memory_usage.c standard sample now reports the correct size of the interrupt vector tables and the full 12-bit segment base value of logical addresses. - Defect #29680 fixed. The Samples\UserBlock\userblock_read_write.c standard sample program has been renamed to reserved_read_write.c and updated to give a more informative error message when run on any Rabbit board that does not have an area in its User block that is reserved for calibration constants. Debugger Bugs Command Line Compiler Bugs IOConfig Utility Bugs Rabbit Field Utility (RFU) Bugs - Defect #30269 fixed. The RFU window could appear off-screen when launched on systems with multiple displays. OTHER FUNCTIONAL CHANGES - Math-related libraries (fft.lib, math.lib, ecc.lib, rand.lib) moved to "Math" subdirectory, along with new crc32.lib. - SFLASH.LIB now contains default settings for each board type (core module or SBC) that includes a serial flash. If using your own serial flash device, you will need to set the configuration macros in your program before loading sflash.lib. - Added .pro files to Utilities\X-CTU with defaults for the XBee-USB adapter, XBee modules connected to the RF board and XBee modules connected to Rabbit core modules and SBCs. - Support for FAT12 filesystems in FAT.LIB has been deprecated. New partitions can only be formatted as FAT16, and FAT12 partitions can only be read if the macro FAT_FAT12 is defined. - The RCM4XXX.LIB library was deprecated and its functions moved into LOWPOWER.LIB. ***************************************************************** VERSION 10.50 NEW FEATURES - Supports the MiniCore RCM5600W core module BUG FIXES Compiler Bugs Library Bugs - Defect #28314 fixed. snprintf now always null-terminates the buffer and it correctly returns the number of characters that would have been copied to the buffer if it had been large enough. - Defect #28392 fixed. Only Rabbit boards with > 1 MByte total physical memory map have the "no_lcall" reserve memory org allocated. - Defect #28450 fixed. The size of the "user_block" reserve memory org is now adjusted, if necessary, to suit each Rabbit board type. - Defect #28679 fixed. The _enableClockModulation() function now correctly uses the CLOCK_DOUBLED macro value to determine the appropriate spectrum spreader setting. - Defect #28999 fixed. RabbitWeb was incorrectly using the string "checked" instead of "selected" when generating option lists (print_select zhtml command). Bug from 10.40 release. Gui Bugs Sample Program Bugs Debugger Bugs Command Line Compiler Bugs IOConfig Utility Bugs OTHER FUNCTIONAL CHANGES - The order of early output enable, clock doubler and spectrum spreader set up has been optimized to follow: 1) if either or both of the clock doubler or spectrum spreader is called for, enable early /OEx and /WEx output; 2) set up the clock doubler as directed; 3) set up the spectrum spreader as directed. ***************************************************************** VERSION 10.46 NEW FEATURES - Supports the BL4S100 and BL4S150 single board computers. - Supports the BL4S310 and BL4S230 single board computers. - Supports the ZB firmware on all XBee-enabled products (e.g., RCM4510W, BL4S230, BL4S100, and BL4S150). BUG FIXES Compiler Bugs Library Bugs - Fixed error in RABBITWEB.LIB that came up when RABBITWEB_VERBOSE was defined. Gui Bugs Sample Program Bugs Debugger Bugs Command Line Compiler Bugs IOConfig Utility Bugs OTHER FUNCTIONAL CHANGES ***************************************************************** VERSION 10.44 NEW FEATURES - Supports the BL4S110 and BL4S160 single board computers. - Supports the MiniCore RCM5700 core module. BUG FIXES Compiler Bugs Library Bugs - Defect #27362 fixed. USE_SMTP_AUTH should be defined by the user, and not the library. Gui Bugs Sample Program Bugs Debugger Bugs Command Line Compiler Bugs IOConfig Utility Bugs OTHER FUNCTIONAL CHANGES - BLxS2xx: More TCP/IP and Wi-Fi sample programs added. - Wi-Fi: passphrase.c moved from the RCM4400W and RCM5400W sample directories to the main WiFi sample directory. - XBee Libraries: Dynamic C 10.44 includes support for beta ZigBee firmware on XBee modules. If you want to explore the new firmware, be sure to review the known issues listed at the end of Samples/XBee/README_XBEE.TXT. The next release of Dynamic C will include release versions of ZigBee firmware and X-CTU utility that address those known issues. ***************************************************************** VERSION 10.42 NEW FEATURES - Supports the BL4S200 and BL5S220 single board computers. BUG FIXES Compiler Bugs Library Bugs - Defect #26938 fixed. For Wi-Fi network interfaces, pd_powerdown() and pd_powerup() will now return valid return codes. Gui Bugs Sample Program Bugs - Defect #27179 fixed. ssl_zimport.c now has calls to tcp_reserveport to improve performance. In particular, this fixes problems with IE7 under Windows Vista. Debugger Bugs Command Line Compiler Bugs IOConfig Utility Bugs OTHER FUNCTIONAL CHANGES ***************************************************************** VERSION 10.40 NEW FEATURES - Supports the RCM4300 and RCM5400W family of core modules. - The Wi-Fi libraries now support roaming. - Please see the README.TXT for more information about the features included in this release. BUG FIXES Compiler Bugs Library Bugs - Defect #22372 fixed. In RNET.LIB, the rn_find() function now correctly supports searching for RabbitNet devices by specified port(s). - Defect #23055 fixed. HDLC_PACKET.LIB now uses HDLC_INT_LEVEL for all ipset calls (some calls were hard-coded to 1). - Defect #23787 fixed. XBEE_API.LIB now properly includes code inclusion guards. - Defect #23987 fixed. All multicast UDP frames that have a destination address that the network stack is not listening for are now properly dropped. - Defect #24252 fixed. Switching between Wi-Fi encryption types at runtime sometimes failed. This now works correctly. - Defect #24366 fixed. TCP connections to peers with large receive windows no longer time out or reset. - Defect #25283 fixed. The XBEE_API.LIB's _zb_Alloc_apif() function now returns NULL instead of 0 to eliminate a compile time warning. - Defect #25307 fixed. A PPP crash due to a possible stack imbalance in SERLINK.LIB's common ISR has been eliminated. - Defect #25369 fixed. Eliminated a compile time error due to auto / const conflict in RCM4XXX.LIB's digInAlert() function. - Defect #25452 fixed. The FTP server could prematurely abort sending files of unknown size (e.g., if the file being sent is being generated on-the-fly). - Defect #25481 fixed. Rabbit 4000 Ethernet driver sometimes stopped transmitting when there are a large number of collisions. - Defect #26136 fixed. Wi-Fi interface's link LED and link status (as reported by ifpending(), for example) now match. Also fixes problem with the link not being reported as up when configured for multiple encryption types but connecting to an open Access Point. Note that in most cases, an incorrect encryption key will cause the link to not come up; however, for WEP, the link will be reported as being up even though the key is incorrect. This is because WEP does not provide a way of determining that an incorrect key has been used. - Defect #26204 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 in particular now works correctly when making keypad menu selections. - Defect #26587 fixed. For boards using the Rabbit's built-in Ethernet MAC (RCM40xx), pd_powerdown() and pd_powerup() can now be used to turn the MAC off and on. - xbee_api.lib: zb_reply() now uses correct cluster ID in response. Gui Bugs Sample Program Bugs - Defect #26509 fixed. WiFiScanAssociate.c will now switch Access Points properly when the new AP has the same WPA passphrase but different SSIDs as the old AP. - Defect #24086 fixed. Fixed sleep time calculations in SleepMode and SleepMode2 samples (in Samples/RCM4510W/ZigBee/). - Defect #24093 fixed. The Samples\Rabbit4000\ic_test.c standard sample program now scales its TAT8R register value appropriately, based on the Rabbit board's actual freq_divider value. - Defect #25398 fixed. updpages.c and ftp_fat.c samples now work with FTP clients (like FileZilla) that establish multiple, simultaneous connections. Debugger Bugs Command Line Compiler Bugs IOConfig Utility Bugs OTHER FUNCTIONAL CHANGES - RCM4400W: The wifi_ioctl() function and related compile-time macros used to configure the Wi-Fi interface have been deprecated. New commands for ifconfig() replace the wifi_ioctl() commands; view the ifconfig() function help for details on the new IFS_WIFI_* and IFG_WIFI_* commands. View the function help for TCPCONFIG for information on the new IFC_WIFI_* compile-time macros. - Removed current versioning comments and macros from the following former module libraries that are now bundled with Dynamic C (deleted macro, affected libraries): Modbus (_MODBUS_VERS, modbus_master.lib, modbus_slave.lib); PPP (_PPP_VERS, chat.lib, modem.lib, ppp.lib, pppoe.lib); RabbitWeb (_RABBITWEB_VERS, rabbitweb.lib, rweb_support.lib); SNMP (_SNMP_VERS, mib.lib, snmp.lib); uC/OS-2 (_UCOS2_VERS, os_cfg.lib, os_flag.c, os_mbox.c, os_mem.c, os_mutex.c, os_q.c, os_sem.c, os_task.c, os_time.c, ucos2.lib). - XBee Libraries: created xbee_config.lib for configuration options. - XBee Libraries: now passes payload length as second parameter to end point functions (see updated Samples/ZigBee/EndPoint.c). - XBee Libraries: Removed 1x18 firmware and added 1x41 firmware as default. - Utilities/X-CTU now includes the installer for X-CTU v5.1.0.0 and ZNet 2.5 1x41 firmware. ***************************************************************** VERSION 10.21 NEW FEATURES - Supports the RCM4050 and RCM4300 family of core modules - Improvements to the RCM4510W/Zigbee library - Networking parameters are now configurable in Options/Project Options/Defines or in user code. - STDIO_DEBUG_SERIAL mode on serial port A now defaults to "no character assembly during break." (I.e., continuous null characters are no longer generated when no cable is attached.) - Please see the README.TXT for more information about the features included in this release. BUG FIXES Compiler Bugs - Defect #21428 fixed. Structs of any size can now be added to the watch window. The amount of data actually read from the target will be limited by the size of Watch memory defined in the Environment Options. - Defect #21442 fixed. Leading blanks are now ignored in lib.dir entries. - Defect #21614 fixed. The memory leak in the Environment Options dialog has been fixed. - Defect #21773 fixed. Single step debug cursor placement for library code had been off by the number of blank lines after the start of library function descriptions. - Defect #22027 fixed. Trailing blanks are now ignored in lib.dir entries. - Defect #23043 fixed. WiFi ad-hoc beacon time reduced from ~26 seconds to ~100 ms. - Defect #80867 fixed. The compiler now requires forward declared cofunctions to be prototypes (This was actually fixed in 10.09). Library Bugs - Defect #20120 fixed. Defining USE_FAR_LIB_API was causing code crashes on programs which enabled ethernet on 4xxx cores with ASIX hardware. - Defect #20238 fixed. UCos-II samples (ucosdemo3.c, ucosdelreq.c, JackRab\UCOSJRAB1.C) complain about overriding stub functions in the library. Added pragmas that can be uncommented to quiet the warnings. - Defect #20248 fixed. dhcp_check_lease did not have a case for DHCP_ST_EXPIRED. Added. - Defect #20417 fixed. Root (char *) promoted to (far char *) now prints correctly when using printf("%ls", far_var). - Defect #20472 fixed. PPP serial more reliable with bad link quality. - Defect #20559 fixed. Grep dialog no longer stays on top when switching to another application during a time consuming grep. - Defect #20818 fixed. __con_convert_num_to_iface function was updated to take into account that wifi interfaces are IF_WIFI0 and IF_WIFI1 and that the Rabbit 3k/4k have IF_PPP4 and IF_PPP5. - Defect #20819 fixed. __con_convert_iface_to_num function was updated to take into account that wifi interfaces are numeric interfaces 2 & 3 so now PPPoE and PPP interfaces get moved down 2 spots. However, the zconsole.lib still does not support wifi interfaces. - Defect #20835 fixed. In the con_show_multi function when ifconfig attempts to get IFG_PPP_SENDEXPECT and IFG_PPP_HANGUP, there is no checking for if NULL is returned. Added conditional statement to check for NULL. - Defect #20934 fixed. Resetting an FTP socket should no longer cause bad FTP state (reported on Windows XP FTP server) - Defect #20939 fixed. Samples program "samples\tcpip\zserver\filesystem.c" compiles correctly. - Defect #20941 fixed. Zserver.lib was not filling in FAT partition info to caller, causing problems with unmount/mount operations within filesystem.c sample program. - Defect #21049 fixed. When RS232.LIB's serXopen functions are called with a baud parameter lower than can be actually achieved on a Rabbit 4000-based board, the lowest possible baud rate is now always set. Note that the serXopen functions' result indicates whether or not the achieved baud setting is within 5% of the requested baud parameter. - Defect #21226 fixed. Long HTTP headers no longer cause the HTTP connection to abort. This was causing problems on Internet Explorer under Windows Vista. - Defect #21426 fixed. Function help is now available for the _xalloc function. - Defect #21467 fixed. Fixed an off-by-one error in setting the RTS/CTS threshold in the WiFi driver. - Defect #21470 fixed. Fixed problems with setting and interpreting the fragmentation threshold in the WiFi driver. - Defect #21674 fixed. When using MS_TIMER for delays and timeouts, the elapsed interval should always be compared to the desired period, instead of direct comparisons between MS_TIMER and an end time to avoid errors when MS_TIMER rolls over. - Defect #21725 fixed. The error log's ERRLOG_PHYSICAL_ADDR macro value is now correctly defined in error log supporting compile modes. - Defect #21780 fixed. For FLASH_COMPILE or RAM_COMPILE mode programs compiled to 16-bit flash and RAM memories, A19 is no longer inverted in the MB2CR or MB3CR quadrants. Note that the A19 inversion is of no consequence to memories of size 256 KWords (512 KBytes) or smaller. - Defect #21828 fixed. A copy of the system macros table is now available for use by the _GetSysMacro* functions in "Code and BIOS in RAM" compile mode. - Defect #22044 fixed. When DCRTCP is not defined, ZCONSOLE.LIB no longer #uses the network configuration save support library. This eliminates "XXX is out of scope / not declared" error messages when compiling the basicconsole.c or loginconsole.c standard samples. - Defect #22050 fixed. When resolving multiple host names that are a mix of "dotted decimal" and name-type URLs, DNS.LIB's DNS request counter is now always incremented and decremented in a balanced fashion. - Defect #22054 fixed. The non-API repl_getCurrentNetworkConfig library support function is now properly prototyped and exposed for use by other library API functions. This eliminates the "Undefined (but used) global label" error when compiling the userblock_tcpipconsole.c standard sample. - Defect #22055 fixed. Fixed a problem where changing SSIDs would sometimes not trigger a new association with the WiFi driver. - Defect #22068 fixed. Incorrect comparisons of types char vs. NULL in ZCONSOLE.LIB's con_set_param and con_set_tcpip_debug functions have been corrected to compare char vs. char. - Defect #22091 fixed. RS232_NOCHARASSYINBRK now turns on "no character assembly in break" while in STDIO_DEBUG_SERIAL mode. If STDIO_DEBUG_SERIAL == SADR on a Rabbit 4000 (or greater), this is now the default behavior. - Defect #22094 fixed. The redundant xrelease() function help header is removed from XMEM.LIB. - Defect #22095 fixed. Modified documentation for rand16_range(). - Defect #22255 fixed. By default, excluded flash driver variables and code which are not normally necessary in "Code and BIOS in RAM" compile mode. - Defect #22730 fixed. Compilation errors in samples/LowPower/lp_ping.c and lp_smtp.c - Defect #22910 fixed. SYS.LIB's useMainOsc and 32khzOsc functions now check the current oscillator(s) setting to avoid making unwanted oscillator setting changes. The unwanted settings changes particularly affected programs run in debug no-poll mode, preventing Dynamic C from detecting end-of- program. - Defect #22945 fixed. The Nflash library had compiler errors when NFLASH_DEBUG switch was enabled. - Defect #22950 fixed. The ADC library for RCM4xxx modules had unsigned int return values for several functions that needed a signed value. This caused negative error conditions to produce incorrect large positive readings back to the caller. - Defect #22995 fixed. ADC calibration fails with non-default gain running adc_cal_chan.c or adc_cal_all.c on RCM4xxx core. - Defect #23075 fixed. Incorrect calibration of analog channel on RCM4100. - Defect #23095 fixed. When USE_FAR_LIB_API or USE_FAR_STRING_LIB was defined, several "call memcpy" asm instructions in ASIX.LIB, REALTEK.LIB and SMSC.LIB were changed to "call _f_memcpy" inappropriately. - Defect #23133 fixed. The SxER registers and SxERShadow variables are now all initialized to their HW reset state on BIOS startup. In particular, this fixes STDIO redirection problems due to reliance on uninitialized shadow register values. - Defect #23240 fixed. ioconfig_switchecho.c, double output possible due to shared variable between costates. - Defect #23256 fixed. When using TICK_TIMER for delays and timeouts, the elapsed interval should always be compared to the desired period, instead of direct comparisons between TICK_TIMER and an end time to avoid errors when TICK_TIMER rolls over. - Defect #23552 fixed. Switching power modes with set_cpu_power_mode() could sometimes cause a crash on the RCM40xx series core modules. - Defect #23638 fixed. sspec_readvariable() in ZSERVER.LIB could return incorrect values for a variable of type INT8. - Defect #23720 fixed. The help description for sspec_setfvlen() in ZSERVER.LIB has been corrected (NULL terminator should be included in PTR16 lengths). - Defect #23806 fixed. Rabbit 4000's HDLC_PACKET.LIB asm instruction mnemonic "pd" typo has been corrected to read "ld" instead. - Defect #23818 fixed. On the RCM4400W, calling tcp_tick() no longer corrupts IX register content. This fix allows RCM4400W applications that call tcp_tick() within costates or cofunctions to work correctly. - Defect #81642 fixed. HDLC driver had an incorrect check for CPU being used. - Defect #81697 fixed. _WriteFlashByteX and _WriteFlashWord no longer cause a stack imbalance when a write into the user/System ID block is detected. Gui Bugs - Defect #21215 fixed. Project changes can now be made after compiling and before returning to edit mode. - Defect #21315 fixed. Characters less than 0x20 now show as '.' on the right side of dump windows. - Defect #21763 fixed. Grep Progress window is now a fixed size and once a grep begins another cannot be started until the first ends. - Defect #21879 fixed. Edit window misbehavior from selecting Message window items is fixed. - Defect #81439 fixed. Grep in files with *.* mask now runs without error. - Defect #81450 fixed. Copy-and-paste containing tabs now works properly. (Note that this bug was actually fixed in Dynamic C version 10.09.) - Defect #81483 fixed. Project open/close will now cancel if modified file close query is cancelled. (Note that this bug was actually fixed in Dynamic C version 9.30.) - Defect #81689 fixed. Dynamic C: Serial No. Dialog now appears center-screen on a dual-monitor system. Sample Program Bugs - Defect #20941 fixed. Zserver.lib was not filling in FAT partition info to caller, causing problems with unmount/mount operations within filesystem.c sample program. - Defect #21800 fixed. Unused input capture ISR code is removed from the qd_phase_10bit.c standard sample program. - Defect #22730 fixed. The \Samples\LowPower\lp_ping.c and lp_smtp.c were missing configuration for RCM4xxx modules causing compilation errors. Configuration for all released RCM4xxx modules added. - Defect #22804 fixed. The \Samples\SysClock\test_32khz_3000.c standard sample has been renamed to test_32khz_3000_4000.c and updated with support for blinky LEDs on the RCM4xxx prototyping board. - Defect #22805 fixed. The Samples\SysClock\Test_Osc3000.c standard sample has been renamed to Test_Osc3000_4000.c and updated accordingly to work with a selection of both Rabbit 3000 and 4000 targets. - Defect #23004 fixed. The \Samples\Filesystem\FAT\fmt_device.c sample did not format additional partitions correctly, only partition 0. - Defect #23001 fixed. The \Samples\Filesystem\FAT\fmt_device.c sample had erratic partition mounting behavior after formatting a partition other than partition 0. - Defect #22986 fixed. The \Samples\Filesystem\FAT\fmt_device.c sample did not handle uncondition format of device properly with multiple partitions on the device. - Defect #23202 fixed. For PPP sample programs which define DIALOUT_SENDEXPECT, added 1.5 second pause between modem reset and dial out commands for those modems which respond with an early OK to their modem reset command. - Defect #23457 fixed. The Samples\UserBlock\idblock_report.c standard sample now includes RCM4400W board information. - Defect #23645 fixed. Corrected a logic error in checking the high temperature in Samples\TCPIP\HTTP\form1.c . - Defect #81695 fixed. In Samples\RTCLOCK\SETRTCKB.C, added check for years entered as more than 2 digits. Added date range notification to stdio window. Debugger Bugs - Defect #22163 fixed. Only one clear breakpoint command sent from compiler side. Command Line Compiler Bugs - Defect #22083 fixed. Typo corrected in help to Poll target while running. IOConfig Utility Bugs - Defect #22147 fixed. The IOConfig utility now sets up serial port D DMA correctly and the serial port works correctly after calling the generated function. - Defect #23088 fixed. Erroneous warnings about other serial ports' setup interfering with debugging via serial port A have been eliminated; valid warnings occur when appropriate. OTHER FUNCTIONAL CHANGES - The Rabbit 4000 CPU's advanced 16-bit memory mode has a defect which affects ioe instructions (auxiliary I/O, external I/O) and self-timed chip select. The Dynamic C BIOS has been updated to work around this ioe defect on affected boards, all of the RCM40xx family. If absolute top performance is required and the User is certain their application is unaffected by the ioe bug, the work around can be disabled by adding the __ALLOW_16BIT_AUXIO_DEFECT macro into Dynamic C's Project Options Defines Box. See the Rabbit 4000 Users Manual Appendix B (errata section) or TN255 for complete details. - The RCM4xxx board-specific ioconfig_switchecho.c sample and related RCM4*_IOCONFIG.LIB libraries are updated to also demonstrate configuration of serial port D with DMA enabled. - The wifi_ioctl() API function has slightly different semantics for some commands. In particular, many of the commands require that the WiFi network interface is brought down before the command is accepted. See the function help (Ctrl-H) for wifi_ioctl() for details. Application code should ensure that the return code from wifi_ioctl() is checked after each call. - WiFi Protected Access (WPA), with Pre-Shared Key (PSK), is now available for applications which require robust privacy and integrity. In order to use WPA/PSK, define WIFI_USE_WPA plus a suitable ascii passphrase or hexadecimal key, and define _WIFI_WEP_FLAG to WIFICONF_WEP_TKIP. See samples\rcm4400w\tcpip\pingled_wpa_psk.c for more details. More documentation on the relevant macros may be found by performing a Function Lookup (Ctrl+H) on TCPCONFIG. - In order to be acceptable to various countries' regulatory authorities, there is an improved API for customizing the WiFi library to conform to the radio regulations. The wifi_ioctl() API function has new commands to query and set the channel list and transmit power. The commands are WIFI_MULTI_DOMAIN which allows automatic configuration via 802.11d capable access points; WIFI_COUNTRY_SET which allows one of several known regulatory domains to be configured; WIFI_COUNTRY_GET which queries the current regulatory domain information. ***************************************************************** VERSION 10.11 NEW FEATURES - New sample TimerC\TIMER_C_INT.C demonstrates how to set up and use the timer C interrupt. - Support for sorting far arrays using qsort (_f_qsort) with a comparison function that accepts far arguments - Networking parameters are now configurable in Options/Project Options/Defines or in user code. - STDIO_SERIAL_DEBUG mode on serial port A now defaults to "no character assembly during break." (I.e., continuous null characters are no longer generated when no cable is attached.) BUG FIXES Compiler Bugs - Defect #21139 fixed. The intermittent "Internal Error: Expression Temporary Stack Usage" message no longer appears when recompiling a sample. - Defect #21483 fixed. "Internal Error: Expression Temporary Stack Usage" message no longer appears when adding a new watch expression after experiencing an error in a previous watch expression. Library Bugs - Defect #20101 fixed. I2C.LIB had an incorrect anonymous header. - Defect #20248 fixed. dhcp_check_lease did not have a case for DHCP_ST_EXPIRED. Added. - Defect #20272 fixed. The ZWORLD_RESERVED_SIZE macro is now correctly defined to 0 for RCM4xxx boards that do not have analog I/O calibration constants stored in their User block. - Defect #20472 fixed. PPP serial more reliable with bad link quality. - Defect #20570 fixed. Targetless compile to BIN file of ADC-using application for RCM4000 w/ ADC now works correctly. - Defect #20761 fixed. DMA.LIB's DMAalloc function #GLOBAL_INIT section now clears possible residual DMA setup following a soft reset. This prevents the DMAflagSetup functon from incorrectly reporting busy status following a soft reset. - Defect #20818 fixed. __con_convert_num_to_iface function was updated to take into account that wifi interfaces are IF_WIFI0 and IF_WIFI1 and that the Rabbit 3k/4k have IF_PPP4 and IF_PPP5. - Defect #20819 fixed. __con_convert_iface_to_num function was updated to take into account that wifi interfaces are numeric interfaces 2 & 3 so now PPPoE and PPP interfaces get moved down 2 spots. However, the zconsole.lib still does not support wifi interfaces. - Defect #20835 fixed. In the con_show_multi function when ifconfig attempts to get IFG_PPP_SENDEXPECT and IFG_PPP_HANGUP, there is no checking for if NULL is returned. Added conditional statement to check for NULL. - Defect #20934 fixed. Reseting an FTP socket should no longer cause bad FTP state (reported on Windows XP FTP server) - Defect #21021 fixed. In SYS.LIB, the setClockModulation() function is now declared nodebug. - Defect #21325 fixed. The function help for SYS.LIB's _sysIsSoftReset function now correctly declares the function's type to be void. - Defect #21422 fixed. Xalloc regions in battery backed SRAM are now correctly flagged as such on boards capable of "Code and BIOS in Flash, Run in RAM" compile mode. - Defect #81356 fixed. RS232.LIB serXgetc function help return value descriptions are improved, both possible reasons for a failure result are listed. - Defect #81669 fixed. ADC_ADS7870.LIB now generates helpful warning or error messages when ADC_ONBOARD or ADC_RESOLUTION macros are not defined or defined incorrectly. - Defect #81693 fixed. PWM.LIB now generates helpful error messages for boards that do not have PWM functionality available. - Defect #81727 fixed. OP72xx.LIB serMode function now always returns the appropriate result code. - Defect #81421 fixed. Pinging Rabbit from gateway router is no longer problematic. - Defect #22091 fixed. RS232_NOCHARASSYINBRK now turns on "no character assembly in break" while in STDIO_DEBUG_SERIAL mode. If STDIO_DEBUG_SERIAL == SADR on a Rabbit 4000 (or greater), this is now the default behavior. Sample Program Bugs - Defect #20939 fixed. Samples program "samples\tcpip\zserver\filesystem.c" compiles correctly. - Defect #21019 fixed. RCM40xx and RCM41xx series boards do not have pull-ups installed on the serial Rx lines, so most RCM40xx and RCM41xx serial samples have been updated to demonstrate how to disable character assembly in RS-232 line break condition. - Defect #21191 fixed. Samples\fp_benchmark.c is improved. It now calculates the appropriate amount of loop overhead time. - Defect #21192 fixed. Samples\global_init.c comment is corrected to say auto is the default storage class. - Defect #21193 fixed. Samples\random.c is improved. It now demonstrates use of RAND.LIB functionality to generate a pseudo-random sequence of range-limited integers. - Defect #21287 fixed. RCM40xx, RCM42xx Serial\serDMA.c samples now demonstrate enabled DMA (serXdmaOn call is uncommented). - Defect #81695 fixed. Added check for years entered as more than 2 digits. Added date range notification to stdio window. GUI Bugs - Defect #20177 fixed. Watch window char array data display now correct for chars with high bit set. - Defect #20599 fixed. The find in files grep window obscurred other application windows when alt-tab is used to switch to other applications. - Defect #21009 fixed. When pasting text, the cursor had been placed at the end of the text when tabs preceeded it on the line. - Defect #21208 fixed. A "Cannot open clipboard" error message will no longer appear when the Stdio window is opened while an Office program is open with Edit | Office Clipboard selected. - Defect #81439 fixed. Grep in files with *.* mask now runs without error. - Defect #81448 fixed. Disassemble at Cursor now works in libraries. Debugger Bugs - Defect #81638 fixed. In execution tracing, one can now step over _TRACE placed in functions other than main. RFU Bugs - Defect #81619 fixed. If the file selected from the File mru list was not the first in the list, the prior file was loaded, but now the selected one is always loaded. ***************************************************************** VERSION 10.09 BUG FIXES Compiler Bugs - Defect #81741 fixed. The compiler now generates correct code for arithmetic assignment operators with complex left-hand sides having far storage. - Defect #81739 fixed. The compiler now generates correct code for function calls returning characters in a conditional expression. - Defect #81732 & 81733 fixed. The compiler now generates correct addresses for externed far variables. - Defect #81714 fixed. The '&' operator now works correctly in array initialization. - Defect #81710 fixed. The compiler now omits warnings it had previously emitted erroneously in the assignment of far pointers with different storage. - Defect #81709 fixed. Using "&" and "->" operators together did not work correctly, when used as: "(&my_struct)->x". - Defect #81661 fixed. The compiler now properly processors the _system macro. - Defect #81660 fixed. Compiler and libraries now properly support the interrupt keyword for the Rabbit 4000 processor. - Defect #81636 fixed. Using multiple '.' operators on nested structures sometimes resulted in incorrect code generation. Library Bugs - Defect #20191 fixed. serXrdFlush and serXwrFlush work with serial DMA enabled and with serial DMA not enabled. - Defect #81737 fixed. FTP User can now download a file s/he uploaded to a FAT partition. - Defect #81736 fixed. SFLASH.LIB's sf_enableCS(), sf_disableCS() functions now properly protect their WrPortI() call. - Defect #81715 fixed, _n_strncat (strncat) now properly returns the address of the destination string. - Defect #81688 fixed, type checking error (multi-dimensional array) in BL20XX.lib. - Defect #81656 fixed, in the variable name parser there was an error in the range checking for the allowed character set. - Defect #81642 fixed. HDLC_Packet.lib had two bad CPU checks for the Rabbit 4000 chip. - Defect #81254 fixed, uppercased header sentinel macro __I2C_LIB in I2C.LIB GUI Bugs - Defect #81698 fixed. The flags order in the Registers window History view is now the same order as when copied and pasted. - Defect #81699 fixed. In STOP mode while execution tracing with autoscroll on, the window is no longer scrolled to the top. ***************************************************************** VERSION 10.07 NEW FEATURES - Added the error_message function to errors.lib. This function returns a descriptive string in xmem corresponding to an error code. - New sample tcpip\http\cgi_concurrent.c demonstrates how to manage concurrent CGI instances accessing a single shared resource, including proper behavior when the HTTP connection aborts. BUG FIXES Compiler Bugs - Defect #81255 fixed. Even if project file is read only, DC will exit correctly. - Defect #81485 fixed. Conditional (runtime if) test values in cofunctions are now always correctly normalized in HL before the condition's comparison is made. - Defect #81609 fixed. Invalid warnings are no longer generated for some implicitly upcast (far) NULL returns or comparisons. - Defect #81629 fixed. Pointer difference now checks pointer types correctly. - Defect #81631 fixed. Watches on string literals work correctly. - Defect #81658 fixed. The assembler now accepts subtraction for negative displacement in indexed instructions. EG: add a, (ix - d) is equivalent to add a, (ix + -d). - Defect #81687 fixed. The block instruction (LDIR, UMA, etc.) workaround for the Rabbit 4000 was not complete--the carry flag would be unconditionally cleared. This especially affected the UMA and UMS instructions. Library Bugs - Defect #81487 fixed. In LZSS.LIB, the LZ_LOOK_AHEAD_SIZE macro name has been corrected. Formerly, it was incorrectly defined as just LOOK_AHEAD_SIZE. - Defect #81581 fixed. The serial flash chip enable / disable functions in SFLASH.LIB now protect the WrPortI calls by setting ipset 1. - Defect #81604 fixed. The xalloc_stats function does not support a zero parameter, and now prints an error message asking for the required data structure. - Defect #81613 fixed. Error log exception values changed. - Defect #81657 fixed. On the ASIX AX88796 Ethernet chip, when the Ethernet cable is rapidly plugged and unplugged, the PHY could fail to detect a connection. The ASIX driver will now periodically check the link status, and will reset the PHY when it is down to work around the problem. - Defect #81662 fixed. Analog and Ethernet related macros are now defined appropriately for the BL2000B. - Defect #81663 fixed. The BL2010 and BL2030 specific "ADC_1OBIT" macro has been corrected to read "ADC_10BIT" (capital letter O typo changed to a numeral zero). - Defect #81666 fixed. The TCP/IP stack will no longer respond on TCP port 0 when the reserve ports functionality is enabled. - Defect #81675 fixed. BIOS's UserBlockAddr variable is now correct in Compile to flash, run in fast RAM compile mode when target board has a unique version 5 ID block installed. - Defect #81678 fixed. Can now read all of User block when version 5 unique ID block and large size User block are installed. - Defect #81685 fixed. On the RCM 40xx series, brdInit() no longer sets PE6 as an output. This was sometimes causing Ethernet to stop functioning. - Defect #81688 fixed. Fix type checking error (multi-dimensional array) in BL20XX.lib. - Defect #81692 fixed. Cloning on boards with 8-bit flash now works properly. - Defect #81700 fixed. DNS no longer gets stuck when resolving multiple bad addresses. Also note that the list of hostnames for the dns2.c sample has changed. Sample Program Bugs - Defect #81507 fixed. Userblock_clear.c now correctly attempts to clear only the available User block area. - Defect #81508 fixed. Userblock_info.c now reports correct information for unique v. 5 ID block. - Defect #81673 fixed. Now warns user that #define's are missing, refers user to documentation comments at the top of SERVO_FIRST.c. OTHER FUNCTIONAL CHANGES - The RCM40xx Product Family has been separated with individual Product IDs. Specifically, in Dynamic C 10.07, the macro, ‘RCM4000A’, has been redefined to the product id for an RCM4000 (PID=0x2702). Likewise, the macro, ‘RCM4010’, is now defined to the product ID for an RCM4010 (PID=0x2701). The boards' internal product ID part numbers have not changed, just the macro value definitions in this version of Dynamic C. Previous versions of Dynamic C 10 used the macro ‘RCM4000A’ to identify the RCM4010 (PID=2701). - Error logging is updated to version 2. Run time exceptions are now reported / recorded as negative int values and Dynamic C's traditional run time error codes have changed. See details in Lib\errno.lib and in Lib\BiosLib\errors.lib. - DLM/DLP programs in Samples\Download do not work with Rabbit 4000 processors. These programs were changed to reflect this. ***************************************************************** VERSION 10.05 NEW FEATURES BUG FIXES Compiler Bugs - Defect #81634 fixed. Pointers to far are now properly evaluated in boolean expressions. - Defect #81635 fixed. The casting of near pointers that have NULL value to far pointers now performs the correct up-conversion. Library Bugs - Defect #81543 fixed. Timeout is no longer calculated during SYN handshake. OTHER FUNCTIONAL CHANGES ***************************************************************** VERSION 10.03 NEW FEATURES BUG FIXES Compiler Bugs - Defect #80160 fixed. Constant expressions may now include the address of '&' operator. - Defect #80783 fixed. externed arrays having the same name now generate an error message. - Defect #80990 fixed. Empty function chains no longer generate prolog and epilog code. - Defect #81548 fixed. The assembler produces an intelligible error message for trailing '+' or '-' characters in an instruction. - Defect #81589 fixed. The assembler now omits long jumps over page boundaries when encountering inline c expressions embedded in assembly code. - Defect #81593 fixed. The compiler now properly promotes NULL pointer constants to the type of the other operand in equality comparisons provided the other operand is a pointer type. - Defect #81599 fixed. The compiler now uses labels instead of pseudocompilation to generate function blocks for cofunction related code. - Defect #81600 fixed. The RdPortI() inline function now produces an error message for undefined variables as parameters. - Defect #81602 fixed. Function implementations having the '__lcall__' function qualifier now generate parameter offsets properly. - Defect #81606 and 81611 fixed. Resolved corner cases involving pointer differences. - Defect #81612 fixed. Calling xmem functions through function pointers now honors established register conventions with respect to the first function parameter. - Defect #81615 fixed. The peephole optimizer now properly generates page shifts at source markers. Library Bugs - Defect #81479 fixed. The fmod() function now works properly when the numerator and denominator have the same (or nearly the same) value. - Defect #81492 fixed. The memcpy() and memmove() functions now properly return the destination parameter when the size is zero. - Defect #81528 fixed. Added a static keyword to a const string of encodable characters in HTTP.LIB. Note that this defect was actually fixed in Dynamic C 10.01. - Defect #81545 fixed. udp_waitopen() RabbitSys conditional compilation macros were removed because they were unneccessary. - Defect #81549 fixed. RabbitSys Macros caused incorrect logic to be compiled when compiling for non-RabbitSys applications. These errors were located in the network stack and appeared as failures in the gateway/router services. - Defect #81590 fixed. RabbitFLEX keypads with other than 2 outputs now work correctly. Also, this change will cause the outputs on a 2-output keypad to swap, so reported keycodes on a 2-output keypad will change. - Defect #81596 fixed. The library file "http.lib" compares the value of a state structure member instead of the pointer. - Defect #81603 fixed. RS232.LIB DMA transmit is now redesigned to be less interrupt intensive. - Defect #81605 fixed. RS232.LIB with DMA now will not cut off the last few bytes of a transfer. Rabbit Field Utility Bugs - Defect #81547 fixed. COM10 and higher is now supported. ***************************************************************** VERSION 10.01 NOTE: Dynamic C version 10.01 is supported only on the RCM4110 core module. Attempting to compile a program to any other Rabbit Core Module will result in a compile-time error. NEW FEATURES - Far Pointers and Far Data. The "far" keyword allows for direct access to xmem, without having to use xmem2root, root2xmem, or other library routines. A new library API for standard functions is provided to work with far pointers. - Rabbit 4000 CPU code generation. DC 10.01 introduces support for the Rabbit 4000 CPU and generates native code from C source. - Improved code generation. DC 10.01 has improved code generation over older Dynamic C releases, including the use of new Rabbit 4000 instructions to produce smaller, faster binaries. - Rabbit I/O LIB Utility. This utility is a powerful tool for initializing I/O pins and various Rabbit 4000 peripherals. - DMA support. The Rabbit 4000 supports Direct Memory Access for data transfers between I/O and memory. A full set of API are provided in the new DMA.LIB - Highly configurable serial libraries. RS232 serial API have been enhanced to support generalization. This allows for more maintainable and transferable code. RS232 also now supports DMA for less interrupt intensive serial transfers. BUG FIXES Compiler Bugs - Defect #81546 fixed. Constant structure assignment is fixed. - Defect #81550 fixed. Removed improper warning for functions returning function pointer types using typedef. - Defect #81556 fixed. Float to unsigned long conversion fixed. - Defect #81557 fixed. Accessing multi-dimensional arrays with constant indices fixed. - Defect #81562 fixed. Secondary watchdog timer is now disabled upon startup to avoid interaction problems between the primary and secondary watchdog timers. - Defect #81564 fixed. Assembler was generating incorrect code in #asm const blocks. - Defect #81570 fixed. Corrected removeram origin directive definition, fixing problems with running in RAM mode. - Defect #81577 fixed. Added a definition for the removeram origin directive for compiling in Flash Mode. - Defect #81582 fixed. The sizeof operator resulted in incorrect values when calculating the size of the address of an array. Library Bugs - Defect #81151 fixed. The functions clockDoublerOn, clockDoublerOff, and setClockModulation do not compile. - Defect #81563 fixed. Missing function prototypes for clockDoublerOn and setClockModulation were added. GUI Bugs - Defect #81572 fixed. The compiler messages window no longer leaks memory each time it is opened. - Defect #81574 fixed. Dynamic C no longer crashes if a program that loses communication before starting (yet runs to completion) is recompiled. - Defect #81576 fixed. Switch to debug mode (Shift+F5) now works correctly for programs compiled to RAM. Debugger Bugs - Defect #81573 fixed. Pressing F4 when a program is running on a BL1810 now stops the program from running and returns the IDE to edit mode. - Defect #81575 fixed. Returning to edit mode after compiling a program and turning on execution tracing no longer results in a target communication timeout. - Defect #81585 fixed. Setting a watch expression no longer corrupts data 1k below dkcWriteBufHeader in non-separate I&D. OTHER FUNCTIONAL CHANGES - Conversion of negative float values to unsigned long values, which is undefined C behavior, has changed. Previously, the float value's 32-bit representation was copied literally into the unsigned long's 32-bits. Now, conversion of a negative float value to unsigned long type results in the value 0ul. This change in behavior is coincident with the fix for defect #81556. Also note that the similarly undefined behavior for conversion of negative float values to unsigned int type has not yet changed; however, the equivalent change will occur in a future release of Dynamic C. ***************************************************************** 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 Dynamic c status bar and title bar. - Defect #577 fixed. Dynamic C will not crash if more than six watch expressions are added. - Defect #564 fixed. A font change can now be cancelled after selecting a new font. - Defect #596 fixed. When compiling, the Compile button is now inactive until compilation is completed. Hitting the Compile button again during a compile no longer causes a problem. Library Bugs - Defect #398 fixed. Due to fundamental changes in the RabbitLink, the polling bug is no longer applicable. - Defect #403 fixed. Due to fundamental changes in the RabbitLink, the problem of stdin characters not being received is no longer applicable. - Defect #543 fixed. serMode(2) description corrected to PD0=RTS and PD2=CTS. - Defect #544 fixed. Comment on use of SERB_USEPORTD added to serBopen() function description. - Defect #545 fixed. Added to descriptions for packet send and receive functions. - Defect #549 fixed. ID and user blocks are properly protected when a 512kb flash is installed (didn't affect 2x256kb). - Defect #551 fixed. _EraseFlashChip function now works. - Defect #561 fixed. DMFile structures can now be on the stack if uC/OS is being used. - Defect #567 fixed. The BIOS was performing an inadvertent write to a register. - Defect #570 fixed. PACKET.LIB now handles a change from a low to high baud rate correctly. - Defect #571 fixed. PACKET.LIB parity modes are now correct - Defect #572 fixed. Corrected library header typo. - Defect #578 fixed. Dynamic C no longer loses communication after breakpoint set and removed in a program with a lot of stdio output. - Defect #580 fixed. Added srand() to initialize random seed from a program instead of using default value. - Defect #581 fixed. Zconsole parameter "" was not handled properly. - Defect #586 fixed. Added input buffer overflow to serial errors - Defect #587 fixed. Dynamic C now returns 1.0 for pow(0, y) where y is greater than 0 but not equal to 1. - Defect #588 fixed. MODEM.LIB functions now handle MS_TIMER rollover correctly. - Defect #589 fixed. The BinWrPortE function prototype was incorrect. - Defect #591 fixed. Header blocks in RS232.LIB now only have extern variable declarations. - Defect #594 fixed. Packet library can use alternate serial B pins by defining ’PKTB_USEPORTD’. - Defect #601 fixed. Corrected chip part number in sample description. - Defect #602 fixed. Incorrect mask value in anaOut function (JRIO.LIB). - Defect #608 fixed. correct value for MY_NETMASK in PPP_ANSWER.C - Defect #609 fixed. Zserver forms were missing the HTTP Content-Type field. - Defect #617 fixed. Occasional zero raw data values and 10V in float values resolved. - Defect #618 fixed. The RabbitLink has been updated to match changes in the underlying ARP code. - Defect #629 fixed. The printf format strings "lX" and "LX" did not produce uppercase hex values. - Defect #631 fixed. Filesystem Mk II (FS2) should now work with costatements/cofunctions. Was not preserving IX register. ***************************************************************** NOTE: Dynamic C 7.10 was a Special Edition (DSE) only version sold only with DeviceMate. Users going from version 7.06 or older to version 7.20 should read the version 7.10DSE release notes also. ***************************************************************** VERSION 7.10DSE NEW FEATURES - Project files implemented. See the Dynamic C manual for details. - Feature Request #440. Hotkeys ArrowUp, ArrowDown, PageUp, PageDown can now be used in memory dump window. Documented in the Dynamic C User’s manual rev. O. - Feature Request #448. Added command in Run menu to clear all breakpoints. Documented in the Dynamic C User’s manual rev. O. - Added #precompile functionality. This includes a new directive, #precompile, and a new library, precompile.lib. Any functions listed in precompile.lib using #precompile will be compiled and downloaded with the BIOS, increasing user program compile/download speed significantly. Documented in the Dynamic C User’s manual rev. O. - Changed error about compiling to RAM while cloning is enabled to a warning that automatically disables cloning when compiling to RAM. - Feature Request #250. Improved targetless compile GUI to configure with "Options | Define target configuration" and compile with "Compile | Compile target configuration". Compilation dialog title bar informs of RAM or flash target. - Feature Request #464. Added a message after a Compile target configuration, stating Object file successfully created. - A new directive for #asm blocks, "xmem" has been added to facilitate placing blocks of assembly code directly into Xmem. Documented in the Dynamic C User’s Manual rev. 0. - Internal macro __DynamicC__ is now a synonym for CC_VER BUG FIXES Compiler Bugs - Defect #263 fixed. Extra semicolons in function calls generate compiler errors. - Defect #326 fixed. Size of character buffers are reported correctly in the map file. - Defect #408 fixed. The compiler no longer generates errors when compiling the following inline assembly statements: - asm ld bc’,bc - asm ld de’,bc - asm ld hl’,bc - asm ld bc’,de - asm ld de’,de - asm ld hl’.de - Defect #442 fixed. Assembly instructions with alternate registers that are followed by C++ style comments compile. - Defect #452 fixed. Nested switch statements compile with the correct context. - Defect #453 fixed. Escape character constants and hex values in assembly code are parsed correctly. - Defect #459 fixed. Watch expressions no longer corrupt variables. - Defect #492 fixed. Compiler generated incorrect code for some tests with characters in logical expressions. - Defect #495 fixed. The case where an array is declared extern without a dimension, and the sizeof operator is used on that array before its size is known now generates an error because the array is an incomplete type. - Defect #499 fixed. White space in arithmetic operations was not ignored. - Defect #505 fixed. Compiler incorrectly handles sizeof operator result as a signed integer (should be unsigned). - Defect #508 fixed. Disallowed cofunctions to have old-style argument declarations. - Defect #514 fixed. Old-style function declarations are now compared to their prototypes, if a prototype exists. Old-style declarations also flag an error if they do not have a parameter declaration list. - Defect #518 fixed. Compiler no longer generates bad byte in startup code. - Defect #621 fixed. Macros entered into the Options | Compiler | Defines dialog are read at Dynamic C startup. TCP/IP Bugs - Defect #444 fixed. LCP negotiation fixed. Added Echo-Request handling. - Defect #454 fixed. cgi_sendstring() no longer causes garbled data to be output. - Defect #460 fixed. PAP authentication now checks name and password length. - Defect #464 fixed. PPP_ANSWER.C handles failed connect properly. - Defect #488 fixed. ZSERVER.LIB’s telnet I/O method now works correctly with uC/OS-II. - Defect #528 fixed. PPP and FTP_CLIENT.LIB now work together properly. - Defect #541 fixed. SAMPLES\RTDK\UCOS.C and SAMPLES\TCPIP\UCOS\UCOS2.C now correctly call sock_init() after OSInit(). GUI/Debugger Bugs - Defect #451 fixed. Highlighted text now becomes the default selection in the Watch window. - Defect #457 fixed. Search & Replace now works for a reverse search when the replace text contains the replace text. - Defect #494 fixed. When a compile is cancelled, the window focus is now returned to the edit window for keyboard input. Library Bugs - Defect #438 fixed. Argument syntax in pktXopen() is now correct - Defect #466 fixed. parity table is now only defined once. - Defect #467 fixed. Address calculation in fs_writesector(), in fs_flash_single.lib is cast properly. - Defect #481 fixed. fdelete() in FILESYSTEM.LIB now returns the correct values. - Defect #487 fixed. FILESYSTEM.LIB no longer mixes up files in its RAM cache. - Defect #491 improved. PACKET.LIB now makes less use of the IP buffer, so a user program is less likely to overflow it. - Defect #500 fixed. WAIT_5_us macro would not compile - Defect #521 fixed. 7 bit bytes now transmitted correctly. Other Functional Changes - Feature Request #429. printf and sprintf now return the number of characters written. Documented in the Dynamic C User’s Manual revision 0. - Feature Request #459. Long calls and long jumps to xmem addresses are resolved to symbol names where possible. KNOWN PROBLEMS - Due to target communications changes, normal cloning does not work. Fast cloning, however, does work. This will be fixed in the next release. - Also due to target communications changes, the RabbitLink product will not work with this version of Dynamic C. This will be fixed in the next release. - A problem exists with PC serial ports that have the FIFO disabled. This problem may cause a Dynamic C lockup. If you experience downloading/debugging problems, please make sure that the FIFO is enabled for your PC’s serial port. This setting can be found in the Control Panel in the Ports section. ***************************************************************** VERSION 7.06P2 BUG FIXES Sample Program Bugs - Defect #583 fixed. Printf statements in the sample program xstring.c are accurate. File System Bugs - Defect #548 fixed. FS2_RAM_RESERVE is no longer counted twice in the reserved RAM. - Defect #592 fixed. FS2_RAM_RESERVE definition in RABBITBIOS.C is now in terms of 4096-byte blocks rather than byte count. This allows use of more than 32k for the RAM filesystem without getting warnings when compiling the BIOS. Library Bugs - Defect #445 fixed. In Ucos-II, task can now be deleted if it is created with OSTaskCreate. - Defect #468 fixed. DHCP options 12 and/or 15 do not cause array overwrite and crash. - Defect #469 fixed. Redundant code to validate pevent in OSQPost has been removed. - Defect #585 fixed. _glInitLCDPort no longer has hardcoded addresses. These address were problematic for new controllers - Defect #611 fixed. BL2100 digital port strobe changed from a chip select to a qualified RD & WR I/O strobe to eliminate an inadvertent channel selection. TCP/IP Bugs - Defect #409 fixed. TCP not sending correct keepalive segments. - Defect #411 fixed. TCP timeout/retransmit strategy not implemented correctly. - Defect #412 fixed. TCP not handling dropped or out-of-order segments correctly. - Defect #413 fixed. TCP not handling closed window properly. - Defect #465 fixed. sock_bytesready() and sock_dataready() no longer return more bytes than are available for ASCII sockets. - Defect #471 fixed. After a connection was SYN queued, a re-transmit of the initial opening of the window does not have the proper flags set. - Defect #473 fixed. Specifying the remote IP address and remote port in tcp_listen() and tcp_extlisten() now works correctly. - Defect #474 fixed. DHCP did not accept packets <250 bytes. It now rejects a packet if it is <240. - Defect #480 fixed. SMTP.LIB and FTP_CLIENT.LIB were relying on MY_IP_ADDRESS directly, and now use the proper API call to catch runtime address changes. - Defect #483 fixed. resolve_cancel(0) no longer makes subsequent DNS resolves fail. - Defect #490 fixed. The HTTP server now properly ends 401 responses (in particular, the Opera browser now works with HTTP.LIB’s authentication). - Defect #502 fixed. A UDP socket will no longer receive broadcast data sent to a different port from the one on which it is listening. - Defect #503 fixed. HTTP.LIB no longer misreports a Content-Length field from a client of over 32768 bytes. - Defect #504 fixed. sock_close() now correctly closes a listening but unconnected socket. - Defect #509 fixed. sock_init() now only sets up uC/OS semaphores on first time through. - Defect #520 fixed. Compilation error when DHCP_USE_BOOTP defined, when compiling BOOTP.LIB. - Defect #522 fixed. Inability to use the TFTP.LIB library if not using DHCP client library (BOOTP.LIB) - Defect #530 fixed. The macros BUFSIZE and MAXBUFS in NET.LIB have been renamed to ETH_BUFSIZE and ETH_MAXBUFS. - Defect #535 fixed. Using the resolve functions in DNS.LIB without a nameserver defined no longer causes a divide-by- zero error. In conjunction with this fix, some error return values for the resolve functions have been changed (see below). - Defect #562 fixed. Ethernet frames of larger than ETH_MTU are no longer accepted by the packet driver. This caused a potential crash problem in ICMP.LIB. - Defect #566 fixed. Echo request packets now generated correctly. Also, echo requests are no longer lost when using PPPoE - Defect #569 fixed. In ZCONSOLE.LIB, the subject line in a mail message was sometimes incorrectly treated as the first line in the body. - Defect #593 fixed. Under heavy load specific sized packets could cause a lockup. - Defect #605 fixed. HTTP server long delays when processing post-style form data. Especially noticeable with MSIE browser. - Defect #607 fixed. PPP buffer now allocated correctly after packet is dropped. Changes to ARP (Address Resolution Protocol): - These changes should be transparent to most applications except those that use UDP sockets. A call to udp_open() or udp_extopen() used to block while waiting for ARP resolution. These calls are now non-blocking, so it is possible for the application to call udp_sendto() on a socket which is not resolved. This will cause the datagram to be dropped. To help old applications, two new UDP functions are provided: udp_waitopen() and udp_waitsend(). These functions are identical to udp_extopen() and udp_sendto() respectively, except that an additional parameter specifies the maximum amount of time to block waiting for ARP resolution to complete. A value of 100ms should be sufficient in most cases. - ARP is now handled using a cache table in all cases. The table includes router and host information. There is no blocking waiting for ARP when opening a TCP or UDP socket. ARP cache entries are automatically refreshed based on short or long timeouts. ethernet address is no longer stored in the socket structure. - New sock_resolved() function for testing whether a TCP or UDP socket is resolved to a valid hardware (ethernet) address. General improvements to the TCP/IP library suite: - TCP: The "functions" sock_wait_established(), sock_wait_data() and sock_wait_clsoed() are deprecated; do not use them in new code. These are really macros that "goto sock_err" when trouble is noticed. All sample program have had these removed and replaced with looping code that calls tcp_tick(). See the file "Samples/RCM2200/myecho.c" for an example. - TCP correctly computes round-trip-time estimators, which is important for handling timeout/retransmit strategy. - TCP protocol core rewritten. Much better throughput over long latency and/or unreliable links. Code efficiency improvements for lower processor overhead. Better conformance to host requirements RFC. Nagle algorithm performed correctly. Common sections of code factored out into functions since the old code was somewhat inconsistent. TCP is believed to be much more reliable and less prone to odd "lock-ups". - New APIs for setting TTL and TOS for TCP/UDP sockets. sock_set_ttl() and sock_set_tos(). - ICMP errors passed up to transport protocol layers via upcall functions. TCP handles transparently to the application. UDP allows the application to receive ICMP messages via the normal udp_recvfrom() interface. Additional UDP socket mode flags to control ICMP processing. - Socket error messages handled by number (not strings). New API in NETERRNO.LIB for checking and printing errors e.g. sock_perror(). Up to two error codes may be queued to a socket. - Debugging and verbosity defines have been rationalized. The programmer can #define xxx_DEBUG and xxx_VERBOSE to control DC "nodebug" settings and debugging messages. xxx is the library name e.g. TCP_VERBOSE for TCP.LIB. Can also set DCRTCP_DEBUG and DCRTCP_VERBOSE to enable for all TCP/IP core libraries. - Improved control over library constants via #defines. - Packet driver time delays reduced. - IP and transport layers drop malformed packets which used to get through (causing possible crashes and security problems). - Minor UDP checksumming bug fixed. - TCP ignores unbelievable RST segments. - DHCP client sets broadcast flag correctly, and understands more information from the server. Does not crash with host option. Accepts timezone information from server. New API: dhcp_get_timezone(). - Miscellaneous documentation clarifications for some of the API functions. (Control-H function descriptions). - Many of the polymorphic API functions now take void * for socket rather than "sock_type *". - sock_mode() enhanced by addition of some macros to perform type-safe updates of single mode flags. - New udp_peek() function for examining datagram information before actually removing the datagram from the UDP socket receive buffer. This also returns more detail than udp_recvfrom(), including the incoming TOS and whether the datagram was directed to the broadcast address. - In HTTP.LIB, calling the epilog function automatically in an abort condition after the prolog function has been called has now been changed. Now, the user must set the abort_notify field in the HttpState structure to 1 in the prolog function to indicate that the epilog function should be called on abort. As before, the cancel field in the HttpState structure will be set to 1 in such a situation. This functionality has been extended to CGI functions as well (see the New Features below). - In HTTP.LIB, the abort_notify field in the HttpState structure can be set to 1 in a CGI function if the user wants the CGI function to be called one more time in case of a connection abort condition. The cancel field in the HttpState structure will be set to 1 in such a situation. This could be used to release resources that have been locked, for example. - HTTP: Added HTTP_USERDATA_SIZE to extend make "HttpState.userdata[]". This space is totally for user program. It’s cleared on each new connection. If HTTP_USERDATA_SIZE is left undefined, this additional field of HttpState isn’t included. See "Samples/TargetProc/SLog-App.c" for usage. Documented in the TCP/IP User’s Manual rev. C. - For automatically generated forms in HTTP.LIB, the epilog function will now be called even if the connection is aborted (as long as the prolog function has been called first). The "cancel" variable in the HttpState structure is 0 to indicate that the epilog function is being called normally, and 1 to indicate that it is being called in a cancel situation. Documented in the TCP/IP User’s Manual rev. C. - Added support for dotted decimal IP addresses in resolve_name_start. - New error return code RESOLVE_NONAMESERVER has been added to resolve_name_start(), resolve_name_check(), and resolve_cancel() in DNS.LIB. Also, the return codes -1 and -2 for resolve_name_start() have been given the symbolic names RESOLVE_NOENTRIES and RESOLVE_LONGHOSTNAME, respectively. Documented in the TCP/IP User’s Manual, rev. C. - Feature Request #442. Extended smtp_sendmailxmem to data larger than 32K. NEW FEATURES - OP6800 libraries added for full support of OP6800 specific functionality. This includes libraries supporting IO, RS232,RS485, TCPIP and OP6800 hardware specific functions. - SF1000 libraries are now provided in all versions of Dynamic C including the TSE and SE versions. ***************************************************************** VERSION 7.06 BUG FIXES Compiler Bugs - Defect #360 fixed. Library functions that were declared in a BeginHeader block were not correctly read when the function name was > 32 chars. - Defect 461 fixed. Corrected division bug for unsigned constant powers of two which was caused by a call to c_divt instead of c_usr. - Defect #485. Dynamic C crashes on some macros due to a bug in the preprocessor. - Defect #497 fixed. The command line compiler does not recognize board types. Programs which require specific board libraries do not run correctly. TCP/IP Bugs - Defect #470 fixed. DNS now only does table allocation once - Defect #486 fixed. DNS lookups no longer fail when a type CNAME answer is given first. - Defect #511 fixed. DNS support no longer crashes the board when used in conjunction with uC/OS-II. - Defect #527 fixed. Large fragmented packets could cause lockup. GUI/Debugger Bugs - Defect #515 fixed. The message window can now be closed without problem after compiling a program following one or more warnings generated from compiling the BIOS. - Defect #516 fixed. Changes to the Lib directory in the Compiler Options dialog are now effective immediately. - Defect #517 fixed. The Rabbit Field Utility now sizes dialog windows correctly if Windows Display Properties large fonts are used. Library Bugs - Defect #506 fixed. The macro _BOARD_TYPE_ used in RS232.lib in order to define SERB_USEPORTD is also defined for the RCM2300. - Defect #507 fixed. Cloning would occasionally fail depending on the size of the program being compiled. - Defect #513 fixed. The packet driver was incorrectly updating the PDFR and PDCR for the RCM2200. - Defect #534 fixed. Stack was corrupted when errlogGetNthEntry detected a checksum error. Other Functional Changes NEW FEATURES - BL2100 libraries added for full support of BL2100 specific and display specific functionality. This includes libraries supporting display, character, graphic and BL2100 hardware specific functions. - SF1000.LIB added to Dynamic C Libraries. The SF1000 series offers serial-interfaced Flash memory that is designed to increase storage capabilities of Z·World single-board computers. - New font converter executable (fbmcnvtr.exe) and help files (FONTBMP.HLP) are now included in the Dynamic C installations. - "STERILE_CLONES" option added to fast cloning to disable cloning of clones. Additional Documentation ***************************************************************** VERSION 7.05 NEW FEATURES - Command line compiler released and documented in Dynamic C User’s Manual. - Compiling a program into two flash chips has been made nearly seamless. #defining the macro USE_2NDFLASH_CODE is the only thing the user needs to do to make it work. Two extra bin files are generated when the program goes into two flash so that an EPROM burner can be used. A single large bin file is also generated for use with the Rabbit Field Utility and cloning. - SPI library added along with a sample interfacing to a serial ADC chip. See \SAMPLES\SPI\. - GPS library added along with a sample interfacing to a GPS receiver. See \SAMPLES\GPS\. - New I2C library and sample. Allows Rabbit to act as a master for a Philips I2C bus. Documented in Application Note AN215. See \SAMPLES\I2C\. - Major changes have been made to the UDP socket API. These changes will greatly improve the flexibility of our UDP implementation. They are documented in the Dynamic C TCP/IP User’s Manual - Instruction Set Reference item added to Help Menu. - Error logging implemented and documented in Dynamic C User’s Manual. - A serial download manager sample program for boards with 2 flash has been added in \SAMPLES\DOWN_LOAD\. - New filesystem library (FS2.LIB and friends). FS2 documented in Dynamic C User’s Manual. It is mostly compatible with the current filesystem (FILESYSTEM.LIB) except for initialization. FS2 provides the following enhancements: . Allows overwriting parts of an existing file. . Multiple extents ("partitions") may be defined. . Supports any combination of flash memory, battery-backed RAM, or user-defined devices with a flash-like interface. . Supports large- and small-sector flash memory. . Runtime error reporting improved by using symbols defined in ERRNO.LIB. These codes are returned in the errno variable if a filesystem routine encounters an error. The original filesystem is still supported, however any enhancements will only be made to FS2. - Runtime error reporting is now improved, adding the file and line at which the error occurred, unless nodebug was in effect in the source code for that line. - Sample serial downloader for 2 flash board added, - If a file generates errors, compilation now stops at the end of the file. - Added packet drivers. These drivers allow for packet based serial communication using a variety of packet separation modes. Function description documented in Dynamic C User’s Manual. - BL2000 serves Java applet to control Analog output. Samples\BL2000\Applet\ has web page to deliver a Java applet (source in Applet\pages\AnalogApplet.java). Includes pre-compiled .class files, so you can just re-compile from Dynamic C, download and run! Applet tested on NS Communicator 4.72 and MSIE 5.00. See Samples\BL2000\Applet\README.txt for details. - "Smart" BIOS Recompilation. Dynamic C now keeps a dependency list for the libraries included in the BIOS with #use. The BIOS is only recompiled when one of the libraries it is dependent upon is modified (or a library that one of those libraries #use’s). Nested #use is also supported, but any #use in a library must be in a BeginHeader/EndHeader block. - Fast cloning option added, see RabbitBIOS.c. - Complete rewrite of the DNS subsystem. - New functions sauth_getuserid(), sauth_setpassword(), and sauth_removeuser() in ZSERVER.LIB. sauth_getuserid() gets the user id for a given username. sauth_setpassword() sets the password for a given user id. sauth_removeuser() removes the given user from the user list. Note any web pages associated with that user should be reassigned to another user, or have authentication removed (by passing the parameter "" to sspec_setrealm()). - New function http_urldecode() to HTTP.LIB. Converts a string with HTTP transfer-coding "tokens" (such as %20 (hex) for space) into actual values. Changes "+" into a space. - New function http_contentencode() to HTTP.LIB. Converts a string to include HTTP transfer-coding "tokens" (e.g. @ (decimal) for at-sign) where appropriate. Encodes these chars: "<>@%#&" - New callback macro HTTP_CUSTOM_HEADERS in HTTP.LIB. The developer can define this macro to be a function of the following prototype: void my_headers (HttpState* state, char* buffer, int bytes); The state parameter is a pointer to the state structure for the calling web server, the buffer parameter is the buffer in which the header(s) can be written, and bytes is the number of bytes available in the buffer. The macro will be called whenever HTTP headers are being sent. Collected all runtime error code into a single new library, ERRORS.LIB. Also added three new runtime errors: "invalid cofunction instance", "unexpected interrupt", and "bad parameter passed to I/O function". - New functions sspec_setpreformfunction() and sspec_getpreformfunction() in ZSERVER.LIB. These functions add support for a user-supplied function that will be called just before HTML form generation. - New function udp_send, which will send a datagram to the remote host on the UDP socket. - New function udp_sendto, which will send a datagram to a specified remote host and port. - New function udp_recv, which will receive a datagram from a remote host. - New function udp_recvfrom, which will receive a datagram from a remote host, and also return the IP address and port number of the sender. - New functions tcp_extopen, tcp_extlisten, and udp_extopen have been defined. These allow a user to specify their own socket buffers in xmem (with xalloc) instead of having them allocated from the pool. Hence, it is now possible for the user to handle socket buffer management. - Added functions resolve_name_start(), resolve_name_check(), and resolve_cancel() to perform nonblocking DNS lookups. - Added the following configuration macros for DNS: * DNS_MAX_RESOLVES (4 by default) -- number of concurrent DNS queries that can be done. This specifies the size of an internal table that is allocated in xmem. * DNS_MAX_NAME (64 by default) -- hostnames to look up (including an appended default domain) must be no larger than this macro, including the null-terminator. For temporary storage, a variable of this size must be placed on the stack in DNS processing. * DNS_MAX_DATAGRAM_SIZE (512 by default) -- specifies the maximum length in bytes of a DNS datagram that can be sent or received. A root data buffer of this size is allocated for DNS support. * DNS_RETRY_TIMEOUT (2000 by default) -- specifies the number of milliseconds to wait before retrying a DNS request. * DNS_NUMBER_RETRIES (2 by default) -- specifies the number of times a request will be retried after an error or a timeout. * DNS_MIN_KEEP_COMPLETED (10000 by default) -- specifies the number of milliseconds a completed request will be kept in an internal table before it can be flushed, so that the user can retrieve the results. * DNS_SOCK_BUF_SIZE (1024 by default) -- specifies the size in bytes of the socket receive buffer for the DNS socket. An xmem buffer of this size will be allocated. Compatibility has been preserved for the resolve() function, call the MAX_DOMAIN_LENGTH macro, and the DISABLE_DNS macro. - The sizeof operator can be used inside assembly blocks. Documented in the Dynamic C User’s Manual. - ZCONSOLE.LIB now supports FS2.LIB. The functions con_backup_bytes(), con_set_files_lx(), and con_set_backup_lx() have been created for use with FS2.LIB. - All of the new and improved TCP/IP functionality has been documented in the Dynamic C TCP/IP User’s Manual - A new registry entry, Include Time Stamp, has been added under the Dynamic C Compiler Section. This setting is set to true by default, but can be edited so that Dynamic C will compile files without including time stamp information. - Access to time/date stamp added: long dc_timestamp; - Ability to #define macros in compiler options GUI added. - Ability to select a different LIB.DIR file in compiler options GUI added. - When a program is compiled for debug, the source file will no longer scroll to the beginning of the code when debug mode is entered. BUG FIXES Compiler Bugs - Defect #42 fixed. Post and pre increments and decrements of auto character variables are implemented correctly. - Defect #100 fixed. Compiler did not generate an error when assigning a cofunction to a function pointer. - Defect #105 fixed. Conversions from float to long for some overflow values caused Dynamic C to crash. - Defect #151 fixed. Selection operator did not work with arrays of structures. - Defect #161 fixed. Adding constant to function pointer now generates compiler error. - Defect #168 fixed. Address of operator did not work properly for functions. - Defect #169 fixed. Address of operator did not work properly for arrays. - Defect #194 fixed. Compiler now permits white space between the name and the colon of a label definition. - Defect #207 fixed. The compiler warns when global assembly labels are redefined and when symbols contained in library headers are defined in a user’s program. - Defect #210 fixed. Indirect calls to functions with arguments work correctly when made multiple times, and when their return values are assigned to auto or dereferenced pointers. - Defect #226 fixed. An internal error occurred when using the auto keyword with certain variables. - Defect #232 fixed. The sizeof operator was causing compiler errors in certain cases when used as an array index. - Defect #242 fixed. In some rare instances, incorrect forward jumps were generated for expressions with multiple logical operators. - Defect #246 fixed. same as #42 and defect #282. - Defect #249 fixed. Same as defect #333. - Defect 266 fixed. Cofunction local variables outside the range of indexing with IX (~128 bytes) incorrectly were assigned the SP Relative address mode. - Defect #273 fixed. Invalid characters in macro identifiers produce errors. - Defect #279 fixed. Missing endheader caused compiler to crash. - Defect #282 fixed. same as defect #42 and defect #246. - Defect #304 fixed. Assembly statements in multi line macros expand correctly. - Defect #312 fixed. same as defect #210. - Defect #313 fixed. TCP connections could have a transient problem when MS_TIMER rolls over. - Defect #314 fixed. same as defect #210. - Defect #329 fixed. Sample programs that cause seg chains to be compiled on the bios no longer result in Abnormal Program Terminations when run with targetless compilation or on the rabbit link. - Defect #331 fixed. Defect caused optimization to be incorrectly applied to test expressions containing a new line. - Defect #333 fixed. GPF when initializing a variable that was declared using an undefined structure name. - Defect #334 fixed. Character arrays that are initialized with a constant string having the same length as the array are not null-terminated. Added a warning message to highlight this problem. - Defect #349 fixed. The correct address is assigned in references to extern variables between libraries. - Defect #370 fixed. The result of x%1 gave incorrect result of x with constant 1, should be 0 instead. - Defect #377 fixed. GPF when syntax error is encountered while parsing initializer list. TCP/IP Bugs - Defect #337 fixed. Using TCP/IP now forces debug, grays out menu item "Compile | Include debug code/RST 28 instructions" in a checked state. - Defect #359 fixed. Compiler crashed on some syntax errors. - Defect #365 fixed. RabbitLink now sets the TCP port correctly on bootup, if changed from the default. - Defect #388 fixed. Can now allocate more than a total of 32k of socket buffers. - Defect #405 fixed. sock_preread() now compiles correctly. - Defect #407 fixed. Some problems in HTTP username/password authentication are now fixed. - Defect #427 fixed. Sockets on reserved ports no longer stall in the 2MSL wait state. - Defect #428 fixed. HTTP servers are no longer leaked due to missed requests. - Defect #429 fixed. The HTTP server would sometimes freeze on startup. This freezing no longer occurs. - Defect #430 fixed. A problem with some TCP/IP timeouts longer than 65 seconds has been resolved. - Defect #443 fixed. Deadlock problem using TCP/IP with uC/OS. GUI/Debugger Bugs - Defect #148 fixed. Tabbing through help lookup controls no longer tabs to Parameter Number window when in View Only mode. - Defect #164 fixed. Watch window no longer incorrectly promotes integer expression to unsigned integer (Incorrectly marked as fixed in version 7.02P). - Defect #229 fixed. The Print Setup Dialog Box is now initialized with the default margin values. - Defect #251 fixed. Focus is set to file with breakpoint hit. - Defect #253 fixed. Ctl-H Insert Call no longer corrupts function name in source file after call is inserted. - Defect #272 fixed. Closing the "Loading Initial Loader" window when attempting to compile a user program after having closed the "Loading Initial Loader" window that appears immediately after starting Dynamic C stops compilation instead of causing a GPF. - Defect #297 fixed. Redo (Alt-Shift-Backspace) now works correctly. - Defect #299 fixed. Now only attempts to save a file if there is sufficient disk space, otherwise displays a warning message. - Defect #310 fixed. Removed length restriction to Watch expressions. - Defect #317 fixed. Hitting F9 to run and F10 immediately after no longer causes the compilation to stall. - Defect #319 fixed. Dynamic C no longer hangs up when characters with high bit set are in the source file, as can be introduced by other editors or other software. - Defect #323 fixed. The default BIOS is now used if the Compiler Options ’Use’ checkbox is checked but filename is blank. - Defect #361 fixed. Watch window Delete button is enabled when watch list is not empty. - Defect #384 fixed. Watch expressions involving arguments to root functions that are called by xmem functions are evaluated correctly. - Defect #402 fixed. The destination address of altd djnz is correctly disassembled. - Defect #433 fixed. Print to file of a memory dump now works properly for logical addresses. - Defect #456 fixed. Some PCs were getting "received XX instead of ACK." message at times. This should be reduced now if not eliminated. Library Bugs - Defect #220 fixed. WrPortI and BitWrPortI now suspend interrupts when updating shadow registers to prevent a race condition with an ISR. - Defect #255 fixed. Incorrect references to chkPowerFail in SYS.LIB were changed to the correct chkHardReset. - Defect #301 fixed. A comment was incorrect in the KEYLCD.C demo. - Defect #311 fixed. Added minimum baud rate to serXopen to prevent divide by zero errors. - Defects #232, #294, and #348 fixed. (All related) Declarations were allowed in sizeof and cast expressions. Declarations using sizeof did not compile. Complex types in sizeof caused crashes and other problems. - Defect #355 fixed. The RFU no longer overwrites the ID block when downloading a binary image larger than the primary flash. - Defect #357 fixed. Incorrect definition of _FlashData was changed. - Defect #358 fixed. Hex formats in printf now work correctly, with %x printing in lower case and %X in upper case. - Defect #376 fixed. dispContrast function now works for values between 45 and 60. - Defect #382 fixed. Long variables may now be inspected via Rabbitlink. - Defect #389 fixed. strtod now converts strings longer than 9 characters. - Defect #391 fixed.SmartStar read analog now faster. - Defect #392 fixed. userClockDivider() was incorrectly dividing peripheral clock by eight and not changing the status of the periodic interrupt. - Defect #419 fixed. Casting from long to char works with both direct and indirect assignments independent of storage class. - Defect #421 fixed. chkSoftReset() was reporting hard resets instead. - Defect #425 fixed. An external interrupt routine was automatically up for the RCM21xx. This would clobber any user interrupt vector that was set up before sock_init. It now only sets up a vector if PD_INTVEC is defined to the interrupt vector. - Defect #426 fixed. WriteFlash2() was assuming an ID block existed at the top of the second flash and not writing to the top sector. - Defect #439 fixed. Added a runtime warning when a user passes an auto socket to tcp_open, tcp_listen, or udp_open when using uC/OS-II. - Defect #441 fixed. Fixed a race condition in vdriver.lib that would cause ucos/slice task aware isrs to not work. - Defect #448 fixed. Flash driver was rewriting every sector, even when the data was identical and a rewrite was unnecessary. - Defect #452 fixed. the read/writeUserBlock() functions would return an error when compiling to RAM. - Defect #463 fixed. MS_TIMER roll-over not handled in ConsoleFinish function Other Functional Changes - Feature Request #260. Using a C long macro in an assembly block now produces a demotion-of-value warning. - Feature Request #270. P flag is V in register window. V and nv are synonymous with lo and lz. - Feature Request #325. Users can compile with or without debug information to the target after compiling to a file without debug information. - Feature Request #332. The Rabbit Field Utility will now look for the cold loader and pilot BIOS in the current working directory if a pathname is not found in the registry. - Feature Request #341. Error and warning messages are now shortened by replacing the full pathname with just the filename and extension. - Feature Request #351. All error messagebox messages now stay on top of all other windows within Dynamic C. - Feature Request #443. Added HTTP_PORT to make it easy to override the default port on a HTTP server. - It is no longer necessary to change USE115KBAUD in the BIOS to change the baud rate between 115200 and 57600 , an internal macro was defined. - The initial load of the pilot BIOS has been sped up to 57600 baud, resulting in a reduced BIOS load time. - Symbol and literal string table size increased. - filesystem: File access is faster due to lookup tables in RAM added fshift() for removing data from the beginning of a file added fs_reserve_blocks() to reserve space that can only be allocated by privileged files (128-143) Documented in Dynamic C User’s Manual. - Dynamic C now always generates an even sized program to facilitate checksumming using word-wise methods. - For uC/OS-II support, you should define the new macro MAX_SOCKET_LOCKS. This defines the number of socket locks that will be allocated. It defaults to MAX_TCP_SOCKET_BUFFERS + MAX_UDP_SOCKET_BUFFERS. This macro is necessary because we can no longer calculate the number of socket locks needed based on the number of socket buffers, now that the user can manage their own socket buffers. - sock_bytesready and sock_dataready have been modified to work with the new UDP sockets. They will return the size of the next datagram to be read if there is one waiting. sock_bytesready will return -1 if there is no datagram waiting. sock_dataready will return 0 if there is no datagram waiting--hence, sock_dataready can not distinguish between no datagram waiting and an empty datagram waiting. - The functions sock_read, sock_write, sock_fastread, sock_fastwrite, sock_gets, sock_puts, sock_getc, sock_putc, and sock_preread no longer support UDP sockets. - The functions sock_recv_init, sock_recv, and sock_recv_from have been removed - UDP socket buffers are now circular, and can accept as many datagrams as will fit in the buffer - TCP and UDP socket buffer management has been changed: - The socket buffer pool has been split into separate TCP and UDP buffer pools - The macro MAX_TCP_SOCKET_BUFFERS gives the number of TCP socket buffers that will be allocated. It defaults to 4. - The macro TCP_BUF_SIZE gives the size of a TCP socket buffer. It is split into a read buffer and a write buffer of equal sizes. It defaults to 4096 bytes. - The macro MAX_UDP_SOCKET_BUFFERS gives the number of UDP socket buffers that will be allocated. It defaults to 0. - The macro UDP_BUF_SIZE gives the size of a UDP socket buffer. It is all one read buffer, since UDP datagrams are sent out immediately. It defaults to 4096 bytes. - For backwards compatibility, MAX_TCP_SOCKET_BUFFERS will take on the value of MAX_SOCKETS if it is defined. - For backwards compatibility, TCP_BUF_SIZE and UDP_BUF_SIZE will take on the value of SOCK_BUF_SIZE if it is defined. - For backwards compatibility, TCP_BUF_SIZE and UDP_BUF_SIZE will take on twice the value of tcp_MaxBufSize if it is defined. - The preprocessor symbol FS2_RAM_RESERVE may be defined in STACK.LIB in order to reserve a block of RAM for use by FS2. - The maximum compilation errors and warnings can now be set in the dialog box shown with the Options | Compiler menu selection. - Defining the label SERB_USEPORTD will cause serial port B to use it’s alternate rx/tx pins on parallel port D - Additional error checking for module headers. Specifically, errors are reported if BeginHeaders and EndHeaders do not match. - Origin directives now support a follows specifier and a resume specifier to allow compiling around the system ID block kludgelessly. Documented in Designer’s Handbook - Compile to bin file has an option for padding or not padding the file with zero’s for program code that starts at addresses > 0. - A Intel HEX file is now always generated for all compiles. - Use HTTP_MAXNAME in "HttpType" structure instead of hardcoded constant 20 for field "type[]". This allows MIME types of longer than 19 chars in the HttpType structure. Developer can override HTTP_MAXNAME in their source file. - sock_puts now has error code (-1). It can be generated if it is called with a UDP socket. - sock_gets now has error code (-1). It can be generated if it is called with a UDP socket. - Made readUserBlock, writeUserBlock functions backward compatible with older or no system ID block. Additional Documentation - All new/improved TCP/IP functionality has been documented in the Dynamic C TCP/IP User’s Manual. - An appendix of useful compiler and library defined macros has been added to the Dynamic C User’s Manual. - PCB Layout and EMI information was added to the Hardware Design chapter of the Designer’s Handbook. - Wait State Bug information was added as an appendix to the Designer’s Handbook. ***************************************************************** VERSION 7.04SE4 New Features - Dynamic C now supports the RCM2300 series including new samples and documentation. ***************************************************************** VERSION 7.04P3 New Features - Dynamic C Premier now supports the BL200 series as well as Smart Star D/A boards. - Added packet drivers. These drivers allow for packet based serial communication using a variety of packet separation modes. Bug Fixes - Defect #387 fixed. The packet driver for RCM2100 did not use shadow registers properly. - Defect #396 fixed. Time-outs in RS232.LIB did not handle MS_TIMER rollover correctly. ***************************************************************** VERSION 7.04T2 New Features - Samples, libraries, and documentation for new RCM2200 core module added. - Slave port support functions added. - A "user block" has been added to the flash device along with the ID block for protected storage of calibration constants, IP addresses, etc. To support large-sectored flash, these two protected blocks take up 16KB at the top of flash. If more code space is needed, the user block can be removed from boards that are not currently using it; contact Tech Support for more information. - New library tftp.lib provides a TFTP client - Improved DHCP support (including reacquiring leases and file transfer support) - New library zconsole.lib implements a customizable serial console with or without TCP/IP functionality such as a web server and mail client - New libraries for using the Rabbit slave port: slave_port.lib master_serial.lib, and sp_stream.lib - New function smtp_sendmailxmem() in SMTP.LIB. It works much like smtp_sendmail(), except that it gets the body of the message from an xmem buffer. - TCP Keepalives are now available. See the function tcp_keepalive() to turn on keepalives on a per-socket basis. Bug Fixes - Defect #254 fixed. spkrOut() was not included in ctrl-H function lookup. - Defect #257 fixed. The flash transfer buffer will now be located at the top of available RAM instead of in the middle. - Defect #258 fixed. The MAC address for the second interface on the EG2000 is now handled correctly. - Defect #259 fixed. The spkrOut() function now disables the timer B interrupt when volume is set to zero. - Defect #274 fixed. The runtime error list has been cleaned up. - Defect #275 fixed. PPP driver no longer requires compression options - Defect #281 fixed. Potential buffer overflow in DNS lookups has been corrected. - Defect #296 fixed. PPPsetAuthenticator() now has correct description - Defect #298 fixed. Some packets were being unnecessarily broadcast when the destination combined with the netmask was FFFFFFFF. - Defect #302 fixed. Function description blocks in modem.lib have correct library name - Defect #315 fixed. A potential race condition in the Realtek initialization on TCP/IP Development Kits was removed. - Defect #316 fixed. Added ModemSetDTR() call and port pin idle high to ModemInit() for more standardized modem initialization. - Defect #318 fixed. sock_recv_from() now returns the IP address and port number in host byte order instead of network byte order. Note that this does affect code that depends on the old behavior. - Defect #327 fixed. Cloning now works for CPU clock frequencies > 19MHz. - Defect #328 fixed. 512kb flash device support was fixed. - Defect #336 fixed. TCP/IP stack sent unnecessary ACKS when a connection was actively opened, but no data has been sent. - Defect #343 fixed. Auto variables are no longer corrupted when certain transcendental functions are called from useix functions. - Defect #344 fixed. Serial port A now sets parallel port C pin correctly. - Defect #350 fixed. Error reading ID on some Atmel flash fixed. - Defect #352 fixed. xmem2root and root2xmem were not reentrant. This caused problems using HTTP with MuC/OS. - Defect #354 fixed. RES and SET forced to root - Defect #362 fixed. tcp_reserveport() would only work the first time it was called. - Defect #363 fixed. FFT problems with powerspectrum and fft_hann when 256 or 512 data points used fixed. - Defect #365 fixed. RabbitLink wouldn’t restore the modified TCP port on bootup. - Defect #375 fixed. All valid shadow registers are now initialized by the BIOS. - Defect #383 fixed. TargetlessComp GUI boards list now contains all Rabbit boards. New board will be added upon compiler upgrade, while retaining any previously configured boards. - Defect #416 fixed. The header for chkHardReset() has been corrected. Other Functional Changes - The GOCR register is now initialized to A0h. This makes the CLK pin low, before it was driven by the crystal. This actually changed in 7.02, but was omitted in the release note. - Cloning is set to NOT clone the whole flash by default now, just the user program and BIOS. - DNS lookup behavior with default domains has changed slightly. If the name to be looked up contains a ’.’, then it is looked up directly first; if that fails, it is looked up with the default domain appended. If the name to be looked up does not contain a ’.’, then it is looked up with the default domain appended first; if that fails, it is looked up directly. Additional Documentation - Runtime error chapter in Dynamic C manual has been updated and expanded. ***************************************************************** VERSION 7.04P New features - New library for AES(Rijndael) encryption - New RCM2100 specific samples have been added along with Realtek and IP driver modifications for full RCM2100 support. - Added the WriteFlash2() function, which will write a buffer to the second flash devices on boards with two flash installed (this function is NOT compatible with the flash file system). - New sample to display memory usage. - The allocation of memory quadrants was rearranged when compiling to flash: quadrant 0 (0x00000-0x3FFFF) is the primary flash quadrant 1 (0x40000-0x7FFFF) is the second flash (if installed) quadrant 2 (0x80000-0xBFFFF) is RAM quadrant 3 (0xC0000-0xFFFFF) is RAM Previous releases of Dynamic C would swap quadrant 3 between RAM and the second flash to write to the second flash. Bug Fixes - Defect #256 fixed. The TBCSR and TBCR registers are now cleared in the BIOS, preventing odd behavior with some programs that used the timer B interrupt. - Defect #278 fixed. Dynamic C correctly reports errors concerning running out of xmem code space. - Defect #280 fixed. Dynamic C crashes when the same function names is used in a function description block in three or more libraries. - Defect #283 fixed. Cloning was broken in Dynamic C versions 7.02 and 7.03. - Defect #288 fixed. ModemSetDTR() was incorrect in modem.lib - Defect #289 fixed. RabbitLink no longer loses serial console communication with the target in normal run mode. - Defect #290 fixed. GUI for defining targetless compile data will now accept international floating point separators and will automatically convert any existing registry targetless compile data to use the current symbol. - Defect #293 fixed. Dynamic C lost communication with the BIOS on boards running low-frequency crystals (e.g. 3MHz). - Defect #307 fixed. Delays in cofunctions were not working. - Defect #309 fixed. Flash file system could cause inadvertent writes to Rabbit 2000 registers. - Defect #330 fixed. fshift() could corrupt lookup tables - Defect #346 fixed. Conversion programming in fs_block_init in fs_flash.lib no longer causes a boundary check to fail. Other Functional Changes - Changes to BIOS, flash drivers to make use of 512K RAM seamless Documentation Changes - RCM2100 manual added ***************************************************************** VERSION 7.03P New features - The library zserver.lib now provides support for variables located in xmem. sspec_addxmemvar() adds an xmem variable, and the macro SSPEC_XMEMVARLEN defines the size of the stack-allocated buffer that is used in sspec_readvariable() for xmem variables. SSPEC_XMEMVARLEN is 20 by default. - New function sspec_getvarkind() in zserver.lib returns the kind of variable represented (i.e., INT8, INT16, INT32, FLOAT32, or PTR16). - New function sspec_getvartype() in zserver.lib returns the type of variable (i.e., SSPEC_XMEMVAR or SSPEC_ROOTVAR) - Flash filesystem features: shifting out contents from the beginning of a file using fshift(), reserving blocks that will remain available for privileged files. Bug Fixes - Defect #248 fixed. Mail sent through the SMTP client was not readable by some mail readers. - Defect #265 fixed. sock_bytesready() sometimes failed with ASCII TCP sockets. - Defect #267 fixed. block checksums were being incorrectly modified Other Functional Changes Documentation Changes ***************************************************************** VERSION 7.02P3 Bug Fixes - Defect #261 fixed. WriteFlash() would write the data requested but trash the rest of the flash sector. ***************************************************************** VERSION 7.02P New features - Libraries for dial-up PPP connections - Dynamic C can now be used to program and debug over Ethernet and Internet. - The Rabbit Field Utility can now load over Ethernet/Internet. - Programs can now be compiled to a .bin file without an attached target. - Calls to xmem functions no longer use a root proxy (i.e., "root bouncer"), but use the lcall instruction. This improves code size and speed. - Protected and shared variables are now supported. - More descriptive error messages can be displayed by pressing F1 when the message window is active. - A good map file is now generated for compiled programs. - The #class directive can be used to change the default storage class to auto/static. In DC, the default is normally static. - Users can now define their own runtime error handler instead of the default function using the defineErrorHandler() function. - ’Sleepy mode’ is better supported: periodic interrupts are disabled when the CPU is switched to the 32kHz oscillator and re enabled when switching back to the main oscillator. In addition, a new function, updateTimers(), can be called while in sleepy mode to update TICK_TIMER, MS_TIMER, and SEC_TIMER which normally depend on the periodic interrupt. - New functions strcmpi() and strncmpi() perform case- insensitive string compares - New function Disable_HW_WDT() disables the hardware watchdog timer. - Watch expression text control is now a combobox - A Tip of the Day dialog will come up if its ’Show on startup’ checkbox is checked, or when the tip menu item in Help is clicked. - New TCP/IP function, sock_bytesready(), provides functionality similar to sock_dataready(), except that it is more useful for ASCII mode sockets. To save memory, sock_dataready() should no longer be used, although it is provided for backward compatibility. Note that sock_bytesready() returns -1 for an empty socket, whereas sock_dataready() returns 0 for an empty socket. - Compiler option for creating a .bin file with or without including the bios. - New Watch Code radio buttons in Options/Compiler menu dialog box to enable any watch expressions or to restrict expressions to save space. - New library zserver.lib (automatically included for the web and FTP servers) provides the basis for server object handling. It handles files (in both root and extended memory), variables, functions, forms, and users. Files and users may now be directly shared between the web and FTP servers. Server- specific notes follow: * HTTP Server http_flashspec may still be used for the web server. Define HTTP_NO_FLASHSPEC if you do not wish to use the http_flashspec structure. * FTP Server The FTP server must use the new zserver.lib functionality. The FTP handler interface has changed. One more function to handle directory listings has been added, and an offset parameter has been added to the read and write functions. See the TCP/IP High Level Protocols manual for more\ information. - The web server can now automatically generate and parse forms, which makes it much easier to modify variables through a web browser. See the sample program form1.c and the TCP/IP High Level Protocols manual for more information. - Added a new function paddr which converts a logical address into a physical address. - Added smtp_setserver() to smtp.lib, which allows setting the SMTP server at runtime. - bios/ramonlybios.c and bios/ramonlycoldload provided for custom boards having no flash with RAM connected to CS0/OE0/WE0 - A macro CS1_ALWAYS_ON was added to allow the BIOS to easily be changed to keep CS1 always active - Added support for 12 new flash devices. - A library for performing MD5 hashes, MD5.LIB, including a demo program, MD5_TEST.C Bug Fixes - Defect #3 fixed. Line highlighting when stepping through code is accurate. - Defect #12 fixed. Breakpoints can be set for jump and call expressions. - Defect #26 fixed. Costatements now work correctly in (non-indexed) cofunctions. - Defect #39 fixed. Compiling programs with #nodebug will cause the debugger to malfunction until DC is restarted. - Defect #40 fixed. External declarations can be used with xdata. - Defect #45 fixed. strtol tailptr problem corrected. - Defect #53 fixed. Expressions to sizeof operator do not generate code unless they have a side effect (i.e., contain ++, --, or an assigment operator). This feature is not portable, since no sizeof expressions are evaluated in ANSI C. - Defect #74 fixed. Fixes bug with runwatch for auto variables. - Defect #82 fixed. A warning is now issued if a library (.lib) or a source (.c) file line length exceeds maximum allowed (512). - Defect #85 fixed. Lcalls can be made with two arguments: the first being a constant, interpreted as the xpc, followed by either a label or a constant, interpreted as the logical address. Lcalls can also be made with a label as the only argument. - Defect #87 fixed. Dynamic C no longer crashes when attempting to compile to a write protected directory, but issues an error message instead. - Defect #107 fixed. Fixed a GPF that can occur if Dynamic C is opened on a com port that is already in use. - Defect #112 fixed. In HTTP.LIB, file lengths are now represented by long integers to allow images and SSI-included files > 32kb. - Defect #113 fixed. - Defect #114 fixed. Not a bug. Warning should not be generated as arithmetic character expressions are promoted to integer. Improved typechecking for constant data initializers. Shown program should not compile. - Defect #115 fixed. Fixed constant initializers to match ISO/ANSI specification. Only constant literals or static storage addresses should be allowed in initializer expressions. Some complex expressions with addresses are unsupported. - Defect #117 fixed. Oversized single and multi-dimensional root data arrays compiled due to 16-bit overflow. Root data arrays now limited to a total of 32,767 elements. - Defect #119 fixed. Com port used by Dynamic C is correctly initialized. - Defect #120 fixed. Function prolog/epilogs are generated inline if compiling optimized for speed, and are only used when optimizing for size if the function includes debug information, or if the function is nodebug and uses auto variables. - Defect #123 fixed. Programs with certain compile time errors caused the compiler to enter an endless loop. - Defect #124 fixed. Bug limits nesting of #if and #ifdef’s to 3 or 4 levels. New limit is 2048. - Defect #126 fixed. printf problems with max neg int & long corrected. - Defect #130 fixed. Landscape printing is corrected. - Defect #131 fixed. Using long symbol names in certain circumstances caused a general protection fault. - Defect #135 fixed. HTTP header field names and SSI commands are now parsed in a case-insensitive manner - Defect #138 fixed. Programs with unclosed comments now generate an error during compilation. - Defect #142 fixed. RS-485 and D/A channel 1 are now compatible on newer Jackrabbits. - Defect #144 fixed. Errors reporting undefined global symbols reoprt the line number on which the symbol is first used. - Defect #146 fixed. Board specific libraries not #used in default.h if compiling BIOS now. - Defect #147 fixed. Duplicate case statements will produce an error. - Defect #154 fixed. Fixed short circuit evaluation logical expressions with a constant first operand. - Defect #156 fixed. Now pathnames starting with \\ such as \\zintranet\sweng\.. can be used. - Defect #157 fixed - MSB is masked out when receiving 7bit serial data. - Defect #163 fixed. Dynamic C can now be installed to directories nested to many levels, and can run programs with long path names. - Defect #165 fixed. pktdrv.lib will mark buffers while it is using them. This will prevent future problems with multiple net drivers sharing TCP/IP buffers. - Defect #172 fixed. Keyword checking on identifiers has been implemented. - Defect #174 fixed. Improved documentation of serial receive functions. - Defect #176 fixed. More checking is done on initializer lists. - Defect #180 fixed. Added to documentation for serXread() - Defect #184 fixed. pow(-x,y) would return a runtime error even if y was an integer. - Defect #185 fixed. Cofunction write routines in RS232.lib now do a write unlock in the abandon clause. - Defect #187 fixed. Syntax error with unions caused general protection fault. - Defect #192 fixed. pd_resetinterface()--usually called from sock_init()--no longer locks up on custom boards. - Defect #193 fixed. Corrected field width problems with sprintf, with f, e format chars. - Defect #195 fixed. Scrolling the dump window could cause abnormal program termination if programming cable is disconnected. - Defect #196 fixed. Disassembling could cause abnormal program termination if programming cable is disconnected. - Defect #197 fixed. sock_read(), sock_fastread(), sock_write(), sock_fastwrite() now return -1 when a UDP socket is halted because of a ICMP Port Unreachable message. - Defect #198 fixed. Bug with post inc/dec with type char. - Defect #199 fixed. RS232.LIB function descriptions now documented as being non-reentrant. - Defect #200 fixed. RS232.LIB functions separated into different headers to reduce code size. - Defect #201 fixed. Floating point operators >, <, <=, and >= called the wrong comparison function when the compiler reorders the operands. - Defect #202 fixed. the xstring label points to the memory location after the table, which holds the address of the first table entry. - Defect #204 fixed. The invalid instruction ld r, (hl+d) now produces an error. - Defect #205 fixed. Interference between #ximport and comments. - Defect #208 fixed. The assembler would not allow long jumps to forward references. - Defect #209 fixed. All serial interrupts are explicitly disabled during BIOS startup. This should eliminate target communication errors. - Defect #211 fixed. Register collision not detected when mixing long and int/char types in some expressions using the mod operator ’%’. - Defect #213 fixed. A potential problem with reading and writing Ethernet packets whose length is 14 bytes more than an even 256 byte multiple. - Defect #214 fixed. A missing #endif could cause the compiler to hang. - Defect #215 fixed. A bug in the flash driver could prevent flash writes under special conditions. - Defect #219 fixed. 2 error/warning messages were opening up under certain circumstances. - Defect #222 fixed. POP3.LIB would not receive some messages if they had no message-body. - Defect #223 fixed. ucos2.lib was not deallocating a task’s stack when the task was deleted. - Defect #224 fixed. Code alignment problem that incorrectly generated a "Out of root code space" error. - Defect #225 fixed. #ximport defined macro symbol as int instead of long. - Defect #227 fixed. Default CTS/RTS macro values work properly - Defect #228 fixed. Fixed a problem with extremely high (attack level) traffic handling in the RealTek packet driver. - Defect #233 fixed. DNS lookups no longer overflow 512-byte stacks in uC/OS-II. - Defect #234 fixed. When running in RAM, bug caused xalloc failure to go undetected and would cause the program to crash. - Defect #235 fixed. The PUSH flag is now set for all TCP packets that contain data. - Defect #240 fixed. #ximport works correctly in header sections now. - Defect #241 fixed. An If-Modified-Since header caused the HTTP server to close the connection. Other Functional Changes - The error window now displays a maximum of 10 errors, 10 serious warnings, and 10 trivial warnings. Checks for warnings and errors are separate so that when one category is filled, messages from the other category can still be reported. - The coldloader can now be up to 0x4000 bytes in length. - Any IO (ioe, ioi) instruction that immediately precedes certain 1 byte instructions using hl to access memory are now followed by a nop to fix hardware bug with these instructions. - sock_fastwrite() now refuses to send a UDP datagram that would need to be fragmented, instead of only sending out the first fragment - Target communication errors are now more informative, stating the high level activity being executed when the error occurred as well as the read/write address if applicable. - Default MTU size for IP packets is set to 600. This allows for smaller packet buffers - DCRTCP supports SYN queing, where new connections can be accepted and maintained before an available socket is made ready. - Floating point code moved to xmem to save root code space. - Pointer checking code was moved to xmem and BIOS, start-up, and program code now immediately follow each other to conserve root memory space. - Pointer checking initialization is now done at compile time. Turning runtime pointer checking off will reduce the amount of root code space used by 256 bytes. - The semantics of the keywords "xmem" and "root" apply to function prototypes. - New limits.h file (that is automatically included) defines constants representing the limits of representable values for C variable types (such as INT_MAX and INT_MIN) - The flash buffer has been moved from root memory to XMEM, freeing up 1024 bytes of root memory for user programs and variables. - Ctrl-S shortcut key for save file added. Documentation Changes - DC User’s Manual * Chap 2 Removed list of improvements over old Z180 version. Noted that DC can be used to program and debug over the Internet. * Chap 4 Replaced graphic of primitive data types with limits.h values. * Chap 4,11 class keyword added * Chap 4 Removed tables showing recommended prog. form; replaced with more readable text. * Chap 4 Improved descriptions of Modules and function pointers. * Chap 5 Added loophead(), loopinit() descriptions. Noted that costatements are not used with indexed cofunctions. * Chap 8 Added run-time errors to table: 250 and 251 * Chap 10 New chapter on the flash file system * Chap 12 keyword descriptions updated for: const, class, xmem, xdata, xstring, memmap, while. * Chap 14 Added new function descriptions: defineErrorHandler,forceSoftReset, fsck, read_rtc_32kHz, paddr, flashfile functions, removed Alloc_Stack Corrected various function descriptions. * Chap 15 Noted that multiple instances of DC can run simultaneously. Updated Compiler Menu, described new options. Updated Compiler and Communications Options dialog boxes. Updated Print description. -Designer’s Handbook * Added appendix about baud rates * Updated information on flash driver * Updated table of supported flash memories -TCP/IP High-Level Protocols * Added chapter on the Server Utility Library * Added chapter on Remotely Modifiable Variables * Added chapter on console.c * Added 2 appendices on HTML forms * Updated function descriptions, added sspec_setformepilog and sspec_setformprolog -TCP/IP Function Reference * Added new flash file system functions * Added low-level flash memory access functions * Updated various other functions -IP Drivers Manual * Created new manual for IP drivers; currently contains PPP driver. ***************************************************************** VERSION 6.57P2 / 6.57T2 Bug Fixes -Added reference to LIB.DIR for POP3.LIB ***************************************************************** VERSION 6.57P1 / 6.57T1 Bug Fixes -Defect #192 fixed. pd_resetinterface()--usually called from sock_init()--no longer locks up on custom boards. ***************************************************************** VERSION 6.57 New features -TCP/IP socket buffers are now in extended memory, thus freeing up some root memory and allowing more sockets to be used. This change required several other changes: * Use the macro MAX_SOCKETS to define the number of sockets that will be allocated (not including the socket for DNS lookups). Code that uses more than 4 sockets will not work without using the MAX_SOCKETS macro. * Use the macro SOCK_BUF_SIZE to determine the size of the socket buffers--note that a TCP socket will have two buffers of size (SOCK_BUF_SIZE / 2) for send and receive, and a UDP socket will have a single socket of size SOCK_BUF_SIZE. * Define the macro DISABLE_DNS to disable DNS lookups. This prevents a UDP socket for DNS from being allocated, thus saving some memory. * tcp_MaxBufSize should no longer be used, although backwards compatibility is preserved. * Auto sockets (sockets allocated on the stack) should not be used. When auto sockets are deallocated (go out of scope), their buffer area will not be freed for future auto sockets to use. -TCP/IP stack is reentrant, and can be used with uC/OS -New function xmem2xmem() added -New cloning option, CLONEWHOLEFLASH, allows user to clone entire flash device or just the program code. -Flow control and parity control added to serial library Bug Fixes -Defect #140 fixed. Calling tcp_config("HOSTNAME", ...) after sethostname() now works correctly. -Defect #150 fixed. Broadcast addresses of the form X.Y.Z.255 work correctly. -Defect #167 fixed. Bug caused the compiler to incorrectly evaluate some #if expressions. This problem only occured after a previous compile error occurred. -Defect #170 fixed. Cloning was not copying the top 32kb of flash. -Defect #178 fixed. TCP sockets took 10 seconds to close when the remote side initiated the close. -Any IO (ioe, ioi) instruction that immediately precedes certain 1 byte instructions using hl to access memory are now followed by a nop to fix hardware bug with these instructions. -Defect #181 fixed. Jackrabbit D/A channel 1 was always disabled. -Defect #186 fixed. Jackrabbit D/A channels would occasionally produce inverted voltages, i.e. a high voltage when a low voltage was requested and vice-versa. -Defect #188 fixed. Corrected update of PDDRShadow in Jr485Init(). Documentation Changes -TCP/IP An Introduction rev. D * tcp/ip and µC/OS-II compatibility documented * tcp_MaxBufSize deprecated -TCP/IP Function Reference rev. B * MAX_SOCKETS, SOCK_BUF_SIZE and DISABLE_DNS documented * Packet Driver functions deleted from category section * tcp_config documented * _arp_resolve documented -TCP/IP High-level Protocols rev C * FTP_MODE_UPLOAD and FTP_MODE_DOWNLOAD documented * Chapter on POP3 added -Dynamic C Users Manual rev. I * xmem2xmem documented * Help Menu screen updated * Error messages documented in run-time error msg. table * tcp/ip and µC/OS-II compatibility documented * write_rtc and tm_wr function descriptions updated * Delay function descriptions updated * serXread tmout parameter clarified -Dynamic C Users Manual rev. J * Multitasking chapter overhauled * Dump at Address dialog box updated * serXparity description expanded -Rabbit 2000 Designers Handbook rev. E * Cloning chapter updated ***************************************************************** VERSION 6.56 Upgrade Core Module Dev Kits from 6.52 New features -New function Disable_HW_WDT added Bug Fixes -Defect #154 fixed. Fixed short circuit evaluation logical expressions with a constant first operand. -Defect #131 fixed. Using long symbol names in certain circumstances caused a general protection fault. -Defect #162 fixed. strncmp() and strncmpi() no longer compare beyond a null terminator. Documentation Changes -The Dynamic C User’s Manual revised to Rev H. The Function Reference now includes a functional grouping listing. -Description of Disable_HW_WDT added. -Descriptions of new serial flow control and parity functions added -The Rabbit 2000 Designers Handbook is revised to Rev D. Improvements were made to the Cloning chapter. ***************************************************************** VERSION 6.55 Upgrade JackRabbit Dev Kits from 6.52 New features -New functions strcmpi() and strncmpi() perform case- insensitive string compares Bug Fixes -Defect #135 fixed. HTTP header field names and SSI commands are now parsed in a case-insensitive manner -Defect #141 fixed. Clearing TACR bit for timer A1 usage, allowing reopening at a high baud after opening at a low baud that required the bit to be set. -Defect #142 fixed. RS-485 and D/A channel 1 are now compatible on newer Jackrabbits. -Defect #146 fixed. Board specific libraries not #used in default.h if compiling BIOS now. -Defect #152 fixed. Board now correctly reads in ID block while running in RAM. ***************************************************************** VERSION 6.54 Dynamic C Premier initial release -No compiler or GUI changes. All libraries and sample programs for all Rabbit based products released. -First release to include uC/OS-II. Jean Labrosse’s real time kernel is now available royalty free for Dynamic C for Rabbit users. Bug Fixes -Defect #129 fixed. Some #use lines in default.h were incorrectly commented out in 6.52. This caused compiler errors in some JackRabbit and LCST sample programs. Documentation Changes -The Dynamic C User’s Manual Revved to Rev F. A new chapter 6 on the virtual driver was inserted. ***************************************************************** VERSION 6.53 New Features -uC/OS-II Library and samples programs added. (Premier version only) -The Rabbit Field Utility, RFU.EXE has been added. This program is for loading BIN files created by Dynamic C to a Rabbit target without using Dynamic C. -Highlighted text in assembly window now continuously updates sum of cycle times as the mouse is moved. Bug Fixes -Defect #48 fixed. GPF occurred if initial BIOS compile was interrupted. -Defect #77 fixed. Added function to update TICK_TIMER, MS_TIMER, and SEC_TIMER while running off 32kHz oscillator. -Defect #78 fixed. The About Box can no longer have multiple instances. -Defect #90 fixed. Lib.dir can now contain CR/LFs on the last line. -Defect #91 fixed. Unnecessary write to GOCR eliminated. -Defect #92 fixed. The user BIOS file selection dialog box is now modal. -Defect #95 fixed. Bug introduced while fixing defect #64 would disable Jackrabbit high-power outputs 0 and 1. -Defect #104 fixed. Slice statement debugging works correctly. -Defect #106 fixed. ISR’s using ’interrupt’ keyword were not being forced to root. -Defect #108 fixed. ftoa was giving compiler errors due to missing headers. -Defect #110 fixed. Shadow registers SxCRShadow are now being used in RS232.LIB serXopen and serXclose functions. -Defect #111 fixed. Fixed a problem with rx buffers on RealTek getting corrupted. Optimized overflow handling in the ethernet packet driver. -Defect #121 fixed. BIOS no longer assumes cloning mode if PB1/CLKA pulled low unless cloning is enabled. -Defect #122 fixed. IB0CRShadow is now correct. Other Functional Changes -Updated PDDRShadow in Jr485Init(). ***************************************************************** VERSION 6.52 Bug Fixes -Defect #88 fixed. Some relational expressions were generating bad code. -Defect #89 fixed. Missing SPxCR shadow registers added. -Defect #96 fixed. Closing Dynamic C while the app. was minimized, then opening it, could cause bad registry entries for the main window coordinates. -Defect #97 fixed. Rearranged ports D and E register initialization in BIOS to avoid occasional problems when program is recompiled. -Defect #98 fixed. SMTP.LIB (TCP/IP) now resets the timeout value correctly when activity happens. -Defect #101 fixed Recovered 8k of free space from top of RAM by moving up data segment to top. -Defect #103 fixed. used correct TACR mask for serial ports A, B and D when low baud requires timer A. -Defect #125 fixed. DNS cache lookups work consistently. Other Functional Changes -Data segment moved up in RAM to free more space for xalloc. -Core Module samples added. Document Changes -Major overhaul to Rabbit Designer’s Manual ***************************************************************** VERSION 6.51 Bug Fixes -Defect #80 fixed. Post decrement of integers in logical expressions handled correctly now. Document Changes -#ximport description added ***************************************************************** VERSION 6.50 (Release 3) New Features - TCP/IP (Available with the TCP/IP dev. kit and Premier versions of Dynamic C). TCP/IP stack with support for the RealTek NE2000 Ethernet chipset. Library support for: * Socket level TCP and UDP programming. * HTTP (web server ) with server side includes (SSI) and a CGI interface. * SMTP client (mail) * FTP client and server * TFTP * TELNET * PING Added to DC user’s manual as chap. 13. -Fast Fourier Transform functions added: fftcplxinv, fftcplx, fftreal, fftrealinv, hanncplx, hannreal, powerspectrum Documented in DC user’s manual. -A new flash driver has been added to the BIOS. This driver recognizes a variety of small-sector flash devices and manufacturers. In addition, an "ID block" on the flash device containing useful information about the product is now supported. A new macro, _BOARD_TYPE_, is internally defined by Dynamic C using the a field of the system ID block. -Support for "cloning" (copying the contents of one board’s flash device to another board via a special cable) has been added to the BIOS. See the designers’ manual for more details. -Dynamic C now determines the sizes of the RAM and Flash automatically so that manual changes to BIOS code are no longer necessary for different memory sizes. The determination is done during the boot- strap stage and is based on the hardware present. -"No debug compile" compiles all code as "nodebug" to flash memory on target. To run the program after compiling with this command, disconnect the target from the programming port and toggle the reset line. Documented in DC user’s manual in chap. 12. -"Compile to .bin file" compiles the program to a file with the .bin extension. The .bin file may then be used with a flash burner to program similar flash devices. Documented in DC user’s manual in chap.12. -Selecting RAM or FLASH located in the "Default BIOS Memory Setting" box in the "Compiler" options window now defines the macros _RAM_ or _FLASH_, respectively. Using these macros, a single, user defined BIOS file can be developed for both types of memory. Documented in DC user’s manual in chap. 12. -The Help menu has new commands, "Operators" and "Keywords" which open the HTML index pages for the descriptions of those items. -Stack Allocation Functions added; documented in DC user’s manual. ___________________________________________________ Other Functional Changes -Constant data may be created in extended memory through the constructs xdata and xstring. -Supports extended memory (xmem) allocation through function Xalloc. -Supports allocation of multiple stack sizes through function Stack_Alloc. -Sample program SEEPARAM.C added. -RAM and flash BIOS files were merged. -Serial open functions now automatically modify timer A1 and use timer A1 when the baudrate specified is low enough to require a timer A1 modification. -The two BIOS source files, JRABBIOS.C and JRAMBIOS.C have been replaced by one file, RABBITBIOS.C -PILOT.BPF was renamed to PILOT.BIN -JRABBIOS.RTI was renamed to RABBIOS.RTI -The cycle time total in the assembly window is now updated continuously, not just when the mouse button is released. -sprintf, printf and several other functions were made reentrant. The uC/OS-II documentation specifies which library functions are not reentrant. -A new macro CLOCK_DOUBLER in the BIOS was added. If this macro is set to 1 (default) then clock speed is doubled by the BIOS code if the crystal frequency is <= 12.9 MHz. Bug Fixes -Defect #17 fixed. Illegal use of type void is now caught by the compiler. -Defect #20 fixed. Adding a char to char value returned from a function works now. Compiler now promotes character math to integers to fix the bug and to more closely match ISO/ANSI C. -Fixes bug with expression "*(p++)" where p is a pointer. -Defect #22 fixed. Crashes were happening when too large a string was created with concatenation using continuations. -Defect #27 fixed. Log functions now cause run-time error if given zero for an argument instead of returning a garbage value. -Defect #28 fixed. pow(-0,1) returns zero instead of causing a run-time error. -Defect #29 fixed. Serial port ISRs no longer write incorrectly to status registers. -Defect #30 fixed. Comments corrected for serial sample programs. -Defect #31 fixed. The main application window now retains its position, size and maximization state between runs. -Defect #32 fixed. setvect and getvect documentation removed from manual. -Defect #35 fixed. Changing the user defined BIOS now takes effect immediately. -Defect #36 fixed. Virtual watchdog timers can be allocated and deallocated more than 10 times. -Defect #37 fixed. Access to the first array element of char pointer in an array of structures generates correct code now. -Defect #38 fixed. DC now compiles files using UNIX style newlines. -Defect #41 fixed. Problem with bitwise operators ’&’,’|’, and ’^’ with char operands. -Defect #42 fixed. Problem indexing arrays with auto variable as index corrected. -Defect #43 fixed. Error with subtraction of constants in pointer arithmetic corrected. -Defect #44 fixed. Last line of library files was not compiled if a newline was not present. -Defect #46 fixed. Specifying string length with a variable argument in printf, sprintf now works. -Defect #47 fixed. Problem with incrementing/dereferencing a pointer corrected. -Defect #51 fixed. Xmem defect no longer crashes. -Defect #52 fixed. Casting addresses of integers to integers now longer causes incorrect dereference. -Defect #54 fixed. Using a variable for the precision specifier in sprintf, printf floating point output now works. -Defect #55 fixed. Returning a long value from a cofunction to an auto variable was generating an internal error. -Defect #56 workaround. A hardware bug that affected external interrupts has been circumvented via a new function, SetVectExtern2000(). Sample program Samples\Intrupts\Int0demo.c has been modified to reflect use the workaround. A new function GetVectExtern2000() has been created also. -Defect #57 fixed. DC now correctly dereferences and casts pointers from unsigned longs to unsigned integers. -Defect #61 fixed. For find, find/replace, disassemble at address, and dump at address dialogs, current search string is properly added to list of previous search strings. -Defect #62 fixed. Clock counts in the Assembly window correctly now. -Defect #63 fixed. Assembler generated bad code for adc hl’, hl and rl hl’. The latter now generates a compiler error. -Defect #64 Fixed. jrioInit now properly sets port E pins for A/D. -Defect #66 Fixed. Bug that prevented use of 29MHz crystals. -Defect #67 Fixed. Problem choosing between jump relative and jump conditional with nodebug for loops. -Defect #68 Fixed. Bug with compiling C statements embedded in assembly code across the xmem page boundary. -Defect #69 Fixed. Bug in compiler that prevented code generation above 512k. -Defect #70 Fixed. Compile information reported in prog_param structure and information window now correct. -Defect #71 Fixed. Placed the inline function bit/BIT into root memory. -Defect #72 Fixed. Support is now given for serial baudrates requested in serXopen(baudrate) for which a divisor greater the maximum allowable 255 would be required, by prescaling with Timer A1. -Defect #73 Fixed. Cofunctions with abandonment code were not properly restoring the xpc. -Defect #75 Fixed. periodic_init was not using the GCSR shadow register. Now does. -Defect #76 Fixed. Compiler allowed slice statements to access variables with local extent instead of causing a compile-time error. -Defect #79 Fixed. Allow timer to decrement to zero after setting for baud rate divisor. Other changes in the DC user’s manual -Chapter 9: addition of keywords, xdata and xstring -References to RS232.lib were changed to SERIAL.lib -Chapter 11: setvect and getvect deleted. SetVectIntern, SetVectIntern2000 GetVectIntern, GetVectIntern2000 were added. ***************************************************************** VERSION 6.19 New Features -Compiler now recognizes 32 significant characters in identifier names. Bug Fixes -Defect #56 workaround. The hardware bug that affected external interrupts has been circumvented via a new function, SetVectExtern2000(). -A new function GetVectExtern2000() has been created also. -Defect #34 fixed. Serial open functions no longer dependent on value stored in battery backed RAM. -Defect #59 fixed. Integer division by constants equal to powers of 2 + 1 now works correctly. -Target reset/BIOS compile is now suppressed when the warning report options are changed. -Defect #60 fixed. Fixed problem with printing on some operating system/printer combinations. ***************************************************************** VERSION 6.18 Bug Fixes - Fixed bug with inline function bit/BIT. - Added prototypes to util.lib so that inline functions bit, set, res, ipset, and ipres compile. - Fixed parsing bug with ipres. - Defect #33 fixed. Fixed communication error messages "CE_FRAME" and "CE_BREAK" that were happening on some PCs. - Fixed bug where BIOS compiles when Warning Report options change. ***************************************************************** VERSION 6.17 New Features The processor instruction cycle times are now displayed in a column to the right of each opcode in the Assembly window. Selecting text in the Assembly window replaces the cycle time in the lowest selected row with the total of the cycle times in the selection when the left mouse button is released. On the next mouse click, the original cycle time is restored. There are some instructions whose time cycle times depend on whether a branch is taken or the count stored in BC. These are not totaled and an asterisk will appear next to the total time if they are selected. Cycle times assume 0 wait states. The online documentation can be accessed from a new Help Menu command. The default URL can be changed in the Registry entry: Software/ZWorld/DCW/Rabbit/6.17/Dynamic C Personality/DEFAULTURL The Dump feature now has an option to dump the flash image to a binary file. ______________________________________________________ Other Functional Changes - Floating point math including transcendental functions has been speeded up considerably. - The BIOS and programs are now compiled from file unless the corresponding edit window is dirty. - Function chains now work between the precompile section (after the pragma in the bios) and the user program compile. - The #precompile can be used after the pragma to precompile library functions. - The compiler options now support a persistent user selected BIOS file. - Code generated for relational operators (signed/unsigned integers), post-increment, and "nodebug" loops is faster. - Compiler now uses sp relative load/store and jump relative instructions for faster/smaller code. - Integer assignment to zero is faster. - Dynamic C now takes a command line option (-c ) to append a string to the version number registry sub key. This change allows multiple installations of the same version. - Added missing Interval Tick function - Added some sample programs - Dump window now accepts segmented root address, bb:aaaa. - Printing of selected text, specified page ranges, and user control of print margin settings are now implemented. - Serial port options extended to include COM7: & COM8: - "Assembly code compiled to xmem" warning disabled Bug Fixes - useix was being ignored, this is fixed - Issuing a compile while a program is running shows the correct program name in the dialog. - Xmem boundary checking is improved. - Added necessary library support for the interrupt keyword - Fixed bugs in anaIn function that could cause port A to change values. - Fixed bug with pointer and character type addition. - Slice statement tick now matches TICK_TIMER. - Fixed a problem with slice statement yield and waitfor. - Fixed a problem with bitwise operations on functions that return a character. - LIB.DIR file was not being closed properly after checking it for updates. - Fixed bug where calling root cofunctions from xmem did not restore xpc. - Removed shortcut key conflicts on the Options and Edit pull down menus. - Fixed access violation when attempting to close - Memory leaks repaired - Fixed a problem with xmem address check for switch statements and cofunctions. - Fixed general protection fault caused by interaction between message window and source windows. - Fixed printf bug for smallest signed int (-32768). - Fixed bug with string literals located in global assembly blocks. - Fixed bug that was reporting atan(-1) as pi/4, now -pi/4 - PDCR was not addressed in Jr485Init(), but now is set to 0 (pclk/2) to resolve possible contention with DA1. - Fixed bugs with jumps across xmem page boundaries. - Fixed bug in serDputc, return value was 0 if unsuccessful but uninitialized if the character was successfully put. - Fixed alignment/allocation of constant data pointers. - Fixed message box bug with closing modified edit windows. - Fixed sqrt(-0.0) it now returns -0.0 ***************************************************************** VERSION 6.04D Bug Fix - storage of freq_divider in the RAM BIOS source was incorrect causing serial open functions in serial library to set the wrong baud rate when running from RAM. ***************************************************************** VERSION 6.04C Bug Fixes - Installation Remove Read-only attributes from Dynamic C root directory during installation. Updates - JackRabbit Board Schematic 090-0092.pdf updated. - Added C operator reference to Dynamic C Help. *****************************************************************