| version 1.1.1.1, 2003/10/16 17:57:49 | version 1.2, 2003/10/26 07:50:36 | 
| Line 44  void dmap_i286(void) { | Line 44  void dmap_i286(void) { | 
 | } | } | 
 | } | } | 
 |  |  | 
 |  | void dmap_v30(void) { | 
 |  |  | 
 |  | DMACH   ch; | 
 |  | int             bit; | 
 |  |  | 
 |  | if (dmac.working) { | 
 |  | ch = dmac.dmach; | 
 |  | bit = 1; | 
 |  | do { | 
 |  | if (dmac.working & bit) { | 
 |  | // DMA working ! | 
 |  | if (!ch->leng.w) { | 
 |  | dmac.stat |= bit; | 
 |  | dmac.working &= ~bit; | 
 |  | ch->extproc(DMAEXT_END); | 
 |  | } | 
 |  | ch->leng.w--; | 
 |  |  | 
 |  | switch(ch->mode & 0x0c) { | 
 |  | case 0x00:              // verifty | 
 |  | ch->inproc(); | 
 |  | break; | 
 |  |  | 
 |  | case 0x04:              // port->mem | 
 |  | i286_memorywrite(ch->adrs.d, ch->inproc()); | 
 |  | break; | 
 |  |  | 
 |  | default: | 
 |  | ch->outproc(i286_memoryread(ch->adrs.d)); | 
 |  | break; | 
 |  | } | 
 |  | ch->adrs.w[DMA16_LOW] += (((ch->mode) & 0x20)?-1:1); | 
 |  | } | 
 |  | ch++; | 
 |  | bit <<= 1; | 
 |  | } while(bit & 0x0f); | 
 |  | } | 
 |  | } | 
 |  |  |