/*																				*/
/*																				*/
/*				File:		  	commnd.c										*/
/*				Returns:	  													*/
/*				Parameters:													*/
/*																				*/
/*																				*/

#include <string.h>

#include "advm.h"
#include "string.h"
#include "values.h"

#include "init.h"
#include "var.h"
#include "null.h"
#include "object.h"
#include "place.h"
#include "verb.h"
#include "setval.h"
#include "setbit.h"
#include "readin.h"
#include "parse.h"
#include "find.h"
#include "bitval.h"


void commnd()

	{
	int linevl;
	int i,k;

	lineln = linewd[0] = linewd[1] = 0;
	readin();
	while (!parse()) 
		{
		if (find(zlex, &linevl) || init(linevl) || var(linevl))
			linevl = -1;
		else
			if (null(linevl))
				continue;
		array(linewd,lineln);
		linewd[lineln] = linevl;
		array2(zarg,lineln,sizeof(zarg[0])-1);
		strncpy(zarg[lineln], zlex, sizeof(zarg[lineln])-1);
		zarg[lineln][sizeof(zarg[0])-1] = 0;
		if (++lineln > 1)
			break;
		}
	/* label 100 */
	for(i=0; i<2; i++)
		{
		k = 0;
		array(linewd,i);
		if (object(linewd[i]) || place(linewd[i]))
			k=bitval(linewd[i]);
		if (verb(linewd[i]))
			k = xverb;
		if (linewd[i] < 0) k=badwrd;
		array (argwrd,i);
		setval (argwrd[i], linewd[i]);
		setbit (argwrd[i], k);
		}
	setval (status, lineln);
	if (!lineln)
		return;
	if (verb(linewd[0]))
		setbit (status, bitval(status) | xverb);
	if (object(linewd[0]))
		setbit (status, bitval(status) | xobjct);
	if (place(linewd[0]))
		setbit (status, bitval(status) | xplace);
	}
