public ZDynamicMemory()
        {
            _header = new ZHeader(ZStaticMemory.StaticMemoryBase,
                ZHighMemory.HighMemoryBase,
                InitProgramCounterAddr,
                ZStaticMemory.DictionaryTableAddr,
                ObjectTableAddr,
                GlobalVariablesTableAddr,
                HeaderExtensionTableAddr) { Position = new ZByteAddress(HeaderTableAddr) };
            _headerExtension = new ZHeaderExtension() { Position = new ZByteAddress(HeaderExtensionTableAddr) };
            _objectTable = new ZObjectTable() { Position = new ZByteAddress(ObjectTableAddr) };
            _globalVariablesTable = new ZGlobalVariablesTable() { Position = new ZByteAddress(GlobalVariablesTableAddr) };
            _mainRoutineCall = new Call1n(new ZRoutineLabel("main")) { Position = new ZByteAddress(InitProgramCounterAddr) };

            _subComponents.Add(_header);
            _subComponents.Add(_headerExtension);
            _subComponents.Add(_objectTable);
            _subComponents.Add(_globalVariablesTable);
            _subComponents.Add(_mainRoutineCall);
        }
Exemple #2
0
        private Story(byte[] memory)
        {
            this.memory               = memory;
            this.version              = Header.ReadVersion(memory);
            this.serialNumber         = Header.ReadSerialNumber(memory);
            this.releaseNumber        = Header.ReadReleaseNumber(memory);
            this.checksum             = Header.ReadChecksum(memory);
            this.actualChecksum       = Header.CalculateChecksum(memory);
            this.routinesOffset       = Header.ReadRoutinesOffset(memory);
            this.stringsOffset        = Header.ReadStringsOffset(memory);
            this.instructionCache     = new InstructionCache((memory.Length - Header.ReadStaticMemoryBase(memory)) / 8);
            this.ztext                = new ZText(memory);
            this.memoryMap            = new MemoryMap(memory);
            this.informData           = new InformData(memory, this.memoryMap, ztext);
            this.objectTable          = new ZObjectTable(memory, ztext);
            this.globalVariablesTable = new GlobalVariablesTable(memory);
            this.dictionary           = new ZDictionary(this, ztext);
            this.mainRoutineAddress   = Header.ReadMainRoutineAddress(memory);

            RegisterInterpreter(new DefaultInterpreter());
        }