
<hr><h3><A name="19">sp</A> ( -- n )</h3>
<br>
portable name for the stack pointer 

<hr><h3><A name="49">.stack</A> ( --  )</h3>
<br>
Displays the Data Stack saved at the last breakpoint or exception.  If the 
breakpoint occurred as a result of a RiscOS signal, the system may have been 
executing a system call at the time of the signal.  If so, there may be extra 
stuff on the stack such as C procedure activation frames.  

<hr><h3><A name="79">#&gt;</A> ( ud  --  addr u )</h3>
 Extra: ANS,83Std
<br>
Pictured numeric output conversion is ended dropping ud.  addr is the address of 
the resulting output array.  +n is the number of characters in the output array.  
addr and +n together are suitable for  <code><A href="_smal_AI#308"> type </A>.</code> 

See:  <code><A href="_smal_BP#117"> &lt;# </A></code> 

<hr><h3><A name="a9">(is</A> ( action-acf deferred-acf -- )</h3>
<br>
deferred-acf is the compilation address of a deferred word.  action-acf is the 
compilation address of some other word.  The action word is installed in the 
deferred word so that execution of the deferred word will actually cause the 
execution of the action word.  Example: 
<br><code>    ' (warm-code  ' warm-code  (is</code><br>
<p>
This  <code><A href="_smal_BP#237"> is </A></code> can also handle 
user-variables, variables, constants, values and will be able to handle local 
variable if implemented.  

<hr><h3><A name="d9">.current-word</A> ( ip -- )</h3>
<br>
ip is an address within the body of a colon definition.  The name of that colon 
definition is printed.  

<hr><h3><A name="109">2over</A> ( n1 n2  n3 n4  --  n1 n2  n3 n4 n5 n6 )</h3>
 Extra: 32,ANS,83Std
<br>
n5 and n6 are a copy of n1 and n2.  

<hr><h3><A name="139">?line</A> ( n -- )</h3>
<br>
If adding n more characters to the current output line would cause the current 
line length to go past the right margin, a new line is started, spacing over to 
the left margin.  Otherwise does nothing.  

See:  <code><A href="_smal_AV#255"> lmargin </A></code>  <code><A href="_smal_AU#2b4"> rmargin </A></code>  <code><A href="_smal_AQ#130"> ?cr </A></code> 

<hr><h3><A name="169">branch</A> ( -- )</h3>
 Extra: C,83Std
<br>
When used in the form: COMPILE  <code><A href="_smal_BB#169"> branch </A></code> 
an unconditional branch operation is compiled.  A branch address must be 
compiled immediately following this compilation address.  The branch address is 
typically generated by following  <code><A href="_smal_BB#169"> branch </A></code> 
with  <code><A href="_smal_BT#11b"> &lt;resolve </A></code> or  <code><A href="_smal_AD#123"> &gt;mark </A>.</code> 
<p>
Implementation Note: Branch addresses are actually relative cell-wide offsets.  
<p>
Also an  <code><A href="_smal_AD#153"> assembler </A></code> instruction.  

<hr><h3><A name="199">cr</A> ( -- )</h3>
 Extra: M,83Std,Deferred
<br>
A deferred word which is used to terminate the line on the display and go to the 
next line.  The Default implementation is  <code><A href="_smal_BF#19d"> crlf </A></code> 
, which transmits a carriage return and line feed to the display, clears  <code><A href="_smal_BI#80"> #out </A></code> 
, and adds 1 to  <code><A href="_smal_BG#7e"> #line </A>.</code> 

See:  <code><A href="_smal_BF#19d"> crlf </A></code>  <code><A href="_smal_AO#9e"> (cr </A></code>  <code><A href="_smal_BF#ad"> (lf </A></code>  <code><A href="_smal_AI#248"> lf </A></code>  <code><A href="_smal_BI#80"> #out </A></code>  <code><A href="_smal_BG#7e"> #line </A></code> 
<p>
 <code><A href="_smal_BB#199"> cr </A></code> is deferred because different 
output devices have different conventions about how to end a line.  

<hr><h3><A name="1c9">dmax</A> ( d1 d2 --d3  )</h3>
<br>
d3 is the greater of d1 and d2.  

<hr><h3><A name="1f9">fgets</A> ( addr count fd -- nread )</h3>
<br>
Bytes are transferred from the open file whose descriptor is fd, and placed in 
memory starting at addr.  count is the maximum number of bytes to transfer; if 
possible, exactly count bytes will be transferred.  nread is the number of bytes 
actually transferred, and may be less than or equal to count.  If nread is 0, it 
means that the file pointer was already at the end of the file.  

<hr><h3><A name="229">ignoredom</A> ( -- )</h3>
<br>
A vocabulary containing words which are used by the conditional compilation 
words  <code><A href="_smal_BA#228"> iftrue </A></code> ...   <code><A href="_smal_BG#28e"> otherwise </A></code> 
...   <code><A href="_smal_AW#226"> ifend </A></code> 

<hr><h3><A name="259">long-operators</A> ( -- )</h3>
<br>
There are numerous operators working on 32-bit longs available in 
Risc-OS Forthmacs.  Since this is a 32-bit implementation longs are the same as 
normals or cells.  They are  <code><A href="_smal_AM#27c"> not </A></code> 
documented in this glossary, look for their counterparts instead.  
<p>
Note: All long operators have been defined in lib.compatible 
<p>
Implemented words: <strong>l* l+ l+! l- l-&gt;n l-&gt;w l. l.r l0=</strong> <strong>l2/ l2dup l&lt; l&lt;&lt; l= l&gt;= l&gt;&gt; l&gt;&gt;a l&gt;r l@ la+ la1+ labs land</strong> <strong>lbetween lconstant ldrop ldup lliteral lmax lmin lnegate lnot</strong> <strong>lnover lnswap lor lr&gt; lswap lu&lt; lvariable lwithin unaligned-l@ unaligned-l!</strong> 

<hr><h3><A name="289">only</A> ( -- )</h3>
 Extra: 83Std
<br>
Selects just the  <code><A href="_smal_AX#2b7"> root </A></code> vocabulary as 
both the transient vocabulary and resident vocabulary in the search order.  

<hr><h3><A name="2b9">rp!</A> ( addr -- )</h3>
<br>
addr is the address of the new top of the return stack.  
<p>
Warning: This word may only be used inside of words which do not exit, such as  <code><A href="_smal_AD#2a3"> quit </A>.</code> 
In  <code><A href="_smal_AD#2a3"> quit </A>,</code> it is used to clear the 
return stack with the phrase  <code><A href="_smal_BC#2ba"> rp0 </A></code> @  <code><A href="_smal_BB#2b9"> rp! </A></code> 

<hr><h3><A name="2e9">sys-expect</A> ( addr +n -- )</h3>
 Extra: Default
<br>
A simple implementation of the deferred word  <code><A href="_smal_AQ#1f0"> expect </A>.</code>  <code>(<A href="_smal_AQ#1f0"> expect </A></code> 
has only rudimentary line editing, as provided by the RiscOS operating system.  
Its only editing functions are "erase last character" (backspace or delete) and 
"erase entire line" (^U).  Using OS_ReadLine 

See:  <code><A href="_smal_AQ#1f0"> expect </A></code>  <code><A href="_smal_AQ#220"> history-expect </A></code>  <code><A href="_smal_BL#b3"> (newexpect </A></code> 

<hr><h3><A name="319">unnest</A> ( -- )</h3>
 Extra: F83
<br>
Compiled within a colon definition such that when executed, that colon 
definition returns control to the definition that passed control to it by 
returning control to the return point on the top of the return stack.  An error 
condition exists if the top of the return stack does not contain a valid return 
point.  May not be used within a do-loop.  
<p>
Note: This word behaves exactly the same as  <code><A href="_smal_AO#1ee"> exit </A>.</code>  <code><A href="_smal_BB#319"> unnest </A></code> 
is used to end a colon definition so that the decompiler can easily distinguish 
the end of the colon definition from an  <code><A href="_smal_AO#1ee"> exit </A></code> 
that is explicitly compiled somewhere in the middle of the definition.  

<hr><h3><A name="349">]</A> ( -- )</h3>
 Extra: 83Std
<br>
Set the compilation state.  The text from the input stream is subsequently 
compiled.  For typical usage see  <code><A href="_smal_AS#252"> literal </A>.</code> 
See [ 
