diff options
Diffstat (limited to 'src/emu/cpu/tms9900/99xxstat.h')
-rw-r--r-- | src/emu/cpu/tms9900/99xxstat.h | 194 |
1 files changed, 97 insertions, 97 deletions
diff --git a/src/emu/cpu/tms9900/99xxstat.h b/src/emu/cpu/tms9900/99xxstat.h index dc0877a80cf..bde84b39928 100644 --- a/src/emu/cpu/tms9900/99xxstat.h +++ b/src/emu/cpu/tms9900/99xxstat.h @@ -5,52 +5,52 @@ ************************************************************************/ /* - remember that the OP ST bit is maintained in lastparity + remember that the OP ST bit is maintained in cpustate->lastparity */ /* - setstat sets the ST_OP bit according to lastparity + setstat sets the ST_OP bit according to cpustate->lastparity It must be called before reading the ST register. */ -static void setstat(void) +static void setstat(tms99xx_state *cpustate) { int i; UINT8 a; - I.STATUS &= ~ ST_OP; + cpustate->STATUS &= ~ ST_OP; /* We set the parity bit. */ - a = lastparity; + a = cpustate->lastparity; for (i=0; i<8; i++) /* 8 bits to test */ { if (a & 1) /* If current bit is set */ - I.STATUS ^= ST_OP; /* we toggle the ST_OP bit */ + cpustate->STATUS ^= ST_OP; /* we toggle the ST_OP bit */ a >>= 1; /* Next bit. */ } } /* - getstat sets emulator's lastparity variable according to 9900's STATUS bits. + getstat sets emulator's cpustate->lastparity variable according to 9900's STATUS bits. It must be called on interrupt return, or when, for some reason, the emulated program sets the STATUS register directly. */ -static void getstat(void) +static void getstat(tms99xx_state *cpustate) { #if (USE_ST_MASK) - I.STATUS &= ST_MASK; /* unused bits are forced to 0 */ + cpustate->STATUS &= ST_MASK; /* unused bits are forced to 0 */ #endif - if (I.STATUS & ST_OP) - lastparity = 1; + if (cpustate->STATUS & ST_OP) + cpustate->lastparity = 1; else - lastparity = 0; + cpustate->lastparity = 0; #if HAS_MAPPING - I.cur_map = (I.STATUS & ST_MF) ? 1 : 0; + cpustate->cur_map = (cpustate->STATUS & ST_MF) ? 1 : 0; #endif } @@ -134,96 +134,96 @@ INLINE INT16 arithmetic_right_shift(INT16 val, int c) /* Set lae */ -INLINE void setst_lae(INT16 val) +INLINE void setst_lae(tms99xx_state *cpustate, INT16 val) { - I.STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ); + cpustate->STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ); if (val > 0) - I.STATUS |= (ST_LGT | ST_AGT); + cpustate->STATUS |= (ST_LGT | ST_AGT); else if (val < 0) - I.STATUS |= ST_LGT; + cpustate->STATUS |= ST_LGT; else - I.STATUS |= ST_EQ; + cpustate->STATUS |= ST_EQ; } /* Set laep (BYTE) */ -INLINE void setst_byte_laep(INT8 val) +INLINE void setst_byte_laep(tms99xx_state *cpustate, INT8 val) { - I.STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ); + cpustate->STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ); if (val > 0) - I.STATUS |= (ST_LGT | ST_AGT); + cpustate->STATUS |= (ST_LGT | ST_AGT); else if (val < 0) - I.STATUS |= ST_LGT; + cpustate->STATUS |= ST_LGT; else - I.STATUS |= ST_EQ; + cpustate->STATUS |= ST_EQ; - lastparity = val; + cpustate->lastparity = val; } /* For COC, CZC, and TB */ -INLINE void setst_e(UINT16 val, UINT16 to) +INLINE void setst_e(tms99xx_state *cpustate, UINT16 val, UINT16 to) { if (val == to) - I.STATUS |= ST_EQ; + cpustate->STATUS |= ST_EQ; else - I.STATUS &= ~ ST_EQ; + cpustate->STATUS &= ~ ST_EQ; } /* For CI, C, CB */ -INLINE void setst_c_lae(UINT16 to, UINT16 val) +INLINE void setst_c_lae(tms99xx_state *cpustate, UINT16 to, UINT16 val) { - I.STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ); + cpustate->STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ); if (val == to) - I.STATUS |= ST_EQ; + cpustate->STATUS |= ST_EQ; else { if ( ((INT16) val) > ((INT16) to) ) - I.STATUS |= ST_AGT; + cpustate->STATUS |= ST_AGT; if ( ((UINT16) val) > ((UINT16) to) ) - I.STATUS |= ST_LGT; + cpustate->STATUS |= ST_LGT; } } /* Set laeco for add */ -INLINE INT16 setst_add_laeco(int a, int b) +INLINE INT16 setst_add_laeco(tms99xx_state *cpustate, int a, int b) { UINT32 res; INT16 res2; - I.STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C | ST_OV); + cpustate->STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C | ST_OV); res = (a & 0xffff) + (b & 0xffff); if (res & 0x10000) - I.STATUS |= ST_C; + cpustate->STATUS |= ST_C; if ((res ^ b) & (res ^ a) & 0x8000) - I.STATUS |= ST_OV; + cpustate->STATUS |= ST_OV; #if (TMS99XX_MODEL == TMS9940_ID) || (TMS99XX_MODEL == TMS9985_ID) if (((a & b) | ((a | b) & ~ res)) & 0x0800) - I.STATUS |= ST_DC; + cpustate->STATUS |= ST_DC; #endif res2 = (INT16) res; if (res2 > 0) - I.STATUS |= ST_LGT | ST_AGT; + cpustate->STATUS |= ST_LGT | ST_AGT; else if (res2 < 0) - I.STATUS |= ST_LGT; + cpustate->STATUS |= ST_LGT; else - I.STATUS |= ST_EQ; + cpustate->STATUS |= ST_EQ; return res2; } @@ -232,34 +232,34 @@ INLINE INT16 setst_add_laeco(int a, int b) /* Set laeco for subtract */ -INLINE INT16 setst_sub_laeco(int a, int b) +INLINE INT16 setst_sub_laeco(tms99xx_state *cpustate, int a, int b) { UINT32 res; INT16 res2; - I.STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C | ST_OV); + cpustate->STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C | ST_OV); res = (a & 0xffff) - (b & 0xffff); if (! (res & 0x10000)) - I.STATUS |= ST_C; + cpustate->STATUS |= ST_C; if ((a ^ b) & (a ^ res) & 0x8000) - I.STATUS |= ST_OV; + cpustate->STATUS |= ST_OV; #if (TMS99XX_MODEL == TMS9940_ID) || (TMS99XX_MODEL == TMS9985_ID) if (((a & ~ b) | ((a | ~ b) & ~ res)) & 0x0800) - I.STATUS |= ST_DC; + cpustate->STATUS |= ST_DC; #endif res2 = (INT16) res; if (res2 > 0) - I.STATUS |= ST_LGT | ST_AGT; + cpustate->STATUS |= ST_LGT | ST_AGT; else if (res2 < 0) - I.STATUS |= ST_LGT; + cpustate->STATUS |= ST_LGT; else - I.STATUS |= ST_EQ; + cpustate->STATUS |= ST_EQ; return res2; } @@ -268,36 +268,36 @@ INLINE INT16 setst_sub_laeco(int a, int b) /* Set laecop for add (BYTE) */ -INLINE INT8 setst_addbyte_laecop(int a, int b) +INLINE INT8 setst_addbyte_laecop(tms99xx_state *cpustate, int a, int b) { unsigned int res; INT8 res2; - I.STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C | ST_OV | ST_OP); + cpustate->STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C | ST_OV | ST_OP); res = (a & 0xff) + (b & 0xff); if (res & 0x100) - I.STATUS |= ST_C; + cpustate->STATUS |= ST_C; if ((res ^ b) & (res ^ a) & 0x80) - I.STATUS |= ST_OV; + cpustate->STATUS |= ST_OV; #if (TMS99XX_MODEL == TMS9940_ID) || (TMS99XX_MODEL == TMS9985_ID) if (((a & b) | ((a | b) & ~ res)) & 0x08) - I.STATUS |= ST_DC; + cpustate->STATUS |= ST_DC; #endif res2 = (INT8) res; if (res2 > 0) - I.STATUS |= ST_LGT | ST_AGT; + cpustate->STATUS |= ST_LGT | ST_AGT; else if (res2 < 0) - I.STATUS |= ST_LGT; + cpustate->STATUS |= ST_LGT; else - I.STATUS |= ST_EQ; + cpustate->STATUS |= ST_EQ; - lastparity = res2; + cpustate->lastparity = res2; return res2; } @@ -306,36 +306,36 @@ INLINE INT8 setst_addbyte_laecop(int a, int b) /* Set laecop for subtract (BYTE) */ -INLINE INT8 setst_subbyte_laecop(int a, int b) +INLINE INT8 setst_subbyte_laecop(tms99xx_state *cpustate, int a, int b) { unsigned int res; INT8 res2; - I.STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C | ST_OV | ST_OP); + cpustate->STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C | ST_OV | ST_OP); res = (a & 0xff) - (b & 0xff); if (! (res & 0x100)) - I.STATUS |= ST_C; + cpustate->STATUS |= ST_C; if ((a ^ b) & (a ^ res) & 0x80) - I.STATUS |= ST_OV; + cpustate->STATUS |= ST_OV; #if (TMS99XX_MODEL == TMS9940_ID) || (TMS99XX_MODEL == TMS9985_ID) if (((a & ~ b) | ((a | ~ b) & ~ res)) & 0x08) - I.STATUS |= ST_DC; + cpustate->STATUS |= ST_DC; #endif res2 = (INT8) res; if (res2 > 0) - I.STATUS |= ST_LGT | ST_AGT; + cpustate->STATUS |= ST_LGT | ST_AGT; else if (res2 < 0) - I.STATUS |= ST_LGT; + cpustate->STATUS |= ST_LGT; else - I.STATUS |= ST_EQ; + cpustate->STATUS |= ST_EQ; - lastparity = res2; + cpustate->lastparity = res2; return res2; } @@ -345,20 +345,20 @@ INLINE INT8 setst_subbyte_laecop(int a, int b) /* For NEG */ -INLINE void setst_laeo(INT16 val) +INLINE void setst_laeo(tms99xx_state *cpustate, INT16 val) { - I.STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_OV); + cpustate->STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_OV); if (val > 0) - I.STATUS |= ST_LGT | ST_AGT; + cpustate->STATUS |= ST_LGT | ST_AGT; else if (val < 0) { - I.STATUS |= ST_LGT; + cpustate->STATUS |= ST_LGT; if (((UINT16) val) == 0x8000) - I.STATUS |= ST_OV; + cpustate->STATUS |= ST_OV; } else - I.STATUS |= ST_EQ; + cpustate->STATUS |= ST_EQ; } @@ -366,24 +366,24 @@ INLINE void setst_laeo(INT16 val) /* Meat of SRA */ -INLINE UINT16 setst_sra_laec(INT16 a, UINT16 c) +INLINE UINT16 setst_sra_laec(tms99xx_state *cpustate, INT16 a, UINT16 c) { - I.STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C); + cpustate->STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C); if (c != 0) { a = arithmetic_right_shift(a, c-1); if (a & 1) // The carry bit equals the last bit that is shifted out - I.STATUS |= ST_C; + cpustate->STATUS |= ST_C; a = arithmetic_right_shift(a, 1); } if (a > 0) - I.STATUS |= ST_LGT | ST_AGT; + cpustate->STATUS |= ST_LGT | ST_AGT; else if (a < 0) - I.STATUS |= ST_LGT; + cpustate->STATUS |= ST_LGT; else - I.STATUS |= ST_EQ; + cpustate->STATUS |= ST_EQ; return a; } @@ -392,24 +392,24 @@ INLINE UINT16 setst_sra_laec(INT16 a, UINT16 c) /* Meat of SRL. Same algorithm as SRA, except that we fills in with 0s. */ -INLINE UINT16 setst_srl_laec(UINT16 a,UINT16 c) +INLINE UINT16 setst_srl_laec(tms99xx_state *cpustate, UINT16 a,UINT16 c) { - I.STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C); + cpustate->STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C); if (c != 0) { a = logical_right_shift(a, c-1); if (a & 1) - I.STATUS |= ST_C; + cpustate->STATUS |= ST_C; a = logical_right_shift(a, 1); } if (((INT16) a) > 0) - I.STATUS |= ST_LGT | ST_AGT; + cpustate->STATUS |= ST_LGT | ST_AGT; else if (((INT16) a) < 0) - I.STATUS |= ST_LGT; + cpustate->STATUS |= ST_LGT; else - I.STATUS |= ST_EQ; + cpustate->STATUS |= ST_EQ; return a; } @@ -418,23 +418,23 @@ INLINE UINT16 setst_srl_laec(UINT16 a,UINT16 c) // // Meat of SRC // -INLINE UINT16 setst_src_laec(UINT16 a,UINT16 c) +INLINE UINT16 setst_src_laec(tms99xx_state *cpustate, UINT16 a,UINT16 c) { - I.STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C); + cpustate->STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C); if (c != 0) { a = logical_right_shift(a, c) | (a << (16-c)); if (a & 0x8000) // The carry bit equals the last bit that is shifted out - I.STATUS |= ST_C; + cpustate->STATUS |= ST_C; } if (((INT16) a) > 0) - I.STATUS |= ST_LGT | ST_AGT; + cpustate->STATUS |= ST_LGT | ST_AGT; else if (((INT16) a) < 0) - I.STATUS |= ST_LGT; + cpustate->STATUS |= ST_LGT; else - I.STATUS |= ST_EQ; + cpustate->STATUS |= ST_EQ; return a; } @@ -443,9 +443,9 @@ INLINE UINT16 setst_src_laec(UINT16 a,UINT16 c) // // Meat of SLA // -INLINE UINT16 setst_sla_laeco(UINT16 a, UINT16 c) +INLINE UINT16 setst_sla_laeco(tms99xx_state *cpustate, UINT16 a, UINT16 c) { - I.STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C | ST_OV); + cpustate->STATUS &= ~ (ST_LGT | ST_AGT | ST_EQ | ST_C | ST_OV); if (c != 0) { @@ -458,22 +458,22 @@ INLINE UINT16 setst_sla_laeco(UINT16 a, UINT16 c) if (ousted_bits) // If ousted_bits is neither all 0s if (ousted_bits ^ mask) // nor all 1s, - I.STATUS |= ST_OV; // we set overflow + cpustate->STATUS |= ST_OV; // we set overflow } a <<= c-1; if (a & 0x8000) // The carry bit equals the last bit that is shifted out - I.STATUS |= ST_C; + cpustate->STATUS |= ST_C; a <<= 1; } if (((INT16) a) > 0) - I.STATUS |= ST_LGT | ST_AGT; + cpustate->STATUS |= ST_LGT | ST_AGT; else if (((INT16) a) < 0) - I.STATUS |= ST_LGT; + cpustate->STATUS |= ST_LGT; else - I.STATUS |= ST_EQ; + cpustate->STATUS |= ST_EQ; return a; } |