#include	"def.h"
#include	<machine.h>


err()
{	puts("error");
	exit(1);
}

int ishex(int c)
{
	if( c>='0' && c<='9')
		return( c-'0' );
	else if ( c>='a' && c<='f')
		return( (10+(c-'a')) );
	else
		return (-1);
}
int str2hex(char *str)
{	int 	i,num=0;
	
	do
	{	if( (i=ishex( *str )) >=0 )
			num=num*16+i;
		else
			err();
		
	}while( *(++str) != NULL );
	return num;
}

int cmosin(int addr)
{	return( inp(0x3000+addr*2) );
}
int cmosout(int addr,int data)
{	return( (int)outp(0x3000+addr*2,data) );
}
main( int argc,char *argv[])
{
	int 	addr,data;
	
	if (argc<2 )
	{	puts("usage : cmos  offset  [ data ]");
		puts("  offset は 0〜800 の16 進数で記述します");
	}
	
	addr=str2hex(argv[1]);
	if ( addr<0 || addr>0x800 )
		err();
	
	if (argc>2 )
	{	
		data=str2hex(argv[2]);
		printf("addr:%x  data:  %x --> %x\n",addr,cmosin(addr),data );
		
		cmosout( addr, data);
	}
	else
	{	printf("addr:%x  data:  %x\n",addr,cmosin(addr) );
	}
}
