Previous 199869 Revisions Next

r20517 Saturday 26th January, 2013 at 21:40:40 UTC by Curt Coder
(MESS) ti89: Removed runtime tagmap lookups. (nw)
[src/mess/drivers]ti89.c
[src/mess/includes]ti89.h

trunk/src/mess/includes/ti89.h
r20516r20517
1515   ti68k_state(const machine_config &mconfig, device_type type, const char *tag)
1616      : driver_device(mconfig, type, tag),
1717         m_maincpu(*this, "maincpu"),
18         m_flash(*this, "flash")
18         m_flash(*this, "flash"),
19         m_io_bit0(*this, "BIT0"),
20         m_io_bit1(*this, "BIT1"),
21         m_io_bit2(*this, "BIT2"),
22         m_io_bit3(*this, "BIT3"),
23         m_io_bit4(*this, "BIT4"),
24         m_io_bit5(*this, "BIT5"),
25         m_io_bit6(*this, "BIT6"),
26         m_io_bit7(*this, "BIT7")
1927      { }
2028
2129   required_device<cpu_device> m_maincpu;
2230   required_device<sharp_unk128mbit_device> m_flash;
31   required_ioport m_io_bit0;
32   required_ioport m_io_bit1;
33   required_ioport m_io_bit2;
34   required_ioport m_io_bit3;
35   required_ioport m_io_bit4;
36   required_ioport m_io_bit5;
37   required_ioport m_io_bit6;
38   required_ioport m_io_bit7;
2339
2440   // hardware versions
25   enum { m_HW1=1, m_HW2, m_HW3, m_HW4 };
41   enum { HW1=1, HW2, HW3, HW4 };
2642
2743   // HW specifications
2844   UINT8 m_hw_version;
2945   bool m_flash_mem;
3046   UINT32 m_initial_pc;
3147
48   UINT16 *m_rom_base;
49
3250   // keyboard
3351   UINT16 m_kb_mask;
3452   UINT8 m_on_key;
trunk/src/mess/drivers/ti89.c
r20516r20517
2525
2626UINT8 ti68k_state::keypad_r (running_machine &machine)
2727{
28   UINT8 port, bit, data = 0xff;
29   static const char *const bitnames[] = {"BIT0", "BIT1", "BIT2", "BIT3", "BIT4", "BIT5", "BIT6", "BIT7"};
28   UINT8 bit, data = 0xff;
3029
3130   for (bit = 0; bit < 10; bit++)
31   {
3232      if (~m_kb_mask & (0x01 << bit))
33         for (port = 0; port < 8; port++)
34            data ^= machine.root_device().ioport(bitnames[port])->read() & (0x01 << bit) ? 0x01 << port : 0x00;
33      {
34         data ^= m_io_bit0->read() & (0x01 << bit) ? 0x01 : 0x00;
35         data ^= m_io_bit1->read() & (0x01 << bit) ? 0x02 : 0x00;
36         data ^= m_io_bit2->read() & (0x01 << bit) ? 0x04 : 0x00;
37         data ^= m_io_bit3->read() & (0x01 << bit) ? 0x08 : 0x00;
38         data ^= m_io_bit4->read() & (0x01 << bit) ? 0x10 : 0x00;
39         data ^= m_io_bit5->read() & (0x01 << bit) ? 0x20 : 0x00;
40         data ^= m_io_bit6->read() & (0x01 << bit) ? 0x40 : 0x00;
41         data ^= m_io_bit7->read() & (0x01 << bit) ? 0x80 : 0x00;
42      }     
43   }
44
3545   return data;
3646}
3747
r20516r20517
145155   }
146156   else
147157   {
148      UINT16 *rom_base = (UINT16 *)(*space.machine().root_device().memregion("flash"));
149
150      return rom_base[offset];
158      return m_rom_base[offset];
151159   }
152160}
153161
r20516r20517
166174            m_timer_val = (m_io_hw1[0x0b]) & 0xff;
167175      }
168176
169      if (!BIT(m_io_hw1[0x0a], 7) && ((m_hw_version == m_HW1) || (!BIT(m_io_hw1[0x0f], 2) && !BIT(m_io_hw1[0x0f], 1))))
177      if (!BIT(m_io_hw1[0x0a], 7) && ((m_hw_version == HW1) || (!BIT(m_io_hw1[0x0f], 2) && !BIT(m_io_hw1[0x0f], 1))))
170178      {
171179         if (!(m_timer & 0x003f))
172180            m_maincpu->set_input_line(M68K_IRQ_1, HOLD_LINE);
r20516r20517
416424
417425void ti68k_state::machine_start()
418426{
419   UINT16 *rom = (UINT16 *)(*machine().root_device().memregion("flash"));
427   m_rom_base = (UINT16 *)(*memregion("flash"));
420428   int i;
421429
422   m_flash_mem = !((rom[0x32] & 0x0f) != 0);
430   m_flash_mem = !((m_rom_base[0x32] & 0x0f) != 0);
423431
424432   if (m_flash_mem)
425433   {
426      UINT32 base = ((((rom[0x82]) << 16) | rom[0x83]) & 0xffff)>>1;
434      UINT32 base = ((((m_rom_base[0x82]) << 16) | m_rom_base[0x83]) & 0xffff)>>1;
427435
428      if (rom[base] >= 8)
429         m_hw_version = ((rom[base + 0x0b]) << 16) | rom[base + 0x0c];
436      if (m_rom_base[base] >= 8)
437         m_hw_version = ((m_rom_base[base + 0x0b]) << 16) | m_rom_base[base + 0x0c];
430438
431439      if (!m_hw_version)
432         m_hw_version = m_HW1;
440         m_hw_version = HW1;
433441
434442      for (i = 0x9000; i < 0x100000; i++)
435         if (rom[i] == 0xcccc && rom[i + 1] == 0xcccc)
443         if (m_rom_base[i] == 0xcccc && m_rom_base[i + 1] == 0xcccc)
436444            break;
437445
438      m_initial_pc = ((rom[i + 4]) << 16) | rom[i + 5];
446      m_initial_pc = ((m_rom_base[i + 4]) << 16) | m_rom_base[i + 5];
439447   }
440448   else
441449   {
442      m_hw_version = m_HW1;
443      m_initial_pc = ((rom[2]) << 16) | rom[3];
450      m_hw_version = HW1;
451      m_initial_pc = ((m_rom_base[2]) << 16) | m_rom_base[3];
444452
445453      m_maincpu->space(AS_PROGRAM).unmap_read(0x200000, 0x5fffff);
446454

Previous 199869 Revisions Next


© 1997-2024 The MAME Team