Previous 199869 Revisions Next

r31716 Wednesday 20th August, 2014 at 17:59:30 UTC by Sandro Ronco
(MESS) dmv: fixed memory module bankswitch in DOS. (nw)
[src/mess/drivers]dmv.c

trunk/src/mess/drivers/dmv.c
r31715r31716
108108   DECLARE_WRITE8_MEMBER(rambank_w);
109109   DECLARE_READ8_MEMBER(program_r);
110110   DECLARE_WRITE8_MEMBER(program_w);
111   DECLARE_READ8_MEMBER(exp_program_r);
112   DECLARE_WRITE8_MEMBER(exp_program_w);
111113   DECLARE_FLOPPY_FORMATS( floppy_formats );
112114
115   UINT8 program_read(address_space &space, int cas, offs_t offset);
116   void program_write(address_space &space, int cas, offs_t offset, UINT8 data);
117
113118   void ifsel_r(address_space &space, int ifsel, offs_t offset, UINT8 &data);
114119   void ifsel_w(address_space &space, int ifsel, offs_t offset, UINT8 data);
115120   DECLARE_READ8_MEMBER(ifsel0_r)  { UINT8 data = 0xff;   ifsel_r(space, 0, offset, data);   return data; }
r31715r31716
323328      slots[i]->io_write(space, ifsel, offset, data);
324329}
325330
331WRITE8_MEMBER(dmv_state::exp_program_w)
332{
333   program_write(space, (offset >> 16) & 0x07, offset, data);
334}
335
336READ8_MEMBER(dmv_state::exp_program_r)
337{
338   return program_read(space, (offset >> 16) & 0x07, offset);
339}
340
326341WRITE8_MEMBER(dmv_state::program_w)
327342{
343   program_write(space, m_ram_bank, offset, data);
344}
345
346READ8_MEMBER(dmv_state::program_r)
347{
348   return program_read(space, m_ram_bank, offset);
349}
350
351void dmv_state::program_write(address_space &space, int cas, offs_t offset, UINT8 data)
352{
328353   bool tramd = false;
329354   dmvcart_slot_device *slots[] = { m_slot2, m_slot2a, m_slot3, m_slot4, m_slot5, m_slot6, m_slot7, m_slot7a };
330355   for(int i=0; i<8 && !tramd; i++)
r31715r31716
332357
333358   if (!tramd)
334359   {
335      int cas = (m_switch16 ? offset >> 16 : m_ram_bank) & 0x07;
336
337360      if (cas == 0)
338361         m_ram->base()[offset & 0xffff] = data;
339362      else
r31715r31716
341364   }
342365}
343366
344READ8_MEMBER(dmv_state::program_r)
367UINT8 dmv_state::program_read(address_space &space, int cas, offs_t offset)
345368{
346369   UINT8 data = 0xff;
347370   if (m_ramoutdis && offset < 0x2000)
r31715r31716
357380
358381      if (!tramd)
359382      {
360         int cas = (m_switch16 ? offset >> 16 : m_ram_bank) & 0x07;
361
362383         if (cas == 0)
363384            data = m_ram->base()[offset & 0xffff];
364385         else
r31715r31716
645666
646667   MCFG_DEVICE_ADD("slot7", DMVCART_SLOT, 0)
647668   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7, NULL, false)
648   MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(dmv_state, program_r), WRITE8(dmv_state, program_w))
669   MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(dmv_state, exp_program_r), WRITE8(dmv_state, exp_program_w))
649670   MCFG_DEVICE_ADD("slot7a", DMVCART_SLOT, 0)
650671   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7a, "k230", false)
651   MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(dmv_state, program_r), WRITE8(dmv_state, program_w))
672   MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(dmv_state, exp_program_r), WRITE8(dmv_state, exp_program_w))
652673
653674MACHINE_CONFIG_END
654675

Previous 199869 Revisions Next


© 1997-2024 The MAME Team