+ Data: nn-n Addr: - Float: - Add `n1` to `n2` and return the result. Class: 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: class:word | Namespace: global | Interface Layer: all Example #1: $a , $b , $c , #0 , - 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? /mod Data: nm-rv Addr: - Float: - Divide `n` by `m` and return the integer part of the quotient and remainder. Class: class:primitive | Namespace: global | Interface Layer: all ; Data: - Addr: - Float: - End the current definition. Class: class:macro | Namespace: global | Interface Layer: all ASCII:SPACE Data: -n Addr: - Float: - Constant. Refers to specific ASCII code. Class: class:data | Namespace: ASCII | Interface Layer: all FALSE Data: -n Addr: - Float: - Returns `0`, the value used to indicate a FALSE result. Class: class:word | Namespace: global | Interface Layer: all TRUE Data: -n Addr: - Float: - Returns `-1`, the value used to indicate a TRUE result. Class: class:word | Namespace: global | 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 and Data: nm-o Addr: - Float: - Perform a bitwise AND operation between the two provided values. Class: class:primitive | Namespace: global | Interface Layer: all bi Data: xqq-? Addr: - Float: - Execute q1 against x, then execute q2 against a copy of x. Class: class:word | Namespace: global | Interface Layer: all Example #1: #100 [ #10 * ] [ #10 - ] bi 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 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 compile:lit Data: n- Addr: - Float: - Compile the code to push a number to the stack into the current definition. Class: class:word | Namespace: compile | Interface Layer: all d:class Data: d-a Addr: - Float: - Given a dictionary header, return the class field. Class: 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. This also sets an internal variable ('which' in retro.muri) to the header address. Class: class:word | Namespace: d | Interface Layer: all d:xt Data: d-a Addr: - Float: - Given a dictionary header, return the xt field. Class: class:word | Namespace: d | Interface Layer: all depth Data: -n Addr: - Float: - Return the number of items on the stack. Class: 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: 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? fetch Data: a-n Addr: - Float: - Fetch the value stored at the specified address. Class: class:primitive | Namespace: global | Interface Layer: all Example #1: &Version fetch fetch-next Data: a-an Addr: - Float: - Fetch the value stored at the specified address. Returns the next address and the value. Class: class:word | Namespace: global | Interface Layer: all gt? Data: nn-f Addr: - Float: - Compare n1 and n2. Return `TRUE` if n1 is greater than n2, or `FALSE` otherwise. Class: 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: class:word | Namespace: global | Interface Layer: all 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 quotation if the flag is `TRUE`. If true, also exit the word. Class: class:word | Namespace: global | Interface Layer: all immediate Data: - Addr: - Float: - Change the class of the most recently defined word to `class:macro`. 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 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: class:word | Namespace: global | Interface Layer: all mod Data: nm-o Addr: - Float: - Divide `n` by `m` and return the remainder. Class: class:word | Namespace: global | Interface Layer: all 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:negate Data: n-n Addr: - Float: - Invert the sign of a number. Class: class:word | Namespace: n | Interface Layer: rre Example #1: #10 n:negate #-10 n:negate n:negative? Data: n-f Addr: - Float: - Return `TRUE` if number is negative, or `FALSE` if not. Class: 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: class:word | Namespace: n | Interface Layer: all 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 nip Data: nm-m Addr: - Float: - Remove the second item from the stack. Class: class:word | Namespace: global | Interface Layer: all or Data: mn-o Addr: - Float: - Perform a bitwise OR between the provided values. Class: class:primitive | 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 rot Data: abc-bca Addr: - Float: - Rotate the top three values. Class: 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: class:word | Namespace: global | Interface Layer: all s:length Data: s-n Addr: - Float: - Return the number of characters in a string, excluding the NULL terminator. Class: class:word | Namespace: s | 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 store Data: na- Addr: - Float: - Store a value into the specified address. Class: class:primitive | Namespace: global | Interface Layer: all Example #1: 'Base var #10 &Base store store-next Data: na-a Addr: - Float: - Store a value into the specified address and return the next address. Class: 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: 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 tuck Data: nm-mnm Addr: - Float: - Put a copy of the top item on the stack under the second one. Class: class:word | Namespace: global | Interface Layer: all unpack Data: n-nnnn Addr: - Float: - Unpack a 32-bit value into four 8-bit values. Class: class:word | Namespace: global | 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: class:word | Namespace: v | Interface Layer: all xor Data: mn-o Addr: - Float: - Perform a bitwise XOR operation. Class: class:primitive | Namespace: global | Interface Layer: all {{ 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: 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-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- 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- 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