m68k fix for non-68000 opcode 0x6fff (iq, if you have a cleaner solution feel free to change it)
This commit is contained in:
parent
f0ababe1ef
commit
1f2ee4ce23
|
@ -102,7 +102,7 @@ M68KMAKE_PROTOTYPE_FOOTER
|
||||||
|
|
||||||
|
|
||||||
/* Build the opcode handler table */
|
/* Build the opcode handler table */
|
||||||
void m68ki_build_opcode_table(void);
|
void m68ki_build_opcode_table(int is_000);
|
||||||
|
|
||||||
extern void (*m68ki_instruction_jump_table[0x10000])(void); /* opcode handler jump table */
|
extern void (*m68ki_instruction_jump_table[0x10000])(void); /* opcode handler jump table */
|
||||||
extern unsigned char m68ki_cycles[][0x10000];
|
extern unsigned char m68ki_cycles[][0x10000];
|
||||||
|
@ -162,7 +162,7 @@ static void m68k_66ff(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Build the opcode handler jump table */
|
/* Build the opcode handler jump table */
|
||||||
void m68ki_build_opcode_table(void)
|
void m68ki_build_opcode_table(int is_000)
|
||||||
{
|
{
|
||||||
opcode_handler_struct *ostruct;
|
opcode_handler_struct *ostruct;
|
||||||
int instr;
|
int instr;
|
||||||
|
@ -256,7 +256,7 @@ void m68ki_build_opcode_table(void)
|
||||||
ostruct++;
|
ostruct++;
|
||||||
}
|
}
|
||||||
|
|
||||||
m68ki_instruction_jump_table[0x66ff] = m68k_66ff; // hack
|
if (is_000) m68ki_instruction_jump_table[0x66ff] = m68k_66ff; // hack
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -607,7 +607,7 @@ void m68k_set_cpu_type(unsigned int cpu_type)
|
||||||
CYC_MOVEM_L = 3;
|
CYC_MOVEM_L = 3;
|
||||||
CYC_SHIFT = 1;
|
CYC_SHIFT = 1;
|
||||||
CYC_RESET = 132;
|
CYC_RESET = 132;
|
||||||
return;
|
break;
|
||||||
case M68K_CPU_TYPE_68008:
|
case M68K_CPU_TYPE_68008:
|
||||||
CPU_TYPE = CPU_TYPE_008;
|
CPU_TYPE = CPU_TYPE_008;
|
||||||
CPU_ADDRESS_MASK = 0x003fffff;
|
CPU_ADDRESS_MASK = 0x003fffff;
|
||||||
|
@ -623,7 +623,7 @@ void m68k_set_cpu_type(unsigned int cpu_type)
|
||||||
CYC_MOVEM_L = 3;
|
CYC_MOVEM_L = 3;
|
||||||
CYC_SHIFT = 1;
|
CYC_SHIFT = 1;
|
||||||
CYC_RESET = 132;
|
CYC_RESET = 132;
|
||||||
return;
|
break;
|
||||||
case M68K_CPU_TYPE_68010:
|
case M68K_CPU_TYPE_68010:
|
||||||
CPU_TYPE = CPU_TYPE_010;
|
CPU_TYPE = CPU_TYPE_010;
|
||||||
CPU_ADDRESS_MASK = 0x00ffffff;
|
CPU_ADDRESS_MASK = 0x00ffffff;
|
||||||
|
@ -639,7 +639,7 @@ void m68k_set_cpu_type(unsigned int cpu_type)
|
||||||
CYC_MOVEM_L = 3;
|
CYC_MOVEM_L = 3;
|
||||||
CYC_SHIFT = 1;
|
CYC_SHIFT = 1;
|
||||||
CYC_RESET = 130;
|
CYC_RESET = 130;
|
||||||
return;
|
break;
|
||||||
case M68K_CPU_TYPE_68EC020:
|
case M68K_CPU_TYPE_68EC020:
|
||||||
CPU_TYPE = CPU_TYPE_EC020;
|
CPU_TYPE = CPU_TYPE_EC020;
|
||||||
CPU_ADDRESS_MASK = 0x00ffffff;
|
CPU_ADDRESS_MASK = 0x00ffffff;
|
||||||
|
@ -655,7 +655,7 @@ void m68k_set_cpu_type(unsigned int cpu_type)
|
||||||
CYC_MOVEM_L = 2;
|
CYC_MOVEM_L = 2;
|
||||||
CYC_SHIFT = 0;
|
CYC_SHIFT = 0;
|
||||||
CYC_RESET = 518;
|
CYC_RESET = 518;
|
||||||
return;
|
break;
|
||||||
case M68K_CPU_TYPE_68020:
|
case M68K_CPU_TYPE_68020:
|
||||||
CPU_TYPE = CPU_TYPE_020;
|
CPU_TYPE = CPU_TYPE_020;
|
||||||
CPU_ADDRESS_MASK = 0xffffffff;
|
CPU_ADDRESS_MASK = 0xffffffff;
|
||||||
|
@ -671,8 +671,10 @@ void m68k_set_cpu_type(unsigned int cpu_type)
|
||||||
CYC_MOVEM_L = 2;
|
CYC_MOVEM_L = 2;
|
||||||
CYC_SHIFT = 0;
|
CYC_SHIFT = 0;
|
||||||
CYC_RESET = 518;
|
CYC_RESET = 518;
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m68ki_build_opcode_table(CPU_TYPE_IS_000(CPU_TYPE));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Execute some instructions until we use up num_cycles clock cycles */
|
/* Execute some instructions until we use up num_cycles clock cycles */
|
||||||
|
@ -785,7 +787,7 @@ void m68k_init(void)
|
||||||
/* The first call to this function initializes the opcode handler jump table */
|
/* The first call to this function initializes the opcode handler jump table */
|
||||||
if(!emulation_initialized)
|
if(!emulation_initialized)
|
||||||
{
|
{
|
||||||
m68ki_build_opcode_table();
|
m68ki_build_opcode_table(CPU_TYPE_IS_000(CPU_TYPE));
|
||||||
emulation_initialized = 1;
|
emulation_initialized = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue