Hang on, the 68k is big-endian --- I'm extracting words (and bytes) from longs
incorrectly.
This commit is contained in:
parent
2cf39be752
commit
4b26f75d23
|
@ -56,8 +56,8 @@
|
||||||
/* ======================================================================== */
|
/* ======================================================================== */
|
||||||
|
|
||||||
/* Turn ON if you want to use the following M68K variants */
|
/* Turn ON if you want to use the following M68K variants */
|
||||||
#define M68K_EMULATE_010 OPT_ON
|
#define M68K_EMULATE_010 OPT_OFF
|
||||||
#define M68K_EMULATE_EC020 OPT_ON
|
#define M68K_EMULATE_EC020 OPT_OFF
|
||||||
#define M68K_EMULATE_020 OPT_ON
|
#define M68K_EMULATE_020 OPT_ON
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,7 @@ unsigned int cpu_read_long(unsigned int address)
|
||||||
case 0x00: return INIT_SP;
|
case 0x00: return INIT_SP;
|
||||||
case 0x04: return INIT_PC;
|
case 0x04: return INIT_PC;
|
||||||
case 0x80: syscall(); return 0x10000;
|
case 0x80: syscall(); return 0x10000;
|
||||||
case 0x10000: return 0x4e73; /* rte */
|
case 0x10000: return 0x4e734e73; /* rte; rte */
|
||||||
case 0x10004: return 0;
|
case 0x10004: return 0;
|
||||||
default: return READ_LONG(g_ram, transform_address(address));
|
default: return READ_LONG(g_ram, transform_address(address));
|
||||||
}
|
}
|
||||||
|
@ -94,14 +94,14 @@ unsigned int cpu_read_long(unsigned int address)
|
||||||
unsigned int cpu_read_word(unsigned int address)
|
unsigned int cpu_read_word(unsigned int address)
|
||||||
{
|
{
|
||||||
unsigned int l = cpu_read_long(address & ~3);
|
unsigned int l = cpu_read_long(address & ~3);
|
||||||
l >>= (address & 2) * 8;
|
l >>= 16 - (address & 2)*8;
|
||||||
return l & 0xffff;
|
return l & 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int cpu_read_byte(unsigned int address)
|
unsigned int cpu_read_byte(unsigned int address)
|
||||||
{
|
{
|
||||||
unsigned int l = cpu_read_long(address & ~3);
|
unsigned int l = cpu_read_long(address & ~3);
|
||||||
l >>= (address & 3) * 8;
|
l >>= 24 - (address & 3)*8;
|
||||||
return l & 0xff;
|
return l & 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue