diff options
Diffstat (limited to 'src/mame/includes/ut88.h')
-rw-r--r-- | src/mame/includes/ut88.h | 139 |
1 files changed, 86 insertions, 53 deletions
diff --git a/src/mame/includes/ut88.h b/src/mame/includes/ut88.h index eb29fc92666..3a19639d0cb 100644 --- a/src/mame/includes/ut88.h +++ b/src/mame/includes/ut88.h @@ -16,90 +16,123 @@ #include "imagedev/cassette.h" #include "emupal.h" - -class ut88_state : public driver_device +class ut88_base_state : public driver_device { public: - ut88_state(const machine_config &mconfig, device_type type, const char *tag) + ut88_base_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_cassette(*this, "cassette") - , m_ppi(*this, "ppi8255") - , m_dac(*this, "dac") - , m_p_videoram(*this, "videoram") , m_region_maincpu(*this, "maincpu") - , m_region_proms(*this, "proms") - , m_bank1(*this, "bank1") , m_io_line0(*this, "LINE0") , m_io_line1(*this, "LINE1") , m_io_line2(*this, "LINE2") + , m_maincpu(*this, "maincpu") + { + } + +protected: + DECLARE_READ8_MEMBER(tape_r); + + required_device<cassette_image_device> m_cassette; + required_memory_region m_region_maincpu; + required_ioport m_io_line0; + required_ioport m_io_line1; + required_ioport m_io_line2; + required_device<cpu_device> m_maincpu; +}; + +class ut88_state : public ut88_base_state +{ +public: + ut88_state(const machine_config &mconfig, device_type type, const char *tag) + : ut88_base_state(mconfig, type, tag) + , m_ppi(*this, "ppi8255") + , m_dac(*this, "dac") + , m_p_videoram(*this, "videoram") + , m_bank1(*this, "bank1") , m_io_line3(*this, "LINE3") , m_io_line4(*this, "LINE4") , m_io_line5(*this, "LINE5") , m_io_line6(*this, "LINE6") , m_io_line7(*this, "LINE7") , m_io_line8(*this, "LINE8") - , m_maincpu(*this, "maincpu") , m_gfxdecode(*this, "gfxdecode") , m_palette(*this, "palette") - , m_digits(*this, "digit%u", 0U) { } void ut88(machine_config &config); - void ut88mini(machine_config &config); - - void init_ut88(); - void init_ut88mini(); private: + virtual void driver_init() override; + virtual void machine_reset() override; + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + enum { TIMER_RESET, TIMER_UPDATE_DISPLAY }; - DECLARE_READ8_MEMBER(ut88_keyboard_r); - DECLARE_WRITE8_MEMBER(ut88_keyboard_w); - DECLARE_WRITE8_MEMBER(ut88_sound_w); - DECLARE_READ8_MEMBER(ut88_tape_r); - DECLARE_READ8_MEMBER(ut88mini_keyboard_r); - DECLARE_WRITE8_MEMBER(ut88mini_write_led); - DECLARE_READ8_MEMBER(ut88_8255_portb_r); - DECLARE_READ8_MEMBER(ut88_8255_portc_r); - DECLARE_WRITE8_MEMBER(ut88_8255_porta_w); - DECLARE_MACHINE_RESET(ut88); - DECLARE_VIDEO_START(ut88); - DECLARE_MACHINE_START(ut88mini); - DECLARE_MACHINE_RESET(ut88mini); - uint32_t screen_update_ut88(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - - void ut88_io(address_map &map); - void ut88_mem(address_map &map); - void ut88mini_io(address_map &map); - void ut88mini_mem(address_map &map); + DECLARE_READ8_MEMBER(keyboard_r); + DECLARE_WRITE8_MEMBER(keyboard_w); + DECLARE_WRITE8_MEMBER(sound_w); + DECLARE_READ8_MEMBER(ppi_portb_r); + DECLARE_READ8_MEMBER(ppi_portc_r); + DECLARE_WRITE8_MEMBER(ppi_porta_w); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + void io_map(address_map &map); + void mem_map(address_map &map); - required_device<cassette_image_device> m_cassette; - optional_device<i8255_device> m_ppi; - optional_device<dac_bit_interface> m_dac; - optional_shared_ptr<uint8_t> m_p_videoram; int m_keyboard_mask; + + required_device<i8255_device> m_ppi; + required_device<dac_bit_interface> m_dac; + required_shared_ptr<uint8_t> m_p_videoram; + required_memory_bank m_bank1; + required_ioport m_io_line3; + required_ioport m_io_line4; + required_ioport m_io_line5; + required_ioport m_io_line6; + required_ioport m_io_line7; + required_ioport m_io_line8; + required_device<gfxdecode_device> m_gfxdecode; + required_device<palette_device> m_palette; +}; + +class ut88mini_state : public ut88_base_state +{ +public: + ut88mini_state(const machine_config &mconfig, device_type type, const char *tag) + : ut88_base_state(mconfig, type, tag) + , m_region_proms(*this, "proms") + , m_digits(*this, "digit%u", 0U) + { } + + void ut88mini(machine_config &config); + +private: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + + void io_map(address_map &map); + void mem_map(address_map &map); + + enum + { + TIMER_RESET, + TIMER_UPDATE_DISPLAY + }; + + DECLARE_READ8_MEMBER(keyboard_r); + DECLARE_WRITE8_MEMBER(led_w); + + required_memory_region m_region_proms; + int m_lcd_digit[6]; - required_memory_region m_region_maincpu; - optional_memory_region m_region_proms; - optional_memory_bank m_bank1; - required_ioport m_io_line0; - required_ioport m_io_line1; - required_ioport m_io_line2; - optional_ioport m_io_line3; - optional_ioport m_io_line4; - optional_ioport m_io_line5; - optional_ioport m_io_line6; - optional_ioport m_io_line7; - optional_ioport m_io_line8; - required_device<cpu_device> m_maincpu; - optional_device<gfxdecode_device> m_gfxdecode; - optional_device<palette_device> m_palette; output_finder<6> m_digits; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; }; /*----------- defined in video/ut88.c -----------*/ |