1 // license:BSD-3-Clause 2 // copyright-holders:Miodrag Milanovic 3 /***************************************************************************** 4 * 5 * includes/mz80.h 6 * 7 ****************************************************************************/ 8 #ifndef MAME_INCLUDES_MZ80_H 9 #define MAME_INCLUDES_MZ80_H 10 11 #pragma once 12 13 #include "cpu/z80/z80.h" 14 #include "machine/i8255.h" 15 #include "machine/pit8253.h" 16 #include "machine/timer.h" 17 #include "imagedev/cassette.h" 18 #include "sound/spkrdev.h" 19 20 class mz80_state : public driver_device 21 { 22 public: mz80_state(const machine_config & mconfig,device_type type,const char * tag)23 mz80_state(const machine_config &mconfig, device_type type, const char *tag) 24 : driver_device(mconfig, type, tag) 25 , m_maincpu(*this, "maincpu") 26 , m_pit(*this, "pit8253") 27 , m_ppi(*this, "ppi8255") 28 , m_cassette(*this, "cassette") 29 , m_speaker(*this, "speaker") 30 , m_p_ram(*this, "p_ram") 31 , m_p_videoram(*this, "videoram") 32 , m_p_chargen(*this, "chargen") 33 { } 34 35 void mz80kj(machine_config &config); 36 void mz80k(machine_config &config); 37 void mz80a(machine_config &config); 38 39 void init_mz80k(); 40 41 private: 42 uint8_t mz80k_strobe_r(); 43 void mz80k_strobe_w(uint8_t data); 44 uint8_t mz80k_8255_portb_r(); 45 uint8_t mz80k_8255_portc_r(); 46 void mz80k_8255_porta_w(uint8_t data); 47 void mz80k_8255_portc_w(uint8_t data); 48 DECLARE_WRITE_LINE_MEMBER(pit_out0_changed); 49 DECLARE_WRITE_LINE_MEMBER(pit_out2_changed); 50 uint32_t screen_update_mz80k(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 51 uint32_t screen_update_mz80kj(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 52 uint32_t screen_update_mz80a(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 53 TIMER_DEVICE_CALLBACK_MEMBER(ne555_tempo_callback); 54 55 void mz80k_io(address_map &map); 56 void mz80k_mem(address_map &map); 57 bool m_mz80k_vertical; 58 bool m_mz80k_tempo_strobe; 59 uint8_t m_speaker_level; 60 bool m_prev_state; 61 uint8_t m_mz80k_cursor_cnt; 62 uint8_t m_mz80k_keyboard_line; 63 virtual void machine_reset() override; 64 required_device<cpu_device> m_maincpu; 65 required_device<pit8253_device> m_pit; 66 required_device<i8255_device> m_ppi; 67 required_device<cassette_image_device> m_cassette; 68 required_device<speaker_sound_device> m_speaker; 69 required_shared_ptr<uint8_t> m_p_ram; 70 required_shared_ptr<uint8_t> m_p_videoram; 71 required_region_ptr<u8> m_p_chargen; 72 }; 73 74 75 /*----------- defined in video/mz80.c -----------*/ 76 77 extern const gfx_layout mz80k_charlayout; 78 extern const gfx_layout mz80kj_charlayout; 79 80 #endif // MAME_INCLUDES_MZ80_H 81