summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/jr100.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/jr100.cpp')
-rw-r--r--src/mame/drivers/jr100.cpp71
1 files changed, 36 insertions, 35 deletions
diff --git a/src/mame/drivers/jr100.cpp b/src/mame/drivers/jr100.cpp
index cc2be87fcf4..7cb360c5680 100644
--- a/src/mame/drivers/jr100.cpp
+++ b/src/mame/drivers/jr100.cpp
@@ -67,7 +67,7 @@ private:
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update_jr100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_DEVICE_CALLBACK_MEMBER(sound_tick);
+ TIMER_CALLBACK_MEMBER(sound_tick);
DECLARE_READ8_MEMBER(jr100_via_read_b);
DECLARE_WRITE8_MEMBER(jr100_via_write_a);
DECLARE_WRITE8_MEMBER(jr100_via_write_b);
@@ -92,10 +92,10 @@ private:
required_ioport m_line6;
required_ioport m_line7;
required_ioport m_line8;
- required_device<cpu_device> m_maincpu;
-};
-
+ required_device<m6802_cpu_device> m_maincpu;
+ emu_timer *m_sound_timer;
+};
WRITE8_MEMBER(jr100_state::jr100_via_w)
@@ -212,10 +212,14 @@ INPUT_PORTS_END
void jr100_state::machine_start()
{
+ if (!m_sound_timer)
+ m_sound_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(jr100_state::sound_tick), this));
}
void jr100_state::machine_reset()
{
+ attotime timer_period = attotime::from_hz(XTAL(14'318'181) / 16);
+ m_sound_timer->adjust(timer_period, 0, timer_period);
}
void jr100_state::video_start()
@@ -303,7 +307,7 @@ WRITE_LINE_MEMBER(jr100_state::jr100_via_write_cb2)
m_cassette->output(state ? -1.0 : +1.0);
}
-TIMER_DEVICE_CALLBACK_MEMBER(jr100_state::sound_tick)
+TIMER_CALLBACK_MEMBER(jr100_state::sound_tick)
{
m_speaker->level_w(m_speaker_data);
m_speaker_data = 0;
@@ -371,45 +375,42 @@ QUICKLOAD_LOAD_MEMBER( jr100_state,jr100)
return image_init_result::PASS;
}
-MACHINE_CONFIG_START(jr100_state::jr100)
-
+void jr100_state::jr100(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu",M6802, XTAL(14'318'181) / 4) // clock devided internaly by 4
- MCFG_DEVICE_PROGRAM_MAP(jr100_mem)
+ M6802(config, m_maincpu, XTAL(14'318'181) / 4); // clock divided internally by 4
+ m_maincpu->set_addrmap(AS_PROGRAM, &jr100_state::jr100_mem);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE(256, 192) /* border size not accurate */
- MCFG_SCREEN_VISIBLE_AREA(0, 256 - 1, 0, 192 - 1)
- MCFG_SCREEN_UPDATE_DRIVER(jr100_state, screen_update_jr100)
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_jr100)
- MCFG_PALETTE_ADD_MONOCHROME("palette")
-
- MCFG_DEVICE_ADD("via", VIA6522, XTAL(14'318'181) / 16)
- MCFG_VIA6522_READPB_HANDLER(READ8(*this, jr100_state,jr100_via_read_b))
- MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, jr100_state,jr100_via_write_a))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, jr100_state,jr100_via_write_b))
- MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, jr100_state, jr100_via_write_cb2))
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ screen.set_size(256, 192); /* border size not accurate */
+ screen.set_visarea(0, 256 - 1, 0, 192 - 1);
+ screen.set_screen_update(FUNC(jr100_state::screen_update_jr100));
+ screen.set_palette("palette");
+
+ GFXDECODE(config, "gfxdecode", "palette", gfx_jr100);
+ PALETTE(config, "palette", 2).set_init("palette", FUNC(palette_device::palette_init_monochrome));
+
+ VIA6522(config, m_via, XTAL(14'318'181) / 16);
+ m_via->readpb_handler().set(FUNC(jr100_state::jr100_via_read_b));
+ m_via->writepa_handler().set(FUNC(jr100_state::jr100_via_write_a));
+ m_via->writepb_handler().set(FUNC(jr100_state::jr100_via_write_b));
+ m_via->cb2_handler().set(FUNC(jr100_state::jr100_via_write_cb2));
SPEAKER(config, "mono").front_center();
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
- SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 1.00);
-
- MCFG_DEVICE_ADD("beeper", BEEP, 0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
+ SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
+ BEEP(config, m_beeper, 0).add_route(ALL_OUTPUTS, "mono", 0.50);
- MCFG_CASSETTE_ADD( "cassette" )
- MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
-
- MCFG_TIMER_DRIVER_ADD_PERIODIC("sound_tick", jr100_state, sound_tick, attotime::from_hz(XTAL(14'318'181) / 16))
+ CASSETTE(config, m_cassette, 0);
+ m_cassette->set_default_state((cassette_state)(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED));
/* quickload */
- MCFG_QUICKLOAD_ADD("quickload", jr100_state, jr100, "prg", 2)
-MACHINE_CONFIG_END
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(jr100_state, jr100), this), "prg", 2);
+}
/* ROM definition */