Vous êtes sur la page 1sur 107

*****************************************************************

Dynamic C for Rabbit Release Notes


*****************************************************************
*****************************************************************
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_ini
t
}
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 f
irst
in the list, the prior file was loaded, but now the selected one is always loa
ded.
*****************************************************************
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 <config-number>).
- 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. &#64; (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 v
alues.
* 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 cofunc
tions.
* 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 <name>) 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.
*****************************************************************

Vous aimerez peut-être aussi