Diff for /xmil/z80x/z80dmap.c between versions 1.6 and 1.8

version 1.6, 2004/08/11 16:09:04 version 1.8, 2004/08/15 07:52:16
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);
Line 45  void z80dmap(void) { Line 54  void z80dmap(void) {
                                 iocore_out(addr, dat);                                  iocore_out(addr, dat);
                         }                          }
                         else {                          else {
   TRACEOUT(("dma!"));
                                 z80mem_write8(addr, dat);                                  z80mem_write8(addr, dat);
                         }                          }
                 }                  }
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.6  
changed lines
  Added in v.1.8


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