Previous 199869 Revisions Next

r23539 Saturday 8th June, 2013 at 12:32:49 UTC by Michael Zapf
ti99: Changed behaviour of memory cells (invert even addresses), may
help with some programs that assume power-on default values. (nw)
[src/mess/machine/ti99]ti32kmem.c

trunk/src/mess/machine/ti99/ti32kmem.c
r23538r23539
3636
3737READ8Z_MEMBER(ti_32k_expcard_device::readz)
3838{
39   UINT8 val = 0;
40   bool access = true;
3941   switch((offset & 0xe000)>>13)
4042   {
4143   case 1:
42      *value = m_ram_ptr[offset & 0x1fff];
44      val = m_ram_ptr[offset & 0x1fff];
4345      break;
4446   case 5:
45      *value = m_ram_ptr[(offset & 0x1fff) | 0x2000];
47      val = m_ram_ptr[(offset & 0x1fff) | 0x2000];
4648      break;
4749   case 6:
48      *value = m_ram_ptr[(offset & 0x1fff) | 0x4000];
50      val = m_ram_ptr[(offset & 0x1fff) | 0x4000];
4951      break;
5052   case 7:
51      *value = m_ram_ptr[(offset & 0x1fff) | 0x6000];
53      val = m_ram_ptr[(offset & 0x1fff) | 0x6000];
5254      break;
5355   default:
56      access = false;
5457      break;
5558   }
59   if (access)
60   {
61      if ((offset&1)!=1) *value = ~val;
62      else *value = val;
63   }
5664}
5765
5866WRITE8_MEMBER(ti_32k_expcard_device::write)
5967{
68   UINT8 data1 = data;
69   if ((offset&1)!=1) data1 = ~data;
6070   switch((offset & 0xe000)>>13)
6171   {
6272   case 1:
63      m_ram_ptr[offset & 0x1fff] = data;
73      m_ram_ptr[offset & 0x1fff] = data1;
6474      break;
6575   case 5:
66      m_ram_ptr[(offset & 0x1fff) | 0x2000] = data;
76      m_ram_ptr[(offset & 0x1fff) | 0x2000] = data1;
6777      break;
6878   case 6:
69      m_ram_ptr[(offset & 0x1fff) | 0x4000] = data;
79      m_ram_ptr[(offset & 0x1fff) | 0x4000] = data1;
7080      break;
7181   case 7:
72      m_ram_ptr[(offset & 0x1fff) | 0x6000] = data;
82      m_ram_ptr[(offset & 0x1fff) | 0x6000] = data1;
7383      break;
7484   default:
7585      break;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team