<office:document-content  xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"  xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"  xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" > <office:scripts/> <office:body> <text:h><text:title>pfe Forth Wordset List </text:title></text:h> <reference><title>pfe Forth Wordset List</title>






 <text:p text:style-name="Preformatted_20_Text">pfe-assembler-ext</text:p>
 <text:h text:style-name="Heading_20_3">ASSEMBLER Programming-Tools (see TOOLS-EXT) </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CODE ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">;CODE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">END-CODE ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"ASSEMBLER"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CODE ( "name" -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  call <text:span text:style-name="Source_20_Text">ALSO</text:span> and add ASSEMBLER wordlist if available. Add PROC ENTER
  assembler snippet as needed for the architecture into the PFA. The
  CFA is setup (a) with the PFA adress in traditional ITC or (b)
  with an infoblock as for sbr-coded colon words.
</text:p><text:p text:style-name="Text_20_body">
  Remember that not all architectures are support and that the
  ASSEMBLER wordset is not compiled into pfe by default. Use always
  the corresponding <text:span text:style-name="Source_20_Text">END-CODE</text:span> for each <text:span text:style-name="Source_20_Text">CODE</text:span> start. The new
  word name is not smudged.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">;CODE ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Does end the latest word (being usually some DOES&gt; part) and enters
  machine-level (in EXEC-mode). 
</text:p><text:p text:style-name="Text_20_body">
  BE AWARE:
  The TOOLS-EXT will not provide an <text:span text:style-name="Source_20_Text">END-CODE</text:span> or any other word in the
  <text:span text:style-name="Source_20_Text">ASSEMBLER</text:span> wordlist which is required to start any useful assembler 
  programming. After requiring ASSEMBLER-EXT you will see a second ";CODE"
  in the <text:span text:style-name="Source_20_Text">EXTENSIONS</text:span> wordlist that will also provide an optimized execution
  than the result of this standard-forth implemenation.
</text:p><text:p text:style-name="Text_20_body">
  The Standard-Forth implementation will actually compile a derivate of
  <text:span text:style-name="Source_20_Text">BRANCH</text:span> into the dictionary followed by <text:span text:style-name="Source_20_Text">;</text:span>. The compiled word
  will not jump to the target adress (following the execution token)
  but it will call the target adress via the host C stack. The target
  machine level word (C domain) will just return here for being
  returned (Forth domain). Hence <text:span text:style-name="Source_20_Text">END-CODE</text:span> may be a simple RET, comma!
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">END-CODE ( "name" -- )</text:span> =&gt; "ASSEMBLER"</text:p>
<text:p text:style-name="Text_20_body">  call <text:span text:style-name="Source_20_Text">PREVIOUS</text:span> and  add PROC LEAVE assembler snippet as needed
  for the architecture -  usually includes bits to "return from
  subroutine". Remember that not all architectures are support and
  PFE usually does only do variants of call-threading with a separate
  loop for the inner interpreter that does "call into subroutine".
  Some forth implementations do "jump into routine" and the PROC
  LEAVE part would do "jump to next routine" also known as 
  next-threading. The sbr-call-threading is usually similar to the
  native subroutine-coding of the host operating system. See <text:span text:style-name="Source_20_Text">CODE</text:span>
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-block-ext</text:p>
 <text:h text:style-name="Heading_20_3">Block Words + extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BLOCK ( block-u -- block-addr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BUFFER ( block-u -- block-addr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLUSH ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LOAD ( block-u -- ?? ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SAVE-BUFFERS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">UPDATE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EMPTY-BUFFERS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LIST ( block-u -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">THRU ( block1-u block2-u -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body">  </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BLOCK ( block-u -- block-addr )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  load the specified block into a block buffer
  and return the address of that block buffer
  - see also <text:span text:style-name="Source_20_Text">BUFFER</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BUFFER ( block-u -- block-addr )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  get the block buffer address for the specified 
  block - if it had not been loaded already it
  is <text:span text:style-name="Emphasis">not</text:span> filled with data from the disk
  unlike <text:span text:style-name="Source_20_Text">BLOCK</text:span> does.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FLUSH ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  call <text:span text:style-name="Source_20_Text">SAVE-BUFFERS</text:span> and then unassign all
  block buffers with <text:span text:style-name="Source_20_Text">EMPTY-BUFFERS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LOAD ( block-u -- ?? )</text:span> [FORTH] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  <text:span text:style-name="Source_20_Text">INTERPRET</text:span> the specified <text:span text:style-name="Source_20_Text">BLOCK</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SAVE-BUFFERS ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  write all modified buffer to
  the disk, see <text:span text:style-name="Source_20_Text">UPDATE</text:span> and
  <text:span text:style-name="Source_20_Text">FLUSH</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">UPDATE ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  mark the current block buffer as modified,
  see <text:span text:style-name="Source_20_Text">FLUSH</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EMPTY-BUFFERS ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  unassign all block buffers, does not even <text:span text:style-name="Source_20_Text">UPDATE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LIST ( block-u -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  display the block
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">THRU ( block1-u block2-u -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  <text:span text:style-name="Source_20_Text">LOAD</text:span> a number of block in sequence.
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-block-misc-ext</text:p>
 <text:h text:style-name="Heading_20_3">BLOCK-Misc Compatibility words </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CLOSE-BLOCKFILE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">OPEN-BLOCKFILE ( "filename" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CREATE-BLOCKFILE ( blocks-count "filename" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SET-BLOCKFILE ( block-file* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">0 CREATE-BLOCKFILE  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body">  B/BUF ( -- bytesperbuffer-count ) [EXT]
 </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CLOSE-BLOCKFILE ( -- )</text:span> [FTH] w32for =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  w32for-implementation:
</text:p><screen>  blockhandle -1 &amp;lt;&amp;gt; if flush close-file drop then
  -1 set-blockfile
</screen><text:p text:style-name="Text_20_body">  in pfe:
</text:p><screen>  : CLOSE-BLOCKFILE 
    BLOCK-FILE ?DUP IF FLUSH CLOSE-FILE DROP THEN 
    OFF&amp;gt; BLOCK-FILE ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">OPEN-BLOCKFILE ( "filename" -- )</text:span> [FTH] w32for =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  w32for-implementation:
</text:p><screen>    close-blockfile
    parse-word r/w open-file abort" failed to open block-file"
    set-blockfile
    empty-buffers 
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CREATE-BLOCKFILE ( blocks-count "filename" -- )</text:span> [FTH] w32for =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  w32for-implementation:
</text:p><screen>    close-blockfile
    parse-word r/w create-file abort" failed to create block-file"
    set-blockfile
    dup b/buf m* blockhandle resize-file
    abort" unable to create a file of that size"
    empty-buffers
    0 do i wipe loop 
    flush
</screen><text:p text:style-name="Text_20_body">  pfe does not wipe the buffers
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SET-BLOCKFILE ( block-file* -- )</text:span> [EXT] win32for =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  win32forth uses a system-filedescriptor where -1 means unused
  in the BLOCKHANDLE, but we use a "FILE*"-like structure, so NULL
  means NOT-IN-USE. Here we set it.
</text:p>
<text:p text:style-name="Text_20_body">0 CREATE-BLOCKFILE - no description, sorry</text:p>


<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-cdecl-ext</text:p>
 <text:h text:style-name="Heading_20_3">C-preprocessor declaration syntax </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">#ELSE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">#ENDIF ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">#IF ( -- C: state-save-flag mfth-if-magic S: ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">#IFDEF ( "word" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">#IFNDEF  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">#IFNOTDEF ( "word" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">#IS_TRUE ( C: state-save-flag mfth-if-magic S: test-flag -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">#IS_FALSE ( C: state-save-flag mfth-if-magic S: test-flag -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">#DEFINE  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">#PRAGMA  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">#ELSE ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  The implementation of #ELSE is done in C for speed and
  being less error prone. Better use the ANSI-compatible
  <text:span text:style-name="Source_20_Text">[IF]</text:span> <text:span text:style-name="Source_20_Text">[ELSE]</text:span> <text:span text:style-name="Source_20_Text">[THEN]</text:span> construct.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">#ENDIF ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  end of <text:span text:style-name="Source_20_Text">#IF</text:span> <text:span text:style-name="Source_20_Text">#IFDEF</text:span> <text:span text:style-name="Source_20_Text">#IFNOTDEF</text:span> and <text:span text:style-name="Source_20_Text">#ELSE</text:span> contructs
</text:p><screen>    (a dummy word that does actually nothing, but #ELSE may look for it)
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">#IF ( -- C: state-save-flag mfth-if-magic S: )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  prepares for a following <text:span text:style-name="Source_20_Text">#IS_TRUE</text:span> or <text:span text:style-name="Source_20_Text">#IS_FALSE</text:span>,
  does basically switch off compile-mode for the enclosed
  code. 
  better use the ANSI style <text:span text:style-name="Source_20_Text">[IF]</text:span> <text:span text:style-name="Source_20_Text">[ELSE]</text:span> <text:span text:style-name="Source_20_Text">[THEN]</text:span> construct.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">#IFDEF ( "word" -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  better use <text:span text:style-name="Source_20_Text">[DEFINED] word [IF]</text:span> - the word <text:span text:style-name="Source_20_Text">[IF]</text:span>
  is ANSI-conform.
</text:p>
<text:p text:style-name="Text_20_body">#IFNDEF - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">#IFNOTDEF ( "word" -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  better use <text:span text:style-name="Source_20_Text">[DEFINED] word [NOT] [IF]</text:span> - the word <text:span text:style-name="Source_20_Text">[IF]</text:span>
  and <text:span text:style-name="Source_20_Text">[ELSE]</text:span> are ANSI-conform, while <text:span text:style-name="Source_20_Text">#IFDEF</text:span> <text:span text:style-name="Source_20_Text">#ELSE</text:span> are not.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">#IS_TRUE ( C: state-save-flag mfth-if-magic S: test-flag -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  checks the condition on the <text:span text:style-name="Source_20_Text">CS-STACK</text:span>. 
  Pairs with <text:span text:style-name="Source_20_Text">#IF</text:span> 
  better use the ANSI style <text:span text:style-name="Source_20_Text">[IF]</text:span> <text:span text:style-name="Source_20_Text">[ELSE]</text:span> <text:span text:style-name="Source_20_Text">[THEN]</text:span> construct.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">#IS_FALSE ( C: state-save-flag mfth-if-magic S: test-flag -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  checks the condition on the <text:span text:style-name="Source_20_Text">CS-STACK</text:span>. 
  Pairs with <text:span text:style-name="Source_20_Text">#IF</text:span> 
  better use the ANSI style <text:span text:style-name="Source_20_Text">[IF]</text:span> <text:span text:style-name="Source_20_Text">[ELSE]</text:span> <text:span text:style-name="Source_20_Text">[THEN]</text:span> construct.
</text:p>
<text:p text:style-name="Text_20_body">#DEFINE - no description, sorry</text:p><text:p text:style-name="Text_20_body">#PRAGMA - no description, sorry</text:p>


<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-chain-ext</text:p>
 <text:h text:style-name="Heading_20_3">chain of executions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">link, ( some-list* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.chain ( some-chain* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.chains ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">chain-add ( some-chain* "word-to-add" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">chain-add-before ( some-chain* "word-to-add" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">do-chain ( some-chain* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body">  semicolon-chain ( -- semicolon-chain* ) [EXT] [OLD]
 * do not use.
 </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">link, ( some-list* -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<screen> 
  : link,        here over @ a, swap ! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">.chain ( some-chain* -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  show chain - compare with <text:span text:style-name="Source_20_Text">WORDS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">.chains ( -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  show all chains registered in the system - compare with <text:span text:style-name="Source_20_Text">VLIST</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">chain-add ( some-chain* "word-to-add" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  add chain item, for normal setup, at end of do-chain
</text:p><screen>  : chain-add ' &amp;gt;r begin dup @ while @ repeat here swap ! 0 , r&amp;gt; , ;
  ( chain-add begin dup @ while @ repeat  here swap ! 0, ' , )
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">chain-add-before ( some-chain* "word-to-add" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  add chain item, for reverse chain like BYE
</text:p><screen>  : chain-add-before ' &amp;gt;r here over @ , r&amp;gt; , swap ! ;
  ( chain-add-before link, ' , )
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">do-chain ( some-chain* -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  execute chain
</text:p><screen>  : do-chain being @ ?dup while dup&amp;gt;r cell+ @execute r&amp;gt; repeat ;
  
</screen>



<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-chainlist-ext</text:p>
 <text:h text:style-name="Heading_20_3">chainlists - executable wordlists </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NEW-WORDLIST ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.WORDS ( some-wordlist* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REDO-ALL-WORDS ( some-wordlist* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DO-ALL-WORDS ( some-wordlist* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DO-ALL-WORDS-WHILE-LOOP ( some-wordlist* test-xt* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DO-ALL-WORDS-WHILE ( some-wordlist* "word" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DO-SYNONYM ( some-wordlist* "do-name" "orig-name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DO-ALIAS ( some-xt* definition-wordlist* "do-name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ALIAS-ATEXIT ( some-xt* "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body">  ABORT-WORDLIST ( -- abort-redo-wordlist* ) [EXT]
 *
 * => ABORT inits will run this wordlist, first added being run first
 : ABORT ... ABORT-WORDLIST REDO-ALL-WORDS ... ;
 WORDLIST VALUE ABORT-WORDLIST
 *                                       => REDO-ALL-WORDS / => PROMPT-WORDLIST
 </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NEW-WORDLIST ( "name" -- )</text:span> [EXT] [DOES: -- new-wordlist* ] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  create a new <text:span text:style-name="Source_20_Text">WORDLIST</text:span> and a "name" with a runtime of ( -- wordlist* )
</text:p><text:p text:style-name="Text_20_body">
</text:p><screen>  : NEW-WORDLIST WORDLIST VALUE ;
  : NEW-WORDLIST CREATE: WORDLIST ;
</screen><text:p text:style-name="Text_20_body">                          usually used for <text:span text:style-name="Source_20_Text">DO-ALL-WORDS</text:span> / <text:span text:style-name="Source_20_Text">DO-SYNONYM</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">.WORDS ( some-wordlist* -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  print the <text:span text:style-name="Source_20_Text">WORDLIST</text:span> interactivly to the user
</text:p><text:p text:style-name="Text_20_body">
</text:p><screen>  : .WORDS ALSO SET-CONTEXT WORDS PREVIOUS ;
</screen><text:p text:style-name="Text_20_body">
  <text:span text:style-name="Source_20_Text">WORDS</text:span> / <text:span text:style-name="Source_20_Text">ORDER</text:span> / <text:span text:style-name="Source_20_Text">NEW-WORDLIST</text:span> / <text:span text:style-name="Source_20_Text">DO-ALL-WORDS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REDO-ALL-WORDS ( some-wordlist* -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  <text:span text:style-name="Source_20_Text">EXECUTE</text:span> each entry in the wordlist in the original order defined
</text:p><text:p text:style-name="Text_20_body">
</text:p><screen>  : REDO-ALL-WORDS
       0 FIRST-NAME
       0 SWAP ( under )
       BEGIN ?DUP WHILE 
          DUP NAME&amp;gt; SWAP ( under )
          NAME-NEXT
       REPEAT
       BEGIN ?DUP WHILE
          EXECUTE
       REPEAT
  ;
</screen><text:p text:style-name="Text_20_body">  to run the <text:span text:style-name="Source_20_Text">NEW-WORDLIST</text:span> in last-run-first order, use <text:span text:style-name="Source_20_Text">DO-ALL-WORDS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DO-ALL-WORDS ( some-wordlist* -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  <text:span text:style-name="Source_20_Text">EXECUTE</text:span> each entry in the wordlist in the reverse order defined
</text:p><text:p text:style-name="Text_20_body">
</text:p><screen>  : DO-ALL-WORDS
       0 FIRST-NAME
       BEGIN ?DUP WHILE 
          DUP NAME&amp;gt; EXECUTE
          NAME-NEXT
       REPEAT
  ;
</screen><text:p text:style-name="Text_20_body">  to run the <text:span text:style-name="Source_20_Text">NEW-WORDLIST</text:span> in original order, use <text:span text:style-name="Source_20_Text">REDO-ALL-WORDS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DO-ALL-WORDS-WHILE-LOOP ( some-wordlist* test-xt* -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  <text:span text:style-name="Source_20_Text">EXECUTE</text:span> each entry in the wordlist in the reverse order defined
     but only as long as after EXECUTE of "word" a TRUE flag is left
     on the stack. The wordlist execution is cut when a FALSE flag is seen.
     (the current wordlist entry is _not_ on the stack!)
</text:p><text:p text:style-name="Text_20_body">
</text:p><screen>  : DO-ALL-WORDS-WHILE-LOOP &amp;gt;R
       0 FIRST-NAME
       BEGIN ?DUP WHILE 
          R@ EXECUTE 0= IF R&amp;gt;DROP DROP EXIT THEN
          DUP NAME&amp;gt; EXECUTE
          NAME-NEXT
       REPEAT R&amp;gt;DROP
  ;
</screen><text:p text:style-name="Text_20_body">  compare with <text:span text:style-name="Source_20_Text">DO-ALL-WORDS-WHILE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DO-ALL-WORDS-WHILE ( some-wordlist* "word" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  <text:span text:style-name="Source_20_Text">EXECUTE</text:span> each entry in the wordlist in the reverse order defined
     but only as long as after EXECUTE of "word" a TRUE flag is left
     on the stack. The wordlist execution is cut when a FALSE flag is seen.
     (the current wordlist entry is _not_ on the stack!)
</text:p><text:p text:style-name="Text_20_body">
</text:p><screen>  : DO-ALL-WORDS-WHILE ' 
       STATE @ IF LITERAL, COMPILE DO-ALL-WORDS-WHILE-LOOP EXIT THEN
       &amp;gt;R 0 FIRST-NAME
       BEGIN ?DUP WHILE 
          R@ EXECUTE 0= IF R&amp;gt;DROP DROP EXIT THEN
          DUP NAME&amp;gt; EXECUTE
          NAME-NEXT
       REPEAT R&amp;gt;DROP
  ;
</screen><text:p text:style-name="Text_20_body">  to run the <text:span text:style-name="Source_20_Text">NEW-WORDLIST</text:span> in original order, use <text:span text:style-name="Source_20_Text">REDO-ALL-WORDS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DO-SYNONYM ( some-wordlist* "do-name" "orig-name" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  create a <text:span text:style-name="Source_20_Text">SYNONYM</text:span> in the specified wordlist.
</text:p><text:p text:style-name="Text_20_body">
</text:p><screen>  : DO-SYNONYM GET-CURRENT SWAP SET-CURRENT SYNONYM SET-CURRENT ;
</screen><text:p text:style-name="Text_20_body">
  <text:span text:style-name="Source_20_Text">DO-ALIAS</text:span> / <text:span text:style-name="Source_20_Text">DO-ALL-WORDS</text:span> / <text:span text:style-name="Source_20_Text">NEW-WORDLIST</text:span> / <text:span text:style-name="Source_20_Text">WORDLIST</text:span> / <text:span text:style-name="Source_20_Text">ORDER</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DO-ALIAS ( some-xt* definition-wordlist* "do-name" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  create an <text:span text:style-name="Source_20_Text">ALIAS</text:span> with the exec-token in the specified wordlist
</text:p><text:p text:style-name="Text_20_body">
</text:p><screen>  : DO-ALIAS GET-CURRENT SWAP SET-CURRENT SWAP ALIAS SET-CURRENT ;
</screen><text:p text:style-name="Text_20_body">                                                            <text:span text:style-name="Source_20_Text">DO-SYNONYM</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ALIAS-ATEXIT ( some-xt* "name" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  create a defer word that is initialized with the given x-token.
</text:p><text:p text:style-name="Text_20_body">
</text:p><screen>  : ALIAS-ATEXIT ATEXIT-WORDLIST DO-ALIAS ;
</screen><text:p text:style-name="Text_20_body">                                         <text:span text:style-name="Source_20_Text">ATEXIT-WORDLIST</text:span> <text:span text:style-name="Source_20_Text">DO-ALL-WORDS</text:span>
</text:p>



<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-complex-ext</text:p>
 <text:h text:style-name="Heading_20_3">Complex floating point </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">R2P1  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">T2P1  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LAMBDA/EPSILON  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z@ ( addr --  f: z ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z! ( addr f: z -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">X@ ( zaddr --  f: x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">X! ( zaddr f: x -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Y@ ( zaddr --  f: y ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Y! ( zaddr f: x -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z. (f: z -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZS. (f: z -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REAL (f: x y -- x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">IMAG (f: x y -- y ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CONJG (f: x y -- x -y ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZDROP (f: z -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZDUP (f: z -- z z ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZSWAP (f: z1 z2 -- z2 z1 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZOVER (f: z1 z2 -- z1 z2 z1 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZNIP (f: z1 z2 -- z2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZTUCK (f: z1 z2 -- z2 z1 z2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZROT (f: z1 z2 z3 -- z2 z3 z1 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">-ZROT (f: z1 z2 z3 -- z3 z1 z2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z+ (f: z1 z2 -- z1+z2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z- (f: z1 z2 -- z1-z2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z* (f: x y u v -- x*u-y*v  x*v+y*u ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z/ (f: u+iv z -- u/z+iv/z ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZNEGATE (f: z -- -z ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z2* (f: z -- z*2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z2/ (f: z -- z/2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">I* (f: x y -- -y x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">-I* (f: x y -- y -x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">1/Z (f: z -- 1/z ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z^2 (f: z -- z^2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">|Z|^2 (f: x y -- |z|^2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z^N ( n f: z -- z^n ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">X+ (f: z a -- x+a y ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">X- (f: z a -- x-a y ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Y+ (f: z a -- x y+a ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Y- (f: z a -- x y-a ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z*F (f: x y f -- x*f y*f ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z/F (f: x y f -- x/f y/f ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F*Z (f: f x y -- f*x f*y ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F/Z (f: f z -- f/z ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z*I*F (f: z f --  z*if ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">-I*Z/F (f: z f --  z/[if] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">I*F*Z (f: f z -- if*z ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">I*F/Z (f: f z -- [0+if]/z ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z*&gt;REAL (f: z1 z2 -- Re[z1*z2] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z*&gt;IMAG (f: z1 z2 -- Im[z1*z2] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">|Z| (f: x y -- |z| ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZBOX (f: z -- box[z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ARG (f: z -- principal.arg[z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;POLAR (f: x y -- r theta ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">POLAR&gt; (f: r theta -- x y ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZSSQS (f: z -- rho s: k ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZSQRT (f: z -- sqrt[z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZLN (f: z -- ln|z|+i*theta ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZEXP (f: z -- exp[z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z^ (f: x y u v -- [x+iy]^[u+iv] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZCOSH (f: z -- cosh[z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZSINH (f: z -- sinh[z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZTANH (f: z -- tanh[z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZCOTH (f: z -- 1/tanh[z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZCOS (f: z -- cosh[i*z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZSIN (f: z -- -i*sinh[i*z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZTAN (f: z -- -i*tanh[i*z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZCOT (f: z -- -i*coth[-i*z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZACOS (f: z -- u+iv=acos[z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZACOSH (f: z -- u+iv=acosh[z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZASIN (f: z -- u+iv=asin[z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZASINH (f: z -- -i*asin[i*z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZATANH (f: z -- u+iv=atanh[z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZATAN (f: z -- -i*atanh[i*z] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZLITERAL  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body">R2P1 - no description, sorry</text:p><text:p text:style-name="Text_20_body">T2P1 - no description, sorry</text:p><text:p text:style-name="Text_20_body">LAMBDA/EPSILON - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z@ ( addr --  f: z )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z! ( addr f: z -- )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">X@ ( zaddr --  f: x )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">X! ( zaddr f: x -- )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Y@ ( zaddr --  f: y )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Y! ( zaddr f: x -- )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z. (f: z -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Emit the complex number, including the sign of zero when
  <text:span text:style-name="Source_20_Text">signbit()</text:span> is available.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZS. (f: z -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Emit the complex number in scientific notation, including the
  sign of zero when <text:span text:style-name="Source_20_Text">signbit()</text:span> is available.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REAL (f: x y -- x )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">IMAG (f: x y -- y )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CONJG (f: x y -- x -y )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZDROP (f: z -- )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZDUP (f: z -- z z )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZSWAP (f: z1 z2 -- z2 z1 )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZOVER (f: z1 z2 -- z1 z2 z1 )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZNIP (f: z1 z2 -- z2 )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZTUCK (f: z1 z2 -- z2 z1 z2 )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZROT (f: z1 z2 z3 -- z2 z3 z1 )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">-ZROT (f: z1 z2 z3 -- z3 z1 z2 )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z+ (f: z1 z2 -- z1+z2 )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z- (f: z1 z2 -- z1-z2 )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z* (f: x y u v -- x*u-y*v  x*v+y*u )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Uses the algorithm followed by JVN:
      (x+iy)*(u+iv) = [(x+y)*u - y*(u+v)] + i[(x+y)*u + x*(v-u)]
  Requires 3 multiplications and 5 additions.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z/ (f: u+iv z -- u/z+iv/z )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Kahan-like algorithm *without* due attention to spurious
  over/underflows and zeros and infinities.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZNEGATE (f: z -- -z )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z2* (f: z -- z*2 )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z2/ (f: z -- z/2 )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">I* (f: x y -- -y x )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">-I* (f: x y -- y -x )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">1/Z (f: z -- 1/z )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Kahan algorithm *without* due attention to spurious
  over/underflows and zeros and infinities.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z^2 (f: z -- z^2 )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Kahan algorithm without removal of any spurious NaN created
  by overflow.  It deliberately uses (x-y)(x+y) instead of
  x^2-y^2 for the real part.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">|Z|^2 (f: x y -- |z|^2 )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z^N ( n f: z -- z^n )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">X+ (f: z a -- x+a y )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">X- (f: z a -- x-a y )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Y+ (f: z a -- x y+a )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Y- (f: z a -- x y-a )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z*F (f: x y f -- x*f y*f )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z/F (f: x y f -- x/f y/f )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F*Z (f: f x y -- f*x f*y )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F/Z (f: f z -- f/z )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Kahan algorithm *without* due attention to spurious
  over/underflows and zeros and infinities.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z*I*F (f: z f --  z*if )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">-I*Z/F (f: z f --  z/[if] )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">I*F*Z (f: f z -- if*z )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">I*F/Z (f: f z -- [0+if]/z )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Kahan algorithm *without* due attention to spurious
  over/underflows and zeros and infinities.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z*&gt;REAL (f: z1 z2 -- Re[z1*z2] )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Compute the real part of the complex product without
  computing the imaginary part.  Recommended by Kahan to avoid
  gratuitous overflow or underflow signals from the unnecessary
  part.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z*&gt;IMAG (f: z1 z2 -- Im[z1*z2] )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Compute the imaginary part of the complex product without
  computing the real part.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">|Z| (f: x y -- |z| )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZBOX (f: z -- box[z] )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Defined *only* for zero and infinite arguments. This difffers
  from Kahan's <text:span text:style-name="Source_20_Text">CBOX</text:span> [p. 198] by conserving signs when only
  one of x or y is infinite, consistent with the other cases, and
  with its use in his <text:span text:style-name="Source_20_Text">ARG</text:span> [p. 199].
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ARG (f: z -- principal.arg[z] )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&gt;POLAR (f: x y -- r theta )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Convert the complex number z to its polar representation,
  where theta is the principal argument.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">POLAR&gt; (f: r theta -- x y )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZSSQS (f: z -- rho s: k )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Compute rho = |(x+iy)/2^k|^2, scaled to avoid overflow or
  underflow, and leave the scaling integer k.  Kahan, p. 200.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZSQRT (f: z -- sqrt[z] )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Compute the principal branch of the square root, with
  Re sqrt[z] &gt;= 0.  Kahan, p. 201.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZLN (f: z -- ln|z|+i*theta )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Compute the principal branch of the complex natural
  logarithm. The angle theta is the principal argument.  This
  code uses Kahan's algorithm for the scaled logarithm
  <text:span text:style-name="Source_20_Text">CLOGS(z,J)</text:span> = ln(z*2^J), with J=0 and blind choices of the
  threshholds T0, T1, and T2.  Namely, T0 = 1/sqrt(2), T1 =
  5/4, and T2 = 3;
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZEXP (f: z -- exp[z] )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z^ (f: x y u v -- [x+iy]^[u+iv] )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Compute in terms of the principal argument of x+iy.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZCOSH (f: z -- cosh[z] )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZSINH (f: z -- sinh[z] )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZTANH (f: z -- tanh[z] )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Kahan, p. 204, including his divide by zero signal
  suppression for infinite values of <text:span text:style-name="Source_20_Text">tan()</text:span>.  To quote the very
  informative "=&gt;'man math'" on our Darwin system about IEEE 754:
  "Divide-by-Zero is signaled only when a function takes
  exactly infinite values at finite operands."
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZCOTH (f: z -- 1/tanh[z] )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZCOS (f: z -- cosh[i*z] )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZSIN (f: z -- -i*sinh[i*z] )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZTAN (f: z -- -i*tanh[i*z] )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZCOT (f: z -- -i*coth[-i*z] )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZACOS (f: z -- u+iv=acos[z] )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Kahan, p.202.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZACOSH (f: z -- u+iv=acosh[z] )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Kahan, p.203.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZASIN (f: z -- u+iv=asin[z] )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Kahan, p.203.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZASINH (f: z -- -i*asin[i*z] )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Kahan, p. 203, couth.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZATANH (f: z -- u+iv=atanh[z] )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Kahan, p. 203.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZATAN (f: z -- -i*atanh[i*z] )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Kahan, p. 204, couth.
</text:p>
<text:p text:style-name="Text_20_body">ZLITERAL - no description, sorry</text:p>








 <text:p text:style-name="Preformatted_20_Text">pfe-core-ext</text:p>
 <text:h text:style-name="Heading_20_3">Core words + extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">! ( value some-cell* -- | value addr* -- [?] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text"># ( n,n -- n,n' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">#&gt; ( n,n -- hold-str-ptr hold-str-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">#S ( n,n -- 0,0 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">( ( 'comment&amp;lt;closeparen&amp;gt;' -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">* ( a# b# -- mul-a#' | a b -- mul-a' [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">*/ ( a# b# c# -- scale-a#' | a b c -- scale-a' [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">*/MOD ( a# b# c# -- div-a# mod-a# | a b c -- div-a mod-a [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">+ ( a* b# -- a*' | a# b* -- b*' | a# b# -- a#' | a b -- a' [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">+! ( value# some-cell* -- | value some* -- [?] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">+LOOP ( increment# R: some,loop -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">, ( value* -- | value# -- | value -- [?] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">- ( a* b# -- a*' | a# b* -- b*' | a# b# -- a#' | a* b* -- diff-b#' | a b -- a' [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">. ( value# -- | value* -- [?] | value -- [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">." ( [string&amp;lt;"&amp;gt;] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">/ ( a# b#  -- a#' | a b -- a' [???] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">/MOD ( a# b# -- div-a#' mod-a#' | a b -- div-a' mod-a' [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">0&lt; ( value -- test-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">0= ( 0 -- test-flag! | value! -- 0 | value -- test-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">1+ ( value -- value' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">1- ( value -- value' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2! ( x,x variable* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2* ( a# -- a#' | a -- a' [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2/ ( a# -- a#' | a -- a' [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2@ ( variable* -- x,x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2DROP ( a b -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2DUP ( a,a -- a,a a,a ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2OVER ( a,a b,b -- a,a b,b a,a ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2SWAP ( a,a b,b -- b,b a,a ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">; ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&lt; ( a* b* -- test-flag | a# b# -- test-flag | a b -- test-flag [?] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&lt;# ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">= ( a* b* -- test-flag | a# b# -- test-flag | a b -- test-flag [?] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt; ( a* b* -- test-flag | a# b# -- test-flag | a b -- test-flag [?] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;BODY ( some-xt* -- some-body* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;NUMBER ( a,a str-ptr str-len -- a,a' str-ptr' str-len) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;R ( value -- R: value ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?DUP ( 0 -- 0 | value! -- value! value! | value -- 0 | value! value! ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">@ ( value* -- value ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ABS ( value# -- value#' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ACCEPT ( buffer-ptr buffer-max -- buffer-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ALIGN ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ALIGNED ( addr -- addr' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ALLOT ( allot-count -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">AND ( value mask -- value' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BEGIN ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">C! ( value# variable#* -- | value# variable* [?] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">C, ( value# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">C@ ( value#* -- value# | value* -- value# [?] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CELL+ ( value -- value' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CELLS ( value# -- value#' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CHAR ( 'word' -- char# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CHAR+ ( value -- value' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CHARS ( value# -- value#' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">COUNT ( string-bstr* -- string-ptr' string-len | some* -- some*' some-len [?] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CR ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DECIMAL ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DEPTH ( -- depth# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DO ( end# start# | end* start* -- R: some,loop ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DOES&gt; ( -- does* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DROP ( a -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DUP ( a -- a a ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ELSE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EMIT ( char# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ENVIRONMENT? ( name-ptr name-len -- 0 | ?? name-flag! ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EVALUATE ( str-ptr str-len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EXECUTE ( some-xt* -- ??? ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EXIT ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILL ( mem-ptr mem-len char# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FIND ( name-bstr* -- name-bstr* 0 | name-xt* -1|1 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FM/MOD ( n1,n1# n2# -- div-n1# mod-n1# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">HERE ( -- here* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">HOLD ( char# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">I ( R: some,loop -- S: i# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">IF ( value -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">IMMEDIATE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INVERT ( value# -- value#' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">J ( R: some,loop -- S: j# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">KEY ( -- char# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LEAVE ( R: some,loop -- R: some,loop ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LITERAL ( C: value -- S: value ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LOOP ( R: some,loop -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LSHIFT ( value# shift-count -- value#' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">M* ( a# b# -- a,a#' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MAX ( a# b# -- a#|b# | a* b* -- a*|b* | a b -- a|b [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MIN ( a# b# -- a#|b# | a* b* -- a*|b* | a b -- a|b [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MOD ( a# b# -- mod-a# | a b# -- mod-a# [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MOVE ( from-ptr to-ptr move-len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NEGATE ( value# -- value#' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">OR ( a b# -- a' | a# b -- b' | a b -- a' [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">OVER ( a b -- a b a ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">POSTPONE ( [word] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">QUIT ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">R&gt; ( R: a -- a R: ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">R@ ( R: a -- a R: a ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RECURSE ( ? -- ? ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REPEAT ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ROT ( a b c -- b c a ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RSHIFT ( value# shift-count# -- value#' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">S" ( [string&amp;lt;"&amp;gt;] -- string-ptr string-len) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">S&gt;D ( a# -- a,a#' | a -- a,a#' [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SIGN ( a# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SM/REM ( a,a# b# -- div-a# rem-a# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SOURCE ( -- buffer* IN-offset# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SPACE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SPACES ( space-count -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SWAP ( a b -- b a ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">THEN ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TYPE ( string-ptr string-len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">U. ( value# -- | value -- [?] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">U&lt; ( a b -- test-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">UM* ( a# b# -- a,a#' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">UM/MOD ( a,a# b# -- div-a#' mod-a#' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">UNLOOP ( R: some,loop -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">UNTIL ( test-flag -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">WHILE ( test-flag -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">WORD ( delimiter-char# -- here* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">XOR ( a# b# -- a#' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[ ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">['] ( [name] -- name-xt* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[CHAR] ( [word] -- char# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">] ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.( ( [message&amp;lt;closeparen&amp;gt;] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.R ( value# precision# -- | value precision# -- [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">0&lt;&gt; ( 0 -- 0 | value! -- value-flag! | value -- value-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">0&gt; ( 0 -- 0 | value! -- value-flag! | value -- value-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2&gt;R ( a,a -- R: a,a ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2R&gt; ( R: a,a -- a,a R: ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2R@ ( R: a,a -- a,a R: a,a ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&lt;&gt; ( a b -- a-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?DO ( end# start# | end* start* -- R: some,loop ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">AGAIN ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">C" ( [string&amp;lt;"&amp;gt;] -- string-bstr* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CASE ( value -- value ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">COMPILE, ( some-xt* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CONVERT ( a,a# string-bstr* -- a,a# a-len# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ENDCASE ( value -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ENDOF ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ERASE ( buffer-ptr buffer-len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EXPECT ( str-ptr str-len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">HEX ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NIP ( a b -- b ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">OF ( value test -- value ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PAD ( -- pad* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PARSE ( delim-char# -- buffer-ptr buffer-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PICK ( value ...[n-1] n -- value ...[n-1] value ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">QUERY ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REFILL ( -- refill-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RESTORE-INPUT ( input...[input-len] input-len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ROLL ( value ...[n-1] n -- ...[n-1] value ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SAVE-INPUT ( -- input...[input-len] input-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TO ( value [name] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TUCK ( a b -- b a b ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">U.R ( value# precision# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">U&gt; ( a b -- a-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">UNUSED ( -- unused-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">WITHIN ( a# b# c# -- a-flag | a* b* c* -- a-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[COMPILE] ( [word] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">\ ( [comment&amp;lt;eol&amp;gt;] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PARSE-WORD ( "chars" -- buffer-ptr buffer-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PARSE-NAME ( "chars" -- buffer-ptr buffer-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CFA' ( 'name' -- name-xt* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">STACK-CELLS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"ENVIRONMENT"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RETURN-STACK-CELLS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"ENVIRONMENT"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">! ( value some-cell* -- | value addr* -- [?] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  store value at addr (sizeof <text:span text:style-name="Source_20_Text">CELL</text:span>)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis"># ( n,n -- n,n' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see also <text:span text:style-name="Source_20_Text">HOLD</text:span> for old-style forth-formatting words
  and <text:span text:style-name="Source_20_Text">PRINTF</text:span> of the C-style formatting - this word
  divides the argument by <text:span text:style-name="Source_20_Text">BASE</text:span> and add it to the
  picture space - it should be used inside of <text:span text:style-name="Source_20_Text">&lt;#</text:span>
  and <text:span text:style-name="Source_20_Text">#&gt;</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">#&gt; ( n,n -- hold-str-ptr hold-str-len )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see also <text:span text:style-name="Source_20_Text">HOLD</text:span> for old-style forth-formatting words
  and <text:span text:style-name="Source_20_Text">PRINTF</text:span> of the C-style formatting - this word
  drops the argument and returns the picture space
  buffer
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">#S ( n,n -- 0,0 )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see also <text:span text:style-name="Source_20_Text">HOLD</text:span> for old-style forth-formatting words
  and <text:span text:style-name="Source_20_Text">PRINTF</text:span> of the C-style formatting - this word
  does repeat the word <text:span text:style-name="Source_20_Text">#</text:span> for a number of times, until
  the argument becomes zero. Hence the result is always
  null - it should be used inside of <text:span text:style-name="Source_20_Text">&lt;#</text:span> and <text:span text:style-name="Source_20_Text">#&gt;</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">( ( 'comment&amp;lt;closeparen&amp;gt;' -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  eat everything up to the next closing paren - treat it
  as a comment.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">* ( a# b# -- mul-a#' | a b -- mul-a' [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the multiply of the two args
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">*/ ( a# b# c# -- scale-a#' | a b c -- scale-a' [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  regard the b/c as element Q - this word
  has an advantage over the sequence of <text:span text:style-name="Source_20_Text">*</text:span>
  and <text:span text:style-name="Source_20_Text">/</text:span> by using an intermediate double-cell
  value
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">*/MOD ( a# b# c# -- div-a# mod-a# | a b c -- div-a mod-a [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  has an adavantage over the sequence of <text:span text:style-name="Source_20_Text">*</text:span>
  and <text:span text:style-name="Source_20_Text">/MOD</text:span> by using an intermediate double-cell
  value.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">+ ( a* b# -- a*' | a# b* -- b*' | a# b# -- a#' | a b -- a' [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the sum of the two args
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">+! ( value# some-cell* -- | value some* -- [?] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  add val to the value found in addr
</text:p><screen>  simulate:
    : +! TUCK @ + SWAP ! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">+LOOP ( increment# R: some,loop -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  compile <text:span text:style-name="Source_20_Text">((+LOOP))</text:span> which will use the increment
  as the loop-offset instead of just 1. See the
  <text:span text:style-name="Source_20_Text">DO</text:span> and <text:span text:style-name="Source_20_Text">LOOP</text:span> construct.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">, ( value* -- | value# -- | value -- [?] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  store the value in the dictionary
</text:p><screen>  simulate:
    : , DP  1 CELLS DP +!  ! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">- ( a* b# -- a*' | a# b* -- b*' | a# b# -- a#' | a* b* -- diff-b#' | a b -- a' [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the difference of the two arguments
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">. ( value# -- | value* -- [?] | value -- [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  print the numerical value to stdout - uses <text:span text:style-name="Source_20_Text">BASE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">." ( [string&amp;lt;"&amp;gt;] -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  print the string to stdout
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">/ ( a# b#  -- a#' | a b -- a' [???] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the quotient of the two arguments
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">/MOD ( a# b# -- div-a#' mod-a#' | a b -- div-a' mod-a' [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  divide a and b and return both
  quotient n and remainder m
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">0&lt; ( value -- test-flag )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return a flag that is true if val is lower than zero
</text:p><screen>  simulate:
   : 0&amp;lt; 0 &amp;lt; ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">0= ( 0 -- test-flag! | value! -- 0 | value -- test-flag )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return a flag that is true if val is just zero
</text:p><screen>  simulate:
   : 0= 0 = ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">1+ ( value -- value' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the value incremented by one
</text:p><screen>  simulate:
   : 1+ 1 + ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">1- ( value -- value' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the value decremented by one
</text:p><screen>  simulate:
    : 1- 1 - ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2! ( x,x variable* -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  double-cell store
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2* ( a# -- a#' | a -- a' [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  multiplies the value with two - but it
  does actually use a shift1 to be faster
</text:p><screen>  simulate:
   : 2* 2 * ; ( canonic) : 2* 1 LSHIFT ; ( usual)
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2/ ( a# -- a#' | a -- a' [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  divides the value by two - but it
  does actually use a shift1 to be faster
</text:p><screen>  simulate:
   : 2/ 2 / ; ( canonic) : 2/ 1 RSHIFT ; ( usual)
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2@ ( variable* -- x,x )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  double-cell fetch
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2DROP ( a b -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  double-cell drop, also used to drop two items
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2DUP ( a,a -- a,a a,a )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  double-cell duplication, also used to duplicate
  two items
</text:p><screen>  simulate:
    : 2DUP OVER OVER ; ( wrong would be : 2DUP DUP DUP ; !!)
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2OVER ( a,a b,b -- a,a b,b a,a )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  double-cell over, see <text:span text:style-name="Source_20_Text">OVER</text:span> and <text:span text:style-name="Source_20_Text">2DUP</text:span>
</text:p><screen>  simulate:
    : 2OVER SP@ 2 CELLS + 2@ ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2SWAP ( a,a b,b -- b,b a,a )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  double-cell swap, see <text:span text:style-name="Source_20_Text">SWAP</text:span> and <text:span text:style-name="Source_20_Text">2DUP</text:span>
</text:p><screen>  simulate:
    : 2SWAP LOCALS| B1 B2 A1 A2 | B2 B1 A2 A1 ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">; ( -- )</text:span> [ANS] [EXIT] [END] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  compiles <text:span text:style-name="Source_20_Text">((;))</text:span> which does <text:span text:style-name="Source_20_Text">EXIT</text:span> the current
  colon-definition. It does then end compile-mode
  and returns to execute-mode. See <text:span text:style-name="Source_20_Text">:</text:span> and <text:span text:style-name="Source_20_Text">:NONAME</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&lt; ( a* b* -- test-flag | a# b# -- test-flag | a b -- test-flag [?] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return a flag telling if a is lower than b
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&lt;# ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see also <text:span text:style-name="Source_20_Text">HOLD</text:span> for old-style forth-formatting words
  and <text:span text:style-name="Source_20_Text">PRINTF</text:span> of the C-style formatting - this word
  does initialize the pictured numeric output space.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">= ( a* b* -- test-flag | a# b# -- test-flag | a b -- test-flag [?] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return a flag telling if a is equal to b
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&gt; ( a* b* -- test-flag | a# b# -- test-flag | a b -- test-flag [?] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return a flag telling if a is greater than b
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&gt;BODY ( some-xt* -- some-body* )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  adjust the execution-token (ie. the CFA) to point
  to the parameter field (ie. the PFA) of a word.
  this is not a constant operation - most words have their
  parameters at "1 CELLS +" but CREATE/DOES-words have the
  parameters at "2 CELLS +" and ROM/USER words go indirect
  with a rom'ed offset i.e. "CELL + @ UP +"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&gt;NUMBER ( a,a str-ptr str-len -- a,a' str-ptr' str-len)</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  try to convert a string into a number, and place
  that number at a,a respeciting <text:span text:style-name="Source_20_Text">BASE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&gt;R ( value -- R: value )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  save the value onto the return stack. The return
  stack must be returned back to clean state before
  an exit and you should note that the return-stack
  is also touched by the <text:span text:style-name="Source_20_Text">DO</text:span> ... <text:span text:style-name="Source_20_Text">WHILE</text:span> loop.
  Use <text:span text:style-name="Source_20_Text">R&gt;</text:span> to clean the stack and <text:span text:style-name="Source_20_Text">R@</text:span> to get the
  last value put by <text:span text:style-name="Source_20_Text">&gt;R</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">?DUP ( 0 -- 0 | value! -- value! value! | value -- 0 | value! value! )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  one of the rare words whose stack-change is
  condition-dependet. This word will duplicate
  the value only if it is not zero. The usual
  place to use it is directly before a control-word
  that can go to different places where we can
  spare an extra <text:span text:style-name="Source_20_Text">DROP</text:span> on the is-null-part.
  This makes the code faster and often a little
  easier to read.
</text:p><screen>  example:
    : XX BEGIN ?DUP WHILE DUP . 2/ REPEAT ; instead of
    : XX BEGIN DUP WHILE DUP . 2/ REPEAT DROP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">@ ( value* -- value )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  fetch the value from the variables address
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ABS ( value# -- value#' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the absolute value
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ACCEPT ( buffer-ptr buffer-max -- buffer-len )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  get a string from terminal into the named input
  buffer, returns the number of bytes being stored
  in the buffer. May provide line-editing functions.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ALIGN ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  will make the dictionary aligned, usually to a
  cell-boundary, see <text:span text:style-name="Source_20_Text">ALIGNED</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ALIGNED ( addr -- addr' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  uses the value (being usually a dictionary-address)
  and increment it to the required alignment for the
  dictionary which is usually in <text:span text:style-name="Source_20_Text">CELLS</text:span> - see also
  <text:span text:style-name="Source_20_Text">ALIGN</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ALLOT ( allot-count -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  make room in the dictionary - usually called after
  a <text:span text:style-name="Source_20_Text">CREATE</text:span> word like <text:span text:style-name="Source_20_Text">VARIABLE</text:span> or <text:span text:style-name="Source_20_Text">VALUE</text:span>
  to make for an array of variables. Does not
  initialize the space allocated from the dictionary-heap.
  The count is in bytes - use <text:span text:style-name="Source_20_Text">CELLS</text:span> ALLOT to allocate
  a field of cells.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">AND ( value mask -- value' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  mask with a bitwise and - be careful when applying
  it to logical values.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BEGIN ( -- )</text:span> [ANS] [LOOP] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  start a control-loop, see <text:span text:style-name="Source_20_Text">WHILE</text:span> and <text:span text:style-name="Source_20_Text">REPEAT</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">C! ( value# variable#* -- | value# variable* [?] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  store the byte-value at address, see =&gt; !
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">C, ( value# -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  store a new byte-value in the dictionary, implicit 1 ALLOT,
  see =&gt; ,
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">C@ ( value#* -- value# | value* -- value# [?] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  fetch a byte-value from the address, see <text:span text:style-name="Source_20_Text">@</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CELL+ ( value -- value' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  adjust the value by adding a single Cell's width
  - the value is often an address or offset, see <text:span text:style-name="Source_20_Text">CELLS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CELLS ( value# -- value#' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  scale the value by the sizeof a Cell
  the value is then often applied to an address or
  fed into <text:span text:style-name="Source_20_Text">ALLOT</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CHAR ( 'word' -- char# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the (ascii-)value of the following word's
  first character.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CHAR+ ( value -- value' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  increment the value by the sizeof one char
  - the value is often a pointer or an offset,
  see <text:span text:style-name="Source_20_Text">CHARS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CHARS ( value# -- value#' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  scale the value by the sizeof a char
  - the value is then often applied to an address or
  fed into <text:span text:style-name="Source_20_Text">ALLOT</text:span> (did you expect that sizeof(p4char)
  may actually yield 2 bytes?)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">COUNT ( string-bstr* -- string-ptr' string-len | some* -- some*' some-len [?] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  usually before calling <text:span text:style-name="Source_20_Text">TYPE</text:span>
</text:p><text:p text:style-name="Text_20_body">
  (as an unwarranted extension, this word does try to be idempotent).
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CR ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  print a carriage-return/new-line on stdout
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DECIMAL ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  set the <text:span text:style-name="Source_20_Text">BASE</text:span> to 10
</text:p><screen>  simulate:
    : DECIMAL 10 BASE ! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DEPTH ( -- depth# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the depth of the parameter stack before
  the call, see <text:span text:style-name="Source_20_Text">SP@</text:span> - the return-value is in <text:span text:style-name="Source_20_Text">CELLS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DO ( end# start# | end* start* -- R: some,loop )</text:span> [ANS] [LOOP] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">   pushes $end and $start onto the return-stack ( <text:span text:style-name="Source_20_Text">&gt;R</text:span> )
   and starts a control-loop that ends with <text:span text:style-name="Source_20_Text">LOOP</text:span> or
   <text:span text:style-name="Source_20_Text">+LOOP</text:span> and may get a break-out with <text:span text:style-name="Source_20_Text">LEAVE</text:span> . The
   loop-variable can be accessed with <text:span text:style-name="Source_20_Text">I</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DOES&gt; ( -- does* )</text:span> [ANS] [END] [NEW] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  does twist the last <text:span text:style-name="Source_20_Text">CREATE</text:span> word to carry
  the <text:span text:style-name="Source_20_Text">(DOES&gt;)</text:span> runtime. That way, using the
  word will execute the code-piece following <text:span text:style-name="Source_20_Text">DOES&gt;</text:span>
  where the pfa of the word is already on stack.
  (note: FIG option will leave pfa+cell since does-rt is stored in pfa)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DROP ( a -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  just drop the word on the top of stack, see <text:span text:style-name="Source_20_Text">DUP</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DUP ( a -- a a )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  duplicate the cell on top of the stack - so the
  two topmost cells have the same value (they are
  equal w.r.t <text:span text:style-name="Source_20_Text">=</text:span> ) , see <text:span text:style-name="Source_20_Text">DROP</text:span> for the inverse
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ELSE ( -- )</text:span> [HIDDEN] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  will compile an <text:span text:style-name="Source_20_Text">((ELSE))</text:span> <text:span text:style-name="Source_20_Text">BRANCH</text:span> that performs an
  unconditional jump to the next <text:span text:style-name="Source_20_Text">THEN</text:span> - and it resolves
  an <text:span text:style-name="Source_20_Text">IF</text:span> for the non-true case
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EMIT ( char# -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  print the char-value on stack to stdout
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ENVIRONMENT? ( name-ptr name-len -- 0 | ?? name-flag! )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  check the environment for a property, usually
  a condition like questioning the existance of
  specified wordset, but it can also return some
  implementation properties like "WORDLISTS"
  (the length of the search-order) or "#LOCALS"
  (the maximum number of locals)
</text:p><text:p text:style-name="Text_20_body">  Here it implements the environment queries as a <text:span text:style-name="Source_20_Text">SEARCH-WORDLIST</text:span>
  in a user-visible vocabulary called <text:span text:style-name="Source_20_Text">ENVIRONMENT</text:span>
</text:p><screen>  : ENVIRONMENT?
    ['] ENVIRONMENT &amp;gt;WORDLIST SEARCH-WORDLIST
    IF  EXECUTE TRUE ELSE  FALSE THEN ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EVALUATE ( str-ptr str-len -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  <text:span text:style-name="Source_20_Text">INTERPRET</text:span> the given string, <text:span text:style-name="Source_20_Text">SOURCE</text:span> id
  is -1 during that time.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EXECUTE ( some-xt* -- ??? )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  run the execution-token on stack - this will usually
  trap if it was null for some reason, see <text:span text:style-name="Source_20_Text">&gt;EXECUTE</text:span>
</text:p><screen>  simulate:
   : EXECUTE &amp;gt;R EXIT ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EXIT ( -- )</text:span> [ANS] [EXIT] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  will unnest the current colon-word so it will actually
  return the word calling it. This can be found in the
  middle of a colon-sequence between <text:span text:style-name="Source_20_Text">:</text:span> and <text:span text:style-name="Source_20_Text">;</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILL ( mem-ptr mem-len char# -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  fill a memory area with the given char, does now
  simply call p4_memset()
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FIND ( name-bstr* -- name-bstr* 0 | name-xt* -1|1 )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  looks into the current search-order and tries to find
  the name string as the name of a word. Returns its
  execution-token or the original-bstring if not found,
  along with a flag-like value that is zero if nothing
  could be found. Otherwise it will be 1 (a positive value)
  if the word had been immediate, -1 otherwise (a negative
  value).
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FM/MOD ( n1,n1# n2# -- div-n1# mod-n1# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  divide the double-cell value n1 by n2 and return
  both (floored) quotient n and remainder m
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">HERE ( -- here* )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  used with <text:span text:style-name="Source_20_Text">WORD</text:span> and many compiling words
</text:p><screen>  simulate:   : HERE DP @ ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">HOLD ( char# -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the old-style forth-formatting system -- this
  word adds a char to the picutred output string.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">I ( R: some,loop -- S: i# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  returns the index-value of the innermost <text:span text:style-name="Source_20_Text">DO</text:span> .. <text:span text:style-name="Source_20_Text">LOOP</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">IF ( value -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  checks the value on the stack (at run-time, not compile-time)
  and if true executes the code-piece between <text:span text:style-name="Source_20_Text">IF</text:span> and the next
  <text:span text:style-name="Source_20_Text">ELSE</text:span> or <text:span text:style-name="Source_20_Text">THEN</text:span> . Otherwise it has compiled a branch over
  to be executed if the value on stack had been null at run-time.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">IMMEDIATE ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  make the <text:span text:style-name="Source_20_Text">LATEST</text:span> word immediate, see also <text:span text:style-name="Source_20_Text">CREATE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">INVERT ( value# -- value#' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  make a bitwise negation of the value on stack.
  see also <text:span text:style-name="Source_20_Text">NEGATE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">J ( R: some,loop -- S: j# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  get the current <text:span text:style-name="Source_20_Text">DO</text:span> ... <text:span text:style-name="Source_20_Text">LOOP</text:span> index-value being
  the not-innnermost. (the second-innermost...)
  see also for the other loop-index-values at
  <text:span text:style-name="Source_20_Text">I</text:span> and <text:span text:style-name="Source_20_Text">K</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">KEY ( -- char# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return a single character from the keyboard - the
  key is not echoed.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LEAVE ( R: some,loop -- R: some,loop )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  quit the innermost <text:span text:style-name="Source_20_Text">DO</text:span> .. <text:span text:style-name="Source_20_Text">LOOP</text:span>  - it does even
  clean the return-stack and branches to the place directly
  after the next <text:span text:style-name="Source_20_Text">LOOP</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LITERAL ( C: value -- S: value )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  if compiling this will take the value from the compiling-stack
  and puts in dictionary so that it will pop up again at the
  run-time of the word currently in creation. This word is used
  in compiling words but may also be useful in making a hard-constant
  value in some code-piece like this:
</text:p><screen>  : DCELLS [ 2 CELLS ] LITERAL * ; ( will save a multiplication at runtime)
</screen><text:p text:style-name="Text_20_body">  (in most configurations this word is statesmart and it will do nothing
   in interpret-mode. See <text:span text:style-name="Source_20_Text">LITERAL,</text:span> for a non-immediate variant)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LOOP ( R: some,loop -- )</text:span> [ANS] [REPEAT] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  resolves a previous <text:span text:style-name="Source_20_Text">DO</text:span> thereby compiling <text:span text:style-name="Source_20_Text">((LOOP))</text:span> which
  does increment/decrement the index-value and branch back if
  the end-value of the loop has not been reached.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LSHIFT ( value# shift-count -- value#' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  does a bitwise left-shift on value
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">M* ( a# b# -- a,a#' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  multiply and return a double-cell result
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MAX ( a# b# -- a#|b# | a* b* -- a*|b* | a b -- a|b [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the maximum of a and b
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MIN ( a# b# -- a#|b# | a* b* -- a*|b* | a b -- a|b [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the minimum of a and b
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MOD ( a# b# -- mod-a# | a b# -- mod-a# [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the module of "a mod b"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MOVE ( from-ptr to-ptr move-len -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  p4_memcpy an area
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NEGATE ( value# -- value#' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the arithmetic negative of the (signed) cell
</text:p><screen>  simulate:   : NEGATE -1 * ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">OR ( a b# -- a' | a# b -- b' | a b -- a' [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the bitwise OR of a and b - unlike <text:span text:style-name="Source_20_Text">AND</text:span> this
  is usually safe to use on logical values
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">OVER ( a b -- a b a )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  get the value from under the top of stack. The inverse
  operation would be <text:span text:style-name="Source_20_Text">TUCK</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">POSTPONE ( [word] -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  will compile the following word at the run-time of the
  current-word which is a compiling-word. The point is that
  <text:span text:style-name="Source_20_Text">POSTPONE</text:span> takes care of the fact that word may be
  an IMMEDIATE-word that flags for a compiling word, so it
  must be executed (and not pushed directly) to compile
  sth. later. Choose this word in favour of <text:span text:style-name="Source_20_Text">COMPILE</text:span>
  (for non-immediate words) and <text:span text:style-name="Source_20_Text">[COMPILE]</text:span> (for immediate
  words)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">QUIT ( -- )</text:span> [EXIT] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  this will throw and lead back to the outer-interpreter.
  traditionally, the outer-interpreter is called QUIT
  in forth itself where the first part of the QUIT-word
  had been to clean the stacks (and some other variables)
  and then turn to an endless loop containing <text:span text:style-name="Source_20_Text">QUERY</text:span>
  and <text:span text:style-name="Source_20_Text">EVALUATE</text:span> (otherwise known as <text:span text:style-name="Source_20_Text">INTERPRET</text:span> )
  - in pfe it is defined as a <text:span text:style-name="Source_20_Text">THROW</text:span> ,
</text:p><screen>  : QUIT -56 THROW ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">R&gt; ( R: a -- a R: )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  get back a value from the return-stack that had been saved
  there using <text:span text:style-name="Source_20_Text">&gt;R</text:span> . This is the traditional form of a local
  var space that could be accessed with <text:span text:style-name="Source_20_Text">R@</text:span> later. If you
  need more local variables you should have a look at <text:span text:style-name="Source_20_Text">LOCALS|</text:span>
  which does grab some space from the return-stack too, but names
  them the way you like.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">R@ ( R: a -- a R: a )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  fetch the (upper-most) value from the return-stack that had
  been saved there using <text:span text:style-name="Source_20_Text">&gt;R</text:span> - This is the traditional form of a local
  var space. If you need more local variables you should have a
  look at <text:span text:style-name="Source_20_Text">LOCALS|</text:span> , see also <text:span text:style-name="Source_20_Text">&gt;R</text:span> and <text:span text:style-name="Source_20_Text">R&gt;</text:span> . Without LOCALS-EXT
  there are useful words like <text:span text:style-name="Source_20_Text">2R@</text:span> <text:span text:style-name="Source_20_Text">R'@</text:span> <text:span text:style-name="Source_20_Text">R"@</text:span> <text:span text:style-name="Source_20_Text">R!</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">RECURSE ( ? -- ? )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  when creating a colon word the name of the currently-created
  word is smudged, so that you can redefine a previous word
  of the same name simply by using its name. Sometimes however
  one wants to recurse into the current definition instead of
  calling the older defintion. The <text:span text:style-name="Source_20_Text">RECURSE</text:span> word does it
  exactly this.
</text:p><screen>    traditionally the following code had been in use:
    : GREAT-WORD [ UNSMUDGE ] DUP . 1- ?DUP IF GREAT-WORD THEN ;
    now use
    : GREAT-WORD DUP . 1- ?DUP IF RECURSE THEN ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REPEAT ( -- )</text:span> [ANS] [REPEAT] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  ends an unconditional loop, see <text:span text:style-name="Source_20_Text">BEGIN</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ROT ( a b c -- b c a )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  rotates the three uppermost values on the stack,
  the other direction would be with <text:span text:style-name="Source_20_Text">-ROT</text:span> - please
  have a look at <text:span text:style-name="Source_20_Text">LOCALS|</text:span> and <text:span text:style-name="Source_20_Text">VAR</text:span> that can avoid
  its use.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">RSHIFT ( value# shift-count# -- value#' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  does a bitwise logical right-shift on value
  (ie. the value is considered to be unsigned)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">S" ( [string&amp;lt;"&amp;gt;] -- string-ptr string-len)</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  if compiling then place the string into the currently
  compiled word and on execution the string pops up
  again as a double-cell value yielding the string's address
  and length. To be most portable this is the word to be
  best being used. Compare with <text:span text:style-name="Source_20_Text">C"</text:span> and non-portable <text:span text:style-name="Source_20_Text">"</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">S&gt;D ( a# -- a,a#' | a -- a,a#' [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  signed extension of a single-cell value to a double-cell value
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SIGN ( a# -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  put the sign of the value into the hold-space, this is
  the forth-style output formatting, see <text:span text:style-name="Source_20_Text">HOLD</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SM/REM ( a,a# b# -- div-a# rem-a# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">/MOD</text:span> or <text:span text:style-name="Source_20_Text">FM/MOD</text:span> or <text:span text:style-name="Source_20_Text">UM/MOD</text:span> or <text:span text:style-name="Source_20_Text">SM/REM</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SOURCE ( -- buffer* IN-offset# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">   the current point of interpret can be gotten through SOURCE.
   The buffer may flag out TIB or BLK or a FILE and IN gives
   you the offset therein. Traditionally, if the current SOURCE
   buffer is used up, <text:span text:style-name="Source_20_Text">REFILL</text:span> is called that asks for another
   input-line or input-block. This scheme would have made it
   impossible to stretch an [IF] ... [THEN] over different blocks,
   unless [IF] does call <text:span text:style-name="Source_20_Text">REFILL</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SPACE ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  print a single space to stdout, see <text:span text:style-name="Source_20_Text">SPACES</text:span>
</text:p><screen>  simulate:    : SPACE  BL EMIT ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SPACES ( space-count -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  print n space to stdout, actually a loop over n calling <text:span text:style-name="Source_20_Text">SPACE</text:span> ,
  but the implemenation may take advantage of printing chunks of
  spaces to speed up the operation.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SWAP ( a b -- b a )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  exchanges the value on top of the stack with the value beneath it
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">THEN ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  does resolve a branch coming from either <text:span text:style-name="Source_20_Text">IF</text:span> or <text:span text:style-name="Source_20_Text">ELSE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TYPE ( string-ptr string-len -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  prints the string-buffer to stdout, see <text:span text:style-name="Source_20_Text">COUNT</text:span> and <text:span text:style-name="Source_20_Text">EMIT</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">U. ( value# -- | value -- [?] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  print unsigned number to stdout
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">U&lt; ( a b -- test-flag )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  unsigned comparison, see <text:span text:style-name="Source_20_Text">&lt;</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">UM* ( a# b# -- a,a#' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  unsigned multiply returning double-cell value
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">UM/MOD ( a,a# b# -- div-a#' mod-a#' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">/MOD</text:span> and <text:span text:style-name="Source_20_Text">SM/REM</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">UNLOOP ( R: some,loop -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  drop the <text:span text:style-name="Source_20_Text">DO</text:span> .. <text:span text:style-name="Source_20_Text">LOOP</text:span> runtime variables from the return-stack,
  usually used just in before an <text:span text:style-name="Source_20_Text">EXIT</text:span> call. Using this multiple
  times can unnest multiple nested loops.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">UNTIL ( test-flag -- )</text:span> [ANS] [REPEAT] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  ends an control-loop, see <text:span text:style-name="Source_20_Text">BEGIN</text:span> and compare with <text:span text:style-name="Source_20_Text">WHILE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">WHILE ( test-flag -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  middle part of a <text:span text:style-name="Source_20_Text">BEGIN</text:span> .. <text:span text:style-name="Source_20_Text">WHILE</text:span> .. <text:span text:style-name="Source_20_Text">REPEAT</text:span>
  control-loop - if cond is true the code-piece up to <text:span text:style-name="Source_20_Text">REPEAT</text:span>
  is executed which will then jump back to <text:span text:style-name="Source_20_Text">BEGIN</text:span> - and if
  the cond is null then <text:span text:style-name="Source_20_Text">WHILE</text:span> will branch to right after
  the <text:span text:style-name="Source_20_Text">REPEAT</text:span>
  (compare with <text:span text:style-name="Source_20_Text">UNTIL</text:span> that forms a <text:span text:style-name="Source_20_Text">BEGIN</text:span> .. <text:span text:style-name="Source_20_Text">UNTIL</text:span> loop)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">WORD ( delimiter-char# -- here* )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  read the next <text:span text:style-name="Source_20_Text">SOURCE</text:span> section (thereby moving <text:span text:style-name="Source_20_Text">&gt;IN</text:span> ) up
  to the point reaching $delimiter-char - the text is placed
  at <text:span text:style-name="Source_20_Text">HERE</text:span> - where you will find a counted string. You may
  want to use <text:span text:style-name="Source_20_Text">PARSE</text:span> instead.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">XOR ( a# b# -- a#' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the bitwise-or of the two arguments - it may be unsafe
  use it on logical values. beware.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[ ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  leave compiling mode - often used inside of a colon-definition
  to make fetch some very constant value and place it into the
  currently compiled colon-defintion with =&gt; , or <text:span text:style-name="Source_20_Text">LITERAL</text:span>
  - the corresponding unleave word is <text:span text:style-name="Source_20_Text">]</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">['] ( [name] -- name-xt* )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  will place the execution token of the following word into
  the dictionary. See <text:span text:style-name="Source_20_Text">'</text:span> for non-compiling variant.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[CHAR] ( [word] -- char# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  in compile-mode, get the (ascii-)value of the first charachter
  in the following word and compile it as a literal so that it
  will pop up on execution again. See <text:span text:style-name="Source_20_Text">CHAR</text:span> and forth-83 <text:span text:style-name="Source_20_Text">ASCII</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">] ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  enter compiling mode - often used inside of a colon-definition
  to end a previous <text:span text:style-name="Source_20_Text">[</text:span> - you may find a  =&gt; , or <text:span text:style-name="Source_20_Text">LITERAL</text:span>
  nearby in example texts.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">.( ( [message&amp;lt;closeparen&amp;gt;] -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  print the message to the screen while reading a file. This works
  too while compiling, so you can whatch the interpretation/compilation
  to go on. Some Forth-implementations won't even accept a =&gt; ." message"
  outside compile-mode while the (current) pfe does.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">.R ( value# precision# -- | value precision# -- [??] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  print with precision - that is to fill
  a field of the give prec-with with
  right-aligned number from the converted value
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">0&lt;&gt; ( 0 -- 0 | value! -- value-flag! | value -- value-flag )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  returns a logical-value saying if the value was not-zero.
  This is most useful in turning a numerical value into a
  boolean value that can be fed into bitwise words like
  <text:span text:style-name="Source_20_Text">AND</text:span> and <text:span text:style-name="Source_20_Text">XOR</text:span> - a simple <text:span text:style-name="Source_20_Text">IF</text:span> or <text:span text:style-name="Source_20_Text">WHILE</text:span> doesn't
  need it actually.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">0&gt; ( 0 -- 0 | value! -- value-flag! | value -- value-flag )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return value greater than zero
</text:p><screen>  simulate:    : 0&amp;gt; 0 &amp;gt; ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2&gt;R ( a,a -- R: a,a )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  save a double-cell value onto the return-stack, see <text:span text:style-name="Source_20_Text">&gt;R</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2R&gt; ( R: a,a -- a,a R: )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  pop back a double-cell value from the return-stack, see <text:span text:style-name="Source_20_Text">R&gt;</text:span>
  and the earlier used <text:span text:style-name="Source_20_Text">2&gt;R</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2R@ ( R: a,a -- a,a R: a,a )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  fetch a double-cell value from the return-stack, that had been
  previously been put there with <text:span text:style-name="Source_20_Text">2&gt;R</text:span> - see <text:span text:style-name="Source_20_Text">R@</text:span> for single value.
  This can partly be a two-cell <text:span text:style-name="Source_20_Text">LOCALS|</text:span> value,  without LOCALS-EXT
  there are alos other useful words like <text:span text:style-name="Source_20_Text">2R!</text:span> <text:span text:style-name="Source_20_Text">R'@</text:span> <text:span text:style-name="Source_20_Text">R"@</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&lt;&gt; ( a b -- a-flag )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return true if a and b are not equal, see <text:span text:style-name="Source_20_Text">=</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">?DO ( end# start# | end* start* -- R: some,loop )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  start a control-loop just like <text:span text:style-name="Source_20_Text">DO</text:span> - but don't execute
  atleast once. Instead jump over the code-piece if the loop's
  variables are not in a range to allow any loop.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">AGAIN ( -- )</text:span> [ANS] [REPEAT] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  ends an infinite loop, see <text:span text:style-name="Source_20_Text">BEGIN</text:span> and compare with
  <text:span text:style-name="Source_20_Text">WHILE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">C" ( [string&amp;lt;"&amp;gt;] -- string-bstr* )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  in compiling mode place the following string in the current
  word and return the address of the counted string on execution.
  (in exec-mode use a <text:span text:style-name="Source_20_Text">POCKET</text:span> and leave the bstring-address of it),
  see <text:span text:style-name="Source_20_Text">S"</text:span> string" and the non-portable <text:span text:style-name="Source_20_Text">"</text:span> string"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CASE ( value -- value )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  start a CASE construct that ends at <text:span text:style-name="Source_20_Text">ENDCASE</text:span>
  and compares the value on stack at each <text:span text:style-name="Source_20_Text">OF</text:span> place
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">COMPILE, ( some-xt* -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  place the execution-token on stack into the dictionary - in
  traditional forth this is not even the least different than
  a simple =&gt; , but in call-threaded code there's a big
  difference - so COMPILE, is the portable one. Unlike
  <text:span text:style-name="Source_20_Text">COMPILE</text:span> , <text:span text:style-name="Source_20_Text">[COMPILE]</text:span> and <text:span text:style-name="Source_20_Text">POSTPONE</text:span> this word does
  not need the xt to have actually a name, see <text:span text:style-name="Source_20_Text">:NONAME</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CONVERT ( a,a# string-bstr* -- a,a# a-len# )</text:span> [ANS] [OLD] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  digit conversion, obsolete, superseded by <text:span text:style-name="Source_20_Text">&gt;NUMBER</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ENDCASE ( value -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  ends a <text:span text:style-name="Source_20_Text">CASE</text:span> construct that may surround multiple sections of
  <text:span text:style-name="Source_20_Text">OF</text:span> ... <text:span text:style-name="Source_20_Text">ENDOF</text:span> code-portions. The <text:span text:style-name="Source_20_Text">ENDCASE</text:span> has to resolve the
  branches that are necessary at each <text:span text:style-name="Source_20_Text">ENDOF</text:span> to point to right after
  <text:span text:style-name="Source_20_Text">ENDCASE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ENDOF ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  resolve the branch need at the previous <text:span text:style-name="Source_20_Text">OF</text:span> to mark
  a code-piece and leave with an unconditional branch
  at the next <text:span text:style-name="Source_20_Text">ENDCASE</text:span> (opened by <text:span text:style-name="Source_20_Text">CASE</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ERASE ( buffer-ptr buffer-len -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  fill an area will zeros.
</text:p><screen>  2000 CREATE DUP ALLOT ERASE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EXPECT ( str-ptr str-len -- )</text:span> [ANS] [OLD] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  input handling, see <text:span text:style-name="Source_20_Text">WORD</text:span> and <text:span text:style-name="Source_20_Text">PARSE</text:span> and <text:span text:style-name="Source_20_Text">QUERY</text:span>
  the input string is placed at str-adr and its length
</text:p><screen>  in =&amp;gt; SPAN - this word is superceded by =&amp;gt; ACCEPT
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">HEX ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  set the input/output <text:span text:style-name="Source_20_Text">BASE</text:span> to hexadecimal
</text:p><screen>  simulate:        : HEX 16 BASE ! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NIP ( a b -- b )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  drop the value under the top of stack, inverse of <text:span text:style-name="Source_20_Text">TUCK</text:span>
</text:p><screen>  simulate:        : NIP SWAP DROP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">OF ( value test -- value )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  compare the case-value placed lately with the comp-value
  being available since <text:span text:style-name="Source_20_Text">CASE</text:span> - if they are equal run the
  following code-portion up to <text:span text:style-name="Source_20_Text">ENDOF</text:span> after which the
  case-construct ends at the next <text:span text:style-name="Source_20_Text">ENDCASE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PAD ( -- pad* )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  transient buffer region
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PARSE ( delim-char# -- buffer-ptr buffer-len )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  parse a piece of input (not much unlike WORD) and place
  it into the given buffer. The difference with word is
  also that <text:span text:style-name="Source_20_Text">WORD</text:span> would first skip any delim-char while
  <text:span text:style-name="Source_20_Text">PARSE</text:span> does not and thus may yield that one. In a newer
  version, <text:span text:style-name="Source_20_Text">PARSE</text:span> will not copy but just return the word-span
  being seen in the input-buffer - therefore a transient space.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PICK ( value ...[n-1] n -- value ...[n-1] value )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  pick the nth value from under the top of stack and push it
  note that
</text:p><screen>    0 PICK -&amp;gt; DUP         1 PICK -&amp;gt; OVER
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">QUERY ( -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  source input:  read from terminal using <text:span text:style-name="Source_20_Text">_accept_</text:span> with the
  returned string to show up in <text:span text:style-name="Source_20_Text">TIB</text:span> of <text:span text:style-name="Source_20_Text">/TIB</text:span> size.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REFILL ( -- refill-flag )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  try to get a new input line from the <text:span text:style-name="Source_20_Text">SOURCE</text:span> and set
  <text:span text:style-name="Source_20_Text">&gt;IN</text:span> accordingly. Return a flag if sucessful, which is
  always true if the current input comes from a
  terminal and which is always false if the current input
  comes from <text:span text:style-name="Source_20_Text">EVALUATE</text:span> - and may be either if the
  input comes from a file
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">RESTORE-INPUT ( input...[input-len] input-len -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  inverse of <text:span text:style-name="Source_20_Text">SAVE-INPUT</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ROLL ( value ...[n-1] n -- ...[n-1] value )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the extended form of <text:span text:style-name="Source_20_Text">ROT</text:span>
</text:p><screen>     2 ROLL -&amp;gt; ROT
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SAVE-INPUT ( -- input...[input-len] input-len )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  fetch the current state of the input-channel which
  may be restored with <text:span text:style-name="Source_20_Text">RESTORE-INPUT</text:span> later
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TO ( value [name] -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  set the parameter field of name to the value, this is used
  to change the value of a <text:span text:style-name="Source_20_Text">VALUE</text:span> and it can be also used
  to change the value of <text:span text:style-name="Source_20_Text">LOCALS|</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TUCK ( a b -- b a b )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  shove the top-value under the value beneath. See <text:span text:style-name="Source_20_Text">OVER</text:span>
  and <text:span text:style-name="Source_20_Text">NIP</text:span>
</text:p><screen>  simulate:    : TUCK  SWAP OVER ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">U.R ( value# precision# -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  print right-aligned in a prec-field, treat value to
  be unsigned as opposed to =&gt; .R
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">U&gt; ( a b -- a-flag )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  unsigned comparison of a and b, see <text:span text:style-name="Source_20_Text">&gt;</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">UNUSED ( -- unused-len )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the number of cells that are left to be used
  above <text:span text:style-name="Source_20_Text">HERE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">WITHIN ( a# b# c# -- a-flag | a* b* c* -- a-flag )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  a widely used word, returns ( b &lt;= a &amp;&amp; a &lt; c ) so
  that is very useful to check an index a of an array
  to be within range b to c
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[COMPILE] ( [word] -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  while compiling the next word will be place in the currently
  defined word no matter if that word is immediate (like <text:span text:style-name="Source_20_Text">IF</text:span> )
  - compare with <text:span text:style-name="Source_20_Text">COMPILE</text:span> and <text:span text:style-name="Source_20_Text">POSTPONE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">\ ( [comment&amp;lt;eol&amp;gt;] -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  eat everything up to the next end-of-line so that it is
  getting ignored by the interpreter.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PARSE-WORD ( "chars" -- buffer-ptr buffer-len )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the ANS'94 standard describes this word in a comment
  under <text:span text:style-name="Source_20_Text">PARSE</text:span>, section A.6.2.2008 - quote:
</text:p><text:p text:style-name="Text_20_body">
  Skip leading spaces and parse name delimited by a space. c-addr
  is the address within the input buffer and u is the length of the
  selected string. If the parse area is empty, the resulting string
  has a zero length.
</text:p><text:p text:style-name="Text_20_body">
  If both <text:span text:style-name="Source_20_Text">PARSE</text:span> and <text:span text:style-name="Source_20_Text">PARSE-WORD</text:span> are present, the need for <text:span text:style-name="Source_20_Text">WORD</text:span>
  is largely eliminated. Note that Forth200x calls it <text:span text:style-name="Source_20_Text">PARSE-NAME</text:span>
  and clarifies that non-empty whitespace-only input is returned as
  a zero length string as well.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PARSE-NAME ( "chars" -- buffer-ptr buffer-len )</text:span> [Forth200x] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  This word is identical with the PFE implementation <text:span text:style-name="Source_20_Text">PARSE-WORD</text:span>
</text:p><text:p text:style-name="Text_20_body">
  The only difference between the 1994 ANS-Forth PARSE-WORD
  and the 2005 Forth200x PARSE-NAME is in the explicit condition
  of whitespace-only - while 1994 reads "If the parse area is empty,
  the resulting string has a zero length." you will find that the
  2005 version says "If the parse area is empty or contains only
  white space, the resulting string has length zero."
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CFA' ( 'name' -- name-xt* )</text:span> [FTH] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the execution token of the following name. This word
  is _not_ immediate and may not do what you expect in
  compile-mode. See <text:span text:style-name="Source_20_Text">[']</text:span> and <text:span text:style-name="Source_20_Text">'&gt;</text:span> - note that in FIG-forth
  the word <text:span text:style-name="Source_20_Text">'</text:span> had returned the PFA (not the CFA) and therefore
  this word was introduced being the <text:span text:style-name="Source_20_Text">SYNONYM</text:span> of the ans-like
  word <text:span text:style-name="Source_20_Text">'</text:span>
</text:p>
<text:p text:style-name="Text_20_body">STACK-CELLS - no description, sorry</text:p><text:p text:style-name="Text_20_body">RETURN-STACK-CELLS - no description, sorry</text:p>








 <text:p text:style-name="Preformatted_20_Text">pfe-core-misc-ext</text:p>
 <text:h text:style-name="Heading_20_3">CORE-Misc Compatibility words </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">0&lt;= ( a -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">0&gt;= ( a -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&lt;= ( a b -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;= ( a b -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">U&lt;= ( a b -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">U&gt;= ( a b -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">UMIN ( a b -- min ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">UMAX ( a b -- max ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.VERSION ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.CVERSION ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LICENSE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">WARRANTY ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">STRING, ( str len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PARSE, ( "chars&amp;lt;"&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PARSE,"  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DEFINED ( "name" -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[DEFINED] ( "name" -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[UNDEFINED] ( "name" -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(MARKER) ( str-ptr str-len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ANEW ( 'name' -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">0&lt;= ( a -- flag )</text:span> =&gt; "FORTH"</text:p>
<screen> 
  simulate    : 0&amp;lt;= 0&amp;gt; 0= ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">0&gt;= ( a -- flag )</text:span> =&gt; "FORTH"</text:p>
<screen> 
  simulate    : 0&amp;gt;= 0&amp;lt; 0= ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&lt;= ( a b -- flag )</text:span> =&gt; "FORTH"</text:p>
<screen> 
  simulate    : &amp;lt;= &amp;gt; 0= ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&gt;= ( a b -- flag )</text:span> =&gt; "FORTH"</text:p>
<screen> 
  simulate    : &amp;gt;= &amp;lt; 0= ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">U&lt;= ( a b -- flag )</text:span> =&gt; "FORTH"</text:p>
<screen> 
  simulate    : U&amp;lt;= U&amp;gt; 0= ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">U&gt;= ( a b -- flag )</text:span> =&gt; "FORTH"</text:p>
<screen> 
  simulate    : U&amp;gt;= U&amp;lt; 0= ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">UMIN ( a b -- min )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">MIN</text:span> , <text:span text:style-name="Source_20_Text">MAX</text:span> and <text:span text:style-name="Source_20_Text">UMAX</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">UMAX ( a b -- max )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">MAX</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">.VERSION ( -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  show the version of the current PFE system
</text:p><screen>  : .VERSION [ ENVIRONMENT ] FORTH-NAME TYPE FORTH-VERSION TYPE ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">.CVERSION ( -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  show the compile date of the current PFE system
</text:p><screen>  : .CVERSION [ ENVIRONMENT ] FORTH-NAME TYPE FORTH-DATE TYPE ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LICENSE ( -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  show a lisence info - the basic PFE system is licensed under the terms
  of the LGPL (Lesser GNU Public License) - binary modules loaded into
  the system and hooking into the system may carry another <text:span text:style-name="Source_20_Text">LICENSE</text:span>
</text:p><screen>  : LICENSE [ ENVIRONMENT ] FORTH-LICENSE TYPE ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">WARRANTY ( -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  show a warranty info - the basic PFE system is licensed under the terms
  of the LGPL (Lesser GNU Public License) - which exludes almost any 
  liabilities whatsoever - however loadable binary modules may hook into
  the system and their functionality may have different WARRANTY infos.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">STRING, ( str len -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Store a string in data space as a counted string.
</text:p><screen>  : STRING, HERE  OVER 1+  ALLOT  PLACE ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PARSE, ( "chars&amp;lt;"&amp;gt;" -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Store a char-delimited string in data space as a counted
   string. As seen in Bawd's
</text:p><screen>  : ," [CHAR] " PARSE  STRING, ; IMMEDIATE
</screen><text:p text:style-name="Text_20_body">
  this implementation is much different from Bawd's
</text:p><screen>  : PARSE, PARSE STRING, ;
  
</screen>
<text:p text:style-name="Text_20_body">PARSE," - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DEFINED ( "name" -- flag )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Search the dictionary for _name_. If _name_ is found,
   return TRUE; otherwise return FALSE. Immediate for use in
   definitions.
</text:p><text:p text:style-name="Text_20_body">  This word will actually return what <text:span text:style-name="Source_20_Text">FIND</text:span> returns (the NFA). 
  does check for the word using find (so it does not throw like <text:span text:style-name="Source_20_Text">'</text:span> )
  and puts it on stack. As it is immediate it does work in compile-mode
  too, so it places its argument in the cs-stack then. This is most
  useful with a directly following <text:span text:style-name="Source_20_Text">[IF]</text:span> clause, so that sth. like
  an <text:span text:style-name="Source_20_Text">[IFDEF] word</text:span> can be simulated through <text:span text:style-name="Source_20_Text">[DEFINED] word [IF]</text:span>
</text:p><screen> 
  : DEFINED BL WORD COUNT (FIND-NFA) ; 
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[DEFINED] ( "name" -- flag )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Search the dictionary for _name_. If _name_ is found,
   return TRUE; otherwise return FALSE. Immediate for use in
   definitions.
</text:p><text:p text:style-name="Text_20_body">  [DEFINED] word       ( -- nfa|0 ) immediate
  does check for the word using find (so it does not throw like <text:span text:style-name="Source_20_Text">'</text:span> )
  and puts it on stack. As it is immediate it does work in compile-mode
  too, so it places its argument in the cs-stack then. This is most
  useful with a directly following <text:span text:style-name="Source_20_Text">[IF]</text:span> clause, so that sth. like
  an <text:span text:style-name="Source_20_Text">[IFDEF] word</text:span> can be simulated through <text:span text:style-name="Source_20_Text">[DEFINED] word [IF]</text:span>
</text:p><screen> 
  : [DEFINED] BL WORD FIND NIP ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[UNDEFINED] ( "name" -- flag )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Search the dictionary for _name_. If _name_ is found,
   return FALSE; otherwise return TRUE. Immediate for use in
   definitions.
</text:p><text:p text:style-name="Text_20_body">
   see <text:span text:style-name="Source_20_Text">[DEFINED]</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">(MARKER) ( str-ptr str-len -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  create a named marker that you can use to <text:span text:style-name="Source_20_Text">FORGET</text:span> ,
  running the created word will reset the dict/order variables
  to the state at the creation of this name.
</text:p><screen>  : (MARKER) (CREATE) HERE , 
          GET-ORDER DUP , 0 DO ?DUP IF , THEN LOOP 0 , 
          ...
    DOES&amp;gt; DUP @ (FORGET) 
          ...
  ; 
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ANEW ( 'name' -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  creates a <text:span text:style-name="Source_20_Text">MARKER</text:span> if it doesn't exist,
  or forgets everything after it if it does. (it just gets executed).
</text:p><text:p text:style-name="Text_20_body">
  Note: in PFE the <text:span text:style-name="Source_20_Text">ANEW</text:span> will always work on the <text:span text:style-name="Source_20_Text">ENVIRONMENT-WORDLIST</text:span>
  which has a reason: it is never quite sure whether the same
  <text:span text:style-name="Source_20_Text">DEFINITIONS</text:span> wordlist is in the search <text:span text:style-name="Source_20_Text">ORDER</text:span> that the original
  <text:span text:style-name="Source_20_Text">ANEW</text:span> <text:span text:style-name="Source_20_Text">MARKER</text:span> was defined in. Therefore, <text:span text:style-name="Source_20_Text">ANEW</text:span> would be only safe
  on systems that do always stick to <text:span text:style-name="Source_20_Text">FORTH</text:span> <text:span text:style-name="Source_20_Text">DEFINITIONS</text:span>. Instead
  we will <text:span text:style-name="Source_20_Text">CREATE</text:span> the <text:span text:style-name="Source_20_Text">ANEW</text:span> <text:span text:style-name="Source_20_Text">MARKER</text:span> in the <text:span text:style-name="Source_20_Text">ENVIRONMENT</text:span> and use a 
  simple <text:span text:style-name="Source_20_Text">SEARCH-WORDLIST</text:span> on the <text:span text:style-name="Source_20_Text">ENVIRONMENT-WORDLIST</text:span> upon re-run.
</text:p><screen>  \ old
  : ANEW BL WORD   DUP FIND NIP IF EXECUTE THEN   (MARKER) ;
  \ new
  : ANEW 
    PARSE-WORD  2DUP ENVIRONMENT-WORDLIST SEARCH-WORDLIST IF  EXECUTE  THEN 
    GET-CURRENT &amp;gt;R ENVIRONMENT-WORDLIST SET-CURRENT  (MARKER)  R&amp;gt; SET-CURRENT ;
  
</screen>



<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-debug-ext</text:p>
 <text:h text:style-name="Heading_20_3">Debugger words </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DEBUG ( "word" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NO-DEBUG ( "word" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(SEE)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ADDR&gt;NAME ( word-addr* -- word-nfa*!' | 0 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">COME_BACK ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DEBUG ( "word" -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  this word will place an debug-runtime into
  the <text:span text:style-name="Source_20_Text">CFA</text:span> of the following word. If the
  word gets executed later, the user will
  be prompted and can decide to single-step
  the given word. The debug-stepper is
  interactive and should be self-explanatory.
  (use <text:span text:style-name="Source_20_Text">NO-DEBUG</text:span> to turn it off again)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NO-DEBUG ( "word" -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the inverse of " <text:span text:style-name="Source_20_Text">DEBUG</text:span> word "
</text:p>
<text:p text:style-name="Text_20_body">(SEE) - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ADDR&gt;NAME ( word-addr* -- word-nfa*!' | 0 )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  search the next corresponding namefield that address
  is next too. If it is not in the base-dictionary, then
  just return 0 as not-found.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">COME_BACK ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  show the return stack before last exception
  along with the best names as given by <text:span text:style-name="Source_20_Text">ADDR&gt;NAME</text:span>
</text:p>



<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-dlfcn-ext</text:p>
 <text:h text:style-name="Heading_20_3">Dynamic-Loading of code modules </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(LOADM)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LOADM ( "filename" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LOCAL-DLSYM ( [symbol] -- symbol-addr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LOCAL-DLCALL  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CALL-C  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">USELIBRARY  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">lt_dlinit ( -- dlinit-ior# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">lt_dlopenext ( module-ptr module-len -- module-dl-handle*! | 0 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">lt_dlsym ( symbol-ptr symbol-len module-dl-handle* -- symbol*! | 0 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">lt_dlclose ( module-dl-handle* -- module-ior# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">lt_dlerror ( -- dlerror-zstr* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body">(LOADM) - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LOADM ( "filename" -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   dlmap the shared object (or share an already mapped object)
   and run the per-thread initialization code. This is the
   user-convenient function, otherwise use <text:span text:style-name="Source_20_Text">(LOADM)</text:span>
</text:p><screen>  simulate:
    : LOADM  BL WORD   
      ((IS_MODULE_LOADED)) IF EXIT THEN 
      HERE (LOADM)  0= IF ." -- load failed: " HERE COUNT TYPE CR THEN ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LOCAL-DLSYM ( [symbol] -- symbol-addr )</text:span> [FTH] [EXEC] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   lookup the symbol that follows and leave the address (or null)
</text:p>
<text:p text:style-name="Text_20_body">LOCAL-DLCALL - no description, sorry</text:p><text:p text:style-name="Text_20_body">CALL-C - no description, sorry</text:p><text:p text:style-name="Text_20_body">USELIBRARY - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">lt_dlinit ( -- dlinit-ior# )</text:span> [FTH] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  initialiize library, usually open the program itself so that its
  handles can be found under "0"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">lt_dlopenext ( module-ptr module-len -- module-dl-handle*! | 0 )</text:span> [FTH] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  walk the searchpath for dlopen and try to open a binary module
  under the given name with the usual file extension for the 
  current system.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">lt_dlsym ( symbol-ptr symbol-len module-dl-handle* -- symbol*! | 0 )</text:span> [FTH] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  try to find the name in the binary module denoted by its handle
  .. if handle is null, use the main body of the program
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">lt_dlclose ( module-dl-handle* -- module-ior# )</text:span> [FTH] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  close handle that was returned by <text:span text:style-name="Source_20_Text">lt_dlopenext</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">lt_dlerror ( -- dlerror-zstr* )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  returns string describing the last dlerror as for <text:span text:style-name="Source_20_Text">lt_dlopenext</text:span>
  and <text:span text:style-name="Source_20_Text">lt_dlsym</text:span>
</text:p>



<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-double-ext</text:p>
 <text:h text:style-name="Heading_20_3">Double number + extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2LITERAL ( x1 x2 -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">D+ ( d1.ud1 d2.ud2 -- d3.ud3 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">D-  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">D. ( d1.d1 -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">D.R ( d1.d1 n -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">D0&lt; ( d1.d1 -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">D0= ( d1.d1 -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">D2* ( d1.d1 -- d1.d1' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">D2/ ( d1.d1 -- d1.d1' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">D&lt; ( d1.d1 d2.d2 -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">D= ( d1.d1 d2.d2 -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">D&gt;S ( d.d -- n ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DABS ( d1.d1 -- d1.d1'  ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DMAX ( d1.d1 d2.d2 -- d1.d1|d2.d2  ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DMIN ( d1.d1 d2.d2 -- d1.d1|d2.d2  ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DNEGATE ( d1.d1 -- d1.d1' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">M*/ ( d1.d1 n1 +n2 -- d2.d2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">M+ ( d1.d1 n1 -- d2.d2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2LITERAL ( x1 x2 -- )</text:span> immediate =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  compile a double-cell number to the current definition. When
  run, the doubele-cell is left on the stack for execution.
</text:p><screen>    ( -- x1 x2 )
</screen><text:p text:style-name="Text_20_body">  (in most configurations this word is statesmart and it will do nothing
   in interpret-mode. See <text:span text:style-name="Source_20_Text">2LITERAL,</text:span> for a non-immediate variant)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">D+ ( d1.ud1 d2.ud2 -- d3.ud3 )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the double-cell sum operation ( <text:span text:style-name="Source_20_Text">+</text:span> )
</text:p>
<text:p text:style-name="Text_20_body">D- - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">D. ( d1.d1 -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  freefield output for a double-cell number ( =&gt; . )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">D.R ( d1.d1 n -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  aligned output for a double-cell number ( =&gt; .R )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">D0&lt; ( d1.d1 -- flag )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the double-cell less-than-zero operation ( <text:span text:style-name="Source_20_Text">0&lt;</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">D0= ( d1.d1 -- flag )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the double-cell equal-to-zero operation ( <text:span text:style-name="Source_20_Text">0=</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">D2* ( d1.d1 -- d1.d1' )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the double-cell arithmetic shiftleft-by-1 operation ( <text:span text:style-name="Source_20_Text">2*</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">D2/ ( d1.d1 -- d1.d1' )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the double-cell arithmetic shiftright-by-1 operation ( <text:span text:style-name="Source_20_Text">2/</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">D&lt; ( d1.d1 d2.d2 -- flag )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the double-cell is-less operation ( <text:span text:style-name="Source_20_Text">&lt;</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">D= ( d1.d1 d2.d2 -- flag )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the double-cell is-equal operation ( <text:span text:style-name="Source_20_Text">=</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">D&gt;S ( d.d -- n )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  result is the numeric equivalent of d. If the double number was
  greater than what could fit into a single cell number, the 
  modulo cellsize will be left since the higher-significant bits
  are just <text:span text:style-name="Source_20_Text">DROP</text:span>ed
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DABS ( d1.d1 -- d1.d1'  )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the double-cell abs operation ( <text:span text:style-name="Source_20_Text">ABS</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DMAX ( d1.d1 d2.d2 -- d1.d1|d2.d2  )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the double-cell max operation ( <text:span text:style-name="Source_20_Text">MAX</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DMIN ( d1.d1 d2.d2 -- d1.d1|d2.d2  )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the double-cell max operation ( <text:span text:style-name="Source_20_Text">MIN</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DNEGATE ( d1.d1 -- d1.d1' )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the double-cell arithmetic negate operation ( <text:span text:style-name="Source_20_Text">NEGATE</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">M*/ ( d1.d1 n1 +n2 -- d2.d2 )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the double-cell multiply-divide operation 
  using a triple-cell intermediate result for <text:span text:style-name="Source_20_Text">*</text:span>
  ( <text:span text:style-name="Source_20_Text">*\/</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">M+ ( d1.d1 n1 -- d2.d2 )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the double-cell mixed-operand sum operation ( <text:span text:style-name="Source_20_Text">+</text:span> / <text:span text:style-name="Source_20_Text">D+</text:span> )
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-double-misc-ext</text:p>
 <text:h text:style-name="Heading_20_3">DOUBLE-Misc Compatibility words </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2ROT ( d1,d1 d2,d2 d3,d3 -- d2,d2 d3,d3 d1,d1 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DU&lt; ( d1,d1 d2,d2 -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LITERAL, ( value -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2LITERAL, ( x1,x2 -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DCELLS ( x -- x' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DLSHIFT ( x1,x2 y -- z1,z2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DRSHIFT ( x1,x2 y -- z1,z2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2ROT ( d1,d1 d2,d2 d3,d3 -- d2,d2 d3,d3 d1,d1 )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  the double-cell <text:span text:style-name="Source_20_Text">ROT</text:span> operation.
  actively moves six cells, i.e.
</text:p><screen>    ( x1 x2 x3 x4 x5 x6 -- x3 x4 x5 x6 x1 x2 )
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DU&lt; ( d1,d1 d2,d2 -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  the double-cell unsigned-is-less operation ( <text:span text:style-name="Source_20_Text">U&lt;</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LITERAL, ( value -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  take the value from stack (or cs-stack) and compile a runtime-code and
  the value as for <text:span text:style-name="Source_20_Text">LITERAL</text:span> ... this word is never state-smart, it
  is not immediate, and has therefore no complications with <text:span text:style-name="Source_20_Text">POSTPONE</text:span>
  (compare also with <text:span text:style-name="Source_20_Text">COMPILE,</text:span> to make a call-stub with an exectoken)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2LITERAL, ( x1,x2 -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  take the double-value from stack (or cs-stack) and compile a runtime-code 
  and the value as for <text:span text:style-name="Source_20_Text">2LITERAL</text:span> ... this word is never state-smart, it
  is not immediate, and has therefore no complications with <text:span text:style-name="Source_20_Text">POSTPONE</text:span>
  (compare also with <text:span text:style-name="Source_20_Text">COMPILE,</text:span> to make a call-stub with an exectoken)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DCELLS ( x -- x' )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  computes the number of address units for the specified number 
  of double-cells
</text:p><screen>  : DCELLS CELLS 2* ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DLSHIFT ( x1,x2 y -- z1,z2 )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  shift-left a double-cell value.
  The shift-count is given as a single-cell.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DRSHIFT ( x1,x2 y -- z1,z2 )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  shift-right a double-cell value.
  The shift-count is given as a single-cell.
  This is an arithmetic shift as for a signed double-cell value.
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-dstrings-ext</text:p>
 <text:h text:style-name="Heading_20_3">Dynamic-Strings extension </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EMPTY$ ( $: -- empty$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">\n$ ( $: -- newline$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(M!)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PARSE&gt;S ( [ccc&amp;lt;char&amp;gt;] char -- addr len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">S` ( [ccc&amp;lt;`&amp;gt;] -- addr len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">M,S ( addr len -- addr' len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MCOUNT@ ( msa -- count ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MCOUNT! ( count msa -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MCOUNT ( msa -- body.addr count ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">-MCOUNT ( addr len -- msa ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">($:  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">0STRINGS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$GARBAGE? ( -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$GC-OFF ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$GC-ON ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$GC-LOCK@ ( -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$GC-LOCK! ( flag -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$UNUSED ( -- u ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">COLLECT-$GARBAGE ( -- collected-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MAKE-$SPACE ( size #frames -- addr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">/$BUF ( -- u ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MAX-#$FRAMES ( -- u ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$! ( $var.dfa $: a$ -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$@ ( $var.pfa -- $: a$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(M$:)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$" ( [ccc&amp;lt;"&amp;gt;] -- $: str ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$` ( [ccc&amp;lt;`&amp;gt;] -- $: str ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$VARIABLE ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PARSE&gt;$ ( [ccc&amp;lt;char&amp;gt;] char -- $: ccc$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$. ( $: a$ -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$2DROP ( $: a$ b$ --  ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$2DUP ( $: a$ b$ -- a$ b$ a$ b$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$DEPTH ( -- n ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$DROP ( $:  a$ -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$DUP ( $: a$ -- a$ a$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$NIP ($: a$ b$ -- b$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$OVER ( $: a$ b$ -- a$ b$ a$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$PICK ( u $: au$ ... a0$ -- au$ ... a0$ au$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$SWAP ( $: a$ b$ -- b$ a$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$EXCHANGE ( i j -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$S&gt; ( $: a$ -- S: a.s ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$,S ( $: a$ -- S: a.s ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$S@ ( $: a$ -- a$ S: a.s ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$TUCK ($: a$ b$ -- b$ a$ b$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$TYPE ($: a$ -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;$S-COPY ( a.s -- $: a$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;$S ( a.s -- $: a$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$+ ($: a$ -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">S+ ( a.s -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PARSE-S+ ( [ccc&amp;lt;char&amp;gt;] char -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ENDCAT ( -- $: cat$ | empty$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$+" ( [ccc&amp;lt;quote&amp;gt;] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$+` ( [ccc&amp;lt;backtick&amp;gt;] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">#$ARGS ( -- u ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$ARGS{ ( arg1'$ ... argN'$ "arg1 ... argN &amp;lt;}&amp;gt;" --  ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$FRAME ( u -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$FRAME-DEPTH ( -- u ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DROP-$FRAME ($: frame*$ i*$ -- i*s ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FIND-$ARG ( s -- u true | false ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TH-$ARG ( u -- $: arg$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(DROP-$FRAME)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$POP ( $:  a$ -- s: a$) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$PUSH-EXT ( a$ -- $: a$ ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$BREAKP@ ( -- $stack.break.addr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$BUFP@ ( -- $buffer.addr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$FBREAKP@ ( -- frame.stack.break.addr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$FSP@ ( -- frame.stack.top.addr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$FSP0@ ( -- initial.frame.stack.top.addr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$SP@ ( -- string.stack.top.addr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$SP0@ ( -- initial.string.stack.top.addr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">/$FRAME-ITEM  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">/$FRAME-STACK  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">/$SPACE-HEADER ( -- $space.header.size ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">0$SPACE ( $space.addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CAT$P@ ( -- cat$.msa | 0 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">IN-$BUFFER? ( msa -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EMPTY$ ( $: -- empty$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Push the MSA of a fixed, external representation of the empty
  string onto the string stack.  "empty-string"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">\n$ ( $: -- newline$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Push the MSA of a fixed, external string whose body is the
  Unix newline character onto the string stack.
  "newline-string"
</text:p>
<text:p text:style-name="Text_20_body">(M!) - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PARSE&gt;S ( [ccc&amp;lt;char&amp;gt;] char -- addr len )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Parse the input stream up to the first occurrence of char,
  which is parsed away.  If executing in compilation mode,
  append run-time semantics to the current definition that
  leaves the ANS Forth string representation on the stack.  In
  interpretation mode, leave the ANS Forth string
  representation for a stored copy, which may be transient in
  the style of <text:span text:style-name="Source_20_Text">S</text:span>".  In either mode, the format of the
  stored string is implementation dependent.
  "parse-to-s"
</text:p><text:p text:style-name="Text_20_body">  NOTE: The interpreted copy is a nontransient in this
  implementation, and both copies are mstrings.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">S` ( [ccc&amp;lt;`&amp;gt;] -- addr len )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  An immediate version of parse&gt;s where the delimiter is `.  In
  particular, the stored string in interpret mode is not
  transient. "s-back-tick"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">M,S ( addr len -- addr' len )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  ALLOT room and store the ANS Forth string into aligned data
  space as an mstring, leaving data space zero-filled to
  alignment; and leave the length and new body address.  It is
  assumed that len is unsigned.  An error is thrown if len is
  larger than the system parameter <text:span text:style-name="Source_20_Text">MAX_DATA_STR</text:span>.
  "m-comma-s"
</text:p><text:p text:style-name="Text_20_body">  NOTE: <text:span text:style-name="Source_20_Text">MAX_DATA_STR</text:span> is returned by
</text:p><screen>    S" /SCOPY" ENVIRONMENT?
 
</screen><text:p text:style-name="Text_20_body">  NOTE: <text:span text:style-name="Source_20_Text">M,S</text:span> differs from <text:span text:style-name="Source_20_Text">STRING,</text:span> in Wil Baden's Tool
  Belt in that it stores an aligned, measured string with
  zero-filled alignment instead of a counted string, and it
  leaves the ANS Forth string representation of the stored
  string.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MCOUNT@ ( msa -- count )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Fetch the count of the mstring at msa.
  "m-count-fetch"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MCOUNT! ( count msa -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Store the count in the measured string count field at msa,
  without checking that it fits. 
  "m-count-store"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MCOUNT ( msa -- body.addr count )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Convert the mstring MSA to its ANS Forth string
  representation.  "m-count"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">-MCOUNT ( addr len -- msa )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Convert the ANS Forth representation of an mstring to its
  MSA.  "minus-m-count"
</text:p>
<text:p text:style-name="Text_20_body">($: - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">0STRINGS ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Set all string variables holding bound string values in string
  space to the empty string, and clear string space, including
  the string buffer, string stack, and string stack frames. 
  "zero-strings"
</text:p><text:p text:style-name="Text_20_body">  NOTE:  If used for under the hood development, this word must
  be executed only when string space is in a valid state.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$GARBAGE? ( -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave true if there is garbage in the current string space. 
  Not normally used, since garbage collection is transparent.
  "string-garbage-question"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$GC-OFF ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Disable garbage collection in the current string space.  An
  error will be thrown if garbage collection is attempted.
  "string-g-c-off"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$GC-ON ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Enable garbage collection in the current string space.  This
  is the default.  "string-g-c-on"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$GC-LOCK@ ( -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Fetch the dstring garbage collection "off" state.  Intended
  for saving the off state for later restoration after a usage
  of <text:span text:style-name="Source_20_Text">$GC-ON</text:span> or <text:span text:style-name="Source_20_Text">$GC-OFF</text:span>.
  "string-g-c-lock-fetch"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$GC-LOCK! ( flag -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Set the dstring garbage collection "off" state according to
  flag.  Intended for restoring the off state previously
  fetched by <text:span text:style-name="Source_20_Text">$GC-LOCK@</text:span>.
  "string-g-c-lock-fetch"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$UNUSED ( -- u )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave the number of bytes available for dynamic strings and
  string stack entries in the string buffer. 
  "string-unused"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">COLLECT-$GARBAGE ( -- collected-flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  If string space is not marked as containing garbage, return
  false.  If there is garbage, throw an error when garbage
  collection is disabled.  Otherwise remove the garbage and
  return true.  Garbage collection is "transparent", so the
  user would not normally use this word.
  "collect-string-garbage"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MAKE-$SPACE ( size #frames -- addr )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Allocate and initialize a string space with size bytes
  available for the string buffer including the string stack,
  and with a string frame stack for frame description entries
  holding up to #frames.  The size is rounded up to cell
  alignment, and the buffer begins and ends with cell alignment.
  Return addr, the address of the string space.  The standard
  word <text:span text:style-name="Source_20_Text">FREE</text:span> with addr as input can be used to release the space.
  "make-string-space"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">/$BUF ( -- u )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave the size in address units allocated for the current
  string buffer. "slash-string-buf"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MAX-#$FRAMES ( -- u )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave the number of string frames allowed on the string frame
  stack for the current string space.
  "max-number-string-frames"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$! ( $var.dfa $: a$ -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Store the string MSA on the string stack in the variable
  whose DFA is on the parameter stack. 
  "string-store"
</text:p><text:p text:style-name="Text_20_body">  NOTES: The only situation in which <text:span text:style-name="Source_20_Text">$!</text:span> copies the string
  value is when it is a bound string already stored in another
  variable.  In that case, the new copy is the one that is
  stored in the variable.  In particular, external strings are
  not copied.
</text:p><text:p text:style-name="Text_20_body">  If the string value held by the string variable on entry is a
  bound string that is also referenced deeper on the string
  stack, its back link is reset to point to the deepest string
  stack reference.  If it is a bound string not deeper on the
  string stack and not identical to the input string, its back
  link is set to zero, making it garbage.  If it is an external
  string, its MSA in the variable is simply written over by
  that popped from the string stack.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$@ ( $var.pfa -- $: a$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave the MSA of the string held by the string variable.
  "string-fetch"
</text:p>
<text:p text:style-name="Text_20_body">(M$:) - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$" ( [ccc&amp;lt;"&amp;gt;] -- $: str )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Parse ccc delimited by " (double quote) and store it in data
  space as an mstring.  If interpreting, leave the MSA on the
  string stack.  If compiling, append run-time semantics to the
  current definition that leaves the MSA on the string stack. 
  A program should not alter the stored string.  An error is
  thrown if the quoted string length is larger than the system
  parameter <text:span text:style-name="Source_20_Text">MAX_DATA_STR</text:span> (see <text:span text:style-name="Source_20_Text">SM,</text:span>).
  "string-quote"
</text:p><text:p text:style-name="Text_20_body">  NOTE:  In contrast to <text:span text:style-name="Source_20_Text">S"</text:span>, the string stored by <text:span text:style-name="Source_20_Text">$"</text:span> when
  interpreting is not transient.
</text:p><text:p text:style-name="Text_20_body">  The implementation is based on PFE code for <text:span text:style-name="Source_20_Text">S"</text:span>.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$` ( [ccc&amp;lt;`&amp;gt;] -- $: str )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Parse ccc delimited by ` (back-tick).  This is <text:span text:style-name="Source_20_Text">"$""</text:span> with
  back tick instead of double quote as the delimiter.
  "string-back-tick"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$VARIABLE ( "name" -- )</text:span> =&gt; [FORTH]</text:p>
<screen> 
    "name" execution:	( -- dfa )
 
</screen><text:p text:style-name="Text_20_body">  Create an ordinary Forth variable and initialize it to the
  address of a fixed, external, measured representation of the
  empty string, such as that pushed onto the string stack by
  <text:span text:style-name="Source_20_Text">EMPTY\$</text:span>.  "string-variable""
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PARSE&gt;$ ( [ccc&amp;lt;char&amp;gt;] char -- $: ccc$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Parse the input stream up to the first occurrence of char,
  which is parsed away, and store the string as an external
  measured string.  If executing in compilation mode, append
  run-time semantics to the current definition that leaves the
  MSA on the string stack.  In interpretation mode, leave the
  MSA on the string stack, where the stored copy, unlike
  <text:span text:style-name="Source_20_Text">PARSE&gt;S</text:span>, is required to be nontransient.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$. ( $: a$ -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Display the string on the terminal.  If the system
  implementation of TYPE has its output vectored, $. uses the
  same vector. "string-dot"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$2DROP ( $: a$ b$ --  )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Drop the two topmost string stack entries, marking them as
  garbage if appropriate.  "string-two-drop"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$2DUP ( $: a$ b$ -- a$ b$ a$ b$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave copies of the two topmost string stack entries.  The string
  values are not copied.  "string-two-dupe"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$DEPTH ( -- n )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave the number of items on the string stack.
  "string-depth"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$DROP ( $:  a$ -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Drop the topmost string stack entry, marking it as garbage if
  it is initially bound to the top of the string stack.
  "string-drop"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$DUP ( $: a$ -- a$ a$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave a copy of the topmost string stack entry.  The string
  value is not copied.  "string-dupe"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$NIP ($: a$ b$ -- b$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Drop the next to top item from the string stack.
  "string-nip"
</text:p><text:p text:style-name="Text_20_body">  NOTE:  Because of essential string  space bookkeeping, the
  system level implementation can be little more efficient than
  the high-level definition:
</text:p><screen>    : $NIP  $SWAP $DROP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$OVER ( $: a$ b$ -- a$ b$ a$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave a copy of the next most accessible string stack entry
  on top of the string stack.  The string value is not copied.
  "string-over"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$PICK ( u $: au$ ... a0$ -- au$ ... a0$ au$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Copy the u-th string stack entry to the top of the string
  stack.  The string value is not copied.  Throw an error if
  the input string stack does not have at least u+1 items. 
  "string-pick"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$SWAP ( $: a$ b$ -- b$ a$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Exchange the two most accessible strings on the string stack.
  Throw an error if there are less than two strings on the
  stack.  Neither string value is copied.
  "string-swap"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$EXCHANGE ( i j -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body"> 		($: maxth$ ... minth$ ... -- minth$ ... maxth$ ... )
  Exchange the ith and jth strings on the string stack, where
  the top is the 0th.  Throw an error if there are not at least
  max[i,j] + 1 strings on the stack.  Neither string value is
  copied.
  "string-exchange"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$S&gt; ( $: a$ -- S: a.s )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Drop a$ from the string stack and leave it as a ANS Forth
  string a.s, without copying.
  "string-s-from"
</text:p><text:p text:style-name="Text_20_body">  WARNING:  If a$ is a bound string, it may move or disappear
  at the next garbage collection, making a.s invalid.  This can
  be avoided by sandwiching sections of code where this could
  occur between $GC-OFF and $GC-ON.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$,S ( $: a$ -- S: a.s )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Drop a$ from the string stack, copy it into data space as a
  measured string, and leave it as an ANS Forth string a.s.
  An error is thrown if the string length is larger than the
  system parameter <text:span text:style-name="Source_20_Text">MAX_DATA_STR</text:span> (see <text:span text:style-name="Source_20_Text">M,S</text:span>).
  "string-comma-s"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$S@ ( $: a$ -- a$ S: a.s )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave the string stack unchanged, and leave the string body
  address and length on the data stack. 
  "string-s-fetch"
</text:p><text:p text:style-name="Text_20_body">  WARNING:  If a$ is a bound string, it may move at the next
  garbage collection, making a.s invalid.  This can be avoided
  by sandwiching sections of code where this could occur
  between $GC-OFF and $GC-ON.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$TUCK ($: a$ b$ -- b$ a$ b$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Copy the top string stack item just below the second item.  The
  string value is not copied.  "string-tuck"
</text:p><text:p text:style-name="Text_20_body">  NOTE:  Because of essential string  space bookkeeping, the
  system level implementation can be little more efficient than
  the high-level definition:
</text:p><screen>    : $TUCK  $SWAP $OVER ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$TYPE ($: a$ -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Display the string on the terminal.  A deprecated <text:span text:style-name="Source_20_Text">$.</text:span>
  synonym.  "string-type"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&gt;$S-COPY ( a.s -- $: a$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Copy the external string value whose body address and count
  are on the parameter stack into the string buffer and push it
  onto the string stack.  Errors are thrown if the count is
  larger than <text:span text:style-name="Source_20_Text">MAX_MCOUNT</text:span>, if there is not enough room in string
  space, even after garbage collection, or if there is an
  unterminated string concatenation.  The input external string
  need not exist as a measured string. 
  "to-string-s-copy"
</text:p><text:p text:style-name="Text_20_body">  NOTE:  <text:span text:style-name="Source_20_Text">MAX_MCOUNT</text:span> is the largest size the count field of a
  measured string can hold, e.g., 255, 64K-1, or 4,096M-1.  It
  is returned by:
</text:p><screen>    S" /DYNAMIC-STRING" ENVIRONMENT?
 
</screen><text:p text:style-name="Text_20_body">  WARNING: This word should not be used when the input string
  is a bound string because the copy operation may generate a
  garbage collection which invalidates its MSA.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&gt;$S ( a.s -- $: a$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Push the external ANS Forth string a.s onto the string
  stack, without copying the string value into the string
  buffer.  It is an unchecked error if the Forth string a.s
  is not stored as an external measured string.
  "to-string-s"
</text:p><text:p text:style-name="Text_20_body">  WARNING: If the string value of a.s is actually in the
  string buffer and not external, the push operation may
  generate a garbage collection that invalidates its MSA.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$+ ($: a$ -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  If a$ is the empty string, drop it and do nothing else.
</text:p><text:p text:style-name="Text_20_body">  In particular, do not start a new concatenation, which would
  lock string space against new nonconcatenating copies.
</text:p><text:p text:style-name="Text_20_body">  Otherwise append the string body to the end of the string
  currently being concatenated as the last string in the string
  buffer, and update its count field.  If there is no
  concatenating string, start one.  An error is thrown if the
  size of the combined string would be larger than
  <text:span text:style-name="Source_20_Text">MAX_MCOUNT</text:span> or if there is not enough room in string space
  even after a garbage collection.
</text:p><text:p text:style-name="Text_20_body">  If garbage collection occurs, a$ remains valid even when
  it is in the string buffer.
</text:p><text:p text:style-name="Text_20_body">  When there is a concatenating string, concatenation is the
  only basic string operation that can copy a string into the
  string buffer.  "string-plus"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">S+ ( a.s -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  If a.s is the empty string, drop it and do nothing else.
</text:p><text:p text:style-name="Text_20_body">  Append the ANS Forth string body to the end of the string
  currently being concatenated as the last string in the string
  buffer, and update its count field.  If there is no
  concatenating string, start one.  An error is thrown if the
  size of the combined string would be larger than <text:span text:style-name="Source_20_Text">MAX_MCOUNT</text:span>
  or if there is not enough room in string space even after a
  garbage collection.
</text:p><text:p text:style-name="Text_20_body">  <text:span text:style-name="Source_20_Text">S+</text:span> is most commonly used on external strings, not
  assumed to exist as mstrings.  In contrast to <text:span text:style-name="Source_20_Text">$+</text:span>,
  garbage collection could invalidate a.s if it is a dynamic
  string in the string buffer.  <text:span text:style-name="Source_20_Text">S+</text:span> can be used in that
  situation if garbage collection is turned off with
  <text:span text:style-name="Source_20_Text">$GC-OFF</text:span>.
</text:p><text:p text:style-name="Text_20_body">  When there is a concatenating string, concatenation is the
  only basic string operation that can copy a string into the
  string buffer.  "s-plus"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PARSE-S+ ( [ccc&amp;lt;char&amp;gt;] char -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Parse the input stream up to the first occurrence of char,
  which is parsed away.  If executing in compilation mode,
  append run-time semantics to the current definition that
  concatenates the characters parsed from the string. 
  Otherwise concatenate the characters. 
  "parse-s-plus"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ENDCAT ( -- $: cat$ | empty$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  If there is no concatenating string, do nothing but leave the
  empty string.  If there is, leave it as a string bound to the
  top of the string stack, and terminate concatenation,
  permitting normal copies into the string buffer. 
  "end-cat"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$+" ( [ccc&amp;lt;quote&amp;gt;] -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  This word is immediate.  In compilation mode it appends
  run-time semantics to the current definition that
  concatenates the quoted string according to the specification
  for <text:span text:style-name="Source_20_Text">$+</text:span>.  In interpretation mode it concatenates the
  string.  An error is thrown if the length of the quoted
  string is longer than the system parameter <text:span text:style-name="Source_20_Text">MAX_DATA_STR</text:span>
  (see <text:span text:style-name="Source_20_Text">M,S</text:span>).  "string-plus-quote"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$+` ( [ccc&amp;lt;backtick&amp;gt;] -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  The same as <text:span text:style-name="Source_20_Text">$+"</text:span> but with back tick instead of double
  quote as delimiter.  "string-plus-back-tick"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">#$ARGS ( -- u )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave the number of entries in the topmost string frame.
  Throw an error if the frame stack is empty.
  "number-string-args"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$ARGS{ ( arg1'$ ... argN'$ "arg1 ... argN &amp;lt;}&amp;gt;" --  )</text:span> =&gt; [FORTH]</text:p>
<screen> 
     compilation: ( -- $: arg1$ ... argN$ )
</screen><text:p text:style-name="Text_20_body">  Immediate and compilation-only.
</text:p><text:p text:style-name="Text_20_body">  Copy the argument strings across lines to the string buffer,
  push them onto the string stack with "argN" the most
  accessible, and make them into the top compile-time string
  stack frame.  Compile the run-time code to make an argument
  frame out of the N most accessible run-time string stack
  entries.  Inform the system text interpreter that it should
  compile run-time code for any white-space delimited argument
  encountered in the text of the definition, that concatenates
  the corresponding string in the run-time frame.  At the
  semicolon terminating the definition, drop the compile-time
  argument frame and compile code to drop the run-time argument
  frame.
</text:p><text:p text:style-name="Text_20_body">  The code between <text:span text:style-name="Source_20_Text">$ARGS{</text:span> ... <text:span text:style-name="Source_20_Text">}</text:span> and the terminating
  semicolon is not allowed to make a net change in the string
  stack depth, because that would interfere with the automatic
  dropping of the string argument frame at the semicolon.
  "string-args-brace"
</text:p><text:p text:style-name="Text_20_body">  Syntax for defining a string macro GEORGE:
</text:p><screen> 
      : george  ($: a$ b$ c$ -- cat$ )
        $ARGS{ arg1 arg2 arg3 }
        cat" This is arg1:  " arg1 cat" ." ENDCAT $. ;
 
</screen><text:p text:style-name="Text_20_body">  The blank following the last argument is required.  For a
  macro with no arguments, <text:span text:style-name="Source_20_Text">$ARGS{ }</text:span> does nothing but add
  useless overhead and should be omitted.  Two of the
  arguments in this example are ignored and could have been
  left out.  Note that <text:span text:style-name="Source_20_Text">ENDCAT</text:span> would not be legal in this
  word without something like <text:span text:style-name="Source_20_Text">$.</text:span> to remove the concatenated
  string from the string stack before the terminating
  semicolon.  It is normal to use an <text:span text:style-name="Source_20_Text">$ARGS{ }</text:span> word as a step
  in a concatenation that is terminated elsewhere.
</text:p><text:p text:style-name="Text_20_body">  Sample syntax using the string macro <text:span text:style-name="Source_20_Text">george</text:span>:
</text:p><screen> 
      $" bill"  $" sue"  $" marie"  george $.
 
</screen><text:p text:style-name="Text_20_body">  The resulting display is:
</text:p><screen> 
      This is arg1:  bill.
 
</screen><text:p text:style-name="Text_20_body">  NOTE: Macro argument labels must be distinct from each other
  and from any local labels that appear in the same definition,
  and there is no check for that.
</text:p><text:p text:style-name="Text_20_body">  NOTE: At the moment the semantics of <text:span text:style-name="Source_20_Text">$ARGS{</text:span> is undefined
  before <text:span text:style-name="Source_20_Text">DOES&gt;</text:span>.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$FRAME ( u -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Push the description of a string stack frame starting at the
  top of the string stack and containing u entries onto the
  string frame stack.  Errors are thrown if the frame stack
  would overflow or if the depth of the string stack above the
  top frame, if there is one, is less than u.  The value u = 0
  is allowed.  "string-frame"
</text:p><text:p text:style-name="Text_20_body">  NOTE: This implementation pushes u and the string stack
  pointer onto the frame stack.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$FRAME-DEPTH ( -- u )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave the number of string frames currently on the string
  frame stack.  "string-frame-depth"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DROP-$FRAME ($: frame*$ i*$ -- i*s )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Drop the topmost string frame from the string frame stack,
  and the corresponding strings, frame*$, from the string
  stack.  An error is thrown if either stack would underflow. 
  The cases where the frame has zero entries on the string
  stack and/or there are zero or more items on the string stack
  above the top frame item are handled properly.
  "drop-string-frame"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FIND-$ARG ( s -- u true | false )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave true and its index u in the top string frame if the
  ANS Forth string matches an element of the frame, else leave
  false.  The index of the top frame element is zero.
  "find-string-arg"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TH-$ARG ( u -- $: arg$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave the u-th string in the topmost string frame, where the
  index u of the top element is zero. Throw an error if the
  frame stack is empty or if the top frame contains less than
  u+1 strings. "th-string-arg"
</text:p>
<text:p text:style-name="Text_20_body">(DROP-$FRAME) - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$POP ( $:  a$ -- s: a$)</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Abort if the string stack would underflow when popped.
</text:p><text:p text:style-name="Text_20_body">  Otherwise pop the top of the string stack and push it onto
  the data stack.
</text:p><text:p text:style-name="Text_20_body">  If the string is in the current string space and initially
  bound to the top of the string stack, mark it as garbage by
  setting its back link to <text:span text:style-name="Source_20_Text">NULL</text:span> and set the garbage flag.
</text:p><text:p text:style-name="Text_20_body">  This word violates the rule that only ANS Forth strings
  should appear on the data stack, and so is under the hood.
  "string-pop"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$PUSH-EXT ( a$ -- $: a$ )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Pop an external mstring address from the data stack and push
  it onto the string stack after checking for room, invoking
  garbage collection if necessary.  Not to be used with a
  dynamic string because a garbage collection can invalidate
  its address.
</text:p><text:p text:style-name="Text_20_body">  This word violates the normal rule that only ANS Forth
  strings should appear on the data stack, and so is under the
  hood.
  "string-push-ext"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$BREAKP@ ( -- $stack.break.addr )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  "string-break-p-fetch"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$BUFP@ ( -- $buffer.addr )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  "string-buf-p-fetch"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$FBREAKP@ ( -- frame.stack.break.addr )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  "string-f-break-p-fetch"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$FSP@ ( -- frame.stack.top.addr )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  "string-f-s-p-fetch"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$FSP0@ ( -- initial.frame.stack.top.addr )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  "string-f-s-p-zero-fetch"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$SP@ ( -- string.stack.top.addr )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  "string-s-p-fetch"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$SP0@ ( -- initial.string.stack.top.addr )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  "string-s-p-zero-fetch"
</text:p>
<text:p text:style-name="Text_20_body">/$FRAME-ITEM - no description, sorry</text:p><text:p text:style-name="Text_20_body">/$FRAME-STACK - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">/$SPACE-HEADER ( -- $space.header.size )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  "slash-string-space-header"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">0$SPACE ( $space.addr -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Clear the string buffer, string stack, and string frame stack
  in the string space starting at space.addr.  Any string
  variables holding strings in the string buffer are left
  pointing into limbo.  This may be executed with the string
  space in an invalid state, as long as the <text:span text:style-name="Source_20_Text">/$BUF</text:span> and
  <text:span text:style-name="Source_20_Text">MAX-#$FRAMES</text:span> fields of its string space structure are
  intact. "zero-string-space"
</text:p><text:p text:style-name="Text_20_body">  NOTE: This word does not zero fill the string buffer.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CAT$P@ ( -- cat$.msa | 0 )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  "cat-string-fetch"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">IN-$BUFFER? ( msa -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Leave true if the mstring is in the string buffer.
  "in-string-buffer-question"
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-edit-ext</text:p>
 <text:h text:style-name="Heading_20_3">EDIT - builtin forth editor </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EDIT-BLOCK ( blk -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EDIT-TEXT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EDIT-ERROR ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EDIT-BLOCK-START  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EDIT-BLOCK ( blk -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  start the internal block-editor on the assigned block
</text:p>
<text:p text:style-name="Text_20_body">EDIT-TEXT - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EDIT-ERROR ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  if an error occured, this routine can be called to invoke
  an appropriate <text:span text:style-name="Source_20_Text">EDITOR</text:span> (see also <text:span text:style-name="Source_20_Text">EDIT-BLOCK</text:span>)
</text:p>
<text:p text:style-name="Text_20_body">EDIT-BLOCK-START - no description, sorry</text:p>








 <text:p text:style-name="Preformatted_20_Text">pfe-forth-ext</text:p>
 <text:h text:style-name="Heading_20_3">Forth Base system </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INTERPRET-NEXT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INTERPRET-FIND ( CS: dest* -- dest* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INTERPRET-NUMBER ( CS: dest* -- dest* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INTERPRET-NOTHING  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INTERPRET-UNDEFINED  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body">INTERPRET-NEXT - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">INTERPRET-FIND ( CS: dest* -- dest* )</text:span> executes ( -- ) experimental =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   check the next word from <text:span text:style-name="Source_20_Text">QUERY</text:span> and try to look it up
   with <text:span text:style-name="Source_20_Text">FIND</text:span> - if found then execute the token right away
   and branch out of the loop body (usually do it <text:span text:style-name="Source_20_Text">AGAIN</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">INTERPRET-NUMBER ( CS: dest* -- dest* )</text:span> executes ( -- ) experimental =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   check the next word from <text:span text:style-name="Source_20_Text">QUERY</text:span> and try to parse it up
   with =&gt; ?NUMBER - if parseable then postpone the number for execution
   and branch out of the loop body (usually do it <text:span text:style-name="Source_20_Text">AGAIN</text:span> )
</text:p>
<text:p text:style-name="Text_20_body">INTERPRET-NOTHING - no description, sorry</text:p><text:p text:style-name="Text_20_body">INTERPRET-UNDEFINED - no description, sorry</text:p>


<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-environ-ext</text:p>
 <text:h text:style-name="Heading_20_3">Environment related definitions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ENVIRONMENT? ( name-ptr name-len -- 0 | ?? name-flag! ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REQUIRED ( ... str-ptr str-len -- ??? ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REQUIRE ( ... "file-name" -- ... ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NEEDS ( name -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ENVIRONMENT? ( name-ptr name-len -- 0 | ?? name-flag! )</text:span> [ANS] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  check the environment for a property, usually
  a condition like questioning the existance of
  specified wordset, but it can also return some
  implementation properties like "WORDLISTS"
  (the length of the search-order) or "#LOCALS"
  (the maximum number of locals)
</text:p><text:p text:style-name="Text_20_body">  Here it implements the environment queries as a <text:span text:style-name="Source_20_Text">SEARCH-WORDLIST</text:span>
  in a user-visible vocabulary called <text:span text:style-name="Source_20_Text">ENVIRONMENT</text:span>
</text:p><screen>  : ENVIRONMENT?
    ['] ENVIRONMENT &amp;gt;WORDLIST SEARCH-WORDLIST
    IF  EXECUTE TRUE ELSE  FALSE THEN ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REQUIRED ( ... str-ptr str-len -- ??? )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  the filename argument is loaded via <text:span text:style-name="Source_20_Text">INCLUDED</text:span> as
  an extension package to the current system. The filename
  is registered in the current <text:span text:style-name="Source_20_Text">ENVIRONMENT</text:span> so that it is
  only <text:span text:style-name="Source_20_Text">INCLUDED</text:span> once (!!) if called multiple times via
  <text:span text:style-name="Source_20_Text">REQUIRED</text:span> or <text:span text:style-name="Source_20_Text">REQUIRES</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REQUIRE ( ... "file-name" -- ... )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  parses the next <text:span text:style-name="Source_20_Text">WORD</text:span> and passes it to <text:span text:style-name="Source_20_Text">REQUIRED</text:span>
  this is the self-parsing version of <text:span text:style-name="Source_20_Text">REQUIRED</text:span> and
  it does parrallel <text:span text:style-name="Source_20_Text">INCLUDE</text:span> w.r.t. <text:span text:style-name="Source_20_Text">INCLUDED</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NEEDS ( name -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">
  A self-parsing variant of an environment-query check. It is similar
  to a simulation like
</text:p><screen> 
  : NEEDS PARSE-WORD 2DUP ENVIRONMENT? 
    IF DROP ( extra value ) 2DROP ( success - be silent )
    ELSE TYPE ." not available " CR THEN ;
 
</screen><text:p text:style-name="Text_20_body">  however that would only match those worset-envqueries which return a
  single extra item under the uppermost TRUE flag in the success case.
  Instead it works more like
</text:p><screen> 
  : NEEDS PARSE-WORD 2DUP ENVIRONMENT-WORDLIST SEARCH-WORDLIST
    IF 2DROP ( success - be silent and just drop the parsed word )
    ELSE TYPE ." not available " CR THEN ;
 
</screen><text:p text:style-name="Text_20_body">  however we add the same extension as in <text:span text:style-name="Source_20_Text">ENVIRONMENT</text:span>? as that
  it can automatically load a wordset module to fullfil a query
  that looks like "[wordsetname]-ext". Therefore, the following
  two lines are pretty much identical:
</text:p><screen> 
  LOADM floating
  NEEDS floating-ext
 
</screen><text:p text:style-name="Text_20_body">  the difference between the two: if somebody did provide a forth
  level implementation of floating-ext then that implementation might
  have registered a hint "floating-ext" in the environment-wordlist.
  This extra-hint will inhibit loading of the binary module even if
  it exists and not been loaded so far. The <text:span text:style-name="Source_20_Text">LOADM</text:span> however will
  not check the <text:span text:style-name="Source_20_Text">ENVIRONMENT-WORDLIST</text:span> and only check its loadlist
  of binary wordset modules in the system.
</text:p><text:p text:style-name="Text_20_body">
  It is therefore recommended to use <text:span text:style-name="Source_20_Text">NEEDS</text:span> instead of <text:span text:style-name="Source_20_Text">LOADM</text:span>
  unless you know you want the binary module, quickly and uncondtionally.
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-exception-ext</text:p>
 <text:h text:style-name="Heading_20_3">Exception + extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CATCH ( catch-xt* -- 0 | throw#! ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">THROW ( throw#! -- [THROW] | throw# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ABORT ( -- [THROW] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ABORT" ( [string&amp;lt;"&amp;gt;] -- [THROW] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CATCH ( catch-xt* -- 0 | throw#! )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  execute the given execution-token and catch
  any exception that can be caught therein.
  software can arbitrarily raise an exception
  using <text:span text:style-name="Source_20_Text">THROW</text:span> - the value 0 means there
  was no exception, other denote implementation
  dependent exception-codes.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">THROW ( throw#! -- [THROW] | throw# -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  raise an exception - it will adjust the depth
  of all stacks and start interpreting at the point 
  of the latest <text:span text:style-name="Source_20_Text">CATCH</text:span> 
  if n is null nothing happens, the -1 (ie. <text:span text:style-name="Source_20_Text">FALSE</text:span> )
  is the raise-code of <text:span text:style-name="Source_20_Text">ABORT</text:span> - the other codes
  are implementation dependent and will result in
  something quite like <text:span text:style-name="Source_20_Text">ABORT</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ABORT ( -- [THROW] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  throw - cleanup some things and go back to the QUIT routine
</text:p><screen>  : ABORT -1 THROW ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ABORT" ( [string&amp;lt;"&amp;gt;] -- [THROW] )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  throw like <text:span text:style-name="Source_20_Text">ABORT</text:span> but print an additional error-message
  to stdout telling what has happened.
</text:p>



<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-facility-ext</text:p>
 <text:h text:style-name="Heading_20_3">Facility + extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">AT-XY ( col# row# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">KEY? ( -- key-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PAGE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EKEY ( -- key-code# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EKEY&gt;CHAR ( key-code# -- key-code# 0 | char# true! ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EKEY? ( -- ekey-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EMIT? ( -- emit-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MS ( milliseconds# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TIME&amp;DATE  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">AT-XY ( col# row# -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  move the cursor position to the given row and column
  of the screen. If the output device is not a terminal
  this will have no effect but can still send an
  escape sequence.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">KEY? ( -- key-flag )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  if a character is available from the keyboard, return true.
  The <text:span text:style-name="Source_20_Text">KEY</text:span> word will retrieve the actual character.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PAGE ( -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  <text:span text:style-name="Source_20_Text">CLRSCR</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EKEY ( -- key-code# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return a keyboard event, the encoding may differ, esp.
  that it can contain special keys.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EKEY&gt;CHAR ( key-code# -- key-code# 0 | char# true! )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EKEY? ( -- ekey-flag )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  check if a character is available from the keyboard
  to be received - unlike <text:span text:style-name="Source_20_Text">KEY</text:span>? it will not discard
  non-visible codes.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EMIT? ( -- emit-flag )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  if <text:span text:style-name="Source_20_Text">EMIT</text:span> can safely output characters without
  blocking the forth by waiting for an indefinite time.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MS ( milliseconds# -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  wait at least the specified milliseconds
  (suspend the forth tasklet)
</text:p>
<text:p text:style-name="Text_20_body">TIME&amp;DATE - no description, sorry</text:p>








 <text:p text:style-name="Preformatted_20_Text">pfe-facility-mix-ext</text:p>
 <text:h text:style-name="Heading_20_3">FACILITY-MIX extra words </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">#! ( "...&amp;lt;eol&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">GETTIMEOFDAY ( -- milliseconds# epochseconds# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MS@ ( -- milliseconds# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CLOCK@ ( --- clock-ticks# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">#! ( "...&amp;lt;eol&amp;gt;" -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  ignores the rest of the line,
  defining `#!' is used to support forth scripts
  executed by the unix kernel
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">GETTIMEOFDAY ( -- milliseconds# epochseconds# )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  returns SVR/BSD gettimeofday(2).
  Incompatible with 16-bit systems as the numbers can not be properly
  represented, hence <text:span text:style-name="Source_20_Text">TIME&amp;DATE</text:span> is more portable.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MS@ ( -- milliseconds# )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  elapsed time since start of process (or system) - in millseconds.
  The granularity is per clock ticks as per <text:span text:style-name="Source_20_Text">ENVIRONMENT CLOCKS_PER_SEC</text:span>
  For the current wall clock in milliseconds, ask <text:span text:style-name="Source_20_Text">GETTIMEOFDAY</text:span>.
</text:p><text:p text:style-name="Text_20_body">
  Remember that the process clock will wrap around at some point,
  therefore only use difference values between two clock reads.
  Also note that on many desktop systems the process scheduler ticks
  per 1/100s or 1/60s so that the difference of two continuous reads
  of the process clock will show steps of 10 to 16 milliseconds.
</text:p><text:p text:style-name="Text_20_body">
  see also <text:span text:style-name="Source_20_Text">CLOCK@</text:span> and <text:span text:style-name="Source_20_Text">MS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CLOCK@ ( --- clock-ticks# )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  return clock(2) - the number of clocks of this process.
  To get the number of seconds, divide by <text:span text:style-name="Source_20_Text">CLOCKS_PER_SEC</text:span>
  as represented in the <text:span text:style-name="Source_20_Text">ENVIROMENT</text:span> for a hosted forth system.
  A similar scheme is used by <text:span text:style-name="Source_20_Text">MS@</text:span> to compute the clock time
  rounded to milliseconds (named in similarity with <text:span text:style-name="Source_20_Text">MS</text:span> sleep).
</text:p><text:p text:style-name="Text_20_body">
  Remember that the process clock will wrap around at some point,
  therefore only use difference values between two clock reads.
</text:p>



<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-file-ext</text:p>
 <text:h text:style-name="Heading_20_3">File-access + extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BIN ( access-mode# -- access-mode#' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CLOSE-FILE ( some-file* -- some-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CREATE-FILE ( name-ptr name-len open-mode# -- name-file* name-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DELETE-FILE ( name-ptr name-len -- name-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-POSITION ( some-file* -- p,pos# some-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-SIZE ( some-file* -- s,size# some-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INCLUDE-FILE ( some-file* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INCLUDED ( name-ptr name-len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">OPEN-FILE ( name-ptr name-len open-mode# -- name-file* name-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">READ-FILE ( buf-ptr buf-len some-file* -- buf-count some-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">READ-LINE ( buf-ptr buf-len some-file* -- buf-count buf-flag some-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REPOSITION-FILE ( o,offset# some-file* -- some-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RESIZE-FILE ( s,size# some-file* -- some-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">WRITE-FILE ( buf-ptr buf-len some-file* -- some-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">WRITE-LINE ( buf-ptr buf-len some-file* -- some-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-STATUS ( file-ptr file-len -- file-subcode# file-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLUSH-FILE ( some-file* -- some-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RENAME-FILE ( oldname-ptr oldname-len newname-ptr newname-len -- newname-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body">  "ENVIRONMENT MAX-FILES" ( -- files-max ) [ENVIRONMENT]
 * the number of opened file-ids allowed during compilation.
 * portable programs can check this with => ENVIRONMENT?
 </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BIN ( access-mode# -- access-mode#' )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  modify the give file access-mode to be a binary-mode
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CLOSE-FILE ( some-file* -- some-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  close the file and return the status-code
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CREATE-FILE ( name-ptr name-len open-mode# -- name-file* name-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  create the file with the given name and open
  it - returns the file id and a status code.
  A code of zero means success. An existing file
  of the same name is truncated upon open.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DELETE-FILE ( name-ptr name-len -- name-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  delete the named file and return a status code
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-POSITION ( some-file* -- p,pos# some-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the current position in the file and
  return a status code. A code of zero means success.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-SIZE ( some-file* -- s,size# some-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the current size of the file and
  return a status code. A code of zero means success.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">INCLUDE-FILE ( some-file* -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  <text:span text:style-name="Source_20_Text">INTERPRET</text:span> the given file
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">INCLUDED ( name-ptr name-len -- )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  open the named file and then <text:span text:style-name="Source_20_Text">INCLUDE-FILE</text:span>
  see also the interactive <text:span text:style-name="Source_20_Text">INCLUDE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">OPEN-FILE ( name-ptr name-len open-mode# -- name-file* name-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  open the named file with mode. returns the
  file id and a status code. A code of zero
  means success.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">READ-FILE ( buf-ptr buf-len some-file* -- buf-count some-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  fill the given string buffer with characters
  from the buffer. A status code of zero means
  success and the returned count gives the
  number of bytes actually read. If an error
  occurs the number of already transferred bytes 
  is returned.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">READ-LINE ( buf-ptr buf-len some-file* -- buf-count buf-flag some-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  fill the given string buffer with one line
  from the file. A line termination character
  (or character sequence under WIN/DOS) may
  also be placed in the buffer but is not
  included in the final count. In other respects
  this function performs a <text:span text:style-name="Source_20_Text">READ-FILE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REPOSITION-FILE ( o,offset# some-file* -- some-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  reposition the file offset - the next <text:span text:style-name="Source_20_Text">FILE-POSITION</text:span>
  would return o.offset then. returns a status code where zero means success.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">RESIZE-FILE ( s,size# some-file* -- some-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  resize the give file, returns a status code where zero means success.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">WRITE-FILE ( buf-ptr buf-len some-file* -- some-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  write characters from the string buffer to a file,
  returns a status code where zero means success.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">WRITE-LINE ( buf-ptr buf-len some-file* -- some-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  write characters from the string buffer to a file,
  and add the line-terminator to the end of it.
  returns a status code.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-STATUS ( file-ptr file-len -- file-subcode# file-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  check the named file - if it exists
  the status errno code is zero. The status subcode
  is implementation-specific and usually matches the
  file access permission bits of the filesystem.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FLUSH-FILE ( some-file* -- some-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  flush all unsaved buffers of the file to disk.
  A status code of zero means success.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">RENAME-FILE ( oldname-ptr oldname-len newname-ptr newname-len -- newname-errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  rename the file named by "oldname" to the name of "newname"
  returns a status-code where zero means success.
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-file-misc-ext</text:p>
 <text:h text:style-name="Heading_20_3">FILE-Misc Compatibility words </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INCLUDE ( "filename" -- ??? ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">COPY-FILE ( src-ptr src-len dst-ptr dst-len -- copy-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MOVE-FILE ( src-ptr src-len dst-ptr dst-len -- move-errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-R/W ( buffer* use-block# flag? some-file* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-BLOCK ( use-block# some-file* -- buffer* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-BUFFER ( use-block# some-file* -- buffer* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-EMPTY-BUFFERS ( some-file* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-FLUSH ( some-file* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-LIST ( use-block# some-file* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-LOAD ( use-block# some-file* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-SAVE-BUFFERS ( some-file* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-THRU ( lo-block# hi-block# some-file* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-UPDATE ( some-file* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">INCLUDE ( "filename" -- ??? )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  load the specified file, see also <text:span text:style-name="Source_20_Text">LOAD"</text:span> filename"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">COPY-FILE ( src-ptr src-len dst-ptr dst-len -- copy-errno# )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  like <text:span text:style-name="Source_20_Text">RENAME-FILE</text:span>, copies the file from src-name to dst-name
  and returns an error-code or null
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MOVE-FILE ( src-ptr src-len dst-ptr dst-len -- move-errno# )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  like <text:span text:style-name="Source_20_Text">RENAME-FILE</text:span>, but also across-volumes 
  moves the file from src-name to dst-name and returns an
  error-code or null
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-R/W ( buffer* use-block# flag? some-file* -- )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  like FIG-Forth <text:span text:style-name="Source_20_Text"> R/W </text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-BLOCK ( use-block# some-file* -- buffer* )</text:span> [FTH] =&gt; [FORTH]</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-BUFFER ( use-block# some-file* -- buffer* )</text:span> [FTH] =&gt; [FORTH]</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-EMPTY-BUFFERS ( some-file* -- )</text:span> [FTH] =&gt; [FORTH]</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-FLUSH ( some-file* -- )</text:span> [FTH] =&gt; [FORTH]</text:p>
<screen> 
  simulate      : FILE-FLUSH DUP FILE-SAVE-BUFFERS FILE-EMTPY-BUFFERS ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-LIST ( use-block# some-file* -- )</text:span> [FTH] =&gt; [FORTH]</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-LOAD ( use-block# some-file* -- )</text:span> [FTH] =&gt; [FORTH]</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-SAVE-BUFFERS ( some-file* -- )</text:span> [FTH] =&gt; [FORTH]</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-THRU ( lo-block# hi-block# some-file* -- )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">THRU</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-UPDATE ( some-file* -- )</text:span> [FTH] =&gt; [FORTH]</text:p>




<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-floating-ext</text:p>
 <text:h text:style-name="Heading_20_3">Floating point + extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;FLOAT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">D&gt;F  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F!  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F*  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F+  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F-  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F/  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F0&lt;  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F0=  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F&lt;  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F&gt;D  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F@  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FALIGN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FALIGNED  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FDEPTH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FDROP  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FDUP  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLITERAL  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLOAT+  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLOATS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLOOR  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FMAX  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FMIN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FNEGATE  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FOVER  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FROT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FROUND  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FSWAP  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REPRESENT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DF!  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DF@  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DFALIGN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DFALIGNED  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DFLOAT+  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DFLOATS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F**  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F.  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FABS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FACOS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FACOSH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FALOG  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FASIN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FASINH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FATAN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FATAN2  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FATANH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FCOS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FCOSH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FE.  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FEXP  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FEXPM1  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLNP1  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLOG  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FS.  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FSIN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FSINCOS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FSINH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FSQRT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FTAN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FTANH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F~  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SET-PRECISION  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SF!  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SF@  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SFALIGN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SFALIGNED  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SFLOAT+  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SFLOATS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLOATING-STACK  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MAX-FLOAT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INTERPRET-FLOAT ( CS: dest* -- dest* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body">&gt;FLOAT - no description, sorry</text:p><text:p text:style-name="Text_20_body">D&gt;F - no description, sorry</text:p><text:p text:style-name="Text_20_body">F! - no description, sorry</text:p><text:p text:style-name="Text_20_body">F* - no description, sorry</text:p><text:p text:style-name="Text_20_body">F+ - no description, sorry</text:p><text:p text:style-name="Text_20_body">F- - no description, sorry</text:p><text:p text:style-name="Text_20_body">F/ - no description, sorry</text:p><text:p text:style-name="Text_20_body">F0&lt; - no description, sorry</text:p><text:p text:style-name="Text_20_body">F0= - no description, sorry</text:p><text:p text:style-name="Text_20_body">F&lt; - no description, sorry</text:p><text:p text:style-name="Text_20_body">F&gt;D - no description, sorry</text:p><text:p text:style-name="Text_20_body">F@ - no description, sorry</text:p><text:p text:style-name="Text_20_body">FALIGN - no description, sorry</text:p><text:p text:style-name="Text_20_body">FALIGNED - no description, sorry</text:p><text:p text:style-name="Text_20_body">FDEPTH - no description, sorry</text:p><text:p text:style-name="Text_20_body">FDROP - no description, sorry</text:p><text:p text:style-name="Text_20_body">FDUP - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLITERAL - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLOAT+ - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLOATS - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLOOR - no description, sorry</text:p><text:p text:style-name="Text_20_body">FMAX - no description, sorry</text:p><text:p text:style-name="Text_20_body">FMIN - no description, sorry</text:p><text:p text:style-name="Text_20_body">FNEGATE - no description, sorry</text:p><text:p text:style-name="Text_20_body">FOVER - no description, sorry</text:p><text:p text:style-name="Text_20_body">FROT - no description, sorry</text:p><text:p text:style-name="Text_20_body">FROUND - no description, sorry</text:p><text:p text:style-name="Text_20_body">FSWAP - no description, sorry</text:p><text:p text:style-name="Text_20_body">REPRESENT - no description, sorry</text:p><text:p text:style-name="Text_20_body">DF! - no description, sorry</text:p><text:p text:style-name="Text_20_body">DF@ - no description, sorry</text:p><text:p text:style-name="Text_20_body">DFALIGN - no description, sorry</text:p><text:p text:style-name="Text_20_body">DFALIGNED - no description, sorry</text:p><text:p text:style-name="Text_20_body">DFLOAT+ - no description, sorry</text:p><text:p text:style-name="Text_20_body">DFLOATS - no description, sorry</text:p><text:p text:style-name="Text_20_body">F** - no description, sorry</text:p><text:p text:style-name="Text_20_body">F. - no description, sorry</text:p><text:p text:style-name="Text_20_body">FABS - no description, sorry</text:p><text:p text:style-name="Text_20_body">FACOS - no description, sorry</text:p><text:p text:style-name="Text_20_body">FACOSH - no description, sorry</text:p><text:p text:style-name="Text_20_body">FALOG - no description, sorry</text:p><text:p text:style-name="Text_20_body">FASIN - no description, sorry</text:p><text:p text:style-name="Text_20_body">FASINH - no description, sorry</text:p><text:p text:style-name="Text_20_body">FATAN - no description, sorry</text:p><text:p text:style-name="Text_20_body">FATAN2 - no description, sorry</text:p><text:p text:style-name="Text_20_body">FATANH - no description, sorry</text:p><text:p text:style-name="Text_20_body">FCOS - no description, sorry</text:p><text:p text:style-name="Text_20_body">FCOSH - no description, sorry</text:p><text:p text:style-name="Text_20_body">FE. - no description, sorry</text:p><text:p text:style-name="Text_20_body">FEXP - no description, sorry</text:p><text:p text:style-name="Text_20_body">FEXPM1 - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLN - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLNP1 - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLOG - no description, sorry</text:p><text:p text:style-name="Text_20_body">FS. - no description, sorry</text:p><text:p text:style-name="Text_20_body">FSIN - no description, sorry</text:p><text:p text:style-name="Text_20_body">FSINCOS - no description, sorry</text:p><text:p text:style-name="Text_20_body">FSINH - no description, sorry</text:p><text:p text:style-name="Text_20_body">FSQRT - no description, sorry</text:p><text:p text:style-name="Text_20_body">FTAN - no description, sorry</text:p><text:p text:style-name="Text_20_body">FTANH - no description, sorry</text:p><text:p text:style-name="Text_20_body">F~ - no description, sorry</text:p><text:p text:style-name="Text_20_body">SET-PRECISION - no description, sorry</text:p><text:p text:style-name="Text_20_body">SF! - no description, sorry</text:p><text:p text:style-name="Text_20_body">SF@ - no description, sorry</text:p><text:p text:style-name="Text_20_body">SFALIGN - no description, sorry</text:p><text:p text:style-name="Text_20_body">SFALIGNED - no description, sorry</text:p><text:p text:style-name="Text_20_body">SFLOAT+ - no description, sorry</text:p><text:p text:style-name="Text_20_body">SFLOATS - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLOATING-STACK - no description, sorry</text:p><text:p text:style-name="Text_20_body">MAX-FLOAT - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">INTERPRET-FLOAT ( CS: dest* -- dest* )</text:span> executes ( -- F: f# ) experimental =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">   check the next word from <text:span text:style-name="Source_20_Text">QUERY</text:span> and try to parse it as a
   floating number - if parseable then postpone the value on the
   floating stack and branch out of the loop body (usually do it <text:span text:style-name="Source_20_Text">AGAIN</text:span> )
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-floating-misc-ext</text:p>
 <text:h text:style-name="Heading_20_3">FLOATING-Misc Compatibility words </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLIT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FP@ ( -- addr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FP! ( addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F=  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F&lt;&gt; ( f: a b -- s: a!=b ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F&gt;  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F&lt;=  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F&gt;=  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">S&gt;F ( n -- f: x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FTRUNC&gt;S (f: x -- s: n ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FROUND&gt;S (f: x -- s: n) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FTRUNC (f: x -- x' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">-FROT (f: x1 x2 x3 -- x3 x1 x2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FNIP (f: x1 x2 -- x2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FTUCK (f: x1 x2 -- x2 x1 x2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">1/F (f: x -- 1/x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F^2 (f: x -- x^2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F^N ( u f: x -- x^u ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F2/ (f: x -- x/2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F2* (f: x -- x*2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F0&gt; (f: x -- s: flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F0&lt;&gt; (f: x -- s: flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body">FLIT - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FP@ ( -- addr )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  returns the floating point stack pointer 
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FP! ( addr -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  sets the floating point stack pointer -
  this is the inverse of <text:span text:style-name="Source_20_Text">FP@</text:span>
</text:p>
<text:p text:style-name="Text_20_body">F= - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F&lt;&gt; ( f: a b -- s: a!=b )</text:span> =&gt; "FORTH"</text:p>

<text:p text:style-name="Text_20_body">F&gt; - no description, sorry</text:p><text:p text:style-name="Text_20_body">F&lt;= - no description, sorry</text:p><text:p text:style-name="Text_20_body">F&gt;= - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">S&gt;F ( n -- f: x )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  it's inverse is <text:span text:style-name="Source_20_Text">F&gt;S</text:span> - convert a cell parameter to floating-point.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FTRUNC&gt;S (f: x -- s: n )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">
  The word <text:span text:style-name="Source_20_Text">F&gt;S</text:span> was sometimes defined with a different behavior 
  than <text:span text:style-name="Source_20_Text">FTRUNC&gt;S</text:span> which is the type-cast behaviour of C according 
  to C99 section 6.3.1.4 - truncation would also match the ANS-Forth
  specification for <text:span text:style-name="Source_20_Text">F&gt;D</text:span>.
</text:p><text:p text:style-name="Text_20_body">
  Some systems used <text:span text:style-name="Source_20_Text">F&gt;S</text:span> defined to <text:span text:style-name="Source_20_Text">FROUND&gt;S</text:span> instead. The pfe
  provides explicit words for both conversions, the word <text:span text:style-name="Source_20_Text">FROUND&gt;S</text:span>
  and <text:span text:style-name="Source_20_Text">FTRUNC&gt;S</text:span> which return single-cell parameters for a floating
  point number with the conversion method of <text:span text:style-name="Source_20_Text">FTRUNC</text:span> or <text:span text:style-name="Source_20_Text">FROUND</text:span>.
</text:p><text:p text:style-name="Text_20_body">
  In PFE, <text:span text:style-name="Source_20_Text">F&gt;S</text:span> is a synonym pointing to <text:span text:style-name="Source_20_Text">FTRUNC&gt;S</text:span> in analogy 
  of the behavior of <text:span text:style-name="Source_20_Text">F&gt;D</text:span> where no explicit word exists. The
  inverse of <text:span text:style-name="Source_20_Text">F&gt;S</text:span> is the cast conversion of <text:span text:style-name="Source_20_Text">S&gt;F</text:span>.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FROUND&gt;S (f: x -- s: n)</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  complements <text:span text:style-name="Source_20_Text">FTRUNC&gt;S</text:span> for applications that expect <text:span text:style-name="Source_20_Text">F&gt;S</text:span> to
  be defined with a rounding behavior like 
</text:p><screen>  : FROUND&amp;gt;S FROUND FTRUNC&amp;gt;S ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FTRUNC (f: x -- x' )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  truncate towards zero, discard a fractional part. See also <text:span text:style-name="Source_20_Text">FTRUNC&gt;S</text:span>
  conversion and the <text:span text:style-name="Source_20_Text">FROUND</text:span> and <text:span text:style-name="Source_20_Text">FLOOR</text:span> adaptors.
</text:p><screen>  : FTRUNC FDUP F0&amp;lt; IF FCEIL ELSE FLOOR THEN ;
</screen><text:p text:style-name="Text_20_body">  (When available, uses a single call to C99 trunc() internally)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">-FROT (f: x1 x2 x3 -- x3 x1 x2 )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">
  F-stack equivalent of <text:span text:style-name="Source_20_Text">-ROT</text:span>
</text:p><text:p text:style-name="Text_20_body">
  note, some systems call this work F-ROT,
  here it is the inverse of <text:span text:style-name="Source_20_Text">FROT</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FNIP (f: x1 x2 -- x2 )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">
  F-stack equivalent of <text:span text:style-name="Source_20_Text">NIP</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FTUCK (f: x1 x2 -- x2 x1 x2 )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">
  F-stack equivalent of <text:span text:style-name="Source_20_Text">TUCK</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">1/F (f: x -- 1/x )</text:span> =&gt; "FORTH"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F^2 (f: x -- x^2 )</text:span> =&gt; "FORTH"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F^N ( u f: x -- x^u )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  For large exponents, use F** instead.  Of course u=-1 is large. 
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F2/ (f: x -- x/2 )</text:span> =&gt; "FORTH"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F2* (f: x -- x*2 )</text:span> =&gt; "FORTH"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F0&gt; (f: x -- s: flag )</text:span> =&gt; "FORTH"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F0&lt;&gt; (f: x -- s: flag )</text:span> =&gt; "FORTH"</text:p>










 <text:p text:style-name="Preformatted_20_Text">pfe-forth-83-ext</text:p>
 <text:h text:style-name="Heading_20_3">  </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2+ ( a# -- a#' | a* -- a*' | a -- a' [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2- ( a# -- a#' | a* -- a*' | a -- a' [??] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?TERMINAL  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">COMPILE ( "word" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">--&gt; ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INTERPRET  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">K ( -- k# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">OCTAL ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SP@ ( -- sp-cell* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">!BITS ( x-bits# x-addr mask# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">@BITS ( x-addr mask# -- x-value# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;&lt; ( a -- a' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;MOVE&lt; ( from-addr* to-addr* count# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">** ( a# b# -- power-a# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SEAL ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body">  NOT ( x# - x#' [?] ) [FTH]
 * a => SYNONYM for => INVERT - the word => NOT is not portable as in some
 * systems it is a => SYNONYM for => 0= ... therefore try to avoid it.
 *
 * we declare it as an OBSOLETED-SYNONYM now to create a warning message
 * since code using NOT is inherently not portable. The forth systems
 * seem to be divided about 50%-50% for F83'style bitwise =>"INVERT" or 
 * a logical NOT as =>"0=",  with a slight drift into the direction of 
 *  =>"0=". We  default to bitwise style for earlier FIG/F83 usage. 
 * 
 * Remember that you can override the defaults in your application code
 * e.g. a SYNONYM NOT 0= to have the logical style as the behavior. As
 * for all synonyms the decompilation will show "0=" in that case.
 </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2+ ( a# -- a#' | a* -- a*' | a -- a' [??] )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   add 2 to the value on stack (and leave the result there)
</text:p><screen>  simulate:
    : 2+ 2 + ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2- ( a# -- a#' | a* -- a*' | a -- a' [??] )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   substract 2 from the value on stack (and leave the result there)
</text:p><screen>  simulate:
    : 2- 2 - ;
  
</screen>
<text:p text:style-name="Text_20_body">?TERMINAL - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">COMPILE ( "word" -- )</text:span>  [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  compile the next word. The next word should not be immediate,
  in which case you would have to use <text:span text:style-name="Source_20_Text">[COMPILE]</text:span>. For this
  reason, you should use the word <text:span text:style-name="Source_20_Text">POSTPONE</text:span>, which takes care
  it.
</text:p><screen>  simulate:
    : COMPILE  R&amp;gt; DUP @ , CELL+ &amp;gt;R ;  ( not immediate !!! )
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">--&gt; ( -- )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  does increase <text:span text:style-name="Source_20_Text">BLK</text:span> and refills the input-buffer
  from there. Does hence break interpretation of the
  current BLK and starts with the next. Old-style
  forth mechanism. You should use <text:span text:style-name="Source_20_Text">INCLUDE</text:span>
</text:p><screen>  : --&amp;gt; ?LOADING REFILL ;
  
</screen>
<text:p text:style-name="Text_20_body">INTERPRET - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">K ( -- k# )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  the 3rd loop index just like <text:span text:style-name="Source_20_Text">I</text:span> and <text:span text:style-name="Source_20_Text">J</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">OCTAL ( -- )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  sets <text:span text:style-name="Source_20_Text">BASE</text:span> to 8. Compare with <text:span text:style-name="Source_20_Text">HEX</text:span> and <text:span text:style-name="Source_20_Text">DECIMAL</text:span>
</text:p><screen>  simulate:
    : OCTAL  8 BASE ! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SP@ ( -- sp-cell* )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  the address of the top of stack. Does save it onto
  the stack. You could do 
</text:p><screen>    : DUP  SP@ @ ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">!BITS ( x-bits# x-addr mask# -- )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  at the cell pointed to by addr, change only the bits that
  are enabled in mask
</text:p><screen>  simulate:
    : !BITS  &amp;gt;R 2DUP @ R NOT AND SWAP R&amp;gt; AND OR SWAP ! DROP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">@BITS ( x-addr mask# -- x-value# )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  see the companion word =&gt; !BITS
</text:p><screen>  simulate:
    : @BITS  SWAP @ AND ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&gt;&lt; ( a -- a' )</text:span> [FTH] [OLD] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  byte-swap a word
</text:p><text:p text:style-name="Text_20_body">
  depracated: use <text:span text:style-name="Source_20_Text">NTOHS</text:span> which does the same as this word when
  the local byte-order seems to have no match, and be otherwise
  a no-op. Note that only the two lower bytes of the top-of-cell
  are swapped.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&gt;MOVE&lt; ( from-addr* to-addr* count# -- )</text:span> [FTH] [OLD] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">MOVE</text:span> , does byte-swap for each word underway. 
</text:p><text:p text:style-name="Text_20_body">
  depracated: this word has not been very useful lately. It does
  still stem from times of 16bit forth systems that wanted to
  interchange data blocks. It is better to use functionality
  based on <text:span text:style-name="Source_20_Text">NTOHS</text:span> or <text:span text:style-name="Source_20_Text">NTOHL</text:span>. Note that this word <text:span text:style-name="Source_20_Text">&gt;MOVE&lt;</text:span>
  does swap each 2byte. It is not useful for byte-swapping
  <text:span text:style-name="Source_20_Text">WCHAR</text:span> strings as the count is given in bytes, not wchar items.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">** ( a# b# -- power-a# )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  raise second to top power
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SEAL ( -- )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  looks through the search-order and kills the ONLY wordset -
  hence you can't access the primary vocabularies from there.
</text:p>



<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-forth-usual-ext</text:p>
 <text:h text:style-name="Heading_20_3">Usual Forth extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">C+! ( n addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">VOCABULARY ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BOUNDS ( str len -- str+len str ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">OFF!  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ON! ( addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PLACE ( str len addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">+PLACE ( str len add2 -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">C+PLACE ( char addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">@EXECUTE ( xt -- ? ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?LEAVE ( cond -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NOOP ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RP@ ( -- addr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RP! ( addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SP! ( ... addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">-ROT ( a b c -- c a b ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CSET ( n addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CRESET ( n addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CTOGGLE ( n addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TOGGLE ( c-addr charmask -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">3DUP ( x y z -- x y z x y z ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">3DROP ( x y z -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">4DUP ( a b c d -- a b c d a b c d ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">4DROP ( x y z -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TOUPPER ( c1 -- c2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">UPPER ( addr cnt -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LOWER ( addr cnt -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ASCII ( [word] -- val ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CONTROL ( [word] -- val ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NUMBER? ( addr -- d flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">VOCS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EMITS ( n char -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-CHECK ( n -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MEMORY-CHECK ( n -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">++ ( addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">@++ ( addr -- addr' x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">!++ ( addr x -- addr' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;WORDLIST ( xt -- wordl* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">C+! ( n addr -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Add the low-order byte of _n_ to the byte at _addr_,
   removing both from the stack.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">VOCABULARY ( "name" -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  create a vocabulary of that name. If the named vocabulary
  is called later, it will run <text:span text:style-name="Source_20_Text">((VOCABULARY))</text:span> , thereby
  putting it into the current search order.
  Special pfe-extensions are accessible via 
  <text:span text:style-name="Source_20_Text">CASE-SENSITIVE-VOC</text:span> and <text:span text:style-name="Source_20_Text">SEARCH-ALSO-VOC</text:span>
</text:p><screen>  simulate:
    : VOCABULARY  CREATE ALLOT-WORDLIST
         DOES&amp;gt; ( the ((VOCABULARY)) runtime )
           CONTEXT ! 
    ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BOUNDS ( str len -- str+len str )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Convert _str len_ to range for DO-loop.
</text:p><screen>  : BOUNDS  ( str len -- str+len str )  OVER + SWAP ;
  
</screen>
<text:p text:style-name="Text_20_body">OFF! - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ON! ( addr -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Store -1 at _addr_. Defined in f83 as <text:span text:style-name="Source_20_Text">ON</text:span>. See antonym <text:span text:style-name="Source_20_Text">OFF!</text:span>.
</text:p><screen>   : ON!  ( addr -- )  -1 SWAP ! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PLACE ( str len addr -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Place the string _str len_ at _addr_, formatting it as a
   counted string.
</text:p><screen>  : PLACE  2DUP 2&amp;gt;R  1+ SWAP  MOVE  2R&amp;gt; C! ;
  : PLACE  2DUP C!   1+ SWAP CMOVE ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">+PLACE ( str len add2 -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Append string _str len_ to the counted string at _addr_.
   a.k.a. <text:span text:style-name="Source_20_Text">APPEND</text:span> (being a <text:span text:style-name="Source_20_Text">SYNONYM</text:span> now)
</text:p><screen>  : +PLACE   2DUP 2&amp;gt;R  COUNT +  SWAP MOVE ( ) 2R&amp;gt; C+! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">C+PLACE ( char addr -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Append _char_ to the counted string at _addr_.
   a.k.a. <text:span text:style-name="Source_20_Text">APPEND-CHAR</text:span> (being a <text:span text:style-name="Source_20_Text">SYNONYM</text:span> now)
</text:p><screen>  : C+PLACE   DUP &amp;gt;R  COUNT  DUP 1+ R&amp;gt; C!  +  C! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">@EXECUTE ( xt -- ? )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  same as <text:span text:style-name="Source_20_Text">@</text:span> <text:span text:style-name="Source_20_Text">EXECUTE</text:span> , but checks for null as xt and
  silently ignores it. Same as in most forths where defined.
</text:p><screen>  simulate:
    : @EXECUTE  @ ?DUP IF EXECUTE THEN ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">?LEAVE ( cond -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  leave a (innermost) loop if condition is true
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NOOP ( -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  do nothing, used as a place-holder where 
  an execution word is needed
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">RP@ ( -- addr )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  returns the return stack pointer 
</text:p><screen>  example:
    : R@ RP@ @ ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">RP! ( addr -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  sets the return stack pointer, reverse of <text:span text:style-name="Source_20_Text">RP@</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SP! ( ... addr -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  sets the stack pointer, reverse of <text:span text:style-name="Source_20_Text">SP@</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">-ROT ( a b c -- c a b )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  inverse of <text:span text:style-name="Source_20_Text">ROT</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CSET ( n addr -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  set bits in byte at given address 
</text:p><screen>  simulate:
    : CSET  TUCK @ SWAP OR SWAP ! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CRESET ( n addr -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   reset bits in byte at given address 
</text:p><screen>  simulate:
    : CRESET  TUCK @ SWAP NOT AND SWAP ! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CTOGGLE ( n addr -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  toggle bits in byte at given address 
</text:p><screen>  simulate:
    : CTOGGLE  TUCK @ SWAP XOR SWAP ! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TOGGLE ( c-addr charmask -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  toggle the bits given in charmask, see also <text:span text:style-name="Source_20_Text">SMUDGE</text:span> and = UNSMUDGE
</text:p><screen>  example: the fig-style SMUDGE had been defined such
    : FIG-SMUDGE LATEST &amp;gt;FFA (SMUDGE#) TOGGLE ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">3DUP ( x y z -- x y z x y z )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Copy top three elements on the stack onto top of stack.
</text:p><screen>  : 3DUP   THIRD THIRD THIRD ;
</screen><text:p text:style-name="Text_20_body">
  or
</text:p><screen>  : 3DUP  3 PICK 3 PICK 3 PICK ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">3DROP ( x y z -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Drop the top three elements from the stack.
</text:p><screen>  : 3DROP   DROP 2DROP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">4DUP ( a b c d -- a b c d a b c d )</text:span> =&gt; "FORTH"</text:p>
<screen> 
  simulate:
   : 4DUP  4 PICK 4 PICK 4 PICK 4 PICK ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">4DROP ( x y z -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Drop the top three elements from the stack.
</text:p><screen>  : 4DROP   2DROP 2DROP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TOUPPER ( c1 -- c2 )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  convert a single character to upper case 
</text:p><screen>    : TOUPPER  &amp;gt;R _toupper ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">UPPER ( addr cnt -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  convert string to upper case 
</text:p><screen>  simulate:
    : UPPER  0 DO  DUP I +  DUP C@ UPC SWAP C!  LOOP  DROP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LOWER ( addr cnt -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  convert string to lower case
  This is not in L&amp;P's F83 but provided for symmetry 
</text:p><screen>  simulate:
    : LOWER  0 DO  DUP I +  DUP C@ &amp;gt;R _tolower SWAP C!  LOOP  DROP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ASCII ( [word] -- val )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  state smart version of <text:span text:style-name="Source_20_Text">CHAR</text:span> or <text:span text:style-name="Source_20_Text">[CHAR]</text:span> resp.
</text:p><screen>  simulate:
    : ASCII  [COMPILE] [CHAR] 
             STATE @ IF [COMPILE] LITERAL THEN ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CONTROL ( [word] -- val )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">ASCII</text:span>, but returns char - '@' 
</text:p><screen>  simulate:
    : CONTROL  [COMPILE] [CHAR]  [CHAR] @ -  
               STATE @ IF [COMPILE] LITERAL THEN ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NUMBER? ( addr -- d flag )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  convert counted string to number - used in inner interpreter 
  ( <text:span text:style-name="Source_20_Text">INTERPRET</text:span> ), flags if conversion was successful
</text:p><screen>  example:
    BL WORD  HERE NUMBER? 0= IF ." not a number " THEN . 
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">VOCS ( -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  list all vocabularies in the system
</text:p><screen>  simulate:
    : VOCS VOC-LINK @ BEGIN DUP WHILE
                            DUP -&amp;gt;WORDLIST.NAME @ ID.
                            -&amp;gt;WORDLIST.LINK @
                      REPEAT DROP ; 
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EMITS ( n char -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Emit _char_ _n_ times.
</text:p><screen>  : EMITS             ( n char -- )
     SWAP 0 ?DO  DUP EMIT  LOOP DROP ;
</screen><text:p text:style-name="Text_20_body">  also compare
</text:p><screen>  : SPACES BL EMITS ;
  : SPACE BL EMIT ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-CHECK ( n -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Check for file access error.
</text:p><screen>  \ : FILE-CHECK    ( n -- )  THROW ;
  : FILE-CHECK      ( n -- )  ABORT" File Access Error " ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MEMORY-CHECK ( n -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Check for memory allocation error.
</text:p><screen>  \ : MEMORY-CHECK  ( n -- )  THROW ;
  : MEMORY-CHECK    ( n -- )  ABORT" Memory Allocation Error " ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">++ ( addr -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Increment the value at _addr_.
</text:p><screen>  : ++  ( addr -- )  1 SWAP +! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">@++ ( addr -- addr' x )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Fetch the value _x_ from _addr_, and increment the address
   by one cell.
</text:p><screen>  : @++  ( addr -- addr' x )  DUP CELL+ SWAP  @ ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">!++ ( addr x -- addr' )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">   Store the value _x_ into _addr_, and increment the address
   by one cell.
</text:p><screen>  : !++  ( addr x -- addr' )  OVER !  CELL+ ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&gt;WORDLIST ( xt -- wordl* )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  convert a <text:span text:style-name="Source_20_Text">VOCABULARY</text:span>-xt into its wordlist reference
  (as in win32forth)
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-fpnostack-ext</text:p>
 <text:h text:style-name="Heading_20_3">FpNoStack Floating point + extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;FLOAT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">D&gt;F  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F!  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F*  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F+  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F-  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F/  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F0&lt;  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F0=  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F&lt;  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F&gt;  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F=  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F&lt;&gt; ( f: a b -- s: a!=b ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F&lt;=  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F&gt;=  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F&gt;D  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F@  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FALIGN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FALIGNED  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FDEPTH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FDROP  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FDUP  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLITERAL  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLOAT+  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLOATS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLOOR  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FMAX  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FMIN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FNEGATE  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FOVER  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FROT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FROUND  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FSWAP  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REPRESENT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DF!  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DF@  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DFALIGN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DFALIGNED  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DFLOAT+  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DFLOATS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F**  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F.  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FABS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FACOS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FACOSH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FALOG  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FASIN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FASINH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FATAN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FATAN2  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FATANH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FCOS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FCOSH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FE.  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FEXP  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FEXPM1  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLNP1  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLOG  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FS.  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FSIN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FSINCOS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FSINH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FSQRT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FTAN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FTANH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F~  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SET-PRECISION  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SF!  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SF@  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SFALIGN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SFALIGNED  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SFLOAT+  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SFLOATS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">S&gt;F ( n -- f: x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FTRUNC&gt;S (f: x -- s: n ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FROUND&gt;S (f: x -- s: n) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FTRUNC (f: x -- x' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">-FROT (f: x1 x2 x3 -- x3 x1 x2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FNIP (f: x1 x2 -- x2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FTUCK (f: x1 x2 -- x2 x1 x2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">1/F (f: x -- 1/x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F^2 (f: x -- x^2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F^N ( u f: x -- x^u ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F2/ (f: x -- x/2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F2* (f: x -- x*2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F0&gt; (f: x -- s: flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">F0&lt;&gt; (f: x -- s: flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MAX-FLOAT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body">&gt;FLOAT - no description, sorry</text:p><text:p text:style-name="Text_20_body">D&gt;F - no description, sorry</text:p><text:p text:style-name="Text_20_body">F! - no description, sorry</text:p><text:p text:style-name="Text_20_body">F* - no description, sorry</text:p><text:p text:style-name="Text_20_body">F+ - no description, sorry</text:p><text:p text:style-name="Text_20_body">F- - no description, sorry</text:p><text:p text:style-name="Text_20_body">F/ - no description, sorry</text:p><text:p text:style-name="Text_20_body">F0&lt; - no description, sorry</text:p><text:p text:style-name="Text_20_body">F0= - no description, sorry</text:p><text:p text:style-name="Text_20_body">F&lt; - no description, sorry</text:p><text:p text:style-name="Text_20_body">F&gt; - no description, sorry</text:p><text:p text:style-name="Text_20_body">F= - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F&lt;&gt; ( f: a b -- s: a!=b )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body">F&lt;= - no description, sorry</text:p><text:p text:style-name="Text_20_body">F&gt;= - no description, sorry</text:p><text:p text:style-name="Text_20_body">F&gt;D - no description, sorry</text:p><text:p text:style-name="Text_20_body">F@ - no description, sorry</text:p><text:p text:style-name="Text_20_body">FALIGN - no description, sorry</text:p><text:p text:style-name="Text_20_body">FALIGNED - no description, sorry</text:p><text:p text:style-name="Text_20_body">FDEPTH - no description, sorry</text:p><text:p text:style-name="Text_20_body">FDROP - no description, sorry</text:p><text:p text:style-name="Text_20_body">FDUP - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLITERAL - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLOAT+ - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLOATS - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLOOR - no description, sorry</text:p><text:p text:style-name="Text_20_body">FMAX - no description, sorry</text:p><text:p text:style-name="Text_20_body">FMIN - no description, sorry</text:p><text:p text:style-name="Text_20_body">FNEGATE - no description, sorry</text:p><text:p text:style-name="Text_20_body">FOVER - no description, sorry</text:p><text:p text:style-name="Text_20_body">FROT - no description, sorry</text:p><text:p text:style-name="Text_20_body">FROUND - no description, sorry</text:p><text:p text:style-name="Text_20_body">FSWAP - no description, sorry</text:p><text:p text:style-name="Text_20_body">REPRESENT - no description, sorry</text:p><text:p text:style-name="Text_20_body">DF! - no description, sorry</text:p><text:p text:style-name="Text_20_body">DF@ - no description, sorry</text:p><text:p text:style-name="Text_20_body">DFALIGN - no description, sorry</text:p><text:p text:style-name="Text_20_body">DFALIGNED - no description, sorry</text:p><text:p text:style-name="Text_20_body">DFLOAT+ - no description, sorry</text:p><text:p text:style-name="Text_20_body">DFLOATS - no description, sorry</text:p><text:p text:style-name="Text_20_body">F** - no description, sorry</text:p><text:p text:style-name="Text_20_body">F. - no description, sorry</text:p><text:p text:style-name="Text_20_body">FABS - no description, sorry</text:p><text:p text:style-name="Text_20_body">FACOS - no description, sorry</text:p><text:p text:style-name="Text_20_body">FACOSH - no description, sorry</text:p><text:p text:style-name="Text_20_body">FALOG - no description, sorry</text:p><text:p text:style-name="Text_20_body">FASIN - no description, sorry</text:p><text:p text:style-name="Text_20_body">FASINH - no description, sorry</text:p><text:p text:style-name="Text_20_body">FATAN - no description, sorry</text:p><text:p text:style-name="Text_20_body">FATAN2 - no description, sorry</text:p><text:p text:style-name="Text_20_body">FATANH - no description, sorry</text:p><text:p text:style-name="Text_20_body">FCOS - no description, sorry</text:p><text:p text:style-name="Text_20_body">FCOSH - no description, sorry</text:p><text:p text:style-name="Text_20_body">FE. - no description, sorry</text:p><text:p text:style-name="Text_20_body">FEXP - no description, sorry</text:p><text:p text:style-name="Text_20_body">FEXPM1 - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLN - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLNP1 - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLOG - no description, sorry</text:p><text:p text:style-name="Text_20_body">FS. - no description, sorry</text:p><text:p text:style-name="Text_20_body">FSIN - no description, sorry</text:p><text:p text:style-name="Text_20_body">FSINCOS - no description, sorry</text:p><text:p text:style-name="Text_20_body">FSINH - no description, sorry</text:p><text:p text:style-name="Text_20_body">FSQRT - no description, sorry</text:p><text:p text:style-name="Text_20_body">FTAN - no description, sorry</text:p><text:p text:style-name="Text_20_body">FTANH - no description, sorry</text:p><text:p text:style-name="Text_20_body">F~ - no description, sorry</text:p><text:p text:style-name="Text_20_body">SET-PRECISION - no description, sorry</text:p><text:p text:style-name="Text_20_body">SF! - no description, sorry</text:p><text:p text:style-name="Text_20_body">SF@ - no description, sorry</text:p><text:p text:style-name="Text_20_body">SFALIGN - no description, sorry</text:p><text:p text:style-name="Text_20_body">SFALIGNED - no description, sorry</text:p><text:p text:style-name="Text_20_body">SFLOAT+ - no description, sorry</text:p><text:p text:style-name="Text_20_body">SFLOATS - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">S&gt;F ( n -- f: x )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  it's inverse is <text:span text:style-name="Source_20_Text">F&gt;S</text:span> - convert a cell parameter to floating-point.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FTRUNC&gt;S (f: x -- s: n )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  The word <text:span text:style-name="Source_20_Text">F&gt;S</text:span> was sometimes defined with a different behavior 
  than <text:span text:style-name="Source_20_Text">FTRUNC&gt;S</text:span> which is the type-cast behaviour of C according 
  to C99 section 6.3.1.4 - truncation would also match the ANS-Forth
  specification for <text:span text:style-name="Source_20_Text">F&gt;D</text:span>.
</text:p><text:p text:style-name="Text_20_body">
  Some systems used <text:span text:style-name="Source_20_Text">F&gt;S</text:span> defined to <text:span text:style-name="Source_20_Text">FROUND&gt;S</text:span> instead. The pfe
  provides explicit words for both conversions, the word <text:span text:style-name="Source_20_Text">FROUND&gt;S</text:span>
  and <text:span text:style-name="Source_20_Text">FTRUNC&gt;S</text:span> which return single-cell parameters for a floating
  point number with the conversion method of <text:span text:style-name="Source_20_Text">FTRUNC</text:span> or <text:span text:style-name="Source_20_Text">FROUND</text:span>.
</text:p><text:p text:style-name="Text_20_body">
  In PFE, <text:span text:style-name="Source_20_Text">F&gt;S</text:span> is a synonym pointing to <text:span text:style-name="Source_20_Text">FTRUNC&gt;S</text:span> in analogy 
  of the behavior of <text:span text:style-name="Source_20_Text">F&gt;D</text:span> where no explicit word exists. The
  inverse of <text:span text:style-name="Source_20_Text">F&gt;S</text:span> is the cast conversion of <text:span text:style-name="Source_20_Text">S&gt;F</text:span>.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FROUND&gt;S (f: x -- s: n)</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  complements <text:span text:style-name="Source_20_Text">FTRUNC&gt;S</text:span> for applications that expect <text:span text:style-name="Source_20_Text">F&gt;S</text:span> to
  be defined with a rounding behavior like 
</text:p><screen>  : FROUND&amp;gt;S FROUND FTRUNC&amp;gt;S ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FTRUNC (f: x -- x' )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  truncate towards zero, discard a fractional part. See also <text:span text:style-name="Source_20_Text">FTRUNC&gt;S</text:span>
  conversion and the <text:span text:style-name="Source_20_Text">FROUND</text:span> and <text:span text:style-name="Source_20_Text">FLOOR</text:span> adaptors.
</text:p><screen>  : FTRUNC FDUP F0&amp;lt; IF FCEIL ELSE FLOOR THEN ;
</screen><text:p text:style-name="Text_20_body">  (When available, uses a single call to C99 trunc() internally)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">-FROT (f: x1 x2 x3 -- x3 x1 x2 )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  F-stack equivalent of <text:span text:style-name="Source_20_Text">-ROT</text:span>
</text:p><text:p text:style-name="Text_20_body">
  note, some systems call this work F-ROT,
  here it is the inverse of <text:span text:style-name="Source_20_Text">FROT</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FNIP (f: x1 x2 -- x2 )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  F-stack equivalent of <text:span text:style-name="Source_20_Text">NIP</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FTUCK (f: x1 x2 -- x2 x1 x2 )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  F-stack equivalent of <text:span text:style-name="Source_20_Text">TUCK</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">1/F (f: x -- 1/x )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F^2 (f: x -- x^2 )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F^N ( u f: x -- x^u )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  For large exponents, use F** instead.  Of course u=-1 is large. 
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F2/ (f: x -- x/2 )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F2* (f: x -- x*2 )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F0&gt; (f: x -- s: flag )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">F0&lt;&gt; (f: x -- s: flag )</text:span> =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body">MAX-FLOAT - no description, sorry</text:p>








 <text:p text:style-name="Preformatted_20_Text">pfe-gforth-ext</text:p>
 <text:h text:style-name="Heading_20_3">  </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">GFORTH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"ENVIRONMENT"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body">GFORTH - no description, sorry</text:p>








 <text:p text:style-name="Preformatted_20_Text">pfe-header-ext</text:p>
 <text:h text:style-name="Heading_20_3">Header Navigation </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BODY&gt; ( pfa -- cfa ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;LINK ( cfa -- lfa ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LINK&gt; ( lfa -- cfa ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;NAME ( cfa -- nfa ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NAME&gt; ( nfa -- cfa ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">L&gt;NAME ( lfa -- nfa ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">N&gt;LINK ( nfa -- lfa ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NAME&gt;STRING ( name-token -- str-ptr str-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LATEST ( -- nfa ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&gt;FFA ( nfa -- ffa ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FFA&gt; ( ffa -- nfa ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NAME-FLAGS@ ( nfa -- nfa-flags ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NAME-FLAGS! ( nfa-flags nfa -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">HEADER, ( str-ptr str-len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$HEADER ( bstring -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SMUDGE  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">HIDE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REVEAL ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RECURSIVE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(CHECK-DEPRECATED:)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ALIAS ( some-xt* "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">IS ( xt-value [word] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DEFER! ( xt-value xt-defer -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DEFER@ ( xt1 -- xt2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ACTION-OF ( [word] -- xt-value ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BODY&gt; ( pfa -- cfa )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  trying to convert a pointer to the parameter-field (PFA) to point
  then to the corresponding code-field (CFA) - note that this is not
  necessarily the inverse of <text:span text:style-name="Source_20_Text">&gt;BODY</text:span> instead it is a fast implementation
  assuming a <text:span text:style-name="Source_20_Text">VARIABLE</text:span> thing had been used. Every use of "BODY&gt;" is
  warned in the logfile.
</text:p><screen>  implementation-specific simulation:
    : BODY&amp;gt; CELL - ;
</screen><text:p text:style-name="Text_20_body">
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&gt;LINK ( cfa -- lfa )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  converts a pointer to the code-field (CFA) to point
  then to the corresponding link-field (LFA) - in some configurations
  this can be a very slow operation since the system might need to walk
  through all header-words in the system, looking for a <text:span text:style-name="Source_20_Text">&gt;NAME</text:span> that
  has the cfa and *then* returning the "N&gt;LINK" result here - which might
  be none at all if the word is a <text:span text:style-name="Source_20_Text">:NONAME</text:span>. Use always <text:span text:style-name="Source_20_Text">&gt;NAME</text:span> and
  treat this word as non-portable just like any assumption about the
  contents of the <text:span text:style-name="Source_20_Text">&gt;LINK</text:span>-field.
  Only in fig-mode and for traditional fig-mode programs, this word may
  possibly have enough extra assertions to be somewhat reliable.
  (and fig-mode did not know about <text:span text:style-name="Source_20_Text">SYNONYM</text:span>s - see note at <text:span text:style-name="Source_20_Text">LINK&gt;</text:span>).
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LINK&gt; ( lfa -- cfa )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  converts a pointer to the link-field (LFA) to point
  then to the corresponding code-field (CFA)
</text:p><text:p text:style-name="Text_20_body">
  BEWARE: this one does not care about <text:span text:style-name="Source_20_Text">SYNONYM</text:span>s and it is the
  only way to get at the data of a <text:span text:style-name="Source_20_Text">SYNONYM</text:span>. Therefore, if you have
  a synonym called A for an old word B then there is a different
  result using "NAME&gt;" on an A-nfa or using "N&gt;LINK LINK&gt;" since the
  first "NAME&gt;" will return the xt of B while the latter will return
  the xt of A - but executing an xt of A is an error and it will <text:span text:style-name="Source_20_Text">THROW</text:span>
</text:p><text:p text:style-name="Text_20_body">
  this difference is intentional to allow knowledgable persons to
  do weird things looking around in the dictionary. The forth standard
  words will not give you much of a chance to get hold of the nfa of
  a <text:span text:style-name="Source_20_Text">SYNONYM</text:span> word anyway - asking <text:span text:style-name="Source_20_Text">FIND</text:span> for a word A will return
  the execution token of B immediatly and "NAME&gt;" on that one lead to
  the nfa of B and not that of A.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&gt;NAME ( cfa -- nfa )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  converts a pointer to the code-field (CFA) to point
  then to the corresponding name-field (NFA)
</text:p><screen>  implementation-specific simulation:
    : &amp;gt;NAME  &amp;gt;LINK L&amp;gt;NAME ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NAME&gt; ( nfa -- cfa )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  converts a pointer to the name-field (NFA) to point
  then to the corresponding code-field (CFA)
</text:p><text:p text:style-name="Text_20_body">
  In all cases but a <text:span text:style-name="Source_20_Text">SYNONYM</text:span> the pfe will behave not unlike the
  original fig-forth did - being identical to <text:span text:style-name="Source_20_Text">N&gt;LINK</text:span> <text:span text:style-name="Source_20_Text">LINK&gt;</text:span> .
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">L&gt;NAME ( lfa -- nfa )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  converts a pointer to the link-field (LFA) to point
  then to the corresponding name-field (CFA) - this one is one of
  the slowest operation available. One should always use the inverse
  operation <text:span text:style-name="Source_20_Text">N&gt;LINK</text:span> and cache an older value if that is needed.
  Some words might be linked but they do not have a name-field (just
  the other fields) but this word can not detect that and will try to look
  into the bits of the dictionary anway in the assumption that there is 
  something - and if done in the wrong place it might even segfault.
  Only in fig-mode and for traditional fig-mode programs, this word may
  possibly have enough extra assertions to be somewhat reliable.
  (and fig-mode did not know about <text:span text:style-name="Source_20_Text">SYNONYM</text:span>s - see note at <text:span text:style-name="Source_20_Text">LINK&gt;</text:span>).
</text:p><screen> 
  implementation-specific configure-dependent fig-only simulation:
  : L&amp;gt;NAME BEGIN DUP C@ 128 AND 0= WHILE 1- REPEAT ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">N&gt;LINK ( nfa -- lfa )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  converts a pointer to the name-field (NFA) to point
  then to the corresponding link-field (LFA) - this operation
  is quicker than the inverse <text:span text:style-name="Source_20_Text">L&gt;NAME</text:span>. This word is a specific
  implementation detail and should not be used by normal users - instead
  use always <text:span text:style-name="Source_20_Text">NAME&gt;</text:span> which is much more portable. Many systems may
  possibly not even have a <text:span text:style-name="Source_20_Text">&gt;LINK</text:span>-field in the sense that a <text:span text:style-name="Source_20_Text">@</text:span> on
  this adress will lead to another <text:span text:style-name="Source_20_Text">&gt;NAME</text:span>. Any operation on the 
  resulting <text:span text:style-name="Source_20_Text">&gt;LINK</text:span>-adress is even dependent on the current configuration
  of PFE - only in fig-mode you are asserted to have the classic detail.
  (and fig-mode did not know about <text:span text:style-name="Source_20_Text">SYNONYM</text:span>s - see note at <text:span text:style-name="Source_20_Text">LINK&gt;</text:span>).
</text:p><screen> 
  implementation-specific configure-dependent fig-only simulation:
    : N&amp;gt;LINK  C@ + ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NAME&gt;STRING ( name-token -- str-ptr str-len )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  convert a name-token into a string-span, used to detect the
  name for a word and print it. The word <text:span text:style-name="Source_20_Text">ID.</text:span> can be defined as
</text:p><screen>  : ID. NAME&amp;gt;STRING TYPE ;
</screen><text:p text:style-name="Text_20_body">  the implementation of <text:span text:style-name="Source_20_Text">NAME&gt;STRING</text:span> depends on the header layout
  that is defined during the configuration of the forth system.
</text:p><screen>  : NAME&amp;gt;STRING COUNT 31 AND ; ( for fig-like names )
  : NAME&amp;gt;STRING COUNT ;        ( default, name is a simple counted string )
  : NAME&amp;gt;STRING @ ZCOUNT ;     ( name-token is a pointer to a C-level string )
  : NAME&amp;gt;STRING COUNT 31 AND   ( hybrid of fig-like and zero-terminated )
       DUP 31 = IF DROP 1+ ZCOUNT THEN
  ;
  : NAME&amp;gt;STRING HEAD:: COUNT CODE:: PAD PLACE PAD ; ( different i86 segments )
 
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LATEST ( -- nfa )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  return the NFA of the lateset definition in the
  <text:span text:style-name="Source_20_Text">CURRENT</text:span> vocabulary
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&gt;FFA ( nfa -- ffa )</text:span> obsolete =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  converts a pointer to the name-field (NFA) to point
  then to the corresponding flag-field (FFA) - in traditinal
  Forth this is the same address. pfe _can_ do different.
</text:p><screen>  implementation-specific configure-dependent simulation:
    : FFA  1- ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FFA&gt; ( ffa -- nfa )</text:span> obsolete =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  converts a pointer to the flag-field (FFA) to point
  then to the corresponding name-field (NFA) - in traditinal
  Forth this is the same address. pfe _can_ do different.
</text:p><screen>  implementation-specific configure-dependent simulation:
    : FFA  1+ ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NAME-FLAGS@ ( nfa -- nfa-flags )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  get the nfa-flags that corresponds to the nfa given. Note that
  in the fig-style would include the nfa-count in the lower bits.
  (see <text:span text:style-name="Source_20_Text">NAME-FLAGS!</text:span>)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NAME-FLAGS! ( nfa-flags nfa -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  set the nfa-flags of nfa given. Note that in the fig-style the nfa-flags
  would include the nfa-count in the lower bits - therefore this should only
  set bits that had been previously retrieved with <text:span text:style-name="Source_20_Text">NAME-FLAGS@</text:span>
</text:p><screen>  : IMMEDIATE LAST @ NAME-FLAGS@ IMMEDIATE-MASK OR LAST @ NAME-FLAGS! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">HEADER, ( str-ptr str-len -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  <text:span text:style-name="Source_20_Text">CREATE</text:span> a new header in the dictionary from the given string, without CFA
</text:p><screen>  usage: : VARIABLE  BL WORD COUNT HEADER, DOVAR , ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$HEADER ( bstring -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  <text:span text:style-name="Source_20_Text">CREATE</text:span> a new header in the dictionary from the given string
  with the variable runtime (see <text:span text:style-name="Source_20_Text">HEADER,</text:span> and <text:span text:style-name="Source_20_Text">CREATE:</text:span>)
</text:p><screen>  usage: : VARIABLE  BL WORD $HEADER ;
  
</screen>
<text:p text:style-name="Text_20_body">SMUDGE - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">HIDE ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  the FIG definition toggles the <text:span text:style-name="Source_20_Text">SMUDGE</text:span> bit, and not all systems have
  a smudge bit - instead one should use <text:span text:style-name="Source_20_Text">REVEAL</text:span> or <text:span text:style-name="Source_20_Text">HIDE</text:span>
</text:p><screen>  : HIDE LAST @ FLAGS@ SMUDGE-MASK XOR LAST @ FLAGS! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REVEAL ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  the FIG definition toggles the <text:span text:style-name="Source_20_Text">SMUDGE</text:span> bit, and not all systems have
  a smudge bit - instead one should use <text:span text:style-name="Source_20_Text">REVEAL</text:span> or <text:span text:style-name="Source_20_Text">HIDE</text:span>
</text:p><screen>  : REVEAL LAST @ FLAGS@ SMUDGE-MASK INVERT AND LAST @ FLAGS! ;
  : REVEAL LAST @ CHAIN-INTO-CURRENT ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">RECURSIVE ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  <text:span text:style-name="Source_20_Text">REVEAL</text:span> the current definition making it <text:span text:style-name="Source_20_Text">RECURSIVE</text:span> by its
  own name instead of using the ans-forth word to <text:span text:style-name="Source_20_Text">RECURSE</text:span>.
</text:p><screen>  ' REVEAL ALIAS RECURSIVE IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body">(CHECK-DEPRECATED:) - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ALIAS ( some-xt* "name" -- )</text:span> [EXT] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  create a defer word that is initialized with the given x-token.
                                                            <text:span text:style-name="Source_20_Text">DO-ALIAS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">IS ( xt-value [word] -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  set a <text:span text:style-name="Source_20_Text">DEFER</text:span> word
  (in pfe: set the DOES-field - which is the BODY-field in ans-mode
   and therefore the same as <text:span text:style-name="Source_20_Text">TO</text:span> /  in fig-mode the DOES-field is
   one cell higher up than for a <text:span text:style-name="Source_20_Text">CREATE:</text:span> <text:span text:style-name="Source_20_Text">VARIABLE</text:span> 
   Use <text:span text:style-name="Source_20_Text">IS</text:span> freely on each DOES-words in both modes).
</text:p><screen>  : IS ' 
    STATE @ IF LITERAL, POSTPONE &amp;gt;DOES-BODY POSTPONE ! 
    ELSE &amp;gt;DOES-BODY ! THEN 
  ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DEFER! ( xt-value xt-defer -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  A Forth200x definition that is not very useful.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DEFER@ ( xt1 -- xt2 )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  get the execution token xt2 that would be executed by the <text:span text:style-name="Source_20_Text">DEFER</text:span>
  identified by xt1.
</text:p><text:p text:style-name="Text_20_body">
  This command is used to obtain the execution contents of a deferred
  word. A typical use would be to retrieve and save the execution
  behavior of the deferred word, set the deferred word to a new behavior,
  and then later restore the old behavior.
</text:p><text:p text:style-name="Text_20_body">
  If the deferred word identified by _xt1_ is associated with some
  other deferred word, _xt2_ is the execution token of that other
  deferred word. To retrieve the execution token of the word currently
  associated with that other deferred word, use the phrase DEFER@ DEFER@ .
</text:p><text:p text:style-name="Text_20_body">
  Experience:
       BEHAVIOR was used many years in OpenBoot and OpenFirmware systems.
</text:p><text:p text:style-name="Text_20_body">
  In PFE it is the inverse of an <text:span text:style-name="Source_20_Text">IS</text:span> operation and it will never fail
  if applied to a word with atleast a body. That's just like <text:span text:style-name="Source_20_Text">IS</text:span> can
  be applied to almost every <text:span text:style-name="Source_20_Text">DOES&gt;</text:span> word where <text:span text:style-name="Source_20_Text">DEFER@</text:span> will get
  the value back.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ACTION-OF ( [word] -- xt-value )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  get the <text:span text:style-name="Source_20_Text">BEHAVIOR</text:span> of a <text:span text:style-name="Source_20_Text">DEFER</text:span> word when executed. If being
  compiled then the ACTION-OF will be the value of [word] at the
  time of execution and not that of compilation time (non-constant). 
</text:p><text:p text:style-name="Text_20_body">
  In PFE it does actually pick whatever is stored in the DOES-field
  of a word and therefore ACTION-OF may applied to all DOES-words.
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-help-ext</text:p>
 <text:h text:style-name="Heading_20_3">HELP System with Headers </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(HELP)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body">(HELP) - no description, sorry</text:p>








 <text:p text:style-name="Preformatted_20_Text">pfe-host-k12-ext</text:p>
 <text:h text:style-name="Heading_20_3">HOST-K12 extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">OPEN-TERMINAL-LOGFILE ( s-buf s-len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CLOSE-TERMINAL-LOGFILE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TERMINAL-EMULATION-STATE ( -- state* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TERMINAL-ANSWER-LINK ( -- sap#* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TERMINAL-OUTPUT-LINK ( -- sap#* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TERMINAL-INPUT-LINK ( -- sap#* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">OPEN-TERMINAL-LOGFILE ( s-buf s-len -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  open terminal logfile named by the string-buffer
  all further output to the terminal window is also logged into
  this file. This is especially useful in embedded environments
  where the terminal connection is often not used or it is
  directed to a different location that does not easily allow to
  redirect the forth output to a file for further examination.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CLOSE-TERMINAL-LOGFILE ( -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  close terminal logfile opened with <text:span text:style-name="Source_20_Text">OPEN-TERMINAL-LOGFILE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TERMINAL-EMULATION-STATE ( -- state* )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  returns the address of the emulations state variable so it can be
  read and explicitly changed to another value from forth text. This is
  a very questionable thing to do as the emulation-state is actually
  an enumerated value, the ESE will just show question-marks setting 
  this variable to something not understood.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TERMINAL-ANSWER-LINK ( -- sap#* )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  send terminal-output as a data-message to the specified link sap.
  Unlike <text:span text:style-name="Source_20_Text">TERMINAL-OUTPUT-LINK</text:span> the data-messages are in line-mode.
  The flushed characters are buffered until a non-printable character
  is seen. This is somewhat more useful when treating pfe as a print
  service and testing machine, but can not provide for interactivity.
</text:p><screen>  60 TERMINAL-ANSWER-LINK !
  ...
  TERMINAL-ANSWER-LINK OFF
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TERMINAL-OUTPUT-LINK ( -- sap#* )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  send terminal-output as a data-message to the specified link sap.
  This can be used in an embedded systems for a terminal session simulation.
  setting zero-sap will disable sending message-frames (the zero sap is
  therefore not usable for output-to-link). The startup default is zero.
</text:p><screen>  60 TERMINAL-OUTPUT-LINK !
  ...
  TERMINAL-OUTPUT-LINK OFF
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TERMINAL-INPUT-LINK ( -- sap#* )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  let the forth stdin-handling look for data-messages on this link too.
  These will be interpreted like messages that come from the interactive
  forth terminal. This can be used in an embedded systems for a terminal 
  session simulation. setting zero-sap will disable interpreting these
  incoming data-frames as keyboard-strings (so that the zero sap is
  therefore not usable for an input-link!). The startup default is zero.
</text:p><screen>  60 TERMINAL-INPUT-LINK !
  ...
  TERMINAL-INPUT-LINK OFF
  
</screen>



<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-locals-ext</text:p>
 <text:h text:style-name="Heading_20_3">Locals + extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(LOCAL)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LOCALS| ( xN ... x2 x1 [name1 .. nameN &amp;lt;|&amp;gt;] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LVALUE ( value [name] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LBUFFER: ( size [name] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body">  "ENVIRONMENT #LOCALS" ( -- number )
 * the number of local names allowed during compilation.
 * portable programs can check this with => ENVIRONMENT?
 </text:p>
<text:p text:style-name="Text_20_body">(LOCAL) - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LOCALS| ( xN ... x2 x1 [name1 .. nameN &amp;lt;|&amp;gt;] -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  create local identifiers to be used in the current definition.
  At runtime, each identifier will be assigned a value from
  the parameter stack. 
  The identifiers may be treated as if being a <text:span text:style-name="Source_20_Text">VALUE</text:span> , it does
  also implement the ansi <text:span text:style-name="Source_20_Text">TO</text:span> extensions for locals. Note that
  the identifiers are only valid inside the currently compiled
  word, the <text:span text:style-name="Source_20_Text">SEE</text:span> decompiled word will show them as 
  <text:span text:style-name="Source_20_Text">&amp;lt;A&amp;gt;</text:span> <text:span text:style-name="Source_20_Text">&amp;lt;B&amp;gt;</text:span> ... <text:span text:style-name="Source_20_Text">&amp;lt;N&amp;gt;</text:span> a.s.o.   
  see also <text:span text:style-name="Source_20_Text">LVALUE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LVALUE ( value [name] -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  declares a single local <text:span text:style-name="Source_20_Text">VALUE</text:span> using <text:span text:style-name="Source_20_Text">(LOCAL)</text:span> - a 
  sequence of <text:span text:style-name="Source_20_Text">LVALUE</text:span> declarations can replace a 
  <text:span text:style-name="Source_20_Text">LOCALS|</text:span> argument, ie. <text:span text:style-name="Source_20_Text"> LOCALS| a b c | </text:span> 
  is the same as <text:span text:style-name="Source_20_Text"> LVALUE a  LVALUE b  LVALUE c </text:span>.
  This should also clarify the runtime stack behaviour of
  <text:span text:style-name="Source_20_Text">LOCALS|</text:span> where the stack parameters seem to be
  assigned in reverse order as opposed to their textual
  identifier declarations. 
  compare with <text:span text:style-name="Source_20_Text">VALUE</text:span> and the pfe's convenience word
  <text:span text:style-name="Source_20_Text">VAR</text:span>.
</text:p><text:p text:style-name="Text_20_body">
</text:p><screen>  : LVALUE 
    STATE @ IF 
      VALUE 
    ELSE 
      BL WORD COUNT DUP (LOCAL) (TO)
    THEN
  ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LBUFFER: ( size [name] -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  declares a single local <text:span text:style-name="Source_20_Text">VALUE</text:span> using <text:span text:style-name="Source_20_Text">(LOCAL)</text:span> - which
  will hold the address of an area like <text:span text:style-name="Source_20_Text">BUFFER:</text:span> but carved
  from the return-stack (as in C with alloca). This local buffer
  will be automatically given up at the end of the word. The
  return-stack-pointer will be increased only at the time of
  this function (and the address assigned to the <text:span text:style-name="Source_20_Text">LVALUE</text:span>)
  so that the provided size gets determined at runtime. Note
  that in some configurations the forth-return-stack area is
  quite small - for large string operations you should consider
  to use a <text:span text:style-name="Source_20_Text">POCKET-PAD</text:span> in pfe.
</text:p><screen>  : LBUFFER:
    STATE @ IF 
      BUFFER:
    ELSE 
      :NONAME ( size -- rp* ) R&amp;gt; RP@ - DUP RP! SWAP &amp;gt;R ;NONAME
      COMPILE, POSTPONE LVALUE
    THEN
  ; IMMEDIATE
  
</screen>









 <text:p text:style-name="Preformatted_20_Text">pfe-memory-ext</text:p>
 <text:h text:style-name="Heading_20_3">Memory-Alloc extension </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ALLOCATE ( size# -- alloc*! 0 | 0 errno#! ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FREE ( alloc* -- errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RESIZE ( alloc* newsize# -- alloc*' errno# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ALLOCATE ( size# -- alloc*! 0 | 0 errno#! )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  Allocate a chunk of memory from the system heap.
  use <text:span text:style-name="Source_20_Text">FREE</text:span> to release the memory area back to the system. 
  A code of zero means success.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FREE ( alloc* -- errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  Free the memory from <text:span text:style-name="Source_20_Text">ALLOCATE</text:span>
  A code of zero means success.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">RESIZE ( alloc* newsize# -- alloc*' errno# )</text:span> [ANS] =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  Resize the system memory chunk. A code of zero means success.
  Our implementation returns the old pointer on failure.
</text:p>



<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-misc-ext</text:p>
 <text:h text:style-name="Heading_20_3">Compatibility Miscellaneous words </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ok  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">COLD ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LIT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.LINE ( line# block# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">UD.R ( x,x# r# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">UD. ( x,x# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ID. ( some-nfa* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">-ROLL ( x...[n-1] y n# -- y x...[n-1] |  num# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RANDOM ( n# -- random# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SRAND ( seed# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(UNDER+) ( n1 n2 -- n1+n2 n2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">+TO ( val [name] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BUILD-ARRAY ( x#...[dim] dim# -- memsize# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ACCESS-ARRAY ( x#...[dim#] array* --- array* value# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.STATUS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SOURCE-LINE ( -- source-line# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SOURCE-NAME ( -- source-name-ptr source-name-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TH'POCKET ( pocket# -- pocket-ptr pocket-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">POCKET-PAD ( -- pocket-ptr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">W@ ( some-wchar* -- some-wchar# | some* -- some# [?] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">W! ( value#  some-wchar* -- | value# wchar* -- [?] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">W+! ( value# some-wchar* -- | value# wchar* -- [?] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">WL-HASH ( buf-ptr buf-len -- buf-hash# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TOPMOST ( some-wordlist* -- some-topmost-nfa* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LS.WORDS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LS.PRIMITIVES ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LS.COLON-DEFS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LS.DOES-DEFS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LS.CONSTANTS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LS.VARIABLES ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LS.VOCABULARIES ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LS.MARKERS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TAB ( tab-n# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BACKSPACE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?STOP ( -- stop-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">START?CR ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?CR ( -- cr-flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CLOSE-ALL-FILES ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.MEMORY ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(EMIT)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(EXPECT)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(KEY)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(TYPE)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">STANDARD-I/O ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">HELP ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EDIT-BLOCKFILE ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ARGC ( -- arg-count ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ARGV ( arg-n# -- arg-ptr arg-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EXPAND-FN ( name-ptr name-len buf-ptr -- buf-ptr buf-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LOAD" ( [filename&amp;lt;"&amp;gt;] -- ??? ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SYSTEM ( command-ptr command-len -- command-exitcode# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SYSTEM" ( [command-line&amp;lt;"&amp;gt;] -- command-exitcode# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CREATE: ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BUFFER: ( size# "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">R'@ ( R: a b -- a R: a b ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">R'! ( x R: a b -- R: x b ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">R"@ ( R: a b c -- a R: a b c ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">R"! ( x R: a b c -- R: x b c ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">R! ( x R: a -- R: x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2R! ( x y R: a b -- R: x y ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DUP&gt;R ( val -- val R: val ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">R&gt;DROP ( R: val -- R: ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2R&gt;2DROP ( R: a b -- R: ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CLEARSTACK ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">+UNDER ( n1 x n2 -- n1+n2 x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EXECUTES ( fkey# [word] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body">  RAND_MAX ( -- rand-max ) [ENVIRONMENT]
 * maximum value for => RANDOM
 </text:p>
<text:p text:style-name="Text_20_body">ok - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">COLD ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  cold abort - reinitialize everything and go to <text:span text:style-name="Source_20_Text">QUIT</text:span> routine
  ... this routine is implemented as a warm-boot in pfe.
</text:p><screen>  : COLD [ ALSO ENVIRONMENT ] EMPTY SCRIPT-FILE INCLUDED QUIT ;
  
</screen>
<text:p text:style-name="Text_20_body">LIT - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">.LINE ( line# block# -- )</text:span> [FTH] =&gt; "FORTH"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">UD.R ( x,x# r# -- )</text:span> [FTH] =&gt; "FORTH"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">UD. ( x,x# -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see also <text:span text:style-name="Source_20_Text">UD</text:span>.R
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ID. ( some-nfa* -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  print the name-field pointed to by the nfa-argument.
  a synonym for .NAME - but this word is more portable due its
  heritage from fig-forth.
</text:p><text:p text:style-name="Text_20_body">
  in fig-forth the name-field is effectivly a bstring with some flags,
  so the nfa's count has to be masked out, e.g.
</text:p><screen>  : .NAME COUNT 32 AND TYPE ;
</screen><text:p text:style-name="Text_20_body">
  in other pfe configurations, the name might not contain the flags it
  it just a counted string - and there may be even more possibilities.
</text:p><screen>  : .NAME COUNT TYPE ;
</screen><text:p text:style-name="Text_20_body">
  you should more and more convert your code to use the sequence
  <text:span text:style-name="Source_20_Text">NAME&gt;STRING</text:span> <text:span text:style-name="Source_20_Text">TYPE</text:span> which is widely regarded as the better
  variant.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">-ROLL ( x...[n-1] y n# -- y x...[n-1] |  num# -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the inverse of <text:span text:style-name="Source_20_Text">ROLL</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">RANDOM ( n# -- random# )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  returns random number with 0 &lt;= n2 &lt; n1)
</text:p><screen>  : RANDOM ?DUP IF _random SWAP MOD ELSE _random THEN ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SRAND ( seed# -- )</text:span> [FTH] =&gt; "FORTH"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">(UNDER+) ( n1 n2 -- n1+n2 n2 )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  quicker than
</text:p><screen>  : (UNDER+) TUCK + SWAP ; or : (UNDER+) DUP UNDER+ ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">+TO ( val [name] -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  add the val to the named <text:span text:style-name="Source_20_Text">VALUE</text:span> or <text:span text:style-name="Source_20_Text">LOCALS|</text:span> value
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BUILD-ARRAY ( x#...[dim] dim# -- memsize# )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  writes X, n1, ... nX into the dictionary -
  returns product n1 * n2 * ... * nX
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ACCESS-ARRAY ( x#...[dim#] array* --- array* value# )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">BUILD-ARRAY</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">.STATUS ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  display internal variables
</text:p><screen>  : .STATUS .VERSION .CVERSION .MEMORY .SEARCHPATHS .DICTVARS .REGSUSED ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SOURCE-LINE ( -- source-line# )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  if <text:span text:style-name="Source_20_Text">SOURCE</text:span> is from <text:span text:style-name="Source_20_Text">EVALUATE</text:span> (or <text:span text:style-name="Source_20_Text">QUERY</text:span> ) then
  the result is 0 else the line-numbers start from 1
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SOURCE-NAME ( -- source-name-ptr source-name-len )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  if <text:span text:style-name="Source_20_Text">SOURCE</text:span> is from <text:span text:style-name="Source_20_Text">INCLUDE</text:span> then the result is the filename,
  otherwise a generic name for the SOURCE-ID is given.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TH'POCKET ( pocket# -- pocket-ptr pocket-len )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  returns the specified pocket as a <text:span text:style-name="Source_20_Text">S"</text:span> string reference
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">POCKET-PAD ( -- pocket-ptr )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">This function  Returns the next pocket.
  A pocket has usually the size of a maxstring, see <text:span text:style-name="Source_20_Text">ENVIRONMENT /STRING</text:span>
  (but can be configured to be different, mostly when MAXPATH &gt; /STRING )
  Note that a pocket is a temporary and forth internal functions do
  sometimes call <text:span text:style-name="Source_20_Text">POCKET-PAD</text:span> too, especially when building filenames
  and getting a literal (but temporary) string from the keyboard.
  Functions are not expected to hold references to this transient
  area any longer than building a name and calling another word with it.
</text:p><text:p text:style-name="Text_20_body">  Usage of a pocket pad is a good way to make local temporary buffers
  superfluous that are only used to construct a temporary string that
  usually gets swallowed by another function.
</text:p><screen>  depracated code:
    create temp-buffer 255 allot
    : make-temp ( str buf )
           temp-buffer place  " .tmp" count temp-buffer append
           temp-buffer count make-file ;
  replace with this:
    : make-temp ( str buf )
         pocket-pad &amp;gt;r
         r place  " .tmp" count r append
         r&amp;gt; count make-file
    ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">W@ ( some-wchar* -- some-wchar# | some* -- some# [?] )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  fetch a 2byte-val from address
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">W! ( value#  some-wchar* -- | value# wchar* -- [?] )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  store a 2byte-val at addressed 2byte-value
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">W+! ( value# some-wchar* -- | value# wchar* -- [?] )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  add a 2byte-val to addressed 2byte-value
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">WL-HASH ( buf-ptr buf-len -- buf-hash# )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  calc hash-code for selection of thread
  in a threaded-vocabulary
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TOPMOST ( some-wordlist* -- some-topmost-nfa* )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  that last valid word in the specified vocabulary
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LS.WORDS ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">WORDS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LS.PRIMITIVES ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">WORDS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LS.COLON-DEFS ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">WORDS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LS.DOES-DEFS ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">WORDS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LS.CONSTANTS ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">WORDS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LS.VARIABLES ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">WORDS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LS.VOCABULARIES ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">WORDS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LS.MARKERS ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  see <text:span text:style-name="Source_20_Text">WORDS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TAB ( tab-n# -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  jump to next column divisible by n
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BACKSPACE ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  reverse of <text:span text:style-name="Source_20_Text">SPACE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">?STOP ( -- stop-flag )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  check for 'q' pressed
  - see =&gt; ?CR
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">START?CR ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  initialized for more-like effect
  - see =&gt; ?CR
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">?CR ( -- cr-flag )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  like <text:span text:style-name="Source_20_Text">CR</text:span> , stop 25 lines past <text:span text:style-name="Source_20_Text">START</text:span>?CR
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CLOSE-ALL-FILES ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">.MEMORY ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>

<text:p text:style-name="Text_20_body">(EMIT) - no description, sorry</text:p><text:p text:style-name="Text_20_body">(EXPECT) - no description, sorry</text:p><text:p text:style-name="Text_20_body">(KEY) - no description, sorry</text:p><text:p text:style-name="Text_20_body">(TYPE) - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">STANDARD-I/O ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  initialize <text:span text:style-name="Source_20_Text">*TYPE*</text:span> , <text:span text:style-name="Source_20_Text">*EMIT*</text:span> , <text:span text:style-name="Source_20_Text">*EXPECT*</text:span> and <text:span text:style-name="Source_20_Text">*KEY*</text:span>
  to point directly to the screen I/O routines, 
  namely <text:span text:style-name="Source_20_Text">(TYPE)</text:span> , <text:span text:style-name="Source_20_Text">(EMIT)</text:span> , <text:span text:style-name="Source_20_Text">(EXPECT)</text:span> , <text:span text:style-name="Source_20_Text">(KEY)</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">HELP ( "name" -- )</text:span> [FTH] [EXEC] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  will load the help module in the background and hand over the
  parsed name to <text:span text:style-name="Source_20_Text">(HELP)</text:span> to be resolved. If no <text:span text:style-name="Source_20_Text">(HELP)</text:span> word
  can be loaded, nothing will happen.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EDIT-BLOCKFILE ( "name" -- )</text:span> [FTH] [EXEC] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  will load the edit module in the background and look for a word
  called <text:span text:style-name="Source_20_Text">EDIT-BLOCK</text:span> that could be used to edit the blockfile.
  If no <text:span text:style-name="Source_20_Text">EDIT-BLOCKFILE</text:span> word can be loaded, nothing will happen.
  Otherwise, <text:span text:style-name="Source_20_Text">OPEN-BLOCKFILE</text:span> is called followed by <text:span text:style-name="Source_20_Text">0</text:span> <text:span text:style-name="Source_20_Text">EDIT-BLOCK</text:span>
  to start editing the file at the first block.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ARGC ( -- arg-count )</text:span> [FTH] =&gt; "FORTH"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ARGV ( arg-n# -- arg-ptr arg-len )</text:span> [FTH] =&gt; "FORTH"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EXPAND-FN ( name-ptr name-len buf-ptr -- buf-ptr buf-len )</text:span> [FTH] =&gt; "FORTH"</text:p>
<screen> 
  : e.g. s" includefile" POCKET-PAD EXPAND-FN ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LOAD" ( [filename&amp;lt;"&amp;gt;] -- ??? )</text:span> [FTH] [OLD] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  load the specified file - this word can be compiled into a word-definition
  obsolete! use <text:span text:style-name="Source_20_Text">OPEN-BLOCKFILE</text:span> name <text:span text:style-name="Source_20_Text">LOAD</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SYSTEM ( command-ptr command-len -- command-exitcode# )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  run a shell command  (note: embedded systems have no shell)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SYSTEM" ( [command-line&amp;lt;"&amp;gt;] -- command-exitcode# )</text:span> [FTH] [OLD] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  run a shell command (note:embedded systems have no shell)
  obsolete! use <text:span text:style-name="Source_20_Text">S"</text:span> string" <text:span text:style-name="Source_20_Text">SYSTEM</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CREATE: ( "name" -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  this creates a name with the <text:span text:style-name="Source_20_Text">VARIABLE</text:span> runtime.
  Note that this is the FIG-implemenation of <text:span text:style-name="Source_20_Text">CREATE</text:span> whereas in
  ANS-Forth mode we have a <text:span text:style-name="Source_20_Text">CREATE</text:span> identical to FIG-style <text:span text:style-name="Source_20_Text">&lt;BUILDS</text:span>
</text:p><screen>  : CREATE: BL WORD $HEADER DOVAR A, ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BUFFER: ( size# "name" -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  this creates a name with the <text:span text:style-name="Source_20_Text">VARIABLE</text:span> runtime and <text:span text:style-name="Source_20_Text">ALLOT</text:span>s memory
</text:p><screen>  : BUFFER: BL WORD $HEADER DOVAR A, ALLOT ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">R'@ ( R: a b -- a R: a b )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  fetch the next-under value from the returnstack.
  used to interpret the returnstack to hold two <text:span text:style-name="Source_20_Text">LOCALS|</text:span> values.
  ( <text:span text:style-name="Source_20_Text">R@</text:span> / <text:span text:style-name="Source_20_Text">2R@</text:span> / <text:span text:style-name="Source_20_Text">R&gt;DROP</text:span> / <text:span text:style-name="Source_20_Text">R"@</text:span>)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">R'! ( x R: a b -- R: x b )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  store the value into the next-under value in the returnstack.
  used to interpret the returnstack to hold two <text:span text:style-name="Source_20_Text">LOCALS|</text:span> values.
  see <text:span text:style-name="Source_20_Text">R'@</text:span> for inverse operation
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">R"@ ( R: a b c -- a R: a b c )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  fetch the second-under value from the returnstack.
  used to interpret the returnstack to hold three <text:span text:style-name="Source_20_Text">LOCALS|</text:span> values.
  see <text:span text:style-name="Source_20_Text">R"!</text:span> for inverse operation ( <text:span text:style-name="Source_20_Text">R'@</text:span> <text:span text:style-name="Source_20_Text">R@</text:span> / <text:span text:style-name="Source_20_Text">2R@</text:span> / <text:span text:style-name="Source_20_Text">R&gt;DROP</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">R"! ( x R: a b c -- R: x b c )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  store the value into the second-under value in the returnstack.
  used to interpret the returnstack to hold three <text:span text:style-name="Source_20_Text">LOCALS|</text:span> values.
  see <text:span text:style-name="Source_20_Text">R"@</text:span> for inverse operation
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">R! ( x R: a -- R: x )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  store the value as the topmost value in the returnstack.
  see <text:span text:style-name="Source_20_Text">R@</text:span> for inverse operation ( <text:span text:style-name="Source_20_Text">R'@</text:span> / <text:span text:style-name="Source_20_Text">R"@</text:span> / <text:span text:style-name="Source_20_Text">2R@</text:span> / <text:span text:style-name="Source_20_Text">2R!</text:span>)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2R! ( x y R: a b -- R: x y )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  store the value as the topmost value in the returnstack.
  see <text:span text:style-name="Source_20_Text">2R@</text:span> for inverse operation ( <text:span text:style-name="Source_20_Text">R'@</text:span> / <text:span text:style-name="Source_20_Text">R"@</text:span> / <text:span text:style-name="Source_20_Text">2R@</text:span> / <text:span text:style-name="Source_20_Text">2R!</text:span>)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DUP&gt;R ( val -- val R: val )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  shortcut, see <text:span text:style-name="Source_20_Text">R&gt;DROP</text:span>
   note again that the following will fail:
</text:p><screen>  : DUP&amp;gt;R DUP &amp;gt;R ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">R&gt;DROP ( R: val -- R: )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  shortcut (e.g. in CSI-Forth)
   note that the access to R is configuration dependent - only in
  a traditional fig-forth each NEST will be one cell wide - in case that
  there are no <text:span text:style-name="Source_20_Text">LOCALS|</text:span> of course. And remember, the word above reads
  like the sequence <text:span text:style-name="Source_20_Text">R&gt;</text:span> and <text:span text:style-name="Source_20_Text">DROP</text:span> but that is not quite true.
</text:p><screen>  : R&amp;gt;DROP R&amp;gt; DROP ; ( is bad - correct might be )  : R&amp;gt;DROP R&amp;gt; R&amp;gt; DROP &amp;gt;R ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2R&gt;2DROP ( R: a b -- R: )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  this is two times <text:span text:style-name="Source_20_Text">R&gt;DROP</text:span> but a bit quicker.
  it is however really quick compared to the sequence <text:span text:style-name="Source_20_Text">2R&gt;</text:span> and <text:span text:style-name="Source_20_Text">2DROP</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CLEARSTACK ( -- )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  reset the parameter stack to be empty
</text:p><screen>  : CLEARSTACK  S0 SP! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">+UNDER ( n1 x n2 -- n1+n2 x )</text:span> [EXT] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">      quicker than
</text:p><screen>  : UNDER+  ROT + SWAP ;
</screen><text:p text:style-name="Text_20_body">  Note: the old pfe version of UNDER+ is obsolete as it is in conflict
  with a comus word of the same name. The behavior of this word will
  continue to exist under the name of <text:span text:style-name="Source_20_Text">(UNDER+)</text:span>. Users are encouraged
  to use the comus behavior of UNDER+ which does already exist under
  the name of <text:span text:style-name="Source_20_Text">+UNDER</text:span>. In the future pfe will be changed to pick up
  the comus behavior making UNDER+ and +UNDER to be synonyms. In the
  current version there will be load-time warning on usages of "UNDER+".
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EXECUTES ( fkey# [word] -- )</text:span> [EXT] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  stores the execution token of following word into
  the callback pointer for the specified function-key
</text:p>



<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-module-ext</text:p>
 <text:h text:style-name="Heading_20_3">MODULE - simple module implementation </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MODULE ( "name" -- old-current ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">END-MODULE ( old-current -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EXPORT ( old-current "name" -- old-current ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EXPOSE-MODULE ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ALSO-MODULE ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MODULE ( "name" -- old-current )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  create a new <text:span text:style-name="Source_20_Text">WORDLIST</text:span> with the given name. It
  will also have an implicit hidden vocabulary just as
  well and all <text:span text:style-name="Source_20_Text">DEFINITIONS</text:span> will go into that
  hidden wordlist. Therefore the old <text:span text:style-name="Source_20_Text">CURRENT</text:span> is
  memorized on the cs-stack.
</text:p><text:p text:style-name="Text_20_body">
  effectivly, CONTEXT[1] will have the wordlist-id
  of the public wordlist "name" and CONTEXT[0] will
  have the hidden wordlist contained in "name" - the
  hidden wordlist will always be known as HIDDEN' so
  that it can be re-referenced without need to use
  <text:span text:style-name="Source_20_Text">ALSO</text:span> just to access a single definition from 
  just another vocabulary. Note that HIDDEN' is 
  defined immediate (a <text:span text:style-name="Source_20_Text">VOCABULARY'</text:span> ) to modify
  the <text:span text:style-name="Source_20_Text">ORDER</text:span> inside a colon definition.
</text:p><screen>  : MODULE
    CURRENT @ ( -- old-current )
    VOCABULARY
    ALSO LATEST NAME&amp;gt; EXECUTE ALSO DEFINITIONS
    C" HIDDEN'" $CREATE WORDLIST CONTEXT !
  ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">END-MODULE ( old-current -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  clean up the cs-stack from the last <text:span text:style-name="Source_20_Text">MODULE</text:span> 
  definition. Effectivly, MODULE definitions can
  be nested.
</text:p><screen>  : END-MODULE ( old-current )
    PREVIOUS PREVIOUS CURRENT ! 
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EXPORT ( old-current "name" -- old-current )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  the named word in the hidden dictionary (i.e. 
  the wordlist referenced in <text:span text:style-name="Source_20_Text">CURRENT</text:span>) is exported
  into the public wordlist of it (i.e. which is in
  this implementation <text:span text:style-name="Source_20_Text">CONTEXT</text:span>[1]). The actual
  implemenation will create a <text:span text:style-name="Source_20_Text">DEFER</text:span>-word in the
  public wordlist withits parameter area pointing
  to the cfa of the hidden implementation.
</text:p><screen>  : EXPORT
    CURRENT @ CONTEXT CELL+ @ CURRENT !
    DEFER CURRENT !
    LATEST COUNT CURRENT @ SEARCH-WORDLIST
    IF LATEST NAME&amp;gt; &amp;gt;BODY ! ELSE ABORT" can't find word to export" THEN
  ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EXPOSE-MODULE ( "name" -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  affects the search order, ALSO module-wid CONTEXT ! hidden'
</text:p><screen>  : EXPOSE-MODULE 
     ALSO S" HIDDEN'" 
     ' DUP VOC? ABORT?" is no vocabulary" &amp;gt;VOC 
     SEARCH-WORDLIST 0= IF " no hidden vocabulary found" THEN
     DUP VOC? ABORT?" hidden is no vocabulary" EXECUTE
  ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ALSO-MODULE ( "name" -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  affects the search-order, ALSO module-wid CONTEXT ! 
</text:p><screen>  : ALSO-MODULE
    ' DUP VOC? ABORT?" is no vocabulary" 
    ALSO EXECUTE
  ;
  
</screen>









 <text:p text:style-name="Preformatted_20_Text">pfe-option-ext</text:p>
 <text:h text:style-name="Heading_20_3">Option Words For Almost-Non-Volatile Environment </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NVRAM,WORDS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NVRAM,Z@ ( "varname" -- z-str ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NVRAM,S@ ( "varname" -- str-ptr str-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NVRAM,?@ ( number "varname" -- number' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NVRAM,AS ( str-ptr str-len "varname" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NVRAM,TO ( number "varname" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NVRAM,WORDS ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  Print a list of <text:span text:style-name="Source_20_Text">WORDS</text:span> in the NVRAM buffer. Try to show also the
  current value, atleast for NVRAM numbers and strings. Words can be
  added or changed with the help of <text:span text:style-name="Source_20_Text">NVRAM</text:span>,SET or <text:span text:style-name="Source_20_Text">NVRAM</text:span>,USE
</text:p><text:p text:style-name="Text_20_body">
  Values in the NVRAM buffer will survive a <text:span text:style-name="Source_20_Text">COLD</text:span> reboot, in many
  hosted environments however the NVRAM will be lost on program exit.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NVRAM,Z@ ( "varname" -- z-str )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  Return the string pointer of the NVRAM string item, or null if no
  such item exists.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NVRAM,S@ ( "varname" -- str-ptr str-len )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  Return the string span of the NVRAM string item, or double null if no
  such item exists.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NVRAM,?@ ( number "varname" -- number' )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">
  Return the value of the NVRAM value item, or leave the original
  number untouched (i.e. the default value for your option).
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NVRAM,AS ( str-ptr str-len "varname" -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  set the NVRAM variable to the specified string.
</text:p><text:p text:style-name="Text_20_body">
  Some NVRAM strings do not take effect until next <text:span text:style-name="Source_20_Text">COLD</text:span> reboot.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NVRAM,TO ( number "varname" -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  set the NVRAM variable to the specified number.
</text:p><text:p text:style-name="Text_20_body">
  Most NVRAM numbers do not take effect until next <text:span text:style-name="Source_20_Text">COLD</text:span> reboot.
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-posix-ext</text:p>
 <text:h text:style-name="Heading_20_3">  </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NTOHL ( l -- l' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">HTONL  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NTOHS ( w -- w' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">HTONS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NTOHL ( l -- l' )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  if current host-encoding is bigendian, this is a NOOP
  otherwise byteswap the lower 32-bit bits of the topofstack.
  see <text:span text:style-name="Source_20_Text">L@</text:span> and <text:span text:style-name="Source_20_Text">L!</text:span> (being usually just <text:span text:style-name="Source_20_Text">@</text:span> and <text:span text:style-name="Source_20_Text">!</text:span> )
  (on some platforms, the upper bits are erased, on others not)
</text:p>
<text:p text:style-name="Text_20_body">HTONL - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NTOHS ( w -- w' )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  if current host-encoding is bigendian, this is a NOOP
  otherwise byteswap the lower 16-bit bits of the topofstack.
  see <text:span text:style-name="Source_20_Text">W@</text:span> and <text:span text:style-name="Source_20_Text">W!</text:span>
  (on some platforms, the upper bits are erased, on others not)
</text:p>
<text:p text:style-name="Text_20_body">HTONS - no description, sorry</text:p>








 <text:p text:style-name="Preformatted_20_Text">pfe-search-ext</text:p>
 <text:h text:style-name="Heading_20_3">Search-order + extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DEFINITIONS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">GET-CURRENT ( -- voc ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">GET-ORDER ( -- vocn ... voc1 n ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SEARCH-WORDLIST ( str-ptr str-len voc -- 0 | xt 1 | xt -1 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SET-CURRENT ( voc -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SET-ORDER ( vocn ... voc1 n -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">WORDLIST ( -- voc ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ALSO ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ORDER ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PREVIOUS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DEFAULT-ORDER ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RESET-ORDER ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body">  FORTH-WORDLIST ( -- voc )
 * return the voc-address of the base FORTH-vocabulary
 * (quite often the actual name is not => FORTH )
 </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DEFINITIONS ( -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  make the current context-vocabulary the definition-vocabulary,
  that is where new names are declared in. see <text:span text:style-name="Source_20_Text">ORDER</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">GET-CURRENT ( -- voc )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return the current definition vocabulary, see <text:span text:style-name="Source_20_Text">DEFINITIONS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">GET-ORDER ( -- vocn ... voc1 n )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  get the current search order onto the stack, see <text:span text:style-name="Source_20_Text">SET-ORDER</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SEARCH-WORDLIST ( str-ptr str-len voc -- 0 | xt 1 | xt -1 )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  almost like <text:span text:style-name="Source_20_Text">FIND</text:span> or <text:span text:style-name="Source_20_Text">(FIND)</text:span> -- but searches only the
  specified vocabulary.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SET-CURRENT ( voc -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  set the definition-vocabulary. see <text:span text:style-name="Source_20_Text">DEFINITIONS</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SET-ORDER ( vocn ... voc1 n -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  set the search-order -- probably saved beforehand using
  <text:span text:style-name="Source_20_Text">GET-ORDER</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">WORDLIST ( -- voc )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  return a new vocabulary-body for private definitions.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ALSO ( -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  a <text:span text:style-name="Source_20_Text">DUP</text:span> on the search <text:span text:style-name="Source_20_Text">ORDER</text:span> - each named vocabulary
  replaces the topmost <text:span text:style-name="Source_20_Text">ORDER</text:span> vocabulary. Using <text:span text:style-name="Source_20_Text">ALSO</text:span>
  will make it fixed to the search-order. (but it is 
  not nailed in trap-conditions as if using <text:span text:style-name="Source_20_Text">DEFAULT-ORDER</text:span> )
</text:p><screen>  order:   vocn ... voc2 voc1 -- vocn ... voc2 voc1 voc1
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ORDER ( -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  show the current search-order, followed by 
  the <text:span text:style-name="Source_20_Text">CURRENT</text:span> <text:span text:style-name="Source_20_Text">DEFINITIONS</text:span> vocabulary 
  and the <text:span text:style-name="Source_20_Text">ONLY</text:span> base vocabulary
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PREVIOUS ( -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  the invers of <text:span text:style-name="Source_20_Text">ALSO</text:span> , does a <text:span text:style-name="Source_20_Text">DROP</text:span> on the search <text:span text:style-name="Source_20_Text">ORDER</text:span>
  of vocabularies.
</text:p><screen>  order: vocn ... voc2 voc1 -- vocn ... voc2 
  example: ALSO PRIVATE-VOC DEFINTIONS (...do some...) PREVIOUS DEFINITIONS
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DEFAULT-ORDER ( -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  nail the current search <text:span text:style-name="Source_20_Text">ORDER</text:span> so that it will even
  survive a trap-condition. This default-order can be
  explicitly loaded with <text:span text:style-name="Source_20_Text">RESET-ORDER</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">RESET-ORDER ( -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  load the <text:span text:style-name="Source_20_Text">DEFAULT-ORDER</text:span> into the current search <text:span text:style-name="Source_20_Text">ORDER</text:span>
  - this is implicitly done when a trap is encountered.
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-shell-ext</text:p>
 <text:h text:style-name="Heading_20_3">Shell like words </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$PID ( -- pid ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$UID ( -- val ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$EUID ( -- val ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$GID ( -- val ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">UMASK ( val -- ret ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$HOME ( -- str-ptr str-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$USER ( -- str-ptr str-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">$CWD ( -- str-ptr str-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PWD ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RM  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TOUCH  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CHDIR ( bstring -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RMDIR  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MKDIR  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LN  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MV  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LL  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CP  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$PID ( -- pid )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  calls system's <text:span text:style-name="Source_20_Text"> getpid </text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$UID ( -- val )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  calls system's <text:span text:style-name="Source_20_Text"> getuid </text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$EUID ( -- val )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  calls system's <text:span text:style-name="Source_20_Text"> geteuid </text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$GID ( -- val )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  calls system's <text:span text:style-name="Source_20_Text"> getgid </text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">UMASK ( val -- ret )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  calls system's <text:span text:style-name="Source_20_Text"> umask </text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$HOME ( -- str-ptr str-len )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  calls system's <text:span text:style-name="Source_20_Text"> getenv(HOME) </text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$USER ( -- str-ptr str-len )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  calls system's <text:span text:style-name="Source_20_Text"> getenv(USER) </text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">$CWD ( -- str-ptr str-len )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  calls system's <text:span text:style-name="Source_20_Text"> getcwd </text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PWD ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  calls system's <text:span text:style-name="Source_20_Text"> getcwd </text:span> and prints it to the screen
</text:p><screen>  : PWD  $CWD TYPE ;
  
</screen>
<text:p text:style-name="Text_20_body">RM - no description, sorry</text:p><text:p text:style-name="Text_20_body">TOUCH - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CHDIR ( bstring -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  change the current directory. 
  ( (under VxWorks it is global! do not use in scripts!!) )
</text:p>
<text:p text:style-name="Text_20_body">RMDIR - no description, sorry</text:p><text:p text:style-name="Text_20_body">MKDIR - no description, sorry</text:p><text:p text:style-name="Text_20_body">LN - no description, sorry</text:p><text:p text:style-name="Text_20_body">MV - no description, sorry</text:p><text:p text:style-name="Text_20_body">LL - no description, sorry</text:p><text:p text:style-name="Text_20_body">LS - no description, sorry</text:p><text:p text:style-name="Text_20_body">CP - no description, sorry</text:p>








 <text:p text:style-name="Preformatted_20_Text">pfe-signals-ext</text:p>
 <text:h text:style-name="Heading_20_3">Signals Extension </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RAISE-SIGNAL ( signal# -- ior ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FORTH-SIGNAL ( handler-xt* signal# -- old-signal-xt* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RAISE-SIGNAL.DROP  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">RAISE-SIGNAL ( signal# -- ior )</text:span> [FTH] =&gt; "FORTH"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FORTH-SIGNAL ( handler-xt* signal# -- old-signal-xt* )</text:span> [FTH] =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  install signal handler
  - return old signal handler
</text:p>
<text:p text:style-name="Text_20_body">RAISE-SIGNAL.DROP - no description, sorry</text:p>








 <text:p text:style-name="Preformatted_20_Text">pfe-smart-go-ext</text:p>
 <text:h text:style-name="Heading_20_3">smart-go interpreter </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SMART-INTERPRET-INIT ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SMART-INTERPRET! ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SMART-INTERPRET-INIT ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  creates a set of interpret-words that are used in the inner
  interpreter, so if a word is unknown to the interpreter-loop
  it will use the first char of that word, attach it to an 
  "interpret-" prefix, and tries to use that <text:span text:style-name="Source_20_Text">IMMEDIATE</text:span>-=&gt;'DEFER'-word 
  on the rest of the word. This <text:span text:style-name="Source_20_Text">SMART-INTERPRET-INIT</text:span> will set up
  words like interpret-" so you can write 
  <text:span text:style-name="Source_20_Text">"hello"</text:span>  instead of   <text:span text:style-name="Source_20_Text">" hello"</text:span>
  and it creates interpret-\ so that words like <text:span text:style-name="Source_20_Text">\if-unix</text:span> are
  ignoring the line if the word <text:span text:style-name="Source_20_Text">\if-unknown</text:span> is unknown in itself.
  This is usually <text:span text:style-name="Emphasis">not</text:span> activated on startup.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SMART-INTERPRET! ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  enables/disables the SMART-INTERPRET extension in <text:span text:style-name="Source_20_Text">INTERPRET</text:span> ,
  (actually stores an XT in <text:span text:style-name="Source_20_Text">DEFER</text:span> inside the mainloop interpreter)
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-stackhelp-ext</text:p>
 <text:h text:style-name="Heading_20_3">StackHelp TypeChecking extension </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">|( ( [string&amp;lt;rp&amp;gt;] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">STACKHELP ( [name] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">STACKHELPS ( [name] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">STACKHELP-DEBUG  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-CHANGER( ( changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-INPUTLIST( ( changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-OUTPUTLIST( ( changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-INPUT-VARIANT( ( variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-OUTPUT-VARIANT( ( variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-INPUT-STACK( ( stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-OUTPUT-STACK( ( stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-INPUT-ARGUMENT( ( arg# stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-OUTPUT-ARGUMENT( ( arg# stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-INPUT-ARGUMENT-NAME( ( arg# stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-OUTPUT-ARGUMENT-NAME( ( arg# stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-INPUT-ARGUMENT-TYPE( ( arg# stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-OUTPUT-ARGUMENT-TYPE( ( arg# stk-char which# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CANONIC-INPUT-TYPE( ( arg# stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CANONIC-OUTPUT-TYPE( ( arg# stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITER-TEST( ( "tracked-stack -- input-stack&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITER-INPUT-ARG( ( arg# "tracked-stack -- changer&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITE-LINE( ( "stack-layout&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITE-SHOW. ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITE-STACK-TEST( ( "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITE-INPUT-ARG( ( arg# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITE-STACK-RESULT( ( "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-INPUT-NOTATION( ( notation# changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NARROW-OUTPUT-NOTATION( ( notation# changer# "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITE-STACKDEF-TEST(  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITE-STACKDEF-RESULT( ( "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITE-CHANGER-SELECT(  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITE-CHANGER-EXPAND(  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITE-CHANGER-RESULT(  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITE-TEST( ( "stackhelp&amp;lt;rp&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITE-SELECT(  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITE-EXPAND(  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWRITE-RESULT(  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">|( ( [string&amp;lt;rp&amp;gt;] -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">   add a checkstack notation for the LAST word or just try to
   match the given notation with the stacklayout traced so
   far - possibly casting a few types as needed.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">STACKHELP ( [name] -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">   show the stackhelp info registered for this name.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">STACKHELPS ( [name] -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">   show all possible stackhelps for this name.
</text:p>
<text:p text:style-name="Text_20_body">STACKHELP-DEBUG - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-CHANGER( ( changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-INPUTLIST( ( changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-OUTPUTLIST( ( changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-INPUT-VARIANT( ( variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  0 = default, 1 = 'S', 2 = 'R', ... 4 = 'P', ... 7 = 'M', .. 14 = 'F' 
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-OUTPUT-VARIANT( ( variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-INPUT-STACK( ( stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  0 = default, 1 = 'S', 2 = 'R', ... 4 = 'P', ... 7 = 'M', .. 14 = 'F' 
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-OUTPUT-STACK( ( stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-INPUT-ARGUMENT( ( arg# stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  0 = default, 1 = 'S', 2 = 'R', ... 4 = 'P', ... 7 = 'M', .. 14 = 'F' 
  arg# is [0] = TOS and [1] = UNDER, same as the pick values where
  3 2 1 0 2 pick . =:= 2
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-OUTPUT-ARGUMENT( ( arg# stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  arg# is [0] = TOS and [1] = UNDER, same as the pick values where
  3 2 1 0 2 pick . =:= 2
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-INPUT-ARGUMENT-NAME( ( arg# stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  0 = default, 1 = 'S', 2 = 'R', ... 4 = 'P', ... 7 = 'M', .. 14 = 'F' 
  arg# is [0] = TOS and [1] = UNDER, same as the pick values where
  3 2 1 0 2 pick . =:= 2
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-OUTPUT-ARGUMENT-NAME( ( arg# stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  arg# is [0] = TOS and [1] = UNDER, same as the pick values where
  3 2 1 0 2 pick . =:= 2
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-INPUT-ARGUMENT-TYPE( ( arg# stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  0 = default, 1 = 'S', 2 = 'R', ... 4 = 'P', ... 7 = 'M', .. 14 = 'F' 
  arg# is [0] = TOS and [1] = UNDER, same as the pick values where
  3 2 1 0 2 pick . =:= 2
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-OUTPUT-ARGUMENT-TYPE( ( arg# stk-char which# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  arg# is [0] = TOS and [1] = UNDER, same as the pick values where
  3 2 1 0 2 pick . =:= 2
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CANONIC-INPUT-TYPE( ( arg# stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  0 = default, 1 = 'S', 2 = 'R', ... 4 = 'P', ... 7 = 'M', .. 14 = 'F' 
  arg# is [0] = TOS and [1] = UNDER, same as the pick values where
  3 2 1 0 2 pick . =:= 2
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CANONIC-OUTPUT-TYPE( ( arg# stk-char variant# changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  arg# is [0] = TOS and [1] = UNDER, same as the pick values where
  3 2 1 0 2 pick . =:= 2
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REWRITER-TEST( ( "tracked-stack -- input-stack&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  suppose that the left side is a tracked stack line during compiling
  and the right side is a candidate changer input stack. Test whethr
  the candidate does match and the complete changer would be allowed
  to run a rewrite in the track stack buffer.
</text:p><text:p text:style-name="Text_20_body">
  Possible conditions include:
    the left side has not enough arguments or...
       any argument on the right side has a type specialization
       that does not match as a valid suffix to their counterpart
       on the left side.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REWRITER-INPUT-ARG( ( arg# "tracked-stack -- changer&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  suppose that the left side is a tracked stack line during compiling
  and the right side is a candidate changer input stack. Assume the
  righthand candidate does match - look at the given argument on the
  left side and show the prefix being copied to the output trackstack
  when the rewrite-rule is gettin applied later.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REWRITE-LINE( ( "stack-layout&amp;lt;rp&amp;gt;" -- )</text:span>  [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  fill rewrite-buffer with a stack-layout to be processed.
  see <text:span text:style-name="Source_20_Text">REWRITE-SHOW.</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REWRITE-SHOW. ( -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  show current rewrite-buffer.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REWRITE-STACK-TEST( ( "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">   check whether this stackhelp does match on current rewrite-buffer
   and say oK/No respectivly.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REWRITE-INPUT-ARG( ( arg# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">   check whether this stackhelp does match on current rewrite-buffer
   and in the given input match show us the argument but only the
   good prefix i.e. the type constraint being cut off already.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REWRITE-STACK-RESULT( ( "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  rewrite the current rewrite-buffer and show the result that
  would occur with this stackhelp being applied.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-INPUT-NOTATION( ( notation# changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NARROW-OUTPUT-NOTATION( ( notation# changer# "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>

<text:p text:style-name="Text_20_body">REWRITE-STACKDEF-TEST( - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REWRITE-STACKDEF-RESULT( ( "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">   assume:
        only one changer (if more are provided then only the first is used)
        only one stackdef variant in inputlist
</text:p>
<text:p text:style-name="Text_20_body">REWRITE-CHANGER-SELECT( - no description, sorry</text:p><text:p text:style-name="Text_20_body">REWRITE-CHANGER-EXPAND( - no description, sorry</text:p><text:p text:style-name="Text_20_body">REWRITE-CHANGER-RESULT( - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REWRITE-TEST( ( "stackhelp&amp;lt;rp&amp;gt;" -- )</text:span> [EXT] =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Test whether the given changer would match the current line.
  assume:
       only one changer (if more are provided then only the first is used)
</text:p>
<text:p text:style-name="Text_20_body">REWRITE-SELECT( - no description, sorry</text:p><text:p text:style-name="Text_20_body">REWRITE-EXPAND( - no description, sorry</text:p><text:p text:style-name="Text_20_body">REWRITE-RESULT( - no description, sorry</text:p>


<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-string-ext</text:p>
 <text:h text:style-name="Heading_20_3">String + extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">-TRAILING ( str-ptr str-len -- str-ptr str-len' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">/STRING ( str-ptr str-len n -- str-ptr' str-len' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BLANK ( str-ptr str-len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CMOVE ( from-ptr to-ptr len# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CMOVE&gt; ( from-ptr to-ptr len# -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">COMPARE ( str1-ptr str1-len str2-ptr str2-len -- diff# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SEARCH ( str1-ptr str1-len str2-ptr str2-len -- str1-ptr' str1-len' flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SLITERAL ( C: str-ptr str-len -- S: str-ptr str-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">-TRAILING ( str-ptr str-len -- str-ptr str-len' )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  check the given buffer if it contains whitespace at its end.
  If so, shorten str-len to meet the last non-whitespace
  character in the buffer.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">/STRING ( str-ptr str-len n -- str-ptr' str-len' )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  shorten the buffer from the beginning by n characters, i.e.
</text:p><screen>   str-ptr += n ;
   str-len -= n; 
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BLANK ( str-ptr str-len -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  <text:span text:style-name="Source_20_Text">FILL</text:span> a given buffer with <text:span text:style-name="Source_20_Text">BL</text:span> blanks
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CMOVE ( from-ptr to-ptr len# -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">   memcpy an area from-&gt;to for len bytes, starting at
   the lower addresses, see <text:span text:style-name="Source_20_Text">CMOVE&gt;</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CMOVE&gt; ( from-ptr to-ptr len# -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">   memcpy an area from-&gt;to for len bytes, starting 
   with the higher addresses, see <text:span text:style-name="Source_20_Text">CMOVE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">COMPARE ( str1-ptr str1-len str2-ptr str2-len -- diff# )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  compare both str-buffers, return 0 if they are equal,
  -1 if lower or shorter, and 1 if greater or longer
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SEARCH ( str1-ptr str1-len str2-ptr str2-len -- str1-ptr' str1-len' flag )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  search the str-buffer1 for the text of str-buffer2,
  if it is contained return TRUE and return buffer-values that
  point to the contained string, otherwise return FALSE and
  leave the original str-buffer1.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SLITERAL ( C: str-ptr str-len -- S: str-ptr str-len )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  this word does almost the same as <text:span text:style-name="Source_20_Text">LITERAL</text:span> - it takes
  an <text:span text:style-name="Source_20_Text">S"</text:span> string as specified in the CS-STACK at compile
  time and compiles into the current definition where it is
  returned as if there were a direct string-literal. This
  can be used to compute a string-literal at compile-time
  and hardwire it.
</text:p><screen>  example:
    : ORIGINAL-HOME  [ $HOME COUNT ] SLITERAL ; ( -- str-ptr str-len )
  
</screen>



<!--  is empty -->






 <text:p text:style-name="Preformatted_20_Text">pfe-struct-ext</text:p>
 <text:h text:style-name="Heading_20_3">STRUCT - simple struct implementation </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">STRUCT ( "name" -- here zero-offset ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">END-STRUCT ( here some-offset -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SUBRECORD ( outer-offset "name" -- outer-offset here zero-offset ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">END-SUBRECORD ( outer-offset here some-offset -- outer-offset+some ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ARRAY-OF ( some-offset n len "name" -- some-offset ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">VARIANT ( outer-offset "name" -- outer-offset here zero-offset ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">END-VARIANT ( outer-offset here some-offset -- outer-offset ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INSTANCE ( len "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INSTANCE-ADDR ( len -- addr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ENDSTRUCTURE ( here some-offset -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SIZEOF ( "name" -- size ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CHAR%  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CELL%  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">WCHAR%  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DOUBLE%  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLOAT%  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SFLOAT%  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DFLOAT%  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">STRUCT ( "name" -- here zero-offset )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  begin definition of a new structure (mpe.000)
</text:p><screen>  : STRUCT CREATE  !CSP
    HERE
    0 DUP ,
  DOES&amp;gt;
    @
  ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">END-STRUCT ( here some-offset -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  terminate definition of a new structure (mpe.000)
</text:p><screen>  : END-STRUCT  SWAP !  ?CSP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SUBRECORD ( outer-offset "name" -- outer-offset here zero-offset )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  begin definition of a subrecord (mpe.000)
</text:p><screen>  : STRUCT CREATE  
    HERE
    0 DUP ,
  DOES&amp;gt;
    @
  ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">END-SUBRECORD ( outer-offset here some-offset -- outer-offset+some )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  end definition of a subrecord (mpe.000)
</text:p><screen>  : END-SUBRECORD  TUCK SWAP !  + ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ARRAY-OF ( some-offset n len "name" -- some-offset )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  a <text:span text:style-name="Source_20_Text">FIELD</text:span>-array
</text:p><screen>  : ARRAY-OF * FIELD ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">VARIANT ( outer-offset "name" -- outer-offset here zero-offset )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Variant records describe an alternative view of the 
  current record or subrecord from the start to the current point. 
  The variant need not be of the same length, but the larger is taken 
</text:p><screen>  : VARIANT SUBRECORD ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">END-VARIANT ( outer-offset here some-offset -- outer-offset )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  terminate definition of a new variant (mpe.000)
</text:p><screen>  : END-STRUCT  TUCK SWAP !  2DUP &amp;lt; IF NIP ELSE DROP THEN ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">INSTANCE ( len "name" -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Create a named instance of a named structure. 
</text:p><screen>  : INSTANCE  CREATE ALLOT ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">INSTANCE-ADDR ( len -- addr )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  Create nameless instance of a structure and return base address. 
</text:p><screen>  : INSTANCE-ADDR  HERE SWAP ALLOT ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ENDSTRUCTURE ( here some-offset -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  finalize a previously started <text:span text:style-name="Source_20_Text">STRUCTURE</text:span> definition
</text:p><screen>  : ENDSTRUCTURE  SWAP !  ?CSP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SIZEOF ( "name" -- size )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  get the size-value from a previous structure definition
</text:p><screen>  : SIZEOF   ' &amp;gt;BODY @  STATE @ IF [COMPILE] LITERAL THEN ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body">CHAR% - no description, sorry</text:p><text:p text:style-name="Text_20_body">CELL% - no description, sorry</text:p><text:p text:style-name="Text_20_body">WCHAR% - no description, sorry</text:p><text:p text:style-name="Text_20_body">DOUBLE% - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLOAT% - no description, sorry</text:p><text:p text:style-name="Text_20_body">SFLOAT% - no description, sorry</text:p><text:p text:style-name="Text_20_body">DFLOAT% - no description, sorry</text:p>








 <text:p text:style-name="Preformatted_20_Text">pfe-structs-ext</text:p>
 <text:h text:style-name="Heading_20_3">STRUCTS - simple structure implementation 0 </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">STRUCTURE:  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">;STRUCTURE  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CHAR:  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">WCHAR:  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CELL:  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DOUBLE:  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FLOAT:  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CHARS:  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">WCHARS:  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CELLS:  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INTEGER:  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">POINTER:  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">STRUCT:  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ARRAY:  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body">STRUCTURE: - no description, sorry</text:p><text:p text:style-name="Text_20_body">;STRUCTURE - no description, sorry</text:p><text:p text:style-name="Text_20_body">CHAR: - no description, sorry</text:p><text:p text:style-name="Text_20_body">WCHAR: - no description, sorry</text:p><text:p text:style-name="Text_20_body">CELL: - no description, sorry</text:p><text:p text:style-name="Text_20_body">DOUBLE: - no description, sorry</text:p><text:p text:style-name="Text_20_body">FLOAT: - no description, sorry</text:p><text:p text:style-name="Text_20_body">CHARS: - no description, sorry</text:p><text:p text:style-name="Text_20_body">WCHARS: - no description, sorry</text:p><text:p text:style-name="Text_20_body">CELLS: - no description, sorry</text:p><text:p text:style-name="Text_20_body">INTEGER: - no description, sorry</text:p><text:p text:style-name="Text_20_body">POINTER: - no description, sorry</text:p><text:p text:style-name="Text_20_body">STRUCT: - no description, sorry</text:p><text:p text:style-name="Text_20_body">ARRAY: - no description, sorry</text:p>








 <text:p text:style-name="Preformatted_20_Text">pfe-system-ext</text:p>
 <text:h text:style-name="Heading_20_3">System-extension wordset from forth-83 </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&lt;MARK ( -- DP-mark ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">&lt;RESOLVE ( DP-mark -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MARK&gt; ( -- DP-mark ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">RESOLVE&gt; ( DP-mark -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BRANCH ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?BRANCH ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"FORTH"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body">  CURRENT ( addr -- )
 * The variable that holds the or the topmost compile-order
 * wordlist. The new ansforth standard suggests the use 
 * of =>"SET-CURRENT" and =>"GET-CURRENT" instead of
 * using => CURRENT => ! and => CURRENT => @
 </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&lt;MARK ( -- DP-mark )</text:span> compile-only =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  memorizes the current <text:span text:style-name="Source_20_Text">DP</text:span> on the CS-STACK
  used for <text:span text:style-name="Source_20_Text">&lt;RESOLVE</text:span> later. Useful for creation of 
  compiling words, eg. <text:span text:style-name="Source_20_Text">BEGIN</text:span> , see <text:span text:style-name="Source_20_Text">AHEAD</text:span>
</text:p><screen>  simulate:
    : &amp;lt;MARK ?COMP  HERE ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">&lt;RESOLVE ( DP-mark -- )</text:span> compile-only =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  resolves a previous <text:span text:style-name="Source_20_Text">&lt;MARK</text:span> , actually pushes
  the DP-address memorized at &lt;MARK into the dictionary.
  Mostly used after <text:span text:style-name="Source_20_Text">BRANCH</text:span> or =&gt; ?BRANCH in compiling
  words like <text:span text:style-name="Source_20_Text">UNTIL</text:span>
</text:p><screen>  simulate:
    : &amp;lt;RESOLVE ?COMP  , ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MARK&gt; ( -- DP-mark )</text:span> compile-only =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  makes room for a pointer in the dictionary to
  be resolved through <text:span text:style-name="Source_20_Text">RESOLVE&gt;</text:span> and does therefore
  memorize that cell's address on the CS-STACK
  Mostly used after <text:span text:style-name="Source_20_Text">BRANCH</text:span> or =&gt; ?BRANCH in compiling
  words like <text:span text:style-name="Source_20_Text">IF</text:span> or <text:span text:style-name="Source_20_Text">ELSE</text:span>
</text:p><screen>  simulate:
    : MARK&amp;gt; ?COMP  HERE 0 , ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">RESOLVE&gt; ( DP-mark -- )</text:span> compile-only =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  resolves a pointer created by <text:span text:style-name="Source_20_Text">MARK&gt;</text:span>
  Mostly used in compiling words like <text:span text:style-name="Source_20_Text">THEN</text:span>
</text:p><screen>  simulate:
    : RESOLVE&amp;gt; ?COMP  HERE SWAP ! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BRANCH ( -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  compiles a branch-runtime into the dictionary that
  can be resolved with <text:span text:style-name="Source_20_Text">MARK&amp;lt;</text:span>d or <text:span text:style-name="Source_20_Text">&amp;lt;RESOLVE</text:span>.
  Usage:
</text:p><screen>      BRANCH MARK&amp;amp;lt;     or
      BRANCH &amp;amp;gt;RESOLVE  or ...
</screen><text:p text:style-name="Text_20_body">  this is the runtime-portion of <text:span text:style-name="Source_20_Text">ELSE</text:span> - the use of
  <text:span text:style-name="Source_20_Text">ELSE</text:span> should be preferred. See also =&gt; ?BRANCH
</text:p><screen>  : BRANCH COMPILE (BRANCH) ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">?BRANCH ( -- )</text:span> =&gt; "FORTH"</text:p>
<text:p text:style-name="Text_20_body">  compiles a cond-branch-runtime into the dictionary that
  can be resolved with <text:span text:style-name="Source_20_Text">&amp;gt;MARK&amp;</text:span>d or <text:span text:style-name="Source_20_Text">RESOLVE&amp;gt;</text:span>.
  Usage:
</text:p><screen>      ?BRANCH MARK&amp;amp;lt;     or
      ?BRANCH &amp;amp;gt;RESOLVE  or ...
</screen><text:p text:style-name="Text_20_body">  this is the runtime-portion of <text:span text:style-name="Source_20_Text">IF</text:span> - the use of
  <text:span text:style-name="Source_20_Text">IF</text:span> should be preferred. See also <text:span text:style-name="Source_20_Text">BRANCH</text:span>
</text:p><screen>  : ?BRANCH COMPILE (?BRANCH) ;
  
</screen>









 <text:p text:style-name="Preformatted_20_Text">pfe-term-ext</text:p>
 <text:h text:style-name="Heading_20_3">Terminal Interface extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SHOW-TERMCAP ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SHOW-TERM-CONTROLS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SHOW-TERM-ESC-KEYS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ASSUME_VT100 ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ASSUME_DUMBTERM ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">GOTOXY ( x y -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?XY ( -- x y ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CLS  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.CLRSCR  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.CLREOL  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.HOME  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.HIGHLIGHT  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.HIGHLIGHT.OFF  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.UNDERLINE  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.UNDERLINE.OFF  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.INTENSITY  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.INTENSITY.OFF  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.BLINKING  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.BLINKING.OFF  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.REVERSE  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.REVERSE.OFF  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.NORMAL  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.BELL  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EKEY&gt;FKEY ( key-code# -- key-code# 0 | fkey-code# true! ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SHOW-TERMCAP ( -- )</text:span> for debugging =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  print the termcap strings used for input and output
  may give hints about what is wrong if the terminal
  seems to miss some functionality
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SHOW-TERM-CONTROLS ( -- )</text:span> for debugging =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  show the current mappings for the terminal output 
  may give hints about what is wrong if the output
  seems to miss some functionality
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SHOW-TERM-ESC-KEYS ( -- )</text:span> for debugging =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  show the current mappings for the terminal input
  may give hints about what is wrong if the input
  seems to miss some functionality
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ASSUME_VT100 ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  load hardwired VT100-termcap into the terminal-driver
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ASSUME_DUMBTERM ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  load hardwired DUMBTERM-termcap into the terminal-driver
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">GOTOXY ( x y -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  move the cursor to the specified position on the screen -
  this is usually done by sending a corresponding esc-sequence
  to the terminal. 
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">?XY ( -- x y )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  returns the cursor position on screen, on a real unix system
  this includes a special call to the screen driver, in remote
  systems this can be the expected position as seen on the
  client side's terminal driver.
</text:p>
<text:p text:style-name="Text_20_body">CLS - no description, sorry</text:p><text:p text:style-name="Text_20_body">.CLRSCR - no description, sorry</text:p><text:p text:style-name="Text_20_body">.CLREOL - no description, sorry</text:p><text:p text:style-name="Text_20_body">.HOME - no description, sorry</text:p><text:p text:style-name="Text_20_body">.HIGHLIGHT - no description, sorry</text:p><text:p text:style-name="Text_20_body">.HIGHLIGHT.OFF - no description, sorry</text:p><text:p text:style-name="Text_20_body">.UNDERLINE - no description, sorry</text:p><text:p text:style-name="Text_20_body">.UNDERLINE.OFF - no description, sorry</text:p><text:p text:style-name="Text_20_body">.INTENSITY - no description, sorry</text:p><text:p text:style-name="Text_20_body">.INTENSITY.OFF - no description, sorry</text:p><text:p text:style-name="Text_20_body">.BLINKING - no description, sorry</text:p><text:p text:style-name="Text_20_body">.BLINKING.OFF - no description, sorry</text:p><text:p text:style-name="Text_20_body">.REVERSE - no description, sorry</text:p><text:p text:style-name="Text_20_body">.REVERSE.OFF - no description, sorry</text:p><text:p text:style-name="Text_20_body">.NORMAL - no description, sorry</text:p><text:p text:style-name="Text_20_body">.BELL - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EKEY&gt;FKEY ( key-code# -- key-code# 0 | fkey-code# true! )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  If the input ekey value was not an extended key
  then flag is set to FALSE and the value is left
  unchanged. Compare to EKEY&gt;CHAR for the inverse.
</text:p><text:p text:style-name="Text_20_body">
  If the input eky was an extended key then the value 
  will be modified such that shifted values are transposed
  to their base EKEY plus <text:span text:style-name="Source_20_Text">K-SHIFT-MASK</text:span> - therefore the
  K-SHIFT-MASK is only apropriate for the result fkey-code
  values of this function.
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-termcatch-ext</text:p>
 <text:h text:style-name="Heading_20_3">TERMCATCH support for testing </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TERM-CAPTURE-CONTROLS ( -- var-ptr ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(TERM-CAPTURE-ON)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(TERM-CAPTURE-OFF)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(TERM-CAPTURE-BUFFER)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(TERM-CAPTURE-RESULT)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TERM-CAPTURE-ON ( capturebuffer-ptr capturebuffer-len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TERM-CAPTURE-OFF ( -- capturebuffer-ptr capturebuffer-len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TERMCATCH ( str-ptr str-len some-xt* -- str-ptr str-len' catch-code# ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TERM-CAPTURE-CONTROLS ( -- var-ptr )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   enable/disable common visualization of terminal control sequences.
</text:p>
<text:p text:style-name="Text_20_body">(TERM-CAPTURE-ON) - no description, sorry</text:p><text:p text:style-name="Text_20_body">(TERM-CAPTURE-OFF) - no description, sorry</text:p><text:p text:style-name="Text_20_body">(TERM-CAPTURE-BUFFER) - no description, sorry</text:p><text:p text:style-name="Text_20_body">(TERM-CAPTURE-RESULT) - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TERM-CAPTURE-ON ( capturebuffer-ptr capturebuffer-len -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   init/start capturing terminal output
</text:p><screen>  :  TERM-CAPTURE-ON (TERM-CAPTURE-BUFFER) (TERM-CAPTURE-ON) ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TERM-CAPTURE-OFF ( -- capturebuffer-ptr capturebuffer-len )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   shutdown capturing terminal output
</text:p><screen>  :  TERM-CAPTURE-OFF (TERM-CAPTURE-OFF) (TERM-CAPTURE-RESULT) ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TERMCATCH ( str-ptr str-len some-xt* -- str-ptr str-len' catch-code# )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   create a catch-domain around the token to be executed. This works
   the same as <text:span text:style-name="Source_20_Text">CATCH</text:span>. Additionally all terminal output of that word
   is being captured to the buffer being provided as an argument. The
   maximum length input argument is modified flagging the actual length
   of captured output stream as the output argument. Note that in most
   cases a <text:span text:style-name="Source_20_Text">POCKET-PAD</text:span> is just not big enough, atleast many error
   condition notifications tend to be quite lengthy for byte counted
   forth strings.
</text:p><screen>  : TERMCATCH TERM-CAPTURE-ON CATCH &amp;gt;R TERM-CAPTURE-OFF R&amp;gt; ;
  
</screen>









 <text:p text:style-name="Preformatted_20_Text">pfe-toolbelt-ext</text:p>
 <text:h text:style-name="Heading_20_3">TOOLBELT - Neil Bawd's common extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[DEFINED] ( "name" -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[UNDEFINED] ( "name" -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NOT ( x -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">C+! ( n addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EMPTY ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">VOCABULARY ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BOUNDS ( str len -- str+len str ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">OFF ( addr  -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ON ( addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">APPEND ( str len add2 -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">APPEND-CHAR ( char addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PLACE ( str len addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">STRING, ( str len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">," ( "&amp;lt;ccc&amp;gt;&amp;lt;quote&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">THIRD ( x y z -- x y z x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FOURTH ( w x y z -- w x y z w ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">3DUP ( x y z -- x y z x y z ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">3DROP ( x y z -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">2NIP ( w x y z -- y z ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">R'@ ( R: a b -- a R: a b ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ANDIF ( p ... -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ORIF ( p ... -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SCAN ( str len char -- str+i len-i ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SKIP ( str len char -- str+i len-i ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BACK ( str len char -- str len-i ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">/SPLIT ( a m a+i m-i -- a+i m-i a i ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">IS-WHITE ( char -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">TRIM ( str len -- str len-i ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BL-SCAN ( str len -- str+i len-i ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BL-SKIP ( str len -- str+i len-i ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">STARTS? ( str len pattern len2 -- str len flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ENDS? ( str len pattern len2 -- str len flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">IS-DIGIT ( char -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">IS-ALPHA ( char -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">IS-ALNUM ( char -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SPLIT-NEXT-LINE ( src . -- src' . str len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">VIEW-NEXT-LINE ( src . str len -- src . str len str2 len2 ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">NEXT-WORD ( -- str len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LEXEME ( "name" -- str len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">H# ( "hexnumber" -- n ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">\\ ( "...&amp;lt;eof&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FILE-CHECK ( n -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MEMORY-CHECK ( n -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">++ ( addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">@+ ( addr -- addr' x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">!+ ( addr x -- addr' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">'th ( n "addr" -- &amp;amp;addr[n] ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(.)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CELL- ( addr -- addr' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EMITS ( n char -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">HIWORD ( xxyy -- xx ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LOWORD ( xxyy -- yy ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REWIND-FILE ( file-id -- ior ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[DEFINED] ( "name" -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Search the dictionary for _name_. If _name_ is found,
   return TRUE; otherwise return FALSE. Immediate for use in
   definitions.
</text:p><text:p text:style-name="Text_20_body">  [DEFINED] word       ( -- nfa|0 ) immediate
  does check for the word using find (so it does not throw like <text:span text:style-name="Source_20_Text">'</text:span> )
  and puts it on stack. As it is immediate it does work in compile-mode
  too, so it places its argument in the cs-stack then. This is most
  useful with a directly following <text:span text:style-name="Source_20_Text">[IF]</text:span> clause, so that sth. like
  an <text:span text:style-name="Source_20_Text">[IFDEF] word</text:span> can be simulated through <text:span text:style-name="Source_20_Text">[DEFINED] word [IF]</text:span>
</text:p><screen> 
  : [DEFINED] BL WORD FIND NIP ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[UNDEFINED] ( "name" -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Search the dictionary for _name_. If _name_ is found,
   return FALSE; otherwise return TRUE. Immediate for use in
   definitions.
</text:p><text:p text:style-name="Text_20_body">
   see <text:span text:style-name="Source_20_Text">[DEFINED]</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NOT ( x -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Identical to `0=`, used for program clarity to reverse the
   result of a previous test.
</text:p><text:p text:style-name="Text_20_body">
   WARNING: PFE's NOT uses bitwise complement <text:span text:style-name="Source_20_Text">INVERT</text:span>
            instead of the logical complement <text:span text:style-name="Source_20_Text">0=</text:span>, so
            that loading TOOLBELT will change semantics.
   ... this difference in semantics has caused dpans94 to
   depracate the word. Only if TRUE is -1 it would be identical
   but not all words return -1 for true.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">C+! ( n addr -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Add the low-order byte of _n_ to the byte at _addr_,
   removing both from the stack.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EMPTY ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Reset the dictionary to a predefined golden state,
   discarding all definitions and releasing all allocated
   data space beyond that state.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">VOCABULARY ( "name" -- )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  create a vocabulary of that name. If the named vocabulary
  is called later, it will run <text:span text:style-name="Source_20_Text">((VOCABULARY))</text:span> , thereby
  putting it into the current search order.
  Special pfe-extensions are accessible via 
  <text:span text:style-name="Source_20_Text">CASE-SENSITIVE-VOC</text:span> and <text:span text:style-name="Source_20_Text">SEARCH-ALSO-VOC</text:span>
</text:p><screen>  simulate:
    : VOCABULARY  CREATE ALLOT-WORDLIST
         DOES&amp;gt; ( the ((VOCABULARY)) runtime )
           CONTEXT ! 
    ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BOUNDS ( str len -- str+len str )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Convert _str len_ to range for DO-loop.
</text:p><screen>  : BOUNDS  ( str len -- str+len str )  OVER + SWAP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">OFF ( addr  -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Store 0 at _addr_. Defined in f84 as <text:span text:style-name="Source_20_Text">OFF</text:span>. See antonym <text:span text:style-name="Source_20_Text">ON!</text:span>.
</text:p><screen>   : OFF  ( addr -- )  0 SWAP ! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ON ( addr -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Store -1 at _addr_. See `OFF`.
</text:p><screen>   : ON  ( addr -- )  -1 SWAP ! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">APPEND ( str len add2 -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Append string _str len_ to the counted string at _addr_.
   a.k.a. <text:span text:style-name="Source_20_Text">+PLACE</text:span> of the <text:span text:style-name="Source_20_Text">PLACE</text:span> family
</text:p><screen>  : APPEND   2DUP 2&amp;gt;R  COUNT +  SWAP MOVE ( ) 2R&amp;gt; C+! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">APPEND-CHAR ( char addr -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Append _char_ to the counted string at _addr_.
   a.k.a. <text:span text:style-name="Source_20_Text">C+PLACE</text:span> of the <text:span text:style-name="Source_20_Text">PLACE</text:span> family
</text:p><screen>  : APPEND-CHAR   DUP &amp;gt;R  COUNT  DUP 1+ R&amp;gt; C!  +  C! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PLACE ( str len addr -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Place the string _str len_ at _addr_, formatting it as a
   counted string.
</text:p><screen>  : PLACE  2DUP 2&amp;gt;R  1+ SWAP  MOVE  2R&amp;gt; C! ;
  : PLACE  2DUP C!   1+ SWAP CMOVE ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">STRING, ( str len -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Store a string in data space as a counted string.
</text:p><screen>  : STRING, HERE  OVER 1+  ALLOT  PLACE ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">," ( "&amp;lt;ccc&amp;gt;&amp;lt;quote&amp;gt;" -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Store a quote-delimited string in data space as a counted
   string.
</text:p><screen>  : ," [CHAR] " PARSE  STRING, ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">THIRD ( x y z -- x y z x )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Copy third element on the stack onto top of stack.
</text:p><screen>  : THIRD   2 PICK ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FOURTH ( w x y z -- w x y z w )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Copy fourth element on the stack onto top of stack.
</text:p><screen>  : FOURTH  3 PICK ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">3DUP ( x y z -- x y z x y z )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Copy top three elements on the stack onto top of stack.
</text:p><screen>  : 3DUP   THIRD THIRD THIRD ;
</screen><text:p text:style-name="Text_20_body">
  or
</text:p><screen>  : 3DUP  3 PICK 3 PICK 3 PICK ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">3DROP ( x y z -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Drop the top three elements from the stack.
</text:p><screen>  : 3DROP   DROP 2DROP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">2NIP ( w x y z -- y z )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Drop the third and fourth elements from the stack.
</text:p><screen>  : 2NIP   2SWAP 2DROP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">R'@ ( R: a b -- a R: a b )</text:span> [FTH] =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  fetch the next-under value from the returnstack.
  used to interpret the returnstack to hold two <text:span text:style-name="Source_20_Text">LOCALS|</text:span> values.
  ( <text:span text:style-name="Source_20_Text">R@</text:span> / <text:span text:style-name="Source_20_Text">2R@</text:span> / <text:span text:style-name="Source_20_Text">R&gt;DROP</text:span> / <text:span text:style-name="Source_20_Text">R"@</text:span>)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ANDIF ( p ... -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Given `p ANDIF q THEN`,  _q_ will not be performed if
   _p_ is false.
</text:p><screen>  : ANDIF  S" DUP IF DROP " EVALUATE ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ORIF ( p ... -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Given `p ORIF q THEN`,  _q_ will not be performed if
   _p_ is true.
</text:p><screen>  : ORIF   S" DUP 0= IF DROP " EVALUATE ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SCAN ( str len char -- str+i len-i )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Look for a particular character in the specified string.
</text:p><screen>  : SCAN     
     &amp;gt;R  BEGIN  DUP WHILE  OVER C@ R@ -
         WHILE  1 /STRING  REPEAT THEN
     R&amp;gt; DROP ;
</screen><text:p text:style-name="Text_20_body">
  ie.
  scan for first occurence of c in string 
</text:p><screen>    : SCAN &amp;gt;R BEGIN DUP OVER C@ R@ = 0= OR WHILE 
                     1- SWAP 1- SWAP REPEAT R&amp;gt; DROP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SKIP ( str len char -- str+i len-i )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Advance past leading characters in the specified string.
</text:p><screen>  : SKIP     
    &amp;gt;R  BEGIN  DUP WHILE  OVER C@ R@ =
         WHILE  1 /STRING  REPEAT THEN
     R&amp;gt; DROP ;
</screen><text:p text:style-name="Text_20_body">
  ie.
  skip leading characters c 
</text:p><screen>    : SKIP  &amp;gt;R BEGIN DUP OVER C@ R@ = OR WHILE 
                     1- SWAP 1- SWAP REPEAT R&amp;gt; DROP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BACK ( str len char -- str len-i )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Look for a particular character in the string from the
   back toward the front.
</text:p><screen>  : BACK     
     &amp;gt;R  BEGIN  DUP WHILE
         1-  2DUP + C@  R@ =
     UNTIL 1+ THEN
     R&amp;gt; DROP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">/SPLIT ( a m a+i m-i -- a+i m-i a i )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Split a character string _a m_ at place given by _a+i m-i_.
   Called "cut-split" because "slash-split" is a tongue
   twister.
</text:p><screen>  : /SPLIT  DUP &amp;gt;R  2SWAP  R&amp;gt; - ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">IS-WHITE ( char -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Test char for white space.
</text:p><screen>  : IS-WHITE   33 - 0&amp;lt; ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">TRIM ( str len -- str len-i )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Trim white space from end of string.
</text:p><screen>  : TRIM    
     BEGIN  DUP WHILE
         1-  2DUP + C@ IS-WHITE NOT
     UNTIL 1+ THEN ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BL-SCAN ( str len -- str+i len-i )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Look for white space from start of string
</text:p><screen>  : BL-SCAN 
     BEGIN  DUP WHILE  OVER C@ IS-WHITE NOT
     WHILE  1 /STRING  REPEAT THEN ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BL-SKIP ( str len -- str+i len-i )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Skip over white space at start of string.
</text:p><screen>  : BL-SKIP 
     BEGIN  DUP WHILE  OVER C@ IS-WHITE
     WHILE  1 /STRING  REPEAT THEN ;
 
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">STARTS? ( str len pattern len2 -- str len flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Check start of string.
</text:p><screen>  : STARTS?   DUP &amp;gt;R  2OVER  R&amp;gt; MIN  COMPARE 0= ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ENDS? ( str len pattern len2 -- str len flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Check end of string.
</text:p><screen>  : ENDS?   DUP &amp;gt;R  2OVER  DUP R&amp;gt; - /STRING  COMPARE 0= ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">IS-DIGIT ( char -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Test _char_ for digit [0-9].
</text:p><screen>  : IS-DIGIT   [CHAR] 0 -  10 U&amp;lt; ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">IS-ALPHA ( char -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Test _char_ for alphabetic [A-Za-z].
</text:p><screen>  : IS-ALPHA  32 OR  [CHAR] a -  26 U&amp;lt; ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">IS-ALNUM ( char -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Test _char_ for alphanumeric [A-Za-z0-9].
</text:p><screen>  : IS-ALNUM  
     DUP IS-ALPHA  ORIF  DUP IS-DIGIT  THEN  NIP ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SPLIT-NEXT-LINE ( src . -- src' . str len )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Split the next line from the string.
</text:p><screen>  : SPLIT-NEXT-LINE 
     2DUP #EOL-CHAR SCAN  
     DUP &amp;gt;R  1 /STRING  2SWAP R&amp;gt; - ;
</screen><text:p text:style-name="Text_20_body">  FIXME: inform Neil Bawd that this is probably
  not what he wanted. replace /STRING with /SPLIT here. 
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">VIEW-NEXT-LINE ( src . str len -- src . str len str2 len2 )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Copy next line above current line.
</text:p><screen>  : VIEW-NEXT-LINE 
     2OVER 2DUP #EOL-CHAR SCAN NIP - ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">NEXT-WORD ( -- str len )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Get the next word across line breaks as a character
   string. _len_ will be 0 at end of file.
</text:p><screen>  : NEXT-WORD         
     BEGIN   BL WORD COUNT      ( str len )
         DUP IF EXIT THEN
         REFILL
     WHILE  2DROP ( ) REPEAT ;  
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LEXEME ( "name" -- str len )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Get the next word on the line as a character string.
   If it's a single character, use it as the delimiter to
   get a phrase.
</text:p><screen>  : LEXEME             
     BL WORD ( addr) DUP C@ 1 =
         IF  CHAR+ C@ WORD  THEN
     COUNT ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">H# ( "hexnumber" -- n )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Get the next word in the input stream as a hex
   single-number literal.  (Adopted from Open Firmware.)
</text:p><screen>  : H#  ( "hexnumber" -- n )  \  Simplified for easy porting.
     0 0 BL WORD COUNT                  
     BASE @ &amp;gt;R  HEX  &amp;gt;NUMBER  R&amp;gt; BASE !
         ABORT" Not Hex " 2DROP          ( n)
     STATE @ IF  POSTPONE LITERAL  THEN
     ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">\\ ( "...&amp;lt;eof&amp;gt;" -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Ignore the rest of the input stream.
</text:p><screen>  : \\   BEGIN  -1 PARSE  2DROP  REFILL 0= UNTIL ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FILE-CHECK ( n -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Check for file access error.
</text:p><screen>  \ : FILE-CHECK    ( n -- )  THROW ;
  : FILE-CHECK      ( n -- )  ABORT" File Access Error " ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MEMORY-CHECK ( n -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Check for memory allocation error.
</text:p><screen>  \ : MEMORY-CHECK  ( n -- )  THROW ;
  : MEMORY-CHECK    ( n -- )  ABORT" Memory Allocation Error " ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">++ ( addr -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Increment the value at _addr_.
</text:p><screen>  : ++  ( addr -- )  1 SWAP +! ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">@+ ( addr -- addr' x )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Fetch the value _x_ from _addr_, and increment the address
   by one cell.
</text:p><screen>  : @+  ( addr -- addr' x )  DUP CELL+ SWAP  @ ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">!+ ( addr x -- addr' )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Store the value _x_ into _addr_, and increment the address
   by one cell.
</text:p><screen>  : !+  ( addr x -- addr' )  OVER !  CELL+ ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">'th ( n "addr" -- &amp;amp;addr[n] )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Address `n CELLS addr +`.
</text:p><screen>  : 'th     ( n "addr" -- &amp;amp;addr[n] )
     S" 2 LSHIFT " EVALUATE
     BL WORD COUNT EVALUATE
     S" + " EVALUATE
     ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body">(.) - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CELL- ( addr -- addr' )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Decrement address by one cell
</text:p><screen>  : CELL-  ( addr -- addr' )  CELL - ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EMITS ( n char -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Emit _char_ _n_ times.
</text:p><screen>  : EMITS             ( n char -- )
     SWAP 0 ?DO  DUP EMIT  LOOP DROP ;
</screen><text:p text:style-name="Text_20_body">  also compare
</text:p><screen>  : SPACES BL EMITS ;
  : SPACE BL EMIT ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">HIWORD ( xxyy -- xx )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   The high half of the value.
</text:p><screen>  : HIWORD  ( xxyy -- xx )  16 RSHIFT ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LOWORD ( xxyy -- yy )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   The low half of the value.
</text:p><screen>  : LOWORD  ( xxyy -- yy )  65535 AND ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REWIND-FILE ( file-id -- ior )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Rewind the file.
</text:p><screen>  : REWIND-FILE       ( file-id -- ior )
     0 0 ROT REPOSITION-FILE ;
  
</screen>









 <text:p text:style-name="Preformatted_20_Text">pfe-tools-ext</text:p>
 <text:h text:style-name="Heading_20_3">TOOLS Programming-Tools (without ASSEMBLER) </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.S ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DUMP ( addr len -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SEE ( "word" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">WORDS ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">AHEAD ( -- DP-mark ORIG-magic ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">BYE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CS-PICK ( 2a 2b 2c ... n -- 2a 2b 2c ... 2a ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CS-ROLL ( 2a 2b 2c ... n -- 2b 2c ... 2a ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">FORGET ( "word" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[ELSE] ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[IF] ( flag -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[THEN]  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">? ( addr -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CODE ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">;CODE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"[ANS] FORTH"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">END-CODE ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"ASSEMBLER"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">.S ( -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">      print the stack content in vertical nice format.
      tries to show cell-stack and float-stack side-by-side,
</text:p><text:p text:style-name="Text_20_body">
 	 Depending on configuration,
 	there are two parameter stacks: for integers and for
 	floating point operations. If both stacks are empty, <text:span text:style-name="Source_20_Text">.S</text:span>
 	will display the message <text:span text:style-name="Source_20_Text">&amp;lt;stacks empty&amp;gt;</text:span>.
</text:p><text:p text:style-name="Text_20_body">
 	If only the floating point stack is empty, <text:span text:style-name="Source_20_Text">.S</text:span> displays
 	the integer stack items  in one column, one item per line,
 	both in hex and in decimal like this (the first item is topmost):
</text:p><screen>  12345 HEX 67890 .S
     	424080 [00067890]
          12345 [00003039] ok
</screen><text:p text:style-name="Text_20_body">
       If both stacks ar not empty, =&gt; .S displays both stacks, in two
 	columns, one item per line
</text:p><screen>  HEX 123456.78E90 ok
  DECIMAL 123456.78E90 .S
     	   291 [00000123]          1.234568E+95
     1164414608 [45678E90] ok
</screen><text:p text:style-name="Text_20_body">  	Confusing example? Remember that floating point input only works
  	when the <text:span text:style-name="Source_20_Text">BASE</text:span> number is <text:span text:style-name="Source_20_Text">DECIMAL</text:span>. The first number looks like
  	a floating point but it is a goodhex double integer too - the number
  	base is <text:span text:style-name="Source_20_Text">HEX</text:span>. Thus it is accepted as a hex number. Second try 
       with a decimal base will input the floating point number.
</text:p><text:p text:style-name="Text_20_body">
       If only the integer stack is empty, =&gt; .S shows two columns, but
       he first columns is called <constant>&amp;lt;stack empty&amp;gt;</constant>, and the
       second column is the floating point stack, topmost item first.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DUMP ( addr len -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  show a hex-dump of the given area, if it's more than a screenful
  it will ask using =&gt; ?CR
</text:p><text:p text:style-name="Text_20_body">
  You can easily cause a segmentation fault of something like that
  by accessing memory that does not belong to the pfe-process.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SEE ( "word" -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">   decompile word - tries to show it in re-compilable form.
</text:p><text:p text:style-name="Text_20_body">
   <text:span text:style-name="Source_20_Text">(SEE)</text:span> tries to display the word as a reasonable indented
   source text. If you defined your own control structures or
   use extended control-flow patterns, the indentation may be
   suboptimal.
</text:p><screen>  simulate:
    : SEE  [COMPILE] ' (SEE) ; 
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">WORDS ( -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  uses CONTEXT and lists the words defined in that vocabulary.
  usually the vocabulary to list is named directly in before.
</text:p><screen>  example:
     FORTH WORDS  or  LOADED WORDS
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">AHEAD ( -- DP-mark ORIG-magic )</text:span> compile-only =&gt; "[ANS] FORTH"</text:p>
<screen> 
  simulate:
    : AHEAD  BRANCH MARK&amp;gt; (ORIG#) ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">BYE ( -- )</text:span> no-return =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  should quit the forth environment completly
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CS-PICK ( 2a 2b 2c ... n -- 2a 2b 2c ... 2a )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  pick a value in the compilation-stack - note that the compilation
  stack _can_ be seperate in some forth-implemenations. In PFE
  the parameter-stack is used in a double-cell fashion, so CS-PICK
  would 2PICK a DP-mark and a COMP-magic, see <text:span text:style-name="Source_20_Text">PICK</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CS-ROLL ( 2a 2b 2c ... n -- 2b 2c ... 2a )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  roll a value in the compilation-stack - note that the compilation
  stack _can_ be seperate in some forth-implemenations. In PFE
  the parameter-stack is used in a double-cell fashion, so CS-ROLL
  would 2ROLL a DP-mark and a COMP-magic, see <text:span text:style-name="Source_20_Text">ROLL</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">FORGET ( "word" -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<screen> 
  simulate:
    : FORGET  [COMPILE] '  &amp;gt;NAME (FORGET) ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[ELSE] ( -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  eat up everything upto and including the next [THEN]. count
  nested [IF] ... [THEN] constructs. see <text:span text:style-name="Source_20_Text">[IF]</text:span>
</text:p><screen>  this word provides a simple pre-compiler mechanism
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[IF] ( flag -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  check the condition in the CS-STACK. If true let the following
  text flow into <text:span text:style-name="Source_20_Text">INTERPRET</text:span> , otherwise eat up everything upto
  and including the next <text:span text:style-name="Source_20_Text">[ELSE]</text:span> or <text:span text:style-name="Source_20_Text">[THEN]</text:span> . In case of 
  skipping, count nested [IF] ... [THEN] constructs.
</text:p><screen>  this word provides a simple pre-compiler mechanism
  
</screen>
<text:p text:style-name="Text_20_body">[THEN] - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">? ( addr -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  Display the (integer) content of at address <constant>addr</constant>.
  This word is sensitive to <text:span text:style-name="Source_20_Text">BASE</text:span>
</text:p><screen>  simulate:
    : ?  @ . ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CODE ( "name" -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  call <text:span text:style-name="Source_20_Text">ALSO</text:span> and add ASSEMBLER wordlist if available. Add PROC ENTER
  assembler snippet as needed for the architecture into the PFA. The
  CFA is setup (a) with the PFA adress in traditional ITC or (b)
  with an infoblock as for sbr-coded colon words.
</text:p><text:p text:style-name="Text_20_body">
  Remember that not all architectures are support and that the
  ASSEMBLER wordset is not compiled into pfe by default. Use always
  the corresponding <text:span text:style-name="Source_20_Text">END-CODE</text:span> for each <text:span text:style-name="Source_20_Text">CODE</text:span> start. The new
  word name is not smudged.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">;CODE ( -- )</text:span> =&gt; "[ANS] FORTH"</text:p>
<text:p text:style-name="Text_20_body">  Does end the latest word (being usually some DOES&gt; part) and enters
  machine-level (in EXEC-mode). 
</text:p><text:p text:style-name="Text_20_body">
  BE AWARE:
  The TOOLS-EXT will not provide an <text:span text:style-name="Source_20_Text">END-CODE</text:span> or any other word in the
  <text:span text:style-name="Source_20_Text">ASSEMBLER</text:span> wordlist which is required to start any useful assembler 
  programming. After requiring ASSEMBLER-EXT you will see a second ";CODE"
  in the <text:span text:style-name="Source_20_Text">EXTENSIONS</text:span> wordlist that will also provide an optimized execution
  than the result of this standard-forth implemenation.
</text:p><text:p text:style-name="Text_20_body">
  The Standard-Forth implementation will actually compile a derivate of
  <text:span text:style-name="Source_20_Text">BRANCH</text:span> into the dictionary followed by <text:span text:style-name="Source_20_Text">;</text:span>. The compiled word
  will not jump to the target adress (following the execution token)
  but it will call the target adress via the host C stack. The target
  machine level word (C domain) will just return here for being
  returned (Forth domain). Hence <text:span text:style-name="Source_20_Text">END-CODE</text:span> may be a simple RET, comma!
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">END-CODE ( "name" -- )</text:span> =&gt; "ASSEMBLER"</text:p>
<text:p text:style-name="Text_20_body">  call <text:span text:style-name="Source_20_Text">PREVIOUS</text:span> and  add PROC LEAVE assembler snippet as needed
  for the architecture -  usually includes bits to "return from
  subroutine". Remember that not all architectures are support and
  PFE usually does only do variants of call-threading with a separate
  loop for the inner interpreter that does "call into subroutine".
  Some forth implementations do "jump into routine" and the PROC
  LEAVE part would do "jump to next routine" also known as 
  next-threading. The sbr-call-threading is usually similar to the
  native subroutine-coding of the host operating system. See <text:span text:style-name="Source_20_Text">CODE</text:span>
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-tools-misc-ext</text:p>
 <text:h text:style-name="Heading_20_3">TOOLS-Misc Compatibility words </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">VLIST ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">!CSP ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?CSP ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CS-SWAP  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CS-DROP  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?COMP ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?EXEC ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?FILE ( file-id -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?LOADING ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?PAIRS ( a b -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">?STACK ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DEFINED ( "name" -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[DEFINED] ( "name" -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[UNDEFINED] ( "name" -- flag ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(FORGET)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(DICTLIMIT)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(DICTFENCE)  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body">  DICTLIMIT   ( -- var* )
 * the lower end of usable area - the forth memory block minus the 
 * forth-related DICTALLOCS at the upper end (e.g. => POCKET-PAD )
 * Note that this is a variable by tradition but you should not move it.
 </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">VLIST ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   The VLIST command had been present in FIG and other forth
   implementations. It has to list all accessible words. In PFE
   it list all words in the search order. Well, the point is,
   that we do really just look into the search order and are
   then calling <text:span text:style-name="Source_20_Text">WORDS</text:span> on that Wordl. That way you can see
   all accessible words in the order they might be found.
   Uses =&gt; ?CR
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">!CSP ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  put <text:span text:style-name="Source_20_Text">SP</text:span> into <text:span text:style-name="Source_20_Text">CSP</text:span>
   used in control-words
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">?CSP ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  check that <text:span text:style-name="Source_20_Text">SP</text:span> == <text:span text:style-name="Source_20_Text">CSP</text:span> otherwise <text:span text:style-name="Source_20_Text">THROW</text:span>
   used in control-words
</text:p>
<text:p text:style-name="Text_20_body">CS-SWAP - no description, sorry</text:p><text:p text:style-name="Text_20_body">CS-DROP - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">?COMP ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  check that the current <text:span text:style-name="Source_20_Text">STATE</text:span> is compiling
  otherwise <text:span text:style-name="Source_20_Text">THROW</text:span>
   often used in control-words
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">?EXEC ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  check that the current <text:span text:style-name="Source_20_Text">STATE</text:span> is executing
  otherwise <text:span text:style-name="Source_20_Text">THROW</text:span>
   often used in control-words
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">?FILE ( file-id -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  check the file-id otherwise (fixme)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">?LOADING ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  check that the currently interpreted text is 
  from a file/block, otherwise <text:span text:style-name="Source_20_Text">THROW</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">?PAIRS ( a b -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  if compiling, check that the two magics on
  the <text:span text:style-name="Source_20_Text">CS-STACK</text:span> are identical, otherwise throw
   used in control-words
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">?STACK ( -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  check all stacks for underflow and overflow conditions,
  and if such an error condition is detected <text:span text:style-name="Source_20_Text">THROW</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DEFINED ( "name" -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Search the dictionary for _name_. If _name_ is found,
   return TRUE; otherwise return FALSE. Immediate for use in
   definitions.
</text:p><text:p text:style-name="Text_20_body">  This word will actually return what <text:span text:style-name="Source_20_Text">FIND</text:span> returns (the NFA). 
  does check for the word using find (so it does not throw like <text:span text:style-name="Source_20_Text">'</text:span> )
  and puts it on stack. As it is immediate it does work in compile-mode
  too, so it places its argument in the cs-stack then. This is most
  useful with a directly following <text:span text:style-name="Source_20_Text">[IF]</text:span> clause, so that sth. like
  an <text:span text:style-name="Source_20_Text">[IFDEF] word</text:span> can be simulated through <text:span text:style-name="Source_20_Text">[DEFINED] word [IF]</text:span>
</text:p><screen> 
  : DEFINED BL WORD COUNT (FIND-NFA) ; 
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[DEFINED] ( "name" -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Search the dictionary for _name_. If _name_ is found,
   return TRUE; otherwise return FALSE. Immediate for use in
   definitions.
</text:p><text:p text:style-name="Text_20_body">  [DEFINED] word       ( -- nfa|0 ) immediate
  does check for the word using find (so it does not throw like <text:span text:style-name="Source_20_Text">'</text:span> )
  and puts it on stack. As it is immediate it does work in compile-mode
  too, so it places its argument in the cs-stack then. This is most
  useful with a directly following <text:span text:style-name="Source_20_Text">[IF]</text:span> clause, so that sth. like
  an <text:span text:style-name="Source_20_Text">[IFDEF] word</text:span> can be simulated through <text:span text:style-name="Source_20_Text">[DEFINED] word [IF]</text:span>
</text:p><screen> 
  : [DEFINED] BL WORD FIND NIP ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[UNDEFINED] ( "name" -- flag )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">   Search the dictionary for _name_. If _name_ is found,
   return FALSE; otherwise return TRUE. Immediate for use in
   definitions.
</text:p><text:p text:style-name="Text_20_body">
   see <text:span text:style-name="Source_20_Text">[DEFINED]</text:span>
</text:p>
<text:p text:style-name="Text_20_body">(FORGET) - no description, sorry</text:p><text:p text:style-name="Text_20_body">(DICTLIMIT) - no description, sorry</text:p><text:p text:style-name="Text_20_body">(DICTFENCE) - no description, sorry</text:p>








 <text:p text:style-name="Preformatted_20_Text">pfe-useful-ext</text:p>
 <text:h text:style-name="Heading_20_3">Useful kernel extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">_like:COMPILE,  <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">($ ( [word] -- cs-token ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">) ( cs-token -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PFE-PRINTF ( args ... format$ -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">PFE-SPRINTF ( args ... format$ dest$ -- len-dest ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LOADF ( "filename" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DOER ( word -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">MAKE ( [word] -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">;AND ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[NOT] ( a -- a' ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">+FIELD: ( offset "name" -- offset ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">/FIELD ( offset size "name" -- offset+size ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">REPLACE-IN ( to-xt from-xt n "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">(LOADF-LOCATE) ( xt -- nfa ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">LOADF-LOCATE ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">X" ( "hex-q" -- bstring ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">EVALUATE-WITH ( i*x addr len xt[i*x--j*x] -- j*x ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[POSSIBLY] ( [name] -- ?? ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[VOCABULARY] ( "name" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">[DEF] ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CONTEXT? ( -- number ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">CASE-SENSITIVE-VOC ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DEFS-ARE-CASE-SENSITIVE ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">DEFS-ARE-SEARCHED-ALSO ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body">  !USE ( -- true )
 * a synonym for => TRUE
 !USE SMART-WORDS!
 </text:p>
<text:p text:style-name="Text_20_body">_like:COMPILE, - no description, sorry</text:p><text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">($ ( [word] -- cs-token )</text:span> compile-only =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">   takes the execution token of the following word and
   saves it on the compile-stack. The correspondig closing
   <text:span text:style-name="Source_20_Text">)</text:span> will then feed it into <text:span text:style-name="Source_20_Text">&gt;COMPILE</text:span> - so this pair
   of word provides you with a prefix-operation syntax
   that you may have been seen in lisp-like languages.
</text:p><screen>    ($ IF ($ 0= A1 @ )) ($ THEN ." hello " )
</screen><text:p text:style-name="Text_20_body">  Note that an opening simple <text:span text:style-name="Source_20_Text">(</text:span> paren is a comment.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">) ( cs-token -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  takes the execution-token from <text:span text:style-name="Source_20_Text">(\$</text:span> and compiles
  it using <text:span text:style-name="Source_20_Text">&gt;COMPILE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PFE-PRINTF ( args ... format$ -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  uses <text:span text:style-name="Source_20_Text">SPRINTF</text:span> to print to a temporary 256-char buffer
  and prints it to stdout afterwards. See the example
  at <text:span text:style-name="Source_20_Text">SPRINTF</text:span> of what it does internally.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">PFE-SPRINTF ( args ... format$ dest$ -- len-dest )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  just like the standard sprintf() function in C, but
  the format is a counted string and accepts %#s to
  be the format-symbol for a forth-counted string.
  The result is a zeroterminated string at dest$ having
  a length being returned. To create a forth-counted
  string, you could use:
</text:p><screen>    variable A 256 ALLOT
    15 " example" " the %#s value is %i" A 1+ SPRINTF A C!
    A COUNT TYPE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LOADF ( "filename" -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">   loads a file just like <text:span text:style-name="Source_20_Text">INCLUDE</text:span> but does also put
   a <text:span text:style-name="Source_20_Text">MARKER</text:span> in the <text:span text:style-name="Source_20_Text">LOADED</text:span> dictionary that you can
   do a <text:span text:style-name="Source_20_Text">FORGET</text:span> on to kill everything being loaded
   from that file.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DOER ( word -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  In PFE it is a synonym to <text:span text:style-name="Source_20_Text">DEFER</text:span> which a semistandard word.
  Unlike <text:span text:style-name="Source_20_Text">DEFER</text:span>, the <text:span text:style-name="Source_20_Text">DOER</text:span>-vector was set with an a small
  piece of code between <text:span text:style-name="Source_20_Text">MAKE</text:span> and <text:span text:style-name="Source_20_Text">;AND</text:span>. The "DOER"-word
  should be replaced with <text:span text:style-name="Source_20_Text">DEFER</text:span> <text:span text:style-name="Source_20_Text">IS</text:span>, which is easy since
  the <text:span text:style-name="Source_20_Text">DEFER</text:span> and <text:span text:style-name="Source_20_Text">DOER</text:span> point to the same internal runtime.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">MAKE ( [word] -- )</text:span> ... ;AND =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  make a seperated piece of code between <text:span text:style-name="Source_20_Text">MAKE</text:span> and <text:span text:style-name="Source_20_Text">;AND</text:span> 
  and on execution of the <text:span text:style-name="Source_20_Text">MAKE</text:span> the named word is twisted
  to point to this piece of code. The word is usually 
  a <text:span text:style-name="Source_20_Text">DOER</text:span> but the current implementation works 
  on <text:span text:style-name="Source_20_Text">DEFER</text:span> just as well, just as it does on other words who
  expect to find an execution-token in its PFA. You could even
  create a colon-word that starts with <text:span text:style-name="Source_20_Text">NOOP</text:span> and can then make
  that colon-word be prefixed with the execution of the code piece. 
  This <text:span text:style-name="Source_20_Text">MAKE</text:span>
  does even work on <text:span text:style-name="Source_20_Text">LOCALS|</text:span> and <text:span text:style-name="Source_20_Text">VAR</text:span> but it is uncertain
  what that is good for.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">;AND ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  For the code piece between <text:span text:style-name="Source_20_Text">MAKE</text:span> and <text:span text:style-name="Source_20_Text">;AND</text:span> , this word
  will do just an <text:span text:style-name="Source_20_Text">EXIT</text:span> . For the code outside of
  the <text:span text:style-name="Source_20_Text">MAKE</text:span> construct a branch-around must be resolved then.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[NOT] ( a -- a' )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  executes <text:span text:style-name="Source_20_Text">0=</text:span> but this word is immediate so that it does 
  affect the cs-stack while compiling rather than compiling
  anything. This is useful just before words like <text:span text:style-name="Source_20_Text">[IF]</text:span> to
  provide semantics of an <text:span text:style-name="Source_20_Text">[IFNOT]</text:span>. It is most useful in
  conjunction with "=&gt; [DEFINED] word" as it the sequence
  "<text:span text:style-name="Source_20_Text">[DEFINED] word [NOT] [IF]</text:span>" can simulate "<text:span text:style-name="Source_20_Text">[IFNOTDEF] word</text:span>"
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">+FIELD: ( offset "name" -- offset )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  created a new name with an <text:span text:style-name="Source_20_Text">OFFSET-RT</text:span> runtime using the given offset. 
  Leave the offset-value untouched, so it can be modified with words
  like <text:span text:style-name="Source_20_Text">CHAR+</text:span> and <text:span text:style-name="Source_20_Text">CELL+</text:span> and <text:span text:style-name="Source_20_Text">SFLOAT+</text:span> ; This word is the simplest way 
  to declared structure access words in forth - the two <text:span text:style-name="Source_20_Text">STRUCT</text:span> modules 
  contain a more elaborate series of words. Use this one like:
</text:p><screen>  0                        ( a fresh definition is started )
  +FIELD: zapp.a+ CHAR+     ( zero offset from the base of the struct )
  +FIELD: zapp.b+ CELL+     ( no alignment, starts off at 1 from base )
  +FIELD: zapp+   DROP      ( store size of complete zap structure )
 
  0 zapp+                  ( extend the zap structure )
  +FIELD: zappx.c+ CELL+    ( a new field )
  +FIELD: zappx+   DROP     ( and save it again )
 
  CREATE zapp1  0 zapp+ ALLOT ( a way to allocate a strucutre )
 
  zapp2 zapp.b+ @         ( read a value from the field )
  16 zapp2 zapp.b+ !      ( store a value in there )
 
</screen><text:p text:style-name="Text_20_body">  this form is not the traditional form used in forth, it is however
  quite simple. Use the simplefield declaration with <text:span text:style-name="Source_20_Text">/FIELD</text:span> to
  be compatible with traditional styles that build on top of sizeof
  constants in forth (which are not part of the ANS Forth standard).
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">/FIELD ( offset size "name" -- offset+size )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  created a new <text:span text:style-name="Source_20_Text">+FIELD</text:span> name with an <text:span text:style-name="Source_20_Text">OFFSET-RT</text:span>
  of offset. Then add the size value to the offset so that
  the next <text:span text:style-name="Source_20_Text">/FIELD</text:span> declaration will start at the end of the
  field currently declared. This word is the simplest way to
  declared structure access words in forth - the two <text:span text:style-name="Source_20_Text">STRUCT</text:span> modules 
  contain a more elaborate series of words. This one is used like:
</text:p><screen>  0                        ( a fresh definition is started )
  /CHAR /FIELD -&amp;gt;zapp.a    ( zero offset from the base of the struct )
  /CELL /FIELD -&amp;gt;zapp.b    ( no alignment, starts off at 1 from base )
  CONSTANT /zapp           ( store size of complete zap structure )
 
  /zapp                    ( extend the zap structure )
  /CELL /FIELD -&amp;gt;zappx.c   ( a new field )
  CONSTANT /zappx          ( and save it again )
 
  CREATE zapp1 /zapp ALLOT ( a way to allocate a strucutre )
  /zapp BUFFER: zapp2      ( another way to do it, semi-standard )
 
  zapp2 -&amp;gt;zapp.b @         ( read a value from the field )
  16 zapp2 -&amp;gt;zapp.b !      ( store a value in there )
 
</screen><text:p text:style-name="Text_20_body">  compare also with <text:span text:style-name="Source_20_Text">/CHAR</text:span> <text:span text:style-name="Source_20_Text">/WCHAR</text:span> <text:span text:style-name="Source_20_Text">/CELL</text:span> <text:span text:style-name="Source_20_Text">/DCELL</text:span>
  and use <text:span text:style-name="Source_20_Text">+FIELD</text:span> as the lowlevel word, can simulate as
</text:p><screen>  : /FIELD SWAP +FIELD + ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">REPLACE-IN ( to-xt from-xt n "name" -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  will handle the body of the named word as a sequence of cells (or tokens) 
  and replaces the n'th occurences of from-xt into to-xt. A negative value
  will change all occurences. A zero value will not change any.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">(LOADF-LOCATE) ( xt -- nfa )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  the implementation of <text:span text:style-name="Source_20_Text">LOADF-LOCATE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">LOADF-LOCATE ( "name" -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  look for the filename created by <text:span text:style-name="Source_20_Text">LOADF</text:span> that had been
  defining the given name. <text:span text:style-name="Source_20_Text">LOADF</text:span> has created a marker
  that is <text:span text:style-name="Emphasis">above</text:span> the <text:span text:style-name="Source_20_Text">INCLUDED</text:span> file and that
  marker has a body-value just <text:span text:style-name="Emphasis">below</text:span> the 
  <text:span text:style-name="Source_20_Text">INCLUDED</text:span> file. Hence the symbol was defined during
  <text:span text:style-name="Source_20_Text">LOADF</text:span> execution of that file.
</text:p><screen>  : LOADF-LOCATE ?EXEC POSTPONE ' (LOADF-LOCATE) .NAME ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">X" ( "hex-q" -- bstring )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  places a counted string on stack
  containing bytes specified by hex-string
  - the hex string may contain spaces which will delimit the bytes
</text:p><screen>  example: 
     X" 41 42 4344" COUNT TYPE ( shows ABCD )
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">EVALUATE-WITH ( i*x addr len xt[i*x--j*x] -- j*x )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  added to be visible on the forth command line on request by MLG,
  he has explained the usage before a lot, you can get an idea from:
</text:p><screen>     : EVALUATE ['] INTERPRET EVALUATE-WITH ;
</screen><text:p text:style-name="Text_20_body">  The word is used internally in PFE for the loadlist evaluation of
  the binary modules: where previously each loadercode had its own
  CREATE-execution we do now call the original forthish CREATE-word
  like, so bootstrapping a <text:span text:style-name="Source_20_Text">VARIABLE</text:span> will now call VARIABLE itself
  and of course we need to set up the TIB-area to point to the name
  of the variable that shall be created in the forth dictionary:
</text:p><screen>  : LOAD-WORD ( arg-value str-ptr str-len loader-code -- )
       CASE
         #LOAD-VARIABLE OF ['] VARIABLE EVALUATE-WITH ENDOF
         ....
       ENDCASE
       CLEARSTACK
  ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[POSSIBLY] ( [name] -- ?? )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  check if the name exists, and execute it immediatly
  if found. Derived from POSSIBLY as seen in other forth systems.
</text:p><screen>  : [POSSIBLY] (') ?DUP IF EXECUTE THEN ; IMMEDIATE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[VOCABULARY] ( "name" -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  create an immediate vocabulary. Provides for basic 
  modularization.
</text:p><screen>  : [VOCABULARY] VOCABULARY IMMEDIATE ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">[DEF] ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  immediatly set topmost <text:span text:style-name="Source_20_Text">CONTEXT</text:span> voc to <text:span text:style-name="Source_20_Text">CURRENT</text:span> compilation voc.
</text:p><screen>  : DEF' CURRENT @ CONTEXT ! ; IMMEDIATE
</screen><text:p text:style-name="Text_20_body">  note that in PFE most basic vocabularies are immediate, so that
  you can use a sequence of
</text:p><screen>  FORTH ALSO  DEFINITIONS
  [DEF] : GET-FIND-3  [ANS] ['] FIND  [FIG] ['] FIND  [DEF] ['] FIND ;
</screen><text:p text:style-name="Text_20_body">  where the first wordlist to be searched via the search order are
  [ANS] and [FIG] and FORTH (in this order) and which may or may not 
  yield different flavours of the FIND routine (i.e. different XTs)
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CONTEXT? ( -- number )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  GET-CONTEXT and count how many times it is in the order but
  the CONTEXT variable itself. The returned number is therefore
  minus one the occurences in the complete search-order.
  usage:
</text:p><screen>    ALSO EXTENSIONS CONTEXT? [IF] PREVIOUS [THEN]
    ALSO DEF' DEFAULT-ORDER
  : CONTEXT? 
    0 LVALUE _count
    GET-ORDER 1- SWAP  LVALUE _context
    0 ?DO _context = IF 1 +TO _count THEN LOOP
    _count
  ;
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">CASE-SENSITIVE-VOC ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  accesses <text:span text:style-name="Source_20_Text">CONTEXT</text:span> which is generally the last named <text:span text:style-name="Source_20_Text">VOCABULARY</text:span> .
  sets a flag in the vocabulary-definition so that words are matched
  case-sensitive. 
</text:p><screen>  example: 
     VOCABULARY MY-VOC  MY-VOC CASE-SENSITIVE-VOC
</screen><text:p text:style-name="Text_20_body">  OBSOLETE! use <text:span text:style-name="Source_20_Text">DEFS-ARE-CASE-SENSITIVE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DEFS-ARE-CASE-SENSITIVE ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  accesses <text:span text:style-name="Source_20_Text">CURRENT</text:span> which is generally the last wordlist that the
  <text:span text:style-name="Source_20_Text">DEFINITIONS</text:span> shall go in. sets there a flag in the vocabulary-definition
  so that words are matched case-sensitive. 
</text:p><screen>  example: 
     VOCABULARY MY-VOC  MY-VOC DEFINITIONS DEFS-ARE-CASE-SENSITIVE
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">DEFS-ARE-SEARCHED-ALSO ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  binds <text:span text:style-name="Source_20_Text">CONTEXT</text:span> with <text:span text:style-name="Source_20_Text">CURRENT</text:span>. If the <text:span text:style-name="Source_20_Text">CURRENT</text:span> <text:span text:style-name="Source_20_Text">VOCABULARY</text:span> is in
  the search-order (later), then the <text:span text:style-name="Source_20_Text">CONTEXT</text:span> vocabulary will 
  be searched also. If the result of this word could lead into 
  a recursive lookup with <text:span text:style-name="Source_20_Text">FIND</text:span> it will throw <text:span text:style-name="Source_20_Text">CURRENT_DELETED</text:span>
  and leave the <text:span text:style-name="Source_20_Text">CURRENT</text:span> <text:span text:style-name="Source_20_Text">VOCABULARY</text:span> unaltered.
</text:p><screen>  example:
</screen><text:p text:style-name="Text_20_body">  MY-VOC DEFINITIONS  MY-VOC-PRIVATE DEFS-ARE-SEARCHED-ALSO
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-with-spy-ext</text:p>
 <text:h text:style-name="Heading_20_3">WITH-SPY kernel extension </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SPY-EXIT ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">;SPY ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SPY_ON ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">SPY_OFF ( -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SPY-EXIT ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  will unnest the current colon-word so it will actually
  return the word calling it. This can be found in the
  middle of a colon-sequence between <text:span text:style-name="Source_20_Text">:</text:span> and <text:span text:style-name="Source_20_Text">;</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">;SPY ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  compiles <text:span text:style-name="Source_20_Text">((;))</text:span> which does <text:span text:style-name="Source_20_Text">EXIT</text:span> the current
  colon-definition. It does then end compile-mode
  and returns to execute-mode. See <text:span text:style-name="Source_20_Text">:</text:span> and <text:span text:style-name="Source_20_Text">:NONAME</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SPY_ON ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  change the runtime-code of <text:span text:style-name="Source_20_Text">(NEST)</text:span> 
  to call a special word that prints info
  to the screen whenever a colon word is 
  entered. It will print the name and
  the current stack, and results in a kind
  of execution trace over <text:span text:style-name="Source_20_Text">SPY' :</text:span>-colon nested
  words.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">SPY_OFF ( -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  disable <text:span text:style-name="Source_20_Text">SPY_ON</text:span> nest-trace.
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-your-ext</text:p>
 <text:h text:style-name="Heading_20_3">YOUR kernel extensions </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">@&gt; ( [name] -- value ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">'&gt; ( [name] -- xt ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">INTO ( [name] -- pfa ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">.H2 ( value -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">HERE-WORD ( char "name&amp;lt;char&amp;gt;" -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">"EXTENSIONS"</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">@&gt; ( [name] -- value )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  does fetch the value from the PFA of the named item, which
  may be about everything, including a <text:span text:style-name="Source_20_Text">VARIABLE</text:span> , <text:span text:style-name="Source_20_Text">VALUE</text:span>
  <text:span text:style-name="Source_20_Text">LVALUE</text:span> , <text:span text:style-name="Source_20_Text">LOCALS|</text:span> , <text:span text:style-name="Source_20_Text">VAR</text:span> , <text:span text:style-name="Source_20_Text">DEFER</text:span> , <text:span text:style-name="Source_20_Text">DOER</text:span> , <text:span text:style-name="Source_20_Text">DOES&gt;</text:span>
  and more.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">'&gt; ( [name] -- xt )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  get the execution-token, ie the CFA, of the word following.
  This word is fully state-smart while the ANSI standard words
  namely <text:span text:style-name="Source_20_Text">'</text:span> and <text:span text:style-name="Source_20_Text">[']</text:span> are not.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">INTO ( [name] -- pfa )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  will return the parameter-field address of the following word.
  Unlike others, this word will also return the address of
  <text:span text:style-name="Source_20_Text">LOCALS|</text:span> and local <text:span text:style-name="Source_20_Text">LVALUE</text:span> - so in fact a <text:span text:style-name="Source_20_Text">TO A</text:span> and 
  <text:span text:style-name="Source_20_Text">INTO A !</text:span> are the same. This word is most useful when calling
  C-exported function with a temporary local-VAR as a return-place
  argument - so the address of a local has to be given as an arg.
  Beware that you should not try to save the address anywhere else,
  since a local's address does always depend of the RP-depth -
  EXIT from a colon-word and the value may soon get overwritten.
  (see also <text:span text:style-name="Source_20_Text">TO</text:span> )
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">.H2 ( value -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  print hexadecimal, but with per-byte 0-padding
</text:p><screen>    0x0     -&amp;gt; 00
    0xf     -&amp;gt; 0f
    0x12    -&amp;gt; 12
    0x123   -&amp;gt; 0123
    0x1234  -&amp;gt; 1234
    0x12345 -&amp;gt; 012345
  
</screen>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">HERE-WORD ( char "name&amp;lt;char&amp;gt;" -- )</text:span> =&gt; "EXTENSIONS"</text:p>
<text:p text:style-name="Text_20_body">  a FIG-compatible WORD. Where ANSI says "skip leading delimiters"
  this one acts as "skip leading whitespace". And it will not return
  anything and have the string parsed to <text:span text:style-name="Source_20_Text">HERE</text:span>
</text:p>









 <text:p text:style-name="Preformatted_20_Text">pfe-zchar-ext</text:p>
 <text:h text:style-name="Heading_20_3">ZCHAR-EXT - zero-terminated C-like charstrings </text:h>




<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z" ( [chars&amp;lt;"&amp;gt;] -- z* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZCOUNT ( z* -- z* len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZSTRLEN ( z* -- len ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZMOVE ( zsrc* zdest* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">ZPLACE ( addr* len zaddr* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">+ZPLACE ( caddr* u zdest* -- ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">S\" ( [backslashed-strings_&amp;lt;"&amp;gt;] -- str cnt ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">C\" ( [backslashed-strings_&amp;lt;"&amp;gt;] -- bstr* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>
<text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="Source_20_Text">Z\" ( [backslashed-strings_&amp;lt;"&amp;gt;] -- zstr* ) <text:s/>=&gt;<text:s/> </text:span><text:span text:style-name="Source_20_Text">[FORTH]</text:span></text:p>





<text:h text:style-name="Heading_20_2">Description</text:h> <text:p text:style-name="Text_20_body"> </text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z" ( [chars&amp;lt;"&amp;gt;] -- z* )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  scan the input to the next doublequote and create a buffer
  that holds the chars - return the address of that zero-terminated
  string-buffer, either <text:span text:style-name="Source_20_Text">POCKET-PAD</text:span> or <text:span text:style-name="Source_20_Text">ALLOT</text:span>ed into the dictionary.
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZCOUNT ( z* -- z* len )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  push length of z-string, additionally to the string addr itself.
</text:p><screen>  : ZSTRLEN ZCOUNT NIP ;
</screen><text:p text:style-name="Text_20_body">  (see libc strlen(3)) / compare with <text:span text:style-name="Source_20_Text">COUNT</text:span> / <text:span text:style-name="Source_20_Text">ZSTRLEN</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZSTRLEN ( z* -- len )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  push length of z-string.
</text:p><screen>  : ZSTRLEN ZCOUNT NIP ;
</screen><text:p text:style-name="Text_20_body">  (see libc strlen(3)) / compare with <text:span text:style-name="Source_20_Text">ZMOVE</text:span> / <text:span text:style-name="Source_20_Text">CMOVE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZMOVE ( zsrc* zdest* -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  copy a zero terminated string
  (see libc strcpy(3)) / compare with <text:span text:style-name="Source_20_Text">ZSTRLEN</text:span> / <text:span text:style-name="Source_20_Text">COUNT</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">ZPLACE ( addr* len zaddr* -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  copy string and place as 0 terminated
  (see libc strncpy(3)) / see also <text:span text:style-name="Source_20_Text">+ZPLACE</text:span> / <text:span text:style-name="Source_20_Text">Z+PLACE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">+ZPLACE ( caddr* u zdest* -- )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  Add the string defined by CADDR LEN to the zero terminated string 
  at ZDEST - (for older scripts the <text:span text:style-name="Source_20_Text">SYNONYM</text:span> named <text:span text:style-name="Source_20_Text">APPENDZ</text:span> exists)
  (see libc strncat(3)) / compare with <text:span text:style-name="Source_20_Text">ZPLACE</text:span> / <text:span text:style-name="Source_20_Text">+PLACE</text:span>
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">S\" ( [backslashed-strings_&amp;lt;"&amp;gt;] -- str cnt )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  scan the following text to create a literal just
  like <text:span text:style-name="Source_20_Text">S"</text:span> does, but backslashes can be used to
  escape special chars. The rules for the backslashes
  follow C literals, implemented techniques are
  \n \r \b \a \f \v \e \777
  and all non-alnum chars represent themselves, esp.
  \" \' \ \? \! \% \( \) \[ \] \{ \} etcetera.
  most importantly the doublequote itself can be escaped.
  but be also informed that the usage of \' and \" is not
  portable as some systems preferred to map [\'] into ["].
  Here I use the experimental addition to map [\q] to ["] and [\i] to [']
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">C\" ( [backslashed-strings_&amp;lt;"&amp;gt;] -- bstr* )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  scan the following text to create a literal just
  like <text:span text:style-name="Source_20_Text">C"</text:span> does, but backslashes can be used to
  escape special chars. The rules for the backslashes
  follow C literals, implemented techniques are
  \n \r \b \a \f \v \e \777
  and all non-alnum chars represent themselves, esp.
  \" \' \ \? \! \% \( \) \[ \] \{ \} etcetera.
  most importantly the doublequote itself can be escaped.
  but be also informed that the usage of \' and \" is not
  portable as some systems preferred to map [\'] into ["].
  Here I use the experimental addition to map [\q] to ["] and [\i] to [']
</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="Emphasis">Z\" ( [backslashed-strings_&amp;lt;"&amp;gt;] -- zstr* )</text:span> =&gt; [FORTH]</text:p>
<text:p text:style-name="Text_20_body">  scan the following text to create a literal just
  like <text:span text:style-name="Source_20_Text">Z"</text:span> does, but backslashes can be used to
  escape special chars. The rules for the backslashes
  follow C literals, implemented techniques are
  \n \r \b \a \f \v \e \777
  and all non-alnum chars represent themselves, esp.
  \" \' \ \? \! \% \( \) \[ \] \{ \} etcetera.
  most importantly the doublequote itself can be escaped
  but be also informed that the usage of \' and \" is not
  portable as some systems preferred to map [\'] into ["].
  Here I use the experimental addition to map [\q] to ["] and [\i] to [']
</text:p>



</reference>

</office:body> </office:document-content>
