|
|
| version 1.12, 2004/01/29 00:27:29 | version 1.15, 2004/03/05 04:39:59 |
|---|---|
| Line 15 static const _PICITEM def_slave = { | Line 15 static const _PICITEM def_slave = { |
| 0, {0, 0, 0, 0, 0, 0, 0, 0}, | 0, {0, 0, 0, 0, 0, 0, 0, 0}, |
| {7, 6, 5, 4, 3, 2, 1, 0}, | {7, 6, 5, 4, 3, 2, 1, 0}, |
| {0, 0x10, 0x07, 0}, | {0, 0x10, 0x07, 0}, |
| 0x70, 0, 0, 0, | 0x71, 0, 0, 0, |
| 0, 0, 0, 0}; | 0, 0, 0, 0}; |
| Line 275 static void IOOUTCALL pic_o00(UINT port, | Line 275 static void IOOUTCALL pic_o00(UINT port, |
| } | } |
| } | } |
| #if defined(TRACE) | |
| extern int piccnt; | |
| #endif | |
| static void IOOUTCALL pic_o02(UINT port, REG8 dat) { | static void IOOUTCALL pic_o02(UINT port, REG8 dat) { |
| PICITEM picp; | PICITEM picp; |
| Line 286 static void IOOUTCALL pic_o02(UINT port, | Line 282 static void IOOUTCALL pic_o02(UINT port, |
| // TRACEOUT(("pic %x %x", port, dat)); | // TRACEOUT(("pic %x %x", port, dat)); |
| picp = &pic.pi[(port >> 3) & 1]; | picp = &pic.pi[(port >> 3) & 1]; |
| if (!picp->writeicw) { | if (!picp->writeicw) { |
| #if 1 // マスクのセットだけなら nevent_forceexit()をコールしない | #if 1 |
| if ((CPU_isDI) || ((picp->imr & dat) == picp->imr)) { | UINT8 set; |
| picp->imr = dat; | set = picp->imr & (~dat); |
| return; | |
| } | |
| // リセットされたビットは割り込みある? | // リセットされたビットは割り込みある? |
| if (!(picp->irr & (picp->imr & (~dat)))) { | if ((CPU_isDI) || (!(picp->irr & set))) { |
| picp->imr = dat; | picp->imr = dat; |
| return; | return; |
| } | } |
| #endif | #endif |
| picp->imr = dat; | picp->imr = dat; |
| #if defined(TRACE) | |
| piccnt++; | |
| #endif | |
| } | } |
| else { | else { |
| picp->icw[picp->writeicw] = dat; | picp->icw[picp->writeicw] = dat; |