*

  Data:  nn-n
  Addr:  -
  Float: -

Multiply `n1` by `n2` and return the result.

Class: class:primitive | Namespace: global | Interface Layer: all

Example #1:

    #2 #6 *
    #-1 #100 *

+

  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?

/

  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

/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

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

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

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

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:  xyq-?
  Addr:  -
  Float: -

Execute q against x, then execute q against y.

Class: class:word | Namespace: global | Interface Layer: all

Example #1:

    #10 #20 [ #3 * ] bi@

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

copy

  Data:  sdl-
  Addr:  -
  Float: -

Copy `l` cells from memory at `s` to the memory at `d`. These should not overlap.

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

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: class:word | Namespace: d | Interface Layer: all

d:name

  Data:  d-s
  Addr:  -
  Float: -

Given a dictionary header, return the name field.

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?

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

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:-zero?

  Data:  n-f
  Addr:  -
  Float: -

Return `TRUE` if number is not zero, or `FALSE` otherwise.

Class: 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: 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: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:put

  Data:  n-
  Addr:  -
  Float: -

Display a number.

Class: class:word | Namespace: global | Interface Layer: all

n:to-string

  Data:  n-s
  Addr:  -
  Float: -

Convert a number into a string.

Class: class:word | Namespace: n | 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

nl

  Data:  -
  Addr:  -
  Float: -

Display a newline.

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

reorder

  Data:  ...ss-?
  Addr:  -
  Float: -

Restructure the order of items on the stack.

Class: class:word | 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: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: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

s:put

  Data:  s-
  Addr:  -
  Float: -

Display a string.

Class: class:word | Namespace: global | 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: class:primitive | Namespace: global | Interface Layer: all

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

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

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

tab

  Data:  -
  Addr:  -
  Float: -

Display a tab (`ASCII:HT`)

Class: class:word | 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

unpack

  Data:  n-nnnn
  Addr:  -
  Float: -

Unpack a 32-bit value into four 8-bit values.

Class: class:word | Namespace: global | Interface Layer: all

until

  Data:  q(-f)-
  Addr:  -
  Float: -

Execute quote repeatedly while the quote returns a value of `FALSE`. The quote should return a flag of either `TRUE` or `FALSE`, though `until` will treat any non-zero value as `TRUE`.

Class: class:word | Namespace: global | Interface Layer: all

Example #1:

    #10 [ dup n:put nl n:dec dup n:zero? ] until

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

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

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