
<hr><h3><A name="16">.task</A> ( --  )</h3>
<br>
Gives information about a task identified by the tasks code-field-address.  

<hr><h3><A name="46">(restart</A> ( -- )</h3>
 Extra: bug
<br>
Restart Risc-OS Forthmacs after a hardware crash, the registers must have been 
saved before (this is done by the error-handler),  <code><A href="_smal_AW#46"> (restart </A></code> 
takes care about the cpu status.  
<p>
This can be used for developing debuggers, virtual memory managers etc.  
<p>
Implementation Note: For security reasons,  <code><A href="_smal_AW#46"> (restart </A></code> 
can't set supervisor mode.  This restricts debuggers using this word to user 
mode debugging.  You could easily change this by adding the 
"set-supervisor-mode" swi in the  <code><A href="_smal_AW#46"> (restart </A></code> 
code.  

<hr><h3><A name="76">"shell</A> ( str -- flag  )</h3>
<br>
str is the address of a counted string.  This is converted to a 0-terminated 
c-type string, the interrupt XOS_CLI is called.  
<p>
If another program or obey/command file is called by this command, 
Risc-OS Forthmacs will be swapped out before and swapped in afterwards.  
<p>
Flag will be  <code><A href="_smal_AE#304"> true </A></code> if any error 
occurred, the user variable  <code><A href="_smal_AH#1e7"> errno </A></code> 
will is set according to the error code.  
<p>
Implementation note:  <code><A href="_smal_AW#76"> "shell </A></code> function 
will behave different in future versions.  WIMPversions will just start another 
task.  

<hr><h3><A name="a6">(forget)</A> ( acf -- )</h3>
 Extra: F83
<br>
acf is the compilation address of a word to delete from the dictionary.  That 
word is deleted from the dictionary , as well as all words added to the 
dictionary after that word, regardless of their vocabulary.  
<p>
Implementation Note: The variable FENCE contains an address which is used to 
prevent accidentally  <code><A href="_smal_BQ#208"> forget </A></code> ting some 
critical part of the system.  If the value stored in FENCE is greater than acf,  <code><A href="_smal_AW#a6"> (forget) </A></code> 
will abort with the message "below fence".  

<hr><h3><A name="d6">.(</A> ( -- )</h3> <kbd>ccc)</kbd> 
 Extra: I,M,83Std
<br>
Used in the form: 
<br><code>    .( ccc)</code><br>
The characters ccc up to but not including the delimiting ) (closing 
parenthesis) are displayed immediately.  The space following  <code><A href="_smal_AW#d6"> .( </A></code> 
is not part of ccc.  

<hr><h3><A name="106">2drop</A> ( n1 n2  -- )</h3>
 Extra: 32,ANS,83Std
<br>
n1 and n2 are removed from the stack.  

<hr><h3><A name="136">?exec</A> ( -- )</h3>
<br>
Aborts if executed while not in execution state, printing the message "Execution 
Only".  Only useful inside of immediate words.  

<hr><h3><A name="166">blword</A> ( -- pstr )</h3> <kbd>ccc</kbd> 
<br>
In the current input file, gets the next sequence of non-white characters and 
returns that word as a packed string at pstr.  This is the same as  <code><A href="_smal_AS#162"> bl </A></code>  <code><A href="_smal_AG#336"> word </A>.</code> 

<hr><h3><A name="196">convert</A> ( ud1 addr1  --  ud2 addr2 )</h3>
 Extra: 83Std
<br>
ud2 is the double result of converting the characters within the text beginning 
at addr1+1 into digits, using the value of  <code><A href="_smal_AJ#159"> base </A>,</code> 
and accumulating each into ud1 after multiplying ud1 by the value of  <code><A href="_smal_AJ#159"> base </A>.</code> 
Conversion continues until an unconvertible character is encountered, addr2 is 
the location of the first unconvertible character.  

<hr><h3><A name="1c6">do-entercode</A> ( --  )</h3>
 Extra: Deferred
<br>
Prepares the runtime code part in a 
<br><code>         create xyz xyz xyz</code><br>
<br><code>         ;code  ... ;c</code><br>
definition.  In some implementations as Risc-OS Forthmacs there must be some 
preparation before the user defined runtime assembler code.  This implementation 
specific preparation is done automatically by  <code><A href="_smal_AW#1c6"> do-entercode </A>.</code> 

<hr><h3><A name="1f6">fflush</A> ( fd -- )</h3>
<br>
fd is the file descriptor of an open file.  Any characters that have been 
written to that file but have not yet been written to the disk (or whatever 
output device) are written to the disk.  

<hr><h3><A name="226">ifend</A> ( -- )</h3>
<br>
Terminates an 
<br><code>    iftrue ... otherwise ... ifend</code><br>
conditional sequence.  

See:  <code><A href="_smal_BA#228"> iftrue </A></code>  <code><A href="_smal_BG#28e"> otherwise </A></code>  <code><A href="_smal_AV#225"> ifdef </A></code>  <code><A href="_smal_AX#227"> ifndef </A></code> 

<hr><h3><A name="256">load</A> ( u -- )</h3>
 Extra: M,83Std
<br>
The contents of  <code><A href="_smal_AB#121"> &gt;in </A></code> and  <code><A href="_smal_AU#164"> blk </A>,</code> 
which locate the current input stream, are saved.  The input stream is the 
redirected to the beginning of screen u by setting  <code><A href="_smal_AB#121"> &gt;in </A></code> 
to zero and  <code><A href="_smal_AU#164"> blk </A></code> to u.  The screen is 
then interpreted.  If interpretation is not terminated explicitly it will be 
terminated when the input stream is exhausted and then the contents of  <code><A href="_smal_AB#121"> &gt;in </A></code> 
and  <code><A href="_smal_AU#164"> blk </A></code> will be restored.  An error 
condition exists if u is zero.  

See:  <code><A href="_smal_AB#121"> &gt;in </A></code>  <code><A href="_smal_AU#164"> blk </A></code> 
<p>
This word is  <code><A href="_smal_AM#27c"> not </A></code> implemented in the 
default system.  The file extend.block contains an implementation which may 
loaded if necessary.  

<hr><h3><A name="286">off</A> ( addr  -- )</h3>
 Extra: F83
<br>
Stores false (zero) at address `addr'.  

<hr><h3><A name="2b6">roll</A> ( +n  -- )</h3>
<br>
The +nth stack value, not counting +n itself is first removed and then 
transferred to the top of the stack, moving the remaining values into the 
vacated position.  +n must be between 0 and the number of elements on the 
stack-1, inclusive.  
<br><code>                 2 roll is equivalent to rot</code><br>
<br><code>                 1 roll is equivalent to swap</code><br>
<br><code>                 0 roll is a null operation</code><br>
Note: For readability's sake, the use of  <code><A href="_smal_AW#2b6"> roll </A></code> 
should be minimized.  

<hr><h3><A name="2e6">swap</A> ( n1 n2  --  n2 n1 )</h3>
 Extra: 83Std
<br>
Exchanges the top two stack entries.  

<hr><h3><A name="316">umin</A> ( u1 u2 -- u3 )</h3>
<br>
u3 is the minimum of the unsigned numbers u1 and u2.  

<hr><h3><A name="346">\dtc</A> ( -- )</h3>
<br>
Interprets the rest of the line.  
<p>
This is used to assist me in porting Forth code between a number of different 
Forth systems that I have developed.  A line beginning with  <code><A href="_smal_AW#346"> \dtc </A></code> 
is interpreted only if that system uses Direct Threaded Code.  Since that is 
true for this system, such lines are indeed interpreted.  

See:  <code><A href="_smal_AX#347"> \itc </A></code> 
