c!
( c addr --- )
"c-store". Store the character, c, at address addr. This is
a byte oriented operation.
ascii A here c!
stores the integer value for 'A' (65 decimal) at the address of here.
c,
( c --- )
"c comma". Not implemented. Normal Forths compile the character into
the next available byte in the dictionary. There are several issues
that must be resolved in my mind before I add c, to Until. The
problem is caused by the non-contiguous dictionary. Does the character
get compiled into the last definition? Should an allot be required
before c,? The problems are compatibility related not technical...
c@
( addr --- c )
"c-fetch". Fetch the character located at the address, addr. The
following statement fetches the character stored at here:
here c@ .
Assuming that here contains a `A', the number 65 will be typed.
case
( n --- )
"case". Start a multi-path conditional statement. Each selection
is specified by a match on an of statement. For example:
: test ( n --- )
case
1 of ." n is 1" cr endof
2 of ." n is 2" cr endof
." No match" cr
endcase ;
n is left on the stack by of each time the test fails. Therefore,
endcase removes n from the parameter stack when no cases match.
case is roughly equivalent to the C switch statement.
See: endcase, endof, of
center
( 'string --- )
"center".
clear_read
( --- )
"clear-read". Resets the current SGML input buffer, this_field,
to a small scratch buffer. It cannot be simply set to zero just in case
more data is collected.
clear_temp
( --- )
"clear-temp". The search and replace C functions use a dynamically
allocated temporary work string. Calling clear_temp will free()
the memory.
cls
( --- )
"c-l-s". Clear screen. Note: This word is functional only in the
PC version of Until.
cmove
( 'from 'to n --- )
"c-move". Move n bytes starting at address 'from to
the destination address, 'to. The source and string should
not overlap. Use cmove> for overlapping strings.
source destination 20 cmove
moves 20 bytes from source to destination.
cmove>
( 'from 'to n --- )
"c-move-up". Move n bytes starting at 'from to 'to.
This move operations starts at the end of the buffer and works toward
the front. cmove> should be used when source and destination
strings overlap. Use cmove for non-overlapping strings.
cold
( --- )
"cold". Perform a cold start of the system. The stacks are cleared
and the primitives recreated.
comma_offset
( --- 'comma_offset)
"comma offset". Push the address of the C variable comma_offset
onto the parameter stack.
compile
( --- )
"compile". Compile the following word into the current definition. It
is typically used in immediate words to compile an address into
the definition. Usage:
: immed-word compile cr ; immediate
Since immed-word executes at compile time to include cr
in the word definition. Generally, the definition is an immediate
word that contains a non-immediate word that is to be compiled rather
than executed. Use compile only inside a colon definition.
constant
( --- n )
"constant". Create a constant. The compile time stack comment is
( n --- ). Typical usage is:
5 constant five
When five is referenced, the integer 5 is pushed onto
the parameter stack:
five ( --- 5 )
convert
( d 'numeric_string --- d2 'end )
"convert". Convert the numeric Ascii string to a double number. The
end address is the address of the first non-numeric character in
the numeric string. NOT IMPLEMENTED.
count
( 'addr --- addr+1 len )
"count". Convert a counted string address, addr, to the
first byte address and length.
a_string count type
count is used in conjunction with many words that require
an address and a length to manipulate a counted string.
cr
( --- )
"c-r". Type a carriage return to the screen. This word is vectored.
create
( --- )
"create". Create an empty word definition. The word name assigned
is the following blank delimited token in the input stream. Usage:
create name \ run-time ( --- 'name )
The run-time execution of name leaves its address on the top of the
stack. create can be used to build arrays and such.
Table of Contents
Next Section