summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/pve500.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/drivers/pve500.c')
-rw-r--r--src/mess/drivers/pve500.c441
1 files changed, 0 insertions, 441 deletions
diff --git a/src/mess/drivers/pve500.c b/src/mess/drivers/pve500.c
deleted file mode 100644
index 9bc202d51e1..00000000000
--- a/src/mess/drivers/pve500.c
+++ /dev/null
@@ -1,441 +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 "cpu/z80/tmpz84c015.h"
-#include "cpu/mb88xx/mb88xx.h"
-#include "sound/beep.h"
-#include "bus/rs232/rs232.h" /* actually meant to be RS422 ports */
-#include "pve500.lh"
-#include "machine/mb8421.h"
-#include "machine/eepromser.h"
-
-#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_eeprom(*this, "eeprom")
- , m_buzzer(*this, "buzzer")
- { }
-
- DECLARE_WRITE_LINE_MEMBER(mb8421_intl);
- DECLARE_WRITE_LINE_MEMBER(mb8421_intr);
- DECLARE_WRITE_LINE_MEMBER(GPI_w);
- DECLARE_WRITE_LINE_MEMBER(external_monitor_w);
-
- DECLARE_WRITE8_MEMBER(io_expander_w);
- DECLARE_READ8_MEMBER(io_expander_r);
- DECLARE_WRITE8_MEMBER(eeprom_w);
- DECLARE_READ8_MEMBER(eeprom_r);
- DECLARE_DRIVER_INIT(pve500);
-private:
- virtual void machine_start();
- virtual void machine_reset();
- required_device<tmpz84c015_device> m_maincpu;
- required_device<tmpz84c015_device> m_subcpu;
- required_device<eeprom_serial_er5911_device> m_eeprom;
- required_device<beep_device> m_buzzer;
- UINT8 io_SEL, io_LD, io_LE, io_SC, io_KY;
-};
-
-WRITE_LINE_MEMBER( pve500_state::GPI_w )
-{
- /* TODO: Implement-me */
-}
-
-WRITE_LINE_MEMBER( pve500_state::external_monitor_w )
-{
- /* TODO: Implement-me */
-}
-
-static const z80_daisy_config maincpu_daisy_chain[] =
-{
- TMPZ84C015_DAISY_INTERNAL,
- { "external_ctc" },
- { "external_sio" },
- { NULL }
-};
-
-
-static ADDRESS_MAP_START(maincpu_io, AS_IO, 8, pve500_state)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("external_sio", z80sio0_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0x08, 0x0B) AM_DEVREADWRITE("external_ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START(maincpu_prg, AS_PROGRAM, 8, pve500_state)
- AM_RANGE (0x0000, 0xBFFF) AM_ROM // ICB7: 48kbytes EPROM
- AM_RANGE (0xC000, 0xDFFF) AM_RAM // ICD6: 8kbytes of RAM
- AM_RANGE (0xE000, 0xE7FF) AM_MIRROR(0x1800) AM_DEVREADWRITE("mb8421", mb8421_device, left_r, left_w)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START(subcpu_io, AS_IO, 8, pve500_state)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START(subcpu_prg, AS_PROGRAM, 8, pve500_state)
- AM_RANGE (0x0000, 0x7FFF) AM_ROM // ICG5: 32kbytes EPROM
- AM_RANGE (0x8000, 0xBFFF) AM_MIRROR(0x3FF8) AM_READWRITE(io_expander_r, io_expander_w) // ICG3: I/O Expander
- AM_RANGE (0xC000, 0xC7FF) AM_MIRROR(0x3800) AM_DEVREADWRITE("mb8421", mb8421_device, right_r, right_w)
-ADDRESS_MAP_END
-
-DRIVER_INIT_MEMBER( pve500_state, 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;
-}
-
-void pve500_state::machine_reset()
-{
- /* Setup beep */
- m_buzzer->set_state(0);
- m_buzzer->set_frequency(3750); //CLK2 coming out of IC D4 (frequency divider circuitry)
-}
-
-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_expander_r)
-{
-// printf("READ IO_EXPANDER_PORT%c\n", 'A'+offset);
- switch (offset){
- case IO_EXPANDER_PORTA:
- return io_SC;
- case IO_EXPANDER_PORTB:
- return io_LE;
- case IO_EXPANDER_PORTC:
- 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;
- case IO_EXPANDER_PORTD:
- return io_LD;
- case IO_EXPANDER_PORTE:
- return io_SEL & 0x0F; //This is a 4bit port.
- default:
- return 0;
- }
-}
-
-WRITE8_MEMBER(pve500_state::io_expander_w)
-{
- static int LD_data[4];
- int swap[4] = {2,1,0,3};
- switch (offset){
- case IO_EXPANDER_PORTA:
-#if LOG_7SEG_DISPLAY_SIGNALS
-printf("io_expander_w: PORTA (io_SC=%02X)\n", data);
-#endif
- io_SC = data;
-
- for (int j=0; j<8; j++){
- if (!BIT(io_SC,j)){
- for (int i=0; i<4; i++)
- output_set_digit_value(8*swap[i] + j, LD_data[i]);
- }
- }
- break;
- case IO_EXPANDER_PORTB:
-#if LOG_7SEG_DISPLAY_SIGNALS
- printf("io_expander_w: PORTB (io_LE=%02X)\n", data);
-#endif
- io_LE = data;
- break;
- case IO_EXPANDER_PORTC:
-#if LOG_7SEG_DISPLAY_SIGNALS
- printf("io_expander_w: PORTC (io_KY=%02X)\n", data);
-#endif
- io_KY = data;
- break;
- case IO_EXPANDER_PORTD:
-#if LOG_7SEG_DISPLAY_SIGNALS
- printf("io_expander_w: PORTD (io_LD=%02X)\n", data);
-#endif
- io_LD = data;
- break;
- case IO_EXPANDER_PORTE:
-#if LOG_7SEG_DISPLAY_SIGNALS
- printf("io_expander_w 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 & BITSWAP8(io_LD ^ 0xFF, 7, 0, 1, 2, 3, 4, 5, 6);
- }
- }
- break;
- default:
- break;
- }
-}
-
-static MACHINE_CONFIG_START( pve500, pve500_state )
- /* Main CPU */
- MCFG_CPU_ADD("maincpu", TMPZ84C015, XTAL_12MHz / 2) /* TMPZ84C015BF-6 */
- MCFG_CPU_PROGRAM_MAP(maincpu_prg)
- MCFG_CPU_IO_MAP(maincpu_io)
- MCFG_CPU_CONFIG(maincpu_daisy_chain)
- MCFG_TMPZ84C015_OUT_DTRA_CB(WRITELINE(pve500_state, GPI_w))
- MCFG_TMPZ84C015_OUT_DTRB_CB(DEVWRITELINE("buzzer", beep_device, set_state))
- MCFG_TMPZ84C015_OUT_TXDA_CB(DEVWRITELINE("recorder", rs232_port_device, write_txd))
- MCFG_TMPZ84C015_OUT_TXDB_CB(DEVWRITELINE("player1", rs232_port_device, write_txd))
-
- MCFG_DEVICE_ADD("external_ctc", Z80CTC, XTAL_12MHz / 2)
- MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
-
- MCFG_Z80SIO0_ADD("external_sio", XTAL_12MHz / 2, 0, 0, 0, 0)
- MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
- MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE("player2", rs232_port_device, write_txd))
- MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE("edl_inout", rs232_port_device, write_txd))
-
- /* Secondary CPU */
- MCFG_CPU_ADD("subcpu", TMPZ84C015, XTAL_12MHz / 2) /* TMPZ84C015BF-6 */
- MCFG_CPU_PROGRAM_MAP(subcpu_prg)
- MCFG_CPU_IO_MAP(subcpu_io)
- MCFG_TMPZ84C015_OUT_DTRB_CB(WRITELINE(pve500_state, external_monitor_w))
- MCFG_TMPZ84C015_OUT_TXDA_CB(DEVWRITELINE("switcher", rs232_port_device, write_txd))
- MCFG_TMPZ84C015_OUT_TXDB_CB(DEVWRITELINE("serial_mixer", rs232_port_device, write_txd))
-
- // PIO callbacks
- MCFG_TMPZ84C015_IN_PA_CB(READ8(pve500_state, eeprom_r))
- MCFG_TMPZ84C015_OUT_PA_CB(WRITE8(pve500_state, eeprom_w))
-
- /* Search Dial MCUs */
- MCFG_CPU_ADD("dial_mcu_left", MB88201, XTAL_4MHz) /* PLAYER DIAL MCU */
- MCFG_CPU_ADD("dial_mcu_right", MB88201, XTAL_4MHz) /* RECORDER DIAL MCU */
-
- /* Serial EEPROM (128 bytes, 8-bit data organization) */
- /* The EEPROM stores the setup data */
- MCFG_EEPROM_SERIAL_MSM16911_8BIT_ADD("eeprom")
-
- /* FIX-ME: These are actually RS422 ports (except EDL IN/OUT which is indeed an RS232 port)*/
- MCFG_RS232_PORT_ADD("recorder", default_rs232_devices, NULL)
- MCFG_RS232_RXD_HANDLER(DEVWRITELINE("maincpu", tmpz84c015_device, rxa_w))
-
- MCFG_RS232_PORT_ADD("player1", default_rs232_devices, NULL)
- MCFG_RS232_RXD_HANDLER(DEVWRITELINE("maincpu", tmpz84c015_device, rxb_w))
-
- MCFG_RS232_PORT_ADD("player2", default_rs232_devices, NULL)
- MCFG_RS232_RXD_HANDLER(DEVWRITELINE("external_sio", z80dart_device, rxa_w))
-
- MCFG_RS232_PORT_ADD("edl_inout", default_rs232_devices, NULL)
- MCFG_RS232_RXD_HANDLER(DEVWRITELINE("external_sio", z80dart_device, rxb_w))
-
- MCFG_RS232_PORT_ADD("switcher", default_rs232_devices, NULL)
- MCFG_RS232_RXD_HANDLER(DEVWRITELINE("subcpu", tmpz84c015_device, rxa_w))
-
- MCFG_RS232_PORT_ADD("serial_mixer", default_rs232_devices, NULL)
- MCFG_RS232_RXD_HANDLER(DEVWRITELINE("subcpu", tmpz84c015_device, rxb_w))
-
- /* ICF5: 2kbytes of RAM shared between the two CPUs (dual-port RAM)*/
- MCFG_DEVICE_ADD("mb8421", MB8421, 0)
- MCFG_MB8421_INTL_HANDLER(WRITELINE(pve500_state, mb8421_intl))
- MCFG_MB8421_INTR_HANDLER(WRITELINE(pve500_state, mb8421_intr))
-
- /* video hardware */
- MCFG_DEFAULT_LAYOUT(layout_pve500)
-
- /* audio hardware */
- MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("buzzer", BEEP, 0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.05)
-
-MACHINE_CONFIG_END
-
-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, pve500, "SONY", "PVE-500", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS)