trunk/src/mame/drivers/zaccaria.c
| r242627 | r242628 | |
| 41 | 41 | #include "cpu/z80/z80.h" |
| 42 | 42 | #include "cpu/m6800/m6800.h" |
| 43 | 43 | #include "machine/i8255.h" |
| 44 | #include "sound/dac.h" |
| 44 | 45 | #include "includes/zaccaria.h" |
| 45 | 46 | |
| 46 | 47 | |
| r242627 | r242628 | |
| 115 | 116 | m_ay2->set_volume(1, v); |
| 116 | 117 | } |
| 117 | 118 | |
| 118 | | |
| 119 | | WRITE_LINE_MEMBER(zaccaria_state::irq0a) |
| 120 | | { |
| 121 | | m_audiocpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE); |
| 122 | | } |
| 123 | | |
| 124 | | WRITE_LINE_MEMBER(zaccaria_state::irq0b) |
| 125 | | { |
| 126 | | m_audiocpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE); |
| 127 | | } |
| 128 | | |
| 129 | 119 | READ8_MEMBER(zaccaria_state::port0a_r) |
| 130 | 120 | { |
| 131 | 121 | return (m_active_8910 == 0) ? m_ay1->data_r(space, 0) : m_ay2->data_r(space, 0); |
| r242627 | r242628 | |
| 168 | 158 | |
| 169 | 159 | INTERRUPT_GEN_MEMBER(zaccaria_state::cb1_toggle) |
| 170 | 160 | { |
| 171 | | m_pia->cb1_w(m_toggle & 1); |
| 161 | m_pia0->cb1_w(m_toggle & 1); |
| 172 | 162 | m_toggle ^= 1; |
| 173 | 163 | } |
| 174 | 164 | |
| r242627 | r242628 | |
| 195 | 185 | |
| 196 | 186 | WRITE8_MEMBER(zaccaria_state::sound1_command_w) |
| 197 | 187 | { |
| 198 | | m_pia->ca1_w(data & 0x80); |
| 188 | m_pia0->ca1_w(data & 0x80); |
| 199 | 189 | soundlatch2_byte_w(space, 0, data); |
| 200 | 190 | } |
| 201 | 191 | |
| 202 | | WRITE8_MEMBER(zaccaria_state::mc1408_data_w) |
| 203 | | { |
| 204 | | m_dac2->write_unsigned8(data); |
| 205 | | } |
| 206 | | |
| 207 | | |
| 208 | 192 | GAME_EXTERN(monymony); |
| 209 | 193 | |
| 210 | 194 | READ8_MEMBER(zaccaria_state::prot1_r) |
| r242627 | r242628 | |
| 331 | 315 | static ADDRESS_MAP_START( sound_map_2, AS_PROGRAM, 8, zaccaria_state ) |
| 332 | 316 | AM_RANGE(0x0000, 0x007f) AM_RAM /* 6802 internal ram */ |
| 333 | 317 | AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia1", pia6821_device, read, write) AM_MIRROR(0x8F6C) |
| 334 | | AM_RANGE(0x1000, 0x1000) AM_WRITE(mc1408_data_w) AM_MIRROR(0x83FF) /* MC1408 */ |
| 318 | AM_RANGE(0x1000, 0x1000) AM_DEVWRITE("mc1408", dac_device, write_unsigned8) AM_MIRROR(0x83FF) /* MC1408 */ |
| 335 | 319 | AM_RANGE(0x1400, 0x1400) AM_WRITE(sound1_command_w) AM_MIRROR(0xC3FF) |
| 336 | 320 | AM_RANGE(0x1800, 0x1800) AM_READ(soundlatch_byte_r) AM_MIRROR(0xC3FF) |
| 337 | 321 | AM_RANGE(0x2000, 0x2fff) AM_ROM AM_MIRROR(0x8000) // rom 8 with A12 low |
| r242627 | r242628 | |
| 541 | 525 | MCFG_PIA_READPA_HANDLER(READ8(zaccaria_state, port0a_r)) |
| 542 | 526 | MCFG_PIA_WRITEPA_HANDLER(WRITE8(zaccaria_state, port0a_w)) |
| 543 | 527 | MCFG_PIA_WRITEPB_HANDLER(WRITE8(zaccaria_state, port0b_w)) |
| 544 | | MCFG_PIA_IRQA_HANDLER(WRITELINE(zaccaria_state, irq0a)) |
| 545 | | MCFG_PIA_IRQB_HANDLER(WRITELINE(zaccaria_state, irq0b)) |
| 528 | MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("audiocpu", m6802_cpu_device, nmi_line)) |
| 529 | MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("audiocpu", m6802_cpu_device, irq_line)) |
| 546 | 530 | |
| 547 | 531 | MCFG_DEVICE_ADD( "pia1", PIA6821, 0) |
| 548 | 532 | MCFG_PIA_READPA_HANDLER(DEVREAD8("tms", tms5220_device, status_r)) |
| r242627 | r242628 | |
| 574 | 558 | MCFG_SOUND_ADD("ay2", AY8910, XTAL_3_579545MHz/2) /* verified on pcb */ |
| 575 | 559 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) |
| 576 | 560 | |
| 577 | | MCFG_DAC_ADD("dac2") |
| 561 | MCFG_DAC_ADD("mc1408") |
| 578 | 562 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 579 | 563 | |
| 580 | 564 | /* There is no xtal, the clock is obtained from a RC oscillator as shown in the TMS5220 datasheet (R=100kOhm C=22pF) */ |
trunk/src/mame/includes/zaccaria.h
| r242627 | r242628 | |
| 1 | 1 | #include "machine/6821pia.h" |
| 2 | 2 | #include "sound/ay8910.h" |
| 3 | | #include "sound/dac.h" |
| 4 | 3 | #include "sound/tms5220.h" |
| 5 | 4 | |
| 6 | 5 | class zaccaria_state : public driver_device |
| r242627 | r242628 | |
| 9 | 8 | zaccaria_state(const machine_config &mconfig, device_type type, const char *tag) |
| 10 | 9 | : driver_device(mconfig, type, tag), |
| 11 | 10 | m_maincpu(*this, "maincpu"), |
| 12 | | m_audiocpu(*this, "audiocpu"), |
| 13 | 11 | m_audio2(*this, "audio2"), |
| 14 | | m_pia(*this, "pia0"), |
| 15 | | m_dac2(*this, "dac2"), |
| 12 | m_pia0(*this, "pia0"), |
| 16 | 13 | m_ay1(*this, "ay1"), |
| 17 | 14 | m_ay2(*this, "ay2"), |
| 18 | 15 | m_tms(*this, "tms"), |
| r242627 | r242628 | |
| 28 | 25 | |
| 29 | 26 | /* devices */ |
| 30 | 27 | required_device<cpu_device> m_maincpu; |
| 31 | | required_device<cpu_device> m_audiocpu; |
| 32 | 28 | required_device<cpu_device> m_audio2; |
| 33 | | required_device<pia6821_device> m_pia; |
| 34 | | required_device<dac_device> m_dac2; |
| 29 | required_device<pia6821_device> m_pia0; |
| 35 | 30 | required_device<ay8910_device> m_ay1; |
| 36 | 31 | required_device<ay8910_device> m_ay2; |
| 37 | 32 | required_device<tms5220_device> m_tms; |
| r242627 | r242628 | |
| 69 | 64 | DECLARE_CUSTOM_INPUT_MEMBER(acs_r); |
| 70 | 65 | DECLARE_WRITE8_MEMBER(dsw_sel_w); |
| 71 | 66 | DECLARE_WRITE8_MEMBER(ay8910_port0a_w); |
| 72 | | DECLARE_WRITE_LINE_MEMBER(irq0a); |
| 73 | | DECLARE_WRITE_LINE_MEMBER(irq0b); |
| 74 | 67 | DECLARE_READ8_MEMBER(port0a_r); |
| 75 | 68 | DECLARE_WRITE8_MEMBER(port0a_w); |
| 76 | 69 | DECLARE_WRITE8_MEMBER(port0b_w); |
| 77 | 70 | DECLARE_WRITE8_MEMBER(port1b_w); |
| 78 | | DECLARE_WRITE8_MEMBER(mc1408_data_w); |
| 79 | 71 | TILE_GET_INFO_MEMBER(get_tile_info); |
| 80 | 72 | virtual void machine_start(); |
| 81 | 73 | virtual void machine_reset(); |