Diff for /xmil/z80c/z80dmap.c between versions 1.8 and 1.9

version 1.8, 2004/08/11 16:09:04 version 1.9, 2004/08/14 12:16:18
Line 32  void z80dmap(void) { Line 32  void z80dmap(void) {
         }          }
   
         do {            // dma_lp          do {            // dma_lp
                   if (dma.increment) {
                           if (!(flag1 & 0x20)) {
                                   *off1 += (flag1 & 0x10)?1:-1;
                           }
                           if (!(flag2 & 0x20)) {
                                   *off2 += (flag2 & 0x10)?1:-1;
                           }
                   }
                   dma.increment = 1;
                 addr = *off1;                  addr = *off1;
                 if (flag1 & 8) {                  if (flag1 & 8) {
                         dat = iocore_inp(addr);                          dat = iocore_inp(addr);
                 }                  }
                 else {                  else {
                         dat = mem_read8(addr);                          dat = z80mem_read8(addr);
                 }                  }
                 if (dma.cmd & 1) {                  if (dma.cmd & 1) {
                         addr = *off2;                          addr = *off2;
Line 45  void z80dmap(void) { Line 54  void z80dmap(void) {
                                 iocore_out(addr, dat);                                  iocore_out(addr, dat);
                         }                          }
                         else {                          else {
                                 mem_write8(addr, dat);                                  TRACEOUT(("dma->%.4x", addr));
                                   z80mem_write8(addr, dat);
                         }                          }
                 }                  }
                 if (dma.cmd & 2) {                  if (dma.cmd & 2) {
Line 54  void z80dmap(void) { Line 64  void z80dmap(void) {
                                 dma.MACH_FLG = 1;                                  dma.MACH_FLG = 1;
                         }                          }
                 }                  }
                 if (dma.mode != 1) {  
                         dma.DMA_STOP = (dma.WR[5] ^ dma.ready) & 8;  
                         if (dma.DMA_STOP) {  
                                 dma.working = FALSE;                    // 既にセットされてる筈だが  
                                 goto dma_stop;  
                         }  
                 }  
                 if (!(flag1 & 0x20)) {  
                         *off1 += (flag1 & 0x10)?1:-1;  
                 }  
                 if (!(flag2 & 0x20)) {  
                         *off2 += (flag2 & 0x10)?1:-1;  
                 }  
   
 dma_stop:  
                 dma.BYT_N.w++;                  dma.BYT_N.w++;
                 if (dma.BYT_N.w == 0) {                  if (dma.BYT_N.w == 0) {
                         dma.working = FALSE;                          dma.working = FALSE;
Line 81  dma_stop: Line 77  dma_stop:
                         goto intr;                          goto intr;
                 }                  }
                 if (!dma.working) {                  if (!dma.working) {
                         goto intr;                          return;
                 }                  }
         } while(dma.mode);          } while(dma.mode);
         return;          return;

Removed from v.1.8  
changed lines
  Added in v.1.9


RetroPC.NET-CVS <cvs@retropc.net>