From f4d1d643aee2ea8f2b87d53d4765f358620a5a02 Mon Sep 17 00:00:00 2001 From: hap Date: Wed, 28 Apr 2021 14:19:25 +0200 Subject: [PATCH] poly880: get rid of x_TAG defines --- src/mame/drivers/lc80.cpp | 20 +--- src/mame/drivers/poly880.cpp | 195 ++++++++++++++++++----------------- src/mame/drivers/ymtx81z.cpp | 4 +- 3 files changed, 106 insertions(+), 113 deletions(-) diff --git a/src/mame/drivers/lc80.cpp b/src/mame/drivers/lc80.cpp index 07607638763..05a78f83baa 100644 --- a/src/mame/drivers/lc80.cpp +++ b/src/mame/drivers/lc80.cpp @@ -212,7 +212,7 @@ static INPUT_PORTS_START( lc80 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("DAT") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("ADR") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') - PORT_START("RESET") + PORT_START("SPECIAL") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("RES") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, lc80_state, trigger_reset, 0) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("NMI") PORT_CODE(KEYCODE_F2) PORT_CHANGED_MEMBER(DEVICE_SELF, lc80_state, trigger_nmi, 0) INPUT_PORTS_END @@ -263,21 +263,7 @@ void lc80_state::pio1_pa_w(u8 data) u8 lc80_state::pio1_pb_r() { - /* - - bit description - - PB0 tape input - PB1 tape output - PB2 digit 0 - PB3 digit 1 - PB4 digit 2 - PB5 digit 3 - PB6 digit 4 - PB7 digit 5 - - */ - + // PB0: tape input return (m_cassette->input() < +0.0); } @@ -287,7 +273,7 @@ void lc80_state::pio1_pb_w(u8 data) bit description - PB0 tape input + PB0 tape input (pio1_pb_r) PB1 tape output, speaker output, OUT led PB2 digit 0 PB3 digit 1 diff --git a/src/mame/drivers/poly880.cpp b/src/mame/drivers/poly880.cpp index e07ebf94230..7fffc05a427 100644 --- a/src/mame/drivers/poly880.cpp +++ b/src/mame/drivers/poly880.cpp @@ -4,23 +4,21 @@ Poly-Computer 880 -2009-05-12 Skeleton driver. - http://www.kc85-museum.de/books/poly880/index.html Initially the screen is blank. The CTC causes a NMI, this autoboots the system, and then the PIO releases the NMI line. Pasting: - 0-F : as is - EXEC : ^ - BACK : V - MEM : - - GO : X + 0-F : as is + EXEC : ^ + BACK : V + MEM : - + GO : X Test Paste: - -4000^11^22^33^44^55^66^77^88^99^-4000 - Now press up-arrow to confirm the data has been entered. + -4000^11^22^33^44^55^66^77^88^99^-4000 + Now press up-arrow to confirm the data has been entered. The SC1 version is a modification that turns it into a chesscomputer. @@ -32,8 +30,9 @@ TODO: - MCYCL (activate single stepping) - CYCL (single step) - layout LEDs (address bus, data bus, command bus, MCYCL) -- RAM expansion +- 32KB RAM expansion @ 0x8000 - who made poly880s? slc1 is very similar, it's by the same person? +- poly880s 7segs flicker ****************************************************************************/ @@ -49,61 +48,64 @@ TODO: #include "speaker.h" +// internal artwork #include "poly880.lh" -#define SCREEN_TAG "screen" -#define Z80_TAG "i1" -#define Z80CTC_TAG "i4" -#define Z80PIO1_TAG "i2" -#define Z80PIO2_TAG "i3" + +namespace { class poly880_state : public driver_device { public: poly880_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) - , m_maincpu(*this, Z80_TAG) + , m_maincpu(*this, "maincpu") + , m_pio(*this, "pio%u", 0) + , m_ctc(*this, "ctc") , m_cassette(*this, "cassette") - , m_ki(*this, "KI%u", 1U) , m_speaker(*this, "speaker") + , m_inputs(*this, "IN.%u", 0U) , m_digits(*this, "digit%u", 0U) - , m_nmi(false) { } void poly880(machine_config &config); void poly880s(machine_config &config); - DECLARE_INPUT_CHANGED_MEMBER( trigger_reset ); - DECLARE_INPUT_CHANGED_MEMBER( trigger_nmi ); + DECLARE_INPUT_CHANGED_MEMBER(trigger_reset); + DECLARE_INPUT_CHANGED_MEMBER(trigger_nmi); + +protected: + virtual void machine_start() override; private: required_device m_maincpu; + required_device_array m_pio; + required_device m_ctc; required_device m_cassette; - required_ioport_array<3> m_ki; required_device m_speaker; + required_ioport_array<3> m_inputs; output_finder<8> m_digits; - virtual void machine_start() override; - - void cldig_w(uint8_t data); - DECLARE_WRITE_LINE_MEMBER( ctc_z0_w ); - DECLARE_WRITE_LINE_MEMBER( ctc_z1_w ); - void pio1_pa_w(uint8_t data); - uint8_t pio1_pb_r(); - void pio1_pb_w(uint8_t data); - - void update_display(); - - /* display state */ - uint8_t m_digit; - uint8_t m_segment; - bool m_nmi; void poly880_io(address_map &map); void poly880_mem(address_map &map); void poly880s_mem(address_map &map); + + void cldig_w(u8 data); + DECLARE_WRITE_LINE_MEMBER(ctc_z0_w); + DECLARE_WRITE_LINE_MEMBER(ctc_z1_w); + void pio1_pa_w(u8 data); + u8 pio1_pb_r(); + void pio1_pb_w(u8 data); + + void update_display(); + + u8 m_digit = 0; + u8 m_segment = 0; + bool m_nmi = false; }; -/* Read/Write Handlers */ + +// Read/Write Handlers void poly880_state::update_display() { @@ -112,14 +114,14 @@ void poly880_state::update_display() m_digits[7 - i] = m_segment; } -void poly880_state::cldig_w(uint8_t data) +void poly880_state::cldig_w(u8 data) { m_digit = data; - update_display(); } -/* Memory Maps */ + +// Memory Maps void poly880_state::poly880_mem(address_map &map) { @@ -128,39 +130,38 @@ void poly880_state::poly880_mem(address_map &map) map(0x2000, 0x23ff).mirror(0x0c00).rom(); map(0x3000, 0x33ff).mirror(0x0c00).rom(); map(0x4000, 0x43ff).mirror(0x3c00).ram(); - map(0x8000, 0xffff).bankrw("bank1"); } void poly880_state::poly880s_mem(address_map &map) { map(0x0000, 0x3fff).rom(); map(0x4000, 0x43ff).mirror(0x3c00).ram(); - map(0x8000, 0xffff).bankrw("bank1"); } void poly880_state::poly880_io(address_map &map) { map.global_mask(0xaf); - map(0x80, 0x83).rw(Z80PIO1_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); - map(0x84, 0x87).rw(Z80PIO2_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); - map(0x88, 0x8b).rw(Z80CTC_TAG, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x80, 0x83).rw(m_pio[0], FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x84, 0x87).rw(m_pio[1], FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x88, 0x8b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); map(0xa0, 0xa0).mirror(0x0f).w(FUNC(poly880_state::cldig_w)); } -/* Input Ports */ -INPUT_CHANGED_MEMBER( poly880_state::trigger_reset ) +// Input Ports + +INPUT_CHANGED_MEMBER(poly880_state::trigger_reset) { - m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE); + m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); } -INPUT_CHANGED_MEMBER( poly880_state::trigger_nmi ) +INPUT_CHANGED_MEMBER(poly880_state::trigger_nmi) { - m_maincpu->set_input_line(INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE); } static INPUT_PORTS_START( poly880 ) - PORT_START("KI1") + PORT_START("IN.0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("GO") PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("EXEC") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_UP) PORT_CHAR('^') @@ -170,7 +171,7 @@ static INPUT_PORTS_START( poly880 ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("STEP") PORT_CODE(KEYCODE_S) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("MEM") PORT_CODE(KEYCODE_M) PORT_CHAR('-') - PORT_START("KI2") + PORT_START("IN.1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3') @@ -180,7 +181,7 @@ static INPUT_PORTS_START( poly880 ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('B') PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('A') - PORT_START("KI3") + PORT_START("IN.2") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CHAR('7') @@ -191,15 +192,16 @@ static INPUT_PORTS_START( poly880 ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_START("SPECIAL") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RES") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, poly880_state, trigger_reset, 0) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("MON") PORT_CODE(KEYCODE_F2) PORT_CHANGED_MEMBER(DEVICE_SELF, poly880_state, trigger_nmi, 0) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("MCYCL") PORT_CODE(KEYCODE_F3) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CYCL") PORT_CODE(KEYCODE_F4) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("RES") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, poly880_state, trigger_reset, 0) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("MON") PORT_CODE(KEYCODE_F2) PORT_CHANGED_MEMBER(DEVICE_SELF, poly880_state, trigger_nmi, 0) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("MCYCL") PORT_CODE(KEYCODE_F3) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("CYCL") PORT_CODE(KEYCODE_F4) INPUT_PORTS_END -/* Z80-CTC Interface */ -WRITE_LINE_MEMBER( poly880_state::ctc_z0_w ) +// Z80-CTC Interface + +WRITE_LINE_MEMBER(poly880_state::ctc_z0_w) { // SEND if (!m_nmi && state) @@ -209,13 +211,14 @@ WRITE_LINE_MEMBER( poly880_state::ctc_z0_w ) } } -WRITE_LINE_MEMBER( poly880_state::ctc_z1_w ) +WRITE_LINE_MEMBER(poly880_state::ctc_z1_w) { } -/* Z80-PIO Interface */ -void poly880_state::pio1_pa_w(uint8_t data) +// Z80-PIO Interface + +void poly880_state::pio1_pa_w(u8 data) { /* @@ -233,11 +236,10 @@ void poly880_state::pio1_pa_w(uint8_t data) */ m_segment = bitswap<8>(data, 3, 4, 6, 0, 1, 2, 7, 5); - update_display(); } -uint8_t poly880_state::pio1_pb_r() +u8 poly880_state::pio1_pb_r() { /* @@ -254,23 +256,22 @@ uint8_t poly880_state::pio1_pb_r() */ - uint8_t data = 0x4c | ((m_cassette->input() < +0.0) << 1); - int i; + u8 data = 0x4c | ((m_cassette->input() < +0.0) << 1); - for (i = 0; i < 8; i++) + for (int i = 0; i < 8; i++) { if (BIT(m_digit, i)) { - if (BIT(m_ki[0]->read(), i)) data |= 0x10; - if (BIT(m_ki[1]->read(), i)) data |= 0x20; - if (BIT(m_ki[2]->read(), i)) data |= 0x80; + if (BIT(m_inputs[0]->read(), i)) data |= 0x10; + if (BIT(m_inputs[1]->read(), i)) data |= 0x20; + if (BIT(m_inputs[2]->read(), i)) data |= 0x80; } } return data; } -void poly880_state::pio1_pb_w(uint8_t data) +void poly880_state::pio1_pb_w(u8 data) { /* @@ -288,7 +289,8 @@ void poly880_state::pio1_pb_w(uint8_t data) */ m_speaker->level_w( BIT(data, 0)); - /* tape output */ + + // tape output m_cassette->output( BIT(data, 2) ? +1.0 : -1.0); if (m_nmi && BIT(data, 6)) @@ -299,18 +301,18 @@ void poly880_state::pio1_pb_w(uint8_t data) } -/* Z80 Daisy Chain */ +// Z80 Daisy Chain static const z80_daisy_config poly880_daisy_chain[] = { - { Z80PIO1_TAG }, - { Z80PIO2_TAG }, - { Z80CTC_TAG }, + { "pio0" }, + { "pio1" }, + { "ctc" }, { nullptr } }; -/* Machine Initialization */ +// Machine Initialization void poly880_state::machine_start() { @@ -321,7 +323,8 @@ void poly880_state::machine_start() save_item(NAME(m_segment)); } -/* Machine Driver */ + +// Machine Driver void poly880_state::poly880(machine_config &config) { @@ -335,20 +338,20 @@ void poly880_state::poly880(machine_config &config) config.set_default_layout(layout_poly880); /* devices */ - z80ctc_device& ctc(Z80CTC(config, Z80CTC_TAG, XTAL(7'372'800)/16)); - ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - ctc.zc_callback<0>().set(FUNC(poly880_state::ctc_z0_w)); - ctc.zc_callback<1>().set(FUNC(poly880_state::ctc_z1_w)); - ctc.zc_callback<2>().set(Z80CTC_TAG, FUNC(z80ctc_device::trg3)); + Z80CTC(config, m_ctc, XTAL(7'372'800)/16); + m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_ctc->zc_callback<0>().set(FUNC(poly880_state::ctc_z0_w)); + m_ctc->zc_callback<1>().set(FUNC(poly880_state::ctc_z1_w)); + m_ctc->zc_callback<2>().set(m_ctc, FUNC(z80ctc_device::trg3)); - z80pio_device& pio1(Z80PIO(config, Z80PIO1_TAG, XTAL(7'372'800)/16)); - pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - pio1.out_pa_callback().set(FUNC(poly880_state::pio1_pa_w)); - pio1.in_pb_callback().set(FUNC(poly880_state::pio1_pb_r)); - pio1.out_pb_callback().set(FUNC(poly880_state::pio1_pb_w)); + Z80PIO(config, m_pio[0], XTAL(7'372'800)/16); + m_pio[0]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio[0]->out_pa_callback().set(FUNC(poly880_state::pio1_pa_w)); + m_pio[0]->in_pb_callback().set(FUNC(poly880_state::pio1_pb_r)); + m_pio[0]->out_pb_callback().set(FUNC(poly880_state::pio1_pb_w)); - z80pio_device& pio2(Z80PIO(config, Z80PIO2_TAG, XTAL(7'372'800)/16)); - pio2.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + Z80PIO(config, m_pio[1], XTAL(7'372'800)/16); + m_pio[1]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -368,20 +371,24 @@ void poly880_state::poly880s(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &poly880_state::poly880s_mem); } -/* ROMs */ + +// ROMs ROM_START( poly880 ) - ROM_REGION( 0x10000, Z80_TAG, 0 ) + ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "poly880.i5", 0x0000, 0x0400, CRC(b1c571e8) SHA1(85bfe53d39d6690e79999a1e1240789497e72db0) ) ROM_LOAD( "poly880.i6", 0x1000, 0x0400, CRC(9efddf5b) SHA1(6ffa2f80b2c6f8ec9e22834f739c82f9754272b8) ) ROM_END ROM_START( poly880s ) - ROM_REGION( 0x10000, Z80_TAG, 0 ) + ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "sc1.rom", 0x0000, 0x1000, CRC(26965b23) SHA1(01568911446eda9f05ec136df53da147b7c6f2bf) ) ROM_END -/* System Drivers */ +} // anonymous namespace + + +// System Drivers // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS COMP( 1983, poly880, 0, 0, poly880, poly880, poly880_state, empty_init, "VEB Polytechnik", "Poly-Computer 880", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ymtx81z.cpp b/src/mame/drivers/ymtx81z.cpp index 748f04cd6f4..fbc4f6b94e1 100644 --- a/src/mame/drivers/ymtx81z.cpp +++ b/src/mame/drivers/ymtx81z.cpp @@ -58,8 +58,8 @@ HD44780_PIXEL_UPDATE(ymtx81z_state::lcd_pixel_update) void ymtx81z_state::palette_init(palette_device &palette) { palette.set_pen_color(0, rgb_t(0x00, 0x00, 0x00)); // background - palette.set_pen_color(1, rgb_t(0xd8, 0xf0, 0x18)); // lcd pixel on - palette.set_pen_color(2, rgb_t(0xd8/10, 0xf0/10, 0x18/10)); // lcd pixel off + palette.set_pen_color(1, rgb_t(0xd8, 0xff, 0x18)); // lcd pixel on + palette.set_pen_color(2, rgb_t(0xd8/10, 0xff/10, 0x18/10)); // lcd pixel off } void ymtx81z_state::machine_start()