diff options
Diffstat (limited to 'src/emu/cpu/mb86233/mb86233.c')
-rw-r--r-- | src/emu/cpu/mb86233/mb86233.c | 658 |
1 files changed, 329 insertions, 329 deletions
diff --git a/src/emu/cpu/mb86233/mb86233.c b/src/emu/cpu/mb86233/mb86233.c index 0369412ae87..d5f31d15fb6 100644 --- a/src/emu/cpu/mb86233/mb86233.c +++ b/src/emu/cpu/mb86233/mb86233.c @@ -25,29 +25,29 @@ CPU_DISASSEMBLE( mb86233 ); union MB86233_REG { - INT32 i; - UINT32 u; - float f; + INT32 i; + UINT32 u; + float f; }; struct mb86233_state { - UINT16 pc; - MB86233_REG a; - MB86233_REG b; - MB86233_REG d; - MB86233_REG p; - - UINT16 reps; - UINT16 pcs[4]; - UINT8 pcsp; - UINT32 eb; - UINT32 shift; - UINT32 repcnt; - UINT16 sr; - - UINT32 gpr[16]; - UINT32 extport[0x30]; + UINT16 pc; + MB86233_REG a; + MB86233_REG b; + MB86233_REG d; + MB86233_REG p; + + UINT16 reps; + UINT16 pcs[4]; + UINT8 pcsp; + UINT32 eb; + UINT32 shift; + UINT32 repcnt; + UINT16 sr; + + UINT32 gpr[16]; + UINT32 extport[0x30]; legacy_cpu_device *device; address_space *program; @@ -55,14 +55,14 @@ struct mb86233_state int icount; /* FIFO */ - int fifo_wait; + int fifo_wait; mb86233_fifo_read_func fifo_read_cb; mb86233_fifo_write_func fifo_write_cb; /* internal RAM */ - UINT32 *RAM; - UINT32 *ARAM, *BRAM; - UINT32 *Tables; + UINT32 *RAM; + UINT32 *ARAM, *BRAM; + UINT32 *Tables; }; INLINE mb86233_state *get_safe_token(device_t *device) @@ -76,28 +76,28 @@ INLINE mb86233_state *get_safe_token(device_t *device) MACROS ***************************************************************************/ -#define GETPC() cpustate->pc -#define GETA() cpustate->a -#define GETB() cpustate->b -#define GETD() cpustate->d -#define GETP() cpustate->p -#define GETSR() cpustate->sr -#define GETGPR(a) cpustate->gpr[a] -#define GETSHIFT() cpustate->shift -#define GETPCS() cpustate->pcs -#define GETPCSP() cpustate->pcsp -#define GETEB() cpustate->eb -#define GETREPS() cpustate->reps -#define GETEXTPORT() cpustate->extport -#define GETFIFOWAIT() cpustate->fifo_wait -#define GETARAM() cpustate->ARAM -#define GETBRAM() cpustate->BRAM -#define ALU(cs,a) mb86233_alu(cs,a) -#define GETREPCNT() cpustate->repcnt - -#define ROPCODE(a) cpustate->direct->read_decrypted_dword(a<<2) -#define RDMEM(a) cpustate->program->read_dword((a<<2)) -#define WRMEM(a,v) cpustate->program->write_dword((a<<2), v) +#define GETPC() cpustate->pc +#define GETA() cpustate->a +#define GETB() cpustate->b +#define GETD() cpustate->d +#define GETP() cpustate->p +#define GETSR() cpustate->sr +#define GETGPR(a) cpustate->gpr[a] +#define GETSHIFT() cpustate->shift +#define GETPCS() cpustate->pcs +#define GETPCSP() cpustate->pcsp +#define GETEB() cpustate->eb +#define GETREPS() cpustate->reps +#define GETEXTPORT() cpustate->extport +#define GETFIFOWAIT() cpustate->fifo_wait +#define GETARAM() cpustate->ARAM +#define GETBRAM() cpustate->BRAM +#define ALU(cs,a) mb86233_alu(cs,a) +#define GETREPCNT() cpustate->repcnt + +#define ROPCODE(a) cpustate->direct->read_decrypted_dword(a<<2) +#define RDMEM(a) cpustate->program->read_dword((a<<2)) +#define WRMEM(a,v) cpustate->program->write_dword((a<<2), v) /*************************************************************************** Initialization and Shutdown @@ -121,7 +121,7 @@ static CPU_INIT( mb86233 ) cpustate->Tables = (UINT32*) device->machine().root_device().memregion(_config->tablergn)->base(); } - cpustate->RAM = auto_alloc_array(device->machine(), UINT32, 2 * 0x200); /* 2x 2KB */ + cpustate->RAM = auto_alloc_array(device->machine(), UINT32, 2 * 0x200); /* 2x 2KB */ memset( cpustate->RAM, 0, 2 * 0x200 * sizeof(UINT32) ); cpustate->ARAM = &cpustate->RAM[0]; cpustate->BRAM = &cpustate->RAM[0x200]; @@ -148,9 +148,9 @@ static CPU_RESET( mb86233 ) Status Register ***************************************************************************/ -#define ZERO_FLAG (1 << 0) -#define SIGN_FLAG (1 << 1) -#define EXTERNAL_FLAG (1 << 2) //This seems to be a flag coming from some external circuit?? +#define ZERO_FLAG (1 << 0) +#define SIGN_FLAG (1 << 1) +#define EXTERNAL_FLAG (1 << 2) //This seems to be a flag coming from some external circuit?? static void FLAGSF( mb86233_state *cpustate, float v ) { @@ -184,36 +184,36 @@ static int COND( mb86233_state *cpustate, UINT32 cond ) { switch( cond ) { - case 0x00: /* eq */ + case 0x00: /* eq */ if ( (GETSR() & ZERO_FLAG) ) return 1; break; - case 0x01: /* ge */ + case 0x01: /* ge */ if ( (GETSR() & ZERO_FLAG) || ((GETSR() & SIGN_FLAG)==0) ) return 1; break; - case 0x02: /* le */ + case 0x02: /* le */ if ( (GETSR() & ZERO_FLAG) || (GETSR() & SIGN_FLAG) ) return 1; break; - case 0x06: /* never */ + case 0x06: /* never */ break; case 0x0a: if(GETSR() & EXTERNAL_FLAG) return 1; break; - case 0x10: /* --r12 != 0 */ + case 0x10: /* --r12 != 0 */ GETGPR(12)--; if ( GETGPR(12) != 0 ) return 1; break; - case 0x11: /* --r13 != 0 */ + case 0x11: /* --r13 != 0 */ GETGPR(13)--; if ( GETGPR(13) != 0 ) return 1; break; - case 0x16: /* always */ + case 0x16: /* always */ return 1; default: @@ -232,142 +232,142 @@ static int COND( mb86233_state *cpustate, UINT32 cond ) static void ALU( mb86233_state *cpustate, UINT32 alu) { - float ftmp; + float ftmp; switch(alu) { - case 0x00: /* NOP */ + case 0x00: /* NOP */ break; - case 0x01: /* D = D & A */ + case 0x01: /* D = D & A */ GETD().u &= GETA().u; FLAGSI(cpustate, GETD().u); break; - case 0x02: /* D = D | A */ + case 0x02: /* D = D | A */ GETD().u |= GETA().u; FLAGSI(cpustate, GETD().u); break; - case 0x03: /* D = D ^ A */ + case 0x03: /* D = D ^ A */ GETD().u ^= GETA().u; FLAGSI(cpustate, GETD().u); break; - case 0x05: /* CMP D,A */ + case 0x05: /* CMP D,A */ ftmp = GETD().f - GETA().f; FLAGSF(cpustate, ftmp); cpustate->icount--; break; - case 0x06: /* D = D + A */ + case 0x06: /* D = D + A */ GETD().f += GETA().f; FLAGSF(cpustate, GETD().f); cpustate->icount--; break; - case 0x07: /* D = D - A */ + case 0x07: /* D = D - A */ GETD().f -= GETA().f; FLAGSF(cpustate, GETD().f); cpustate->icount--; break; - case 0x08: /* P = A * B */ + case 0x08: /* P = A * B */ GETP().f = GETA().f * GETB().f; cpustate->icount--; break; - case 0x09: /* D = D + P; P = A * B */ + case 0x09: /* D = D + P; P = A * B */ GETD().f += GETP().f; GETP().f = GETA().f * GETB().f; FLAGSF(cpustate, GETD().f); cpustate->icount--; break; - case 0x0A: /* D = D - P; P = A * B */ + case 0x0A: /* D = D - P; P = A * B */ GETD().f -= GETP().f; GETP().f = GETA().f * GETB().f; FLAGSF(cpustate, GETD().f); cpustate->icount--; break; - case 0x0B: /* D = fabs(D) */ + case 0x0B: /* D = fabs(D) */ GETD().f = fabs( GETD().f ); FLAGSF(cpustate, GETD().f); cpustate->icount--; break; - case 0x0C: /* D = D + P */ + case 0x0C: /* D = D + P */ GETD().f += GETP().f; FLAGSF(cpustate, GETD().f); cpustate->icount--; break; - case 0x0D: /* D = P; P = A * B */ + case 0x0D: /* D = P; P = A * B */ GETD().f = GETP().f; GETP().f = GETA().f * GETB().f; FLAGSF(cpustate, GETD().f); cpustate->icount--; break; - case 0x0E: /* D = float(D) */ + case 0x0E: /* D = float(D) */ GETD().f = (float)GETD().i; FLAGSF(cpustate, GETD().f); cpustate->icount--; break; - case 0x0F: /* D = int(D) */ + case 0x0F: /* D = int(D) */ GETD().i = (INT32)GETD().f; FLAGSI(cpustate, GETD().u); break; - case 0x10: /* D = D / A */ + case 0x10: /* D = D / A */ if ( GETA().u != 0 ) GETD().f = GETD().f / GETA().f; FLAGSF(cpustate, GETD().f); cpustate->icount--; break; - case 0x11: /* D = -D */ + case 0x11: /* D = -D */ GETD().f = -GETD().f; FLAGSF(cpustate, GETD().f); cpustate->icount--; break; - case 0x13: /* D = A + B */ + case 0x13: /* D = A + B */ GETD().f = GETA().f + GETB().f; FLAGSF(cpustate, GETD().f); cpustate->icount--; break; - case 0x14: /* D = B - A */ + case 0x14: /* D = B - A */ GETD().f = GETB().f - GETA().f; FLAGSF(cpustate, GETD().f); cpustate->icount--; break; - case 0x16: /* LSR D, SHIFT */ + case 0x16: /* LSR D, SHIFT */ GETD().u >>= GETSHIFT(); FLAGSI(cpustate, GETD().u); break; - case 0x17: /* LSL D, SHIFT */ + case 0x17: /* LSL D, SHIFT */ GETD().u <<= GETSHIFT(); FLAGSI(cpustate, GETD().u); break; - case 0x18: /* ASR D, SHIFT */ + case 0x18: /* ASR D, SHIFT */ // GETD().u = (GETD().u & 0x80000000) | (GETD().u >> GETSHIFT()); GETD().i >>= GETSHIFT(); FLAGSI(cpustate, GETD().u); break; - case 0x1A: /* D = D + A */ + case 0x1A: /* D = D + A */ GETD().i += GETA().i; FLAGSI(cpustate, GETD().u); break; - case 0x1B: /* D = D - A */ + case 0x1B: /* D = D - A */ GETD().i -= GETA().i; FLAGSI(cpustate, GETD().u); break; @@ -395,11 +395,11 @@ static UINT32 ScaleExp(unsigned int v,int scale) static UINT32 GETEXTERNAL( mb86233_state *cpustate, UINT32 EB, UINT32 offset ) { - UINT32 addr; + UINT32 addr; - if ( EB == 0 && offset >= 0x20 && offset <= 0x2f ) /* TGP Tables in ROM - FIXME - */ + if ( EB == 0 && offset >= 0x20 && offset <= 0x2f ) /* TGP Tables in ROM - FIXME - */ { - if(offset>=0x20 && offset<=0x23) //SIN from value at RAM(0x20) in 0x4000/PI steps + if(offset>=0x20 && offset<=0x23) //SIN from value at RAM(0x20) in 0x4000/PI steps { UINT32 r; UINT32 value=GETEXTPORT()[0x20]; @@ -454,7 +454,7 @@ static UINT32 GETEXTERNAL( mb86233_state *cpustate, UINT32 EB, UINT32 offset ) } if((a.u^b.u)&0x80000000) - sign=16; //the negative values are in the high word + sign=16; //the negative values are in the high word if((exp&0x70)!=0x70) index=0; @@ -484,15 +484,15 @@ static UINT32 GETEXTERNAL( mb86233_state *cpustate, UINT32 EB, UINT32 offset ) res=0x4000-res; - if((a.u&0x80000000) && (b.u&0x80000000)) //3rd quadrant + if((a.u&0x80000000) && (b.u&0x80000000)) //3rd quadrant { res=0x8000|res; } - else if((a.u&0x80000000) && !(b.u&0x80000000)) //2nd quadrant + else if((a.u&0x80000000) && !(b.u&0x80000000)) //2nd quadrant { res=res&0x7fff; } - else if(!(a.u&0x80000000) && (b.u&0x80000000)) //2nd quadrant + else if(!(a.u&0x80000000) && (b.u&0x80000000)) //2nd quadrant { res=0x8000|res; } @@ -556,9 +556,9 @@ static UINT32 GETEXTERNAL( mb86233_state *cpustate, UINT32 EB, UINT32 offset ) static void SETEXTERNAL( mb86233_state *cpustate, UINT32 EB, UINT32 offset, UINT32 value ) { - UINT32 addr; + UINT32 addr; - if ( EB == 0 && offset >= 0x20 && offset <= 0x2f ) /* TGP Tables in ROM - FIXME - */ + if ( EB == 0 && offset >= 0x20 && offset <= 0x2f ) /* TGP Tables in ROM - FIXME - */ { GETEXTPORT()[offset] = value; @@ -589,7 +589,7 @@ static void SETEXTERNAL( mb86233_state *cpustate, UINT32 EB, UINT32 offset, UINT static UINT32 GETREGS( mb86233_state *cpustate, UINT32 reg, int source ) { - UINT32 mode = ( reg >> 6 ) & 0x07; + UINT32 mode = ( reg >> 6 ) & 0x07; reg &= 0x3f; @@ -602,52 +602,52 @@ static UINT32 GETREGS( mb86233_state *cpustate, UINT32 reg, int source ) switch( reg ) { - case 0x10: /* A */ + case 0x10: /* A */ return GETA().u; - case 0x11: /* A.e */ + case 0x11: /* A.e */ return (GETA().u >> 23) & 0xff; - case 0x12: /* A.m */ + case 0x12: /* A.m */ return (GETA().u & 0x7fffff) | ((GETA().u&0x80000000) >> 8); - case 0x13: /* B */ + case 0x13: /* B */ return GETB().u; - case 0x14: /* B.e */ + case 0x14: /* B.e */ return (GETB().u >> 23) & 0xff; - case 0x15: /* B.m */ + case 0x15: /* B.m */ return (GETB().u & 0x7fffff) | ((GETB().u&0x80000000) >> 8); - case 0x19: /* D */ + case 0x19: /* D */ return GETD().u; - case 0x1A: /* D.e */ + case 0x1A: /* D.e */ return (GETD().u >> 23) & 0xff; - case 0x1B: /* D.m */ + case 0x1B: /* D.m */ return (GETD().u & 0x7fffff) | ((GETD().u&0x80000000) >> 8); - case 0x1C: /* P */ + case 0x1C: /* P */ return GETP().u; - case 0x1D: /* P.e */ + case 0x1D: /* P.e */ return (GETP().u >> 23) & 0xff; - case 0x1E: /* P.m */ + case 0x1E: /* P.m */ return (GETP().u & 0x7fffff) | ((GETP().u&0x80000000) >> 8); - case 0x1F: /* Shift */ + case 0x1F: /* Shift */ return GETSHIFT(); - case 0x20: /* Parallel Port */ + case 0x20: /* Parallel Port */ logerror( "TGP: Parallel port read at PC:%04x\n", GETPC() ); return 0; - case 0x21: /* FIn */ + case 0x21: /* FIn */ { - UINT32 fifo_data; + UINT32 fifo_data; if ( cpustate->fifo_read_cb ) { @@ -661,10 +661,10 @@ static UINT32 GETREGS( mb86233_state *cpustate, UINT32 reg, int source ) return 0; } - case 0x22: /* FOut */ + case 0x22: /* FOut */ return 0; - case 0x23: /* EB */ + case 0x23: /* EB */ return GETEB(); case 0x34: @@ -675,9 +675,9 @@ static UINT32 GETREGS( mb86233_state *cpustate, UINT32 reg, int source ) break; } } - else if ( mode == 2 ) /* Indexed */ + else if ( mode == 2 ) /* Indexed */ { - UINT32 addr = reg & 0x1f; + UINT32 addr = reg & 0x1f; if ( source ) { @@ -696,9 +696,9 @@ static UINT32 GETREGS( mb86233_state *cpustate, UINT32 reg, int source ) return addr; } - else if( mode == 6 ) /* Indexed with postop */ + else if( mode == 6 ) /* Indexed with postop */ { - UINT32 addr = 0; + UINT32 addr = 0; if ( source ) { @@ -742,7 +742,7 @@ static UINT32 GETREGS( mb86233_state *cpustate, UINT32 reg, int source ) static void SETREGS( mb86233_state *cpustate, UINT32 reg, UINT32 val ) { - int mode = ( reg >> 6) & 0x07; + int mode = ( reg >> 6) & 0x07; reg &= 0x3f; @@ -759,61 +759,61 @@ static void SETREGS( mb86233_state *cpustate, UINT32 reg, UINT32 val ) switch( reg ) { - case 0x10: /* A */ + case 0x10: /* A */ GETA().u = val; break; - case 0x11: /* A.e */ + case 0x11: /* A.e */ GETA().u &= ~((0x0000007f) << 23); GETA().u |= (( val & 0xff ) << 23 ); break; - case 0x12: /* A.m */ + case 0x12: /* A.m */ GETA().u &= ~( 0x807fffff ); GETA().u |= ( val & 0x7fffff ); GETA().u |= ( val & 0x800000 ) << 8; break; - case 0x13: /* B */ + case 0x13: /* B */ GETB().u = val; break; - case 0x14: /* B.e */ + case 0x14: /* B.e */ GETB().u &= ~((0x0000007f) << 23); GETB().u |= (( val & 0xff ) << 23 ); break; - case 0x15: /* B.m */ + case 0x15: /* B.m */ GETB().u &= ~( 0x807fffff ); GETB().u |= ( val & 0x7fffff ); GETB().u |= ( val & 0x800000 ) << 8; break; - case 0x19: /* D */ + case 0x19: /* D */ GETD().u = val; break; - case 0x1A: /* D.e */ + case 0x1A: /* D.e */ GETD().u &= ~((0x0000007f) << 23); GETD().u |= (( val & 0xff ) << 23 ); break; - case 0x1B: /* B.m */ + case 0x1B: /* B.m */ GETD().u &= ~( 0x807fffff ); GETD().u |= ( val & 0x7fffff ); GETD().u |= ( val & 0x800000 ) << 8; break; - case 0x1C: /* P */ + case 0x1C: /* P */ GETP().u = val; break; - case 0x1D: /* P.e */ + case 0x1D: /* P.e */ GETP().u &= ~((0x0000007f) << 23); GETP().u |= (( val & 0xff ) << 23 ); break; - case 0x1E: /* P.m */ + case 0x1E: /* P.m */ GETP().u &= ~( 0x807fffff ); GETP().u |= ( val & 0x7fffff ); GETP().u |= ( val & 0x800000 ) << 8; @@ -862,7 +862,7 @@ static void SETREGS( mb86233_state *cpustate, UINT32 reg, UINT32 val ) static UINT32 INDIRECT( mb86233_state *cpustate, UINT32 reg, int source ) { - UINT32 mode = ( reg >> 6 ) & 0x07; + UINT32 mode = ( reg >> 6 ) & 0x07; if ( mode == 0 || mode == 1 || mode == 3 ) { @@ -870,7 +870,7 @@ static UINT32 INDIRECT( mb86233_state *cpustate, UINT32 reg, int source ) } else if ( mode == 2 ) { - UINT32 addr = reg & 0x1f; + UINT32 addr = reg & 0x1f; if ( source ) { @@ -891,7 +891,7 @@ static UINT32 INDIRECT( mb86233_state *cpustate, UINT32 reg, int source ) } else if ( mode == 6 || mode == 7 ) { - UINT32 addr = 0; + UINT32 addr = 0; if ( source ) { @@ -943,8 +943,8 @@ static CPU_EXECUTE( mb86233 ) while( cpustate->icount > 0 ) { - UINT32 val; - UINT32 opcode; + UINT32 val; + UINT32 opcode; debugger_instruction_hook(device, GETPC()); @@ -954,12 +954,12 @@ static CPU_EXECUTE( mb86233 ) switch( (opcode >> 26) & 0x3f ) { - case 0x00: /* dual move */ + case 0x00: /* dual move */ { - UINT32 r1 = opcode & 0x1ff; - UINT32 r2 = ( opcode >> 9 ) & 0x7f; - UINT32 alu = ( opcode >> 21 ) & 0x1f; - UINT32 op = ( opcode >> 16 ) & 0x1f; + UINT32 r1 = opcode & 0x1ff; + UINT32 r2 = ( opcode >> 9 ) & 0x7f; + UINT32 alu = ( opcode >> 21 ) & 0x1f; + UINT32 op = ( opcode >> 16 ) & 0x1f; ALU( cpustate, alu ); @@ -997,30 +997,30 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x7: /* LD/MOV */ + case 0x7: /* LD/MOV */ { - UINT32 r1 = opcode & 0x1ff; - UINT32 r2 = ( opcode >> 9 ) & 0x7f; - UINT32 alu = ( opcode >> 21 ) & 0x1f; - UINT32 op = ( opcode >> 16 ) & 0x1f; + UINT32 r1 = opcode & 0x1ff; + UINT32 r2 = ( opcode >> 9 ) & 0x7f; + UINT32 alu = ( opcode >> 21 ) & 0x1f; + UINT32 op = ( opcode >> 16 ) & 0x1f; switch( op ) { - case 0x04: /* MOV RAM->External */ + case 0x04: /* MOV RAM->External */ { SETEXTERNAL(cpustate, GETEB(), r2, GETARAM()[r1]); ALU(cpustate, alu); } break; - case 0x0c: /* MOV RAM->BRAM */ + case 0x0c: /* MOV RAM->BRAM */ { GETBRAM()[r2] = GETARAM()[r1]; ALU(cpustate, alu); } break; - case 0x1d: /* MOV RAM->Reg */ + case 0x1d: /* MOV RAM->Reg */ { if ( r1 & 0x180 ) { @@ -1061,7 +1061,7 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x1f: /* MOV Reg->Reg */ + case 0x1f: /* MOV Reg->Reg */ { if ( r1 == 0x10 && r2 == 0xf ) { @@ -1082,7 +1082,7 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x0f: /* MOV RAMInd->BRAMInd */ + case 0x0f: /* MOV RAMInd->BRAMInd */ { val = GETARAM()[INDIRECT(cpustate,r1,1)]; ALU(cpustate, alu); @@ -1090,7 +1090,7 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x13: /* MOV BRAMInd->RAMInd */ + case 0x13: /* MOV BRAMInd->RAMInd */ { val = GETBRAM()[INDIRECT(cpustate,r1,1)]; ALU(cpustate, alu); @@ -1098,7 +1098,7 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x10: /* MOV RAMInd->RAM */ + case 0x10: /* MOV RAMInd->RAM */ { val = GETBRAM()[INDIRECT(cpustate,r1,1)]; ALU(cpustate, alu); @@ -1106,9 +1106,9 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x1e: /* External->Reg */ + case 0x1e: /* External->Reg */ { - UINT32 offset; + UINT32 offset; if ( ( r2 >> 6 ) & 1 ) offset = INDIRECT(cpustate,r1,1); @@ -1121,7 +1121,7 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x03: /* RAM->External Ind */ + case 0x03: /* RAM->External Ind */ { val = GETARAM()[r1]; ALU(cpustate, alu); @@ -1129,7 +1129,7 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x07: /* RAMInd->External */ + case 0x07: /* RAMInd->External */ { val = GETARAM()[INDIRECT(cpustate,r1,1)]; ALU(cpustate, alu); @@ -1137,7 +1137,7 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x08: /* External->RAM */ + case 0x08: /* External->RAM */ { val = GETEXTERNAL(cpustate, GETEB(),INDIRECT(cpustate,r1,1)); ALU(cpustate, alu); @@ -1145,7 +1145,7 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x0b: /* External->RAMInd */ + case 0x0b: /* External->RAMInd */ { val = GETEXTERNAL(cpustate, GETEB(),INDIRECT(cpustate,r1,1)); ALU(cpustate, alu); @@ -1160,10 +1160,10 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x0e: /* LDIMM24 */ + case 0x0e: /* LDIMM24 */ { - UINT32 sub = (opcode>>24) & 0x03; - UINT32 imm = opcode & 0xffffff; + UINT32 sub = (opcode>>24) & 0x03; + UINT32 imm = opcode & 0xffffff; /* sign extend 24->32 */ if ( imm & 0x800000 ) @@ -1190,16 +1190,16 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x0f: /* REP/CLEAR/FLAGS */ + case 0x0f: /* REP/CLEAR/FLAGS */ { - UINT32 alu = ( opcode >> 20 ) & 0x1f; - UINT32 sub2 = ( opcode >> 16 ) & 0x0f; + UINT32 alu = ( opcode >> 20 ) & 0x1f; + UINT32 sub2 = ( opcode >> 16 ) & 0x0f; ALU(cpustate, alu ); - if( sub2 == 0x00 ) /* CLEAR reg */ + if( sub2 == 0x00 ) /* CLEAR reg */ { - UINT32 reg = opcode & 0x1f; + UINT32 reg = opcode & 0x1f; switch( reg ) { @@ -1216,9 +1216,9 @@ static CPU_EXECUTE( mb86233 ) break; } } - else if ( sub2 == 0x04 ) /* REP xxx */ + else if ( sub2 == 0x04 ) /* REP xxx */ { - UINT32 sub3 = ( opcode >> 12 ) & 0x0f; + UINT32 sub3 = ( opcode >> 12 ) & 0x0f; if ( sub3 == 0 ) { @@ -1235,30 +1235,30 @@ static CPU_EXECUTE( mb86233 ) GETPC()++; } } - else if ( sub2 == 0x02 ) /* CLRFLAGS */ + else if ( sub2 == 0x02 ) /* CLRFLAGS */ { GETSR() &= ~(opcode&0xfff); } - else if ( sub2 == 0x06 ) /* SETFLAGS */ + else if ( sub2 == 0x06 ) /* SETFLAGS */ { GETSR() |= (opcode&0xfff); } } break; - case 0x10: /* LDIMM rx */ + case 0x10: /* LDIMM rx */ { - UINT32 sub = (opcode>>24) & 0x03; - UINT32 imm = opcode & 0xffff; + UINT32 sub = (opcode>>24) & 0x03; + UINT32 imm = opcode & 0xffff; GETGPR(sub) = imm; } break; - case 0x13: /* LDIMM r1x */ + case 0x13: /* LDIMM r1x */ { - UINT32 sub = (opcode>>24) & 0x03; - UINT32 imm = opcode & 0xffffff; + UINT32 sub = (opcode>>24) & 0x03; + UINT32 imm = opcode & 0xffffff; if ( sub == 0 ) /* R12 */ GETGPR(12) = imm & 0xff; @@ -1269,10 +1269,10 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x14: /* LDIMM m,e */ + case 0x14: /* LDIMM m,e */ { - UINT32 sub = (opcode>>24) & 0x03; - UINT32 imm = opcode & 0xffffff; + UINT32 sub = (opcode>>24) & 0x03; + UINT32 imm = opcode & 0xffffff; if ( sub == 0 ) /* A */ { @@ -1295,10 +1295,10 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x15: /* LDIMM m,e */ + case 0x15: /* LDIMM m,e */ { - UINT32 sub = (opcode>>24) & 0x03; - UINT32 imm = opcode & 0xffffff; + UINT32 sub = (opcode>>24) & 0x03; + UINT32 imm = opcode & 0xffffff; if ( sub == 0 ) /* B.e again? */ { @@ -1323,10 +1323,10 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x16: /* LDIMM m,e */ + case 0x16: /* LDIMM m,e */ { - UINT32 sub = (opcode>>24) & 0x03; - UINT32 imm = opcode & 0xffffff; + UINT32 sub = (opcode>>24) & 0x03; + UINT32 imm = opcode & 0xffffff; if ( sub == 1 ) /* clear + D.m */ { @@ -1349,10 +1349,10 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x17: /* LDIMM special reg */ + case 0x17: /* LDIMM special reg */ { - UINT32 sub = (opcode>>24) & 0x03; - UINT32 imm = opcode & 0xffffff; + UINT32 sub = (opcode>>24) & 0x03; + UINT32 imm = opcode & 0xffffff; if ( sub == 0x03 ) { @@ -1365,10 +1365,10 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x18: /* LDIMM external reg */ + case 0x18: /* LDIMM external reg */ { - UINT32 sub = (opcode>>24) & 0x03; - UINT32 imm = opcode & 0xffffff; + UINT32 sub = (opcode>>24) & 0x03; + UINT32 imm = opcode & 0xffffff; if ( sub == 0x03 ) { @@ -1381,7 +1381,7 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x1d: //LDIMM to Rep regs + case 0x1d: //LDIMM to Rep regs { UINT32 sub = (opcode>>24)&0x3; UINT32 imm = opcode&0xffffff; @@ -1396,21 +1396,21 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x2f: /* Conditional Branches */ + case 0x2f: /* Conditional Branches */ { - UINT32 cond = ( opcode >> 20 ) & 0x1f; - UINT32 subtype = ( opcode >> 16 ) & 0x0f; - UINT32 data = opcode & 0xffff; + UINT32 cond = ( opcode >> 20 ) & 0x1f; + UINT32 subtype = ( opcode >> 16 ) & 0x0f; + UINT32 data = opcode & 0xffff; if( COND(cpustate, cond) ) { switch( subtype ) { - case 0x00: /* BRIF <addr> */ + case 0x00: /* BRIF <addr> */ GETPC() = data - 1; break; - case 0x02: /* BRIF indirect */ + case 0x02: /* BRIF indirect */ if ( data & 0x4000 ) data = GETREGS(cpustate,data&0x3f,0) - 1; else @@ -1423,13 +1423,13 @@ static CPU_EXECUTE( mb86233 ) GETPC() = data; break; - case 0x04: /* BSIF <addr> */ + case 0x04: /* BSIF <addr> */ GETPCS()[GETPCSP()] = GETPC(); GETPCSP()++; GETPC() = data - 1; break; - case 0x06: /* BSIF indirect */ + case 0x06: /* BSIF indirect */ GETPCS()[GETPCSP()] = GETPC(); GETPCSP()++; if ( data & 0x4000 ) @@ -1444,16 +1444,16 @@ static CPU_EXECUTE( mb86233 ) GETPC() = data; break; - case 0x0a: /* RTIF */ + case 0x0a: /* RTIF */ --GETPCSP(); GETPC() = GETPCS()[GETPCSP()]; break; - case 0x0c: /* LDIF */ + case 0x0c: /* LDIF */ SETREGS(cpustate,((data>>9)&0x3f), GETARAM()[data&0x1FF] ); break; - case 0x0e: /* RIIF */ + case 0x0e: /* RIIF */ logerror( "TGP: RIIF unimplemented at PC:%04x\n", GETPC() ); break; @@ -1465,21 +1465,21 @@ static CPU_EXECUTE( mb86233 ) } break; - case 0x3f: /* Inverse Conditional Branches */ + case 0x3f: /* Inverse Conditional Branches */ { - UINT32 cond = ( opcode >> 20 ) & 0x1f; - UINT32 subtype = ( opcode >> 16 ) & 0x0f; - UINT32 data = opcode & 0xffff; + UINT32 cond = ( opcode >> 20 ) & 0x1f; + UINT32 subtype = ( opcode >> 16 ) & 0x0f; + UINT32 data = opcode & 0xffff; if( !COND(cpustate, cond) ) { switch( subtype ) { - case 0x00: /* BRUL <addr> */ + case 0x00: /* BRUL <addr> */ GETPC() = data - 1; break; - case 0x02: /* BRUL indirect */ + case 0x02: /* BRUL indirect */ if ( data & 0x4000 ) data = GETREGS(cpustate,data&0x3f,0) - 1; else @@ -1492,13 +1492,13 @@ static CPU_EXECUTE( mb86233 ) GETPC() = data; break; - case 0x04: /* BSUL <addr> */ + case 0x04: /* BSUL <addr> */ GETPCS()[GETPCSP()] = GETPC(); GETPCSP()++; GETPC() = data - 1; break; - case 0x06: /* BSUL indirect */ + case 0x06: /* BSUL indirect */ GETPCS()[GETPCSP()] = GETPC(); GETPCSP()++; if ( data & 0x4000 ) @@ -1513,16 +1513,16 @@ static CPU_EXECUTE( mb86233 ) GETPC() = data; break; - case 0x0a: /* RTUL */ + case 0x0a: /* RTUL */ --GETPCSP(); GETPC() = GETPCS()[GETPCSP()]; break; - case 0x0c: /* LDUL */ + case 0x0c: /* LDUL */ SETREGS(cpustate,((data>>9)&0x3f), GETARAM()[data&0x1FF] ); break; - case 0x0e: /* RIUL */ + case 0x0e: /* RIUL */ logerror( "TGP: RIIF unimplemented at PC:%04x\n", GETPC() ); break; @@ -1566,33 +1566,33 @@ static CPU_SET_INFO( mb86233 ) switch (state) { case CPUINFO_INT_PC: - case CPUINFO_INT_REGISTER + MB86233_PC: GETPC() = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_A: GETA().u = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_B: GETB().u = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_P: GETP().u = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_D: GETD().u = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_REP: GETREPS() = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_PC: GETPC() = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_A: GETA().u = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_B: GETB().u = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_P: GETP().u = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_D: GETD().u = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_REP: GETREPS() = info->i; break; case CPUINFO_INT_SP: - case CPUINFO_INT_REGISTER + MB86233_SP: GETPCSP() = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_EB: GETEB() = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_SHIFT: GETSHIFT() = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_FLAGS: GETSR() = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R0: GETGPR(0) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R1: GETGPR(1) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R2: GETGPR(2) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R3: GETGPR(3) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R4: GETGPR(4) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R5: GETGPR(5) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R6: GETGPR(6) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R7: GETGPR(7) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R8: GETGPR(8) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R9: GETGPR(9) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R10: GETGPR(10) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R11: GETGPR(11) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R12: GETGPR(12) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R13: GETGPR(13) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R14: GETGPR(14) = info->i; break; - case CPUINFO_INT_REGISTER + MB86233_R15: GETGPR(15) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_SP: GETPCSP() = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_EB: GETEB() = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_SHIFT: GETSHIFT() = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_FLAGS: GETSR() = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R0: GETGPR(0) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R1: GETGPR(1) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R2: GETGPR(2) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R3: GETGPR(3) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R4: GETGPR(4) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R5: GETGPR(5) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R6: GETGPR(6) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R7: GETGPR(7) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R8: GETGPR(8) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R9: GETGPR(9) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R10: GETGPR(10) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R11: GETGPR(11) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R12: GETGPR(12) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R13: GETGPR(13) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R14: GETGPR(14) = info->i; break; + case CPUINFO_INT_REGISTER + MB86233_R15: GETGPR(15) = info->i; break; } } @@ -1607,108 +1607,108 @@ CPU_GET_INFO( mb86233 ) switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ - case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(mb86233_state); break; - case CPUINFO_INT_INPUT_LINES: info->i = 0; break; - case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break; - case CPUINFO_INT_ENDIANNESS: info->i = ENDIANNESS_LITTLE; break; - case CPUINFO_INT_CLOCK_MULTIPLIER: info->i = 1; break; - case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break; - case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 4; break; - case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 4; break; - case CPUINFO_INT_MIN_CYCLES: info->i = 1; break; - case CPUINFO_INT_MAX_CYCLES: info->i = 2; break; - - case CPUINFO_INT_DATABUS_WIDTH + AS_PROGRAM: info->i = 32; break; - case CPUINFO_INT_ADDRBUS_WIDTH + AS_PROGRAM: info->i = 32; break; - case CPUINFO_INT_ADDRBUS_SHIFT + AS_PROGRAM: info->i = -2; break; - case CPUINFO_INT_DATABUS_WIDTH + AS_DATA: info->i = 32; break; - case CPUINFO_INT_ADDRBUS_WIDTH + AS_DATA: info->i = 32; break; - case CPUINFO_INT_ADDRBUS_SHIFT + AS_DATA: info->i = 0; break; - case CPUINFO_INT_DATABUS_WIDTH + AS_IO: info->i = 0; break; - case CPUINFO_INT_ADDRBUS_WIDTH + AS_IO: info->i = 0; break; - case CPUINFO_INT_ADDRBUS_SHIFT + AS_IO: info->i = 0; break; - - case CPUINFO_INT_PREVIOUSPC: /* not implemented */ break; + case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(mb86233_state); break; + case CPUINFO_INT_INPUT_LINES: info->i = 0; break; + case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break; + case CPUINFO_INT_ENDIANNESS: info->i = ENDIANNESS_LITTLE; break; + case CPUINFO_INT_CLOCK_MULTIPLIER: info->i = 1; break; + case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break; + case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 4; break; + case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 4; break; + case CPUINFO_INT_MIN_CYCLES: info->i = 1; break; + case CPUINFO_INT_MAX_CYCLES: info->i = 2; break; + + case CPUINFO_INT_DATABUS_WIDTH + AS_PROGRAM: info->i = 32; break; + case CPUINFO_INT_ADDRBUS_WIDTH + AS_PROGRAM: info->i = 32; break; + case CPUINFO_INT_ADDRBUS_SHIFT + AS_PROGRAM: info->i = -2; break; + case CPUINFO_INT_DATABUS_WIDTH + AS_DATA: info->i = 32; break; + case CPUINFO_INT_ADDRBUS_WIDTH + AS_DATA: info->i = 32; break; + case CPUINFO_INT_ADDRBUS_SHIFT + AS_DATA: info->i = 0; break; + case CPUINFO_INT_DATABUS_WIDTH + AS_IO: info->i = 0; break; + case CPUINFO_INT_ADDRBUS_WIDTH + AS_IO: info->i = 0; break; + case CPUINFO_INT_ADDRBUS_SHIFT + AS_IO: info->i = 0; break; + + case CPUINFO_INT_PREVIOUSPC: /* not implemented */ break; case CPUINFO_INT_PC: - case CPUINFO_INT_REGISTER + MB86233_PC: info->i = GETPC(); break; - case CPUINFO_INT_REGISTER + MB86233_A: info->i = GETA().u; break; - case CPUINFO_INT_REGISTER + MB86233_B: info->i = GETB().u; break; - case CPUINFO_INT_REGISTER + MB86233_P: info->i = GETP().u; break; - case CPUINFO_INT_REGISTER + MB86233_D: info->i = GETD().u; break; - case CPUINFO_INT_REGISTER + MB86233_REP: info->i = GETREPS(); break; + case CPUINFO_INT_REGISTER + MB86233_PC: info->i = GETPC(); break; + case CPUINFO_INT_REGISTER + MB86233_A: info->i = GETA().u; break; + case CPUINFO_INT_REGISTER + MB86233_B: info->i = GETB().u; break; + case CPUINFO_INT_REGISTER + MB86233_P: info->i = GETP().u; break; + case CPUINFO_INT_REGISTER + MB86233_D: info->i = GETD().u; break; + case CPUINFO_INT_REGISTER + MB86233_REP: info->i = GETREPS(); break; case CPUINFO_INT_SP: - case CPUINFO_INT_REGISTER + MB86233_SP: info->i = GETPCSP(); break; - case CPUINFO_INT_REGISTER + MB86233_EB: info->i = GETEB(); break; - case CPUINFO_INT_REGISTER + MB86233_SHIFT: info->i = GETSHIFT(); break; - case CPUINFO_INT_REGISTER + MB86233_FLAGS: info->i = GETSR(); break; - case CPUINFO_INT_REGISTER + MB86233_R0: info->i = GETGPR(0); break; - case CPUINFO_INT_REGISTER + MB86233_R1: info->i = GETGPR(1); break; - case CPUINFO_INT_REGISTER + MB86233_R2: info->i = GETGPR(2); break; - case CPUINFO_INT_REGISTER + MB86233_R3: info->i = GETGPR(3); break; - case CPUINFO_INT_REGISTER + MB86233_R4: info->i = GETGPR(4); break; - case CPUINFO_INT_REGISTER + MB86233_R5: info->i = GETGPR(5); break; - case CPUINFO_INT_REGISTER + MB86233_R6: info->i = GETGPR(6); break; - case CPUINFO_INT_REGISTER + MB86233_R7: info->i = GETGPR(7); break; - case CPUINFO_INT_REGISTER + MB86233_R8: info->i = GETGPR(8); break; - case CPUINFO_INT_REGISTER + MB86233_R9: info->i = GETGPR(9); break; - case CPUINFO_INT_REGISTER + MB86233_R10: info->i = GETGPR(10); break; - case CPUINFO_INT_REGISTER + MB86233_R11: info->i = GETGPR(11); break; - case CPUINFO_INT_REGISTER + MB86233_R12: info->i = GETGPR(12); break; - case CPUINFO_INT_REGISTER + MB86233_R13: info->i = GETGPR(13); break; - case CPUINFO_INT_REGISTER + MB86233_R14: info->i = GETGPR(14); break; - case CPUINFO_INT_REGISTER + MB86233_R15: info->i = GETGPR(15); break; + case CPUINFO_INT_REGISTER + MB86233_SP: info->i = GETPCSP(); break; + case CPUINFO_INT_REGISTER + MB86233_EB: info->i = GETEB(); break; + case CPUINFO_INT_REGISTER + MB86233_SHIFT: info->i = GETSHIFT(); break; + case CPUINFO_INT_REGISTER + MB86233_FLAGS: info->i = GETSR(); break; + case CPUINFO_INT_REGISTER + MB86233_R0: info->i = GETGPR(0); break; + case CPUINFO_INT_REGISTER + MB86233_R1: info->i = GETGPR(1); break; + case CPUINFO_INT_REGISTER + MB86233_R2: info->i = GETGPR(2); break; + case CPUINFO_INT_REGISTER + MB86233_R3: info->i = GETGPR(3); break; + case CPUINFO_INT_REGISTER + MB86233_R4: info->i = GETGPR(4); break; + case CPUINFO_INT_REGISTER + MB86233_R5: info->i = GETGPR(5); break; + case CPUINFO_INT_REGISTER + MB86233_R6: info->i = GETGPR(6); break; + case CPUINFO_INT_REGISTER + MB86233_R7: info->i = GETGPR(7); break; + case CPUINFO_INT_REGISTER + MB86233_R8: info->i = GETGPR(8); break; + case CPUINFO_INT_REGISTER + MB86233_R9: info->i = GETGPR(9); break; + case CPUINFO_INT_REGISTER + MB86233_R10: info->i = GETGPR(10); break; + case CPUINFO_INT_REGISTER + MB86233_R11: info->i = GETGPR(11); break; + case CPUINFO_INT_REGISTER + MB86233_R12: info->i = GETGPR(12); break; + case CPUINFO_INT_REGISTER + MB86233_R13: info->i = GETGPR(13); break; + case CPUINFO_INT_REGISTER + MB86233_R14: info->i = GETGPR(14); break; + case CPUINFO_INT_REGISTER + MB86233_R15: info->i = GETGPR(15); break; /* --- the following bits of info are returned as pointers to data or functions --- */ - case CPUINFO_FCT_SET_INFO: info->setinfo = CPU_SET_INFO_NAME(mb86233); break; - case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(mb86233); break; - case CPUINFO_FCT_RESET: info->reset = CPU_RESET_NAME(mb86233); break; - case CPUINFO_FCT_EXIT: info->exit = NULL; break; - case CPUINFO_FCT_EXECUTE: info->execute = CPU_EXECUTE_NAME(mb86233); break; - case CPUINFO_FCT_BURN: info->burn = NULL; break; - case CPUINFO_FCT_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(mb86233); break; - case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &cpustate->icount; break; + case CPUINFO_FCT_SET_INFO: info->setinfo = CPU_SET_INFO_NAME(mb86233); break; + case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(mb86233); break; + case CPUINFO_FCT_RESET: info->reset = CPU_RESET_NAME(mb86233); break; + case CPUINFO_FCT_EXIT: info->exit = NULL; break; + case CPUINFO_FCT_EXECUTE: info->execute = CPU_EXECUTE_NAME(mb86233); break; + case CPUINFO_FCT_BURN: info->burn = NULL; break; + case CPUINFO_FCT_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(mb86233); break; + case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &cpustate->icount; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ - case CPUINFO_STR_NAME: strcpy(info->s, "MB86233"); break; - case CPUINFO_STR_FAMILY: strcpy(info->s, "Fujitsu MB86233"); break; - case CPUINFO_STR_VERSION: strcpy(info->s, "1.0"); break; - case CPUINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break; - case CPUINFO_STR_CREDITS: strcpy(info->s, "Copyright Miguel Angel Horna and Ernesto Corvi"); break; + case CPUINFO_STR_NAME: strcpy(info->s, "MB86233"); break; + case CPUINFO_STR_FAMILY: strcpy(info->s, "Fujitsu MB86233"); break; + case CPUINFO_STR_VERSION: strcpy(info->s, "1.0"); break; + case CPUINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break; + case CPUINFO_STR_CREDITS: strcpy(info->s, "Copyright Miguel Angel Horna and Ernesto Corvi"); break; case CPUINFO_STR_FLAGS: - sprintf(info->s, "%c%c", (GETSR()&SIGN_FLAG) ? 'N' : 'n', (GETSR()&ZERO_FLAG) ? 'Z' : 'z' ); - break; - - case CPUINFO_STR_REGISTER + MB86233_FLAGS: - sprintf(info->s, "FL:%c%c", (GETSR()&SIGN_FLAG) ? 'N' : 'n', (GETSR()&ZERO_FLAG) ? 'Z' : 'z' ); - break; - - case CPUINFO_STR_REGISTER + MB86233_PC: sprintf(info->s, "PC:%04X", GETPC()); break; - case CPUINFO_STR_REGISTER + MB86233_A: sprintf(info->s, "PA:%08X (%f)", GETA().u, GETA().f); break; - case CPUINFO_STR_REGISTER + MB86233_B: sprintf(info->s, "PB:%08X (%f)", GETB().u, GETB().f); break; - case CPUINFO_STR_REGISTER + MB86233_P: sprintf(info->s, "PP:%08X (%f)", GETP().u, GETP().f); break; - case CPUINFO_STR_REGISTER + MB86233_D: sprintf(info->s, "PD:%08X (%f)", GETD().u, GETD().f); break; - case CPUINFO_STR_REGISTER + MB86233_REP: sprintf(info->s, "REPS:%08X", GETREPS()); break; - case CPUINFO_STR_REGISTER + MB86233_SP: sprintf(info->s, "PCSP:%1X", GETPCSP()); break; - case CPUINFO_STR_REGISTER + MB86233_EB: sprintf(info->s, "EB:%08X", GETEB()); break; - case CPUINFO_STR_REGISTER + MB86233_SHIFT: sprintf(info->s, "SHIFT:%08X", GETSHIFT()); break; - case CPUINFO_STR_REGISTER + MB86233_R0: sprintf(info->s, "R0:%08X", GETGPR(0)); break; - case CPUINFO_STR_REGISTER + MB86233_R1: sprintf(info->s, "R1:%08X", GETGPR(1)); break; - case CPUINFO_STR_REGISTER + MB86233_R2: sprintf(info->s, "R2:%08X", GETGPR(2)); break; - case CPUINFO_STR_REGISTER + MB86233_R3: sprintf(info->s, "R3:%08X", GETGPR(3)); break; - case CPUINFO_STR_REGISTER + MB86233_R4: sprintf(info->s, "R4:%08X", GETGPR(4)); break; - case CPUINFO_STR_REGISTER + MB86233_R5: sprintf(info->s, "R5:%08X", GETGPR(5)); break; - case CPUINFO_STR_REGISTER + MB86233_R6: sprintf(info->s, "R6:%08X", GETGPR(6)); break; - case CPUINFO_STR_REGISTER + MB86233_R7: sprintf(info->s, "R7:%08X", GETGPR(7)); break; - case CPUINFO_STR_REGISTER + MB86233_R8: sprintf(info->s, "R8:%08X", GETGPR(8)); break; - case CPUINFO_STR_REGISTER + MB86233_R9: sprintf(info->s, "R9:%08X", GETGPR(9)); break; - case CPUINFO_STR_REGISTER + MB86233_R10: sprintf(info->s, "R10:%08X", GETGPR(10)); break; - case CPUINFO_STR_REGISTER + MB86233_R11: sprintf(info->s, "R11:%08X", GETGPR(11)); break; - case CPUINFO_STR_REGISTER + MB86233_R12: sprintf(info->s, "R12:%08X", GETGPR(12)); break; - case CPUINFO_STR_REGISTER + MB86233_R13: sprintf(info->s, "R13:%08X", GETGPR(13)); break; - case CPUINFO_STR_REGISTER + MB86233_R14: sprintf(info->s, "R14:%08X", GETGPR(14)); break; - case CPUINFO_STR_REGISTER + MB86233_R15: sprintf(info->s, "R15:%08X", GETGPR(15)); break; + sprintf(info->s, "%c%c", (GETSR()&SIGN_FLAG) ? 'N' : 'n', (GETSR()&ZERO_FLAG) ? 'Z' : 'z' ); + break; + + case CPUINFO_STR_REGISTER + MB86233_FLAGS: + sprintf(info->s, "FL:%c%c", (GETSR()&SIGN_FLAG) ? 'N' : 'n', (GETSR()&ZERO_FLAG) ? 'Z' : 'z' ); + break; + + case CPUINFO_STR_REGISTER + MB86233_PC: sprintf(info->s, "PC:%04X", GETPC()); break; + case CPUINFO_STR_REGISTER + MB86233_A: sprintf(info->s, "PA:%08X (%f)", GETA().u, GETA().f); break; + case CPUINFO_STR_REGISTER + MB86233_B: sprintf(info->s, "PB:%08X (%f)", GETB().u, GETB().f); break; + case CPUINFO_STR_REGISTER + MB86233_P: sprintf(info->s, "PP:%08X (%f)", GETP().u, GETP().f); break; + case CPUINFO_STR_REGISTER + MB86233_D: sprintf(info->s, "PD:%08X (%f)", GETD().u, GETD().f); break; + case CPUINFO_STR_REGISTER + MB86233_REP: sprintf(info->s, "REPS:%08X", GETREPS()); break; + case CPUINFO_STR_REGISTER + MB86233_SP: sprintf(info->s, "PCSP:%1X", GETPCSP()); break; + case CPUINFO_STR_REGISTER + MB86233_EB: sprintf(info->s, "EB:%08X", GETEB()); break; + case CPUINFO_STR_REGISTER + MB86233_SHIFT: sprintf(info->s, "SHIFT:%08X", GETSHIFT()); break; + case CPUINFO_STR_REGISTER + MB86233_R0: sprintf(info->s, "R0:%08X", GETGPR(0)); break; + case CPUINFO_STR_REGISTER + MB86233_R1: sprintf(info->s, "R1:%08X", GETGPR(1)); break; + case CPUINFO_STR_REGISTER + MB86233_R2: sprintf(info->s, "R2:%08X", GETGPR(2)); break; + case CPUINFO_STR_REGISTER + MB86233_R3: sprintf(info->s, "R3:%08X", GETGPR(3)); break; + case CPUINFO_STR_REGISTER + MB86233_R4: sprintf(info->s, "R4:%08X", GETGPR(4)); break; + case CPUINFO_STR_REGISTER + MB86233_R5: sprintf(info->s, "R5:%08X", GETGPR(5)); break; + case CPUINFO_STR_REGISTER + MB86233_R6: sprintf(info->s, "R6:%08X", GETGPR(6)); break; + case CPUINFO_STR_REGISTER + MB86233_R7: sprintf(info->s, "R7:%08X", GETGPR(7)); break; + case CPUINFO_STR_REGISTER + MB86233_R8: sprintf(info->s, "R8:%08X", GETGPR(8)); break; + case CPUINFO_STR_REGISTER + MB86233_R9: sprintf(info->s, "R9:%08X", GETGPR(9)); break; + case CPUINFO_STR_REGISTER + MB86233_R10: sprintf(info->s, "R10:%08X", GETGPR(10)); break; + case CPUINFO_STR_REGISTER + MB86233_R11: sprintf(info->s, "R11:%08X", GETGPR(11)); break; + case CPUINFO_STR_REGISTER + MB86233_R12: sprintf(info->s, "R12:%08X", GETGPR(12)); break; + case CPUINFO_STR_REGISTER + MB86233_R13: sprintf(info->s, "R13:%08X", GETGPR(13)); break; + case CPUINFO_STR_REGISTER + MB86233_R14: sprintf(info->s, "R14:%08X", GETGPR(14)); break; + case CPUINFO_STR_REGISTER + MB86233_R15: sprintf(info->s, "R15:%08X", GETGPR(15)); break; } } |