mirror of
https://github.com/holub/mame
synced 2025-07-04 09:28:51 +03:00
small cleanup, and start removing set_digit_value - this function does slow string formatting and hashing in the critical path - consider it deprecated (nw)
This commit is contained in:
parent
58a60f12ff
commit
81fa412066
@ -44,6 +44,10 @@ public:
|
||||
, m_dac1(*this, "dac1")
|
||||
{ }
|
||||
|
||||
void atari_s2(machine_config &config);
|
||||
void atari_s3(machine_config &config);
|
||||
|
||||
protected:
|
||||
DECLARE_WRITE8_MEMBER(sound0_w);
|
||||
DECLARE_WRITE8_MEMBER(sound1_w);
|
||||
DECLARE_WRITE8_MEMBER(lamp_w) { };
|
||||
@ -53,10 +57,10 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(display_w);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(irq);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(timer_s);
|
||||
void atari_s2(machine_config &config);
|
||||
void atari_s3(machine_config &config);
|
||||
|
||||
void atari_s2_map(address_map &map);
|
||||
void atari_s3_map(address_map &map);
|
||||
|
||||
private:
|
||||
bool m_timer_sb;
|
||||
uint8_t m_timer_s[5];
|
||||
@ -354,9 +358,11 @@ WRITE8_MEMBER( atari_s2_state::sol0_w )
|
||||
|
||||
WRITE8_MEMBER( atari_s2_state::display_w )
|
||||
{
|
||||
static const uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // 4511
|
||||
if (offset<7)
|
||||
static constexpr uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // 4511
|
||||
if (offset < 7)
|
||||
{
|
||||
m_segment[offset] = patterns[data&15];
|
||||
}
|
||||
else
|
||||
{
|
||||
data &= 7;
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
Babbage-2nd skeleton driver (19/OCT/2011)
|
||||
|
||||
http://homepage3.nifty.com/takeda-toshiya/babbage/index.html
|
||||
http://takeda-toshiya.my.coocan.jp/babbage/index.html
|
||||
|
||||
Pasting:
|
||||
0-F : as is
|
||||
@ -44,6 +44,9 @@ public:
|
||||
, m_keyboard(*this, "X%u", 0)
|
||||
{ }
|
||||
|
||||
void babbage(machine_config &config);
|
||||
|
||||
protected:
|
||||
DECLARE_READ8_MEMBER(pio2_a_r);
|
||||
DECLARE_WRITE8_MEMBER(pio1_b_w);
|
||||
DECLARE_WRITE8_MEMBER(pio2_b_w);
|
||||
@ -52,9 +55,9 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER(ctc_z2_w);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback);
|
||||
|
||||
void babbage(machine_config &config);
|
||||
void babbage_io(address_map &map);
|
||||
void babbage_map(address_map &map);
|
||||
|
||||
private:
|
||||
uint8_t m_segment;
|
||||
uint8_t m_key;
|
||||
@ -164,15 +167,18 @@ READ8_MEMBER( babbage_state::pio2_a_r )
|
||||
WRITE8_MEMBER( babbage_state::pio2_b_w )
|
||||
{
|
||||
if (BIT(data, 7))
|
||||
{
|
||||
m_step = false;
|
||||
else
|
||||
if (!m_step)
|
||||
}
|
||||
else if (!m_step)
|
||||
{
|
||||
m_segment = data;
|
||||
m_step = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
output().set_digit_value(data, m_segment);
|
||||
}
|
||||
}
|
||||
|
||||
static const z80_daisy_config babbage_daisy_chain[] =
|
||||
|
@ -52,36 +52,40 @@
|
||||
class beta_state : public driver_device
|
||||
{
|
||||
public:
|
||||
beta_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
beta_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, M6502_TAG),
|
||||
m_speaker(*this, "speaker"),
|
||||
m_eprom(*this, EPROM_TAG),
|
||||
m_q6(*this, "Q6"),
|
||||
m_q7(*this, "Q7"),
|
||||
m_q8(*this, "Q8"),
|
||||
m_q9(*this, "Q9")
|
||||
m_q(*this, "Q%u", 6U),
|
||||
m_digit(*this, "digit%u", 0U)
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
required_device<generic_slot_device> m_eprom;
|
||||
required_ioport m_q6;
|
||||
required_ioport m_q7;
|
||||
required_ioport m_q8;
|
||||
required_ioport m_q9;
|
||||
DECLARE_INPUT_CHANGED_MEMBER( trigger_reset );
|
||||
void beta(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
|
||||
DECLARE_READ8_MEMBER( riot_pa_r );
|
||||
DECLARE_WRITE8_MEMBER( riot_pa_w );
|
||||
DECLARE_READ8_MEMBER( riot_pb_r );
|
||||
DECLARE_WRITE8_MEMBER( riot_pb_w );
|
||||
DECLARE_INPUT_CHANGED_MEMBER( trigger_reset );
|
||||
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( beta_eprom );
|
||||
DECLARE_DEVICE_IMAGE_UNLOAD_MEMBER( beta_eprom );
|
||||
|
||||
TIMER_CALLBACK_MEMBER(led_refresh);
|
||||
|
||||
void beta_mem(address_map &map);
|
||||
|
||||
private:
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
required_device<generic_slot_device> m_eprom;
|
||||
required_ioport_array<4> m_q;
|
||||
output_finder<6> m_digit;
|
||||
|
||||
/* EPROM state */
|
||||
int m_eprom_oe;
|
||||
int m_eprom_ce;
|
||||
@ -95,9 +99,6 @@ public:
|
||||
uint8_t m_segment;
|
||||
|
||||
emu_timer *m_led_refresh_timer;
|
||||
TIMER_CALLBACK_MEMBER(led_refresh);
|
||||
void beta(machine_config &config);
|
||||
void beta_mem(address_map &map);
|
||||
};
|
||||
|
||||
|
||||
@ -158,9 +159,7 @@ INPUT_PORTS_END
|
||||
TIMER_CALLBACK_MEMBER(beta_state::led_refresh)
|
||||
{
|
||||
if (m_ls145_p < 6)
|
||||
{
|
||||
output().set_digit_value(m_ls145_p, m_segment);
|
||||
}
|
||||
m_digit[m_ls145_p] = m_segment;
|
||||
}
|
||||
|
||||
READ8_MEMBER( beta_state::riot_pa_r )
|
||||
@ -184,10 +183,12 @@ READ8_MEMBER( beta_state::riot_pa_r )
|
||||
|
||||
switch (m_ls145_p)
|
||||
{
|
||||
case 6: data &= m_q6->read(); break;
|
||||
case 7: data &= m_q7->read(); break;
|
||||
case 8: data &= m_q8->read(); break;
|
||||
case 9: data &= m_q9->read(); break;
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
data &= m_q[m_ls145_p - 6]->read();
|
||||
break;
|
||||
default:
|
||||
if (!m_eprom_oe && !m_eprom_ce)
|
||||
{
|
||||
@ -312,6 +313,8 @@ DEVICE_IMAGE_UNLOAD_MEMBER( beta_state, beta_eprom )
|
||||
|
||||
void beta_state::machine_start()
|
||||
{
|
||||
m_digit.resolve();
|
||||
|
||||
m_led_refresh_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(beta_state::led_refresh),this));
|
||||
|
||||
m_eprom_rom.resize(0x800);
|
||||
|
@ -45,39 +45,52 @@ public:
|
||||
, m_displatch(*this, "displatch%u", 1)
|
||||
, m_rs232(*this, "rs232")
|
||||
, m_cass(*this, "cassette")
|
||||
, m_x(*this, "X%u", 0U)
|
||||
, m_digit(*this, "digit%u", 1U)
|
||||
{ }
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(reset_key_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(segment_test_w);
|
||||
void et3400(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
|
||||
DECLARE_READ8_MEMBER(keypad_r);
|
||||
DECLARE_WRITE8_MEMBER(display_w);
|
||||
template<int digit> DECLARE_WRITE8_MEMBER(led_w);
|
||||
template <int Digit> DECLARE_WRITE8_MEMBER(led_w);
|
||||
DECLARE_READ8_MEMBER(pia_ar);
|
||||
DECLARE_WRITE8_MEMBER(pia_aw);
|
||||
DECLARE_READ8_MEMBER(pia_br);
|
||||
DECLARE_WRITE8_MEMBER(pia_bw);
|
||||
DECLARE_WRITE_LINE_MEMBER(reset_key_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(segment_test_w);
|
||||
void et3400(machine_config &config);
|
||||
|
||||
void mem_map(address_map &map);
|
||||
|
||||
private:
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<pia6821_device> m_pia;
|
||||
required_device_array<ls259_device, 6> m_displatch;
|
||||
required_device<rs232_port_device> m_rs232;
|
||||
required_device<cassette_image_device> m_cass;
|
||||
required_ioport_array<3> m_x;
|
||||
output_finder<6> m_digit;
|
||||
};
|
||||
|
||||
|
||||
|
||||
void et3400_state::machine_start()
|
||||
{
|
||||
m_digit.resolve();
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(et3400_state::keypad_r)
|
||||
{
|
||||
uint8_t data = 0xff;
|
||||
|
||||
if (~offset & 4)
|
||||
data &= ioport("X2")->read();
|
||||
if (~offset & 2)
|
||||
data &= ioport("X1")->read();
|
||||
if (~offset & 1)
|
||||
data &= ioport("X0")->read();
|
||||
if (~offset & 4) data &= m_x[2]->read();
|
||||
if (~offset & 2) data &= m_x[1]->read();
|
||||
if (~offset & 1) data &= m_x[0]->read();
|
||||
|
||||
return data;
|
||||
}
|
||||
@ -90,12 +103,11 @@ WRITE8_MEMBER(et3400_state::display_w)
|
||||
m_displatch[digit - 1]->write_bit(offset & 7, !BIT(data, 0));
|
||||
}
|
||||
|
||||
template<int digit>
|
||||
template <int Digit>
|
||||
WRITE8_MEMBER(et3400_state::led_w)
|
||||
{
|
||||
/* This computer sets each segment, one at a time. */
|
||||
uint8_t segdata = bitswap<8>(~data, 7, 0, 1, 2, 3, 4, 5, 6);
|
||||
output().set_digit_value(digit, segdata);
|
||||
// This computer sets each segment, one at a time.
|
||||
m_digit[Digit - 1] = bitswap<8>(~data, 7, 0, 1, 2, 3, 4, 5, 6);
|
||||
}
|
||||
|
||||
// d1,2,3 = Baud rate
|
||||
|
@ -32,6 +32,7 @@ class hankin_state : public genpin_class
|
||||
public:
|
||||
hankin_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: genpin_class(mconfig, type, tag)
|
||||
, m_p_prom(*this, "prom")
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_audiocpu(*this, "audiocpu")
|
||||
, m_ic10(*this, "ic10")
|
||||
@ -39,16 +40,14 @@ public:
|
||||
, m_ic2(*this, "ic2")
|
||||
, m_dac(*this, "dac")
|
||||
, m_io_test(*this, "TEST")
|
||||
, m_io_dsw0(*this, "DSW0")
|
||||
, m_io_dsw1(*this, "DSW1")
|
||||
, m_io_dsw2(*this, "DSW2")
|
||||
, m_io_x0(*this, "X0")
|
||||
, m_io_x1(*this, "X1")
|
||||
, m_io_x2(*this, "X2")
|
||||
, m_io_x3(*this, "X3")
|
||||
, m_io_x4(*this, "X4")
|
||||
, m_io_x(*this, { "X0", "X1", "X2", "X3", "X4", "DSW0", "DSW1", "DSW2" })
|
||||
, m_display(*this, "digit%u%u", 0U, 0U)
|
||||
{ }
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(self_test);
|
||||
void hankin(machine_config &config);
|
||||
|
||||
protected:
|
||||
DECLARE_WRITE_LINE_MEMBER(ic10_ca2_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(ic10_cb2_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(ic11_ca2_w);
|
||||
@ -62,12 +61,15 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(ic2_a_w);
|
||||
DECLARE_READ8_MEMBER(ic11_b_r);
|
||||
DECLARE_READ8_MEMBER(ic2_a_r);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(self_test);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(timer_s);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(timer_x);
|
||||
void hankin(machine_config &config);
|
||||
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
void hankin_map(address_map &map);
|
||||
void hankin_sub_map(address_map &map);
|
||||
|
||||
private:
|
||||
bool m_timer_x;
|
||||
bool m_timer_sb;
|
||||
@ -85,8 +87,8 @@ private:
|
||||
uint8_t m_counter;
|
||||
uint8_t m_digit;
|
||||
uint8_t m_segment[5];
|
||||
uint8_t *m_p_prom;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
required_region_ptr<uint8_t> m_p_prom;
|
||||
required_device<m6802_cpu_device> m_maincpu;
|
||||
required_device<m6802_cpu_device> m_audiocpu;
|
||||
required_device<pia6821_device> m_ic10;
|
||||
@ -94,14 +96,8 @@ private:
|
||||
required_device<pia6821_device> m_ic2;
|
||||
required_device<dac_4bit_r2r_device> m_dac;
|
||||
required_ioport m_io_test;
|
||||
required_ioport m_io_dsw0;
|
||||
required_ioport m_io_dsw1;
|
||||
required_ioport m_io_dsw2;
|
||||
required_ioport m_io_x0;
|
||||
required_ioport m_io_x1;
|
||||
required_ioport m_io_x2;
|
||||
required_ioport m_io_x3;
|
||||
required_ioport m_io_x4;
|
||||
required_ioport_array<8> m_io_x;
|
||||
output_finder<5, 6> m_display;
|
||||
};
|
||||
|
||||
|
||||
@ -111,14 +107,14 @@ ADDRESS_MAP_START(hankin_state::hankin_map)
|
||||
AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("ic11", pia6821_device, read, write)
|
||||
AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("ic10", pia6821_device, read, write)
|
||||
AM_RANGE(0x0200, 0x02ff) AM_RAM AM_SHARE("nvram") // 5101L 4-bit static ram
|
||||
AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("roms", 0)
|
||||
AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
ADDRESS_MAP_START(hankin_state::hankin_sub_map)
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x1fff)
|
||||
AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu
|
||||
AM_RANGE(0x0080, 0x0083) AM_DEVREADWRITE("ic2", pia6821_device, read, write)
|
||||
AM_RANGE(0x1000, 0x17ff) AM_ROM AM_MIRROR(0x800) AM_REGION("roms", 0x1000)
|
||||
AM_RANGE(0x1000, 0x17ff) AM_ROM AM_MIRROR(0x800) AM_REGION("audiocpu", 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( hankin )
|
||||
@ -281,14 +277,9 @@ WRITE8_MEMBER( hankin_state::ic10_a_w )
|
||||
// use is to place the '1' digit in the centre segments.
|
||||
if (BIT(data, 0) && (m_counter > 8))
|
||||
{
|
||||
static const uint8_t patterns[16] = { 0x3f,0x80,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543 with '1' adjusted
|
||||
uint16_t i, seg1, seg2;
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
seg1 = patterns[m_segment[i]];
|
||||
seg2 = bitswap<16>(seg1, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0);
|
||||
output().set_digit_value(i*10+m_digit, seg2);
|
||||
}
|
||||
static constexpr uint8_t patterns[16] = { 0x3f,0x80,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543 with '1' adjusted
|
||||
for (unsigned i = 0U; i < 5U; ++i)
|
||||
m_display[i][m_digit] = bitswap<10>(uint16_t(patterns[m_segment[i]]), 7, 7, 6, 6, 5, 4, 3, 2, 1, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -363,29 +354,11 @@ READ8_MEMBER( hankin_state::ic11_b_r )
|
||||
{
|
||||
uint8_t data = 0;
|
||||
|
||||
if (BIT(m_ic11a, 0))
|
||||
data |= m_io_x0->read();
|
||||
|
||||
if (BIT(m_ic11a, 1))
|
||||
data |= m_io_x1->read();
|
||||
|
||||
if (BIT(m_ic11a, 2))
|
||||
data |= m_io_x2->read();
|
||||
|
||||
if (BIT(m_ic11a, 3))
|
||||
data |= m_io_x3->read();
|
||||
|
||||
if (BIT(m_ic11a, 4))
|
||||
data |= m_io_x4->read();
|
||||
|
||||
if (BIT(m_ic11a, 5))
|
||||
data |= m_io_dsw0->read();
|
||||
|
||||
if (BIT(m_ic11a, 6))
|
||||
data |= m_io_dsw1->read();
|
||||
|
||||
if (BIT(m_ic11a, 7))
|
||||
data |= m_io_dsw2->read();
|
||||
for (unsigned i = 0U; i < 8U; ++i)
|
||||
{
|
||||
if (BIT(m_ic11a, i))
|
||||
data |= m_io_x[i]->read();
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
@ -445,9 +418,13 @@ TIMER_DEVICE_CALLBACK_MEMBER( hankin_state::timer_s )
|
||||
}
|
||||
}
|
||||
|
||||
void hankin_state::machine_start()
|
||||
{
|
||||
m_display.resolve();
|
||||
}
|
||||
|
||||
void hankin_state::machine_reset()
|
||||
{
|
||||
m_p_prom = memregion("roms")->base() + 0x1800;
|
||||
m_vol = 0;
|
||||
m_dac->set_output_gain(0, 0);
|
||||
}
|
||||
@ -554,55 +531,75 @@ MACHINE_CONFIG_END
|
||||
/ FJ Holden
|
||||
/-------------------------------*/
|
||||
ROM_START(fjholden)
|
||||
ROM_REGION(0x1a00, "roms", 0)
|
||||
ROM_REGION(0x1000, "maincpu", 0)
|
||||
ROM_LOAD("fj_ic2.mpu", 0x0000, 0x0800, CRC(b47bc2c7) SHA1(42c985d83a9454fcd08b87e572e5563ebea0d052))
|
||||
ROM_LOAD("fj_ic3.mpu", 0x0800, 0x0800, CRC(ceaeb7d3) SHA1(9e479b985f8500983e71d6ff33ee94160e99650d))
|
||||
ROM_LOAD("fj_ic14.snd", 0x1000, 0x0800, CRC(34fe3587) SHA1(132714675a23c101ceb5a4d544818650ae5ccea2))
|
||||
ROM_LOAD("fj_ic3.snd", 0x1800, 0x0200, CRC(09d3f020) SHA1(274be0b94d341ee43357011691da82e83a7c4a00))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_LOAD("fj_ic14.snd", 0x0000, 0x0800, CRC(34fe3587) SHA1(132714675a23c101ceb5a4d544818650ae5ccea2))
|
||||
|
||||
ROM_REGION(0x0200, "prom", 0)
|
||||
ROM_LOAD("fj_ic3.snd", 0x0000, 0x0200, CRC(09d3f020) SHA1(274be0b94d341ee43357011691da82e83a7c4a00))
|
||||
ROM_END
|
||||
|
||||
/*--------------------------------
|
||||
/ Howzat!
|
||||
/-------------------------------*/
|
||||
ROM_START(howzat)
|
||||
ROM_REGION(0x1a00, "roms", 0)
|
||||
ROM_REGION(0x1000, "maincpu", 0)
|
||||
ROM_LOAD("hz_ic2.mpu", 0x0000, 0x0800, CRC(b47bc2c7) SHA1(42c985d83a9454fcd08b87e572e5563ebea0d052))
|
||||
ROM_LOAD("hz_ic3.mpu", 0x0800, 0x0800, CRC(d13df4bc) SHA1(27a70260698d3eaa7cf7a56edc5dd9a4af3f4103))
|
||||
ROM_LOAD("hz_ic14.snd", 0x1000, 0x0800, CRC(0e3fdb59) SHA1(cae3c85b2c32a0889785f770ece66b959bcf21e1))
|
||||
ROM_LOAD("hz_ic3.snd", 0x1800, 0x0200, CRC(dfc57606) SHA1(638853c8e46bf461f2ecde02b8b2aa68c2d414b8))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_LOAD("hz_ic14.snd", 0x0000, 0x0800, CRC(0e3fdb59) SHA1(cae3c85b2c32a0889785f770ece66b959bcf21e1))
|
||||
|
||||
ROM_REGION(0x0200, "prom", 0)
|
||||
ROM_LOAD("hz_ic3.snd", 0x0000, 0x0200, CRC(dfc57606) SHA1(638853c8e46bf461f2ecde02b8b2aa68c2d414b8))
|
||||
ROM_END
|
||||
|
||||
/*--------------------------------
|
||||
/ Orbit 1
|
||||
/-------------------------------*/
|
||||
ROM_START(orbit1)
|
||||
ROM_REGION(0x1a00, "roms", 0)
|
||||
ROM_REGION(0x1000, "maincpu", 0)
|
||||
ROM_LOAD("o1_ic2.mpu", 0x0000, 0x0800, CRC(b47bc2c7) SHA1(42c985d83a9454fcd08b87e572e5563ebea0d052))
|
||||
ROM_LOAD("o1_ic3.mpu", 0x0800, 0x0800, CRC(fe7b61be) SHA1(c086b0433bb9ab3f2139c705d4372beb1656b27f))
|
||||
ROM_LOAD("o1_ic14.snd", 0x1000, 0x0800, CRC(323bfbd5) SHA1(2e89aa4fcd33f9bfeea5c310ffb0a5be45fb70a9))
|
||||
ROM_LOAD("o1_ic3.snd", 0x1800, 0x0200, CRC(dfc57606) SHA1(638853c8e46bf461f2ecde02b8b2aa68c2d414b8))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_LOAD("o1_ic14.snd", 0x0000, 0x0800, CRC(323bfbd5) SHA1(2e89aa4fcd33f9bfeea5c310ffb0a5be45fb70a9))
|
||||
|
||||
ROM_REGION(0x0200, "prom", 0)
|
||||
ROM_LOAD("o1_ic3.snd", 0x0000, 0x0200, CRC(dfc57606) SHA1(638853c8e46bf461f2ecde02b8b2aa68c2d414b8))
|
||||
ROM_END
|
||||
|
||||
/*--------------------------------
|
||||
/ Shark
|
||||
/-------------------------------*/
|
||||
ROM_START(shark)
|
||||
ROM_REGION(0x1a00, "roms", 0)
|
||||
ROM_REGION(0x1000, "maincpu", 0)
|
||||
ROM_LOAD("shk_ic2.mpu", 0x0000, 0x0800, CRC(b47bc2c7) SHA1(42c985d83a9454fcd08b87e572e5563ebea0d052))
|
||||
ROM_LOAD("shk_ic3.mpu", 0x0800, 0x0800, CRC(c3ef936c) SHA1(14668496d162a77e03c1142bef2956d5b76afc99))
|
||||
ROM_LOAD("shk_ic14.snd", 0x1000, 0x0800, CRC(8f8b0e48) SHA1(72d94aa9b32c603b1ca681b0ab3bf8ddbf5c9afe))
|
||||
ROM_LOAD("shk_ic3.snd", 0x1800, 0x0200, CRC(dfc57606) SHA1(638853c8e46bf461f2ecde02b8b2aa68c2d414b8))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_LOAD("shk_ic14.snd", 0x0000, 0x0800, CRC(8f8b0e48) SHA1(72d94aa9b32c603b1ca681b0ab3bf8ddbf5c9afe))
|
||||
|
||||
ROM_REGION(0x0200, "prom", 0)
|
||||
ROM_LOAD("shk_ic3.snd", 0x0000, 0x0200, CRC(dfc57606) SHA1(638853c8e46bf461f2ecde02b8b2aa68c2d414b8))
|
||||
ROM_END
|
||||
|
||||
/*--------------------------------
|
||||
/ The Empire Strike Back
|
||||
/-------------------------------*/
|
||||
ROM_START(empsback)
|
||||
ROM_REGION(0x1a00, "roms", 0)
|
||||
ROM_REGION(0x1000, "maincpu", 0)
|
||||
ROM_LOAD("sw_ic2.mpu", 0x0000, 0x0800, CRC(b47bc2c7) SHA1(42c985d83a9454fcd08b87e572e5563ebea0d052))
|
||||
ROM_LOAD("sw_ic3.mpu", 0x0800, 0x0800, CRC(837ffe32) SHA1(9affc5d9345ce15394553d3204e5234cc6348d2e))
|
||||
ROM_LOAD("sw_ic14.snd", 0x1000, 0x0800, CRC(c1eeb53b) SHA1(7a800dd0a8ae392e14639e1819198d4215cc2251))
|
||||
ROM_LOAD("sw_ic3.snd", 0x1800, 0x0200, CRC(db214f65) SHA1(1a499cf2059a5c0d860d5a4251a89a5735937ef8))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_LOAD("sw_ic14.snd", 0x0000, 0x0800, CRC(c1eeb53b) SHA1(7a800dd0a8ae392e14639e1819198d4215cc2251))
|
||||
|
||||
ROM_REGION(0x0200, "prom", 0)
|
||||
ROM_LOAD("sw_ic3.snd", 0x0000, 0x0200, CRC(db214f65) SHA1(1a499cf2059a5c0d860d5a4251a89a5735937ef8))
|
||||
ROM_END
|
||||
|
||||
|
||||
|
@ -140,18 +140,10 @@ READ8_MEMBER( kim1_state::kim1_u2_read_a )
|
||||
{
|
||||
uint8_t data = 0xff;
|
||||
|
||||
switch( ( m_u2_port_b >> 1 ) & 0x0f )
|
||||
{
|
||||
case 0:
|
||||
data = m_row0->read();
|
||||
break;
|
||||
case 1:
|
||||
data = m_row1->read();
|
||||
break;
|
||||
case 2:
|
||||
data = m_row2->read();
|
||||
break;
|
||||
}
|
||||
offs_t const sel = ( m_u2_port_b >> 1 ) & 0x0f;
|
||||
if ( 3U > sel )
|
||||
data = m_row[sel]->read();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@ -164,7 +156,7 @@ WRITE8_MEMBER( kim1_state::kim1_u2_write_a )
|
||||
{
|
||||
if ( data & 0x80 )
|
||||
{
|
||||
output().set_digit_value( idx-4, data & 0x7f );
|
||||
m_digit[idx - 4] = data & 0x7f;
|
||||
m_led_time[idx - 4] = 15;
|
||||
}
|
||||
}
|
||||
@ -218,13 +210,15 @@ TIMER_DEVICE_CALLBACK_MEMBER(kim1_state::kim1_update_leds)
|
||||
if ( m_led_time[i] )
|
||||
m_led_time[i]--;
|
||||
else
|
||||
output().set_digit_value( i, 0 );
|
||||
m_digit[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Register for save states
|
||||
void kim1_state::machine_start()
|
||||
{
|
||||
m_digit.resolve();
|
||||
|
||||
save_item(NAME(m_u2_port_b));
|
||||
save_item(NAME(m_311_output));
|
||||
save_item(NAME(m_cassette_high_count));
|
||||
|
@ -25,45 +25,49 @@
|
||||
class kim1_state : public driver_device
|
||||
{
|
||||
public:
|
||||
kim1_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
kim1_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_riot2(*this, "miot_u2"),
|
||||
m_cass(*this, "cassette"),
|
||||
m_row0(*this, "ROW0"),
|
||||
m_row1(*this, "ROW1"),
|
||||
m_row2(*this, "ROW2"),
|
||||
m_special(*this, "SPECIAL") { }
|
||||
m_row(*this, "ROW%u", 0U),
|
||||
m_special(*this, "SPECIAL"),
|
||||
m_digit(*this, "digit%u", 0U)
|
||||
{ }
|
||||
|
||||
// devices
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<mos6530_device> m_riot2;
|
||||
required_device<cassette_image_device> m_cass;
|
||||
DECLARE_INPUT_CHANGED_MEMBER(trigger_reset);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(trigger_nmi);
|
||||
void kim1(machine_config &config);
|
||||
|
||||
protected:
|
||||
DECLARE_READ8_MEMBER(kim1_u2_read_a);
|
||||
DECLARE_WRITE8_MEMBER(kim1_u2_write_a);
|
||||
DECLARE_READ8_MEMBER(kim1_u2_read_b);
|
||||
DECLARE_WRITE8_MEMBER(kim1_u2_write_b);
|
||||
uint8_t m_u2_port_b;
|
||||
uint8_t m_311_output;
|
||||
uint32_t m_cassette_high_count;
|
||||
uint8_t m_led_time[6];
|
||||
|
||||
// device overrides
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(trigger_reset);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(trigger_nmi);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(kim1_cassette_input);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(kim1_update_leds);
|
||||
|
||||
void kim1(machine_config &config);
|
||||
void kim1_map(address_map &map);
|
||||
|
||||
protected:
|
||||
required_ioport m_row0;
|
||||
required_ioport m_row1;
|
||||
required_ioport m_row2;
|
||||
// devices
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<mos6530_device> m_riot2;
|
||||
required_device<cassette_image_device> m_cass;
|
||||
|
||||
required_ioport_array<3> m_row;
|
||||
required_ioport m_special;
|
||||
output_finder<6> m_digit;
|
||||
|
||||
uint8_t m_u2_port_b;
|
||||
uint8_t m_311_output;
|
||||
uint32_t m_cassette_high_count;
|
||||
uint8_t m_led_time[6];
|
||||
};
|
||||
|
||||
#endif // MAME_INCLUDES_KIM1_H
|
||||
|
@ -38,22 +38,22 @@
|
||||
|
||||
<!-- Player 1 Score -->
|
||||
|
||||
<bezel name="digit5" element="digit">
|
||||
<bezel name="digit05" element="digit">
|
||||
<bounds left="10" top="45" right="44" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit4" element="digit">
|
||||
<bezel name="digit04" element="digit">
|
||||
<bounds left="54" top="45" right="88" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit3" element="digit">
|
||||
<bezel name="digit03" element="digit">
|
||||
<bounds left="98" top="45" right="132" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit2" element="digit">
|
||||
<bezel name="digit02" element="digit">
|
||||
<bounds left="142" top="45" right="176" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit1" element="digit">
|
||||
<bezel name="digit01" element="digit">
|
||||
<bounds left="186" top="45" right="220" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit0" element="digit">
|
||||
<bezel name="digit00" element="digit">
|
||||
<bounds left="230" top="45" right="264" bottom="84" />
|
||||
</bezel>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user