// license:GPL-2.0+ // copyright-holders:Kevin Thacker,Sandro Ronco /***************************************************************************** * * includes/avigo.h * ****************************************************************************/ #ifndef MAME_INCLUDES_AVIGO_H #define MAME_INCLUDES_AVIGO_H #pragma once #include "bus/rs232/rs232.h" #include "cpu/z80/z80.h" #include "imagedev/snapquik.h" #include "machine/bankdev.h" #include "machine/ins8250.h" #include "machine/intelfsh.h" #include "machine/nvram.h" #include "machine/ram.h" #include "machine/rp5c01.h" #include "machine/timer.h" #include "sound/spkrdev.h" #include "emupal.h" #define AVIGO_SCREEN_WIDTH 160 #define AVIGO_SCREEN_HEIGHT 240 #define AVIGO_PANEL_HEIGHT 26 class avigo_state : public driver_device { public: avigo_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") , m_ram(*this, RAM_TAG) , m_speaker(*this, "speaker") , m_uart(*this, "ns16550") , m_serport(*this, "serport") , m_palette(*this, "palette") , m_bankdev1(*this, "bank0") , m_bankdev2(*this, "bank1") , m_flash1(*this, "flash1") , m_nvram(*this, "nvram") { } void avigo(machine_config &config); DECLARE_INPUT_CHANGED_MEMBER(pen_irq); DECLARE_INPUT_CHANGED_MEMBER(pen_move_irq); DECLARE_INPUT_CHANGED_MEMBER(kb_irq); DECLARE_INPUT_CHANGED_MEMBER(power_down_irq); protected: // defined in drivers/avigo.c virtual void machine_start() override; virtual void machine_reset() override; void refresh_ints(); void nvram_init(nvram_device &nvram, void *base, size_t size); DECLARE_WRITE_LINE_MEMBER( tc8521_alarm_int ); DECLARE_WRITE_LINE_MEMBER( com_interrupt ); DECLARE_READ8_MEMBER(key_data_read_r); DECLARE_WRITE8_MEMBER(set_key_line_w); DECLARE_WRITE8_MEMBER(port2_w); DECLARE_READ8_MEMBER(irq_r); DECLARE_WRITE8_MEMBER(irq_w); DECLARE_READ8_MEMBER(bank1_r); DECLARE_READ8_MEMBER(bank2_r); DECLARE_WRITE8_MEMBER(bank1_w); DECLARE_WRITE8_MEMBER(bank2_w); DECLARE_READ8_MEMBER(ad_control_status_r); DECLARE_WRITE8_MEMBER(ad_control_status_w); DECLARE_READ8_MEMBER(ad_data_r); DECLARE_WRITE8_MEMBER(speaker_w); DECLARE_READ8_MEMBER(port_04_r); // defined in video/avigo.c virtual void video_start() override; uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_READ8_MEMBER(vid_memory_r); DECLARE_WRITE8_MEMBER(vid_memory_w); TIMER_DEVICE_CALLBACK_MEMBER(avigo_scan_timer); TIMER_DEVICE_CALLBACK_MEMBER(avigo_1hz_timer); DECLARE_QUICKLOAD_LOAD_MEMBER(quickload_cb); void avigo_banked_map(address_map &map); void avigo_io(address_map &map); void avigo_mem(address_map &map); required_device m_maincpu; required_device m_ram; required_device m_speaker; required_device m_uart; required_device m_serport; required_device m_palette; required_device m_bankdev1; required_device m_bankdev2; required_device m_flash1; required_shared_ptr m_nvram; // driver state uint8_t m_key_line; uint8_t m_irq; uint8_t m_port2; uint8_t m_bank2_l; uint8_t m_bank2_h; uint8_t m_bank1_l; uint8_t m_bank1_h; uint8_t m_ad_control_status; uint16_t m_ad_value; std::unique_ptr m_video_memory; uint8_t m_screen_column; uint8_t m_warm_start; }; #endif // MAME_INCLUDES_AVIGO_H