Reply by Robert Richter October 23, 20032003-10-23


----------
> From: tek220 <d...@d.pe...>
> To: rabbit-semi@rabb...
> Subject: [rabbit-semi] Re: Out of root code space
> Date: Wednesday, October 22, 2003 11:19 PM
>
Wait - Did you say hardware support? What needs to change in the
hardware to allow separate I&D space?
Dave

=====================================
Look at the part number of the Rabbit. If there is an "IQ2T", then it is
too old to support separate I&D. If it is "IQ3T", "IQ4T", or "IQ5T", then
you may use separate I&D.

Don't let separate I&D deceive you. You will gain 12K root space, you
won't double it. What happens is that root code consist mostly of
initialized arrays and structures and string literals. When separate I&D
is enabled, this is moved from code space to data space.


Reply by tek220 October 23, 20032003-10-23
Wait - Did you say hardware support? What needs to change in the
hardware to allow separate I&D space?
Dave

--- In rabbit-semi@rabb..., "shdesigns2003" <shenion@s...>
wrote:
> The newer compilers will support separate I&D. If you have older
> boards, that may not be supported.
>
> Separate I&D basically doubles the root memory available.
>
> The newer DC compilers will also allow strings to be kept in xmem. A
> pain to use, Robert Richter has posted a simple set of macros in the
> files files area to allow easier use of strings in xmem.
>
> --- In rabbit-semi@rabb..., "tek220" <d.peavey@c...> wrote:
> > I have a large design that is based on the Rabbit 2000 TCP/IP
> > Development board. I am using Dynamic C TCP/IP 7.05 TSE. I am
> > continously having "out of root code space" problems. I am not
> > even using 1/2 of my 512kBytes of FLASH (2x256k). Consolodating
> > my string literals is the only thing that is saving me
> > currently. Does anyone know if the newer versions of DC
> > has allowed larger root code space?


Reply by bmurthazw September 30, 20032003-09-30
--- In rabbit-semi@rabb..., "tek220" <d.peavey@c...> wrote:
> I have a large design that is based on the Rabbit 2000 TCP/IP
> Development board. I am using Dynamic C TCP/IP 7.05 TSE. I am
> continously having "out of root code space" problems. I am not even
> using 1/2 of my 512kBytes of FLASH (2x256k). Consolodating my
string
> literals is the only thing that is saving me currently. Does
anyone
> know if the newer versions of DC has allowed larger root code space?
> If that's the case, I will seriously consider upgrading.
>
> Also does anyone know if the 10,000 line limit on the source has
been
> raised. It really is annoying to have to delete all my comments
> and "write C code horizontally" just to stay below the 10k line
> limit. Or - let me use more than one file for my source code.

The 10,000 line limit is gone in DC 8.x.


Reply by Robert Richter September 30, 20032003-09-30


----------
> From: tek220 <d...@d.pe...>
> To: rabbit-semi@rabb...
> Subject: [rabbit-semi] Out of root code space
> Date: Monday, September 29, 2003 10:32 PM
>
>I have a large design that is based on the Rabbit 2000 TCP/IP
>Development board. I am using Dynamic C TCP/IP 7.05 TSE. I am
>continously having "out of root code space" problems. I am not even
>using 1/2 of my 512kBytes of FLASH (2x256k). Consolodating my string
>literals is the only thing that is saving me currently. Does anyone
>know if the newer versions of DC has allowed larger root code space?
>If that's the case, I will seriously consider upgrading.

Don't let separate I&D deceive you. You don't double root *data* space and
most of your code doesn't need to be in root code space. Very few of the
system libraries actually need to be in root code space. String literals
will be in *code space* with separate I&D off, but when you turn on
separate I&D, string literals and initialized arrays are moved to *data*
space, even though they are part of your code. You probably only gain
about 12K of root *data* space, but you won't double the root *data* space.
All you do is increase the amount of root *code* space available, but the
compiler is capable of placing functions in xmem and running them from xmem
without you worrying about a thing.

You have a processor with banked switched 64K memory--you can't get more
root space.

One thing to look at is this: What is DATAORG. Your 52K root area is
divided up into root code and root data. Increasing DATAORG increases root
code but decreases root data. With separate I&D off, root code includes
string literals and initialized constants. With separate I&D on, string
literals and initialized constants only are placed below DATAORG, but no
code because code is in code space, not data space. String literals are
placed in the segment below DATAORG. Global variables are placed above
DATAORG. If you have ample data space and run out of code space, increase
DATAORG. I am afraid you will need to suffer with the rest of us and learn
how to use xmem.

>Also does anyone know if the 10,000 line limit on the source has been
>raised. It really is annoying to have to delete all my comments
>and "write C code horizontally" just to stay below the 10k line
>limit. Or - let me use more than one file for my source code.

>Since I am considering upgrading my software, is there a added
>features & bug fix list that shows the differences between 7.x and
>8.x of DC?

I don't know if this exerpt from DC8.01 is available on-line, but when you
install Dynamic C, a text file listing the bug fixes is included. Here is
the file from 8.01--I only copied it up to where 7.32 is listed.

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

Dynamic C for Rabbit Release Notes

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

******************************************************
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 ater a print
preview when Dynamic C is in full screen mode.
- Defect #80238 fixed. The preview text is no longer affected by invoking
and
acceping 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.


Reply by Matt Linder September 30, 20032003-09-30
We have a large program that we run on an RCM2110 it has
a RS232 port, RS485 port, LCD, keypad, ethernet/telnet
are in use. The RCM is fairly maxed out with ports
F,G,H,I added src code for main threads is approx 6625 lines
and the libraries I made for the job are another 4486 lines
counting no whitespace.

No problems yet runs fine, binary size is approx 128k I use
DC 7.25P daily.

Sounds like you should be putting some code in lib files.
if the #use would support paths it would be pretty much
the same as #include IMO.

Matt Linder
www.Micro-Controls.com On Tue, 30 Sep 2003 05:32:39 -0000, tek220 wrote:

>I have a large design that is based on the Rabbit 2000 TCP/IP
>Development board. I am using Dynamic C TCP/IP 7.05 TSE. I am
>continously having "out of root code space" problems. I am not even
>using 1/2 of my 512kBytes of FLASH (2x256k). Consolodating my string
>literals is the only thing that is saving me currently. Does anyone
>know if the newer versions of DC has allowed larger root code space?
>If that's the case, I will seriously consider upgrading.
>
>Also does anyone know if the 10,000 line limit on the source has been
>raised. It really is annoying to have to delete all my comments
>and "write C code horizontally" just to stay below the 10k line
>limit. Or - let me use more than one file for my source code.
>
>Since I am considering upgrading my software, is there a added
>features & bug fix list that shows the differences between 7.x and
>8.x of DC?
>
>Thanks,
>Dave



Reply by shdesigns2003 September 30, 20032003-09-30
The newer compilers will support separate I&D. If you have older
boards, that may not be supported.

Separate I&D basically doubles the root memory available.

The newer DC compilers will also allow strings to be kept in xmem. A
pain to use, Robert Richter has posted a simple set of macros in the
files files area to allow easier use of strings in xmem.

As far as the 10,000 line limit. I don't know. I alway pull blocks of
code out into a separate lib when the main file gets too big to
manage. Libs are a pain to do, but it also allows code to be used in
ither projects.

Upgrading to the Softools compiler is another option. It has better
memory mamagement. I am currently moving to Softools here as the
memory issues and compiler problems have become too big a limitation
especially for larger projects.

--- In rabbit-semi@rabb..., "tek220" <d.peavey@c...> wrote:
> I have a large design that is based on the Rabbit 2000 TCP/IP
> Development board. I am using Dynamic C TCP/IP 7.05 TSE. I am
> continously having "out of root code space" problems. I am not even
> using 1/2 of my 512kBytes of FLASH (2x256k). Consolodating my string
> literals is the only thing that is saving me currently. Does anyone
> know if the newer versions of DC has allowed larger root code space?
> If that's the case, I will seriously consider upgrading.
>
> Also does anyone know if the 10,000 line limit on the source has been
> raised. It really is annoying to have to delete all my comments
> and "write C code horizontally" just to stay below the 10k line
> limit. Or - let me use more than one file for my source code.
>
> Since I am considering upgrading my software, is there a added
> features & bug fix list that shows the differences between 7.x and
> 8.x of DC?
>
> Thanks,
> Dave




Reply by tek220 September 30, 20032003-09-30
I have a large design that is based on the Rabbit 2000 TCP/IP
Development board. I am using Dynamic C TCP/IP 7.05 TSE. I am
continously having "out of root code space" problems. I am not even
using 1/2 of my 512kBytes of FLASH (2x256k). Consolodating my string
literals is the only thing that is saving me currently. Does anyone
know if the newer versions of DC has allowed larger root code space?
If that's the case, I will seriously consider upgrading.

Also does anyone know if the 10,000 line limit on the source has been
raised. It really is annoying to have to delete all my comments
and "write C code horizontally" just to stay below the 10k line
limit. Or - let me use more than one file for my source code.

Since I am considering upgrading my software, is there a added
features & bug fix list that shows the differences between 7.x and
8.x of DC?

Thanks,
Dave