Code Size Question

Settings being equal how does the size of the code generated by Dynamic C 9.24 compare to 9.26A?

I highly recommend 9.62A for all Rabbit 2000/3000 products. I don’t have numbers on code size between the two releases, but expect them to be comparable.

I’d recommend reading the Release Notes that summarize changes from the 9.40 release through to 9.62A for an idea of how many bug fixes there are from earlier versions.

In addition to those bug fixes, here’s a summary of changes in the 9.25 and 9.30 releases:

*****************************************************************
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.