
<hr><h3><A name="18">pc</A> ( -- n )</h3>
<br>
portable name for the  <code><A href="_smal_BA#18"> pc </A></code> register 

<hr><h3><A name="48">.sr</A> ( --  )</h3>
<br>
Decodes and displays the contents of the ARM Status Register part of the  <code><A href="_smal_BA#18"> pc </A></code> 
register that was saved at the last breakpoint or exception.  The Status 
Register contains the Condition Codes, the Priority level and the interrupt 
level.  The display looks something like this: 
<br><code>         nZcvif    user mode</code><br>
"nZcvif" is the condition codes.  An upper case letter indicates that the 
corresponding bit is on.  In the case the "Z" (zero) bit is on and the other 
bits (Negative, Carry, oVerflow and the mode registers) are off.  

<hr><h3><A name="78">#</A> ( ud1  --  ud2 )</h3>
 Extra: ANS,83Std
<br>
The remainder of ud1 divided by the value of  <code><A href="_smal_AJ#159"> base </A></code> 
is converted to an ascii character and appended to the output string toward 
lower memory addresses.  ud2 is the quotient and is maintained for further 
processing.  Typically used between  <code><A href="_smal_BP#117"> &lt;# </A></code> 
and  <code><A href="_smal_BB#79"> #&gt; </A>.</code> 

See:  <code><A href="_smal_BP#117"> &lt;# </A></code>  <code><A href="_smal_BJ#81"> #s </A></code>  <code><A href="_smal_BB#79"> #&gt; </A></code> 
Note: also modifier in ARM Assembler, indicating a number as operand.  

<hr><h3><A name="a8">(interpret</A> ( -- )</h3>
 Extra: 83Std,Default
<br>
The Default implementation of the deferred word  <code><A href="_smal_BJ#231"> interpret </A>.</code> 
Begins text interpretation at the current position within the input stream, 
continuing until the input stream is exhausted.  

See:  <code><A href="_smal_BJ#231"> interpret </A></code> 

<hr><h3><A name="d8">.calls</A> ( acf -- )</h3>
<br>
Displays a list of all the words which call the word whose compilation address 
is acf.  

<hr><h3><A name="108">2literal</A> ( -- d )</h3>
 Extra: compiling
<br>
 ( d -- )<br>
<br>
Typically used in the form: 
<br><code>    [ double-number ]  2literal</code><br>
Compiles a system dependent operation so that when later executed, the double 
number d will be left on the stack.  

<hr><h3><A name="138">?leave</A> ( flag -- )</h3>
 Extra: compiling
<br>
 ( -- )<br>
<br>
If flag is nonzero, transfers control to just beyond the next  <code><A href="_smal_BC#25a"> loop </A></code> 
or  <code><A href="_smal_AN#cd"> +loop </A>.</code> The loop is terminated and 
loop control parameters are discarded.  If flag is zero, no action is taken.  
May only be used in the form: 
<br><code>    do ... ?leave ... loop</code><br>
<br><code>        or</code><br>
<br><code>    do ... ?leave ... +loop</code><br>
 <code><A href="_smal_BA#138"> ?leave </A></code> may appear within other 
control structures which are nested within the do-loop structure.  More than one  <code><A href="_smal_AF#245"> leave </A></code> 
may appear within a do-loop.  

See: "Glossary Notation - Return Stack".  
<p>
 <code><A href="_smal_BA#138"> ?leave </A></code> is equivalent to the phrase  <code><A href="_smal_AT#223"> if </A></code>  <code><A href="_smal_AF#245"> leave </A></code>  <code><A href="_smal_BL#2f3"> then </A>.</code> 

<hr><h3><A name="168">bounds</A> ( addr1 len -- addr2 addr1 )</h3>
 Extra: F83
<br>
addr2 is the sum of addr1 and len.   <code><A href="_smal_BA#168"> bounds </A></code> 
is used to convert a starting address and a count into an ending address under a 
starting address, as required by do-loops.  

<hr><h3><A name="198">count</A> ( pstr --  addr +n )</h3>
 Extra: 83Std
<br>
addr2 is pstr+1 and +n is the length of the packed string at pstr.  The byte at 
pstr contains the byte count +n.  Range of +n is {0..255}.  

<hr><h3><A name="1c8">do-undefined</A> ( pstr -- )</h3>
 Extra: Deferred
<br>
 <code><A href="_smal_BA#1c8"> do-undefined </A></code> is a deferred word which 
is executed from  <code><A href="_smal_AR#71"> "compile </A></code> if the word 
under consideration is neither a defined word nor a number.  pstr is the address 
of a packed string which is the name of the word under consideration.  
<p>
 <code><A href="_smal_AS#192"> compile-do-undefined </A></code> is the 
implementation of  <code><A href="_smal_BA#1c8"> do-undefined </A></code> used 
while compiling, and  <code><A href="_smal_BN#235"> interpret-do-undefined </A></code> 
is the implementation used while interpreting.  
<p>
It is possible to install user-defined implementations of  <code><A href="_smal_BA#1c8"> do-undefined </A></code> 
in order to "customize" the text interpreter.  See "Text Interpreter" for some 
suggestions.  
<p>

See:  <code><A href="_smal_AS#192"> compile-do-undefined </A></code>  <code><A href="_smal_BN#235"> interpret-do-undefined </A></code> 
"Text Interpreter" 

<hr><h3><A name="1f8">fgetline</A> ( addr fd -- addr true | false  )</h3>
<br>
Bytes are transferred from the open file whose descriptor is fd, and placed in 
memory starting at addr.  
<p>
The flag on top of stack tells whether this has been successful.  If file fd was 
at  <code><A href="_smal_AD#1e3"> eof </A></code> ye flag would be  <code><A href="_smal_AS#1f2"> false </A>.</code> 

<hr><h3><A name="228">iftrue</A> ( [ flag ] -- )</h3>
 Extra: C,I
<br>
Begins an 
<br><code>    iftrue ... otherwise ... ifend</code><br>
conditional sequence.  These conditional words operate like 
<br><code>    if ... else ... then</code><br>
except that they may be used during interpretation.  They may be used within a 
colon definition to control compilation, but the flag that is tested by  <code><A href="_smal_BA#228"> iftrue </A></code> 
has to be left on the stack at at compile time, so the code that generates the 
flag should be enclosed in brackets ( [ and ] ).  
<p>
In this implementation, these words are completely nestable.  

<hr><h3><A name="258">locals|</A> ( ??? xxx yyy ... zzz -- ???  )</h3>
<br>
Defines and initialises up to 30 local variables each of which takes as its 
initial value the top stack item, removing it from the stack.  
<br><code>         ( nx  ... n2 n1 )</code><br>
<br><code>         locals| v1 v2 |</code><br>
local <em>x1</em> is initialised with <em>n1</em> , <em>x2</em> with <em>n2</em> 
, etc.  When invoked, each local will return its value.  
<p>
Note: As defined in the ANS Forth paper, there MUST  <code><A href="_smal_AM#27c"> not </A></code> 
be anything on the return-stack inside this definition so far, otherwise the 
system will crash.  
<p>

See:  <code><A href="_smal_BQ#2f8"> to </A></code> 

<hr><h3><A name="288">on</A> ( addr  -- )</h3>
 Extra: F83
<br>
Store true (-1) at address `addr'.  

<hr><h3><A name="2b8">rot</A> ( n1 n2 n3  ---  n2 n3 n1 )</h3>
 Extra: 83Std
<br>
Rotates the top three stack entries, bringing the deepest to the top.  

<hr><h3><A name="2e8">sys-emit</A> ( char -- )</h3>
 Extra: Default
<br>
The Default implementation of the deferred word  <code><A href="_smal_AS#a2"> (emit </A>.</code> 
Transmits the character char to the output stream.  OS_WriteC  <code><A href="_smal_AR#41"> swi </A></code> 
$00 is used for this.  

See:  <code><A href="_smal_BS#1da"> emit </A></code>  <code><A href="_smal_BT#1db"> emit1 </A></code>  <code><A href="_smal_AS#a2"> (emit </A></code> 

<hr><h3><A name="318">unaligned-!</A> ( addr -- n )</h3>
<br>
n is stored to an address that can be aligned ot  <code><A href="_smal_AM#27c"> not </A>.</code> 

See:  <code><A href="_smal_AX#317"> unaligned-@ </A></code> @ 

<hr><h3><A name="348">\needs</A> ( -- )</h3> <kbd>name rest-of-line</kbd> 
<br>
Used in the form: 
<br><code>    \needs &lt;name&gt; &lt;some more forth commands&gt;</code><br>
If &lt;name&gt; is already defined, the rest of the line is ignored.  If &lt;name&gt; 
is not already defined, the rest of the line is interpreted.  

See:  <code><A href="_smal_AG#276"> needs </A></code> 
