You can request chunks of memory in the RCX using the familiar malloc() and calloc() functions. LegOS, by itself, takes up about 5K or 6K of the RCX's 32K of RAM. You should have
about 26K left for your program and its data.
void ∗malloc(size_t size)
This function allocates a chunk of memory of the given size (in bytes). A pointer to the memory is returned. If the memory cannot be allocated, NULL is returned.
void ∗calloc(size_t nmemb, size_t size)
This function allocates enough memory for nmemb chunks of memory, each size bytes long. It also sets each byte of the allocated memory to zero. Like malloc(), it returns NULL if
something goes wrong.
void free(void ∗ptr)
When you are done with memory you've allocated, you should free it using this function.
Sound (rom/sound.h and direct-sound.h)
You can play one of the RCX's built-in ''system" sounds with the following function:
void sound_system(unsigned nr)
This function plays one of the system sounds of the RCX. The nr parameter describes the sound; it can be any of the values shown in Table 10-1.
Table 10-1. sound_system() Sound Numbers
Sound Number
Description
0
Short beep
1
Two medium beeps
2
Descending arpeggio
3
Ascending arpeggio
4
Long low note
5
Quick ascending arpeggio (same as 3 but faster)
Furthermore, you can play any sound you want using this function:
void ds_play(unsigned char ∗sample, unsigned length)
This function plays the sound data described by sample, using length bytes of data. The sample data should be 1 bit, 8 kHz data.
Unfortunately, neither
Other Goodies
legOS has a grab-bag of other interesting features. In this section, these functions are organized by the header file in which they are defined.
In stdlib.h
legOS supports a simple random number generator with the following two functions:
sound_system()
nor
ds_play()
works in the March 30, 1999 build of legOS 0.1.7.
Page 203
Need help?
Do you have a question about the MINDSTORMS Robots and is the answer not in the manual?
Questions and answers