summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/se3208/se3208.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/cpu/se3208/se3208.c')
-rw-r--r--src/emu/cpu/se3208/se3208.c208
1 files changed, 104 insertions, 104 deletions
diff --git a/src/emu/cpu/se3208/se3208.c b/src/emu/cpu/se3208/se3208.c
index aa25186196b..9f32390ff03 100644
--- a/src/emu/cpu/se3208/se3208.c
+++ b/src/emu/cpu/se3208/se3208.c
@@ -31,27 +31,27 @@ struct se3208_state_t
int icount;
};
-#define FLAG_C 0x0080
-#define FLAG_V 0x0010
-#define FLAG_S 0x0020
-#define FLAG_Z 0x0040
-
-#define FLAG_M 0x0200
-#define FLAG_E 0x0800
-#define FLAG_AUT 0x1000
-#define FLAG_ENI 0x2000
-#define FLAG_NMI 0x4000
-
-#define CLRFLAG(f) se3208_state->SR&=~(f);
-#define SETFLAG(f) se3208_state->SR|=(f);
-#define TESTFLAG(f) (se3208_state->SR&(f))
-
-#define EXTRACT(val,sbit,ebit) (((val)>>sbit)&((1<<((ebit-sbit)+1))-1))
-#define SEX8(val) ((val&0x80)?(val|0xFFFFFF00):(val&0xFF))
-#define SEX16(val) ((val&0x8000)?(val|0xFFFF0000):(val&0xFFFF))
-#define ZEX8(val) ((val)&0xFF)
-#define ZEX16(val) ((val)&0xFFFF)
-#define SEX(bits,val) ((val)&(1<<(bits-1))?((val)|(~((1<<bits)-1))):(val&((1<<bits)-1)))
+#define FLAG_C 0x0080
+#define FLAG_V 0x0010
+#define FLAG_S 0x0020
+#define FLAG_Z 0x0040
+
+#define FLAG_M 0x0200
+#define FLAG_E 0x0800
+#define FLAG_AUT 0x1000
+#define FLAG_ENI 0x2000
+#define FLAG_NMI 0x4000
+
+#define CLRFLAG(f) se3208_state->SR&=~(f);
+#define SETFLAG(f) se3208_state->SR|=(f);
+#define TESTFLAG(f) (se3208_state->SR&(f))
+
+#define EXTRACT(val,sbit,ebit) (((val)>>sbit)&((1<<((ebit-sbit)+1))-1))
+#define SEX8(val) ((val&0x80)?(val|0xFFFFFF00):(val&0xFF))
+#define SEX16(val) ((val&0x8000)?(val|0xFFFF0000):(val&0xFFFF))
+#define ZEX8(val) ((val)&0xFF)
+#define ZEX16(val) ((val)&0xFFFF)
+#define SEX(bits,val) ((val)&(1<<(bits-1))?((val)|(~((1<<bits)-1))):(val&((1<<bits)-1)))
//Precompute the instruction decoding in a big table
typedef void (*_OP)(se3208_state_t *se3208_state, UINT16 Opcode);
@@ -157,7 +157,7 @@ INLINE UINT32 AddWithFlags(se3208_state_t *se3208_state, UINT32 a,UINT32 b)
return r;
}
-INLINE UINT32 SubWithFlags(se3208_state_t *se3208_state, UINT32 a,UINT32 b) //a-b
+INLINE UINT32 SubWithFlags(se3208_state_t *se3208_state, UINT32 a,UINT32 b) //a-b
{
UINT32 r=a-b;
CLRFLAG(FLAG_Z|FLAG_C|FLAG_V|FLAG_S);
@@ -547,7 +547,7 @@ INST(POP)
se3208_state->SR=PopVal(se3208_state);
if(Set&(1<<10))
{
- se3208_state->PC=PopVal(se3208_state)-2; //PC automatically incresases by 2
+ se3208_state->PC=PopVal(se3208_state)-2; //PC automatically incresases by 2
}
}
@@ -1488,7 +1488,7 @@ static _OP DecodeOp(UINT16 Opcode)
case 5:
case 6:
case 7:
- case 8: //arith
+ case 8: //arith
case 9:
case 10:
case 11:
@@ -1565,7 +1565,7 @@ static _OP DecodeOp(UINT16 Opcode)
break;
}
break;
- case 1: //Jumps
+ case 1: //Jumps
switch(EXTRACT(Opcode,8,11))
{
case 0x0:
@@ -1605,7 +1605,7 @@ static _OP DecodeOp(UINT16 Opcode)
case 2:
if(Opcode&(1<<11))
return LDI;
- else //SP Ops
+ else //SP Ops
{
if(Opcode&(1<<10))
{
@@ -1803,7 +1803,7 @@ static CPU_EXIT( se3208 )
static void set_irq_line(se3208_state_t *se3208_state, int line,int state)
{
- if(line==INPUT_LINE_NMI) //NMI
+ if(line==INPUT_LINE_NMI) //NMI
se3208_state->NMI=state;
else
se3208_state->IRQ=state;
@@ -1817,23 +1817,23 @@ static CPU_SET_INFO( se3208 )
switch (state)
{
/* --- the following bits of info are set as 64-bit signed integers --- */
- case CPUINFO_INT_INPUT_STATE + SE3208_INT: set_irq_line(se3208_state, 0, info->i); break;
- case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: set_irq_line(se3208_state, INPUT_LINE_NMI, info->i); break;
+ case CPUINFO_INT_INPUT_STATE + SE3208_INT: set_irq_line(se3208_state, 0, info->i); break;
+ case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: set_irq_line(se3208_state, INPUT_LINE_NMI, info->i); break;
case CPUINFO_INT_REGISTER + SE3208_PC:
- case CPUINFO_INT_PC: se3208_state->PC = info->i; break;
+ case CPUINFO_INT_PC: se3208_state->PC = info->i; break;
case CPUINFO_INT_REGISTER + SE3208_SP:
- case CPUINFO_INT_SP: se3208_state->SP = info->i; break;
- case CPUINFO_INT_REGISTER + SE3208_ER: se3208_state->ER = info->i; break;
- case CPUINFO_INT_REGISTER + SE3208_SR: se3208_state->SR = info->i; break;
- case CPUINFO_INT_REGISTER + SE3208_R0: se3208_state->R[ 0] = info->i; break;
- case CPUINFO_INT_REGISTER + SE3208_R1: se3208_state->R[ 1] = info->i; break;
- case CPUINFO_INT_REGISTER + SE3208_R2: se3208_state->R[ 2] = info->i; break;
- case CPUINFO_INT_REGISTER + SE3208_R3: se3208_state->R[ 3] = info->i; break;
- case CPUINFO_INT_REGISTER + SE3208_R4: se3208_state->R[ 4] = info->i; break;
- case CPUINFO_INT_REGISTER + SE3208_R5: se3208_state->R[ 5] = info->i; break;
- case CPUINFO_INT_REGISTER + SE3208_R6: se3208_state->R[ 6] = info->i; break;
- case CPUINFO_INT_REGISTER + SE3208_R7: se3208_state->R[ 7] = info->i; break;
+ case CPUINFO_INT_SP: se3208_state->SP = info->i; break;
+ case CPUINFO_INT_REGISTER + SE3208_ER: se3208_state->ER = info->i; break;
+ case CPUINFO_INT_REGISTER + SE3208_SR: se3208_state->SR = info->i; break;
+ case CPUINFO_INT_REGISTER + SE3208_R0: se3208_state->R[ 0] = info->i; break;
+ case CPUINFO_INT_REGISTER + SE3208_R1: se3208_state->R[ 1] = info->i; break;
+ case CPUINFO_INT_REGISTER + SE3208_R2: se3208_state->R[ 2] = info->i; break;
+ case CPUINFO_INT_REGISTER + SE3208_R3: se3208_state->R[ 3] = info->i; break;
+ case CPUINFO_INT_REGISTER + SE3208_R4: se3208_state->R[ 4] = info->i; break;
+ case CPUINFO_INT_REGISTER + SE3208_R5: se3208_state->R[ 5] = info->i; break;
+ case CPUINFO_INT_REGISTER + SE3208_R6: se3208_state->R[ 6] = info->i; break;
+ case CPUINFO_INT_REGISTER + SE3208_R7: se3208_state->R[ 7] = info->i; break;
}
}
@@ -1845,63 +1845,63 @@ CPU_GET_INFO( se3208 )
switch (state)
{
/* --- the following bits of info are returned as 64-bit signed integers --- */
- case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(se3208_state_t); break;
- case CPUINFO_INT_INPUT_LINES: info->i = 1; 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 = 2; break;
- case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 2; break;
- case CPUINFO_INT_MIN_CYCLES: info->i = 1; break;
- case CPUINFO_INT_MAX_CYCLES: info->i = 1; 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 = 0; break;
- case CPUINFO_INT_DATABUS_WIDTH + AS_DATA: info->i = 0; break;
- case CPUINFO_INT_ADDRBUS_WIDTH + AS_DATA: info->i = 0; 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_INPUT_STATE + SE3208_INT: info->i = se3208_state->IRQ; break;
- case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: info->i = se3208_state->NMI; break;
-
- case CPUINFO_INT_PREVIOUSPC: info->i = se3208_state->PPC; break;
+ case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(se3208_state_t); break;
+ case CPUINFO_INT_INPUT_LINES: info->i = 1; 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 = 2; break;
+ case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 2; break;
+ case CPUINFO_INT_MIN_CYCLES: info->i = 1; break;
+ case CPUINFO_INT_MAX_CYCLES: info->i = 1; 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 = 0; break;
+ case CPUINFO_INT_DATABUS_WIDTH + AS_DATA: info->i = 0; break;
+ case CPUINFO_INT_ADDRBUS_WIDTH + AS_DATA: info->i = 0; 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_INPUT_STATE + SE3208_INT: info->i = se3208_state->IRQ; break;
+ case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: info->i = se3208_state->NMI; break;
+
+ case CPUINFO_INT_PREVIOUSPC: info->i = se3208_state->PPC; break;
case CPUINFO_INT_PC:
- case CPUINFO_INT_REGISTER + SE3208_PC: info->i = se3208_state->PC; break;
+ case CPUINFO_INT_REGISTER + SE3208_PC: info->i = se3208_state->PC; break;
case CPUINFO_INT_REGISTER + SE3208_SP:
- case CPUINFO_INT_SP: info->i = se3208_state->SP; break;
- case CPUINFO_INT_REGISTER + SE3208_SR: info->i = se3208_state->SR; break;
- case CPUINFO_INT_REGISTER + SE3208_ER: info->i = se3208_state->ER; break;
- case CPUINFO_INT_REGISTER + SE3208_R0: info->i = se3208_state->R[ 0]; break;
- case CPUINFO_INT_REGISTER + SE3208_R1: info->i = se3208_state->R[ 1]; break;
- case CPUINFO_INT_REGISTER + SE3208_R2: info->i = se3208_state->R[ 2]; break;
- case CPUINFO_INT_REGISTER + SE3208_R3: info->i = se3208_state->R[ 3]; break;
- case CPUINFO_INT_REGISTER + SE3208_R4: info->i = se3208_state->R[ 4]; break;
- case CPUINFO_INT_REGISTER + SE3208_R5: info->i = se3208_state->R[ 5]; break;
- case CPUINFO_INT_REGISTER + SE3208_R6: info->i = se3208_state->R[ 6]; break;
- case CPUINFO_INT_REGISTER + SE3208_R7: info->i = se3208_state->R[ 7]; break;
+ case CPUINFO_INT_SP: info->i = se3208_state->SP; break;
+ case CPUINFO_INT_REGISTER + SE3208_SR: info->i = se3208_state->SR; break;
+ case CPUINFO_INT_REGISTER + SE3208_ER: info->i = se3208_state->ER; break;
+ case CPUINFO_INT_REGISTER + SE3208_R0: info->i = se3208_state->R[ 0]; break;
+ case CPUINFO_INT_REGISTER + SE3208_R1: info->i = se3208_state->R[ 1]; break;
+ case CPUINFO_INT_REGISTER + SE3208_R2: info->i = se3208_state->R[ 2]; break;
+ case CPUINFO_INT_REGISTER + SE3208_R3: info->i = se3208_state->R[ 3]; break;
+ case CPUINFO_INT_REGISTER + SE3208_R4: info->i = se3208_state->R[ 4]; break;
+ case CPUINFO_INT_REGISTER + SE3208_R5: info->i = se3208_state->R[ 5]; break;
+ case CPUINFO_INT_REGISTER + SE3208_R6: info->i = se3208_state->R[ 6]; break;
+ case CPUINFO_INT_REGISTER + SE3208_R7: info->i = se3208_state->R[ 7]; 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(se3208); break;
- case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(se3208); break;
- case CPUINFO_FCT_RESET: info->reset = CPU_RESET_NAME(se3208); break;
- case CPUINFO_FCT_EXIT: info->exit = CPU_EXIT_NAME(se3208); break;
- case CPUINFO_FCT_EXECUTE: info->execute = CPU_EXECUTE_NAME(se3208);break;
- case CPUINFO_FCT_BURN: info->burn = NULL; break;
- case CPUINFO_FCT_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(se3208); break;
- case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &se3208_state->icount; break;
+ case CPUINFO_FCT_SET_INFO: info->setinfo = CPU_SET_INFO_NAME(se3208); break;
+ case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(se3208); break;
+ case CPUINFO_FCT_RESET: info->reset = CPU_RESET_NAME(se3208); break;
+ case CPUINFO_FCT_EXIT: info->exit = CPU_EXIT_NAME(se3208); break;
+ case CPUINFO_FCT_EXECUTE: info->execute = CPU_EXECUTE_NAME(se3208);break;
+ case CPUINFO_FCT_BURN: info->burn = NULL; break;
+ case CPUINFO_FCT_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(se3208); break;
+ case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &se3208_state->icount; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
- case CPUINFO_STR_NAME: strcpy(info->s, "SE3208"); break;
- case CPUINFO_STR_FAMILY: strcpy(info->s, "Advanced Digital Chips Inc."); break;
- case CPUINFO_STR_VERSION: strcpy(info->s, "1.00"); break;
- case CPUINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
- case CPUINFO_STR_CREDITS: strcpy(info->s, "Copyright Miguel Angel Horna, all rights reserved."); break;
+ case CPUINFO_STR_NAME: strcpy(info->s, "SE3208"); break;
+ case CPUINFO_STR_FAMILY: strcpy(info->s, "Advanced Digital Chips Inc."); break;
+ case CPUINFO_STR_VERSION: strcpy(info->s, "1.00"); break;
+ case CPUINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
+ case CPUINFO_STR_CREDITS: strcpy(info->s, "Copyright Miguel Angel Horna, all rights reserved."); break;
case CPUINFO_STR_FLAGS:
sprintf(info->s, "%c%c%c%c %c%c%c%c%c",
@@ -1920,19 +1920,19 @@ CPU_GET_INFO( se3208 )
break;
- case CPUINFO_STR_REGISTER + SE3208_PC: sprintf(info->s, "PC :%08X", se3208_state->PC); break;
- case CPUINFO_STR_REGISTER + SE3208_SR: sprintf(info->s, "SR :%08X", se3208_state->SR); break;
- case CPUINFO_STR_REGISTER + SE3208_ER: sprintf(info->s, "ER :%08X", se3208_state->ER); break;
- case CPUINFO_STR_REGISTER + SE3208_SP: sprintf(info->s, "SP :%08X", se3208_state->SP); break;
- case CPUINFO_STR_REGISTER + SE3208_R0: sprintf(info->s, "R0 :%08X", se3208_state->R[ 0]); break;
- case CPUINFO_STR_REGISTER + SE3208_R1: sprintf(info->s, "R1 :%08X", se3208_state->R[ 1]); break;
- case CPUINFO_STR_REGISTER + SE3208_R2: sprintf(info->s, "R2 :%08X", se3208_state->R[ 2]); break;
- case CPUINFO_STR_REGISTER + SE3208_R3: sprintf(info->s, "R3 :%08X", se3208_state->R[ 3]); break;
- case CPUINFO_STR_REGISTER + SE3208_R4: sprintf(info->s, "R4 :%08X", se3208_state->R[ 4]); break;
- case CPUINFO_STR_REGISTER + SE3208_R5: sprintf(info->s, "R5 :%08X", se3208_state->R[ 5]); break;
- case CPUINFO_STR_REGISTER + SE3208_R6: sprintf(info->s, "R6 :%08X", se3208_state->R[ 6]); break;
- case CPUINFO_STR_REGISTER + SE3208_R7: sprintf(info->s, "R7 :%08X", se3208_state->R[ 7]); break;
- case CPUINFO_STR_REGISTER + SE3208_PPC: sprintf(info->s, "PPC :%08X", se3208_state->PPC); break;
+ case CPUINFO_STR_REGISTER + SE3208_PC: sprintf(info->s, "PC :%08X", se3208_state->PC); break;
+ case CPUINFO_STR_REGISTER + SE3208_SR: sprintf(info->s, "SR :%08X", se3208_state->SR); break;
+ case CPUINFO_STR_REGISTER + SE3208_ER: sprintf(info->s, "ER :%08X", se3208_state->ER); break;
+ case CPUINFO_STR_REGISTER + SE3208_SP: sprintf(info->s, "SP :%08X", se3208_state->SP); break;
+ case CPUINFO_STR_REGISTER + SE3208_R0: sprintf(info->s, "R0 :%08X", se3208_state->R[ 0]); break;
+ case CPUINFO_STR_REGISTER + SE3208_R1: sprintf(info->s, "R1 :%08X", se3208_state->R[ 1]); break;
+ case CPUINFO_STR_REGISTER + SE3208_R2: sprintf(info->s, "R2 :%08X", se3208_state->R[ 2]); break;
+ case CPUINFO_STR_REGISTER + SE3208_R3: sprintf(info->s, "R3 :%08X", se3208_state->R[ 3]); break;
+ case CPUINFO_STR_REGISTER + SE3208_R4: sprintf(info->s, "R4 :%08X", se3208_state->R[ 4]); break;
+ case CPUINFO_STR_REGISTER + SE3208_R5: sprintf(info->s, "R5 :%08X", se3208_state->R[ 5]); break;
+ case CPUINFO_STR_REGISTER + SE3208_R6: sprintf(info->s, "R6 :%08X", se3208_state->R[ 6]); break;
+ case CPUINFO_STR_REGISTER + SE3208_R7: sprintf(info->s, "R7 :%08X", se3208_state->R[ 7]); break;
+ case CPUINFO_STR_REGISTER + SE3208_PPC: sprintf(info->s, "PPC :%08X", se3208_state->PPC); break;
}
}