This appendix contains four lists:
The following tables describe FCodes currently supported by the OpenBoot PROM. New 2.0 FCodes are indicated by V2. Both the FCode token values and Forth names are included. A token value entry of CR indicates a cross- compiler-generated sequence, while - indicates that no FCode is generated.
Table A-1 Stack Manipulation
------------------------------------------------------------------------------------------------------------------------------------------
Value Function Stack Description ------------------------------------------------------------------------------------------------------------------------------------------
51 depth ( -- +n ) How many items on stack?
46 drop ( n -- ) Removes n from the stack
52 2drop ( n1 n2 -- ) Removes 2 items from stack
47 dup ( n -- n n ) Duplicates n
53 2dup ( n1 n2 -- n1 n2 n1 n2 ) Duplicates 2 stack items
50 ?dup ( n -- n n | 0 ) Duplicates n if it is non-zero
CR 3dup ( n1 n2 n3 -- n1 n2 n3 n1 n2 n3 ) Copies top 3 stack items
4d nip ( n1 n2 -- n2 ) Discards the second stack item
48 over ( n1 n2 -- n1 n2 n1 ) Copies second stack item to top of stack
54 2over ( n1 n2 n3 n4 -- n1 n2 n3 n4 n1 n2 ) Copies 2 stack items
4e pick ( +n -- n2 ) Copies +n-th stack item
30 >r ( n -- ) ( rs: -- n) Moves a stack item to the return stack*
31 r'> ( -- n ) ( rs: n -- ) Moves item from return stack to data stack*
32 r@ ( -- n ) ( rs: -- ) Copies the top of the return stack to the data stack
4f roll ( +n -- ) Rotates +n stack items
4a rot ( n1 n2 n3 -- n2 n3 n1 ) Rotates 3 stack items
4b -rot ( n1 n2 n3 -- n3 n1 n2 ) Shuffles top 3 stack items
56 2rot ( n1 n2 n3 n4 n5 n6 -- n3 n4 n5 n6 n1 n2 ) Rotates 3 pairs of stack items
49 swap ( n1 n2 -- n2 n1 ) Exchanges the top 2 stack items
55 2swap ( n1 n2 n3 n4 -- n3 n4 n1 n2 ) Exchanges 2 pairs of stack items
4c tuck ( n1 n2 -- n2 n1 n2 ) Copies the top stack item below the second item
* Use these FCodes cautiously.
------------------------------------------------------------------------------------------------------------------------------------------
Table A-2 Arithmetic Operations
-------------------------------------------------------------------------------------------------------------------
Value Function Stack Description -------------------------------------------------------------------------------------------------------------------
20 * ( n1 n2 -- n3 ) Multiplies n1 times n2
1e + ( n1 n2 -- n3 ) Adds n1+n2
1f - ( n1 n2 -- n3 ) Subtracts n1-n2
21 / ( n1 n2 -- quot ) Divides n1/n2
CR 1+ ( n1 -- n2 ) Adds one
CR 1- ( n1 -- n2 ) Subtracts one
59 2* ( n1 -- n2 ) Multiplies by 2
57 2/ ( n1 -- n2 ) Divides by 2
<<
27 ( n1 +n -- n2 ) Left shifts n1 by +n places
28 >'> ( n1 +n -- n2 ) Right shifts n1 by +n places
CR <<a ( n1 +n -- n2 ) Arithmetic left shifts (same as <<)
29 >a ( n1 +n -- n2 ) Arithmetic right shifts n1 by +n places
2d abs ( n -- u ) Absolute value
ae aligned ( adr1 -- adr2 ) Adjusts an address to a machine word boundary
23 and ( n1 n2 -- n3 ) Logical and
ac bounds ( startadr len -- endadr startadr ) Converts start,len to end,start for do loop
2f max ( n1 n2 -- n3 ) n3 is maximum of n1 and n2
2e min ( n1 n2 -- n3 ) n3 is minimum of n1 and n2
22 mod ( n1 n2 -- rem ) Remainder of n1/n2
CR */mod ( n1 n2 n3 -- rem quot ) Remainder, quotient of n1*n2/n3
2a /mod ( n1 n2 -- rem quot ) Remainder, quotient of n1/n2
2c negate ( n1 -- n2 ) Changes the sign of n1
26 not ( n1 -- n2 ) One's complement
24 or ( n1 n2 -- n3 ) Logical or
2b u/mod ( ul un -- un.rem un.quot ) Unsigned 32-bit divide of ul/un
58 u2/ ( u1 -- u2 ) Logical right shifts 1 bit
25 xor ( n1 n2 -- n3 ) Exclusive or
d4 u*x ( u1[32] u2[32] -- product[64] ) Multiplies two unsigned 32-bit numbers, yields an unsigned 64-
bit product. V2
d5 xu/mod ( u1[64] u2[32] -- remainder[32] Divides an unsigned 64-bit number by an unsigned 32-bit
quot[32] ) number, yields a 32-bit remainder and quotient V2
d8 x+ ( x1 x2 -- x3 ) Adds two 64-bit numbers V2
d9 x- ( x1 x2 -- x3 ) Subtracts two 64-bit numbers V2
-------------------------------------------------------------------------------------------------------------------
Table A-3 Memory Operations
-------------------------------------------------------------------------------------------------------
Value Function Stack Description -------------------------------------------------------------------------------------------------------
72 ! ( n adr -- ) Stores a 32-bit number into the variable at adr
6c +! ( n adr -- ) Adds n to the 32-bit number stored in the variable at adr
77 2! ( n1 n2 adr -- ) Stores 2 numbers at adr; n2 at lower address
76 2@ ( adr -- n1 n2 ) Fetches 2 numbers from adr; n2 from lower address
6d @ ( adr -- n ) Fetches a number from the variable at adr
CR ? ( adr -- ) Displays the 32-bit number at adr
75 c! ( n adr -- ) Stores low byte of n at adr
71 c@ ( adr -- byte ) Fetches a byte from adr
CR blank ( adr len -- ) Sets len bytes of memory to ASCII space, starting at adr
CR cmove ( adr1 adr2 u -- ) Same as move
CR cmove'> ( adr1 adr2 u -- ) Same as move
7a comp ( adr1 adr2 len -- n ) Compares two byte arrays including case. n=0 if same
CR erase ( adr len -- ) Sets len bytes of memory to zero, starting at adr
79 fill ( adr u byte -- ) Sets u bytes of memory to byte
0237 lflips ( adr len -- ) Exchanges 16-bit words within 32-bit longwords in adr len V2
73 l! ( l adr -- ) Stores the 32-bit number at adr, must be 32-bit aligned
6e l@ ( adr -- l ) Fetches the 32-bit longword at adr, must be 32-bit aligned
78 move ( adr1 adr2 u -- ) Copies u bytes from adr1 to adr2, handles overlap correctly.
6b off ( adr -- ) Stores false (32-bit 0) at adr
6a on ( adr -- ) Stores true (32-bit -1) at adr
0236 wflips ( adr len -- ) Exchanges bytes within 16-bit words in the specified region V2
74 w! ( w adr -- ) Stores a 16-bit word at adr, must be 16-bit aligned
6f w@ ( adr -- w ) Fetches the unsigned 16-bit word at adr, must be 16-bit aligned
70 <w@ ( adr -- n ) Fetches the signed 16-bit word at adr, must be 16-bit aligned
-------------------------------------------------------------------------------------------------------
Table A-4 Atomic Access
----------------------------------------------------------------------------------------------
Value Function Stack Description ----------------------------------------------------------------------------------------------
0230 rb@ ( adr -- byte ) Reads the 8-bit value at the given address, atomically V2
0231 rb! ( byte adr -- ) Writes the 8-bit value at the given address, atomically V2
0232 rw@ ( adr -- word ) Reads the 16-bit value at the given address, atomically V2
0233 rw! ( word adr -- ) Writes the 16-bit value at the given address, atomically V2
0234 rl@ ( adr -- long ) Reads the 32-bit value at the given address, atomically V2
0235 rl! ( long adr -- ) Writes the 32-bit value at the given address, atomically V2
----------------------------------------------------------------------------------------------
Table A-5 Data Exception Tests
---------------------------------------------------------------------------------------------------------------------------
Value Function Stack Description ---------------------------------------------------------------------------------------------------------------------------
0220 cpeek ( adr -- false | byte true ) Reads the 8-bit value at the given address, returns false if unsuccessful
V2
0221 wpeek ( adr -- false | word true ) Reads the 16-bit value at the given address, returns false if
unsuccessful V2
0222 lpeek ( adr -- false | long true ) Reads the 32-bit value at the given address, returns false if
unsuccessful V2
0223 cpoke ( byte adr -- ok? ) Writes the 8-bit value at the given address, returns false if unsuccessful
V2
0224 wpoke ( word adr -- ok? ) Writes the 16-bit value at the given address, returns false if
unsuccessful V2
0225 lpoke ( long adr -- ok? ) Writes the 32-bit value at the given address, returns false if
unsuccessful V2
---------------------------------------------------------------------------------------------------------------------------
Table A-6 Comparison Operations
---------------------------------------------------------------------------
Value Function Stack Description ---------------------------------------------------------------------------
36 0< ( n -- flag ) True if n < 0
37 0<= ( n -- flag ) True if n <= 0
35 0<'> ( n -- flag ) True if n < 0
34 0= ( n -- flag ) True if n = 0, also inverts any flag
38 0'> ( n -- flag ) True if n 0
39 0= ( n -- flag ) True if n = 0
<
3a ( n1 n2 -- flag ) True if n1 < n2
43 <= ( n1 n2 -- flag ) True if n1 <= n2
3d <'> ( n1 n2 -- flag ) True if n1 < n2
3c = ( n1 n2 -- flag ) True if n1 = n2
>
3b ( n1 n2 -- flag ) True if n1 n2
42 >= ( n1 n2 -- flag ) True if n1 = n2
44 between ( n min max -- flag ) True if min <= n <= max
CR false ( -- 0 ) The value false
CR true ( -- -1 ) The value true
40 u< ( u1 u2 -- flag ) True if u1 < u2, unsigned
3f u<= ( u1 n2 -- flag ) True if u1 <= u2, unsigned
3e u'> ( u1 n2 -- flag ) True if u1 u2, unsigned
41 u= ( u1 n2 -- flag ) True if u1 = u2, unsigned
45 within ( n min max -- flag ) True if min <= n < max
---------------------------------------------------------------------------
Table A-7 Text Input
--------------------------------------------------------------------------------------------
Value Function Stack Description --------------------------------------------------------------------------------------------
- ( text) ( -- ) Begins a comment (ignored)
- \ ( -- ) Ignore rest of line (comment)
CR ascii x ( -- char ) ASCII value of next character
CR control x ( -- char ) Interprets next character as ASCII control character
8e key ( -- char ) Reads a character from the keyboard
8d key? ( -- flag ) True if a key has been typed on the keyboard
8a expect ( adr +n -- ) Gets a line of edited input from the keyboard; store at adr
88 span ( -- adr ) Variable containing the number of characters read by expect
- (s text) ( -- ) Begins a comment (ignored)
--------------------------------------------------------------------------------------------
Table A-8 ASCII Constants
--------------------------------------------------------------------------------------
Value Function Stack Description --------------------------------------------------------------------------------------
ab bell ( -- n ) The ASCII code for the bell character; decimal 7
a9 bl ( -- n ) The ASCII code for the space character; decimal 32
aa bs ( -- n ) The ASCII code for the backspace character; decimal 8
CR carret ( -- n ) The ASCII code for the carriage return character; decimal 13
CR linefeed ( -- n ) The ASCII code for the linefeed character; decimal 10
CR newline ( -- n ) The ASCII code for the newline character; decimal 10
--------------------------------------------------------------------------------------
Table A-9 Numeric Input
-----------------------------------------------------------------------------
Value Function Stack Description -----------------------------------------------------------------------------
a4 -1 ( -- -1 ) Constant -1
a5 0 ( -- 0 ) Constant 0
a6 1 ( -- 1 ) Constant 1
a7 2 ( -- 2 ) Constant 2
a8 3 ( -- 3 ) Constant 3
CR b# number ( -- n ) Interprets next number in binary
- binary ( -- ) If outside definition, input text in binary
CR d# number ( -- n ) Interprets next number in decimal
- decimal ( -- ) If outside definition, input text in decimal
CR h# number ( -- n ) Interprets next number in hexadecimal
- hex ( -- ) If outside definition, input text in hexadecimal
CR o# number ( -- n ) Interprets next number in octal
- octal ( -- ) If outside definition, input text in octal
-----------------------------------------------------------------------------
Table A-10 Numeric Primitives
--------------------------------------------------------------------------------------------------------------------
Value Function Stack Description --------------------------------------------------------------------------------------------------------------------
99 # ( +l1 -- +l2 ) Converts a digit in pictured numeric output
97 #'> ( l -- adr +n ) Ends pictured numeric output
96 <# ( -- ) Initializes pictured numeric output
a0 base ( -- adr ) Variable containing number base
a3 digit ( char base -- digit true | char false ) Converts a character to a digit
95 hold ( char -- ) Inserts the char in the pictured numeric output string
9a #s ( +l -- 0 ) Converts the rest of the digits in pictured numeric output
98 sign ( n -- ) Sets sign of pictured output
a2 $number ( adr len -- true | n false ) Converts a string to a number V2
--------------------------------------------------------------------------------------------------------------------
Table A-11 Numeric Output
-----------------------------------------------------------------------------
Value Function Stack Description -----------------------------------------------------------------------------
9d . ( n -- ) Displays a number
CR .d ( n -- ) Displays number in decimal
CR binary ( -- ) If inside definition, output in binary
CR decimal ( -- ) If inside definition, output in decimal
CR .h ( n -- ) Displays number in hexadecimal
CR hex ( -- ) If inside definition, output in hexadecimal
CR octal ( -- ) If inside definition, output in octal
9e .r ( n +n -- ) Displays a number in a fixed width field
9f .s ( -- ) Displays the contents of the data stack
CR s. ( n -- ) Displays n as a signed number
9b u. ( u -- ) Displays an unsigned number
9c u.r ( u +n -- ) Prints an unsigned number in a fixed width field
-----------------------------------------------------------------------------
Table A-12 General-purpose Output
-------------------------------------------------------------------------
Value Function Stack Description -------------------------------------------------------------------------
CR ." text" ( -- ) Compiles string for later output
CR .( text) ( -- ) Displays a string now
91 (cr ( -- ) Outputs ASCII CR character; decimal 13
92 cr ( -- ) Starts a new line of display output
8f emit ( char -- ) Displays the character
CR space ( -- ) Outputs a single space character
CR spaces ( +n -- ) Outputs +n spaces
90 type ( adr +n -- ) Displays n characters
-------------------------------------------------------------------------
Table A-13 Formatted Output
-----------------------------------------------------------------------------------
Value Function Stack Description -----------------------------------------------------------------------------------
94 #line ( -- adr ) Variable holding the line number on the output device
93 #out ( -- adr ) Variable holding the column number on the output device
-----------------------------------------------------------------------------------
Table A-14 begin Loops
------------------------------------------------------------------------------------------
Value Function Stack Description ------------------------------------------------------------------------------------------
CR again ( -- ) Ends begin..again (infinite) loop
CR begin ( -- ) Starts conditional loop
CR repeat ( -- ) Returns to loop start
CR until ( flag -- ) If true, exits begin..until loop
CR while ( flag -- ) If true, continues begin..while..repeat loop, else exits loop
------------------------------------------------------------------------------------------
Table A-15 Conditionals
---------------------------------------------------------------------------
Value Function Stack Description ---------------------------------------------------------------------------
CR if ( flag -- ) If true, executes next FCode(s)
CR else ( -- ) (optional) Executes next FCode(s) if if failed
CR then ( -- ) Terminates if..else..then
---------------------------------------------------------------------------
Table A-16 do Loops
-------------------------------------------------------------------------------------------------
Value Function Stack Description -------------------------------------------------------------------------------------------------
CR do ( end start -- ) Loops, index start to end-1 inclusive
CR ?do ( end start -- ) Like do, but skips loop if end = start
19 i ( -- n ) Returns current loop index value
1a j ( -- n ) Returns value of next outer loop index
CR leave ( -- ) Exits do loop immediately
CR ?leave ( flag -- ) If flag is true, exits do loop
CR loop ( -- ) Increments index, returns to do
CR +loop ( n -- ) Increments by n, returns to do. If n<0, index start to end
-------------------------------------------------------------------------------------------------
Table A-17 Control Words
--------------------------------------------------------------------------------------------------------------------
Value Function Stack Description --------------------------------------------------------------------------------------------------------------------
1d execute ( acf -- ) Executes the word whose
compilation address is on the stack
33 exit ( -- ) Returns from the current word
0238 probe ( arg-adr arg-len reg-adr reg-len fcode-adr fcode-len -- ) V2.2
0239 probe-virtual ( arg-adr arg-len reg-adr reg-len fcode-adr -- ) V2.2
--------------------------------------------------------------------------------------------------------------------
Table A-18 Strings
------------------------------------------------------------------------------------------------------------------------
Value Function Stack Description ------------------------------------------------------------------------------------------------------------------------
CR " text" ( -- adr len ) Collects a string
84 count ( pstr -- adr +n ) Unpacks a packed string
82 lcc ( char -- lower-case-char ) Converts char to lower case
83 pack ( adr len pstr -- pstr ) Makes a packed string from adr len, placing it at pstr
81 upc ( char -- upper-case-char ) Converts char to upper case
0240 left-parse- ( adr len char -- adrR lenR adrL lenL ) Splits a string at the given delimiter (which is discarded)
string V2
011b decode-2int ( adr len -- phys space ) Converts a string into a physical address and space V2
------------------------------------------------------------------------------------------------------------------------
Table A-19 Defining Words
------------------------------------------------------------------------------------------------------------------
Value Function Stack Description ------------------------------------------------------------------------------------------------------------------
CR : (colon) name ( -- ) Begins colon definition
CR ; (semicolon) ( -- ) Ends colon definition
- alias newname oldname ( -- ) Creates newname with behavior of oldname
CR buffer: name ( size -- ) Creates data array of size bytes
CR constant name ( n -- ) Creates a constant
CR create name ( -- ) Generic defining word
CR defer name ( -- ) Execution vector (change with is)
CR field name ( offset size -- offset+size ) Creates a named offset pointer
c0 instance ( -- ) Declare a data type to be local V2.1
CR struct ( -- 0 ) Initializes for field creation
CR variable name ( -- ) Creates a data variable
CR value name ( n -- ) Creates named value-type variable (change with is)
------------------------------------------------------------------------------------------------------------------
Table A-20 Dictionary Compilation
----------------------------------------------------------------------
Value Function Stack Description ----------------------------------------------------------------------
d3 , ( n -- ) Places a number in the dictionary
d0 c, ( n -- ) Places a byte in the dictionary
ad here ( -- adr ) Address of top of dictionary
d2 l, ( l -- ) Places a 32-bit longword in the dictionary
d1 w, ( w -- ) Places a 16-bit word in the dictionary
CR is name ( n -- ) Changes value in a defer word or a value
----------------------------------------------------------------------
Table A-21 Dictionary Search
------------------------------------------------------------------------------------------------------
Value Function Stack Description ------------------------------------------------------------------------------------------------------
CR ' name ( -- acf ) Finds the word (while executing)
CR ['] name ( -- acf ) Finds word (while compiling)
cb $find ( adr len -- adr len false | acf +-1 ) Finds a name in the OpenBoot PROM
cd eval ( ??? adr len -- ? ) Executes Forth commands within a string V2
------------------------------------------------------------------------------------------------------
Table A-22 Conversions Operators
---------------------------------------------------------------------------------------
Value Function Stack Description ---------------------------------------------------------------------------------------
7f bljoin ( b.low b2 b3 b.hi -- l ) Joins four bytes to form a longword
b0 bwjoin ( b.low b.hi -- w ) Joins two bytes to form a 16-bit word
5a /c ( -- n ) Address increment for a byte; 1
66 /c* ( n1 -- n2 ) Multiplies by /c
5e ca+ ( adr1 index -- adr2 ) Increments adr1 by index times /c
62 ca1+ ( adr1 -- adr2 ) Increments adr1 by /c
80 flip ( w1 -- w2 ) Swaps the bytes within a 16-bit word
5c /l ( -- n ) Address increment for a 32-bit longword; 4
68 /l* ( n1 -- n2 ) Multiplies by /l
60 la+ ( adr1 index -- adr2 ) Increments adr1 by index times /l
64 la1+ ( adr1 -- adr2 ) Increments adr1 by /l
7e lbsplit ( l -- b.low b2 b3 b.high ) Splits a longword into four bytes
7c lwsplit ( l -- w.low w.high ) Splits a longword into two words
5d /n ( -- n ) Address increment for a normal; 4
69 /n* ( n1 -- n2 ) Multiplies by /n
61 na+ ( adr1 index -- adr2 ) Increments adr1 by index times /n
65 na1+ ( adr1 -- adr2 ) Increments adr1 by /n
5b /w ( -- n ) Address increment for a 16-bit word; 2
67 /w* ( n1 -- n2 ) Multiplies by /w
5f wa+ ( adr1 index -- adr2 ) Increments adr1 by index times /w
63 wa1+ ( adr1 -- adr2 ) Increments adr1 by /w
af wbsplit ( w -- b.low b.high ) Splits a 16-bit word into two bytes
CR wflip ( l1 -- l2 ) Swaps halves of 32-bit longword
7d wljoin ( w.low w.high -- l ) Joins two words to form a longword
---------------------------------------------------------------------------------------
Table A-23 Memory Buffers Allocation
--------------------------------------------------------------------------------------
Value Function Stack Description --------------------------------------------------------------------------------------
8b alloc-mem ( nbytes -- adr ) Allocates nbytes of memory and returns its address
8c free-mem ( adr nbytes -- ) Frees memory allocated by alloc-mem
--------------------------------------------------------------------------------------
Table A-24 Miscellaneous Operators
-------------------------------------------------------------------------------------------------
Value Function Stack Description -------------------------------------------------------------------------------------------------
86 >body ( acf -- apf ) Finds parameter field address from compilation address
85 body'> ( apf -- acf ) Finds compilation address from parameter field address
CR emit-byte ( n -- ) Outputs FCode byte (use with tokenizer[)
00 end0 ( -- ) Marks the end of FCode
ff end1 ( -- ) Alternates form for end0 (not recommended)
CR fcode-version1 ( -- ) Begins FCode program
- fload filename ( -- ) Begins tokenizing filename
- headerless ( -- ) Creates new names with new-token (no name fields)
- headers ( -- ) Creates new names with named-token (default)
7b noop ( -- ) Does nothing
cc offset16 ( -- ) All further branches use 16-bit offsets (instead of 8-bit)
- tokenizer[ ( -- ) Begins tokenizer program commands
- ]tokenizer ( -- ) Ends tokenizer program commands
CR fcode-version2 ( -- ) Begins 2.0 FCode program, compiles start1 V2
- external ( -- ) Creates new names with external-token V2
-------------------------------------------------------------------------------------------------
Table A-25 Internal Operators, (invalid for program text)
----------------------------------------------------------------------------------------------------------------------
Value Function Stack Description ----------------------------------------------------------------------------------------------------------------------
1-f { table#1-15 } Reserved byte codes, used for 2-byte entries
10 b(lit) ( -- n ) Followed by 32-bit#. Compiled by numeric data
11 b(') ( -- acf ) Followed by a token (1 or 2-byte code) . Compiled by ['] or '
12 b(") ( -- adr len ) Followed by count byte, text. Compiled by " or ."
c3 b(is) ( n -- ) Compiled by is
fd version1 ( -- ) Followed by reserved byte, checksum (2 bytes) , length (4 bytes). Compiled
by fcode-version1, as the first FCode bytes
fe 4-byte-id ( -- ) Followed by 3 identifier bytes. First FCode byte. Not supported.
13 bbranch ( -- ) Followed by offset. Compiled by else or again
14 b?branch ( -- ) Followed by offset. Compiled by if or until
15 b(loop) ( -- ) Followed by offset. Compiled by loop
16 b(+loop) ( n -- ) Followed by offset. Compiled by +loop
17 b(do) ( end start -- ) Followed by offset. Compiled by do
18 b(?do) ( end start -- ) Followed by offset. Compiled by ?do
1b b(leave) ( -- ) Compiled by leave or ?leave
b1 b(<mark) ( -- ) Compiled by begin
b2 b(resolve) ( -- ) Compiled by else or then
c4 b(case) ( -- ) Compiled by case
c5 b(endcase) ( -- ) Compiled by endcase
c6 b(endof) ( -- ) Compiled by endof
1c b(of) ( sel testval -- Followed by offset. Compiled by of
sel | none )
b5 new-token ( -- ) Followed by table#, code#, token-type. Compiled by any defining word.
Headerless, not used normally.
b6 named-token ( -- ) Followed by packed string (count,text), table#, code#, token-type. Compiled
by any defining word (: value constant etc.)
b7 b(:) Token-type compiled by :
b8 b(value) Token-type compiled by value
b9 b(variable) Token-type compiled by variable
ba b(constant) Token-type compiled by constant
bb b(create) Token-type compiled by create
bc b(defer) Token-type compiled by defer
bd b(buffer:) Token-type compiled by buffer:
be b(field) Token-type compiled by field
c2 b(;) ( -- ) End a colon definition. Compiled by ;
ca external-token ( -- ) Like named-token, but name header is always created at probe time V2
f0 start0 ( -- ) Like version1, but for version 2.0 FCodes. Uses 16-bit branches. Fetches
successive tokens from same address V2
f1 start1 ( -- ) Like version1, but for version 2.0 FCodes. Uses 16-bit branches. Fetches
successive tokens from consecutive addresses. Compiled by fcode-version2
V2
f2 start2 ( -- ) Like version1, but for version 2.0 FCodes. Uses 16-bit branches. Fetches
successive tokens from consecutive 16-bit addresses V2
f3 start4 ( -- ) Like version1, but for version 2.0 FCodes. Uses 16-bit branches. Fetches
successive tokens from consecutive 32-bit addresses V2
----------------------------------------------------------------------------------------------------------------------
Table A-26 Memory Allocation
----------------------------------------------------------------------------------------------------------
Value Function Stack Description ----------------------------------------------------------------------------------------------------------
0101 dma-alloc ( nbytes -- virt ) Maps in nbytes of DMA space, return virtual adr
0104 memmap ( phys space nbytes -- virt ) Maps in a region, return virtual address
0105 free-virtual ( virt nbytes -- ) Frees virtual memory from memmap, dma-alloc,or map-sbus
0106 >physical ( virt -- phys space ) Returns physical adr and space for virtual adr
----------------------------------------------------------------------------------------------------------
Table A-27 Non-volatile Parameters
---------------------------------------------------------------------------------------------------------------------
Value Function Stack Description ---------------------------------------------------------------------------------------------------------------------
010f my-params ( -- adr len ) Returns a data array for this plug-in device. The data format is defined
specifically for each plug-in device, in order to customize the device. Params for
each device, as needed, will be stored in the system NVRAM
---------------------------------------------------------------------------------------------------------------------
Table A-28 Properties
----------------------------------------------------------------------------------------------------------------------
Value Function Stack Description ----------------------------------------------------------------------------------------------------------------------
0110 attribute ( xdr-adr xdr-len name-adr Declares a property with the given value structure, for
name-len -- ) the given name string.
0111 xdrint ( n -- xdr-adr xdr-len ) Converts a number into an xdr-format string
0112 xdr+ ( xdr-adr1 xdr-len1 xdr-adr2 Merges two xdr-format strings. They must have been
xdr-len2 -- xdr-adr xdr-len1+2 ) created sequentially
0113 xdrphys ( phys space -- xdr-adr xdr-len ) Converts physical address and space into an xdr-
format string
0114 xdrstring ( adr len -- xdr-adr xdr-len ) Converts a string into an xdr-format string
0115 xdrbytes ( adr len -- xdr-adr xdr-len ) Converts a byte array into an xdr-format string V2.1
021a get-my-attribute ( nam-adr nam-len -- true | Returns the xdr-format string for the given property
xdr-adr xdr-len false ) name V2
021b xdrtoint ( xdr-adr xdr-len -- xdr2-adr Converts the beginning of an xdr-format string to an
xdr2-len n ) integer V2
021c xdrtostring ( xdr-adr xdr-len -- xdr2-adr Converts the beginning of an xdr-format string to a
xdr2-len adr len ) normal string V2
021d get-inherited- ( nam-adr nam-len -- true | xdr-adr Returns the value string for the given property,
attribute xdr-len false ) searches parents' properties if not found V2
021e delete-attribute ( nam-adr nam-len -- ) Deletes the property with the given name V2
021f get-package- ( adr len phandle -- true | xdr-adr Returns the xdr-format string for the given property
attribute xdr-len false ) name in the package "phandle" V2
----------------------------------------------------------------------------------------------------------------------
Table A-29 Commmonly-used Properties
------------------------------------------------------------------------------------------------------------------------
Value Function Stack Description ------------------------------------------------------------------------------------------------------------------------
0116 reg ( phys space size -- ) Declares location and size of device registers
0117 intr ( intr-level vector -- ) Declares interrupt level and vector for this device
0118 driver ( adr len -- ) Not supported
0119 model ( adr len -- ) Declares model# for this device, such as " SUNW,501-1415-01"
011a device-type ( adr len -- ) Declares type of device, e.g. " display", " block", " network", or " byte"
CR name ( adr len -- ) Declares SunOS driver name, as in " SUNW,zebra"
0201 device- ( adr len -- ) Creates the "name" attribute with the given value V2
name
------------------------------------------------------------------------------------------------------------------------
Table A-30 System Version Information
-------------------------------------------------------------------------------
Value Function Stack Description -------------------------------------------------------------------------------
0210 processor- ( -- processor- Obsolete V2
type type )
0211 firmware- ( -- n ) Returns major/minor CPU firmware version V2
version
0212 fcode- ( -- n ) Obsolete V2
version
87 version ( -- n ) Returns major/minor FCode interface version
-------------------------------------------------------------------------------
Table A-31 Device Activation Vector Setup
-----------------------------------------------------------------------------------------
Value Function Stack Description -----------------------------------------------------------------------------------------
011c is-install ( acf -- ) Identifies "install" routine to allocate a framebuffer
011d is-remove ( acf -- ) Identifies "remove" routine, to deallocate a framebuffer
011e is-selftest ( acf -- ) Identifies "selftest" routine for this framebuffer
011f new-device ( -- ) Opens an additional device, using this driver package
0127 finish-device ( -- ) Closes out current device, ready for new-device
-----------------------------------------------------------------------------------------
Table A-32 Self-test utility Routines
--------------------------------------------------------------------------------------------------
Value Function Stack Description --------------------------------------------------------------------------------------------------
0120 diagnostic-mode? ( -- flag ) Returns "true" if extended diagnostics are desired
0121 display-status ( n -- ) Obsolete
0122 memory-test-suite ( adr len -- status ) Calls memory tester for given region
0123 group-code ( -- adr ) Obsolete
0124 mask ( -- adr ) Variable, holds "mask" used by memory-test-suite
--------------------------------------------------------------------------------------------------
Table A-33 Time Utilities
--------------------------------------------------------------------------------------
Value Function Stack Description --------------------------------------------------------------------------------------
0125 get-msecs ( -- ms ) Returns the current time, in milliseconds, approx.
0126 ms ( n -- ) Delays for n milliseconds. Resolution is 1 millisecond
0213 alarm ( acf n -- ) Periodically execute acf. If n=0, stop. V2
--------------------------------------------------------------------------------------
Table A-34 Machine-specific Support
------------------------------------------------------------------------------------------------
Value Function Stack Description ------------------------------------------------------------------------------------------------
0130 map-sbus ( phys size -- virt ) Maps a region of memory in 'sbus' address space
0131 sbus-intrcpu ( sbus-intr# -- cpu-intr# ) Translates SBus interrupt# into CPU interrupt#
------------------------------------------------------------------------------------------------
Note - Table A-35 through Table A-41 apply only to display device-types.
Table A-35 User-set terminal Emulation Values
-------------------------------------------------------------------------------------------------------------------
Value Function Stack Description -------------------------------------------------------------------------------------------------------------------
0150 #lines ( -- n ) Number of lines of text being used for display. This word must be initialized (using
is). fbx-install does this automatically, and also properly incorporates the NVRAM
parameter "screen-#rows"
0151 #columns ( -- n ) Number of columns (chars/line) used for display. This word must be initialized
(using is). fbx-install does this automatically, and also properly incorporates the
NVRAM parameter "screen-#columns"
-------------------------------------------------------------------------------------------------------------------
Table A-36 Terminal Emulator-set Terminal Emulation Values
---------------------------------------------------------------------------------------
Value Function Stack Description ---------------------------------------------------------------------------------------
0152 line# ( -- n ) Current cursor position (line#). 0 is top line
0153 column# ( -- n ) Current cursor position (column#). 0 is left char.
0154 inverse? ( -- flag ) True if output is inverted (white-on-black)
0155 inverse-screen? ( -- flag ) True if screen has been inverted (black background)
---------------------------------------------------------------------------------------
Table A-37 Terminal Emulation Routines*
-----------------------------------------------------------------------------------------------------------------------------------------------
Value Function Stack Description -----------------------------------------------------------------------------------------------------------------------------------------------
0157 draw-character ( char -- ) Paints the given character and advance the
cursor
0158 reset-screen ( -- ) Initializes the display device
0159 toggle-cursor ( -- ) Draws or erase the cursor
015a erase-screen ( -- ) Clears all pixels on the display
015b blink-screen ( -- ) Flashes the display momentarily
015c invert-screen ( -- ) Changes all pixels to the opposite color
015d insert-characters ( n -- ) Inserts n blanks just before the cursor
015e delete-characters ( n -- ) Deletes n characters starting at with cursor
character, rightward. Remaining chars slide
left
015f insert-lines ( n -- ) Inserts n blank lines just before the current
line, lower lines are scrolled downward
0160 delete-lines ( n -- ) Deletes n lines starting with the current line,
lower lines are scrolled upward
0161 draw-logo ( line# logoaddr logowidth logoheight -- ) Draws the logo
*defer-type loadable routines.
-----------------------------------------------------------------------------------------------------------------------------------------------
Table A-38 Frame Buffer Parameter Values*
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Value Function Stack Description -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
016c char-height ( -- n ) Height (in pixels) of a character (usually 22)
016d char-width ( -- n ) Width (in pixels) of a character (usually 12)
016f fontbytes ( -- n ) Number of bytes/scan line for font entries (usually 2)
0162 frame-buffer-adr ( -- adr ) Address of frame buffer memory
0163 screen-height ( -- n ) Total height of the display (in pixels)
0164 screen-width ( -- n ) Total width of the display (in pixels)
0165 window-top ( -- n ) Distance (in pixels) between display top and text window
0166 window-left ( -- n ) Distance (in pixels) between display left edge and text window left edge
*These must all be initialized before using any fbx- routines.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Table A-39 Font Operators
-----------------------------------------------------------------------------------------------------------
Value Function Stack Description -----------------------------------------------------------------------------------------------------------
016a default-font ( -- fontbase charwidth charheight Returns default font values, plugs directly into
fontbytes #firstchar #chars ) set-font
016b set-font ( fontbase charwidth charheight Sets the character font for text output
fontbytes #firstchar #chars -- )
016e >font ( char -- adr ) Returns font address for given ASCII character
-----------------------------------------------------------------------------------------------------------
Table A-40 One-bit Framebuffer Utilities
-------------------------------------------------------------------------------------------------------------------------
Value Function Stack Description -------------------------------------------------------------------------------------------------------------------------
0170 fb1-draw-character ( char -- ) Paints the character and advance the cursor
0171 fb1-reset-screen ( -- ) Initializes the display device (noop)
0172 fb1-toggle-cursor ( -- ) Draws or erases the cursor
0173 fb1-erase-screen ( -- ) Clears all pixels on the display
0174 fb1-blink-screen ( -- ) Inverts the screen, twice (slow)
0175 fb1-invert-screen ( -- ) Changes all pixels to the opposite color
0176 fb1-insert-characters ( n -- ) Inserts n blanks just before the cursor
0177 fb1-delete-characters ( n -- ) Deletes n characters, starting at with cursor
character, rightward. Remaining chars slide left
0178 fb1-insert-lines ( n -- ) Inserts n blank lines just before the current line,
lower lines are scrolled downward
0179 fb1-delete-lines ( n -- ) Deletes n lines starting with the current line,lower
lines are scrolled upward
017a fb1-draw-logo ( line# logoaddr logowidth Draws the logo
logoheight -- )
017b fb1-install ( width height #columns #lines -- ) Installs the one-bit built-in routines
017c fb1-slide-up ( n -- ) Like fb1-delete-lines, but doesn't clear lines at
bottom
-------------------------------------------------------------------------------------------------------------------------
Table A-41 Eight-bit Framebuffer Utilities
---------------------------------------------------------------------------------------------------------------------
Value Function Stack Description ---------------------------------------------------------------------------------------------------------------------
0180 fb8-draw-character ( char -- ) Paints the character and advance the cursor
0181 fb8-reset-screen ( -- ) Initializes the display device (noop)
0182 fb8-toggle-cursor ( -- ) Draws or erases the cursor
0183 fb8-erase-screen ( -- ) Clears all pixels on the display
0184 fb8-blink-screen ( -- ) Inverts the screen, twice (slow)
0185 fb8-invert-screen ( -- ) Changes all pixels to the opposite color
0186 fb8-insert-characters ( n -- ) Inserts n blanks just before the cursor
0187 fb8-delete-characters ( n -- ) Deletes n characters starting at with cursor character,
rightward. Remaining chars slide left
0188 fb8-insert-lines ( n -- ) Inserts n blank lines just before the current line, lower
lines are scrolled downward
0189 fb8-delete-lines ( n -- ) Deletes n lines starting with the current line, lower
lines are scrolled upward
018a fb8-draw-logo ( line# logoaddr logowidth Draws the logo
logoheight -- )
018b fb8-install ( width height #columns Installs the eight-bit built-in routines
#lines -- )
---------------------------------------------------------------------------------------------------------------------
Table A-42 Package Support
----------------------------------------------------------------------------------------------------------------------
Value Function Stack Description ----------------------------------------------------------------------------------------------------------------------
023c peer ( phandle -- Returns phandle of package that is the next child of the the
next-phandle ) parent of the package V2.3
023b child ( parent-phandle -- Returns phandle of the package that is the first child of the
child-phandle ) package parent-phandle V2.3
0204 find-package ( adr len -- false | Finds a package named "adr len" V2
phandle true )
0205 open-package ( adr len phandle -- Opens an instance of the package "phandle," passes arguments
ihandle | 0 ) "adr len" V2
020f $open-package ( arg-adr arg-len adr len -- Finds a package "adr len," then opens it with arguments "arg-
ihandle | 0 ) adr arg-len" V2
020a my-parent ( -- ihandle ) Returns the ihandle of the parent of the current package
instance V2
0203 my-self ( -- ihandle ) Returns the instance handle of currently-executing package
instance V2
020b ihandlephandle ( ihandle -- phandle ) Converts an ihandle to a phandle V2
0206 close-package ( ihandle -- ) Closes an instance of a package V2
0207 find-method ( adr len phandle -- false | Finds the method (command) named "adr len" within the
acf true ) package "phandle" V2
0208 call-package ( [...] acf ihandle -- [...] ) Executes the method "acf" within the instance "ihandle" V2
020e $call-method ( [...]adr len ihandle -- Executes the method named "adr len" within the instance
[...]) "ihandle" V2
0209 $call-parent ( [...] adr len -- [...] ) Executes the method "adr len" within the parent's package V2
0202 my-args ( -- adr len ) Returns the argument string "adr len" passed when this package
was opened V2
020d my-unit ( -- low high ) Returns the physical unit number pair for this package V2
0102 my-address ( -- phys ) Returns the physical adr of this plug-in device. "phys" is a
"magic" number, usable by other routines V2
0103 my-space ( -- space ) Returns address space of plug-in device. "space" is a "magic"
number, usable by other routines V2
----------------------------------------------------------------------------------------------------------------------
Table A-43 Asynchronous Support
-----------------------------------------------------------------------------------------------------------
Value Function Stack Description -----------------------------------------------------------------------------------------------------------
0213 alarm ( acf n -- ) Executes the method (command) indicated by "acf" every "n" milliseconds V2
0219 user-abort ( -- ) Abort after alarm routine finishes execution
-----------------------------------------------------------------------------------------------------------
Table A-44 Miscellaneous Operations
------------------------------------------------------------------------------------------------------
Value Function Stack Description ------------------------------------------------------------------------------------------------------
0214 (is-user-word) ( adr len acf -- ) Creates a new word called "adr len" which executes "acf" V2
01a4 mac-address ( -- adr len ) Returns the MAC address V2
------------------------------------------------------------------------------------------------------
Table A-45 Interpretation
-------------------------------------------------------------------------------------------------------------
Value Function Stack Description -------------------------------------------------------------------------------------------------------------
0215 suspend-fcode ( -- ) Suspends execution of FCode, resumes later if an undefined command is required
V2
-------------------------------------------------------------------------------------------------------------
Table A-46 Error Handling
-----------------------------------------------------------------------------------------------------------------
Value Function Stack Description -----------------------------------------------------------------------------------------------------------------
0216 abort ( -- ) Aborts FCode execution, returns to the "ok" prompt V2
0217 catch ( [...] acf -- [...] error-code ) Executes "acf," returns throw error code or 0 if throw not
encountered V2
0218 throw ( error-code -- ) Returns given error code to catch V2
fc ferror ( -- ) Displays "Unimplemented FCode" and stops FCode interpretation
-----------------------------------------------------------------------------------------------------------------
The following table lists, in hexadecimal order, currently-assigned FCode byte values.
Table A-47 FCodes by Byte Value
-----------------------------------------------------------------------------------------------------------
Value Function Stack Version 2? -----------------------------------------------------------------------------------------------------------
00 end0 ( -- )
10 b(lit) ( -- n )
11 b(') ( -- acf )
12 b(") ( -- adr len )
13 bbranch ( -- )
14 b?branch ( -- )
15 b(loop) ( -- )
16 b(+loop) ( n -- )
17 b(do) ( end start -- )
18 b(?do) ( end start -- )
19 i ( -- n )
1a j ( -- n )
1b b(leave) ( -- )
1c b(of) ( sel testval -- sel | none )
1d execute ( acf -- )
1e + ( n1 n2 -- n3 )
1f - ( n1 n2 -- n3 )
20 * ( n1 n2 -- n3 )
21 / ( n1 n2 -- quot )
22 mod ( n1 n2 -- rem )
23 and ( n1 n2 -- n3 )
24 or ( n1 n2 -- n3 )
25 xor ( n1 n2 -- n3 )
26 not ( n1 -- n2 )
<<
27 ( n1 +n -- n2 )
28 >'> ( n1 +n -- n2 )
29 >a ( n1 +n -- n2 )
2a /mod ( n1 n2 -- rem quot )
2b u/mod ( ul un -- un.rem un.quot )
2c negate ( n1 -- n2 )
2d abs ( n -- u )
2e min ( n1 n2 -- n3 )
2f max ( n1 n2 -- n3 )
30 >r ( n -- ) ( rs: -- n)
31 r'> ( -- n ) ( rs: n -- )
32 r@ ( -- n ) ( rs: -- )
33 exit ( -- )
34 0= ( n -- flag )
35 0<'> ( n -- flag )
36 0< ( n -- flag )
37 0<= ( n -- flag )
38 0'> ( n -- flag )
39 0= ( n -- flag )
<
3a ( n1 n2 -- flag )
>
3b ( n1 n2 -- flag )
3c = ( n1 n2 -- flag )
3d <'> ( n1 n2 -- flag )
3e u'> ( u1 n2 -- flag )
3f u<= ( u1 n2 -- flag )
40 u< ( u1 u2 -- flag )
41 u= ( u1 n2 -- flag )
42 >= ( n1 n2 -- flag )
43 <= ( n1 n2 -- flag )
44 between ( n min max -- flag )
45 within ( n min max -- flag )
46 drop ( n -- )
47 dup ( n -- n n )
48 over ( n1 n2 -- n1 n2 n1 )
49 swap ( n1 n2 -- n2 n1 )
4a rot ( n1 n2 n3 -- n2 n3 n1 )
4b -rot ( n1 n2 n3 -- n3 n1 n2 )
4c tuck ( n1 n2 -- n2 n1 n2 )
4d nip ( n1 n2 -- n2 )
4e pick ( +n -- n2 )
4f roll ( +n -- )
50 ?dup ( n -- n n | 0 )
51 depth ( -- +n )
52 2drop ( n1 n2 -- )
53 2dup ( n1 n2 -- n1 n2 n1 n2 )
54 2over ( n1 n2 n3 n4 -- n1 n2 n3 n4 n1 n2 )
55 2swap ( n1 n2 n3 n4 -- n3 n4 n1 n2 )
56 2rot ( n1 n2 n3 n4 n5 n6 -- n3 n4 n5 n6 n1 n2 )
57 2/ ( n1 -- n2 )
58 u2/ ( u1 -- u2 )
59 2* ( n1 -- n2 )
5a /c ( -- n )
5b /w ( -- n )
5c /l ( -- n )
5d /n ( -- n )
5e ca+ ( adr1 index -- adr2 )
5f wa+ ( adr1 index -- adr2 )
60 la+ ( adr1 index -- adr2 )
61 na+ ( adr1 index -- adr2 )
62 ca1+ ( adr1 -- adr2 )
63 wa1+ ( adr1 -- adr2 )
64 la1+ ( adr1 -- adr2 )
65 na1+ ( adr1 -- adr2 )
66 /c* ( n1 -- n2 )
67 /w* ( n1 -- n2 )
68 /l* ( n1 -- n2 )
69 /n* ( n1 -- n2 )
6a on ( adr -- )
6b off ( adr -- )
6c +! ( n adr -- )
6d @ ( adr -- n )
6e l@ ( adr -- l )
6f w@ ( adr -- w )
70 <w@ ( adr -- n )
71 c@ ( adr -- byte )
72 ! ( n adr -- )
73 l! ( l adr -- )
74 w! ( w adr -- )
75 c! ( n adr -- )
76 2@ ( adr -- n1 n2 )
77 2! ( n1 n2 adr -- )
78 move ( adr1 adr2 u -- )
79 fill ( adr u byte -- )
7a comp ( adr1 adr2 len -- n )
7b noop ( -- )
7c lwsplit ( l -- w.low w.high )
7d wljoin ( w.low w.high -- l )
7e lbsplit ( l -- b.low b2 b3 b.high )
7f bljoin ( b.low b2 b3 b.hi -- l )
80 flip ( w1 -- w2 )
81 upc ( char -- upper-case-char )
82 lcc ( char -- lower-case-char )
83 pack ( adr len pstr -- pstr )
84 count ( pstr -- adr +n )
85 body'> ( apf -- acf )
86 >body ( acf -- apf )
87 version ( -- n )
88 span ( -- adr )
8a expect ( adr +n -- )
8b alloc-mem ( nbytes -- adr )
8c free-mem ( adr nbytes -- )
8d key? ( -- flag )
8e key ( -- char )
8f emit ( char -- )
90 type ( adr +n -- )
91 (cr ( -- )
92 cr ( -- )
93 #out ( -- adr )
94 #line ( -- adr )
95 hold ( char -- )
96 <# ( -- )
97 #'> ( l -- adr +n )
98 sign ( n -- )
99 # ( +l1 -- +l2 )
9a #s ( +l -- 0 )
9b u. ( u -- )
9c u.r ( u +n -- )
9d . ( n -- )
9e .r ( n +n -- )
9f .s ( -- )
a0 base ( -- adr )
a2 $number ( adr len -- true | n false ) V2
a3 digit ( char base -- digit true | char false )
a4 -1 ( -- -1 )
a5 0 ( -- 0 )
a6 1 ( -- 1 )
a7 2 ( -- 2 )
a8 3 ( -- 3 )
a9 bl ( -- n )
aa bs ( -- n )
ab bell ( -- n )
ac bounds ( startadr len -- endadr startadr )
ad here ( -- adr )
ae aligned ( adr1 -- adr2 )
af wbsplit ( w -- b.low b.high )
b0 bwjoin ( b.low b.hi -- w )
b1 b(<mark) ( -- )
b2 b(resolve) ( -- )
b5 new-token ( -- )
b6 named-token ( -- )
b7 b(:)
b8 b(value)
b9 b(variable)
ba b(constant)
bb b(create)
bc b(defer)
bd b(buffer:)
be b(field)
c0 instance ( -- ) V2.1
c2 b(;) ( -- )
c3 b(is) ( n -- )
c4 b(case) ( -- )
c5 b(endcase) ( -- )
c6 b(endof) ( -- )
ca external-token ( -- ) V2
cb $find ( adr len -- adr len false | acf +-1 )
cc offset16 ( -- )
cd eval ( ??? adr len -- ? ) V2
d0 c, ( n -- )
d1 w, ( w -- )
d2 l, ( l -- )
d3 , ( n -- )
d4 u*x ( u1[32] u2[32] -- product[64] ) V2
d5 xu/mod ( u1[64] u2[32] -- remainder[32] quot[32] ) V2
d8 x+ ( x1 x2 -- x3 ) V2
d9 x- ( x1 x2 -- x3 ) V2
f0 start0 ( -- ) V2
f1 start1 ( -- ) V2
f2 start2 ( -- ) V2
f3 start4 ( -- ) V2
fc ferror ( -- ) V2.3
fd version1 ( -- )
fe 4-byte-id ( -- )
ff end1 ( -- )
0101 dma-alloc ( nbytes -- virt )
0102 my-address ( -- phys ) V2
0103 my-space ( -- space ) V2
0104 memmap ( physoffset space size -- virtual )
0105 free-virtual ( virt nbytes -- )
0106 >physical ( virt -- phys space )
010f my-params ( -- adr len )
0110 attribute ( xdr-adr xdr-len name-adr name-len -- )
0111 xdrint ( n -- xdr-adr xdr-len )
0112 xdr+ ( xdr-adr1 xdr-len1 xdr-adr2 xdr-len2 -- xdr-adr xdr-len1+2 )
0113 xdrphys ( phys space -- xdr-adr xdr-len )
0114 xdrstring ( adr len -- xdr-adr xdr-len )
0115 xdrbytes ( adr len -- xdr-adr xdr-len ) V2.1
0116 reg ( phys space size -- )
0117 intr ( intr-level vector -- )
0118 driver ( adr len -- )
0119 model ( adr len -- )
011a device-type ( adr len -- )
011b decode-2int ( xdr-adr xdr-len -- phys space ) V2
011c is-install ( acf -- )
011d is-remove ( acf -- )
011e is-selftest ( acf -- )
011f new-device ( -- )
0120 diagnostic-mode? ( -- flag )
0121 display-status ( n -- )
0122 memory-test-suite ( adr len -- status )
0123 group-code ( -- adr )
0124 mask ( -- adr )
0125 get-msecs ( -- ms )
0126 ms ( n -- )
0127 finish-device ( -- )
0130 map-sbus ( phys size -- virt )
0131 sbus-intrcpu ( sbus-intr# -- cpu-intr# )
0150 #lines ( -- n )
0151 #columns ( -- n )
0152 line# ( -- n )
0153 column# ( -- n )
0154 inverse? ( -- flag )
0155 inverse-screen? ( -- flag )
0157 draw-character ( char -- )
0158 reset-screen ( -- )
0159 toggle-cursor ( -- )
015a erase-screen ( -- )
015b blink-screen ( -- )
015c invert-screen ( -- )
015d insert-characters ( n -- )
015e delete-characters ( n -- )
015f insert-lines ( n -- )
0160 delete-lines ( n -- )
0161 draw-logo ( line# logoaddr logowidth logoheight -- )
0162 frame-buffer-adr ( -- adr )
0163 screen-height ( -- n )
0164 screen-width ( -- n )
0165 window-top ( -- n )
0166 window-left ( -- n )
016a default-font ( -- fontbase charwidth charheight fontbytes #firstchar #chars )
016b set-font ( fontbase charwidth charheight fontbytes #firstchar #chars -- )
016c char-height ( -- n )
016d char-width ( -- n )
016e >font ( char -- adr )
016f fontbytes ( -- n )
0170 fb1-draw-character ( char -- )
0171 fb1-reset-screen ( -- )
0172 fb1-toggle-cursor ( -- )
0173 fb1-erase-screen ( -- )
0174 fb1-blink-screen ( -- )
0175 fb1-invert-screen ( -- )
0176 fb1-insert-characters ( n -- )
0177 fb1-delete-characters ( n -- )
0178 fb1-insert-lines ( n -- )
0179 fb1-delete-lines ( n -- )
017a fb1-draw-logo ( line# logoaddr logowidth logoheight -- )
017b fb1-install ( width height #columns #lines -- )
017c fb1-slide-up ( n -- )
0180 fb8-draw-character ( char -- )
0181 fb8-reset-screen ( -- )
0182 fb8-toggle-cursor ( -- )
0183 fb8-erase-screen ( -- )
0184 fb8-blink-screen ( -- )
0185 fb8-invert-screen ( -- )
0186 fb8-insert-characters ( n -- )
0187 fb8-delete-characters ( n -- )
0188 fb8-insert-lines ( n -- )
0189 fb8-delete-lines ( n -- )
018a fb8-draw-logo ( line# logoaddr logowidth logoheight -- )
018b fb8-install ( width height #columns #lines -- )
01a4 mac-address ( -- adr len ) V2
0201 device-name ( adr len -- ) V2
0202 my-args ( -- adr len ) V2
0203 my-self ( -- ihandle ) V2
0204 find-package ( adr len -- false | phandle true ) V2
0205 open-package ( adr len phandle -- ihandle | 0 ) V2
0206 close-package ( ihandle -- ) V2
0207 find-method ( adr len phandle -- false | acf true ) V2
0208 call-package ( [...] acf ihandle -- [...] ) V2
0209 $call-parent ( [...] adr len -- [...] ) V2
020a my-parent ( -- ihandle ) V2
020b ihandlephandle ( ihandle -- phandle ) V2
020d my-unit ( -- low high ) V2
020e $call-method ( [...]adr len ihandle -- [...]) V2
020f $open-package ( arg-adr arg-len adr len -- ihandle | 0 ) V2
0210 processor-type ( -- processor-type ) V2
0211 firmware-version ( -- n ) V2
0212 fcode-version ( -- n ) V2
0213 alarm ( acf n -- ) V2
0214 (is-user-word) ( adr len acf -- ) V2
0215 suspend-fcode ( -- ) V2
0216 abort ( -- ) V2
0217 catch ( [...] acf -- [...] error-code ) V2
0218 throw ( error-code -- ) V2
0219 user-abort ( -- ) V2.1
021a get-my-attribute ( nam-adr nam-len -- true | xdr-adr xdr-len false ) V2
021b xdrtoint ( xdr-adr xdr-len -- xdr2-adr xdr2-len n ) V2
021c xdrtostring ( xdr-adr xdr-len -- xdr2-adr xdr2-len adr len ) V2
021d get-inherited-attribute ( nam-adr nam-len -- true | xdr-adr xdr-len false ) V2
021e delete-attribute ( nam-adr nam-len -- ) V2
021f get-package-attribute ( adr len phandle -- true | xdr-adr xdr-len false ) V2
0220 cpeek ( adr -- false | byte true ) V2
0221 wpeek ( adr -- false | word true ) V2
0222 lpeek ( adr -- false | long true ) V2
0223 cpoke ( byte adr -- ok? ) V2
0224 wpoke ( word adr -- ok? ) V2
0225 lpoke ( long adr -- ok? ) V2
0230 rb@ ( adr -- byte ) V2
0231 rb! ( byte adr -- ) V2
0232 rw@ ( adr -- word ) V2
0233 rw! ( word adr -- ) V2
0234 rl@ ( adr -- long ) V2
0235 rl! ( long adr -- ) V2
0236 wflips ( adr len -- ) V2
0237 lflips ( adr len -- ) V2
0238 probe ( arg-adr arg-len reg-adr reg-len fcode-adr fcode-len -- ) V2.2
0239 probe-virtual ( arg-adr arg-len reg-adr reg-len fcode-adr -- ) V2.2
023b child ( phandle -- child-phandle ) V2.3
023c peer ( phandle -- peer-phandle ) V2.3
0240 left-parse-string ( adr len char -- adrR lenR adrL lenL ) V2.2
- ( text) ( -- )
- (s text) ( -- )
- ]tokenizer ( -- )
- \ ( -- )
- alias ( -- )
- binary ( -- )
- decimal ( -- )
- external ( -- ) V2
- fload filename ( -- )
- headerless ( -- )
- headers ( -- )
- hex ( -- )
- octal ( -- )
- tokenizer[ ( -- )
CR " text" ( -- adr len )
CR ' name ( -- acf )
CR */mod ( n1 n2 n3 -- rem quot )
CR +loop ( n -- )
CR ." text" ( -- )
CR .( text) ( -- )
CR .d ( n -- )
CR .h ( n -- )
CR 1+ ( n1 -- n2 )
CR 1- ( n1 -- n2 )
CR 3dup ( n1 n2 n3 -- n1 n2 n3 n1 n2 n3 )
CR : (colon) name ( -- )
CR ; (semicolon) ( -- )
CR <<a ( n1 +n -- n2 )
CR ? ( adr -- )
CR ?do ( end start -- )
CR ?leave ( flag -- )
CR ['] name ( -- acf )
CR again ( -- )
CR ascii x ( -- char )
CR b# number ( -- n )
CR begin ( -- )
CR blank ( adr len -- )
CR buffer: name ( size -- )
CR carret ( -- n )
CR cmove ( adr1 adr2 u -- )
CR cmove'> ( adr1 adr2 u -- )
CR constant name ( n -- )
CR control x ( -- char )
CR create name ( -- )
CR d# number ( -- n )
CR decimal ( -- )
CR defer name ( -- )
CR do ( end start -- )
CR else ( -- )
CR emit-byte ( n -- )
CR erase ( adr len -- )
CR false ( -- 0 )
CR fcode-version1 ( -- )
CR fcode-version2 ( -- ) V2
CR field name ( offset size -- offset+size )
CR h# number ( -- n )
CR hex ( -- )
CR if ( flag -- )
CR is name ( n -- )
CR leave ( -- )
CR linefeed ( -- n )
CR loop ( -- )
CR name ( adr len -- )
CR newline ( -- n )
CR o# number ( -- n )
CR repeat ( -- )
CR s. ( n -- )
CR space ( -- )
CR spaces ( +n -- )
CR struct ( -- 0 )
CR then ( -- )
CR true ( -- -1 )
CR until ( flag -- )
CR value name ( n -- )
CR variable name ( -- )
CR wflip ( l1 -- l2 )
CR while ( flag -- )
-----------------------------------------------------------------------------------------------------------
The following table lists, in alphabetic order, currently-assigned FCodes.
Table A-48 FCodes by Name
-----------------------------------------------------------------------------------------------------------
Value Function Stack Version 2? -----------------------------------------------------------------------------------------------------------
a5 0 ( -- 0 )
36 0< ( n -- flag )
37 0<= ( n -- flag )
35 0<'> ( n -- flag )
34 0= ( n -- flag )
38 0'> ( n -- flag )
39 0= ( n -- flag )
a6 1 ( -- 1 )
CR 1+ ( n1 -- n2 )
CR 1- ( n1 -- n2 )
a7 2 ( -- 2 )
77 2! ( n1 n2 adr -- )
59 2* ( n1 -- n2 )
57 2/ ( n1 -- n2 )
76 2@ ( adr -- n1 n2 )
52 2drop ( n1 n2 -- )
53 2dup ( n1 n2 -- n1 n2 n1 n2 )
54 2over ( n1 n2 n3 n4 -- n1 n2 n3 n4 n1 n2 )
56 2rot ( n1 n2 n3 n4 n5 n6 -- n3 n4 n5 n6 n1 n2 )
55 2swap ( n1 n2 n3 n4 -- n3 n4 n1 n2 )
a8 3 ( -- 3 )
CR 3dup ( n1 n2 n3 -- n1 n2 n3 n1 n2 n3 )
fe 4-byte-id ( -- )
0216 abort ( -- ) V2
2d abs ( n -- u )
CR again ( -- )
0213 alarm ( acf n -- ) V2
- alias ( -- )
ae aligned ( adr1 -- adr2 )
8b alloc-mem ( nbytes -- adr )
23 and ( n1 n2 -- n3 )
CR ascii x ( -- char )
0110 attribute ( xdr-adr xdr-len name-adr name-len -- )
CR b# number ( -- n )
12 b(") ( -- adr len )
11 b(') ( -- acf )
16 b(+loop) ( n -- )
b7 b(:)
c2 b(;) ( -- )
b1 b(<mark) ( -- )
b2 b(resolve) ( -- )
18 b(?do) ( end start -- )
bd b(buffer:)
c4 b(case) ( selector -- selector )
ba b(constant)
bb b(create)
bc b(defer)
17 b(do) ( end start -- )
c5 b(endcase) ( -- )
c6 b(endof) ( -- )
be b(field)
c3 b(is) ( n -- )
1b b(leave) ( -- )
10 b(lit) ( -- n )
15 b(loop) ( -- )
1c b(of) ( sel testval -- sel | none )
b8 b(value)
b9 b(variable)
14 b?branch ( -- )
a0 base ( -- adr )
13 bbranch ( -- )
CR begin ( -- )
ab bell ( -- n )
44 between ( n min max -- flag )
- binary ( -- )
a9 bl ( -- n )
CR blank ( adr len -- )
015b blink-screen ( -- )
7f bljoin ( b.low b2 b3 b.hi -- l )
85 body'> ( apf -- acf )
ac bounds ( startadr len -- endadr startadr )
aa bs ( -- n )
CR buffer: name ( size -- )
b0 bwjoin ( b.low b.hi -- w )
75 c! ( n adr -- )
d0 c, ( n -- )
71 c@ ( adr -- byte )
5e ca+ ( adr1 index -- adr2 )
62 ca1+ ( adr1 -- adr2 )
0208 call-package ( [...] acf ihandle -- [...] ) V2
CR carret ( -- n )
0217 catch ( [...] acf -- [...] error-code ) V2
016c char-height ( -- n )
016d char-width ( -- n )
0236 child ( phandle -- child-phandle ) V2.3
0206 close-package ( ihandle -- ) V2
CR cmove ( adr1 adr2 u -- )
CR cmove'> ( adr1 adr2 u -- )
0153 column# ( -- n )
7a comp ( adr1 adr2 len -- n )
CR constant name ( n -- )
CR control x ( -- char )
84 count ( pstr -- adr +n )
0220 cpeek ( adr -- false | byte true ) V2
0223 cpoke ( byte adr -- ok? ) V2
92 cr ( -- )
CR create name ( -- )
CR d# number ( -- n )
- decimal ( -- )
CR decimal ( -- )
011b decode-2int ( xdr-adr xdr-len -- phys space ) V2
016a default-font ( -- fontbase charwidth charheight fontbytes #firstchar #chars )
CR defer name ( -- )
021e delete-attribute ( nam-adr nam-len -- ) V2
015e delete-characters ( n -- )
0160 delete-lines ( n -- )
51 depth ( -- +n )
0201 device-name ( adr len -- ) V2
011a device-type ( adr len -- )
0120 diagnostic-mode? ( -- flag )
a3 digit ( char base -- digit true | char false )
0121 display-status ( n -- )
0101 dma-alloc ( nbytes -- virt )
CR do ( end start -- )
0157 draw-character ( char -- )
0161 draw-logo ( line# logoaddr logowidth logoheight -- )
0118 driver ( adr len -- )
46 drop ( n -- )
47 dup ( n -- n n )
CR else ( -- )
8f emit ( char -- )
CR emit-byte ( n -- )
00 end0 ( -- )
ff end1 ( -- )
CR erase ( adr len -- )
015a erase-screen ( -- )
cd eval ( ??? adr len -- ? ) V2
1d execute ( acf -- )
33 exit ( -- )
8a expect ( adr +n -- )
- external ( -- ) V2
ca external-token ( -- ) V2
CR false ( -- 0 )
0174 fb1-blink-screen ( -- )
0177 fb1-delete-characters ( n -- )
0179 fb1-delete-lines ( n -- )
0170 fb1-draw-character ( char -- )
017a fb1-draw-logo ( line# logoaddr logowidth logoheight -- )
0173 fb1-erase-screen ( -- )
0176 fb1-insert-characters ( n -- )
0178 fb1-insert-lines ( n -- )
017b fb1-install ( width height #columns #lines -- )
0175 fb1-invert-screen ( -- )
0171 fb1-reset-screen ( -- )
017c fb1-slide-up ( n -- )
0172 fb1-toggle-cursor ( -- )
0184 fb8-blink-screen ( -- )
0187 fb8-delete-characters ( n -- )
0189 fb8-delete-lines ( n -- )
0180 fb8-draw-character ( char -- )
018a fb8-draw-logo ( line# logoaddr logowidth logoheight -- )
0183 fb8-erase-screen ( -- )
0186 fb8-insert-characters ( n -- )
0188 fb8-insert-lines ( n -- )
018b fb8-install ( width height #columns #lines -- )
0185 fb8-invert-screen ( -- )
0181 fb8-reset-screen ( -- )
0182 fb8-toggle-cursor ( -- )
0212 fcode-version ( -- n ) V2
CR fcode-version1 ( -- )
CR fcode-version2 ( -- ) V2
fc ferror ( -- ) V2.3
CR field name ( offset size -- offset+size )
79 fill ( adr u byte -- )
0207 find-method ( adr len phandle -- false | acf true ) V2
0204 find-package ( adr len -- false | phandle true ) V2
0127 finish-device ( -- )
0211 firmware-version ( -- n ) V2
80 flip ( w1 -- w2 )
- fload filename ( -- )
016f fontbytes ( -- n )
0162 frame-buffer-adr ( -- adr )
8c free-mem ( adr nbytes -- )
0105 free-virtual ( virt nbytes -- )
021d get-inherited-attribute ( nam-adr nam-len -- true | xdr-adr xdr-len false ) V2
0125 get-msecs ( -- ms )
021a get-my-attribute ( nam-adr nam-len -- true | xdr-adr xdr-len false ) V2
021f get-package-attribute ( adr len phandle -- true | xdr-adr xdr-len false ) V2
0123 group-code ( -- adr )
CR h# number ( -- n )
- headerless ( -- )
- headers ( -- )
ad here ( -- adr )
- hex ( -- )
CR hex ( -- )
95 hold ( char -- )
19 i ( -- n )
CR if ( flag -- )
020b ihandlephandle ( ihandle -- phandle ) V2
015d insert-characters ( n -- )
015f insert-lines ( n -- )
c0 instance ( -- ) V2.1
0117 intr ( intr-level vector -- )
0155 inverse-screen? ( -- flag )
0154 inverse? ( -- flag )
015c invert-screen ( -- )
CR is name ( n -- )
011c is-install ( acf -- )
011d is-remove ( acf -- )
011e is-selftest ( acf -- )
1a j ( -- n )
8e key ( -- char )
8d key? ( -- flag )
73 l! ( l adr -- )
d2 l, ( l -- )
6e l@ ( adr -- l )
60 la+ ( adr1 index -- adr2 )
64 la1+ ( adr1 -- adr2 )
7e lbsplit ( l -- b.low b2 b3 b.high )
82 lcc ( char -- lower-case-char )
CR leave ( -- )
0240 left-parse-string ( adr len char -- adrR lenR adrL lenL ) V2
0237 lflips ( adr len -- ) V2
0152 line# ( -- n )
CR linefeed ( -- n )
CR loop ( -- )
0222 lpeek ( adr -- false | long true ) V2
0225 lpoke ( long adr -- ok? ) V2
7c lwsplit ( l -- w.low w.high )
01a4 mac-address ( -- adr len ) V2
0130 map-sbus ( phys size -- virt )
0124 mask ( -- adr )
2f max ( n1 n2 -- n3 )
0122 memory-test-suite ( adr len -- status )
0104 memmap ( physoffset space size -- virtual )
2e min ( n1 n2 -- n3 )
22 mod ( n1 n2 -- rem )
0119 model ( adr len -- )
78 move ( adr1 adr2 u -- )
0126 ms ( n -- )
0102 my-address ( -- phys ) V2
0202 my-args ( -- adr len ) V2
010f my-params ( -- adr len )
020a my-parent ( -- ihandle ) V2
0203 my-self ( -- ihandle ) V2
0103 my-space ( -- space ) V2
020d my-unit ( -- low high ) V2
61 na+ ( adr1 index -- adr2 )
65 na1+ ( adr1 -- adr2 )
CR name ( adr len -- )
b6 named-token ( -- )
2c negate ( n1 -- n2 )
011f new-device ( -- )
b5 new-token ( -- )
CR newline ( -- n )
4d nip ( n1 n2 -- n2 )
7b noop ( -- )
26 not ( n1 -- n2 )
CR o# number ( -- n )
- octal ( -- )
6b off ( adr -- )
cc offset16 ( -- )
6a on ( adr -- )
0205 open-package ( adr len phandle -- ihandle | 0 ) V2
24 or ( n1 n2 -- n3 )
48 over ( n1 n2 -- n1 n2 n1 )
83 pack ( adr len pstr -- pstr )
023c peer ( phandle -- peerhandle ) V2.3
4e pick ( +n -- n2 )
0238 probe ( arg-adr arg-len reg-adr reg-len fcode-adr fcode-len -- ) V2.2
0239 probe-virtual ( arg-adr arg-len reg-adr reg-len fcode-adr -- ) V2.2
0210 processor-type ( -- processor-type ) V2
31 r'> ( -- n ) ( rs: n -- )
32 r@ ( -- n ) ( rs: -- )
0231 rb! ( byte adr -- ) V2
0230 rb@ ( adr -- byte ) V2
0116 reg ( phys space size -- )
CR repeat ( -- )
0158 reset-screen ( -- )
0235 rl! ( long adr -- ) V2
0234 rl@ ( adr -- long ) V2
4f roll ( +n -- )
4a rot ( n1 n2 n3 -- n2 n3 n1 )
0233 rw! ( word adr -- ) V2
0232 rw@ ( adr -- word ) V2
CR s. ( n -- )
0131 sbus-intrcpu ( sbus-intr# -- cpu-intr# )
0163 screen-height ( -- n )
0164 screen-width ( -- n )
016b set-font ( fontbase charwidth charheight fontbytes #firstchar #chars -- )
98 sign ( n -- )
CR space ( -- )
CR spaces ( +n -- )
88 span ( -- adr )
f0 start0 ( -- ) V2
f1 start1 ( -- ) V2
f2 start2 ( -- ) V2
f3 start4 ( -- ) V2
CR struct ( -- 0 )
0215 suspend-fcode ( -- ) V2
49 swap ( n1 n2 -- n2 n1 )
CR then ( -- )
0218 throw ( error-code -- ) V2
0159 toggle-cursor ( -- )
- tokenizer[ ( -- )
CR true ( -- -1 )
4c tuck ( n1 n2 -- n2 n1 n2 )
90 type ( adr +n -- )
d4 u*x ( u1[32] u2[32] -- product[64] ) V2
9b u. ( u -- )
9c u.r ( u +n -- )
2b u/mod ( ul un -- un.rem un.quot )
58 u2/ ( u1 -- u2 )
40 u< ( u1 u2 -- flag )
3f u<= ( u1 u2 -- flag )
3e u'> ( u1 u2 -- flag )
41 u= ( u1 u2 -- flag )
CR (u.) ( n -- adr len )
CR until ( flag -- )
81 upc ( char -- upper-case-char )
0219 user-abort ( -- ) V2.1
CR value name ( n -- )
CR variable name ( -- )
87 version ( -- n )
fd version1 ( -- )
74 w! ( w adr -- )
d1 w, ( w -- )
6f w@ ( adr -- w )
5f wa+ ( adr1 index -- adr2 )
63 wa1+ ( adr1 -- adr2 )
af wbsplit ( w -- b.low b.high )
CR wflip ( l1 -- l2 )
0236 wflips ( adr len -- ) V2
CR while ( flag -- )
0166 window-left ( -- n )
0165 window-top ( -- n )
45 within ( n min max -- flag )
7d wljoin ( w.low w.high -- l )
0221 wpeek ( adr -- false | word true ) V2
0224 wpoke ( word adr -- ok? ) V2
d8 x+ ( x1 x2 -- x3 ) V2
d9 x- ( x1 x2 -- x3 ) V2
0112 xdr+ ( xdr-adr1 xdr-len1 xdr-adr2 xdr-len2 -- xdr-adr xdr-len1+2 )
0115 xdrbytes ( adr len -- xdr-adr xdr-len ) V2.1
0111 xdrint ( n -- xdr-adr xdr-len )
0113 xdrphys ( phys space -- xdr-adr xdr-len )
0114 xdrstring ( adr len -- xdr-adr xdr-len )
021b xdrtoint ( xdr-adr xdr-len -- xdr2-adr xdr2-len n ) V2
021c xdrtostring ( xdr-adr xdr-len -- xdr2-adr xdr2-len adr len ) V2
25 xor ( n1 n2 -- n3 )
d5 xu/mod ( u1[64] u2[32] -- remainder[32] quot[32] ) V2
CR : (colon) name ( -- )
CR ; (semicolon) ( -- )
<
3a ( n1 n2 -- flag )
96 <# ( -- )
<<
27 ( n1 +n -- n2 )
CR <<a ( n1 +n -- n2 )
43 <= ( n1 n2 -- flag )
3d <'> ( n1 n2 -- flag )
70 <w@ ( adr -- n )
3c = ( n1 n2 -- flag )
>
3b ( n1 n2 -- flag )
42 >= ( n1 n2 -- flag )
28 >'> ( n1 +n -- n2 )
29 >a ( n1 +n -- n2 )
86 >body ( acf -- apf )
016e >font ( char -- adr )
0106 >physical ( virt -- phys space )
30 >r ( n -- ) ( rs: -- n)
CR ? ( adr -- )
CR ?do ( end start -- )
50 ?dup ( n -- n n | 0 )
CR ?leave ( flag -- )
6d @ ( adr -- n )
CR ['] name ( -- acf )
- \ ( -- )
- ]tokenizer ( -- )
72 ! ( n adr -- )
CR " text" ( -- adr len )
99 # ( +l1 -- +l2 )
97 #'> ( l -- adr +n )
0151 #columns ( -- n )
94 #line ( -- adr )
0150 #lines ( -- n )
93 #out ( -- adr )
9a #s ( +l -- 0 )
020e $call-method ( [...]adr len ihandle -- [...]) V2
0209 $call-parent ( [...] adr len -- [...] ) V2
cb $find ( adr len -- adr len false | acf +-1 )
a2 $number ( adr len -- true | n false ) V2
020f $open-package ( arg-adr arg-len adr len -- ihandle | 0 ) V2
CR ' name ( -- acf )
- ( text) ( -- )
91 (cr ( -- )
CR (.) ( n -- adr len )
0214 (is-user-word) ( adr len acf -- ) V2
- (s text) ( -- )
20 * ( n1 n2 -- n3 )
CR */mod ( n1 n2 n3 -- rem quot )
1e + ( n1 n2 -- n3 )
6c +! ( n adr -- )
CR +loop ( n -- )
d3 , ( n -- )
1f - ( n1 n2 -- n3 )
a4 -1 ( -- -1 )
4b -rot ( n1 n2 n3 -- n3 n1 n2 )
9d . ( n -- )
CR ." text" ( -- )
CR .( text) ( -- )
CR .d ( n -- )
CR .h ( n -- )
9e .r ( n +n -- )
9f .s ( -- )
21 / ( n1 n2 -- quot )
5a /c ( -- n )
66 /c* ( n1 -- n2 )
5c /l ( -- n )
68 /l* ( n1 -- n2 )
2a /mod ( n1 n2 -- rem quot )
5d /n ( -- n )
69 /n* ( n1 -- n2 )
5b /w ( -- n )
67 /w* ( n1 -- n2 )
-----------------------------------------------------------------------------------------------------------
The following table lists, in alphabetic order, Version 2 FCodes.
Table A-49 Version 2 FCodes
--------------------------------------------------------------------------------------------------
Value Function Stack Version --------------------------------------------------------------------------------------------------
0216 abort ( -- ) V2
0213 alarm ( acf n -- ) V2
0208 call-package ( [...] acf ihandle -- [...] ) V2
0217 catch ( [...] acf -- [...] error-code ) V2
0236 child ( phandle -- child-phandle ) V2.3
0206 close-package ( ihandle -- ) V2
0220 cpeek ( adr -- false | byte true ) V2
0223 cpoke ( byte adr -- ok? ) V2
011b decode-2int ( xdr-adr xdr-len -- phys space ) V2
021e delete-attribute ( nam-adr nam-len -- ) V2
0201 device-name ( adr len -- ) V2
cd eval ( ??? adr len -- ? ) V2
- external ( -- ) V2
ca external-token ( -- ) V2
0212 fcode-version ( -- n ) V2
CR fcode-version2 ( -- ) V2
fc ferror ( -- ) V2.3
0207 find-method ( adr len phandle -- false | acf true ) V2
0204 find-package ( adr len -- false | phandle true ) V2
0211 firmware-version ( -- n ) V2
021d get-inherited-attribute ( nam-adr nam-len -- true | xdr-adr xdr-len false ) V2
021a get-my-attribute ( nam-adr nam-len -- true | xdr-adr xdr-len false ) V2
021f get-package-attribute ( adr len phandle -- true | xdr-adr xdr-len false ) V2
020b ihandlephandle ( ihandle -- phandle ) V2
c0 instance ( -- ) V2.1
0240 left-parse-string ( adr len char -- adrR lenR adrL lenL ) V2
0237 lflips ( adr len -- ) V2
0222 lpeek ( adr -- false | long true ) V2
0225 lpoke ( long adr -- ok? ) V2
01a4 mac-address ( -- adr len ) V2
0102 my-address ( -- phys ) V2
0202 my-args ( -- adr len ) V2
020a my-parent ( -- ihandle ) V2
0203 my-self ( -- ihandle ) V2
0103 my-space ( -- space ) V2
020d my-unit ( -- low high ) V2
0205 open-package ( adr len phandle -- ihandle | 0 ) V2
023c peer ( phandle -- peerhandle ) V2.3
0238 probe ( arg-adr arg-len reg-adr reg-len fcode-adr fcode-len -- ) V2.2
0239 probe-virtual ( arg-adr arg-len reg-adr reg-len fcode-adr -- ) V2.2
0210 processor-type ( -- processor-type ) V2
0231 rb! ( byte adr -- ) V2
0230 rb@ ( adr -- byte ) V2
0235 rl! ( long adr -- ) V2
0234 rl@ ( adr -- long ) V2
0233 rw! ( word adr -- ) V2
0232 rw@ ( adr -- word ) V2
f0 start0 ( -- ) V2
f1 start1 ( -- ) V2
f2 start2 ( -- ) V2
f3 start4 ( -- ) V2
0215 suspend-fcode ( -- ) V2
0218 throw ( error-code -- ) V2
d4 u*x ( u1[32] u2[32] -- product[64] ) V2
0219 user-abort ( -- ) V2.1
0236 wflips ( adr len -- ) V2
0221 wpeek ( adr -- false | word true ) V2
0224 wpoke ( word adr -- ok? ) V2
d8 x+ ( x1 x2 -- x3 ) V2
d9 x- ( x1 x2 -- x3 ) V2
0115 xdrbytes ( adr len -- xdr-adr xdr-len ) V2.1
021b xdrtoint ( xdr-adr xdr-len -- xdr2-adr xdr2-len n ) V2
021c xdrtostring ( xdr-adr xdr-len -- xdr2-adr xdr2-len adr len ) V2
d5 xu/mod ( u1[64] u2[32] -- remainder[32] quot[32] ) V2
020e $call-method ( [...]adr len ihandle -- [...]) V2
0209 $call-parent ( [...] adr len -- [...] ) V2
a2 $number ( adr len -- true | n false ) V2
020f $open-package ( arg-adr arg-len adr len -- ihandle | 0 ) V2
0214 (is-user-word) ( adr len acf -- ) V2
--------------------------------------------------------------------------------------------------