: _updsel ( -- f, has an action button been pressed? ) _status _prevstat C@ OVER = IF DROP 0 EXIT THEN DUP _prevstat C! ( changed, update ) ( s ) 0x01 ( UP ) OVER AND NOT IF 1 _sel +! THEN 0x02 ( DOWN ) OVER AND NOT IF -1 _sel +! THEN 0x04 ( LEFT ) OVER AND NOT IF -5 _sel +! THEN 0x08 ( RIGHT ) OVER AND NOT IF 5 _sel +! THEN 0x10 ( BUTB ) OVER AND NOT IF _nxtcls THEN ( update sel in VDP ) _chk _sel C@ (emit) -1 XYPOS +! ( return whether any of the high 3 bits is low ) 0xe0 AND 0xe0 < ;