\ SHOWMOTOR1.TXT - MOTOR INDICATOR MANIPULATION

HEX
RCX_INIT

\ Define the motor direction constants

1 CONSTANT MOTOR_FORWARD
2 CONSTANT MOTOR_REVERSE
3 CONSTANT MOTOR_BRAKE
4 CONSTANT MOTOR_FLOAT

\ MOTOR_SHOW_xyz sets the LCD segments for a specific
\ direction and motor

: MOTOR_SHOW_FORWARD ( idx*3 -- )
    DUP 300E + LCD_SHOW
    DUP 3010 + LCD_SHOW
        300F + LCD_HIDE ;

: MOTOR_SHOW_REVERSE ( idx*3 -- )
    DUP 300E + LCD_SHOW
    DUP 3010 + LCD_HIDE
        300F + LCD_SHOW ;

: MOTOR_SHOW_BRAKE ( idx*3 -- )
    DUP 300E + LCD_SHOW
    DUP 3010 + LCD_SHOW
        300F + LCD_SHOW ;

: MOTOR_SHOW_FLOAT ( idx*3 -- )
    DUP 300E + LCD_HIDE
    DUP 3010 + LCD_HIDE
        300F + LCD_HIDE ;

: MOTOR_SHOW ( dir idx --   )
  3 *        ( dir idx*3 -- )
       OVER MOTOR_FORWARD = IF MOTOR_SHOW_FORWARD
  ELSE OVER MOTOR_REVERSE = IF MOTOR_SHOW_REVERSE
  ELSE OVER MOTOR_BRAKE   = IF MOTOR_SHOW_BRAKE
  ELSE SWAP MOTOR_FLOAT   = IF MOTOR_SHOW_FLOAT
  ELSE DROP
  THEN THEN THEN THEN ;
