
<hr><h3><A name="1a">fsp</A> ( -- n )</h3>
<br>
portable name for the floating stack pointer 

<hr><h3><A name="4a">ftrace</A> ( -- )</h3>
<br>
Display the return stack after a crash, if the return stack pointer was outside 
the Risc-OS Forthmacs stack, there will only rudimentary information be given.  
Tries to give not the cfa's but the words real names.  

<hr><h3><A name="7a">#align</A> ( -- n )</h3>
<br>
n is the alignment granularity for the cpu.  The 68000 requires alignment on 
even boundaries, so  <code><A href="_smal_BC#7a"> #align </A></code> is 2 on 
68000 machines.  The ARM and SPARC require alignment on 4-byte boundaries, so  <code><A href="_smal_BC#7a"> #align </A></code> 
is 4 on RiscOS and on SPARC machines.  

<hr><h3><A name="aa">(is)</A> ( action-acf -- )</h3>
<br>
The run-time word compiled by  <code><A href="_smal_BP#237"> is </A>.</code> 
action-acf is the compilation address of a word which is installed into the 
deferred word whose compilation address is an in-line literal.   <code><A href="_smal_BC#aa"> (is) </A></code> 
is compiled by  <code><A href="_smal_BP#237"> is </A>.</code>  <code><A href="_smal_BT#2cb"> see </A>:</code>  <code><A href="_smal_BP#237"> is </A></code> 

<hr><h3><A name="da">.d</A> ( n -- )</h3>
<br>
n is displayed in decimal but the value of  <code><A href="_smal_AJ#159"> base </A></code> 
is not permanently affected.  

<hr><h3><A name="10a">2rot</A> ( n1 n2  n3 n4  n5 n6  --  n3 n4  n5 n6  n1 n2 )</h3>
 Extra: 32,83Std
<br>
The top three pairs of numbers are rotated, bringing the third pair to the top 
of the stack.  

<hr><h3><A name="13a">?missing</A> ( flag -- )</h3>
 Extra: F83
<br>
If flag is true, aborts and prints the name of the last word read from the input 
stream, followed by a question mark (?).  If flag is false, no action is taken.  

<hr><h3><A name="16a">bs</A> ( -- n )</h3>
<br>
n is the ascii code for the backspace character; decimal 8.  

<hr><h3><A name="19a">crash</A> ( -- )</h3>
 Extra: F83
<br>
 <code><A href="_smal_BC#19a"> crash </A></code> is the word which is installed 
in a deferred word when it is first defined, before some other word has been 
explicitly installed with  <code><A href="_smal_BP#237"> is </A></code> or  <code><A href="_smal_BB#a9"> (is </A>.</code> 
If the deferred word which contains  <code><A href="_smal_BC#19a"> crash </A></code> 
is executed,  <code><A href="_smal_BC#19a"> crash </A></code> will abort with 
the message: 
<br><code>                 &lt;name&gt;   &lt;--deferred word not initialised</code><br>
where &lt;name&gt; is the name of the deferred word.  
<p>
Bug: There is an obscure case in which  <code><A href="_smal_BC#19a"> crash </A></code> 
will print the wrong &lt;name&gt; : if the deferred word was executed from the 
command line by an explicit  <code><A href="_smal_AM#1ec"> execute </A></code> ,  <code><A href="_smal_BC#19a"> crash </A></code> 
does not have enough information to find the name of the deferred word; instead  <code><A href="_smal_BC#19a"> crash </A></code> 
prints the name of the last word interpreted from the input stream.  Example of 
bug: 
<br><code>    defer xyz</code><br>
<br><code>    ' xyz execute</code><br>
<br><code>    execute &lt;--deferred word not initialised</code><br>

<hr><h3><A name="1ca">dmin</A> ( d1 d2 --d3  )</h3>
<br>
d3 is the lesser of d1 and d2.  

<hr><h3><A name="1fa">fgettill</A> ( pstr delim fd -- pstr )</h3>
<br>
Accepts the next sequence of non-delimiter characters from the open file whose 
file descriptor is fd, placing them as a packed string into memory starting at 
pstr.  The byte at pstr will contain the character count.  pstr is left on the 
stack unchanged.  
<p>
A non-delimiter character is any character except delim.  Leading delimiter 
characters are  <code><A href="_smal_AM#27c"> not </A></code> skipped.  
<p>
If there were no more characters in the file, the byte at pstr will contain 
zero, representing a string containing no characters.  

<hr><h3><A name="22a">immediate</A> ( -- )</h3>
 Extra: 83Std
<br>
Marks the most recently created dictionary entry as a word which will be 
executed when encountered during compilation rather than compiled.  

<hr><h3><A name="25a">loop</A> ( -- )</h3>
 Extra: compiling
<br>
 ( sys -- )<br>
<br>
Increments the DO-LOOP index by one.  If the new index was incremented across 
the boundary between limit-1 and limit the loop is terminated and loop control 
parameters are discarded.  When the loop is not terminated, execution continues 
to just after the corresponding  <code><A href="_smal_AT#1c3"> do </A>.</code> 
sys is balanced with its corresponding  <code><A href="_smal_BC#25a"> loop </A></code> 
or  <code><A href="_smal_AN#cd"> +loop </A>.</code> 

See:  <code><A href="_smal_AT#1c3"> do </A></code>  <code><A href="_smal_AS#132"> ?do </A></code>  <code><A href="_smal_AN#cd"> +loop </A></code> 

<hr><h3><A name="28a">open-error</A> ( filename --  )</h3>
 Extra: Deferred
<br>
Handle an open-file error condition, by default this prints the filename and 
aborts.  More sophisticated error handling could be done here.  

<hr><h3><A name="2ba">rp0</A> ( -- addr )</h3>
<br>
addr is the address of a  <code><A href="_smal_BK#322"> user </A></code> 
variable which contains the address of the bottom of the return stack.  

<hr><h3><A name="2ea">sys-key</A> ( -- char )</h3>
 Extra: Default
<br>
The Default implementation of the deferred word  <code><A href="_smal_BD#ab"> (key </A>.</code> 
Reads the next ascii character from the keyboard.  All valid ascii characters 
can be received.  Control characters are not processed by the system for any 
editing purpose.  Characters received by  <code><A href="_smal_BC#2ea"> sys-key </A></code> 
will not be displayed.  Using OS_ReadC  <code><A href="_smal_AR#41"> swi </A></code> 
$04 for this.  

See:  <code><A href="_smal_BS#23a"> key </A></code> 

<hr><h3><A name="31a">until</A> ( flag -- )</h3>
 Extra: compiling
<br>
 ( sys -- )<br>
<br>
Used in the form: 
<br><code>    begin  ...  flag until</code><br>
Marks the end of a  <code><A href="_smal_AL#15b"> begin </A></code> -  <code><A href="_smal_BC#31a"> until </A></code> 
loop which will terminate based on flag.  If flag is true, the loop is 
terminated.  If flag is false, execution continues to just after the 
corresponding  <code><A href="_smal_AL#15b"> begin </A>.</code>  <code><A href="_smal_AL#15b"> begin </A></code> 
-  <code><A href="_smal_BC#31a"> until </A></code> structures may be nested.  
sys is balanced with its corresponding  <code><A href="_smal_AL#15b"> begin </A>.</code> 

See:  <code><A href="_smal_AL#15b"> begin </A></code> 

<hr><h3><A name="34a">]code</A> ( -- sys )</h3> <kbd>name</kbd> 
 Extra: M,83Std
<br>
Stops assembling within a colon definition, assembles the appropriate code 
before calling next by setting the ip and calls  <code><A href="_smal_BU#29c"> previous </A>.</code> 
So 
<br><code>         : dup code[ top sp push ]code ;</code><br>
would be correct syntax and coding.  .  

See:  <code><A href="_smal_AI#188"> code[ </A></code> 
