1 // license:BSD-3-Clause 2 // copyright-holders:Sandro Ronco 3 /***************************************************************************** 4 5 includes/micronic.h 6 7 *****************************************************************************/ 8 #ifndef MAME_INCLUDES_MICRONIC_H 9 #define MAME_INCLUDES_MICRONIC_H 10 11 #pragma once 12 13 #include "cpu/z80/z80.h" 14 #include "video/hd61830.h" 15 #include "machine/mc146818.h" 16 #include "machine/ram.h" 17 #include "machine/nvram.h" 18 #include "sound/beep.h" 19 #include "imagedev/cassette.h" 20 #include "emupal.h" 21 22 #define SCREEN_TAG "screen" 23 #define Z80_TAG "z80" 24 #define MC146818_TAG "mc146818" 25 #define HD61830_TAG "hd61830" 26 27 class micronic_state : public driver_device 28 { 29 public: micronic_state(const machine_config & mconfig,device_type type,const char * tag)30 micronic_state(const machine_config &mconfig, device_type type, const char *tag) : 31 driver_device(mconfig, type, tag), 32 m_maincpu(*this, Z80_TAG), 33 m_lcdc(*this, HD61830_TAG), 34 m_beep(*this, "beeper"), 35 m_rtc(*this, MC146818_TAG), 36 m_nvram1(*this, "nvram1"), 37 m_nvram2(*this, "nvram2"), 38 m_ram(*this, RAM_TAG), 39 m_ram_base(*this, "ram_base"), 40 m_status_flag(1), 41 m_bank1(*this, "bank1"), 42 m_bit0(*this, "BIT0"), 43 m_bit1(*this, "BIT1"), 44 m_bit2(*this, "BIT2"), 45 m_bit3(*this, "BIT3"), 46 m_bit4(*this, "BIT4"), 47 m_bit5(*this, "BIT5"), 48 m_backbattery(*this, "BACKBATTERY"), 49 m_mainbattery(*this, "MAINBATTERY"), 50 m_cassette(*this, "cassette") 51 { } 52 53 void micronic(machine_config &config); 54 55 protected: 56 virtual void machine_start() override; 57 virtual void machine_reset() override; 58 59 private: 60 void nvram_init(nvram_device &nvram, void *data, size_t size); 61 62 uint8_t keypad_r(); 63 uint8_t status_flag_r(); 64 void status_flag_w(uint8_t data); 65 void kp_matrix_w(uint8_t data); 66 void beep_w(uint8_t data); 67 uint8_t irq_flag_r(); 68 void port_2c_w(uint8_t data); 69 void bank_select_w(uint8_t data); 70 void lcd_contrast_w(uint8_t data); 71 void rtc_address_w(uint8_t data); 72 uint8_t rtc_data_r(); 73 void rtc_data_w(uint8_t data); 74 DECLARE_WRITE_LINE_MEMBER( mc146818_irq ); 75 76 void micronic_palette(palette_device &palette) const; 77 78 void micronic_io(address_map &map); 79 void micronic_mem(address_map &map); 80 81 required_device<cpu_device> m_maincpu; 82 required_device<hd61830_device> m_lcdc; 83 required_device<beep_device> m_beep; 84 required_device<mc146818_device> m_rtc; 85 required_device<nvram_device> m_nvram1; 86 required_device<nvram_device> m_nvram2; 87 required_device<ram_device> m_ram; 88 89 required_shared_ptr<uint8_t> m_ram_base; 90 uint8_t m_banks_num; 91 uint8_t m_kp_matrix; 92 uint8_t m_lcd_contrast; 93 int m_lcd_backlight; 94 uint8_t m_status_flag; 95 96 required_memory_bank m_bank1; 97 required_ioport m_bit0; 98 required_ioport m_bit1; 99 required_ioport m_bit2; 100 required_ioport m_bit3; 101 required_ioport m_bit4; 102 required_ioport m_bit5; 103 required_ioport m_backbattery; 104 required_ioport m_mainbattery; 105 optional_device<cassette_image_device> m_cassette; 106 }; 107 108 #endif // MAME_INCLUDES_MICRONIC_H 109