mirror of
https://github.com/holub/mame
synced 2025-04-25 17:56:43 +03:00
some mn10200 opcode fixes
This commit is contained in:
parent
96c9b7292d
commit
d7ec6074bb
@ -637,7 +637,7 @@ void mn10200_device::execute_run()
|
||||
case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17:
|
||||
case 0x18: case 0x19: case 0x1a: case 0x1b: case 0x1c: case 0x1d: case 0x1e: case 0x1f:
|
||||
m_cycles -= 1;
|
||||
mn102_write_byte(m_a[(opcode>>2)&3], (UINT8)m_d[opcode & 3]);
|
||||
mn102_write_byte(m_a[(opcode>>2)&3], (UINT8)m_d[opcode & 3]); // note: typo in manual
|
||||
m_pc += 1;
|
||||
break;
|
||||
|
||||
@ -750,7 +750,7 @@ void mn10200_device::execute_run()
|
||||
|
||||
// mov dn, (imm16)
|
||||
case 0xc0: case 0xc1: case 0xc2: case 0xc3:
|
||||
m_cycles -= 2;
|
||||
m_cycles -= 1;
|
||||
mn102_write_word(mn102_read_word(m_pc+1), (UINT16)m_d[opcode & 3]);
|
||||
m_pc += 3;
|
||||
break;
|
||||
@ -771,7 +771,7 @@ void mn10200_device::execute_run()
|
||||
|
||||
// movbu (abs16), dn
|
||||
case 0xcc: case 0xcd: case 0xce: case 0xcf:
|
||||
m_cycles -= 2;
|
||||
m_cycles -= 1;
|
||||
m_d[opcode & 3] = mn102_read_byte(mn102_read_word(m_pc+1));
|
||||
m_pc += 3;
|
||||
break;
|
||||
@ -1065,7 +1065,7 @@ void mn10200_device::execute_run()
|
||||
// mov (di, an), dm
|
||||
case 1:
|
||||
m_cycles -= 2;
|
||||
m_d[opcode & 3] = mn102_read_word((m_a[(opcode>>2) & 3] + m_d[(opcode>>4) & 3]) & 0xffffff);
|
||||
m_d[opcode & 3] = (INT16)mn102_read_word((m_a[(opcode>>2) & 3] + m_d[(opcode>>4) & 3]) & 0xffffff);
|
||||
m_pc += 2;
|
||||
break;
|
||||
|
||||
@ -1375,8 +1375,8 @@ void mn10200_device::execute_run()
|
||||
|
||||
// mov psw, dn
|
||||
case 0xf0: case 0xf1: case 0xf2: case 0xf3:
|
||||
m_cycles -= 3;
|
||||
m_d[(opcode>>2) & 3] = m_psw;
|
||||
m_cycles -= 2;
|
||||
m_d[opcode & 3] = m_psw;
|
||||
m_pc += 2;
|
||||
break;
|
||||
|
||||
@ -1570,7 +1570,6 @@ void mn10200_device::execute_run()
|
||||
do_jsr(m_pc+5+r24u(m_pc+2), m_pc+5);
|
||||
break;
|
||||
|
||||
|
||||
// mov (abs24, an), am
|
||||
case 0xf0: case 0xf1: case 0xf2: case 0xf3: case 0xf4: case 0xf5: case 0xf6: case 0xf7:
|
||||
case 0xf8: case 0xf9: case 0xfa: case 0xfb: case 0xfc: case 0xfd: case 0xfe: case 0xff:
|
||||
@ -1612,7 +1611,7 @@ void mn10200_device::execute_run()
|
||||
// addnf imm8, an
|
||||
case 0x0c: case 0x0d: case 0x0e: case 0x0f:
|
||||
m_cycles -= 2;
|
||||
m_a[opcode & 3] = m_a[opcode & 3] +(INT8)mn102_read_byte(m_pc+2);
|
||||
m_a[opcode & 3] = m_a[opcode & 3] + (INT8)mn102_read_byte(m_pc+2);
|
||||
m_pc += 3;
|
||||
break;
|
||||
|
||||
@ -1766,7 +1765,6 @@ void mn10200_device::execute_run()
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
// bnc label8
|
||||
case 0xfe:
|
||||
if(!(m_psw & 0x02)) {
|
||||
@ -1845,7 +1843,7 @@ void mn10200_device::execute_run()
|
||||
|
||||
// or imm16, dn
|
||||
case 0x40: case 0x41: case 0x42: case 0x43:
|
||||
m_cycles -= 3;
|
||||
m_cycles -= 2;
|
||||
test_nz16(m_d[opcode & 3] |= mn102_read_word(m_pc+2));
|
||||
m_pc += 4;
|
||||
break;
|
||||
@ -1876,11 +1874,10 @@ void mn10200_device::execute_run()
|
||||
case 0xc0: case 0xc1: case 0xc2: case 0xc3: case 0xc4: case 0xc5: case 0xc6: case 0xc7:
|
||||
case 0xc8: case 0xc9: case 0xca: case 0xcb: case 0xcc: case 0xcd: case 0xce: case 0xcf:
|
||||
m_cycles -= 2;
|
||||
m_d[opcode & 3] = (INT16)mn102_read_word((m_a[(opcode>>2) & 3] + (INT16)mn102_read_byte(m_pc+2)) & 0xffffff) & 0xffffff;
|
||||
m_d[opcode & 3] = (INT16)mn102_read_word((m_a[(opcode>>2) & 3] + (INT16)mn102_read_word(m_pc+2)) & 0xffffff);
|
||||
m_pc += 4;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
unemul();
|
||||
break;
|
||||
|
@ -103,15 +103,15 @@ WRITE8_MEMBER(taito_zoom_device::tms_ctrl_w)
|
||||
}
|
||||
|
||||
|
||||
static ADDRESS_MAP_START(taitozoom_map, AS_PROGRAM, 16, driver_device )
|
||||
ADDRESS_MAP_START( taitozoom_mn_map, AS_PROGRAM, 16, driver_device )
|
||||
AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("mn10200", 0)
|
||||
AM_RANGE(0x400000, 0x40ffff) AM_RAM
|
||||
AM_RANGE(0x800000, 0x800fff) AM_DEVREADWRITE("zsg2", zsg2_device, read, write)
|
||||
AM_RANGE(0xe00000, 0xe000ff) AM_DEVREADWRITE8("taito_zoom", taito_zoom_device, shared_ram_r, shared_ram_w, 0xffff) // M66220FP for comms with maincpu
|
||||
AM_RANGE(0x800000, 0x8007ff) AM_DEVREADWRITE("zsg2", zsg2_device, read, write)
|
||||
AM_RANGE(0xc00000, 0xc00001) AM_RAM // TMS57002 comms
|
||||
AM_RANGE(0xe00000, 0xe000ff) AM_DEVREADWRITE8("taito_zoom", taito_zoom_device, shared_ram_r, shared_ram_w, 0xffff) // M66220FP for comms with maincpu
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(taitozoom_io_map, AS_IO, 8, driver_device )
|
||||
static ADDRESS_MAP_START( taitozoom_mn_io_map, AS_IO, 8, driver_device )
|
||||
AM_RANGE(MN10200_PORT1, MN10200_PORT1) AM_DEVREADWRITE("taito_zoom", taito_zoom_device, tms_ctrl_r, tms_ctrl_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -156,8 +156,8 @@ MACHINE_CONFIG_FRAGMENT( taito_zoom_sound )
|
||||
/* basic machine hardware */
|
||||
MCFG_TAITO_ZOOM_ADD("taito_zoom")
|
||||
MCFG_CPU_ADD("mn10200", MN10200, XTAL_25MHz/2)
|
||||
MCFG_CPU_PROGRAM_MAP(taitozoom_map)
|
||||
MCFG_CPU_IO_MAP(taitozoom_io_map)
|
||||
MCFG_CPU_PROGRAM_MAP(taitozoom_mn_map)
|
||||
MCFG_CPU_IO_MAP(taitozoom_mn_io_map)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(60000))
|
||||
|
||||
|
@ -2,6 +2,8 @@
|
||||
#include "cpu/tms57002/tms57002.h"
|
||||
#include "sound/zsg2.h"
|
||||
|
||||
ADDRESS_MAP_EXTERN(taitozoom_mn_map, 16);
|
||||
|
||||
class taito_zoom_device : public device_t
|
||||
|
||||
{
|
||||
|
@ -626,6 +626,11 @@ static ADDRESS_MAP_START( taitogn_mp_map, AS_PROGRAM, 32, taitogn_state )
|
||||
AM_IMPORT_FROM(taitogn_map)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( taitogn_mn_map, AS_PROGRAM, 16, taitogn_state )
|
||||
AM_RANGE(0x080000, 0x0fffff) AM_DEVREAD("pgmflash", intelfsh16_device, read)
|
||||
AM_IMPORT_FROM( taitozoom_mn_map )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
SLOT_INTERFACE_START(slot_ataflash)
|
||||
SLOT_INTERFACE("ataflash", ATA_FLASH_PCCARD)
|
||||
SLOT_INTERFACE_END
|
||||
@ -679,6 +684,9 @@ static MACHINE_CONFIG_START( coh3002t, taitogn_state )
|
||||
MCFG_ADDRESS_MAP_BANK_STRIDE(0x2000000)
|
||||
|
||||
MCFG_FRAGMENT_ADD( taito_zoom_sound )
|
||||
MCFG_CPU_MODIFY("mn10200")
|
||||
MCFG_CPU_PROGRAM_MAP(taitogn_mn_map)
|
||||
|
||||
MCFG_SOUND_REPLACE("zsg2", ZSG2, XTAL_25MHz/2)
|
||||
MCFG_ZSG2_EXT_READ_HANDLER(READ32(taitogn_state, zsg2_ext_r))
|
||||
|
||||
@ -814,7 +822,7 @@ INPUT_PORTS_END
|
||||
ROM_LOAD16_WORD_BIOS(0, "flash.u30", 0x000000, 0x200000, CRC(c48c8236) SHA1(c6dad60266ce2ff635696bc0d91903c543273559) ) \
|
||||
ROM_SYSTEM_BIOS( 1, "v2", "G-NET Bios v2" ) \
|
||||
ROM_LOAD16_WORD_BIOS(1, "flashv2.u30", 0x000000, 0x200000, CRC(CAE462D3) SHA1(f1b10846a8423d9fe021191c5876190857c3d2a4) ) \
|
||||
ROM_REGION32_LE( 0x80000, "mn10200", 0) \
|
||||
ROM_REGION( 0x80000, "mn10200", 0) \
|
||||
ROM_FILL( 0, 0x80000, 0xff) \
|
||||
ROM_REGION32_LE( 0x600000, "zsg2", 0) \
|
||||
ROM_FILL( 0, 0x600000, 0xff)
|
||||
|
Loading…
Reference in New Issue
Block a user