The robot is just a machine with both computational and physical capabilities and the programs we write make use of the former to take advantage of the latter. In this lecture, we'll consider three systems, RIS, NQC and legOS, that provide such support in varying degrees.
RIS code is restricted in a number of ways.
First, the language itself has limitations, e.g., it allows multiple threads of control called stacks, but only nine of them, it allows loops and conditionals, but only of a limited sort, it allows counters, but not other sorts of math routines or the use of variables. Despite these limitations, the programs that have been developed using RIS are surprisingly sophisticated. The second way in which RIS code is restricted is that it relies on a layer of firmware that implements a simple OS and an interpreter to run RIS programs much as the Java virtual machine in your browser allows you to run programs specified as Java classes and represented in bytecodes that can be easily sent from one computer to another. Indeed, the standard firmware implements a bytecode interpreter for the RCX virtual machine. Baum was one of the first to take advantage of Kekoa Proudfoot's efforts to reverse engineer the RCX brick and the standard firmware.