1 // license:BSD-3-Clause 2 // copyright-holders:Miodrag Milanovic 3 /***************************************************************************** 4 * 5 * includes/poly88.h 6 * 7 ****************************************************************************/ 8 #ifndef MAME_INCLUDES_POLY88_H 9 #define MAME_INCLUDES_POLY88_H 10 11 #pragma once 12 13 #include "bus/s100/s100.h" 14 #include "machine/bankdev.h" 15 #include "machine/i8251.h" 16 #include "machine/mm5307.h" 17 #include "imagedev/cassette.h" 18 #include "imagedev/snapquik.h" 19 #include "machine/timer.h" 20 21 class poly88_state : public driver_device 22 { 23 public: poly88_state(const machine_config & mconfig,device_type type,const char * tag)24 poly88_state(const machine_config &mconfig, device_type type, const char *tag) 25 : driver_device(mconfig, type, tag) 26 , m_maincpu(*this, "maincpu") 27 , m_onboard_io(*this, "onboard_io") 28 , m_s100(*this, "s100") 29 , m_s100_slot(*this, "s100:%u", 1U) 30 , m_usart(*this, "usart") 31 , m_brg(*this, "brg") 32 , m_cassette(*this, "cassette") 33 , m_onboard_rom(*this, "maincpu") 34 , m_linec(*this, "CONFIG") 35 , m_onboard_config(*this, "ONBOARD") 36 { } 37 38 void poly88(machine_config &config); 39 void poly8813(machine_config &config); 40 41 protected: 42 virtual void machine_start() override; 43 virtual void machine_reset() override; 44 45 private: 46 bool is_onboard(offs_t offset); 47 uint8_t mem_r(offs_t offset); 48 void mem_w(offs_t offset, uint8_t data); 49 uint8_t in_r(offs_t offset); 50 void out_w(offs_t offset, uint8_t data); 51 void baud_rate_w(uint8_t data); 52 void intr_w(uint8_t data); 53 54 TIMER_DEVICE_CALLBACK_MEMBER(kansas_r); 55 DECLARE_WRITE_LINE_MEMBER(cassette_clock_w); 56 TIMER_DEVICE_CALLBACK_MEMBER(rtc_tick); 57 DECLARE_WRITE_LINE_MEMBER(vi2_w); 58 DECLARE_WRITE_LINE_MEMBER(vi5_w); 59 DECLARE_WRITE_LINE_MEMBER(usart_ready_w); 60 IRQ_CALLBACK_MEMBER(poly88_irq_callback); 61 DECLARE_SNAPSHOT_LOAD_MEMBER(snapshot_cb); 62 63 void s100_mem(address_map &map); 64 void s100_io(address_map &map); 65 void poly88_mem(address_map &map); 66 void poly88_io(address_map &map); 67 void poly8813_mem(address_map &map); 68 void poly8813_io(address_map &map); 69 70 required_device<cpu_device> m_maincpu; 71 required_device<address_map_bank_device> m_onboard_io; 72 required_device<s100_bus_device> m_s100; 73 optional_device_array<s100_slot_device, 9> m_s100_slot; 74 required_device<i8251_device> m_usart; 75 required_device<mm5307_device> m_brg; 76 required_device<cassette_image_device> m_cassette; 77 required_region_ptr<u8> m_onboard_rom; 78 required_ioport m_linec; 79 required_ioport m_onboard_config; 80 81 uint8_t m_int_vector; 82 bool m_dtr, m_rts, m_txd, m_rxd, m_cassold, m_casspol; 83 u8 m_cass_data[5]; 84 std::unique_ptr<u8[]> m_onboard_ram; 85 bool m_onboard_disable; 86 }; 87 88 #endif // MAME_INCLUDES_POLY88_H 89