File:  [Tom Morton FrontierVM] / frontvm / as68k / .test.s.fn.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:57:46 2018 UTC (8 years, 3 months ago) by root
Branches: frontvm, MAIN
CVS tags: frontvm2-20061120, HEAD
Tom Morton

static void __F26 ()
{
	Regs[0].s32 = 0;
	nZ = 0;
	N = 0 < 0;
	V = 0;
	C = 0;
}
static void __F30 ()
{
	Regs[0].s32 = 10;
	nZ = 10;
	N = 10 < 0;
	V = 0;
	C = 0;
}
static void __F32 ()
{
	Regs[1].s32 = 2;
	nZ = 2;
	N = 2 < 0;
	V = 0;
	C = 0;
}
static void __F34 ()
{
	u16 src = Regs[1].s16;
	u32 dest = (u16)Regs[0].s16;
	dest *= (u32)src;
	nZ = dest;
	N = ((s32)dest) < 0;
	C = V = 0;
	Regs[0].s32 = dest;
}
static void __F36 ()
{
	s16 src = Regs[1].s16;
	s32 dest = (s16)Regs[0].s16;
	dest *= (s32)src;
	nZ = dest;
	N = ((s32)dest) < 0;
	C = V = 0;
	Regs[0].s32 = dest;
}
static void __F38 ()
{
	u32 val = Regs[0].s32;

	s32 src = Regs[1].s32 & 63;
	if (src >= 32) {
		V = (val != 0);
		X = C = (src == 32 ? val & 1 : 0);
		val = 0;
	} else if (src == 0) {
		C = 0;
		V = 0;
	} else {
		u32 mask = (0xffffffff << (31 - src)) & 0xffffffff;
		V = (val & mask) != mask && (val & mask) != 0;
		val <<= src-1;
		C = X = (val & 0x80000000);
		val <<= 1;
		val &= 0xffffffff;
	}
	nZ = ((s32)(val)) != 0;
	N = ((s32)(val)) < 0;
	Regs[0].s32 = val;
}
static void __F3a ()
{
	u32 val = Regs[0].s32;

	s32 src = Regs[1].s32 & 63;
	u32 sign = (0x80000000 & val) >> 31;
	if (src >= 32) {
		val = 0xffffffff & (u32)-sign;
		X = C = sign;
	} else if (src == 0) {
		C = 0;
		V = 0;
	} else {
		val >>= src - 1;
		C = X = val & 1;
		val >>= 1;
		val |= (0xffffffff << (32 - src)) & (u32)-sign;
		val &= 0xffffffff;
	}
	nZ = ((s32)(val)) != 0;
	N = ((s32)(val)) < 0;
	Regs[0].s32 = val;
}
static void __F3c ()
{
	u32 val = Regs[0].s32;

	s32 shift = Regs[1].s32 & 63;
	if (shift >= 32) {
		X = C = (shift == 32 ? val & 1 : 0);
		val = 0;
	} else if (shift == 0) {
		C = 0;
		V = 0;
	} else {
		val <<= shift-1;
		C = X = (val & 0x80000000);
		val <<= 1;
		val &= 0xffffffff;
	}
	nZ = ((s32)(val)) != 0;
	N = ((s32)(val)) < 0;
	Regs[0].s32 = val;
}
static void __F3e ()
{
	u32 val = Regs[0].s32;

	s32 shift = Regs[1].s32 & 63;
	if (shift >= 32) {
		val = 0;
		X = C = (shift == 32) && (val >> 31);
	} else if (shift == 0) {
		C = 0;
		V = 0;
	} else {
		val >>= shift - 1;
		C = X = val & 1;
		val >>= 1;
	}
	nZ = ((s32)(val)) != 0;
	N = ((s32)(val)) < 0;
	Regs[0].s32 = val;
}
static void __F40 ()
{
	u32 val = (u32)Regs[0].s32;

	s32 cnt = Regs[1].s32 & 63;
	V = 0;
	u32 loval;
	cnt &= 31;
	loval = val >> (32 - cnt);
	val <<= cnt;
	val |= loval;
	val &= 0xffffffff;
	C = val & 1;
	nZ = val;
	N = ((s32)val) < 0;
	Regs[0].s32 = val;
}
static void __F42 ()
{
	u32 val = (u32)Regs[0].s32;

	s32 cnt = (Regs[1].s32 & 63) - 1;
	V = 0;
	u32 loval = val >> (31 - cnt);
	u32 carry = loval & 1;
	val = (((val << 1) | (X ? 1 : 0)) << cnt) | (loval >> 1);
	X = carry;
	val &= 0xffffffff;
	C = X;
	nZ = val;
	N = ((s32)val) < 0;
	Regs[0].s32 = val;
}
static void __F44 ()
{
	u32 src = Regs[1].s32;
	u32 dest = Regs[0].s32;
	src &= 31;
	nZ = !(1 ^ ((dest >> src) & 1));
	dest &= ~(1 << src);
	Regs[0].s32 = dest;
}
static void __F4e ()
{
	Regs[0].s32 = 0;
	nZ = 0;
	N = 0 < 0;
	V = 0;
	C = 0;
}
static void __F50 ()
{
	nZ = STMemory_ReadByte(Regs[8].s32);
	Regs[0].s8 = nZ;
	Regs[8].s32 += 1;
	N = nZ < 0;
	V = 0;
	C = 0;
}
static void __F5a ()
{
	nZ = 1048575;
	Regs[0].s32 = nZ;
	N = nZ < 0;
	V = 0;
	C = 0;
}
static void __F5c ()
{
	u16 src = Regs[1].s16;
	u32 dest = (u16)Regs[2].s16;
	dest *= (u32)src;
	nZ = dest;
	N = ((s32)dest) < 0;
	C = V = 0;
	Regs[2].s32 = dest;
}
static void __F5e ()
{
	s32 flgs, flgo, flgn, dest;
	dest = Regs[0].s32;

	nZ = (s32)dest - (s32)1;
	Regs[0].s32 = nZ;
	flgs = ((s32)1) < 0;
	flgo = ((s32)dest) < 0;
	flgn = ((s32)nZ) < 0;
	V = (flgs ^ flgo) & (flgn ^ flgo);
	C = ((s32)1) > ((s32)dest);
	X = C;
	N = (flgn != 0);
}
static void __F60 ()
{
	nZ = Regs[0].s32;
	N = nZ < 0;
	V = 0;
	C = 0;
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.