1 // license:BSD-3-Clause 2 // copyright-holders:David Haywood 3 #ifndef MAME_INCLUDES_MAYGAY1B_H 4 #define MAME_INCLUDES_MAYGAY1B_H 5 6 #pragma once 7 8 #include "cpu/m6809/m6809.h" 9 #include "machine/i8279.h" 10 11 #include "video/awpvid.h" //Fruit Machines Only 12 #include "machine/6821pia.h" 13 #include "machine/mc68681.h" 14 #include "machine/meters.h" 15 #include "machine/roc10937.h" // vfd 16 #include "machine/steppers.h" // stepper motor 17 #include "sound/ay8910.h" 18 #include "sound/ym2413.h" 19 #include "sound/okim6376.h" 20 #include "machine/nvram.h" 21 #include "machine/timer.h" 22 #include "sound/upd7759.h" 23 #include "cpu/mcs51/mcs51.h" 24 #include "sound/okim6295.h" 25 26 27 class maygay1b_state : public driver_device 28 { 29 public: maygay1b_state(const machine_config & mconfig,device_type type,const char * tag)30 maygay1b_state(const machine_config &mconfig, device_type type, const char *tag) : 31 driver_device(mconfig, type, tag), 32 m_maincpu(*this, "maincpu"), 33 m_mcu(*this, "mcu"), 34 m_vfd(*this, "vfd"), 35 m_ay(*this, "aysnd"), 36 m_msm6376(*this, "msm6376"), 37 m_upd7759(*this, "upd"), 38 m_okim6295(*this, "oki"), 39 m_duart68681(*this, "duart68681"), 40 m_sw1_port(*this, "SW1"), 41 m_sw2_port(*this, "SW2"), 42 m_kbd_ports(*this, { "SW1", "SW2", "STROBE2", "STROBE3", "STROBE4", "STROBE5", "STROBE6", "STROBE7", }), 43 m_bank1(*this, "bank1"), 44 m_reels(*this, "reel%u", 0U), 45 m_meters(*this, "meters"), 46 m_oki_region(*this, "msm6376"), 47 m_lamps(*this, "lamp%u", 0U), 48 m_triacs(*this, "triac%u", 0U) 49 { 50 } 51 52 void maygay_m1_no_oki(machine_config &config); 53 void maygay_m1(machine_config &config); 54 void maygay_m1_nec(machine_config &config); 55 void maygay_m1_empire(machine_config &config); 56 57 void init_m1(); 58 void init_m1common(); 59 void init_m1nec(); 60 61 private: 62 required_device<cpu_device> m_maincpu; 63 required_device<i80c51_device> m_mcu; 64 optional_device<s16lf01_device> m_vfd; 65 required_device<ay8910_device> m_ay; 66 optional_device<okim6376_device> m_msm6376; 67 optional_device<upd7759_device> m_upd7759; 68 optional_device<okim6295_device> m_okim6295; 69 required_device<mc68681_device> m_duart68681; 70 required_ioport m_sw1_port; 71 required_ioport m_sw2_port; 72 required_ioport_array<8> m_kbd_ports; 73 required_memory_bank m_bank1; 74 required_device_array<stepper_device, 6> m_reels; 75 optional_device<meters_device> m_meters; 76 optional_region_ptr<uint8_t> m_oki_region; 77 output_finder<256> m_lamps; 78 output_finder<8> m_triacs; 79 80 uint8_t m_lamppos; 81 int m_lamp_strobe; 82 int m_old_lamp_strobe; 83 int m_lamp_strobe2; 84 int m_old_lamp_strobe2; 85 int m_RAMEN; 86 int m_ALARMEN; 87 int m_PSUrelay; 88 bool m_Vmm; 89 int m_WDOG; 90 int m_NMIENABLE; 91 int m_meter; 92 TIMER_DEVICE_CALLBACK_MEMBER( maygay1b_nmitimer_callback ); 93 uint8_t m_Lamps[256]; 94 int m_optic_pattern; DECLARE_WRITE_LINE_MEMBER(reel_optic_cb)95 template <unsigned N> DECLARE_WRITE_LINE_MEMBER(reel_optic_cb) { if (state) m_optic_pattern |= (1 << N); else m_optic_pattern &= ~(1 << N); } 96 void scanlines_w(uint8_t data); 97 void scanlines_2_w(uint8_t data); 98 void lamp_data_w(uint8_t data); 99 void lamp_data_2_w(uint8_t data); 100 uint8_t kbd_r(); 101 void reel12_w(uint8_t data); 102 void reel34_w(uint8_t data); 103 void reel56_w(uint8_t data); 104 DECLARE_WRITE_LINE_MEMBER(ramen_w); 105 DECLARE_WRITE_LINE_MEMBER(alarmen_w); 106 DECLARE_WRITE_LINE_MEMBER(nmien_w); 107 DECLARE_WRITE_LINE_MEMBER(rts_w); 108 DECLARE_WRITE_LINE_MEMBER(psurelay_w); 109 DECLARE_WRITE_LINE_MEMBER(wdog_w); 110 DECLARE_WRITE_LINE_MEMBER(srsel_w); 111 void latch_ch2_w(uint8_t data); 112 uint8_t latch_st_hi(); 113 uint8_t latch_st_lo(); 114 void m1ab_no_oki_w(uint8_t data); 115 void m1_pia_porta_w(uint8_t data); 116 void m1_pia_portb_w(uint8_t data); 117 void m1_lockout_w(uint8_t data); 118 void m1_meter_w(uint8_t data); 119 uint8_t m1_meter_r(); 120 uint8_t m1_firq_clr_r(); 121 uint8_t m1_firq_trg_r(); 122 uint8_t m1_firq_nec_r(); 123 uint8_t nec_reset_r(); 124 void nec_bank0_w(uint8_t data); 125 void nec_bank1_w(uint8_t data); 126 DECLARE_WRITE_LINE_MEMBER(duart_irq_handler); 127 uint8_t m1_duart_r(); 128 void mcu_port0_w(uint8_t data); 129 void mcu_port1_w(uint8_t data); 130 void mcu_port2_w(uint8_t data); 131 void mcu_port3_w(uint8_t data); 132 uint8_t mcu_port0_r(); 133 uint8_t mcu_port2_r(); 134 135 void main_to_mcu_0_w(uint8_t data); 136 void main_to_mcu_1_w(uint8_t data); 137 138 uint8_t m_main_to_mcu; 139 140 virtual void machine_start() override; 141 virtual void machine_reset() override; 142 void cpu0_firq(int data); 143 void cpu0_nmi(); 144 void m1_memmap(address_map &map); 145 void m1_nec_memmap(address_map &map); 146 }; 147 148 INPUT_PORTS_EXTERN( maygay_m1 ); 149 150 #endif // MAME_INCLUDES_MAYGAY1B_H 151