WordStackDescription
.'-Read and discard the next 62 characters. This is used in blocks to provide line width comments.
0'-Parse to end of line. Insert into text line 0
1'-Parse to end of line. Insert into text line 1
2'-Parse to end of line. Insert into text line 2
3'-Parse to end of line. Insert into text line 3
4'-Parse to end of line. Insert into text line 4
5'-Parse to end of line. Insert into text line 5
6'-Parse to end of line. Insert into text line 6
7'-Parse to end of line. Insert into text line 7
8'-Parse to end of line. Insert into text line 8
9'-Parse to end of line. Insert into text line 9
10'-Parse to end of line. Insert into text line 10
11'-Parse to end of line. Insert into text line 11
12'-Parse to end of line. Insert into text line 12
13'-Parse to end of line. Insert into text line 13
14'-Parse to end of line. Insert into text line 14
15'-Parse to end of line. Insert into text line 15
{{-Begin a lexical scoped area. Starts the private portion.
---reveal----Within lexical scoped area, switch to global scope area.
}}-Close off lexical scoped area. Hides words in the private area.
)-Ending for comments or visual grouping. Provided for readability purposes
-eq?nn-fCompare values for inequality
-iffp-Execute p if flag is zero
;-End a definition
?jumpfp-Internal. If flag is non-zero, branch to p.
BaseBlock-Data. Holds the number of the first block.
Block-Data. Holds the current block number, relative to the value in BlockBase.
Blocks-Data. Set to the number of blocks available in your system.
Compiler-Data. Tracks compiler state
Dictionary-Data. Pointer to most recent header in dictionary
Free-Data. Pointer to next free addr
I-nAccess the loop index for the current loop. (For loops made using indexed-times)
J-nAccess the parent loop index for the current loop. (For loops made using indexed-times)
K-nAccess the grandparent loop index for the current loop. (For loops made using indexed-times)
Sigils-Data. Table of sigil handlers
[-pBegin a quotation
]p-pEnd a quotation
a:appendaa-aCreate a new array with the contents of a1 followed by a2
a:beheada-aRemove first item from an array
a:chopa-aRemove last item from an array
a:contains?an-fTrue if array contains n. False otherwise
a:copyap-Copy array a to memory starting at pointer p
a:dupa-aMake a copy of an array
a:eq?aa-fCompare two arrays for equality
a:-eq?aa-fCompare two arrays for inequality
a:fetchan-vFetch value stored at index n in array
a:filterap-aRun p once for each value in a. If it returns true, copy value new array
a:firsta-nReturn the first value in an array
a:for-eachap-Run p once for each value in the array. Pushes each value prior to calling p
a:hasha-nReturn the hash of an array
a:indicesav-aReturn array of indices for v in source array
a:indexav-nReturn first index of n in a
a:lasta-nReturn the last value in an array
a:leftan-aReturn left n values from array
a:lengtha-nReturn the length of an array
a:make...n-aCreate a new permanent array from the provided values
a:make/temp...n-aCreate a new temporary array from the provided values
a:mapap-aRun p once for each value in the array. Takes the returned value and creates a new array
a:middleafl-aReturn new array from f to l, inclusive
a:prependaa-aCreate a new array with the contents of a2 followed by a1
a:reduceanp-nTakes an array, a starting value, and a quote. This will apply the quote to each item in the array; the quote should consume two values and return one
a:reversea-aReverse the order of items in an array
a:rightan-aReturn right n values from array
a:storevan-Store value v into array at index n
a:tempa-aMake a copy of the array in the temporary string/array space
a:than-pReturn the address of a specific index into the array
allotn-Allocate n cells of memory
andnn-nPerform a bitwise AND
bixpp-?Execute p1 against x, then p2 against a copy of x
bi*xypp-Execute p1 against x and p2 against y
bi@xyp-Execute p against x, execute p against y
block:loadnp-Read 1024 cells in block n to p
block:savenp-Save 1024 cells at p to block n
block:buffer-pReturn a pointer to the start of the block buffer
bye-Exit Konilo
c:get-cRead a character from the keyboard
c:lowercase?c-fReturn true if character is lowercase or false if not
c:putc-Display a single character
c:to-lowerc-cConvert character to lowercase
c:to-sc-sConvert a character to a string
c:to-upperc-cConvert character to uppercase
c:uppercase?c-fReturn true if character is uppercase or false if not
callp-Call a function
choosefpp-Execute p1 if flag is non-zero or p2 if zero.
comman-Inline a value to here and increment Free
comparesdn-fCompare n cells of memory starting at s to memory starting at d. Return true if all match or false otherwise
compiling?-fTrue if Compiler is set, False otherwise
compile:litn-Internal. Compile an ilo li instruction
compile:callp-Internal. Compile an ilo lica instruction
compile:jumpp-Internal. Compile an ilo liju instruction
copysdc-Copy c cells starting at s to memory starting at d. Does not support overlapping regions
curryvp-pCreate a new quote pushing the value, then calling p1
d:addressd-pGiven a dictionary header, return a pointer to the address field
d:creates-Create a new header
d:exists?s-fGiven a dictionary header, return a flag indicating whether or not the word exists
d:hashd-pGiven a dictionary header, return a pointer to the hash field
d:linkd-pGiven a dictionary header, return a pointer to the link field
d:lookups-dLookup a word in the dictionary. Returns zero if not found or the dictionary header address
depths-nmReturn depths of data and address stacks
depth/data-nReturn the depth of the data stack
depth/address-nReturn the depth of the address stack
dipnp-nPush n to address stack, call p. then restore n to data stack
dropn-Discard top value on stack
drop-pairnn-Discard top two values on stack
dtc-Internal. Data following is a direct threaded address list
dupn-nnDuplicate top value on stack
dup-pairnm-nmnmDuplicate top two values
e:Display-Data. Holds a pointer to a block display word. Called by edit.
e:erase/linen-Erase line n in the block buffer
e:insertn'-Erase line n, parse to end of line, insert into line n
e:insert-atlc'-Parse to end of line. Insert text into line l at column c
e:linen-Display a single line from the current block
e:replacels-Insert text s into line l
e:replace-atlcs-Insert text s into line l at column c
e:to-linen-pReturn pointer to start of line in the block buffer
editn-Set Block to n. Load and display block
eq?nn-fCompare values for equality
fetchp-nFetch a value stored at address
fetch-nexta-anFetch a value stored at address Also returns the next address
fillvpn-Fill n cells of memory starting at p with value v
foreverp-Run p repeatedly, in an unending loop
gcp-Run function at pointer p. Saves and restores Free to recover any memory allocated during run
gt?nn-fCompare values for n1 greater than n2
gteq?nn-fCompare two values for greater than or equality
here-aReturn the next free memory address
iffp-Execute p if flag is non-zero
indexed-timesnp-Run a quote the specified number of times, tracking the loop index in I
internal:lit-nInternal. Push next value in memory to the stack
internal:quote-pInternal. Skip over quote. Push address of quote to stack.
interprets-Interpret token
io...n-Trigger an I/O operation
jumpp-Internal. Jump to an address
list*-Display the text in the block
list#-Display the block with line numbers
list-Display the block with line numbers and rules
load-(re)Load the current block
lt?nn-fCompare values for n1 less than n2
lteq?nn-fCompare two values for less than or equality
n:absn-nReturn the absolute value of n
n:addnn-nAdd n1 to n2, returning n3
n:between?nlu-fTrue if n is between l and u, inclusive
n:decn-nDecrement n by 1
n:divnn-nDivine n1 by n2; get result
n:divmodnn-nnDivide n1 by n2 and return the result and remainder
n:get'-nRead a number from the input device
n:incn-nIncrement n by 1
n:limitnlu-nConstrain n to between l and u, inclusive
n:maxnn-nReturn the greater of two values
n:minnn-nReturn the lower of two values
n:modnn-nDivide n1 by n2; get remainder
n:mulnn-nMultiply n1 by n2, returning n3
n:negaten-nInvert the sign of n
n:putn-Display a number
n:subnn-nSubtract n2 from n1
n:to-sn-sConvert number to a temp string
n:zero?n-fCompare n to zero. True if zero, false otherwise
n:-zero?n-fCompare n to zero. True if not zero, false otherwise
needss-Run any blocks (in order found) with a title starting with s
new-Erase the contents of the current block
next-Switch to and load next block
nipxy-yDiscard second item on stack
nl-Display a newline
notn-nPerform a logical NOT operation
ornn-nPerform a bitwise OR
overnm-nmnPut a copy of NOS on top of stack
pop-nMove top value on address stack to data stack
prelude-Load & run blocks 1 & 2 if they appear to be code. Called by default `startup`.
prev-Switch to and load previous block
process-datan-?Internal. If compiling, compile value as a literal into the word. If interpreting, leave on the stack
pushn-Move TOS to the address stack
restart-Reload the image and empty stacks
rom:save-Save the current memory to disk (ilo.rom)
rotxyz-yzxRotate the top three values
run-Run code in the currently loaded block
s:appendss-sAppend s2 to s1, returning new temporary string
s:beheads-sRemove first item from a string
s:chops-sRemove last item from a string
s:contains?sc-fTrue if string contains c. False otherwise
s:copysd-Copy string s to memory at d
s:dups-sMake a copy of string
s:eq?ss-fCompare two strings for equality
s:-eq?ss-fCompare two strings for inequality
s:evaluates-?Interpret each token in a string
s:fetchsn-cReturn character at index n in the string
s:filtersp-sRun p once for each value in s If it returns true, copy value new string
s:firsts-cReturn the first character in a string
s:for-eachsp-Run p once for each character in s. Pushes each character to the stack before calling p
s:get/line'-sRead a line of input until enter is encountered. Return input as string
s:get/token-sRead a string from the keyboard ending when a whitespace is encountered
s:hashs-nReturn the hash of the string
s:index/csc-fTrue if string contains c, false otherwise
s:keeps-sMove string to here, allocating space and returning a pointer
s:lasts-cReturn the last character in a string
s:leftsn-sReturn left n characters of string
s:lengths-nReturn the length of a string
s:mapsp-sRun p once for each value in the string. Takes the returned value and creates a new string
s:middlesfl-sReturn substring from f to l, inclusive
s:prependss-sCreate a new string with the contents of s2 followed by s1
s:puts-Display a string
s:reducesnp-nTakes a string, a starting value, and a quote. This will apply the quote to each item in the string; the quote should consume two values and return one
s:reverses-sReverse the order of values in the string. Returns a pointer to the new string
s:rewrites-sReplace underscores in string with spaces
s:rightsn-sReturn right n characters of string
s:storecsn-Store character into string at index n
s:temps-sPut a copy of a string in the temporary buffers. Return a pointer to it
s:thsn-aGiven a string and index, return the address
s:to-lowers-sMake all characters in string lowercase
s:to-ns-nConvert a string to a number
s:to-uppers-sMake all characters in a string uppercase
shift-leftnn-nShift n1 left by n2 bits
shift-rightnn-nShift n1 right by n2 bits
sigil:(-Sigil. Token is a comment
sigil:#s-nSigil. Token is a number
sigil:&s-aSigil. Token is a named pointer
sigil:'s-sSigil. Token is a string.
sigil::s-Sigil. Token is name of a new word to define
sigil:$s-cSigil. Return first character of token
sigil:getc-pReturn the address of a sigil handler for character c
sigil:setpc-Assign word at address to the sigil handler for character c
sigil:@s-nSigil. Use to fetch value from a named variable
sigil:!ns-Sigil. Use to store value into a named variable
sigil:\as-Sigil. Bind name s to function a
sipnp-nPush a copy of n to address then call p. Afterwards, restore to the data stack
save-Save the current block
setn-Set Block to n. Does not load or save the block
sp-Display a space
startup-Called on startup to prepare the system. You can replace this to have ilo start your application
storena-Store n into address a
store-nextna-aStore n int address a, return address a + 1
swapxy-yxExchange the top two stack items
sys:buffers/block-Data. Points to the start of the block buffer.
sys:buffers/loops-Data. Holds loop indices.
sys:buffers/numeric-conversion-Data. Used by s:to-n.
sys:buffers/scope-Data. Holds dictionary pointers for {{ ---reveal--- }}
sys:buffers/needs-Data. Used by needs
sys:buffers/reserved-Data. Reserved for future use.
sys:buffers/strings+arrays-Data. Start of the temporary string & array pool.
sys:buffers/input-Data. Holds the current input token.
sys:info-Display system information.
tab-Display a tab
timesnp-For n iterations, execute p
titles-Display the block title lines. The output is paginated every 16 lines
trixppp-?Apply p1 against x, then p2 against a copy of x, and finally p3 against another copy of x
tri*xyzppp-?Apply p1 against x, p2 against y, and p3 against z
tri@xyzp-?Apply p against x, then against y, and finally against z
tuckxy-yxyPut a copy of TOS under NOS
untilp-Run a quote in a loop repeatedly The loop must return a flag. End loop when flag is not zero
usen-Load and run a specific block numbered n
usingnn-Load and run blocks n1 thru n2
v:deca-Decrement the value stored at address
v:inca-Increment the value stored at address
vars-Create a variable with a value of zero
var-nns-Create a variable with a value of n
whilep-Run a quote in a loop repeatedly The loop must return a flag. End loop when flag is zero
xornn-nPerform a bitwise XOR