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); }
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()); }