DONE

Exit current table

OK

Print the message Ok.

MSG M

Print message M

GET I

Get item I, fails as a condition if you can't carry item.. message is printed
doesn't check item is present or carriable etc.

DROP I

Drop item I

PLACE I1 I2

Place I1 in I2

CALL T

Execute table T

LD F N

Load flag F with N

LDF F1 F2

Load flag F1 with the contents of flag F2

PRINT N

Print number N

LDO F I N

Load F with the Nth data item of I. The data items are

0:	Flags
1:	Location
2:	State + 16 * Maxstate
3:	Weight
4:	Size
5:	Class (unused)
6+	User flags

SETO I N1 N2

Set data item N1 of item I to N2

LDR F I N

As LDO for rooms. Valid numbers for N are

0:	Flags
1:	Location
2:	Exit N
3:	Exit E
4:	Exit S
5:	Exit W
6:	Exit U
7:	Exit D
8-13:	NE,SE...IN OUT etc
14+:	Userflags

STR I N1 N2

As SETO for rooms


LDP F I N

As LDO for players. Valid offsets are

0:	Flags
1:	Location
2:	Level
3:	Score
4:	Strength (1/10th of max weight player can carry)
5:	Person user is snooping on or -1
6:	Visibility of player (must be level>=vis to see)
7+:	User flags

SETP I N1 N2

As SETO for players

MUL F N

Multiply F by N

DIV F N

Divide F by N

ADD F N

Add N to F

SUB F N

Subtract N from F

SET F N

Set bit N in F

RES F N

Reset bit N in F

INC I

Increase state of I by 1 unless it is at max state

DEC I

Reduce state of I by 1 unless at 0

SETSTATE I N

Set the state of I to N

DOACT I M N

Every user in the room with I (except I) is sent I {M}. N holds values
controlling this

N can be

1	If you can't see em say nothing
2	If you can't see em say 'Someone'
4	Not if deaf	- 
8	Not if blind	- 
16	Dont tell sleepers. Without this sleepers are told and woken.

or any sum thereof
eg

DOACT !0 BURPS 2  could be used for a burp command

DOTO I1 M I2 N

Similar to DOACT but everyone is told I1 {M} I2, except I2 who is told
I1 {M} you.

SCORE

Display a players score

LOBJL I

Display list of items in room, in long format.

LOBJS I

Display list of items in I in short format

PNAME I

Print the name of item I

PDESC IN

Print the Nth state description of object I

PLONG I

Print the long description of item I

JP N

After running this line move current line by this amount relative to next line
thus JP -1 re-runs same line

CR

Print a carriage return

MSGCR M

Print message then a carriage return

Z F

True if flag is zero

EQ F N

True if flag F=N

GT F N

True for Flag F > N

LT F N

Guess what ?

AT I

True if player is at I

BIT F N

True if bit N of flag F is set

ISAT I1 I2

True if I1 is at I2

HERE I

True if item I is here

PRES I

True if item I is here or carried

DARK

True if it is dark

STATE I N

True if item I is in state N

CHANCE N

True N times in 10000

IS I N

Test if item is of specific type. Types are N=

1	PLAYER
2	ROOM
3	OBJECT

OBIT I B

True if bit B of object I's flags is set

RBIT I B

Same for rooms

PBIT I B

and players

CANSEE I1 I2

True if I1 can see I2, considering darkness and invisibility

LEVEL I N

True if player I is at least level N

ARCH I

True if item I is an archwiz

CALLED I M

True if item I has a name the same as the text in message M

WEIGHS N

True if current player + belongings weighs at least N

CANPUT I1 I2

True if I1 can fit in / be carried by I2

GOT I

True if I is carried

EXIT

Player leaves game

SAVE

Saves the current persona. To kill someone just reset all their stats to initial
When saving someone you MUST clear their snoop flag before you save them!\

NUMOF M F

Converts the text of message m and stores the result in flag f. If the message
does not contain a number the NUMOF condition fails.

NEIL I N F

Put the number of the next item in loction I, after item N into flag F.
Fails if no more items. Put N=-1 to find first. 

GETWORDS I F1 F2

Loads the adj/noun pair for I into F1 F2

NEXTMATCH I F1 F2 N F3

As NEIL, but puts next matching item in vocabulary, F1=ADJ F2=NOUN F3=ANSWER


NEXTGMATCH F1 F2 N F3

As NEXTMATCH for whole system

PARSE M

Feed M as input to the parser.

TABTO N

Shift the print position forwards until it is modulo N. Newlines will be started
if required

PROMPT M

Set the prompt to message M

AUTOVERB M		[UNIMPLEMENTED]

Set an automatic input precursor for this player. '*' typed in front of lines
over-rides this

APPEND M1 M2

Appends the contents of M2 onto file M1

TYPE M1

Type the contents of file M1. This is a condition. If file M1 does not
exist the condition fails.

RANDOM F

Load flag F with a number between 0-9999.

ZEBEDEE

Time for bed said the server

PWCHANGE

Change user password

SETPASS M

Message should contain a space seperated name and password. The password
for that user will be changed without any verification. You are advised
to be careful how you use this in a database and who you allow to use it.

PCNAME	I

Print the name of I with the first letter capitalised

MFORMAT M1 M2 M3 M4 I1 I2 I3

This function formats a message according to a format message M1. The new
message is placed in M2 and any previous contents of M2 are zapped.

The format string may contain any of the following format strings 
introduced by '%', in addition to straight text which is merely copied into
the result string. Format strings insert the following text into the result
message.

%	A single '%' message
N0	Name of I1	Capitalised
N1	Name of I2
N2	Name of I3
n0	Name of I1
n1	Name of I2
n2	Name of I3
T0	True Name of I1
T1	True Name of I2
T2	True Name of I3
d0	Description of object I1 (current)
d1	Description of object I2 (current)
d2	Description of object I3 (current)
r0	Long text of room I1
r1	Long text of room I2
r2	Long text of room I3
h0	Here message of player I1
h1	Here message of player I2
h2	Here message of player I3
a0	Arrives message of player I1
a1	Arrives message of player I2
a2	Arrives message of player I3
l0	Leaves message of player I1
l1	Leaves message of player I2
l2	Leaves message of player I3
m0	Message M3
m1	Message M4

All unused fields can be filled with dummys eg '{ }' for messages, and
!ME etc for item slots.

eg MSFORMAT {%N1 has entered the game.} U1 { } { } !ME !ME !ME


Will leave U1 holding {[PlayerName] has entered the game.}

Note in the example that dummy fields are used for all the unused fields,
since the system requires fixed argument commands.

MKROOM	M F

Create a room, with true name M, put item number of it in F

MKOBJECT

As above for an object

MKPLAYER

And a player

TRASH	I

Totally destroy item I. Do not refer to a destroyed item or it will all fall
down. The system routines to scan for things automatically skip destroyed items
NEVER destroy a player slot

SETDESC I N M

Set description N of object I to M

SETMAXSTATE I N

Set the max state of object I to N

SETLONG I M

Set the long description of room I to M

SETIOH I N M

Set either the arrives/leaves/here message (In Out Here) of player I to M
according to value in N.
HERE=0 ARRIVES=1 LEAVES=2

SETNAME I M

Set the name of item I to M

SETVOCAB I N1 N2

Set the vocabulary of item I to have adj N1 noun N2

LENGTH M F

Sets F to be the length of message M

ADDWORD M N1 N2

Adds word M, of type N1 (1=Verb 2=Adj 3=Noun 4=Prep) as word number N2.
Currently choosing N2 is a user problem. Future versions will permit
N2 to be set to -1 to mean choose a word. The recommended method is
to start at 15000 and work upwards in ones, which is ok unless you add
13000 words in one game. Words will be correctly numbered to take up 
spaces on boot, starting from 0. Users are assigned as codes 28000 to
28000+Max Users.

FINDWORD M N F

Sets F to the code of word M in type N. -1 means none

DELWORD M T

Delete word M of type T. Words must be deleted as many times as they are
added before they go.

TOD F1 F2 F3 F4 F5 F6 F7

Read real time of day/date

F1=Seconds
F2=Minutes
F3=Hours
F4=Day of Month
F5=Month
F6=Year
F7=Day Of Week

FLOAD M N1 N2

Load the flags from N1 upto N2 (not including N2) from file M

FSAVE M N1 N2

As above but save the flags to the file, which will be created.

DO N

Mark the start of a loop named 'N', any previous loop marker 'N' is
forgotten (N is in range 0-15). Loops may not be across tables. Due to
a bug in the current driver loops are not local - they will become so
ie a DO 0 in table 0 will not be affected if calling table 8 then does
another DO 0. 

LOOP N

Go back to the line after the corresponding DO

DELFILE M

Delete the file called 'M'. True if succeeds.

FINDSTR M1 M2 N F

Finds the first character in M1 which is contained in the string M2, from
position N onwards, and store the result in F, False if it fails to find one.

SKIPSTR M1 M2 N F

As FINDSTR but finds first NOT contained in M2

LOADU I M

Load the user named M over the top of any currently exisiting player I. Do
not load over the top of a user, unless you know what you are doing!

SAVEU I M

Save item I (must be a player) as the name M

SUBSTR M1 M2

True if M2 is a sub string of M1

EXTRACT M1 M2 N1 N2

Makes M2 characters N1 to N2 in M1. If N2>length of string characters
are copied till end of string. If N2>N1 or N1>length of string a null
string is the result.

WTEXT N1 N2 M

Puts the text of a word name matching type=N1, value=N2 into message M,
or $ANY if it does not match

Scribble

In any table !n replaces a number with the equivalent flag value
ie !4 is contents of flag 4. if the value is of type 'F' flag anyway. 
!x becomes the flag whose number is contained in flag x. You can use flags for
items too, indeed it is used a lot.
@item written for a number replaces number with the value of item
?item replaces number with ts location eg LD 33 ?SWORD sets flag 33 to
&name is the number of a message.
the location of the sword.
There are 256 flags (16 bit signed) 0-63 are system reserved.