Part of compiling legOS involves running some Perl. You'll need to have Perl installed on your computer to make legOS programs. As before, Linux users probably have Perl lying around
already. If you've installed Cygwin on your Windows machine, you'll need to go get Perl. See "Online Resources" for more information.
Downloading Firmware
Once you have successfully compiled something in legOS, you will need to download it to your RCX to run it. To do this, you need a small utility that's called a
Page 192
firmware downloader. This piece of software uses the IR tower to transfer firmware to your RCX.
Two firmware downloaders are readily available. Dave Baum's nqc. described in Chapter 4, Not Quite C, is capable of downloading firmware files to the RCX, using the -firmware option.
Another option is Kekoa Proudfoot's firmdl, which is available as a C source file.
An Innovative Alternative
If the complexity of setting up tools for legOS is making you sad, there's a creative
solution. Two kind individuals have set up web-based legOS compilers. All you do is
submit your source code. Across the Internet, a machine compiles the code and sends you
the result, which you can then download to your RCX. This completely sidesteps the whole
problem of obtaining a cross compiler. This solution is useful even for platforms that don't
support the GNU tools. As long as you have a web browser, you can compile legOS
programs.
The web-based cross compilers are here:
http://www.dwarfrune.com/web-legOS.html
https://vheissu.mersenne.com/~dbm/compile-legOS.html
There are some downsides to this approach, as well:
1. You have to fit your program into a single source file.
2. You have to depend on someone else to keep the compiler running.
3. You can't apply patches and tweak other things yourself.
Hello, legOS
Let's begin with something simple. This will allow you to verify that your tools are working and give you a first taste of programming with legOS. The following program displays "Hello" on the
RCX's display briefly:
#include "conio.h"
int main(void) {
cputs("Hello") ;
lcd_refresh() ;
delay(1000) ;
return 0;
}
To run this example, first compile it. If you have the cross compiler installed locally, you just need to edit the legOS Makefile so that the TARGET line points to