diff --git a/src/mame/drivers/bbc.cpp b/src/mame/drivers/bbc.cpp index f29d8ad55dd..46a64aa2ef0 100644 --- a/src/mame/drivers/bbc.cpp +++ b/src/mame/drivers/bbc.cpp @@ -1074,8 +1074,8 @@ void bbc_state::bbca(machine_config &config) LS259(config, m_latch); m_latch->q_out_cb<0>().set(FUNC(bbc_state::snd_enable_w)); m_latch->q_out_cb<3>().set(FUNC(bbc_state::kbd_enable_w)); - m_latch->q_out_cb<6>().set(FUNC(bbc_state::capslock_led_w)); - m_latch->q_out_cb<7>().set(FUNC(bbc_state::shiftlock_led_w)); + m_latch->q_out_cb<6>().set_output("capslock_led"); + m_latch->q_out_cb<7>().set_output("shiftlock_led"); /* internal ram */ RAM(config, m_ram).set_default_size("16K").set_extra_options("32K").set_default_value(0xff); @@ -1590,8 +1590,8 @@ void bbcm_state::bbcm(machine_config &config) LS259(config, m_latch); m_latch->q_out_cb<0>().set(FUNC(bbc_state::snd_enable_w)); m_latch->q_out_cb<3>().set(FUNC(bbc_state::kbd_enable_w)); - m_latch->q_out_cb<6>().set(FUNC(bbc_state::capslock_led_w)); - m_latch->q_out_cb<7>().set(FUNC(bbc_state::shiftlock_led_w)); + m_latch->q_out_cb<6>().set_output("capslock_led"); + m_latch->q_out_cb<7>().set_output("shiftlock_led"); /* internal ram */ RAM(config, m_ram).set_default_size("128K").set_default_value(0xff); diff --git a/src/mame/includes/bbc.h b/src/mame/includes/bbc.h index 98068a32abc..1d4aa5b32a0 100644 --- a/src/mame/includes/bbc.h +++ b/src/mame/includes/bbc.h @@ -100,6 +100,7 @@ public: , m_bank2(*this, "bank2") , m_bankdev(*this, "bankdev") , m_bbcconfig(*this, "BBCCONFIG") + , m_motor_led(*this, "motor_led") { } enum class monitor_type @@ -158,8 +159,6 @@ public: DECLARE_WRITE_LINE_MEMBER(speech_rsq_w); DECLARE_WRITE_LINE_MEMBER(speech_wsq_w); DECLARE_WRITE_LINE_MEMBER(kbd_enable_w); - DECLARE_WRITE_LINE_MEMBER(capslock_led_w); - DECLARE_WRITE_LINE_MEMBER(shiftlock_led_w); uint8_t via_system_porta_r(); void via_system_porta_w(uint8_t data); uint8_t via_system_portb_r(); @@ -257,6 +256,8 @@ protected: optional_device m_bankdev; // bbcm optional_ioport m_bbcconfig; + output_finder<> m_motor_led; + int m_romsel; // This is the latch that holds the sideways ROM bank to read int m_paged_ram; // BBC B+ memory handling int m_vdusel; // BBC B+ memory handling @@ -421,7 +422,10 @@ protected: class bbcm_state : public bbc_state { public: - using bbc_state::bbc_state; + bbcm_state(const machine_config &mconfig, device_type type, const char *tag) + : bbc_state(mconfig, type, tag) + , m_power_led(*this, "power_led") + { } void bbcm(machine_config &config); void bbcmt(machine_config &config); @@ -453,6 +457,8 @@ protected: void bbcmc_bankdev(address_map &map); void autoc15_bankdev(address_map &map); void bbcm_fetch(address_map &map); + + output_finder<> m_power_led; }; diff --git a/src/mame/includes/electron.h b/src/mame/includes/electron.h index 9467674e128..77752b9a38e 100644 --- a/src/mame/includes/electron.h +++ b/src/mame/includes/electron.h @@ -50,6 +50,7 @@ public: , m_exp(*this, "exp") , m_ram(*this, RAM_TAG) , m_mrb(*this, "MRB") + , m_capslock_led(*this, "capslock_led") { } void electron(machine_config &config); @@ -117,6 +118,7 @@ protected: required_device m_exp; required_device m_ram; optional_ioport m_mrb; + output_finder<> m_capslock_led; void waitforramsync(); void electron_tape_start(); diff --git a/src/mame/machine/bbc.cpp b/src/mame/machine/bbc.cpp index 04f158fb6eb..bd284f53c6a 100644 --- a/src/mame/machine/bbc.cpp +++ b/src/mame/machine/bbc.cpp @@ -850,16 +850,6 @@ WRITE_LINE_MEMBER(bbc_state::kbd_enable_w) } } -WRITE_LINE_MEMBER(bbc_state::capslock_led_w) -{ - output().set_value("capslock_led", state); -} - -WRITE_LINE_MEMBER(bbc_state::shiftlock_led_w) -{ - output().set_value("shiftlock_led", state); -} - void bbc_state::mc146818_set() { @@ -1211,7 +1201,7 @@ void bbc_state::cassette_motor(bool motor_state) m_cass_out_phase = 0; m_cass_out_samples_to_go = 4; } - output().set_value("motor_led", !motor_state); + m_motor_led = !motor_state; } @@ -1627,17 +1617,7 @@ void bbc_state::machine_start() { setup_device_roms(); - /* register save states */ - save_item(NAME(m_vula_ctrl)); - save_item(NAME(m_vula_palette)); - save_item(NAME(m_vula_palette_lookup)); - save_item(STRUCT_MEMBER(m_vnula, palette_mode)); - save_item(STRUCT_MEMBER(m_vnula, horiz_offset)); - save_item(STRUCT_MEMBER(m_vnula, left_blank)); - save_item(STRUCT_MEMBER(m_vnula, disable)); - save_item(STRUCT_MEMBER(m_vnula, flash)); - save_item(STRUCT_MEMBER(m_vnula, palette_byte)); - save_item(STRUCT_MEMBER(m_vnula, palette_write)); + m_motor_led.resolve(); } void bbc_state::machine_reset() @@ -1657,6 +1637,8 @@ void bbc_state::machine_reset() void bbcbp_state::machine_start() { setup_device_roms(); + + m_motor_led.resolve(); } void bbcbp_state::machine_reset() @@ -1672,7 +1654,10 @@ void bbcm_state::machine_start() { setup_device_roms(); - output().set_value("power_led", 0); + m_motor_led.resolve(); + m_power_led.resolve(); + + m_power_led = 0; } void bbcm_state::machine_reset() diff --git a/src/mame/machine/electron.cpp b/src/mame/machine/electron.cpp index 0d1924b577a..ac6b9df4dc4 100644 --- a/src/mame/machine/electron.cpp +++ b/src/mame/machine/electron.cpp @@ -541,7 +541,7 @@ void electron_state::electron_sheila_w(offs_t offset, uint8_t data) m_ula.cassette_motor_mode = ( data >> 6 ) & 0x01; m_cassette->change_state(m_ula.cassette_motor_mode ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MOTOR_DISABLED ); m_ula.capslock_mode = ( data >> 7 ) & 0x01; - output().set_value("capslock_led", m_ula.capslock_mode); + m_capslock_led = m_ula.capslock_mode; break; case 0x08: case 0x0a: case 0x0c: case 0x0e: /* colour palette */ @@ -594,6 +594,8 @@ TIMER_CALLBACK_MEMBER(electron_state::setup_beep) void electron_state::machine_start() { + m_capslock_led.resolve(); + m_ula.interrupt_status = 0x82; m_ula.interrupt_control = 0x00; timer_set(attotime::zero, TIMER_SETUP_BEEP); diff --git a/src/mame/video/bbc.cpp b/src/mame/video/bbc.cpp index 5ba8ced6e97..f2d642c4d4e 100644 --- a/src/mame/video/bbc.cpp +++ b/src/mame/video/bbc.cpp @@ -383,6 +383,18 @@ void bbc_state::video_start() set_pixel_lookup(); m_video_ram = m_ram->pointer(); + + // register save states + save_item(NAME(m_vula_ctrl)); + save_item(NAME(m_vula_palette)); + save_item(NAME(m_vula_palette_lookup)); + save_item(STRUCT_MEMBER(m_vnula, palette_mode)); + save_item(STRUCT_MEMBER(m_vnula, horiz_offset)); + save_item(STRUCT_MEMBER(m_vnula, left_blank)); + save_item(STRUCT_MEMBER(m_vnula, disable)); + save_item(STRUCT_MEMBER(m_vnula, flash)); + save_item(STRUCT_MEMBER(m_vnula, palette_byte)); + save_item(STRUCT_MEMBER(m_vnula, palette_write)); } void bbc_state::video_reset()