|
|
| version 1.8, 2004/08/13 01:35:59 | version 1.10, 2004/08/13 03:47:23 |
|---|---|
| Line 173 BRESULT ieitem_ctc(UINT id) { | Line 173 BRESULT ieitem_ctc(UINT id) { |
| if (intr) { | if (intr) { |
| for (i=0, bit=1; i<4; i++, bit<<=1) { | for (i=0, bit=1; i<4; i++, bit<<=1) { |
| if (intr & bit) { | if (intr & bit) { |
| if (!(ch->cmd[i] & 0x80)) { | |
| intr ^= bit; | |
| } | |
| #if 0 // アークスのタイミング→あとで修正 | #if 0 // アークスのタイミング→あとで修正 |
| if (0) | else if (0) |
| #elif 1 | #elif 1 |
| if ((ch->countmax[i] - ch->count[i]) >= 256) | else if (((ch->cmd[i] & 0x10) == 0) && |
| ((ch->countmax[i] - ch->count[i]) >= 256)) | |
| #elif 0 | #elif 0 |
| if (((ch->count[i] * 17) >> 4) < ch->countmax[i]) | else if (((ch->count[i] * 17) >> 4) < ch->countmax[i]) |
| #else | #else |
| if (ch->count[i] != ch->countmax[i]) | else if (ch->count[i] != ch->countmax[i]) |
| #endif | #endif |
| { | { |
| intr ^= bit; | intr ^= bit; |
| } | } |
| else if (!(ch->cmd[i] & 0x80)) { | |
| intr ^= bit; | |
| } | |
| else if (!r) { | else if (!r) { |
| r = TRUE; | r = TRUE; |
| intr ^= bit; | intr ^= bit; |
| // TRACEOUT(("ctc int %d", i)); | // TRACEOUT(("ctc int %d %d", ch->num, i)); |
| Z80_INTERRUPT((REG8)(ch->vector + (i << 1))); | Z80_INTERRUPT((REG8)(ch->vector + (i << 1))); |
| } | } |
| } | } |
| Line 283 void IOOUTCALL ctc_o(UINT port, REG8 val | Line 284 void IOOUTCALL ctc_o(UINT port, REG8 val |
| CTCCH *ch; | CTCCH *ch; |
| // TRACEOUT(("ctc - %.4x %.2x [%.4x]", port, value, Z80_PC)); | TRACEOUT(("ctc - %.4x %.2x [%.4x]", port, value, Z80_PC)); |
| ch = getctcch(port); | ch = getctcch(port); |
| if (ch != NULL) { | if (ch != NULL) { |
| ctcch_o(ch, port, value); | ctcch_o(ch, port, value); |