1 // license:BSD-3-Clause 2 // copyright-holders:Miodrag Milanovic 3 /***************************************************************************** 4 * 5 * includes/mikro80.h 6 * 7 ****************************************************************************/ 8 9 #ifndef MAME_INCLUDES_MIKRO80_H 10 #define MAME_INCLUDES_MIKRO80_H 11 12 #pragma once 13 14 #include "machine/i8255.h" 15 #include "imagedev/cassette.h" 16 #include "sound/dac.h" 17 18 class mikro80_state : public driver_device 19 { 20 public: mikro80_state(const machine_config & mconfig,device_type type,const char * tag)21 mikro80_state(const machine_config &mconfig, device_type type, const char *tag) 22 : driver_device(mconfig, type, tag) 23 , m_aram(*this, "attrram") 24 , m_vram(*this, "videoram") 25 , m_ppi(*this, "ppi8255") 26 , m_cassette(*this, "cassette") 27 , m_rom(*this, "maincpu") 28 , m_ram(*this, "mainram") 29 , m_p_chargen(*this, "chargen") 30 , m_io_keyboard(*this, "LINE%u", 0U) 31 , m_dac(*this, "dac") 32 , m_maincpu(*this, "maincpu") 33 { } 34 35 void kristall(machine_config &config); 36 void radio99(machine_config &config); 37 void mikro80(machine_config &config); 38 39 void init_radio99(); 40 void init_mikro80(); 41 42 private: 43 u8 m_keyboard_mask; 44 u8 m_key_mask; 45 void sound_w(u8 data); 46 u8 portb_r(); 47 u8 portc_r(); 48 u8 kristall2_portc_r(); 49 void porta_w(u8 data); 50 void portc_w(u8 data); 51 void tape_w(u8 data); 52 u8 tape_r(); 53 virtual void machine_reset() override; 54 virtual void machine_start() override; 55 u32 screen_update_mikro80(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 56 57 void kristall_io(address_map &map); 58 void mikro80_io(address_map &map); 59 void mikro80_mem(address_map &map); 60 void radio99_io(address_map &map); 61 62 memory_passthrough_handler *m_rom_shadow_tap; 63 required_shared_ptr<uint8_t> m_aram; 64 required_shared_ptr<uint8_t> m_vram; 65 required_device<i8255_device> m_ppi; 66 required_device<cassette_image_device> m_cassette; 67 required_region_ptr<u8> m_rom; 68 required_shared_ptr<u8> m_ram; 69 required_region_ptr<u8> m_p_chargen; 70 required_ioport_array<9> m_io_keyboard; 71 optional_device<dac_bit_interface> m_dac; 72 required_device<cpu_device> m_maincpu; 73 }; 74 75 #endif // MAME_INCLUDES_MIKRO80_H 76