CORE                     
: NormalSearch CONTEXT @ @ SEARCH DUP NOT
     IF MODE @
        IF DROP COMPILER @ SEARCH DUP STATE ! ENDIF
     ENDIF ;
: ?NUMBER NUMBER DUP
     IF MODE @
        IF SWAP SETUP_STACK COMPILECONST ENDIF
     ENDIF ;
: ?EXECUTE STATE @ STATE 0SET MODE @ =
     IF DUP TRUE = IF DROP TOP_REG 4* + ENDIF @ EXECUTE *STACK
     ELSE @ SETUP_STACK CREATE_BL , ENDIF ;
: ?SEARCH MODE @
     IF SPECIAL @ SEARCH DUP 
        IF DUP DUP STATE ! ELSE DROP NormalSearch ENDIF
     ELSE NormalSearch
     ENDIF ;
FALSE VARIABLE exit
: OUTER ."           Mike's FORTH interpreter / compiler" CRET
        ." What next >"
     INLINE
     BEGIN ASPACE TOKEN
        IF TYPE INLINE
        ELSE ?SEARCH
           IF ?EXECUTE
           ELSE ?NUMBER NOT
              IF QUESTION TYPE INLINE ENDIF
           ENDIF
        ENDIF
     exit @ END ;
