- Data: nn-n Addr: - Float: - Subtract `n2` from `n1` and return the result. Class: class:primitive | Namespace: global | Interface Layer: all Example #1: #2 #1 - ---reveal--- Data: - Addr: - Float: - Switch to the exposed (public) portion of a lexical namespace. Class: 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: class:primitive | Namespace: global | Interface Layer: all Example #1: #1 #2 -eq? $a $b -eq? / Data: nm-v Addr: - Float: - Divide `n` by `m` and return the integer part of the quotient. Class: class:word | 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: class:macro | Namespace: global | Interface Layer: all ; Data: - Addr: - Float: - End the current definition. Class: class:macro | Namespace: global | Interface Layer: all ASCII:BS Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class: class:data | Namespace: ASCII | Interface Layer: all ASCII:DEL Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class: class:data | Namespace: ASCII | Interface Layer: all ASCII:ESC Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class: class:data | Namespace: ASCII | Interface Layer: all ASCII:LF Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class: class:data | Namespace: ASCII | Interface Layer: all ASCII:SPACE Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class: class:data | Namespace: ASCII | Interface Layer: all [ Data: - Addr: - Float: - Begin a quotation. Class: class:macro | Namespace: global | Interface Layer: all ] Data: - Addr: - Float: - End a quotation. Class: class:macro | Namespace: global | Interface Layer: all again Data: - Addr: - Float: - Close an unconditional loop. Branches back to the prior `repeat`. Class: class:macro | Namespace: global | Interface Layer: all allot Data: n- Addr: - Float: - Allocate the specified number of cells from the `Heap`. Class: class:word | Namespace: global | Interface Layer: all Example #1: 'Buffer d:create #100 allot buffer:add Data: n- Addr: - Float: - Append a value to the current buffer. Class: class:word | Namespace: buffer | Interface Layer: all buffer:get Data: -n Addr: - Float: - Remove the last value from the current buffer. Class: class:word | Namespace: buffer | Interface Layer: all buffer:set Data: a- Addr: - Float: - Assign a new buffer as the current one. Class: class:word | Namespace: buffer | Interface Layer: all bye Data: - Addr: - Float: - Exit Retro. Class: class:word | Namespace: global | Interface Layer: all c:get Data: -c Addr: - Float: - Vectored. Read a single keypress. Class: class:word | Namespace: global | Interface Layer: rre c:put Data: c- Addr: - Float: - Vectored. Display a single character. Class: class:word | Namespace: global | Interface Layer: all call Data: a- Addr: - Float: - Call a function. Class: 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: class:word | Namespace: global | Interface Layer: all choose Data: fqq- Addr: - Float: - Execute q1 if the flag is true (-1) or q2 if the flag is false (0). Only these flags are valid when using `choose`; passing other values as flags will result in memory corruption. Class: class:word | Namespace: global | Interface Layer: all const Data: ns- Addr: - Float: - Create a constant returning the specified value. Class: class:word | Namespace: global | Interface Layer: all d:create Data: s- Addr: - Float: - Hook. Create a new dictionary header named the specified string. The new header will point to `here` and have a class of `class:data`. Class: class:word | Namespace: d | 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: class:word | Namespace: global | Interface Layer: all drop Data: n- Addr: - Float: - Discard the top value on the stack. Class: class:primitive | Namespace: global | Interface Layer: all dup Data: n-nn Addr: - Float: - Duplicate the top item on the stack. Class: class:primitive | 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: class:primitive | Namespace: global | Interface Layer: all Example #1: #1 #2 eq? $a $b eq? file:A Data: -n Addr: - Float: - Constant for opening a file in APPEND mode. Class: class:data | Namespace: file | Interface Layer: rre file:R Data: -n Addr: - Float: - Constant for opening a file in READ mode. Class: class:data | Namespace: file | Interface Layer: rre file:W Data: -n Addr: - Float: - Constant for opening a file in WRITE mode. Class: class:data | Namespace: file | Interface Layer: rre file:close Data: h- Addr: - Float: - Given a file handle, close the file. Class: 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: 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: class:word | Namespace: file | Interface Layer: rre Example #1: '/etc/motd file:R file:open file:read-line Data: f-s Addr: - Float: - Given a file handle, read a line and return a pointer to it. Class: 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: 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 content. Class: class:word | Namespace: file | Interface Layer: rre file:write Data: ch- Addr: - Float: - Write a character to the file represented by the handle. Class: class:word | Namespace: file | Interface Layer: rre here Data: -a Addr: - Float: - Return the next free address in memory. Class: class:word | Namespace: global | Interface Layer: all if Data: fq- Addr: - Float: - Execute the quote if the flag is `TRUE`. Class: 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: class:primitive | Namespace: global | 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: class:word | Namespace: n | Interface Layer: all Example #1: #3 #1 #100 n:between? $q $a $b n:between? n:dec Data: n-m Addr: - Float: - Decrement n by one. Class: class:word | Namespace: n | Interface Layer: all Example #1: #100 n:dec n:inc Data: n-m Addr: - Float: - Increment n by one. Class: class:word | Namespace: n | Interface Layer: all Example #1: #100 n:inc n:max Data: mn-o Addr: - Float: - Return the greater of two values. Class: class:word | Namespace: n | Interface Layer: all Example #1: #1 #7 n:max #-8 #-10 n:max n:min Data: mn-o Addr: - Float: - Return the lesser of two values. Class: class:word | Namespace: n | Interface Layer: all Example #1: #1 #7 n:min #-8 #-10 n:min n:put Data: n- Addr: - Float: - Display a number. Class: class:word | Namespace: global | Interface Layer: all n:zero? Data: n-f Addr: - Float: - Return `TRUE` if number is zero, or `FALSE` otherwise. Class: class:word | Namespace: n | Interface Layer: all nl Data: - Addr: - Float: - Display a newline. Class: class:word | Namespace: global | Interface Layer: all not Data: n-m Addr: - Float: - Perform a logical NOT operation. Class: class:word | Namespace: global | Interface Layer: all over Data: nm-nmn Addr: - Float: - Put a copy of n over m. Class: class:word | Namespace: global | Interface Layer: all repeat Data: - Addr: - Float: - Begin an unconditional loop. Class: class:macro | Namespace: global | 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: 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: class:word | Namespace: s | Interface Layer: all s:empty Data: -s Addr: - Float: - Return an empty string. Class: 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: class:word | Namespace: s | Interface Layer: all Example #1: 'hello 'again s:eq? 'test 'test s:eq? s:for-each Data: sq- Addr: - Float: - Execute the quote once for each value in the string. Class: class:word | Namespace: s | Interface Layer: all s:format Data: ...s-s Addr: - Float: - Construct a new string using the template passed and items from the stack. Class: class:word | Namespace: s | Interface Layer: all s:get Data: -s Addr: - Float: - Read input from standard in (via `c:get`) until a CR or LF is encountered. Returns a string. Class: class:word | Namespace: all | Interface Layer: rre s:keep Data: s-s Addr: - Float: - Store a string into the heap and return a pointer to the start of it. Class: class:word | Namespace: s | Interface Layer: all s:put Data: s- Addr: - Float: - Display a string. Class: class:word | Namespace: global | Interface Layer: all s:to-number Data: s-n Addr: - Float: - Convert a string to a number. Class: class:word | Namespace: s | Interface Layer: all s:trim-right Data: s-s Addr: - Float: - Trim trailing whitespace from a string. Class: class:word | Namespace: s | Interface Layer: all Example #1: '__hello__ s:trim-right script:arguments Data: -n Addr: - Float: - Return the number of arguments passed to the program. Class: class:word | Namespace: sys | Interface Layer: rre script:get-argument Data: n-s Addr: - Float: - Given an argument number, return the argument as a string. Class: class:word | Namespace: script | Interface Layer: rre sip Data: nq(?n-?)-n Addr: - Float: - Run quote. After execution completes, put a copy of n back on top of the stack. Class: class:word | Namespace: global | Interface Layer: all sp Data: - Addr: - Float: - Display a space (`ASCII:SPACE`) Class: class:word | Namespace: global | Interface Layer: all Example #1: :spaces (n-) [ sp ] times ; #12 spaces swap Data: nm-mn Addr: - Float: - Exchange the position of the top two items on the stack Class: class:primitive | Namespace: global | Interface Layer: all times Data: nq- Addr: - Float: - Run the specified quote the specified number of times. Class: class:word | Namespace: global | Interface Layer: all Example #1: #12 [ $- c:put ] times unix:exit Data: n- Addr: - Float: - Exit the current process, returning the specified return code. Class: class:word | Namespace: unix | Interface Layer: rre v:dec Data: a- Addr: - Float: - Decrement the value stored at the specified address by 1. Class: class:word | Namespace: v | Interface Layer: all v:inc Data: a- Addr: - Float: - Increment the value stored at the specified address by 1. Class: 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: class:word | Namespace: v | Interface Layer: all var Data: s- Addr: - Float: - Create a variable. The variable is initialized to 0. Class: class:word | Namespace: global | Interface Layer: all Example #1: 'Base var var-n Data: ns- Addr: - Float: - Create a variable with the specified initial value. Class: class:word | Namespace: global | Interface Layer: all Example #1: #10 'Base var-n {{ Data: - Addr: - Float: - Begin a lexically scoped area. Class: class:word | Namespace: global | Interface Layer: all }} Data: - Addr: - Float: - End a lexically scoped area. This will hide any headers between `{{` and `---reveal---`, leaving only headers between `---reveal---` and the `}}` visible. Class: class:word | Namespace: global | Interface Layer: all sigil:! 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: class:macro | Namespace: sigil | Interface Layer: all sigil:# 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: class:macro | Namespace: sigil | Interface Layer: all sigil:$ 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: class:macro | Namespace: sigil | Interface Layer: all sigil:& Data: s-a Addr: - Float: - Return a pointer to a named item. If name is not found, returns 0. 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: class:macro | Namespace: sigil | Interface Layer: all sigil:' 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: class:macro | Namespace: sigil | Interface Layer: all sigil:( Data: s- Addr: - Float: - Process token as a comment. Interpret Time: Discard the string. Compile Time: Discard the string. Class: class:macro | Namespace: sigil | Interface Layer: all sigil:: Data: s- Addr: - Float: - Hook. 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: class:macro | Namespace: sigil | Interface Layer: all sigil:@ 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: class:macro | Namespace: sigil | Interface Layer: all sigil:| Data: s- Addr: - Float: - POSTPONE equivalent. Interpret Time: Discard the string. Compile Time: Convert the string to a number and use `,` to inline it into the current definition. Class: class:macro | Namespace: sigil | Interface Layer: all