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 --------------------------------------------------------------------------------------------------