*add_verb
add_verb(action,func)

string action,func;

add_verb adds an verb to the list of verbs on the object executing the
system call. If add_verb is called on the prototype, all the prototype's
children will have the verb defined for them.
*add_xverb
add_xverb(action,func)

string action,func;

add_xverb adds an xverb to the list of verbs on the object executing the
system call. If add_xverb is called on the prototype, all the prototype's
children will have the xverb defined for them.

xverbs differ from regular verbs in that no space has to appear after
the xverb's name in the player's command for the xverb to be recognized
by the parser.
*alarm
alarm(delay,func)

int delay;
string func;

alarm will cause the function func to be executed on the object calling
alarm() in delay seconds from the current time.
*asc
asc(c)

string c;

Returns the ASCII equivalent of the first character of c.
*atoi
atoi(s)

string s;

Returns the integer represented by i.
*atoo
atoo(s)

string s;

Returns the object represented by s; s is either a path name, with the .c
truncated, an integer in the form "#%d", where %d is the integer,
or the concatenation of the two forms.
*call_other
call_other(obj,func,...)

object obj;
string func;

call_other calls the function func in the object obj, with an optional
list of variables to use as arguments to func.
*caller_object
caller_object()

caller_object returns the object which called the function executing
the system call.
*cat
cat(path)

string path;

Like the UNIX cat, it types a file to the screen.
*chmod
chmod(path,flags)

string path;
int flags;

Changes the permissions on path to flags.
The flags are the same as used in unhide().
*chown
chown(path,owner)

string path;
object owner;

Changes a file's owner to owner.
*chr
chr(c)

int c;

Returns a string consisting of the ASCII equivalent of c.
*clone_object
clone_object(obj|path)

object obj;
string path;

clone_object returns an object pointer to a new instance of object obj,
or a new instance of the object referred to by the string path.
*command
command(action)

string action;

Causes the command action to be placed on the object's incoming command
queue.
*compile_object
compile_object(path)

string path;

Compiles the object named by path; path should not have the ".c" stuck
on it.
*connected
connected(obj)

object obj;

Returns zero if obj is not connected to the net, non-zero if its.
*contents
contents(obj)

object obj;

Returns the first object in the contents of obj.
*cp
cp(path,newpath)

string path,newpath;

Copies file path to file newpath.
*destruct
destruct(obj)

object obj;

destruct destroys the object obj and sets all references to it in other
objects' data spaces to 0.  If obj is a prototype, all children of obj
are destroyed, also.

NOTE: only an object set PRIV can destroy any object other than itself.
*disconnect_device
disconnect_device()

This disconnects the device connected to the object which executes it.
*downcase
downcase(s)

string s;

Returns the string s with all uppercase letters changed to lowercase.
*edit
edit(path)

string path;

Invokes the editor on the file named by path.
*ferase
ferase(pathname)

string pathname;

Erases the contents of the file pathname.
*fread
fread(pathname,pos)

string pathname;
int pos;

Returns a string read from file pathname beginning at position pos. If
pos is a variable, pos will be updated to reflect the new position.
*fwrite
fwrite(pathname,s)

string pathname,s;

Writes string s to the end of file pathname.
*get_devconn
get_devconn(obj)

object obj;

Returns a string containing the network address of obj.
*hide
hide(string path)

This causes a file to be removed from the filesystem - it does NOT cause
the file to be actually deleted, it just cannot be referenced from
within CI.

All files that are created outside of CI will be initially hidden, and you
must use unhide() to bring them into CI's filesystem.

NOTE: an object must be PRIV to use hide()
*in_editor
in_editor(obj)

object obj;

Returns zero if obj is not using the on-line editor, non-zero if it is.
*instr
instr(s,startpos,search)

string s,search;
int startpos;

Returns the position of the first occurrence of string search within
string s, beginning its pattern-matching at position startpos of s.
*interactive
interactive(obj)

object obj;

Returns zero if the object is not INTERACTIVE, non-zero if it is.
*is_legal
is_legal(s)

string s;

Returns non-zero if s is a legal filename, zero otherwise.
*iterate
iterate(first_obj,except1,except2,func,...)

object first_obj,except1,except2;
string func;

This system call calls the function func on first_obj and every object
in the next_object() linked list associated with it.  It does not,
however, call the function func on the objects except1 or except2.
except1 and except2 may be null objects.
*itoa
itoa(val)

int val;

Returns a string representing val.
*itoo
itoo(i)

int i;

Returns the object pointer equivalent to integer i.
*leftstr
leftstr(s,len)

string s;
int len;

Returns a string consisting of the leftmost len characters of s.
*location
location(obj)

object obj;

location returns an object pointer pointing to the location of obj.
*ls
ls(path)

string path;

Lists the directory named by path.
*midstr
midstr(s,pos,len)

string s;
int pos;
int len;

Returns a portion of s beginning at position pos with a length len.

NOTE: indexing in CI-C for strings begins with 1, not 0.
*mkdir
mkdir(path)

string path;

Makes a directory named path.
*mktime
mktime(tm)

int tm;

Returns a string equivalent to the calendar time tm.
*move_object
move_object(item,dest)

object item,dest;

Moves item to dest.
*mv
mv(path,newpath)

string path,newpath;

Moves the file path to the file newpath.
*next_child
next_child(obj)

object obj;

next_child will return the first child if obj is a prototype, or the next
child in line if obj is not a prototype.
*next_object
next_object(obj)

object obj;

Returns the next object in line after obj, in obj's location.
*next_proto
next_proto(obj)

object obj;

CI maintains a list of prototype objects; next_proto returns the next
prototype in line. To get the first prototype, use itoo(0); this
will return the object pointer to /boot#0.
*next_who
next_who(obj)

object obj;

Gets the next object connected over the net after obj in the server's list
of net-connected objects.  If obj is null, it will return the first object
in the server's list.  It will return null if obj is the last object in the
server's list.
*otoa
otoa(obj)

object obj;

Returns a string representing object obj.
*otoi
otoi(o)

object o;

Returns the integer equivalent of the object pointer 0.
*parent
parent(obj)

object obj;

parent returns the object which is the prototype of obj.
*priv
priv(obj)

object obj;

Returns zero if obj is not PRIV, non-zero if it is.
*prototype
prototype(o)

object o;

Returns non-zero if o is a prototype, zero if not.
*random
random(limit)

int limit;

Returns an integer from 0 to limit-1.
*reconnect_device
reconnect_device(obj)

object obj;

This function calls moves a network connection to the object obj from
the current object. It will fail if there is a already a connection
on obj.

NOTE: must be PRIV to use this system call
*remove_alarm
remove_alarm([func])

string func;

remove_alarm will remove the function func from the object's alarm queue.
If remove_alarm is called with no arguments, it will remove all alarms
from the object's alarm queue.
*remove_verb
remove_verb(action)

string action;

Removes the verb action.
*rightstr
rightstr(s,len)

string s;
int len;

Returns a string consisting of the rightmost len characters of s.
*rm
rm(path)

string path;

Removes the file named by path.
*rmdir
rmdir(path)

string path;

Removes the directory named by path; it must be an empty directory.
*send_device
send_device(msg)

string msg;

Sends msg over the network to the person connected to the device which
executes this function.
*set_interactive
set_interactive()

Sets the object calling it to INTERACTIVE.  An INTERACTIVE object's verbs
cannot be activated by anyone other than that object.
*set_priv
set_priv(obj)

object obj;

Sets the PRIV flag on an object.

NOTE: an object must be set PRIV to set another object PRIV.
*sprintf
sprintf()

It's not implemented.
*sscanf
sscanf()

This system call is unimplemented, and might never be implemented.
In the meantime, use the following calls:

midstr(),strlen(),leftstr(),rightstr(),subst(),instr()

NOTE: indexing of strings in CI-C begins at 1, not 0 like in regular C.
*strlen
strlen(s)

string s;

Returns the length of string s.
*subst
subst(s,pos,len,s2)

string s,s2;
int pos,len;

Returns a string that is identical to s, except that len characters
of s have been removed beginning at position pos and replaced with s2.
*sysctl
sysctl(oper, ...)

int oper;

The following operations are supported by sysctl:

0 - save. saves the db, no further arguments required.
1 - shutdown. shutdowns the program, no further arguments required.
2 - panic. shutdowns the program, no further arguments required.

All three of these functions require the caller to be PRIV.
*syslog
syslog(msg)

string msg;

Writes msg to the system log file.
*this_object
this_object()

Returns an object pointer to the object currently executing the function
it occurs in.
*this_player
this_player()

Returns the object pointer to the object that initiated the current command,
or 0 if the current thread of execution was initiated by something other
than a command.
*time
time()

Returns the current calendar time.
*typeof
typeof(x)

var x;

Returns the variable type of x - 0 for integer, 1 for string, and
2 for object pointer.
*unhide
unhide(path,owner,flags)

string path;
object owner;
int flags;

This unhides a file, and sets the owner & flags on it.
Flags you can set are:
READ_OK 1
WRITE_OK 2
DIRECTORY 4

NOTE: an object must be PRIV to use unhide()
*upcase
upcase(s)

string s;

Returns the string s with all lowercase letters changed to uppercase.