When you turn on the RCX for the first time or after it has been without power for more than a few minutes, it is in a state in which it can not be programmed and will only run its built-in 3 standard programs. At this stage, the RCX display will look like this:
To start programming, you first need to upload the RCX firmware. Think of it as a mini operating system that needs to be installed to be able to use all features of the machine. Uploading can be done using the NQC command:
nqc -firmware firm0332.lgo
During upload, you will see a counter running on the RCX display. For a small firmware like 0309 this will counter run up to 1591, which can take a while. For a larger firmware such as 0332 it will run to around 2500 (I wasn’t looking!), so you can get coffee.
Several firmware versions have been released by LEGO over the years, and there have also been user-built modified versions of the RCX firmware, either improving on the LEGO firmware or building a completely new system from scratch. As far as I know all of these versions have all been available to the public. I am reposting the ones I have here as they have started disappearing from the Internet.
Official LEGO firmware:
firm0309.lgo: RCX firmware version 3.09.
This version came with the LEGO MindStorms Robotics Invention System version 1.0 and 1.5.
firm0328.lgo: RCX firmware version 3.28.
This version came with the LEGO MindStorms Robotics Invention System version 2.0
firm0332.lgo: RCX firmware version 3.32.
This version came with the last Robotics sets with the RCX released by LEGO Education. As far as I’m aware , this is the last version ever released by LEGO.
Dick Swan firmware
Dick Swan from Robomatter (the author of RobotC) wrote some versions of custom RCX firmware, aimed at increasing its speed and adding more features. Earlier versions were fully compatible with the LEGO firmware. Later versions contain enhancements that made it incompatible, but these can be used with the RobotC for RCX software.
fast0103.lgo: 10 times faster than the LEGO firmware but very compatible.
fast0612.lgo: 50 to 100 times faster execution speed than standard LEGO firmware.
Float and long variable support. Full featured debugger support: breakpoints, suspend/resume, single step execution, full set of fast updated “watch” windows, etc. Expanded infra red messaging support. Should be backwards compatible and work with the latest version of NQC.
fast0722.lgo: Not sure, but suspect this version only works with RobotC.
fast0798.lgo: Firmware version included with the last version or RobotC for RCX, which is available freely from the link above. Does not work with NQC.
Thanks to Francesco Ferrara for keeping some of these on his site.
There are other notable firmware developments, but these come with their own vastly different development environments and tools which I can not cover on this page. They are certainly worth a look though!
Enables you to write native code for the RCX processor using c/c++.
A Java VM to run on your RCX so you can actually run Java programs on it.