コード例 #1
0
        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;
            }
        }
コード例 #2
0
    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
コード例 #3
0
ファイル: zxPlus3.cs プロジェクト: Specchum/Zero-Emulator
        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;
        }