1 // license:BSD-3-Clause 2 // copyright-holders:Sandro Ronco 3 /***************************************************************************** 4 * 5 * includes/ti89.h 6 * 7 ****************************************************************************/ 8 #ifndef MAME_INCLUDES_TI89_H 9 #define MAME_INCLUDES_TI89_H 10 11 #pragma once 12 13 #include "machine/intelfsh.h" 14 #include "machine/timer.h" 15 #include "emupal.h" 16 17 class ti68k_state : public driver_device 18 { 19 public: ti68k_state(const machine_config & mconfig,device_type type,const char * tag)20 ti68k_state(const machine_config &mconfig, device_type type, const char *tag) 21 : driver_device(mconfig, type, tag) 22 , m_maincpu(*this, "maincpu") 23 , m_flash(*this, "flash") 24 , m_rom_base(*this, "flash") 25 , m_ram_base(*this, "nvram") 26 , m_io_bit0(*this, "BIT0") 27 , m_io_bit1(*this, "BIT1") 28 , m_io_bit2(*this, "BIT2") 29 , m_io_bit3(*this, "BIT3") 30 , m_io_bit4(*this, "BIT4") 31 , m_io_bit5(*this, "BIT5") 32 , m_io_bit6(*this, "BIT6") 33 , m_io_bit7(*this, "BIT7") 34 { } 35 36 void v200(machine_config &config); 37 void ti92(machine_config &config); 38 void ti89(machine_config &config); 39 void ti92p(machine_config &config); 40 void ti89t(machine_config &config); 41 42 DECLARE_INPUT_CHANGED_MEMBER(ti68k_on_key); 43 44 protected: 45 virtual void machine_start() override; 46 virtual void machine_reset() override; 47 48 private: 49 // hardware versions 50 enum { HW1=1, HW2, HW3, HW4 }; 51 52 required_device<cpu_device> m_maincpu; 53 optional_device<intelfsh16_device> m_flash; 54 required_region_ptr<uint16_t> m_rom_base; 55 required_shared_ptr<uint16_t> m_ram_base; 56 required_ioport m_io_bit0; 57 required_ioport m_io_bit1; 58 required_ioport m_io_bit2; 59 required_ioport m_io_bit3; 60 required_ioport m_io_bit4; 61 required_ioport m_io_bit5; 62 required_ioport m_io_bit6; 63 required_ioport m_io_bit7; 64 65 // HW specifications 66 uint8_t m_hw_version; 67 bool m_ram_enabled; 68 69 // keyboard 70 uint16_t m_kb_mask; 71 uint8_t m_on_key; 72 73 // LCD 74 uint8_t m_lcd_on; 75 uint32_t m_lcd_base; 76 uint16_t m_lcd_width; 77 uint16_t m_lcd_height; 78 uint16_t m_lcd_contrast; 79 80 // I/O 81 uint16_t m_io_hw1[0x10]; 82 uint16_t m_io_hw2[0x80]; 83 84 // Timer 85 uint8_t m_timer_on; 86 uint8_t m_timer_val; 87 uint16_t m_timer_mask; 88 uint64_t m_timer; 89 90 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 91 92 uint8_t keypad_r(); 93 void ti68k_io_w(offs_t offset, uint16_t data); 94 uint16_t ti68k_io_r(offs_t offset); 95 void ti68k_io2_w(offs_t offset, uint16_t data); 96 uint16_t ti68k_io2_r(offs_t offset); 97 uint16_t rom_r(offs_t offset); 98 uint16_t reset_overlay_r(offs_t offset); 99 void ti68k_palette(palette_device &palette) const; 100 101 TIMER_DEVICE_CALLBACK_MEMBER(ti68k_timer_callback); 102 103 void ti89_mem(address_map &map); 104 void ti89t_mem(address_map &map); 105 void ti92_mem(address_map &map); 106 void ti92p_mem(address_map &map); 107 void v200_mem(address_map &map); 108 }; 109 110 #endif // MAME_INCLUDES_TI89_H 111