summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/betacam.cpp
blob: 59dacce5b1cade5e41fb759b8e194d59fb8b18df (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// license:GPL-2.0+
// copyright-holders:Felipe Sanches
/****************************************************************************

    Skeleton driver for Sony BETACAM-SP Videocassette Players and Recorders

    List of major ICs:
     - IC202 - H8/534 (Hitachi Single-Chip Microcomputer)
     - IC227 - MB88201 (MB88200 Series CMOS Low end Single-Chip 4-Bit Microprocessor)
     - IC211 - CXD1095BQ (C-MOS I/O PORT EXPANDER)
     - IC226 - CXD1095BQ (C-MOS I/O PORT EXPANDER)
     - IC100 - CXD8384Q (C-MOS LTC READER/GENERATOR)
     - IC219 - CXD2202Q (SERVO IC)
     - IC213 - LC3564BM-10 (Sanyo 64Kbit SRAM (8192-word x8-bit))
     - IC1 - D70320GJ-8 (CPU NEC V25)
     - IC3 - LC3564BM-10 (Sanyo 64Kbit SRAM (8192-word x8-bit))
     - IC5 - CXD8176AQ (C-MOS DUAL PORT RAM CONTROLLER)
     - IC15 - D6453GT (MOS INTEGRATED CIRCUIT CMOS LSI FOR 12 lines X 24 columns CHARACTER DISPLAY ON SCREEN)

****************************************************************************/

#include "emu.h"
#include "cpu/nec/v25.h"
#include "cpu/h8500/h8534.h"
#include "machine/cxd1095.h"

class betacam_state : public driver_device
{
public:
	betacam_state(const machine_config &mconfig, device_type type, const char *tag)
		: driver_device(mconfig, type, tag)
		, m_systemcpu(*this, "systemcpu")
		, m_servocpu(*this, "servocpu")
	{
	}

	void betacam(machine_config &config);

private:
	void system_mem_map(address_map &map);
	void servo_mem_map(address_map &map);

	required_device<v25_device> m_systemcpu;
	required_device<h8534_device> m_servocpu;
};


void betacam_state::system_mem_map(address_map &map)
{
	map(0x17f00, 0x17fff).ram();                        //   256b ?
	map(0x18000, 0x189fe).ram();                        //   8kb SRAM at IC3
	map(0x189ff, 0x189ff).noprw();                      //   ZERO
	map(0x18a00, 0x19fff).ram();                        //   8kb SRAM at IC3 (init SS:SP)
	map(0x20800, 0x20fff).ram().share("svram");         //   2kb servo dual-port SRAM
	map(0x21800, 0x2183f).ram().share("ltcram");        //   64b LTC SRAM
	map(0xe0000, 0xfffff).rom().region("systemcpu", 0); // 128kb EPROM at IC4
}


void betacam_state::servo_mem_map(address_map &map)
{
	map(0x00000, 0x3ffff).rom().region("servocpu", 0); //guessed
	map(0x40000, 0x41fff).ram(); //guessed
	//map(0x?????, 0x?????).rw("cxdio0", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
	//map(0x?????, 0x?????).rw("cxdio1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
}


static INPUT_PORTS_START(betacam)
	PORT_START("DSW1")
	PORT_DIPUNUSED_DIPLOC( 0x01, 0x00, "SW1:1" )
	PORT_DIPNAME( 0x02, 0x00, "RGB Output Sel" ) PORT_DIPLOCATION("SW1:2")
	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
	PORT_DIPSETTING(    0x02, DEF_STR( Yes ) )
	PORT_DIPNAME( 0x04, 0x00, "RGB Input Sel" ) PORT_DIPLOCATION("SW1:3")
	PORT_DIPSETTING(    0x04, DEF_STR( Yes ) )
	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
	PORT_DIPNAME( 0x08, 0x00, "Wide" ) PORT_DIPLOCATION("SW1:4")
	PORT_DIPSETTING(    0x08, DEF_STR( Yes ) )
	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
	PORT_DIPNAME( 0x10, 0x00, "R/P E/F" ) PORT_DIPLOCATION("SW1:5")
	PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
	PORT_DIPNAME( 0x20, 0x20, "Rec/Player" ) PORT_DIPLOCATION("SW1:6")
	PORT_DIPSETTING(    0x20, DEF_STR( Yes ) )
	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
	PORT_DIPNAME( 0x40, 0x00, "J U/C" ) PORT_DIPLOCATION("SW1:7")
	PORT_DIPSETTING(    0x40, DEF_STR( Yes ) )
	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
	PORT_DIPNAME( 0x80, 0x00, "NTSC / PAL" ) PORT_DIPLOCATION("SW1:8")
	PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
INPUT_PORTS_END

void betacam_state::betacam(machine_config &config)
{
	V25(config, m_systemcpu, 16_MHz_XTAL); // NEC upD70320GJ-8
	m_systemcpu->set_addrmap(AS_PROGRAM, &betacam_state::system_mem_map);
	m_systemcpu->p2_in_cb().set_ioport("DSW1");

	HD6435348(config, m_servocpu, 20_MHz_XTAL); //Actual chip is marked "H8/534 6435348F 10"
	m_servocpu->set_mode(3);
	m_servocpu->set_addrmap(AS_PROGRAM, &betacam_state::servo_mem_map);

	//CXD1095(config, "cxdio0");
	//CXD1095(config, "cxdio1");
}

ROM_START(uvw1200)
	ROM_REGION(0x20000, "systemcpu", 0)
	ROM_LOAD("75932697_uvw-1000_sy_v2.00_f8b4.ic4", 0x00000, 0x20000, CRC(08e9b891) SHA1(3e01f0e037e83825dcb4a745ddc9148cf3cc7674))

	ROM_REGION(0x40000, "servocpu", 0)
	ROM_LOAD("75953491_uvw-1000_sv_v2.04_f024.ic212", 0x00000, 0x40000, CRC(dc2b8d4b) SHA1(f10a3dc0c317582e3dcb6f3dcc741c0d55c6fd22))
ROM_END

ROM_START(uvw1600)
	ROM_REGION(0x20000, "systemcpu", 0)
	ROM_LOAD("75925907_uvw-1000_sy_v1.03_e3b4.ic4", 0x00000, 0x20000, CRC(f9e575ce) SHA1(2f802c5685f7ce00586079ad5bc456083c595d66))

	ROM_REGION(0x40000, "servocpu", 0)
	ROM_LOAD("75927098_uvw-1000_sv_v1.04_150c.ic212", 0x00000, 0x40000, CRC(b4cb9c02) SHA1(92ae5ce303b9f67977b960047bac7f6bb337b8c0))
ROM_END

ROM_START(uvw1800)
	ROM_REGION(0x20000, "systemcpu", 0)
	ROM_LOAD("75925907_uvw-1000_sy_v1.03_e3b4.ic4", 0x00000, 0x20000, CRC(f9e575ce) SHA1(2f802c5685f7ce00586079ad5bc456083c595d66))

	ROM_REGION(0x40000, "servocpu", 0)
	ROM_LOAD("75927098_uvw-1000_sv_v1.04_150c.ic212", 0x00000, 0x40000, CRC(b4cb9c02) SHA1(92ae5ce303b9f67977b960047bac7f6bb337b8c0))
ROM_END

//   YEAR  NAME   PARENT/COMPAT MACHINE  INPUT    CLASS          INIT       COMPANY  FULLNAME                                                FLAGS
SYST(199?, uvw1200,   0, 0,     betacam, betacam, betacam_state, empty_init, "Sony", "BETACAM-SP Videocassette Player UVW-1200 RGB",          MACHINE_IS_SKELETON)
SYST(199?, uvw1600,   0, 0,     betacam, betacam, betacam_state, empty_init, "Sony", "BETACAM-SP Videocassette Player/Recorder UVW-1600 RGB", MACHINE_IS_SKELETON)
SYST(199?, uvw1800,   0, 0,     betacam, betacam, betacam_state, empty_init, "Sony", "BETACAM-SP Videocassette Player/Recorder UVW-1800 RGB", MACHINE_IS_SKELETON)