diff options
| author | 2013-04-10 11:31:17 +0000 | |
|---|---|---|
| committer | 2013-04-10 11:31:17 +0000 | |
| commit | 10d146a6be20998acfca4e5533c8fe35f50ada9e (patch) | |
| tree | 963d8ffd698ed08017935ac958a333e7b8a20290 /src/mess/drivers | |
| parent | a77e9c9f62b001c1519f8a3262524c5347f78f36 (diff) | |
changed machine().device("maincpu") with m_maincpu in mess tree part (nw)
Diffstat (limited to 'src/mess/drivers')
181 files changed, 557 insertions, 372 deletions
diff --git a/src/mess/drivers/4004clk.c b/src/mess/drivers/4004clk.c index 9875212e5d8..099f95f7ec7 100644 --- a/src/mess/drivers/4004clk.c +++ b/src/mess/drivers/4004clk.c @@ -130,7 +130,7 @@ INPUT_PORTS_END TIMER_DEVICE_CALLBACK_MEMBER(nixieclock_state::timer_callback) { - i4004_set_test(machine().device("maincpu"),m_timer); + i4004_set_test(m_maincpu,m_timer); m_timer^=1; } diff --git a/src/mess/drivers/a2600.c b/src/mess/drivers/a2600.c index 2c690f2a3c5..d3f62cb1b74 100644 --- a/src/mess/drivers/a2600.c +++ b/src/mess/drivers/a2600.c @@ -53,7 +53,8 @@ public: m_riot_ram(*this, "riot_ram"), m_banking_mode(0xff), m_joy1(*this, CONTROL1_TAG), - m_joy2(*this, CONTROL2_TAG) { } + m_joy2(*this, CONTROL2_TAG) , + m_maincpu(*this, "maincpu") { } dpc_t m_dpc; memory_region* m_extra_RAM; @@ -167,6 +168,7 @@ protected: int detect_32K_mode3F(); int detect_super_chip(); unsigned long detect_2600controllers(); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/a51xx.c b/src/mess/drivers/a51xx.c index c6213339315..a0a2646b715 100644 --- a/src/mess/drivers/a51xx.c +++ b/src/mess/drivers/a51xx.c @@ -17,7 +17,8 @@ class a51xx_state : public driver_device { public: a51xx_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); virtual void video_start(); @@ -25,6 +26,7 @@ public: DECLARE_VIDEO_START(a5130); UINT32 screen_update_a5120(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_a5130(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/a6809.c b/src/mess/drivers/a6809.c index cc04b645fbe..403ee8a9437 100644 --- a/src/mess/drivers/a6809.c +++ b/src/mess/drivers/a6809.c @@ -24,7 +24,8 @@ public: : driver_device(mconfig, type, tag), m_via(*this, "via"), m_videoram(*this, "videoram") - { } + , + m_maincpu(*this, "maincpu") { } required_device<via6522_device> m_via; required_shared_ptr<UINT8> m_videoram; @@ -35,6 +36,7 @@ public: UINT8 m_keydata; virtual void machine_reset(); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/a7000.c b/src/mess/drivers/a7000.c index 169c8a1312d..8d7e490e20c 100644 --- a/src/mess/drivers/a7000.c +++ b/src/mess/drivers/a7000.c @@ -576,7 +576,7 @@ TIMER_CALLBACK_MEMBER(a7000_state::IOMD_timer0_callback) m_IRQ_status_A|=0x20; if(m_IRQ_mask_A&0x20) { - generic_pulse_irq_line(machine().device("maincpu")->execute(), ARM7_IRQ_LINE,1); + generic_pulse_irq_line(m_maincpu, ARM7_IRQ_LINE,1); } } @@ -585,7 +585,7 @@ TIMER_CALLBACK_MEMBER(a7000_state::IOMD_timer1_callback) m_IRQ_status_A|=0x40; if(m_IRQ_mask_A&0x40) { - generic_pulse_irq_line(machine().device("maincpu")->execute(), ARM7_IRQ_LINE,1); + generic_pulse_irq_line(m_maincpu, ARM7_IRQ_LINE,1); } } @@ -594,7 +594,7 @@ TIMER_CALLBACK_MEMBER(a7000_state::flyback_timer_callback) m_IRQ_status_A|=0x08; if(m_IRQ_mask_A&0x08) { - generic_pulse_irq_line(machine().device("maincpu")->execute(), ARM7_IRQ_LINE,1); + generic_pulse_irq_line(m_maincpu, ARM7_IRQ_LINE,1); } m_flyback_timer->adjust(machine().primary_screen->time_until_pos(m_vidc20_vert_reg[VDER])); diff --git a/src/mess/drivers/a7150.c b/src/mess/drivers/a7150.c index adf62789a01..96287e5164c 100644 --- a/src/mess/drivers/a7150.c +++ b/src/mess/drivers/a7150.c @@ -16,11 +16,13 @@ class a7150_state : public driver_device { public: a7150_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_a7150(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/altair.c b/src/mess/drivers/altair.c index f256758f46a..f781e7a30fc 100644 --- a/src/mess/drivers/altair.c +++ b/src/mess/drivers/altair.c @@ -106,7 +106,7 @@ QUICKLOAD_LOAD(altair) void altair_state::machine_reset() { // Set startup addess done by turn-key - machine().device("maincpu")->state().set_state_int(I8085_PC, 0xFD00); + m_maincpu->set_state_int(I8085_PC, 0xFD00); m_term_data = 0; } diff --git a/src/mess/drivers/amico2k.c b/src/mess/drivers/amico2k.c index 2c88725215a..b63190afda8 100644 --- a/src/mess/drivers/amico2k.c +++ b/src/mess/drivers/amico2k.c @@ -38,7 +38,8 @@ class amico2k_state : public driver_device { public: amico2k_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } void machine_start(); @@ -53,6 +54,7 @@ public: // timers emu_timer *m_led_refresh_timer; TIMER_CALLBACK_MEMBER(led_refresh); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/apc.c b/src/mess/drivers/apc.c index c9a67697808..02184214f20 100644 --- a/src/mess/drivers/apc.c +++ b/src/mess/drivers/apc.c @@ -754,7 +754,7 @@ IRQ_CALLBACK_MEMBER(apc_state::irq_callback) void apc_state::machine_start() { - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(apc_state::irq_callback),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(apc_state::irq_callback),this)); m_fdc->set_rate(500000); m_fdc->setup_intrq_cb(upd765a_device::line_cb(FUNC(apc_state::fdc_irq), this)); @@ -887,7 +887,7 @@ WRITE_LINE_MEMBER(apc_state::apc_master_set_int_line) { //printf("%02x\n",interrupt); // printf("irq %d\n",state); - machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); + m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } READ8_MEMBER(apc_state::get_slave_ack) diff --git a/src/mess/drivers/apexc.c b/src/mess/drivers/apexc.c index cd33ba698cc..ecd0059c356 100644 --- a/src/mess/drivers/apexc.c +++ b/src/mess/drivers/apexc.c @@ -14,7 +14,8 @@ class apexc_state : public driver_device { public: apexc_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } UINT32 m_panel_data_reg; /* value of a data register on the control panel which can be edited - the existence of this register is a personnal @@ -41,6 +42,7 @@ public: void apexc_teletyper_init(); void apexc_teletyper_linefeed(); void apexc_teletyper_putchar(int character); + required_device<cpu_device> m_maincpu; }; void apexc_state::machine_start() diff --git a/src/mess/drivers/applix.c b/src/mess/drivers/applix.c index 223264cd6ed..0c2b7c2d4fd 100644 --- a/src/mess/drivers/applix.c +++ b/src/mess/drivers/applix.c @@ -109,7 +109,7 @@ void applix_state::machine_reset() { UINT8* RAM = memregion("maincpu")->base(); memcpy(m_base, RAM+0x500000, 16); - machine().device("maincpu")->reset(); + m_maincpu->reset(); } diff --git a/src/mess/drivers/astrocde.c b/src/mess/drivers/astrocde.c index da7009282ef..d9672114e4a 100644 --- a/src/mess/drivers/astrocde.c +++ b/src/mess/drivers/astrocde.c @@ -100,7 +100,7 @@ ADDRESS_MAP_END INPUT_CHANGED_MEMBER(astrocde_mess_state::set_write_protect) // run when RAM expansion write protect switch is changed { int ram_expansion_installed = 0, write_protect_on = 0, expansion_ram_start = 0, expansion_ram_end = 0, shadow_ram_end = 0; - address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &space = m_maincpu->space(AS_PROGRAM); UINT8 *expram = machine().device<ram_device>("ram_tag")->pointer(); get_ram_expansion_settings(ram_expansion_installed, write_protect_on, expansion_ram_start, expansion_ram_end, shadow_ram_end); // passing by reference @@ -320,7 +320,7 @@ DRIVER_INIT_MEMBER(astrocde_state,astrocde) MACHINE_RESET_MEMBER(astrocde_mess_state, astrocde) { int ram_expansion_installed = 0, write_protect_on = 0, expansion_ram_start = 0, expansion_ram_end = 0, shadow_ram_end = 0; - address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &space = m_maincpu->space(AS_PROGRAM); UINT8 *expram = machine().device<ram_device>("ram_tag")->pointer(); space.unmap_readwrite(0x5000, 0xffff); // unmap any previously installed expansion RAM diff --git a/src/mess/drivers/b16.c b/src/mess/drivers/b16.c index ab8783579cb..dcae69fd6e5 100644 --- a/src/mess/drivers/b16.c +++ b/src/mess/drivers/b16.c @@ -23,7 +23,8 @@ class b16_state : public driver_device public: b16_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_vram(*this, "vram"){ } + m_vram(*this, "vram"), + m_maincpu(*this, "maincpu") { } UINT8 *m_char_rom; required_shared_ptr<UINT16> m_vram; @@ -43,6 +44,7 @@ public: i8237_device *m_dma8237; virtual void machine_start(); virtual void machine_reset(); + required_device<cpu_device> m_maincpu; }; #define mc6845_h_char_total (m_crtc_vreg[0]) diff --git a/src/mess/drivers/babbage.c b/src/mess/drivers/babbage.c index d2bdf2dbd9c..2f747339105 100644 --- a/src/mess/drivers/babbage.c +++ b/src/mess/drivers/babbage.c @@ -184,7 +184,7 @@ static Z80PIO_INTERFACE( babbage_z80pio1_intf ) READ8_MEMBER( babbage_state::pio2_a_r ) { - machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE); // release interrupt + m_maincpu->set_input_line(0, CLEAR_LINE); // release interrupt return m_key; } diff --git a/src/mess/drivers/basic52.c b/src/mess/drivers/basic52.c index 1dcfee22ab1..a2167dd83f9 100644 --- a/src/mess/drivers/basic52.c +++ b/src/mess/drivers/basic52.c @@ -102,8 +102,8 @@ void basic52_state::machine_reset() WRITE8_MEMBER( basic52_state::kbd_put ) { - machine().device("maincpu")->execute().set_input_line(MCS51_RX_LINE, ASSERT_LINE); - machine().device("maincpu")->execute().set_input_line(MCS51_RX_LINE, CLEAR_LINE); + m_maincpu->set_input_line(MCS51_RX_LINE, ASSERT_LINE); + m_maincpu->set_input_line(MCS51_RX_LINE, CLEAR_LINE); m_term_data = data; } diff --git a/src/mess/drivers/bbcbc.c b/src/mess/drivers/bbcbc.c index d216219628a..1b35a461ae1 100644 --- a/src/mess/drivers/bbcbc.c +++ b/src/mess/drivers/bbcbc.c @@ -103,7 +103,7 @@ INPUT_PORTS_END WRITE_LINE_MEMBER(bbcbc_state::tms_interrupt) { - machine().device("maincpu")->execute().set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE); } static TMS9928A_INTERFACE(tms9129_interface) diff --git a/src/mess/drivers/besta.c b/src/mess/drivers/besta.c index ab3c1765959..03e3c47f769 100644 --- a/src/mess/drivers/besta.c +++ b/src/mess/drivers/besta.c @@ -121,7 +121,7 @@ void besta_state::machine_reset() memset(m_mpcc_regs, sizeof(m_mpcc_regs), 0); // should initialize to defined values m_mpcc_regs[8] = 0x80; // always ready to transmit - machine().device("maincpu")->reset(); + m_maincpu->reset(); } static GENERIC_TERMINAL_INTERFACE( terminal_intf ) diff --git a/src/mess/drivers/binbug.c b/src/mess/drivers/binbug.c index e6f6b051b2d..a0ea19a1400 100644 --- a/src/mess/drivers/binbug.c +++ b/src/mess/drivers/binbug.c @@ -64,7 +64,8 @@ public: m_keyboard(*this, KEYBOARD_TAG), m_cass(*this, CASSETTE_TAG), m_p_videoram(*this, "videoram"), - m_p_attribram(*this, "attribram") { } + m_p_attribram(*this, "attribram") , + m_maincpu(*this, "maincpu") { } DECLARE_WRITE8_MEMBER(binbug_ctrl_w); DECLARE_READ8_MEMBER(binbug_serial_r); @@ -77,6 +78,7 @@ public: required_device<cassette_image_device> m_cass; required_shared_ptr<const UINT8> m_p_videoram; required_shared_ptr<const UINT8> m_p_attribram; + required_device<cpu_device> m_maincpu; }; WRITE8_MEMBER( binbug_state::binbug_ctrl_w ) diff --git a/src/mess/drivers/bml3.c b/src/mess/drivers/bml3.c index 512094aa9c3..5bcfaf4090d 100644 --- a/src/mess/drivers/bml3.c +++ b/src/mess/drivers/bml3.c @@ -595,7 +595,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(bml3_state::keyboard_callback) { m_keyb_press = scancode; m_keyb_press_flag = 1; - machine().device("maincpu")->execute().set_input_line(M6809_IRQ_LINE, HOLD_LINE); + m_maincpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE); return; } } @@ -608,7 +608,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(bml3_state::keyboard_callback) #if 0 INTERRUPT_GEN_MEMBER(bml3_state::bml3_irq) { - machine().device("maincpu")->execute().set_input_line(M6809_IRQ_LINE, HOLD_LINE); + m_maincpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE); } #endif diff --git a/src/mess/drivers/busicom.c b/src/mess/drivers/busicom.c index 24b35c68e1b..3e97d142934 100644 --- a/src/mess/drivers/busicom.c +++ b/src/mess/drivers/busicom.c @@ -182,7 +182,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(busicom_state::timer_callback) m_timer ^=1; if (m_timer==1) m_drum_index++; if (m_drum_index==13) m_drum_index=0; - i4004_set_test(machine().device("maincpu"),m_timer); + i4004_set_test(m_maincpu,m_timer); } diff --git a/src/mess/drivers/c900.c b/src/mess/drivers/c900.c index 244408cefe0..af25ae445ff 100644 --- a/src/mess/drivers/c900.c +++ b/src/mess/drivers/c900.c @@ -16,9 +16,11 @@ class c900_state : public driver_device { public: c900_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; static ADDRESS_MAP_START(c900_mem, AS_PROGRAM, 16, c900_state) diff --git a/src/mess/drivers/camplynx.c b/src/mess/drivers/camplynx.c index dde97451758..3b66b6f40aa 100644 --- a/src/mess/drivers/camplynx.c +++ b/src/mess/drivers/camplynx.c @@ -353,7 +353,7 @@ MACHINE_RESET_MEMBER(camplynx_state,lynx128k) WRITE8_MEMBER( camplynx_state::lynx128k_irq ) { - machine().device("maincpu")->execute().set_input_line(0, data); + m_maincpu->set_input_line(0, data); } diff --git a/src/mess/drivers/casloopy.c b/src/mess/drivers/casloopy.c index c6ef5b79d1a..ebaf2965e7a 100644 --- a/src/mess/drivers/casloopy.c +++ b/src/mess/drivers/casloopy.c @@ -160,7 +160,8 @@ public: : driver_device(mconfig, type, tag), m_bios_rom(*this, "bios_rom"), m_vregs(*this, "vregs") - { } + , + m_maincpu(*this, "maincpu") { } required_shared_ptr<UINT32> m_bios_rom; required_shared_ptr<UINT32> m_vregs; @@ -184,6 +185,7 @@ public: DECLARE_WRITE16_MEMBER(sh7021_w); DECLARE_READ8_MEMBER(casloopy_bitmap_r); DECLARE_WRITE8_MEMBER(casloopy_bitmap_w); + required_device<cpu_device> m_maincpu; }; @@ -439,7 +441,7 @@ void casloopy_state::machine_start() void casloopy_state::machine_reset() { - //machine().device("maincpu")->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE); //halt the CPU until we find enough data to proceed + //m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); //halt the CPU until we find enough data to proceed } diff --git a/src/mess/drivers/cat.c b/src/mess/drivers/cat.c index 17d5b15681f..080447d1fe9 100644 --- a/src/mess/drivers/cat.c +++ b/src/mess/drivers/cat.c @@ -812,12 +812,12 @@ TIMER_CALLBACK_MEMBER(cat_state::counter_6ms_callback) // is there some way to 'strobe' the duart to tell it that its input ports just changed? m_duart_inp ^= 0x04; m_6ms_counter++; - machine().device("maincpu")->execute().set_input_line(M68K_IRQ_1, ASSERT_LINE); // hack until duart ints work; as of march 2013 they do not work correctly here (they fire at the wrong rate) + m_maincpu->set_input_line(M68K_IRQ_1, ASSERT_LINE); // hack until duart ints work; as of march 2013 they do not work correctly here (they fire at the wrong rate) } IRQ_CALLBACK_MEMBER(cat_state::cat_int_ack) { - machine().device("maincpu")->execute().set_input_line(M68K_IRQ_1,CLEAR_LINE); + m_maincpu->set_input_line(M68K_IRQ_1,CLEAR_LINE); return M68K_INT_ACK_AUTOVECTOR; } @@ -833,7 +833,7 @@ MACHINE_START_MEMBER(cat_state,cat) MACHINE_RESET_MEMBER(cat_state,cat) { - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(cat_state::cat_int_ack),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(cat_state::cat_int_ack),this)); m_duart_inp = 0; m_6ms_counter = 0; m_floppy_control = 0; @@ -873,7 +873,7 @@ UINT32 cat_state::screen_update_cat(screen_device &screen, bitmap_ind16 &bitmap, TIMER_CALLBACK_MEMBER(cat_state::swyft_reset) { - memset(machine().device("maincpu")->memory().space(AS_PROGRAM).get_read_ptr(0xe2341), 0xff, 1); + memset(m_maincpu->space(AS_PROGRAM).get_read_ptr(0xe2341), 0xff, 1); } MACHINE_START_MEMBER(cat_state,swyft) @@ -921,7 +921,7 @@ static void duart_irq_handler(device_t *device, int state, UINT8 vector) #ifdef DEBUG_DUART_IRQ_HANDLER fprintf(stderr, "Duart IRQ handler called: state: %02X, vector: %06X\n", state, vector); #endif - //device->machine().device("maincpu")->execute().set_input_line_and_vector(M68K_IRQ_1, state, vector); + //device->m_maincpu->set_input_line_and_vector(M68K_IRQ_1, state, vector); } static void duart_tx(device_t *device, int channel, UINT8 data) diff --git a/src/mess/drivers/cfx9850.c b/src/mess/drivers/cfx9850.c index 56d6c7b30bc..accdb6f0b09 100644 --- a/src/mess/drivers/cfx9850.c +++ b/src/mess/drivers/cfx9850.c @@ -39,7 +39,8 @@ public: m_ko9(*this, "KO9"), m_ko10(*this, "KO10"), m_ko11(*this, "KO11"), - m_ko12(*this, "KO12") { } + m_ko12(*this, "KO12") , + m_maincpu(*this, "maincpu") { } DECLARE_WRITE8_MEMBER(cfx9850_kol_w); DECLARE_WRITE8_MEMBER(cfx9850_koh_w); @@ -64,6 +65,7 @@ protected: required_ioport m_ko10; required_ioport m_ko11; required_ioport m_ko12; + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/chaos.c b/src/mess/drivers/chaos.c index e16e914263a..e348914bfba 100644 --- a/src/mess/drivers/chaos.c +++ b/src/mess/drivers/chaos.c @@ -38,7 +38,8 @@ public: chaos_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_terminal(*this, TERMINAL_TAG), - m_p_ram(*this, "p_ram") { } + m_p_ram(*this, "p_ram") , + m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER(port1e_r); DECLARE_WRITE8_MEMBER(port1f_w); @@ -50,6 +51,7 @@ public: virtual void machine_reset(); required_device<generic_terminal_device> m_terminal; required_shared_ptr<UINT8> m_p_ram; + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/chessmst.c b/src/mess/drivers/chessmst.c index 263abdc8433..5ded13b966c 100644 --- a/src/mess/drivers/chessmst.c +++ b/src/mess/drivers/chessmst.c @@ -22,7 +22,8 @@ public: chessmst_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_speaker(*this, SPEAKER_TAG) - { } + , + m_maincpu(*this, "maincpu") { } required_device<speaker_sound_device> m_speaker; @@ -37,6 +38,7 @@ public: DECLARE_READ8_MEMBER( pio2_port_a_r ); DECLARE_WRITE8_MEMBER( pio2_port_b_w ); DECLARE_INPUT_CHANGED_MEMBER(chessmst_sensor); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/chesstrv.c b/src/mess/drivers/chesstrv.c index ca8018b485c..fe85b16f21b 100644 --- a/src/mess/drivers/chesstrv.c +++ b/src/mess/drivers/chesstrv.c @@ -17,7 +17,8 @@ class chesstrv_state : public driver_device { public: chesstrv_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_start(); @@ -35,6 +36,7 @@ public: UINT8 *m_ram; UINT8 m_matrix; //TIMER_DEVICE_CALLBACK_MEMBER(borisdpl_timer_interrupt); + required_device<cpu_device> m_maincpu; }; WRITE8_MEMBER( chesstrv_state::ram_addr_w ) @@ -197,7 +199,7 @@ INPUT_PORTS_END /* TIMER_DEVICE_CALLBACK_MEMBER(chesstrv_state::borisdpl_timer_interrupt) { - machine().device("maincpu")->execute().set_input_line_and_vector(F8_INPUT_LINE_INT_REQ, HOLD_LINE, 0x20); + m_maincpu->set_input_line_and_vector(F8_INPUT_LINE_INT_REQ, HOLD_LINE, 0x20); } */ diff --git a/src/mess/drivers/clcd.c b/src/mess/drivers/clcd.c index 8e72f496be6..9c6c638a6fa 100644 --- a/src/mess/drivers/clcd.c +++ b/src/mess/drivers/clcd.c @@ -46,7 +46,8 @@ public: m_col6(*this,"COL6"), m_col7(*this,"COL7"), m_special(*this,"SPECIAL") - { + , + m_maincpu(*this, "maincpu") { } TILE_GET_INFO_MEMBER(get_clcd_tilemap_tile_info) @@ -247,6 +248,7 @@ private: required_ioport m_col6; required_ioport m_col7; required_ioport m_special; + required_device<cpu_device> m_maincpu; }; static ADDRESS_MAP_START( clcd_mem, AS_PROGRAM, 8, clcd_state ) diff --git a/src/mess/drivers/cm1800.c b/src/mess/drivers/cm1800.c index 950388561bf..ab6b8dcf4fb 100644 --- a/src/mess/drivers/cm1800.c +++ b/src/mess/drivers/cm1800.c @@ -40,7 +40,8 @@ class cm1800_state : public driver_device public: cm1800_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_terminal(*this, TERMINAL_TAG) { } + m_terminal(*this, TERMINAL_TAG) , + m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER( term_status_r ); DECLARE_READ8_MEMBER( term_r ); @@ -49,6 +50,7 @@ public: required_device<generic_terminal_device> m_terminal; virtual void machine_reset(); + required_device<cpu_device> m_maincpu; }; READ8_MEMBER( cm1800_state::term_status_r ) diff --git a/src/mess/drivers/codata.c b/src/mess/drivers/codata.c index 7109a18b857..6479d97b816 100644 --- a/src/mess/drivers/codata.c +++ b/src/mess/drivers/codata.c @@ -15,12 +15,14 @@ class codata_state : public driver_device public: codata_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_p_base(*this, "p_base"){ } + m_p_base(*this, "p_base"), + m_maincpu(*this, "maincpu") { } required_shared_ptr<UINT16> m_p_base; virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_codata(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; @@ -43,7 +45,7 @@ void codata_state::machine_reset() { UINT8* RAM = memregion("user1")->base(); memcpy(m_p_base, RAM, 16); - machine().device("maincpu")->reset(); + m_maincpu->reset(); } void codata_state::video_start() diff --git a/src/mess/drivers/cortex.c b/src/mess/drivers/cortex.c index 1fedba3397e..04dba11ee24 100644 --- a/src/mess/drivers/cortex.c +++ b/src/mess/drivers/cortex.c @@ -25,11 +25,13 @@ class cortex_state : public driver_device { public: cortex_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_cortex(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; static ADDRESS_MAP_START( cortex_mem, AS_PROGRAM, 8, cortex_state ) diff --git a/src/mess/drivers/cp1.c b/src/mess/drivers/cp1.c index dddcc4eb88f..d78ff595d6d 100644 --- a/src/mess/drivers/cp1.c +++ b/src/mess/drivers/cp1.c @@ -16,7 +16,8 @@ class cp1_state : public driver_device { public: cp1_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER(getp1); DECLARE_READ8_MEMBER(getp2); @@ -26,6 +27,7 @@ public: DECLARE_WRITE8_MEMBER(putp1); DECLARE_WRITE8_MEMBER(putp2); DECLARE_WRITE8_MEMBER(putbus); + required_device<cpu_device> m_maincpu; }; READ8_MEMBER(cp1_state::getp1) diff --git a/src/mess/drivers/craft.c b/src/mess/drivers/craft.c index d70adaaea19..1d6136abd66 100644 --- a/src/mess/drivers/craft.c +++ b/src/mess/drivers/craft.c @@ -22,7 +22,7 @@ inline void craft_state::verboselog(int n_level, const char *s_fmt, ...) va_start( v, s_fmt ); vsprintf( buf, s_fmt, v ); va_end( v ); - logerror( "%08x: %s", machine().device("maincpu")->safe_pc(), buf ); + logerror( "%08x: %s", m_maincpu->safe_pc(), buf ); } } #else diff --git a/src/mess/drivers/csc.c b/src/mess/drivers/csc.c index f448669b8f7..2358f41b0b8 100644 --- a/src/mess/drivers/csc.c +++ b/src/mess/drivers/csc.c @@ -26,7 +26,8 @@ public: csc_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_speech(*this, "speech") - { } + , + m_maincpu(*this, "maincpu") { } required_device<s14001a_device> m_speech; @@ -47,6 +48,7 @@ public: UINT8 m_selector; TIMER_DEVICE_CALLBACK_MEMBER(irq_timer); + required_device<cpu_device> m_maincpu; }; @@ -176,7 +178,7 @@ READ_LINE_MEMBER( csc_state::pia1_cb1_r ) TIMER_DEVICE_CALLBACK_MEMBER(csc_state::irq_timer) { - machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE); + m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE); } /* Address maps */ diff --git a/src/mess/drivers/cxhumax.c b/src/mess/drivers/cxhumax.c index 8c634e03665..0dedb43964f 100644 --- a/src/mess/drivers/cxhumax.c +++ b/src/mess/drivers/cxhumax.c @@ -101,7 +101,7 @@ WRITE32_MEMBER( cxhumax_state::cx_gxa_w ) if((m_intctrl_regs[INTREG(INTGROUP2, INTIRQ)] & m_intctrl_regs[INTREG(INTGROUP2, INTENABLE)]) || (m_intctrl_regs[INTREG(INTGROUP1, INTIRQ)] & m_intctrl_regs[INTREG(INTGROUP1, INTENABLE)])) - machine().device("maincpu")->execute().set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); break; default: @@ -321,7 +321,7 @@ TIMER_CALLBACK_MEMBER(cxhumax_state::timer_tick) /* Interrupt if Timer interrupt is not masked in ITC_INTENABLE_REG */ if (m_intctrl_regs[INTREG(INTGROUP2, INTENABLE)] & INT_TIMER_BIT) - machine().device("maincpu")->execute().set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); } } attotime period = attotime::from_hz(XTAL_54MHz)*m_timer_regs.timer[param].timebase; @@ -417,7 +417,7 @@ WRITE32_MEMBER( cxhumax_state::cx_uart2_w ) /* If INT is enabled at INT Ctrl raise it */ if(m_intctrl_regs[INTREG(INTGROUP1, INTENABLE)]&INT_UART2_BIT) { - machine().device("maincpu")->execute().set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); } } } @@ -547,9 +547,9 @@ WRITE32_MEMBER( cxhumax_state::cx_intctrl_w ) /* check if */ if((m_intctrl_regs[INTREG(INTGROUP2, INTIRQ)] & m_intctrl_regs[INTREG(INTGROUP2, INTENABLE)]) || (m_intctrl_regs[INTREG(INTGROUP1, INTIRQ)] & m_intctrl_regs[INTREG(INTGROUP1, INTENABLE)])) - machine().device("maincpu")->execute().set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); else - machine().device("maincpu")->execute().set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); + m_maincpu->set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); } @@ -733,7 +733,7 @@ WRITE32_MEMBER( cxhumax_state::cx_i2c1_w ) m_intctrl_regs[INTREG(INTGROUP1, INTSTATSET)] |= 1<<7; if (m_intctrl_regs[INTREG(INTGROUP1, INTENABLE)] & (1<<7)) { verboselog( machine(), 9, "(I2C1) Int\n" ); - machine().device("maincpu")->execute().set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); } break; case I2C_STAT_REG: diff --git a/src/mess/drivers/dccons.c b/src/mess/drivers/dccons.c index 01a1e2682dd..ba7f65a8f1b 100644 --- a/src/mess/drivers/dccons.c +++ b/src/mess/drivers/dccons.c @@ -58,14 +58,14 @@ DRIVER_INIT_MEMBER(dc_cons_state,dc) DRIVER_INIT_MEMBER(dc_cons_state,dcus) { - machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0xc2303b0, 0xc2303b7, read64_delegate(FUNC(dc_cons_state::dcus_idle_skip_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2303b0, 0xc2303b7, read64_delegate(FUNC(dc_cons_state::dcus_idle_skip_r),this)); DRIVER_INIT_CALL(dc); } DRIVER_INIT_MEMBER(dc_cons_state,dcjp) { - machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0xc2302f8, 0xc2302ff, read64_delegate(FUNC(dc_cons_state::dcjp_idle_skip_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2302f8, 0xc2302ff, read64_delegate(FUNC(dc_cons_state::dcjp_idle_skip_r),this)); DRIVER_INIT_CALL(dc); } diff --git a/src/mess/drivers/dct11em.c b/src/mess/drivers/dct11em.c index 5ec2e467edb..af999f5b6a5 100644 --- a/src/mess/drivers/dct11em.c +++ b/src/mess/drivers/dct11em.c @@ -13,10 +13,12 @@ class dct11em_state : public driver_device { public: dct11em_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_dct11em(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; static ADDRESS_MAP_START( dct11em_mem, AS_PROGRAM, 16, dct11em_state ) diff --git a/src/mess/drivers/dectalk.c b/src/mess/drivers/dectalk.c index 1c439e102ee..22a41f04463 100644 --- a/src/mess/drivers/dectalk.c +++ b/src/mess/drivers/dectalk.c @@ -235,7 +235,8 @@ class dectalk_state : public driver_device public: dectalk_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_terminal(*this, TERMINAL_TAG) { } + m_terminal(*this, TERMINAL_TAG) , + m_maincpu(*this, "maincpu") { } UINT8 m_data[8]; // hack to prevent gcc bitching about struct pointers. not used. UINT8 m_x2214_sram[256]; // NVRAM chip's temp sram space @@ -283,6 +284,7 @@ public: void dectalk_x2212_recall( ); void dectalk_semaphore_w ( UINT16 data ); UINT16 dectalk_outfifo_r ( ); + required_device<cpu_device> m_maincpu; }; @@ -385,10 +387,10 @@ void dectalk_state::dectalk_semaphore_w ( UINT16 data ) #ifdef VERBOSE logerror("speech int fired!\n"); #endif - machine().device("maincpu")->execute().set_input_line_and_vector(M68K_IRQ_5, ASSERT_LINE, M68K_INT_ACK_AUTOVECTOR); + m_maincpu->set_input_line_and_vector(M68K_IRQ_5, ASSERT_LINE, M68K_INT_ACK_AUTOVECTOR); } else - machine().device("maincpu")->execute().set_input_line_and_vector(M68K_IRQ_5, CLEAR_LINE, M68K_INT_ACK_AUTOVECTOR); + m_maincpu->set_input_line_and_vector(M68K_IRQ_5, CLEAR_LINE, M68K_INT_ACK_AUTOVECTOR); } // read the output fifo and set the interrupt line active on the dsp @@ -430,7 +432,7 @@ static void dectalk_reset(device_t *device) void dectalk_state::machine_reset() { /* hook the RESET line, which resets a slew of other components */ - m68k_set_reset_callback(machine().device("maincpu"), dectalk_reset); + m68k_set_reset_callback(m_maincpu, dectalk_reset); } /* Begin 68k i/o handlers */ @@ -545,7 +547,7 @@ WRITE16_MEMBER(dectalk_state::m68k_spcflags_w)// 68k write to the speech flags ( #ifdef SPC_LOG_68K logerror(" speech int fired!\n"); #endif - machine().device("maincpu")->execute().set_input_line_and_vector(M68K_IRQ_5, ASSERT_LINE, M68K_INT_ACK_AUTOVECTOR); // set int because semaphore was set + m_maincpu->set_input_line_and_vector(M68K_IRQ_5, ASSERT_LINE, M68K_INT_ACK_AUTOVECTOR); // set int because semaphore was set } } else // data&0x40 == 0 @@ -553,7 +555,7 @@ WRITE16_MEMBER(dectalk_state::m68k_spcflags_w)// 68k write to the speech flags ( #ifdef SPC_LOG_68K logerror(" | 0x40 = 0: speech int disabled\n"); #endif - machine().device("maincpu")->execute().set_input_line_and_vector(M68K_IRQ_5, CLEAR_LINE, M68K_INT_ACK_AUTOVECTOR); // clear int because int is now disabled + m_maincpu->set_input_line_and_vector(M68K_IRQ_5, CLEAR_LINE, M68K_INT_ACK_AUTOVECTOR); // clear int because int is now disabled } } @@ -585,7 +587,7 @@ WRITE16_MEMBER(dectalk_state::m68k_tlcflags_w)// dtmf flags write #ifdef TLC_LOG logerror(" TLC int fired!\n"); #endif - machine().device("maincpu")->execute().set_input_line_and_vector(M68K_IRQ_4, ASSERT_LINE, M68K_INT_ACK_AUTOVECTOR); // set int because tone detect was set + m_maincpu->set_input_line_and_vector(M68K_IRQ_4, ASSERT_LINE, M68K_INT_ACK_AUTOVECTOR); // set int because tone detect was set } } else // data&0x40 == 0 @@ -594,7 +596,7 @@ WRITE16_MEMBER(dectalk_state::m68k_tlcflags_w)// dtmf flags write logerror(" | 0x40 = 0: tone detect int disabled\n"); #endif if (((data&0x4000)!=0x4000) || (m_tlc_ringdetect == 0)) // check to be sure we don't disable int if both ints fired at once - machine().device("maincpu")->execute().set_input_line_and_vector(M68K_IRQ_4, CLEAR_LINE, M68K_INT_ACK_AUTOVECTOR); // clear int because int is now disabled + m_maincpu->set_input_line_and_vector(M68K_IRQ_4, CLEAR_LINE, M68K_INT_ACK_AUTOVECTOR); // clear int because int is now disabled } if ((data&0x100) == 0x100) // bit 8: answer phone relay enable { @@ -618,7 +620,7 @@ WRITE16_MEMBER(dectalk_state::m68k_tlcflags_w)// dtmf flags write #ifdef TLC_LOG logerror(" TLC int fired!\n"); #endif - machine().device("maincpu")->execute().set_input_line_and_vector(M68K_IRQ_4, ASSERT_LINE, M68K_INT_ACK_AUTOVECTOR); // set int because tone detect was set + m_maincpu->set_input_line_and_vector(M68K_IRQ_4, ASSERT_LINE, M68K_INT_ACK_AUTOVECTOR); // set int because tone detect was set } } else // data&0x4000 == 0 @@ -627,7 +629,7 @@ WRITE16_MEMBER(dectalk_state::m68k_tlcflags_w)// dtmf flags write logerror(" | 0x4000 = 0: ring detect int disabled\n"); #endif if (((data&0x40)!=0x40) || (m_tlc_tonedetect == 0)) // check to be sure we don't disable int if both ints fired at once - machine().device("maincpu")->execute().set_input_line_and_vector(M68K_IRQ_4, CLEAR_LINE, M68K_INT_ACK_AUTOVECTOR); // clear int because int is now disabled + m_maincpu->set_input_line_and_vector(M68K_IRQ_4, CLEAR_LINE, M68K_INT_ACK_AUTOVECTOR); // clear int because int is now disabled } } diff --git a/src/mess/drivers/dim68k.c b/src/mess/drivers/dim68k.c index 695e4a631a6..cb1d456a3ea 100644 --- a/src/mess/drivers/dim68k.c +++ b/src/mess/drivers/dim68k.c @@ -204,7 +204,7 @@ void dim68k_state::machine_reset() memcpy((UINT8*)m_ram.target(), ROM, 0x2000); - machine().device("maincpu")->reset(); + m_maincpu->reset(); } void dim68k_state::video_start() diff --git a/src/mess/drivers/dms5000.c b/src/mess/drivers/dms5000.c index 2198d39e639..9708442fc83 100644 --- a/src/mess/drivers/dms5000.c +++ b/src/mess/drivers/dms5000.c @@ -14,11 +14,13 @@ class dms5000_state : public driver_device { public: dms5000_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_dms5000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/dual68.c b/src/mess/drivers/dual68.c index bdabf54ee78..2c7c6c10b2d 100644 --- a/src/mess/drivers/dual68.c +++ b/src/mess/drivers/dual68.c @@ -67,7 +67,7 @@ void dual68_state::machine_reset() memcpy((UINT8*)m_p_ram.target(),user1,0x2000); - machine().device("maincpu")->reset(); + m_maincpu->reset(); } WRITE8_MEMBER( dual68_state::kbd_put ) diff --git a/src/mess/drivers/ec65.c b/src/mess/drivers/ec65.c index de69fe8e043..6fe4bbffacf 100644 --- a/src/mess/drivers/ec65.c +++ b/src/mess/drivers/ec65.c @@ -29,7 +29,8 @@ public: ec65_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_via_0(*this, VIA6522_0_TAG), - m_p_videoram(*this, "videoram"){ } + m_p_videoram(*this, "videoram"), + m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER(ec65_via_read_a); DECLARE_READ8_MEMBER(ec65_read_ca1 ); @@ -43,6 +44,7 @@ public: required_shared_ptr<UINT8> m_p_videoram; virtual void machine_reset(); virtual void video_start(); + required_device<cpu_device> m_maincpu; }; static ADDRESS_MAP_START(ec65_mem, AS_PROGRAM, 8, ec65_state) diff --git a/src/mess/drivers/enterp.c b/src/mess/drivers/enterp.c index 0520677737e..c2bf9a7ce84 100644 --- a/src/mess/drivers/enterp.c +++ b/src/mess/drivers/enterp.c @@ -106,7 +106,7 @@ WRITE8_MEMBER(ep_state::enterprise_dave_reg_write) case 0x11: case 0x12: case 0x13: - enterprise_update_memory_page(machine().device("maincpu")->memory().space(AS_PROGRAM), offset - 0x0f, data); + enterprise_update_memory_page(m_maincpu->space(AS_PROGRAM), offset - 0x0f, data); break; case 0x15: @@ -168,7 +168,7 @@ static const dave_interface enterprise_dave_interface = void ep_state::machine_reset() { - machine().device("maincpu")->execute().set_input_line_vector(0, 0xff); + m_maincpu->set_input_line_vector(0, 0xff); } diff --git a/src/mess/drivers/ex800.c b/src/mess/drivers/ex800.c index cd9e7252308..02c29187744 100644 --- a/src/mess/drivers/ex800.c +++ b/src/mess/drivers/ex800.c @@ -136,7 +136,8 @@ class ex800_state : public driver_device { public: ex800_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } int m_irq_state; DECLARE_READ8_MEMBER(ex800_porta_r); @@ -155,6 +156,7 @@ public: DECLARE_WRITE8_MEMBER(ex800_gate7a_w); virtual void machine_start(); DECLARE_INPUT_CHANGED_MEMBER(online_switch); + required_device<cpu_device> m_maincpu; }; @@ -197,7 +199,7 @@ INPUT_CHANGED_MEMBER(ex800_state::online_switch) { if (newval) { - machine().device("maincpu")->execute().set_input_line(UPD7810_INTF1, m_irq_state); + m_maincpu->set_input_line(UPD7810_INTF1, m_irq_state); m_irq_state = (m_irq_state == ASSERT_LINE) ? CLEAR_LINE : ASSERT_LINE; } } diff --git a/src/mess/drivers/fidelz80.c b/src/mess/drivers/fidelz80.c index 8e323227e7a..c17d58fd28c 100644 --- a/src/mess/drivers/fidelz80.c +++ b/src/mess/drivers/fidelz80.c @@ -1008,7 +1008,7 @@ void fidelz80_state::machine_reset() TIMER_DEVICE_CALLBACK_MEMBER(fidelz80_state::nmi_timer) { - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } /****************************************************************************** diff --git a/src/mess/drivers/fk1.c b/src/mess/drivers/fk1.c index 9ad7fa07149..9918b5f42f7 100644 --- a/src/mess/drivers/fk1.c +++ b/src/mess/drivers/fk1.c @@ -390,7 +390,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(fk1_state::keyboard_callback) if (machine().root_device().ioport("LINE0")->read()) { m_int_vector = 6; - machine().device("maincpu")->execute().set_input_line(0, HOLD_LINE); + m_maincpu->set_input_line(0, HOLD_LINE); } } @@ -414,7 +414,7 @@ IRQ_CALLBACK_MEMBER(fk1_state::fk1_irq_callback) TIMER_DEVICE_CALLBACK_MEMBER(fk1_state::vsync_callback) { m_int_vector = 3; - machine().device("maincpu")->execute().set_input_line(0, HOLD_LINE); + m_maincpu->set_input_line(0, HOLD_LINE); } @@ -429,7 +429,7 @@ void fk1_state::machine_reset() membank("bank3")->set_base(ram + 0x8000); membank("bank4")->set_base(ram + 0xc000); - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(fk1_state::fk1_irq_callback),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(fk1_state::fk1_irq_callback),this)); } UINT32 fk1_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mess/drivers/fm7.c b/src/mess/drivers/fm7.c index b79a5345833..ad90026b721 100644 --- a/src/mess/drivers/fm7.c +++ b/src/mess/drivers/fm7.c @@ -1295,7 +1295,7 @@ TIMER_CALLBACK_MEMBER(fm7_state::fm7_keyboard_poll) if(machine().root_device().ioport("key3")->read() & 0x40000) { m_break_flag = 1; - machine().device("maincpu")->execute().set_input_line(M6809_FIRQ_LINE,ASSERT_LINE); + m_maincpu->set_input_line(M6809_FIRQ_LINE,ASSERT_LINE); } else m_break_flag = 0; @@ -1339,7 +1339,7 @@ TIMER_CALLBACK_MEMBER(fm7_state::fm7_keyboard_poll) IRQ_CALLBACK_MEMBER(fm7_state::fm7_irq_ack) { if(irqline == M6809_FIRQ_LINE) - machine().device("maincpu")->execute().set_input_line(irqline,CLEAR_LINE); + m_maincpu->set_input_line(irqline,CLEAR_LINE); return -1; } @@ -1831,7 +1831,7 @@ DRIVER_INIT_MEMBER(fm7_state,fm7) m_subtimer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(fm7_state::fm7_subtimer_irq),this)); m_keyboard_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(fm7_state::fm7_keyboard_poll),this)); m_fm77av_vsync_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(fm7_state::fm77av_vsync),this)); - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(fm7_state::fm7_irq_ack),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(fm7_state::fm7_irq_ack),this)); machine().device("sub")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(fm7_state::fm7_sub_irq_ack),this)); } @@ -1955,7 +1955,7 @@ void fm7_state::machine_reset() } if(m_type == SYS_FM77AV || m_type == SYS_FM77AV40EX || m_type == SYS_FM11) { - fm7_mmr_refresh(machine().device("maincpu")->memory().space(AS_PROGRAM)); + fm7_mmr_refresh(m_maincpu->space(AS_PROGRAM)); } if(m_type == SYS_FM11) { diff --git a/src/mess/drivers/fmtowns.c b/src/mess/drivers/fmtowns.c index 115ed6b0d76..25a5f771eab 100644 --- a/src/mess/drivers/fmtowns.c +++ b/src/mess/drivers/fmtowns.c @@ -329,7 +329,7 @@ WRITE8_MEMBER(towns_state::towns_system_w) switch(offset) { case 0x00: // bit 7 = NMI vector protect, bit 6 = power off, bit 0 = software reset, bit 3 = A20 line? -// space.machine().device("maincpu")->execute().set_input_line(INPUT_LINE_A20,(data & 0x08) ? CLEAR_LINE : ASSERT_LINE); +// space.m_maincpu->set_input_line(INPUT_LINE_A20,(data & 0x08) ? CLEAR_LINE : ASSERT_LINE); logerror("SYS: port 0x20 write %02x\n",data); break; case 0x02: @@ -2103,7 +2103,7 @@ static void towns_pcm_irq(device_t* device, int channel) WRITE_LINE_MEMBER(towns_state::towns_pic_irq) { - machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); + m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); // logerror("PIC#1: set IRQ line to %i\n",interrupt); } @@ -2604,8 +2604,8 @@ void towns_state::driver_start() // CD-ROM init m_towns_cd.read_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(towns_state::towns_cdrom_read_byte),this), (void*)machine().device("dma_1")); - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(towns_state::towns_irq_callback),this)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_ram(0x100000,machine().device<ram_device>(RAM_TAG)->size()-1,0xffffffff,0,NULL); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(towns_state::towns_irq_callback),this)); + m_maincpu->space(AS_PROGRAM).install_ram(0x100000,machine().device<ram_device>(RAM_TAG)->size()-1,0xffffffff,0,NULL); } diff --git a/src/mess/drivers/fp1100.c b/src/mess/drivers/fp1100.c index c2fd8ab888b..4543cdd9f86 100644 --- a/src/mess/drivers/fp1100.c +++ b/src/mess/drivers/fp1100.c @@ -189,7 +189,7 @@ WRITE8_MEMBER( fp1100_state::main_to_sub_w ) READ8_MEMBER( fp1100_state::sub_to_main_r ) { machine().scheduler().synchronize(); // force resync -// machine().device("maincpu")->execute().set_input_line_and_vector(0, CLEAR_LINE, 0xf0); +// m_maincpu->set_input_line_and_vector(0, CLEAR_LINE, 0xf0); return m_main_latch; } @@ -241,7 +241,7 @@ READ8_MEMBER( fp1100_state::main_to_sub_r ) WRITE8_MEMBER( fp1100_state::sub_to_main_w ) { machine().scheduler().synchronize(); // force resync -// machine().device("maincpu")->execute().set_input_line_and_vector(0, ASSERT_LINE, 0xf0); +// m_maincpu->set_input_line_and_vector(0, ASSERT_LINE, 0xf0); m_main_latch = data; } @@ -260,7 +260,7 @@ ADDRESS_MAP_END WRITE8_MEMBER( fp1100_state::portc_w ) { if((!(m_upd7801.portc & 8)) && data & 8) - machine().device("maincpu")->execute().set_input_line_and_vector(0, HOLD_LINE,0xf8); // TODO + m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xf8); // TODO m_upd7801.portc = data; } @@ -400,7 +400,7 @@ static MC6845_INTERFACE( mc6845_intf ) INTERRUPT_GEN_MEMBER(fp1100_state::fp1100_vblank_irq) { if(irq_mask & 0x10) - machine().device("maincpu")->execute().set_input_line_and_vector(0, HOLD_LINE, 0xf0); + m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xf0); } static MACHINE_CONFIG_START( fp1100, fp1100_state ) diff --git a/src/mess/drivers/fp6000.c b/src/mess/drivers/fp6000.c index 7189046e679..084583e2bdf 100644 --- a/src/mess/drivers/fp6000.c +++ b/src/mess/drivers/fp6000.c @@ -27,7 +27,8 @@ public: fp6000_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_gvram(*this, "gvram"), - m_vram(*this, "vram"){ } + m_vram(*this, "vram"), + m_maincpu(*this, "maincpu") { } UINT8 *m_char_rom; required_shared_ptr<UINT16> m_gvram; @@ -52,6 +53,7 @@ public: virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_fp6000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; void fp6000_state::video_start() diff --git a/src/mess/drivers/genpc.c b/src/mess/drivers/genpc.c index 1004c2aea5b..09dd50a8329 100644 --- a/src/mess/drivers/genpc.c +++ b/src/mess/drivers/genpc.c @@ -42,8 +42,10 @@ class genpc_state : public driver_device { public: genpc_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } + required_device<cpu_device> m_maincpu; }; static ADDRESS_MAP_START( pc8_map, AS_PROGRAM, 8, genpc_state ) diff --git a/src/mess/drivers/gizmondo.c b/src/mess/drivers/gizmondo.c index a45326e2245..f51fa531ef8 100644 --- a/src/mess/drivers/gizmondo.c +++ b/src/mess/drivers/gizmondo.c @@ -44,7 +44,8 @@ class gizmondo_state : public driver_device { public: gizmondo_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } UINT32 m_port[9]; device_t *m_s3c2440; @@ -53,6 +54,7 @@ public: virtual void machine_reset(); DECLARE_INPUT_CHANGED_MEMBER(port_changed); inline void ATTR_PRINTF(3,4) verboselog( int n_level, const char *s_fmt, ...); + required_device<cpu_device> m_maincpu; }; @@ -148,7 +150,7 @@ void gizmondo_state::machine_start() void gizmondo_state::machine_reset() { - machine().device("maincpu")->reset(); + m_maincpu->reset(); } /******************************************************************************* diff --git a/src/mess/drivers/glasgow.c b/src/mess/drivers/glasgow.c index 3cab4efa410..f50375bd0b3 100644 --- a/src/mess/drivers/glasgow.c +++ b/src/mess/drivers/glasgow.c @@ -277,12 +277,12 @@ WRITE32_MEMBER( glasgow_state::write_beeper32 ) TIMER_DEVICE_CALLBACK_MEMBER(glasgow_state::update_nmi) { - machine().device("maincpu")->execute().set_input_line(7, HOLD_LINE); + m_maincpu->set_input_line(7, HOLD_LINE); } TIMER_DEVICE_CALLBACK_MEMBER(glasgow_state::update_nmi32) { - machine().device("maincpu")->execute().set_input_line(6, HOLD_LINE); + m_maincpu->set_input_line(6, HOLD_LINE); } void glasgow_state::machine_start() diff --git a/src/mess/drivers/gmaster.c b/src/mess/drivers/gmaster.c index d25a8ef9d73..884d6948de6 100644 --- a/src/mess/drivers/gmaster.c +++ b/src/mess/drivers/gmaster.c @@ -207,7 +207,7 @@ UINT32 gmaster_state::screen_update_gmaster(screen_device &screen, bitmap_ind16 INTERRUPT_GEN_MEMBER(gmaster_state::gmaster_interrupt) { - machine().device("maincpu")->execute().set_input_line(UPD7810_INTFE1, ASSERT_LINE); + m_maincpu->set_input_line(UPD7810_INTFE1, ASSERT_LINE); } static const UPD7810_CONFIG config = { diff --git a/src/mess/drivers/h19.c b/src/mess/drivers/h19.c index 50611f353c0..bee0c6d8ba1 100644 --- a/src/mess/drivers/h19.c +++ b/src/mess/drivers/h19.c @@ -87,7 +87,7 @@ READ8_MEMBER( h19_state::h19_80_r ) READ8_MEMBER( h19_state::h19_a0_r ) { // keyboard status - machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE); + m_maincpu->set_input_line(0, CLEAR_LINE); return 0x7f; // says that a key is ready and no modifier keys are pressed } @@ -337,7 +337,7 @@ static MC6845_UPDATE_ROW( h19_update_row ) WRITE_LINE_MEMBER(h19_state::h19_ace_irq) { - machine().device("maincpu")->execute().set_input_line(0, (state ? HOLD_LINE : CLEAR_LINE)); + m_maincpu->set_input_line(0, (state ? HOLD_LINE : CLEAR_LINE)); } static const ins8250_interface h19_ace_interface = @@ -387,7 +387,7 @@ GFXDECODE_END WRITE8_MEMBER( h19_state::h19_kbd_put ) { m_term_data = data; - machine().device("maincpu")->execute().set_input_line(0, HOLD_LINE); + m_maincpu->set_input_line(0, HOLD_LINE); } static ASCII_KEYBOARD_INTERFACE( keyboard_intf ) diff --git a/src/mess/drivers/h8.c b/src/mess/drivers/h8.c index 4d5b3673e02..967c34971d3 100644 --- a/src/mess/drivers/h8.c +++ b/src/mess/drivers/h8.c @@ -56,7 +56,7 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(h8_state::h8_irq_pulse) { if (m_irq_ctl & 1) - machine().device("maincpu")->execute().set_input_line_and_vector(INPUT_LINE_IRQ0, ASSERT_LINE, 0xcf); + m_maincpu->set_input_line_and_vector(INPUT_LINE_IRQ0, ASSERT_LINE, 0xcf); } READ8_MEMBER( h8_state::h8_f0_r ) @@ -104,7 +104,7 @@ WRITE8_MEMBER( h8_state::h8_f0_w ) output_set_value("mon_led",(data & 0x20) ? 0 : 1); m_beep->set_state((data & 0x80) ? 0 : 1); - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); + m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); m_irq_ctl &= 0xf0; if (data & 0x40) m_irq_ctl |= 1; if (~data & 0x10) m_irq_ctl |= 2; @@ -196,7 +196,7 @@ But, all of this can only occur if bit 5 of port F0 is low. */ c=m_ff_b^1; // from /Q of 2nd flipflop m_ff_b=a; // from Q of 1st flipflop if (c) - machine().device("maincpu")->execute().set_input_line_and_vector(INPUT_LINE_IRQ0, ASSERT_LINE, 0xd7); + m_maincpu->set_input_line_and_vector(INPUT_LINE_IRQ0, ASSERT_LINE, 0xd7); } } else diff --git a/src/mess/drivers/horizon.c b/src/mess/drivers/horizon.c index 861233c27b5..d80411c6b5d 100644 --- a/src/mess/drivers/horizon.c +++ b/src/mess/drivers/horizon.c @@ -64,12 +64,12 @@ INPUT_PORTS_END void horizon_state::machine_reset() { - machine().device("maincpu")->state().set_state_int(Z80_PC, 0xe800); + m_maincpu->set_state_int(Z80_PC, 0xe800); } MACHINE_RESET_MEMBER(horizon_state,horizon_sd) { - machine().device("maincpu")->state().set_state_int(Z80_PC, 0xe900); + m_maincpu->set_state_int(Z80_PC, 0xe900); } WRITE8_MEMBER( horizon_state::kbd_put ) diff --git a/src/mess/drivers/hp16500.c b/src/mess/drivers/hp16500.c index d5352a41a0c..43f13323a9d 100644 --- a/src/mess/drivers/hp16500.c +++ b/src/mess/drivers/hp16500.c @@ -26,10 +26,12 @@ class hp16500_state : public driver_device { public: hp16500_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void video_start(); UINT32 screen_update_hp16500(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/hp49gp.c b/src/mess/drivers/hp49gp.c index 9e3e0726494..734bd2eb454 100644 --- a/src/mess/drivers/hp49gp.c +++ b/src/mess/drivers/hp49gp.c @@ -24,7 +24,8 @@ class hp49gp_state : public driver_device public: hp49gp_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_steppingstone(*this, "steppingstone"){ } + m_steppingstone(*this, "steppingstone"), + m_maincpu(*this, "maincpu") { } UINT32 m_port[9]; device_t *m_s3c2410; @@ -39,6 +40,7 @@ public: void lcd_spi_init( ); void lcd_spi_line_w( int line, int data); int lcd_spi_line_r( int line); + required_device<cpu_device> m_maincpu; }; /*************************************************************************** @@ -248,7 +250,7 @@ void hp49gp_state::machine_start() void hp49gp_state::machine_reset() { - machine().device("maincpu")->reset(); + m_maincpu->reset(); } /*************************************************************************** diff --git a/src/mess/drivers/ht68k.c b/src/mess/drivers/ht68k.c index 1339424024d..c8dd0dcf98b 100644 --- a/src/mess/drivers/ht68k.c +++ b/src/mess/drivers/ht68k.c @@ -75,7 +75,7 @@ void ht68k_state::machine_reset() memcpy((UINT8*)m_p_ram.target(),user1,0x8000); - machine().device("maincpu")->reset(); + m_maincpu->reset(); } static void duart_irq_handler(device_t *device, int state, UINT8 vector) diff --git a/src/mess/drivers/hx20.c b/src/mess/drivers/hx20.c index 35653ef9b80..46a765e99d0 100644 --- a/src/mess/drivers/hx20.c +++ b/src/mess/drivers/hx20.c @@ -14,11 +14,13 @@ class hx20_state : public driver_device { public: hx20_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_ehx20(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/ibmpc.c b/src/mess/drivers/ibmpc.c index 20afb2c82d9..c370c71d555 100644 --- a/src/mess/drivers/ibmpc.c +++ b/src/mess/drivers/ibmpc.c @@ -281,8 +281,10 @@ class ibmpc_state : public driver_device { public: ibmpc_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } + required_device<cpu_device> m_maincpu; }; static ADDRESS_MAP_START( pc8_map, AS_PROGRAM, 8, ibmpc_state ) diff --git a/src/mess/drivers/if800.c b/src/mess/drivers/if800.c index b26df58dbd6..5c7c7ed3a7a 100644 --- a/src/mess/drivers/if800.c +++ b/src/mess/drivers/if800.c @@ -18,13 +18,15 @@ public: : driver_device(mconfig, type, tag), m_hgdc(*this, "upd7220") , - m_video_ram(*this, "video_ram"){ } + m_video_ram(*this, "video_ram"), + m_maincpu(*this, "maincpu") { } required_device<upd7220_device> m_hgdc; required_shared_ptr<UINT8> m_video_ram; virtual void machine_start(); virtual void machine_reset(); + required_device<cpu_device> m_maincpu; }; static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels ) diff --git a/src/mess/drivers/indiana.c b/src/mess/drivers/indiana.c index 3e8ae19b929..8f8d2854023 100644 --- a/src/mess/drivers/indiana.c +++ b/src/mess/drivers/indiana.c @@ -19,9 +19,11 @@ class indiana_state : public driver_device { public: indiana_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } DECLARE_DRIVER_INIT(indiana); virtual void machine_reset(); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/ip20.c b/src/mess/drivers/ip20.c index 32bd9d4735f..020a6455192 100644 --- a/src/mess/drivers/ip20.c +++ b/src/mess/drivers/ip20.c @@ -50,8 +50,9 @@ public: : driver_device(mconfig, type, tag), m_wd33c93(*this, "scsi:wd33c93"), m_scc(*this, "scc"), - m_eeprom(*this, "eeprom") - { } + m_eeprom(*this, "eeprom"), + m_maincpu(*this, "maincpu") { } + HPC_t m_HPC; RTC_t m_RTC; @@ -68,6 +69,7 @@ public: required_device<scc8530_t> m_scc; required_device<eeprom_device> m_eeprom; inline void ATTR_PRINTF(3,4) verboselog(int n_level, const char *s_fmt, ... ); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/ipc.c b/src/mess/drivers/ipc.c index b8c2484e6e8..e573d4ec472 100644 --- a/src/mess/drivers/ipc.c +++ b/src/mess/drivers/ipc.c @@ -96,7 +96,7 @@ INPUT_PORTS_END void ipc_state::machine_reset() { - machine().device("maincpu")->state().set_state_int(I8085_PC, 0xE800); + m_maincpu->set_state_int(I8085_PC, 0xE800); } WRITE8_MEMBER( ipc_state::kbd_put ) diff --git a/src/mess/drivers/itt3030.c b/src/mess/drivers/itt3030.c index 49828728fd3..a4a953d9546 100644 --- a/src/mess/drivers/itt3030.c +++ b/src/mess/drivers/itt3030.c @@ -57,7 +57,7 @@ READ8_MEMBER(itt3030_state::unk2_r) UINT32 itt3030_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &space = m_maincpu->space(AS_PROGRAM); for(int y = 0; y < 24; y++ ) { diff --git a/src/mess/drivers/jr100.c b/src/mess/drivers/jr100.c index a31414f019c..2af76473143 100644 --- a/src/mess/drivers/jr100.c +++ b/src/mess/drivers/jr100.c @@ -42,7 +42,8 @@ public: m_line5(*this, "LINE5"), m_line6(*this, "LINE6"), m_line7(*this, "LINE7"), - m_line8(*this, "LINE8") { } + m_line8(*this, "LINE8") , + m_maincpu(*this, "maincpu") { } required_shared_ptr<UINT8> m_ram; required_shared_ptr<UINT8> m_pcg; @@ -79,6 +80,7 @@ protected: required_ioport m_line6; required_ioport m_line7; required_ioport m_line8; + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/juicebox.c b/src/mess/drivers/juicebox.c index 0be01710b4b..70a2cf834f9 100644 --- a/src/mess/drivers/juicebox.c +++ b/src/mess/drivers/juicebox.c @@ -259,7 +259,7 @@ void juicebox_state::machine_start() void juicebox_state::machine_reset() { - machine().device("maincpu")->reset(); + m_maincpu->reset(); smc_reset(); } diff --git a/src/mess/drivers/junior.c b/src/mess/drivers/junior.c index d074534e772..1d6babb41c1 100644 --- a/src/mess/drivers/junior.c +++ b/src/mess/drivers/junior.c @@ -34,7 +34,8 @@ public: junior_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_riot(*this, "riot") - { } + , + m_maincpu(*this, "maincpu") { } required_device<riot6532_device> m_riot; DECLARE_READ8_MEMBER(junior_riot_a_r); @@ -49,6 +50,7 @@ public: virtual void machine_reset(); DECLARE_INPUT_CHANGED_MEMBER(junior_reset); TIMER_DEVICE_CALLBACK_MEMBER(junior_update_leds); + required_device<cpu_device> m_maincpu; }; @@ -179,7 +181,7 @@ WRITE8_MEMBER( junior_state::junior_riot_b_w ) WRITE_LINE_MEMBER( junior_state::junior_riot_irq ) { - machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, state ? HOLD_LINE : CLEAR_LINE); + m_maincpu->set_input_line(M6502_IRQ_LINE, state ? HOLD_LINE : CLEAR_LINE); } diff --git a/src/mess/drivers/k1003.c b/src/mess/drivers/k1003.c index afc3533d259..0cd35eaee84 100644 --- a/src/mess/drivers/k1003.c +++ b/src/mess/drivers/k1003.c @@ -48,7 +48,8 @@ class k1003_state : public driver_device { public: k1003_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER(port2_r); DECLARE_READ8_MEMBER(key_r); @@ -59,6 +60,7 @@ public: UINT8 m_disp_2; UINT8 bit_to_dec(UINT8 val); virtual void machine_reset(); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/konin.c b/src/mess/drivers/konin.c index 5e342eb9fb2..1d1437e8fe1 100644 --- a/src/mess/drivers/konin.c +++ b/src/mess/drivers/konin.c @@ -35,11 +35,13 @@ class konin_state : public driver_device { public: konin_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_konin(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; static ADDRESS_MAP_START( konin_mem, AS_PROGRAM, 8, konin_state ) diff --git a/src/mess/drivers/lynx.c b/src/mess/drivers/lynx.c index 47c342e82ad..b59a4c214b8 100644 --- a/src/mess/drivers/lynx.c +++ b/src/mess/drivers/lynx.c @@ -137,8 +137,9 @@ ROM_END static QUICKLOAD_LOAD( lynx ) { - device_t *cpu = image.device().machine().device("maincpu"); - address_space &space = image.device().machine().device("maincpu")->memory().space(AS_PROGRAM); + lynx_state *state = image.device().machine().driver_data<lynx_state>(); + device_t *cpu = state->m_maincpu; + address_space &space = state->m_maincpu->space(AS_PROGRAM); UINT8 *data = NULL; UINT8 *rom = image.device().machine().root_device().memregion("maincpu")->base(); UINT8 header[10]; // 80 08 dw Start dw Len B S 9 3 diff --git a/src/mess/drivers/m20.c b/src/mess/drivers/m20.c index 15079faa3c3..ed36a14a98c 100644 --- a/src/mess/drivers/m20.c +++ b/src/mess/drivers/m20.c @@ -389,8 +389,8 @@ void m20_state::install_memory() m_memsize = m_ram->size(); UINT8 *memptr = m_ram->pointer(); - address_space& pspace = machine().device("maincpu")->memory().space(AS_PROGRAM); - address_space& dspace = machine().device("maincpu")->memory().space(AS_DATA); + address_space& pspace = m_maincpu->space(AS_PROGRAM); + address_space& dspace = m_maincpu->space(AS_DATA); /* install mainboard memory (aka DRAM0) */ diff --git a/src/mess/drivers/m79152pc.c b/src/mess/drivers/m79152pc.c index 302166ab9d0..1202bdc8567 100644 --- a/src/mess/drivers/m79152pc.c +++ b/src/mess/drivers/m79152pc.c @@ -17,7 +17,8 @@ public: m79152pc_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_p_videoram(*this, "p_videoram"), - m_p_attributes(*this, "p_attributes"){ } + m_p_attributes(*this, "p_attributes"), + m_maincpu(*this, "maincpu") { } UINT8 *m_p_chargen; required_shared_ptr<UINT8> m_p_videoram; @@ -25,6 +26,7 @@ public: virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_m79152pc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; static ADDRESS_MAP_START(m79152pc_mem, AS_PROGRAM, 8, m79152pc_state) diff --git a/src/mess/drivers/mac.c b/src/mess/drivers/mac.c index 1f0af902ce8..1c8af822b25 100644 --- a/src/mess/drivers/mac.c +++ b/src/mess/drivers/mac.c @@ -445,8 +445,8 @@ WRITE8_MEMBER(mac_state::oss_w) READ32_MEMBER(mac_state::buserror_r) { - machine().device("maincpu")->execute().set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE); - machine().device("maincpu")->execute().set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE); + m_maincpu->set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE); + m_maincpu->set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE); return 0; } diff --git a/src/mess/drivers/mbc200.c b/src/mess/drivers/mbc200.c index 18439193477..b52ad699819 100644 --- a/src/mess/drivers/mbc200.c +++ b/src/mess/drivers/mbc200.c @@ -43,7 +43,8 @@ public: m_floppy0(*this, FLOPPY_0), m_floppy1(*this, FLOPPY_1), m_vram(*this, "vram") - { } + , + m_maincpu(*this, "maincpu") { } virtual void machine_start(); @@ -63,6 +64,7 @@ public: virtual void video_start(); UINT32 screen_update_mbc200(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/mc10.c b/src/mess/drivers/mc10.c index 34d150fc45e..6fe1c183788 100644 --- a/src/mess/drivers/mc10.c +++ b/src/mess/drivers/mc10.c @@ -235,7 +235,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mc10_state::alice32_scanline) DRIVER_INIT_MEMBER(mc10_state,mc10) { - address_space &prg = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &prg = m_maincpu->space(AS_PROGRAM); /* initialize keyboard strobe */ m_keyboard_strobe = 0x00; diff --git a/src/mess/drivers/megadriv.c b/src/mess/drivers/megadriv.c index c3897139e45..5a04a0bb723 100644 --- a/src/mess/drivers/megadriv.c +++ b/src/mess/drivers/megadriv.c @@ -350,15 +350,15 @@ MACHINE_START_MEMBER(md_cons_state, ms_megadriv) vdp_get_word_from_68k_mem = vdp_get_word_from_68k_mem_console; // for now m_cartslot is only in MD and not 32x and SegaCD - machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)m_slotcart)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_slotcart)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_slotcart)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)m_slotcart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)m_slotcart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_slotcart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_slotcart)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)m_slotcart)); } MACHINE_RESET_MEMBER(md_cons_state,ms_megadriv ) { - machine().device("maincpu")->reset(); + m_maincpu->reset(); MACHINE_RESET_CALL_MEMBER( megadriv ); } @@ -1072,10 +1072,10 @@ MACHINE_START_MEMBER(pico_state,pico) m_io_penx = ioport("PENX"); m_io_peny = ioport("PENY"); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)m_picocart)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_picocart)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_picocart)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)m_picocart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)m_picocart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_picocart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_picocart)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)m_picocart)); } static MACHINE_CONFIG_START( pico, pico_state ) diff --git a/src/mess/drivers/mekd2.c b/src/mess/drivers/mekd2.c index c953c0e13a2..a98478ee9dc 100644 --- a/src/mess/drivers/mekd2.c +++ b/src/mess/drivers/mekd2.c @@ -163,13 +163,13 @@ INPUT_PORTS_END TIMER_CALLBACK_MEMBER(mekd2_state::mekd2_trace) { - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } WRITE_LINE_MEMBER( mekd2_state::mekd2_nmi_w ) { if (state) - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); else machine().scheduler().timer_set(attotime::from_usec(18), timer_expired_delegate(FUNC(mekd2_state::mekd2_trace),this)); } diff --git a/src/mess/drivers/merlin.c b/src/mess/drivers/merlin.c index e27e8506401..6b38a0752c9 100644 --- a/src/mess/drivers/merlin.c +++ b/src/mess/drivers/merlin.c @@ -17,7 +17,8 @@ class merlin_state : public driver_device public: merlin_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_speaker(*this, "speaker") { } + m_speaker(*this, "speaker") , + m_maincpu(*this, "maincpu") { } virtual void machine_start(); @@ -30,6 +31,7 @@ public: protected: UINT16 m_o; UINT16 m_r; + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/microdec.c b/src/mess/drivers/microdec.c index 94ed8073819..af41d06b930 100644 --- a/src/mess/drivers/microdec.c +++ b/src/mess/drivers/microdec.c @@ -17,7 +17,8 @@ class microdec_state : public driver_device public: microdec_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_terminal(*this, TERMINAL_TAG) { } + m_terminal(*this, TERMINAL_TAG) , + m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER(terminal_status_r); DECLARE_READ8_MEMBER(terminal_r); @@ -29,6 +30,7 @@ public: virtual void machine_start(); void fdc_irq(bool state); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/mk1.c b/src/mess/drivers/mk1.c index 38bc56aaccc..8defaeada47 100644 --- a/src/mess/drivers/mk1.c +++ b/src/mess/drivers/mk1.c @@ -49,7 +49,8 @@ class mk1_state : public driver_device { public: mk1_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER(mk1_f8_r); DECLARE_WRITE8_MEMBER(mk1_f8_w); @@ -57,6 +58,7 @@ public: UINT8 m_led[4]; virtual void machine_start(); TIMER_DEVICE_CALLBACK_MEMBER(mk1_update_leds); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/mk14.c b/src/mess/drivers/mk14.c index 06f368a9da4..b386b8169ec 100644 --- a/src/mess/drivers/mk14.c +++ b/src/mess/drivers/mk14.c @@ -16,11 +16,13 @@ class mk14_state : public driver_device { public: mk14_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER(keyboard_r); DECLARE_WRITE8_MEMBER(display_w); virtual void machine_reset(); + required_device<cpu_device> m_maincpu; }; /* diff --git a/src/mess/drivers/mk2.c b/src/mess/drivers/mk2.c index 96c8fa3d693..fd44b55d46d 100644 --- a/src/mess/drivers/mk2.c +++ b/src/mess/drivers/mk2.c @@ -178,7 +178,7 @@ WRITE8_MEMBER( mk2_state::mk2_write_b ) m_led[4]|=data; - machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE ); + m_maincpu->set_input_line(M6502_IRQ_LINE, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE ); } static MOS6530_INTERFACE( mk2_mos6530_interface ) diff --git a/src/mess/drivers/mk85.c b/src/mess/drivers/mk85.c index d6721816f34..747c349969d 100644 --- a/src/mess/drivers/mk85.c +++ b/src/mess/drivers/mk85.c @@ -25,11 +25,13 @@ class mk85_state : public driver_device { public: mk85_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_mk85(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/mk90.c b/src/mess/drivers/mk90.c index e6370bf7fef..a9516b949f7 100644 --- a/src/mess/drivers/mk90.c +++ b/src/mess/drivers/mk90.c @@ -22,11 +22,13 @@ class mk90_state : public driver_device { public: mk90_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_mk90(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/mmd1.c b/src/mess/drivers/mmd1.c index d153cd33984..1cbbd3452d8 100644 --- a/src/mess/drivers/mmd1.c +++ b/src/mess/drivers/mmd1.c @@ -153,7 +153,8 @@ class mmd1_state : public driver_device { public: mmd1_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } DECLARE_WRITE8_MEMBER(mmd1_port0_w); DECLARE_WRITE8_MEMBER(mmd1_port1_w); @@ -171,6 +172,7 @@ public: DECLARE_DRIVER_INIT(mmd2); DECLARE_MACHINE_RESET(mmd1); DECLARE_MACHINE_RESET(mmd2); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/mmodular.c b/src/mess/drivers/mmodular.c index cda1358fced..7b60dab73e7 100644 --- a/src/mess/drivers/mmodular.c +++ b/src/mess/drivers/mmodular.c @@ -807,12 +807,12 @@ READ8_MEMBER(polgar_state::read_keys_board_academy) TIMER_DEVICE_CALLBACK_MEMBER(polgar_state::cause_nmi) { - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI,PULSE_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI,PULSE_LINE); } TIMER_DEVICE_CALLBACK_MEMBER(polgar_state::cause_M6502_irq) { - machine().device("maincpu")->execute().set_input_line(M65C02_IRQ_LINE, HOLD_LINE); + m_maincpu->set_input_line(M65C02_IRQ_LINE, HOLD_LINE); } @@ -948,7 +948,7 @@ WRITE16_MEMBER(polgar_state::write_unknown2) READ32_MEMBER(polgar_state::read_unknown3_32) { - logerror("Read from unknown3 offset: %x %08x\n",offset,(unsigned int) machine().device("maincpu")->state().state_int(M68K_PC)); + logerror("Read from unknown3 offset: %x %08x\n",offset,(unsigned int) m_maincpu->state_int(M68K_PC)); return 0xffffffff; //return unknown2_data|unknown2_data<<24; @@ -975,19 +975,19 @@ WRITE32_MEMBER(polgar_state::write_1000000) TIMER_DEVICE_CALLBACK_MEMBER(polgar_state::timer_update_irq6) { - machine().device("maincpu")->execute().set_input_line(6, HOLD_LINE); + m_maincpu->set_input_line(6, HOLD_LINE); } TIMER_DEVICE_CALLBACK_MEMBER(polgar_state::timer_update_irq2) { - machine().device("maincpu")->execute().set_input_line(2, HOLD_LINE); + m_maincpu->set_input_line(2, HOLD_LINE); } TIMER_DEVICE_CALLBACK_MEMBER(polgar_state::timer_update_irq_academy) { if (academyallowNMI) { - machine().device("maincpu")->execute().set_input_line(6, HOLD_LINE); + m_maincpu->set_input_line(6, HOLD_LINE); } } diff --git a/src/mess/drivers/mod8.c b/src/mess/drivers/mod8.c index a074bf79116..c3975601c82 100644 --- a/src/mess/drivers/mod8.c +++ b/src/mess/drivers/mod8.c @@ -25,7 +25,8 @@ public: mod8_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_teleprinter(*this, TELEPRINTER_TAG) - { } + , + m_maincpu(*this, "maincpu") { } required_device<teleprinter_device> m_teleprinter; DECLARE_WRITE8_MEMBER(out_w); @@ -37,6 +38,7 @@ public: int m_tty_cnt; virtual void machine_reset(); IRQ_CALLBACK_MEMBER(mod8_irq_callback); + required_device<cpu_device> m_maincpu; }; WRITE8_MEMBER( mod8_state::out_w ) @@ -90,13 +92,13 @@ IRQ_CALLBACK_MEMBER(mod8_state::mod8_irq_callback) void mod8_state::machine_reset() { - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mod8_state::mod8_irq_callback),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mod8_state::mod8_irq_callback),this)); } WRITE8_MEMBER( mod8_state::kbd_put ) { m_tty_key_data = data ^ 0xff; - machine().device("maincpu")->execute().set_input_line(0, HOLD_LINE); + m_maincpu->set_input_line(0, HOLD_LINE); } static GENERIC_TELEPRINTER_INTERFACE( teleprinter_intf ) diff --git a/src/mess/drivers/multi16.c b/src/mess/drivers/multi16.c index 30871f718e7..52af7e91710 100644 --- a/src/mess/drivers/multi16.c +++ b/src/mess/drivers/multi16.c @@ -125,7 +125,7 @@ IRQ_CALLBACK_MEMBER(multi16_state::multi16_irq_callback) WRITE_LINE_MEMBER( multi16_state::multi16_set_int_line ) { //printf("%02x\n",interrupt); - machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); + m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } static const struct pic8259_interface multi16_pic8259_config = @@ -137,7 +137,7 @@ static const struct pic8259_interface multi16_pic8259_config = void multi16_state::machine_start() { - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(multi16_state::multi16_irq_callback),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(multi16_state::multi16_irq_callback),this)); } diff --git a/src/mess/drivers/mz6500.c b/src/mess/drivers/mz6500.c index 54113d7cd45..91383c59160 100644 --- a/src/mess/drivers/mz6500.c +++ b/src/mess/drivers/mz6500.c @@ -19,7 +19,8 @@ public: m_hgdc(*this, "upd7220"), m_fdc(*this, "upd765") , - m_video_ram(*this, "video_ram"){ } + m_video_ram(*this, "video_ram"), + m_maincpu(*this, "maincpu") { } required_device<upd7220_device> m_hgdc; required_device<upd765a_device> m_fdc; @@ -30,6 +31,7 @@ public: required_shared_ptr<UINT8> m_video_ram; virtual void machine_reset(); virtual void video_start(); + required_device<cpu_device> m_maincpu; }; static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels ) diff --git a/src/mess/drivers/nc.c b/src/mess/drivers/nc.c index bd380977d39..9efe4589da2 100644 --- a/src/mess/drivers/nc.c +++ b/src/mess/drivers/nc.c @@ -507,7 +507,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(nc_state::dummy_timer_callback) case NC_TYPE_1xx: { LOG(("nmi triggered\n")); - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } break; diff --git a/src/mess/drivers/nes.c b/src/mess/drivers/nes.c index 699ee6a23a9..6a824d401f3 100644 --- a/src/mess/drivers/nes.c +++ b/src/mess/drivers/nes.c @@ -456,7 +456,7 @@ static const nes_interface nes_apu_interface = void nes_state::ppu_nmi(int *ppu_regs) { - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } diff --git a/src/mess/drivers/ngp.c b/src/mess/drivers/ngp.c index 8e6a299593f..962f4c1a7d2 100644 --- a/src/mess/drivers/ngp.c +++ b/src/mess/drivers/ngp.c @@ -132,7 +132,8 @@ public: m_mainram( *this, "mainram" ), m_k1ge( *this, "k1ge" ), m_io_controls( *this, "Controls" ), - m_io_power( *this, "Power" ) { + m_io_power( *this, "Power" ) , + m_maincpu(*this, "maincpu") { m_flash_chip[0].present = 0; m_flash_chip[0].state = F_READ; m_flash_chip[0].data = NULL; @@ -200,6 +201,7 @@ protected: virtual void nvram_default(); virtual void nvram_read(emu_file &file); virtual void nvram_write(emu_file &file); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/okean240.c b/src/mess/drivers/okean240.c index 5cc2d23073c..af65b02a00e 100644 --- a/src/mess/drivers/okean240.c +++ b/src/mess/drivers/okean240.c @@ -63,7 +63,8 @@ public: m_scroll(0), m_p_videoram(*this, "p_videoram"), m_io_modifiers(*this, "MODIFIERS") - { } + , + m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER(okean240_kbd_status_r); DECLARE_READ8_MEMBER(okean240a_kbd_status_r); @@ -88,6 +89,7 @@ public: protected: optional_ioport m_io_modifiers; ioport_port *m_io_port[11]; + required_device<cpu_device> m_maincpu; }; // okean240 requires bit 4 to change diff --git a/src/mess/drivers/p112.c b/src/mess/drivers/p112.c index 694e61431d0..809342a9f8e 100644 --- a/src/mess/drivers/p112.c +++ b/src/mess/drivers/p112.c @@ -39,11 +39,13 @@ class p112_state : public driver_device { public: p112_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_p112(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/p2000t.c b/src/mess/drivers/p2000t.c index 6a9dc9a2405..0eb879d92c7 100644 --- a/src/mess/drivers/p2000t.c +++ b/src/mess/drivers/p2000t.c @@ -204,7 +204,7 @@ INPUT_PORTS_END INTERRUPT_GEN_MEMBER(p2000t_state::p2000_interrupt) { - machine().device("maincpu")->execute().set_input_line(0, HOLD_LINE); + m_maincpu->set_input_line(0, HOLD_LINE); } READ8_MEMBER( p2000t_state::videoram_r ) diff --git a/src/mess/drivers/p8k.c b/src/mess/drivers/p8k.c index 800b1eeb66f..c037330e54a 100644 --- a/src/mess/drivers/p8k.c +++ b/src/mess/drivers/p8k.c @@ -228,7 +228,7 @@ static GENERIC_TERMINAL_INTERFACE( terminal_intf ) WRITE_LINE_MEMBER( p8k_state::p8k_daisy_interrupt ) { - machine().device("maincpu")->execute().set_input_line(0, state); + m_maincpu->set_input_line(0, state); } /* Z80 DMA */ diff --git a/src/mess/drivers/palmz22.c b/src/mess/drivers/palmz22.c index a6b9df0d804..855794ef112 100644 --- a/src/mess/drivers/palmz22.c +++ b/src/mess/drivers/palmz22.c @@ -252,7 +252,7 @@ void palmz22_state::machine_start() void palmz22_state::machine_reset() { - machine().device("maincpu")->reset(); + m_maincpu->reset(); memset( m_port, 0, sizeof( m_port)); } diff --git a/src/mess/drivers/paso1600.c b/src/mess/drivers/paso1600.c index 9b16318c170..13f05887274 100644 --- a/src/mess/drivers/paso1600.c +++ b/src/mess/drivers/paso1600.c @@ -283,7 +283,7 @@ IRQ_CALLBACK_MEMBER(paso1600_state::paso1600_irq_callback) WRITE_LINE_MEMBER( paso1600_state::paso1600_set_int_line ) { //printf("%02x\n",interrupt); - machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); + m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } static const struct pic8259_interface paso1600_pic8259_config = diff --git a/src/mess/drivers/pasogo.c b/src/mess/drivers/pasogo.c index fa706d4dd1d..1c1211a00ab 100644 --- a/src/mess/drivers/pasogo.c +++ b/src/mess/drivers/pasogo.c @@ -465,7 +465,7 @@ IRQ_CALLBACK_MEMBER(pasogo_state::pasogo_irq_callback) void pasogo_state::machine_reset() { - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pasogo_state::pasogo_irq_callback),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pasogo_state::pasogo_irq_callback),this)); } //static const unsigned i86_address_mask = 0x000fffff; @@ -492,7 +492,7 @@ static const pit8253_config pc_pit8254_config = WRITE_LINE_MEMBER(pasogo_state::pasogo_pic8259_set_int_line) { - machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); + m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } static const pic8259_interface pasogo_pic8259_config = diff --git a/src/mess/drivers/pasopia7.c b/src/mess/drivers/pasopia7.c index d91ced35785..99c644ea51c 100644 --- a/src/mess/drivers/pasopia7.c +++ b/src/mess/drivers/pasopia7.c @@ -539,7 +539,7 @@ void pasopia7_state::pasopia_nmi_trap() m_nmi_trap |= 2; if(m_nmi_mask == 0) - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } } @@ -870,7 +870,7 @@ WRITE8_MEMBER( pasopia7_state::nmi_mask_w ) { m_nmi_reset &= ~4; m_nmi_trap &= ~2; - //machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, CLEAR_LINE); //guess + //m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); //guess } } diff --git a/src/mess/drivers/pb1000.c b/src/mess/drivers/pb1000.c index 19abf0394c6..5624f0cc268 100644 --- a/src/mess/drivers/pb1000.c +++ b/src/mess/drivers/pb1000.c @@ -485,8 +485,8 @@ static const hd61700_config pb2000c_config = TIMER_CALLBACK_MEMBER(pb1000_state::keyboard_timer) { - machine().device("maincpu")->execute().set_input_line(HD61700_KEY_INT, ASSERT_LINE); - machine().device("maincpu")->execute().set_input_line(HD61700_KEY_INT, CLEAR_LINE); + m_maincpu->set_input_line(HD61700_KEY_INT, ASSERT_LINE); + m_maincpu->set_input_line(HD61700_KEY_INT, CLEAR_LINE); } void pb1000_state::machine_start() diff --git a/src/mess/drivers/pc100.c b/src/mess/drivers/pc100.c index 684533197b2..4419edf7e44 100644 --- a/src/mess/drivers/pc100.c +++ b/src/mess/drivers/pc100.c @@ -68,7 +68,8 @@ public: : driver_device(mconfig, type, tag), m_rtc(*this, "rtc"), m_palram(*this, "palram") - { } + , + m_maincpu(*this, "maincpu") { } required_device<msm58321_device> m_rtc; required_shared_ptr<UINT16> m_palram; @@ -116,6 +117,7 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(pc100_50hz_irq); TIMER_DEVICE_CALLBACK_MEMBER(pc100_10hz_irq); IRQ_CALLBACK_MEMBER(pc100_irq_callback); + required_device<cpu_device> m_maincpu; }; void pc100_state::video_start() @@ -408,7 +410,7 @@ IRQ_CALLBACK_MEMBER(pc100_state::pc100_irq_callback) WRITE_LINE_MEMBER( pc100_state::pc100_set_int_line ) { //printf("%02x\n",interrupt); - machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); + m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } static const struct pic8259_interface pc100_pic8259_config = @@ -420,7 +422,7 @@ static const struct pic8259_interface pc100_pic8259_config = void pc100_state::machine_start() { - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc100_state::pc100_irq_callback),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc100_state::pc100_irq_callback),this)); m_kanji_rom = (UINT16 *)(*machine().root_device().memregion("kanji")); m_vram = (UINT16 *)(*memregion("vram")); } diff --git a/src/mess/drivers/pc8801.c b/src/mess/drivers/pc8801.c index 4385ab15422..4b15841fed9 100644 --- a/src/mess/drivers/pc8801.c +++ b/src/mess/drivers/pc8801.c @@ -2290,7 +2290,7 @@ void pc8801_state::pc8801_raise_irq(UINT8 irq,UINT8 state) WRITE_LINE_MEMBER(pc8801_state::pic_int_w) { - device_t *device = machine().device("maincpu"); + device_t *device = m_maincpu; // if (state == ASSERT_LINE) // { // } @@ -2298,7 +2298,7 @@ WRITE_LINE_MEMBER(pc8801_state::pic_int_w) WRITE_LINE_MEMBER(pc8801_state::pic_enlg_w) { - device_t *device = machine().device("maincpu"); + device_t *device = m_maincpu; //if (state == CLEAR_LINE) //{ //} @@ -2379,7 +2379,7 @@ WRITE_LINE_MEMBER(pc8801_state::pc8801_sound_irq) m_sound_irq_latch = 1; m_sound_irq_pending = 0; //IRQ_LOG(("sound\n")); - machine().device("maincpu")->execute().set_input_line(0,HOLD_LINE); + m_maincpu->set_input_line(0,HOLD_LINE); } else m_sound_irq_pending = 1; diff --git a/src/mess/drivers/pc88va.c b/src/mess/drivers/pc88va.c index 3365970af20..42a8e673f35 100644 --- a/src/mess/drivers/pc88va.c +++ b/src/mess/drivers/pc88va.c @@ -710,7 +710,7 @@ WRITE8_MEMBER(pc88va_state::idp_command_w) void pc88va_state::tsp_sprite_enable(UINT32 spr_offset, UINT8 sw_bit) { - address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &space = m_maincpu->space(AS_PROGRAM); space.write_word(spr_offset, space.read_word(spr_offset) & ~0x200); space.write_word(spr_offset, space.read_word(spr_offset) | (sw_bit & 0x200)); @@ -1623,7 +1623,7 @@ IRQ_CALLBACK_MEMBER(pc88va_state::pc88va_irq_callback) WRITE_LINE_MEMBER(pc88va_state::pc88va_pic_irq) { - machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); + m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); // logerror("PIC#1: set IRQ line to %i\n",interrupt); } @@ -1651,7 +1651,7 @@ static const struct pic8259_interface pc88va_pic8259_slave_config = void pc88va_state::machine_start() { - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc88va_state::pc88va_irq_callback),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc88va_state::pc88va_irq_callback),this)); m_t3_mouse_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pc88va_state::t3_mouse_callback),this)); m_t3_mouse_timer->adjust(attotime::never); diff --git a/src/mess/drivers/pc9801.c b/src/mess/drivers/pc9801.c index f4f9f6222b6..3b38257e98e 100644 --- a/src/mess/drivers/pc9801.c +++ b/src/mess/drivers/pc9801.c @@ -1855,7 +1855,7 @@ WRITE8_MEMBER(pc9801_state::pc9801rs_f0_w) /* reset POR bit, TODO: is there any other way? */ por = machine().device<i8255_device>("ppi8255_sys")->read(space, 2) & ~0x20; machine().device<i8255_device>("ppi8255_sys")->write(space, 2,por); - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_RESET, PULSE_LINE); + m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE); } if(offset == 0x02) @@ -2915,7 +2915,7 @@ ir7 WRITE_LINE_MEMBER(pc9801_state::pc9801_master_set_int_line) { //printf("%02x\n",interrupt); - machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); + m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } READ8_MEMBER(pc9801_state::get_slave_ack) @@ -3338,7 +3338,7 @@ IRQ_CALLBACK_MEMBER(pc9801_state::irq_callback) MACHINE_START_MEMBER(pc9801_state,pc9801_common) { - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc9801_state::irq_callback),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc9801_state::irq_callback),this)); m_rtc->cs_w(1); m_rtc->oe_w(0); // TODO: unknown connection, MS-DOS 6.2x wants this low somehow with the test mode diff --git a/src/mess/drivers/pce.c b/src/mess/drivers/pce.c index 62866fc9c4a..475772ecfd6 100644 --- a/src/mess/drivers/pce.c +++ b/src/mess/drivers/pce.c @@ -355,7 +355,7 @@ UINT32 pce_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, con WRITE_LINE_MEMBER(pce_state::pce_irq_changed) { - machine().device("maincpu")->execute().set_input_line(0, state); + m_maincpu->set_input_line(0, state); } diff --git a/src/mess/drivers/pcw.c b/src/mess/drivers/pcw.c index c695de298b3..b182c2250cd 100644 --- a/src/mess/drivers/pcw.c +++ b/src/mess/drivers/pcw.c @@ -423,7 +423,7 @@ WRITE8_MEMBER(pcw_state::pcw_system_control_w) /* reboot */ case 1: { - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_RESET, PULSE_LINE); + m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE); popmessage("SYS: Reboot"); } break; @@ -1045,7 +1045,7 @@ void pcw_state::machine_reset() DRIVER_INIT_MEMBER(pcw_state,pcw) { - machine().device("maincpu")->execute().set_input_line_vector(0, 0x0ff); + m_maincpu->set_input_line_vector(0, 0x0ff); /* lower 4 bits are interrupt counter */ m_system_status = 0x000; diff --git a/src/mess/drivers/pdp11.c b/src/mess/drivers/pdp11.c index 8bbfcfa5269..945bd0b3418 100644 --- a/src/mess/drivers/pdp11.c +++ b/src/mess/drivers/pdp11.c @@ -283,7 +283,7 @@ MACHINE_RESET_MEMBER(pdp11_state,pdp11ub2) addr = 0165000; } addr += machine().root_device().ioport("S1_2")->read() * 2; - machine().device("maincpu")->state().set_state_int(T11_PC, addr); + m_maincpu->set_state_int(T11_PC, addr); } //0173000 @@ -299,7 +299,7 @@ MACHINE_RESET_MEMBER(pdp11_state,pdp11ub2) MACHINE_RESET_MEMBER(pdp11_state,pdp11qb) { - machine().device("maincpu")->state().set_state_int(T11_PC, 0xea00); + m_maincpu->set_state_int(T11_PC, 0xea00); } static const struct t11_setup pdp11_data = diff --git a/src/mess/drivers/pegasus.c b/src/mess/drivers/pegasus.c index 818ddc832f1..438929cc84d 100644 --- a/src/mess/drivers/pegasus.c +++ b/src/mess/drivers/pegasus.c @@ -98,7 +98,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(pegasus_state::pegasus_firq) WRITE_LINE_MEMBER( pegasus_state::pegasus_firq_clr ) { - machine().device("maincpu")->execute().set_input_line(M6809_FIRQ_LINE, CLEAR_LINE); + m_maincpu->set_input_line(M6809_FIRQ_LINE, CLEAR_LINE); } READ8_MEMBER( pegasus_state::pegasus_keyboard_r ) diff --git a/src/mess/drivers/pes.c b/src/mess/drivers/pes.c index 0bf6477501c..35fe13d70ee 100644 --- a/src/mess/drivers/pes.c +++ b/src/mess/drivers/pes.c @@ -86,8 +86,8 @@ WRITE8_MEMBER(pes_state::pes_kbd_input) fprintf(stderr,"kb input fifo fullness: %d\n",(m_infifo_head_ptr-m_infifo_tail_ptr)&0x1F); #endif // todo: following two should be set so clear happens after one cpu cycle - machine().device("maincpu")->execute().set_input_line(MCS51_RX_LINE, ASSERT_LINE); - machine().device("maincpu")->execute().set_input_line(MCS51_RX_LINE, CLEAR_LINE); + m_maincpu->set_input_line(MCS51_RX_LINE, ASSERT_LINE); + m_maincpu->set_input_line(MCS51_RX_LINE, CLEAR_LINE); } static GENERIC_TERMINAL_INTERFACE( pes_terminal_intf ) @@ -228,8 +228,8 @@ void pes_state::machine_reset() DRIVER_INIT_MEMBER(pes_state,pes) { - i8051_set_serial_tx_callback(machine().device("maincpu"), write8_delegate(FUNC(pes_state::data_from_i8031),this)); - i8051_set_serial_rx_callback(machine().device("maincpu"), read8_delegate(FUNC(pes_state::data_to_i8031),this)); + i8051_set_serial_tx_callback(m_maincpu, write8_delegate(FUNC(pes_state::data_from_i8031),this)); + i8051_set_serial_rx_callback(m_maincpu, read8_delegate(FUNC(pes_state::data_to_i8031),this)); } /****************************************************************************** diff --git a/src/mess/drivers/pimps.c b/src/mess/drivers/pimps.c index 92a4230c844..b842f1d93b0 100644 --- a/src/mess/drivers/pimps.c +++ b/src/mess/drivers/pimps.c @@ -30,7 +30,8 @@ class pimps_state : public driver_device public: pimps_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_terminal(*this, TERMINAL_TAG) { } + m_terminal(*this, TERMINAL_TAG) , + m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER(term_status_r); DECLARE_READ8_MEMBER(term_r); @@ -39,6 +40,7 @@ public: virtual void machine_reset(); required_device<generic_terminal_device> m_terminal; + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/pipbug.c b/src/mess/drivers/pipbug.c index 336a2b74944..b86654291fc 100644 --- a/src/mess/drivers/pipbug.c +++ b/src/mess/drivers/pipbug.c @@ -46,12 +46,14 @@ class pipbug_state : public driver_device public: pipbug_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_terminal(*this, TERMINAL_TAG) { } + m_terminal(*this, TERMINAL_TAG) , + m_maincpu(*this, "maincpu") { } DECLARE_WRITE8_MEMBER(pipbug_ctrl_w); DECLARE_READ8_MEMBER(pipbug_serial_r); DECLARE_WRITE8_MEMBER(pipbug_serial_w); required_device<serial_terminal_device> m_terminal; + required_device<cpu_device> m_maincpu; }; WRITE8_MEMBER( pipbug_state::pipbug_ctrl_w ) diff --git a/src/mess/drivers/pmi80.c b/src/mess/drivers/pmi80.c index 1a1a72cf10a..ebfaf4fad36 100644 --- a/src/mess/drivers/pmi80.c +++ b/src/mess/drivers/pmi80.c @@ -41,7 +41,8 @@ public: pmi80_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_ledready(0) - { } + , + m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER(keyboard_r); DECLARE_WRITE8_MEMBER(keyboard_w); @@ -49,6 +50,7 @@ public: UINT8 m_keyrow; bool m_ledready; virtual void machine_reset(); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/pockstat.c b/src/mess/drivers/pockstat.c index 1a85bdabe6f..16f7bcd606a 100644 --- a/src/mess/drivers/pockstat.c +++ b/src/mess/drivers/pockstat.c @@ -92,7 +92,8 @@ class pockstat_state : public driver_device public: pockstat_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_lcd_buffer(*this, "lcd_buffer"){ } + m_lcd_buffer(*this, "lcd_buffer"), + m_maincpu(*this, "maincpu") { } required_shared_ptr<UINT32> m_lcd_buffer; ps_ftlb_regs_t m_ftlb_regs; @@ -131,6 +132,7 @@ public: UINT32 ps_intc_get_interrupt_line(UINT32 line); void ps_intc_set_interrupt_line(UINT32 line, int state); void ps_timer_start(int index); + required_device<cpu_device> m_maincpu; }; @@ -320,19 +322,19 @@ void pockstat_state::ps_intc_set_interrupt_line(UINT32 line, int state) } if(m_intc_regs.hold & m_intc_regs.enable & PS_INT_IRQ_MASK) { - machine().device("maincpu")->execute().set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); } else { - machine().device("maincpu")->execute().set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); + m_maincpu->set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); } if(m_intc_regs.hold & m_intc_regs.enable & PS_INT_FIQ_MASK) { - machine().device("maincpu")->execute().set_input_line(ARM7_FIRQ_LINE, ASSERT_LINE); + m_maincpu->set_input_line(ARM7_FIRQ_LINE, ASSERT_LINE); } else { - machine().device("maincpu")->execute().set_input_line(ARM7_FIRQ_LINE, CLEAR_LINE); + m_maincpu->set_input_line(ARM7_FIRQ_LINE, CLEAR_LINE); } } @@ -526,7 +528,7 @@ WRITE32_MEMBER(pockstat_state::ps_clock_w) case 0x0000/4: verboselog(0, "ps_clock_w: Clock Mode = %08x & %08x\n", data, mem_mask ); COMBINE_DATA(&m_clock_regs.mode); - machine().device("maincpu")->set_unscaled_clock(CPU_FREQ[m_clock_regs.mode & 0x0f]); + m_maincpu->set_unscaled_clock(CPU_FREQ[m_clock_regs.mode & 0x0f]); break; case 0x0004/4: verboselog(0, "ps_clock_w: Clock Control = %08x & %08x\n", data, mem_mask ); @@ -897,7 +899,7 @@ void pockstat_state::machine_start() void pockstat_state::machine_reset() { - machine().device("maincpu")->state().set_pc(0x4000000); + m_maincpu->set_pc(0x4000000); m_ps_flash_write_enable_count = 0; m_ps_flash_write_count = 0; diff --git a/src/mess/drivers/prestige.c b/src/mess/drivers/prestige.c index 9d9bd22ecb9..6637c19c695 100644 --- a/src/mess/drivers/prestige.c +++ b/src/mess/drivers/prestige.c @@ -472,7 +472,7 @@ UINT32 prestige_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap TIMER_DEVICE_CALLBACK_MEMBER(prestige_state::irq_timer) { - machine().device("maincpu")->execute().set_input_line(0, ASSERT_LINE); + m_maincpu->set_input_line(0, ASSERT_LINE); } static MACHINE_CONFIG_START( prestige, prestige_state ) diff --git a/src/mess/drivers/psion.c b/src/mess/drivers/psion.c index 70628705b4c..d860d4a400f 100644 --- a/src/mess/drivers/psion.c +++ b/src/mess/drivers/psion.c @@ -25,7 +25,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(psion_state::nmi_timer) { if (m_enable_nmi) - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } UINT8 psion_state::kb_read(running_machine &machine) diff --git a/src/mess/drivers/psx.c b/src/mess/drivers/psx.c index 2397bf14309..93b55e4f8cb 100644 --- a/src/mess/drivers/psx.c +++ b/src/mess/drivers/psx.c @@ -24,7 +24,8 @@ class psx1_state : public driver_device { public: psx1_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } UINT8 *m_exe_buffer; int m_exe_size; @@ -49,6 +50,7 @@ public: int load_psf( cpu_device *cpu, unsigned char *p_n_file, int n_len ); void cd_dma_read( UINT32 *p_n_psxram, UINT32 n_address, INT32 n_size ); void cd_dma_write( UINT32 *p_n_psxram, UINT32 n_address, INT32 n_size ); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/pt68k4.c b/src/mess/drivers/pt68k4.c index 177535d9718..7b3440572f6 100644 --- a/src/mess/drivers/pt68k4.c +++ b/src/mess/drivers/pt68k4.c @@ -19,12 +19,14 @@ class pt68k4_state : public driver_device public: pt68k4_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_p_ram(*this, "p_ram"){ } + m_p_ram(*this, "p_ram"), + m_maincpu(*this, "maincpu") { } required_shared_ptr<UINT16> m_p_ram; virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_pt68k4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; static ADDRESS_MAP_START(pt68k4_mem, AS_PROGRAM, 16, pt68k4_state) @@ -45,7 +47,7 @@ void pt68k4_state::machine_reset() memcpy((UINT8*)m_p_ram.target(), user1, 8); - machine().device("maincpu")->reset(); + m_maincpu->reset(); } void pt68k4_state::video_start() diff --git a/src/mess/drivers/pv2000.c b/src/mess/drivers/pv2000.c index faefde0710e..423d561e582 100644 --- a/src/mess/drivers/pv2000.c +++ b/src/mess/drivers/pv2000.c @@ -85,7 +85,7 @@ WRITE8_MEMBER( pv2000_state::pv2000_keys_w ) m_keyb_column = data & 0x0f; - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); + m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); } @@ -308,7 +308,7 @@ WRITE_LINE_MEMBER( pv2000_state::pv2000_vdp_interrupt ) { // only if it goes up if (state && !m_last_state) - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_last_state = state; @@ -329,7 +329,7 @@ WRITE_LINE_MEMBER( pv2000_state::pv2000_vdp_interrupt ) | ioport( "IN8" )->read(); if ( key_pressed && m_key_pressed != key_pressed ) - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); + m_maincpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); m_key_pressed = key_pressed; } @@ -374,7 +374,7 @@ void pv2000_state::machine_reset() m_key_pressed = 0; m_keyb_column = 0; - machine().device("maincpu")->execute().set_input_line_vector(INPUT_LINE_IRQ0, 0xff); + m_maincpu->set_input_line_vector(INPUT_LINE_IRQ0, 0xff); memset(&memregion("maincpu")->base()[0x7000], 0xff, 0x1000); // initialize RAM } diff --git a/src/mess/drivers/pv9234.c b/src/mess/drivers/pv9234.c index 8eebfb91747..a09a76a9e5c 100644 --- a/src/mess/drivers/pv9234.c +++ b/src/mess/drivers/pv9234.c @@ -27,7 +27,8 @@ class pv9234_state : public driver_device public: pv9234_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_p_ram(*this, "p_ram"){ } + m_p_ram(*this, "p_ram"), + m_maincpu(*this, "maincpu") { } DECLARE_WRITE32_MEMBER(debug_w); DECLARE_WRITE32_MEMBER(debug1_w); @@ -36,6 +37,7 @@ public: virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_pv9234(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/px4.c b/src/mess/drivers/px4.c index c063837a798..19d696a09d4 100644 --- a/src/mess/drivers/px4.c +++ b/src/mess/drivers/px4.c @@ -83,7 +83,8 @@ public: m_speaker(*this, SPEAKER_TAG), m_sio(*this, "sio"), m_rs232(*this, "rs232") - { } + , + m_maincpu(*this, "maincpu") { } // internal devices required_device<cpu_device> m_z80; @@ -188,6 +189,7 @@ public: TIMER_CALLBACK_MEMBER(receive_data); TIMER_DEVICE_CALLBACK_MEMBER(frc_tick); TIMER_DEVICE_CALLBACK_MEMBER(upd7508_1sec_callback); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/pyl601.c b/src/mess/drivers/pyl601.c index 9fc7f94a186..e03eaf5d951 100644 --- a/src/mess/drivers/pyl601.c +++ b/src/mess/drivers/pyl601.c @@ -49,7 +49,8 @@ public: m_speaker(*this, SPEAKER_TAG), m_fdc(*this, "upd765"), m_ram(*this, RAM_TAG) - { } + , + m_maincpu(*this, "maincpu") { } UINT8 m_rom_page; UINT32 m_vdisk_addr; @@ -83,6 +84,7 @@ public: virtual void video_start(); INTERRUPT_GEN_MEMBER(pyl601_interrupt); DECLARE_FLOPPY_FORMATS( floppy_formats ); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/qx10.c b/src/mess/drivers/qx10.c index 117ef5d63eb..0970412410d 100644 --- a/src/mess/drivers/qx10.c +++ b/src/mess/drivers/qx10.c @@ -65,7 +65,8 @@ public: m_hgdc(*this, "upd7220"), m_rtc(*this, "rtc"), m_vram_bank(0) - { } + , + m_maincpu(*this, "maincpu") { } required_device<pit8253_device> m_pit_1; required_device<pit8253_device> m_pit_2; @@ -147,6 +148,7 @@ public: DECLARE_INPUT_CHANGED_MEMBER(key_stroke); DECLARE_WRITE_LINE_MEMBER(dma_hrq_changed); IRQ_CALLBACK_MEMBER(irq_callback); + required_device<cpu_device> m_maincpu; }; static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels ) @@ -539,7 +541,7 @@ static const struct pit8253_config qx10_pit8253_2_config = WRITE_LINE_MEMBER( qx10_state::qx10_pic8259_master_set_int_line ) { - machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); + m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } READ8_MEMBER( qx10_state::get_slave_ack ) @@ -909,7 +911,7 @@ INPUT_PORTS_END void qx10_state::machine_start() { - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(qx10_state::irq_callback),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(qx10_state::irq_callback),this)); m_fdc->setup_intrq_cb(upd765a_device::line_cb(FUNC(qx10_state::qx10_upd765_interrupt), this)); m_fdc->setup_drq_cb(upd765a_device::line_cb(FUNC(qx10_state::drq_w), this)); } diff --git a/src/mess/drivers/rainbow.c b/src/mess/drivers/rainbow.c index 1127b7b011e..8748f18ef65 100644 --- a/src/mess/drivers/rainbow.c +++ b/src/mess/drivers/rainbow.c @@ -81,7 +81,8 @@ public: m_lk201(*this, LK201_TAG), m_p_ram(*this, "p_ram"), m_shared(*this, "sh_ram") - { } + , + m_maincpu(*this, "maincpu") { } required_device<vt100_video_device> m_crtc; @@ -134,6 +135,7 @@ public: UINT32 screen_update_rainbow(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(vblank_irq); TIMER_DEVICE_CALLBACK_MEMBER(keyboard_tick); + required_device<cpu_device> m_maincpu; }; void rainbow_state::machine_start() diff --git a/src/mess/drivers/rd110.c b/src/mess/drivers/rd110.c index 2c18d3aff0b..427377f7b15 100644 --- a/src/mess/drivers/rd110.c +++ b/src/mess/drivers/rd110.c @@ -80,6 +80,7 @@ private: UINT8 midi; int midi_pos; UINT8 port0; + required_device<cpu_device> m_maincpu; }; d110_state::d110_state(const machine_config &mconfig, device_type type, const char *tag) : @@ -91,7 +92,8 @@ d110_state::d110_state(const machine_config &mconfig, device_type type, const ch memcs(*this, "memcs"), lcd(*this, "lcd"), midi_timer(*this, "midi_timer") -{ +, + m_maincpu(*this, "maincpu") { } diff --git a/src/mess/drivers/rmt32.c b/src/mess/drivers/rmt32.c index 84793cf0e57..c8da31571fe 100644 --- a/src/mess/drivers/rmt32.c +++ b/src/mess/drivers/rmt32.c @@ -218,6 +218,7 @@ private: UINT8 midi; int midi_pos; UINT8 port0; + required_device<cpu_device> m_maincpu; }; mt32_state::mt32_state(const machine_config &mconfig, device_type type, const char *tag) : @@ -226,7 +227,8 @@ mt32_state::mt32_state(const machine_config &mconfig, device_type type, const ch ram(*this, "ram"), lcd(*this, "lcd"), midi_timer(*this, "midi_timer") -{ +, + m_maincpu(*this, "maincpu") { } diff --git a/src/mess/drivers/rt1715.c b/src/mess/drivers/rt1715.c index 318e826b979..c335e6ed41e 100644 --- a/src/mess/drivers/rt1715.c +++ b/src/mess/drivers/rt1715.c @@ -26,7 +26,8 @@ class rt1715_state : public driver_device { public: rt1715_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } int m_led1_val; int m_led2_val; @@ -39,6 +40,7 @@ public: virtual void machine_start(); virtual void machine_reset(); virtual void palette_init(); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/rvoice.c b/src/mess/drivers/rvoice.c index 71eef931bb3..f1f21f484d4 100644 --- a/src/mess/drivers/rvoice.c +++ b/src/mess/drivers/rvoice.c @@ -73,7 +73,8 @@ class rvoice_state : public driver_device { public: rvoice_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } hd63701y0_t m_hd63701y0; rvoicepc_t m_rvoicepc; @@ -82,6 +83,7 @@ public: DECLARE_DRIVER_INIT(rvoicepc); virtual void machine_reset(); DECLARE_WRITE8_MEMBER(null_kbd_put); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/rx78.c b/src/mess/drivers/rx78.c index 84234c795cd..6ab94f85bef 100644 --- a/src/mess/drivers/rx78.c +++ b/src/mess/drivers/rx78.c @@ -515,7 +515,7 @@ ROM_END DRIVER_INIT_MEMBER(rx78_state,rx78) { UINT32 ram_size = machine().device<ram_device>(RAM_TAG)->size(); - address_space &prg = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &prg = m_maincpu->space(AS_PROGRAM); if(ram_size == 0x4000) prg.unmap_readwrite(0x6000, 0xafff); diff --git a/src/mess/drivers/samcoupe.c b/src/mess/drivers/samcoupe.c index 0fed5564354..120357a0919 100644 --- a/src/mess/drivers/samcoupe.c +++ b/src/mess/drivers/samcoupe.c @@ -165,7 +165,7 @@ READ8_MEMBER(samcoupe_state::samcoupe_lmpr_r) WRITE8_MEMBER(samcoupe_state::samcoupe_lmpr_w) { - address_space &space_program = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &space_program = m_maincpu->space(AS_PROGRAM); m_lmpr = data; samcoupe_update_memory(space_program); @@ -178,7 +178,7 @@ READ8_MEMBER(samcoupe_state::samcoupe_hmpr_r) WRITE8_MEMBER(samcoupe_state::samcoupe_hmpr_w) { - address_space &space_program = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &space_program = m_maincpu->space(AS_PROGRAM); m_hmpr = data; samcoupe_update_memory(space_program); @@ -191,7 +191,7 @@ READ8_MEMBER(samcoupe_state::samcoupe_vmpr_r) WRITE8_MEMBER(samcoupe_state::samcoupe_vmpr_w) { - address_space &space_program = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &space_program = m_maincpu->space(AS_PROGRAM); m_vmpr = data; samcoupe_update_memory(space_program); @@ -330,7 +330,7 @@ TIMER_CALLBACK_MEMBER(samcoupe_state::irq_off) /* clear interrupt */ if ((m_status & 0x1f) == 0x1f) - machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE); + m_maincpu->set_input_line(0, CLEAR_LINE); } diff --git a/src/mess/drivers/saturn.c b/src/mess/drivers/saturn.c index b48df25097f..40400e662d3 100644 --- a/src/mess/drivers/saturn.c +++ b/src/mess/drivers/saturn.c @@ -618,10 +618,10 @@ MACHINE_START_MEMBER(sat_console_state,saturn) scsp_set_ram_base(machine().device("scsp"), m_sound_ram); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x027fffff, read32_delegate(FUNC(sat_console_state::saturn_null_ram_r),this), write32_delegate(FUNC(sat_console_state::saturn_null_ram_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x027fffff, read32_delegate(FUNC(sat_console_state::saturn_null_ram_r),this), write32_delegate(FUNC(sat_console_state::saturn_null_ram_w),this)); machine().device("slave")->memory().space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x027fffff, read32_delegate(FUNC(sat_console_state::saturn_null_ram_r),this), write32_delegate(FUNC(sat_console_state::saturn_null_ram_w),this)); - machine().device("maincpu")->memory().space(AS_PROGRAM).nop_readwrite(0x04000000, 0x047fffff); + m_maincpu->space(AS_PROGRAM).nop_readwrite(0x04000000, 0x047fffff); machine().device("slave")->memory().space(AS_PROGRAM).nop_readwrite(0x04000000, 0x047fffff); if (m_exp) @@ -632,37 +632,37 @@ MACHINE_START_MEMBER(sat_console_state,saturn) case 0x22: case 0x23: case 0x24: - machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x04000000, 0x047fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_bram), (sat_cart_slot_device*)m_exp)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x04000000, 0x047fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_bram), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x04000000, 0x047fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_bram), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x04000000, 0x047fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_bram), (sat_cart_slot_device*)m_exp)); machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x04000000, 0x047fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_bram), (sat_cart_slot_device*)m_exp)); machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x04000000, 0x047fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_bram), (sat_cart_slot_device*)m_exp)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x24000000, 0x247fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_bram), (sat_cart_slot_device*)m_exp)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x24000000, 0x247fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_bram), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x24000000, 0x247fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_bram), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x24000000, 0x247fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_bram), (sat_cart_slot_device*)m_exp)); machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x24000000, 0x247fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_bram), (sat_cart_slot_device*)m_exp)); machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x24000000, 0x247fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_bram), (sat_cart_slot_device*)m_exp)); break; case 0x5a: // Data RAM cart case 0x5c: - machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x02400000, 0x025fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram0), (sat_cart_slot_device*)m_exp)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x02400000, 0x025fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram0), (sat_cart_slot_device*)m_exp)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x02600000, 0x027fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram1), (sat_cart_slot_device*)m_exp)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x02600000, 0x027fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram1), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x02400000, 0x025fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram0), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x02400000, 0x025fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram0), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x02600000, 0x027fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram1), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x02600000, 0x027fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram1), (sat_cart_slot_device*)m_exp)); machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x02400000, 0x025fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram0), (sat_cart_slot_device*)m_exp)); machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x02400000, 0x025fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram0), (sat_cart_slot_device*)m_exp)); machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x02600000, 0x027fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram1), (sat_cart_slot_device*)m_exp)); machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x02600000, 0x027fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram1), (sat_cart_slot_device*)m_exp)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x22400000, 0x225fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram0), (sat_cart_slot_device*)m_exp)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x22400000, 0x225fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram0), (sat_cart_slot_device*)m_exp)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x22600000, 0x227fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram1), (sat_cart_slot_device*)m_exp)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x22600000, 0x227fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram1), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x22400000, 0x225fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram0), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x22400000, 0x225fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram0), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x22600000, 0x227fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram1), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x22600000, 0x227fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram1), (sat_cart_slot_device*)m_exp)); machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x22400000, 0x225fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram0), (sat_cart_slot_device*)m_exp)); machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x22400000, 0x225fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram0), (sat_cart_slot_device*)m_exp)); machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x22600000, 0x227fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram1), (sat_cart_slot_device*)m_exp)); machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x22600000, 0x227fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram1), (sat_cart_slot_device*)m_exp)); break; case 0xff: // ROM cart + mirror - machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x02000000, 0x023fffff, read32_delegate(FUNC(sat_cart_slot_device::read_rom), (sat_cart_slot_device*)m_exp)); - machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x22000000, 0x223fffff, read32_delegate(FUNC(sat_cart_slot_device::read_rom), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x02000000, 0x023fffff, read32_delegate(FUNC(sat_cart_slot_device::read_rom), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x22000000, 0x223fffff, read32_delegate(FUNC(sat_cart_slot_device::read_rom), (sat_cart_slot_device*)m_exp)); machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x02000000, 0x023fffff, read32_delegate(FUNC(sat_cart_slot_device::read_rom), (sat_cart_slot_device*)m_exp)); machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x22000000, 0x223fffff, read32_delegate(FUNC(sat_cart_slot_device::read_rom), (sat_cart_slot_device*)m_exp)); break; @@ -733,7 +733,7 @@ MACHINE_RESET_MEMBER(sat_console_state,saturn) //memset(stv_m_workram_l, 0, 0x100000); //memset(stv_m_workram_h, 0, 0x100000); - machine().device("maincpu")->set_unscaled_clock(MASTER_CLOCK_320/2); + m_maincpu->set_unscaled_clock(MASTER_CLOCK_320/2); machine().device("slave")->set_unscaled_clock(MASTER_CLOCK_320/2); stvcd_reset(); @@ -846,7 +846,7 @@ void sat_console_state::saturn_init_driver(int rgn) m_vdp2.pal = (rgn == 12) ? 1 : 0; // set compatible options - sh2drc_set_options(machine().device("maincpu"), SH2DRC_STRICT_VERIFY|SH2DRC_STRICT_PCREL); + sh2drc_set_options(m_maincpu, SH2DRC_STRICT_VERIFY|SH2DRC_STRICT_PCREL); sh2drc_set_options(machine().device("slave"), SH2DRC_STRICT_VERIFY|SH2DRC_STRICT_PCREL); /* amount of time to boost interleave for on MINIT / SINIT, needed for communication to work */ diff --git a/src/mess/drivers/sbc6510.c b/src/mess/drivers/sbc6510.c index 273df3069ba..21a78bbc65a 100644 --- a/src/mess/drivers/sbc6510.c +++ b/src/mess/drivers/sbc6510.c @@ -60,7 +60,8 @@ class sbc6510_state : public driver_device public: sbc6510_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_terminal(*this, TERMINAL_TAG) { } + m_terminal(*this, TERMINAL_TAG) , + m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER(a2_r); DECLARE_WRITE8_MEMBER(a2_w); @@ -77,6 +78,7 @@ public: protected: ioport_port *m_io_port[8]; + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/sc2.c b/src/mess/drivers/sc2.c index 338c780f639..1bcc96c3679 100644 --- a/src/mess/drivers/sc2.c +++ b/src/mess/drivers/sc2.c @@ -21,7 +21,8 @@ public: sc2_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_beep(*this, BEEPER_TAG) - { } + , + m_maincpu(*this, "maincpu") { } required_device<beep_device> m_beep; DECLARE_READ8_MEMBER(pio_port_a_r); @@ -37,6 +38,7 @@ public: void sc2_update_display(); virtual void machine_start(); virtual void machine_reset(); + required_device<cpu_device> m_maincpu; }; READ8_MEMBER( sc2_state::sc2_beep ) diff --git a/src/mess/drivers/sdk85.c b/src/mess/drivers/sdk85.c index dad19ab71ea..62daadc7da6 100644 --- a/src/mess/drivers/sdk85.c +++ b/src/mess/drivers/sdk85.c @@ -30,12 +30,14 @@ class sdk85_state : public driver_device { public: sdk85_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } DECLARE_WRITE8_MEMBER(scanlines_w); DECLARE_WRITE8_MEMBER(digit_w); DECLARE_READ8_MEMBER(kbd_r); UINT8 m_digit; + required_device<cpu_device> m_maincpu; }; static ADDRESS_MAP_START(sdk85_mem, AS_PROGRAM, 8, sdk85_state) diff --git a/src/mess/drivers/sdk86.c b/src/mess/drivers/sdk86.c index 085c4f245dd..da52a5590f7 100644 --- a/src/mess/drivers/sdk86.c +++ b/src/mess/drivers/sdk86.c @@ -35,12 +35,14 @@ class sdk86_state : public driver_device { public: sdk86_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } DECLARE_WRITE8_MEMBER(scanlines_w); DECLARE_WRITE8_MEMBER(digit_w); DECLARE_READ8_MEMBER(kbd_r); UINT8 m_digit; + required_device<cpu_device> m_maincpu; }; static ADDRESS_MAP_START(sdk86_mem, AS_PROGRAM, 16, sdk86_state) diff --git a/src/mess/drivers/selz80.c b/src/mess/drivers/selz80.c index 5ba5d96b9d0..3f7d4ba7177 100644 --- a/src/mess/drivers/selz80.c +++ b/src/mess/drivers/selz80.c @@ -38,12 +38,14 @@ class selz80_state : public driver_device { public: selz80_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } DECLARE_WRITE8_MEMBER(scanlines_w); DECLARE_WRITE8_MEMBER(digit_w); DECLARE_READ8_MEMBER(kbd_r); UINT8 m_digit; + required_device<cpu_device> m_maincpu; }; static ADDRESS_MAP_START(selz80_mem, AS_PROGRAM, 8, selz80_state) diff --git a/src/mess/drivers/sgi_ip6.c b/src/mess/drivers/sgi_ip6.c index 3c93fe280d4..44ac6b64f85 100644 --- a/src/mess/drivers/sgi_ip6.c +++ b/src/mess/drivers/sgi_ip6.c @@ -28,7 +28,8 @@ class sgi_ip6_state : public driver_device { public: sgi_ip6_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } ip6_regs_t m_ip6_regs; DECLARE_READ32_MEMBER(ip6_unk1_r); @@ -44,6 +45,7 @@ public: UINT32 screen_update_sgi_ip6(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(sgi_ip6_vbl); inline void ATTR_PRINTF(3,4) verboselog( int n_level, const char *s_fmt, ... ); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/sm1800.c b/src/mess/drivers/sm1800.c index 6ac59e19046..68359c9b70b 100644 --- a/src/mess/drivers/sm1800.c +++ b/src/mess/drivers/sm1800.c @@ -79,7 +79,7 @@ void sm1800_state::machine_reset() INTERRUPT_GEN_MEMBER(sm1800_state::sm1800_vblank_interrupt) { - machine().device("maincpu")->execute().set_input_line(0, m_irq_state ? HOLD_LINE : CLEAR_LINE); + m_maincpu->set_input_line(0, m_irq_state ? HOLD_LINE : CLEAR_LINE); m_irq_state ^= 1; } diff --git a/src/mess/drivers/sms.c b/src/mess/drivers/sms.c index 41291bc2c2e..0a0ad8ae79b 100644 --- a/src/mess/drivers/sms.c +++ b/src/mess/drivers/sms.c @@ -359,7 +359,7 @@ INPUT_PORTS_END WRITE_LINE_MEMBER(sms_state::sms_int_callback) { - machine().device("maincpu")->execute().set_input_line(0, state); + m_maincpu->set_input_line(0, state); } static const sega315_5124_interface _315_5124_ntsc_intf = diff --git a/src/mess/drivers/socrates.c b/src/mess/drivers/socrates.c index d4c85fa5fb3..025c1f21a55 100644 --- a/src/mess/drivers/socrates.c +++ b/src/mess/drivers/socrates.c @@ -243,7 +243,7 @@ DRIVER_INIT_MEMBER(socrates_state,socrates) for (i = 0; i < 0x10000; i++) gfx[i] = (((i&0x1)?0x00:0xFF)^((i&0x100)?0x00:0xff)); // init sound channels to both be on lowest pitch and max volume - machine().device("maincpu")->set_clock_scale(0.45f); /* RAM access waitstates etc. aren't emulated - slow the CPU to compensate */ + m_maincpu->set_clock_scale(0.45f); /* RAM access waitstates etc. aren't emulated - slow the CPU to compensate */ } READ8_MEMBER(socrates_state::socrates_rom_bank_r) @@ -906,7 +906,7 @@ INPUT_PORTS_END ******************************************************************************/ TIMER_CALLBACK_MEMBER(socrates_state::clear_irq_cb) { - machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE); + m_maincpu->set_input_line(0, CLEAR_LINE); m_vblankstate = 0; } diff --git a/src/mess/drivers/spc1000.c b/src/mess/drivers/spc1000.c index ba0213ad930..de44c8b70fc 100644 --- a/src/mess/drivers/spc1000.c +++ b/src/mess/drivers/spc1000.c @@ -21,7 +21,8 @@ class spc1000_state : public driver_device public: spc1000_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_vdg(*this, "mc6847") {} + m_vdg(*this, "mc6847") , + m_maincpu(*this, "maincpu") {} required_device<mc6847_base_device> m_vdg; UINT8 m_IPLK; @@ -42,6 +43,7 @@ public: DECLARE_WRITE8_MEMBER(spc1000_gmode_w); DECLARE_READ8_MEMBER(spc1000_gmode_r); DECLARE_READ8_MEMBER(spc1000_mc6847_videoram_r); + required_device<cpu_device> m_maincpu; }; @@ -225,7 +227,7 @@ INPUT_PORTS_END void spc1000_state::machine_reset() { - address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &space = m_maincpu->space(AS_PROGRAM); UINT8 *mem = memregion("maincpu")->base(); UINT8 *ram = machine().device<ram_device>(RAM_TAG)->pointer(); diff --git a/src/mess/drivers/ssem.c b/src/mess/drivers/ssem.c index 11b2b77f3bf..f587a97fbfa 100644 --- a/src/mess/drivers/ssem.c +++ b/src/mess/drivers/ssem.c @@ -94,7 +94,7 @@ INPUT_CHANGED_MEMBER(ssem_state::panel_check) UINT8 edit2_state = machine().root_device().ioport("EDIT2")->read(); UINT8 edit3_state = machine().root_device().ioport("EDIT3")->read(); UINT8 misc_state = machine().root_device().ioport("MISC")->read(); - device_t *ssem_cpu = machine().device("maincpu"); + device_t *ssem_cpu = m_maincpu; switch( (int)(FPTR)param ) { @@ -451,7 +451,7 @@ void ssem_state::glyph_print(bitmap_rgb32 &bitmap, INT32 x, INT32 y, const char UINT32 ssem_state::screen_update_ssem(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { UINT32 line = 0; - device_t *ssem_cpu = machine().device("maincpu"); + device_t *ssem_cpu = m_maincpu; UINT32 accum = ssem_cpu->state().state_int(SSEM_A); UINT32 bit = 0; UINT32 word = 0; diff --git a/src/mess/drivers/stopthie.c b/src/mess/drivers/stopthie.c index 5d7457e60c9..74ccd4592d9 100644 --- a/src/mess/drivers/stopthie.c +++ b/src/mess/drivers/stopthie.c @@ -9,11 +9,13 @@ class stopthie_state : public driver_device { public: stopthie_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER(stopthie_read_k); DECLARE_WRITE16_MEMBER(stopthie_write_o); DECLARE_WRITE16_MEMBER(stopthie_write_r); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/sun1.c b/src/mess/drivers/sun1.c index c028085b5bd..c359e832d42 100644 --- a/src/mess/drivers/sun1.c +++ b/src/mess/drivers/sun1.c @@ -115,7 +115,7 @@ void sun1_state::machine_reset() memcpy((UINT8*)m_p_ram.target(),user1,0x4000); - machine().device("maincpu")->reset(); + m_maincpu->reset(); m_term_data = 0; } diff --git a/src/mess/drivers/sun2.c b/src/mess/drivers/sun2.c index cbf42f54866..9eb5595e1cf 100644 --- a/src/mess/drivers/sun2.c +++ b/src/mess/drivers/sun2.c @@ -105,7 +105,7 @@ void sun2_state::machine_reset() memcpy((UINT8*)m_p_ram.target(),user1,0x8000); - machine().device("maincpu")->reset(); + m_maincpu->reset(); } diff --git a/src/mess/drivers/sun3.c b/src/mess/drivers/sun3.c index 7649996cfbc..8c037227888 100644 --- a/src/mess/drivers/sun3.c +++ b/src/mess/drivers/sun3.c @@ -250,7 +250,7 @@ void sun3_state::machine_reset() memcpy((UINT8*)m_p_ram.target(),user1,0x10000); - machine().device("maincpu")->reset(); + m_maincpu->reset(); } diff --git a/src/mess/drivers/sun4.c b/src/mess/drivers/sun4.c index 56c064dcce2..9db1ecdc3fa 100644 --- a/src/mess/drivers/sun4.c +++ b/src/mess/drivers/sun4.c @@ -391,9 +391,11 @@ class sun4_state : public driver_device { public: sun4_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); + required_device<cpu_device> m_maincpu; }; static ADDRESS_MAP_START(sun4_mem, AS_PROGRAM, 32, sun4_state) diff --git a/src/mess/drivers/sys2900.c b/src/mess/drivers/sys2900.c index df5e795d82b..8cc448e782b 100644 --- a/src/mess/drivers/sys2900.c +++ b/src/mess/drivers/sys2900.c @@ -41,13 +41,15 @@ class sys2900_state : public driver_device { public: sys2900_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } DECLARE_DRIVER_INIT(sys2900); virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_sys2900(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TIMER_CALLBACK_MEMBER(sys2900_boot); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/tec1.c b/src/mess/drivers/tec1.c index 40e047e76c8..87d8c2dc1f1 100644 --- a/src/mess/drivers/tec1.c +++ b/src/mess/drivers/tec1.c @@ -187,7 +187,7 @@ READ8_MEMBER( tec1_state::latch_r ) READ8_MEMBER( tec1_state::tec1_kbd_r ) { - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); return m_kbd | ioport("SHIFT")->read(); } @@ -248,7 +248,7 @@ TIMER_CALLBACK_MEMBER(tec1_state::tec1_kbd_callback) if (machine().root_device().ioport(keynames[m_kbd_row])->read()) { m_kbd = tec1_convert_col_to_bin(machine().root_device().ioport(keynames[m_kbd_row])->read(), m_kbd_row); - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, HOLD_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, HOLD_LINE); m_key_pressed = TRUE; } else diff --git a/src/mess/drivers/terak.c b/src/mess/drivers/terak.c index be90fdb9d69..4caa8022083 100644 --- a/src/mess/drivers/terak.c +++ b/src/mess/drivers/terak.c @@ -13,7 +13,8 @@ class terak_state : public driver_device { public: terak_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } DECLARE_READ16_MEMBER(terak_fdc_status_r); DECLARE_WRITE16_MEMBER(terak_fdc_command_w); @@ -25,6 +26,7 @@ public: virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_terak(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; READ16_MEMBER( terak_state::terak_fdc_status_r ) diff --git a/src/mess/drivers/test_t400.c b/src/mess/drivers/test_t400.c index 3740b6339f8..3b4b06ca661 100644 --- a/src/mess/drivers/test_t400.c +++ b/src/mess/drivers/test_t400.c @@ -13,9 +13,11 @@ class t400_test_suite_state : public driver_device { public: t400_test_suite_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } DECLARE_WRITE8_MEMBER( port_l_w ); + required_device<cpu_device> m_maincpu; }; WRITE8_MEMBER( t400_test_suite_state::port_l_w ) diff --git a/src/mess/drivers/ti990_10.c b/src/mess/drivers/ti990_10.c index 90d08efaf27..70dbf7a1d74 100644 --- a/src/mess/drivers/ti990_10.c +++ b/src/mess/drivers/ti990_10.c @@ -81,7 +81,8 @@ class ti990_10_state : public driver_device { public: ti990_10_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } device_t *m_terminal; DECLARE_DRIVER_INIT(ti990_10); @@ -91,6 +92,7 @@ public: UINT32 screen_update_ti990_10(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(ti990_10_line_interrupt); void idle_callback(int state); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/ti990_4.c b/src/mess/drivers/ti990_4.c index 135b39ba4c6..f3f4f8992ff 100644 --- a/src/mess/drivers/ti990_4.c +++ b/src/mess/drivers/ti990_4.c @@ -52,7 +52,8 @@ class ti990_4_state : public driver_device { public: ti990_4_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } device_t *m_terminal; DECLARE_WRITE8_MEMBER(rset_callback); @@ -64,6 +65,7 @@ public: UINT32 screen_update_ti990_4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(ti990_4_line_interrupt); void idle_callback(int state); + required_device<cpu_device> m_maincpu; }; @@ -105,7 +107,7 @@ WRITE8_MEMBER(ti990_4_state::rset_callback) WRITE8_MEMBER(ti990_4_state::ckon_ckof_callback) { - device_t *maincpu = machine().device("maincpu"); + device_t *maincpu = m_maincpu; ti990_ckon_ckof_callback(maincpu, (offset & 0x1000) ? 1 : 0); } diff --git a/src/mess/drivers/ti99_2.c b/src/mess/drivers/ti99_2.c index b935151058a..96e681040af 100644 --- a/src/mess/drivers/ti99_2.c +++ b/src/mess/drivers/ti99_2.c @@ -87,7 +87,8 @@ class ti99_2_state : public driver_device public: ti99_2_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_videoram(*this, "videoram"){ } + m_videoram(*this, "videoram"), + m_maincpu(*this, "maincpu") { } required_shared_ptr<UINT8> m_videoram; int m_ROM_paged; @@ -103,6 +104,7 @@ public: virtual void palette_init(); UINT32 screen_update_ti99_2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(ti99_2_vblank_interrupt); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/tm990189.c b/src/mess/drivers/tm990189.c index cab4a47d1bb..64315c0fe40 100644 --- a/src/mess/drivers/tm990189.c +++ b/src/mess/drivers/tm990189.c @@ -78,7 +78,8 @@ public: m_speaker(*this, SPEAKER_TAG), m_cass(*this, CASSETTE_TAG), m_tms9918(*this, "tms9918" ) - { } + , + m_maincpu(*this, "maincpu") { } required_device<tms9980a_device> m_tms9980a; required_device<speaker_sound_device> m_speaker; @@ -153,6 +154,7 @@ private: void led_set(int number, bool state); void segment_set(int offset, bool state); void digitsel(int offset, bool state); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/tricep.c b/src/mess/drivers/tricep.c index 1b733fc754e..34e9f13808b 100644 --- a/src/mess/drivers/tricep.c +++ b/src/mess/drivers/tricep.c @@ -60,7 +60,7 @@ void tricep_state::machine_reset() memcpy((UINT8*)m_p_ram.target(),user1,0x2000); - machine().device("maincpu")->reset(); + m_maincpu->reset(); } WRITE8_MEMBER( tricep_state::kbd_put ) diff --git a/src/mess/drivers/tsispch.c b/src/mess/drivers/tsispch.c index abad5d27b89..fea33b7c5ce 100644 --- a/src/mess/drivers/tsispch.c +++ b/src/mess/drivers/tsispch.c @@ -170,7 +170,7 @@ static GENERIC_TERMINAL_INTERFACE( tsispch_terminal_intf ) *****************************************************************************/ WRITE_LINE_MEMBER(tsispch_state::pic8259_set_int_line) { - machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); + m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } static const struct pic8259_interface pic8259_config = @@ -272,7 +272,7 @@ void tsispch_state::machine_reset() int i; for (i=0; i<32; i++) m_infifo[i] = 0; m_infifo_tail_ptr = m_infifo_head_ptr = 0; - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(tsispch_state::irq_callback),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(tsispch_state::irq_callback),this)); fprintf(stderr,"machine reset\n"); } diff --git a/src/mess/drivers/tutor.c b/src/mess/drivers/tutor.c index f137c66c81e..38dbff07233 100644 --- a/src/mess/drivers/tutor.c +++ b/src/mess/drivers/tutor.c @@ -406,7 +406,7 @@ WRITE8_MEMBER( tutor_state::tutor_mapper_w ) TIMER_CALLBACK_MEMBER(tutor_state::tape_interrupt_handler) { //assert(m_tape_interrupt_enable); - machine().device("maincpu")->execute().set_input_line(1, (m_cass->input() > 0.0) ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(1, (m_cass->input() > 0.0) ? ASSERT_LINE : CLEAR_LINE); } /* CRU handler */ @@ -442,7 +442,7 @@ WRITE8_MEMBER( tutor_state::tutor_cassette_w ) else { m_tape_interrupt_timer->adjust(attotime::never); - machine().device("maincpu")->execute().set_input_line(1, CLEAR_LINE); + m_maincpu->set_input_line(1, CLEAR_LINE); } } break; diff --git a/src/mess/drivers/tx0.c b/src/mess/drivers/tx0.c index ead3d807319..c4f10ff48bb 100644 --- a/src/mess/drivers/tx0.c +++ b/src/mess/drivers/tx0.c @@ -648,20 +648,20 @@ TIMER_CALLBACK_MEMBER(tx0_state::reader_callback) if (data & 0100) { /* read current AC */ - ac = machine().device("maincpu")->state().state_int(TX0_AC); + ac = m_maincpu->state_int(TX0_AC); /* cycle right */ ac = (ac >> 1) | ((ac & 1) << 17); /* shuffle and insert data into AC */ ac = (ac /*& 0333333*/) | ((data & 001) << 17) | ((data & 002) << 13) | ((data & 004) << 9) | ((data & 010) << 5) | ((data & 020) << 1) | ((data & 040) >> 3); /* write modified AC */ - machine().device("maincpu")->state().set_state_int(TX0_AC, ac); + m_maincpu->set_state_int(TX0_AC, ac); m_tape_reader.rc = (m_tape_reader.rc+1) & 3; if (m_tape_reader.rc == 0) { /* IO complete */ m_tape_reader.rcl = 0; - machine().device("maincpu")->state().set_state_int(TX0_IO_COMPLETE, (UINT64)0); + m_maincpu->set_state_int(TX0_IO_COMPLETE, (UINT64)0); } } } @@ -697,7 +697,7 @@ void tx0_punchtape_image_device::call_unload() TIMER_CALLBACK_MEMBER(tx0_state::puncher_callback) { - machine().device("maincpu")->state().set_state_int(TX0_IO_COMPLETE, (UINT64)0); + m_maincpu->set_state_int(TX0_IO_COMPLETE, (UINT64)0); } /* @@ -792,7 +792,7 @@ static void typewriter_out(running_machine &machine, UINT8 data) */ TIMER_CALLBACK_MEMBER(tx0_state::prt_callback) { - machine().device("maincpu")->state().set_state_int(TX0_IO_COMPLETE, (UINT64)0); + m_maincpu->set_state_int(TX0_IO_COMPLETE, (UINT64)0); } /* @@ -819,7 +819,7 @@ static void tx0_io_prt(device_t *device) */ TIMER_CALLBACK_MEMBER(tx0_state::dis_callback) { - machine().device("maincpu")->state().set_state_int(TX0_IO_COMPLETE, (UINT64)0); + m_maincpu->set_state_int(TX0_IO_COMPLETE, (UINT64)0); } /* @@ -937,7 +937,7 @@ void tx0_magtape_image_device::call_unload() if ((state->m_magtape.state == MTS_SELECTED) || ((state->m_magtape.state == MTS_SELECTING) && (state->m_magtape.command == 2))) { /* unit has become unavailable */ state->m_magtape.state = MTS_UNSELECTING; - machine().device("maincpu")->state().set_state_int(TX0_PF, machine().device("maincpu")->state().state_int(TX0_PF) | PF_RWC); + state->m_maincpu->set_state_int(TX0_PF, state->m_maincpu->state_int(TX0_PF) | PF_RWC); schedule_unselect(state); } } @@ -1515,31 +1515,31 @@ INTERRUPT_GEN_MEMBER(tx0_state::tx0_interrupt) if (control_transitions & tx0_stop_cyc0) { - machine().device("maincpu")->state().set_state_int(TX0_STOP_CYC0, !machine().device("maincpu")->state().state_int(TX0_STOP_CYC0)); + m_maincpu->set_state_int(TX0_STOP_CYC0, !m_maincpu->state_int(TX0_STOP_CYC0)); } if (control_transitions & tx0_stop_cyc1) { - machine().device("maincpu")->state().set_state_int(TX0_STOP_CYC1, !machine().device("maincpu")->state().state_int(TX0_STOP_CYC1)); + m_maincpu->set_state_int(TX0_STOP_CYC1, !m_maincpu->state_int(TX0_STOP_CYC1)); } if (control_transitions & tx0_gbl_cm_sel) { - machine().device("maincpu")->state().set_state_int(TX0_GBL_CM_SEL, !machine().device("maincpu")->state().state_int(TX0_GBL_CM_SEL)); + m_maincpu->set_state_int(TX0_GBL_CM_SEL, !m_maincpu->state_int(TX0_GBL_CM_SEL)); } if (control_transitions & tx0_stop) { - machine().device("maincpu")->state().set_state_int(TX0_RUN, (UINT64)0); - machine().device("maincpu")->state().set_state_int(TX0_RIM, (UINT64)0); + m_maincpu->set_state_int(TX0_RUN, (UINT64)0); + m_maincpu->set_state_int(TX0_RIM, (UINT64)0); } if (control_transitions & tx0_restart) { - machine().device("maincpu")->state().set_state_int(TX0_RUN, 1); - machine().device("maincpu")->state().set_state_int(TX0_RIM, (UINT64)0); + m_maincpu->set_state_int(TX0_RUN, 1); + m_maincpu->set_state_int(TX0_RIM, (UINT64)0); } if (control_transitions & tx0_read_in) { /* set cpu to read instructions from perforated tape */ - machine().device("maincpu")->state().set_state_int(TX0_RESET, (UINT64)0); - machine().device("maincpu")->state().set_state_int(TX0_RUN, (UINT64)0); - machine().device("maincpu")->state().set_state_int(TX0_RIM, 1); + m_maincpu->set_state_int(TX0_RESET, (UINT64)0); + m_maincpu->set_state_int(TX0_RUN, (UINT64)0); + m_maincpu->set_state_int(TX0_RIM, 1); } if (control_transitions & tx0_toggle_dn) { @@ -1557,16 +1557,16 @@ INTERRUPT_GEN_MEMBER(tx0_state::tx0_interrupt) { if (m_tsr_index >= 2) { - UINT32 cm_sel = (UINT32) machine().device("maincpu")->state().state_int(TX0_CM_SEL); - machine().device("maincpu")->state().set_state_int(TX0_CM_SEL, cm_sel ^ (1 << (m_tsr_index - 2))); + UINT32 cm_sel = (UINT32) m_maincpu->state_int(TX0_CM_SEL); + m_maincpu->set_state_int(TX0_CM_SEL, cm_sel ^ (1 << (m_tsr_index - 2))); } } if (control_transitions & tx0_lr_sel) { if (m_tsr_index >= 2) { - UINT32 lr_sel = (UINT32) machine().device("maincpu")->state().state_int(TX0_LR_SEL); - machine().device("maincpu")->state().set_state_int(TX0_LR_SEL, (lr_sel ^ (1 << (m_tsr_index - 2)))); + UINT32 lr_sel = (UINT32) m_maincpu->state_int(TX0_LR_SEL); + m_maincpu->set_state_int(TX0_LR_SEL, (lr_sel ^ (1 << (m_tsr_index - 2)))); } } @@ -1582,7 +1582,7 @@ INTERRUPT_GEN_MEMBER(tx0_state::tx0_interrupt) /* update toggle switch register */ if (tsr_transitions) - machine().device("maincpu")->state().set_state_int(TX0_TBR+m_tsr_index, machine().device("maincpu")->state().state_int(TX0_TBR+m_tsr_index) ^ tsr_transitions); + m_maincpu->set_state_int(TX0_TBR+m_tsr_index, m_maincpu->state_int(TX0_TBR+m_tsr_index) ^ tsr_transitions); /* remember new state of toggle switch register keys */ m_old_tsr_keys = tsr_keys; diff --git a/src/mess/drivers/uknc.c b/src/mess/drivers/uknc.c index 542c83238f9..f3a258bf0e4 100644 --- a/src/mess/drivers/uknc.c +++ b/src/mess/drivers/uknc.c @@ -14,11 +14,13 @@ class uknc_state : public driver_device { public: uknc_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_uknc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/unior.c b/src/mess/drivers/unior.c index f3819b1a353..03a7a24b082 100644 --- a/src/mess/drivers/unior.c +++ b/src/mess/drivers/unior.c @@ -42,7 +42,8 @@ class unior_state : public driver_device public: unior_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_p_videoram(*this, "p_videoram"){ } + m_p_videoram(*this, "p_videoram"), + m_maincpu(*this, "maincpu") { } DECLARE_WRITE8_MEMBER(vram_w); DECLARE_WRITE8_MEMBER(unior_4c_w); @@ -59,6 +60,7 @@ public: virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_unior(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; READ8_MEMBER( unior_state::unior_4c_r ) @@ -241,7 +243,7 @@ INPUT_PORTS_END void unior_state::machine_reset() { - machine().device("maincpu")->state().set_state_int(I8085_PC, 0xF800); + m_maincpu->set_state_int(I8085_PC, 0xF800); } void unior_state::video_start() diff --git a/src/mess/drivers/unistar.c b/src/mess/drivers/unistar.c index 30fd828ba64..b31bb75b1ac 100644 --- a/src/mess/drivers/unistar.c +++ b/src/mess/drivers/unistar.c @@ -14,11 +14,13 @@ class unistar_state : public driver_device { public: unistar_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_unistar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/vboy.c b/src/mess/drivers/vboy.c index a2d3d177318..b3a80576e3b 100644 --- a/src/mess/drivers/vboy.c +++ b/src/mess/drivers/vboy.c @@ -1374,8 +1374,8 @@ DEVICE_IMAGE_LOAD_MEMBER( vboy_state, vboy_cart ) { state->m_nvptr = (UINT8 *)&state->m_vboy_sram; - image.device().machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x06000000, 0x0600ffff, read32_delegate(FUNC(vboy_state::sram_r),state)); - image.device().machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x06000000, 0x0600ffff, write32_delegate(FUNC(vboy_state::sram_w),state)); + state->m_maincpu->space(AS_PROGRAM).install_read_handler(0x06000000, 0x0600ffff, read32_delegate(FUNC(vboy_state::sram_r),state)); + state->m_maincpu->space(AS_PROGRAM).install_write_handler(0x06000000, 0x0600ffff, write32_delegate(FUNC(vboy_state::sram_w),state)); image.battery_load(state->m_nvptr, 0x10000, 0x00); state->m_nvimage = image; diff --git a/src/mess/drivers/vector4.c b/src/mess/drivers/vector4.c index c1b5dcd9e98..755b366a7e9 100644 --- a/src/mess/drivers/vector4.c +++ b/src/mess/drivers/vector4.c @@ -74,7 +74,7 @@ INPUT_PORTS_END void vector4_state::machine_reset() { m_term_data = 0; - machine().device("maincpu")->state().set_state_int(Z80_PC, 0xe000); + m_maincpu->set_state_int(Z80_PC, 0xe000); } WRITE8_MEMBER( vector4_state::kbd_put ) diff --git a/src/mess/drivers/vg5k.c b/src/mess/drivers/vg5k.c index fa08091af59..6689ec8ca1d 100644 --- a/src/mess/drivers/vg5k.c +++ b/src/mess/drivers/vg5k.c @@ -279,13 +279,13 @@ INPUT_PORTS_END TIMER_CALLBACK_MEMBER(vg5k_state::z80_irq_clear) { - machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE); + m_maincpu->set_input_line(0, CLEAR_LINE); } TIMER_DEVICE_CALLBACK_MEMBER(vg5k_state::z80_irq) { - machine().device("maincpu")->execute().set_input_line(0, ASSERT_LINE); + m_maincpu->set_input_line(0, ASSERT_LINE); machine().scheduler().timer_set(attotime::from_usec(100), timer_expired_delegate(FUNC(vg5k_state::z80_irq_clear),this)); } @@ -338,7 +338,7 @@ DRIVER_INIT_MEMBER(vg5k_state,vg5k) /* install expansion memory*/ - address_space &program = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &program = m_maincpu->space(AS_PROGRAM); UINT8 *ram = machine().device<ram_device>(RAM_TAG)->pointer(); UINT16 ram_size = machine().device<ram_device>(RAM_TAG)->size(); diff --git a/src/mess/drivers/vii.c b/src/mess/drivers/vii.c index 73294992b15..11fa66eefce 100644 --- a/src/mess/drivers/vii.c +++ b/src/mess/drivers/vii.c @@ -523,7 +523,7 @@ WRITE16_MEMBER( vii_state::vii_video_w ) VII_VIDEO_IRQ_STATUS &= ~data; if(!VII_VIDEO_IRQ_STATUS) { - machine().device("maincpu")->execute().set_input_line(UNSP_IRQ0_LINE, CLEAR_LINE); + m_maincpu->set_input_line(UNSP_IRQ0_LINE, CLEAR_LINE); } break; @@ -687,7 +687,7 @@ READ16_MEMBER( vii_state::vii_io_r ) break; case 0x2f: // Data Segment - val = machine().device("maincpu")->state().state_int(UNSP_SR) >> 10; + val = m_maincpu->state_int(UNSP_SR) >> 10; verboselog(3, "vii_io_r: Data Segment = %04x (%04x)\n", val, mem_mask); break; @@ -764,7 +764,7 @@ WRITE16_MEMBER( vii_state::vii_io_w ) COMBINE_DATA(&VII_CTLR_IRQ_ENABLE); if(!VII_CTLR_IRQ_ENABLE) { - machine().device("maincpu")->execute().set_input_line(UNSP_IRQ3_LINE, CLEAR_LINE); + m_maincpu->set_input_line(UNSP_IRQ3_LINE, CLEAR_LINE); } break; @@ -773,13 +773,13 @@ WRITE16_MEMBER( vii_state::vii_io_w ) m_io_regs[0x22] &= ~data; if(!m_io_regs[0x22]) { - machine().device("maincpu")->execute().set_input_line(UNSP_IRQ3_LINE, CLEAR_LINE); + m_maincpu->set_input_line(UNSP_IRQ3_LINE, CLEAR_LINE); } break; case 0x2f: // Data Segment - temp = machine().device("maincpu")->state().state_int(UNSP_SR); - machine().device("maincpu")->state().set_state_int(UNSP_SR, (temp & 0x03ff) | ((data & 0x3f) << 10)); + temp = m_maincpu->state_int(UNSP_SR); + m_maincpu->set_state_int(UNSP_SR, (temp & 0x03ff) | ((data & 0x3f) << 10)); verboselog(3, "vii_io_w: Data Segment = %04x (%04x)\n", data, mem_mask); break; @@ -1059,17 +1059,17 @@ INTERRUPT_GEN_MEMBER(vii_state::vii_vblank) if(VII_VIDEO_IRQ_STATUS) { verboselog(0, "Video IRQ\n"); - machine().device("maincpu")->execute().set_input_line(UNSP_IRQ0_LINE, ASSERT_LINE); + m_maincpu->set_input_line(UNSP_IRQ0_LINE, ASSERT_LINE); } // { // verboselog(0, "audio 1 IRQ\n"); -// machine().device("maincpu")->execute().set_input_line(UNSP_IRQ1_LINE, ASSERT_LINE); +// m_maincpu->set_input_line(UNSP_IRQ1_LINE, ASSERT_LINE); // } if(m_io_regs[0x22] & m_io_regs[0x21] & 0x0c00) { verboselog(0, "timerA, timer B IRQ\n"); - machine().device("maincpu")->execute().set_input_line(UNSP_IRQ2_LINE, ASSERT_LINE); + m_maincpu->set_input_line(UNSP_IRQ2_LINE, ASSERT_LINE); } //if(m_io_regs[0x22] & m_io_regs[0x21] & 0x2100) @@ -1077,27 +1077,27 @@ INTERRUPT_GEN_MEMBER(vii_state::vii_vblank) if(VII_CTLR_IRQ_ENABLE) { verboselog(0, "UART, ADC IRQ\n"); - machine().device("maincpu")->execute().set_input_line(UNSP_IRQ3_LINE, ASSERT_LINE); + m_maincpu->set_input_line(UNSP_IRQ3_LINE, ASSERT_LINE); } // { // verboselog(0, "audio 4 IRQ\n"); -// machine().device("maincpu")->execute().set_input_line(UNSP_IRQ4_LINE, ASSERT_LINE); +// m_maincpu->set_input_line(UNSP_IRQ4_LINE, ASSERT_LINE); // } if(m_io_regs[0x22] & m_io_regs[0x21] & 0x1200) { verboselog(0, "External IRQ\n"); - machine().device("maincpu")->execute().set_input_line(UNSP_IRQ5_LINE, ASSERT_LINE); + m_maincpu->set_input_line(UNSP_IRQ5_LINE, ASSERT_LINE); } if(m_io_regs[0x22] & m_io_regs[0x21] & 0x0070) { verboselog(0, "1024Hz, 2048HZ, 4096HZ IRQ\n"); - machine().device("maincpu")->execute().set_input_line(UNSP_IRQ6_LINE, ASSERT_LINE); + m_maincpu->set_input_line(UNSP_IRQ6_LINE, ASSERT_LINE); } if(m_io_regs[0x22] & m_io_regs[0x21] & 0x008b) { verboselog(0, "TMB1, TMB2, 4Hz, key change IRQ\n"); - machine().device("maincpu")->execute().set_input_line(UNSP_IRQ7_LINE, ASSERT_LINE); + m_maincpu->set_input_line(UNSP_IRQ7_LINE, ASSERT_LINE); } } diff --git a/src/mess/drivers/vt100.c b/src/mess/drivers/vt100.c index 25f70c63cba..aa6f92cefa2 100644 --- a/src/mess/drivers/vt100.c +++ b/src/mess/drivers/vt100.c @@ -135,7 +135,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(vt100_state::keyboard_callback) { m_keyboard_int = 1; m_key_code = i | bit_sel(code); - machine().device("maincpu")->execute().set_input_line(0, HOLD_LINE); + m_maincpu->set_input_line(0, HOLD_LINE); break; } } @@ -364,7 +364,7 @@ void vt100_state::machine_reset() m_key_scan = 0; - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(vt100_state::vt100_irq_callback),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(vt100_state::vt100_irq_callback),this)); } READ8_MEMBER( vt100_state::vt100_read_video_ram_r ) diff --git a/src/mess/drivers/vt220.c b/src/mess/drivers/vt220.c index 32ff0ebe55f..c314aeee99a 100644 --- a/src/mess/drivers/vt220.c +++ b/src/mess/drivers/vt220.c @@ -15,11 +15,13 @@ class vt220_state : public driver_device { public: vt220_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_vt220(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; diff --git a/src/mess/drivers/vt240.c b/src/mess/drivers/vt240.c index fad1b65ae50..9db93dffff5 100644 --- a/src/mess/drivers/vt240.c +++ b/src/mess/drivers/vt240.c @@ -96,7 +96,7 @@ static UPD7220_DRAW_TEXT_LINE( hgdc_draw_text ) /* presumably communication with T11 */ READ8_MEMBER( vt240_state::test_r ) { - //machine().device("maincpu")->execute().set_input_line(I8085_RST65_LINE, CLEAR_LINE); + //m_maincpu->set_input_line(I8085_RST65_LINE, CLEAR_LINE); return rand(); } diff --git a/src/mess/drivers/vt320.c b/src/mess/drivers/vt320.c index afd8a6d6817..dbe1541cb1d 100644 --- a/src/mess/drivers/vt320.c +++ b/src/mess/drivers/vt320.c @@ -15,11 +15,13 @@ class vt320_state : public driver_device { public: vt320_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_vt320(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; /* diff --git a/src/mess/drivers/vt520.c b/src/mess/drivers/vt520.c index c5e80390b3a..a584a46ba3f 100644 --- a/src/mess/drivers/vt520.c +++ b/src/mess/drivers/vt520.c @@ -15,12 +15,14 @@ class vt520_state : public driver_device { public: vt520_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER(vt520_some_r); virtual void machine_reset(); virtual void video_start(); UINT32 screen_update_vt520(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; }; @@ -53,7 +55,7 @@ INPUT_PORTS_END void vt520_state::machine_reset() { - address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &space = m_maincpu->space(AS_PROGRAM); UINT8 *rom = memregion("maincpu")->base(); space.unmap_write(0x0000, 0xffff); membank("bank1")->set_base(rom + 0x70000); diff --git a/src/mess/drivers/vtech1.c b/src/mess/drivers/vtech1.c index 1adb2813282..35b7898b177 100644 --- a/src/mess/drivers/vtech1.c +++ b/src/mess/drivers/vtech1.c @@ -160,7 +160,8 @@ public: m_mc6847(*this, "mc6847"), m_speaker(*this, SPEAKER_TAG), m_cassette(*this, CASSETTE_TAG), - m_videoram(*this, "videoram"){ } + m_videoram(*this, "videoram"), + m_maincpu(*this, "maincpu") { } /* devices */ required_device<mc6847_base_device> m_mc6847; @@ -201,6 +202,7 @@ public: DECLARE_READ8_MEMBER(vtech1_mc6847_videoram_r); void vtech1_get_track(); void vtech1_put_track(); + required_device<cpu_device> m_maincpu; }; @@ -623,7 +625,7 @@ READ8_MEMBER(vtech1_state::vtech1_mc6847_videoram_r) DRIVER_INIT_MEMBER(vtech1_state,vtech1) { - address_space &prg = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &prg = m_maincpu->space(AS_PROGRAM); int id; /* ram */ @@ -676,7 +678,7 @@ DRIVER_INIT_MEMBER(vtech1_state,vtech1) DRIVER_INIT_MEMBER(vtech1_state,vtech1h) { - address_space &prg = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &prg = m_maincpu->space(AS_PROGRAM); DRIVER_INIT_CALL(vtech1); diff --git a/src/mess/drivers/vtech2.c b/src/mess/drivers/vtech2.c index 2ef659ed838..a063b08ebe0 100644 --- a/src/mess/drivers/vtech2.c +++ b/src/mess/drivers/vtech2.c @@ -400,7 +400,7 @@ void vtech2_state::palette_init() INTERRUPT_GEN_MEMBER(vtech2_state::vtech2_interrupt) { - machine().device("maincpu")->execute().set_input_line(0, HOLD_LINE); + m_maincpu->set_input_line(0, HOLD_LINE); } static const cassette_interface laser_cassette_interface = diff --git a/src/mess/drivers/x68k.c b/src/mess/drivers/x68k.c index 35d340e3adf..6eef24905a1 100644 --- a/src/mess/drivers/x68k.c +++ b/src/mess/drivers/x68k.c @@ -201,7 +201,7 @@ TIMER_CALLBACK_MEMBER(x68k_state::mfp_update_irq) // if(m_mfp.iera & (1 << x)) { m_current_vector[6] = (m_mfp.vr & 0xf0) | (x+8); - machine().device("maincpu")->execute().set_input_line_and_vector(m_mfp.irqline,ASSERT_LINE,(m_mfp.vr & 0xf0) | (x + 8)); + m_maincpu->set_input_line_and_vector(m_mfp.irqline,ASSERT_LINE,(m_mfp.vr & 0xf0) | (x + 8)); // logerror("MFP: Sent IRQ vector 0x%02x (IRQ line %i)\n",(m_mfp.vr & 0xf0) | (x+8),m_mfp.irqline); return; // one at a time only } @@ -220,7 +220,7 @@ TIMER_CALLBACK_MEMBER(x68k_state::mfp_update_irq) // if(m_mfp.ierb & (1 << x)) { m_current_vector[6] = (m_mfp.vr & 0xf0) | x; - machine().device("maincpu")->execute().set_input_line_and_vector(m_mfp.irqline,ASSERT_LINE,(m_mfp.vr & 0xf0) | x); + m_maincpu->set_input_line_and_vector(m_mfp.irqline,ASSERT_LINE,(m_mfp.vr & 0xf0) | x); // logerror("MFP: Sent IRQ vector 0x%02x (IRQ line %i)\n",(m_mfp.vr & 0xf0) | x,m_mfp.irqline); return; // one at a time only } @@ -442,7 +442,7 @@ void x68k_state::x68k_keyboard_push_scancode(unsigned char code) if(machine().root_device().ioport("options")->read() & 0x01) { m_current_vector[6] = 0x4c; - machine().device("maincpu")->execute().set_input_line_and_vector(6,ASSERT_LINE,0x4c); + m_maincpu->set_input_line_and_vector(6,ASSERT_LINE,0x4c); logerror("MFP: Receive buffer full IRQ sent\n"); } } @@ -637,7 +637,7 @@ TIMER_CALLBACK_MEMBER(x68k_state::x68k_scc_ack) m_mouse.irqactive = 1; m_current_vector[5] = 0x54; m_current_irq_line = 5; - machine().device("maincpu")->execute().set_input_line_and_vector(5,ASSERT_LINE,0x54); + m_maincpu->set_input_line_and_vector(5,ASSERT_LINE,0x54); } } } @@ -1035,7 +1035,7 @@ void x68k_state::fdc_irq(bool state) m_ioc.irqstatus |= 0x80; m_current_irq_line = 1; logerror("FDC: IRQ triggered\n"); - machine().device("maincpu")->execute().set_input_line_and_vector(1, ASSERT_LINE, m_current_vector[1]); + m_maincpu->set_input_line_and_vector(1, ASSERT_LINE, m_current_vector[1]); } } @@ -1614,8 +1614,8 @@ TIMER_CALLBACK_MEMBER(x68k_state::x68k_bus_error) v = 0x09; if(ram[v] != 0x02) // normal vector for bus errors points to 02FF0540 { - machine().device("maincpu")->execute().set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE); - machine().device("maincpu")->execute().set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE); + m_maincpu->set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE); + m_maincpu->set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE); popmessage("Bus error: Unused RAM access [%08x]", val); } } @@ -1626,7 +1626,7 @@ READ16_MEMBER(x68k_state::x68k_rom0_r) then access causes a bus error */ m_current_vector[2] = 0x02; // bus error m_current_irq_line = 2; -// machine().device("maincpu")->execute().set_input_line_and_vector(2,ASSERT_LINE,m_current_vector[2]); +// m_maincpu->set_input_line_and_vector(2,ASSERT_LINE,m_current_vector[2]); if(ioport("options")->read() & 0x02) { offset *= 2; @@ -1643,7 +1643,7 @@ WRITE16_MEMBER(x68k_state::x68k_rom0_w) then access causes a bus error */ m_current_vector[2] = 0x02; // bus error m_current_irq_line = 2; -// machine().device("maincpu")->execute().set_input_line_and_vector(2,ASSERT_LINE,m_current_vector[2]); +// m_maincpu->set_input_line_and_vector(2,ASSERT_LINE,m_current_vector[2]); if(ioport("options")->read() & 0x02) { offset *= 2; @@ -1659,7 +1659,7 @@ READ16_MEMBER(x68k_state::x68k_emptyram_r) Often a method for detecting amount of installed RAM, is to read or write at 1MB intervals, until a bus error occurs */ m_current_vector[2] = 0x02; // bus error m_current_irq_line = 2; -// machine().device("maincpu")->execute().set_input_line_and_vector(2,ASSERT_LINE,m_current_vector[2]); +// m_maincpu->set_input_line_and_vector(2,ASSERT_LINE,m_current_vector[2]); if(ioport("options")->read() & 0x02) { offset *= 2; @@ -1676,7 +1676,7 @@ WRITE16_MEMBER(x68k_state::x68k_emptyram_w) Often a method for detecting amount of installed RAM, is to read or write at 1MB intervals, until a bus error occurs */ m_current_vector[2] = 0x02; // bus error m_current_irq_line = 2; -// machine().device("maincpu")->execute().set_input_line_and_vector(2,ASSERT_LINE,m_current_vector[2]); +// m_maincpu->set_input_line_and_vector(2,ASSERT_LINE,m_current_vector[2]); if(ioport("options")->read() & 0x02) { offset *= 2; @@ -1796,7 +1796,7 @@ WRITE_LINE_MEMBER(x68k_state::mfp_irq_callback) state = HOLD_LINE; // to get around erroneous spurious interrupt // if((m_ioc.irqstatus & 0xc0) != 0) // if the FDC is busy, then we don't want to miss that IRQ // return; - machine().device("maincpu")->execute().set_input_line(6, state); + m_maincpu->set_input_line(6, state); m_current_vector[6] = 0; m_mfp_prev = state; } @@ -1828,12 +1828,12 @@ IRQ_CALLBACK_MEMBER(x68k_state::x68k_int_ack) if(m_current_vector[6] != 0x4b && m_current_vector[6] != 0x4c) m_current_vector[6] = m_mfpdev->get_vector(); else - machine().device("maincpu")->execute().set_input_line_and_vector(irqline,CLEAR_LINE,m_current_vector[irqline]); + m_maincpu->set_input_line_and_vector(irqline,CLEAR_LINE,m_current_vector[irqline]); logerror("SYS: IRQ acknowledged (vector=0x%02x, line = %i)\n",m_current_vector[6],irqline); return m_current_vector[6]; } - machine().device("maincpu")->execute().set_input_line_and_vector(irqline,CLEAR_LINE,m_current_vector[irqline]); + m_maincpu->set_input_line_and_vector(irqline,CLEAR_LINE,m_current_vector[irqline]); if(irqline == 1) // IOSC { m_ioc.irqstatus &= ~0xf0; @@ -1854,7 +1854,7 @@ WRITE_LINE_MEMBER(x68k_state::x68k_scsi_irq) { m_current_vector[1] = 0x6c; m_current_irq_line = 1; - machine().device("maincpu")->execute().set_input_line_and_vector(1,ASSERT_LINE,m_current_vector[1]); + m_maincpu->set_input_line_and_vector(1,ASSERT_LINE,m_current_vector[1]); } } @@ -2353,7 +2353,7 @@ void x68k_state::floppy_load_unload() m_current_vector[1] = 0x61; m_ioc.irqstatus |= 0x40; m_current_irq_line = 1; - machine().device("maincpu")->execute().set_input_line_and_vector(1,ASSERT_LINE,m_current_vector[1]); // Disk insert/eject interrupt + m_maincpu->set_input_line_and_vector(1,ASSERT_LINE,m_current_vector[1]); // Disk insert/eject interrupt logerror("IOC: Disk image inserted\n"); } } @@ -2373,7 +2373,7 @@ TIMER_CALLBACK_MEMBER(x68k_state::x68k_net_irq) { m_current_vector[2] = 0xf9; m_current_irq_line = 2; - machine().device("maincpu")->execute().set_input_line_and_vector(2,ASSERT_LINE,m_current_vector[2]); + m_maincpu->set_input_line_and_vector(2,ASSERT_LINE,m_current_vector[2]); } WRITE_LINE_MEMBER(x68k_state::x68k_irq2_line) @@ -2383,7 +2383,7 @@ WRITE_LINE_MEMBER(x68k_state::x68k_irq2_line) m_net_timer->adjust(attotime::from_usec(16)); } else - machine().device("maincpu")->execute().set_input_line_and_vector(2,CLEAR_LINE,m_current_vector[2]); + m_maincpu->set_input_line_and_vector(2,CLEAR_LINE,m_current_vector[2]); logerror("EXP: IRQ2 set to %i\n",state); } @@ -2465,12 +2465,12 @@ MACHINE_RESET_MEMBER(x68k_state,x68000) } // reset CPU - machine().device("maincpu")->reset(); + m_maincpu->reset(); } MACHINE_START_MEMBER(x68k_state,x68000) { - address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &space = m_maincpu->space(AS_PROGRAM); /* Install RAM handlers */ m_spriteram = (UINT16*)(*memregion("user1")); space.install_read_handler(0x000000,0xbffffb,0xffffffff,0,read16_delegate(FUNC(x68k_state::x68k_emptyram_r),this)); @@ -2517,7 +2517,7 @@ MACHINE_START_MEMBER(x68k_state,x68000) MACHINE_START_MEMBER(x68k_state,x68030) { - address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM); + address_space &space = m_maincpu->space(AS_PROGRAM); /* Install RAM handlers */ m_spriteram = (UINT16*)(*memregion("user1")); space.install_read_handler(0x000000,0xbffffb,0xffffffff,0,read16_delegate(FUNC(x68k_state::x68k_rom0_r),this),0xffffffff); @@ -2585,7 +2585,7 @@ DRIVER_INIT_MEMBER(x68k_state,x68000) mfp_init(); - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(x68k_state::x68k_int_ack),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(x68k_state::x68k_int_ack),this)); // init keyboard m_keyboard.delay = 500; // 3*100+200 diff --git a/src/mess/drivers/z100.c b/src/mess/drivers/z100.c index d84e7609995..d53981c1c8e 100644 --- a/src/mess/drivers/z100.c +++ b/src/mess/drivers/z100.c @@ -752,7 +752,7 @@ void z100_state::palette_init() void z100_state::machine_start() { - machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(z100_state::z100_irq_callback),this)); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(z100_state::z100_irq_callback),this)); m_mc6845 = machine().device<mc6845_device>("crtc"); } diff --git a/src/mess/drivers/z1013.c b/src/mess/drivers/z1013.c index 37da283a42e..9e7df4f5efb 100644 --- a/src/mess/drivers/z1013.c +++ b/src/mess/drivers/z1013.c @@ -257,7 +257,7 @@ UINT32 z1013_state::screen_update_z1013(screen_device &screen, bitmap_ind16 &bit void z1013_state::machine_reset() { - machine().device("maincpu")->state().set_state_int(Z80_PC, 0xF000); + m_maincpu->set_state_int(Z80_PC, 0xF000); m_keyboard_part = 0; m_keyboard_line = 0; } diff --git a/src/mess/drivers/zrt80.c b/src/mess/drivers/zrt80.c index d990b78026a..0493b600fcc 100644 --- a/src/mess/drivers/zrt80.c +++ b/src/mess/drivers/zrt80.c @@ -52,7 +52,7 @@ public: READ8_MEMBER( zrt80_state::zrt80_10_r ) { UINT8 ret = m_term_data; - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); return ret; } @@ -255,7 +255,7 @@ static const ins8250_interface zrt80_com_interface = WRITE8_MEMBER( zrt80_state::kbd_put ) { m_term_data = data; - machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } static ASCII_KEYBOARD_INTERFACE( keyboard_intf ) |
