内に含ま
その他のドキュメント
サポート リソース
| PDF 文書ファイルをダウンロードする
FCode Reference
A
FCode Primitives
- This appendix contains four lists:
-
- FCodes sorted according to functional group
- FCodes sorted by byte value
- FCodes sorted alphabetically by name
- Version 2 FCodes listed alphabetically
FCodes by Function
- 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] quot[32] ) | Divides an unsigned 64-bit number by an unsigned 32-bit 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 |
-
| Value | Function | Stack........Description |
| 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 |
-
| Value | Function | Stack....Description |
| - | 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-string | ( adr len char -- adrR lenR adrL lenL ) | Splits a string at the given delimiter (which is discarded) 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 newnameoldname | ( -- ) | 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 |
-
| Value | Function | Stack | Description |
| 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 --sel | none ) | Followed by offset. Compiled by of |
| 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
name-len -- ) | Declares a property with the given value structure, for
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
xdr-len2 -- xdr-adr xdr-len1+2 ) | Merges two xdr-format strings. They must have been
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 | xdr-adr xdr-len false ) | Returns the xdr-format string for the given property name V2 |
| 021b | xdrtoint | ( xdr-adr xdr-len -- xdr2-adr
xdr2-len n ) | Converts the beginning of an xdr-format string to an
integer V2 |
| 021c | xdrtostring | ( xdr-adr xdr-len -- xdr2-adr
xdr2-len adr len ) | Converts the beginning of an xdr-format string to a
normal string V2 |
| 021d | get-inherited-
attribute | ( nam-adr nam-len -- true | xdr-adr
xdr-len false ) | Returns the value string for the given property,
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-
attribute | ( adr len phandle -- true | xdr-adr
xdr-len false ) | Returns the xdr-format string for the given property
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-name | ( adr len -- ) | Creates the "name" attribute with the given value V2 |
-
Table A-30 System Version Information
-
| Value | Function | Stack | Description |
| 0210 | processor-type | ( -- processor-type ) | Obsolete V2 |
| 0211 | firmware-version | ( -- n ) | Returns major/minor CPU firmware version V2 |
| 0212 | fcode-version | ( -- n ) | Obsolete V2 |
| 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 |
-
| Value | Function |
| Stack......Description |
| 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-intr>cpu | ( 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 befor | e using any fbx- routines. |
-
Table A-39 Font Operators
-
| Value | Function | Stack | Description |
| 016a | default-font | ( -- fontbase charwidth charheight
fontbytes #firstchar #chars ) | Returns default font values, plugs directly into
set-font |
| 016b | set-font | ( fontbase charwidth charheight
fontbytes #firstchar #chars -- ) | Sets the character font for text output |
| 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 |
-
| Value | Function | Stack.............Description |
| 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 --
next-phandle ) | Returns phandle of package that is the next child of the the
parent of the package V2.3 |
| 023b | child | ( parent-phandle --
child-phandle ) | Returns phandle of the package that is the first child of the
package parent-phandle V2.3 |
| 0204 | find-package | ( adr len -- false | phandle true ) | Finds a package named "adr len" V2 |
| 0205 | open-package | ( adr len phandle --
ihandle | 0 ) | Opens an instance of the package "phandle," passes arguments
"adr len" V2 |
-
| Value | Function | Stack | Description |
| 020f | $open-package | ( arg-adr arg-len adr len -- ihandle | 0 ) | Finds a package "adr len," then opens it with arguments "arg-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 | ihandle>phandle | ( 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 | acf true ) | Finds the method (command) named "adr len" within the 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 |
FCodes by Byte Value
- 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 ) |
|
-
| Value | Function | Stack | Version 2? |
| 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 ) |
|
-
| Value | Function | Stack | Version 2? |
| 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 ) |
|
-
| Value | Function | Stack | Version 2? |
| 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 -- ) |
|
-
| Value | Function | Stack | Version 2? |
| 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) |
|
|
-
| Value | Function | Stack | Version 2? |
| 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 ) |
-
| Value | Function | Stack | Version 2? |
| 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-intr>cpu | ( 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 | ( -- ) |
|
-
| Value | Function | Stack | Version 2? |
| 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 | ( -- ) |
|
-
| Value | Function | Stack | Version 2? |
| 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 | ihandle>phandle | ( 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 |
-
| Value | Function | Stack | Version 2? |
| 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 | ( -- ) |
-
| Value | Function | Stack | Version 2? |
| - | 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 ) |
|
-
| Value | Function | Stack | Version 2? |
| 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 -- ) |
|
FCodes by Name
- 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 ) |
-
| Value | Function | Stack | Version 2? |
| 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 | ( -- ) |
|
-
| Value | Function | Stack | Version 2? |
| 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 | ( -- ) |
-
| Value | Function | Stack | Version 2? |
| 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 -- ) |
|
-
| Value | Function | Stack | Version 2? |
| 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 | ( -- ) |
-
| Value | Function | Stack | Version 2? |
| 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 | ihandle>phandle | ( 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 -- ) |
|
-
| Value | Function | Stack | Version 2? |
| 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 -- ) |
-
| Value | Function | Stack | Version 2? |
| 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 |
-
| Value | Function | Stack | Version 2? |
| CR | s. | ( n -- ) |
|
| 0131 | sbus-intr>cpu | ( 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 ) |
-
| Value | Function | Stack | Version 2? |
| 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 | <# | ( -- ) |
|
-
| Value | Function | Stack | Version 2? |
| 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 |
-
| Value | Function | Stack | Version 2? |
| 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 ) |
|
Version 2 FCodes
- 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 | ihandle>phandle | ( 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 |
-
| Value | Function | Stack | Version |
| 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 |
-
| Value | Function | Stack | Version |
| 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 |
|
|