
<hr><h3><A name="1b">up</A> ( -- n )</h3>
<br>
portable name for the user pointer 

<hr><h3><A name="4b">handle-address</A> ( --  )</h3>
 Extra: Deferred, System
<br>
This handler is used whenever an address exception has happened, mostly cause by 
a wrong address using <strong>@ !</strong> etc.  
<p>
Risc-OS Forthmacs has a common error handler for all kinds of errors.  This 
handler takes care of cpu state, operating system level etc.  All register data 
can be found in <strong>registers</strong> , r0 at the lowest address.  The 
stacks are saved at <strong>rssave</strong> and <strong>pssave</strong> .  

See:  <code><A href="_smal_AA#2d0"> showcrash </A></code> At it's end it jumps 
into the error-specific handler, by default this is <strong>serve-error</strong> 
in all cases, but you can install your own error handling code instead.  The cpu 
level debugger uses  <code><A href="_smal_BE#4c"> handle-breakpoint </A>,</code> 
virtual memory could be implemented easily using  <code><A href="_smal_BF#4d"> handle-data </A></code> 
and  <code><A href="_smal_BD#4b"> handle-address </A>.</code> 

See:  <code><A href="_smal_AA#2d0"> showcrash </A></code> 

<hr><h3><A name="7b">#columns</A> ( -- n )</h3>
<br>
n is the number of columns of text that are displayable on the screen.  
<p>
This depends on the wimp-mode in the supervisor mode or on the window width in 
the WIMP mode.  It is deferred via the  <code><A href="_smal_BK#2f2"> terminal: </A></code> 
definition.  
<p>

<hr><h3><A name="ab">(key</A> ( -- char )</h3>
 Extra: Deferred
<br>
Used by the default implementation of  <code><A href="_smal_BS#23a"> key </A>.</code> 
Reads the next 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_BD#ab"> (key </A></code> 
will not be displayed.  The default implementation of  <code><A href="_smal_BD#ab"> (key </A></code> 
is  <code><A href="_smal_BC#2ea"> sys-key </A>.</code>  <code><A href="_smal_BD#ab"> (key </A></code> 
doesn't  <code><A href="_smal_BN#295"> pause </A>.</code> The char returned 
depends on the keyboard handler and may change with added modules.  

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

<hr><h3><A name="db">.date</A> ( day month year -- )</h3>
<br>
Displays the date indicated by day [1..31], month[1..12], and year[e.g.  1986].  
For example, "5 3 1985 .date" prints March 5, 1985 

<hr><h3><A name="10b">2swap</A> ( n1 n2  n3 n4  --  n3 n4  n1 n2 )</h3>
 Extra: 32,ANS,83Std
<br>
The top two pairs of numbers are exchanged.  

<hr><h3><A name="13b">?negate</A> ( n1 n2 -- n1 | -n1 )</h3>
<br>
Negates n1 if n2 is less than 0.  

<hr><h3><A name="16b">buffer</A> ( u -- addr )</h3>
 Extra: M,83Std
<br>
Assigns a block buffer to block u.  addr is the address of the first byte of the 
block within the buffer.  This function is fully specified by the definition for  <code><A href="_smal_AV#165"> block </A></code> 
except that if the block is not already in memory it might not be transferred 
from mass storage.  The contents of the block buffer assigned to block u by  <code><A href="_smal_BD#16b"> buffer </A></code> 
are unspecified.  
<p>
This word is  <code><A href="_smal_AM#27c"> not </A></code> implemented in the 
default system.  The file extend.block contains an implementation which may be 
loaded if necessary.  

<hr><h3><A name="19b">create</A> ( -- )</h3> <kbd>name</kbd> 
 Extra: M,83Std,Deferred
<br>
A defining word executed in the form: 
<br><code>    create &lt;name&gt;</code><br>
Creates a dictionary entry for &lt;name&gt;.  After &lt;name&gt; is created, the 
next available dictionary location is the first byte of &lt;name&gt;'s parameter 
field.  When &lt;name&gt; is subsequently executed, the address of the first 
byte of &lt;name&gt;'s parameter field is left on the stack.   <code><A href="_smal_BD#19b"> create </A></code> 
does not allocate space in &lt;name&gt;'s parameter field.  
<p>
In this implementation,  <code><A href="_smal_BD#19b"> create </A></code> is a 
deferred word so that the user may substitute another implementation of  <code><A href="_smal_BD#19b"> create </A></code> 
if desired.  The default implementation is  <code><A href="_smal_AP#9f"> (create </A>.</code> 

<hr><h3><A name="1cb">double?</A> ( -- flag )</h3>
<br>
flag is true if the last number that was converted was forced to be a double 
number by the presence of a decimal point in the number.  

<hr><h3><A name="1fb">fgetword</A> ( pstr fd -- pstr )</h3>
<br>
Accepts the next sequence of non-white 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-white" character is any printing character.  Specifically, non-white 
characters have an ascii value greater than that of space.  All control 
characters, including tab, carriage return, form feed, and linefeed, are 
considered to be "white", as well as space.   <code><A href="_smal_BD#1fb"> fgetword </A></code> 
skips leading "white" characters.  
<p>
The "white" character which terminates the word is consumed and stored in  <code><A href="_smal_AM#1bc"> delimiter </A></code> 
so that it may be inspected if necessary.  
<p>
If there were no more non-white characters in the file, the byte at pstr will 
contain zero, and  <code><A href="_smal_AM#1bc"> delimiter </A></code> will 
contain  <code><A href="_smal_AD#1e3"> eof </A>.</code> 

<hr><h3><A name="22b">immediate?</A> ( acf -- flag )</h3>
<br>
flag is true if the word whose compilation address is acf is immediate.  

<hr><h3><A name="25b">lose</A> ( -- )</h3>
<br>
Prints the message "Undefined word encountered" and aborts.   <code><A href="_smal_BD#25b"> lose </A></code> 
is compiled into a colon definition when the compiler encounters an undefined 
word.  If that colon definition is later executed,  <code><A href="_smal_BD#25b"> lose </A></code> 
will execute and abort.  This is in contrast to some other Forth systems which 
abort right away when the compiler sees an undefined word.  Using the  <code><A href="_smal_BD#25b"> lose </A></code> 
scheme, the compilation does not terminate upon encountering the undefined word, 
but instead proceeds and finds any other undefined words that may be in the 
file.  This is a good scheme if compilation is very fast.  

See:  <code><A href="_smal_AS#192"> compile-do-undefined </A></code> 

<hr><h3><A name="28b">or</A> ( n1 n2 -- n3 )</h3>
 Extra: 83Std
<br>
n3 is the bit-by-bit inclusive-or of n1 with n2.  

<hr><h3><A name="2bb">rp@</A> ( -- addr )</h3>
 Extra: 79
<br>
addr is the address of the top of the return stack.  

<hr><h3><A name="2eb">sys-(key?</A> ( -- flag )</h3>
 Extra: Default
<br>
The Default implementation of the deferred word  <code><A href="_smal_BT#23b"> key? </A>.</code> 
flag is true if a character has been typed on the keyboard since the last time 
that  <code><A href="_smal_BS#23a"> key </A></code> was executed.  

See:  <code><A href="_smal_BT#23b"> key? </A></code>  <code><A href="_smal_BS#23a"> key </A></code> 
In the RiscOS Version the flag in fact tells the number of  <code><A href="_smal_BS#23a"> key </A>s</code> 
available by  <code><A href="_smal_BS#23a"> key </A>.</code> 

<hr><h3><A name="31b">up</A> ( -- )</h3>
<br>
Moves the cursor up one line, unless it is already on the top line.  
