|
|
| version 1.8, 2004/01/29 09:41:50 | version 1.9, 2004/03/06 18:25:36 |
|---|---|
| Line 84 static void IOOUTCALL dmac_o01(UINT port | Line 84 static void IOOUTCALL dmac_o01(UINT port |
| dmach = dmac.dmach + ((port >> 2) & 3); | dmach = dmac.dmach + ((port >> 2) & 3); |
| lh = dmac.lh; | lh = dmac.lh; |
| dmac.lh = lh ^ 1; | dmac.lh = (UINT8)(lh ^ 1); |
| dmach->adrs.b[lh + DMA32_LOW] = dat; | dmach->adrs.b[lh + DMA32_LOW] = dat; |
| dmach->adrsorg.b[lh] = dat; | dmach->adrsorg.b[lh] = dat; |
| } | } |
| Line 154 static void IOOUTCALL dmac_o21(UINT port | Line 154 static void IOOUTCALL dmac_o21(UINT port |
| DMACH dmach; | DMACH dmach; |
| dmach = dmac.dmach + (((port >> 1) + 1) & 3); | dmach = dmac.dmach + (((port >> 1) + 1) & 3); |
| #if defined(CPUCORE_IA32) | |
| dmach->adrs.b[DMA32_HIGH + DMA16_LOW] = dat; | |
| #else | |
| // IA16では ver0.75で無効、ver0.76で修正 | |
| dmach->adrs.b[DMA32_HIGH + DMA16_LOW] = dat & 0x0f; | dmach->adrs.b[DMA32_HIGH + DMA16_LOW] = dat & 0x0f; |
| #endif | |
| } | |
| static void IOOUTCALL dmac_o29(UINT port, REG8 dat) { | |
| DMACH dmach; | |
| dmach = dmac.dmach + (dat & 3); | |
| dmach->bound = dat; | |
| (void)port; | |
| } | } |
| static REG8 IOINPCALL dmac_i01(UINT port) { | static REG8 IOINPCALL dmac_i01(UINT port) { |
| Line 200 static const IOINP dmaci00[16] = { | Line 214 static const IOINP dmaci00[16] = { |
| dmac_i11, NULL, NULL, NULL, | dmac_i11, NULL, NULL, NULL, |
| NULL, NULL, NULL, NULL}; | NULL, NULL, NULL, NULL}; |
| static const IOOUT dmaco21[4] = { | static const IOOUT dmaco21[8] = { |
| dmac_o21, dmac_o21, dmac_o21, dmac_o21}; | dmac_o21, dmac_o21, dmac_o21, dmac_o21, |
| dmac_o29, NULL, NULL, NULL}; | |
| void dmac_reset(void) { | void dmac_reset(void) { |
| Line 216 void dmac_bind(void) { | Line 231 void dmac_bind(void) { |
| iocore_attachsysoutex(0x0001, 0x0ce1, dmaco00, 16); | iocore_attachsysoutex(0x0001, 0x0ce1, dmaco00, 16); |
| iocore_attachsysinpex(0x0001, 0x0ce1, dmaci00, 16); | iocore_attachsysinpex(0x0001, 0x0ce1, dmaci00, 16); |
| iocore_attachsysoutex(0x0021, 0x0cf1, dmaco21, 4); | iocore_attachsysoutex(0x0021, 0x0cf1, dmaco21, 8); |
| } | } |
| Line 240 static void dmacset(REG8 channel) { | Line 255 static void dmacset(REG8 channel) { |
| if (dmadev >= sizeof(dmaproc) / sizeof(DMAPROC)) { | if (dmadev >= sizeof(dmaproc) / sizeof(DMAPROC)) { |
| dmadev = 0; | dmadev = 0; |
| } | } |
| TRACEOUT(("dmac set %d - %d", channel, dmadev)); | // TRACEOUT(("dmac set %d - %d", channel, dmadev)); |
| dmac.dmach[channel].proc = dmaproc[dmadev]; | dmac.dmach[channel].proc = dmaproc[dmadev]; |
| } | } |