



          15.  THE SYSTEM EXTENSION WORD SET




                         15.  THE SYSTEM EXTENSION WORD SET



          15.1 The System Extension Word Set Layers


          Nucleus layer

               BRANCH  ?BRANCH


          Device layer

               none


          Interpreter layer

               CONTEXT  CURRENT


          Compiler layer

               <MARK  <RESOLVE  >MARK  >RESOLVE


          15.2 System Extension Word Set Usage

          After BRANCH or ?BRANCH is compiled, >MARK or <RESOLVE is
          executed.  The addr left by >MARK is passed to >RESOLVE .  The
          addr left by <MARK is passed to <RESOLVE .  For example:    
               : IF     COMPILE ?BRANCH  >MARK  ; IMMEDIATE 
               : THEN   >RESOLVE  ; IMMEDIATE





















                                         50





          15.  THE SYSTEM EXTENSION WORD SET


          


          15.3 The System Extension Word Set Glossary

          <MARK        -- addr                       C,83  "backward-mark"
               Used at the destination of a backward branch.  addr is
               typically only used by <RESOLVE to compile a branch address.

          <RESOLVE     addr --                       C,83"backward-resolve"
               Used at the source of a backward branch after either BRANCH
               or ?BRANCH .  Compiles a branch address using addr as the
               destination address.

          >MARK        -- addr                       C,83   "forward-mark"
               Used at the source of a forward branch.  Typically used
               after either BRANCH or ?BRANCH .  Compiles space in the
               dictionary for a branch address which will later be resolved
               by >RESOLVE .

          >RESOLVE     addr --                       C,83"forward-resolve"
               Used at the destination of a forward branch.  Calculates the
               branch address (to the current location in the dictionary)
               using addr and places this branch address into the space
               left by >MARK .

          ?BRANCH      flag --                       C,83"question-branch"
               When used in the form:  COMPILE ?BRANCH  a conditional
               branch operation is compiled.  See BRANCH for further
               details.  When executed, if flag is false the branch is
               performed as with BRANCH .  When flag is true execution
               continues at the compilation address immediately following
               the branch address.

          BRANCH       --                            C,83                 
               When used in the form:  COMPILE BRANCH  an unconditional
               branch operation is compiled.  A branch address must be
               compiled immediately following this compilation address.
               The branch address is typically generated by following
               BRANCH with <RESOLVE or >MARK .

          CONTEXT      -- addr                       U,79                 
               The address of a variable which determines the dictionary
               search order.

          CURRENT      -- addr                       U,79                 
               The address of a variable specifying the vocabulary in which
               new word definitions are appended.









                                         51

