( 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 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...
( 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.
( n --- )
"case". Start a multi-path conditional statement. Each selection is specified by a match on an of statement. For example:
   : test      ( n --- )
      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
( 'string --- )
( --- )
"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". The search and replace C functions use a dynamically allocated temporary work string. Calling clear_temp will free() the memory.
( --- )
"c-l-s". Clear screen. Note: This word is functional only in the PC version of Until.
( '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.
( '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". Perform a cold start of the system. The stacks are cleared and the primitives recreated.
( --- 'comma_offset)
"comma offset". Push the address of the C variable comma_offset onto the parameter stack.
( --- )
"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.
( --- 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 )

( 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.
( '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.
( --- )
"c-r". Type a carriage return to the screen. This word is vectored.
( --- )
"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