|
|
| version 1.3, 2004/08/08 14:00:56 | version 1.6, 2004/08/11 16:09:04 |
|---|---|
| Line 11 | Line 11 |
| #include "parts.h" | #include "parts.h" |
| #include "z80core.h" | #include "z80core.h" |
| #include "z80c.h" | #include "z80c.h" |
| #include "pccore.h" | |
| #include "iocore.h" | |
| #include "z80c.mcr" | #include "z80c.mcr" |
| Line 161 void CPUCALL z80c_interrupt(REG8 vect) { | Line 163 void CPUCALL z80c_interrupt(REG8 vect) { |
| } | } |
| } | } |
| void CPUCALL z80c_interrupt2(REG8 vect) { | |
| REG16 pc; | |
| if (Z80_IFF & (1 << IFF_HALT)) { | |
| Z80_IFF ^= (1 << IFF_HALT); | |
| R_Z80PC++; | |
| } | |
| Z80_IFF |= (1 << IFF_IFLAG); | |
| switch(R_Z80IM) { | |
| case 0: | |
| if ((vect != 0xdd) && (vect != 0xed) && (vect != 0xfd)) { | |
| Z80_COUNT(cycles_main[vect]); | |
| z80c_mainop[vect](); | |
| } | |
| break; | |
| case 1: | |
| Z80_COUNT(11); | |
| R_Z80SP -= 2; | |
| mem_write16(R_Z80SP, R_Z80PC); | |
| R_Z80PC = 0x38; | |
| break; | |
| case 2: | |
| pc = mem_read16((R_Z80I << 8) + vect); | |
| R_Z80SP -= 2; | |
| mem_write16(R_Z80SP, R_Z80PC); | |
| R_Z80PC = pc; | |
| break; | |
| } | |
| } | |
| void CPUCALL z80c_nonmaskedinterrupt(void) { | void CPUCALL z80c_nonmaskedinterrupt(void) { |
| if (!(Z80_IFF & (1 << IFF_NMI))) { | if (!(Z80_IFF & (1 << IFF_NMI))) { |
| Line 212 void CPUCALL z80c_execute(void) { | Line 181 void CPUCALL z80c_execute(void) { |
| UINT op; | UINT op; |
| R_Z80R++; | if (!dma.working) { |
| GET_PC_BYTE(op); | do { |
| Z80_COUNT(cycles_main[op]); | R_Z80R++; |
| z80c_mainop[op](); | GET_PC_BYTE(op); |
| Z80_COUNT(cycles_main[op]); | |
| z80c_mainop[op](); | |
| } while(CPU_REMCLOCK > 0); | |
| } | |
| else { | |
| do { | |
| R_Z80R++; | |
| GET_PC_BYTE(op); | |
| Z80_COUNT(cycles_main[op]); | |
| z80c_mainop[op](); | |
| z80dmap(); | |
| } while(CPU_REMCLOCK > 0); | |
| } | |
| } | |
| void CPUCALL z80c_step(void) { | |
| UINT op; | |
| R_Z80R++; | R_Z80R++; |
| GET_PC_BYTE(op); | GET_PC_BYTE(op); |
| Z80_COUNT(cycles_main[op]); | Z80_COUNT(cycles_main[op]); |
| z80c_mainop[op](); | z80c_mainop[op](); |
| z80dmap(); | |
| } | } |