/*																				*/
/*																				*/
/*				File:		  	setbit.c										*/
/*				Returns:	  	void											*/
/*				Parameters:	i - int index of bit to set			*/
/*								j - int bit to set						*/
/*																				*/

#include <stdio.h>

#include "advm.h"
#include "values.h"

#include "object.h"
#include "var.h"
#include "place.h"
#include "ref.h"


void setbit (i,j)
int i;
int j;

	{
	for (;;)							/* this allows indirect reference through vars */
		{
		if (object(i))
			{
			array(objbit,i-1000);
			objbit[i-1000] = j;
			return;
			}
		if (place(i))
			{
			array(placeb,i-2000);
			placeb[i-2000] = j;
			return;
			}
		if (var(i))
			{
			array(varbit,i-7000);
			array(varval,i-7000);
			varbit[i-7000] = j;
			if (!place(varval[i-7000]) && !object(varval[i-7000])) return;
			i = ref(i);
			continue;
			}
		printf("Glitch!  Bad SETBIT - key = %d on record %d.%03d after loc %d\n",
					i,rec2,rec1,bp);
		return;
		}
	}

