Previous 15994 Revisions Next

r12643 Tuesday 16th August, 2011 at 18:16:59 UTC by Angelo Salese
Moved around Z80DMA counter incrementing, improves gfxs in Turbo Alpha furthermore
[src/emu/machine]z80dma.c

src/emu/machine/z80dma.c
r12642r12643
6666//  MACROS
6767//**************************************************************************
6868
69#define LOG 1
69#define LOG
7070#define DMA_LOG 0
7171
7272#define REGNUM(_m, _s)         (((_m)<<3) + (_s))
r12642r12643
399399               m_latch = m_in_iorq_func(m_addressA);
400400
401401            if (DMA_LOG) logerror("Z80DMA '%s' A src: %04x %s -> data: %02x\n", tag(), m_addressA, PORTA_MEMORY ? "mem" : "i/o", m_latch);
402            m_addressA += PORTA_FIXED ? 0 : PORTA_INC ? 1 : -1;
403402         }
404403         else
405404         {
r12642r12643
409408               m_latch = m_in_iorq_func(m_addressB);
410409
411410            if (DMA_LOG) logerror("Z80DMA '%s' B src: %04x %s -> data: %02x\n", tag(), m_addressB, PORTB_MEMORY ? "mem" : "i/o", m_latch);
412            m_addressB += PORTB_FIXED ? 0 : PORTB_INC ? 1 : -1;
413411         }
414412         break;
415413      case TM_SEARCH_TRANSFER:
r12642r12643
446444               m_out_iorq_func(m_addressB, m_latch);
447445
448446            if (DMA_LOG) logerror("Z80DMA '%s' B dst: %04x %s\n", tag(), m_addressB, PORTB_MEMORY ? "mem" : "i/o");
449            m_addressB += PORTB_FIXED ? 0 : PORTB_INC ? 1 : -1;
450447         }
451448         else
452449         {
r12642r12643
456453               m_out_iorq_func(m_addressA, m_latch);
457454
458455            if (DMA_LOG) logerror("Z80DMA '%s' A dst: %04x %s\n", tag(), m_addressA, PORTA_MEMORY ? "mem" : "i/o");
459            m_addressA += PORTA_FIXED ? 0 : PORTA_INC ? 1 : -1;
460456         }
461         m_count--;
462         done = (m_count == 0xFFFF);
457
463458         break;
464459
465460      case TM_SEARCH:
r12642r12643
476471               }
477472            }
478473
479            m_count--;
480            done = (m_count == 0xFFFF); //correct?
481474         }
482475         break;
483476
r12642r12643
489482         logerror("z80dma_do_operation: invalid mode %d!\n", mode);
490483         break;
491484   }
485
486   m_addressA += PORTA_FIXED ? 0 : PORTA_INC ? 1 : -1;
487   m_addressB += PORTB_FIXED ? 0 : PORTB_INC ? 1 : -1;
488
489   m_count--;
490   done = (m_count == 0xFFFF); //correct?
491
492492   if (done)
493493   {
494494      //FIXME: interrupt ?
r12642r12643
514514
515515   if (m_is_read)
516516   {
517      /* TODO: there's a nasty recursion bug with Alpha for Sharp X1 Turbo on the transfers with this function! */
517518      do_read();
518519      done = 0;
519520      m_is_read = false;

Previous 15994 Revisions Next


© 1998-2018 The MESS Team