| version 1.8, 2004/08/11 16:09:04 | version 1.10, 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); | 
 | } | } | 
 | 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); | z80mem_write8(addr, dat); | 
 | } | } | 
 | } | } | 
 | if (dma.cmd & 2) { | if (dma.cmd & 2) { | 
| Line 54  void z80dmap(void) { | Line 63  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 76  dma_stop: | 
 | goto intr; | goto intr; | 
 | } | } | 
 | if (!dma.working) { | if (!dma.working) { | 
| goto intr; | return; | 
 | } | } | 
 | } while(dma.mode); | } while(dma.mode); | 
 | return; | return; |