1 // license:GPL2+ 2 // copyright-holders:Felipe Sanches 3 #ifndef MAME_INCLUDES_PATINHOFEIO_H 4 #define MAME_INCLUDES_PATINHOFEIO_H 5 6 #pragma once 7 8 #include "machine/teleprinter.h" 9 10 class patinho_feio_state : public driver_device { 11 public: patinho_feio_state(const machine_config & mconfig,device_type type,const char * tag)12 patinho_feio_state(const machine_config &mconfig, device_type type, const char *tag) 13 : driver_device(mconfig, type, tag) 14 , m_maincpu(*this, "maincpu") 15 , m_decwriter(*this, "decwriter") 16 , m_tty(*this, "teletype") 17 { } 18 19 void init_patinho_feio(); 20 21 void decwriter_data_w(uint8_t data); 22 void decwriter_kbd_input(u8 data); 23 TIMER_CALLBACK_MEMBER(decwriter_callback); 24 25 void teletype_data_w(uint8_t data); 26 void teletype_kbd_input(u8 data); 27 TIMER_CALLBACK_MEMBER(teletype_callback); 28 29 DECLARE_DEVICE_IMAGE_LOAD_MEMBER( tape_load ); 30 31 void update_panel(uint8_t ACC, uint8_t opcode, uint8_t mem_data, uint16_t mem_addr, uint16_t PC, uint8_t FLAGS, uint16_t RC, uint8_t mode); 32 33 void patinho_feio(machine_config &config); 34 protected: 35 virtual void machine_start() override; 36 37 void load_tape(const char* name); 38 void load_raw_data(const char* name, unsigned int start_address, unsigned int data_length); 39 40 required_device<patinho_feio_cpu_device> m_maincpu; 41 required_device<teleprinter_device> m_decwriter; 42 required_device<teleprinter_device> m_tty; 43 44 private: 45 uint8_t* paper_tape_data; 46 uint32_t paper_tape_length; 47 uint32_t paper_tape_address; 48 49 emu_timer *m_decwriter_timer; 50 emu_timer *m_teletype_timer; 51 output_manager *m_out; 52 uint8_t m_prev_ACC; 53 uint8_t m_prev_opcode; 54 uint8_t m_prev_mem_data; 55 uint16_t m_prev_mem_addr; 56 uint16_t m_prev_PC; 57 uint8_t m_prev_FLAGS; 58 uint16_t m_prev_RC; 59 }; 60 61 #endif // MAME_INCLUDES_PATINHOFEIO_H 62