diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/devices/cpu/powerpc/ppcdrc.cpp | 7 | ||||
-rw-r--r-- | src/mame/drivers/fidel68k.cpp | 50 | ||||
-rw-r--r-- | src/mame/drivers/zwackery.cpp | 2 |
3 files changed, 38 insertions, 21 deletions
diff --git a/src/devices/cpu/powerpc/ppcdrc.cpp b/src/devices/cpu/powerpc/ppcdrc.cpp index 4ebf89a61f8..741e75f9cc2 100644 --- a/src/devices/cpu/powerpc/ppcdrc.cpp +++ b/src/devices/cpu/powerpc/ppcdrc.cpp @@ -1942,8 +1942,11 @@ void ppc_device::generate_branch(drcuml_block *block, compiler_state *compiler, } else { - generate_update_cycles(block, &compiler_temp, mem(srcptr), true); // <subtract cycles> - UML_HASHJMP(block, m_core->mode, mem(srcptr), *m_nocode); // hashjmp <mode>,<rsreg>,nocode + generate_update_cycles(block, &compiler_temp, mem(srcptr), true); // <subtract cycles> + + /* clear two LSBs of the target address to prevent branching to an invalid address */ + UML_AND(block, I0, mem(srcptr), 0xFFFFFFFC); // and i0, 0xFFFFFFFC + UML_HASHJMP(block, m_core->mode, I0, *m_nocode); // hashjmp <mode>,i0,nocode } /* update the label */ diff --git a/src/mame/drivers/fidel68k.cpp b/src/mame/drivers/fidel68k.cpp index 79e42b595fd..46f28ec73e8 100644 --- a/src/mame/drivers/fidel68k.cpp +++ b/src/mame/drivers/fidel68k.cpp @@ -11,7 +11,6 @@ such as Arena(in editmode). TODO: - - configurable RAM size - how does dual-CPU work? - USART is not emulated - V9(68030 @ 32MHz) is faster than V10(68040 @ 25MHz) but it should be the other @@ -57,10 +56,9 @@ Hardware info: - OKI M82C51A-2 USART, 4.9152MHz XTAL - other special: magnet sensors, external module slot, serial port -IRQ source is unknown. Several possibilities: -- NE555 timer IC -- MM/SN74HC4060 binary counter IC (near the M82C51A) -- one of the XTALs, plus divider of course +IRQ source is a 4,9152MHz quartz crystal (Y3) connected to a 74HC4060 (U8, +ripple counter/divider). From Q12 output (counter=8192) we obtain the IRQ signal +applied to IPL1 of 68000 (pin 24) 4,9152 MHz / 8192 = 600 Hz. The module slot pinout is different from SCC series. The data on those appears to be compatible with EAG though and will load fine with an adapter. @@ -158,6 +156,7 @@ B0000x-xxxxxx: see V7, -800000 #include "emu.h" #include "includes/fidelz80.h" #include "cpu/m68000/m68000.h" +#include "machine/ram.h" #include "machine/nvram.h" #include "sound/volt_reg.h" @@ -170,9 +169,12 @@ class fidel68k_state : public fidelz80base_state { public: fidel68k_state(const machine_config &mconfig, device_type type, const char *tag) - : fidelz80base_state(mconfig, type, tag) + : fidelz80base_state(mconfig, type, tag), + m_ram(*this, "ram") { } + optional_device<ram_device> m_ram; + TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(M68K_IRQ_2, ASSERT_LINE); } TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(M68K_IRQ_2, CLEAR_LINE); } @@ -180,6 +182,7 @@ public: DECLARE_WRITE8_MEMBER(fexcel68k_mux_w); // EAG(6114/6117) + DECLARE_DRIVER_INIT(eag); void eag_prepare_display(); DECLARE_READ8_MEMBER(eag_input1_r); DECLARE_WRITE8_MEMBER(eag_leds_w); @@ -289,10 +292,15 @@ ADDRESS_MAP_END // EAG +DRIVER_INIT_MEMBER(fidel68k_state, eag) +{ + // eag_map: DRAM slots at $200000-$2fffff - V1/V2: 128K, V3: 512K, V4: 1M + m_maincpu->space(AS_PROGRAM).install_ram(0x200000, 0x200000 + m_ram->size() - 1, m_ram->pointer()); +} + static ADDRESS_MAP_START( eag_map, AS_PROGRAM, 16, fidel68k_state ) AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_RANGE(0x104000, 0x107fff) AM_RAM - AM_RANGE(0x200000, 0x2fffff) AM_RAM // DRAM slots AM_RANGE(0x300000, 0x30000f) AM_MIRROR(0x000010) AM_READWRITE8(eag_input1_r, eag_leds_w, 0x00ff) AM_RANGE(0x300000, 0x30000f) AM_MIRROR(0x000010) AM_WRITE8(eag_7seg_w, 0xff00) AM_READNOP AM_RANGE(0x400000, 0x407fff) AM_READ8(eag_cart_r, 0xff00) @@ -575,6 +583,10 @@ static MACHINE_CONFIG_START( eag, fidel68k_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1)) MCFG_DEFAULT_LAYOUT(layout_fidel_eag_68k) + MCFG_RAM_ADD("ram") + MCFG_RAM_DEFAULT_SIZE("1M") + MCFG_RAM_EXTRA_OPTIONS("128K, 512K, 1M") + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("speaker") MCFG_SOUND_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) @@ -594,9 +606,11 @@ static MACHINE_CONFIG_DERIVED( eagv7, eag ) MCFG_CPU_REPLACE("maincpu", M68020, XTAL_20MHz) MCFG_CPU_PROGRAM_MAP(eagv7_map) MCFG_CPU_PERIODIC_INT_DRIVER(fidel68k_state, irq2_line_hold, XTAL_4_9152MHz/0x2000) // 600hz + + MCFG_RAM_REMOVE("ram") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( eagv9, eag ) +static MACHINE_CONFIG_DERIVED( eagv9, eagv7 ) /* basic machine hardware */ MCFG_CPU_REPLACE("maincpu", M68030, XTAL_32MHz) @@ -604,7 +618,7 @@ static MACHINE_CONFIG_DERIVED( eagv9, eag ) MCFG_CPU_PERIODIC_INT_DRIVER(fidel68k_state, irq2_line_hold, XTAL_4_9152MHz/0x2000) // 600hz MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( eagv10, eag ) +static MACHINE_CONFIG_DERIVED( eagv10, eagv7 ) /* basic machine hardware */ MCFG_CPU_REPLACE("maincpu", M68040, XTAL_25MHz) @@ -612,7 +626,7 @@ static MACHINE_CONFIG_DERIVED( eagv10, eag ) MCFG_CPU_PERIODIC_INT_DRIVER(fidel68k_state, irq2_line_hold, XTAL_4_9152MHz/0x2000) // 600hz MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( eagv11, eag ) +static MACHINE_CONFIG_DERIVED( eagv11, eagv7 ) /* basic machine hardware */ MCFG_CPU_REPLACE("maincpu", M68EC040, XTAL_36MHz*2*2) // wrong! should be M68EC060 @ 72MHz @@ -673,12 +687,12 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1987, fexcel68k, 0, 0, fexcel68k, fexcel68k, driver_device, 0, "Fidelity Electronics", "Excel 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ +CONS( 1987, fexcel68k, 0, 0, fexcel68k, fexcel68k, driver_device, 0, "Fidelity Electronics", "Excel 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1989, feagv2, 0, 0, eag, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // emulated as V4(1MB RAM) -CONS( 1989, feagv2a, feagv2, 0, eag, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // " -CONS( 1990, feagv7, feagv2, 0, eagv7, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-7)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1990, feagv9, feagv2, 0, eagv9, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-9)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1990, feagv10, feagv2, 0, eagv10, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 2002, feagv11, feagv2, 0, eagv11, eag, driver_device, 0, "hack (Wilfried Bucke)", "Elite Avant Garde (model 6117-11)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1989, feagv2, 0, 0, eag, eag, fidel68k_state, eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1989, feagv2a, feagv2, 0, eag, eag, fidel68k_state, eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, feagv7, feagv2, 0, eagv7, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-7)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, feagv9, feagv2, 0, eagv9, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-9)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, feagv10, feagv2, 0, eagv10, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 2002, feagv11, feagv2, 0, eagv11, eag, driver_device, 0, "hack (Wilfried Bucke)", "Elite Avant Garde (model 6117-11)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/zwackery.cpp b/src/mame/drivers/zwackery.cpp index 4a3d127582d..efb42e78cd7 100644 --- a/src/mame/drivers/zwackery.cpp +++ b/src/mame/drivers/zwackery.cpp @@ -1,4 +1,4 @@ -// license: BSD-3-Clause +// license: BSD-3-Clause // copyright-holders: Aaron Giles, Bryan McPhail /*************************************************************************** |