From da617d454dd896423ed1281986eb450280cde4d3 Mon Sep 17 00:00:00 2001 From: Jeff Date: Sun, 25 Sep 2016 12:12:26 -0700 Subject: [PATCH] Laid groundwork for MMU-specific functions, to avoid address mapping work when unnecessary --- modules/pdp11/lib/bus.js | 77 ++-- modules/pdp11/lib/cpustate.js | 660 +++++++++++++++++------------ modules/pdp11/lib/defines.js | 31 +- modules/pdp11/lib/device.js | 4 +- versions/pdp11/1.30.0/pdp11-dbg.js | 429 ++++++++++--------- versions/pdp11/1.30.0/pdp11.js | 290 +++++++------ 6 files changed, 804 insertions(+), 687 deletions(-) diff --git a/modules/pdp11/lib/bus.js b/modules/pdp11/lib/bus.js index 43f79c0bc..761ef18f3 100644 --- a/modules/pdp11/lib/bus.js +++ b/modules/pdp11/lib/bus.js @@ -171,19 +171,20 @@ BusPDP11.ERROR = { * array), and since these I/O accesses should be pretty infrequent relative to all other memory accesses, * the benefit seems pretty minimal. */ -BusPDP11.controller = { +BusPDP11.IOController = { /** - * readIOPageByte(off, addr) + * readByte(off, addr) * * @this {MemoryPDP11} * @param {number} off * @param {number} addr * @return {number} */ - readIOPageByte: function(off, addr) + readByte: function(off, addr) { - var afn = this.controller.aIOHandlers[off]; + var bus = this.controller; + var afn = bus.aIOHandlers[off]; if (afn) { if (afn[0]) { return afn[0](addr); @@ -195,26 +196,27 @@ BusPDP11.controller = { } } } else if (addr & 0x1) { - afn = this.controller.aIOHandlers[off & ~0x1]; + afn = bus.aIOHandlers[off & ~0x1]; if (afn[2]) { return afn[2](addr & ~0x1) >> 8; } } - return this.controller.fnAccess(addr, -1, 1); + return bus.fnAccess(addr, -1, 1); }, /** - * writeIOPageByte(off, b, addr) + * writeByte(off, b, addr) * * @this {MemoryPDP11} * @param {number} off * @param {number} b (which should already be pre-masked to 8 bits) * @param {number} addr */ - writeIOPageByte: function(off, b, addr) + writeByte: function(off, b, addr) { var w; - var afn = this.controller.aIOHandlers[off]; + var bus = this.controller; + var afn = bus.aIOHandlers[off]; if (afn) { if (afn[1]) { afn[1](b, addr); @@ -229,7 +231,7 @@ BusPDP11.controller = { return; } } else if (addr & 0x1) { - afn = this.controller.aIOHandlers[off & ~0x1]; + afn = bus.aIOHandlers[off & ~0x1]; if (afn[3]) { addr &= ~0x1; w = afn[2]? afn[2](addr) : 0; @@ -237,21 +239,22 @@ BusPDP11.controller = { return; } } - this.controller.fnAccess(addr, b, 1); + bus.fnAccess(addr, b, 1); }, /** - * readIOPageShort(off, addr) + * readShort(off, addr) * * @this {MemoryPDP11} * @param {number} off * @param {number} addr * @return {number} */ - readIOPageShort: function(off, addr) + readShort: function(off, addr) { + var bus = this.controller; Component.assert(!(addr & 1)); // unaligned addresses should be getting trapped at a higher level - var afn = this.controller.aIOHandlers[off]; + var afn = bus.aIOHandlers[off]; if (afn) { if (afn[2]) { return afn[2](addr); @@ -259,21 +262,22 @@ BusPDP11.controller = { return afn[0](addr) | (afn[0](addr + 1) << 8); } } - return this.controller.fnAccess(addr, -1, 0); + return bus.fnAccess(addr, -1, 0); }, /** - * writeIOPageShort(off, w, addr) + * writeShort(off, w, addr) * * @this {MemoryPDP11} * @param {number} off * @param {number} w (which should already be pre-masked to 16 bits) * @param {number} addr */ - writeIOPageShort: function(off, w, addr) + writeShort: function(off, w, addr) { + var bus = this.controller; Component.assert(!(addr & 1)); // unaligned addresses should be getting trapped at a higher level - var afn = this.controller.aIOHandlers[off]; + var afn = bus.aIOHandlers[off]; if (afn) { if (afn[3]) { afn[3](w, addr); @@ -284,7 +288,7 @@ BusPDP11.controller = { return; } } - this.controller.fnAccess(addr, w, 0); + bus.fnAccess(addr, w, 0); } }; @@ -304,12 +308,17 @@ BusPDP11.prototype.initMemory = function() this.aMemBlocks[iBlock] = block; } this.afnIOPage = new Array(4); - this.afnIOPage[0] = BusPDP11.controller.readIOPageByte; - this.afnIOPage[1] = BusPDP11.controller.writeIOPageByte; - this.afnIOPage[2] = BusPDP11.controller.readIOPageShort; - this.afnIOPage[3] = BusPDP11.controller.writeIOPageShort; - this.addrIOPage = this.addrTotal - BusPDP11.IOPAGE_LENGTH; - this.addMemory(this.addrIOPage, BusPDP11.IOPAGE_LENGTH, MemoryPDP11.TYPE.CONTROLLER, this); + this.afnIOPage[0] = BusPDP11.IOController.readByte; + this.afnIOPage[1] = BusPDP11.IOController.writeByte; + this.afnIOPage[2] = BusPDP11.IOController.readShort; + this.afnIOPage[3] = BusPDP11.IOController.writeShort; + /* + * Map IOPAGE at the top of the address space (as determined by nBusWidth), as well as at IOPAGE_VIRT + * (which is the only place that 16-bit code can reach the IOPAGE when memory management is not enabled). + */ + var addr = this.addrTotal - BusPDP11.IOPAGE_LENGTH; + this.addMemory(addr, BusPDP11.IOPAGE_LENGTH, MemoryPDP11.TYPE.CONTROLLER, this); + this.addMemory(BusPDP11.IOPAGE_VIRT, BusPDP11.IOPAGE_LENGTH, MemoryPDP11.TYPE.CONTROLLER, this); }; /** @@ -342,6 +351,9 @@ BusPDP11.prototype.getControllerAccess = function() /** * reset() * + * The Device component initializes fnReset by calling addIODefaultHandlers() from its initBus() function; + * it will be that function's responsibility to reset all the necessary devices. + * * @this {BusPDP11} */ BusPDP11.prototype.reset = function() @@ -352,10 +364,15 @@ BusPDP11.prototype.reset = function() /** * access() * + * This is our default I/O handler, called whenever there's an IOPAGE access without a corresponding entry + * in aIOHandlers; in the interim, our Device component will override this default handler with its own function + * by calling addIODefaultHandlers(), until the Device component has been completely rewritten to install I/O + * handlers for all supported I/O addresses. + * * @this {BusPDP11} - * @param {number} addr - * @param {number} data - * @param {number} byteFlag + * @param {number} addr (ie, an IOPAGE address) + * @param {number} data (-1 if read, otherwise write) + * @param {number} byteFlag (true if byte I/O, otherwise word) */ BusPDP11.prototype.access = function(addr, data, byteFlag) { @@ -957,11 +974,11 @@ BusPDP11.prototype.addIOHandlers = function(start, end, fnReadByte, fnWriteByte, for (var addr = start; addr <= end; addr += 2) { var off = addr & BusPDP11.IOPAGE_MASK; if (this.aIOHandlers[off] !== undefined) { - Component.warning("I/O address already registered: " + str.toHexLong(this.addrIOPage + off)); + Component.warning("I/O address already registered: " + str.toHexLong(addr)); continue; } this.aIOHandlers[off] = [fnReadByte, fnWriteByte, fnReadShort, fnWriteShort, false]; - if (MAXDEBUG) this.log("addIOHandlers(" + str.toHexLong(this.addrIOPage + off) + ")"); + if (MAXDEBUG) this.log("addIOHandlers(" + str.toHexLong(addr) + ")"); } }; diff --git a/modules/pdp11/lib/cpustate.js b/modules/pdp11/lib/cpustate.js index 141f58064..fc9fbe0b5 100644 --- a/modules/pdp11/lib/cpustate.js +++ b/modules/pdp11/lib/cpustate.js @@ -177,6 +177,8 @@ CPUStatePDP11.prototype.initRegs = function() this.runState = 0; // 0=run, 1=step, 2=wait, 3=run this.loopRate = 9999; // instructions we can execute in 12ms this.priorityReview = 2; // flag to mark if we need to check priority change + + this.initMemoryAccess(); }; /** @@ -193,6 +195,39 @@ CPUStatePDP11.prototype.resetRegs = function() this.MMR0 = this.MMR1 = this.MMR2 = this.MMR3 = this.mmuFrozen = this.mmuEnable = 0; this.mmuMask[0] = this.mmuMask[1] = this.mmuMask[3] = 0x7; this.mmuLastMode = 0; + + this.initMemoryAccess(); +}; + +/** + * initMemoryAccess() + * + * Define getAddr(), readWord(), etc, handlers appropriate for the current MMU mode. + * + * The initial goal is to eliminate unnecessary calls to mapVirtualToPhysical(); for example, + * readWordByVirtual() always does this: + * + * return this.readWordByPhysical(this.mapVirtualToPhysical(virtualAddress, PDP11.ACCESS.READ)); + * + * and getAddrVirtual() -- formerly getAddrByMode() -- always does this: + * + * return this.mapVirtualToPhysical(this.getVirtualByMode(addressMode, accessFlags), accessFlags); + * + * So now we define readWord() and getAddr() functions that are more appropriate for the current MMU mode. + * + * @this {CPUStatePDP11} + */ +CPUStatePDP11.prototype.initMemoryAccess = function() +{ + if (this.mmuEnable) { + this.addrDSpace = PDP11.ACCESS.DSPACE; + this.getAddr = this.getAddrVirtual; + this.readWord = this.readWordByVirtual; + } else { + this.addrDSpace = 0; + this.getAddr = this.getAddrPhysical; + this.readWord = this.readWordByPhysical; + } }; /** @@ -736,8 +771,8 @@ CPUStatePDP11.prototype.trap = function(vector, reason) this.MMR2 = vector; } this.mmuMode = 0; // read from kernel D space - if ((newPC = this.readWordByVirtual(vector | 0x10000)) >= 0) { - if ((newPSW = this.readWordByVirtual(((vector + 2) & 0xffff) | 0x10000)) >= 0) { + if ((newPC = this.readWordByVirtual(vector | PDP11.ACCESS.DSPACE)) >= 0) { + if ((newPSW = this.readWordByVirtual(((vector + 2) & 0xffff) | PDP11.ACCESS.DSPACE)) >= 0) { this.setPSW((newPSW & 0xcfff) | ((this.trapPSW >> 2) & 0x3000)); // set new this.PSW with previous mode if (doubleTrap) { this.regCPUErr |= PDP11.CPUERR.RED; @@ -929,13 +964,13 @@ CPUStatePDP11.prototype.mapVirtualToPhysical = function(virtualAddress, accessFl }; /** - * readWordByAddr(physicalAddress) + * readWordByPhysical(physicalAddress) [formerly readWordByAddr] * * @this {CPUStatePDP11} * @param {number} physicalAddress * @return {number} */ -CPUStatePDP11.prototype.readWordByAddr = function(physicalAddress) +CPUStatePDP11.prototype.readWordByPhysical = function(physicalAddress) { if (physicalAddress >= BusPDP11.MAX_ADDRESS) { return this.regsGen[physicalAddress - BusPDP11.MAX_ADDRESS]; @@ -952,14 +987,25 @@ CPUStatePDP11.prototype.readWordByAddr = function(physicalAddress) }; /** - * writeWordByAddr(physicalAddress, data) + * readWordByVirtual(virtualAddress) + * + * @this {CPUStatePDP11} + * @param {number} virtualAddress (input address is 17 bit (I&D)) + */ +CPUStatePDP11.prototype.readWordByVirtual = function(virtualAddress) +{ + return this.readWordByPhysical(this.mapVirtualToPhysical(virtualAddress, PDP11.ACCESS.READ)); +}; + +/** + * writeWordByPhysical(physicalAddress, data) [formerly writeWordByAddr] * * @this {CPUStatePDP11} * @param {number} physicalAddress * @param {number} data * @return {number} */ -CPUStatePDP11.prototype.writeWordByAddr = function(physicalAddress, data) +CPUStatePDP11.prototype.writeWordByPhysical = function(physicalAddress, data) { data &= 0xffff; if (physicalAddress >= BusPDP11.MAX_ADDRESS) { @@ -978,13 +1024,13 @@ CPUStatePDP11.prototype.writeWordByAddr = function(physicalAddress, data) }; /** - * readByteByAddr(physicalAddress) + * readByteByPhysical(physicalAddress) [formerly readByteByAddr] * * @this {CPUStatePDP11} * @param {number} physicalAddress * @return {number} */ -CPUStatePDP11.prototype.readByteByAddr = function(physicalAddress) +CPUStatePDP11.prototype.readByteByPhysical = function(physicalAddress) { var result; if (physicalAddress >= BusPDP11.MAX_ADDRESS) { @@ -1002,14 +1048,14 @@ CPUStatePDP11.prototype.readByteByAddr = function(physicalAddress) }; /** - * writeByteByAddr(physicalAddress, data) + * writeByteByPhysical(physicalAddress, data) [formerly writeByteByAddr] * * @this {CPUStatePDP11} * @param {number} physicalAddress * @param {number} data * @return {number} */ -CPUStatePDP11.prototype.writeByteByAddr = function(physicalAddress, data) +CPUStatePDP11.prototype.writeByteByPhysical = function(physicalAddress, data) { data &= 0xff; if (physicalAddress >= BusPDP11.MAX_ADDRESS) { @@ -1027,17 +1073,6 @@ CPUStatePDP11.prototype.writeByteByAddr = function(physicalAddress, data) return physicalAddress; }; -/** - * readWordByVirtual(virtualAddress) - * - * @this {CPUStatePDP11} - * @param {number} virtualAddress (input address is 17 bit (I&D)) - */ -CPUStatePDP11.prototype.readWordByVirtual = function(virtualAddress) -{ - return this.readWordByAddr(this.mapVirtualToPhysical(virtualAddress, PDP11.ACCESS.READ)); -}; - /** * popWord() * @@ -1046,7 +1081,7 @@ CPUStatePDP11.prototype.readWordByVirtual = function(virtualAddress) */ CPUStatePDP11.prototype.popWord = function() { - var result = this.readWordByVirtual(this.regsGen[6] | 0x10000); + var result = this.readWordByVirtual(this.regsGen[6] | PDP11.ACCESS.DSPACE); if (result >= 0) { this.regsGen[6] = (this.regsGen[6] + 2) & 0xffff; } @@ -1077,8 +1112,8 @@ CPUStatePDP11.prototype.pushWord = function(data) this.opFlags |= 4; } } - if ((physicalAddress = this.mapVirtualToPhysical(virtualAddress | 0x10000, PDP11.ACCESS.WRITE)) >= 0) { - return this.writeWordByAddr(physicalAddress, data); + if ((physicalAddress = this.mapVirtualToPhysical(virtualAddress | PDP11.ACCESS.DSPACE, PDP11.ACCESS.WRITE)) >= 0) { + return this.writeWordByPhysical(physicalAddress, data); } return physicalAddress; }; @@ -1134,13 +1169,13 @@ CPUStatePDP11.prototype.getVirtualByMode = function(addressMode, accessFlags) this.opFlags |= PDP11.OPFLAG.TRAP_SP; } } - return (reg === 7 ? this.regsGen[reg] : (this.regsGen[reg] | 0x10000)); + return (reg === 7 ? this.regsGen[reg] : (this.regsGen[reg] | this.addrDSpace)); case 2: // Mode 2: (R)+ stepSize = 2; virtualAddress = this.regsGen[reg]; if (reg !== 7) { - virtualAddress |= 0x10000; + virtualAddress |= this.addrDSpace; if (reg < 6 && (accessFlags & PDP11.ACCESS.BYTE)) { stepSize = 1; } @@ -1149,29 +1184,29 @@ CPUStatePDP11.prototype.getVirtualByMode = function(addressMode, accessFlags) case 3: // Mode 3: @(R)+ stepSize = 2; virtualAddress = this.regsGen[reg]; - if (reg !== 7) virtualAddress |= 0x10000; + if (reg !== 7) virtualAddress |= this.addrDSpace; if ((virtualAddress = this.readWordByVirtual(virtualAddress)) < 0) { return virtualAddress; } // if (reg === 7) LOG_ADDRESS(virtualAddress); // @#n not operational - virtualAddress |= 0x10000; + virtualAddress |= this.addrDSpace; break; case 4: // Mode 4: -(R) stepSize = -2; if (reg < 6 && (accessFlags & PDP11.ACCESS.BYTE)) stepSize = -1; virtualAddress = (this.regsGen[reg] + stepSize) & 0xffff; if (reg !== 7) { - virtualAddress |= 0x10000; + virtualAddress |= this.addrDSpace; } break; case 5: // Mode 5: @-(R) stepSize = -2; virtualAddress = (this.regsGen[reg] - 2) & 0xffff; - if (reg !== 7) virtualAddress |= 0x10000; + if (reg !== 7) virtualAddress |= this.addrDSpace; if ((virtualAddress = this.readWordByVirtual(virtualAddress)) < 0) { return virtualAddress; } - virtualAddress |= 0x10000; + virtualAddress |= this.addrDSpace; break; case 6: // Mode 6: d(R) if ((virtualAddress = this.readWordByVirtual(this.regsGen[7])) < 0) { @@ -1185,7 +1220,7 @@ CPUStatePDP11.prototype.getVirtualByMode = function(addressMode, accessFlags) virtualAddress = (virtualAddress + this.regsGen[reg]) & 0xffff; //LOG_ADDRESS(virtualAddress); } - return virtualAddress | 0x10000; + return virtualAddress | this.addrDSpace; case 7: // Mode 7: @d(R) if ((virtualAddress = this.readWordByVirtual(this.regsGen[7])) < 0) { return virtualAddress; @@ -1198,13 +1233,13 @@ CPUStatePDP11.prototype.getVirtualByMode = function(addressMode, accessFlags) virtualAddress = (virtualAddress + this.regsGen[reg]) & 0xffff; //LOG_ADDRESS(virtualAddress); } - if ((virtualAddress = this.readWordByVirtual(virtualAddress | 0x10000)) < 0) { + if ((virtualAddress = this.readWordByVirtual(virtualAddress | PDP11.ACCESS.DSPACE)) < 0) { return virtualAddress; } - return virtualAddress | 0x10000; // @x + return virtualAddress | this.addrDSpace; } this.regsGen[reg] = (this.regsGen[reg] + stepSize) & 0xffff; - if (!(this.MMR0 & 0xe000)) { + if (this.addrDSpace && !(this.MMR0 & 0xe000)) { this.MMR1 = (this.MMR1 << 8) | ((stepSize << 3) & 0xf8) | reg; } if (reg === 6 && (!this.mmuMode) && (accessFlags & PDP11.ACCESS.WRITE) && stepSize <= 0 && @@ -1222,23 +1257,39 @@ CPUStatePDP11.prototype.getVirtualByMode = function(addressMode, accessFlags) }; /** - * getAddrByMode(addressMode, accessFlags) + * getAddrPhysical(addressMode, accessFlags) * * @this {CPUStatePDP11} * @param {number} addressMode * @param {number} accessFlags * @return {number} */ -CPUStatePDP11.prototype.getAddrByMode = function(addressMode, accessFlags) +CPUStatePDP11.prototype.getAddrPhysical = function(addressMode, accessFlags) { - var result; - if (!(addressMode & 0x38)) { - result = BusPDP11.MAX_ADDRESS + (addressMode & 7); // Registers have special addresses above maximum address - } else { - var addr = this.getVirtualByMode(addressMode, accessFlags); - result = this.mapVirtualToPhysical(addr, accessFlags); - } - return result; + this.assert(addressMode & 0x38); + // if (!(addressMode & 0x38)) { + // return BusPDP11.MAX_ADDRESS + (addressMode & 7); // Registers have special addresses above maximum address + // } else { + return this.getVirtualByMode(addressMode, accessFlags); + // } +}; + +/** + * getAddrVirtual(addressMode, accessFlags) + * + * @this {CPUStatePDP11} + * @param {number} addressMode + * @param {number} accessFlags + * @return {number} + */ +CPUStatePDP11.prototype.getAddrVirtual = function(addressMode, accessFlags) +{ + this.assert(addressMode & 0x38); + // if (!(addressMode & 0x38)) { + // return BusPDP11.MAX_ADDRESS + (addressMode & 7); // Registers have special addresses above maximum address + // } else { + return this.mapVirtualToPhysical(this.getVirtualByMode(addressMode, accessFlags), accessFlags); + // } }; /** @@ -1254,8 +1305,12 @@ CPUStatePDP11.prototype.readWordByMode = function(addressMode) if (!(addressMode & PDP11.OPMODE.MASK)) { result = this.regsGen[addressMode & PDP11.OPREG.MASK]; } else { - var addr = this.getAddrByMode(addressMode, PDP11.ACCESS.READ); - result = this.readWordByAddr(addr); + /* + * NOTE: This used to call readWordByPhysical(), after calling getAddrVirtual(), but the latter is + * just a wrapper around mapVirtualToPhysical() on the result from getVirtualByMode(), so now we call + * getVirtualByMode() directly, knowing that the current readWord() will call the correct function. + */ + result = this.readWord(this.getVirtualByMode(addressMode, PDP11.ACCESS.READ)); } return result; }; @@ -1273,8 +1328,7 @@ CPUStatePDP11.prototype.readByteByMode = function(addressMode) if (!(addressMode & 0x38)) { result = this.regsGen[addressMode & 7] & 0xff; } else { - var addr = this.getAddrByMode(addressMode, PDP11.ACCESS.READ_BYTE); - result = this.readByteByAddr(addr); + result = this.readByteByPhysical(this.getAddr(addressMode, PDP11.ACCESS.READ_BYTE)); } return result; }; @@ -1297,8 +1351,8 @@ CPUStatePDP11.prototype.updateWordByMode = function(addressMode, src, fnOp) var reg = addressMode & PDP11.OPREG.MASK; this.regsGen[reg] = (data = fnOp.call(this, src, this.regsGen[reg]) & 0xffff); } else { - var addr = this.getAddrByMode(addressMode, PDP11.ACCESS.UPDATE); - this.writeWordByAddr(addr, (data = fnOp.call(this, src, this.readWordByAddr(addr)))); + var addr = this.getAddr(addressMode, PDP11.ACCESS.UPDATE); + this.writeWordByPhysical(addr, (data = fnOp.call(this, src, this.readWordByPhysical(addr)))); } return data; }; @@ -1321,8 +1375,8 @@ CPUStatePDP11.prototype.updateByteByMode = function(addressMode, src, fnOp) var reg = addressMode & PDP11.OPREG.MASK; this.regsGen[reg] = (this.regsGen[reg] & 0xff00) | ((data = fnOp.call(this, src, this.regsGen[reg]) & 0xff)); } else { - var addr = this.getAddrByMode(addressMode, PDP11.ACCESS.UPDATE_BYTE); - this.writeByteByAddr(addr, (data = fnOp.call(this, src, this.readByteByAddr(addr)))); + var addr = this.getAddr(addressMode, PDP11.ACCESS.UPDATE_BYTE); + this.writeByteByPhysical(addr, (data = fnOp.call(this, src, this.readByteByPhysical(addr)))); } return data; }; @@ -1342,7 +1396,7 @@ CPUStatePDP11.prototype.writeWordByMode = function(addressMode, data) if (!(addressMode & PDP11.OPMODE.MASK)) { this.regsGen[addressMode & PDP11.OPREG.MASK] = data & 0xffff; } else { - this.writeWordByAddr(this.getAddrByMode(addressMode, PDP11.ACCESS.WRITE), data); + this.writeWordByPhysical(this.getAddr(addressMode, PDP11.ACCESS.WRITE), data); } return data; }; @@ -1371,7 +1425,7 @@ CPUStatePDP11.prototype.writeByteByMode = function(addressMode, data, writeFlags this.regsGen[reg] = ((data << 24) >> 24) & 0xffff; } } else { - this.writeByteByAddr(this.getAddrByMode(addressMode, PDP11.ACCESS.WRITE_BYTE), data); + this.writeByteByPhysical(this.getAddr(addressMode, PDP11.ACCESS.WRITE_BYTE), data); } return data; }; @@ -1555,176 +1609,176 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) switch (opCode & 0xF000) /*0170000*/ { // Double operand instructions xxSSDD case 0x1000: /*0010000*/ // MOV 01SSDD //LOG_INSTRUCTION(opCode, 2, "MOV"); - if ((src = this.readWordByMode(opCode >> 6)) >= 0) { - if (!(opCode & 0x38)) { - this.regsGen[opCode & 7] = src; - this.flagN = this.flagZ = src; - this.flagV = 0; - } else { - if ((dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.WRITE)) >= 0) { - if (this.writeWordByAddr(dstAddr, src) >= 0) { - this.flagN = this.flagZ = src; - this.flagV = 0; - } - } - } - } + // if ((src = this.readWordByMode(opCode >> 6)) >= 0) { + // if (!(opCode & 0x38)) { + // this.regsGen[opCode & 7] = src; + // this.flagN = this.flagZ = src; + // this.flagV = 0; + // } else { + // if ((dstAddr = this.getAddr(opCode, PDP11.ACCESS.WRITE)) >= 0) { + // if (this.writeWordByPhysical(dstAddr, src) >= 0) { + // this.flagN = this.flagZ = src; + // this.flagV = 0; + // } + // } + // } + // } break; case 0x2000: /*0020000*/ // CMP 02SSDD //LOG_INSTRUCTION(opCode, 2, "CMP"); - if ((src = this.readWordByMode(opCode >> 6)) >= 0) { - if ((dst = this.readWordByMode(opCode)) >= 0) { - result = src - dst; - this.flagN = this.flagZ = this.flagC = result; - this.flagV = (src ^ dst) & (src ^ result); - } - } + // if ((src = this.readWordByMode(opCode >> 6)) >= 0) { + // if ((dst = this.readWordByMode(opCode)) >= 0) { + // result = src - dst; + // this.flagN = this.flagZ = this.flagC = result; + // this.flagV = (src ^ dst) & (src ^ result); + // } + // } break; case 0x3000: /*0030000*/ // BIT 03SSDD //LOG_INSTRUCTION(opCode, 2, "BIT"); - if ((src = this.readWordByMode(opCode >> 6)) >= 0) { - if ((dst = this.readWordByMode(opCode)) >= 0) { - this.flagN = this.flagZ = src & dst; - this.flagV = 0; - } - } + // if ((src = this.readWordByMode(opCode >> 6)) >= 0) { + // if ((dst = this.readWordByMode(opCode)) >= 0) { + // this.flagN = this.flagZ = src & dst; + // this.flagV = 0; + // } + // } break; case 0x4000: /*0040000*/ // BIC 04SSDD //LOG_INSTRUCTION(opCode, 2, "BIC"); - if ((src = this.readWordByMode(opCode >> 6)) >= 0) { - if (!(opCode & 0x38)) { - result = this.regsGen[opCode & 7] &= ~src; - this.flagN = this.flagZ = result; - this.flagV = 0; - } else { - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= 0) { - result = dst & ~src; - if (this.writeWordByAddr(dstAddr, result) >= 0) { - this.flagN = this.flagZ = result; - this.flagV = 0; - } - } - } - } + // if ((src = this.readWordByMode(opCode >> 6)) >= 0) { + // if (!(opCode & 0x38)) { + // result = this.regsGen[opCode & 7] &= ~src; + // this.flagN = this.flagZ = result; + // this.flagV = 0; + // } else { + // if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { + // result = dst & ~src; + // if (this.writeWordByPhysical(dstAddr, result) >= 0) { + // this.flagN = this.flagZ = result; + // this.flagV = 0; + // } + // } + // } + // } break; case 0x5000: /*0050000*/ // BIS 05SSDD //LOG_INSTRUCTION(opCode, 2, "BIS"); - if ((src = this.readWordByMode(opCode >> 6)) >= 0) { - if (!(opCode & 0x38)) { - result = this.regsGen[opCode & 7] |= src; - this.flagN = this.flagZ = result; - this.flagV = 0; - } else { - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= 0) { - result = dst | src; - if (this.writeWordByAddr(dstAddr, result) >= 0) { - this.flagN = this.flagZ = result; - this.flagV = 0; - } - } - } - } + // if ((src = this.readWordByMode(opCode >> 6)) >= 0) { + // if (!(opCode & 0x38)) { + // result = this.regsGen[opCode & 7] |= src; + // this.flagN = this.flagZ = result; + // this.flagV = 0; + // } else { + // if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { + // result = dst | src; + // if (this.writeWordByPhysical(dstAddr, result) >= 0) { + // this.flagN = this.flagZ = result; + // this.flagV = 0; + // } + // } + // } + // } break; case 0x6000: /*0060000*/ // ADD 06SSDD //LOG_INSTRUCTION(opCode, 2, "ADD"); - if ((src = this.readWordByMode(opCode >> 6)) >= 0) { - if (!(opCode & 0x38)) { - reg = opCode & 7; - dst = this.regsGen[reg]; - this.regsGen[reg] = (result = src + dst) & 0xffff; - this.flagN = this.flagZ = this.flagC = result; - this.flagV = (src ^ result) & (dst ^ result); - } else { - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= 0) { - result = src + dst; - if (this.writeWordByAddr(dstAddr, result) >= 0) { - this.flagN = this.flagZ = this.flagC = result; - this.flagV = (src ^ result) & (dst ^ result); - } - } - } - } + // if ((src = this.readWordByMode(opCode >> 6)) >= 0) { + // if (!(opCode & 0x38)) { + // reg = opCode & 7; + // dst = this.regsGen[reg]; + // this.regsGen[reg] = (result = src + dst) & 0xffff; + // this.flagN = this.flagZ = this.flagC = result; + // this.flagV = (src ^ result) & (dst ^ result); + // } else { + // if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { + // result = src + dst; + // if (this.writeWordByPhysical(dstAddr, result) >= 0) { + // this.flagN = this.flagZ = this.flagC = result; + // this.flagV = (src ^ result) & (dst ^ result); + // } + // } + // } + // } break; case 0x9000: /*0110000*/ // MOVB 11SSDD //LOG_INSTRUCTION(opCode, 2, "MOVB"); - if ((src = this.readByteByMode(opCode >> 6)) >= 0) { - if (!(opCode & 0x38)) { - if (src & 0x80) /*0200*/ src |= 0xff00; // movb sign extends register to word size - this.regsGen[opCode & 7] = src; - this.flagN = this.flagZ = src; - this.flagV = 0; - } else { - if ((dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.WRITE_BYTE)) >= 0) { // write byte - if (this.writeByteByAddr(dstAddr, src) >= 0) { - this.flagN = this.flagZ = src << 8; - this.flagV = 0; - } - } - } - } + // if ((src = this.readByteByMode(opCode >> 6)) >= 0) { + // if (!(opCode & 0x38)) { + // if (src & 0x80) /*0200*/ src |= 0xff00; // movb sign extends register to word size + // this.regsGen[opCode & 7] = src; + // this.flagN = this.flagZ = src; + // this.flagV = 0; + // } else { + // if ((dstAddr = this.getAddr(opCode, PDP11.ACCESS.WRITE_BYTE)) >= 0) { // write byte + // if (this.writeByteByPhysical(dstAddr, src) >= 0) { + // this.flagN = this.flagZ = src << 8; + // this.flagV = 0; + // } + // } + // } + // } break; case 0xA000: /*0120000*/ // CMPB 12SSDD //LOG_INSTRUCTION(opCode, 2, "CMPB"); - if ((src = this.readByteByMode(opCode >> 6)) >= 0) { - if ((dst = this.readByteByMode(opCode)) >= 0) { - result = src - dst; - this.flagN = this.flagZ = this.flagC = result << 8; - this.flagV = ((src ^ dst) & (src ^ result)) << 8; - } - } + // if ((src = this.readByteByMode(opCode >> 6)) >= 0) { + // if ((dst = this.readByteByMode(opCode)) >= 0) { + // result = src - dst; + // this.flagN = this.flagZ = this.flagC = result << 8; + // this.flagV = ((src ^ dst) & (src ^ result)) << 8; + // } + // } break; case 0xB000: /*0130000*/ // BITB 13SSDD //LOG_INSTRUCTION(opCode, 2, "BITB"); - if ((src = this.readByteByMode(opCode >> 6)) >= 0) { - if ((dst = this.readByteByMode(opCode)) >= 0) { - this.flagN = this.flagZ = (src & dst) << 8; - this.flagV = 0; - } - } + // if ((src = this.readByteByMode(opCode >> 6)) >= 0) { + // if ((dst = this.readByteByMode(opCode)) >= 0) { + // this.flagN = this.flagZ = (src & dst) << 8; + // this.flagV = 0; + // } + // } break; case 0xC000: /*0140000*/ // BICB 14SSDD //LOG_INSTRUCTION(opCode, 2, "BICB"); - if ((src = this.readByteByMode(opCode >> 6)) >= 0) { - if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) { - result = dst & ~src; - if (this.writeByteByAddr(dstAddr, result) >= 0) { - this.flagN = this.flagZ = result << 8; - this.flagV = 0; - } - } - } + // if ((src = this.readByteByMode(opCode >> 6)) >= 0) { + // if ((dst = this.readByteByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) { + // result = dst & ~src; + // if (this.writeByteByPhysical(dstAddr, result) >= 0) { + // this.flagN = this.flagZ = result << 8; + // this.flagV = 0; + // } + // } + // } break; case 0xD000: /*0150000*/ // BISB 15SSDD //LOG_INSTRUCTION(opCode, 2, "BISB"); - if ((src = this.readByteByMode(opCode >> 6)) >= 0) { - if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) { - result = dst | src; - if (this.writeByteByAddr(dstAddr, result) >= 0) { - this.flagN = this.flagZ = result << 8; - this.flagV = 0; - } - } - } + // if ((src = this.readByteByMode(opCode >> 6)) >= 0) { + // if ((dst = this.readByteByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) { + // result = dst | src; + // if (this.writeByteByPhysical(dstAddr, result) >= 0) { + // this.flagN = this.flagZ = result << 8; + // this.flagV = 0; + // } + // } + // } break; case 0xE000: /*0160000*/ // SUB 16SSDD //LOG_INSTRUCTION(opCode, 2, "SUB"); - if ((src = this.readWordByMode(opCode >> 6)) >= 0) { - if (!(opCode & 0x38)) { - reg = opCode & 7; - dst = this.regsGen[reg]; - this.regsGen[reg] = (result = dst - src) & 0xffff; - this.flagN = this.flagZ = this.flagC = result; - this.flagV = (src ^ dst) & (dst ^ result); - } else { - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= 0) { - result = dst - src; - if (this.writeWordByAddr(dstAddr, result) >= 0) { - this.flagN = this.flagZ = this.flagC = result; - this.flagV = (src ^ dst) & (dst ^ result); - } - } - } - } + // if ((src = this.readWordByMode(opCode >> 6)) >= 0) { + // if (!(opCode & 0x38)) { + // reg = opCode & 7; + // dst = this.regsGen[reg]; + // this.regsGen[reg] = (result = dst - src) & 0xffff; + // this.flagN = this.flagZ = this.flagC = result; + // this.flagV = (src ^ dst) & (dst ^ result); + // } else { + // if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { + // result = dst - src; + // if (this.writeWordByPhysical(dstAddr, result) >= 0) { + // this.flagN = this.flagZ = this.flagC = result; + // this.flagV = (src ^ dst) & (dst ^ result); + // } + // } + // } + // } break; default: switch (opCode & 0xFE00) /*0177000*/ { // Misc instructions xxRDD @@ -1855,9 +1909,9 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) this.flagN = this.flagZ = dst; this.flagV = 0; } else { - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= 0) { + if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { dst ^= this.regsGen[(opCode >> 6) & 7]; - if (this.writeWordByAddr(dstAddr, dst) >= 0) { + if (this.writeWordByPhysical(dstAddr, dst) >= 0) { this.flagN = this.flagZ = dst; this.flagV = 0; } @@ -1965,10 +2019,10 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) this.flagN = this.flagZ = dst & 0xff00; this.flagV = this.flagC = 0; } else { - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= + if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { result = (dst << 8) | (dst >> 8); - if (this.writeWordByAddr(dstAddr, result) >= 0) { + if (this.writeWordByPhysical(dstAddr, result) >= 0) { this.flagN = this.flagZ = dst & 0xff00; this.flagV = this.flagC = 0; } @@ -1977,23 +2031,26 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0xA00: /*0005000*/ // CLR 0050DD //LOG_INSTRUCTION(opCode, 1, "CLR"); - if (!(opCode & 0x38)) { - this.regsGen[opCode & 7] = 0; - this.flagN = this.flagC = this.flagV = this.flagZ = 0; - } else { - if ((dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.WRITE)) >= 0) { // write word - if (this.writeWordByAddr(dstAddr, 0) >= 0) { - this.flagN = this.flagC = this.flagV = this.flagZ = 0; - } - } - } + // if (!(opCode & 0x38)) { + // this.regsGen[opCode & 7] = 0; + // this.flagN = this.flagC = this.flagV = this.flagZ = 0; + // } else { + // if ((dstAddr = this.getAddr(opCode, PDP11.ACCESS.WRITE)) >= 0) { // write word + // if (this.writeWordByPhysical(dstAddr, 0) >= 0) { + // this.flagN = this.flagC = this.flagV = this.flagZ = 0; + // } + // } + // } break; case 0xA40: /*0005100*/ // COM 0051DD //LOG_INSTRUCTION(opCode, 1, "COM"); - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { result = ~dst; - if (this.writeWordByAddr(dstAddr, result) >= 0) { + if (this.writeWordByPhysical(dstAddr, result) >= 0) { this.flagN = this.flagZ = result; this.flagC = 0x10000; this.flagV = 0; @@ -2010,10 +2067,10 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) this.flagN = this.flagZ = result; this.flagV = result & (result ^ dst); } else { - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= + if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { result = dst + 1; - if (this.writeWordByAddr(dstAddr, result) >= 0) { + if (this.writeWordByPhysical(dstAddr, result) >= 0) { this.flagN = this.flagZ = result; this.flagV = result & (result ^ dst); } @@ -2030,10 +2087,10 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) this.flagN = this.flagZ = result; this.flagV = (result ^ dst) & dst; } else { - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= + if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { result = dst - 1; - if (this.writeWordByAddr(dstAddr, result) >= 0) { + if (this.writeWordByPhysical(dstAddr, result) >= 0) { this.flagN = this.flagZ = result; this.flagV = (result ^ dst) & dst; } @@ -2042,10 +2099,13 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0xB00: /*0005400*/ // NEG 0054DD //LOG_INSTRUCTION(opCode, 1, "NEG"); - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { result = -dst; - if (this.writeWordByAddr(dstAddr, result) >= 0) { + if (this.writeWordByPhysical(dstAddr, result) >= 0) { this.flagC = this.flagN = this.flagZ = result; this.flagV = result & dst; } @@ -2053,10 +2113,13 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0xB40: /*0005500*/ // ADC 0055DD //LOG_INSTRUCTION(opCode, 1, "ADC"); - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { result = dst + ((this.flagC >> 16) & 1); - if (this.writeWordByAddr(dstAddr, result) >= 0) { + if (this.writeWordByPhysical(dstAddr, result) >= 0) { this.flagC = this.flagN = this.flagZ = result; this.flagV = result & (result ^ dst); } @@ -2064,10 +2127,13 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0xB80: /*0005600*/ // SBC 0056DD //LOG_INSTRUCTION(opCode, 1, "SBC"); - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { result = dst - ((this.flagC >> 16) & 1); - if (this.writeWordByAddr(dstAddr, result) >= 0) { + if (this.writeWordByPhysical(dstAddr, result) >= 0) { this.flagC = this.flagN = this.flagZ = result; this.flagV = (result ^ dst) & dst; } @@ -2091,10 +2157,10 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) this.flagN = this.flagZ = result; this.flagV = result ^ (this.flagC >> 1); } else { - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= + if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { result = ((this.flagC & 0x10000) | dst) >> 1; - if (this.writeWordByAddr(dstAddr, result) >= 0) { + if (this.writeWordByPhysical(dstAddr, result) >= 0) { this.flagC = (dst << 16); this.flagN = this.flagZ = result; this.flagV = result ^ (this.flagC >> 1); @@ -2112,10 +2178,10 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) this.flagC = this.flagN = this.flagZ = result; this.flagV = result ^ dst; } else { - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= + if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { result = (dst << 1) | ((this.flagC >> 16) & 1); - if (this.writeWordByAddr(dstAddr, result) >= 0) { + if (this.writeWordByPhysical(dstAddr, result) >= 0) { this.flagC = this.flagN = this.flagZ = result; this.flagV = result ^ dst; } @@ -2133,10 +2199,10 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) this.flagN = this.flagZ = result; this.flagV = this.flagN ^ (this.flagC >> 1); } else { - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= + if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { result = (dst & 0x8000) | (dst >> 1); - if (this.writeWordByAddr(dstAddr, result) >= 0) { + if (this.writeWordByPhysical(dstAddr, result) >= 0) { this.flagC = dst << 16; this.flagN = this.flagZ = result; this.flagV = this.flagN ^ (this.flagC >> 1); @@ -2154,10 +2220,10 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) this.flagC = this.flagN = this.flagZ = result; this.flagV = result ^ dst; } else { - if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= + if ((dst = this.readWordByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE))) >= 0) { result = dst << 1; - if (this.writeWordByAddr(dstAddr, result) >= 0) { + if (this.writeWordByPhysical(dstAddr, result) >= 0) { this.flagC = this.flagN = this.flagZ = result; this.flagV = result ^ dst; } @@ -2167,7 +2233,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) case 0xD00: /*0006400*/ // MARK 0064nn //LOG_INSTRUCTION(opCode, 8, "MARK"); virtualAddress = (this.regsGen[7] + ((opCode & 0x3F) /*077*/ << 1)) & 0xffff; - if ((src = this.readWordByVirtual(virtualAddress | 0x10000)) >= 0) { + if ((src = this.readWordByVirtual(virtualAddress | PDP11.ACCESS.DSPACE)) >= 0) { this.regsGen[7] = this.regsGen[5]; this.regsGen[5] = src; this.regsGen[6] = (virtualAddress + 2) & 0xffff; @@ -2219,7 +2285,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) this.mmuMode = (this.PSW >> 12) & 3; if ((dstAddr = this.mapVirtualToPhysical(virtualAddress, PDP11.ACCESS.WRITE)) >= 0) { this.mmuMode = (this.PSW >> 14) & 3; - if (this.writeWordByAddr(dstAddr, dst) >= 0) { + if (this.writeWordByPhysical(dstAddr, dst) >= 0) { this.flagN = this.flagZ = dst; this.flagV = 0; } @@ -2230,9 +2296,12 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0xDC0: /*0006700*/ // SXT 0067DD //LOG_INSTRUCTION(opCode, 1, "SXT"); - if ((dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.WRITE)) >= 0) { // write word + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dstAddr = this.getAddr(opCode, PDP11.ACCESS.WRITE)) >= 0) { // write word result = -((this.flagN >> 15) & 1); - if (this.writeWordByAddr(dstAddr, result) >= 0) { + if (this.writeWordByPhysical(dstAddr, result) >= 0) { this.flagZ = result; this.flagV = 0; } @@ -2240,23 +2309,26 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0x8A00: /*0105000*/ // CLRB 1050DD //LOG_INSTRUCTION(opCode, 1, "CLRB"); - if (!(opCode & 0x38)) { - this.regsGen[opCode & 7] &= 0xff00; - this.flagN = this.flagC = this.flagV = this.flagZ = 0; - } else { - if ((dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.WRITE_BYTE)) >= 0) { // write byte - if (this.writeByteByAddr(dstAddr, 0) >= 0) { - this.flagN = this.flagC = this.flagV = this.flagZ = 0; - } - } - } + // if (!(opCode & 0x38)) { + // this.regsGen[opCode & 7] &= 0xff00; + // this.flagN = this.flagC = this.flagV = this.flagZ = 0; + // } else { + // if ((dstAddr = this.getAddr(opCode, PDP11.ACCESS.WRITE_BYTE)) >= 0) { // write byte + // if (this.writeByteByPhysical(dstAddr, 0) >= 0) { + // this.flagN = this.flagC = this.flagV = this.flagZ = 0; + // } + // } + // } break; case 0x8A40: /*0105100*/ // COMB 1051DD //LOG_INSTRUCTION(opCode, 1, "COMB"); - if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dst = this.readByteByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) { result = ~dst; - if (this.writeByteByAddr(dstAddr, result) >= 0) { + if (this.writeByteByPhysical(dstAddr, result) >= 0) { this.flagN = this.flagZ = result << 8; this.flagC = 0x10000; this.flagV = 0; @@ -2265,10 +2337,13 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0x8A80: /*0105200*/ // INCB 1052DD //LOG_INSTRUCTION(opCode, 1, "INCB"); - if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dst = this.readByteByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) { result = dst + 1; - if (this.writeByteByAddr(dstAddr, result) >= 0) { + if (this.writeByteByPhysical(dstAddr, result) >= 0) { this.flagN = this.flagZ = result << 8; this.flagV = (result & (result ^ dst)) << 8; } @@ -2276,10 +2351,13 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0x8AC0: /*0105300*/ // DECB 1053DD //LOG_INSTRUCTION(opCode, 1, "DECB"); - if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dst = this.readByteByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) { result = dst - 1; - if (this.writeByteByAddr(dstAddr, result) >= 0) { + if (this.writeByteByPhysical(dstAddr, result) >= 0) { this.flagN = this.flagZ = result << 8; this.flagV = ((result ^ dst) & dst) << 8; } @@ -2287,10 +2365,13 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0x8B00: /*0105400*/ // NEGB 1054DD //LOG_INSTRUCTION(opCode, 1, "NEGB"); - if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dst = this.readByteByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) { result = -dst; - if (this.writeByteByAddr(dstAddr, result) >= 0) { + if (this.writeByteByPhysical(dstAddr, result) >= 0) { this.flagC = this.flagN = this.flagZ = result << 8; this.flagV = (result & dst) << 8; } @@ -2298,10 +2379,13 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0x8B40: /*0105500*/ // ADCB 01055DD //LOG_INSTRUCTION(opCode, 1, "ADCB"); - if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dst = this.readByteByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) { result = dst + ((this.flagC >> 16) & 1); - if (this.writeByteByAddr(dstAddr, result) >= 0) { + if (this.writeByteByPhysical(dstAddr, result) >= 0) { this.flagN = this.flagZ = this.flagC = result << 8; this.flagV = (result & (result ^ dst)) << 8; } @@ -2309,10 +2393,13 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0x8B80: /*0105600*/ // SBCB 01056DD //LOG_INSTRUCTION(opCode, 1, "SBCB"); - if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dst = this.readByteByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) { result = dst - ((this.flagC >> 16) & 1); - if (this.writeByteByAddr(dstAddr, result) >= 0) { + if (this.writeByteByPhysical(dstAddr, result) >= 0) { this.flagN = this.flagZ = this.flagC = result << 8; this.flagV = ((result ^ dst) & dst) << 8; } @@ -2327,10 +2414,13 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0x8C00: /*0106000*/ // RORB 1060DD //LOG_INSTRUCTION(opCode, 1, "RORB"); - if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dst = this.readByteByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) { result = (((this.flagC & 0x10000) >> 8) | dst) >> 1; - if (this.writeByteByAddr(dstAddr, result) >= 0) { + if (this.writeByteByPhysical(dstAddr, result) >= 0) { this.flagC = (dst << 16); this.flagN = this.flagZ = (result << 8); this.flagV = this.flagN ^ (this.flagC >> 1); @@ -2339,10 +2429,13 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0x8C40: /*0106100*/ // ROLB 1061DD //LOG_INSTRUCTION(opCode, 1, "ROLB"); - if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dst = this.readByteByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) { result = (dst << 1) | ((this.flagC >> 16) & 1); - if (this.writeByteByAddr(dstAddr, result) >= 0) { + if (this.writeByteByPhysical(dstAddr, result) >= 0) { this.flagC = this.flagN = this.flagZ = result << 8; this.flagV = (result ^ dst) << 8; } @@ -2350,10 +2443,13 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0x8C80: /*0106200*/ // ASRB 1062DD //LOG_INSTRUCTION(opCode, 1, "ASRB"); - if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dst = this.readByteByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) { result = (dst & 0x80) | (dst >> 1); - if (this.writeByteByAddr(dstAddr, result) >= 0) { + if (this.writeByteByPhysical(dstAddr, result) >= 0) { this.flagC = dst << 16; this.flagN = this.flagZ = result << 8; this.flagV = this.flagN ^ (this.flagC >> 1); @@ -2362,10 +2458,13 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0x8CC0: /*0106300*/ // ASLB 1063DD //LOG_INSTRUCTION(opCode, 1, "ASLB"); - if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= + /* + * TODO: Here's an example where getAddr() could be called in the register-only case. + */ + if ((dst = this.readByteByPhysical(dstAddr = this.getAddr(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) { result = dst << 1; - if (this.writeByteByAddr(dstAddr, result) >= 0) { + if (this.writeByteByPhysical(dstAddr, result) >= 0) { this.flagC = this.flagN = this.flagZ = result << 8; this.flagV = (result ^ dst) << 8; } @@ -2393,7 +2492,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) } else { if ((virtualAddress = this.getVirtualByMode(opCode, 0)) >= 0) { this.mmuMode = (this.PSW >> 12) & 3; - if ((src = this.readWordByVirtual(virtualAddress | 0x10000)) >= 0) { + if ((src = this.readWordByVirtual(virtualAddress | PDP11.ACCESS.DSPACE)) >= 0) { this.mmuMode = (this.PSW >> 14) & 3; if (this.pushWord(src) >= 0) { this.flagN = this.flagZ = src; @@ -2419,10 +2518,9 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) } else { if ((virtualAddress = this.getVirtualByMode(opCode, 0)) >= 0) { this.mmuMode = (this.PSW >> 12) & 3; - if ((dstAddr = this.mapVirtualToPhysical(virtualAddress | - 0x10000, PDP11.ACCESS.WRITE)) >= 0) { + if ((dstAddr = this.mapVirtualToPhysical(virtualAddress | PDP11.ACCESS.DSPACE, PDP11.ACCESS.WRITE)) >= 0) { this.mmuMode = (this.PSW >> 14) & 3; - if (this.writeWordByAddr(dstAddr, dst) >= 0) { + if (this.writeWordByPhysical(dstAddr, dst) >= 0) { this.flagN = this.flagZ = dst; this.flagV = 0; } @@ -2435,8 +2533,8 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) // //LOG_INSTRUCTION(opCode, 1, "MFPS"); // src = this.getPSW() & 0xff; // if (instruction & 0x38) { - // if ((dstAddr = this.getAddrByMode(instruction, PDP11.ACCESS.WRITE_BYTE)) >= 0) { // write byte - // if (this.writeByteByAddr(dstAddr, src) >= 0) { + // if ((dstAddr = this.getAddr(instruction, PDP11.ACCESS.WRITE_BYTE)) >= 0) { // write byte + // if (this.writeByteByPhysical(dstAddr, src) >= 0) { // this.flagN = this.flagZ = src << 8; // this.flagV = 0; // } @@ -2467,17 +2565,17 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0xA0: /*0000240*/ // CLR CC 00024M Part 1 without N case 0xA8: /*0000250*/ // CLR CC 00025M Part 2 with N - if (opCode & 1) this.clearCF(); // CLC - if (opCode & 2) this.clearVF(); // CLV - if (opCode & 4) this.clearZF(); // CLZ - if (opCode & 8) this.clearNF(); // CLN + // if (opCode & 1) this.clearCF(); // CLC + // if (opCode & 2) this.clearVF(); // CLV + // if (opCode & 4) this.clearZF(); // CLZ + // if (opCode & 8) this.clearNF(); // CLN break; case 0xB0: /*0000260*/ // SET CC 00026M Part 1 without N case 0xB8: /*0000270*/ // SET CC 00026M Part 2 with N - if (opCode & 1) this.setCF(); // SEC - if (opCode & 2) this.setVF(); // SEV - if (opCode & 4) this.setZF(); // SEZ - if (opCode & 8) this.setNF(); // SEN + // if (opCode & 1) this.setCF(); // SEC + // if (opCode & 2) this.setVF(); // SEV + // if (opCode & 4) this.setZF(); // SEZ + // if (opCode & 8) this.setNF(); // SEN break; default: // Misc instructions (decode ALL remaining bits) xxxxxx switch (opCode) { @@ -2517,19 +2615,19 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) break; case 0x5: /*0000005*/ // RESET 000005 //LOG_INSTRUCTION(opCode, 0, "RESET"); - if (!(this.PSW & 0xc000)) { - this.resetRegs(); - this.bus.reset(); - // display.data = this.regsGen[0]; // TODO: Review - } + // if (!(this.PSW & 0xc000)) { + // this.resetRegs(); + // this.bus.reset(); + // // display.data = this.regsGen[0]; // TODO: Review + // } break; case 0x2: /*0000002*/ // RTI 000002 case 0x6: /*0000006*/ // RTT 000006 //LOG_INSTRUCTION(opCode, 0, "RTT"); dstAddr = this.regsGen[6]; - if ((virtualAddress = this.readWordByVirtual(dstAddr | 0x10000)) >= 0) { + if ((virtualAddress = this.readWordByVirtual(dstAddr | PDP11.ACCESS.DSPACE)) >= 0) { dstAddr = (dstAddr + 2) & 0xffff; - if ((savePSW = this.readWordByVirtual(dstAddr | 0x10000)) >= 0) { + if ((savePSW = this.readWordByVirtual(dstAddr | PDP11.ACCESS.DSPACE)) >= 0) { this.regsGen[6] = (dstAddr + 2) & 0xffff; savePSW &= 0xf8ff; if (this.PSW & 0xc000) { // user / super restrictions diff --git a/modules/pdp11/lib/defines.js b/modules/pdp11/lib/defines.js index 35f01d30b..83d177c2d 100644 --- a/modules/pdp11/lib/defines.js +++ b/modules/pdp11/lib/defines.js @@ -226,7 +226,8 @@ var PDP11 = { BYTE: 0x1, READ: 0x2, WRITE: 0x4, - UPDATE: 0x6 + UPDATE: 0x6, + DSPACE: 0x10000 // set bit 17 in any 16-bit virtual address that refers to D space (as opposed to I space) }, /* * Internal flags passed to writeByteByMode(), etc. @@ -276,13 +277,17 @@ var PDP11 = { /* * Assorted special (UNIBUS) addresses * - * Within the PDP-11's 18-bit address space, of the 0x40000 possible addresses, the top 8Kb (0x2000) - * is called the IOPAGE and is reserved for CPU and I/O registers. The IOPAGE spans 0x3E000-0x3FFFF. + * Within the PDP-11/45's 18-bit address space, of the 0x40000 possible addresses (256Kb), the top 0x2000 + * (8Kb) is called the IOPAGE and is reserved for CPU and I/O registers. The IOPAGE spans 0x3E000-0x3FFFF. * - * To map UNIBUS addresses to 22-bit physical addresses, a UNIBUS relocation map is used. It consists - * of 31 double-word registers that each hold a 22-bit base address. When UNIBUS relocation is enabled, - * the top 5 bits of an address select one of the 31 mapping registers, and the bottom 13 bits are then - * added to the contents of the selected mapping register. + * Within the PDP-11/70's 22-bit address space, of the 0x400000 possible addresses (4Mb), the top 0x20000 + * (256Kb) is mapped to the UNIBUS (not physical memory), and as before, the top 0x2000 (8Kb) of that is + * mapped to the IOPAGE. + * + * To map 18-bit UNIBUS addresses to 22-bit physical addresses, the 11/70 uses a UNIBUS relocation map. + * It consists of 31 double-word registers that each hold a 22-bit base address. When UNIBUS relocation + * is enabled, the top 5 bits of an address select one of the 31 mapping registers, and the bottom 13 bits + * are then added to the contents of the selected mapping register. * * ES6 ALERT: By using octal constants, this is the first place I'm dipping my toe into ECMAScript 6 waters. * If you're loading this raw source code into your browser, then by now (2016) you're almost certainly using @@ -293,11 +298,15 @@ var PDP11 = { * For more details: https://github.com/google/closure-compiler/wiki/ECMAScript6 */ UNIBUS: { //16-bit 18-bit 22-bit Hex Description - PSW: 0o177776, // 777776 17777776 0x3FFFFE PSW - SL: 0o177774, // Stack Limit + PSW: 0o177776, // 777776 17777776 0x3FFFFE Processor Status Word + SL: 0o177774, // Stack Limit Register PIR: 0o177772, // Program Interrupt Request - MB: 0o177770, // Microprogram break - CPUERR: 0o177766, // CPU error + MB: 0o177770, // Microprogram break (11/70 only?) + CPUERR: 0o177766, // CPU error (11/70 only?) + SYSID: 0o177764, // System ID Register (11/70 only?) + SIZE_HI: 0o177762, // Upper Size Register (always zero) (11/70 only?) + SIZE_LO: 0o177760, // Lower Size Register (last 32-word block) (11/70 only?) + DISPLAY: 0o177570, // Console Switch and Display MMR0: 0o177572, // 777572 17777572 MMR1: 0o177574, // 777574 17777574 MMR2: 0o177576, // 777576 17777576 diff --git a/modules/pdp11/lib/device.js b/modules/pdp11/lib/device.js index 28851a8aa..ee8dfc187 100644 --- a/modules/pdp11/lib/device.js +++ b/modules/pdp11/lib/device.js @@ -734,7 +734,7 @@ DevicePDP11.prototype.readData = function(meta, block, address, count) return; } for (word = 0; word < meta.blocksize && count > 0; word++) { - if (this.cpu.writeWordByAddr((meta.mapped? this.cpu.mapUnibus(address) : address), meta.cache[block][word]) < 0) { + if (this.cpu.writeWordByPhysical((meta.mapped? this.cpu.mapUnibus(address) : address), meta.cache[block][word]) < 0) { meta.postProcess(2, meta, block, address, count); // NXM return; } @@ -768,7 +768,7 @@ DevicePDP11.prototype.writeData = function(meta, block, address, count) } } for (word = 0; word < meta.blocksize && count > 0; word++) { - data = this.cpu.readWordByAddr((meta.mapped? this.cpu.mapUnibus(address) : address)); + data = this.cpu.readWordByPhysical((meta.mapped? this.cpu.mapUnibus(address) : address)); if (data < 0) { meta.postProcess(2, meta, block, address, count); // NXM return; diff --git a/versions/pdp11/1.30.0/pdp11-dbg.js b/versions/pdp11/1.30.0/pdp11-dbg.js index b7c7b5b12..f2b9c5de3 100644 --- a/versions/pdp11/1.30.0/pdp11-dbg.js +++ b/versions/pdp11/1.30.0/pdp11-dbg.js @@ -1,219 +1,216 @@ (function(){var l; -function aa(a,b){var d;if(a){b||(b=10);var c=a.charAt(0),f=0>=3;return(d?"0o":"")+c}function r(a,b,d){var c="";b?8=f?48:55),c=String.fromCharCode(f)+c;a>>=4}return(d?"0x":"")+c} -function da(a){var b=a,d=a.lastIndexOf("/");0<=d&&(b=a.substr(d+1));d=b.indexOf("&");0":">",'"':""","'":"'"};function na(a){return a.replace(/[&<>"']/g,function(a){return ma[a]})}function oa(a,b){return(a+" ").slice(0,b)} -function pa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function qa(a,b,d){var c=0,f=a.length,e=0;for(d||(d=function(a,b){return a>b?1:a>1,g;g=d(b,a[h]);0a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} -function ua(a,b,d,c){var f=0,e=null,h=null;if("object"==typeof resources&&(e=resources[a]))return c&&c(a,e,f),[e,f];if(d&&"function"==typeof resources)return resources(a,function(b,d){c&&c(a,b,d)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(g.onreadystatechange=function(){4===g.readyState&&(e=g.responseText,200==g.status||!g.status&&e.length&&"file:"==(window?window.location.protocol:"file:")||(f=g.status||-1),c&&c(a,e,f))});if(b&&"object"== -typeof b){var k="",m;for(m in b)b.hasOwnProperty(m)&&(k&&(k+="&"),k+=m+"="+encodeURIComponent(b[m]));k=k.replace(/%20/g,"+");g.open("POST",a,!!d);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(k)}else g.open("GET",a,!!d),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();d||(e=g.responseText,200!=g.status&&(f=g.status||-1),c&&c(a,e,f),h=[e,f]);return h}function ha(){return"http://"+(window?window.location.host:"www.pcjs.org")} -function t(a){window&&window.alert(a)}function va(a){var b=!1;window&&(b=window.confirm(a));return b}var za=null;function Aa(){if(null==za){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}za=a}return za}function Ba(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(d){}return b} -function Ca(a,b){try{return window.localStorage.setItem(a,b),!0}catch(d){}return!1}function Da(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ea(a,b,d){function c(){--a;0<=a&&(b()||(a=0));0b?this.Bb=this.id:(this.oc=this.id.substr(0,b),this.Bb=this.id.substr(b+1));this[a]=d;this.A={ready:!1,nb:!1,dc:!1,fa:!1,error:!1};this.Wb=null;this.A.error=!1;this.O={};this.I=null;this.ia=c||0;v.push(this)}var Ta=void 0,Ua={}; -if(window){Ta||(Ta=window.location.search.substr(1));for(var Va,Wa=/\+/g,Xa=/([^&=]+)=?([^&]*)/g;Va=Xa.exec(Ta);)Ua[decodeURIComponent(Va[1].replace(Wa," "))]=decodeURIComponent(Va[2].replace(Wa," "))}function Ya(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var d=typeof a;if("object"!==d&&"function"!==d)throw new TypeError;}b.prototype=a;return new b} -function w(a,b){b||(b=u);a.prototype=Ya(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Za=window.PCjs.Machines||(window.PCjs.Machines={}),v=window.PCjs.Components||(window.PCjs.Components=[])}else Za={},v=[];function $a(a,b,d){Za[a]&&b&&(Za[a][b]=d)}function ab(a){var b,d=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b>1)+2;10>this.Y&&(this.Y=10);15>2;this.g=this.Aa-1;this.C=this.G/this.Aa|0;this.F=this.C-1;this.Ta=[];this.J=null;this.Gb=this.Cc;a=new H;Bb(a,this.I);this.R=Array(this.C);for(b=0;b>8:d[2](b)&255}else if(b&1&&(d=this.controller.Ta[a&-2],d[2]))return d[2](b&-2)>>8;return this.controller.Gb(b,-1,1)} -function Db(a,b,d){var c=this.controller.Ta[a];if(c){if(c[1]){c[1](b,d);return}if(c[3]){a=c[2]?c[2](d):0;if(d&1)c[3](a&255|b<<8,d&-2);else c[3](a&-256|b,d);return}}else if(d&1&&(c=this.controller.Ta[a&-2],c[3])){d&=-2;a=c[2]?c[2](d):0;c[3](a&255|b<<8,d);return}this.controller.Gb(d,b,1)}function Eb(a,b){if(a=this.controller.Ta[a]){if(a[2])return a[2](b);if(a[0])return a[0](b)|a[0](b+1)<<8}return this.controller.Gb(b,-1,0)} -function Fb(a,b,d){if(a=this.controller.Ta[a]){if(a[3]){a[3](b,d);return}if(a[1]){a[1](b&255,d);a[1](b>>8,d+1);return}}this.controller.Gb(d,b,0)}l=Ab.prototype;l.reset=function(){this.J&&this.J()};l.Cc=function(){return 0};l.Na=function(a,b){b||this.reset();return!0}; -function Gb(a,b,d,c,f){for(var e=b,h=d,g=e>>>a.Y;0h&&(n=h);if(k&&k.size){if(k.type==c&&k.controller==f){if(e+h<=k.D)return k.Ub+=k.D-e,k.D=e,!0;if(e>=k.D+k.Ub){n=k.size-(e-m);n>h&&(n=h);k.Ub=e-k.D+n;e=m+a.Aa;h-=n;g++;continue}}return Ib(1,e,h)}e=new H(e,n,a.Aa,c,f);Bb(e,a.I,k);a.R[g++]=e;e=m+a.Aa;h-=n}return 0>=h?(a.status(Math.floor(d/1024)+"Kb "+Jb[c]+" at "+r(b,8,!0)),!0):Ib(2,b,d)} -l.Hb=function(a){return this.R[(a&this.H)>>>this.Y].sb(a&this.g,a)};l.Ha=function(a){var b=a&this.g,d=(a&this.H)>>>this.Y;return b!=this.g?this.R[d].vc(b,a):this.R[d++].sb(b,a)|this.R[d&this.F].sb(0,a+1)<<8};function Kb(a,b){var d=b&a.g,c=(b&a.H)>>>a.Y;return d!=a.g?a.R[c].hc(d,b):a.R[c++].Ob(d,b)|a.R[c&a.F].Ob(0,b+1)<<8}l.bc=function(a,b){this.R[(a&this.H)>>>this.Y].xb(a&this.g,b&255,a)}; -l.jc=function(a,b){var d=a&this.g,c=(a&this.H)>>>this.Y;d!=this.g?this.R[c].Bc(d,b&65535,a):(this.R[c++].xb(d,b&255,a),this.R[c&this.F].xb(0,b>>8&255,a+1))};function Lb(a){for(var b=0,d=[],c=0;c>=3;return(d?"0o":"")+c}function r(a,b,d){var c="";b?8=e?48:55),c=String.fromCharCode(e)+c;a>>=4}return(d?"0x":"")+c} +function da(a){var b=a,d=a.lastIndexOf("/");0<=d&&(b=a.substr(d+1));d=b.indexOf("&");0":">",'"':""","'":"'"};function ma(a){return a.replace(/[&<>"']/g,function(a){return la[a]})}function na(a,b){return(a+" ").slice(0,b)} +function pa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function qa(a,b,d){var c=0,e=a.length,f=0;for(d||(d=function(a,b){return a>b?1:a>1,h;h=d(b,a[g]);0a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} +function wa(a,b,d,c){var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return c&&c(a,f,e),[f,e];if(d&&"function"==typeof resources)return resources(a,function(b,d){c&&c(a,b,d)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),c&&c(a,f,e))});if(b&&"object"== +typeof b){var k="",m;for(m in b)b.hasOwnProperty(m)&&(k&&(k+="&"),k+=m+"="+encodeURIComponent(b[m]));k=k.replace(/%20/g,"+");h.open("POST",a,!!d);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,!!d),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();d||(f=h.responseText,200!=h.status&&(e=h.status||-1),c&&c(a,f,e),g=[f,e]);return g}function ka(){return"http://"+(window?window.location.host:"www.pcjs.org")} +function t(a){window&&window.alert(a)}function xa(a){var b=!1;window&&(b=window.confirm(a));return b}var ya=null;function za(){if(null==ya){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}ya=a}return ya}function Aa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(d){}return b} +function Ba(a,b){try{return window.localStorage.setItem(a,b),!0}catch(d){}return!1}function Ca(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Da(a,b,d){function c(){--a;0<=a&&(b()||(a=0));0b?this.Fb=this.id:(this.tc=this.id.substr(0,b),this.Fb=this.id.substr(b+1));this[a]=d;this.j={ready:!1,qb:!1,hc:!1,ga:!1,error:!1};this.$b=null;this.j.error=!1;this.P={};this.I=null;this.ja=c||0;v.push(this)}var Sa=void 0,Ta={}; +if(window){Sa||(Sa=window.location.search.substr(1));for(var Ua,Va=/\+/g,Wa=/([^&=]+)=?([^&]*)/g;Ua=Wa.exec(Sa);)Ta[decodeURIComponent(Ua[1].replace(Va," "))]=decodeURIComponent(Ua[2].replace(Va," "))}function Xa(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var d=typeof a;if("object"!==d&&"function"!==d)throw new TypeError;}b.prototype=a;return new b} +function w(a,b){b||(b=u);a.prototype=Xa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Ya=window.PCjs.Machines||(window.PCjs.Machines={}),v=window.PCjs.Components||(window.PCjs.Components=[])}else Ya={},v=[];function Za(a,b,d){Ya[a]&&b&&(Ya[a][b]=d)}function $a(a){var b,d=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b>1)+2;10>this.Z&&(this.Z=10);15>2;this.g=this.Da-1;this.u=this.G/this.Da|0;this.B=this.u-1;this.Wa=[];this.J=null;this.Mb=this.Gc;a=new I;zb(a,this.I);this.S=Array(this.u);for(b=0;b>8:c[2](b)&255}else if(b&1&&(c=d.Wa[a&-2],c[2]))return c[2](b&-2)>>8;return d.Mb(b,-1,1)} +function Bb(a,b,d){var c=this.controller,e=c.Wa[a];if(e){if(e[1]){e[1](b,d);return}if(e[3]){a=e[2]?e[2](d):0;if(d&1)e[3](a&255|b<<8,d&-2);else e[3](a&-256|b,d);return}}else if(d&1&&(e=c.Wa[a&-2],e[3])){d&=-2;a=e[2]?e[2](d):0;e[3](a&255|b<<8,d);return}c.Mb(d,b,1)}function Cb(a,b){var d=this.controller;if(a=d.Wa[a]){if(a[2])return a[2](b);if(a[0])return a[0](b)|a[0](b+1)<<8}return d.Mb(b,-1,0)} +function Db(a,b,d){var c=this.controller;if(a=c.Wa[a]){if(a[3]){a[3](b,d);return}if(a[1]){a[1](b&255,d);a[1](b>>8,d+1);return}}c.Mb(d,b,0)}l=yb.prototype;l.reset=function(){this.J&&this.J()};l.Gc=function(){return 0};l.Qa=function(a,b){b||this.reset();return!0}; +function Eb(a,b,d,c,e){for(var f=b,g=d,h=f>>>a.Z;0g&&(n=g);if(k&&k.size){if(k.type==c&&k.controller==e){if(f+g<=k.w)return k.Zb+=k.w-f,k.w=f,!0;if(f>=k.w+k.Zb){n=k.size-(f-m);n>g&&(n=g);k.Zb=f-k.w+n;f=m+a.Da;g-=n;h++;continue}}return Gb(1,f,g)}f=new I(f,n,a.Da,c,e);zb(f,a.I,k);a.S[h++]=f;f=m+a.Da;g-=n}return 0>=g?(a.status(Math.floor(d/1024)+"Kb "+Hb[c]+" at "+r(b,8,!0)),!0):Gb(2,b,d)} +l.Nb=function(a){return this.S[(a&this.H)>>>this.Z].wb(a&this.g,a)};l.La=function(a){var b=a&this.g,d=(a&this.H)>>>this.Z;return b!=this.g?this.S[d].zc(b,a):this.S[d++].wb(b,a)|this.S[d&this.B].wb(0,a+1)<<8};function Ib(a,b){var d=b&a.g,c=(b&a.H)>>>a.Z;return d!=a.g?a.S[c].mc(d,b):a.S[c++].Tb(d,b)|a.S[c&a.B].Tb(0,b+1)<<8}l.fc=function(a,b){this.S[(a&this.H)>>>this.Z].Bb(a&this.g,b&255,a)}; +l.oc=function(a,b){var d=a&this.g,c=(a&this.H)>>>this.Z;d!=this.g?this.S[c].Fc(d,b&65535,a):(this.S[c++].Bb(d,b&255,a),this.S[c&this.B].Bb(0,b>>8&255,a+1))};function Jb(a){for(var b=0,d=[],c=0;c>13&7;"undefined"===typeof b.na[e]&&(b.na[e]={cache:[],postProcess:a.Vc,drive:e,blocksize:256,mapped:0,maxblock:b.cb[e]*b.Z[e],url:"rk"+e+".dsk"});b.S&=-129;switch(b.S>>1&7){case 0:b.Qb=2496;b.la=0;b.S=128;b.ta=0;break;case 1:if((b.ta>>4&511)>=b.cb[e]){b.la|=32832;b.S|=49152;break}if((b.ta&15)>=b.Z[e]){b.la|=32800;b.S|=49152;break}d=(b.ta>>4&511)*b.Z[e]+(b.ta&15);c=(b.S&48)<<12|b.Pb;f=65536-b.Rb&65535;cc(a,b.na[e],d,c,f);return;case 2:if((b.ta>>4&511)>=b.cb[e])b.la|= -32832,b.S|=49152;else if((b.ta&15)>=b.Z[e])b.la|=32800,b.S|=49152;else{d=(b.ta>>4&511)*b.Z[e]+(b.ta&15);c=(b.S&48)<<12|b.Pb;f=65536-b.Rb&65535;a.Zb(b.na[e],d,c,f);return}}b.Qb=e<<13|b.Qb&8176|b.ta%9&15;I(a.b,20,160,144,function(){b.S=b.S&65534|128;return!!(b.S&64)})}l.Vc=function(a,b,d,c,f){var e=this.C;e.Pb=c&65535;e.S=e.S&-49|c>>12&48;e.Rb=65536-f&65535;switch(a){case 1:e.la|=33024;e.S|=49152;break;case 2:e.la|=33792,e.S|=49152}I(this.b,20,160,144,function(){e.S=e.S&65534|128;return!!(e.S&64)})}; -function dc(a){var b=a.G,d,c,f,e=b.K>>8&3;b.K&=-2;"undefined"===typeof b.na[e]&&(b.na[e]={cache:[],postProcess:a.Wc,drive:e,blocksize:128,mapped:1,maxblock:b.cb[e]*b.Z[e],url:"rl"+e+".dsk"});switch(b.K>>1&7){case 2:b.Ya&8&&(b.K&=63);b.Ya=b.Ec[e]|b.ab&64;break;case 3:1==(b.da&3)&&(b.ab=b.da&4?b.ab+(b.da&65408)&65408|b.da<<2&64:b.ab-(b.da&65408)&65408|b.da<<2&64,b.da=b.ab);break;case 4:b.Ya=b.ab;break;case 5:if(b.da>>6>=b.cb[e]){b.K|=37888;break}if((b.da&63)>=b.Z[e]){b.K|=37888;break}d=(b.da>>6)*b.Z[e]+ -(b.da&63);c=(b.Ua&63)<<16|b.Fb;f=65536-b.Ya&65535;cc(a,b.na[e],d,c,f);return;case 6:if(b.da>>6>=b.cb[e])b.K|=37888;else if((b.da&63)>=b.Z[e])b.K|=37888;else{d=(b.da>>6)*b.Z[e]+(b.da&63);c=(b.Ua&63)<<16|b.Fb;f=65536-b.Ya&65535;a.Zb(b.na[e],d,c,f);return}}I(a.b,20,160,112,function(){b.K|=129;return!!(b.K&64)})} -l.Wc=function(a,b,d,c,f){var e=this.G;e.Fb=c&65535;e.K=e.K&-49|c>>12&48;e.Ua=c>>16&63;e.da=~~(d/e.Z[b.La])<<6|d%e.Z[b.La];e.ab=e.da;e.Ya=65536-f&65535;switch(a){case 1:e.K|=33792;break;case 2:e.K|=40960}I(this.b,20,160,112,function(){e.K|=129;return!!(e.K&64)})};function ec(a){a=a.J;a.U=2176;a.Ba=0;a.pa=[4544,4544,4544,4544,4544,4544,4544,4544];a.ub=[0,0,0,0,0,0,0,0];a.kb=a.vb=a.tb=a.$a=a.ic=0} -function fc(a,b){var d=a.J,c,f,e;d.U&=-16513;d.Ba&=-2049;d.pa[b]&=-1153;I(a.b,-1,0,172);"undefined"===typeof d.na[b]&&(d.na[b]={cache:[],postProcess:a.Xc,drive:b,blocksize:256,mapped:0,maxblock:d.cc[0]*d.bb[0]*d.Z[0],url:"rp"+b+".dsk"});switch(d.U&63){case 5:d.ac[b]=d.Qa[b];d.U|=32896;d.pa[b]|=32896;d.kb|=1<=d.cc[0]||d.Ca[b]>>8>=d.bb[0]||(d.Ca[b]&255)>=d.Z[0]){d.ub[b]|=1024;d.U|=49152;break}c=(d.Qa[b]*d.bb[0]+(d.Ca[b]>>8))*d.Z[0]+ -(d.Ca[b]&255);f=(d.$a&63)<<16|d.tb;e=65536-d.vb&65535;cc(a,d.na[b],c,f,e);return;case 57:if(d.Qa[b]>=d.cc[0]||d.Ca[b]>>8>=d.bb[0]||(d.Ca[b]&255)>=d.Z[0])d.ub[b]|=1024,d.U|=49152;else{c=(d.Qa[b]*d.bb[0]+(d.Ca[b]>>8))*d.Z[0]+(d.Ca[b]&255);f=(d.$a&63)<<16|d.tb;e=65536-d.vb&65535;a.Zb(d.na[b],c,f,e);return}}I(a.b,3,160,172,function(){d.U=d.U&65534|128;d.pa[b]|=128;return!!(d.U&64)})} -l.Xc=function(a,b,d,c,f){var e=this.J;e.vb=65536-f&65535;e.tb=c&65535;e.U=e.U&-769|c>>8&768;e.$a=c>>16&63;f=~~(d/e.Z[0]);c=~~(f/e.bb[0]);e.Ca[b.La]=f%e.bb[0]<<8|d%e.Z[0];e.ac[b.La]=e.Qa[b.La]=c;e.kb|=1<=b.Rc-1&&(e.pa[b.La]|=1024);switch(a){case 1:e.Ba|=512;e.U|=49152;break;case 2:e.Ba|=2048,e.U|=49152}I(this.b,20,160,172,function(){e.pa[b.La]|=128;e.U=e.U&65534|128;return!!(e.U&64)})};l.Oc=function(){this.F.K|=128;this.F.K&64&&I(this.b,0,192,64)}; -function gc(a,b,d,c,f,e){var h=~~((e+d.Va-1)/d.Va),g=new XMLHttpRequest;2048>h&&c+2048L(this.b,a.Qc?hc(this.b,d):d,a.cache[b][f])){a.Yb(2,a,b,d,c);return}d+=2;--c}b++}a.Yb(0,a,b,d,c)}; -function cc(a,b,d,c,f){for(var e,h;0h){b.Yb(2,b,d,c,f);return}b.cache[d][e]=h;c+=2;--f}d++}b.Yb(0,b,d,c,f)}l.reset=function(){this.g.pb=this.g.pb&-120|20;this.N.Ia=0;this.N.qa=128;this.F.K=0;this.C.S=128;this.G.K=128;ec(this)}; -l.Dc=function(a,b,d){var c,f,e=this.b;switch(a&-64){case 4194240:switch(a&-2){case 4194300:0>b?c=e.Pa&65280:(a&1&&(b<<=8),e.Pa=b|255,c=0);break;case 4194298:if(0>b)c=e.$b;else{a&1&&(b<<=8);if(c=b&65024){f=c>>9;do c+=34;while(f>>=1)}e.$b=c;e.Oa=2}break;case 4194294:if(70!==e.gb)return K(e,4,222);0>b?c=e.M:c=e.M=0;break;case 4194292:if(70!==e.gb)return K(e,4,224);c=1;break;case 4194290:if(70!==e.gb)return K(e,4,226);c=0;break;case 4194288:if(70!==e.gb)return K(e,4,228);c=61183;break;case 4194296:0<= -b&&!(a&1)&&(b&=255);case 4194286:case 4194284:case 4194282:case 4194280:case 4194278:case 4194276:case 4194274:case 4194272:if(70!==e.gb)return K(e,4,232);f=a-4194272>>1;0>b?c=e.fc[f]:(c=J(this,e.fc[f],a,b,d),0<=c&&(e.fc[f]=c));break;case 4194254:return a&1?e.L>>14&1?(0<=b&&(e.f[6]=b),c=e.f[6]):(0<=b&&(e.sa[3]=b),c=e.sa[3]):e.L>>14&0?(0<=b&&(e.f[6]=b),c=e.f[6]):(0<=b&&(e.sa[1]=b),c=e.sa[1]),c;case 4194252:case 4194250:case 4194248:return f=a&7,e.L&2048?(0<=b&&(e.f[f]=b),c=e.f[f]):(0<=b&&(e.Za[f]= -b),c=e.Za[f]),c;case 4194246:return a&1?(0<=b&&(e.f[7]=b),c=e.f[7]):e.L>>14&0?(0<=b&&(e.f[6]=b),c=e.f[6]):(0<=b&&(e.sa[0]=b),c=e.sa[0]),c;case 4194244:case 4194242:case 4194240:return f=a&7,e.L&2048?(0<=b&&(e.Za[f]=b),c=e.Za[f]):(0<=b&&(e.f[f]=b),c=e.f[f]),c;default:return e.M|=16,K(e,4,124)}break;case 4194176:f=a>>1&31;c=J(this,e.ka[3][f],a,b,d);0<=c&&(e.ka[3][f]=c,e.ka[3][f&15]&=65295);break;case 4194112:var h=this.N;f=this.F;switch(a&-2){case 4194174:c=J(this,e.Ab,a,b,d);0<=c&&(e.Ab=c);break;case 4194172:c= -e.Da;c&65280&&(c=(c<<8|c>>8)&65535);break;case 4194170:e.ca=e.ca&62337|e.Kb<<5|e.Xb<<1;0>b?c=e.ca:(c=J(this,e.ca,a,b,d),0<=c&&(e.ca=c&=62337,e.Kb=c>>5&3,e.Xb=c>>1&15,c&257?(f=2,e.Ra&16&&(f=1),e.Jb=c&1?ub|B:B):(e.Jb=0,f=4),this.g.pb=this.g.pb&-8|f));break;case 4194168:0>b?c=this.g.dd&65535:(c=J(this,this.g.data,a,b,d),0<=c&&(this.g.data=c));break;case 4194166:0<=b&&(b&127&&(h.Ic=0),h.qa&=-129,I(e,100,128,52,function(){h.qa|=128;return!!(h.qa&64)}));c=0;break;case 4194164:0>b?c=h.qa:(c=J(this,h.qa, -a,b,d),0<=c&&(128==(h.qa&192)&&c&64&&I(e,8,128,52,function(){h.qa|=128;return!!(h.qa&64)}),h.qa=h.qa&128|c&-129));break;case 4194162:c=0;0>b&&(h.Ia&=-129,0b?c=h.Ia:(c=J(this,h.Ia,a,b,d),0<=c&&(h.Ia=h.Ia&128|c&-129));break;case 4194150:0>b?(c=f.K,f.K&=-129):(c=J(this,f.K,a,b,d),0<=c&&(c&64&&!f.Ib&&(setInterval(this.Oc.bind(this),25),f.Ib=1),f.K=c&-129));break;default:return e.M|= -16,K(e,4,126)}break;case 4194048:f=this.C;switch(a&-2){case 4194048:c=J(this,f.Qb,a,b,d);0<=c&&(f.Qb=c);break;case 4194050:c=J(this,f.la,a,b,d);0<=c&&(f.la=c);break;case 4194052:c=J(this,f.S,a,b,d);0<=b&&0<=c&&(f.S=c&-36993|f.S&36992,f.S&1&&bc(this));break;case 4194054:c=J(this,f.Rb,a,b,d);0<=c&&(f.Rb=c);break;case 4194056:c=J(this,f.Pb,a,b,d);0<=c&&(f.Pb=c);break;case 4194058:c=J(this,f.ta,a,b,d);0<=c&&(f.ta=c);break;case 4194060:break;case 4194062:c=J(this,f.wc,a,b,d);0<=c&&(f.wc=c);break;default:return e.M|= -16,K(e,4,128)}break;case 4193728:var g=this.J;f=g.Ba&7;switch(a&-2){case 4193728:c=J(this,g.U,a,b,d);0<=b&&0<=c&&(g.$a=g.$a&60|c>>8&3,g.U=c&17279|g.U&34944|2048,c&1&&g.U&128?fc(this,f):192==(c&192)&&I(e,0,160,172));break;case 4193730:c=J(this,g.vb,a,b,d);0<=c&&(g.vb=c);break;case 4193732:c=J(this,g.tb,a,b,d);0<=c&&(g.tb=c&65534);break;case 4193734:c=J(this,g.Ca[f],a,b,d);0<=c&&(g.Ca[f]=c&7967);break;case 4193736:c=J(this,g.Ba,a,b,d);0<=c&&(g.Ba=c&63|g.Ba&65472,c&128&&ec(this));break;case 4193738:c= -g.pa[f];break;case 4193740:c=g.ub[f];break;case 4193742:c=J(this,g.kb,a,b,d);0<=c&&(g.kb=c&255);break;case 4193744:c=g.bd[f];break;case 4193746:c=J(this,g.xc,a,b,d);0<=c&&(g.xc=c);break;case 4193748:c=J(this,g.yc[f],a,b,d);0<=c&&(g.yc[f]=c&1023);break;case 4193750:c=8210;break;case 4193752:c=g.cd[f];break;case 4193754:c=J(this,g.zc[f],a,b,d);0<=c&&(g.zc[f]=c);break;case 4193756:c=J(this,g.Qa[f],a,b,d);0<=c&&(g.Qa[f]=c&511);break;case 4193758:g.ac[f]=g.Qa[f];c=g.ac[f];break;case 4193760:c=g.$c[f]; -break;case 4193762:c=g.ad[f];break;case 4193764:c=g.Yc[f];break;case 4193766:c=g.Zc[f];break;case 4193768:c=J(this,g.$a,a,b,d);0<=c&&(g.$a=c&63,g.U=g.U&-769|(c&3)<<8);break;case 4193770:c=J(this,g.ic,a,b,d);0<=c&&(g.ic=c);break;default:return e.M|=16,K(e,4,132)}break;case 4192512:f=this.G;switch(a&-2){case 4192512:c=J(this,f.K,a,b,d);0<=b&&0<=c&&(f.Ua=f.Ua&60|c>>4&3,f.K=f.K&-1023|c&1022,f.K&128||dc(this));break;case 4192514:c=J(this,f.Fb,a,b,d);0<=c&&(f.Fb=c&65534);break;case 4192516:c=J(this,f.da, -a,b,d);0<=c&&(f.da=c);break;case 4192518:c=J(this,f.Ya,a,b,d);0<=c&&(f.Ya=c);break;case 4192520:c=J(this,f.Ua,a,b,d);0<=c&&(f.Ua=c&63,f.K=f.K&-49|(f.Ua&3)<<4);break;default:return e.M|=16,K(e,4,134)}break;case 4191552:switch(a&-2){case 4191566:0>b?c=e.Ra:(c=J(this,e.Ra,a,b,d),0<=c&&(70!==e.gb&&(c&=-49),e.Ra=c,e.ib[0]=c&4?15:7,e.ib[1]=c&2?15:7,e.ib[3]=c&1?15:7,e.Jb&&(f=2,e.Ra&16&&(f=1),this.g.pb=this.g.pb&-8|f)));break;default:return e.M|=16,K(e,4,136)}break;case 4191424:f=a>>1&31;c=J(this,e.ka[0][f], -a,b,d);0<=c&&(e.ka[0][f]=c,e.ka[0][f&15]&=65295);break;case 4191360:f=a>>1&31;c=J(this,e.ka[1][f],a,b,d);0<=c&&(e.ka[1][f]=c,e.ka[1][f&15]&=65295);break;case 4190400:case 4190336:if(70!==e.gb)return K(e,4,234);f=a>>2&31;c=e.Sb[f];a&2&&(c>>=16);c&=65535;0<=b&&(c=J(this,c,a,b,d),0<=c&&(e.Sb[f]=a&2?c<<16|e.Sb[f]&65535:e.Sb[f]&4294901760|c&65534));break;case 4188672:case 4188736:case 4188800:case 4188864:case 4188928:case 4188992:case 4189056:case 4189120:if(0>b)c=Yb[a>>1&255];else return e.M|=16,K(e, -4,138);break;default:return e.M|=16,K(e,4,142)}d&&0<=c&&(a&1?c>>=8:c&=255);"undefined"===typeof c&&console.log("panic(76)");return c};var ic={},Zb=(ic[65534]=[null,null,Mb.prototype.Uc,Mb.prototype.fd],ic);Pa(function(){for(var a=y(document,"pdp11","device"),b=0;b>1),this.b=new Int32Array(this.G,0,d>>2),pc(this,lc?qc:rc);else{this.b=Array(d>>2);for(a=0;a>2),b=0;b>8,d)},ba:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ra:function(a){var b=a>>2;a=(a&3)<<3;var d=this.b[b]>>a;return 24>a?d&65535:d&255|(this.b[b+1]&255)<<8},za:function(a,b){var d=a>> -2;a=(a&3)<<3;this.b[d]=this.b[d]&~(255<>2;a=(a&3)<<3;24>a?this.b[d]=this.b[d]&~(65535<>8);this.Wa=!0},$:function(a,b){if(this.I&&null!=this.D){var d=this.I;wc(d,this.D+a,1,d.X)&&d.ma(!0)}return this.Ob(a,b)},ga:function(a,b){if(this.I&&null!=this.D){var d=this.I;wc(d,this.D+a,2,d.X)&&d.ma(!0)}return this.hc(a,b)},wa:function(a,b,d){if(this.I&&null!=this.D){var c=this.I;wc(c,this.D+ -a,1,c.J)&&c.ma(!0)}this.H?this.C(a,b,d):this.yb(a,b,d)},Ja:function(a,b,d){if(this.I&&null!=this.D){var c=this.I;wc(c,this.D+a,2,c.J)&&c.ma(!0)}this.H?this.C(a,b,d):this.lc(a,b,d)},X:function(a){return this.g[a]},aa:function(a){return this.g[a]},ea:function(a){return this.J.getUint16(a,!0)},ha:function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.P[a>>1]},va:function(a,b){this.g[a]=b;this.Wa=!0},ya:function(a,b){this.g[a]=b;this.Wa=!0},Ea:function(a,b){this.J.setUint16(a,b,!0);this.Wa=!0},Sa:function(a, -b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.P[a>>1]=b;this.Wa=!0}};function Bb(a,b,d){a.I=b;a.O=a.F=0;d&&((a.O=d.O)&&vc(a,uc,!1),(a.F=d.F)&&tc(a,uc,!1))}function xc(a,b){b?--a.F||(a.xb=a.H?a.C:a.yb,a.Bc=a.H?a.N:a.lc):--a.O||(a.sb=a.Ob,a.vc=a.hc)}function tc(a,b,d){d&&a.F||(a.xb=!a.H&&b[1]||a.C,a.Bc=!a.H&&b[3]||a.N);if(d||void 0===d)a.yb=b[1]||a.C,a.lc=b[3]||a.N}function vc(a,b,d){d&&a.O||(a.sb=b[0]||a.T,a.vc=b[2]||a.W);if(d||void 0===d)a.Ob=b[0]||a.T,a.hc=b[2]||a.W} -function pc(a,b){b||(b=yc);vc(a,b,void 0);tc(a,b,void 0)}var yc=[],sc=[H.prototype.ba,H.prototype.za,H.prototype.ra,H.prototype.Bb],uc=[H.prototype.$,H.prototype.wa,H.prototype.ga,H.prototype.Ja];if(tb)var rc=[H.prototype.X,H.prototype.va,H.prototype.ea,H.prototype.Ea],qc=[H.prototype.aa,H.prototype.ya,H.prototype.ha,H.prototype.Sa]; -function zc(a,b){u.call(this,"CPU",a,zc,1);var d=a.multiplier||1;this.za=a.cycles||b;this.jb=d;this.ya=Math.round(this.za/1E4)/100;this.hb=this.ya*this.jb;this.A.ja=!1;this.A.kc=!1;this.A.Db=a.autoStart;this.A.sc=!1;this.A.ob=!1;this.Lb=this.$=0;this.Mb=a.csStart;this.qb=a.csInterval;this.rb=a.csStop;this.ra=[];this.Eb=this.lb.bind(this);A(this)}w(zc);var Ac=["power","reset"];l=zc.prototype; -l.Xa=function(a,b,d,c){this.F=a;this.H=b;this.I=c;for(b=0;b=a.$&&(a.$+=a.qb,d=!0);0<=a.rb&&a.rb<=Uc(a)&&(a.qb=a.rb=-1,Dc(a),a.ma(),d=!0);d&&a.i(Uc(a)+" cycles: checksum="+r(a.Lb))}} -function Vc(a,b,d,c){if(a.O[b]){void 0===d&&(hb(a,"Value for "+b+" is invalid"),a.ma());var f=a.I&&a.I.wa||8;d=!a.A.ja||a.A.sc?8==f?ca(d,c):r(d,c):"--------".substr(0,c||4);a.O[b].textContent!=d&&(a.O[b].textContent=d)}} -l.ua=function(a,b,d){var c=this;a=!1;switch(b){case "power":case "reset":this.O[b]=d;a=!0;break;case "run":this.O[b]=d;d.onclick=function(){var a;if(a=c.F)if(a=c.F,a.A.fa)a=!0;else{var b=null,d,g=ab(a.id);for(d=0;da.P/a.hb?b=1:c=!0;a.jb=b;b=a.ya*a.jb;if(a.hb!=b){a.hb=b;b=a.hb.toFixed(2)+"Mhz";var f=a.O.setSpeed;f&&(f.textContent=b);a.i("target speed: "+b)}d&&a.F&&a.F.Tb()}Xc(a,a.N);a.N=0;a.J=sa();a.T=0;Yc(a);return c}function Zc(a){a.W-=a.b;a.b=0} -l.lb=function(a){if(eb(this,!0)){if(!this.A.ja){Wc(this);this.F&&this.F.start(this.J,Uc(this));this.A.ja=!0;this.A.kc=!0;this.ea&&this.ea.start();var b=this.O.run;b&&(b.textContent="Halt");this.F&&(this.F.xa(!0),a&&this.F.Tb(!0))}this.Ea>=this.za&&Yc(this,!0);this.ga=0;this.va=sa();this.T&&(a=this.va-this.T,a>this.mb&&(this.J+=a,this.J>this.va&&(this.J=this.va)));try{do{for(var d,c=this.A.ob?1:this.wa,f=this.ra.length-1;0<=f;f--){var e=this.ra[f];0>e[0]||c>e[0]&&(c=e[0])}d=c;try{this.wb(d)}catch(m){if("number"!= -typeof m)throw m;}var h=this.W-this.b;a=h;for(var g=this.ra.length-1;0<=g;g--){var k=this.ra[g];0>k[0]||(k[0]-=a,0>=k[0]&&(k[0]=-1,k[1]()))}this.ga+=h;this.N+=h;Xc(this,0,!0);Tc(this,h);this.aa-=h;if(0>=this.aa){this.aa+=this.wa;15<=++this.zb&&(this.F&&this.F.xa(),this.zb=0);break}}while(this.A.ja)}catch(m){this.ma();Ec(this);this.F&&this.F.stop(sa(),Uc(this));eb(this,!1);hb(this,m.stack||m.message);return}d=setTimeout;c=this.Eb;this.T=sa();f=this.mb;this.ga&&(f=Math.round(f*this.ga/this.wa));f-= -this.T-this.va;if(e=this.T-this.J)this.P=Math.round(this.N/(10*e))/100,864E5<=e&&(this.X=0,Wc(this));if(0>f||this.Pf&&(this.J-=f),f=0;this.Ea+=this.ga;this.T+=f;d(c,f)}else Ec(this),this.F&&this.F.stop(sa(),Uc(this))};l.wb=function(){return 0};l.ma=function(a){fb(this,!0);Zc(this);Xc(this,this.N);this.N=0;if(this.A.ja){this.A.ja=!1;this.ea&&this.ea.stop();var b=this.O.run;b&&(b.textContent="Run")}this.A.complete=a};function Ec(a,b){a.F&&a.F.xa(b)} -function $c(a){this.Sc=+a.model||1170;this.Vb=a.resetAddr||0;zc.call(this,a,1E6);this.Ja=0;this.decode=ad.bind(this);this.B=65536;this.u=32768;this.w=65535;this.j=32768;this.f=[0,0,0,0,0,0,0,this.Vb];this.Za=[0,0,0,0,0,0];this.sa=[0,0,0,0];this.Pa=255;this.Xb=this.Kb=this.Jb=this.G=this.Ra=this.Ab=this.Da=this.ca=this.M=this.$b=0;this.ib=[7,7,7,7];this.ka=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535, -65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.Sb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.fc=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.g=-1;this.V=0;this.gb=70;this.ba=-1;this.C=[];this.ha=0;this.Oa=2;this.A.complete=this.A.Hc=!1}w($c,zc);l=$c.prototype; -l.reset=function(){this.A.ja&&this.ma();bd(this);Cc(this);this.A.error=!1;this.parent.reset.call(this)};function bd(a){a.Pa=255;a.M=0;a.C=[];a.$b=0;a.ca=a.Da=a.Ab=a.Ra=a.Jb=0;a.ib[0]=a.ib[1]=a.ib[3]=7;a.Kb=0}l.uc=function(){return 0};l.save=function(){var a=new cd(this);a.set(0,[]);a.set(1,[this.Sa,this.X,this.jb]);a.set(2,Lb(this.H));return a.data()}; -l.restore=function(a){var b=a[1];this.Sa=b[0];this.X=b[1];Wc(this,b[3]);a:{b=this.H;a=a[2];var d;for(d=0;db){a.C[e].Fa-=b;break}b-=a.C[e].Fa}a.C.splice(e+1,0,{delay:b,priority:d&224,vector:c,callback:f})}a.Oa=2}function $b(a){return a.L=a.L&63728|(a.j&32768?8:0)|(a.w&65535?0:4)|(a.u&32768?2:0)|(a.B&65536?1:0)} -function ac(a,b){a.j=b<<12;a.w=~b&4;a.u=b<<14;a.B=b<<16;if((b^a.L)&2048)for(var d=a.Za.length;0<=--d;){var c=a.f[d];a.f[d]=a.Za[d];a.Za[d]=c}a.G=b>>14&3;d=a.L>>14&3;a.G!=d&&(a.sa[d]=a.f[6],a.f[6]=a.sa[a.G]);a.Oa=2;a.L=b}function dd(a,b){a.V&128||(a.j=a.w=a.B=b,a.u=0)}function ed(a,b){a.V&128||(a.j=a.w=b,a.u=0)}function fd(a,b,d,c){a.V&128||(a.j=a.w=a.B=b,a.u=(d^c)&(c^b))} -function K(a,b,d){var c,f,e=0;0>a.ba?a.ba=$b(a):a.G||(b=4,e=1);a.ca&57344||(a.Da=63222,a.Ab=b);a.G=0;0<=(c=N(a,b|65536))&&0<=(f=N(a,b+2&65535|65536))&&(ac(a,f&53247|a.ba>>2&12288),e&&(a.M|=4,a.f[6]=4),0<=gd(a,a.ba)&&0<=gd(a,a.f[7])&&(a.f[7]=c));a.V&=-113;a.ba=-1;throw b|d<<8;}function hc(a,b){var d=b>>13&31;31>d?a.Ra&32&&(b=a.Sb[d]+(b&8190)&4194302,3932160<=b&&4186112>b&&console.log("panic(898)")):b|=4186112;return b} -function hd(a,b,d){var c,f,e,h=0;if(d&a.Jb){c=b>>13&a.ib[a.G];f=a.ka[a.G][c];e=(a.ka[a.G][c+16]<<6)+(b&8191)&4194303;a.Ra&16?3932160<=e&&4186112>e&&(e=hc(a,e&262143)):(e&=262143,253952<=e&&(e|=4186112));3932160>e&&(3915776<=e&&(a.M|=32,K(a,4,24)),e&1&&!(d&1)&&(a.M|=64,K(a,4,26)));switch(f&7){case 1:h=4096;case 2:f|=128;d&B&&(h=8192);break;case 4:h=4096;case 5:d&B&&(h=4096);case 6:f|=d&B?192:128;break;default:h=32768}32512!==(f&32520)&&(f&8?f&32512&&(b&8128)<(f>>2&8128)&&(h|=16384):(b&8128)>(f>>2& -8128)&&(h|=16384));a.ka[a.G][c]=f;if(4194170!==e||a.G)a.Kb=a.G,a.Xb=c;h&&(h&57344&&(0<=a.ba&&(h|=128),a.ca&57344||(a.ca=a.ca|h|a.Kb<<5|a.Xb<<1),K(a,168,28)),a.ca&61440||!(4191360>e||4194239>3&7){case 0:K(a,4,34);break;case 1:return 6===e&&!a.G&&d&B&&(a.f[6]<=a.Pa||65534<=a.f[6])&&(a.f[6]<=a.Pa-32||65534<=a.f[6]?(a.M|=4,a.f[6]=4,K(a,4,36)):(a.M|=8,a.V|=64)),7===e?a.f[e]:a.f[e]|65536;case 2:f=2;c=a.f[e];7!==e&&(c|=65536,6>e&&d&1&&(f=1));break;case 3:f=2;c=a.f[e];7!==e&&(c|=65536);if(0>(c=N(a,c)))return c;c|=65536;break;case 4:f=-2;6>e&&d&1&&(f=-1);c=a.f[e]+f&65535;7!==e&&(c|=65536);break;case 5:f=-2;c=a.f[e]-2&65535;7!==e&&(c|=65536);if(0>(c= -N(a,c)))return c;c|=65536;break;case 6:if(0>(c=N(a,a.f[7])))return c;a.f[7]=a.f[7]+2&65535;c=c+a.f[e]&65535;return c|65536;case 7:if(0>(c=N(a,a.f[7])))return c;a.f[7]=a.f[7]+2&65535;c=c+a.f[e]&65535;return 0>(c=N(a,c|65536))?c:c|65536}a.f[e]=a.f[e]+f&65535;a.ca&57344||(a.Da=a.Da<<8|f<<3&248|e);6===e&&!a.G&&d&B&&0>=f&&(a.f[6]<=a.Pa||65534<=a.f[6])&&(a.f[6]<=a.Pa-32?(a.M|=4,a.f[6]=4,K(a,4,38)):(a.M|=8,a.V|=64));return c}function Q(a,b,d){b&56?(b=jd(a,b,d),a=hd(a,b,d)):a=4194304+(b&7);return a} -function R(a,b){b&56?(b=Q(a,b,ub),a=M(a,b)):a=a.f[b&7];return a}function S(a,b){b&56?(b=Q(a,b,vb),a=O(a,b)):a=a.f[b&7]&255;return a}function kd(a,b,d,c){b&56?(b=Q(a,b,C),L(a,b,c.call(a,d,M(a,b)))):(b&=7,a.f[b]=c.call(a,d,a.f[b])&65535)}function ld(a,b,d,c){b&56?(b=Q(a,b,D),P(a,b,c.call(a,d,O(a,b)))):(b&=7,a.f[b]=a.f[b]&65280|c.call(a,d,a.f[b])&255)}function md(a,b,d){b&56?L(a,Q(a,b,B),d):a.f[b&7]=d&65535;return d} -function nd(a,b,d,c){b&56?P(a,Q(a,b,wb),d):(b&=7,a.f[b]=c?c&1?a.f[b]&-256:d<<24>>24&65535:a.f[b]&-256|d&255);return d}function T(a,b){return((b&128?b|65280:b&255)<<1)+a&65535} -l.wb=function(a){this.A.complete=!0;var b=this.A.Hc=this.I&&od(this.I),d=a?this.A.kc?0:1:-1;this.A.kc=!1;this.W=this.b=a;this.Sa&256?(Zc(this),a=!1):a=!0;if(a){do{if(b){if(pd(this.I,this.f[7],d)){this.ma();break}d=1}var c,f,e,h,g;this.V&112&&(this.V&32?K(this,168,52):this.V&64?K(this,4,54):this.V&16&&K(this,12,56),this.V&=-113);if(this.Oa)if(1===this.Oa)this.Oa=2;else{this.Oa=0;g=-1;c=this.$b&224;if(0<(a=this.C.length))for(;0c&&(c=this.C[a].Tc,g=a)}c>(this.L&224)&&(0>g?K(this,160,42):(K(this,this.C[g].ed,44),this.C.splice(g,1)))}this.ca&57344||(this.Da=0,this.Ab=this.f[7]);this.V=this.L&16;this.g=a=N(this,this.f[7]);0<=a&&(this.f[7]=this.f[7]+2&65535);this.decode(a);if(0>this.g)switch(a&61440){case 4096:0<=(c=R(this,a>>6))&&(a&56?0<=(e=Q(this,a,B))&&0<=L(this,e,c)&&(this.j=this.w=c,this.u=0):(this.j=this.w=this.f[a&7]=c,this.u=0));break;case 8192:0<=(c=R(this,a>>6))&&0<= -(f=R(this,a))&&(this.j=this.w=this.B=a=c-f,this.u=(c^f)&(c^a));break;case 12288:0<=(c=R(this,a>>6))&&0<=(f=R(this,a))&&(this.j=this.w=c&f,this.u=0);break;case 16384:0<=(c=R(this,a>>6))&&(a&56?0<=(f=M(this,e=Q(this,a,C)))&&(a=f&~c,0<=L(this,e,a)&&(this.j=this.w=a,this.u=0)):(this.j=this.w=a=this.f[a&7]&=~c,this.u=0));break;case 20480:0<=(c=R(this,a>>6))&&(a&56?0<=(f=M(this,e=Q(this,a,C)))&&(a=f|c,0<=L(this,e,a)&&(this.j=this.w=a,this.u=0)):(this.j=this.w=a=this.f[a&7]|=c,this.u=0));break;case 24576:0<= -(c=R(this,a>>6))&&(a&56?0<=(f=M(this,e=Q(this,a,C)))&&(a=c+f,0<=L(this,e,a)&&(this.j=this.w=this.B=a,this.u=(c^a)&(f^a))):(g=a&7,f=this.f[g],this.f[g]=(a=c+f)&65535,this.j=this.w=this.B=a,this.u=(c^a)&(f^a)));break;case 36864:0<=(c=S(this,a>>6))&&(a&56?0<=(e=Q(this,a,wb))&&0<=P(this,e,c)&&(this.j=this.w=c<<8,this.u=0):(c&128&&(c|=65280),this.j=this.w=this.f[a&7]=c,this.u=0));break;case 40960:0<=(c=S(this,a>>6))&&0<=(f=S(this,a))&&(a=c-f,this.j=this.w=this.B=a<<8,this.u=((c^f)&(c^a))<<8);break;case 45056:0<= -(c=S(this,a>>6))&&0<=(f=S(this,a))&&(this.j=this.w=(c&f)<<8,this.u=0);break;case 49152:0<=(c=S(this,a>>6))&&0<=(f=O(this,e=Q(this,a,D)))&&(a=f&~c,0<=P(this,e,a)&&(this.j=this.w=a<<8,this.u=0));break;case 53248:0<=(c=S(this,a>>6))&&0<=(f=O(this,e=Q(this,a,D)))&&(a=f|c,0<=P(this,e,a)&&(this.j=this.w=a<<8,this.u=0));break;case 57344:0<=(c=R(this,a>>6))&&(a&56?0<=(f=M(this,e=Q(this,a,C)))&&(a=f-c,0<=L(this,e,a)&&(this.j=this.w=this.B=a,this.u=(c^f)&(f^a))):(g=a&7,f=this.f[g],this.f[g]=(a=f-c)&65535,this.j= -this.w=this.B=a,this.u=(c^f)&(f^a)));break;default:switch(a&65024){case 2048:0<=(h=jd(this,a,0))&&(g=a>>6&7,0<=gd(this,this.f[g])&&(this.f[g]=this.f[7],this.f[7]=h&65535));break;case 28672:0<=(c=R(this,a))&&(g=a>>6&7,c&32768&&(c|=-65536),f=this.f[g],f&32768&&(f|=-65536),a=~~(c*f),this.f[g]=a>>16&65535,this.f[g|1]=a&65535,this.j=a>>16,this.w=this.j|a,this.B=this.u=0,-32768>a||32767>6&7,f=this.f[g]<<16|this.f[g|1],this.B=this.u=0,c&32768&& -(c|=-65536),a=~~(f/c),-32768<=a&&32767>=a?(this.f[g]=a&65535,this.f[g|1]=f-a*c&65535,this.w=a>>16|a,this.j=a>>16):(this.u=32768,this.w=a>>15|a,this.j=f>>16,-1===c&&65534===this.f[g]&&(this.f[g]=this.f[g|1]=1))):(this.w=this.j=0,this.u=32768,this.B=65536));break;case 29696:0<=(c=R(this,a))&&(g=a>>6&7,a=this.f[g],a&32768&&(a|=4294901760),this.B=this.u=0,c&=63,c&32?(c=64-c,16>=c):c&&(16>15&65535)&&65535!==f&&(this.u=32768))),this.f[g]= -a&65535,this.j=this.w=a);break;case 30208:if(0<=(c=R(this,a))){g=a>>6&7;f=this.f[g]<<16|this.f[g|1];this.B=this.u=0;c&=63;if(c&32)c=64-c,32>c-1,this.B=a<<16,a>>=1,f&2147483648&&(a|=4294967295<<32-c);else if(c){if(a=f<>15,a<<=1,32>=32-c)f|=4294967295<>16&65535;this.f[g|1]=a&65535;this.j=a>>16;this.w=a>>16|a}break;case 30720:a&56?0<=(f=M(this,e=Q(this,a,C)))&&(f^=this.f[a>>6&7],0<=L(this,e,f)&& -(this.j=this.w=f,this.u=0)):(this.j=this.w=f=this.f[a&7]^=this.f[a>>6&7],this.u=0);break;case 32256:g=a>>6&7;if(this.f[g]=this.f[g]-1&65535)this.f[7]=this.f[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.f[7]=T(this.f[7],a);break;case 512:this.w&65535&&(this.f[7]=T(this.f[7],a));break;case 768:this.w&65535||(this.f[7]=T(this.f[7],a));break;case 1024:(this.j&32768)===(this.u&32768)&&(this.f[7]=T(this.f[7],a));break;case 1280:(this.j&32768)!==(this.u&32768)&&(this.f[7]=T(this.f[7], -a));break;case 1536:this.w&65535&&(this.j&32768)===(this.u&32768)&&(this.f[7]=T(this.f[7],a));break;case 1792:this.w&65535&&(this.j&32768)===(this.u&32768)||(this.f[7]=T(this.f[7],a));break;case 32768:this.j&32768||(this.f[7]=T(this.f[7],a));break;case 33280:!(this.B&65536)&&this.w&65535&&(this.f[7]=T(this.f[7],a));break;case 33024:this.j&32768&&(this.f[7]=T(this.f[7],a));break;case 33536:if(this.B&65536||!(this.w&65535))this.f[7]=T(this.f[7],a);break;case 33792:this.u&32768||(this.f[7]=T(this.f[7], -a));break;case 34048:this.u&32768&&(this.f[7]=T(this.f[7],a));break;case 34304:this.B&65536||(this.f[7]=T(this.f[7],a));break;case 34560:this.B&65536&&(this.f[7]=T(this.f[7],a));break;case 34816:K(this,24,2);break;case 35072:K(this,28,4);break;default:switch(a&65472){case 64:0<=(h=jd(this,a,0))&&(this.f[7]=h&65535);break;case 192:a&56?0<=(f=M(this,e=Q(this,a,C)))&&(a=f<<8|f>>8,0<=L(this,e,a)&&(this.j=this.w=f&65280,this.u=this.B=0)):(g=a&7,f=this.f[g],this.f[g]=(f<<8|f>>8)&65535,this.j=this.w=f&65280, -this.u=this.B=0);break;case 2560:a&56?0<=(e=Q(this,a,B))&&0<=L(this,e,0)&&(this.j=this.B=this.u=this.w=0):this.j=this.B=this.u=this.w=this.f[a&7]=0;break;case 2624:0<=(f=M(this,e=Q(this,a,C)))&&(a=~f,0<=L(this,e,a)&&(this.j=this.w=a,this.B=65536,this.u=0));break;case 2688:a&56?0<=(f=M(this,e=Q(this,a,C)))&&(a=f+1,0<=L(this,e,a)&&(this.j=this.w=a,this.u=a&(a^f))):(g=a&7,f=this.f[g],a=f+1,this.f[g]=a&65535,this.j=this.w=a,this.u=a&(a^f));break;case 2752:a&56?0<=(f=M(this,e=Q(this,a,C)))&&(a=f-1,0<= -L(this,e,a)&&(this.j=this.w=a,this.u=(a^f)&f)):(g=a&7,f=this.f[g],a=f-1,this.f[g]=a&65535,this.j=this.w=a,this.u=(a^f)&f);break;case 2816:0<=(f=M(this,e=Q(this,a,C)))&&(a=-f,0<=L(this,e,a)&&(this.B=this.j=this.w=a,this.u=a&f));break;case 2880:0<=(f=M(this,e=Q(this,a,C)))&&(a=f+(this.B>>16&1),0<=L(this,e,a)&&(this.B=this.j=this.w=a,this.u=a&(a^f)));break;case 2944:0<=(f=M(this,e=Q(this,a,C)))&&(a=f-(this.B>>16&1),0<=L(this,e,a)&&(this.B=this.j=this.w=a,this.u=(a^f)&f));break;case 3008:0<=(f=R(this, -a))&&(this.j=this.w=f,this.B=this.u=0);break;case 3072:a&56?0<=(f=M(this,e=Q(this,a,C)))&&(a=(this.B&65536|f)>>1,0<=L(this,e,a)&&(this.B=f<<16,this.j=this.w=a,this.u=a^this.B>>1)):(g=a&7,f=this.f[g],a=(this.B&65536|f)>>1,this.f[g]=a&65535,this.B=f<<16,this.j=this.w=a,this.u=a^this.B>>1);break;case 3136:a&56?0<=(f=M(this,e=Q(this,a,C)))&&(a=f<<1|this.B>>16&1,0<=L(this,e,a)&&(this.B=this.j=this.w=a,this.u=a^f)):(g=a&7,f=this.f[g],a=f<<1|this.B>>16&1,this.f[g]=a&65535,this.B=this.j=this.w=a,this.u=a^ -f);break;case 3200:a&56?0<=(f=M(this,e=Q(this,a,C)))&&(a=f&32768|f>>1,0<=L(this,e,a)&&(this.B=f<<16,this.j=this.w=a,this.u=this.j^this.B>>1)):(g=a&7,f=this.f[g],a=f&32768|f>>1,this.f[g]=a&65535,this.B=f<<16,this.j=this.w=a,this.u=this.j^this.B>>1);break;case 3264:a&56?0<=(f=M(this,e=Q(this,a,C)))&&(a=f<<1,0<=L(this,e,a)&&(this.B=this.j=this.w=a,this.u=a^f)):(g=a&7,f=this.f[g],a=f<<1,this.f[g]=a&65535,this.B=this.j=this.w=a,this.u=a^f);break;case 3328:h=this.f[7]+((a&63)<<1)&65535;0<=(c=N(this,h|65536))&& -(this.f[7]=this.f[5],this.f[5]=c,this.f[6]=h+2&65535);break;case 3392:a&56?0<=(h=jd(this,a,0))&&(61440!==(this.L&61440)&&(h&=65535),this.G=this.L>>12&3,0<=(c=N(this,h))&&(this.G=this.L>>14&3,0<=gd(this,c)&&(this.j=this.w=c,this.u=0))):(g=a&7,c=6!==g||(this.L>>2&12288)===(this.L&12288)?this.f[g]:this.sa[this.L>>12&3],0<=gd(this,c)&&(this.j=this.w=c,this.u=0));break;case 3456:0<=(f=id(this))&&((this.ca&57344||(this.Da=22),a&56)?0<=(h=jd(this,a,0))&&(h&=65535,this.G=this.L>>12&3,0<=(e=hd(this,h,B))&& -(this.G=this.L>>14&3,0<=L(this,e,f)&&(this.j=this.w=f,this.u=0))):(g=a&7,6!==g||(this.L>>2&12288)===(this.L&12288)?this.f[g]=f:this.sa[this.L>>12&3]=f,this.j=this.w=f,this.u=0));break;case 3520:0<=(e=Q(this,a,B))&&(a=-(this.j>>15&1),0<=L(this,e,a)&&(this.w=a,this.u=0));break;case 35328:a&56?0<=(e=Q(this,a,wb))&&0<=P(this,e,0)&&(this.j=this.B=this.u=this.w=0):(this.f[a&7]&=65280,this.j=this.B=this.u=this.w=0);break;case 35392:0<=(f=O(this,e=Q(this,a,D)))&&(a=~f,0<=P(this,e,a)&&(this.j=this.w=a<<8, -this.B=65536,this.u=0));break;case 35456:0<=(f=O(this,e=Q(this,a,D)))&&(a=f+1,0<=P(this,e,a)&&(this.j=this.w=a<<8,this.u=(a&(a^f))<<8));break;case 35520:0<=(f=O(this,e=Q(this,a,D)))&&(a=f-1,0<=P(this,e,a)&&(this.j=this.w=a<<8,this.u=((a^f)&f)<<8));break;case 35584:0<=(f=O(this,e=Q(this,a,D)))&&(a=-f,0<=P(this,e,a)&&(this.B=this.j=this.w=a<<8,this.u=(a&f)<<8));break;case 35648:0<=(f=O(this,e=Q(this,a,D)))&&(a=f+(this.B>>16&1),0<=P(this,e,a)&&(this.j=this.w=this.B=a<<8,this.u=(a&(a^f))<<8));break;case 35712:0<= -(f=O(this,e=Q(this,a,D)))&&(a=f-(this.B>>16&1),0<=P(this,e,a)&&(this.j=this.w=this.B=a<<8,this.u=((a^f)&f)<<8));break;case 35776:0<=(f=S(this,a))&&(this.j=this.w=f<<8,this.B=this.u=0);break;case 35840:0<=(f=O(this,e=Q(this,a,D)))&&(a=((this.B&65536)>>8|f)>>1,0<=P(this,e,a)&&(this.B=f<<16,this.j=this.w=a<<8,this.u=this.j^this.B>>1));break;case 35904:0<=(f=O(this,e=Q(this,a,D)))&&(a=f<<1|this.B>>16&1,0<=P(this,e,a)&&(this.B=this.j=this.w=a<<8,this.u=(a^f)<<8));break;case 35968:0<=(f=O(this,e=Q(this, -a,D)))&&(a=f&128|f>>1,0<=P(this,e,a)&&(this.B=f<<16,this.j=this.w=a<<8,this.u=this.j^this.B>>1));break;case 36032:0<=(f=O(this,e=Q(this,a,D)))&&(a=f<<1,0<=P(this,e,a)&&(this.B=this.j=this.w=a<<8,this.u=(a^f)<<8));break;case 36160:a&56?0<=(h=jd(this,a,0))&&(this.G=this.L>>12&3,0<=(c=N(this,h|65536))&&(this.G=this.L>>14&3,0<=gd(this,c)&&(this.j=this.w=c,this.u=0))):(g=a&7,c=6!==g||(this.L>>2&12288)===(this.L&12288)?this.f[g]:this.sa[this.L>>12&3],0<=gd(this,c)&&(this.j=this.w=c,this.u=0));break;case 36224:0<= -(f=id(this))&&((this.ca&57344||(this.Da=22),a&56)?0<=(h=jd(this,a,0))&&(this.G=this.L>>12&3,0<=(e=hd(this,h|65536,B))&&(this.G=this.L>>14&3,0<=L(this,e,f)&&(this.j=this.w=f,this.u=0))):(g=a&7,6!==g||(this.L>>2&12288)===(this.L&12288)?this.f[g]=f:this.sa[this.L>>12&3]=f,this.j=this.w=f,this.u=0));break;default:switch(a&65528){case 128:0<=(c=id(this))&&(g=a&7,this.f[7]=this.f[g],this.f[g]=c);break;case 152:this.L&49152||(this.L=this.L&63519|(a&7)<<5,this.Oa=1);break;case 160:case 168:a&1&&(this.B=0); -a&2&&(this.u=0);a&4&&(this.w=1);a&8&&(this.j=0);break;case 176:case 184:a&1&&(this.B=65536);a&2&&(this.u=32768);a&4&&(this.w=0);a&8&&(this.j=32768);break;default:switch(a){case 0:49152&this.L?(this.M|=128,K(this,4,46)):(this.ha=3,Zc(this),console.log("HALT at "+this.f[7].toString(8)));break;case 1:g=0;if(0<(a=this.C.length))for(;0>12].call(this,a)} -var Fd=[function(a){Gd[a>>8&15].call(this,a)},function(a){ed(this,md(this,a,R(this,a>>6)));--this.b},function(a){var b=R(this,a>>6);a=R(this,a);fd(this,b-a,a,b);--this.b},function(a){ed(this,R(this,a>>6)&R(this,a));--this.b},function(a){kd(this,a,R(this,a>>6),rd);--this.b},function(a){kd(this,a,R(this,a>>6),td);--this.b},function(a){kd(this,a,R(this,a>>6),qd);--this.b},function(a){Hd[a>>8&15].call(this,a)},function(a){Id[a>>8&15].call(this,a)},function(a){var b=S(this,a>>6);ed(this,nd(this,a,b,2)<< -8);--this.b},function(a){var b=S(this,a>>6)<<8;a=S(this,a)<<8;fd(this,b-a,a,b);--this.b},function(a){ed(this,(S(this,a>>6)&S(this,a))<<8);--this.b},function(a){ld(this,a,S(this,a>>6),sd);--this.b},function(a){ld(this,a,S(this,a>>6),ud);--this.b},function(a){kd(this,a,R(this,a>>6),vd);--this.b},V],Gd=[function(a){Jd[a>>4&15].call(this,a)},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g= --1;--this.b},function(){this.g=-1;--this.b},zd,zd,function(a){Kd[a>>6&3].call(this,a)},function(a){Ld[a>>6&3].call(this,a)},function(a){Md[a>>6&3].call(this,a)},function(a){Nd[a>>6&3].call(this,a)},V,V],Jd=[function(a){Od[a&15].call(this,a)},V,V,V,V,V,V,V,V,V,function(a){Pd[a&15].call(this,a)},function(a){Qd[a&15].call(this,a)},V,V,V,V],Pd=[Bd,function(){this.B=0;--this.b},function(){this.u=0;--this.b},U,function(){this.w=1;--this.b},U,U,U,function(){this.j=0;--this.b},U,U,U,U,U,U,U],Qd=[Bd,function(){this.B= -65536;--this.b},function(){this.u=32768;--this.b},Cd,function(){this.w=0;--this.b},Cd,Cd,Cd,function(){this.j=32768;--this.b},Cd,Cd,Cd,Cd,Cd,Cd,Cd],Od=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.L&49152||(bd(this),this.H.reset());--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},V,V,V,V,V,V,V,V],Hd=[Ad,Ad,yd,yd,wd,wd,xd,xd,Ed,Ed,V,V,V,V,Dd,Dd],Id=[function(){this.g= --1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(a){Rd[a>>6&3].call(this,a)},function(a){Sd[a>>6&3].call(this,a)},function(a){Td[a>>6&3].call(this,a)},function(a){Ud[a>>6&3].call(this,a)},V,V],Kd=[function(a){dd(this,md(this,a,0));--this.b},function(){this.g= --1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Ld=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Md=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Nd=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Rd=[function(a){dd(this,nd(this,a,0,1)); ---this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Sd=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Td=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Ud=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}]; -function Vd(a){u.call(this,"ROM",a,Vd);this.g=null;this.J=a.addr;this.F=a.size;this.N=a.writable;this.C=a.alias;this.G=a.file;this.P=da(this.G);if(this.G){a=this.G;var b=ea(this.P);"json"!=b&&"hex"!=b&&(a=ha()+"/api/v1/dump?file="+this.G+"&format=bytes&decimal=true");var d=this;ua(a,null,!0,function(a,b,e){ue(d,a,b,e)})}}w(Vd);Vd.prototype.Xa=function(a,b,d,c){this.H=b;this.b=d;this.I=c;ve(this)}; -Vd.prototype.Na=function(){if(this.Ka){if(this.I){var a=this.I,b=this.id,d=this.J,c=this.F,f=this.Ka,e=[],h;for(h in f){var g=f[h];"number"==typeof g&&(f[h]=g={o:g});var k=g.o,m=g.a;if(void 0!==k){var n=e,k=[k>>>0,h],q=qa(n,k,a.qc);0>q&&n.splice(-(q+1),0,k)}m&&(g.a=m.replace(/''/g,'"'))}a.N.push({hd:b,D:d,Pc:c,Ka:f,nc:e})}delete this.Ka}return!0};Vd.prototype.Ma=function(){return!0}; -function ue(a,b,d,c){if(c)a.oa("Unable to load system ROM (error "+c+": "+b+")");else{$a(a.oc,b,d);var f;if("["==d.charAt(0)||"{"==d.charAt(0))try{var e,h,g=eval("("+d+")");if(e=g.bytes)a.g=e;else if(e=g.words)for(a.g=Array(2*e.length),h=f=0;f>8&255;else if(e=g.data)for(a.g=Array(4*e.length),h=f=0;f>8&255,a.g[h++]=e[f]>>16&255,a.g[h++]=e[f]>>24&255;else a.g=g;a.Ka=g.symbols;if(!a.g.length){t("Empty ROM: "+ -b);return}if(1==a.g.length){t(a.g[0]);return}}catch(k){a.oa("ROM data error: "+k.message);return}else for(b=d.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.g=Array(b.length),f=0;f>>c.Y].yb(f&c.g,a.g[d]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.C?b.push(a.C):null!=a.C&&a.C.length&&(b=a.C);for(d=0;d>>f.Y;0>>=f.Y;0=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9}; -function Ae(a,b,d,c){if(d)if(b){0>a.G&&a.C.length&&(a.G=0);if(0>a.G||b!=a.C[a.G])a.C.splice(0,0,b),a.G=0;a.G--}else a.ba?b="end":b=a.C[a.G+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");d=0;var f=null;c=c||";";for(var e=0;e<=b.length;e++){var h=b.charAt(e);if('"'==h||"'"==h)f?h==f&&(f=null):f=h;else if(h==c&&!f||!h)a.push(pa(b.substring(d,e))),d=e+1}}return a} -function Be(a,b,d){for(d=d||-1;d--&&b.length;){var c=b.pop();if(2>a.length)return!1;var f=a.pop(),e=a.pop();switch(c){case "*":c=e*f;break;case "/":if(!f)return!1;c=e/f;break;case "%":if(!f)return!1;c=e%f;break;case "+":c=e+f;break;case "-":c=e-f;break;case "<<":c=e<>":c=e>>f;break;case ">>>":c=e>>>f;break;case "<":c=e":c=e>f?1:0;break;case ">=":c=e>=f?1:0;break;case "==":c=e==f?1:0;break;case "!=":c=e!=f?1:0;break;case "&":c=e&f;break; -case "^":c=e^f;break;case "|":c=e|f;break;case "&&":c=e&&f?1:0;break;case "||":c=e||f?1:0;break;default:return!1}a.push(c|0)}return!0} -function Ce(a,b,d){var c;if(b){b=De(a,b);for(var f=0,e=!1,h=b,g=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);f>=1;h=n+h;c>>=8}c=r(d,0,!0)+" "+d+". "+ca(d,0,!0)+" "+("0b"+h)}a.i((null!=b?b+": ":"")+c);return f} -function Ge(a,b){if(b)return Fe(a,b,a.ga[b]);var d=0;for(b in a.ga)Fe(a,b,a.ga[b]),d++;return 0>13&7;"undefined"===typeof b.ra[f]&&(b.ra[f]={cache:[],postProcess:a.$c,drive:f,blocksize:256,mapped:0,maxblock:b.gb[f]*b.aa[f],url:"rk"+f+".dsk"});b.T&=-129;switch(b.T>>1&7){case 0:b.Vb=2496;b.oa=0;b.T=128;b.wa=0;break;case 1:if((b.wa>>4&511)>=b.gb[f]){b.oa|=32832;b.T|=49152;break}if((b.wa&15)>=b.aa[f]){b.oa|=32800;b.T|=49152;break}d=(b.wa>>4&511)*b.aa[f]+(b.wa&15);c=(b.T&48)<<12|b.Ub;e=65536-b.Wb&65535;ac(a,b.ra[f],d,c,e);return;case 2:if((b.wa>>4&511)>=b.gb[f])b.oa|= +32832,b.T|=49152;else if((b.wa&15)>=b.aa[f])b.oa|=32800,b.T|=49152;else{d=(b.wa>>4&511)*b.aa[f]+(b.wa&15);c=(b.T&48)<<12|b.Ub;e=65536-b.Wb&65535;a.cc(b.ra[f],d,c,e);return}}b.Vb=f<<13|b.Vb&8176|b.wa%9&15;J(a.b,20,160,144,function(){b.T=b.T&65534|128;return!!(b.T&64)})}l.$c=function(a,b,d,c,e){var f=this.u;f.Ub=c&65535;f.T=f.T&-49|c>>12&48;f.Wb=65536-e&65535;switch(a){case 1:f.oa|=33024;f.T|=49152;break;case 2:f.oa|=33792,f.T|=49152}J(this.b,20,160,144,function(){f.T=f.T&65534|128;return!!(f.T&64)})}; +function bc(a){var b=a.G,d,c,e,f=b.K>>8&3;b.K&=-2;"undefined"===typeof b.ra[f]&&(b.ra[f]={cache:[],postProcess:a.ad,drive:f,blocksize:128,mapped:1,maxblock:b.gb[f]*b.aa[f],url:"rl"+f+".dsk"});switch(b.K>>1&7){case 2:b.ab&8&&(b.K&=63);b.ab=b.Ic[f]|b.eb&64;break;case 3:1==(b.fa&3)&&(b.eb=b.fa&4?b.eb+(b.fa&65408)&65408|b.fa<<2&64:b.eb-(b.fa&65408)&65408|b.fa<<2&64,b.fa=b.eb);break;case 4:b.ab=b.eb;break;case 5:if(b.fa>>6>=b.gb[f]){b.K|=37888;break}if((b.fa&63)>=b.aa[f]){b.K|=37888;break}d=(b.fa>>6)* +b.aa[f]+(b.fa&63);c=(b.Xa&63)<<16|b.Jb;e=65536-b.ab&65535;ac(a,b.ra[f],d,c,e);return;case 6:if(b.fa>>6>=b.gb[f])b.K|=37888;else if((b.fa&63)>=b.aa[f])b.K|=37888;else{d=(b.fa>>6)*b.aa[f]+(b.fa&63);c=(b.Xa&63)<<16|b.Jb;e=65536-b.ab&65535;a.cc(b.ra[f],d,c,e);return}}J(a.b,20,160,112,function(){b.K|=129;return!!(b.K&64)})} +l.ad=function(a,b,d,c,e){var f=this.G;f.Jb=c&65535;f.K=f.K&-49|c>>12&48;f.Xa=c>>16&63;f.fa=~~(d/f.aa[b.Oa])<<6|d%f.aa[b.Oa];f.eb=f.fa;f.ab=65536-e&65535;switch(a){case 1:f.K|=33792;break;case 2:f.K|=40960}J(this.b,20,160,112,function(){f.K|=129;return!!(f.K&64)})};function cc(a){a=a.J;a.U=2176;a.Ea=0;a.ta=[4544,4544,4544,4544,4544,4544,4544,4544];a.yb=[0,0,0,0,0,0,0,0];a.nb=a.zb=a.xb=a.cb=a.nc=0} +function dc(a,b){var d=a.J,c,e,f;d.U&=-16513;d.Ea&=-2049;d.ta[b]&=-1153;J(a.b,-1,0,172);"undefined"===typeof d.ra[b]&&(d.ra[b]={cache:[],postProcess:a.bd,drive:b,blocksize:256,mapped:0,maxblock:d.gc[0]*d.fb[0]*d.aa[0],url:"rp"+b+".dsk"});switch(d.U&63){case 5:d.ec[b]=d.Ta[b];d.U|=32896;d.ta[b]|=32896;d.nb|=1<=d.gc[0]||d.Fa[b]>>8>=d.fb[0]||(d.Fa[b]&255)>=d.aa[0]){d.yb[b]|=1024;d.U|=49152;break}c=(d.Ta[b]*d.fb[0]+(d.Fa[b]>>8))* +d.aa[0]+(d.Fa[b]&255);e=(d.cb&63)<<16|d.xb;f=65536-d.zb&65535;ac(a,d.ra[b],c,e,f);return;case 57:if(d.Ta[b]>=d.gc[0]||d.Fa[b]>>8>=d.fb[0]||(d.Fa[b]&255)>=d.aa[0])d.yb[b]|=1024,d.U|=49152;else{c=(d.Ta[b]*d.fb[0]+(d.Fa[b]>>8))*d.aa[0]+(d.Fa[b]&255);e=(d.cb&63)<<16|d.xb;f=65536-d.zb&65535;a.cc(d.ra[b],c,e,f);return}}J(a.b,3,160,172,function(){d.U=d.U&65534|128;d.ta[b]|=128;return!!(d.U&64)})} +l.bd=function(a,b,d,c,e){var f=this.J;f.zb=65536-e&65535;f.xb=c&65535;f.U=f.U&-769|c>>8&768;f.cb=c>>16&63;e=~~(d/f.aa[0]);c=~~(e/f.fb[0]);f.Fa[b.Oa]=e%f.fb[0]<<8|d%f.aa[0];f.ec[b.Oa]=f.Ta[b.Oa]=c;f.nb|=1<=b.Wc-1&&(f.ta[b.Oa]|=1024);switch(a){case 1:f.Ea|=512;f.U|=49152;break;case 2:f.Ea|=2048,f.U|=49152}J(this.b,20,160,172,function(){f.ta[b.Oa]|=128;f.U=f.U&65534|128;return!!(f.U&64)})};l.Tc=function(){this.B.K|=128;this.B.K&64&&J(this.b,0,192,64)}; +function ec(a,b,d,c,e,f){var g=~~((f+d.Ya-1)/d.Ya),h=new XMLHttpRequest;2048>g&&c+2048M(this.b,a.Vc?fc(this.b,d):d,a.cache[b][e])){a.bc(2,a,b,d,c);return}d+=2;--c}b++}a.bc(0,a,b,d,c)}; +function ac(a,b,d,c,e){for(var f,g;0g){b.bc(2,b,d,c,e);return}b.cache[d][f]=g;c+=2;--e}d++}b.bc(0,b,d,c,e)}l.reset=function(){this.g.sb=this.g.sb&-120|20;this.O.Ma=0;this.O.ua=128;this.B.K=0;this.u.T=128;this.G.K=128;cc(this)}; +l.Hc=function(a,b,d){var c,e,f=this.b;switch(a&-64){case 4194240:switch(a&-2){case 4194300:0>b?c=f.Sa&65280:(a&1&&(b<<=8),f.Sa=b|255,c=0);break;case 4194298:if(0>b)c=f.dc;else{a&1&&(b<<=8);if(c=b&65024){e=c>>9;do c+=34;while(e>>=1)}f.dc=c;f.Ra=2}break;case 4194294:if(70!==f.jb)return L(f,4,222);0>b?c=f.M:c=f.M=0;break;case 4194292:if(70!==f.jb)return L(f,4,224);c=1;break;case 4194290:if(70!==f.jb)return L(f,4,226);c=0;break;case 4194288:if(70!==f.jb)return L(f,4,228);c=61183;break;case 4194296:0<= +b&&!(a&1)&&(b&=255);case 4194286:case 4194284:case 4194282:case 4194280:case 4194278:case 4194276:case 4194274:case 4194272:if(70!==f.jb)return L(f,4,232);e=a-4194272>>1;0>b?c=f.jc[e]:(c=K(this,f.jc[e],a,b,d),0<=c&&(f.jc[e]=c));break;case 4194254:return a&1?f.N>>14&1?(0<=b&&(f.f[6]=b),c=f.f[6]):(0<=b&&(f.va[3]=b),c=f.va[3]):f.N>>14&0?(0<=b&&(f.f[6]=b),c=f.f[6]):(0<=b&&(f.va[1]=b),c=f.va[1]),c;case 4194252:case 4194250:case 4194248:return e=a&7,f.N&2048?(0<=b&&(f.f[e]=b),c=f.f[e]):(0<=b&&(f.bb[e]= +b),c=f.bb[e]),c;case 4194246:return a&1?(0<=b&&(f.f[7]=b),c=f.f[7]):f.N>>14&0?(0<=b&&(f.f[6]=b),c=f.f[6]):(0<=b&&(f.va[0]=b),c=f.va[0]),c;case 4194244:case 4194242:case 4194240:return e=a&7,f.N&2048?(0<=b&&(f.bb[e]=b),c=f.bb[e]):(0<=b&&(f.f[e]=b),c=f.f[e]),c;default:return f.M|=16,L(f,4,124)}break;case 4194176:e=a>>1&31;c=K(this,f.ma[3][e],a,b,d);0<=c&&(f.ma[3][e]=c,f.ma[3][e&15]&=65295);break;case 4194112:var g=this.O;e=this.B;switch(a&-2){case 4194174:c=K(this,f.Eb,a,b,d);0<=c&&(f.Eb=c);break;case 4194172:c= +f.Ga;c&65280&&(c=(c<<8|c>>8)&65535);break;case 4194170:f.ea=f.ea&62337|f.Pb<<5|f.ac<<1;0>b?c=f.ea:(c=K(this,f.ea,a,b,d),0<=c&&(f.ea=c&=62337,f.Pb=c>>5&3,f.ac=c>>1&15,c&257?(e=2,f.Ua&16&&(e=1),f.tb=c&1?tb|E:E):(f.tb=0,e=4),this.g.sb=this.g.sb&-8|e));break;case 4194168:0>b?c=this.g.jd&65535:(c=K(this,this.g.data,a,b,d),0<=c&&(this.g.data=c));break;case 4194166:0<=b&&(b&127&&(g.Mc=0),g.ua&=-129,J(f,100,128,52,function(){g.ua|=128;return!!(g.ua&64)}));c=0;break;case 4194164:0>b?c=g.ua:(c=K(this,g.ua, +a,b,d),0<=c&&(128==(g.ua&192)&&c&64&&J(f,8,128,52,function(){g.ua|=128;return!!(g.ua&64)}),g.ua=g.ua&128|c&-129));break;case 4194162:c=0;0>b&&(g.Ma&=-129,0b?c=g.Ma:(c=K(this,g.Ma,a,b,d),0<=c&&(g.Ma=g.Ma&128|c&-129));break;case 4194150:0>b?(c=e.K,e.K&=-129):(c=K(this,e.K,a,b,d),0<=c&&(c&64&&!e.Ob&&(setInterval(this.Tc.bind(this),25),e.Ob=1),e.K=c&-129));break;default:return f.M|= +16,L(f,4,126)}break;case 4194048:e=this.u;switch(a&-2){case 4194048:c=K(this,e.Vb,a,b,d);0<=c&&(e.Vb=c);break;case 4194050:c=K(this,e.oa,a,b,d);0<=c&&(e.oa=c);break;case 4194052:c=K(this,e.T,a,b,d);0<=b&&0<=c&&(e.T=c&-36993|e.T&36992,e.T&1&&$b(this));break;case 4194054:c=K(this,e.Wb,a,b,d);0<=c&&(e.Wb=c);break;case 4194056:c=K(this,e.Ub,a,b,d);0<=c&&(e.Ub=c);break;case 4194058:c=K(this,e.wa,a,b,d);0<=c&&(e.wa=c);break;case 4194060:break;case 4194062:c=K(this,e.Ac,a,b,d);0<=c&&(e.Ac=c);break;default:return f.M|= +16,L(f,4,128)}break;case 4193728:var h=this.J;e=h.Ea&7;switch(a&-2){case 4193728:c=K(this,h.U,a,b,d);0<=b&&0<=c&&(h.cb=h.cb&60|c>>8&3,h.U=c&17279|h.U&34944|2048,c&1&&h.U&128?dc(this,e):192==(c&192)&&J(f,0,160,172));break;case 4193730:c=K(this,h.zb,a,b,d);0<=c&&(h.zb=c);break;case 4193732:c=K(this,h.xb,a,b,d);0<=c&&(h.xb=c&65534);break;case 4193734:c=K(this,h.Fa[e],a,b,d);0<=c&&(h.Fa[e]=c&7967);break;case 4193736:c=K(this,h.Ea,a,b,d);0<=c&&(h.Ea=c&63|h.Ea&65472,c&128&&cc(this));break;case 4193738:c= +h.ta[e];break;case 4193740:c=h.yb[e];break;case 4193742:c=K(this,h.nb,a,b,d);0<=c&&(h.nb=c&255);break;case 4193744:c=h.gd[e];break;case 4193746:c=K(this,h.Bc,a,b,d);0<=c&&(h.Bc=c);break;case 4193748:c=K(this,h.Cc[e],a,b,d);0<=c&&(h.Cc[e]=c&1023);break;case 4193750:c=8210;break;case 4193752:c=h.hd[e];break;case 4193754:c=K(this,h.Dc[e],a,b,d);0<=c&&(h.Dc[e]=c);break;case 4193756:c=K(this,h.Ta[e],a,b,d);0<=c&&(h.Ta[e]=c&511);break;case 4193758:h.ec[e]=h.Ta[e];c=h.ec[e];break;case 4193760:c=h.ed[e]; +break;case 4193762:c=h.fd[e];break;case 4193764:c=h.cd[e];break;case 4193766:c=h.dd[e];break;case 4193768:c=K(this,h.cb,a,b,d);0<=c&&(h.cb=c&63,h.U=h.U&-769|(c&3)<<8);break;case 4193770:c=K(this,h.nc,a,b,d);0<=c&&(h.nc=c);break;default:return f.M|=16,L(f,4,132)}break;case 4192512:e=this.G;switch(a&-2){case 4192512:c=K(this,e.K,a,b,d);0<=b&&0<=c&&(e.Xa=e.Xa&60|c>>4&3,e.K=e.K&-1023|c&1022,e.K&128||bc(this));break;case 4192514:c=K(this,e.Jb,a,b,d);0<=c&&(e.Jb=c&65534);break;case 4192516:c=K(this,e.fa, +a,b,d);0<=c&&(e.fa=c);break;case 4192518:c=K(this,e.ab,a,b,d);0<=c&&(e.ab=c);break;case 4192520:c=K(this,e.Xa,a,b,d);0<=c&&(e.Xa=c&63,e.K=e.K&-49|(e.Xa&3)<<4);break;default:return f.M|=16,L(f,4,134)}break;case 4191552:switch(a&-2){case 4191566:0>b?c=f.Ua:(c=K(this,f.Ua,a,b,d),0<=c&&(70!==f.jb&&(c&=-49),f.Ua=c,f.lb[0]=c&4?15:7,f.lb[1]=c&2?15:7,f.lb[3]=c&1?15:7,f.tb&&(e=2,f.Ua&16&&(e=1),this.g.sb=this.g.sb&-8|e)));break;default:return f.M|=16,L(f,4,136)}break;case 4191424:e=a>>1&31;c=K(this,f.ma[0][e], +a,b,d);0<=c&&(f.ma[0][e]=c,f.ma[0][e&15]&=65295);break;case 4191360:e=a>>1&31;c=K(this,f.ma[1][e],a,b,d);0<=c&&(f.ma[1][e]=c,f.ma[1][e&15]&=65295);break;case 4190400:case 4190336:if(70!==f.jb)return L(f,4,234);e=a>>2&31;c=f.Xb[e];a&2&&(c>>=16);c&=65535;0<=b&&(c=K(this,c,a,b,d),0<=c&&(f.Xb[e]=a&2?c<<16|f.Xb[e]&65535:f.Xb[e]&4294901760|c&65534));break;case 4188672:case 4188736:case 4188800:case 4188864:case 4188928:case 4188992:case 4189056:case 4189120:if(0>b)c=Wb[a>>1&255];else return f.M|=16,L(f, +4,138);break;default:return f.M|=16,L(f,4,142)}d&&0<=c&&(a&1?c>>=8:c&=255);"undefined"===typeof c&&console.log("panic(76)");return c};var gc={},Xb=(gc[65534]=[null,null,Vb.prototype.Zc,Vb.prototype.ld],gc);Oa(function(){for(var a=B(document,"pdp11","device"),b=0;b>1),this.b=new Int32Array(this.G,0,d>>2),nc(this,jc?oc:pc);else{this.b=Array(d>>2);for(a=0;a>2),b=0;b>8,d)},ca:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},qa:function(a){var b=a>>2;a=(a&3)<<3;var d=this.b[b]>>a;return 24>a?d&65535:d&255|(this.b[b+1]&255)<<8},Ca:function(a,b){var d=a>> +2;a=(a&3)<<3;this.b[d]=this.b[d]&~(255<>2;a=(a&3)<<3;24>a?this.b[d]=this.b[d]&~(65535<>8);this.Za=!0},$:function(a,b){if(this.I&&null!=this.w){var d=this.I;uc(d,this.w+a,1,d.Y)&&d.pa(!0)}return this.Tb(a,b)},ha:function(a,b){if(this.I&&null!=this.w){var d=this.I;uc(d,this.w+a,2,d.Y)&&d.pa(!0)}return this.mc(a,b)},za:function(a,b,d){if(this.I&&null!=this.w){var c=this.I;uc(c,this.w+ +a,1,c.J)&&c.pa(!0)}this.H?this.u(a,b,d):this.Cb(a,b,d)},Ia:function(a,b,d){if(this.I&&null!=this.w){var c=this.I;uc(c,this.w+a,2,c.J)&&c.pa(!0)}this.H?this.u(a,b,d):this.qc(a,b,d)},Y:function(a){return this.g[a]},ba:function(a){return this.g[a]},da:function(a){return this.J.getUint16(a,!0)},ia:function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.R[a>>1]},ya:function(a,b){this.g[a]=b;this.Za=!0},Aa:function(a,b){this.g[a]=b;this.Za=!0},Ha:function(a,b){this.J.setUint16(a,b,!0);this.Za=!0},Va:function(a, +b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.R[a>>1]=b;this.Za=!0}};function zb(a,b,d){a.I=b;a.P=a.B=0;d&&((a.P=d.P)&&tc(a,sc,!1),(a.B=d.B)&&rc(a,sc,!1))}function vc(a,b){b?--a.B||(a.Bb=a.H?a.u:a.Cb,a.Fc=a.H?a.O:a.qc):--a.P||(a.wb=a.Tb,a.zc=a.mc)}function rc(a,b,d){d&&a.B||(a.Bb=!a.H&&b[1]||a.u,a.Fc=!a.H&&b[3]||a.O);if(d||void 0===d)a.Cb=b[1]||a.u,a.qc=b[3]||a.O}function tc(a,b,d){d&&a.P||(a.wb=b[0]||a.W,a.zc=b[2]||a.X);if(d||void 0===d)a.Tb=b[0]||a.W,a.mc=b[2]||a.X} +function nc(a,b){b||(b=wc);tc(a,b,void 0);rc(a,b,void 0)}var wc=[],qc=[I.prototype.ca,I.prototype.Ca,I.prototype.qa,I.prototype.Fb],sc=[I.prototype.$,I.prototype.za,I.prototype.ha,I.prototype.Ia];if(sb)var pc=[I.prototype.Y,I.prototype.ya,I.prototype.da,I.prototype.Ha],oc=[I.prototype.ba,I.prototype.Aa,I.prototype.ia,I.prototype.Va]; +function xc(a,b){u.call(this,"CPU",a,xc,1);var d=a.multiplier||1;this.Ha=a.cycles||b;this.mb=d;this.Ca=Math.round(this.Ha/1E4)/100;this.kb=this.Ca*this.mb;this.j.la=!1;this.j.pc=!1;this.j.Hb=a.autoStart;this.j.wc=!1;this.j.rb=!1;this.Qb=this.ba=0;this.Rb=a.csStart;this.ub=a.csInterval;this.vb=a.csStop;this.ya=[];this.Kb=this.ob.bind(this);D(this)}w(xc);var yc=["power","reset"];l=xc.prototype; +l.$a=function(a,b,d,c){this.B=a;this.H=b;this.I=c;for(b=0;b=a.ba&&(a.ba+=a.ub,d=!0);0<=a.vb&&a.vb<=Rc(a)&&(a.ub=a.vb=-1,Pc(a),a.pa(),d=!0);d&&a.i(Rc(a)+" cycles: checksum="+r(a.Qb))}} +function Sc(a,b,d,c){if(a.P[b]){void 0===d&&(rb(a,"Value for "+b+" is invalid"),a.pa());var e=a.I&&a.I.za||8;d=!a.j.la||a.j.wc?8==e?ca(d,c):r(d,c):"--------".substr(0,c||4);a.P[b].textContent!=d&&(a.P[b].textContent=d)}} +l.xa=function(a,b,d){var c=this;a=!1;switch(b){case "power":case "reset":this.P[b]=d;a=!0;break;case "run":this.P[b]=d;d.onclick=function(){var a;if(a=c.B)if(a=c.B,a.j.ga)a=!0;else{var b=null,d,h=$a(a.id);for(d=0;da.W/a.kb?b=1:c=!0;a.mb=b;b=a.Ca*a.mb;if(a.kb!=b){a.kb=b;b=a.kb.toFixed(2)+"Mhz";var e=a.P.setSpeed;e&&(e.textContent=b);a.i("target speed: "+b)}d&&a.B&&a.B.Yb()}Uc(a,a.R);a.R=0;a.O=ra();a.X=0;Vc(a);return c}function Wc(a){a.Y-=a.b;a.b=0} +l.ob=function(a){if(db(this,!0)){if(!this.j.la){Tc(this);this.B&&this.B.start(this.O,Rc(this));this.j.la=!0;this.j.pc=!0;this.ha&&this.ha.start();var b=this.P.run;b&&(b.textContent="Halt");this.B&&(this.B.Ba(!0),a&&this.B.Yb(!0))}this.Ia>=this.Ha&&Vc(this,!0);this.ia=0;this.za=ra();this.X&&(a=this.za-this.X,a>this.Db&&(this.O+=a,this.O>this.za&&(this.O=this.za)));try{do{for(var d,c=this.j.rb?1:this.Aa,e=this.ya.length-1;0<=e;e--){var f=this.ya[e];0>f[0]||c>f[0]&&(c=f[0])}d=c;try{this.Ab(d)}catch(m){if("number"!= +typeof m)throw m;}var g=this.Y-this.b;a=g;for(var h=this.ya.length-1;0<=h;h--){var k=this.ya[h];0>k[0]||(k[0]-=a,0>=k[0]&&(k[0]=-1,k[1]()))}this.ia+=g;this.R+=g;Uc(this,0,!0);Qc(this,g);this.ca-=g;if(0>=this.ca){this.ca+=this.Aa;15<=++this.Ib&&(this.B&&this.B.Ba(),this.Ib=0);break}}while(this.j.la)}catch(m){this.pa();N(this);this.B&&this.B.stop(ra(),Rc(this));db(this,!1);rb(this,m.stack||m.message);return}d=setTimeout;c=this.Kb;this.X=ra();e=this.Db;this.ia&&(e=Math.round(e*this.ia/this.Aa));e-=this.X- +this.za;if(f=this.X-this.O)this.W=Math.round(this.R/(10*f))/100,864E5<=f&&(this.$=0,Tc(this));if(0>e||this.We&&(this.O-=e),e=0;this.Ia+=this.ia;this.X+=e;d(c,e)}else N(this),this.B&&this.B.stop(ra(),Rc(this))};l.Ab=function(){return 0};l.pa=function(a){pb(this,!0);Wc(this);Uc(this,this.R);this.R=0;if(this.j.la){this.j.la=!1;this.ha&&this.ha.stop();var b=this.P.run;b&&(b.textContent="Run")}this.j.complete=a};function N(a,b){a.B&&a.B.Ba(b)} +function Xc(a){this.Xc=+a.model||1170;this.kc=a.resetAddr||0;xc.call(this,a,1E6);this.Va=0;this.decode=Yc.bind(this);this.D=65536;this.C=32768;this.F=65535;this.A=32768;this.f=[0,0,0,0,0,0,0,this.kc];this.bb=[0,0,0,0,0,0];this.va=[0,0,0,0];this.Sa=255;this.ac=this.Pb=this.tb=this.G=this.Ua=this.Eb=this.Ga=this.ea=this.M=this.dc=0;this.lb=[7,7,7,7];this.ma=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535, +65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.Xb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.jc=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.g=-1;this.V=0;this.jb=70;this.da=-1;this.u=[];this.qa=0;this.Ra=2;Zc(this);this.j.complete=this.j.Lc=!1}w(Xc,xc);l=Xc.prototype; +l.reset=function(){this.j.la&&this.pa();$c(this);Oc(this);this.j.error=!1;this.parent.reset.call(this)};function $c(a){a.Sa=255;a.M=0;a.u=[];a.dc=0;a.ea=a.Ga=a.Eb=a.Ua=a.tb=0;a.lb[0]=a.lb[1]=a.lb[3]=7;a.Pb=0;Zc(a)}function Zc(a){a.tb?(a.J=65536,a.L=a.Rc,a.Lb=a.na):(a.J=0,a.L=a.Qc,a.Lb=a.ka)}l.yc=function(){return 0};l.save=function(){var a=new O(this);a.set(0,[]);a.set(1,[this.pb,this.$,this.mb]);a.set(2,Jb(this.H));return a.data()}; +l.restore=function(a){var b=a[1];this.pb=b[0];this.$=b[1];Tc(this,b[3]);a:{b=this.H;a=a[2];var d;for(d=0;db){a.u[f].Ja-=b;break}b-=a.u[f].Ja}a.u.splice(f+1,0,{delay:b,priority:d&224,vector:c,callback:e})}a.Ra=2}function Yb(a){return a.N=a.N&63728|(a.A&32768?8:0)|(a.F&65535?0:4)|(a.C&32768?2:0)|(a.D&65536?1:0)} +function Zb(a,b){a.A=b<<12;a.F=~b&4;a.C=b<<14;a.D=b<<16;if((b^a.N)&2048)for(var d=a.bb.length;0<=--d;){var c=a.f[d];a.f[d]=a.bb[d];a.bb[d]=c}a.G=b>>14&3;d=a.N>>14&3;a.G!=d&&(a.va[d]=a.f[6],a.f[6]=a.va[a.G]);a.Ra=2;a.N=b}function ad(a,b){a.V&128||(a.A=a.F=a.D=b,a.C=0)}function bd(a,b){a.V&128||(a.A=a.F=b,a.C=0)}function cd(a,b,d,c){a.V&128||(a.A=a.F=a.D=b,a.C=(d^c)&(c^b))} +function L(a,b,d){var c,e,f=0;0>a.da?a.da=Yb(a):a.G||(b=4,f=1);a.ea&57344||(a.Ga=63222,a.Eb=b);a.G=0;0<=(c=a.na(b|65536))&&0<=(e=a.na(b+2&65535|65536))&&(Zb(a,e&53247|a.da>>2&12288),f&&(a.M|=4,a.f[6]=4),0<=dd(a,a.da)&&0<=dd(a,a.f[7])&&(a.f[7]=c));a.V&=-113;a.da=-1;throw b|d<<8;}function fc(a,b){var d=b>>13&31;31>d?a.Ua&32&&(b=a.Xb[d]+(b&8190)&4194302,3932160<=b&&4186112>b&&console.log("panic(898)")):b|=4186112;return b} +function ed(a,b,d){var c,e,f,g=0;if(d&a.tb){c=b>>13&a.lb[a.G];e=a.ma[a.G][c];f=(a.ma[a.G][c+16]<<6)+(b&8191)&4194303;a.Ua&16?3932160<=f&&4186112>f&&(f=fc(a,f&262143)):(f&=262143,253952<=f&&(f|=4186112));3932160>f&&(3915776<=f&&(a.M|=32,L(a,4,24)),f&1&&!(d&1)&&(a.M|=64,L(a,4,26)));switch(e&7){case 1:g=4096;case 2:e|=128;d&E&&(g=8192);break;case 4:g=4096;case 5:d&E&&(g=4096);case 6:e|=d&E?192:128;break;default:g=32768}32512!==(e&32520)&&(e&8?e&32512&&(b&8128)<(e>>2&8128)&&(g|=16384):(b&8128)>(e>>2& +8128)&&(g|=16384));a.ma[a.G][c]=e;if(4194170!==f||a.G)a.Pb=a.G,a.ac=c;g&&(g&57344&&(0<=a.da&&(g|=128),a.ea&57344||(a.ea=a.ea|g|a.Pb<<5|a.ac<<1),L(a,168,28)),a.ea&61440||!(4191360>f||4194239>3&7){case 0:L(a,4,34);break;case 1:return 6===f&&!a.G&&d&E&&(a.f[6]<=a.Sa||65534<=a.f[6])&&(a.f[6]<=a.Sa-32||65534<=a.f[6]?(a.M|=4,a.f[6]=4,L(a,4,36)):(a.M|=8,a.V|=64)),7===f?a.f[f]:a.f[f]|a.J;case 2:e=2;c=a.f[f];7!==f&&(c|=a.J,6>f&&d&1&&(e=1));break;case 3:e=2;c=a.f[f];7!==f&&(c|=a.J);if(0>(c=a.na(c)))return c;c|=a.J;break;case 4:e=-2;6>f&&d&1&&(e=-1);c=a.f[f]+e&65535;7!==f&&(c|=a.J);break;case 5:e=-2;c=a.f[f]-2&65535;7!==f&&(c|=a.J);if(0>(c=a.na(c)))return c; +c|=a.J;break;case 6:if(0>(c=a.na(a.f[7])))return c;a.f[7]=a.f[7]+2&65535;c=c+a.f[f]&65535;return c|a.J;case 7:if(0>(c=a.na(a.f[7])))return c;a.f[7]=a.f[7]+2&65535;c=c+a.f[f]&65535;return 0>(c=a.na(c|65536))?c:c|a.J}a.f[f]=a.f[f]+e&65535;!a.J||a.ea&57344||(a.Ga=a.Ga<<8|e<<3&248|f);6===f&&!a.G&&d&E&&0>=e&&(a.f[6]<=a.Sa||65534<=a.f[6])&&(a.f[6]<=a.Sa-32?(a.M|=4,a.f[6]=4,L(a,4,38)):(a.M|=8,a.V|=64));return c}l.Qc=function(a,b){return gd(this,a,b)};l.Rc=function(a,b){return ed(this,gd(this,a,b),b)}; +function S(a,b){return b&56?a.Lb(gd(a,b,tb)):a.f[b&7]}function hd(a,b){return b&56?P(a,a.L(b,ub)):a.f[b&7]&255}function id(a,b,d,c){b&56?(b=a.L(b,F),M(a,b,c.call(a,d,a.ka(b)))):(b&=7,a.f[b]=c.call(a,d,a.f[b])&65535)}function jd(a,b,d,c){b&56?(b=a.L(b,G),Q(a,b,c.call(a,d,P(a,b)))):(b&=7,a.f[b]=a.f[b]&65280|c.call(a,d,a.f[b])&255)}function kd(a,b,d){b&56?M(a,a.L(b,E),d):a.f[b&7]=d&65535;return d} +function ld(a,b,d,c){b&56?Q(a,a.L(b,vb),d):(b&=7,a.f[b]=c?c&1?a.f[b]&-256:d<<24>>24&65535:a.f[b]&-256|d&255);return d}function T(a,b){return((b&128?b|65280:b&255)<<1)+a&65535} +l.Ab=function(a){this.j.complete=!0;var b=this.j.Lc=this.I&&md(this.I),d=a?this.j.pc?0:1:-1;this.j.pc=!1;this.Y=this.b=a;this.pb&256?(Wc(this),a=!1):a=!0;if(a){do{if(b){if(nd(this.I,this.f[7],d)){this.pa();break}d=1}var c,e,f,g;this.V&112&&(this.V&32?L(this,168,52):this.V&64?L(this,4,54):this.V&16&&L(this,12,56),this.V&=-113);if(this.Ra)if(1===this.Ra)this.Ra=2;else{this.Ra=0;c=-1;e=this.dc&224;if(0<(a=this.u.length))for(;0e&&(e=this.u[a].Yc,c=a)}e>(this.N&224)&&(0>c?L(this,160,42):(L(this,this.u[c].kd,44),this.u.splice(c,1)))}this.ea&57344||(this.Ga=0,this.Eb=this.f[7]);this.V=this.N&16;this.g=a=this.na(this.f[7]);0<=a&&(this.f[7]=this.f[7]+2&65535);this.decode(a);if(0>this.g)switch(a&61440){case 4096:break;case 8192:break;case 12288:break;case 16384:break;case 20480:break;case 24576:break;case 36864:break;case 40960:break;case 45056:break;case 49152:break;case 53248:break; +case 57344:break;default:switch(a&65024){case 2048:0<=(f=gd(this,a,0))&&(g=a>>6&7,0<=dd(this,this.f[g])&&(this.f[g]=this.f[7],this.f[7]=f&65535));break;case 28672:0<=(c=S(this,a))&&(g=a>>6&7,c&32768&&(c|=-65536),e=this.f[g],e&32768&&(e|=-65536),a=~~(c*e),this.f[g]=a>>16&65535,this.f[g|1]=a&65535,this.A=a>>16,this.F=this.A|a,this.D=this.C=0,-32768>a||32767>6&7,e=this.f[g]<<16|this.f[g|1],this.D=this.C=0,c&32768&&(c|=-65536),a=~~(e/c),-32768<= +a&&32767>=a?(this.f[g]=a&65535,this.f[g|1]=e-a*c&65535,this.F=a>>16|a,this.A=a>>16):(this.C=32768,this.F=a>>15|a,this.A=e>>16,-1===c&&65534===this.f[g]&&(this.f[g]=this.f[g|1]=1))):(this.F=this.A=0,this.C=32768,this.D=65536));break;case 29696:0<=(c=S(this,a))&&(g=a>>6&7,a=this.f[g],a&32768&&(a|=4294901760),this.D=this.C=0,c&=63,c&32?(c=64-c,16>=c):c&&(16>15&65535)&&65535!==e&&(this.C=32768))),this.f[g]=a&65535,this.A=this.F=a);break; +case 30208:if(0<=(c=S(this,a))){g=a>>6&7;e=this.f[g]<<16|this.f[g|1];this.D=this.C=0;c&=63;if(c&32)c=64-c,32>c-1,this.D=a<<16,a>>=1,e&2147483648&&(a|=4294967295<<32-c);else if(c){if(a=e<>15,a<<=1,32>=32-c)e|=4294967295<>16&65535;this.f[g|1]=a&65535;this.A=a>>16;this.F=a>>16|a}break;case 30720:a&56?0<=(e=this.ka(c=this.L(a,F)))&&(e^=this.f[a>>6&7],0<=M(this,c,e)&&(this.A=this.F=e,this.C=0)): +(this.A=this.F=e=this.f[a&7]^=this.f[a>>6&7],this.C=0);break;case 32256:g=a>>6&7;if(this.f[g]=this.f[g]-1&65535)this.f[7]=this.f[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.f[7]=T(this.f[7],a);break;case 512:this.F&65535&&(this.f[7]=T(this.f[7],a));break;case 768:this.F&65535||(this.f[7]=T(this.f[7],a));break;case 1024:(this.A&32768)===(this.C&32768)&&(this.f[7]=T(this.f[7],a));break;case 1280:(this.A&32768)!==(this.C&32768)&&(this.f[7]=T(this.f[7],a));break;case 1536:this.F& +65535&&(this.A&32768)===(this.C&32768)&&(this.f[7]=T(this.f[7],a));break;case 1792:this.F&65535&&(this.A&32768)===(this.C&32768)||(this.f[7]=T(this.f[7],a));break;case 32768:this.A&32768||(this.f[7]=T(this.f[7],a));break;case 33280:!(this.D&65536)&&this.F&65535&&(this.f[7]=T(this.f[7],a));break;case 33024:this.A&32768&&(this.f[7]=T(this.f[7],a));break;case 33536:if(this.D&65536||!(this.F&65535))this.f[7]=T(this.f[7],a);break;case 33792:this.C&32768||(this.f[7]=T(this.f[7],a));break;case 34048:this.C& +32768&&(this.f[7]=T(this.f[7],a));break;case 34304:this.D&65536||(this.f[7]=T(this.f[7],a));break;case 34560:this.D&65536&&(this.f[7]=T(this.f[7],a));break;case 34816:L(this,24,2);break;case 35072:L(this,28,4);break;default:switch(a&65472){case 64:0<=(f=gd(this,a,0))&&(this.f[7]=f&65535);break;case 192:a&56?0<=(e=this.ka(c=this.L(a,F)))&&(a=e<<8|e>>8,0<=M(this,c,a)&&(this.A=this.F=e&65280,this.C=this.D=0)):(g=a&7,e=this.f[g],this.f[g]=(e<<8|e>>8)&65535,this.A=this.F=e&65280,this.C=this.D=0);break; +case 2560:break;case 2624:0<=(e=this.ka(c=this.L(a,F)))&&(a=~e,0<=M(this,c,a)&&(this.A=this.F=a,this.D=65536,this.C=0));break;case 2688:a&56?0<=(e=this.ka(c=this.L(a,F)))&&(a=e+1,0<=M(this,c,a)&&(this.A=this.F=a,this.C=a&(a^e))):(g=a&7,e=this.f[g],a=e+1,this.f[g]=a&65535,this.A=this.F=a,this.C=a&(a^e));break;case 2752:a&56?0<=(e=this.ka(c=this.L(a,F)))&&(a=e-1,0<=M(this,c,a)&&(this.A=this.F=a,this.C=(a^e)&e)):(g=a&7,e=this.f[g],a=e-1,this.f[g]=a&65535,this.A=this.F=a,this.C=(a^e)&e);break;case 2816:0<= +(e=this.ka(c=this.L(a,F)))&&(a=-e,0<=M(this,c,a)&&(this.D=this.A=this.F=a,this.C=a&e));break;case 2880:0<=(e=this.ka(c=this.L(a,F)))&&(a=e+(this.D>>16&1),0<=M(this,c,a)&&(this.D=this.A=this.F=a,this.C=a&(a^e)));break;case 2944:0<=(e=this.ka(c=this.L(a,F)))&&(a=e-(this.D>>16&1),0<=M(this,c,a)&&(this.D=this.A=this.F=a,this.C=(a^e)&e));break;case 3008:0<=(e=S(this,a))&&(this.A=this.F=e,this.D=this.C=0);break;case 3072:a&56?0<=(e=this.ka(c=this.L(a,F)))&&(a=(this.D&65536|e)>>1,0<=M(this,c,a)&&(this.D= +e<<16,this.A=this.F=a,this.C=a^this.D>>1)):(g=a&7,e=this.f[g],a=(this.D&65536|e)>>1,this.f[g]=a&65535,this.D=e<<16,this.A=this.F=a,this.C=a^this.D>>1);break;case 3136:a&56?0<=(e=this.ka(c=this.L(a,F)))&&(a=e<<1|this.D>>16&1,0<=M(this,c,a)&&(this.D=this.A=this.F=a,this.C=a^e)):(g=a&7,e=this.f[g],a=e<<1|this.D>>16&1,this.f[g]=a&65535,this.D=this.A=this.F=a,this.C=a^e);break;case 3200:a&56?0<=(e=this.ka(c=this.L(a,F)))&&(a=e&32768|e>>1,0<=M(this,c,a)&&(this.D=e<<16,this.A=this.F=a,this.C=this.A^this.D>> +1)):(g=a&7,e=this.f[g],a=e&32768|e>>1,this.f[g]=a&65535,this.D=e<<16,this.A=this.F=a,this.C=this.A^this.D>>1);break;case 3264:a&56?0<=(e=this.ka(c=this.L(a,F)))&&(a=e<<1,0<=M(this,c,a)&&(this.D=this.A=this.F=a,this.C=a^e)):(g=a&7,e=this.f[g],a=e<<1,this.f[g]=a&65535,this.D=this.A=this.F=a,this.C=a^e);break;case 3328:f=this.f[7]+((a&63)<<1)&65535;0<=(c=this.na(f|65536))&&(this.f[7]=this.f[5],this.f[5]=c,this.f[6]=f+2&65535);break;case 3392:a&56?0<=(f=gd(this,a,0))&&(61440!==(this.N&61440)&&(f&=65535), +this.G=this.N>>12&3,0<=(c=this.na(f))&&(this.G=this.N>>14&3,0<=dd(this,c)&&(this.A=this.F=c,this.C=0))):(g=a&7,c=6!==g||(this.N>>2&12288)===(this.N&12288)?this.f[g]:this.va[this.N>>12&3],0<=dd(this,c)&&(this.A=this.F=c,this.C=0));break;case 3456:0<=(e=fd(this))&&((this.ea&57344||(this.Ga=22),a&56)?0<=(f=gd(this,a,0))&&(f&=65535,this.G=this.N>>12&3,0<=(c=ed(this,f,E))&&(this.G=this.N>>14&3,0<=M(this,c,e)&&(this.A=this.F=e,this.C=0))):(g=a&7,6!==g||(this.N>>2&12288)===(this.N&12288)?this.f[g]=e:this.va[this.N>> +12&3]=e,this.A=this.F=e,this.C=0));break;case 3520:0<=(c=this.L(a,E))&&(a=-(this.A>>15&1),0<=M(this,c,a)&&(this.F=a,this.C=0));break;case 35328:break;case 35392:0<=(e=P(this,c=this.L(a,G)))&&(a=~e,0<=Q(this,c,a)&&(this.A=this.F=a<<8,this.D=65536,this.C=0));break;case 35456:0<=(e=P(this,c=this.L(a,G)))&&(a=e+1,0<=Q(this,c,a)&&(this.A=this.F=a<<8,this.C=(a&(a^e))<<8));break;case 35520:0<=(e=P(this,c=this.L(a,G)))&&(a=e-1,0<=Q(this,c,a)&&(this.A=this.F=a<<8,this.C=((a^e)&e)<<8));break;case 35584:0<= +(e=P(this,c=this.L(a,G)))&&(a=-e,0<=Q(this,c,a)&&(this.D=this.A=this.F=a<<8,this.C=(a&e)<<8));break;case 35648:0<=(e=P(this,c=this.L(a,G)))&&(a=e+(this.D>>16&1),0<=Q(this,c,a)&&(this.A=this.F=this.D=a<<8,this.C=(a&(a^e))<<8));break;case 35712:0<=(e=P(this,c=this.L(a,G)))&&(a=e-(this.D>>16&1),0<=Q(this,c,a)&&(this.A=this.F=this.D=a<<8,this.C=((a^e)&e)<<8));break;case 35776:0<=(e=hd(this,a))&&(this.A=this.F=e<<8,this.D=this.C=0);break;case 35840:0<=(e=P(this,c=this.L(a,G)))&&(a=((this.D&65536)>>8|e)>> +1,0<=Q(this,c,a)&&(this.D=e<<16,this.A=this.F=a<<8,this.C=this.A^this.D>>1));break;case 35904:0<=(e=P(this,c=this.L(a,G)))&&(a=e<<1|this.D>>16&1,0<=Q(this,c,a)&&(this.D=this.A=this.F=a<<8,this.C=(a^e)<<8));break;case 35968:0<=(e=P(this,c=this.L(a,G)))&&(a=e&128|e>>1,0<=Q(this,c,a)&&(this.D=e<<16,this.A=this.F=a<<8,this.C=this.A^this.D>>1));break;case 36032:0<=(e=P(this,c=this.L(a,G)))&&(a=e<<1,0<=Q(this,c,a)&&(this.D=this.A=this.F=a<<8,this.C=(a^e)<<8));break;case 36160:a&56?0<=(f=gd(this,a,0))&& +(this.G=this.N>>12&3,0<=(c=this.na(f|65536))&&(this.G=this.N>>14&3,0<=dd(this,c)&&(this.A=this.F=c,this.C=0))):(g=a&7,c=6!==g||(this.N>>2&12288)===(this.N&12288)?this.f[g]:this.va[this.N>>12&3],0<=dd(this,c)&&(this.A=this.F=c,this.C=0));break;case 36224:0<=(e=fd(this))&&((this.ea&57344||(this.Ga=22),a&56)?0<=(f=gd(this,a,0))&&(this.G=this.N>>12&3,0<=(c=ed(this,f|65536,E))&&(this.G=this.N>>14&3,0<=M(this,c,e)&&(this.A=this.F=e,this.C=0))):(g=a&7,6!==g||(this.N>>2&12288)===(this.N&12288)?this.f[g]= +e:this.va[this.N>>12&3]=e,this.A=this.F=e,this.C=0));break;default:switch(a&65528){case 128:0<=(c=fd(this))&&(g=a&7,this.f[7]=this.f[g],this.f[g]=c);break;case 152:this.N&49152||(this.N=this.N&63519|(a&7)<<5,this.Ra=1);break;case 160:case 168:break;case 176:case 184:break;default:switch(a){case 0:49152&this.N?(this.M|=128,L(this,4,46)):(this.qa=3,Wc(this),console.log("HALT at "+this.f[7].toString(8)));break;case 1:c=0;if(0<(a=this.u.length))for(;0>12].call(this,a)} +var Cd=[function(a){Dd[a>>8&15].call(this,a)},function(a){bd(this,kd(this,a,S(this,a>>6)));--this.b},function(a){var b=S(this,a>>6);a=S(this,a);cd(this,b-a,a,b);--this.b},function(a){bd(this,S(this,a>>6)&S(this,a));--this.b},function(a){id(this,a,S(this,a>>6),pd);--this.b},function(a){id(this,a,S(this,a>>6),rd);--this.b},function(a){id(this,a,S(this,a>>6),od);--this.b},function(a){Ed[a>>8&15].call(this,a)},function(a){Fd[a>>8&15].call(this,a)},function(a){var b=hd(this,a>>6);bd(this,ld(this,a,b,2)<< +8);--this.b},function(a){var b=hd(this,a>>6)<<8;a=hd(this,a)<<8;cd(this,b-a,a,b);--this.b},function(a){bd(this,(hd(this,a>>6)&hd(this,a))<<8);--this.b},function(a){jd(this,a,hd(this,a>>6),qd);--this.b},function(a){jd(this,a,hd(this,a>>6),sd);--this.b},function(a){id(this,a,S(this,a>>6),td);--this.b},X],Dd=[function(a){Gd[a>>4&15].call(this,a)},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}, +function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},xd,xd,function(a){Hd[a>>6&3].call(this,a)},function(a){Id[a>>6&3].call(this,a)},function(a){Jd[a>>6&3].call(this,a)},function(a){Kd[a>>6&3].call(this,a)},X,X],Gd=[function(a){Ld[a&15].call(this,a)},X,X,X,X,X,X,X,X,X,function(a){Md[a&15].call(this,a)},function(a){Nd[a&15].call(this,a)},X,X,X,X],Md=[zd,function(){this.D=0;--this.b},function(){this.C=0;--this.b},U,function(){this.F=1;--this.b},U,U,U,function(){this.A=0;--this.b},U,U,U,U,U, +U,U],Nd=[zd,function(){this.D=65536;--this.b},function(){this.C=32768;--this.b},V,function(){this.F=0;--this.b},V,V,V,function(){this.A=32768;--this.b},V,V,V,V,V,V,V],Ld=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.N&49152||($c(this),this.H.reset());--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},X,X,X,X,X,X,X,X],Ed=[yd,yd,wd,wd,ud,ud,vd,vd,Bd,Bd,X, +X,X,X,Ad,Ad],Fd=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(a){Od[a>>6&3].call(this,a)},function(a){Pd[a>>6&3].call(this,a)},function(a){Qd[a>>6&3].call(this,a)},function(a){Rd[a>>6&3].call(this,a)},X,X],Hd=[function(a){ad(this, +kd(this,a,0));--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Id=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Jd=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Kd=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}], +Od=[function(a){ad(this,ld(this,a,0,1));--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Pd=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Qd=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Rd=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g= +-1;--this.b}];function Sd(a){u.call(this,"ROM",a,Sd);this.g=null;this.J=a.addr;this.B=a.size;this.O=a.writable;this.u=a.alias;this.G=a.file;this.R=da(this.G);if(this.G){a=this.G;var b=ia(this.R);"json"!=b&&"hex"!=b&&(a=ka()+"/api/v1/dump?file="+this.G+"&format=bytes&decimal=true");var d=this;wa(a,null,!0,function(a,b,f){re(d,a,b,f)})}}w(Sd);Sd.prototype.$a=function(a,b,d,c){this.H=b;this.b=d;this.I=c;se(this)}; +Sd.prototype.Qa=function(){if(this.Na){if(this.I){var a=this.I,b=this.id,d=this.J,c=this.B,e=this.Na,f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var k=h.o,m=h.a;if(void 0!==k){var n=f,k=[k>>>0,g],q=qa(n,k,a.vc);0>q&&n.splice(-(q+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.O.push({nd:b,w:d,Uc:c,Na:e,sc:f})}delete this.Na}return!0};Sd.prototype.Pa=function(){return!0}; +function re(a,b,d,c){if(c)a.sa("Unable to load system ROM (error "+c+": "+b+")");else{Za(a.tc,b,d);var e;if("["==d.charAt(0)||"{"==d.charAt(0))try{var f,g,h=eval("("+d+")");if(f=h.bytes)a.g=f;else if(f=h.words)for(a.g=Array(2*f.length),g=e=0;e>8&255;else if(f=h.data)for(a.g=Array(4*f.length),g=e=0;e>8&255,a.g[g++]=f[e]>>16&255,a.g[g++]=f[e]>>24&255;else a.g=h;a.Na=h.symbols;if(!a.g.length){t("Empty ROM: "+ +b);return}if(1==a.g.length){t(a.g[0]);return}}catch(k){a.sa("ROM data error: "+k.message);return}else for(b=d.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.g=Array(b.length),e=0;e>>c.Z].Cb(e&c.g,a.g[d]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.u?b.push(a.u):null!=a.u&&a.u.length&&(b=a.u);for(d=0;d>>e.Z;0>>=e.Z;0=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9}; +function xe(a,b,d,c){if(d)if(b){0>a.G&&a.u.length&&(a.G=0);if(0>a.G||b!=a.u[a.G])a.u.splice(0,0,b),a.G=0;a.G--}else a.ca?b="end":b=a.u[a.G+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");d=0;var e=null;c=c||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)a.push(pa(b.substring(d,f))),d=f+1}}return a} +function ye(a,b,d){for(d=d||-1;d--&&b.length;){var c=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(c){case "*":c=f*e;break;case "/":if(!e)return!1;c=f/e;break;case "%":if(!e)return!1;c=f%e;break;case "+":c=f+e;break;case "-":c=f-e;break;case "<<":c=f<>":c=f>>e;break;case ">>>":c=f>>>e;break;case "<":c=f":c=f>e?1:0;break;case ">=":c=f>=e?1:0;break;case "==":c=f==e?1:0;break;case "!=":c=f!=e?1:0;break;case "&":c=f&e;break; +case "^":c=f^e;break;case "|":c=f|e;break;case "&&":c=f&&e?1:0;break;case "||":c=f||e?1:0;break;default:return!1}a.push(c|0)}return!0} +function ze(a,b,d){var c;if(b){b=Ae(a,b);for(var e=0,f=!1,g=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e>=1;g=n+g;c>>=8}c=r(d,0,!0)+" "+d+". "+ca(d,0,!0)+" "+("0b"+g)}a.i((null!=b?b+": ":"")+c);return e} +function De(a,b){if(b)return Ce(a,b,a.ha[b]);var d=0;for(b in a.ha)Ce(a,b,a.ha[b]),d++;return 0>>c.H.Y;k=1}c.i("blockid physical blockaddr used size type");c.i("-------- --------- ---------- ------ ------ ----");for(var d=-1,m=0;k--;){var n=b[f];n.type==d?m++||c.i("..."):(d=n.type,m=Jb[d],n&&c.i(r(n.id,8)+" %"+r(f<>>d.Y].Ob(c&d.g,c),b&&Re(a,b));return d};l.Ha=function(a,b){var d=65535,c=Z(a);-1!==c&&(d=Kb(this.H,c),b&&Re(a,b));return d}; -l.bc=function(a,b,d){var c=Z(a);if(-1!==c){var f=this.H;f.R[(c&f.H)>>>f.Y].yb(c&f.g,b&255,c);d&&Re(a,d);Ec(this.b,!0)}};l.jc=function(a,b,d){var c=Z(a);if(-1!==c){var f=this.H,e=c&f.g,h=(c&f.H)>>>f.Y;e!=f.g?f.R[h].lc(e,b&65535,c):(f.R[h++].yb(e,b&255,c),f.R[h&f.F].yb(0,b>>8&255,c+1));d&&Re(a,d);Ec(this.b,!0)}};function Y(a){return{D:a,Ga:!1}}function Se(a){return[a.D,a.Ga]}function Te(a){return{D:a[0],Ga:a[1]}} -function Qe(a,b,d){var c;d=(d?a.W:a.zb).D;if(void 0!==b){c=b=De(a,b);var f;if(c.match(/^[a-z_][a-z0-9_]*$/i))for(c=c.toUpperCase(),d=0;dc&&(c+=b.length);0>c&&(c=0);for(var f=b.length;c>>c.Y],!1)}a.X=["br"];if(a.J)for(b=1;b>>c.Y],!0);a.J=["bw"];a.Eb=0} -l.eb=function(a,b,d){var c=!0;d||Ze(this,a,b,!1,!0);if(a!=this.g){var f=Z(b);if(-1===f)this.i("invalid address: "+W(this,b.D)),c=!1;else{var e=this.H;e.R[f>>>e.Y].eb(f&e.g,a==this.J)}}c&&(a.push(b),d?b.Ga=!0:($e(this,a,a.length-1,"set"),Je(this)));return c};function Ze(a,b,d,c,f){var e=!1;d=Z(d);for(var h=1;h>>c.Y],b==a.J));g.Ga||Je(a);break}}return e} -function af(a,b){for(var d=1;d>23)&65535,z=W(p,q);else if(8192==F)q=q.D-((e&63)<<1)&65535,z=W(p,q);else if(12288==F)z=W(p,e&7,2);else if(24576==F)z=W(p,e&63);else if(F=e&E,E&4032&&(F>>=6,E>>=6),E&63)switch(E=F&7,F&56){case 0:z=df(E);break;case 8:z="@"+df(E);break;case 16:7>E?z="("+df(E)+ -")+":(F=p.Ha(q,2),z="#"+W(p,F));break;case 24:7>E?z="@("+df(E)+")+":(F=p.Ha(q,2),z="@#"+W(p,F));break;case 32:z="-("+df(E)+")";break;case 40:z="@-("+df(E)+")";break;case 48:F=p.Ha(q,2);z=W(p,F)+"("+df(E)+")";7==E&&(z=[z,W(p,F+q.D&65535)]);break;case 56:F=p.Ha(q,2),z="@"+W(p,F)+"("+df(E)+")",7==E&&(z=[z,W(p,F+q.D&65535)])}p=z;if(!p||!p.length){g="INVALID";break}"string"!=typeof p&&(d||(d=p[1]),p=p[0]);0a?"R"+a:6==a?"SP":"PC"} -function ff(a,b){var d="",c=a.b;8>b?(d=df(b),d+="="+W(a,c.f[b])):13>b?d="A"+(b-8)+"="+W(a,c.Za[b-8]):16<=b&&20>b?d="S"+(b-16)+"="+W(a,c.sa[b-16]):20==b&&(d="PS="+W(a,$b(c)));d&&(d+=" ");return d}function gf(a){var b,d="";for(b=0;6>b;b++)d+=ff(a,b);d=d+"\n"+(ff(a,6)+ff(a,7)+ff(a,20));return d+=ef(a,"T")+ef(a,"N")+ef(a,"Z")+ef(a,"V")+ef(a,"C")}l.qc=function(a,b){return a[0]>b[0]?1:a[0]>>0;for(b=0;b>>0,g=e.Pc;if(f>=h&&fg[0].indexOf("+"))){var m=g[0]+":";g[2]&&(m+=" "+g[2]);a.i(m)}g[3]&&(h=g[3],e=null);e=cf(a,b,h,e);a.i(e);a.W=b;f-=b.D-k;d++}}} -function bf(a,b,d){var c=!0;try{b.length&&"end"!=b?d||a.i(">> "+b):(a.ba&&(a.i("ended assemble at "+W(a,a.aa.D)),a.W=a.aa,a.ba=!1),b="");var f=b.charAt(0);if('"'==f||"'"==f)return!0;a.za=null;if(gb(a)&&0m||"z"ja.length&&(a.i("note: only "+ja.length+" available"),ba=ja.length);fa-=ba;0>fa&&(null==ja[ja.length-1].D?(ba=fa+ba,fa=0):fa+=ja.length);var Ic=[];"call"==ae&&(ib=1E5,Ic=["CALL"]);for(void 0!==$d&&a.i(ba+" instructions earlier:");0=ja.length&&(fa=0);a.Vb=ba;ce++;ib--}}ce||(a.i("no "+be+"history available"),a.Vb=void 0)}else{var Nb=Qe(a,ia);if(Nb){var Ob=0;xa&&("l"==xa.charAt(0)&&(xa=xa.substr(1)||Gf),Ob=Ee(a,xa)>>>0,65536>4||1;If--&&0Sb?String.fromCharCode(Sb): -".";Qb--}kb&&(kb+="\n");kb+=ia+" "+Kc+(lb?"":" "+fe)}kb&&a.i(kb);a.zb=Nb}}}}break;case "e":if("else"==e[0])break;var Tb=1,ge=255,he=a.Hb,ie=a.bc;"ew"==e[0]&&(Tb=2,ge=65535,he=a.Ha,ie=a.jc);var je=Tb<<1,ke=e[1];if(null==ke)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");else{var Ub=Qe(a,ke);if(Ub)for(var Vb=2;VbOc;){for(var ya=null,Mf=256;65536>ob.D>>>0;){me.D=a.Ha(ob,2);if(null==ob.D||!Mf--)break;for(var Nf=a,Wb=me,ne=null,pb=Wb.D,oe=pb,Pc=1;6>=Pc&&pb;Pc++){if(2\nLicense: GPL version 3 or later ");this.i("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis ");for(b=0;brf){if(tf(c,this.T)){this.J=new cd(this,"1.30.0","failsafe");tf(this.J)&&(yf(this,c),a=2,zf(this.J));this.J.set("timestamp",ta());Af(this.J);var f=this.g&&!this.N;if(1==a||va("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(d=xf(c)){var e=c.get("code"),h=c.get("data");e&&("ok"==e?tf(c,h):("error"== -e&&"no machine state"!=h?(this.oa("Error: "+h),"unable to verify user"==h&&(Ca("user",""),this.F=null)):this.i(e+": "+h),zf(c),tf(c)?(d=xf(c),f=!0):d=!1))}f&&wf(this,d?c:null)}else 2==a&&c.clear()}else wf(this);delete this.T;delete this.W}f=ab(this.id);for(e=0;ea[1];a=a[2];this.ha=!0;this.A.fa=!0;var c=this.O.power;c&&(c.textContent="Shutdown");this.b&&(Bf(this,this.b,b,d,a),this.b.Db());this.aa&&(yf(this,b),b.clear());!d&&this.J&&(this.J.clear(),delete this.J);this.C=0}; -function yf(a,b){if(va("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var d=a.F||"";b=b.toString();var c={app:"PDP11js",ver:"1.30.0"};c.url=a.url;c.user=d;c.type="bug";c.data=b;ua("http://www.pcjs.org/api/v1/report",c,!0)}} -function of(a,b,d){var c,f="none";if(a.C)return null;a.C--;var e=new cd(a,"1.30.0"),h=new cd(a,"1.30.0","validate"),g=ta();h.set("timestamp",g);e.set("timestamp",g);e.set("version","1.30.0");e.set("url",window?window.location.href:null);e.set("browser",window?window.navigator.userAgent:"");a.b&&a.b.Ma&&(d&&a.b.ma(),c=a.b.Ma(b,d),"object"===typeof c&&e.set(a.b.id,c),d&&(a.b.A.fa=!1,!1===c&&(f=null)));for(var g=ab(a.id),k=0;ke.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(e=window.location.pathname+e),c?"}"==c.slice(-1)?(c=c.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+d+"$2"+(c?" parms='"+c+"'":"")+(e?' url="'+e+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDP11js$2"), -a=a.replace(/().*?(<\/xsl:variable>)/,"$1pdp11$2"));e=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(e=new window.ActiveXObject("Microsoft.XMLDOM"),e.async=!1,e.loadXML(a)):e=(new window.DOMParser).parseFromString(a,"text/xml")}catch(n){e=null,a=n.message}else a="unrecognized XML: "+(255/g.exec(a)){var f=c[2];b("Loading "+f+"...");ua(f,null,!0,function(e,h,g){if(g||!h)d(a,"unable to resolve XML reference: "+c[0]+" ("+g+")");else{if(e=c[3])if(g=h.match(new RegExp("<"+c[1]+"[^>]*>"))){for(var k=g[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(e);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{d(a,"missing <"+c[1]+"> in "+f);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/, -"");a=a.replace(c[0],h);Tf(a,b,d)}})}else d(a,null)} -function Uf(a,b,d,c){function f(a){if(void 0===g){var b=h&&y(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=na(a))}function e(a){f("Error: "+a);k&&(--Ff||Ra(!0));k=!1}var h,g,k=!0;Ff++;Za[a]={};try{if(h=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=m:q.appendChild(document.createTextNode(m));n.appendChild(q)}d|| -(d="/versions/pdp11/1.30.0/components.xsl");m=function(c,g){g?Rf(d,null,null,!1,f,function(c,k){k?($a(a,d,c),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=g.transformNode(k))?(h.outerHTML=k,--Ff||Ra(!0)):e("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(c=new XSLTProcessor,c.importStylesheet(k),(k=c.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(k,h),--Ff||Ra(!0)):e("invalid machine element: "+ -a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser")):e(c)}):e(c)};"<"!=b.charAt(0)?Rf(b,a,c,!0,f,m):Sf(b,null,a,c,!1,f,m)}else e("missing machine element: "+a)}catch(p){e(p.message)}return k}window.embedPDP11=function(a,b,d,c){Ra(!1);return Uf(a,b,d,c)};window.enableEvents=Ra;window.sendEvent=Sa;})(); +63],35968:[7,63],36032:[5,63],36096:[66,63],36160:[59,63],36224:[64,63],36288:[61,63]},65528:{128:[76,7],152:[108,12288]},65535:{0:[55],1:[99],2:[75],3:[26],4:[109],5:[70],6:[110],7:[111],160:[69],161:[31],162:[41],163:[33],164:[45],165:[36],166:[43],167:[35],168:[38],169:[32],170:[42],171:[34],172:[46],173:[37],174:[44],175:[30],176:[69],177:[80],178:[88],179:[82],180:[92],181:[85],182:[90],183:[84],184:[87],185:[81],186:[89],187:[83],188:[93],189:[86],190:[91],191:[79]}};l=Ee.prototype; +l.$a=function(a,b,d,c){this.H=b;this.b=d;this.B=a;(a=Nc(a,"messages"))&&He(this,a);this.Lb=Le;Me(this,function(a){a:{var b=c.H.S,d=a[0],e=a=0,k=b.length;if(d){a=c.L(Ne(c,d));if(-1===a){c.i("invalid address: "+d);break a}e=a>>>c.H.Z;k=1}c.i("blockid physical blockaddr used size type");c.i("-------- --------- ---------- ------ ------ ----");for(var d=-1,m=0;k--;){var n=b[e];n.type==d?m++||c.i("..."):(d=n.type,m=Hb[d],n&&c.i(r(n.id,8)+" %"+r(e<>>d.Z].Tb(c&d.g,c),b&&Oe(a,b));return d};l.La=function(a,b){var d=65535,c=this.L(a,!1,2);-1!==c&&(d=Ib(this.H,c),b&&Oe(a,b));return d}; +l.fc=function(a,b,d){var c=this.L(a,!0,1);if(-1!==c){var e=this.H;e.S[(c&e.H)>>>e.Z].Cb(c&e.g,b&255,c);d&&Oe(a,d);N(this.b,!0)}};l.oc=function(a,b,d){var c=this.L(a,!0,2);if(-1!==c){var e=this.H,f=c&e.g,g=(c&e.H)>>>e.Z;f!=e.g?e.S[g].qc(f,b&65535,c):(e.S[g++].Cb(f,b&255,c),e.S[g&e.B].Cb(0,b>>8&255,c+1));d&&Oe(a,d);N(this.b,!0)}};function Z(a){return{w:a,Ka:!1}}function Pe(a){return[a.w,a.Ka]}function Qe(a){return{w:a[0],Ka:a[1]}} +function Ne(a,b,d){var c;d=(d?a.X:a.Db).w;if(void 0!==b){c=b=Ae(a,b);var e;if(c.match(/^[a-z_][a-z0-9_]*$/i))for(c=c.toUpperCase(),d=0;dc&&(c+=b.length);0>c&&(c=0);for(var e=b.length;c>>c.Z],!1)}a.Y=["br"];if(a.J)for(b=1;b>>c.Z],!0);a.J=["bw"];a.Ib=0} +l.hb=function(a,b,d){var c=!0;d||We(this,a,b,!1,!0);if(a!=this.g){var e=this.L(b);if(-1===e)this.i("invalid address: "+Y(this,b.w)),c=!1;else{var f=this.H;f.S[e>>>f.Z].hb(e&f.g,a==this.J)}}c&&(a.push(b),d?b.Ka=!0:(Xe(this,a,a.length-1,"set"),Ge(this)));return c};function We(a,b,d,c,e){var f=!1;d=a.L(d);for(var g=1;g>>c.Z],b==a.J));h.Ka||Ge(a);break}}return f} +function Ye(a,b){for(var d=1;d>23)&65535,x=Y(p,q);else if(8192==A)q=q.w-((f&63)<<1)&65535,x=Y(p,q);else if(12288==A)x=Y(p,f&7,2);else if(24576==A)x=Y(p,f&63);else if(A=f&z,z&4032&&(A>>=6,z>>=6),z&63)switch(z=A&7,A&56){case 0:x=af(z);break;case 8:x="@"+af(z);break;case 16:7>z?x="("+af(z)+ +")+":(A=p.La(q,2),x="#"+Y(p,A));break;case 24:7>z?x="@("+af(z)+")+":(A=p.La(q,2),x="@#"+Y(p,A));break;case 32:x="-("+af(z)+")";break;case 40:x="@-("+af(z)+")";break;case 48:A=p.La(q,2);x=Y(p,A)+"("+af(z)+")";7==z&&(x=[x,Y(p,A+q.w&65535)]);break;case 56:A=p.La(q,2),x="@"+Y(p,A)+"("+af(z)+")",7==z&&(x=[x,Y(p,A+q.w&65535)])}p=x;if(!p||!p.length){h="INVALID";break}"string"!=typeof p&&(d||(d=p[1]),p=p[0]);0a?"R"+a:6==a?"SP":"PC"} +function cf(a,b){var d="",c=a.b;8>b?(d=af(b),d+="="+Y(a,c.f[b])):13>b?d="A"+(b-8)+"="+Y(a,c.bb[b-8]):16<=b&&20>b?d="S"+(b-16)+"="+Y(a,c.va[b-16]):20==b&&(d="PS="+Y(a,Yb(c)));d&&(d+=" ");return d}function df(a){var b,d="";for(b=0;6>b;b++)d+=cf(a,b);d=d+"\n"+(cf(a,6)+cf(a,7)+cf(a,20));return d+=bf(a,"T")+bf(a,"N")+bf(a,"Z")+bf(a,"V")+bf(a,"C")}l.vc=function(a,b){return a[0]>b[0]?1:a[0]>>0;for(b=0;b>>0,h=f.Uc;if(e>=g&&eh[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.i(m)}h[3]&&(g=h[3],f=null);f=$e(a,b,g,f);a.i(f);a.X=b;e-=b.w-k;d++}}} +function Ze(a,b,d){var c=!0;try{b.length&&"end"!=b?d||a.i(">> "+b):(a.ca&&(a.i("ended assemble at "+Y(a,a.ba.w)),a.X=a.ba,a.ca=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Ca=null;if(qb(a)&&0m||"z"fa.length&&(a.i("note: only "+fa.length+" available"),W=fa.length);aa-=W;0>aa&&(null==fa[fa.length-1].w?(W=aa+W,aa=0):aa+=fa.length);var Cc=[];"call"==Yd&&(eb=1E5,Cc=["CALL"]);for(void 0!==Xd&&a.i(W+" instructions earlier:");0=fa.length&& +(aa=0);a.Kb=W;$d++;eb--}}$d||(a.i("no "+Zd+"history available"),a.Kb=void 0)}else{var Kb=Ne(a,ea);if(Kb){var Lb=0;ta&&("l"==ta.charAt(0)&&(ta=ta.substr(1)||Df),Lb=Be(a,ta)>>>0,65536>4||1;Ff--&&0Pb?String.fromCharCode(Pb):".";Nb--}gb&& +(gb+="\n");gb+=ea+" "+Ec+(hb?"":" "+ce)}gb&&a.i(gb);a.Db=Kb}}}}break;case "e":if("else"==f[0])break;var Qb=1,de=255,ee=a.Nb,fe=a.fc;"ew"==f[0]&&(Qb=2,de=65535,ee=a.La,fe=a.oc);var ge=Qb<<1,he=f[1];if(null==he)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");else{var Rb=Ne(a,he);if(Rb)for(var Sb=2;SbIc;){for(var ua=null,Jf=256;65536>kb.w>>>0;){je.w=a.La(kb,2);if(null==kb.w||!Jf--)break;for(var Kf=a,Tb=je,ke=null,lb=Tb.w,le=lb,Jc=1;6>=Jc&&lb;Jc++){if(2\nLicense: GPL version 3 or later ");this.i("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis ");for(b=0;bof){if(qf(c,this.W)){this.J=new O(this,"1.30.0","failsafe");qf(this.J)&&(vf(this,c),a=2,wf(this.J));this.J.set("timestamp",va());xf(this.J);var e=this.g&&!this.O;if(1==a||xa("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(d=uf(c)){var f=c.get("code"),g=c.get("data");f&&("ok"==f?qf(c,g):("error"== +f&&"no machine state"!=g?(this.sa("Error: "+g),"unable to verify user"==g&&(Ba("user",""),this.B=null)):this.i(f+": "+g),wf(c),qf(c)?(d=uf(c),e=!0):d=!1))}e&&tf(this,d?c:null)}else 2==a&&c.clear()}else tf(this);delete this.W;delete this.X}e=$a(this.id);for(f=0;fa[1];a=a[2];this.ia=!0;this.j.ga=!0;var c=this.P.power;c&&(c.textContent="Shutdown");this.b&&(yf(this,this.b,b,d,a),this.b.Hb());this.ba&&(vf(this,b),b.clear());!d&&this.J&&(this.J.clear(),delete this.J);this.u=0}; +function vf(a,b){if(xa("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var d=a.B||"";b=b.toString();var c={app:"PDP11js",ver:"1.30.0"};c.url=a.url;c.user=d;c.type="bug";c.data=b;wa("http://www.pcjs.org/api/v1/report",c,!0)}} +function lf(a,b,d){var c,e="none";if(a.u)return null;a.u--;var f=new O(a,"1.30.0"),g=new O(a,"1.30.0","validate"),h=va();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.30.0");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.b&&a.b.Pa&&(d&&a.b.pa(),c=a.b.Pa(b,d),"object"===typeof c&&f.set(a.b.id,c),d&&(a.b.j.ga=!1,!1===c&&(e=null)));for(var h=$a(a.id),k=0;kf.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),c?"}"==c.slice(-1)?(c=c.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+d+"$2"+(c?" parms='"+c+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDP11js$2"), +a=a.replace(/().*?(<\/xsl:variable>)/,"$1pdp11$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(n){f=null,a=n.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=c[2];b("Loading "+e+"...");wa(e,null,!0,function(f,g,h){if(h||!g)d(a,"unable to resolve XML reference: "+c[0]+" ("+h+")");else{if(f=c[3])if(h=g.match(new RegExp("<"+c[1]+"[^>]*>"))){for(var k=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{d(a,"missing <"+c[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, +"");a=a.replace(c[0],g);Qf(a,b,d)}})}else d(a,null)} +function Rf(a,b,d,c){function e(a){if(void 0===h){var b=g&&B(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ma(a))}function f(a){e("Error: "+a);k&&(--Cf||Qa(!0));k=!1}var g,h,k=!0;Cf++;Ya[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=m:q.appendChild(document.createTextNode(m));n.appendChild(q)}d|| +(d="/versions/pdp11/1.30.0/components.xsl");m=function(c,h){h?Of(d,null,null,!1,e,function(c,k){k?(Za(a,d,c),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--Cf||Qa(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(c=new XSLTProcessor,c.importStylesheet(k),(k=c.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--Cf||Qa(!0)):f("invalid machine element: "+ +a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(c)}):f(c)};"<"!=b.charAt(0)?Of(b,a,c,!0,e,m):Pf(b,null,a,c,!1,e,m)}else f("missing machine element: "+a)}catch(p){f(p.message)}return k}window.embedPDP11=function(a,b,d,c){Qa(!1);return Rf(a,b,d,c)};window.enableEvents=Qa;window.sendEvent=Ra;})(); diff --git a/versions/pdp11/1.30.0/pdp11.js b/versions/pdp11/1.30.0/pdp11.js index f8b668cbd..59e523fa2 100644 --- a/versions/pdp11/1.30.0/pdp11.js +++ b/versions/pdp11/1.30.0/pdp11.js @@ -4,156 +4,152 @@ f&&d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}ret function da(){var a=ea();return-1!==a.indexOf("pcjs.org",a.length-8)}var fa={"&":"&","<":"<",">":">",'"':""","'":"'"};function ga(a){return a.replace(/[&<>"']/g,function(a){return fa[a]})}var ha=Date.now||function(){return+new Date};function ia(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} function p(a,b,c,d){var f=0,e=null,g=null;if("object"==typeof resources&&(e=resources[a]))return d&&d(a,e,f),[e,f];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(e=h.responseText,200==h.status||!h.status&&e.length&&"file:"==(window?window.location.protocol:"file:")||(f=h.status||-1),d&&d(a,e,f))});if(b&&"object"== typeof b){var k="",m;for(m in b)b.hasOwnProperty(m)&&(k&&(k+="&"),k+=m+"="+encodeURIComponent(b[m]));k=k.replace(/%20/g,"+");h.open("POST",a,!!c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,!!c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(e=h.responseText,200!=h.status&&(f=h.status||-1),d&&d(a,e,f),g=[e,f]);return g}function ea(){return"http://"+(window?window.location.host:"www.pcjs.org")} -function q(a){window&&window.alert(a)}function ja(a){var b=!1;window&&(b=window.confirm(a));return b}var ka=null;function la(){if(null==ka){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}ka=a}return ka}function ma(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b} +function r(a){window&&window.alert(a)}function ja(a){var b=!1;window&&(b=window.confirm(a));return b}var ka=null;function la(){if(null==ka){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}ka=a}return ka}function ma(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b} function na(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function oa(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var t={init:[],show:[],exit:[]},pa=!1,qa=!1,ra=!0;function sa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function u(a){t.init.push(a)} -function ta(a){if(ra)try{for(var b=0;bb?this.ub=this.id:(this.Fb=this.id.substr(0,b),this.ub=this.id.substr(b+1));this[a]=c;this.j={ready:!1,Za:!1,yb:!1,M:!1,error:!1};this.mb=null;this.j.error=!1;this.B={};this.I=null;w.push(this)}var wa=void 0,xa={}; +function ta(a){if(ra)try{for(var b=0;bb?this.yb=this.id:(this.Lb=this.id.substr(0,b),this.yb=this.id.substr(b+1));this[a]=c;this.j={ready:!1,bb:!1,Cb:!1,M:!1,error:!1};this.qb=null;this.j.error=!1;this.C={};this.K=null;w.push(this)}var wa=void 0,xa={}; if(window){wa||(wa=window.location.search.substr(1));for(var ya,za=/\+/g,Aa=/([^&=]+)=?([^&]*)/g;ya=Aa.exec(wa);)xa[decodeURIComponent(ya[1].replace(za," "))]=decodeURIComponent(ya[2].replace(za," "))}function Ba(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b} function x(a,b){b||(b=v);a.prototype=Ba(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Ca=window.PCjs.Machines||(window.PCjs.Machines={}),w=window.PCjs.Components||(window.PCjs.Components=[])}else Ca={},w=[];function Da(a,b,c){Ca[a]&&b&&(Ca[a][b]=c)}function y(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b>1)+2;10>this.f&&(this.f=10);15>2;this.h=this.g-1;this.l=this.w/this.g|0;this.N=this.l-1;this.pa=[];this.u=null;this.$a=this.R;a=new G;Oa(a,this.I);this.b=Array(this.l);for(b=0;b>8:c[2](b)&255}else if(b&1&&(c=this.controller.pa[a&-2],c[2]))return c[2](b&-2)>>8;return this.controller.$a(b,-1,1)} -function Qa(a,b,c){var d=this.controller.pa[a];if(d){if(d[1]){d[1](b,c);return}if(d[3]){a=d[2]?d[2](c):0;if(c&1)d[3](a&255|b<<8,c&-2);else d[3](a&-256|b,c);return}}else if(c&1&&(d=this.controller.pa[a&-2],d[3])){c&=-2;a=d[2]?d[2](c):0;d[3](a&255|b<<8,c);return}this.controller.$a(c,b,1)}function Ra(a,b){if(a=this.controller.pa[a]){if(a[2])return a[2](b);if(a[0])return a[0](b)|a[0](b+1)<<8}return this.controller.$a(b,-1,0)} -function Sa(a,b,c){if(a=this.controller.pa[a]){if(a[3]){a[3](b,c);return}if(a[1]){a[1](b&255,c);a[1](b>>8,c+1);return}}this.controller.$a(c,b,0)}Na.prototype.reset=function(){this.u&&this.u()};Na.prototype.R=function(){return 0};Na.prototype.va=function(a,b){b||this.reset();return!0}; -function Ta(a,b,c,d,f){for(var e=b,g=c,h=e>>>a.f;0g&&(r=g);if(k&&k.size){if(k.type==d&&k.controller==f){if(e+g<=k.Qa)return k.sb+=k.Qa-e,k.Qa=e,!0;if(e>=k.Qa+k.sb){r=k.size-(e-m);r>g&&(r=g);k.sb=e-k.Qa+r;e=m+a.g;g-=r;h++;continue}}return Va(1,e,g)}e=new G(e,r,a.g,d,f);Oa(e,a.I,k);a.b[h++]=e;e=m+a.g;g-=r}return 0>=g?(a.status(Math.floor(c/1024)+"Kb "+Wa[d]+" at "+n(b,8,!0)),!0):Va(2,b,c)} -function Xa(a){for(var b=0,c=[],d=0;d>1)+2;10>this.f&&(this.f=10);15>2;this.h=this.g-1;this.l=this.o/this.g|0;this.H=this.l-1;this.ta=[];this.A=null;this.cb=this.O;a=new H;Na(a,this.K);this.c=Array(this.l);for(b=0;b>8:d[2](b)&255}else if(b&1&&(d=c.ta[a&-2],d[2]))return d[2](b&-2)>>8;return c.cb(b,-1,1)} +function Pa(a,b,c){var d=this.controller,f=d.ta[a];if(f){if(f[1]){f[1](b,c);return}if(f[3]){a=f[2]?f[2](c):0;if(c&1)f[3](a&255|b<<8,c&-2);else f[3](a&-256|b,c);return}}else if(c&1&&(f=d.ta[a&-2],f[3])){c&=-2;a=f[2]?f[2](c):0;f[3](a&255|b<<8,c);return}d.cb(c,b,1)}function Qa(a,b){var c=this.controller;if(a=c.ta[a]){if(a[2])return a[2](b);if(a[0])return a[0](b)|a[0](b+1)<<8}return c.cb(b,-1,0)} +function Ra(a,b,c){var d=this.controller;if(a=d.ta[a]){if(a[3]){a[3](b,c);return}if(a[1]){a[1](b&255,c);a[1](b>>8,c+1);return}}d.cb(c,b,0)}Ma.prototype.reset=function(){this.A&&this.A()};Ma.prototype.O=function(){return 0};Ma.prototype.za=function(a,b){b||this.reset();return!0}; +function Sa(a,b,c,d,f){for(var e=b,g=c,h=e>>>a.f;0g&&(q=g);if(k&&k.size){if(k.type==d&&k.controller==f){if(e+g<=k.Sa)return k.wb+=k.Sa-e,k.Sa=e,!0;if(e>=k.Sa+k.wb){q=k.size-(e-m);q>g&&(q=g);k.wb=e-k.Sa+q;e=m+a.g;g-=q;h++;continue}}return Ua(1,e,g)}e=new H(e,q,a.g,d,f);Na(e,a.K,k);a.c[h++]=e;e=m+a.g;g-=q}return 0>=g?(a.status(Math.floor(c/1024)+"Kb "+Va[d]+" at "+n(b,8,!0)),!0):Ua(2,b,c)} +function Wa(a){for(var b=0,c=[],d=0;d>13&7;"undefined"===typeof b.S[e]&&(b.S[e]={cache:[],postProcess:a.jc,drive:e,blocksize:256,mapped:0,maxblock:b.Fa[e]*b.F[e],url:"rk"+e+".dsk"});b.A&=-129;switch(b.A>>1&7){case 0:b.gb=2496;b.P=0;b.A=128;b.V=0;break;case 1:if((b.V>>4&511)>=b.Fa[e]){b.P|=32832;b.A|=49152;break}if((b.V&15)>=b.F[e]){b.P|=32800;b.A|=49152;break}c=(b.V>>4&511)*b.F[e]+(b.V&15);d=(b.A&48)<<12|b.fb;f=65536-b.hb&65535;db(a,b.S[e],c,d,f);return;case 2:if((b.V>>4&511)>=b.Fa[e])b.P|=32832, -b.A|=49152;else if((b.V&15)>=b.F[e])b.P|=32800,b.A|=49152;else{c=(b.V>>4&511)*b.F[e]+(b.V&15);d=(b.A&48)<<12|b.fb;f=65536-b.hb&65535;a.pb(b.S[e],c,d,f);return}}b.gb=e<<13|b.gb&8176|b.V%9&15;H(a.c,20,160,144,function(){b.A=b.A&65534|128;return!!(b.A&64)})}l.jc=function(a,b,c,d,f){var e=this.g;e.fb=d&65535;e.A=e.A&-49|d>>12&48;e.hb=65536-f&65535;switch(a){case 1:e.P|=33024;e.A|=49152;break;case 2:e.P|=33792,e.A|=49152}H(this.c,20,160,144,function(){e.A=e.A&65534|128;return!!(e.A&64)})}; -function eb(a){var b=a.h,c,d,f,e=b.m>>8&3;b.m&=-2;"undefined"===typeof b.S[e]&&(b.S[e]={cache:[],postProcess:a.kc,drive:e,blocksize:128,mapped:1,maxblock:b.Fa[e]*b.F[e],url:"rl"+e+".dsk"});switch(b.m>>1&7){case 2:b.ta&8&&(b.m&=63);b.ta=b.Yb[e]|b.xa&64;break;case 3:1==(b.H&3)&&(b.xa=b.H&4?b.xa+(b.H&65408)&65408|b.H<<2&64:b.xa-(b.H&65408)&65408|b.H<<2&64,b.H=b.xa);break;case 4:b.ta=b.xa;break;case 5:if(b.H>>6>=b.Fa[e]){b.m|=37888;break}if((b.H&63)>=b.F[e]){b.m|=37888;break}c=(b.H>>6)*b.F[e]+(b.H&63); -d=(b.qa&63)<<16|b.Ya;f=65536-b.ta&65535;db(a,b.S[e],c,d,f);return;case 6:if(b.H>>6>=b.Fa[e])b.m|=37888;else if((b.H&63)>=b.F[e])b.m|=37888;else{c=(b.H>>6)*b.F[e]+(b.H&63);d=(b.qa&63)<<16|b.Ya;f=65536-b.ta&65535;a.pb(b.S[e],c,d,f);return}}H(a.c,20,160,112,function(){b.m|=129;return!!(b.m&64)})} -l.kc=function(a,b,c,d,f){var e=this.h;e.Ya=d&65535;e.m=e.m&-49|d>>12&48;e.qa=d>>16&63;e.H=~~(c/e.F[b.ia])<<6|c%e.F[b.ia];e.xa=e.H;e.ta=65536-f&65535;switch(a){case 1:e.m|=33792;break;case 2:e.m|=40960}H(this.c,20,160,112,function(){e.m|=129;return!!(e.m&64)})};function fb(a){a=a.i;a.C=2176;a.$=0;a.T=[4544,4544,4544,4544,4544,4544,4544,4544];a.Ta=[0,0,0,0,0,0,0,0];a.Ka=a.Ua=a.Sa=a.wa=a.Db=0} -function gb(a,b){var c=a.i,d,f,e;c.C&=-16513;c.$&=-2049;c.T[b]&=-1153;H(a.c,-1,0,172);"undefined"===typeof c.S[b]&&(c.S[b]={cache:[],postProcess:a.lc,drive:b,blocksize:256,mapped:0,maxblock:c.tb[0]*c.Ea[0]*c.F[0],url:"rp"+b+".dsk"});switch(c.C&63){case 5:c.rb[b]=c.la[b];c.C|=32896;c.T[b]|=32896;c.Ka|=1<=c.tb[0]||c.aa[b]>>8>=c.Ea[0]||(c.aa[b]&255)>=c.F[0]){c.Ta[b]|=1024;c.C|=49152;break}d=(c.la[b]*c.Ea[0]+(c.aa[b]>>8))*c.F[0]+ -(c.aa[b]&255);f=(c.wa&63)<<16|c.Sa;e=65536-c.Ua&65535;db(a,c.S[b],d,f,e);return;case 57:if(c.la[b]>=c.tb[0]||c.aa[b]>>8>=c.Ea[0]||(c.aa[b]&255)>=c.F[0])c.Ta[b]|=1024,c.C|=49152;else{d=(c.la[b]*c.Ea[0]+(c.aa[b]>>8))*c.F[0]+(c.aa[b]&255);f=(c.wa&63)<<16|c.Sa;e=65536-c.Ua&65535;a.pb(c.S[b],d,f,e);return}}H(a.c,3,160,172,function(){c.C=c.C&65534|128;c.T[b]|=128;return!!(c.C&64)})} -l.lc=function(a,b,c,d,f){var e=this.i;e.Ua=65536-f&65535;e.Sa=d&65535;e.C=e.C&-769|d>>8&768;e.wa=d>>16&63;f=~~(c/e.F[0]);d=~~(f/e.Ea[0]);e.aa[b.ia]=f%e.Ea[0]<<8|c%e.F[0];e.rb[b.ia]=e.la[b.ia]=d;e.Ka|=1<=b.fc-1&&(e.T[b.ia]|=1024);switch(a){case 1:e.$|=512;e.C|=49152;break;case 2:e.$|=2048,e.C|=49152}H(this.c,20,160,172,function(){e.T[b.ia]|=128;e.C=e.C&65534|128;return!!(e.C&64)})};l.dc=function(){this.f.m|=128;this.f.m&64&&H(this.c,0,192,64)}; -function hb(a,b,c,d,f,e){var g=~~((e+c.ra-1)/c.ra),h=new XMLHttpRequest;2048>g&&d+2048K(this.c,a.ec?ib(this.c,c):c,a.cache[b][f])){a.ob(2,a,b,c,d);return}c+=2;--d}b++}a.ob(0,a,b,c,d)}; -function db(a,b,c,d,f){for(var e,g;0g){b.ob(2,b,c,d,f);return}b.cache[c][e]=g;d+=2;--f}c++}b.ob(0,b,c,d,f)}l.reset=function(){this.b.Ra=this.b.Ra&-120|20;this.l.ga=0;this.l.U=128;this.f.m=0;this.g.A=128;this.h.m=128;fb(this)}; -l.Xb=function(a,b,c){var d,f,e=this.c;switch(a&-64){case 4194240:switch(a&-2){case 4194300:0>b?d=e.ka&65280:(a&1&&(b<<=8),e.ka=b|255,d=0);break;case 4194298:if(0>b)d=e.qb;else{a&1&&(b<<=8);if(d=b&65024){f=d>>9;do d+=34;while(f>>=1)}e.qb=d;e.ja=2}break;case 4194294:if(70!==e.Ga)return J(e,4,222);0>b?d=e.s:d=e.s=0;break;case 4194292:if(70!==e.Ga)return J(e,4,224);d=1;break;case 4194290:if(70!==e.Ga)return J(e,4,226);d=0;break;case 4194288:if(70!==e.Ga)return J(e,4,228);d=61183;break;case 4194296:0<= -b&&!(a&1)&&(b&=255);case 4194286:case 4194284:case 4194282:case 4194280:case 4194278:case 4194276:case 4194274:case 4194272:if(70!==e.Ga)return J(e,4,232);f=a-4194272>>1;0>b?d=e.Ab[f]:(d=I(this,e.Ab[f],a,b,c),0<=d&&(e.Ab[f]=d));break;case 4194254:return a&1?e.o>>14&1?(0<=b&&(e.a[6]=b),d=e.a[6]):(0<=b&&(e.Z[3]=b),d=e.Z[3]):e.o>>14&0?(0<=b&&(e.a[6]=b),d=e.a[6]):(0<=b&&(e.Z[1]=b),d=e.Z[1]),d;case 4194252:case 4194250:case 4194248:return f=a&7,e.o&2048?(0<=b&&(e.a[f]=b),d=e.a[f]):(0<=b&&(e.Ja[f]=b),d= -e.Ja[f]),d;case 4194246:return a&1?(0<=b&&(e.a[7]=b),d=e.a[7]):e.o>>14&0?(0<=b&&(e.a[6]=b),d=e.a[6]):(0<=b&&(e.Z[0]=b),d=e.Z[0]),d;case 4194244:case 4194242:case 4194240:return f=a&7,e.o&2048?(0<=b&&(e.Ja[f]=b),d=e.Ja[f]):(0<=b&&(e.a[f]=b),d=e.a[f]),d;default:return e.s|=16,J(e,4,124)}break;case 4194176:f=a>>1&31;d=I(this,e.O[3][f],a,b,c);0<=d&&(e.O[3][f]=d,e.O[3][f&15]&=65295);break;case 4194112:var g=this.l;f=this.f;switch(a&-2){case 4194174:d=I(this,e.Va,a,b,c);0<=d&&(e.Va=d);break;case 4194172:d= -e.ea;d&65280&&(d=(d<<8|d>>8)&65535);break;case 4194170:e.G=e.G&62337|e.bb<<5|e.nb<<1;0>b?d=e.G:(d=I(this,e.G,a,b,c),0<=d&&(e.G=d&=62337,e.bb=d>>5&3,e.nb=d>>1&15,d&257?(f=2,e.oa&16&&(f=1),e.ab=d&1?Ia|D:D):(e.ab=0,f=4),this.b.Ra=this.b.Ra&-8|f));break;case 4194168:0>b?d=this.b.sc&65535:(d=I(this,this.b.data,a,b,c),0<=d&&(this.b.data=d));break;case 4194166:0<=b&&(b&127&&(g.$b=0),g.U&=-129,H(e,100,128,52,function(){g.U|=128;return!!(g.U&64)}));d=0;break;case 4194164:0>b?d=g.U:(d=I(this,g.U,a,b,c),0<= -d&&(128==(g.U&192)&&d&64&&H(e,8,128,52,function(){g.U|=128;return!!(g.U&64)}),g.U=g.U&128|d&-129));break;case 4194162:d=0;0>b&&(g.ga&=-129,0b?d=g.ga:(d=I(this,g.ga,a,b,c),0<=d&&(g.ga=g.ga&128|d&-129));break;case 4194150:0>b?(d=f.m,f.m&=-129):(d=I(this,f.m,a,b,c),0<=d&&(d&64&&!f.Bb&&(setInterval(this.dc.bind(this),25),f.Bb=1),f.m=d&-129));break;default:return e.s|=16,J(e, -4,126)}break;case 4194048:f=this.g;switch(a&-2){case 4194048:d=I(this,f.gb,a,b,c);0<=d&&(f.gb=d);break;case 4194050:d=I(this,f.P,a,b,c);0<=d&&(f.P=d);break;case 4194052:d=I(this,f.A,a,b,c);0<=b&&0<=d&&(f.A=d&-36993|f.A&36992,f.A&1&&cb(this));break;case 4194054:d=I(this,f.hb,a,b,c);0<=d&&(f.hb=d);break;case 4194056:d=I(this,f.fb,a,b,c);0<=d&&(f.fb=d);break;case 4194058:d=I(this,f.V,a,b,c);0<=d&&(f.V=d);break;case 4194060:break;case 4194062:d=I(this,f.Qb,a,b,c);0<=d&&(f.Qb=d);break;default:return e.s|= -16,J(e,4,128)}break;case 4193728:var h=this.i;f=h.$&7;switch(a&-2){case 4193728:d=I(this,h.C,a,b,c);0<=b&&0<=d&&(h.wa=h.wa&60|d>>8&3,h.C=d&17279|h.C&34944|2048,d&1&&h.C&128?gb(this,f):192==(d&192)&&H(e,0,160,172));break;case 4193730:d=I(this,h.Ua,a,b,c);0<=d&&(h.Ua=d);break;case 4193732:d=I(this,h.Sa,a,b,c);0<=d&&(h.Sa=d&65534);break;case 4193734:d=I(this,h.aa[f],a,b,c);0<=d&&(h.aa[f]=d&7967);break;case 4193736:d=I(this,h.$,a,b,c);0<=d&&(h.$=d&63|h.$&65472,d&128&&fb(this));break;case 4193738:d=h.T[f]; -break;case 4193740:d=h.Ta[f];break;case 4193742:d=I(this,h.Ka,a,b,c);0<=d&&(h.Ka=d&255);break;case 4193744:d=h.qc[f];break;case 4193746:d=I(this,h.Rb,a,b,c);0<=d&&(h.Rb=d);break;case 4193748:d=I(this,h.Sb[f],a,b,c);0<=d&&(h.Sb[f]=d&1023);break;case 4193750:d=8210;break;case 4193752:d=h.rc[f];break;case 4193754:d=I(this,h.Tb[f],a,b,c);0<=d&&(h.Tb[f]=d);break;case 4193756:d=I(this,h.la[f],a,b,c);0<=d&&(h.la[f]=d&511);break;case 4193758:h.rb[f]=h.la[f];d=h.rb[f];break;case 4193760:d=h.oc[f];break;case 4193762:d= -h.pc[f];break;case 4193764:d=h.mc[f];break;case 4193766:d=h.nc[f];break;case 4193768:d=I(this,h.wa,a,b,c);0<=d&&(h.wa=d&63,h.C=h.C&-769|(d&3)<<8);break;case 4193770:d=I(this,h.Db,a,b,c);0<=d&&(h.Db=d);break;default:return e.s|=16,J(e,4,132)}break;case 4192512:f=this.h;switch(a&-2){case 4192512:d=I(this,f.m,a,b,c);0<=b&&0<=d&&(f.qa=f.qa&60|d>>4&3,f.m=f.m&-1023|d&1022,f.m&128||eb(this));break;case 4192514:d=I(this,f.Ya,a,b,c);0<=d&&(f.Ya=d&65534);break;case 4192516:d=I(this,f.H,a,b,c);0<=d&&(f.H=d); -break;case 4192518:d=I(this,f.ta,a,b,c);0<=d&&(f.ta=d);break;case 4192520:d=I(this,f.qa,a,b,c);0<=d&&(f.qa=d&63,f.m=f.m&-49|(f.qa&3)<<4);break;default:return e.s|=16,J(e,4,134)}break;case 4191552:switch(a&-2){case 4191566:0>b?d=e.oa:(d=I(this,e.oa,a,b,c),0<=d&&(70!==e.Ga&&(d&=-49),e.oa=d,e.Ia[0]=d&4?15:7,e.Ia[1]=d&2?15:7,e.Ia[3]=d&1?15:7,e.ab&&(f=2,e.oa&16&&(f=1),this.b.Ra=this.b.Ra&-8|f)));break;default:return e.s|=16,J(e,4,136)}break;case 4191424:f=a>>1&31;d=I(this,e.O[0][f],a,b,c);0<=d&&(e.O[0][f]= -d,e.O[0][f&15]&=65295);break;case 4191360:f=a>>1&31;d=I(this,e.O[1][f],a,b,c);0<=d&&(e.O[1][f]=d,e.O[1][f&15]&=65295);break;case 4190400:case 4190336:if(70!==e.Ga)return J(e,4,234);f=a>>2&31;d=e.ib[f];a&2&&(d>>=16);d&=65535;0<=b&&(d=I(this,d,a,b,c),0<=d&&(e.ib[f]=a&2?d<<16|e.ib[f]&65535:e.ib[f]&4294901760|d&65534));break;case 4188672:case 4188736:case 4188800:case 4188864:case 4188928:case 4188992:case 4189056:case 4189120:if(0>b)d=Za[a>>1&255];else return e.s|=16,J(e,4,138);break;default:return e.s|= -16,J(e,4,142)}c&&0<=d&&(a&1?d>>=8:d&=255);"undefined"===typeof d&&console.log("panic(76)");return d};var jb={},$a=(jb[65534]=[null,null,Ya.prototype.hc,Ya.prototype.uc],jb);u(function(){for(var a=B(document,"pdp11","device"),b=0;b>1),this.c=new Int32Array(this.f,0,c>>2),qb(this,mb?rb:sb);else{this.c=Array(c>>2);for(a=0;a>2),b=0;b>8,c)},X:function(a){return this.c[a>>2]>>>((a&3)<<3)&255},ya:function(a){var b=a>>2;a=(a&3)<<3;var c=this.c[b]>>a;return 24>a?c&65535:c&255|(this.c[b+1]&255)<<8},Ca:function(a,b){var c=a>>2;a=(a&3)<<3;this.c[c]=this.c[c]&~(255<>2;a=(a&3)<<3;24>a?this.c[c]=this.c[c]&~(65535<>8);this.sa=!0},N:function(a,b){return this.R(a, -b)},da:function(a,b){return this.ma(a,b)},Aa:function(a,b,c){this.h||this.Wb(a,b,c)},Ma:function(a,b,c){this.h||this.Na(a,b,c)},K:function(a){return this.b[a]},W:function(a){return this.b[a]},ca:function(a){return this.g.getUint16(a,!0)},na:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.B[a>>1]},za:function(a,b){this.b[a]=b;this.sa=!0},Ba:function(a,b){this.b[a]=b;this.sa=!0},Da:function(a,b){this.g.setUint16(a,b,!0);this.sa=!0},Oa:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.B[a>> -1]=b;this.sa=!0}};function Oa(a,b,c){a.I=b;a.i=a.l=0;c&&((a.i=c.i)&&ub(a,vb,!1),(a.l=c.l)&&wb(a,vb,!1))}function wb(a,b,c){c&&a.l||(a.jb=!a.h&&b[1]||a.v,a.vc=!a.h&&b[3]||a.J);if(c||void 0===c)a.Wb=b[1]||a.v,a.Na=b[3]||a.J}function ub(a,b,c){c&&a.i||(a.eb=b[0]||a.w,a.ic=b[2]||a.u);if(c||void 0===c)a.R=b[0]||a.w,a.ma=b[2]||a.u}function qb(a,b){b||(b=xb);ub(a,b,void 0);wb(a,b,void 0)} -var xb=[],tb=[G.prototype.X,G.prototype.Ca,G.prototype.ya,G.prototype.Pa],vb=[G.prototype.N,G.prototype.Aa,G.prototype.da,G.prototype.Ma];if(Ha)var sb=[G.prototype.K,G.prototype.za,G.prototype.ca,G.prototype.Da],rb=[G.prototype.W,G.prototype.Ba,G.prototype.na,G.prototype.Oa]; -function yb(a,b){v.call(this,"CPU",a,yb);var c=a.multiplier||1;this.wb=a.cycles||b;this.ma=c;this.vb=Math.round(this.wb/1E4)/100;this.ca=this.vb*this.ma;this.j.ha=!1;this.j.Ub=!1;this.j.Xa=a.autoStart;this.j.Nb=!1;this.j.lb=!1;this.Oa=this.da=0;this.Pa=a.csStart;this.za=a.csInterval;this.Aa=a.csStop;this.Ma=[];this.Mb=this.Eb.bind(this);C(this)}x(yb);var zb=["power","reset"];l=yb.prototype; -l.Ha=function(a,b,c,d){this.v=a;this.w=b;this.I=d;for(b=0;b>=3;d=""+f}else d=n(c,d);else d="--------".substr(0,d||4);a.B[b].textContent!=d&&(a.B[b].textContent=d)}} -l.ba=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.B[b]=c;a=!0;break;case "run":this.B[b]=c;c.onclick=function(){var a;if(a=d.v)if(a=d.v,a.j.M)a=!0;else{var b=null,c,h=y(a.id);for(c=0;ca.N/a.ca&&(b=1),a.ma=b,b=a.vb*a.ma,a.ca!=b)){a.ca=b;b=a.ca.toFixed(2)+"Mhz";var c=a.B.setSpeed;c&&(c.textContent=b);a.Y("target speed: "+b)}Hb(a,a.K);a.K=0;a.J=ha();a.R=0;Ib(a)}function Kb(a){a.W-=a.c;a.c=0} -l.Eb=function(){if(Fa(this,!0)){if(!this.j.ha){Gb(this);this.v&&this.v.start(this.J,Jb(this));this.j.ha=!0;this.j.Ub=!0;this.ya&&this.ya.start();var a=this.B.run;a&&(a.textContent="Halt");this.v&&this.v.La(!0)}this.xb>=this.wb&&Ib(this,!0);this.Ca=0;this.Na=ha();this.R&&(a=this.Na-this.R,a>this.Jb&&(this.J+=a,this.J>this.Na&&(this.J=this.Na)));try{do{for(var b,c=this.j.lb?1:this.kb,d=this.Ma.length-1;0<=d;d--){var f=this.Ma[d];0>f[0]||c>f[0]&&(c=f[0])}b=c;try{this.Vb(b)}catch(m){if("number"!=typeof m)throw m; -}for(var e=this.W-this.c,a=e,g=this.Ma.length-1;0<=g;g--){var h=this.Ma[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.Ca+=e;this.K+=e;Hb(this,0,!0);a=e;if(this.j.lb){var k=!1;this.Oa=this.Oa+this.Pb()|0;this.da-=a;0>=this.da&&(this.da+=this.za,k=!0);0<=this.Aa&&this.Aa<=Jb(this)&&(this.za=this.Aa=-1,Cb(this),Fb(this),k=!0);k&&this.Y(Jb(this)+" cycles: checksum="+n(this.Oa))}this.Ba-=e;if(0>=this.Ba){this.Ba+=this.kb;15<=++this.Kb&&(this.v&&this.v.La(),this.Kb=0);break}}while(this.j.ha)}catch(m){Fb(this); -Db(this);this.v&&this.v.stop(ha(),Jb(this));Fa(this,!1);b=m.stack||m.message;this.j.error=!0;this.L(b);return}b=setTimeout;c=this.Mb;this.R=ha();d=this.Jb;this.Ca&&(d=Math.round(d*this.Ca/this.kb));d-=this.R-this.Na;if(f=this.R-this.J)this.N=Math.round(this.K/(10*f))/100,864E5<=f&&(this.X=0,Gb(this));if(0>d||this.Nd&&(this.J-=d),d=0;this.xb+=this.Ca;this.R+=d;b(c,d)}else Db(this),this.v&&this.v.stop(ha(),Jb(this))};l.Vb=function(){return 0}; -function Fb(a){a.j.Za&&(a.j.yb=!0);Kb(a);Hb(a,a.K);a.K=0;if(a.j.ha){a.j.ha=!1;a.ya&&a.ya.stop();var b=a.B.run;b&&(b.textContent="Run")}a.j.complete=void 0}function Db(a){a.v&&a.v.La(void 0)} -function Lb(a){this.cc=a.resetAddr||0;yb.call(this,a,1E6);this.Gb=0;this.decode=Mb.bind(this);this.h=65536;this.f=32768;this.g=65535;this.b=32768;this.a=[0,0,0,0,0,0,0,this.cc];this.Ja=[0,0,0,0,0,0];this.Z=[0,0,0,0];this.ka=255;this.nb=this.bb=this.ab=this.u=this.oa=this.Va=this.ea=this.G=this.s=this.qb=0;this.Ia=[7,7,7,7];this.O=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535, -65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.ib=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.Ab=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.i=-1;this.D=0;this.Ga=70;this.na=-1;this.l=[];this.Da=0;this.ja=2;this.j.complete=this.j.Zb=!1}x(Lb,yb);l=Lb.prototype; -l.reset=function(){this.j.ha&&Fb(this);Nb(this);Bb(this);this.j.error=!1;this.parent.reset.call(this)};function Nb(a){a.ka=255;a.s=0;a.l=[];a.qb=0;a.G=a.ea=a.Va=a.oa=a.ab=0;a.Ia[0]=a.Ia[1]=a.Ia[3]=7;a.bb=0}l.Pb=function(){return 0};l.save=function(){var a=new M(this);a.set(0,[]);a.set(1,[this.Ib,this.X,this.ma]);a.set(2,Xa(this.w));return a.data()}; -l.restore=function(a){var b=a[1];this.Ib=b[0];this.X=b[1];Gb(this,b[3]);a:{b=this.w;a=a[2];var c;for(c=0;cb){a.l[e].fa-=b;break}b-=a.l[e].fa}a.l.splice(e+1,0,{delay:b,priority:c&224,vector:d,callback:f})}a.ja=2}function ab(a){return a.o=a.o&63728|(a.b&32768?8:0)|(a.g&65535?0:4)|(a.f&32768?2:0)|(a.h&65536?1:0)} -function bb(a,b){a.b=b<<12;a.g=~b&4;a.f=b<<14;a.h=b<<16;if((b^a.o)&2048)for(var c=a.Ja.length;0<=--c;){var d=a.a[c];a.a[c]=a.Ja[c];a.Ja[c]=d}a.u=b>>14&3;c=a.o>>14&3;a.u!=c&&(a.Z[c]=a.a[6],a.a[6]=a.Z[a.u]);a.ja=2;a.o=b}function Ob(a,b){a.D&128||(a.b=a.g=a.h=b,a.f=0)}function N(a,b){a.D&128||(a.b=a.g=b,a.f=0)}function Pb(a,b,c,d){a.D&128||(a.b=a.g=a.h=b,a.f=(c^d)&(d^b))} -function J(a,b,c){var d,f,e=0;0>a.na?a.na=ab(a):a.u||(b=4,e=1);a.G&57344||(a.ea=63222,a.Va=b);a.u=0;0<=(d=O(a,b|65536))&&0<=(f=O(a,b+2&65535|65536))&&(bb(a,f&53247|a.na>>2&12288),e&&(a.s|=4,a.a[6]=4),0<=Qb(a,a.na)&&0<=Qb(a,a.a[7])&&(a.a[7]=d));a.D&=-113;a.na=-1;throw b|c<<8;}function ib(a,b){var c=b>>13&31;31>c?a.oa&32&&(b=a.ib[c]+(b&8190)&4194302,3932160<=b&&4186112>b&&console.log("panic(898)")):b|=4186112;return b} -function Rb(a,b,c){var d,f,e,g=0;if(c&a.ab){d=b>>13&a.Ia[a.u];f=a.O[a.u][d];e=(a.O[a.u][d+16]<<6)+(b&8191)&4194303;a.oa&16?3932160<=e&&4186112>e&&(e=ib(a,e&262143)):(e&=262143,253952<=e&&(e|=4186112));3932160>e&&(3915776<=e&&(a.s|=32,J(a,4,24)),e&1&&!(c&1)&&(a.s|=64,J(a,4,26)));switch(f&7){case 1:g=4096;case 2:f|=128;c&D&&(g=8192);break;case 4:g=4096;case 5:c&D&&(g=4096);case 6:f|=c&D?192:128;break;default:g=32768}32512!==(f&32520)&&(f&8?f&32512&&(b&8128)<(f>>2&8128)&&(g|=16384):(b&8128)>(f>>2&8128)&& -(g|=16384));a.O[a.u][d]=f;if(4194170!==e||a.u)a.bb=a.u,a.nb=d;g&&(g&57344&&(0<=a.na&&(g|=128),a.G&57344||(a.G=a.G|g|a.bb<<5|a.nb<<1),J(a,168,28)),a.G&61440||!(4191360>e||4194239>>a.f;b=c!=a.h?a.b[d].ic(c,b):a.b[d++].eb(c,b)|a.b[d&a.N].eb(0,b+1)<<8}return b} -function K(a,b,c){c&=65535;if(4194304<=b)return a.a[b-4194304]=c;if(0<=b){a=a.w;var d=c,f=b&a.h,e=(b&a.i)>>>a.f;f!=a.h?a.b[e].vc(f,d&65535,b):(a.b[e++].jb(f,d&255,b),a.b[e&a.N].jb(0,d>>8&255,b+1));return c}return b}function Q(a,b){4194304<=b?b=a.a[b-4194304]&255:0<=b&&(a=a.w,b=a.b[(b&a.i)>>>a.f].eb(b&a.h,b));return b}function S(a,b,c){c&=255;return 4194304<=b?a.a[b-4194304]=a.a[b-4194304]&65280|c:0<=b?(a=a.w,a.b[(b&a.i)>>>a.f].jb(b&a.h,c&255,b),c):b}function O(a,b){return L(a,Rb(a,b,Ia))} -function Sb(a){var b=O(a,a.a[6]|65536);0<=b&&(a.a[6]=a.a[6]+2&65535);return b}function Qb(a,b){var c,d;a.a[6]=d=a.a[6]-2&65535;a.G&57344||(a.ea=a.ea<<8|246);!a.u&&d<=a.ka&&4>3&7){case 0:J(a,4,34);break;case 1:return 6===e&&!a.u&&c&D&&(a.a[6]<=a.ka||65534<=a.a[6])&&(a.a[6]<=a.ka-32||65534<=a.a[6]?(a.s|=4,a.a[6]=4,J(a,4,36)):(a.s|=8,a.D|=64)),7===e?a.a[e]:a.a[e]|65536;case 2:f=2;d=a.a[e];7!==e&&(d|=65536,6>e&&c&1&&(f=1));break;case 3:f=2;d=a.a[e];7!==e&&(d|=65536);if(0>(d=O(a,d)))return d;d|=65536;break;case 4:f=-2;6>e&&c&1&&(f=-1);d=a.a[e]+f&65535;7!==e&&(d|=65536);break;case 5:f=-2;d=a.a[e]-2&65535;7!==e&&(d|=65536);if(0>(d= -O(a,d)))return d;d|=65536;break;case 6:if(0>(d=O(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return d|65536;case 7:if(0>(d=O(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return 0>(d=O(a,d|65536))?d:d|65536}a.a[e]=a.a[e]+f&65535;a.G&57344||(a.ea=a.ea<<8|f<<3&248|e);6===e&&!a.u&&c&D&&0>=f&&(a.a[6]<=a.ka||65534<=a.a[6])&&(a.a[6]<=a.ka-32?(a.s|=4,a.a[6]=4,J(a,4,38)):(a.s|=8,a.D|=64));return d}function T(a,b,c){b&56?(b=Tb(a,b,c),a=Rb(a,b,c)):a=4194304+(b&7);return a} -function U(a,b){b&56?(b=T(a,b,Ia),a=L(a,b)):a=a.a[b&7];return a}function V(a,b){b&56?(b=T(a,b,Ja),a=Q(a,b)):a=a.a[b&7]&255;return a}function Ub(a,b,c,d){b&56?(b=T(a,b,E),K(a,b,d.call(a,c,L(a,b)))):(b&=7,a.a[b]=d.call(a,c,a.a[b])&65535)}function Vb(a,b,c,d){b&56?(b=T(a,b,F),S(a,b,d.call(a,c,Q(a,b)))):(b&=7,a.a[b]=a.a[b]&65280|d.call(a,c,a.a[b])&255)}function Wb(a,b,c){b&56?K(a,T(a,b,D),c):a.a[b&7]=c&65535;return c} -function Xb(a,b,c,d){b&56?S(a,T(a,b,Ka),c):(b&=7,a.a[b]=d?d&1?a.a[b]&-256:c<<24>>24&65535:a.a[b]&-256|c&255);return c}function W(a,b){return((b&128?b|65280:b&255)<<1)+a&65535} -l.Vb=function(a){this.j.complete=!0;this.j.Zb=!1;this.j.Ub=!1;this.W=this.c=a;this.Ib&256?(Kb(this),a=!1):a=!0;if(a){do{var b,c,d,f,e;this.D&112&&(this.D&32?J(this,168,52):this.D&64?J(this,4,54):this.D&16&&J(this,12,56),this.D&=-113);if(this.ja)if(1===this.ja)this.ja=2;else{this.ja=0;e=-1;b=this.qb&224;if(0<(a=this.l.length))for(;0b&&(b=this.l[a].gc, -e=a)}b>(this.o&224)&&(0>e?J(this,160,42):(J(this,this.l[e].tc,44),this.l.splice(e,1)))}this.G&57344||(this.ea=0,this.Va=this.a[7]);this.D=this.o&16;this.i=a=O(this,this.a[7]);0<=a&&(this.a[7]=this.a[7]+2&65535);this.decode(a);if(0>this.i)switch(a&61440){case 4096:0<=(b=U(this,a>>6))&&(a&56?0<=(d=T(this,a,D))&&0<=K(this,d,b)&&(this.b=this.g=b,this.f=0):(this.b=this.g=this.a[a&7]=b,this.f=0));break;case 8192:0<=(b=U(this,a>>6))&&0<=(c=U(this,a))&&(this.b=this.g=this.h=a=b-c,this.f=(b^c)&(b^a));break; -case 12288:0<=(b=U(this,a>>6))&&0<=(c=U(this,a))&&(this.b=this.g=b&c,this.f=0);break;case 16384:0<=(b=U(this,a>>6))&&(a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c&~b,0<=K(this,d,a)&&(this.b=this.g=a,this.f=0)):(this.b=this.g=a=this.a[a&7]&=~b,this.f=0));break;case 20480:0<=(b=U(this,a>>6))&&(a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c|b,0<=K(this,d,a)&&(this.b=this.g=a,this.f=0)):(this.b=this.g=a=this.a[a&7]|=b,this.f=0));break;case 24576:0<=(b=U(this,a>>6))&&(a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=b+c,0<= -K(this,d,a)&&(this.b=this.g=this.h=a,this.f=(b^a)&(c^a))):(e=a&7,c=this.a[e],this.a[e]=(a=b+c)&65535,this.b=this.g=this.h=a,this.f=(b^a)&(c^a)));break;case 36864:0<=(b=V(this,a>>6))&&(a&56?0<=(d=T(this,a,Ka))&&0<=S(this,d,b)&&(this.b=this.g=b<<8,this.f=0):(b&128&&(b|=65280),this.b=this.g=this.a[a&7]=b,this.f=0));break;case 40960:0<=(b=V(this,a>>6))&&0<=(c=V(this,a))&&(a=b-c,this.b=this.g=this.h=a<<8,this.f=((b^c)&(b^a))<<8);break;case 45056:0<=(b=V(this,a>>6))&&0<=(c=V(this,a))&&(this.b=this.g=(b& -c)<<8,this.f=0);break;case 49152:0<=(b=V(this,a>>6))&&0<=(c=Q(this,d=T(this,a,F)))&&(a=c&~b,0<=S(this,d,a)&&(this.b=this.g=a<<8,this.f=0));break;case 53248:0<=(b=V(this,a>>6))&&0<=(c=Q(this,d=T(this,a,F)))&&(a=c|b,0<=S(this,d,a)&&(this.b=this.g=a<<8,this.f=0));break;case 57344:0<=(b=U(this,a>>6))&&(a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c-b,0<=K(this,d,a)&&(this.b=this.g=this.h=a,this.f=(b^c)&(c^a))):(e=a&7,c=this.a[e],this.a[e]=(a=c-b)&65535,this.b=this.g=this.h=a,this.f=(b^c)&(c^a)));break;default:switch(a& -65024){case 2048:0<=(f=Tb(this,a,0))&&(e=a>>6&7,0<=Qb(this,this.a[e])&&(this.a[e]=this.a[7],this.a[7]=f&65535));break;case 28672:0<=(b=U(this,a))&&(e=a>>6&7,b&32768&&(b|=-65536),c=this.a[e],c&32768&&(c|=-65536),a=~~(b*c),this.a[e]=a>>16&65535,this.a[e|1]=a&65535,this.b=a>>16,this.g=this.b|a,this.h=this.f=0,-32768>a||32767>6&7,c=this.a[e]<<16|this.a[e|1],this.h=this.f=0,b&32768&&(b|=-65536),a=~~(c/b),-32768<=a&&32767>=a?(this.a[e]=a&65535, -this.a[e|1]=c-a*b&65535,this.g=a>>16|a,this.b=a>>16):(this.f=32768,this.g=a>>15|a,this.b=c>>16,-1===b&&65534===this.a[e]&&(this.a[e]=this.a[e|1]=1))):(this.g=this.b=0,this.f=32768,this.h=65536));break;case 29696:0<=(b=U(this,a))&&(e=a>>6&7,a=this.a[e],a&32768&&(a|=4294901760),this.h=this.f=0,b&=63,b&32?(b=64-b,16>=b):b&&(16>15&65535)&&65535!==c&&(this.f=32768))),this.a[e]=a&65535,this.b=this.g=a);break;case 30208:if(0<=(b=U(this,a))){e= -a>>6&7;c=this.a[e]<<16|this.a[e|1];this.h=this.f=0;b&=63;if(b&32)b=64-b,32>b-1,this.h=a<<16,a>>=1,c&2147483648&&(a|=4294967295<<32-b);else if(b){if(a=c<>15,a<<=1,32>=32-b)c|=4294967295<>16&65535;this.a[e|1]=a&65535;this.b=a>>16;this.g=a>>16|a}break;case 30720:a&56?0<=(c=L(this,d=T(this,a,E)))&&(c^=this.a[a>>6&7],0<=K(this,d,c)&&(this.b=this.g=c,this.f=0)):(this.b=this.g=c=this.a[a&7]^=this.a[a>> -6&7],this.f=0);break;case 32256:e=a>>6&7;if(this.a[e]=this.a[e]-1&65535)this.a[7]=this.a[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.a[7]=W(this.a[7],a);break;case 512:this.g&65535&&(this.a[7]=W(this.a[7],a));break;case 768:this.g&65535||(this.a[7]=W(this.a[7],a));break;case 1024:(this.b&32768)===(this.f&32768)&&(this.a[7]=W(this.a[7],a));break;case 1280:(this.b&32768)!==(this.f&32768)&&(this.a[7]=W(this.a[7],a));break;case 1536:this.g&65535&&(this.b&32768)===(this.f&32768)&& -(this.a[7]=W(this.a[7],a));break;case 1792:this.g&65535&&(this.b&32768)===(this.f&32768)||(this.a[7]=W(this.a[7],a));break;case 32768:this.b&32768||(this.a[7]=W(this.a[7],a));break;case 33280:!(this.h&65536)&&this.g&65535&&(this.a[7]=W(this.a[7],a));break;case 33024:this.b&32768&&(this.a[7]=W(this.a[7],a));break;case 33536:if(this.h&65536||!(this.g&65535))this.a[7]=W(this.a[7],a);break;case 33792:this.f&32768||(this.a[7]=W(this.a[7],a));break;case 34048:this.f&32768&&(this.a[7]=W(this.a[7],a));break; -case 34304:this.h&65536||(this.a[7]=W(this.a[7],a));break;case 34560:this.h&65536&&(this.a[7]=W(this.a[7],a));break;case 34816:J(this,24,2);break;case 35072:J(this,28,4);break;default:switch(a&65472){case 64:0<=(f=Tb(this,a,0))&&(this.a[7]=f&65535);break;case 192:a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c<<8|c>>8,0<=K(this,d,a)&&(this.b=this.g=c&65280,this.f=this.h=0)):(e=a&7,c=this.a[e],this.a[e]=(c<<8|c>>8)&65535,this.b=this.g=c&65280,this.f=this.h=0);break;case 2560:a&56?0<=(d=T(this,a,D))&&0<=K(this, -d,0)&&(this.b=this.h=this.f=this.g=0):this.b=this.h=this.f=this.g=this.a[a&7]=0;break;case 2624:0<=(c=L(this,d=T(this,a,E)))&&(a=~c,0<=K(this,d,a)&&(this.b=this.g=a,this.h=65536,this.f=0));break;case 2688:a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c+1,0<=K(this,d,a)&&(this.b=this.g=a,this.f=a&(a^c))):(e=a&7,c=this.a[e],a=c+1,this.a[e]=a&65535,this.b=this.g=a,this.f=a&(a^c));break;case 2752:a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c-1,0<=K(this,d,a)&&(this.b=this.g=a,this.f=(a^c)&c)):(e=a&7,c=this.a[e],a= -c-1,this.a[e]=a&65535,this.b=this.g=a,this.f=(a^c)&c);break;case 2816:0<=(c=L(this,d=T(this,a,E)))&&(a=-c,0<=K(this,d,a)&&(this.h=this.b=this.g=a,this.f=a&c));break;case 2880:0<=(c=L(this,d=T(this,a,E)))&&(a=c+(this.h>>16&1),0<=K(this,d,a)&&(this.h=this.b=this.g=a,this.f=a&(a^c)));break;case 2944:0<=(c=L(this,d=T(this,a,E)))&&(a=c-(this.h>>16&1),0<=K(this,d,a)&&(this.h=this.b=this.g=a,this.f=(a^c)&c));break;case 3008:0<=(c=U(this,a))&&(this.b=this.g=c,this.h=this.f=0);break;case 3072:a&56?0<=(c=L(this, -d=T(this,a,E)))&&(a=(this.h&65536|c)>>1,0<=K(this,d,a)&&(this.h=c<<16,this.b=this.g=a,this.f=a^this.h>>1)):(e=a&7,c=this.a[e],a=(this.h&65536|c)>>1,this.a[e]=a&65535,this.h=c<<16,this.b=this.g=a,this.f=a^this.h>>1);break;case 3136:a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c<<1|this.h>>16&1,0<=K(this,d,a)&&(this.h=this.b=this.g=a,this.f=a^c)):(e=a&7,c=this.a[e],a=c<<1|this.h>>16&1,this.a[e]=a&65535,this.h=this.b=this.g=a,this.f=a^c);break;case 3200:a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c&32768|c>>1,0<= -K(this,d,a)&&(this.h=c<<16,this.b=this.g=a,this.f=this.b^this.h>>1)):(e=a&7,c=this.a[e],a=c&32768|c>>1,this.a[e]=a&65535,this.h=c<<16,this.b=this.g=a,this.f=this.b^this.h>>1);break;case 3264:a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c<<1,0<=K(this,d,a)&&(this.h=this.b=this.g=a,this.f=a^c)):(e=a&7,c=this.a[e],a=c<<1,this.a[e]=a&65535,this.h=this.b=this.g=a,this.f=a^c);break;case 3328:f=this.a[7]+((a&63)<<1)&65535;0<=(b=O(this,f|65536))&&(this.a[7]=this.a[5],this.a[5]=b,this.a[6]=f+2&65535);break;case 3392:a& -56?0<=(f=Tb(this,a,0))&&(61440!==(this.o&61440)&&(f&=65535),this.u=this.o>>12&3,0<=(b=O(this,f))&&(this.u=this.o>>14&3,0<=Qb(this,b)&&(this.b=this.g=b,this.f=0))):(e=a&7,b=6!==e||(this.o>>2&12288)===(this.o&12288)?this.a[e]:this.Z[this.o>>12&3],0<=Qb(this,b)&&(this.b=this.g=b,this.f=0));break;case 3456:0<=(c=Sb(this))&&((this.G&57344||(this.ea=22),a&56)?0<=(f=Tb(this,a,0))&&(f&=65535,this.u=this.o>>12&3,0<=(d=Rb(this,f,D))&&(this.u=this.o>>14&3,0<=K(this,d,c)&&(this.b=this.g=c,this.f=0))):(e=a&7, -6!==e||(this.o>>2&12288)===(this.o&12288)?this.a[e]=c:this.Z[this.o>>12&3]=c,this.b=this.g=c,this.f=0));break;case 3520:0<=(d=T(this,a,D))&&(a=-(this.b>>15&1),0<=K(this,d,a)&&(this.g=a,this.f=0));break;case 35328:a&56?0<=(d=T(this,a,Ka))&&0<=S(this,d,0)&&(this.b=this.h=this.f=this.g=0):(this.a[a&7]&=65280,this.b=this.h=this.f=this.g=0);break;case 35392:0<=(c=Q(this,d=T(this,a,F)))&&(a=~c,0<=S(this,d,a)&&(this.b=this.g=a<<8,this.h=65536,this.f=0));break;case 35456:0<=(c=Q(this,d=T(this,a,F)))&&(a= -c+1,0<=S(this,d,a)&&(this.b=this.g=a<<8,this.f=(a&(a^c))<<8));break;case 35520:0<=(c=Q(this,d=T(this,a,F)))&&(a=c-1,0<=S(this,d,a)&&(this.b=this.g=a<<8,this.f=((a^c)&c)<<8));break;case 35584:0<=(c=Q(this,d=T(this,a,F)))&&(a=-c,0<=S(this,d,a)&&(this.h=this.b=this.g=a<<8,this.f=(a&c)<<8));break;case 35648:0<=(c=Q(this,d=T(this,a,F)))&&(a=c+(this.h>>16&1),0<=S(this,d,a)&&(this.b=this.g=this.h=a<<8,this.f=(a&(a^c))<<8));break;case 35712:0<=(c=Q(this,d=T(this,a,F)))&&(a=c-(this.h>>16&1),0<=S(this,d,a)&& -(this.b=this.g=this.h=a<<8,this.f=((a^c)&c)<<8));break;case 35776:0<=(c=V(this,a))&&(this.b=this.g=c<<8,this.h=this.f=0);break;case 35840:0<=(c=Q(this,d=T(this,a,F)))&&(a=((this.h&65536)>>8|c)>>1,0<=S(this,d,a)&&(this.h=c<<16,this.b=this.g=a<<8,this.f=this.b^this.h>>1));break;case 35904:0<=(c=Q(this,d=T(this,a,F)))&&(a=c<<1|this.h>>16&1,0<=S(this,d,a)&&(this.h=this.b=this.g=a<<8,this.f=(a^c)<<8));break;case 35968:0<=(c=Q(this,d=T(this,a,F)))&&(a=c&128|c>>1,0<=S(this,d,a)&&(this.h=c<<16,this.b=this.g= -a<<8,this.f=this.b^this.h>>1));break;case 36032:0<=(c=Q(this,d=T(this,a,F)))&&(a=c<<1,0<=S(this,d,a)&&(this.h=this.b=this.g=a<<8,this.f=(a^c)<<8));break;case 36160:a&56?0<=(f=Tb(this,a,0))&&(this.u=this.o>>12&3,0<=(b=O(this,f|65536))&&(this.u=this.o>>14&3,0<=Qb(this,b)&&(this.b=this.g=b,this.f=0))):(e=a&7,b=6!==e||(this.o>>2&12288)===(this.o&12288)?this.a[e]:this.Z[this.o>>12&3],0<=Qb(this,b)&&(this.b=this.g=b,this.f=0));break;case 36224:0<=(c=Sb(this))&&((this.G&57344||(this.ea=22),a&56)?0<=(f=Tb(this, -a,0))&&(this.u=this.o>>12&3,0<=(d=Rb(this,f|65536,D))&&(this.u=this.o>>14&3,0<=K(this,d,c)&&(this.b=this.g=c,this.f=0))):(e=a&7,6!==e||(this.o>>2&12288)===(this.o&12288)?this.a[e]=c:this.Z[this.o>>12&3]=c,this.b=this.g=c,this.f=0));break;default:switch(a&65528){case 128:0<=(b=Sb(this))&&(e=a&7,this.a[7]=this.a[e],this.a[e]=b);break;case 152:this.o&49152||(this.o=this.o&63519|(a&7)<<5,this.ja=1);break;case 160:case 168:a&1&&(this.h=0);a&2&&(this.f=0);a&4&&(this.g=1);a&8&&(this.b=0);break;case 176:case 184:a& -1&&(this.h=65536);a&2&&(this.f=32768);a&4&&(this.g=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.o?(this.s|=128,J(this,4,46)):(this.Da=3,Kb(this),console.log("HALT at "+this.a[7].toString(8)));break;case 1:e=0;if(0<(a=this.l.length))for(;0>12].call(this,a)} -var lc=[function(a){mc[a>>8&15].call(this,a)},function(a){N(this,Wb(this,a,U(this,a>>6)));--this.c},function(a){var b=U(this,a>>6);a=U(this,a);Pb(this,b-a,a,b);--this.c},function(a){N(this,U(this,a>>6)&U(this,a));--this.c},function(a){Ub(this,a,U(this,a>>6),Zb);--this.c},function(a){Ub(this,a,U(this,a>>6),ac);--this.c},function(a){Ub(this,a,U(this,a>>6),Yb);--this.c},function(a){nc[a>>8&15].call(this,a)},function(a){oc[a>>8&15].call(this,a)},function(a){var b=V(this,a>>6);N(this,Xb(this,a,b,2)<<8); ---this.c},function(a){var b=V(this,a>>6)<<8;a=V(this,a)<<8;Pb(this,b-a,a,b);--this.c},function(a){N(this,(V(this,a>>6)&V(this,a))<<8);--this.c},function(a){Vb(this,a,V(this,a>>6),$b);--this.c},function(a){Vb(this,a,V(this,a>>6),bc);--this.c},function(a){Ub(this,a,U(this,a>>6),cc);--this.c},Z],mc=[function(a){pc[a>>4&15].call(this,a)},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i= --1;--this.c},function(){this.i=-1;--this.c},gc,gc,function(a){qc[a>>6&3].call(this,a)},function(a){rc[a>>6&3].call(this,a)},function(a){sc[a>>6&3].call(this,a)},function(a){tc[a>>6&3].call(this,a)},Z,Z],pc=[function(a){uc[a&15].call(this,a)},Z,Z,Z,Z,Z,Z,Z,Z,Z,function(a){vc[a&15].call(this,a)},function(a){wc[a&15].call(this,a)},Z,Z,Z,Z],vc=[ic,function(){this.h=0;--this.c},function(){this.f=0;--this.c},X,function(){this.g=1;--this.c},X,X,X,function(){this.b=0;--this.c},X,X,X,X,X,X,X],wc=[ic,function(){this.h= -65536;--this.c},function(){this.f=32768;--this.c},Y,function(){this.g=0;--this.c},Y,Y,Y,function(){this.b=32768;--this.c},Y,Y,Y,Y,Y,Y,Y],uc=[function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.o&49152||(Nb(this),this.w.reset());--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},Z,Z,Z,Z,Z,Z,Z,Z],nc=[hc,hc,fc,fc,dc,dc,ec,ec,kc,kc,Z,Z,Z,Z,jc,jc],oc=[function(){this.i= --1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(a){xc[a>>6&3].call(this,a)},function(a){yc[a>>6&3].call(this,a)},function(a){zc[a>>6&3].call(this,a)},function(a){Ac[a>>6&3].call(this,a)},Z,Z],qc=[function(a){Ob(this,Wb(this,a,0));--this.c},function(){this.i= --1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}],rc=[function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}],sc=[function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}],tc=[function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}],xc=[function(a){Ob(this,Xb(this,a,0,1)); ---this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}],yc=[function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}],zc=[function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}],Ac=[function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}]; -function Bc(a){v.call(this,"ROM",a,Bc);this.b=null;this.l=a.addr;this.f=a.size;this.u=a.writable;this.g=a.alias;this.h=a.file;this.v=ba(this.h);if(this.h){a=this.h;var b=ca(this.v);"json"!=b&&"hex"!=b&&(a=ea()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;p(a,null,!0,function(a,b,e){Cc(c,a,b,e)})}}x(Bc);Bc.prototype.Ha=function(a,b,c,d){this.w=b;this.c=c;this.I=d;Dc(this)};Bc.prototype.va=function(){this.i&&(this.I&&this.I.c(this.id,this.l,this.f,this.i),delete this.i);return!0}; -Bc.prototype.ua=function(){return!0}; -function Cc(a,b,c,d){if(d)a.L("Unable to load system ROM (error "+d+": "+b+")");else{Da(a.Fb,b,c);var f;if("["==c.charAt(0)||"{"==c.charAt(0))try{var e,g,h=eval("("+c+")");if(e=h.bytes)a.b=e;else if(e=h.words)for(a.b=Array(2*e.length),g=f=0;f>8&255;else if(e=h.data)for(a.b=Array(4*e.length),g=f=0;f>8&255,a.b[g++]=e[f]>>16&255,a.b[g++]=e[f]>>24&255;else a.b=h;a.i=h.symbols;if(!a.b.length){q("Empty ROM: "+b); -return}if(1==a.b.length){q(a.b[0]);return}}catch(k){a.L("ROM data error: "+k.message);return}else for(b=c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.b=Array(b.length),f=0;f>>d.f].Wb(f&d.h,a.b[c]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.g?b.push(a.g):null!=a.g&&a.g.length&&(b=a.g);for(c=0;c>>f.f;0>>=f.f;0\nLicense: GPL version 3 or later ");this.Y("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis ");for(b=0;bIc){if(Kc(d,this.v)){this.i=new M(this,"1.30.0","failsafe");Kc(this.i)&&(Pc(this,d),a=2,Qc(this.i));this.i.set("timestamp",ia());Rc(this.i);var f=this.b&&!this.l;if(1==a||ja("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=Oc(d)){var e=d.get("code"),g=d.get("data");e&&("ok"==e?Kc(d,g):("error"== -e&&"no machine state"!=g?(this.L("Error: "+g),"unable to verify user"==g&&(na("user",""),this.f=null)):this.Y(e+": "+g),Qc(d),Kc(d)?(c=Oc(d),f=!0):c=!1))}f&&Nc(this,c?d:null)}else 2==a&&d.clear()}else Nc(this);delete this.v;delete this.J}f=y(this.id);for(e=0;ea[1];a=a[2];this.da=!0;this.j.M=!0;var d=this.B.power;d&&(d.textContent="Shutdown");this.c&&(Sc(this,this.c,b,c,a),this.c.Xa());this.R&&(Pc(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.g=0}; -function Pc(a,b){if(ja("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var c=a.f||"";b=b.toString();var d={app:"PDP11js",ver:"1.30.0"};d.url=a.url;d.user=c;d.type="bug";d.data=b;p("http://www.pcjs.org/api/v1/report",d,!0)}} -function Tc(a,b,c){var d,f="none";if(a.g)return null;a.g--;var e=new M(a,"1.30.0"),g=new M(a,"1.30.0","validate"),h=ia();g.set("timestamp",h);e.set("timestamp",h);e.set("version","1.30.0");e.set("url",window?window.location.href:null);e.set("browser",window?window.navigator.userAgent:"");a.c&&a.c.ua&&(c&&Fb(a.c),d=a.c.ua(b,c),"object"===typeof d&&e.set(a.c.id,d),c&&(a.c.j.M=!1,!1===d&&(f=null)));for(var h=y(a.id),k=0;k>13&7;"undefined"===typeof b.T[e]&&(b.T[e]={cache:[],postProcess:a.qc,drive:e,blocksize:256,mapped:0,maxblock:b.Ja[e]*b.G[e],url:"rk"+e+".dsk"});b.w&=-129;switch(b.w>>1&7){case 0:b.ib=2496;b.S=0;b.w=128;b.X=0;break;case 1:if((b.X>>4&511)>=b.Ja[e]){b.S|=32832;b.w|=49152;break}if((b.X&15)>=b.G[e]){b.S|=32800;b.w|=49152;break}c=(b.X>>4&511)*b.G[e]+(b.X&15);d=(b.w&48)<<12|b.hb;f=65536-b.jb&65535;cb(a,b.T[e],c,d,f);return;case 2:if((b.X>>4&511)>=b.Ja[e])b.S|=32832, +b.w|=49152;else if((b.X&15)>=b.G[e])b.S|=32800,b.w|=49152;else{c=(b.X>>4&511)*b.G[e]+(b.X&15);d=(b.w&48)<<12|b.hb;f=65536-b.jb&65535;a.tb(b.T[e],c,d,f);return}}b.ib=e<<13|b.ib&8176|b.X%9&15;I(a.a,20,160,144,function(){b.w=b.w&65534|128;return!!(b.w&64)})}l.qc=function(a,b,c,d,f){var e=this.g;e.hb=d&65535;e.w=e.w&-49|d>>12&48;e.jb=65536-f&65535;switch(a){case 1:e.S|=33024;e.w|=49152;break;case 2:e.S|=33792,e.w|=49152}I(this.a,20,160,144,function(){e.w=e.w&65534|128;return!!(e.w&64)})}; +function db(a){var b=a.h,c,d,f,e=b.m>>8&3;b.m&=-2;"undefined"===typeof b.T[e]&&(b.T[e]={cache:[],postProcess:a.rc,drive:e,blocksize:128,mapped:1,maxblock:b.Ja[e]*b.G[e],url:"rl"+e+".dsk"});switch(b.m>>1&7){case 2:b.xa&8&&(b.m&=63);b.xa=b.cc[e]|b.Ba&64;break;case 3:1==(b.J&3)&&(b.Ba=b.J&4?b.Ba+(b.J&65408)&65408|b.J<<2&64:b.Ba-(b.J&65408)&65408|b.J<<2&64,b.J=b.Ba);break;case 4:b.xa=b.Ba;break;case 5:if(b.J>>6>=b.Ja[e]){b.m|=37888;break}if((b.J&63)>=b.G[e]){b.m|=37888;break}c=(b.J>>6)*b.G[e]+(b.J&63); +d=(b.ua&63)<<16|b.ab;f=65536-b.xa&65535;cb(a,b.T[e],c,d,f);return;case 6:if(b.J>>6>=b.Ja[e])b.m|=37888;else if((b.J&63)>=b.G[e])b.m|=37888;else{c=(b.J>>6)*b.G[e]+(b.J&63);d=(b.ua&63)<<16|b.ab;f=65536-b.xa&65535;a.tb(b.T[e],c,d,f);return}}I(a.a,20,160,112,function(){b.m|=129;return!!(b.m&64)})} +l.rc=function(a,b,c,d,f){var e=this.h;e.ab=d&65535;e.m=e.m&-49|d>>12&48;e.ua=d>>16&63;e.J=~~(c/e.G[b.ka])<<6|c%e.G[b.ka];e.Ba=e.J;e.xa=65536-f&65535;switch(a){case 1:e.m|=33792;break;case 2:e.m|=40960}I(this.a,20,160,112,function(){e.m|=129;return!!(e.m&64)})};function eb(a){a=a.i;a.D=2176;a.da=0;a.U=[4544,4544,4544,4544,4544,4544,4544,4544];a.Wa=[0,0,0,0,0,0,0,0];a.Oa=a.Xa=a.Va=a.Aa=a.Hb=0} +function fb(a,b){var c=a.i,d,f,e;c.D&=-16513;c.da&=-2049;c.U[b]&=-1153;I(a.a,-1,0,172);"undefined"===typeof c.T[b]&&(c.T[b]={cache:[],postProcess:a.sc,drive:b,blocksize:256,mapped:0,maxblock:c.xb[0]*c.Ia[0]*c.G[0],url:"rp"+b+".dsk"});switch(c.D&63){case 5:c.vb[b]=c.na[b];c.D|=32896;c.U[b]|=32896;c.Oa|=1<=c.xb[0]||c.ea[b]>>8>=c.Ia[0]||(c.ea[b]&255)>=c.G[0]){c.Wa[b]|=1024;c.D|=49152;break}d=(c.na[b]*c.Ia[0]+(c.ea[b]>>8))*c.G[0]+ +(c.ea[b]&255);f=(c.Aa&63)<<16|c.Va;e=65536-c.Xa&65535;cb(a,c.T[b],d,f,e);return;case 57:if(c.na[b]>=c.xb[0]||c.ea[b]>>8>=c.Ia[0]||(c.ea[b]&255)>=c.G[0])c.Wa[b]|=1024,c.D|=49152;else{d=(c.na[b]*c.Ia[0]+(c.ea[b]>>8))*c.G[0]+(c.ea[b]&255);f=(c.Aa&63)<<16|c.Va;e=65536-c.Xa&65535;a.tb(c.T[b],d,f,e);return}}I(a.a,3,160,172,function(){c.D=c.D&65534|128;c.U[b]|=128;return!!(c.D&64)})} +l.sc=function(a,b,c,d,f){var e=this.i;e.Xa=65536-f&65535;e.Va=d&65535;e.D=e.D&-769|d>>8&768;e.Aa=d>>16&63;f=~~(c/e.G[0]);d=~~(f/e.Ia[0]);e.ea[b.ka]=f%e.Ia[0]<<8|c%e.G[0];e.vb[b.ka]=e.na[b.ka]=d;e.Oa|=1<=b.mc-1&&(e.U[b.ka]|=1024);switch(a){case 1:e.da|=512;e.D|=49152;break;case 2:e.da|=2048,e.D|=49152}I(this.a,20,160,172,function(){e.U[b.ka]|=128;e.D=e.D&65534|128;return!!(e.D&64)})};l.kc=function(){this.f.m|=128;this.f.m&64&&I(this.a,0,192,64)}; +function gb(a,b,c,d,f,e){var g=~~((e+c.va-1)/c.va),h=new XMLHttpRequest;2048>g&&d+2048M(this.a,a.lc?hb(this.a,c):c,a.cache[b][f])){a.sb(2,a,b,c,d);return}c+=2;--d}b++}a.sb(0,a,b,c,d)}; +function cb(a,b,c,d,f){for(var e,g;0g){b.sb(2,b,c,d,f);return}b.cache[c][e]=g;d+=2;--f}c++}b.sb(0,b,c,d,f)}l.reset=function(){this.c.Ta=this.c.Ta&-120|20;this.l.ia=0;this.l.V=128;this.f.m=0;this.g.w=128;this.h.m=128;eb(this)}; +l.bc=function(a,b,c){var d,f,e=this.a;switch(a&-64){case 4194240:switch(a&-2){case 4194300:0>b?d=e.ma&65280:(a&1&&(b<<=8),e.ma=b|255,d=0);break;case 4194298:if(0>b)d=e.ub;else{a&1&&(b<<=8);if(d=b&65024){f=d>>9;do d+=34;while(f>>=1)}e.ub=d;e.la=2}break;case 4194294:if(70!==e.Ka)return K(e,4,222);0>b?d=e.s:d=e.s=0;break;case 4194292:if(70!==e.Ka)return K(e,4,224);d=1;break;case 4194290:if(70!==e.Ka)return K(e,4,226);d=0;break;case 4194288:if(70!==e.Ka)return K(e,4,228);d=61183;break;case 4194296:0<= +b&&!(a&1)&&(b&=255);case 4194286:case 4194284:case 4194282:case 4194280:case 4194278:case 4194276:case 4194274:case 4194272:if(70!==e.Ka)return K(e,4,232);f=a-4194272>>1;0>b?d=e.Eb[f]:(d=J(this,e.Eb[f],a,b,c),0<=d&&(e.Eb[f]=d));break;case 4194254:return a&1?e.u>>14&1?(0<=b&&(e.b[6]=b),d=e.b[6]):(0<=b&&(e.aa[3]=b),d=e.aa[3]):e.u>>14&0?(0<=b&&(e.b[6]=b),d=e.b[6]):(0<=b&&(e.aa[1]=b),d=e.aa[1]),d;case 4194252:case 4194250:case 4194248:return f=a&7,e.u&2048?(0<=b&&(e.b[f]=b),d=e.b[f]):(0<=b&&(e.Na[f]= +b),d=e.Na[f]),d;case 4194246:return a&1?(0<=b&&(e.b[7]=b),d=e.b[7]):e.u>>14&0?(0<=b&&(e.b[6]=b),d=e.b[6]):(0<=b&&(e.aa[0]=b),d=e.aa[0]),d;case 4194244:case 4194242:case 4194240:return f=a&7,e.u&2048?(0<=b&&(e.Na[f]=b),d=e.Na[f]):(0<=b&&(e.b[f]=b),d=e.b[f]),d;default:return e.s|=16,K(e,4,124)}break;case 4194176:f=a>>1&31;d=J(this,e.P[3][f],a,b,c);0<=d&&(e.P[3][f]=d,e.P[3][f&15]&=65295);break;case 4194112:var g=this.l;f=this.f;switch(a&-2){case 4194174:d=J(this,e.Ya,a,b,c);0<=d&&(e.Ya=d);break;case 4194172:d= +e.ga;d&65280&&(d=(d<<8|d>>8)&65535);break;case 4194170:e.I=e.I&62337|e.eb<<5|e.rb<<1;0>b?d=e.I:(d=J(this,e.I,a,b,c),0<=d&&(e.I=d&=62337,e.eb=d>>5&3,e.rb=d>>1&15,d&257?(f=2,e.sa&16&&(f=1),e.Ua=d&1?D|E:E):(e.Ua=0,f=4),this.c.Ta=this.c.Ta&-8|f));break;case 4194168:0>b?d=this.c.zc&65535:(d=J(this,this.c.data,a,b,c),0<=d&&(this.c.data=d));break;case 4194166:0<=b&&(b&127&&(g.ec=0),g.V&=-129,I(e,100,128,52,function(){g.V|=128;return!!(g.V&64)}));d=0;break;case 4194164:0>b?d=g.V:(d=J(this,g.V,a,b,c),0<=d&& +(128==(g.V&192)&&d&64&&I(e,8,128,52,function(){g.V|=128;return!!(g.V&64)}),g.V=g.V&128|d&-129));break;case 4194162:d=0;0>b&&(g.ia&=-129,0b?d=g.ia:(d=J(this,g.ia,a,b,c),0<=d&&(g.ia=g.ia&128|d&-129));break;case 4194150:0>b?(d=f.m,f.m&=-129):(d=J(this,f.m,a,b,c),0<=d&&(d&64&&!f.Fb&&(setInterval(this.kc.bind(this),25),f.Fb=1),f.m=d&-129));break;default:return e.s|=16,K(e,4, +126)}break;case 4194048:f=this.g;switch(a&-2){case 4194048:d=J(this,f.ib,a,b,c);0<=d&&(f.ib=d);break;case 4194050:d=J(this,f.S,a,b,c);0<=d&&(f.S=d);break;case 4194052:d=J(this,f.w,a,b,c);0<=b&&0<=d&&(f.w=d&-36993|f.w&36992,f.w&1&&bb(this));break;case 4194054:d=J(this,f.jb,a,b,c);0<=d&&(f.jb=d);break;case 4194056:d=J(this,f.hb,a,b,c);0<=d&&(f.hb=d);break;case 4194058:d=J(this,f.X,a,b,c);0<=d&&(f.X=d);break;case 4194060:break;case 4194062:d=J(this,f.Vb,a,b,c);0<=d&&(f.Vb=d);break;default:return e.s|= +16,K(e,4,128)}break;case 4193728:var h=this.i;f=h.da&7;switch(a&-2){case 4193728:d=J(this,h.D,a,b,c);0<=b&&0<=d&&(h.Aa=h.Aa&60|d>>8&3,h.D=d&17279|h.D&34944|2048,d&1&&h.D&128?fb(this,f):192==(d&192)&&I(e,0,160,172));break;case 4193730:d=J(this,h.Xa,a,b,c);0<=d&&(h.Xa=d);break;case 4193732:d=J(this,h.Va,a,b,c);0<=d&&(h.Va=d&65534);break;case 4193734:d=J(this,h.ea[f],a,b,c);0<=d&&(h.ea[f]=d&7967);break;case 4193736:d=J(this,h.da,a,b,c);0<=d&&(h.da=d&63|h.da&65472,d&128&&eb(this));break;case 4193738:d= +h.U[f];break;case 4193740:d=h.Wa[f];break;case 4193742:d=J(this,h.Oa,a,b,c);0<=d&&(h.Oa=d&255);break;case 4193744:d=h.xc[f];break;case 4193746:d=J(this,h.Wb,a,b,c);0<=d&&(h.Wb=d);break;case 4193748:d=J(this,h.Xb[f],a,b,c);0<=d&&(h.Xb[f]=d&1023);break;case 4193750:d=8210;break;case 4193752:d=h.yc[f];break;case 4193754:d=J(this,h.Yb[f],a,b,c);0<=d&&(h.Yb[f]=d);break;case 4193756:d=J(this,h.na[f],a,b,c);0<=d&&(h.na[f]=d&511);break;case 4193758:h.vb[f]=h.na[f];d=h.vb[f];break;case 4193760:d=h.vc[f];break; +case 4193762:d=h.wc[f];break;case 4193764:d=h.tc[f];break;case 4193766:d=h.uc[f];break;case 4193768:d=J(this,h.Aa,a,b,c);0<=d&&(h.Aa=d&63,h.D=h.D&-769|(d&3)<<8);break;case 4193770:d=J(this,h.Hb,a,b,c);0<=d&&(h.Hb=d);break;default:return e.s|=16,K(e,4,132)}break;case 4192512:f=this.h;switch(a&-2){case 4192512:d=J(this,f.m,a,b,c);0<=b&&0<=d&&(f.ua=f.ua&60|d>>4&3,f.m=f.m&-1023|d&1022,f.m&128||db(this));break;case 4192514:d=J(this,f.ab,a,b,c);0<=d&&(f.ab=d&65534);break;case 4192516:d=J(this,f.J,a,b,c); +0<=d&&(f.J=d);break;case 4192518:d=J(this,f.xa,a,b,c);0<=d&&(f.xa=d);break;case 4192520:d=J(this,f.ua,a,b,c);0<=d&&(f.ua=d&63,f.m=f.m&-49|(f.ua&3)<<4);break;default:return e.s|=16,K(e,4,134)}break;case 4191552:switch(a&-2){case 4191566:0>b?d=e.sa:(d=J(this,e.sa,a,b,c),0<=d&&(70!==e.Ka&&(d&=-49),e.sa=d,e.Ma[0]=d&4?15:7,e.Ma[1]=d&2?15:7,e.Ma[3]=d&1?15:7,e.Ua&&(f=2,e.sa&16&&(f=1),this.c.Ta=this.c.Ta&-8|f)));break;default:return e.s|=16,K(e,4,136)}break;case 4191424:f=a>>1&31;d=J(this,e.P[0][f],a,b,c); +0<=d&&(e.P[0][f]=d,e.P[0][f&15]&=65295);break;case 4191360:f=a>>1&31;d=J(this,e.P[1][f],a,b,c);0<=d&&(e.P[1][f]=d,e.P[1][f&15]&=65295);break;case 4190400:case 4190336:if(70!==e.Ka)return K(e,4,234);f=a>>2&31;d=e.kb[f];a&2&&(d>>=16);d&=65535;0<=b&&(d=J(this,d,a,b,c),0<=d&&(e.kb[f]=a&2?d<<16|e.kb[f]&65535:e.kb[f]&4294901760|d&65534));break;case 4188672:case 4188736:case 4188800:case 4188864:case 4188928:case 4188992:case 4189056:case 4189120:if(0>b)d=Ya[a>>1&255];else return e.s|=16,K(e,4,138);break; +default:return e.s|=16,K(e,4,142)}c&&0<=d&&(a&1?d>>=8:d&=255);"undefined"===typeof d&&console.log("panic(76)");return d};var ib={},Za=(ib[65534]=[null,null,Xa.prototype.oc,Xa.prototype.Bc],ib);u(function(){for(var a=B(document,"pdp11","device"),b=0;b>1),this.a=new Int32Array(this.f,0,c>>2),pb(this,lb?qb:rb);else{this.a=Array(c>>2);for(a=0;a>2),b=0;b>8,c)},Z:function(a){return this.a[a>>2]>>>((a&3)<<3)&255},qa:function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8},Ea:function(a,b){var c=a>>2;a=(a&3)<<3;this.a[c]=this.a[c]&~(255<>2;a=(a&3)<<3;24>a?this.a[c]=this.a[c]&~(65535<>8);this.wa=!0},O:function(a,b){return this.W(a, +b)},ca:function(a,b){return this.oa(a,b)},Ca:function(a,b,c){this.h||this.ac(a,b,c)},Ga:function(a,b,c){this.h||this.Ha(a,b,c)},H:function(a){return this.c[a]},Y:function(a){return this.c[a]},ba:function(a){return this.g.getUint16(a,!0)},pa:function(a){return a&1?this.c[a]|this.c[a+1]<<8:this.o[a>>1]},ra:function(a,b){this.c[a]=b;this.wa=!0},Da:function(a,b){this.c[a]=b;this.wa=!0},Fa:function(a,b){this.g.setUint16(a,b,!0);this.wa=!0},Qa:function(a,b){a&1?(this.c[a]=b,this.c[a+1]=b>>8):this.o[a>> +1]=b;this.wa=!0}};function Na(a,b,c){a.K=b;a.i=a.l=0;c&&((a.i=c.i)&&tb(a,ub,!1),(a.l=c.l)&&vb(a,ub,!1))}function vb(a,b,c){c&&a.l||(a.lb=!a.h&&b[1]||a.v,a.Cc=!a.h&&b[3]||a.B);if(c||void 0===c)a.ac=b[1]||a.v,a.Ha=b[3]||a.B}function tb(a,b,c){c&&a.i||(a.gb=b[0]||a.C,a.pc=b[2]||a.A);if(c||void 0===c)a.W=b[0]||a.C,a.oa=b[2]||a.A}function pb(a,b){b||(b=wb);tb(a,b,void 0);vb(a,b,void 0)} +var wb=[],sb=[H.prototype.Z,H.prototype.Ea,H.prototype.qa,H.prototype.Ra],ub=[H.prototype.O,H.prototype.Ca,H.prototype.ca,H.prototype.Ga];if(Ha)var rb=[H.prototype.H,H.prototype.ra,H.prototype.ba,H.prototype.Fa],qb=[H.prototype.Y,H.prototype.Da,H.prototype.pa,H.prototype.Qa]; +function xb(a,b){v.call(this,"CPU",a,xb);var c=a.multiplier||1;this.Ab=a.cycles||b;this.qa=c;this.zb=Math.round(this.Ab/1E4)/100;this.oa=this.zb*this.qa;this.j.ja=!1;this.j.Zb=!1;this.j.$a=a.autoStart;this.j.Pb=!1;this.j.pb=!1;this.mb=this.pa=0;this.nb=a.csStart;this.Da=a.csInterval;this.Ea=a.csStop;this.Qa=[];this.Sb=this.Ib.bind(this);C(this)}x(xb);var yb=["power","reset"];l=xb.prototype; +l.La=function(a,b,c,d){this.B=a;this.A=b;this.K=d;for(b=0;b>=3;d=""+f}else d=n(c,d);else d="--------".substr(0,d||4);a.C[b].textContent!=d&&(a.C[b].textContent=d)}} +l.fa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.C[b]=c;a=!0;break;case "run":this.C[b]=c;c.onclick=function(){var a;if(a=d.B)if(a=d.B,a.j.M)a=!0;else{var b=null,c,h=y(a.id);for(c=0;ca.Y/a.oa&&(b=1),a.qa=b,b=a.zb*a.qa,a.oa!=b)){a.oa=b;b=a.oa.toFixed(2)+"Mhz";var c=a.C.setSpeed;c&&(c.textContent=b);a.$("target speed: "+b)}Gb(a,a.W);a.W=0;a.O=ha();a.Z=0;Hb(a)}function Jb(a){a.ba-=a.a;a.a=0} +l.Ib=function(){if(Fa(this,!0)){if(!this.j.ja){Fb(this);this.B&&this.B.start(this.O,Ib(this));this.j.ja=!0;this.j.Zb=!0;this.Ca&&this.Ca.start();var a=this.C.run;a&&(a.textContent="Halt");this.B&&this.B.Pa(!0)}this.Bb>=this.Ab&&Hb(this,!0);this.Ga=0;this.Ra=ha();this.Z&&(a=this.Ra-this.Z,a>this.Ob&&(this.O+=a,this.O>this.Ra&&(this.O=this.Ra)));try{do{for(var b,c=this.j.pb?1:this.ob,d=this.Qa.length-1;0<=d;d--){var f=this.Qa[d];0>f[0]||c>f[0]&&(c=f[0])}b=c;try{this.$b(b)}catch(m){if("number"!=typeof m)throw m; +}for(var e=this.ba-this.a,a=e,g=this.Qa.length-1;0<=g;g--){var h=this.Qa[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.Ga+=e;this.W+=e;Gb(this,0,!0);a=e;if(this.j.pb){var k=!1;this.mb=this.mb+this.Ub()|0;this.pa-=a;0>=this.pa&&(this.pa+=this.Da,k=!0);0<=this.Ea&&this.Ea<=Ib(this)&&(this.Da=this.Ea=-1,Bb(this),Eb(this),k=!0);k&&this.$(Ib(this)+" cycles: checksum="+n(this.mb))}this.Fa-=e;if(0>=this.Fa){this.Fa+=this.ob;15<=++this.Rb&&(this.B&&this.B.Pa(),this.Rb=0);break}}while(this.j.ja)}catch(m){Eb(this); +Cb(this);this.B&&this.B.stop(ha(),Ib(this));Fa(this,!1);b=m.stack||m.message;this.j.error=!0;this.L(b);return}b=setTimeout;c=this.Sb;this.Z=ha();d=this.Ob;this.Ga&&(d=Math.round(d*this.Ga/this.ob));d-=this.Z-this.Ra;if(f=this.Z-this.O)this.Y=Math.round(this.W/(10*f))/100,864E5<=f&&(this.ca=0,Fb(this));if(0>d||this.Yd&&(this.O-=d),d=0;this.Bb+=this.Ga;this.Z+=d;b(c,d)}else Cb(this),this.B&&this.B.stop(ha(),Ib(this))};l.$b=function(){return 0}; +function Eb(a){a.j.bb&&(a.j.Cb=!0);Jb(a);Gb(a,a.W);a.W=0;if(a.j.ja){a.j.ja=!1;a.Ca&&a.Ca.stop();var b=a.C.run;b&&(b.textContent="Run")}a.j.complete=void 0}function Cb(a){a.B&&a.B.Pa(void 0)} +function Kb(a){this.jc=a.resetAddr||0;xb.call(this,a,1E6);this.Jb=0;this.decode=Lb.bind(this);this.g=65536;this.f=32768;this.h=65535;this.c=32768;this.b=[0,0,0,0,0,0,0,this.jc];this.Na=[0,0,0,0,0,0];this.aa=[0,0,0,0];this.ma=255;this.rb=this.eb=this.Ua=this.v=this.sa=this.Ya=this.ga=this.I=this.s=this.ub=0;this.Ma=[7,7,7,7];this.P=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535, +65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.kb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.Eb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.i=-1;this.F=0;this.Ka=70;this.ra=-1;this.o=[];this.Ha=0;this.la=2;Mb(this);this.j.complete=this.j.dc=!1}x(Kb,xb);l=Kb.prototype; +l.reset=function(){this.j.ja&&Eb(this);Nb(this);Ab(this);this.j.error=!1;this.parent.reset.call(this)};function Nb(a){a.ma=255;a.s=0;a.o=[];a.ub=0;a.I=a.ga=a.Ya=a.sa=a.Ua=0;a.Ma[0]=a.Ma[1]=a.Ma[3]=7;a.eb=0;Mb(a)}function Mb(a){a.Ua?(a.H=65536,a.l=a.hc,a.Tb=a.R):(a.H=0,a.l=a.gc,a.Tb=a.N)}l.Ub=function(){return 0};l.save=function(){var a=new O(this);a.set(0,[]);a.set(1,[this.Mb,this.ca,this.qa]);a.set(2,Wa(this.A));return a.data()}; +l.restore=function(a){var b=a[1];this.Mb=b[0];this.ca=b[1];Fb(this,b[3]);a:{b=this.A;a=a[2];var c;for(c=0;cb){a.o[e].ha-=b;break}b-=a.o[e].ha}a.o.splice(e+1,0,{delay:b,priority:c&224,vector:d,callback:f})}a.la=2}function $a(a){return a.u=a.u&63728|(a.c&32768?8:0)|(a.h&65535?0:4)|(a.f&32768?2:0)|(a.g&65536?1:0)} +function ab(a,b){a.c=b<<12;a.h=~b&4;a.f=b<<14;a.g=b<<16;if((b^a.u)&2048)for(var c=a.Na.length;0<=--c;){var d=a.b[c];a.b[c]=a.Na[c];a.Na[c]=d}a.v=b>>14&3;c=a.u>>14&3;a.v!=c&&(a.aa[c]=a.b[6],a.b[6]=a.aa[a.v]);a.la=2;a.u=b}function Ob(a,b){a.F&128||(a.c=a.h=a.g=b,a.f=0)}function P(a,b){a.F&128||(a.c=a.h=b,a.f=0)}function Pb(a,b,c,d){a.F&128||(a.c=a.h=a.g=b,a.f=(c^d)&(d^b))} +function K(a,b,c){var d,f,e=0;0>a.ra?a.ra=$a(a):a.v||(b=4,e=1);a.I&57344||(a.ga=63222,a.Ya=b);a.v=0;0<=(d=a.R(b|65536))&&0<=(f=a.R(b+2&65535|65536))&&(ab(a,f&53247|a.ra>>2&12288),e&&(a.s|=4,a.b[6]=4),0<=Q(a,a.ra)&&0<=Q(a,a.b[7])&&(a.b[7]=d));a.F&=-113;a.ra=-1;throw b|c<<8;}function hb(a,b){var c=b>>13&31;31>c?a.sa&32&&(b=a.kb[c]+(b&8190)&4194302,3932160<=b&&4186112>b&&console.log("panic(898)")):b|=4186112;return b} +function Qb(a,b,c){var d,f,e,g=0;if(c&a.Ua){d=b>>13&a.Ma[a.v];f=a.P[a.v][d];e=(a.P[a.v][d+16]<<6)+(b&8191)&4194303;a.sa&16?3932160<=e&&4186112>e&&(e=hb(a,e&262143)):(e&=262143,253952<=e&&(e|=4186112));3932160>e&&(3915776<=e&&(a.s|=32,K(a,4,24)),e&1&&!(c&1)&&(a.s|=64,K(a,4,26)));switch(f&7){case 1:g=4096;case 2:f|=128;c&E&&(g=8192);break;case 4:g=4096;case 5:c&E&&(g=4096);case 6:f|=c&E?192:128;break;default:g=32768}32512!==(f&32520)&&(f&8?f&32512&&(b&8128)<(f>>2&8128)&&(g|=16384):(b&8128)>(f>>2&8128)&& +(g|=16384));a.P[a.v][d]=f;if(4194170!==e||a.v)a.eb=a.v,a.rb=d;g&&(g&57344&&(0<=a.ra&&(g|=128),a.I&57344||(a.I=a.I|g|a.eb<<5|a.rb<<1),K(a,168,28)),a.I&61440||!(4191360>e||4194239>>b.f;a=c!=b.h?b.c[d].pc(c,a):b.c[d++].gb(c,a)|b.c[d&b.H].gb(0,a+1)<<8}return a}; +l.R=function(a){return this.N(Qb(this,a,D))};function M(a,b,c){c&=65535;if(4194304<=b)return a.b[b-4194304]=c;if(0<=b){a=a.A;var d=c,f=b&a.h,e=(b&a.i)>>>a.f;f!=a.h?a.c[e].Cc(f,d&65535,b):(a.c[e++].lb(f,d&255,b),a.c[e&a.H].lb(0,d>>8&255,b+1));return c}return b}function R(a,b){4194304<=b?b=a.b[b-4194304]&255:0<=b&&(a=a.A,b=a.c[(b&a.i)>>>a.f].gb(b&a.h,b));return b}function S(a,b,c){c&=255;return 4194304<=b?a.b[b-4194304]=a.b[b-4194304]&65280|c:0<=b?(a=a.A,a.c[(b&a.i)>>>a.f].lb(b&a.h,c&255,b),c):b} +function Rb(a){var b=a.R(a.b[6]|65536);0<=b&&(a.b[6]=a.b[6]+2&65535);return b}function Q(a,b){var c,d;a.b[6]=d=a.b[6]-2&65535;a.I&57344||(a.ga=a.ga<<8|246);!a.v&&d<=a.ma&&4>3&7){case 0:K(a,4,34);break;case 1:return 6===e&&!a.v&&c&E&&(a.b[6]<=a.ma||65534<=a.b[6])&&(a.b[6]<=a.ma-32||65534<=a.b[6]?(a.s|=4,a.b[6]=4,K(a,4,36)):(a.s|=8,a.F|=64)),7===e?a.b[e]:a.b[e]|a.H;case 2:f=2;d=a.b[e];7!==e&&(d|=a.H,6>e&&c&1&&(f=1));break;case 3:f=2;d=a.b[e];7!==e&&(d|=a.H);if(0>(d=a.R(d)))return d;d|=a.H;break;case 4:f=-2;6>e&&c&1&&(f=-1);d=a.b[e]+f&65535;7!==e&&(d|=a.H);break;case 5:f=-2;d=a.b[e]-2&65535;7!==e&&(d|=a.H);if(0>(d=a.R(d)))return d; +d|=a.H;break;case 6:if(0>(d=a.R(a.b[7])))return d;a.b[7]=a.b[7]+2&65535;d=d+a.b[e]&65535;return d|a.H;case 7:if(0>(d=a.R(a.b[7])))return d;a.b[7]=a.b[7]+2&65535;d=d+a.b[e]&65535;return 0>(d=a.R(d|65536))?d:d|a.H}a.b[e]=a.b[e]+f&65535;!a.H||a.I&57344||(a.ga=a.ga<<8|f<<3&248|e);6===e&&!a.v&&c&E&&0>=f&&(a.b[6]<=a.ma||65534<=a.b[6])&&(a.b[6]<=a.ma-32?(a.s|=4,a.b[6]=4,K(a,4,38)):(a.s|=8,a.F|=64));return d}l.gc=function(a,b){return T(this,a,b)};l.hc=function(a,b){return Qb(this,T(this,a,b),b)}; +function U(a,b){return b&56?a.Tb(T(a,b,D)):a.b[b&7]}function V(a,b){return b&56?R(a,a.l(b,Ia)):a.b[b&7]&255}function Sb(a,b,c,d){b&56?(b=a.l(b,F),M(a,b,d.call(a,c,a.N(b)))):(b&=7,a.b[b]=d.call(a,c,a.b[b])&65535)}function Tb(a,b,c,d){b&56?(b=a.l(b,G),S(a,b,d.call(a,c,R(a,b)))):(b&=7,a.b[b]=a.b[b]&65280|d.call(a,c,a.b[b])&255)}function Ub(a,b,c){b&56?M(a,a.l(b,E),c):a.b[b&7]=c&65535;return c} +function Vb(a,b,c,d){b&56?S(a,a.l(b,Ja),c):(b&=7,a.b[b]=d?d&1?a.b[b]&-256:c<<24>>24&65535:a.b[b]&-256|c&255);return c}function W(a,b){return((b&128?b|65280:b&255)<<1)+a&65535} +l.$b=function(a){this.j.complete=!0;this.j.dc=!1;this.j.Zb=!1;this.ba=this.a=a;this.Mb&256?(Jb(this),a=!1):a=!0;if(a){do{var b,c,d,f;this.F&112&&(this.F&32?K(this,168,52):this.F&64?K(this,4,54):this.F&16&&K(this,12,56),this.F&=-113);if(this.la)if(1===this.la)this.la=2;else{this.la=0;b=-1;c=this.ub&224;if(0<(a=this.o.length))for(;0c&&(c=this.o[a].nc, +b=a)}c>(this.u&224)&&(0>b?K(this,160,42):(K(this,this.o[b].Ac,44),this.o.splice(b,1)))}this.I&57344||(this.ga=0,this.Ya=this.b[7]);this.F=this.u&16;this.i=a=this.R(this.b[7]);0<=a&&(this.b[7]=this.b[7]+2&65535);this.decode(a);if(0>this.i)switch(a&61440){case 4096:break;case 8192:break;case 12288:break;case 16384:break;case 20480:break;case 24576:break;case 36864:break;case 40960:break;case 45056:break;case 49152:break;case 53248:break;case 57344:break;default:switch(a&65024){case 2048:0<=(d=T(this, +a,0))&&(f=a>>6&7,0<=Q(this,this.b[f])&&(this.b[f]=this.b[7],this.b[7]=d&65535));break;case 28672:0<=(b=U(this,a))&&(f=a>>6&7,b&32768&&(b|=-65536),c=this.b[f],c&32768&&(c|=-65536),a=~~(b*c),this.b[f]=a>>16&65535,this.b[f|1]=a&65535,this.c=a>>16,this.h=this.c|a,this.g=this.f=0,-32768>a||32767>6&7,c=this.b[f]<<16|this.b[f|1],this.g=this.f=0,b&32768&&(b|=-65536),a=~~(c/b),-32768<=a&&32767>=a?(this.b[f]=a&65535,this.b[f|1]=c-a*b&65535,this.h= +a>>16|a,this.c=a>>16):(this.f=32768,this.h=a>>15|a,this.c=c>>16,-1===b&&65534===this.b[f]&&(this.b[f]=this.b[f|1]=1))):(this.h=this.c=0,this.f=32768,this.g=65536));break;case 29696:0<=(b=U(this,a))&&(f=a>>6&7,a=this.b[f],a&32768&&(a|=4294901760),this.g=this.f=0,b&=63,b&32?(b=64-b,16>=b):b&&(16>15&65535)&&65535!==c&&(this.f=32768))),this.b[f]=a&65535,this.c=this.h=a);break;case 30208:if(0<=(b=U(this,a))){f=a>>6&7;c=this.b[f]<<16|this.b[f| +1];this.g=this.f=0;b&=63;if(b&32)b=64-b,32>b-1,this.g=a<<16,a>>=1,c&2147483648&&(a|=4294967295<<32-b);else if(b){if(a=c<>15,a<<=1,32>=32-b)c|=4294967295<>16&65535;this.b[f|1]=a&65535;this.c=a>>16;this.h=a>>16|a}break;case 30720:a&56?0<=(c=this.N(b=this.l(a,F)))&&(c^=this.b[a>>6&7],0<=M(this,b,c)&&(this.c=this.h=c,this.f=0)):(this.c=this.h=c=this.b[a&7]^=this.b[a>>6&7],this.f=0);break;case 32256:f= +a>>6&7;if(this.b[f]=this.b[f]-1&65535)this.b[7]=this.b[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.b[7]=W(this.b[7],a);break;case 512:this.h&65535&&(this.b[7]=W(this.b[7],a));break;case 768:this.h&65535||(this.b[7]=W(this.b[7],a));break;case 1024:(this.c&32768)===(this.f&32768)&&(this.b[7]=W(this.b[7],a));break;case 1280:(this.c&32768)!==(this.f&32768)&&(this.b[7]=W(this.b[7],a));break;case 1536:this.h&65535&&(this.c&32768)===(this.f&32768)&&(this.b[7]=W(this.b[7],a));break;case 1792:this.h& +65535&&(this.c&32768)===(this.f&32768)||(this.b[7]=W(this.b[7],a));break;case 32768:this.c&32768||(this.b[7]=W(this.b[7],a));break;case 33280:!(this.g&65536)&&this.h&65535&&(this.b[7]=W(this.b[7],a));break;case 33024:this.c&32768&&(this.b[7]=W(this.b[7],a));break;case 33536:if(this.g&65536||!(this.h&65535))this.b[7]=W(this.b[7],a);break;case 33792:this.f&32768||(this.b[7]=W(this.b[7],a));break;case 34048:this.f&32768&&(this.b[7]=W(this.b[7],a));break;case 34304:this.g&65536||(this.b[7]=W(this.b[7], +a));break;case 34560:this.g&65536&&(this.b[7]=W(this.b[7],a));break;case 34816:K(this,24,2);break;case 35072:K(this,28,4);break;default:switch(a&65472){case 64:0<=(d=T(this,a,0))&&(this.b[7]=d&65535);break;case 192:a&56?0<=(c=this.N(b=this.l(a,F)))&&(a=c<<8|c>>8,0<=M(this,b,a)&&(this.c=this.h=c&65280,this.f=this.g=0)):(f=a&7,c=this.b[f],this.b[f]=(c<<8|c>>8)&65535,this.c=this.h=c&65280,this.f=this.g=0);break;case 2560:break;case 2624:0<=(c=this.N(b=this.l(a,F)))&&(a=~c,0<=M(this,b,a)&&(this.c=this.h= +a,this.g=65536,this.f=0));break;case 2688:a&56?0<=(c=this.N(b=this.l(a,F)))&&(a=c+1,0<=M(this,b,a)&&(this.c=this.h=a,this.f=a&(a^c))):(f=a&7,c=this.b[f],a=c+1,this.b[f]=a&65535,this.c=this.h=a,this.f=a&(a^c));break;case 2752:a&56?0<=(c=this.N(b=this.l(a,F)))&&(a=c-1,0<=M(this,b,a)&&(this.c=this.h=a,this.f=(a^c)&c)):(f=a&7,c=this.b[f],a=c-1,this.b[f]=a&65535,this.c=this.h=a,this.f=(a^c)&c);break;case 2816:0<=(c=this.N(b=this.l(a,F)))&&(a=-c,0<=M(this,b,a)&&(this.g=this.c=this.h=a,this.f=a&c));break; +case 2880:0<=(c=this.N(b=this.l(a,F)))&&(a=c+(this.g>>16&1),0<=M(this,b,a)&&(this.g=this.c=this.h=a,this.f=a&(a^c)));break;case 2944:0<=(c=this.N(b=this.l(a,F)))&&(a=c-(this.g>>16&1),0<=M(this,b,a)&&(this.g=this.c=this.h=a,this.f=(a^c)&c));break;case 3008:0<=(c=U(this,a))&&(this.c=this.h=c,this.g=this.f=0);break;case 3072:a&56?0<=(c=this.N(b=this.l(a,F)))&&(a=(this.g&65536|c)>>1,0<=M(this,b,a)&&(this.g=c<<16,this.c=this.h=a,this.f=a^this.g>>1)):(f=a&7,c=this.b[f],a=(this.g&65536|c)>>1,this.b[f]=a& +65535,this.g=c<<16,this.c=this.h=a,this.f=a^this.g>>1);break;case 3136:a&56?0<=(c=this.N(b=this.l(a,F)))&&(a=c<<1|this.g>>16&1,0<=M(this,b,a)&&(this.g=this.c=this.h=a,this.f=a^c)):(f=a&7,c=this.b[f],a=c<<1|this.g>>16&1,this.b[f]=a&65535,this.g=this.c=this.h=a,this.f=a^c);break;case 3200:a&56?0<=(c=this.N(b=this.l(a,F)))&&(a=c&32768|c>>1,0<=M(this,b,a)&&(this.g=c<<16,this.c=this.h=a,this.f=this.c^this.g>>1)):(f=a&7,c=this.b[f],a=c&32768|c>>1,this.b[f]=a&65535,this.g=c<<16,this.c=this.h=a,this.f=this.c^ +this.g>>1);break;case 3264:a&56?0<=(c=this.N(b=this.l(a,F)))&&(a=c<<1,0<=M(this,b,a)&&(this.g=this.c=this.h=a,this.f=a^c)):(f=a&7,c=this.b[f],a=c<<1,this.b[f]=a&65535,this.g=this.c=this.h=a,this.f=a^c);break;case 3328:d=this.b[7]+((a&63)<<1)&65535;0<=(b=this.R(d|65536))&&(this.b[7]=this.b[5],this.b[5]=b,this.b[6]=d+2&65535);break;case 3392:a&56?0<=(d=T(this,a,0))&&(61440!==(this.u&61440)&&(d&=65535),this.v=this.u>>12&3,0<=(b=this.R(d))&&(this.v=this.u>>14&3,0<=Q(this,b)&&(this.c=this.h=b,this.f=0))): +(f=a&7,b=6!==f||(this.u>>2&12288)===(this.u&12288)?this.b[f]:this.aa[this.u>>12&3],0<=Q(this,b)&&(this.c=this.h=b,this.f=0));break;case 3456:0<=(c=Rb(this))&&((this.I&57344||(this.ga=22),a&56)?0<=(d=T(this,a,0))&&(d&=65535,this.v=this.u>>12&3,0<=(b=Qb(this,d,E))&&(this.v=this.u>>14&3,0<=M(this,b,c)&&(this.c=this.h=c,this.f=0))):(f=a&7,6!==f||(this.u>>2&12288)===(this.u&12288)?this.b[f]=c:this.aa[this.u>>12&3]=c,this.c=this.h=c,this.f=0));break;case 3520:0<=(b=this.l(a,E))&&(a=-(this.c>>15&1),0<=M(this, +b,a)&&(this.h=a,this.f=0));break;case 35328:break;case 35392:0<=(c=R(this,b=this.l(a,G)))&&(a=~c,0<=S(this,b,a)&&(this.c=this.h=a<<8,this.g=65536,this.f=0));break;case 35456:0<=(c=R(this,b=this.l(a,G)))&&(a=c+1,0<=S(this,b,a)&&(this.c=this.h=a<<8,this.f=(a&(a^c))<<8));break;case 35520:0<=(c=R(this,b=this.l(a,G)))&&(a=c-1,0<=S(this,b,a)&&(this.c=this.h=a<<8,this.f=((a^c)&c)<<8));break;case 35584:0<=(c=R(this,b=this.l(a,G)))&&(a=-c,0<=S(this,b,a)&&(this.g=this.c=this.h=a<<8,this.f=(a&c)<<8));break; +case 35648:0<=(c=R(this,b=this.l(a,G)))&&(a=c+(this.g>>16&1),0<=S(this,b,a)&&(this.c=this.h=this.g=a<<8,this.f=(a&(a^c))<<8));break;case 35712:0<=(c=R(this,b=this.l(a,G)))&&(a=c-(this.g>>16&1),0<=S(this,b,a)&&(this.c=this.h=this.g=a<<8,this.f=((a^c)&c)<<8));break;case 35776:0<=(c=V(this,a))&&(this.c=this.h=c<<8,this.g=this.f=0);break;case 35840:0<=(c=R(this,b=this.l(a,G)))&&(a=((this.g&65536)>>8|c)>>1,0<=S(this,b,a)&&(this.g=c<<16,this.c=this.h=a<<8,this.f=this.c^this.g>>1));break;case 35904:0<=(c= +R(this,b=this.l(a,G)))&&(a=c<<1|this.g>>16&1,0<=S(this,b,a)&&(this.g=this.c=this.h=a<<8,this.f=(a^c)<<8));break;case 35968:0<=(c=R(this,b=this.l(a,G)))&&(a=c&128|c>>1,0<=S(this,b,a)&&(this.g=c<<16,this.c=this.h=a<<8,this.f=this.c^this.g>>1));break;case 36032:0<=(c=R(this,b=this.l(a,G)))&&(a=c<<1,0<=S(this,b,a)&&(this.g=this.c=this.h=a<<8,this.f=(a^c)<<8));break;case 36160:a&56?0<=(d=T(this,a,0))&&(this.v=this.u>>12&3,0<=(b=this.R(d|65536))&&(this.v=this.u>>14&3,0<=Q(this,b)&&(this.c=this.h=b,this.f= +0))):(f=a&7,b=6!==f||(this.u>>2&12288)===(this.u&12288)?this.b[f]:this.aa[this.u>>12&3],0<=Q(this,b)&&(this.c=this.h=b,this.f=0));break;case 36224:0<=(c=Rb(this))&&((this.I&57344||(this.ga=22),a&56)?0<=(d=T(this,a,0))&&(this.v=this.u>>12&3,0<=(b=Qb(this,d|65536,E))&&(this.v=this.u>>14&3,0<=M(this,b,c)&&(this.c=this.h=c,this.f=0))):(f=a&7,6!==f||(this.u>>2&12288)===(this.u&12288)?this.b[f]=c:this.aa[this.u>>12&3]=c,this.c=this.h=c,this.f=0));break;default:switch(a&65528){case 128:0<=(b=Rb(this))&& +(f=a&7,this.b[7]=this.b[f],this.b[f]=b);break;case 152:this.u&49152||(this.u=this.u&63519|(a&7)<<5,this.la=1);break;case 160:case 168:break;case 176:case 184:break;default:switch(a){case 0:49152&this.u?(this.s|=128,K(this,4,46)):(this.Ha=3,Jb(this),console.log("HALT at "+this.b[7].toString(8)));break;case 1:b=0;if(0<(a=this.o.length))for(;0>12].call(this,a)} +var jc=[function(a){kc[a>>8&15].call(this,a)},function(a){P(this,Ub(this,a,U(this,a>>6)));--this.a},function(a){var b=U(this,a>>6);a=U(this,a);Pb(this,b-a,a,b);--this.a},function(a){P(this,U(this,a>>6)&U(this,a));--this.a},function(a){Sb(this,a,U(this,a>>6),Xb);--this.a},function(a){Sb(this,a,U(this,a>>6),Zb);--this.a},function(a){Sb(this,a,U(this,a>>6),Wb);--this.a},function(a){lc[a>>8&15].call(this,a)},function(a){mc[a>>8&15].call(this,a)},function(a){var b=V(this,a>>6);P(this,Vb(this,a,b,2)<<8); +--this.a},function(a){var b=V(this,a>>6)<<8;a=V(this,a)<<8;Pb(this,b-a,a,b);--this.a},function(a){P(this,(V(this,a>>6)&V(this,a))<<8);--this.a},function(a){Tb(this,a,V(this,a>>6),Yb);--this.a},function(a){Tb(this,a,V(this,a>>6),$b);--this.a},function(a){Sb(this,a,U(this,a>>6),ac);--this.a},Z],kc=[function(a){nc[a>>4&15].call(this,a)},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i= +-1;--this.a},function(){this.i=-1;--this.a},ec,ec,function(a){oc[a>>6&3].call(this,a)},function(a){pc[a>>6&3].call(this,a)},function(a){qc[a>>6&3].call(this,a)},function(a){rc[a>>6&3].call(this,a)},Z,Z],nc=[function(a){sc[a&15].call(this,a)},Z,Z,Z,Z,Z,Z,Z,Z,Z,function(a){tc[a&15].call(this,a)},function(a){uc[a&15].call(this,a)},Z,Z,Z,Z],tc=[gc,function(){this.g=0;--this.a},function(){this.f=0;--this.a},X,function(){this.h=1;--this.a},X,X,X,function(){this.c=0;--this.a},X,X,X,X,X,X,X],uc=[gc,function(){this.g= +65536;--this.a},function(){this.f=32768;--this.a},Y,function(){this.h=0;--this.a},Y,Y,Y,function(){this.c=32768;--this.a},Y,Y,Y,Y,Y,Y,Y],sc=[function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.u&49152||(Nb(this),this.A.reset());--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},Z,Z,Z,Z,Z,Z,Z,Z],lc=[fc,fc,dc,dc,bc,bc,cc,cc,ic,ic,Z,Z,Z,Z,hc,hc],mc=[function(){this.i= +-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(a){vc[a>>6&3].call(this,a)},function(a){wc[a>>6&3].call(this,a)},function(a){xc[a>>6&3].call(this,a)},function(a){yc[a>>6&3].call(this,a)},Z,Z],oc=[function(a){Ob(this,Ub(this,a,0));--this.a},function(){this.i= +-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a}],pc=[function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a}],qc=[function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a}],rc=[function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a}],vc=[function(a){Ob(this,Vb(this,a,0,1)); +--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a}],wc=[function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a}],xc=[function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a}],yc=[function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a},function(){this.i=-1;--this.a}]; +function zc(a){v.call(this,"ROM",a,zc);this.c=null;this.l=a.addr;this.f=a.size;this.o=a.writable;this.g=a.alias;this.h=a.file;this.v=ba(this.h);if(this.h){a=this.h;var b=ca(this.v);"json"!=b&&"hex"!=b&&(a=ea()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;p(a,null,!0,function(a,b,e){Ac(c,a,b,e)})}}x(zc);zc.prototype.La=function(a,b,c,d){this.A=b;this.a=c;this.K=d;Bc(this)};zc.prototype.za=function(){this.i&&(this.K&&this.K.a(this.id,this.l,this.f,this.i),delete this.i);return!0}; +zc.prototype.ya=function(){return!0}; +function Ac(a,b,c,d){if(d)a.L("Unable to load system ROM (error "+d+": "+b+")");else{Da(a.Lb,b,c);var f;if("["==c.charAt(0)||"{"==c.charAt(0))try{var e,g,h=eval("("+c+")");if(e=h.bytes)a.c=e;else if(e=h.words)for(a.c=Array(2*e.length),g=f=0;f>8&255;else if(e=h.data)for(a.c=Array(4*e.length),g=f=0;f>8&255,a.c[g++]=e[f]>>16&255,a.c[g++]=e[f]>>24&255;else a.c=h;a.i=h.symbols;if(!a.c.length){r("Empty ROM: "+b); +return}if(1==a.c.length){r(a.c[0]);return}}catch(k){a.L("ROM data error: "+k.message);return}else for(b=c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.c=Array(b.length),f=0;f>>d.f].ac(f&d.h,a.c[c]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.g?b.push(a.g):null!=a.g&&a.g.length&&(b=a.g);for(c=0;c>>f.f;0>>=f.f;0\nLicense: GPL version 3 or later ");this.$("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis ");for(b=0;bGc){if(Ic(d,this.v)){this.i=new O(this,"1.30.0","failsafe");Ic(this.i)&&(Nc(this,d),a=2,Oc(this.i));this.i.set("timestamp",ia());Pc(this.i);var f=this.c&&!this.l;if(1==a||ja("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=Mc(d)){var e=d.get("code"),g=d.get("data");e&&("ok"==e?Ic(d,g):("error"== +e&&"no machine state"!=g?(this.L("Error: "+g),"unable to verify user"==g&&(na("user",""),this.f=null)):this.$(e+": "+g),Oc(d),Ic(d)?(c=Mc(d),f=!0):c=!1))}f&&Lc(this,c?d:null)}else 2==a&&d.clear()}else Lc(this);delete this.v;delete this.B}f=y(this.id);for(e=0;ea[1];a=a[2];this.ca=!0;this.j.M=!0;var d=this.C.power;d&&(d.textContent="Shutdown");this.a&&(Qc(this,this.a,b,c,a),this.a.$a());this.W&&(Nc(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.g=0}; +function Nc(a,b){if(ja("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var c=a.f||"";b=b.toString();var d={app:"PDP11js",ver:"1.30.0"};d.url=a.url;d.user=c;d.type="bug";d.data=b;p("http://www.pcjs.org/api/v1/report",d,!0)}} +function Rc(a,b,c){var d,f="none";if(a.g)return null;a.g--;var e=new O(a,"1.30.0"),g=new O(a,"1.30.0","validate"),h=ia();g.set("timestamp",h);e.set("timestamp",h);e.set("version","1.30.0");e.set("url",window?window.location.href:null);e.set("browser",window?window.navigator.userAgent:"");a.a&&a.a.ya&&(c&&Eb(a.a),d=a.a.ya(b,c),"object"===typeof d&&e.set(a.a.id,d),c&&(a.a.j.M=!1,!1===d&&(f=null)));for(var h=y(a.id),k=0;ke.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(e=window.location.pathname+e),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(e?' url="'+e+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDP11js$2"), -a=a.replace(/().*?(<\/xsl:variable>)/,"$1pdp11$2"));e=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(e=new window.ActiveXObject("Microsoft.XMLDOM"),e.async=!1,e.loadXML(a)):e=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){e=null,a=r.message}else a="unrecognized XML: "+(255/g.exec(a)){var f=d[2];b("Loading "+f+"...");p(f,null,!0,function(e,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(e=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,r=/( [a-z]+=)(['"])(.*?)\2/g;m=r.exec(e);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+f);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, -"");a=a.replace(d[0],g);$c(a,b,c)}})}else c(a,null)} -function ad(a,b,c,d){function f(a){if(void 0===h){var b=g&&B(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ga(a))}function e(a){f("Error: "+a);k&&(--Xc||ua(!0));k=!1}var g,h,k=!0;Xc++;Ca[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],P=document.createElement("style");P.type="text/css";P.styleSheet?P.styleSheet.cssText=m:P.appendChild(document.createTextNode(m));r.appendChild(P)}c|| -(c="/versions/pdp11/1.30.0/components.xsl");m=function(d,h){h?Yc(c,null,null,!1,f,function(d,k){k?(Da(a,c,d),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--Xc||ua(!0)):e("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--Xc||ua(!0)):e("invalid machine element: "+ -a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser")):e(d)}):e(d)};"<"!=b.charAt(0)?Yc(b,a,d,!0,f,m):Zc(b,null,a,d,!1,f,m)}else e("missing machine element: "+a)}catch(R){e(R.message)}return k}window.embedPDP11=function(a,b,c,d){ua(!1);return ad(a,b,c,d)};window.enableEvents=ua;window.sendEvent=va;})(); +l.fa=function(a,b,c){var d=this;switch(b){case "power":return this.C[b]=c,c.onclick=function(){d.g||(d.j.M?Rc(d,!1,!0):Kc(d,d.fb))},!0;case "reset":return this.C[b]=c,c.onclick=function(){if(d.j.M&&!d.g)if(d.c&&!d.o){var a=ja("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Rc(d,a,!0);!a&&d.O?window&&window.location.reload():d.fb(Gc)}else d.reset(),d.a&&d.a.$a()},!0;case "save":if(da())c.parentNode.removeChild(c);else return this.C[b]= +c,c.onclick=function(){var a=Hc(d,!0);if(a){var b=!!(d.c&&!d.o||d.O),c=Rc(d,b);b?Sc(d,a,c):d.L("Resume disabled, machine state not saved")}},!0}return!1}; +function Hc(a,b){var c=a.f;c||((c=ma("user"),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Tc(a,c))||a.L("The user ID is invalid.")):b&&a.L("Browser local storage is not available"));return c} +function Tc(a,b){a.f=null;b=p(ea()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(na("user",b.data),a.f=b.data)}catch(d){r(d.message+" ("+c+")")}return a.f}function Jc(a){var b=null;a.f&&(b=ea()+"/api/v1/user?req=load&user="+a.f+"&state="+Uc(a,"1.30.0"));return b} +function Sc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Uc(a,"1.30.0");d.data=c;b=p(ea()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var f=d.indexOf("\n");0e.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(e=window.location.pathname+e),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(e?' url="'+e+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDP11js$2"), +a=a.replace(/().*?(<\/xsl:variable>)/,"$1pdp11$2"));e=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(e=new window.ActiveXObject("Microsoft.XMLDOM"),e.async=!1,e.loadXML(a)):e=(new window.DOMParser).parseFromString(a,"text/xml")}catch(q){e=null,a=q.message}else a="unrecognized XML: "+(255/g.exec(a)){var f=d[2];b("Loading "+f+"...");p(f,null,!0,function(e,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(e=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,q=/( [a-z]+=)(['"])(.*?)\2/g;m=q.exec(e);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+f);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, +"");a=a.replace(d[0],g);Yc(a,b,c)}})}else c(a,null)} +function Zc(a,b,c,d){function f(a){if(void 0===h){var b=g&&B(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ga(a))}function e(a){f("Error: "+a);k&&(--Vc||ua(!0));k=!1}var g,h,k=!0;Vc++;Ca[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var q=document.head||document.getElementsByTagName("head")[0],L=document.createElement("style");L.type="text/css";L.styleSheet?L.styleSheet.cssText=m:L.appendChild(document.createTextNode(m));q.appendChild(L)}c|| +(c="/versions/pdp11/1.30.0/components.xsl");m=function(d,h){h?Wc(c,null,null,!1,f,function(d,k){k?(Da(a,c,d),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--Vc||ua(!0)):e("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--Vc||ua(!0)):e("invalid machine element: "+ +a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser")):e(d)}):e(d)};"<"!=b.charAt(0)?Wc(b,a,d,!0,f,m):Xc(b,null,a,d,!1,f,m)}else e("missing machine element: "+a)}catch(N){e(N.message)}return k}window.embedPDP11=function(a,b,c,d){ua(!1);return Zc(a,b,c,d)};window.enableEvents=ua;window.sendEvent=va;})();