( RoeLEDs - Forth version of Basic prog by Jochen Lueg)

OSCLI" RMEnsure GPIO 0.00 RMLoad GPIO"
OSCLI" RMEnsure GPIO 0.40 ERROR HELP can't find GPIO module"

0 VARIABLE W
0 VARIABLE TM

10 ARRAY LED

: delay0    ( n csec .... )
  0 TIME=
  BEGIN DUP TIME < UNTIL
  DROP ;

: delay ( dt ... )
   TIME             ( dt,T0...)
  BEGIN
   DUP              ( dt,T0,T0...)
   TIME             ( dt,T0,T0,T1...)
   SWAP             ( dt,T0,T1,T0...)
   -                ( dt,T0,T1-T0...)
   3 PICK           ( dt,T0,T1-T0,dt...)
   >=               ( dt,T0,flg...)            
  UNTIL             ( dt,T0...)
  DROP DROP
;


: ProtectI2C   1 GPEnabI2C ;
: UnprotectI2C 0 GPEnabI2C ;
: OutputsGPIO  2 GPExpGPIO ;   ( all pins as outputs, with inputs high)
: InputsGPIO   1 GPExpGPIO ; 

: 21to25_ON
  26 21 DO  1 I GPWrData DROP DROP 5 delay LOOP  ;

: 21to25_OFF
  26 21 DO  0 I GPWrData DROP DROP 5 delay LOOP ;

: ON_OFF
  50 0 DO 21to25_ON  5 delay  21to25_OFF LOOP ;

: LEDprog
  UnprotectI2C OutputsGPIO ON_OFF ;

( Set individual pins as outputs)
: LEDdemo 
  UnprotectI2C 
  26 21 DO 0 I GPWrOE DROP LOOP  ( Set individual pins as outputs)
  ON_OFF ;



