\ FILTER1.TXT - FILTER CREATION AND MANIPULATION

: FILTER_CREATE ( "name" )
  CREATE
  0 ,    \ Initial average
  1 , ;  \ Initial weight

: FILTER_INIT ( weight avg a-addr -- )
  SWAP 2 PICK * OVER !
  CELL+ ! ;

: FILTER_GET ( a-addr -- avg )
  DUP @ SWAP CELL+ @ / ;

: FILTER_PUT ( value a-addr -- )
  SWAP OVER FILTER_GET -
  OVER @ + SWAP ! ;

\ Now we can test the filter - but we need the light
\ sensor words in LIGHT.TXT loaded first!

HEX
RCX_INIT
SENSOR_INIT
1 SENSOR_LIGHT_MAKE

FILTER_CREATE LIGHT_FILTER

8 1 SENSOR_LIGHT_GET LIGHT_FILTER FILTER_INIT

: TEST_FILTER
  BEGIN
    1 SENSOR_LIGHT_GET LIGHT_FILTER FILTER_PUT
    LIGHT_FILTER FILTER_GET
    3002 SWAP 301F LCD_NUMBER
    LCD_REFRESH
    EKEY?
  UNTIL ;
