Page 139 - The Unofficial Guide to Lego Mindstorms Robots
P. 139
128
BUTTON_INIT ( -- )
This word initializes pbFORTH's button-handling system. Make sure to call it once before you try to call BUTTON_GET.
B UTTON_GET (address -- )
This word places the curren t button state into the variable address. pbFORTH provides a variable, RCX_BUTTON, that you
ca n use for this purpose. The value placed in the variable tells which buttons are pressed and is a combination (boolean OR) of
the values shown in Table 6-4.
Table 6-4. BUTTON_GET Return Values
Button Name Value
R un 1
V iew 2
P rgm 4
F or example, if the Run and Prgm buttons are pressed simultaneously, the flags returned from BUTTON_GET will be 5.
H ere's a word definition that retrieves the button state and places it on the top of the stack:
: buttonState RCX_BUTTON DUP BUTTON_GET @ ;
B uilding on this, here's a handy word definition that tests if the Run button is pressed:
: isRunButtonPressed buttonState 1 AND ;
R emember, you have to call BUTTON_INIT before you use this word; otherwise is won't work.
To test the state of the On-Off button, you'll need to use the POWER_GET word, described later in this chapter.
LCD Display Words
pbFORTH provides direct control of the RCX's display. This is exciting ne ws because you can display the results of your
programs or even intermediate values. Every segment of the LCD disp lay can be controlled individually; this includes the
"little man," the input and output arrows, the datalog indicators (which you might never have seen otherwise), and the large
numbers in the center. Figure 6-3 shows the display with most of its seg ments lit up.
pbFORTH offers words that show and hide individual segments, displ ay numbers, or clear the entire display. For changes to
actually take effect, however, you must call LCD_REFRESH: