stacks-and-pointersAfter seemingly forever, ROBOTC 3.5 beta is finally out.  So why is this important?  There have been so many cool new features added to this release, it might as well be 4.0, to be honest.

So what’s new?  Below is a list of some of the new features:

  • 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) – Still in progress!
  • 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.
  • Many general enhancements and bug fixes – more in-depth change log to come with the ROBOTC 3.5 official release.

The cool thing is, you can get all of the new features for the low, low price of free.  That’s right, if you already have a license for ROBOTC 3.0, you can simply upgrade!

Please note that the Driver Suite is not quite ready and will not work completely flawlessly in this new beta, but rest assured that I will make it work!  A new release will be published when it’s ready.  The cool thing about my Suite is that it appears to be an excellent way to stress test the compiler and IDE.  I’ve used it in the past few weeks to expose more bugs in the IDE and compiler than you can shake a stick at.  It was a lot of fun and both Dick and Tim (the core developers of ROBOTC) didn’t even start ignoring me after all the reports!  As far as I know, all the bugs I reported have been fixed.

Meanwhile, I’ve also been playing with the new pointer stuff, here’s a little code snippet:

void appendValue(tList *list, int value)
{
  tListElement *position = NULL;
  // The list is still empty
  if (list->size == 0)
  {
    list->elements[0].value = value;
    list->elements[0].free = false;
    list->size++;
    list->head = &list->elements[0];
    list->tail = &list->elements[0];
  }
  // The list is full!
  else if (list->size < MAX_LIST_SIZE)
  {
    // find a free node
    position = findFreeNode(list);
    // No free nodes available, shouldn't happen
    if (position == NULL)
    {
      return;
    }
    list->elements[position].value = value;
    list->elements[position].free = false;
    list->elements[list->tail].next = position;
    list->tail = position;
    list->size++;
  }
}

Man, I have so many ideas I’m going to start playing with, so stay tuned!

The original announcement where I stole the above list and the picture, can be found here: [LIST].  You can download the beta here: [LINK]

Tags