Esempio n. 1
0
        public void Load(string state)
        {
            try
            {
                using (var reader = new BinaryStateReader(state))
                {
                    // Header
                    var magicNumber = reader.ReadUInt32();
                    if (magicNumber != MagicNumber)
                    {
                        throw new LoadStateException("DCPU-16", String.Format("Magic number is incorrect. Expected: {0:X}. Found: {1:X}.", MagicNumber, magicNumber));
                    }

                    var versionNumber = reader.ReadUInt32();
                    if (versionNumber != VersionNumber)
                    {
                        throw new LoadStateException("DCPU-16", String.Format("Unsupported version number: {0}", versionNumber));
                    }

                    // Registers
                    _dcpu16.A = reader.ReadUInt16();
                    _dcpu16.B = reader.ReadUInt16();
                    _dcpu16.C = reader.ReadUInt16();
                    _dcpu16.X = reader.ReadUInt16();
                    _dcpu16.Y = reader.ReadUInt16();
                    _dcpu16.Z = reader.ReadUInt16();
                    _dcpu16.I = reader.ReadUInt16();
                    _dcpu16.J = reader.ReadUInt16();
                    _dcpu16.PC = reader.ReadUInt16();
                    _dcpu16.SP = reader.ReadUInt16();
                    _dcpu16.EX = reader.ReadUInt16();
                    _dcpu16.IA = reader.ReadUInt16();

                    // Memory
                    for (var i = 0; i < MemorySize; i++)
                    {
                        _dcpu16.Memory[i] = reader.ReadUInt16();
                    }

                    // Flags
                    _dcpu16.IsOnFire = reader.ReadBoolean();
                    _dcpu16.IsInterruptQueueEnabled = reader.ReadBoolean();

                    // Interrupts
                    var interruptCount = reader.ReadInt32();
                    _dcpu16.InterruptQueue.Clear();
                    for (var i = 0; i < interruptCount; i++)
                    {
                        _dcpu16.InterruptQueue.Enqueue(reader.ReadUInt16());
                    }
                }
            }
            catch (Exception e)
            {
                throw new LoadStateException(e);
            }
        }
Esempio n. 2
0
        public void Load(string state)
        {
            try
            {
                using (var reader = new BinaryStateReader(state))
                {
                    // Header
                    var magicNumber = reader.ReadUInt32();
                    if (magicNumber != MagicNumber)
                    {
                        throw new LoadStateException("DCPU-16", String.Format("Magic number is incorrect. Expected: {0:X}. Found: {1:X}.", MagicNumber, magicNumber));
                    }

                    var versionNumber = reader.ReadUInt32();
                    if (versionNumber != VersionNumber)
                    {
                        throw new LoadStateException("DCPU-16", String.Format("Unsupported version number: {0}", versionNumber));
                    }

                    // Registers
                    _dcpu16.A  = reader.ReadUInt16();
                    _dcpu16.B  = reader.ReadUInt16();
                    _dcpu16.C  = reader.ReadUInt16();
                    _dcpu16.X  = reader.ReadUInt16();
                    _dcpu16.Y  = reader.ReadUInt16();
                    _dcpu16.Z  = reader.ReadUInt16();
                    _dcpu16.I  = reader.ReadUInt16();
                    _dcpu16.J  = reader.ReadUInt16();
                    _dcpu16.PC = reader.ReadUInt16();
                    _dcpu16.SP = reader.ReadUInt16();
                    _dcpu16.EX = reader.ReadUInt16();
                    _dcpu16.IA = reader.ReadUInt16();

                    // Memory
                    for (var i = 0; i < MemorySize; i++)
                    {
                        _dcpu16.Memory[i] = reader.ReadUInt16();
                    }

                    // Flags
                    _dcpu16.IsOnFire = reader.ReadBoolean();
                    _dcpu16.IsInterruptQueueEnabled = reader.ReadBoolean();

                    // Interrupts
                    var interruptCount = reader.ReadInt32();
                    _dcpu16.InterruptQueue.Clear();
                    for (var i = 0; i < interruptCount; i++)
                    {
                        _dcpu16.InterruptQueue.Enqueue(reader.ReadUInt16());
                    }
                }
            }
            catch (Exception e)
            {
                throw new LoadStateException(e);
            }
        }
Esempio n. 3
0
            public FloppyDisk(string serializedData)
            {
                _sectors = new Dictionary<ushort,ushort[]>();

                using (var reader = new BinaryStateReader(serializedData))
                {
                    // Header
                    var magicNumber = reader.ReadUInt32();
                    if (magicNumber != MagicNumber)
                    {
                        throw new LoadStateException("M35FD Floppy Disk", String.Format("Magic number is incorrect. Expected: {0:X}. Found: {1:X}.", MagicNumber, magicNumber));
                    }

                    var versionNumber = reader.ReadUInt32();
                    if (versionNumber != VersionNumber)
                    {
                        throw new LoadStateException("M35FD Floppy Disk", String.Format("Unsupported version number: {0}", versionNumber));
                    }

                    // Data
                    var sectorCount = reader.ReadInt32();
                    for (var i = 0; i < sectorCount; i++)
                    {
                        var sectorNumber = reader.ReadUInt16();
                        var sectorData = new ushort[WordsPerSector];
                        for (var j = 0; j < WordsPerSector; j++)
                        {
                            sectorData[j] = reader.ReadUInt16();
                        }

                        _sectors.Add(sectorNumber, sectorData);
                    }
                }
            }
Esempio n. 4
0
            public FirmwareRom(string name, string serializedData)
            {
                Name = name;

                using (var reader = new BinaryStateReader(serializedData))
                {
                    // Header
                    var magicNumber = reader.ReadUInt32();
                    if (magicNumber != MagicNumber)
                    {
                        throw new LoadStateException("Firmware ROM", String.Format("Magic number is incorrect. Expected: {0:X}. Found: {1:X}.", MagicNumber, magicNumber));
                    }

                    var versionNumber = reader.ReadUInt32();
                    if (versionNumber != VersionNumber)
                    {
                        throw new LoadStateException("Firmware ROM", String.Format("Unsupported version number: {0}", versionNumber));
                    }

                    // Data
                    var wordCount = reader.ReadInt32();
                    Data = new ushort[wordCount];
                    for (var i = 0; i < wordCount; i++)
                    {
                        Data[i] = reader.ReadUInt16();
                    }
                }
            }