Exemplo n.º 1
0
INLINE void saturn_load_reg(int reg)
{
	int count=READ_OP_ARG();
	int pos=saturn.p;
	for (; count>=0; count--, pos=(pos+1)&0xf ) {
		S64_WRITE_NIBBLE( reg, pos, READ_OP_ARG());
	}
}
Exemplo n.º 2
0
INLINE void saturn_st_jump_bit_clear(void)
{
	int adr;
	switch(READ_OP_ARG()) {
	case 0: saturn.carry=!saturn.st&1;break;
	case 1: saturn.carry=!saturn.st&2;break;
	case 2: saturn.carry=!saturn.st&4;break;
	case 3: saturn.carry=!saturn.st&8;break;
	case 4: saturn.carry=!saturn.st&0x10;break;
	case 5: saturn.carry=!saturn.st&0x20;break;
	case 6: saturn.carry=!saturn.st&0x40;break;
	case 7: saturn.carry=!saturn.st&0x80;break;
	case 8: saturn.carry=!saturn.st&0x100;break;
	case 9: saturn.carry=!saturn.st&0x200;break;
	case 0xa: saturn.carry=!saturn.st&0x400;break;
	case 0xb: saturn.carry=!saturn.st&0x800;break;
	case 0xc: saturn.carry=!saturn.st&0x1000;break;
	case 0xd: saturn.carry=!saturn.st&0x2000;break;
	case 0xe: saturn.carry=!saturn.st&0x4000;break;
	case 0xf: saturn.carry=!saturn.st&0x8000;break;
	}
	adr=READ_OP_DIS8();
	if (saturn.carry) {
		if (adr==0) {
			saturn.pc=saturn_pop();
		} else {
			saturn.pc=(saturn.pc+adr-2)&0xfffff;
		}
		change_pc(saturn.pc);
	}
}
Exemplo n.º 3
0
INLINE void saturn_jump_bit_set(int reg)
{
	int adr;
	switch(READ_OP_ARG()) {
	case 0: saturn.carry=S64_BYTE( reg, 0)&1;break;
	case 1: saturn.carry=S64_BYTE( reg, 0)&2;break;
	case 2: saturn.carry=S64_BYTE( reg, 0)&4;break;
	case 3: saturn.carry=S64_BYTE( reg, 0)&8;break;
	case 4: saturn.carry=S64_BYTE( reg, 0)&0x10;break;
	case 5: saturn.carry=S64_BYTE( reg, 0)&0x20;break;
	case 6: saturn.carry=S64_BYTE( reg, 0)&0x40;break;
	case 7: saturn.carry=S64_BYTE( reg, 0)&0x80;break;
	case 8: saturn.carry=S64_BYTE( reg, 1)&1;break;
	case 9: saturn.carry=S64_BYTE( reg, 1)&2;break;
	case 0xa: saturn.carry=S64_BYTE( reg, 1)&4;break;
	case 0xb: saturn.carry=S64_BYTE( reg, 1)&8;break;
	case 0xc: saturn.carry=S64_BYTE( reg, 1)&0x10;break;
	case 0xd: saturn.carry=S64_BYTE( reg, 1)&0x20;break;
	case 0xe: saturn.carry=S64_BYTE( reg, 1)&0x40;break;
	case 0xf: saturn.carry=S64_BYTE( reg, 1)&0x80;break;
	}
	adr=READ_OP_DIS8();
	if (saturn.carry) {
		if (adr==0) {
			saturn.pc=saturn_pop();
		} else {
			saturn.pc=(saturn.pc+adr-2)&0xfffff;
		}
		change_pc(saturn.pc);		
	}
}
Exemplo n.º 4
0
/* p related */
INLINE void saturn_exchange_p(void)
{
	int nr=READ_OP_ARG();
	int t=saturn.p;
	saturn.p=S64_READ_NIBBLE(C,nr);
	S64_WRITE_NIBBLE(C,nr,t);
}
Exemplo n.º 5
0
INLINE void saturn_p_not_equals(void)
{
	int nr=READ_OP_ARG();
	int adr;
	saturn.carry=saturn.p!=nr;
	adr=READ_OP_DIS8();
	if (saturn.carry) {
		if (adr==0) {
			saturn.pc=saturn_pop();
		} else {
			saturn.pc=(saturn.pc+adr-2)&0xfffff;
		}
		change_pc(saturn.pc);
	}
}
Exemplo n.º 6
0
INLINE void saturn_st_clear_bit(void)
{
	switch(READ_OP_ARG()) {
	case 0: saturn.st&=~1;break;
	case 1: saturn.st&=~2;break;
	case 2: saturn.st&=~4;break;
	case 3: saturn.st&=~8;break;
	case 4: saturn.st&=~0x10;break;
	case 5: saturn.st&=~0x20;break;
	case 6: saturn.st&=~0x40;break;
	case 7: saturn.st&=~0x80;break;
	case 8: saturn.st&=~0x100;break;
	case 9: saturn.st&=~0x200;break;
	case 0xa: saturn.st&=~0x400;break;
	case 0xb: saturn.st&=~0x800;break;
	case 0xc: saturn.st&=~0x1000;break;
	case 0xd: saturn.st&=~0x2000;break;
	case 0xe: saturn.st&=~0x4000;break;
	case 0xf: saturn.st&=~0x8000;break;
	}
}
Exemplo n.º 7
0
INLINE void saturn_st_set_bit(void)
{
	switch(READ_OP_ARG()) {
	case 0: saturn.st|=1;break;
	case 1: saturn.st|=2;break;
	case 2: saturn.st|=4;break;
	case 3: saturn.st|=8;break;
	case 4: saturn.st|=0x10;break;
	case 5: saturn.st|=0x20;break;
	case 6: saturn.st|=0x40;break;
	case 7: saturn.st|=0x80;break;
	case 8: saturn.st|=0x100;break;
	case 9: saturn.st|=0x200;break;
	case 0xa: saturn.st|=0x400;break;
	case 0xb: saturn.st|=0x800;break;
	case 0xc: saturn.st|=0x1000;break;
	case 0xd: saturn.st|=0x2000;break;
	case 0xe: saturn.st|=0x4000;break;
	case 0xf: saturn.st|=0x8000;break;
	}
}
Exemplo n.º 8
0
INLINE void saturn_set_bit(int reg)
{
	switch(READ_OP_ARG()) {
	case 0: S64_BYTE( reg, 0)|=1;break;
	case 1: S64_BYTE( reg, 0)|=2;break;
	case 2: S64_BYTE( reg, 0)|=4;break;
	case 3: S64_BYTE( reg, 0)|=8;break;
	case 4: S64_BYTE( reg, 0)|=0x10;break;
	case 5: S64_BYTE( reg, 0)|=0x20;break;
	case 6: S64_BYTE( reg, 0)|=0x40;break;
	case 7: S64_BYTE( reg, 0)|=0x80;break;
	case 8: S64_BYTE( reg, 1)|=1;break;
	case 9: S64_BYTE( reg, 1)|=2;break;
	case 0xa: S64_BYTE( reg, 1)|=4;break;
	case 0xb: S64_BYTE( reg, 1)|=8;break;
	case 0xc: S64_BYTE( reg, 1)|=0x10;break;
	case 0xd: S64_BYTE( reg, 1)|=0x20;break;
	case 0xe: S64_BYTE( reg, 1)|=0x40;break;
	case 0xf: S64_BYTE( reg, 1)|=0x80;break;
	}
}
Exemplo n.º 9
0
INLINE void saturn_clear_bit(int reg)
{
	switch(READ_OP_ARG()) {
	case 0: S64_BYTE( reg, 0)&=~1;break;
	case 1: S64_BYTE( reg, 0)&=~2;break;
	case 2: S64_BYTE( reg, 0)&=~4;break;
	case 3: S64_BYTE( reg, 0)&=~8;break;
	case 4: S64_BYTE( reg, 0)&=~0x10;break;
	case 5: S64_BYTE( reg, 0)&=~0x20;break;
	case 6: S64_BYTE( reg, 0)&=~0x40;break;
	case 7: S64_BYTE( reg, 0)&=~0x80;break;
	case 8: S64_BYTE( reg, 1)&=~1;break;
	case 9: S64_BYTE( reg, 1)&=~2;break;
	case 0xa: S64_BYTE( reg, 1)&=~4;break;
	case 0xb: S64_BYTE( reg, 1)&=~8;break;
	case 0xc: S64_BYTE( reg, 1)&=~0x10;break;
	case 0xd: S64_BYTE( reg, 1)&=~0x20;break;
	case 0xe: S64_BYTE( reg, 1)&=~0x40;break;
	case 0xf: S64_BYTE( reg, 1)&=~0x80;break;
	}
}
Exemplo n.º 10
0
INLINE void saturn_sub_adr(int reg)
{
	int t=saturn.d[reg]-READ_OP_ARG()-1;
	saturn.d[reg]=t&0xfffff;
	saturn.carry=t<0;
}
Exemplo n.º 11
0
INLINE void saturn_add_adr(int reg)
{
	int t=saturn.d[reg]+READ_OP_ARG()+1;
	saturn.d[reg]=t&0xfffff;
	saturn.carry=t>=0x100000;
}
Exemplo n.º 12
0
INLINE void sc61860_load_dl(sc61860_state *cpustate)
{
	cpustate->dp=(cpustate->dp&~0xff)|READ_OP_ARG(cpustate);
}
Exemplo n.º 13
0
INLINE int READ_OP_ARG20(void)
{
	return READ_OP_ARG()|(READ_OP_ARG()<<4)|(READ_OP_ARG()<<8)
		|(READ_OP_ARG()<<12)|(READ_OP_ARG()<<16);
}
Exemplo n.º 14
0
INLINE int READ_OP_ARG8(void)
{
	return READ_OP_ARG()|(READ_OP_ARG()<<4);
}
Exemplo n.º 15
0
INLINE INT8 READ_OP_DIS8(void)
{
	return READ_OP_ARG()|(READ_OP_ARG()<<4);
}
Exemplo n.º 16
0
INLINE int READ_OP_ARG12(void)
{
	return READ_OP_ARG()|(READ_OP_ARG()<<4)|(READ_OP_ARG()<<8);
}
Exemplo n.º 17
0
INLINE INT16 READ_OP_DIS16(void)
{
	return READ_OP_ARG()|(READ_OP_ARG()<<4)|(READ_OP_ARG()<<8)|(READ_OP_ARG()<<12);
}
Exemplo n.º 18
0
INLINE void sc61860_or_ext(sc61860_state *cpustate)
{
	UINT8 t=READ_BYTE(cpustate, cpustate->dp)|READ_OP_ARG(cpustate);
	cpustate->zero=t==0;
    WRITE_BYTE(cpustate, cpustate->dp,t);
}
Exemplo n.º 19
0
static INLINE void sc61860_or_ext(void)
{
	UINT8 t=READ_BYTE(sc61860.dp)|READ_OP_ARG();
	sc61860.zero=t==0;
    WRITE_BYTE(sc61860.dp,t);
}
Exemplo n.º 20
0
INLINE void sc61860_and_ext(void)
{
	UINT8 t=READ_BYTE(sc61860.dp)&READ_OP_ARG();
	sc61860.zero=t==0;
    WRITE_BYTE(sc61860.dp,t);
}
Exemplo n.º 21
0
INLINE void saturn_hst_bits_cleared(void)
{
	saturn.carry=!(saturn.hst&READ_OP_ARG());
}
Exemplo n.º 22
0
INLINE int READ_OP_ARG16(void)
{
	return READ_OP_ARG()|(READ_OP_ARG()<<4)|(READ_OP_ARG()<<8)|(READ_OP_ARG()<<12);
}
Exemplo n.º 23
0
INLINE void saturn_load_p(void)
{
	saturn.p=READ_OP_ARG();
}
Exemplo n.º 24
0
INLINE void saturn_p_to_c(void)
{
	int nr=READ_OP_ARG();
	S64_WRITE_NIBBLE(C,nr,saturn.p);
}
Exemplo n.º 25
0
INLINE int READ_OP_DIS12(void)
{
	int temp=READ_OP_ARG()|(READ_OP_ARG()<<4)|(READ_OP_ARG()<<8);
	if (temp&0x800) return -0x1000+temp;
	else return temp;
}
Exemplo n.º 26
0
static INLINE void sc61860_test_ext(void)
{
	sc61860.zero=(READ_BYTE(sc61860.dp)&READ_OP_ARG())==0;
}
Exemplo n.º 27
0
INLINE void saturn_c_to_p(void)
{
	int nr=READ_OP_ARG();
	saturn.p=S64_READ_NIBBLE(C,nr);
}
Exemplo n.º 28
0
static INLINE void sc61860_load_dl(void)
{
	sc61860.dp=(sc61860.dp&~0xff)|READ_OP_ARG();
}
Exemplo n.º 29
0
INLINE void sc61860_test_ext(sc61860_state *cpustate)
{
	cpustate->zero=(READ_BYTE(cpustate, cpustate->dp)&READ_OP_ARG(cpustate))==0;
}