1 // license:BSD-3-Clause 2 // copyright-holders:Sergey Svishchev 3 /***************************************************************************** 4 * 5 * includes/mc1502.h 6 * 7 ****************************************************************************/ 8 9 #ifndef MAME_INCLUDES_MC1502_H 10 #define MAME_INCLUDES_MC1502_H 11 12 #pragma once 13 14 #include "imagedev/cassette.h" 15 #include "machine/i8251.h" 16 #include "machine/i8255.h" 17 #include "machine/pic8259.h" 18 #include "machine/pit8253.h" 19 #include "machine/ram.h" 20 #include "sound/spkrdev.h" 21 22 #include "bus/centronics/ctronics.h" 23 #include "bus/isa/isa.h" 24 #include "bus/isa/xsu_cards.h" 25 #include "bus/isa/mc1502_fdc.h" 26 27 28 class mc1502_state : public driver_device 29 { 30 public: mc1502_state(const machine_config & mconfig,device_type type,const char * tag)31 mc1502_state(const machine_config &mconfig, device_type type, const char *tag) 32 : driver_device(mconfig, type, tag) 33 , m_maincpu(*this, "maincpu") 34 , m_upd8251(*this, "upd8251") 35 , m_pic8259(*this, "pic8259") 36 , m_pit8253(*this, "pit8253") 37 , m_ppi8255n1(*this, "ppi8255n1") 38 , m_ppi8255n2(*this, "ppi8255n2") 39 , m_isabus(*this, "isa") 40 , m_speaker(*this, "speaker") 41 , m_cassette(*this, "cassette") 42 , m_centronics(*this, "centronics") 43 , m_ram(*this, RAM_TAG) 44 , m_kbdio(*this, "Y%u", 1) 45 { } 46 47 void mc1502(machine_config &config); 48 49 void init_mc1502(); 50 51 void fdc_config(device_t *device); 52 53 private: 54 required_device<cpu_device> m_maincpu; 55 required_device<i8251_device> m_upd8251; 56 required_device<pic8259_device> m_pic8259; 57 required_device<pit8253_device> m_pit8253; 58 required_device<i8255_device> m_ppi8255n1; 59 required_device<i8255_device> m_ppi8255n2; 60 required_device<isa8_device> m_isabus; 61 required_device<speaker_sound_device> m_speaker; 62 required_device<cassette_image_device> m_cassette; 63 required_device<centronics_device> m_centronics; 64 required_device<ram_device> m_ram; 65 required_ioport_array<12> m_kbdio; 66 67 DECLARE_MACHINE_START(mc1502); 68 DECLARE_MACHINE_RESET(mc1502); 69 70 TIMER_CALLBACK_MEMBER(keyb_signal_callback); 71 72 struct { 73 uint8_t pulsing; 74 uint16_t mask; /* input lines */ 75 emu_timer *keyb_signal_timer; 76 } m_kbd; 77 78 uint8_t m_ppi_portb; 79 uint8_t m_ppi_portc; 80 uint8_t m_spkrdata; 81 82 DECLARE_WRITE_LINE_MEMBER(mc1502_pit8253_out1_changed); 83 DECLARE_WRITE_LINE_MEMBER(mc1502_pit8253_out2_changed); 84 DECLARE_WRITE_LINE_MEMBER(mc1502_speaker_set_spkrdata); 85 DECLARE_WRITE_LINE_MEMBER(mc1502_i8251_syndet); 86 87 void mc1502_ppi_portb_w(uint8_t data); 88 void mc1502_ppi_portc_w(uint8_t data); 89 uint8_t mc1502_ppi_portc_r(); 90 uint8_t mc1502_kppi_porta_r(); 91 void mc1502_kppi_portb_w(uint8_t data); 92 void mc1502_kppi_portc_w(uint8_t data); 93 94 void mc1502_io(address_map &map); 95 void mc1502_map(address_map &map); 96 97 int m_pit_out2; 98 }; 99 100 #endif // MAME_INCLUDES_MC1502_H 101