1 // license:BSD-3-Clause 2 // copyright-holders:Miodrag Milanovic 3 /***************************************************************************** 4 * 5 * includes/pp01.h 6 * 7 ****************************************************************************/ 8 9 #ifndef MAME_INCLUDES_PP01_H 10 #define MAME_INCLUDES_PP01_H 11 12 #pragma once 13 14 #include "cpu/i8085/i8085.h" 15 #include "machine/ram.h" 16 #include "machine/i8251.h" 17 #include "machine/pit8253.h" 18 #include "machine/i8255.h" 19 #include "sound/spkrdev.h" 20 #include "imagedev/cassette.h" 21 #include "machine/timer.h" 22 #include "emupal.h" 23 24 class pp01_state : public driver_device 25 { 26 public: pp01_state(const machine_config & mconfig,device_type type,const char * tag)27 pp01_state(const machine_config &mconfig, device_type type, const char *tag) 28 : driver_device(mconfig, type, tag) 29 , m_maincpu(*this, "maincpu") 30 , m_pit(*this, "pit") 31 , m_ppi1(*this, "ppi1") 32 , m_ppi2(*this, "ppi2") 33 , m_speaker(*this, "speaker") 34 , m_ram(*this, RAM_TAG) 35 , m_uart(*this, "uart") 36 , m_cass(*this, "cassette") 37 , m_bank(*this, "bank%d", 0U) 38 , m_io_keyboard(*this, "LINE%d", 0U) 39 { } 40 41 void pp01(machine_config &config); 42 43 protected: 44 virtual void machine_start() override; 45 virtual void machine_reset() override; 46 47 private: 48 uint8_t m_video_scroll; 49 uint8_t m_memory_block[16]; 50 uint8_t m_video_write_mode; 51 uint8_t m_key_line; 52 bool m_txe, m_txd, m_rts, m_casspol; 53 u8 m_cass_data[4]; 54 55 void video_write_mode_w(uint8_t data); 56 void video_r_1_w(offs_t offset, uint8_t data); 57 void video_g_1_w(offs_t offset, uint8_t data); 58 void video_b_1_w(offs_t offset, uint8_t data); 59 void video_r_2_w(offs_t offset, uint8_t data); 60 void video_g_2_w(offs_t offset, uint8_t data); 61 void video_b_2_w(offs_t offset, uint8_t data); 62 void mem_block_w(offs_t offset, uint8_t data); 63 uint8_t mem_block_r(offs_t offset); 64 TIMER_DEVICE_CALLBACK_MEMBER(kansas_r); 65 void pp01_palette(palette_device &palette) const; 66 uint32_t screen_update_pp01(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 67 DECLARE_WRITE_LINE_MEMBER(z2_w); 68 uint8_t ppi1_porta_r(); 69 void ppi1_porta_w(uint8_t data); 70 uint8_t ppi1_portb_r(); 71 void ppi1_portb_w(uint8_t data); 72 void ppi1_portc_w(uint8_t data); 73 uint8_t ppi1_portc_r(); 74 void video_w(uint8_t block,uint16_t offset,uint8_t data,uint8_t part); 75 void set_memory(uint8_t block, uint8_t data); 76 void io_map(address_map &map); 77 void mem_map(address_map &map); 78 79 required_device<cpu_device> m_maincpu; 80 required_device<pit8253_device> m_pit; 81 required_device<i8255_device> m_ppi1; 82 required_device<i8255_device> m_ppi2; 83 required_device<speaker_sound_device> m_speaker; 84 required_device<ram_device> m_ram; 85 required_device<i8251_device> m_uart; 86 required_device<cassette_image_device> m_cass; 87 required_memory_bank_array<16> m_bank; 88 required_ioport_array<17> m_io_keyboard; 89 }; 90 91 #endif // MAME_INCLUDES_PP01_H 92