\ Changes: BTD added .NEED . Skips to .THEN  
\ Conditional compilation words

: EXISTS?  ( --- WORD-FOUND?-FLAG ) BL WORD FIND SWAP DROP ;
\ usefull for conditional compilation. BTD

: INCLUDE?   ( --- )  ( <file-name> <WORD> --in-- ) EXISTS?
    IF-NOT   [] INCLUDE 
    ELSE     BL WORD DROP 
    THEN  ;

: $=  ( $1 $2 --- EQUALS-flag )  2DUP C@ SWAP C@ = 
     IF    1+ SWAP COUNT  COMPARE 0=  
     ELSE  2DROP FALSE
     THEN  ;

: $-  ( $1 $2 --- NOMALIZED-$1-MINUS-$2 )   
  2DUP ( - $1 $2 $1 $2  )
  COUNT ROT COUNT        ( -- $1 $2 2adr 2cnt 1adr 1cnt )
  ROT   min              ( -- $1 $2 2adr 1adr mincnt )
  >r swap r>  COMPARE ( 1 2 FLAG ) DUP>R  0=
  IF      C@ SWAP C@ SWAP - R> + 
  ELSE    2DROP R> 
  THEN   ;
     
: .IF  ( flag --- )  ( ".else"-or-".then" <text> --in-- <skip text if false> )
     IF-NOT  BEGIN  BL WORD
                    dup c@ 0= >r
                    DUP $" .ELSE" $= 
                    SWAP $" .THEN" $= OR
                    r> or
                    \   >in @  #tib @ < 0= or
             UNTIL 
     THEN ; IMMEDIATE

: .ELSE  ( --- )  ( ".then" <text> --in-- <skip text> )
     BEGIN  BL WORD  dup c@ 0= swap
            $" .THEN" $=  OR
     UNTIL  ; IMMEDIATE

: .THEN ; IMMEDIATE


\ tested sept 9/86 BTD. works except that COMPARE does not return the 
\ correct comparision flags. should be:  0 = , -1 $a<$b , +1 $a>$b.

: .NEED  ( --- )  ( <NEEDED-WORD> --IN-- )  BL WORD FIND  SWAP DROP NOT
    [] .IF  ; IMMEDIATE 
       
