
<hr><h3><A name="12">multi</A> ( --  )</h3>
<br>
Enables multitasking by installing  <code><A href="_smal_AP#f"> (pause </A></code> 
in  <code><A href="_smal_BN#295"> pause </A>.</code> For safety's sake,  <code><A href="_smal_AS#12"> multi </A></code> 
also ensures that the main task is awake.  

<hr><h3><A name="42">swix</A> ( swi# --  )</h3>
<br>
assembles a swix instruction, the number is swi#.  

<hr><h3><A name="72">"copy</A> ( from-pstr to-pstr -- )</h3>
<br>
The packed string at from-pstr is copied to to-pstr.  

<hr><h3><A name="a2">(emit</A> ( char -- )</h3>
 Extra: Deferred
<br>
A deferred word which transmits a character to the output stream.  Any other 
action, such as keeping track of the cursor position, should be done by the 
higher level word  <code><A href="_smal_BS#1da"> emit </A>,</code> which then 
ultimately executes  <code><A href="_smal_AS#a2"> (emit </A></code> to actually 
transfer the character.   <code><A href="_smal_BA#2e8"> sys-emit </A></code> is 
the default implementation of  <code><A href="_smal_AS#a2"> (emit </A>.</code> 

See:  <code><A href="_smal_BS#1da"> emit </A></code>  <code><A href="_smal_BT#1db"> emit1 </A></code>  <code><A href="_smal_BA#2e8"> sys-emit </A></code> 

<hr><h3><A name="d2">-rot</A> ( n1 n2 n3  ---  n3 n1 n2 )</h3>
<br>
The top three stack entries are rotated in the direction opposite from  <code><A href="_smal_BA#2b8"> rot </A>,</code> 
putting the top number underneath the other two.  

<hr><h3><A name="102">2-</A> ( n1 -- n2 )</h3>
 Extra: 83Std
<br>
n2 is the result of subtracting two from n1 according to the operation of -.  
<p>
Note: This should not be used to decrement a pointer to a 16-bit item, since 
that is not portable.  

See:  <code><A href="_smal_AR#101"> 2+ </A></code> 

<hr><h3><A name="132">?do</A> ( w1 w2 -- )</h3>
 Extra: compiling
<br>
 ( -- sys )<br>
<br>
Used in the form: 
<br><code>    ?do ... loop</code><br>
<br><code>        or</code><br>
<br><code>    ?do ... +loop</code><br>
Begins a loop which terminates based on control parameters.  The loop index 
begins at w2, and terminates based on the limit w1.  See  <code><A href="_smal_BC#25a"> loop </A></code>  <code><A href="_smal_AN#cd"> +loop </A></code> 
for details on how the loop is terminated.  Unlike  <code><A href="_smal_AT#1c3"> do </A>,</code> 
loops begun with  <code><A href="_smal_AS#132"> ?do </A></code> are not executed 
at all if w1 is equal to w2.  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> 
<p>
Note: When you write a do-loop, think carefully about whether you really want 
the loop to execute at least once.  In a lot of cases,  <code><A href="_smal_AS#132"> ?do </A></code> 
is preferable to  <code><A href="_smal_AT#1c3"> do </A>.</code> 

<hr><h3><A name="162">bl</A> ( -- n )</h3>
<br>
The ascii code for the space character; decimal 32, hex 20.  

<hr><h3><A name="192">compile-do-undefined</A> ( pstr -- )</h3>
 Extra: Compiling
<br>
 <code><A href="_smal_AS#192"> compile-do-undefined </A></code> is an 
implementation of the deferred word  <code><A href="_smal_BA#1c8"> do-undefined </A>.</code>  <code><A href="_smal_BA#1c8"> do-undefined </A></code> 
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 used while 
compiling.  While interpreting,  <code><A href="_smal_BN#235"> interpret-do-undefined </A></code> 
is used instead.   <code><A href="_smal_AS#192"> compile-do-undefined </A></code> 
prints an error message to indicate that an undefined word was encountered, and 
compiles the word  <code><A href="_smal_BD#25b"> lose </A>.</code>  <code><A href="_smal_AS#192"> compile-do-undefined </A></code> 
does not  <code><A href="_smal_BJ#141"> abort </A>.</code> This allows 
compilation to continue, so that a fairly complete list of compilation problems 
may be obtained from one compilation attempt.  
<p>
If the definition containing the undefined word is later executed,  <code><A href="_smal_BD#25b"> lose </A></code> 
will execute and cause an  <code><A href="_smal_BJ#141"> abort </A>.</code> If 
the undefined word was the result of a simple typo,  <code><A href="_smal_BM#294"> patch </A></code> 
may be used to replace the word  <code><A href="_smal_BD#25b"> lose </A></code> 
with the correct word.  
<p>

See:  <code><A href="_smal_BA#1c8"> do-undefined </A></code>  <code><A href="_smal_BN#235"> interpret-do-undefined </A></code>  <code><A href="_smal_BD#25b"> lose </A></code> 
"Text Interpreter" 

<hr><h3><A name="1c2">dispose</A> ( --  )</h3>
 Extra: extend source code
<br>
Remove all links and references into transient address space.   <code><A href="_smal_BG#de"> .dispose </A></code> 
does the same plus giving some information.  

<hr><h3><A name="1f2">false</A> ( -- 0 )</h3>
<br>
The value  <code><A href="_smal_AS#1f2"> false </A>,</code> which is 0.  

<hr><h3><A name="222">i</A> ( -- n )</h3>
 Extra: C,83Std
<br>
n is a copy of the loop index.  May only be used in the form: 
<br><code>    do  ...  i  ...  loop</code><br>
<br><code>          or</code><br>
<br><code>    do  ...  i  ...  +loop</code><br>

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

<hr><h3><A name="282">nuser</A> ( -- )</h3> <kbd>name</kbd> 
<br>
A defining word used in the form: 
<br><code>    nuser &lt;name&gt;</code><br>
When name is later executed, it leaves the address of its data storage area, 
which is in the  <code><A href="_smal_BK#322"> user </A></code> area.  Enough 
space to store a single "normal" stack item is allocated from the  <code><A href="_smal_BK#322"> user </A></code> 
area.  This is similar to the standard word  <code><A href="_smal_BK#322"> user </A></code> 
, except that  <code><A href="_smal_AS#282"> nuser </A></code> automatically 
finds an unused space in the  <code><A href="_smal_BK#322"> user </A></code> 
area, whereas  <code><A href="_smal_BK#322"> user </A></code> requires a numeric 
argument telling it which  <code><A href="_smal_BK#322"> user </A></code> area 
location to use.  

<hr><h3><A name="2b2">right</A> ( -- )</h3>
<br>
Moves the cursor right one column, unless it is already in the rightmost column.  

<hr><h3><A name="2e2">string-array</A> ( -- )</h3> <kbd>name</kbd> 
<br>
Used in the form: 
<br><code>    string-array &lt;name&gt;</code><br>
<br><code>      ," a string"</code><br>
<br><code>      ," another string"</code><br>
<br><code>    end-string-array</code><br>
<p>
When &lt;name&gt; is later executed, it removes an index [0..#strings) from the 
stack and replaces it with the starting address of a packed string.  

<hr><h3><A name="312">ualloc</A> ( size -- new-user-number )</h3>
<br>
new-user-number is the next available  <code><A href="_smal_BK#322"> user </A></code> 
number.  Allocates size bytes in the  <code><A href="_smal_BK#322"> user </A></code> 
area so that the next call to  <code><A href="_smal_AS#312"> ualloc </A></code> 
will return a number past the bytes just allocated.  

<hr><h3><A name="342">[']</A> ( -- addr )</h3> <kbd>name</kbd> 
 Extra: compiling
<br>
 ( -- )<br>
<br>
Used inside a colon definition in the form: 
<br><code>    ['] &lt;name&gt;</code><br>
Compiles the compilation address of &lt;name&gt; as a literal.  When the colon 
definition is later executed addr is left on the stack.  An error condition 
exists if &lt;name&gt; is not found in the currently active search order.  

See:  <code><A href="_smal_AS#252"> literal </A></code> 
