Exemplo n.º 1
0
//a=a-1
void ALU::dec(Register a)
{
	if(!a.getValue())
	{
		m_flags[0] = 1;
	}
	else
	{
		m_flags[0] = 0;
	}
	a.setValue(a.getValue()-1);
}
Exemplo n.º 2
0
//a=a*b
void ALU::mul(Register a, Register b)
{
	if(a.getValue()>UINT_MAX/b.getValue())
	{
		m_flags[0] = 1;
	}
	else
	{
		m_flags[0] = 0;
	}
	a.setValue(a.getValue()*b.getValue());
}
Exemplo n.º 3
0
//a=b-a
void ALU::rsub(Register a, Register b)
{
	if(b.getValue()<a.getValue())
	{
		m_flags[0] = 1;
	}
	else
	{
		m_flags[0] = 0;
	}
	a.setValue(b.getValue()-a.getValue());
}
Exemplo n.º 4
0
//a=a-b
void ALU::sub(Register a, Register b)
{
	if(a.getValue()<b.getValue())
	{
		m_flags[0] = 1;
	}
	else
	{
		m_flags[0] = 0;
	}
	a.setValue(a.getValue()-b.getValue());
}
Exemplo n.º 5
0
//a=a+1
void ALU::inc(Register a)
{
	if(a.getValue()==UINT_MAX)
	{
		m_flags[0] = 1;
	}
	else
	{
		m_flags[0] = 0;
	}
	a.setValue(a.getValue()+1);
}
Exemplo n.º 6
0
//a=a+b
void ALU::add(Register a,Register b)
{
	if(a.getValue()>UINT_MAX-b.getValue())
	{
		m_flags[0] = 1;
	}
	else
	{
		m_flags[0] = 0;
	}
	a.setValue(a.getValue()+b.getValue());
}
Exemplo n.º 7
0
//a=b-a+c-1
void ALU::rsubc(Register a, Register b)
{
	unsigned val = b.getValue()-a.getValue()+m_flags[0]-1;
	if(b.getValue()<a.getValue()-m_flags[0]+1)
	{
		m_flags[0] = 1;
	}
	else
	{
		m_flags[0] = 0;
	}
	a.setValue(val);
}
Exemplo n.º 8
0
//a=a+b+c
void ALU::addc(Register a,Register b)
{
	unsigned val = a.getValue()+b.getValue()+m_flags[0];
	if(a.getValue()>UINT_MAX-b.getValue()-m_flags[0])
	{
		m_flags[0] = 1;
	}
	else
	{
		m_flags[0] = 0;
	}
	a.setValue(val);
}
Exemplo n.º 9
0
main(int argc, char **argv)
	{
	if (argc < 3)
		{
		printf("09TO10 version 1.0\n\r"
			   "by Robert Schmidt of Ztiff Zox Softwear 1993\n\r"
			   "\n\r"
			   "Converts TWEAK version 0.9 files to TWEAK version 1.0 files.\n\r"
			   "\n\r"
			   "Syntax:  09TO10 <oldfile> <newfile>\n\r"
			   );
		return 0;
		}

	vgaRegTable rtab;

	char *fname = argv[1];
	FILE *f;
	int r;

	// Open file in selected mode.
	if (!(f=fopen(fname,"rb")))
		{
		perror(fname);
		return 0;
        }
	// Read file:
	for (r=0; r<registers; r++)
		if (fread(&(rtab[r]),1,1,f) == 0)
			{
			perror(fname);
			return 0;
			}
	fclose(f);

	ofstream out(argv[2], ios::trunc|ios::binary|ios::out);
	Register reg;
	for (r=0; r<registers; r++)
		{
		reg.setPort(table[r].port);
		reg.setIndex(table[r].index);
		reg.setValue(rtab[r]);
		out << reg;
		}

	return 0;
	}
Exemplo n.º 10
0
void ALU::random(Register a)
{
	a.setValue(rand());
}
Exemplo n.º 11
0
//a=1
void ALU::one(Register a)
{
	a.setValue(1);
}