* Data: nn-n Addr: - Float: - Multiply `n1` by `n2` and return the result. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- + Data: nn-n Addr: - Float: - Add `n1` to `n2` and return the result. Class Handler: class:primitive | Namespace: global | Interface Layer: all Example #1: #1 #2 + ---------------------------------------------------------------- , Data: n- Addr: - Float: - Store the specified value into the memory at `here` and increment `Heap` by 1. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- - Data: nn-n Addr: - Float: - Subtract `n1` from `n2` and return the difference. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- ---reveal--- Data: - Addr: - Float: - Switch to the exposed (public) portion of a lexical namespace. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- -eq? Data: nn-f Addr: - Float: - Compare two values for inequality. Returns `TRUE` if they are not equal or `FALSE` otherwise. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- -if Data: fq- Addr: - Float: - Execute the quotation if the flag is `FALSE`. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- / Data: mn-o Addr: - Float: - Divide `m` by `n` and return the result. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- /mod Data: nm-op Addr: - Float: - Divide `n` by `m` and return the result and remainder. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- 0; Data: n-n || n- Addr: - Float: - If `n` is zero, drop `n` and exit the current word. If non-zero, leave `n` alone and allow execution to continue. Class Handler: class:macro | Namespace: global | Interface Layer: all ---------------------------------------------------------------- ; Data: - Addr: - Float: - End the current definition. Class Handler: class:macro | Namespace: global | Interface Layer: all ---------------------------------------------------------------- ?dup Data: n-nn || n-n Addr: - Float: - Duplicate top value on stack if not zero. If zero, do nothing. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- ASCII:ACK Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:BEL Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:BS Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:CAN Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:CR Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:DC1 Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:DC2 Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:DC3 Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:DC4 Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:DEL Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:DLE Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:EM Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:ENQ Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:EOT Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:ESC Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:ETB Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:ETX Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:FF Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:FS Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:GS Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:HT Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:LF Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:NAK Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:NUL Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:RS Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:SI Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:SO Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:SOH Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:SPACE Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:STX Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:SUB Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:SYN Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:US Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- ASCII:VT Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class Handler: class:data | Namespace: ASCII | Interface Layer: all ---------------------------------------------------------------- Compiler Data: -a Addr: - Float: - Variable. Holds the compiler state. If TRUE, the compiler is active. If FALSE, it is not. Class Handler: class:data | Namespace: global | Interface Layer: all ---------------------------------------------------------------- Dictionary Data: -a Addr: - Float: - Variable. Holds a pointer to the most recent dictionary header. Class Handler: class:data | Namespace: global | Interface Layer: all ---------------------------------------------------------------- EOM Data: -n Addr: - Float: - Constant. Returns the last addressable memory address. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- FALSE Data: -n Addr: - Float: - Returns `0`, the value used to indicate a FALSE result. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- FREE Data: -n Addr: - Float: - Returns the number of cells available to your application. This is the amount of memory, less the already consumed portion and buffers mapped for RETRO's internal use. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- Heap Data: -a Addr: - Float: - Variable. Holds the address of the next available cell. Class Handler: class:data | Namespace: global | Interface Layer: all ---------------------------------------------------------------- RewriteUnderscores Data: -a Addr: - Float: - Variable. When set to `TRUE`, RETRO will replace underscores in strings with spaces. When `FALSE`, RETRO does not. Class Handler: class:data | Namespace: global | Interface Layer: all ---------------------------------------------------------------- STRINGS Data: -a Addr: - Float: - Return the address of the start of the temporary string pool. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- ScopeList Data: -a Addr: - Float: - Variable. This holds some information used by `{{` and `}}`. Class Handler: class:data | Namespace: global | Interface Layer: all ---------------------------------------------------------------- TRUE Data: -n Addr: - Float: - Returns `-1`, the value used to indicate a TRUE result. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- TempStringMax Data: -a Addr: - Float: - Variable. Holds the maximum length of a temporary string. Class Handler: class:data | Namespace: global | Interface Layer: all ---------------------------------------------------------------- TempStrings Data: -a Addr: - Float: - Variable. Holds the number of temporary strings. Class Handler: class:data | Namespace: global | Interface Layer: all ---------------------------------------------------------------- Version Data: -a Addr: - Float: - Variable. This stores the version number. Class Handler: class:data | Namespace: global | Interface Layer: all ---------------------------------------------------------------- [ Data: - Addr: - Float: - Begin a quotation. Class Handler: class:macro | Namespace: global | Interface Layer: all ---------------------------------------------------------------- ] Data: - Addr: - Float: - End a quotation. Class Handler: class:macro | Namespace: global | Interface Layer: all ---------------------------------------------------------------- again Data: - Addr: - Float: - Close an unconditional loop. Branches back to the prior `repeat`. Class Handler: class:macro | Namespace: global | Interface Layer: all ---------------------------------------------------------------- allot Data: n- Addr: - Float: - Allocate the specified number of cells from the `Heap`. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- and Data: nm-o Addr: - Float: - Perform a bitwise AND operation between the two provided values. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- as{ Data: -f Addr: - Float: - Begin an assembly section. Class Handler: class:macro | Namespace: global | Interface Layer: all ---------------------------------------------------------------- bi Data: xqq-? Addr: - Float: - Execute q1 against x, then execute q2 against a copy of x. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- bi* Data: xyqq-? Addr: - Float: - Execute q1 against x and q2 against y. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- bi@ Data: xyq-? Addr: - Float: - Execute q against x, then execute q against y. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- buffer:add Data: n- Addr: - Float: - Append a value to the current buffer. Class Handler: class:word | Namespace: buffer | Interface Layer: all ---------------------------------------------------------------- buffer:empty Data: - Addr: - Float: - Reset the current buffer to an empty state. Class Handler: class:word | Namespace: buffer | Interface Layer: all ---------------------------------------------------------------- buffer:end Data: -a Addr: - Float: - Return a pointer to the current end of the active buffer. Class Handler: class:word | Namespace: buffer | Interface Layer: all ---------------------------------------------------------------- buffer:get Data: -n Addr: - Float: - Remove the last value from the current buffer. Class Handler: class:word | Namespace: buffer | Interface Layer: all ---------------------------------------------------------------- buffer:preserve Data: q- Addr: - Float: - Save and restore the current buffer before and after executing the specified quote. Class Handler: class:word | Namespace: buffer | Interface Layer: all ---------------------------------------------------------------- buffer:set Data: a- Addr: - Float: - Assign a new buffer as the current one. Class Handler: class:word | Namespace: buffer | Interface Layer: all ---------------------------------------------------------------- buffer:size Data: -n Addr: - Float: - Return the number of cells in the buffer. Class Handler: class:word | Namespace: buffer | Interface Layer: all ---------------------------------------------------------------- buffer:start Data: -a Addr: - Float: - Return the start address of the current buffer. Class Handler: class:word | Namespace: buffer | Interface Layer: all ---------------------------------------------------------------- c:-consonant? Data: c-f Addr: - Float: - Return TRUE if character is a not consonant or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:-digit? Data: c-f Addr: - Float: - Return TRUE if character is a not numeric digit or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:-lowercase? Data: c-f Addr: - Float: - Return TRUE if character is not lowercase or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:-uppercase? Data: c-f Addr: - Float: - Return TRUE if character is not uppercase or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:-visible? Data: c-f Addr: - Float: - Return TRUE if character is not printable or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:-vowel? Data: c-f Addr: - Float: - Return TRUE if character is not a vowel or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:-whitespace? Data: c-f Addr: - Float: - Return TRUE if character is not whitespace, or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:consonant? Data: c-f Addr: - Float: - Return TRUE if character is a consonant or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:digit? Data: c-f Addr: - Float: - Return TRUE if character is a numeric digit or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:letter? Data: c-f Addr: - Float: - Return TRUE if character is an ASCII letter or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:lowercase? Data: c-f Addr: - Float: - Return TRUE if character is lowercase or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:to-lower Data: c-c Addr: - Float: - Convert character to lowercase equivalent. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:to-string Data: c-s Addr: - Float: - Convert character into a string. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:to-upper Data: c-c Addr: - Float: - Convert character to uppercase equivalent. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:toggle-case Data: c-c Addr: - Float: - Convert an ASCII character to the opposite case. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:uppercase? Data: c-f Addr: - Float: - Return TRUE if character is uppercase or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:visible? Data: c-f Addr: - Float: - Return TRUE if character is printable or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:vowel? Data: c-f Addr: - Float: - Return TRUE if character is a vowel or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- c:whitespace? Data: c-f Addr: - Float: - Return TRUE if character is whitespace, or FALSE otherwise. Class Handler: class:word | Namespace: c | Interface Layer: all ---------------------------------------------------------------- call Data: a- Addr: - Float: - Call a function. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- case Data: nmq- || nmq-n Addr: - Float: - If `n` is equal to `m`, drop both and execute the specified quote before exiting the calling word. If not equal, leave `n` on the stack and let execution continue. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- choose Data: fqq- Addr: - Float: - Execute q1 if the flag is `TRUE` or q2 if it is not. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- class:data Data: n- || n-n Addr: - Float: - Class handler for data structures. Interpret Time: Keep the address or value on the stack. Compile Time: Compile the value or address as a literal into the current definition. Class Handler: class:word | Namespace: class | Interface Layer: all ---------------------------------------------------------------- class:macro Data: a- Addr: - Float: - Class handler for compiler macros (immediate words) Interpret Time: Execute the function at the provided address. Compile Time: Execute the function at the provided address. Class Handler: class:word | Namespace: class | Interface Layer: all ---------------------------------------------------------------- class:primitive Data: a- Addr: - Float: - Class handler for primitive words (words which map to Nga instructions) Interpret Time: Execute the function. Compile Time: Compile the machine code in the definiton into the current definition. Class Handler: class:word | Namespace: class | Interface Layer: all ---------------------------------------------------------------- class:word Data: a- Addr: - Float: - Class handler for normal words. Interpret Time: Execute the function at the provided address. Compile Time: Compile a call to the specified address into the current definition. Class Handler: class:word | Namespace: class | Interface Layer: all ---------------------------------------------------------------- compile:call Data: a- Addr: - Float: - Compile a call to the specified address into the current definition. Class Handler: class:word | Namespace: compile | Interface Layer: all ---------------------------------------------------------------- compile:jump Data: a- Addr: - Float: - Compile a jump to the specified address into the current definition. Class Handler: class:word | Namespace: compile | Interface Layer: all ---------------------------------------------------------------- compile:lit Data: n- Addr: - Float: - Compile the code to push a number to the stack into the current definition. Class Handler: class:word | Namespace: compile | Interface Layer: all ---------------------------------------------------------------- compile:ret Data: - Addr: - Float: - Compile a return instruction into the current definition. Class Handler: class:word | Namespace: compile | Interface Layer: all ---------------------------------------------------------------- compiling? Data: -f Addr: - Float: - Return `TRUE` if compiler is on or `FALSE` otherwise. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- const Data: ns- Addr: - Float: - Create a constant returning the specified value. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- copy Data: sdl- Addr: - Float: - Copy `l` cells from memory at `s` to the memory at `d`. These should not overlap. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- curry Data: nq-q Addr: - Float: - Bind a value to a function and return a new quote that calls the bound action. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- d Data: n- Addr: - Float: - Inline a numeric value to the current assembly segment. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- d:add-header Data: saa- Addr: - Float: - Create a header. Provide a string (s) for the name, a pointer to the class handler (a1) and a pointer to the word definition (a2) Generally this won't be used directly. Class Handler: class:word | Namespace: d | Interface Layer: all ---------------------------------------------------------------- d:class Data: d-a Addr: - Float: - Given a dictionary header, return the class field. Class Handler: class:word | Namespace: d | Interface Layer: all ---------------------------------------------------------------- d:create Data: s- Addr: - Float: - Create a new dictionary header named the specified string. The new header will point to `here` and have a class of `class:data`. Class Handler: class:word | Namespace: d | Interface Layer: all ---------------------------------------------------------------- d:for-each Data: q- Addr: - Float: - Execute the specified quote once for each header in the dictionary. Before running the quote, this also pushes a pointer to the header onto the stack. Class Handler: class:word | Namespace: d | Interface Layer: all ---------------------------------------------------------------- d:last Data: -d Addr: - Float: - Return the most recent dictionary header. Class Handler: class:word | Namespace: d | Interface Layer: all ---------------------------------------------------------------- d:last Data: -a Addr: - Float: - Return a pointer to the class field of the most recent dictionary header. Class Handler: class:word | Namespace: d | Interface Layer: all ---------------------------------------------------------------- d:last Data: -s Addr: - Float: - Return a pointer to the name field of the most recent dictionary header. Class Handler: class:word | Namespace: d | Interface Layer: all ---------------------------------------------------------------- d:last Data: -a Addr: - Float: - Return a pointer to the xt field of the most recent dictionary header. Class Handler: class:word | Namespace: d | Interface Layer: all ---------------------------------------------------------------- d:link Data: d-a Addr: - Float: - Given a dictionary header, return the link field. Class Handler: class:word | Namespace: d | Interface Layer: all ---------------------------------------------------------------- d:lookup Data: s-d Addr: - Float: - Lookup the specified name in the dictionary and return a pointer to its dictionary header. This returns zero if the word is not found. Class Handler: class:word | Namespace: d | Interface Layer: all ---------------------------------------------------------------- d:lookup-xt Data: a-d Addr: - Float: - Lookup the specified address in the dictionary and return a pointer to its dictionary header. This returns zero if the word is not found. Class Handler: class:word | Namespace: d | Interface Layer: all ---------------------------------------------------------------- d:name Data: d-s Addr: - Float: - Given a dictionary header, return the name field. Class Handler: class:word | Namespace: d | Interface Layer: all ---------------------------------------------------------------- d:xt Data: d-a Addr: - Float: - Given a dictionary header, return the xt field. Class Handler: class:word | Namespace: d | Interface Layer: all ---------------------------------------------------------------- data Data: - Addr: - Float: - Change the class of the most recently defined word to `class:data`. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- depth Data: -n Addr: - Float: - Return the number of items on the stack. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- dip Data: nq-n Addr: - Float: - Temporarily remove n from the stack, execute the quotation, and then restore n to the stack. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- does Data: q- Addr: - Float: - Attach an action to the most recently created word. This is used in a manner similar to CREATE/DOES> in traditional Forth. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- drop Data: n- Addr: - Float: - Discard the top value on the stack. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- drop-pair Data: nn- Addr: - Float: - Remove top two items on the stack. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- dump-stack Data: - Addr: - Float: - Display the items on the data stack. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- dup Data: n-nn Addr: - Float: - Duplicate the top item on the stack. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- dup-pair Data: nm-nmnm Addr: - Float: - Duplicate the top two items on the stack. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- eq? Data: nn-f Addr: - Float: - Compare two values for equality. Returns `TRUE` if they are equal or `FALSE` otherwise. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- err:notfound Data: - Addr: - Float: - Error handler. Called when a word is not found by `interpret`. Class Handler: class:word | Namespace: err | Interface Layer: all ---------------------------------------------------------------- f:* Data: - Addr: - Float: FF-F Multiply two floating point numbers, returning the result. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:+ Data: - Addr: - Float: FF-F Add two floating point numbers, returning the result. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:- Data: - Addr: - Float: FF-F Subtract F2 from F1 returing the result. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:-eq? Data: -f Addr: - Float: FF- Compare two floating point values for inequality. Returns `TRUE` if they are not equal or `FALSE` otherwise. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:/ Data: - Addr: - Float: FF-F Divide floating point value F1 by F2. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:abs Data: - Addr: - Float: F-F Return the absolute value for a floating point value. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:depth Data: -n Addr: - Float: - Return the number of items on the floating point stack. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:drop Data: - Addr: - Float: F- Discard the top item on the floating point stack. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:dup Data: - Addr: - Float: F-FF Duplicate the top item on the floating point stack. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:eq? Data: -f Addr: - Float: FF- Compare two floating point values for equality. Returns `TRUE` if they are equal or `FALSE` otherwise. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:floor Data: - Addr: - Float: F-F Perform a mathmatical floor operation on the floating point value. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:gt? Data: -f Addr: - Float: FF- Compare two floating point values for greater than. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:log Data: - Addr: - Float: FF-F Return log(F1) for base F2 for floating point values. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:lt? Data: -f Addr: - Float: FF- Compare two floating point values for less than. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:negate Data: - Addr: - Float: F-F Invert the sign of the floating point value. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:negative? Data: -f Addr: - Float: F- Return `TRUE` if floating point value is negative or `FALSE` if not. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:over Data: - Addr: - Float: FG-FGF Put a copy of the second floating point value over the top one. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:positive? Data: -f Addr: - Float: F- Return `TRUE` if floating point value is positive or `FALSE` otherwise. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:power Data: - Addr: - Float: FF-F Return F1^F2 for floating point values. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:swap Data: - Addr: - Float: FG-GF Exchange the top and second items on the floating point stack. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:to-number Data: -n Addr: - Float: F- Convert a floating point value into a number. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:to-string Data: -s Addr: - Float: F- Convert a floating point value into a string. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- f:tuck Data: - Addr: - Float: FG-GFG Tuck a copy of the top floating point value under the second one. Class Handler: class:word | Namespace: f | Interface Layer: rre ---------------------------------------------------------------- fetch Data: a-n Addr: - Float: - Fetch the value stored at the specified address. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- fetch-next Data: a-an Addr: - Float: - Fetch the value stored at the specified address. Returns the next address and the value. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- file:A Data: -n Addr: - Float: - Constant for opening a file in APPEND mode. Class Handler: class:data | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:R Data: -n Addr: - Float: - Constant for opening a file in READ mode. Class Handler: class:data | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:R+ Data: -n Addr: - Float: - Constant for opening a file in READ & WRITE mode. Class Handler: class:data | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:W Data: -n Addr: - Float: - Constant for opening a file in WRITE mode. Class Handler: class:data | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:close Data: h- Addr: - Float: - Given a file handle, close the file. Class Handler: class:word | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:delete Data: s- Addr: - Float: - Delete the named file. Class Handler: class:word | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:exists? Data: s-f Addr: - Float: - Given a file name, return `TRUE` if it exists or `FALSE` if it does not. Class Handler: class:word | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:flush Data: h- Addr: - Float: - Given a file handle, flush any pending writes to disk. Class Handler: class:word | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:for-each-line Data: sq- Addr: - Float: - Given a file name, open it and run the quote once for each line in the file. Class Handler: class:word | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:open Data: sm-h Addr: - Float: - Open a named file (s) with the given mode (m). Returns a handle identifying the file. Class Handler: class:word | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:read Data: h-c Addr: - Float: - Given a file handle, read and return the next character in it. Class Handler: class:word | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:read-line Data: f-s Addr: - Float: - Given a file handle, read a line and return a pointer to it. Class Handler: class:word | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:seek Data: nh- Addr: - Float: - Move the current offset into a file to the specified one. Class Handler: class:word | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:size Data: h-n Addr: - Float: - Given a file handle, return the size of the file (in bytes). Class Handler: class:word | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:slurp Data: as- Addr: - Float: - Given an address and a file name, read the file contents into memory starting at the address. Class Handler: class:word | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:spew Data: ss- Addr: - Float: - Given a string (s1) and a file name (s2), write the string into the file, replacing any existing cotent. Class Handler: class:word | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:tell Data: h-n Addr: - Float: - Given a file handle, return the current offset in the file. Class Handler: class:word | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- file:write Data: ch- Addr: - Float: - Write a character to the file represented by the handle. Class Handler: class:word | Namespace: file | Interface Layer: rre ---------------------------------------------------------------- getc Data: -c Addr: - Float: - Read a single keypress. Class Handler: class:word | Namespace: global | Interface Layer: rre ---------------------------------------------------------------- gopher:get Data: asns-n Addr: - Float: - Takes an address, a server, a port, and a selector. Fetch the resource and store it at address. Return the number of bytes received. Class Handler: class:word | Namespace: gopher | Interface Layer: rre ---------------------------------------------------------------- gt? Data: nn-f Addr: - Float: - Compare n1 and n2. Return `TRUE` if n1 is greater than n2, or `FALSE` otherwise. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- gteq? Data: nn-f Addr: - Float: - Compare n1 and n2. Return `TRUE` if n1 is greater than or equal to n2, or `FALSE` otherwise. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- here Data: -a Addr: - Float: - Return the next free address in memory. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- i Data: s- Addr: - Float: - Assemble the instructions specified by the string into the current assembly scope. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- if Data: fq- Addr: - Float: - Execute the quote if the flag is `TRUE`. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- immediate Data: - Addr: - Float: - Change the class of the most recently defined word to `class:macro`. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- interpret Data: s- Addr: - Float: - Interpret a single input token. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- lt? Data: nn-f Addr: - Float: - Compare n1 and n2. Return `TRUE` if n1 is less than n2, or `FALSE` otherwise. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- lteq? Data: nn-f Addr: - Float: - Compare n1 and n2. Return `TRUE` if n1 is less than or equal to n2, or `FALSE` otherwise. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- mod Data: nm-o Addr: - Float: - Divide `n` by `m` and return the remainder. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- n:-zero? Data: n-f Addr: - Float: - Return `TRUE` if number is not zero, or `FALSE` otherwise. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:MAX Data: -n Addr: - Float: - Return the maximum value that will fit in a cell. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:MIN Data: -n Addr: - Float: - Return the minimum value that will fit in a cell. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:abs Data: n-n Addr: - Float: - Return the absolute value of a number. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:between? Data: nlu-f Addr: - Float: - Return TRUE if number is between the lower (l) and upper (u) bounds. If not, return FALSE. This is inclusive of the limits. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:dec Data: n-m Addr: - Float: - Decrement n by one. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:even? Data: n-f Addr: - Float: - Return `TRUE` if number is even, or `FALSE` if not. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:inc Data: n-m Addr: - Float: - Increment n by one. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:limit Data: nlu-m Addr: - Float: - Return n if it is within the lower (l) and upper (u) bounds. If outside the bounds, return the closes boundary value. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:max Data: mn-o Addr: - Float: - Return the greater of two values. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:min Data: mn-o Addr: - Float: - Return the lesser of two values. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:negate Data: n-n Addr: - Float: - Invert the sign of a number. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:negative? Data: n-f Addr: - Float: - Return `TRUE` if number is negative, or `FALSE` if not. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:odd? Data: n-f Addr: - Float: - Return `TRUE` if number is odd, or `FALSE` if not. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:positive? Data: n-f Addr: - Float: - Return `TRUE` if number is positive, or `FALSE` if not. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:pow Data: bp-n Addr: - Float: - Return base (b) to power (p). Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:sqrt Data: n-m Addr: - Float: - Return the square root of a number. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:square Data: n-m Addr: - Float: - Return the square of a number. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:strictly-positive? Data: n-f Addr: - Float: - Return TRUE if number is greater than zero or FALSE if it is zero or less. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:to-float Data: n- Addr: - Float: -F Convert a number into a floating point value. Class Handler: class:word | Namespace: n | Interface Layer: rre ---------------------------------------------------------------- n:to-string Data: n-s Addr: - Float: - Convert a number into a string. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- n:zero? Data: n-f Addr: - Float: - Return `TRUE` if number is zero, or `FALSE` otherwise. Class Handler: class:word | Namespace: n | Interface Layer: all ---------------------------------------------------------------- nip Data: nm-m Addr: - Float: - Remove the second item from the stack. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- nl Data: - Addr: - Float: - Display a newline. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- not Data: n-m Addr: - Float: - Perform a logical NOT operation. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- or Data: mn-o Addr: - Float: - Perform a bitwise OR between the provided values. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- over Data: nm-nmn Addr: - Float: - Put a copy of n over m. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- pop Data: -n Addr: n- Float: - Move a value from the return stack to the data stack. Class Handler: class:macro | Namespace: global | Interface Layer: all ---------------------------------------------------------------- prefix:! Data: ns- Addr: - Float: - Store a value into a variable. Interpret Time: Store a value into the named variable. Compile Time: Compile the code to store a value into a named variable. Class Handler: class:macro | Namespace: prefix | Interface Layer: all ---------------------------------------------------------------- prefix:# Data: s-n Addr: - Float: - Process token as a number. Interpret Time: Convert the string into a number and leave on the stack. Compile Time: Convert the string into a number and compile into the current definition as a literal. Class Handler: class:macro | Namespace: prefix | Interface Layer: all ---------------------------------------------------------------- prefix:$ Data: s-c Addr: - Float: - Process token as an ASCII character. Interpret Time: Fetch first character from string. Leave on stack. Compile Time: Fetch first character from the string. Compile into the current definition as literal. Class Handler: class:macro | Namespace: prefix | Interface Layer: all ---------------------------------------------------------------- prefix:& Data: s-a Addr: - Float: - Return a pointer to a named item. Interpret Time: Lookup name in dictionary, return contents of the xt field on the stack. Compile Time: Lookup name in dictionary, compile code to push the contents of the xt field into the current definition. Class Handler: class:macro | Namespace: prefix | Interface Layer: all ---------------------------------------------------------------- prefix:' Data: s-s Addr: - Float: - Process token as a string. Interpret Time: Move string into temporary buffer. If `RewriteUnderscores` is `TRUE`, replace all instances of _ with space. Compile Time: Move string into temporary buffer. If `RewriteUnderscores` is `TRUE`, replace all instances of _ with space. Then compile the string into the current definition. Class Handler: class:macro | Namespace: prefix | Interface Layer: all ---------------------------------------------------------------- prefix:( Data: s- Addr: - Float: - Process token as a comment. Interpret Time: Discard the string. Compile Time: Discard the string. Class Handler: class:macro | Namespace: prefix | Interface Layer: all ---------------------------------------------------------------- prefix:. Data: s- Addr: - Float: -F Interpret time: convert string to a floating point value. Compile time: convert string to a floating point value and compile code to push this value to the float stack. Class Handler: class:macro | Namespace: prefix | Interface Layer: rre ---------------------------------------------------------------- prefix:: Data: s- Addr: - Float: - Process token as a new definition. Interpret Time: Create a header pointing to `here` with the provided string as the name. Sets class to `class:word`. Class Handler: class:macro | Namespace: prefix | Interface Layer: all ---------------------------------------------------------------- prefix:@ Data: s-n Addr: - Float: - Fetch from a stored variable. Interpret Time: Fetch a value from a named variable. Compile Time: Compile the code to fetch a value from a named variable into the current definition. Class Handler: class:macro | Namespace: prefix | Interface Layer: all ---------------------------------------------------------------- prefix:` Data: s- Addr: - Float: - Process token as a bytecode. Interpret Time: Discard the string. Compile Time: Convert the string to a number and use `,` to inline it into the current definition. Class Handler: class:macro | Namespace: prefix | Interface Layer: all ---------------------------------------------------------------- push Data: n- Addr: -n Float: - Move a value from the data stack to the return stack. Class Handler: class:macro | Namespace: global | Interface Layer: all ---------------------------------------------------------------- putc Data: c- Addr: - Float: - Display a single character. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- putf Data: - Addr: - Float: F- Display a floating point number. Class Handler: class:word | Namespace: global | Interface Layer: rre ---------------------------------------------------------------- putn Data: n- Addr: - Float: - Display a number. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- puts Data: s- Addr: - Float: - Display a string. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- r Data: s- Addr: - Float: - Lookup a reference by name and inline its pointer to the current assembly segment. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- reclass Data: a- Addr: - Float: - Change the class handler of the most recently defined word to the specified one. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- reorder Data: ...ss-? Addr: - Float: - Restructure the order of items on the stack. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- repeat Data: - Addr: - Float: - Begin an unconditional loop. Class Handler: class:macro | Namespace: global | Interface Layer: all ---------------------------------------------------------------- reset Data: ...- Addr: - Float: - Remove all items from the stack. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- rot Data: abc-bca Addr: - Float: - Rotate the top three values. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- s, Data: s- Addr: - Float: - Compile the code needed to push a string pointer to the stack and inline the string data into the current definition. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- s:ASCII-LETTERS Data: -s Addr: - Float: - Constant. Returns a string of the ASCII letters (upper and lower case) Class Handler: class:data | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:ASCII-LOWERCASE Data: -s Addr: - Float: - Constant. Returns a string of the ASCII letters in lowercase Class Handler: class:data | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:ASCII-UPPERCASE Data: -s Addr: - Float: - Constant. Returns a string of the ASCII letters in uppercase Class Handler: class:data | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:DIGITS Data: -s Addr: - Float: - Constant. Return a string of characters recognized as numeric digits. Class Handler: class:data | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:PUNCTUATION Data: -s Addr: - Float: - Constant. Return a string of characters recognized as punctuation. Class Handler: class:data | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:WHITESPACE Data: -s Addr: - Float: - Constant. Returns a string of characters recognized as whitespace. Class Handler: class:data | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:append Data: ss-s Addr: - Float: - Return a new string consisting of s1 followed by s2. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:case Data: sSq- || sSq-s Addr: - Float: - If the `s` matches `S`, discard `s` and run the quote before exiting the caller. If they do not match, discard the quote and leave `s` on the stack. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:chop Data: s-s Addr: - Float: - Remove the last character from a string. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:const Data: ss- Addr: - Float: - Create a constant named s2, returning a pointer to s1. This will use `s:keep` to preserve the original string. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:contains-char? Data: sc-f Addr: - Float: - Return `TRUE` if the character is present in the string or `FALSE` otherwise. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:contains-string? Data: ss-f Addr: - Float: - Return `TRUE` if the second string is present in the first string or `FALSE` otherwise. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:copy Data: sa- Addr: - Float: - Copy a string (s) to a destination (a). This will include the terminator character when copying. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:empty Data: -s Addr: - Float: - Return an empty string. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:eq? Data: ss-f Addr: - Float: - Compare two strings for equality. Return `TRUE` if identical or `FALSE` if not. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:evaluate Data: s-? Addr: - Float: - Evaluate string as if it was typed into the interpreter. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:filter Data: sq-s Addr: - Float: - Execute the quote once for each value in the string. If the quote returns `TRUE`, append the value into a new string. If `FALSE` the value will be discarded. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:for-each Data: sq- Addr: - Float: - Execute the quote once for each value in the string. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:hash Data: s-n Addr: - Float: - Calculate a hash value for a string. This uses the djb2 algorithim. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:index-of Data: sc-n Addr: - Float: - Return the location of the first instance of the specified character in the string. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:index-of-string Data: ss-n Addr: - Float: - Return the location of the first instance of the specified substring (s2) in the string (s1). Returns -1 if not found. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:keep Data: s-s Addr: - Float: - Store a string into the heap and return a pointer to the start of it. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:left Data: sn-s Addr: - Float: - Return a new string containing the first `n` characters from the source string. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:length Data: s-n Addr: - Float: - Return the number of characters in a string, excluding the NULL terminator. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:map Data: sq-s Addr: - Float: - Execute the specified quote once for each character in the string. Builds a new string from the return value of the quote. The quote should return only one value. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:prepend Data: ss-s Addr: - Float: - Return a new string consisting of s2 followed by s1. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:replace Data: sss-s Addr: - Float: - Replace the first instance of s2 in s1 with s3. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:reverse Data: s-s Addr: - Float: - Reverse the order of ASCII characters in a string. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:right Data: sn-s Addr: - Float: - Return a new string containing the specified number of characters from the right side of the string. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:skip Data: - Addr: - Float: - Internal helper function used to skip over a string in a definition. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:split Data: sc-ss Addr: - Float: - Split a string on the first occurrance of the specified character. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:split-on-string Data: ss-ss Addr: - Float: - Split a string on the first occurrance of the specified string. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:substr Data: sfl-s Addr: - Float: - Extract a substring from the specified string. This will take the characters starting at `f` and extend `l` characters in length. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:temp Data: s-s Addr: - Float: - Move a string into the temporary string buffers. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:to-float Data: s- Addr: - Float: -F Convert a string representation into a floating point value. Class Handler: class:word | Namespace: s | Interface Layer: rre ---------------------------------------------------------------- s:to-lower Data: s-s Addr: - Float: - Convert uppercase ASCII characters in a string to lowercase. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:to-number Data: s-n Addr: - Float: - Convert a string to a number. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:to-upper Data: s-s Addr: - Float: - Convert lowercase ASCII characters in a string to uppercase. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:trim Data: s-s Addr: - Float: - Trim leading and trailing whitespace from a string. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:trim-left Data: s-s Addr: - Float: - Trim leading whitespace from a string. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:trim-right Data: s-s Addr: - Float: - Trim trailing whitespace from a string. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- s:with-format Data: ...s-s Addr: - Float: - Construct a new string using the template passed and items from the stack. Class Handler: class:word | Namespace: s | Interface Layer: all ---------------------------------------------------------------- set:contains-string? Data: sa-f Addr: - Float: - Return `TRUE` if the string value is in the set or`FALSE` otherwise. Class Handler: class:word | Namespace: set | Interface Layer: all ---------------------------------------------------------------- set:contains? Data: na-f Addr: - Float: - Return `TRUE` if the value is in the set or `FALSE` otherwise. Class Handler: class:word | Namespace: set | Interface Layer: all ---------------------------------------------------------------- set:dup Data: a-b Addr: - Float: - Make a copy of a set. Return the address of the copy. Class Handler: class:word | Namespace: set | Interface Layer: all ---------------------------------------------------------------- set:filter Data: aq-b Addr: - Float: - For each item in the initial set, run the specified quote. If the quote returns `TRUE`, copy the item into a new set. If `FALSE`, discard it. Returns a pointer to the new set. Class Handler: class:word | Namespace: set | Interface Layer: all ---------------------------------------------------------------- set:for-each Data: aq- Addr: - Float: - Execute the quote once for each item in the set. Class Handler: class:word | Namespace: set | Interface Layer: all ---------------------------------------------------------------- set:from-results Data: q-a Addr: - Float: - Execute quote. Return a new set containing the values the quote leaves on the stack. Class Handler: class:word | Namespace: set | Interface Layer: all ---------------------------------------------------------------- set:from-string Data: s-a Addr: - Float: - Create a new set with the characters in the source string. Class Handler: class:word | Namespace: set | Interface Layer: all ---------------------------------------------------------------- set:length Data: a-n Addr: - Float: - Return the length of a set. Class Handler: class:word | Namespace: set | Interface Layer: all ---------------------------------------------------------------- set:map Data: aq- Addr: - Float: - Execute quote once for each item in the set. Constructs a new set from the value returned by the quote. Class Handler: class:word | Namespace: set | Interface Layer: all ---------------------------------------------------------------- set:nth Data: an-b Addr: - Float: - Return the actual address of the nth item in the set. Class Handler: class:word | Namespace: set | Interface Layer: all ---------------------------------------------------------------- set:reduce Data: pnq-n Addr: - Float: - Takes a set, a starting value, and a quote. This will apply the quote to each item in the set; the quote should consume two values and return one. Class Handler: class:word | Namespace: set | Interface Layer: all ---------------------------------------------------------------- set:reverse Data: a-b Addr: - Float: - Reverse the order of items in a set. This will return a new set. Class Handler: class:word | Namespace: set | Interface Layer: all ---------------------------------------------------------------- shift Data: mn-o Addr: - Float: - Peform a bitwise shift of m by n bits. If n is positive, shift right. If negative, the shift will be to the left. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- sip Data: nq-n Addr: - Float: - Run quote. After execution completes, put a copy of n back on top of the stack. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- sp Data: - Addr: - Float: - Display a space (`ASCII:SPACE`) Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- store Data: na- Addr: - Float: - Store a value into the specified address. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- store-next Data: na-a Addr: - Float: - Store a value into the specified address and return the next address. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- swap Data: nm-mn Addr: - Float: - Exchange the position of the top two items on the stack Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- sys:argc Data: -n Addr: - Float: - Return the number of arguments passed to the program. Class Handler: class:word | Namespace: sys | Interface Layer: rre ---------------------------------------------------------------- sys:argv Data: n-s Addr: - Float: - Given an argument number, return the argument as a string. Class Handler: class:word | Namespace: sys | Interface Layer: rre ---------------------------------------------------------------- tab Data: - Addr: - Float: - Display a tab (`ASCII:HT`) Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- times Data: nq- Addr: - Float: - Run the specified quote the specified number of times. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- tors Data: -n Addr: - Float: - Get a copy of the top item on the return stack. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- tri Data: xqqq-? Addr: - Float: - Apply q1 against x, then q2 against a copy of x, and finally q3 against another copy of x. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- tri* Data: xyzqqq-? Addr: - Float: - Apply q1 against x, q2 against y, and q3 against z. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- tri@ Data: xyzq-? Addr: - Float: - Apply q against x, then against y, and finally against z. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- tuck Data: nm-mnm Addr: - Float: - Put a copy of the top item on the stack under the second one. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- unix:chdir Data: s- Addr: - Float: - Change the current working directory to the specified one. Class Handler: class:word | Namespace: unix | Interface Layer: rre Example #1: '/etc unix:chdir ---------------------------------------------------------------- unix:exec0 Data: s- Addr: - Float: - Execute a process by running the application specified by s. Class Handler: class:word | Namespace: unix | Interface Layer: rre ---------------------------------------------------------------- unix:exec1 Data: ss- Addr: - Float: - Execute a process by running the application specified by s1. Pass s2 as an argument. Class Handler: class:word | Namespace: unix | Interface Layer: rre ---------------------------------------------------------------- unix:exec2 Data: sss- Addr: - Float: - Execute a process by running the application specified by s1. Pass s2 and s3 as arguments. Class Handler: class:word | Namespace: unix | Interface Layer: rre ---------------------------------------------------------------- unix:exec3 Data: ssss- Addr: - Float: - Execute a process by running the application specified by s1. Pass s2, s3, and s4 as arguments. Class Handler: class:word | Namespace: unix | Interface Layer: rre ---------------------------------------------------------------- unix:exit Data: n- Addr: - Float: - Exit the current process, returning the specified return code. Class Handler: class:word | Namespace: unix | Interface Layer: rre ---------------------------------------------------------------- unix:fork Data: -n Addr: - Float: - Fork the current process. Returns a PID. Class Handler: class:word | Namespace: unix | Interface Layer: rre ---------------------------------------------------------------- unix:getenv Data: sa- Addr: - Float: - Get an environment variable. Provide the name and an address to store it in. Class Handler: class:word | Namespace: unix | Interface Layer: rre Example #1: 'SHELL s:empty [ unix:getenv ] sip puts nl ---------------------------------------------------------------- unix:getpid Data: -n Addr: - Float: - Return the PID of the current process. Class Handler: class:word | Namespace: unix | Interface Layer: rre ---------------------------------------------------------------- unix:kill Data: nn- Addr: - Float: - Terminates a process. Takes a process and a signal to send. Class Handler: class:word | Namespace: unix | Interface Layer: rre ---------------------------------------------------------------- unix:pclose Data: n- Addr: - Float: - Close a pipe. Class Handler: class:word | Namespace: unix | Interface Layer: rre ---------------------------------------------------------------- unix:popen Data: sn-n Addr: - Float: - Open a pipe. Takes a command to run, and a file mode (`file:R` or `file:W`; `file:R+` may work on some systems). Returns a file ID usable with words in the `file:` namespace. Class Handler: class:word | Namespace: unix | Interface Layer: rre ---------------------------------------------------------------- unix:putenv Data: s- Addr: - Float: - Takes a string in the form `name=value` and sets an environment variable named `name` to `value`. Class Handler: class:word | Namespace: unix | Interface Layer: rre Example #1: 'EDITOR=vi unix:putenv ---------------------------------------------------------------- unix:system Data: s- Addr: - Float: - Runs another application using the system shell and returns after execution is completed. Class Handler: class:word | Namespace: unix | Interface Layer: rre Example #1: 'ls_-lh_/etc unix:system ---------------------------------------------------------------- unix:wait Data: -n Addr: - Float: - Waits for a child process to complete. This maps to the wait() system call. Class Handler: class:word | Namespace: unix | Interface Layer: rre ---------------------------------------------------------------- unix:write Data: sh- Addr: - Float: - Write a string to the specified file handle. Class Handler: class:word | Namespace: unix | Interface Layer: rre ---------------------------------------------------------------- until Data: q- Addr: - Float: - Execute quote repeatedly while the quote returns a value of `FALSE`. The quote must return a flag of either `TRUE` or `FALSE` to be used with this. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- v:dec Data: a- Addr: - Float: - Decrement the value stored at the specified address by 1. Class Handler: class:word | Namespace: v | Interface Layer: all ---------------------------------------------------------------- v:dec-by Data: na- Addr: - Float: - Decrement the value stored at the specified address by the specified value. Class Handler: class:word | Namespace: v | Interface Layer: all ---------------------------------------------------------------- v:inc Data: a- Addr: - Float: - Increment the value stored at the specified address by 1. Class Handler: class:word | Namespace: v | Interface Layer: all ---------------------------------------------------------------- v:inc-by Data: na- Addr: - Float: - Increment the value stored at the specified address by the specified value. Class Handler: class:word | Namespace: v | Interface Layer: all ---------------------------------------------------------------- v:limit Data: alu- Addr: - Float: - Fetch the value stored at the address, then run `n:limit` against it, using the specified lower and upper bounds. Then store the resulting value back to the original address. Class Handler: class:word | Namespace: v | Interface Layer: all ---------------------------------------------------------------- v:off Data: a- Addr: - Float: - Set a variable to 0. Class Handler: class:word | Namespace: v | Interface Layer: all ---------------------------------------------------------------- v:on Data: a- Addr: - Float: - Set a variable to -1. Class Handler: class:word | Namespace: v | Interface Layer: all ---------------------------------------------------------------- v:preserve Data: aq- Addr: - Float: - Make a copy of the value at the address, then run the quote. Once the quote completes, restore the address to the specified value. Class Handler: class:word | Namespace: v | Interface Layer: all ---------------------------------------------------------------- v:update-using Data: aq- Addr: - Float: - Fetch a value from the specified address, then run the quotation with this value on the stack. Afterwards, store the returned value at the original address. Class Handler: class:word | Namespace: v | Interface Layer: all ---------------------------------------------------------------- var Data: s- Addr: - Float: - Create a variable. The variable is initialized to 0. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- var Data: ns- Addr: - Float: - Create a variable with the specified initial value. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- while Data: q- Addr: - Float: - Execute quote repeatedly while the quote returns a value of `TRUE`. The quote must return a flag of either `TRUE` or `FALSE` to be used with this. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- words Data: - Addr: - Float: - Display a list of all named items in the `Dictionary`. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- xor Data: mn-o Addr: - Float: - Perform a bitwise XOR operation. Class Handler: class:primitive | Namespace: global | Interface Layer: all ---------------------------------------------------------------- {{ Data: - Addr: - Float: - Begin a lexically scoped area. Class Handler: class:word | Namespace: global | Interface Layer: all ---------------------------------------------------------------- }as Data: f- Addr: - Float: - End an assembly section Class Handler: class:macro | Namespace: global | Interface Layer: all ---------------------------------------------------------------- }} Data: - Addr: - Float: - End a lexically scoped area. Class Handler: class:word | Namespace: global | Interface Layer: all ----------------------------------------------------------------