1 // license:GPL-2.0+ 2 // copyright-holders:Kevin Thacker,Sandro Ronco 3 /***************************************************************************** 4 * 5 * includes/avigo.h 6 * 7 ****************************************************************************/ 8 9 #ifndef MAME_INCLUDES_AVIGO_H 10 #define MAME_INCLUDES_AVIGO_H 11 12 #pragma once 13 14 #include "bus/rs232/rs232.h" 15 #include "cpu/z80/z80.h" 16 #include "imagedev/snapquik.h" 17 #include "machine/bankdev.h" 18 #include "machine/ins8250.h" 19 #include "machine/intelfsh.h" 20 #include "machine/nvram.h" 21 #include "machine/ram.h" 22 #include "machine/rp5c01.h" 23 #include "machine/timer.h" 24 #include "sound/spkrdev.h" 25 #include "emupal.h" 26 27 #define AVIGO_SCREEN_WIDTH 160 28 #define AVIGO_SCREEN_HEIGHT 240 29 #define AVIGO_PANEL_HEIGHT 26 30 31 32 class avigo_state : public driver_device 33 { 34 public: avigo_state(const machine_config & mconfig,device_type type,const char * tag)35 avigo_state(const machine_config &mconfig, device_type type, const char *tag) 36 : driver_device(mconfig, type, tag) 37 , m_maincpu(*this, "maincpu") 38 , m_ram(*this, RAM_TAG) 39 , m_speaker(*this, "speaker") 40 , m_uart(*this, "ns16550") 41 , m_serport(*this, "serport") 42 , m_palette(*this, "palette") 43 , m_bankdev1(*this, "bank0") 44 , m_bankdev2(*this, "bank1") 45 , m_flash1(*this, "flash1") 46 , m_nvram(*this, "nvram") 47 { } 48 49 void avigo(machine_config &config); 50 51 DECLARE_INPUT_CHANGED_MEMBER(pen_irq); 52 DECLARE_INPUT_CHANGED_MEMBER(pen_move_irq); 53 DECLARE_INPUT_CHANGED_MEMBER(kb_irq); 54 DECLARE_INPUT_CHANGED_MEMBER(power_down_irq); 55 56 protected: 57 // defined in drivers/avigo.cpp 58 virtual void machine_start() override; 59 virtual void machine_reset() override; 60 void refresh_ints(); 61 void nvram_init(nvram_device &nvram, void *base, size_t size); 62 63 DECLARE_WRITE_LINE_MEMBER( tc8521_alarm_int ); 64 DECLARE_WRITE_LINE_MEMBER( com_interrupt ); 65 66 uint8_t key_data_read_r(); 67 void set_key_line_w(uint8_t data); 68 void port2_w(uint8_t data); 69 uint8_t irq_r(); 70 void irq_w(uint8_t data); 71 uint8_t bank1_r(offs_t offset); 72 uint8_t bank2_r(offs_t offset); 73 void bank1_w(offs_t offset, uint8_t data); 74 void bank2_w(offs_t offset, uint8_t data); 75 uint8_t ad_control_status_r(); 76 void ad_control_status_w(uint8_t data); 77 uint8_t ad_data_r(); 78 void speaker_w(uint8_t data); 79 uint8_t port_04_r(); 80 81 // defined in video/avigo.cpp 82 virtual void video_start() override; 83 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 84 uint8_t vid_memory_r(offs_t offset); 85 void vid_memory_w(offs_t offset, uint8_t data); 86 87 TIMER_DEVICE_CALLBACK_MEMBER(avigo_scan_timer); 88 TIMER_DEVICE_CALLBACK_MEMBER(avigo_1hz_timer); 89 90 DECLARE_QUICKLOAD_LOAD_MEMBER(quickload_cb); 91 void avigo_banked_map(address_map &map); 92 void avigo_io(address_map &map); 93 void avigo_mem(address_map &map); 94 95 required_device<cpu_device> m_maincpu; 96 required_device<ram_device> m_ram; 97 required_device<speaker_sound_device> m_speaker; 98 required_device<ns16550_device> m_uart; 99 required_device<rs232_port_device> m_serport; 100 required_device<palette_device> m_palette; 101 required_device<address_map_bank_device> m_bankdev1; 102 required_device<address_map_bank_device> m_bankdev2; 103 required_device<intelfsh8_device> m_flash1; 104 required_shared_ptr<uint8_t> m_nvram; 105 106 // driver state 107 uint8_t m_key_line; 108 uint8_t m_irq; 109 uint8_t m_port2; 110 uint8_t m_bank2_l; 111 uint8_t m_bank2_h; 112 uint8_t m_bank1_l; 113 uint8_t m_bank1_h; 114 uint8_t m_ad_control_status; 115 uint16_t m_ad_value; 116 std::unique_ptr<uint8_t[]> m_video_memory; 117 uint8_t m_screen_column; 118 uint8_t m_warm_start; 119 }; 120 121 #endif // MAME_INCLUDES_AVIGO_H 122