/* 変数管理システム */
#include "vsiki.h"
#include "acdata.h"
#include "defines.h"

int var_num_read(long point,long *num,int *md,VARSYS *var)
/* 変数数値・モード読みだし */
/* return : 0=読み出せた , VARNKAKU=未確定である */
{
int m;
	if (point<VTOP||point>var->vwsize) return(VARAROVER); /* ポイントがおかしい */
	m=var->vwork[point+1];
	if (m&VKAKU) return(VARNKAKU); /* 未確定 */
	/* 読みだし */
	/* *num=*(long *)(&var->vwork[point+2]); */
	/* 数値はワークエリア内の任意のアドレスから書き込まれているので */
	/* これではうまくいかない（奇数アドレスのこともある）*/
	/* MC68000の制約回避 */
	*num=ctol(&var->vwork[point+2]);
	if (md!=NULL) *md=m;
	return(0);
}
