// license:GPL2+ // copyright-holders:Felipe Sanches #ifndef MAME_INCLUDES_PATINHOFEIO_H #define MAME_INCLUDES_PATINHOFEIO_H #pragma once #include "machine/teleprinter.h" class patinho_feio_state : public driver_device { public: patinho_feio_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") , m_decwriter(*this, "decwriter") , m_tty(*this, "teletype") { } void init_patinho_feio(); DECLARE_WRITE8_MEMBER(decwriter_data_w); void decwriter_kbd_input(u8 data); TIMER_CALLBACK_MEMBER(decwriter_callback); DECLARE_WRITE8_MEMBER(teletype_data_w); void teletype_kbd_input(u8 data); TIMER_CALLBACK_MEMBER(teletype_callback); DECLARE_DEVICE_IMAGE_LOAD_MEMBER( tape_load ); 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); void patinho_feio(machine_config &config); protected: virtual void machine_start() override; void load_tape(const char* name); void load_raw_data(const char* name, unsigned int start_address, unsigned int data_length); required_device m_maincpu; required_device m_decwriter; required_device m_tty; private: uint8_t* paper_tape_data; uint32_t paper_tape_length; uint32_t paper_tape_address; emu_timer *m_decwriter_timer; emu_timer *m_teletype_timer; output_manager *m_out; uint8_t m_prev_ACC; uint8_t m_prev_opcode; uint8_t m_prev_mem_data; uint16_t m_prev_mem_addr; uint16_t m_prev_PC; uint8_t m_prev_FLAGS; uint16_t m_prev_RC; }; #endif // MAME_INCLUDES_PATINHOFEIO_H