//even/odd counter
//is an even or an odd number of I/O's enabled?
 
LABEL LOOP
     CALL COUNT_IO
     CALL FIND_EVEN_ODD
     WAIT 1000
GOTO LOOP
 
SUB COUNT_IO
     //set counter to 0
     VAR1 = 0
 
     //increase counter for each channel that is on
     VAR1 = VAR1 + $IO01
     VAR1 = VAR1 + $IO02
     VAR1 = VAR1 + $IO03
     VAR1 = VAR1 + $IO04
     VAR1 = VAR1 + $IO05
     VAR1 = VAR1 + $IO06
     VAR1 = VAR1 + $IO07
     VAR1 = VAR1 + $IO08
     VAR1 = VAR1 + $IO09
     VAR1 = VAR1 + $IO10
     VAR1 = VAR1 + $IO11
     VAR1 = VAR1 + $IO12
     VAR1 = VAR1 + $IO13
     VAR1 = VAR1 + $IO14
     VAR1 = VAR1 + $IO15
     VAR1 = VAR1 + $IO16
END SUB
 
 
SUB FIND_EVEN_ODD
     //decrease until value <= 2
     LABEL CHECK_AGAIN
     IF VAR1 >= 0002 Then
          VAR1 = VAR1 - 2
          GOTO CHECK_AGAIN
     END IF
 
     //check if even or odd
     IF VAR1 = 0001 Then
          //odd number
          DAC01 = 0
     ELSE
          //even number
          DAC01 = 63
     END IF
 END SUB

BACK TO SAMPLE OVERVIEW