public override void UseZ80(Z80_SNAPSHOT z80) { lock (lockThis) { I = z80.I; _HL = z80.HL_; _DE = z80.DE_; _BC = z80.BC_; _AF = z80.AF_; HL = z80.HL; DE = z80.DE; BC = z80.BC; IY = z80.IY; IX = z80.IX; IFF1 = z80.IFF1; _R = z80.R; AF = z80.AF; SP = z80.SP; interruptMode = z80.IM; PC = z80.PC; borderColour = z80.BORDER; Issue2Keyboard = z80.ISSUE2; EnableAY(z80.AY_FOR_48K); //Copy AY regs if (z80.AY_FOR_48K) { for (int f = 0; f < 16; f++) { aySound.SetRegisters(z80.AY_REGS); } Out(0xfffd, z80.PORT_FFFD); //Setup the sound chip } for (int f = 0; f < 16; f++) { Array.Copy(z80.RAM_BANK[f], 0, RAMpage[f], 0, 8192); } PageReadPointer[2] = RAMpage[(int)RAM_BANK.FIVE_LOW]; PageReadPointer[3] = RAMpage[(int)RAM_BANK.FIVE_HIGH]; PageReadPointer[4] = RAMpage[(int)RAM_BANK.TWO_LOW]; PageReadPointer[5] = RAMpage[(int)RAM_BANK.TWO_HIGH]; PageReadPointer[6] = RAMpage[(int)RAM_BANK.ZERO_LOW]; PageReadPointer[7] = RAMpage[(int)RAM_BANK.ZERO_HIGH]; PageWritePointer[2] = RAMpage[(int)RAM_BANK.FIVE_LOW]; PageWritePointer[3] = RAMpage[(int)RAM_BANK.FIVE_HIGH]; PageWritePointer[4] = RAMpage[(int)RAM_BANK.TWO_LOW]; PageWritePointer[5] = RAMpage[(int)RAM_BANK.TWO_HIGH]; PageWritePointer[6] = RAMpage[(int)RAM_BANK.ZERO_LOW]; PageWritePointer[7] = RAMpage[(int)RAM_BANK.ZERO_HIGH]; totalTStates = z80.TSTATES; } }
public static Z80_SNAPSHOT LoadZ80(string filename) { Z80_SNAPSHOT snapshot; using (System.IO.FileStream fs = new System.IO.FileStream(filename, System.IO.FileMode.Open)) { snapshot = LoadZ80(fs); } return(snapshot); } //LoadZ80
public override void UseZ80(Z80_SNAPSHOT z80) { I = z80.I; _HL = z80.HL_; _DE = z80.DE_; _BC = z80.BC_; _AF = z80.AF_; HL = z80.HL; DE = z80.DE; BC = z80.BC; IY = z80.IY; IX = z80.IX; IFF1 = z80.IFF1; _R = z80.R; AF = z80.AF; SP = z80.SP; interruptMode = z80.IM; PC = z80.PC; Issue2Keyboard = z80.ISSUE2; for (int f = 0; f < 16; f++) { Array.Copy(z80.RAM_BANK[f], 0, RAMpage[f], 0, 8192); } PageReadPointer[2] = RAMpage[(int)RAM_BANK.FIVE_LOW]; PageReadPointer[3] = RAMpage[(int)RAM_BANK.FIVE_HIGH]; PageReadPointer[4] = RAMpage[(int)RAM_BANK.TWO_LOW]; PageReadPointer[5] = RAMpage[(int)RAM_BANK.TWO_HIGH]; PageReadPointer[6] = RAMpage[(int)RAM_BANK.ZERO_LOW]; PageReadPointer[7] = RAMpage[(int)RAM_BANK.ZERO_HIGH]; PageWritePointer[2] = RAMpage[(int)RAM_BANK.FIVE_LOW]; PageWritePointer[3] = RAMpage[(int)RAM_BANK.FIVE_HIGH]; PageWritePointer[4] = RAMpage[(int)RAM_BANK.TWO_LOW]; PageWritePointer[5] = RAMpage[(int)RAM_BANK.TWO_HIGH]; PageWritePointer[6] = RAMpage[(int)RAM_BANK.ZERO_LOW]; PageWritePointer[7] = RAMpage[(int)RAM_BANK.ZERO_HIGH]; contendedBankPagedIn = false; for (int f = 0; f < 16; f++) { aySound.SetRegisters(z80.AY_REGS); } Out(0xfffd, z80.PORT_FFFD); //Setup the sound chip Out(0x7ffd, z80.PORT_7FFD); //Perform a dummy Out to setup the remaining stuff! Out(0x1ffd, z80.PORT_1FFD); //Perform a dummy Out to setup the remaining stuff! borderColour = z80.BORDER; totalTStates = z80.TSTATES; }