summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/sound/sid6581.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/sound/sid6581.h')
-rw-r--r--src/emu/sound/sid6581.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/emu/sound/sid6581.h b/src/emu/sound/sid6581.h
new file mode 100644
index 00000000000..888e9ac027c
--- /dev/null
+++ b/src/emu/sound/sid6581.h
@@ -0,0 +1,32 @@
+/***************************************************************************
+
+ sid6581.h
+
+ MAME/MESS interface for SID6581 and SID8580 chips
+
+***************************************************************************/
+
+#ifndef SID6581_H
+#define SID6581_H
+
+#include "sndintrf.h"
+
+typedef enum
+{
+ MOS6581,
+ MOS8580
+} SIDTYPE;
+
+
+typedef struct
+{
+ int (*ad_read)(int channel);
+} SID6581_interface;
+
+
+READ8_HANDLER ( sid6581_0_port_r );
+READ8_HANDLER ( sid6581_1_port_r );
+WRITE8_HANDLER ( sid6581_0_port_w );
+WRITE8_HANDLER ( sid6581_1_port_w );
+
+#endif /* SID6581_H */
> 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
// license:BSD-3-Clause
// copyright-holders:Nigel Barnes
/**********************************************************************

    Acorn ANC04 Z80 2nd processor

    http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Acorn_ANC04_Z802ndproc.html

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


#include "emu.h"
#include "tube_z80.h"
#include "softlist_dev.h"


//**************************************************************************
//  DEVICE DEFINITIONS
//**************************************************************************

DEFINE_DEVICE_TYPE(BBC_TUBE_Z80, bbc_tube_z80_device, "bbc_tube_z80", "Acorn Z80 2nd Processor")


//-------------------------------------------------
//  ADDRESS_MAP( tube_z80_mem )
//-------------------------------------------------

void bbc_tube_z80_device::tube_z80_mem(address_map &map)
{
	map(0x0000, 0xffff).rw(this, FUNC(bbc_tube_z80_device::mem_r), FUNC(bbc_tube_z80_device::mem_w));
}

//-------------------------------------------------
//  ADDRESS_MAP( tube_z80_fetch )
//-------------------------------------------------

void bbc_tube_z80_device::tube_z80_fetch(address_map &map)
{
	map(0x000, 0xffff).r(this, FUNC(bbc_tube_z80_device::opcode_r));
}

//-------------------------------------------------
//  ADDRESS_MAP( tube_z80_io )
//-------------------------------------------------

void bbc_tube_z80_device::tube_z80_io(address_map &map)
{
	map(0x00, 0x07).mirror(0xff00).rw("ula", FUNC(tube_device::parasite_r), FUNC(tube_device::parasite_w));
}

//-------------------------------------------------
//  ROM( tube_z80 )
//-------------------------------------------------

ROM_START( tube_z80 )
	ROM_REGION(0x1000, "rom", 0)
	ROM_LOAD("Z80_120.rom", 0x0000, 0x1000, CRC(315bfc20) SHA1(069077df498599a9c880d4ec9f4bc53fcc602d82))
ROM_END

//-------------------------------------------------
//  device_add_mconfig - add device configuration
//-------------------------------------------------

MACHINE_CONFIG_START(bbc_tube_z80_device::device_add_mconfig)
	MCFG_CPU_ADD("z80", Z80, XTAL(12'000'000) / 2)
	MCFG_CPU_PROGRAM_MAP(tube_z80_mem)
	MCFG_CPU_OPCODES_MAP(tube_z80_fetch)
	MCFG_CPU_IO_MAP(tube_z80_io)
	MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE(DEVICE_SELF, bbc_tube_z80_device, irq_callback)

	MCFG_TUBE_ADD("ula")
	MCFG_TUBE_HIRQ_HANDLER(DEVWRITELINE(DEVICE_SELF_OWNER, bbc_tube_slot_device, irq_w))
	MCFG_TUBE_PNMI_HANDLER(WRITELINE(bbc_tube_z80_device, nmi_w))
	MCFG_TUBE_PIRQ_HANDLER(INPUTLINE("z80", INPUT_LINE_IRQ0))

	/* internal ram */
	MCFG_RAM_ADD(RAM_TAG)
	MCFG_RAM_DEFAULT_SIZE("64K")
	MCFG_RAM_DEFAULT_VALUE(0x00)

	/* software lists */
	MCFG_SOFTWARE_LIST_ADD("flop_ls_z80", "bbc_flop_z80")
MACHINE_CONFIG_END

//-------------------------------------------------
//  rom_region - device-specific ROM region
//-------------------------------------------------

const tiny_rom_entry *bbc_tube_z80_device::device_rom_region() const
{
	return ROM_NAME( tube_z80 );
}

//**************************************************************************
//  LIVE DEVICE
//**************************************************************************

//-------------------------------------------------
//  bbc_tube_z80_device - constructor
//-------------------------------------------------

bbc_tube_z80_device::bbc_tube_z80_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
	: device_t(mconfig, BBC_TUBE_Z80, tag, owner, clock),
		device_bbc_tube_interface(mconfig, *this),
		m_z80(*this, "z80"),
		m_ula(*this, "ula"),
		m_ram(*this, "ram"),
		m_rom(*this, "rom"),
		m_rom_enabled(true)
{
}

//-------------------------------------------------
//  device_start - device-specific startup
//-------------------------------------------------

void bbc_tube_z80_device::device_start()
{
	m_slot = dynamic_cast<bbc_tube_slot_device *>(owner());
}

//-------------------------------------------------
//  device_reset - device-specific reset
//-------------------------------------------------

void bbc_tube_z80_device::device_reset()
{
	m_ula->reset();

	m_rom_enabled = true;
}


//**************************************************************************
//  IMPLEMENTATION
//**************************************************************************

READ8_MEMBER(bbc_tube_z80_device::host_r)
{
	return m_ula->host_r(space, offset);
}

WRITE8_MEMBER(bbc_tube_z80_device::host_w)
{
	m_ula->host_w(space, offset, data);
}


READ8_MEMBER(bbc_tube_z80_device::opcode_r)
{
	if (!machine().side_effects_disabled())
	{
		if (offset == 0x0066 && m_z80->input_state(INPUT_LINE_NMI))
			m_rom_enabled = true;
		else if (offset >= 0x8000)
			m_rom_enabled = false;
	}
	return m_z80->space(AS_PROGRAM).read_byte(offset);
}


READ8_MEMBER(bbc_tube_z80_device::mem_r)
{
	uint8_t data;

	if (m_rom_enabled && (offset < 0x1000))
		data = m_rom->base()[offset & 0xfff];
	else
		data = m_ram->pointer()[offset];

	return data;
}

WRITE8_MEMBER(bbc_tube_z80_device::mem_w)
{
	m_ram->pointer()[offset] = data;
}

WRITE_LINE_MEMBER(bbc_tube_z80_device::nmi_w)
{
	m_z80->set_input_line(INPUT_LINE_NMI, state);
}


//-------------------------------------------------
//  irq vector callback
//-------------------------------------------------

IRQ_CALLBACK_MEMBER(bbc_tube_z80_device::irq_callback)
{
	return 0xfe;
}
">"musique"> <description>Musique (Fra)</description> <year>19??</year> <publisher>Marc Le Douarain</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="french musique (sf-7000).sf7" size="163840" crc="a8c5b0b3" sha1="7b7379131af99677ce4727fab249cd3eac3c4764" offset="0" /> </dataarea> </part> </software> <software name="goldpack"> <description>Gold Pack</description> <year>19??</year> <publisher>Scorpion</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="froggy [+cube it].sf7" size="163840" crc="67d2f298" sha1="55625ec47e9be66ff632361823c233d7cae0c839" offset="0" /> </dataarea> </part> <part name="flop2" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="gold miner-cyco bikes.sf7" size="163840" crc="cba16c6e" sha1="a41cabd0bdc9d63e5940e310f5f3919c911fb48d" offset="0" /> </dataarea> </part> </software> <software name="gragames"> <description>Grandstand Games</description> <year>19??</year> <publisher>Grandstand</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="grandstand tape compilation - educational &amp; business programs (19xx)(-)[p].sf7" size="163840" crc="615d8d76" sha1="34531b2af48641887bc3df27fd481c1600b97872" offset="0" /> </dataarea> </part> </software> <software name="grtcgame"> <description>Grandstand Tape Compilation: Games</description> <year>19??</year> <publisher>Grandstand</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="grandstand tape compilation - games (19xx)(-)[p].sf7" size="163840" crc="a200b487" sha1="1bd76012d273df2ecf4a0c9c49514b7d91646004" offset="0" /> </dataarea> </part> </software> <software name="kamikaze"> <description>Kamikaze (Fra)</description> <year>1984</year> <publisher>Loriciels</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="kamikaze # sf-7000.sf7" size="163840" crc="7654e077" sha1="8995356ea9dcca2fbbbf33dc730e391b29b138a4" offset="0" /> </dataarea> </part> </software> <software name="monitor"> <description>Monitor + LM games and tools (Fra)</description> <year>1991</year> <publisher>Marc Le Douarain</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="loriciel's z-80 utilities disk (sf-7000).sf7" size="163840" crc="326b7348" sha1="2c1e2568a9c15801cf467971098a16899771bb12" offset="0" /> </dataarea> </part> </software> <software name="olympiad"> <description>Olympiades</description> <year>19??</year> <publisher>Marc Le Douarain</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="olympiades (sf-7000).sf7" size="163840" crc="95d917dd" sha1="41f24aa32ee30263221176da281562c6d83fb51e" offset="0" /> </dataarea> </part> </software> <software name="poseidon"> <description>Poseidon Wars, Space Panic, Rambo</description> <year>1991</year> <publisher>Marc Le Douarain</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="poseidon wars - space panic - rambo # sf-7000.sf7" size="163840" crc="5ca7b5c4" sha1="909d6335034cf9e241d7fc4c8074a280b5c4112f" offset="0" /> </dataarea> </part> </software> <software name="segabase"> <description>Sega Base v1.0</description> <year>1984</year> <publisher>Hudson</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="sega base v1.0 (1984)(hudson).sf7" size="163840" crc="8c0d8d02" sha1="13b894cfa295e30df961a25ace3d9062d63adc36" offset="0" /> </dataarea> </part> </software> <software name="basic"> <description>Sega Disk BASIC v1.0p</description> <year>1984</year> <publisher>Mitec</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="sega disk basic v1.0p (sf-7000).sf7" size="163840" crc="50a2a040" sha1="1e3c0651757d304ba1184e43f1cb1ce1ca3be22e" offset="0" /> </dataarea> </part> </software> <software name="basicf" cloneof="basic"> <description>Sega Disk BASIC v1.0p (Fra)</description> <year>1984</year> <publisher>Yeno</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="sega disk basic v1.0p with yeno demo (sf-7000).sf7" size="163840" crc="ffdbcd97" sha1="c7c55da3c2f0fa90895f8b2802bad2606ff16578" offset="0" /> </dataarea> </part> </software> <software name="logo"> <description>Sega LOGO v1.0e</description> <year>1984</year> <publisher>Sega</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="sega logo v1.0e (sf-7000) [!].sf7" size="163840" crc="a7b1da17" sha1="1a54fbf5bd1442a96e7806249a6812ea2006e092" offset="0" /> </dataarea> </part> </software> <software name="basic11" cloneof="basic"> <description>Sega Disk BASIC v1.1p</description> <year>1984</year> <publisher>Mitec</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="sega sc-3000 disk basic v1.1p (1984)(mitec).sf7" size="163840" crc="7f51ef65" sha1="037c3d09b3d9e898a79514c3885bf6e42d28dd4e" offset="0" /> </dataarea> </part> </software> <software name="suprjeux"> <description>Super jeux Yeno (Fra)</description> <year>19??</year> <publisher>Marc Le Douarain</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="super jeux yeno examples (sf-7000).sf7" size="163840" crc="85307975" sha1="36cc8301384537a700ec4ae85d2a24d0c5d1bd11" offset="0" /> </dataarea> </part> </software> <software name="yenodraw"> <description>Yeno Draw (Fra)</description> <year>1991</year> <publisher>Marc Le Douarain</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="yeno draw (side 1) (sf-7000).sf7" size="163840" crc="e2956dd0" sha1="327b9ac2a35714dc9f920e2fef4f1a24a2259f7d" offset="0" /> </dataarea> </part> <part name="flop2" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="yeno draw (side 2) (sf-7000).sf7" size="163840" crc="be53243a" sha1="9f693e4cdb9eb89c167e7291bcfd9c1bb2ffc5ad" offset="0" /> </dataarea> </part> </software> <software name="hucal"> <description>HuCAL</description> <year>1984</year> <publisher>Sega</publisher> <part name="flop1" interface="floppy_3"> <dataarea name="flop" size="163840"> <rom name="hucal_sc-3000.sf7" size="163840" crc="5aeee6ee" sha1="93e7e8e3b752400e212f83ee0a3dee99b91599ea" offset="0" /> </dataarea> </part> </software> </softwarelist>