/*																				*/
/*																				*/
/*				File:		  	bitval.c										*/
/*				Returns:	  	int											*/
/*				Parameters:	id - int										*/
/*																				*/
/*																				*/

#include <string.h>

#include "advm.h"
#include "values.h"

#include "object.h"
#include "var.h"
#include "place.h"
#include "init.h"


int bitval (id)
int id;

	{
	for (;;)
		{
		if (object(id))
			{
			array(objbit,id-1000);
			return (objbit[id-1000]);
			}
		if (var(id))
			{
			array(varval,id-7000);
			if (place(varval[id-7000]) || object(varval[id-7000]))
				{
				id = varval[id-7000];
				continue;
				}
			array(varbit,id-7000);
			return (varbit[id-7000]);
			}
		if (place(id))
			{
			array(placeb, id-2000);
			return (placeb[id-2000]);
			}
		if (init(id))
			return (1 << id);
		printf (
			"Glitch!  Bad BITVAL - key = %d on record %d.%03d after loc %d\n",
				id, rec2, rec1, bp);
		return (0);
		}
	}
