trunk/src/emu/cpu/z80/tmpz84c011.c
| r31053 | r31054 | |
| 40 | 40 | m_inportsb(*this), |
| 41 | 41 | m_inportsc(*this), |
| 42 | 42 | m_inportsd(*this), |
| 43 | | m_inportse(*this), |
| 44 | | m_intr_cb(*this), |
| 45 | | m_zc0_cb(*this), |
| 46 | | m_zc1_cb(*this), |
| 47 | | m_zc2_cb(*this) |
| 43 | m_inportse(*this) |
| 48 | 44 | { |
| 49 | 45 | memset(m_pio_dir, 0, 5); |
| 50 | 46 | memset(m_pio_latch, 0, 5); |
| r31053 | r31054 | |
| 72 | 68 | m_inportsd.resolve_safe(0); |
| 73 | 69 | m_inportse.resolve_safe(0); |
| 74 | 70 | |
| 75 | | m_intr_cb.resolve_safe(); |
| 76 | | m_zc0_cb.resolve_safe(); |
| 77 | | m_zc1_cb.resolve_safe(); |
| 78 | | m_zc2_cb.resolve_safe(); |
| 79 | | |
| 80 | 71 | // register for save states |
| 81 | 72 | save_item(NAME(m_pio_dir[0])); |
| 82 | 73 | save_item(NAME(m_pio_latch[0])); |
| r31053 | r31054 | |
| 214 | 205 | } |
| 215 | 206 | |
| 216 | 207 | |
| 217 | | WRITE_LINE_MEMBER( tmpz84c011_device::intr_cb_trampoline_w ) { m_intr_cb(state); } |
| 218 | | WRITE_LINE_MEMBER( tmpz84c011_device::zc0_cb_trampoline_w ) { m_zc0_cb(state); } |
| 219 | | WRITE_LINE_MEMBER( tmpz84c011_device::zc1_cb_trampoline_w ) { m_zc1_cb(state); } |
| 220 | | WRITE_LINE_MEMBER( tmpz84c011_device::zc2_cb_trampoline_w ) { m_zc2_cb(state); } |
| 208 | static const z80_daisy_config daisy_chain[] = |
| 209 | { |
| 210 | { "ctc" }, |
| 211 | { NULL } |
| 212 | }; |
| 221 | 213 | |
| 222 | | |
| 223 | 214 | static MACHINE_CONFIG_FRAGMENT( tmpz84c011 ) |
| 224 | 215 | MCFG_DEVICE_ADD("ctc", Z80CTC, DERIVED_CLOCK(1,1) ) |
| 225 | | MCFG_Z80CTC_INTR_CB(WRITELINE(tmpz84c011_device, intr_cb_trampoline_w)) |
| 226 | | MCFG_Z80CTC_ZC0_CB(WRITELINE(tmpz84c011_device, zc0_cb_trampoline_w)) |
| 227 | | MCFG_Z80CTC_ZC1_CB(WRITELINE(tmpz84c011_device, zc1_cb_trampoline_w)) |
| 228 | | MCFG_Z80CTC_ZC2_CB(WRITELINE(tmpz84c011_device, zc2_cb_trampoline_w)) |
| 216 | MCFG_Z80CTC_INTR_CB(INPUTLINE(DEVICE_SELF, INPUT_LINE_IRQ0)) |
| 217 | MCFG_CPU_MODIFY(DEVICE_SELF) |
| 218 | MCFG_CPU_CONFIG(daisy_chain) |
| 229 | 219 | MACHINE_CONFIG_END |
| 230 | 220 | |
| 231 | 221 | machine_config_constructor tmpz84c011_device::device_mconfig_additions() const |
trunk/src/emu/cpu/z80/tmpz84c011.h
| r31053 | r31054 | |
| 7 | 7 | |
| 8 | 8 | #include "emu.h" |
| 9 | 9 | #include "z80.h" |
| 10 | #include "machine/z80ctc.h" |
| 10 | 11 | |
| 11 | | |
| 12 | // NOTE: for CTC callbacks, see machine/z80ctc.h |
| 12 | 13 | // TMPZ84C011 PIO callbacks |
| 13 | 14 | #define MCFG_TMPZ84C011_PORTA_READ_CB(_devcb) \ |
| 14 | 15 | devcb = &tmpz84c011_device::set_inportsa_cb(*device, DEVCB_##_devcb); |
| r31053 | r31054 | |
| 42 | 43 | devcb = &tmpz84c011_device::set_outportse_cb(*device, DEVCB_##_devcb); |
| 43 | 44 | |
| 44 | 45 | |
| 45 | | // CTC callbacks |
| 46 | | #define MCFG_TMPZ84C011_Z80CTC_INTR_CB(_devcb) \ |
| 47 | | devcb = &tmpz84c011_device::set_intr_callback(*device, DEVCB_##_devcb); |
| 48 | | |
| 49 | | |
| 50 | | #define MCFG_TMPZ84C011_Z80CTC_ZC0_CB(_devcb) \ |
| 51 | | devcb = &tmpz84c011_device::set_zc0_callback(*device, DEVCB_##_devcb); |
| 52 | | |
| 53 | | #define MCFG_TMPZ84C011_Z80CTC_ZC1_CB(_devcb) \ |
| 54 | | devcb = &tmpz84c011_device::set_zc1_callback(*device, DEVCB_##_devcb); |
| 55 | | |
| 56 | | #define MCFG_TMPZ84C011_Z80CTC_ZC2_CB(_devcb) \ |
| 57 | | devcb = &tmpz84c011_device::set_zc2_callback(*device, DEVCB_##_devcb); |
| 58 | | |
| 59 | 46 | class tmpz84c011_device : public z80_device |
| 60 | 47 | { |
| 61 | 48 | public: |
| r31053 | r31054 | |
| 73 | 60 | template<class _Object> static devcb_base & set_inportsd_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportsd.set_callback(object); } |
| 74 | 61 | template<class _Object> static devcb_base & set_inportse_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportse.set_callback(object); } |
| 75 | 62 | |
| 76 | | template<class _Object> static devcb_base &set_intr_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_intr_cb.set_callback(object); } |
| 77 | | template<class _Object> static devcb_base &set_zc0_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc0_cb.set_callback(object); } |
| 78 | | template<class _Object> static devcb_base &set_zc1_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc1_cb.set_callback(object); } |
| 79 | | template<class _Object> static devcb_base &set_zc2_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc2_cb.set_callback(object); } |
| 80 | | |
| 81 | 63 | DECLARE_READ8_MEMBER(tmpz84c011_pa_r); |
| 82 | 64 | DECLARE_READ8_MEMBER(tmpz84c011_pb_r); |
| 83 | 65 | DECLARE_READ8_MEMBER(tmpz84c011_pc_r); |
| r31053 | r31054 | |
| 99 | 81 | DECLARE_WRITE8_MEMBER(tmpz84c011_dir_pd_w); |
| 100 | 82 | DECLARE_WRITE8_MEMBER(tmpz84c011_dir_pe_w); |
| 101 | 83 | |
| 102 | | DECLARE_WRITE_LINE_MEMBER(intr_cb_trampoline_w); |
| 103 | | DECLARE_WRITE_LINE_MEMBER(zc0_cb_trampoline_w); |
| 104 | | DECLARE_WRITE_LINE_MEMBER(zc1_cb_trampoline_w); |
| 105 | | DECLARE_WRITE_LINE_MEMBER(zc2_cb_trampoline_w); |
| 106 | | |
| 107 | 84 | protected: |
| 108 | 85 | // device-level overrides |
| 109 | 86 | virtual machine_config_constructor device_mconfig_additions() const; |
| r31053 | r31054 | |
| 136 | 113 | devcb_read8 m_inportsc; |
| 137 | 114 | devcb_read8 m_inportsd; |
| 138 | 115 | devcb_read8 m_inportse; |
| 139 | | |
| 140 | | devcb_write_line m_intr_cb; // interrupt callback |
| 141 | | devcb_write_line m_zc0_cb; // channel 0 zero crossing callbacks |
| 142 | | devcb_write_line m_zc1_cb; // channel 1 zero crossing callbacks |
| 143 | | devcb_write_line m_zc2_cb; // channel 2 zero crossing callbacks |
| 144 | 116 | }; |
| 145 | 117 | |
| 146 | 118 | extern const device_type TMPZ84C011; |
trunk/src/mame/drivers/niyanpai.c
| r31053 | r31054 | |
| 40 | 40 | #include "includes/nb1413m3.h" |
| 41 | 41 | #include "sound/dac.h" |
| 42 | 42 | #include "sound/3812intf.h" |
| 43 | | #include "cpu/z80/z80daisy.h" |
| 44 | 43 | #include "machine/nvram.h" |
| 45 | 44 | #include "includes/niyanpai.h" |
| 46 | 45 | |
| r31053 | r31054 | |
| 761 | 760 | m_tmp68301->external_interrupt_0(); |
| 762 | 761 | } |
| 763 | 762 | |
| 764 | | static const z80_daisy_config daisy_chain_sound[] = |
| 765 | | { |
| 766 | | { "audiocpu:ctc" }, |
| 767 | | { NULL } |
| 768 | | }; |
| 769 | 763 | |
| 770 | | |
| 771 | | |
| 772 | 764 | static MACHINE_CONFIG_START( niyanpai, niyanpai_state ) |
| 773 | 765 | |
| 774 | 766 | /* basic machine hardware */ |
| r31053 | r31054 | |
| 781 | 773 | MCFG_TMP68301_OUT_PARALLEL_CB(WRITE16(niyanpai_state, tmp68301_parallel_port_w)) |
| 782 | 774 | |
| 783 | 775 | MCFG_CPU_ADD("audiocpu", TMPZ84C011, 8000000) /* TMPZ84C011, 8.00 MHz */ |
| 784 | | MCFG_CPU_CONFIG(daisy_chain_sound) |
| 785 | 776 | MCFG_CPU_PROGRAM_MAP(niyanpai_sound_map) |
| 786 | 777 | MCFG_CPU_IO_MAP(niyanpai_sound_io_map) |
| 787 | 778 | MCFG_TMPZ84C011_PORTD_READ_CB(READ8(niyanpai_state, cpu_portd_r)) |
| r31053 | r31054 | |
| 789 | 780 | MCFG_TMPZ84C011_PORTB_WRITE_CB(WRITE8(niyanpai_state, cpu_portb_w)) |
| 790 | 781 | MCFG_TMPZ84C011_PORTC_WRITE_CB(WRITE8(niyanpai_state, cpu_portc_w)) |
| 791 | 782 | MCFG_TMPZ84C011_PORTE_WRITE_CB(WRITE8(niyanpai_state, cpu_porte_w)) |
| 792 | | MCFG_TMPZ84C011_Z80CTC_INTR_CB(INPUTLINE("audiocpu", INPUT_LINE_IRQ0)) |
| 793 | | MCFG_TMPZ84C011_Z80CTC_ZC0_CB(DEVWRITELINE("audiocpu:ctc", z80ctc_device, trg3)) |
| 783 | MCFG_DEVICE_MODIFY("audiocpu:ctc") |
| 784 | MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("ctc", z80ctc_device, trg3)) |
| 794 | 785 | |
| 795 | | |
| 796 | 786 | MCFG_NVRAM_ADD_0FILL("nvram") |
| 797 | 787 | |
| 798 | 788 | /* video hardware */ |
trunk/src/mame/drivers/nbmj9195.c
| r31053 | r31054 | |
| 25 | 25 | #include "includes/nb1413m3.h" // needed for mahjong input controller |
| 26 | 26 | #include "sound/3812intf.h" |
| 27 | 27 | #include "sound/dac.h" |
| 28 | | #include "cpu/z80/z80daisy.h" |
| 29 | 28 | #include "includes/nbmj9195.h" |
| 30 | 29 | |
| 31 | 30 | |
| r31053 | r31054 | |
| 2779 | 2778 | INPUT_PORTS_END |
| 2780 | 2779 | |
| 2781 | 2780 | |
| 2782 | | static const z80_daisy_config daisy_chain_main[] = |
| 2783 | | { |
| 2784 | | { "maincpu:ctc" }, |
| 2785 | | { NULL } |
| 2786 | | }; |
| 2787 | | |
| 2788 | | static const z80_daisy_config daisy_chain_sound[] = |
| 2789 | | { |
| 2790 | | { "audiocpu:ctc" }, |
| 2791 | | { NULL } |
| 2792 | | }; |
| 2793 | | |
| 2794 | | |
| 2795 | 2781 | // the only difference between these 2 setups is the DAC is swapped, is that intentional? |
| 2796 | 2782 | #define OTHERS_TMZ84C011_SOUND_PORTS \ |
| 2797 | 2783 | MCFG_TMPZ84C011_PORTA_WRITE_CB(WRITE8(nbmj9195_state, soundcpu_porta_w)) \ |
| r31053 | r31054 | |
| 2829 | 2815 | static MACHINE_CONFIG_START( NBMJDRV1_base, nbmj9195_state ) |
| 2830 | 2816 | |
| 2831 | 2817 | /* basic machine hardware */ |
| 2832 | | MCFG_CPU_ADD("maincpu", TMPZ84C011, 12000000/2) /* TMPZ84C011, 6.00 MHz */ |
| 2833 | | MCFG_CPU_CONFIG(daisy_chain_main) |
| 2818 | MCFG_CPU_ADD("maincpu", TMPZ84C011, 12000000/2) /* TMPZ84C011, 6.00 MHz */ |
| 2834 | 2819 | MCFG_CPU_PROGRAM_MAP(sailorws_map) |
| 2835 | 2820 | MCFG_CPU_IO_MAP(sailorws_io_map) |
| 2836 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", nbmj9195_state, ctc0_trg1) /* vblank is connect to ctc triggfer */ |
| 2837 | | MCFG_TMPZ84C011_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) |
| 2821 | MCFG_CPU_VBLANK_INT_DRIVER("screen", nbmj9195_state, ctc0_trg1) /* vblank is connect to ctc trigger */ |
| 2838 | 2822 | |
| 2839 | | MCFG_CPU_ADD("audiocpu", TMPZ84C011, 8000000) /* TMPZ84C011, 8.00 MHz */ |
| 2840 | | MCFG_CPU_CONFIG(daisy_chain_sound) |
| 2823 | MCFG_CPU_ADD("audiocpu", TMPZ84C011, 8000000) /* TMPZ84C011, 8.00 MHz */ |
| 2841 | 2824 | MCFG_CPU_PROGRAM_MAP(sailorws_sound_map) |
| 2842 | 2825 | MCFG_CPU_IO_MAP(sailorws_sound_io_map) |
| 2843 | | MCFG_TMPZ84C011_Z80CTC_INTR_CB(INPUTLINE("audiocpu", INPUT_LINE_IRQ0)) |
| 2844 | | MCFG_TMPZ84C011_Z80CTC_ZC0_CB(DEVWRITELINE("audiocpu:ctc", z80ctc_device, trg3)) |
| 2826 | MCFG_DEVICE_MODIFY("audiocpu:ctc") |
| 2827 | MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("ctc", z80ctc_device, trg3)) |
| 2845 | 2828 | |
| 2846 | | |
| 2847 | 2829 | /* video hardware */ |
| 2848 | 2830 | MCFG_SCREEN_ADD("screen", RASTER) |
| 2849 | 2831 | MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) |
| r31053 | r31054 | |
| 3167 | 3149 | MCFG_CPU_MODIFY("maincpu") |
| 3168 | 3150 | MCFG_CPU_PROGRAM_MAP(shabdama_map) |
| 3169 | 3151 | MCFG_CPU_IO_MAP(shabdama_io_map) |
| 3170 | | |
| 3171 | 3152 | MACHINE_CONFIG_END |
| 3172 | 3153 | |
| 3173 | 3154 | |
trunk/src/mame/drivers/csplayh5.c
| r31053 | r31054 | |
| 30 | 30 | #include "cpu/z80/tmpz84c011.h" |
| 31 | 31 | #include "sound/dac.h" |
| 32 | 32 | #include "sound/3812intf.h" |
| 33 | | #include "cpu/z80/z80daisy.h" |
| 34 | 33 | #include "machine/nvram.h" |
| 35 | 34 | #include "cpu/h8/h83002.h" |
| 36 | 35 | |
| r31053 | r31054 | |
| 449 | 448 | } |
| 450 | 449 | } |
| 451 | 450 | |
| 452 | | static const z80_daisy_config daisy_chain_sound[] = |
| 453 | | { |
| 454 | | { "audiocpu:ctc" }, |
| 455 | | { NULL } |
| 456 | | }; |
| 457 | | |
| 458 | 451 | static MACHINE_CONFIG_START( csplayh5, csplayh5_state ) |
| 459 | 452 | |
| 460 | 453 | /* basic machine hardware */ |
| r31053 | r31054 | |
| 473 | 466 | #endif |
| 474 | 467 | |
| 475 | 468 | MCFG_CPU_ADD("audiocpu", TMPZ84C011, 8000000) /* TMPZ84C011, unknown clock */ |
| 476 | | MCFG_CPU_CONFIG(daisy_chain_sound) |
| 477 | 469 | MCFG_CPU_PROGRAM_MAP(csplayh5_sound_map) |
| 478 | 470 | MCFG_CPU_IO_MAP(csplayh5_sound_io_map) |
| 479 | 471 | MCFG_TMPZ84C011_PORTA_WRITE_CB(WRITE8(csplayh5_state, soundcpu_porta_w)) |
| r31053 | r31054 | |
| 481 | 473 | MCFG_TMPZ84C011_PORTC_WRITE_CB(WRITE8(csplayh5_state, soundcpu_dac1_w)) |
| 482 | 474 | MCFG_TMPZ84C011_PORTD_READ_CB(READ8(csplayh5_state, soundcpu_portd_r)) |
| 483 | 475 | MCFG_TMPZ84C011_PORTE_WRITE_CB(WRITE8(csplayh5_state, soundcpu_porte_w)) |
| 484 | | MCFG_TMPZ84C011_Z80CTC_INTR_CB(INPUTLINE("audiocpu", INPUT_LINE_IRQ0)) |
| 485 | | MCFG_TMPZ84C011_Z80CTC_ZC0_CB(DEVWRITELINE("audiocpu:ctc", z80ctc_device, trg3)) |
| 476 | MCFG_DEVICE_MODIFY("audiocpu:ctc") |
| 477 | MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("ctc", z80ctc_device, trg3)) |
| 486 | 478 | |
| 487 | 479 | MCFG_NVRAM_ADD_0FILL("nvram") |
| 488 | 480 | |
trunk/src/mame/drivers/kenseim.c
| r31053 | r31054 | |
| 140 | 140 | |
| 141 | 141 | #include "emu.h" |
| 142 | 142 | #include "cpu/z80/tmpz84c011.h" |
| 143 | #include "machine/mb89363b.h" |
| 143 | 144 | #include "includes/cps1.h" |
| 144 | 145 | #include "kenseim.lh" |
| 145 | | #include "machine/mb89363b.h" |
| 146 | 146 | |
| 147 | 147 | class kenseim_state : public cps_state |
| 148 | 148 | { |
| r31053 | r31054 | |
| 459 | 459 | |
| 460 | 460 | static ADDRESS_MAP_START( kenseim_io_map, AS_IO, 8, kenseim_state ) |
| 461 | 461 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 462 | | AM_RANGE(0x20, 0x27) AM_DEVREADWRITE("mb89363b", mb89363b_device, read, write) |
| 462 | AM_RANGE(0x20, 0x27) AM_DEVREADWRITE("mb89363b", mb89363b_device, read, write) |
| 463 | 463 | ADDRESS_MAP_END |
| 464 | 464 | |
| 465 | 465 | |
| 466 | | static const z80_daisy_config daisy_chain_gamecpu[] = |
| 467 | | { |
| 468 | | { "gamecpu:ctc" }, |
| 469 | | { NULL } |
| 470 | | }; |
| 471 | 466 | |
| 472 | 467 | |
| 473 | 468 | static MACHINE_CONFIG_DERIVED_CLASS( kenseim, cps1_12MHz, kenseim_state ) |
| r31053 | r31054 | |
| 483 | 478 | MCFG_TMPZ84C011_PORTB_READ_CB(IOPORT("DSW2")) |
| 484 | 479 | MCFG_TMPZ84C011_PORTC_READ_CB(IOPORT("CAB-IN")) |
| 485 | 480 | MCFG_TMPZ84C011_PORTD_READ_CB(READ8(kenseim_state, cpu_portd_r)) |
| 486 | | MCFG_CPU_CONFIG(daisy_chain_gamecpu) |
| 487 | | MCFG_TMPZ84C011_Z80CTC_INTR_CB(INPUTLINE("gamecpu", INPUT_LINE_IRQ0)) |
| 488 | 481 | |
| 489 | | |
| 490 | 482 | MCFG_MB89363B_ADD("mb89363b") |
| 491 | 483 | // a,b,c always $80: all ports set as output |
| 492 | 484 | // d,e,f always $92: port D and E as input, port F as output |