Page 128
BUTTON_INIT ( -- )
This word initializes pbFORTH's button-handling system. Make sure to call it once before you try to call BUTTON_GET.
BUTTON_GET (address -- )
This word places the current button state into the variable address. pbFORTH provides a variable, RCX_BUTTON, that you can 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
Run
1
View
2
Prgm
4
For example, if the Run and Prgm buttons are pressed simultaneously, the flags returned from BUTTON_GET will be 5.
Here's a word definition that retrieves the button state and places it on the top of the stack:
: buttonState RCX_BUTTON DUP BUTTON_GET @ ;
Building on this, here's a handy word definition that tests if the Run button is pressed:
: isRunButtonPressed buttonState 1 AND ;
Remember, 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 news because you can display the results of your programs or even intermediate values. Every segment of the LCD display
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 segments lit up.
pbFORTH offers words that show and hide individual segments, display numbers, or clear the entire display. For changes to actually take effect, however, you must call LCD_REFRESH:
Page 129
LCD_REFRESH ( -- )
Use this word after making changes to the display. The state of the display will not change until you call LCD_REFRESH.