ROBOTC 3.08 has been released!


Hi all,

We’ve just released ROBOTC 3.08. Head on over to the download pages to download the latest version!

Update: Note that 3.06 is the same software as 3.08. There was confusion due to the pre-releases of 3.06. When users opened up 3.06′s About menu, it read version 3.08. To prevent any further confusion, we’re upping the version number from 3.06 to 3.08 to reflect that. There are no software changes.

Change log:


  1. Compiler check to see if include file has been modified on disk was not flushing cached token parsing results. It now does.
  2. Ignored “this”, “new” and “typeid” as ROBOTC highlighted keywords. Not supported in ROBOTC.
  3. Eliminated a compiler warning indicating char string constants are limited to 19 characters.  This is no longer a restriction and the error / warning should not be generated.
  4. Improved NXT “move to target encoder”.
  5. Source files will be reloaded by “OnSetFocus” if the file has been modified on disk. NOTE: you cannot undo the reload — which is the same behavior as Visual Studio.
  6. Added support for “memcmp” function. Make “sensorSmallBias” visible as a intrinsic variable.
  7. Compiler error¬† “‘volatile’ may be ignored” was patched out as ‘volatile’ is now properly implemented.
  8. Fixed bug introduced into 3.5 where “++” or “–” operators were generating incorrect code. Code generation was for pre-increment/pre-decrement; code for postfix operators was not being generated. Bug was in compiler function “typeCheckStatement” which had a couple of new parameters added to it for 3.05. The “is this top level” boolean parameter was incorrectly defaulted to ‘true’.
  9. When variable is declared “volatile”, do not use it as a temporary to hold interim results. E.G. if “X” is volatile. in the statement “X = (Y*Z);” “Y*Z” is calculated using a temp variable and then assigned to “X”. “X” is not used as a temporay as in “X = Y” and then “X *= Z”!
  10. ubyte struct element references were not being properly converted to 16-bit values when used as target for “switch” variable and when used in “if” condition clauses. Incorrect code was generated.
  11. When new sensor was added to a standard model configuration the configuration was not being updated until a name was assigned to the sensor. The same may be true for motors. This fix corrects this bug.


  1. Added support for new variable to enable / disable disabling Tetrix servos when user program ends.
  2. Bottom row for “NxtDrawCircle” macro was incorrectly calculated as “Top – Diameter – 1″. Changed to correct calculation of “Top – Diameter + 1″.
  3. ‘eraseRect” function in emulator was leaving bottom row of rectangle unerased. The bit map array that stores the pixel mask to keep on bottom stripe was incorrect. The “physical robot” implementation for NXT did not have this bug.

VEX Cortex/PIC:

  1. Fixed digital sensor 4 and 10 shared interrupt. Firmware only allows one sensor to be declared that uses the shared interrupt; the other sensor, if using interrupts, will be set to “none”. VEX Firmware properly disables interrupts when a sensor is removed; it may have left the interrupts enabled.
  2. Fixed a bug that affected VEX-only RVW users where the joystick wouldn’t populate unless a LEGO License was also present.
  3. Added support for displaying motor encoder port in platforms (VEX Cortex & Arduino) that allow you to associate a encoder on a sensor port with a motor. Change default visibility of “associated sensor port containing encoder” to “visible” for VEX Cortex. Modify format of debug “upload motor infor” message to include encoder values.
  4. Fixed drift in gyro value calculation. Make “nGyroJitterRange” and “bHasSensorBiasSettings” #define parameters in “loadBuildOptions.h”. Changed bias setting for gyro from 130 to 131. Fixed some small bugs in gyro bias calculation. Introduced a “gyro jitter range” setting that ignores very small changes for gyro steady state positiion. Suppose gyro bias in 1840; they the ‘ignore jitter’ would treat values in 1837 to 1843 as if they were the steady state value.
  5. Made “getSensorRawADValue” apply to VEX Cortex and not just NXT.
  6. Added support for up to 8 VEX I2C Encoders
  7. Enabled the “nMotorEncoder” command on the Cortex Platform to access encoder values
  8. Changes in Motors and Sensors Setup and Sensor Debug window to reflect I2C encoder support
  9. Added new sample programs to demonstrate the I2C encoders

Natural Language:

  1. Added support for 3 line tracking sensors in lineTrack commands
  2. Corrected untilDark and untilLight commands for corrected sensor values
  3. Corrected encoder related commands that were incorrectly using dgtl2 instead of dgtl1

Written by Vu Nguyen

March 8th, 2012 at 4:16 pm

Posted in General News