
<hr><h3><A name="25">assembler</A> ( --  )</h3>
<br>
Execution replaces the first vocabulary in the search order with the  <code><A href="_smal_AD#153"> assembler </A></code> 
vocabulary, making all the assembler words accessible.  

<hr><h3><A name="55">rsp</A> ( -- n )</h3>
 Extra: bug 
<br>
n is the value contained in the saved copy of the Stack Pointer.  

<hr><h3><A name="85">#user</A> ( -- addr )</h3>
<br>
The address of a  <code><A href="_smal_BK#322"> user </A></code> variable 
containing the offset of the first location in the  <code><A href="_smal_BK#322"> user </A></code> 
area which has not yet been allocated.  

<hr><h3><A name="b5">(of)</A> ( selector test -- [selector] )</h3>
<br>
The run-time word compiled by  <code><A href="_smal_AU#284"> of </A>.</code> At 
run time, selector is compared to test.  If they are the same, execution 
continues after the  <code><A href="_smal_BN#b5"> (of) </A></code> and selector 
is dropped.  If the are not the same, execution continues after the matching  <code><A href="_smal_AU#a4"> (endof) </A>,</code> 
and selector is left on the stack for the next test.  

<hr><h3><A name="e5">.s</A> ( -- )</h3>
 Extra: F83
<br>
The contents of the data stack are displayed in unsigned format and in the 
current base.  The top of the stack appears on the right.  

<hr><h3><A name="115">;code</A> ( -- )</h3>
 Extra: C,I,83Std
<br>
Used in the form: 
<br><code>    : &lt;name&gt;  ...  create ... ;code ... c; (or end-code)</code><br>
Stops compilation, terminates the defining word &lt;name&gt; and executes  <code><A href="_smal_AD#153"> assembler </A>.</code> 
<p>
When &lt;name&gt; is later executed in the form: 
<br><code>    &lt;name&gt; &lt;new-name&gt;</code><br>
to define the word &lt;new-name&gt;, the later execution of &lt;new-name&gt; 
will cause the machine code sequence following the  <code><A href="_smal_BN#115"> ;code </A></code> 
to be executed.  
<p>
This is analogous to  <code><A href="_smal_BF#1cd"> does&gt; </A>,</code> except 
that the behavior of the defined words &lt;word-name&gt; is specified in 
assembly language instead of high-level Forth.  
<p>
You can find more details in the chapter "Forthmacs Implementation".  

See:  <code><A href="_smal_AH#187"> code </A></code>  <code><A href="_smal_BF#1cd"> does&gt; </A></code> 

<hr><h3><A name="145">addr</A> ( --  )</h3> <kbd>name</kbd> 
<br>
Tell the data address space of an object &lt;name&gt;.  

<hr><h3><A name="175">caps-comp</A> ( addr1 addr2 len -- n )</h3>
 Extra: F83
<br>
Compares the byte arrays starting at addresses addr1 and addr2 and continuing 
for len bytes.  n is 0 if the arrays are the same.  n is 1 if the first 
differing character in the array at addr1 is numerically greater than the 
corresponding character in the array at addr2.  n is -1 if the first differing 
character in the array at addr1 is numerically less than the corresponding 
character in the array at addr2.  Upper and lower case letters are treated as 
indistinguishable.  

See:  <code><A href="_smal_AO#18e"> compare </A></code> 

<hr><h3><A name="1a5">cursor-on</A> ( -- )</h3>
<br>
The display cursor is turned on.  

See:  <code><A href="_smal_BM#1a4"> cursor-off </A></code> 
<p>
Switching the cursor on and off can be done under program control, the system 
doesn't use it at all.  

<hr><h3><A name="1d5">du&lt;</A> ( ud1 ud2 -- flag  )</h3>
<br>
flag is true if and  <code><A href="_smal_BB#289"> only </A></code> if ud1 is 
less than ud2.  

<hr><h3><A name="205">fm/mod</A> ( d.dividend divisor -- rem quot )</h3>
<br>
rem is the remainder and quot is the floor of the quotient after dividing the 
dividend by the divisor.  All values and arithmetic are signed.  The dividend is 
a double number; the divisor and the results are the cell size for the system.  
This is the ANS primitive using floored division.  

See:  <code><A href="_smal_AU#314"> um/mod </A></code>  <code><A href="_smal_AI#2d8"> sm/rem </A></code> 

<hr><h3><A name="235">interpret-do-undefined</A> ( pstr -- )</h3>
 Extra: Interpreting
<br>
 <code><A href="_smal_BN#235"> interpret-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_BN#235"> interpret-do-undefined </A></code> is used while 
interpreting.  While compiling,  <code><A href="_smal_AS#192"> compile-do-undefined </A></code> 
is used instead.   <code><A href="_smal_BN#235"> interpret-do-undefined </A></code> 
prints an error message to indicate that an undefined word was encountered, and 
throws away the rest of the input line.  
<p>

See:  <code><A href="_smal_BA#1c8"> do-undefined </A></code>  <code><A href="_smal_AS#192"> compile-do-undefined </A></code> 
"Text Interpreter" 

<hr><h3><A name="265">main-task</A> ( -- addr )</h3>
 Extra: M
<br>
addr is the address of the  <code><A href="_smal_BK#322"> user </A></code> area 
for the initial task.  When Forth is first started, only one task is active.   <code><A href="_smal_BN#265"> main-task </A></code> 
is the address of that task's  <code><A href="_smal_BK#322"> user </A></code> 
area, which contains its task-specific variables.  Usually that task runs an 
interactive Forth interpreter.  

See: "Multitasking" 
<p>
This is useful in the following case: Suppose that several tasks are active, and 
some task causes a hardware exception.  You want to go back into Forth, turn off 
multitasking, and look around to see what happened.   <code><A href="_smal_BN#265"> main-task </A></code> 
may be used to select the appropriate task to use for the interpreter.  

<hr><h3><A name="295">pause</A> ( -- )</h3>
 Extra: M,Deferred
<br>
Used in multitasking.  Causes the current task to be suspended and the next task 
in the task list to be activated.  
<p>
If multitasking is active, the implementation of  <code><A href="_smal_BN#295"> pause </A></code> 
is  <code><A href="_smal_AP#f"> (pause </A>.</code> If the multitasking package 
is not active, the implementation of  <code><A href="_smal_BN#295"> pause </A></code> 
is  <code><A href="_smal_AL#27b"> noop </A>.</code> 

See:  <code><A href="_smal_AL#27b"> noop </A></code> "Multitasking" 

<hr><h3><A name="2c5">saved-rp</A> ( -- addr )</h3>
<br>
A  <code><A href="_smal_BK#322"> user </A></code> variable containing the return 
stack pointer for an inactive task.  When a task is activated, the return stack 
pointer is loaded from  <code><A href="_smal_BN#2c5"> saved-rp </A>.</code> 

<hr><h3><A name="2f5">time-zone</A> ( -- minutes-west-of-GMT )</h3>
<br>
Returns the time-zone in minutes west of GMT.  PST is 8*60 = 480.  Some 
operating systems will tell you this with out the need for the variable.  
Risc-OS Forthmacs finds out about the timezone using RiscOS functions.  

<hr><h3><A name="325">variable</A> ( -- )</h3> <kbd>name</kbd> 
 Extra: M,83Std
<br>
A defining word executed in the form: 
<br><code>    variable &lt;name&gt;</code><br>
A dictionary entry for &lt;name&gt; is created and enough storage for a "normal" 
stack item is  <code><A href="_smal_BT#14b"> allot </A></code> ted in its 
parameter field.  This parameter field is to be used for the contents of the 
variable.  The application is responsible for initializing the contents of the 
variable which it creates.  When &lt;name&gt; is later executed, the address of 
its parameter field is placed on the stack.  
