Home / Programming / ROBOTC / ROBOTC 3.50 Now Available!

ROBOTC 3.50 Now Available!

Woot!  ROBOTC 3.5 is finally out!  Below is a copy of the original article, which you can find here: [LINK].

Please note that the Driver Suite has not been updated yet to work flawlessly with this new version.  I will update it in the coming weeks and add a whole slew of new drivers.

The ROBOTC Development team is proud to announce that ROBOTC 3.50 for the LEGO Mindstorms, VEX Cortex and PIC, Arduino, and Robot Virtual World platforms is now available! The new ROBOTC 3.50 update is free-of-charge for ALL existing ROBOTC 3.0 license holders.Download today and try out all of the new features and enhancements available in ROBOTC 3.50!

Change log for ROBOTC 3.50 (since version 3.08):

MAJOR UPDATES:

  • Full ANSI-C support to support pointers, recursion, and stacks with an updated compiler and updated robot firmware.
  • New and Updated Debugger Windows:
    • “Local Variables” to monitor variables in the current task or function.
    • (Note: Local variables are only available when your program is suspended)
    • “Global Variables” to monitor variables available to your entire program.
    • “Call Stacks” to monitor function calls in the currently selected task.
  • Updated Documentation and Wiki (www.robotc.net/wiki) – Constantly Updating!
  • Support for Standard C commands – sprintf(), sscanf(), support for character arrays, unsigned variables, etc.
  • Support for the Arduino family of controllers (Uno, Mega, Mega 2560) with future support and expanded functionality for the Arduino Leonardo and Due controllers.
  • Updated Robot Virtual Worlds support to include additional sensors and motors.
  • Improved Robot Virtual Worlds performance to simulate more realistic physics and robot behaviors.
  • Support for the new MATRIX building system with the NXT.

Robot Specific Fixes:

  • NXT I2C sensors were incorrectly initializing clock and data lines as outputs when first configuration. They were correctly left as inputs after first message was sent. Change was to initialize as inputs. Before change, the first I2C message on an empty port will incorrectly appear to succeed.
  • Ignore HiTechnic Textrix Motor Controller spurious encoder counts. I.E. if encoder value read is hex ‘FF80xxxx’ then force a reread. Always accept the re-read value.
  • Eliminate Z-Axis from VEX joystick window as is unused.
  • Arduino boards now support controlling LEDs from PWM pins.
  • Arduino boards now will read zero when connecting analog to ground.

Interface Updates/Fixes:

  • Add “Show Current Program Counter” button to Debugger.
  • Add new template for “New File”. All new programs will start with a task main structure. This template can be modified by the user (it lives in  /Sample Programs/Platform/Templates)
  • Always force “Save As” for all template files. Before the files were being saved in a default directory.
  • Allow any serial port to be used with VEX PIC systems.
  • Allow user entered blank (empty) lines before first “#pragma config(” lines. Currently generates a compiler error.
  • Improve placement of related compiler generated errors to appropriate line numbers.
  • Fix bug where “Motors and Sensors Setup” did not work on empty files.
  • Properly restore floating “Debugger Panes” when Debugger is invoked.
  • Changed Checkmarks to Radio Icons for many menu items. This shows a “dot” instead of a “check mark” in the menu icon field.
  • Created tooltip strings in resource file for all missing commands.
  • Prepare to add two new Debugger panes to display “Breakpoints” and “Bookmarks”. Based on the existing “Compiler Errors” pane architecture. The new panes are displayed but the content is still empty.
  • Better synchronization of breakpoints between “Source File” and “Disassembly Listing”. Previously when breakpoint was added/removed in one window the corresponding change was not properly made in the other window. Now the breakpoint ICONs are always refreshed whenever a window is “Activated” (i.e. made topmost).
  • Add two new menu commands for “increase indent” and “decrease indent”.
  • Tweak “auto close breakpoint hit” message box implementation. Add a check mark to the dialog.
  • Add new “Compile OR Compile+Download” toolbar.
  • Debug “Task Status” window — minor enhancements.
  • FONT name was not being updated in Preferences “Font” tab correctly. Fixed.

Compiler and Command Updates/Fixes:

  • Pointer support. New functions positioning for improvements in the dereference (“*”) and address of (“&”) unary operators.
  • New “#pragma debugWindows(…)” to specify a list of Debugger Windows that should be opened.
  • Add new intrinsic function “DebugStreamClear” to allow programs on robot to clear the debug stream.
  • Support for “Implied Pointers” in functions.
  • Fixed compiler priority for binary and unary versions of ‘&’, ‘*’, ‘+’ and ‘-’ operators.
  • Support for unsigned longs.
  • Add new intrinsic function for “round”.
  • Added support for ‘atan2′.
  • Allow ‘struct’ pointers as valid function return types.
  • Fix issue in ‘struct’ declaration causing a random memory overwrite in ROBOTC IDE.
  • Support pointer variables for ‘++’ and ‘–’.
  • ‘sizeof’ operator now accepts argument types of ‘char’, ‘short’, ‘long’, ‘float’, …
  • Fix bug in evaluating “complicated” / compound constant expressions in “#if”.
  • Add support for ‘%p’ format code in ‘sprintf’.
  • Improve code generation for pointer references to ‘struct’.
  • Added doubly nested ‘->’ operator.
  • Fixed bug in unary ‘-’ VM opcode.
  • Improve code generation for structure element access.
  • Fix implementation of structure element access code generation; i.e. the “.” operator.
  • Partially re-implement “sizeof” operator for proper calculation of ‘pointer’ and ‘reference’ variables.
  • Add “drop down toolbar button” to “Compile and Download” toolbar to select “Download + Compile” or “Compile” only; vs two separate buttons.
  • Add partial support for new download “write to RAM” message. Needed for new “local variables” window.
  • Add support for new “trinary opcodes” (+, – and *) with ‘long’ operands. Previously trinary opcodes were for ‘short’ variables. Trinary opcodes are primarily used for efficient code generation for array and structure element access.
  • Added definition for new “NoOp” command.

About Xander

Xander Soldaat is a Software Engineer and former Infrastructure Architect. He loves building and programming robots. He recently had the opportunity to turn his robotics hobby into his profession and has started working for Robomatter, the makers of ROBOTC and Robot Virtual Words.