From 8f767045c8eb8debdf9245d2746f42ae7012411a Mon Sep 17 00:00:00 2001 From: AJR Date: Sat, 6 Jun 2020 18:29:31 -0400 Subject: [PATCH] beehive: Add ESC key; rename to dm3270 --- scripts/target/mame/mess.lua | 8 +- src/mame/drivers/{beehive.cpp => microb.cpp} | 85 ++++++++++---------- src/mame/mame.lst | 6 +- src/mame/mess.flt | 2 +- 4 files changed, 53 insertions(+), 48 deletions(-) rename src/mame/drivers/{beehive.cpp => microb.cpp} (87%) diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index e1c22a78722..2b19d93e9f5 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -1131,6 +1131,7 @@ function linkProjects_mame_mess(_target, _subtarget) "bandai", "banctec", "be", + "beehive", "bitcorp", "bnpo", "bondwell", @@ -1856,6 +1857,11 @@ files { MAME_DIR .. "src/mame/machine/bebox.cpp", } +createMESSProjects(_target, _subtarget, "beehive") +files { + MAME_DIR .. "src/mame/drivers/microb.cpp", +} + createMESSProjects(_target, _subtarget, "bitcorp") files { MAME_DIR .. "src/mame/drivers/gamate.cpp", @@ -4033,7 +4039,6 @@ files { MAME_DIR .. "src/mame/video/gic.h", } - createMESSProjects(_target, _subtarget, "unisys") files { MAME_DIR .. "src/mame/drivers/univac.cpp", @@ -4256,7 +4261,6 @@ files { MAME_DIR .. "src/mame/includes/aussiebyte.h", MAME_DIR .. "src/mame/video/aussiebyte.cpp", MAME_DIR .. "src/mame/drivers/ax20.cpp", - MAME_DIR .. "src/mame/drivers/beehive.cpp", MAME_DIR .. "src/mame/drivers/binbug.cpp", MAME_DIR .. "src/mame/drivers/bert.cpp", MAME_DIR .. "src/mame/drivers/besta.cpp", diff --git a/src/mame/drivers/beehive.cpp b/src/mame/drivers/microb.cpp similarity index 87% rename from src/mame/drivers/beehive.cpp rename to src/mame/drivers/microb.cpp index 42b6a3762ca..009a67ec351 100644 --- a/src/mame/drivers/beehive.cpp +++ b/src/mame/drivers/microb.cpp @@ -2,12 +2,12 @@ // copyright-holders:Robbbert, AJR /*************************************************************************** - BEEHIVE DM3270 + BEEHIVE Micro B Series 25/05/2009 Skeleton driver [Robbbert] - This is a conventional computer terminal using a serial link. - Could be a clone of the IBM3276-2. + This is a series of conventional computer terminals using a serial link. + DM3270 is a clone of the IBM3276-2. The character gen rom is not dumped. Using the one from 'c10' for the moment. @@ -33,10 +33,10 @@ #include "speaker.h" -class beehive_state : public driver_device +class microb_state : public driver_device { public: - beehive_state(const machine_config &mconfig, device_type type, const char *tag) + microb_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") , m_dmac(*this, "dmac") @@ -47,7 +47,7 @@ public: , m_io_keyboard(*this, "X%u", 0U) { } - void beehive(machine_config &config); + void microb(machine_config &config); protected: virtual void machine_start() override; @@ -58,11 +58,11 @@ private: void dmac_mem_w(offs_t offset, u8 data); I8275_DRAW_CHARACTER_MEMBER(draw_character); - u8 beehive_60_r(); - void beehive_62_w(u8 data); + u8 ppi2_pa_r(); + void ppi2_pc_w(u8 data); - void beehive_io(address_map &map); - void beehive_mem(address_map &map); + void microb_io(address_map &map); + void microb_mem(address_map &map); required_device m_maincpu; required_device m_dmac; @@ -75,41 +75,41 @@ private: u8 m_keyline; }; -WRITE_LINE_MEMBER(beehive_state::dmac_hrq_w) +WRITE_LINE_MEMBER(microb_state::dmac_hrq_w) { m_maincpu->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); m_dmac->hlda_w(state); } -u8 beehive_state::dmac_mem_r(offs_t offset) +u8 microb_state::dmac_mem_r(offs_t offset) { return m_maincpu->space(AS_PROGRAM).read_byte(offset); } -void beehive_state::dmac_mem_w(offs_t offset, u8 data) +void microb_state::dmac_mem_w(offs_t offset, u8 data) { return m_maincpu->space(AS_PROGRAM).write_byte(offset, data); } -u8 beehive_state::beehive_60_r() +u8 microb_state::ppi2_pa_r() { return m_io_keyboard[m_keyline & 15]->read(); } -void beehive_state::beehive_62_w(u8 data) +void microb_state::ppi2_pc_w(u8 data) { m_keyline = data; m_beep->set_state(!BIT(data, 4)); } -void beehive_state::beehive_mem(address_map &map) +void microb_state::microb_mem(address_map &map) { map.unmap_value_high(); map(0x0000, 0x17ff).rom(); map(0x8000, 0x8fff).ram(); } -void beehive_state::beehive_io(address_map &map) +void microb_state::microb_io(address_map &map) { map.global_mask(0xff); map.unmap_value_high(); @@ -124,7 +124,7 @@ void beehive_state::beehive_io(address_map &map) } /* Input ports */ -static INPUT_PORTS_START( beehive ) +static INPUT_PORTS_START( microb ) PORT_START("X0") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') @@ -166,7 +166,7 @@ static INPUT_PORTS_START( beehive ) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("{") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('{') PORT_CHAR('}') PORT_START("X4") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("<") PORT_CODE(KEYCODE_PGDN) PORT_CHAR('<') PORT_CHAR('>') + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("<") PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR('<') PORT_CHAR('>') PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("/") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') @@ -209,8 +209,8 @@ static INPUT_PORTS_START( beehive ) PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1pad") PORT_CODE(KEYCODE_1_PAD) PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2pad") PORT_CODE(KEYCODE_2_PAD) PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3pad") PORT_CODE(KEYCODE_3_PAD) - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Show/Hide Status") PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0pad") PORT_CODE(KEYCODE_0_PAD) @@ -221,8 +221,8 @@ static INPUT_PORTS_START( beehive ) PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED) PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED) - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED) - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Cursor Blink On/Off") + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED) // carriage return PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_START("X10") @@ -273,12 +273,12 @@ static INPUT_PORTS_START( beehive ) INPUT_PORTS_END -void beehive_state::machine_start() +void microb_state::machine_start() { save_item(NAME(m_keyline)); } -I8275_DRAW_CHARACTER_MEMBER(beehive_state::draw_character) +I8275_DRAW_CHARACTER_MEMBER(microb_state::draw_character) { u8 dots = lten ? 0xff : (vsp || linecount == 9) ? 0 : m_p_chargen[(charcode << 4) | linecount]; if (rvv) @@ -295,19 +295,19 @@ I8275_DRAW_CHARACTER_MEMBER(beehive_state::draw_character) } } -void beehive_state::beehive(machine_config &config) +void microb_state::microb(machine_config &config) { /* basic machine hardware */ I8085A(config, m_maincpu, XTAL(4'000'000)); - m_maincpu->set_addrmap(AS_PROGRAM, &beehive_state::beehive_mem); - m_maincpu->set_addrmap(AS_IO, &beehive_state::beehive_io); + m_maincpu->set_addrmap(AS_PROGRAM, µb_state::microb_mem); + m_maincpu->set_addrmap(AS_IO, µb_state::microb_io); INPUT_MERGER_ANY_HIGH(config, "usartint").output_handler().set_inputline(m_maincpu, I8085_RST55_LINE); I8257(config, m_dmac, 2'000'000); - m_dmac->out_hrq_cb().set(FUNC(beehive_state::dmac_hrq_w)); - m_dmac->in_memr_cb().set(FUNC(beehive_state::dmac_mem_r)); - m_dmac->out_memw_cb().set(FUNC(beehive_state::dmac_mem_w)); + m_dmac->out_hrq_cb().set(FUNC(microb_state::dmac_hrq_w)); + m_dmac->in_memr_cb().set(FUNC(microb_state::dmac_mem_r)); + m_dmac->out_memw_cb().set(FUNC(microb_state::dmac_mem_w)); m_dmac->out_iow_cb<2>().set("crtc", FUNC(i8275_device::dack_w)); m_dmac->out_tc_cb().set_inputline(m_maincpu, I8085_RST75_LINE); @@ -322,7 +322,7 @@ void beehive_state::beehive(machine_config &config) i8275_device &crtc(I8275(config, "crtc", 1'944'000)); // calculated for 60 Hz operation crtc.set_screen("screen"); crtc.set_character_width(8); - crtc.set_display_callback(FUNC(beehive_state::draw_character)); + crtc.set_display_callback(FUNC(microb_state::draw_character)); crtc.irq_wr_callback().set_inputline(m_maincpu, I8085_RST65_LINE); crtc.drq_wr_callback().set(m_dmac, FUNC(i8257_device::dreq2_w)); @@ -330,20 +330,21 @@ void beehive_state::beehive(machine_config &config) ppi1.in_pb_callback().set_ioport("DIPS"); i8255_device &ppi2(I8255(config, "ppi2")); - ppi2.in_pa_callback().set(FUNC(beehive_state::beehive_60_r)); + ppi2.in_pa_callback().set(FUNC(microb_state::ppi2_pa_r)); ppi2.in_pb_callback().set_ioport("MODIFIERS"); - ppi2.out_pc_callback().set(FUNC(beehive_state::beehive_62_w)); + ppi2.out_pc_callback().set(FUNC(microb_state::ppi2_pc_w)); - PIT8253(config, "pit1"); + pit8253_device &pit1(PIT8253(config, "pit1")); + pit1.set_clk<2>(1'536'000); + pit1.out_handler<2>().set(m_usart[0], FUNC(i8251_device::write_rxc)); pit8253_device &pit2(PIT8253(config, "pit2")); pit2.set_clk<0>(1'536'000); pit2.set_clk<1>(1'536'000); pit2.set_clk<2>(1'536'000); - pit2.out_handler<0>().set(m_usart[0], FUNC(i8251_device::write_rxc)); - pit2.out_handler<1>().set(m_usart[0], FUNC(i8251_device::write_txc)); - pit2.out_handler<2>().set(m_usart[1], FUNC(i8251_device::write_rxc)); - pit2.out_handler<2>().append(m_usart[1], FUNC(i8251_device::write_txc)); + pit2.out_handler<0>().set(m_usart[0], FUNC(i8251_device::write_txc)); + pit2.out_handler<1>().set(m_usart[1], FUNC(i8251_device::write_rxc)); + pit2.out_handler<2>().set(m_usart[1], FUNC(i8251_device::write_txc)); SPEAKER(config, "mono").front_center(); BEEP(config, m_beep, 1000).add_route(ALL_OUTPUTS, "mono", 0.5); @@ -374,7 +375,7 @@ void beehive_state::beehive(machine_config &config) } /* ROM definition */ -ROM_START( beehive ) +ROM_START( dm3270 ) ROM_REGION( 0x1800, "maincpu", 0 ) ROM_LOAD( "dm3270-1.rom", 0x0000, 0x0800, CRC(781bde32) SHA1(a3fe25baadd2bfc2b1791f509bb0f4960281ee32) ) ROM_LOAD( "dm3270-2.rom", 0x0800, 0x0800, CRC(4d3476b7) SHA1(627ad42029ca6c8574cda8134d047d20515baf53) ) @@ -387,5 +388,5 @@ ROM_END /* Driver */ -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1982, beehive, 0, 0, beehive, beehive, beehive_state, empty_init, "BeeHive", "DM3270", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPU CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1982, dm3270, 0, 0, microb, microb, microb_state, empty_init, "Beehive International", "DM3270 Control Unit Display Station", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index f7336bf5044..2cee4c83477 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -3313,9 +3313,6 @@ beathead // (proto) (c) 1993 bebox // BeBox Dual603-66 bebox2 // BeBox Dual603-133 -@source:beehive.cpp -beehive // - @source:beezer.cpp beezer // (c) 1982 beezer1 // (c) 1982 @@ -22566,6 +22563,9 @@ f15se // (c) 1991 Microprose Games Inc. f15se21 // (c) 1991 Microprose Games Inc. tankbatl // (c) 1992 Microprose Games Inc. +@source:microb.cpp +dm3270 // + @source:microdar.cpp microdar // diff --git a/src/mame/mess.flt b/src/mame/mess.flt index 2476ccb83d1..e29f3ec128b 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -109,7 +109,6 @@ bbcbc.cpp bbl380.cpp bcs3.cpp bebox.cpp -beehive.cpp bert.cpp besta.cpp beta.cpp @@ -548,6 +547,7 @@ mfabfz.cpp mice.cpp micral.cpp micro20.cpp +microb.cpp microdec.cpp microkit.cpp micromon.cpp