summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/pve500.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/pve500.cpp')
-rw-r--r--src/mame/drivers/pve500.cpp472
1 files changed, 0 insertions, 472 deletions
diff --git a/src/mame/drivers/pve500.cpp b/src/mame/drivers/pve500.cpp
deleted file mode 100644
index c8844ff77bd..00000000000
--- a/src/mame/drivers/pve500.cpp
+++ /dev/null
@@ -1,472 +0,0 @@
-// license:GPL-2.0+
-// copyright-holders: Felipe Sanches
-/***************************************************************************
-
- SONY PVE-500 Editing Control Unit
- "A/B roll edit controller for professional video editing applications"
-
- Driver by Felipe Correa da Silva Sanches <juca@members.fsf.org>
- Technical info at https://www.garoa.net.br/wiki/PVE-500
-
- Notes:
- One can induce the self-diagnose by booting the device holding LEARN and P2-RESET buttons togheter
- With the default keyboard map, this can be done by holding keys L and S while pressing F3.
- (Don't forget to unlock the keyboard by using the UI TOGGLE key)
-
- This self-diagnose routine displays the value C817, which is the checksum value of the subcpu ROM
- and afterwards it displays the following message:
-
- SELFdIAG Error___ _F3 F3_CtC3c
-
- which means it detected an error in the CTC circuitry (it means we're emulating it wrong!)
- F3 is the coordinate of the subcpu EPROM chip in the PCB.
-
- According to the service manual, this error code means: "ICF3 CTC CH-3 counter operation failure (No interruption)"
-
- Known issues:
- There's still an annoying blinking in the 7-seg display.
-
- Changelog:
-
- 2014 SEP 01 [Felipe Sanches]:
- * hooked-up MB8421 device (dual-port SRAM)
-
- 2014 JUN 24 [Felipe Sanches]:
- * figured out the multiplexing signals for the 7-seg display
-
- 2014 JUN 23 [Felipe Sanches]:
- * hooked-up the RS422 ports
-
- 2014 JAN 14 [Felipe Sanches]:
- * Initial driver skeleton
-*/
-
-#define LOG_7SEG_DISPLAY_SIGNALS 0
-#define DEBUGGING_INDUCE_SELFDIAGNOSE 0
-
-#include "emu.h"
-#include "bus/rs232/rs232.h" /* actually meant to be RS422 ports */
-#include "cpu/mb88xx/mb88xx.h"
-#include "cpu/z80/tmpz84c015.h"
-#include "machine/clock.h"
-#include "machine/cxd1095.h"
-#include "machine/eepromser.h"
-#include "machine/mb8421.h"
-#include "sound/beep.h"
-#include "speaker.h"
-
-#include "pve500.lh"
-
-#define IO_EXPANDER_PORTA 0
-#define IO_EXPANDER_PORTB 1
-#define IO_EXPANDER_PORTC 2
-#define IO_EXPANDER_PORTD 3
-#define IO_EXPANDER_PORTE 4
-
-class pve500_state : public driver_device
-{
-public:
- pve500_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_subcpu(*this, "subcpu")
- , m_cxdio(*this, "cxdio")
- , m_eeprom(*this, "eeprom")
- , m_buzzer(*this, "buzzer")
- , m_digits(*this, "digit%u", 0U)
- { }
-
- void pve500(machine_config &config);
-
- void init_pve500();
-
-private:
- DECLARE_WRITE_LINE_MEMBER(mb8421_intl);
- DECLARE_WRITE_LINE_MEMBER(mb8421_intr);
- DECLARE_WRITE_LINE_MEMBER(GPI_w);
- DECLARE_WRITE_LINE_MEMBER(cxdio_reset_w);
- DECLARE_WRITE_LINE_MEMBER(external_monitor_w);
-
- DECLARE_READ8_MEMBER(io_ky_r);
- DECLARE_WRITE8_MEMBER(io_sc_w);
- DECLARE_WRITE8_MEMBER(io_le_w);
- DECLARE_WRITE8_MEMBER(io_ld_w);
- DECLARE_WRITE8_MEMBER(io_sel_w);
- DECLARE_WRITE8_MEMBER(eeprom_w);
- DECLARE_READ8_MEMBER(eeprom_r);
- void maincpu_io(address_map &map);
- void maincpu_prg(address_map &map);
- void subcpu_io(address_map &map);
- void subcpu_prg(address_map &map);
-
- virtual void machine_start() override;
- virtual void machine_reset() override;
- required_device<tmpz84c015_device> m_maincpu;
- required_device<tmpz84c015_device> m_subcpu;
- required_device<cxd1095_device> m_cxdio;
- required_device<eeprom_serial_er5911_device> m_eeprom;
- required_device<beep_device> m_buzzer;
- output_finder<27> m_digits;
-
- uint8_t io_SEL, io_LD, io_LE, io_SC, io_KY;
- int LD_data[4];
-};
-
-WRITE_LINE_MEMBER(pve500_state::GPI_w)
-{
- /* TODO: Implement-me */
-}
-
-WRITE_LINE_MEMBER(pve500_state::cxdio_reset_w)
-{
- if (!state)
- m_cxdio->reset();
-}
-
-WRITE_LINE_MEMBER(pve500_state::external_monitor_w)
-{
- /* TODO: Implement-me */
-}
-
-static const z80_daisy_config maincpu_daisy_chain[] =
-{
- { "external_ctc" },
- { "external_sio" },
- { nullptr }
-};
-
-
-void pve500_state::maincpu_io(address_map &map)
-{
- map(0x00, 0x03).mirror(0xff00).rw("external_sio", FUNC(z80sio0_device::cd_ba_r), FUNC(z80sio0_device::cd_ba_w));
- map(0x08, 0x0B).mirror(0xff00).rw("external_ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
-}
-
-void pve500_state::maincpu_prg(address_map &map)
-{
- map(0x0000, 0xbfff).rom(); // ICB7: 48kbytes EPROM
- map(0xc000, 0xdfff).ram(); // ICD6: 8kbytes of RAM
- map(0xe000, 0xe7ff).mirror(0x1800).rw("mb8421", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
-}
-
-void pve500_state::subcpu_io(address_map &map)
-{
-}
-
-void pve500_state::subcpu_prg(address_map &map)
-{
- map(0x0000, 0x7fff).rom(); // ICG5: 32kbytes EPROM
- map(0x8000, 0x8007).mirror(0x3ff8).rw(m_cxdio, FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
- map(0xc000, 0xc7ff).mirror(0x3800).rw("mb8421", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w));
-}
-
-void pve500_state::init_pve500()
-{
-}
-
-static INPUT_PORTS_START( pve500 )
- PORT_START("SCAN0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TRANS") PORT_CODE(KEYCODE_5)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A/B") PORT_CODE(KEYCODE_4)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("FROM TO") PORT_CODE(KEYCODE_3)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P2") PORT_CODE(KEYCODE_2)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P1") PORT_CODE(KEYCODE_1)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ENTRY") PORT_CODE(KEYCODE_SPACE)
-
- PORT_START("SCAN1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ALL STOP") PORT_CODE(KEYCODE_M)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("LAST EDIT") PORT_CODE(KEYCODE_I)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("AUDIO SPLIT") PORT_CODE(KEYCODE_T)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A2") PORT_CODE(KEYCODE_9)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ASMBL") PORT_CODE(KEYCODE_6)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_7)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A1") PORT_CODE(KEYCODE_8)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ENTRY") PORT_CODE(KEYCODE_SPACE)
-
- PORT_START("SCAN2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RVW/JUMP") PORT_CODE(KEYCODE_N)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("AUTO EDIT") PORT_CODE(KEYCODE_B)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("PREVIEW") PORT_CODE(KEYCODE_V)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P-FF") PORT_CODE(KEYCODE_R)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P-REW") PORT_CODE(KEYCODE_E)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P-STILL") PORT_CODE(KEYCODE_W)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P-PLAY") PORT_CODE(KEYCODE_Q)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ENTRY") PORT_CODE(KEYCODE_SPACE)
-
- PORT_START("SCAN3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R-OUT") PORT_CODE(KEYCODE_K)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R-IN") PORT_CODE(KEYCODE_J)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("GO TO") PORT_CODE(KEYCODE_H)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P-OUT") PORT_CODE(KEYCODE_G)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P-IN") PORT_CODE(KEYCODE_F)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TRIM+") PORT_CODE(KEYCODE_U)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TRIM-") PORT_CODE(KEYCODE_Y)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ENTRY") PORT_CODE(KEYCODE_SPACE)
-
- PORT_START("SCAN4")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R-FF") PORT_CODE(KEYCODE_OPENBRACE)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R-REW") PORT_CODE(KEYCODE_QUOTE)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R-STILL") PORT_CODE(KEYCODE_P)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R-PLAY") PORT_CODE(KEYCODE_O)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("EDIT") PORT_CODE(KEYCODE_EQUALS)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("REC") PORT_CODE(KEYCODE_MINUS)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ENTRY") PORT_CODE(KEYCODE_SPACE)
-
- PORT_START("SCAN5")
- PORT_DIPNAME( 0x03, 0x02, "R-EDIT REF" )
- PORT_DIPSETTING( 0x02, "TC" )
- PORT_DIPSETTING( 0x00, "RTC" )
- PORT_DIPSETTING( 0x01, "CTL" )
-
- PORT_DIPNAME( 0x0C, 0x08, "P2-EDIT REF" )
- PORT_DIPSETTING( 0x08, "TC" )
- PORT_DIPSETTING( 0x00, "RTC" )
- PORT_DIPSETTING( 0x04, "CTL" )
-
- PORT_DIPNAME( 0x30, 0x20, "P1-EDIT REF" )
- PORT_DIPSETTING( 0x20, "TC" )
- PORT_DIPSETTING( 0x00, "RTC" )
- PORT_DIPSETTING( 0x10, "CTL" )
-
- PORT_START("SCAN6")
- PORT_DIPNAME( 0x03, 0x02, "SYNCHRO" )
- PORT_DIPSETTING( 0x02, "ON/CF" )
- PORT_DIPSETTING( 0x00, "ON" )
- PORT_DIPSETTING( 0x01, "OFF" )
-
- PORT_DIPNAME( 0x0C, 0x08, "PREROLL" )
- PORT_DIPSETTING( 0x08, "7" )
- PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPSETTING( 0x04, "3" )
-
- PORT_START("SCAN7")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TOTAL") PORT_CODE(KEYCODE_CLOSEBRACE)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("LEARN") PORT_CODE(KEYCODE_L)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TRANS-1F") PORT_CODE(KEYCODE_Z)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TRANS-10F") PORT_CODE(KEYCODE_X)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TRANS-100F") PORT_CODE(KEYCODE_C)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R-RESET") PORT_CODE(KEYCODE_A)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P2-RESET") PORT_CODE(KEYCODE_S)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P1-RESET") PORT_CODE(KEYCODE_D)
-INPUT_PORTS_END
-
-void pve500_state::machine_start()
-{
- io_LD = 0;
- io_SC = 0;
- io_LE = 0;
- io_SEL = 0;
- io_KY = 0;
- m_digits.resolve();
-}
-
-void pve500_state::machine_reset()
-{
- /* Setup beep */
- m_buzzer->set_state(0);
-}
-
-WRITE_LINE_MEMBER(pve500_state::mb8421_intl)
-{
- // shared ram interrupt request from subcpu side
- m_maincpu->trg1(state);
-}
-
-WRITE_LINE_MEMBER(pve500_state::mb8421_intr)
-{
- // shared ram interrupt request from maincpu side
- m_subcpu->trg1(state);
-}
-
-READ8_MEMBER(pve500_state::eeprom_r)
-{
- return (m_eeprom->ready_read() << 1) | m_eeprom->do_read();
-}
-
-WRITE8_MEMBER(pve500_state::eeprom_w)
-{
- m_eeprom->di_write( (data & (1 << 2)) ? ASSERT_LINE : CLEAR_LINE);
- m_eeprom->clk_write( (data & (1 << 3)) ? ASSERT_LINE : CLEAR_LINE);
- m_eeprom->cs_write( (data & (1 << 4)) ? ASSERT_LINE : CLEAR_LINE);
-}
-
-READ8_MEMBER(pve500_state::io_ky_r)
-{
- io_KY = 0x00;
- if (!BIT(io_SC, 0)) io_KY |= ioport("SCAN0")->read();
- if (!BIT(io_SC, 1)) io_KY |= ioport("SCAN1")->read();
- if (!BIT(io_SC, 2)) io_KY |= ioport("SCAN2")->read();
- if (!BIT(io_SC, 3)) io_KY |= ioport("SCAN3")->read();
- if (!BIT(io_SC, 4)) io_KY |= ioport("SCAN4")->read();
- if (!BIT(io_SC, 5)) io_KY |= ioport("SCAN5")->read();
- if (!BIT(io_SC, 6)) io_KY |= ioport("SCAN6")->read();
- if (!BIT(io_SC, 7)) io_KY |= ioport("SCAN7")->read();
-#if DEBUGGING_INDUCE_SELFDIAGNOSE
- io_KY = 0x42; //according to procedure described in the service manual
-#endif
- return io_KY;
-}
-
-WRITE8_MEMBER(pve500_state::io_sc_w)
-{
- const int swap[4] = {2,1,0,3};
-
-#if LOG_7SEG_DISPLAY_SIGNALS
- printf("CXD1095 PORTA (io_SC=%02X)\n", data);
-#endif
- io_SC = data;
-
- for (int j=0; j<8; j++){
- if (!BIT(io_SC,j)){
- int digits = (j < 3) ? 4 : 3;
- for (int i = 0; i < digits; i++)
- {
- assert(8*swap[i] + j < 27);
- m_digits[8*swap[i] + j] = LD_data[i];
- }
- }
- }
-}
-
-WRITE8_MEMBER(pve500_state::io_le_w)
-{
-#if LOG_7SEG_DISPLAY_SIGNALS
- printf("CXD1095 PORTB (io_LE=%02X)\n", data);
-#endif
- io_LE = data;
-}
-
-WRITE8_MEMBER(pve500_state::io_ld_w)
-{
-#if LOG_7SEG_DISPLAY_SIGNALS
- printf("CXD1095 PORTD (io_LD=%02X)\n", data);
-#endif
- io_LD = data;
-}
-
-WRITE8_MEMBER(pve500_state::io_sel_w)
-{
-#if LOG_7SEG_DISPLAY_SIGNALS
- printf("CXD1095 PORTE (io_SEL=%02X)\n", data);
-#endif
- io_SEL = data;
- for (int i=0; i<4; i++){
- if (BIT(io_SEL, i)){
- LD_data[i] = 0x7F & bitswap<8>(io_LD ^ 0xFF, 7, 0, 1, 2, 3, 4, 5, 6);
- }
- }
-}
-
-void pve500_state::pve500(machine_config &config)
-{
- /* Main CPU */
- TMPZ84C015(config, m_maincpu, 12_MHz_XTAL / 2); // TMPZ84C015BF-6
- m_maincpu->set_addrmap(AS_PROGRAM, &pve500_state::maincpu_prg);
- m_maincpu->set_addrmap(AS_IO, &pve500_state::maincpu_io);
- m_maincpu->set_daisy_config(maincpu_daisy_chain);
- m_maincpu->out_dtra_callback().set(FUNC(pve500_state::GPI_w));
- m_maincpu->out_dtrb_callback().set(m_buzzer, FUNC(beep_device::set_state)).invert();
- m_maincpu->out_txda_callback().set("recorder", FUNC(rs232_port_device::write_txd));
- m_maincpu->out_txdb_callback().set("player1", FUNC(rs232_port_device::write_txd));
-
- z80ctc_device& ctc(Z80CTC(config, "external_ctc", 12_MHz_XTAL / 2));
- ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
-
- z80sio0_device& sio(Z80SIO0(config, "external_sio", 12_MHz_XTAL / 2));
- sio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- sio.out_txda_callback().set("player2", FUNC(rs232_port_device::write_txd));
- sio.out_txdb_callback().set("edl_inout", FUNC(rs232_port_device::write_txd));
-
- /* Secondary CPU */
- TMPZ84C015(config, m_subcpu, 12_MHz_XTAL / 2); /* TMPZ84C015BF-6 */
- m_subcpu->set_addrmap(AS_PROGRAM, &pve500_state::subcpu_prg);
- m_subcpu->set_addrmap(AS_IO, &pve500_state::subcpu_io);
- m_subcpu->out_dtra_callback().set(FUNC(pve500_state::cxdio_reset_w));
- m_subcpu->out_dtrb_callback().set(FUNC(pve500_state::external_monitor_w));
- m_subcpu->out_txda_callback().set("switcher", FUNC(rs232_port_device::write_txd));
- m_subcpu->out_txdb_callback().set("serial_mixer", FUNC(rs232_port_device::write_txd));
-
- // PIO callbacks
- m_subcpu->in_pa_callback().set(FUNC(pve500_state::eeprom_r));
- m_subcpu->out_pa_callback().set(FUNC(pve500_state::eeprom_w));
-
- // ICG3: I/O Expander
- CXD1095(config, m_cxdio);
- m_cxdio->out_porta_cb().set(FUNC(pve500_state::io_sc_w));
- m_cxdio->out_portb_cb().set(FUNC(pve500_state::io_le_w));
- m_cxdio->in_portc_cb().set(FUNC(pve500_state::io_ky_r));
- m_cxdio->out_portd_cb().set(FUNC(pve500_state::io_ld_w));
- m_cxdio->out_porte_cb().set(FUNC(pve500_state::io_sel_w));
-
- /* Search Dial MCUs */
- MB88201(config, "dial_mcu_left", 4_MHz_XTAL).set_disable(); /* PLAYER DIAL MCU */
- MB88201(config, "dial_mcu_right", 4_MHz_XTAL).set_disable(); /* RECORDER DIAL MCU */
-
- /* Serial EEPROM (128 bytes, 8-bit data organization) */
- /* The EEPROM stores the setup data */
- EEPROM_MSM16911_8BIT(config, "eeprom");
-
- /* FIX-ME: These are actually RS422 ports (except EDL IN/OUT which is indeed an RS232 port)*/
- rs232_port_device &recorder(RS232_PORT(config, "recorder", default_rs232_devices, nullptr));
- recorder.rxd_handler().set(m_maincpu, FUNC(tmpz84c015_device::rxa_w));
-
- rs232_port_device &player1(RS232_PORT(config, "player1", default_rs232_devices, nullptr));
- player1.rxd_handler().set(m_maincpu, FUNC(tmpz84c015_device::rxb_w));
-
- rs232_port_device &player2(RS232_PORT(config, "player2", default_rs232_devices, nullptr));
- player2.rxd_handler().set("external_sio", FUNC(z80dart_device::rxa_w));
-
- rs232_port_device &edl_inout(RS232_PORT(config, "edl_inout", default_rs232_devices, nullptr));
- edl_inout.rxd_handler().set("external_sio", FUNC(z80dart_device::rxb_w));
-
- rs232_port_device &switcher(RS232_PORT(config, "switcher", default_rs232_devices, nullptr));
- switcher.rxd_handler().set(m_subcpu, FUNC(tmpz84c015_device::rxa_w));
-
- rs232_port_device &serial_mixer(RS232_PORT(config, "serial_mixer", default_rs232_devices, nullptr));
- serial_mixer.rxd_handler().set(m_subcpu, FUNC(tmpz84c015_device::rxb_w));
-
- clock_device &clk1(CLOCK(config, "clk1", 12_MHz_XTAL / 20));
- clk1.signal_handler().set(m_maincpu, FUNC(tmpz84c015_device::rxca_w));
- clk1.signal_handler().append(m_maincpu, FUNC(tmpz84c015_device::txca_w));
- clk1.signal_handler().append(m_maincpu, FUNC(tmpz84c015_device::rxcb_w));
- clk1.signal_handler().append(m_maincpu, FUNC(tmpz84c015_device::txcb_w));
- clk1.signal_handler().append(m_subcpu, FUNC(tmpz84c015_device::rxca_w));
- clk1.signal_handler().append(m_subcpu, FUNC(tmpz84c015_device::txca_w));
- clk1.signal_handler().append(m_subcpu, FUNC(tmpz84c015_device::rxcb_w));
- clk1.signal_handler().append(m_subcpu, FUNC(tmpz84c015_device::txcb_w));
-
- /* ICF5: 2kbytes of RAM shared between the two CPUs (dual-port RAM)*/
- mb8421_device &mb8421(MB8421(config, "mb8421"));
- mb8421.intl_callback().set(FUNC(pve500_state::mb8421_intl));
- mb8421.intr_callback().set(FUNC(pve500_state::mb8421_intr));
-
- /* video hardware */
- config.set_default_layout(layout_pve500);
-
- /* audio hardware */
- SPEAKER(config, "mono").front_center();
- BEEP(config, "buzzer", 12_MHz_XTAL / 3200).add_route(ALL_OUTPUTS, "mono", 0.05); // 3.75 kHz CLK2 coming out of IC D4 (frequency divider circuitry)
-}
-
-ROM_START( pve500 )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("pve500.icb7", 0x00000, 0x10000, CRC(1036709c) SHA1(207d6fcad5c2f081a138184060ce7bd02736965b) ) //48kbyte main-cpu program + 16kbyte of unreachable memory
-
- ROM_REGION( 0x8000, "subcpu", 0 )
- ROM_LOAD("pve500.icg5", 0x00000, 0x8000, CRC(28cca60a) SHA1(308d70062653769250327ede7a4e1a8a76fc9ab9) ) //32kbyte sub-cpu program
-
- ROM_REGION( 0x200, "dial_mcu_left", 0 ) /* PLAYER DIAL MCU */
- ROM_LOAD( "pve500.icd3", 0x0000, 0x0200, NO_DUMP )
-
- ROM_REGION( 0x200, "dial_mcu_right", 0 ) /* RECORDER DIAL MCU */
- ROM_LOAD( "pve500.icc3", 0x0000, 0x0200, NO_DUMP )
-
- ROM_REGION( 0x80, "eeprom", 0 ) /* The EEPROM stores the setup data */
- ROM_LOAD( "pve500.ice3", 0x0000, 0x080, NO_DUMP )
-ROM_END
-
-// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 1995, pve500, 0, 0, pve500, pve500, pve500_state, init_pve500, "SONY", "PVE-500", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS)