From 3b27f45b769b006adcb35348a874bfe289892974 Mon Sep 17 00:00:00 2001 From: Jeff Parsons Date: Fri, 24 Feb 2017 23:15:53 -0800 Subject: [PATCH] Added disassembly of basic PDP-10 operations --- devices/pdp10/machine/ka10/test/machine.xml | 2 +- modules/pdp10/lib/bus.js | 2 +- modules/pdp10/lib/cpustate.js | 2 +- modules/pdp10/lib/debugger.js | 424 +++++++++++++------- modules/pdp10/lib/defines.js | 16 +- versions/pdpjs/1.34.0/pdp10-dbg.js | 314 +++++++-------- versions/pdpjs/1.34.0/pdp10.js | 124 +++--- 7 files changed, 507 insertions(+), 377 deletions(-) diff --git a/devices/pdp10/machine/ka10/test/machine.xml b/devices/pdp10/machine/ka10/test/machine.xml index 2a951bf8d..e62a63d4d 100644 --- a/devices/pdp10/machine/ka10/test/machine.xml +++ b/devices/pdp10/machine/ka10/test/machine.xml @@ -7,5 +7,5 @@ - + diff --git a/modules/pdp10/lib/bus.js b/modules/pdp10/lib/bus.js index dfb6e876c..0d869f12c 100644 --- a/modules/pdp10/lib/bus.js +++ b/modules/pdp10/lib/bus.js @@ -706,8 +706,8 @@ class BusPDP10 extends Component { if (!this.nDisableFaults) { if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP10.FAULT)) { this.dbg.printMessage("memory fault on " + this.dbg.toStrBase(addr), true, true); - this.dbg.stopCPU(); } + this.cpu.stopCPU(); } } diff --git a/modules/pdp10/lib/cpustate.js b/modules/pdp10/lib/cpustate.js index 44db31942..6ced96a13 100644 --- a/modules/pdp10/lib/cpustate.js +++ b/modules/pdp10/lib/cpustate.js @@ -324,7 +324,7 @@ class CPUStatePDP10 extends CPUPDP10 { */ getOpcode() { - var pc = this.regPC; + var pc = this.pcLast = this.regPC; var opCode = this.readWord(pc); this.regPC = (pc + 1) % PDP10.ADDR_LIMIT; return opCode; diff --git a/modules/pdp10/lib/debugger.js b/modules/pdp10/lib/debugger.js index 3dfe1267c..c7616e747 100644 --- a/modules/pdp10/lib/debugger.js +++ b/modules/pdp10/lib/debugger.js @@ -162,7 +162,6 @@ class DebuggerPDP10 extends Debugger { /* * Define remaining miscellaneous DebuggerPDP10 properties. */ - this.opTable = DebuggerPDP10.OPTABLE; this.aOpReserved = []; this.nStep = 0; this.sCmdTracePrev = null; @@ -1327,7 +1326,7 @@ class DebuggerPDP10 extends Debugger { */ if (!nState) { opCode = this.cpu.readWord(addr); - if ((opCode & PDP10.OPCODE.HALTMASK) == PDP10.OPCODE.HALT && this.cpu.getLastPC() == addr) { + if ((opCode / PDP10.OPCODE.FNSHIFT)|0 == PDP10.OPCODE.FNHALT && this.cpu.getLastPC() == addr) { addr = this.cpu.advancePC(1); } } @@ -1365,6 +1364,100 @@ class DebuggerPDP10 extends Debugger { return false; } + /** + * getInstruction(dbgAddr, sComment, nSequence) + * + * Get the next instruction, by decoding the opcode and any operands. + * + * @this {DebuggerPDP10} + * @param {DbgAddrPDP10} dbgAddr + * @param {string} [sComment] is an associated comment + * @param {number|null} [nSequence] is an associated sequence number, undefined if none + * @return {string} (and dbgAddr is updated to the next instruction) + */ + getInstruction(dbgAddr, sComment, nSequence) + { + var opNames = DebuggerPDP10.OPNAMES; + var dbgAddrOp = this.newAddr(dbgAddr.addr); + + var opNum, opMask, aModes, iMode = 0; + var opCode = this.getWord(dbgAddr, 1); + var op = (opCode / PDP10.OPCODE.OPSHIFT)|0; + + for (var mask in DebuggerPDP10.OPTABLE) { + var opMasks = DebuggerPDP10.OPTABLE[mask]; + opNum = opMasks[op & mask]; + if (opNum) { + opMask = +mask; + switch(opMask) { + case PDP10.OPCODE.OPMODE: + aModes = DebuggerPDP10.OPMODES; + iMode = (op & 3); + break; + case PDP10.OPCODE.OPCOMP: + aModes = DebuggerPDP10.OPCOMPS; + iMode = (op & 7); + break; + case PDP10.OPCODE.OPTEST: + aModes = DebuggerPDP10.OPTESTS; + iMode = ((op & 0o60) >> 2) | ((op & 0o6) >> 1); + break; + } + break; + } + } + + var sOperands = ""; + var sMode = aModes && aModes[iMode] || ""; + if (sMode == "S" && opNum > DebuggerPDP10.OPS.MOVM) sMode = "B"; + + var sOpName = opNames[opNum] + sMode; + if (!opNum) sOperands = this.toStrWord(opCode); + + var sOpCodes = ""; + var sLine = this.toStrAddr(dbgAddrOp) + ":"; + if (dbgAddrOp.addr !== PDP10.ADDR_INVALID && dbgAddr.addr !== PDP10.ADDR_INVALID) { + do { + var w = this.getWord(dbgAddrOp, 1); + sOpCodes += ' ' + this.toStrWord(w); + if (dbgAddrOp.addr == null) break; + } while (dbgAddrOp.addr != dbgAddr.addr); + } + + sLine += Str.pad(sOpCodes, 16); + sLine += Str.pad(sOpName, 5); + if (sOperands) sLine += ' ' + sOperands; + + if (sComment) { + sLine = Str.pad(sLine, 60) + ';' + (sComment || ""); + if (!this.cpu.flags.checksum) { + sLine += (nSequence != null? '=' + nSequence.toString() : ""); + } else { + var nCycles = this.cpu.getCycles(); + sLine += "cycles=" + nCycles.toString() + " cs=" + Str.toHex(this.cpu.nChecksum); + } + } + return sLine; + } + + /** + * parseInstruction(sOp, sOperand, addr) + * + * TODO: Unimplemented. See parseInstruction() in modules/c1pjs/lib/debugger.js for a sample implementation. + * + * @this {DebuggerPDP10} + * @param {string} sOp + * @param {string|undefined} sOperand + * @param {DbgAddrPDP10} dbgAddr of memory where this instruction is being assembled + * @return {Array.} of opcode bytes; if the instruction can't be parsed, the array will be empty + */ + parseInstruction(sOp, sOperand, dbgAddr) + { + var aOpBytes = []; + this.println("not supported yet"); + return aOpBytes; + } + /** * stopInstruction(sMessage) * @@ -1760,139 +1853,6 @@ class DebuggerPDP10 extends Debugger { return fBreak; } - /** - * getInstruction(dbgAddr, sComment, nSequence) - * - * Get the next instruction, by decoding the opcode and any operands. - * - * @this {DebuggerPDP10} - * @param {DbgAddrPDP10} dbgAddr - * @param {string} [sComment] is an associated comment - * @param {number|null} [nSequence] is an associated sequence number, undefined if none - * @return {string} (and dbgAddr is updated to the next instruction) - */ - getInstruction(dbgAddr, sComment, nSequence) - { - var opNames = DebuggerPDP10.OPNAMES; - var dbgAddrOp = this.newAddr(dbgAddr.addr); - var opCode = this.getWord(dbgAddr, 1); - - var opDesc; - for (var mask in this.opTable) { - var opMasks = this.opTable[mask]; - opDesc = opMasks[opCode & mask]; - if (opDesc) break; - } - - if (!opDesc) { - opDesc = DebuggerPDP10.OPNONE; - } - - var opNum = opDesc[0]; - if (this.aOpReserved.indexOf(opNum) >= 0) { - opDesc = DebuggerPDP10.OPNONE; - opNum = opDesc[0]; - } - - var sOperands = "", sTarget = ""; - var sOpName = opNames[opNum]; - var cOperands = opDesc.length - 1; - - if (!opNum && !cOperands) { - sOperands = this.toStrWord(opCode); - } - - for (var iOperand = 1; iOperand <= cOperands; iOperand++) { - - var opType = opDesc[iOperand]; - if (opType === undefined) continue; - - var sOperand = this.getOperand(opCode, opType, dbgAddr); - - if (!sOperand || !sOperand.length) { - sOperands = "INVALID"; - break; - } - - /* - * If getOperand() returns an Array rather than a string, then the first element is the original - * operand, and the second element contains additional information (eg, the target) of the operand. - */ - if (typeof sOperand != "string") { - sTarget = sOperand[1]; - sOperand = sOperand[0]; - } - - if (sOperands.length > 0) sOperands += ','; - sOperands += (sOperand || "???"); - } - - var sOpCodes = ""; - var sLine = this.toStrAddr(dbgAddrOp) + ":"; - if (dbgAddrOp.addr !== PDP10.ADDR_INVALID && dbgAddr.addr !== PDP10.ADDR_INVALID) { - do { - var w = this.getWord(dbgAddrOp, 1); - sOpCodes += ' ' + this.toStrWord(w); - if (dbgAddrOp.addr == null) break; - } while (dbgAddrOp.addr != dbgAddr.addr); - } - - sLine += Str.pad(sOpCodes, 16); - sLine += Str.pad(sOpName, 5); - if (sOperands) sLine += ' ' + sOperands; - - if (sComment || sTarget) { - sLine = Str.pad(sLine, 60) + ';' + (sComment || ""); - if (!this.cpu.flags.checksum) { - sLine += (nSequence != null? '=' + nSequence.toString() : ""); - } else { - var nCycles = this.cpu.getCycles(); - sLine += "cycles=" + nCycles.toString() + " cs=" + Str.toHex(this.cpu.nChecksum); - } - if (sTarget) { - if (sLine.slice(-1) != ';') sLine += ' '; - sLine += sTarget; - } - } - return sLine; - } - - /** - * getOperand(opCode, opType, dbgAddr) - * - * If getOperand() returns an Array rather than a string, then the first element is the original - * operand, and the second element is a comment containing additional information (eg, the target) - * of the operand. - * - * @this {DebuggerPDP10} - * @param {number} opCode - * @param {number} opType - * @param {DbgAddrPDP10} dbgAddr - * @return {string|Array.} - */ - getOperand(opCode, opType, dbgAddr) - { - return ""; - } - - /** - * parseInstruction(sOp, sOperand, addr) - * - * TODO: Unimplemented. See parseInstruction() in modules/c1pjs/lib/debugger.js for a sample implementation. - * - * @this {DebuggerPDP10} - * @param {string} sOp - * @param {string|undefined} sOperand - * @param {DbgAddrPDP10} dbgAddr of memory where this instruction is being assembled - * @return {Array.} of opcode bytes; if the instruction can't be parsed, the array will be empty - */ - parseInstruction(sOp, sOperand, dbgAddr) - { - var aOpBytes = []; - this.println("not supported yet"); - return aOpBytes; - } - /** * getRegOutput(iReg) * @@ -3517,7 +3477,31 @@ if (DEBUGGER) { * CPU opcode IDs */ DebuggerPDP10.OPS = { - NONE: 0 + NONE: 0, + HLL: 1, HLLZ: 2, HLLO: 3, HLLE: 4, + HRL: 5, HRLZ: 6, HRLO: 7, HRLE: 8, + HRR: 9, HRRZ: 10, HRRO: 11, HRRE: 12, + HLR: 13, HLRZ: 14, HLRO: 15, HLRE: 16, + MOV: 17, MOVS: 18, MOVN: 19, MOVM: 20, + EXCH: 21, BLT: 22, PUSH: 23, POP: 24, + LDB: 25, DPB: 26, IBP: 27, ILDB: 28, + IDPB: 29, SETZ: 30, SETO: 31, SETA: 32, + SETCA: 33, SETM: 34, SETCM: 35, AND: 36, + ANDCA: 37, ANDCM: 38, ANDCB: 39, IOR: 40, + ORCA: 41, ORCM: 42, ORCB: 43, XOR: 44, + EQV: 45, LSH: 46, LSHC: 47, ROT: 48, + ROTC: 49, ADD: 50, SUB: 51, MUL: 52, + IMUL: 53, DIV: 54, IDIV: 55, ASH: 56, + ASHC: 57, FSC: 58, FADR: 59, FSBR: 60, + FMPR: 61, FDVR: 62, DFN: 63, UFA: 64, + FAD: 65, FSB: 66, FMP: 67, FDV: 68, + AOBJP: 69, AOBJN: 70, CAI: 71, CA: 72, + JUMP: 73, SKIP: 74, AOJ: 75, AOS: 76, + SOJ: 77, SOS: 78, TR: 79, TL: 80, + TD: 81, TS: 82, XCT: 83, JFFO: 84, + JFCL: 85, JSR: 86, JSP: 87, JRST: 88, + JSA: 89, JRA: 90, PUSHJ: 91, POPJ: 92, + UUO: 93 }; /* @@ -3525,6 +3509,30 @@ if (DEBUGGER) { */ DebuggerPDP10.OPNAMES = [ ".WORD", + "HLL", "HLLZ", "HLLO", "HLLE", + "HRL", "HRLZ", "HRLO", "HRLE", + "HRR", "HRRZ", "HRRO", "HRRE", + "HLR", "HLRZ", "HLRO", "HLRE", + "MOV", "MOVS", "MOVN", "MOVM", + "EXCH", "BLT", "PUSH", "POP", + "LDB", "DPB", "IBP", "ILDB", + "IDPB", "SETZ", "SETO", "SETA", + "SETCA", "SETM", "SETCM", "AND", + "ANDCA", "ANDCM", "ANDCB", "IOR", + "ORCA", "ORCM", "ORCB", "XOR", + "EQV", "LSH", "LSHC", "ROT", + "ROTC", "ADD", "SUB", "MUL", + "IMUL", "DIV", "IDIV", "ASH", + "ASHC", "FSC", "FADR", "FSBR", + "FMPR", "FDVR", "DFN", "UFA", + "FAD", "FSB", "FMP", "FDV", + "AOBJP", "AOBJN", "CAI", "CA", + "JUMP", "SKIP", "AOJ", "AOS", + "SOJ", "SOS", "TR", "TL", + "TD", "TS", "XCT", "JFFO", + "JFCL", "JSR", "JSP", "JRST", + "JSA", "JRA", "PUSHJ", "POPJ", + "UUO" ]; DebuggerPDP10.REGS = { @@ -3536,25 +3544,141 @@ if (DEBUGGER) { ]; /* - * The OPTABLE contains opcode masks, and each mask refers to table of possible values, and each - * value refers to an array that contains: + * PDP-10 opcodes are 36-bit values: * - * [0]: {number} of the opcode name (see OP.*) - * [1]: {number} containing the first operand type bit(s), if any - * [2]: {number} containing the second operand type bit(s), if any + * 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + * O O O O O O O M M A A A A I X X X X Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y * - * Note that, by convention, opcodes that require two operands list the SRC operand first and DST operand - * second (ie, the OPPOSITE of the Intel convention). + * or using modern bit-numbering: * - * Also note that, for some of the newer PDP-11 opcodes (eg, MUL, DIV, ASH, ASHC), the location of the - * opcode's SRC and DST bits are reversed. This is why, for example, you'll see the MUL instruction defined - * below as having OP_DST for the first operand and OP_SRCREG for the second operand. This does NOT mean - * that the opcode's destination operand is being listed first, but rather that the bits describing the source - * operand are in the opcode's OP_DST field. + * 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * O O O O O O O M M A A A A I X X X X Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y + * + * where OOOOOOOMM represents the operation, with MM (if used) represents the mode: + * + * Mode Suffix Source Destination + * ---- ------ ----- ----------- + * 0: BASIC None E AC + * 1: IMMEDIATE I 0,E AC + * 2: MEMORY M AC E + * 3: SELF S E E (and AC if A is non-zero) + * + * Bits 0-21 (I,X,Y) contain what we call a "reference address" (R), which is used to + * calculate the "effective address" (E). To determine E from R, we must extract I, X, + * and Y from R, set E to Y, then add [X] to E if X is non-zero. If I is zero, then + * we're done; otherwise, we must set set R to [E] and repeat the process. */ - DebuggerPDP10.OPTABLE = {}; + DebuggerPDP10.OPTABLE = { + [PDP10.OPCODE.OPMASK]: { + 0o130: DebuggerPDP10.OPS.UFA, + 0o131: DebuggerPDP10.OPS.DFN, + 0o132: DebuggerPDP10.OPS.FSC, + 0o133: DebuggerPDP10.OPS.IBP, + 0o134: DebuggerPDP10.OPS.ILDB, + 0o135: DebuggerPDP10.OPS.LDB, + 0o136: DebuggerPDP10.OPS.IDPB, + 0o137: DebuggerPDP10.OPS.DPB, + 0o240: DebuggerPDP10.OPS.ASH, + 0o241: DebuggerPDP10.OPS.ROT, + 0o242: DebuggerPDP10.OPS.LSH, + 0o243: DebuggerPDP10.OPS.JFFO, + 0o244: DebuggerPDP10.OPS.ASHC, + 0o245: DebuggerPDP10.OPS.ROTC, + 0o246: DebuggerPDP10.OPS.LSHC, + 0o250: DebuggerPDP10.OPS.EXCH, + 0o251: DebuggerPDP10.OPS.BLT, + 0o252: DebuggerPDP10.OPS.AOBJP, + 0o253: DebuggerPDP10.OPS.AOBJN, + 0o254: DebuggerPDP10.OPS.JRST, // includes HALT, JRSTF, and JEN + 0o255: DebuggerPDP10.OPS.JFCL, // includes JOV, JCRY0, JCRY1, JCRY, and JFOV + 0o256: DebuggerPDP10.OPS.XCT, + 0o260: DebuggerPDP10.OPS.PUSHJ, + 0o261: DebuggerPDP10.OPS.PUSH, + 0o262: DebuggerPDP10.OPS.POP, + 0o263: DebuggerPDP10.OPS.POPJ, + 0o264: DebuggerPDP10.OPS.JSR, + 0o265: DebuggerPDP10.OPS.JSP, + 0o266: DebuggerPDP10.OPS.JSA, + 0o267: DebuggerPDP10.OPS.JRA, + }, + [PDP10.OPCODE.OPMODE]: { + 0o140: DebuggerPDP10.OPS.FAD, + 0o144: DebuggerPDP10.OPS.FADR, + 0o150: DebuggerPDP10.OPS.FSB, + 0o154: DebuggerPDP10.OPS.FSBR, + 0o160: DebuggerPDP10.OPS.FMP, + 0o164: DebuggerPDP10.OPS.FMPR, + 0o170: DebuggerPDP10.OPS.FDV, + 0o174: DebuggerPDP10.OPS.FDVR, + 0o200: DebuggerPDP10.OPS.MOV, + 0o204: DebuggerPDP10.OPS.MOVS, + 0o210: DebuggerPDP10.OPS.MOVN, + 0o214: DebuggerPDP10.OPS.MOVM, + 0o220: DebuggerPDP10.OPS.IMUL, + 0o224: DebuggerPDP10.OPS.MUL, + 0o230: DebuggerPDP10.OPS.IDIV, + 0o234: DebuggerPDP10.OPS.DIV, + 0o270: DebuggerPDP10.OPS.ADD, + 0o274: DebuggerPDP10.OPS.SUB, + 0o400: DebuggerPDP10.OPS.SETZ, + 0o404: DebuggerPDP10.OPS.AND, + 0o410: DebuggerPDP10.OPS.ANDCA, + 0o414: DebuggerPDP10.OPS.SETM, + 0o420: DebuggerPDP10.OPS.ANDCM, + 0o424: DebuggerPDP10.OPS.SETA, + 0o430: DebuggerPDP10.OPS.XOR, + 0o434: DebuggerPDP10.OPS.IOR, + 0o440: DebuggerPDP10.OPS.ANDCB, + 0o444: DebuggerPDP10.OPS.EQV, + 0o450: DebuggerPDP10.OPS.SETCA, + 0o454: DebuggerPDP10.OPS.ORCA, + 0o460: DebuggerPDP10.OPS.SETCM, + 0o464: DebuggerPDP10.OPS.ORCM, + 0o470: DebuggerPDP10.OPS.ORCB, + 0o474: DebuggerPDP10.OPS.SETO, + 0o500: DebuggerPDP10.OPS.HLL, + 0o504: DebuggerPDP10.OPS.HRL, + 0o510: DebuggerPDP10.OPS.HLLZ, + 0o514: DebuggerPDP10.OPS.HRLZ, + 0o520: DebuggerPDP10.OPS.HLLO, + 0o524: DebuggerPDP10.OPS.HRLO, + 0o530: DebuggerPDP10.OPS.HLLE, + 0o534: DebuggerPDP10.OPS.HRLE, + 0o540: DebuggerPDP10.OPS.HRR, + 0o544: DebuggerPDP10.OPS.HLR, + 0o550: DebuggerPDP10.OPS.HRRZ, + 0o554: DebuggerPDP10.OPS.HLRZ, + 0o560: DebuggerPDP10.OPS.HRRO, + 0o564: DebuggerPDP10.OPS.HLRO, + 0o570: DebuggerPDP10.OPS.HRRE, + 0o574: DebuggerPDP10.OPS.HLRE + }, + [PDP10.OPCODE.OPCOMP]: { + 0o300: DebuggerPDP10.OPS.CAI, + 0o310: DebuggerPDP10.OPS.CA, + 0o320: DebuggerPDP10.OPS.JUMP, + 0o330: DebuggerPDP10.OPS.SKIP, + 0o340: DebuggerPDP10.OPS.AOJ, + 0o350: DebuggerPDP10.OPS.AOS, + 0o360: DebuggerPDP10.OPS.SOJ, + 0o370: DebuggerPDP10.OPS.SOS, + }, + [PDP10.OPCODE.OPTEST]: { + 0o600: DebuggerPDP10.OPS.TR, + 0o601: DebuggerPDP10.OPS.TL, + 0o610: DebuggerPDP10.OPS.TD, + 0o611: DebuggerPDP10.OPS.TS, + }, + [PDP10.OPCODE.OPUUO]: { + 0o000: DebuggerPDP10.OPS.UUO + } + }; - DebuggerPDP10.OPNONE = [DebuggerPDP10.OPS.NONE]; + DebuggerPDP10.OPMODES = ["", "I", "M", "S"]; + DebuggerPDP10.OPCOMPS = ["", "L", "E", "LE", "A", "GE", "N", "G"]; + DebuggerPDP10.OPTESTS = ["N", "NE", "NA", "NN", "Z", "ZE", "ZA", "ZN", "C", "CE", "CA", "CN", "O", "OE", "OA", "ON"]; DebuggerPDP10.HISTORY_LIMIT = DEBUG? 100000 : 1000; diff --git a/modules/pdp10/lib/defines.js b/modules/pdp10/lib/defines.js index cf0bdcec1..2b22e54ed 100644 --- a/modules/pdp10/lib/defines.js +++ b/modules/pdp10/lib/defines.js @@ -99,16 +99,22 @@ var PDP10 = { ADDR_LIMIT: Math.pow(2, 18), DATA_INVALID: -1, DATA_LIMIT: Math.pow(2, 36), + /* - * Assorted common opcodes + * Opcode definitions */ OPCODE: { - INSMASK: 0o777000000000, - ACCMASK: 0o000740000000, - HALTMASK: 0o777740000000, - HALT: 0o254200000000, + OPMASK: 0o777, // operation mask + OPMODE: 0o774, // operation with mode + OPCOMP: 0o770, // operation with compare + OPTEST: 0o611, // operation with test + OPUUO: 0o700, // unimplemented user operation (UUO) mask + OPSHIFT: Math.pow(2, 27), // operation shift + FNSHIFT: Math.pow(2, 23), // function shift + FNHALT: 0o5304, // function code for HALT INVALID: 0o777777777777 // TODO: Resolve }, + /* * Internal operation state flags */ diff --git a/versions/pdpjs/1.34.0/pdp10-dbg.js b/versions/pdpjs/1.34.0/pdp10-dbg.js index 4781865d8..126adaeb9 100644 --- a/versions/pdpjs/1.34.0/pdp10-dbg.js +++ b/versions/pdpjs/1.34.0/pdp10-dbg.js @@ -31,175 +31,175 @@ var l,aa="function"==typeof Object.defineProperties?Object.defineProperty:functi function ha(){ea();var a=ba.Symbol.iterator;a||(a=ba.Symbol.iterator=ba.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ia(this)}});ha=function(){}}function ia(a){var b=0;return pa(function(){return ba?-b:b}});qa("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}}); -var ra=Math.pow(2,36),sa=-Math.pow(2,35),t={Vb:0,jb:1,Xb:2,Yb:3,Zb:4,$b:5,ac:6,bc:7,Wa:8,cc:9,kb:10,dc:11,ec:12,lb:13,fc:14,gc:15,hc:16,ic:17,jc:18,kc:19,lc:20,mc:21,nc:22,oc:23,pc:24,qc:25,rc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Va:65,Ub:66,Wb:67,sc:68,E:69,tc:70,uc:71,vc:72,wc:73,xc:74,yc:75,zc:76,Ac:77,Bc:78,Cc:79,Dc:80,Q:81, +var ra=Math.pow(2,36),sa=-Math.pow(2,35),t={Vb:0,jb:1,Xb:2,Yb:3,Zb:4,$b:5,ac:6,bc:7,Ua:8,cc:9,kb:10,dc:11,ec:12,lb:13,fc:14,gc:15,hc:16,ic:17,jc:18,kc:19,lc:20,mc:21,nc:22,oc:23,pc:24,qc:25,rc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Ta:65,Ub:66,Wb:67,sc:68,E:69,tc:70,uc:71,vc:72,wc:73,xc:74,yc:75,zc:76,Ac:77,Bc:78,Cc:79,Dc:80,Q:81, Ec:82,Fc:83,Gc:84,Hc:85,Ic:86,Jc:87,Kc:88,Lc:89,ob:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Mc:97,Nc:98,Oc:99,d:100,e:101,Pc:102,Qc:103,Rc:104,Sc:105,Tc:106,k:107,Uc:108,Vc:109,n:110,Wc:111,p:112,q:113,r:114,Xc:115,t:116,Zc:117,$c:118,ad:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,mb:127}; -function u(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ya=b.comment;this.nb=b;this.exports={};this.F=this.bindings={};a=this.id.indexOf(".");0>a?this.Ka=this.id:(this.La=this.id.substr(0,a),this.Ka=this.id.substr(a+1));this.i={ready:!1,Ea:!1,Sa:!1,T:!1,error:!1};this.Oa=null;this.i.error=!1;this.V=c||0;this.A=this.b=this.C=this.D=this.ja=null;v.push(this)}function ta(a,b,c){ua[a]&&b&&(ua[a][b]=c)}function va(){return Date.now()||+new Date} +function u(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ya=b.comment;this.nb=b;this.exports={};this.F=this.bindings={};a=this.id.indexOf(".");0>a?this.Ja=this.id:(this.Ka=this.id.substr(0,a),this.Ja=this.id.substr(a+1));this.i={ready:!1,Da:!1,Qa:!1,T:!1,error:!1};this.Ma=null;this.i.error=!1;this.V=c||0;this.A=this.b=this.C=this.D=this.ja=null;v.push(this)}function ta(a,b,c){ua[a]&&b&&(ua[a][b]=c)}function va(){return Date.now()||+new Date} function x(a){window&&window.alert(a)}function wa(a){var b=!1;window&&(b=window.confirm(a));return b}function y(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba&&-1>=3;return(c?"0o":"")+d} +function Pa(a,b){var c;if(a){b||(b=10);var d=a.charAt(0),e=0a&&-1>=3;return(c?"0o":"")+d} function H(a,b,c){var d="";b?8a&&-1=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}function I(a){return H(a,4,!0)}function Ra(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0"']/g,function(a){return Wa[a]})}function Xa(a,b){return(a+" ").slice(0,b)}function fb(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Wa={"&":"&","<":"<",">":">",'"':""","'":"'"}; -function gb(a,b,c){var d=0,e=a.length,g=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[f]);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 J(a,b,c,d){c=void 0===c?!1:c;var e=0,g=null,f=null;if("object"==typeof resources&&(g=resources[a]))return d&&d(a,g,e),[g,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),f;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(g=h.responseText,200==h.status||!h.status&&g.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a, -g,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,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||(g=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,g,e),f=[g,e]);return f} -function ib(a,b){var c,d={W:null,S:null,ia:null,ha:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,g,f;if("<"==b.substr(0,1))throw Error(b);f=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.ia=f.load;d.ha=f.exec;if(e=f.bytes)d.W=e;else if(e=f.words)for(d.W=Array(2*e.length),g=c=0;c>8&255;else if(e=f.data)for(d.W=Array(4*e.length),g=c=0;c>8&255,d.W[g++]=e[c]>>16&255,d.W[g++]=e[c]>>24&255;else d.W=f;d.S=f.symbols;d.W.length?1==d.W.length&&(x(d.W[0]),d=null):(x("Empty resource: "+a),d=null)}catch(h){x("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c"']/g,function(a){return Wa[a]})}function Xa(a,b){return(a+" ").slice(0,b)}function Ya(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Wa={"&":"&","<":"<",">":">",'"':""","'":"'"}; +function gb(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(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 J(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];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&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(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,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||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g} +function ib(a,b){var c,d={W:null,S:null,ia:null,ha:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.ia=g.load;d.ha=g.exec;if(e=g.bytes)d.W=e;else if(e=g.words)for(d.W=Array(2*e.length),f=c=0;c>8&255;else if(e=g.data)for(d.W=Array(4*e.length),f=c=0;c>8&255,d.W[f++]=e[c]>>16&255,d.W[f++]=e[c]>>24&255;else d.W=g;d.S=g.symbols;d.W.length?1==d.W.length&&(x(d.W[0]),d=null):(x("Empty resource: "+a),d=null)}catch(h){x("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca;a++)this.g["S"+a]=[0,0,!1,!1,this.Ab,a];this.A=this.b=this.C=this.D=null;this.exports={hold:this.sb,toggle:this.Nb,reset:this.Jb, -set:this.Mb};E(this)}r(Ib,u);l=Ib.prototype;l.reset=function(a){this.stop();a&&Kb(this,this.w=0)}; -l.da=function(a,b,c,d){if(this.D&&this.D.da(a,b,c,d)||this.b&&this.b.da(a,b,c,d)||this.A&&this.A.da(a,b,c,d))return!0;switch(b){case "PC":return this.F[b]=c,this.K++,!0;default:return"led"==a||"rled"==a?(this.F[b]=c,this.B[b]=d?1:0,this.K++,!0):"switch"==a?(void 0===this.g[b]&&(this.g[b]=[d?1:0,d?1:0]),this.F[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Lb(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){Mb(a,b)}}(this,b),a.ontouchstart= -function(a,b){return function(c){Lb(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){Mb(a,b)}}(this,b),!0):u.prototype.da.call(this,a,b,c,d)}};l.sa=function(a,b,c,d){this.D=a;this.C=b;this.b=c;this.A=d;Nb(this);Ob(this)};l.la=function(a,b){if(!b)if(this.U&&Pb(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};l.ca=function(a){return a?this.save():!0};l.save=function(){var a=new O(this);a.set(0,[this.j,this.w,this.u]);return a.data()}; -l.restore=function(a){if(a=a[0])Qb(this,this.j=a[0]),Kb(this,this.w=a[1]),Rb(this,a[2]);return!0};l.Jb=function(){for(var a in this.g){var b=this.g[a];b[1]=b[0]}Ob(this);return!0};function Sb(a,b,c){if(a=a.F[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Nb(a,b){for(var c in a.B)Sb(a,c,null!=b?b:a.B[c])}function Tb(a,b,c){if(a=a.F[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Ob(a){for(var b in a.g)Tb(a,b,a.g[b][1])} -l.sb=function(a,b,c){if(Lb(this,b)){if(c){var d=this;setTimeout(function(){Mb(d,b);a&&a()},+c);return!1}Mb(this,b)}return!0};l.Mb=function(a,b){if("SR"==a)return Rb(this,Pa(b,8));var c=this.g[a];return c?(c[1]=+b?1:0,Tb(this,a,c[1]),!0):!1};l.Nb=function(a){return Lb(this,a)?(Mb(this,a),!0):!1};function Lb(a,b){var c=a.g[b];return c?(Tb(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=Ub&&(a.N=b==Vb,a.O=b==Wb),!0):!1} -function Mb(a,b){var c=a.g[b];c&&(c[2]&&c[3]&&(Tb(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}l.Bb=function(a){a||this.b.i.J||(this.b.g=this.j%Gb,this.g[Xb]&&this.g[Xb][1]&&Yb(this.b))};l.Cb=function(){};l.wb=function(a){a||this.b.R()}; -l.ub=function(a){if(!a&&!this.b.i.J)if(this.g[Xb]&&this.g[Xb][1])Yb(this.b);else{if((a=this.A)&&!Ma(a,!0))Na(a,!0),Zb(a,0,null),Na(a,!1);else try{var b=this.b.Ja(1);0c;c++){var d=a,e="A"+c,g=b&1<c;c++){var d=a,e="D"+c,g=b&1<b;b++)a.g["S"+b][1]=a.u&1<d.length){for(var e=0,g=Array(4096),f=0;f>>a.j;0g&&(m=g);if(h&&h.size){if(h.type==d){if(e+g<=h.v)return h.Ha+=h.v-e,h.v=e,!0;if(e>=h.v+h.Ha){m=h.size-(e-k);m>g&&(m=g);h.Ha=e-h.v+m;e=k+16384;g-=m;f++;continue}}return jc(kc,e,g)}e=new V(a,e,m,16384,d);gc(e,a.A,h);a.g[f++]=e;e=k+16384;g-=m}return 0>=g?(a.status("Added "+(c>>10)+"Kb "+lc[d]+" at "+Qa(b)),!0):jc(mc,b,c)} -function ec(a,b){var c=a.g[(b&a.u)>>>a.j];a.w++;b=c.j(b&16383,b);a.w--;return b}function dc(a,b,c){var d=a.g[(b&a.u)>>>a.j];a.w++;d.F(c,b&16383,b);a.w--}function hc(a){for(var b=0,c=[],d=0;d=c+d?a>>c&(1<=a.U&&(a.U+=a.P,c=!0);0<=a.Z&&a.Z<=Xc(a)&&(a.P=a.Z=-1,Tc(a),a.R(),c=!0);c&&a.f(Xc(a)+" cycles: checksum="+H(a.ma))}} -l.da=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.F[b]=c,!0;case "run":return this.F[b]=c,c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.i.T)a=!0;else{var b=null,c,h=y(a.id);for(c=0;ca.L/a.M?b=1:d=!0;a.N=b;b=a.ya*a.N;if(a.M!=b){a.M=b;b=a.M.toFixed(2)+"Mhz";var e=a.F.setSpeed;e&&(e.textContent=b);a.f("target speed: "+b)}c&&a.D&&ad(a.D)}ac(a,a.w);a.w=0;a.u=va();a.G=0;Zc(a);return d}function bd(a,b){for(var c=a.B.length-1;0<=c;c--){var d=a.B[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function cd(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function dd(a,b){var c=a.H-=a.I;a.I=0;b&&(a.H=0);return c} -l.Kb=function(){if(this.i.J){this.qa>=this.Aa&&Zc(this,!0);this.aa=0;this.ga=va();if(this.G){var a=this.ga-this.G;a>this.za&&(this.u+=a,this.u>this.ga&&(this.u=this.ga))}try{do{var b=bd(this,this.i.Ca?1:this.oa);try{this.Ja(b)}catch(e){if("number"!=typeof e)throw e;}b=dd(this,!0);this.aa+=b;this.w+=b;bc(this,b);$b(this,b);this.O-=b;if(0>=this.O){this.O+=this.oa;++this.Ba>=ed&&(this.D&&Q(this.D,void 0),this.Ba=0);break}}while(this.i.J)}catch(e){this.R();this.D&&this.D.stop(va(),Xc(this));Ja(this,e.stack|| -e.message);return}if(this.i.J){a=setTimeout;b=this.$a;this.G=va();var c=this.za;this.aa&&(c=Math.round(c*this.aa/this.oa));var c=c-(this.G-this.ga),d=this.G-this.u;d&&(this.L=Math.round(this.w/(10*d))/100,864E5<=d&&(this.K=0,Yc(this)));if(0>c||this.Lc&&(this.u-=c),c=0;this.qa+=this.aa;this.G+=c;a(b,c)}}}; -function Yb(a,b){if(!Ka(a))if(a.i.J)a.f(a.toString()+" busy");else{Yc(a);a.i.J=!0;a.i.Ra=!0;var c=a.F.run;c&&(c.textContent="Halt");a.D&&(b&&ad(a.D,!0),a.D.start(a.u,Xc(a)));a.A||a.status("Started");setTimeout(a.$a,0)}}l.Ja=function(){return 0};l.R=function(a){var b=!1;if(this.i.J){dd(this);ac(this,this.w);this.w=0;this.i.J=!1;if(b=this.F.run)b.textContent="Run";this.D&&this.D.stop(va(),Xc(this));b=!0;this.A||this.status("Stopped")}this.i.complete=a;return b};var $c=30,ed=15,Qc=["power","reset"]; -function fd(a){var b=+a.model||1001;Pc.call(this,a,1E6);this.Za=b;this.Ma=+a.addrReset||0;this.fa=null;this.Da=[];this.i.complete=!1}r(fd,Pc);l=fd.prototype;l.reset=function(){this.status("Model "+this.Za);this.i.J&&this.R();this.ea=this.g=this.ra=this.Ma;this.j=0;this.ta=this.Gb;this.Ia=this.Tb;this.fa=null;Sc(this);this.i.error=!1;Pc.prototype.reset.call(this)};l.gb=function(){return 0}; -l.save=function(){var a=new O(this);a.set(0,[this.g,this.ra,this.ea,this.j]);a.set(1,[]);a.set(2,[this.K,this.N,this.i.X]);a.set(3,gd(this));a.set(4,cd(this));return a.data()}; -l.restore=function(a){var b;b=a[0];ha();ea();ha();var c=b[Symbol.iterator];b=c?c.call(b):ia(b);this.g=b.next().value;this.ra=b.next().value;this.ea=b.next().value;this.j=b.next().value;b=a[2];this.K=b[0];Yc(this,b[1]);this.i.X=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.j].ta(a&16383,a)};l.Tb=function(a,b){var c=this.C;a=this.ea=a;c.g[(a&c.u)>>>c.j].Ia(b,a&16383,a)}; -l.Ja=function(a){this.i.complete=!0;var b=this.A?hd(this.A)?1:this.i.Ra?-1:0:0,c=a?this.i.Ra?0:1:-1;this.i.Ra=!1;this.H=this.I=a;this.j=this.j&-5|(b?4:0);do{if(this.j){if(this.j&4){if(id(this.A,this.g,c)){this.R();break}++b||(this.j&=-5);c||c++}if(a=this.j&11)this.j&2?this.fa||(this.j&=-3):this.j&1&&this.j++,a=!1;if(a){if(this.j&4&&id(this.A,this.g,c)){this.R();break}if(0>c)break}}this.j&=15;a=this.g;this.ta(a);this.g=(a+1)%Gb}while(0>>g.j;0>>= -g.j;0>>a.j;0f&&f>=sa&&(f+=ra);f=Math.trunc(Math.abs(f))%ra;void 0===g&&(g=e.size);for(h=d;g--&&h=b.length){G(a,"invalid block at offset "+I(n),4096);break}for(var k=k+2,p=b[k++]&255|(b[k++]&255)<<8,q=b[k++]&255|(b[k++]&255)<<8,m=m+((p&255)+(p>>8)+(q&255)+(q>>8)),K=k,za=p-=6;0=b.length){G(a,"insufficient data for block at offset "+I(n),4096);break}m+= -b[k++]&255;if(m&255){G(a,"invalid checksum ("+H(m,2,!0)+") for block at offset "+I(n),4096);break}if(za)for(G(a,"loading "+I(za)+" bytes at "+I(q)+"-"+I(q+za),4096);za--;)dc(a.C,q++,b[K++]);else q&1?f=!0:null==d&&(d=q),null!=d&&G(a,"starting address: "+I(d),4096);h=!0}else k++;else k+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h=t.Va&&c<=t.ob&&(b=c-(t.Va-t.jb));b&&(a.preventDefault&&a.preventDefault(),d.Pa(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==t.lb&&(b=t.kb);d.Pa(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); -a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.Pa(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};l.sa=function(a,b,c,d){this.D=a;this.C=b;this.b=c;this.A=d;E(this)}; -l.ib=function(a){if(!this.g){var b=Rc(this.D,"connection");if(b){var c=b.split("->");if(2==c.length){var d=fb(c[0]);if(d!=this.Ka)return;c=fb(c[1]);if(this.g=xa(c)){var e=this.g.exports;if(e){var g=e.connect;g&&g.call(this.g,this.u);if(this.B=e.receiveData){this.u=a;this.status("Connected "+this.La+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};l.la=function(a,b){if(!b)if(this.ib(this.u),!a)this.reset();else if(!this.restore(a))return!1;return!0}; -l.ca=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){var a=new O(this);a.set(0,[]);return a.data()};l.restore=function(){return!0};l.Pa=function(a){if("number"==typeof a)this.j.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.w&&a.u.length&&(a.w=0);if(0>a.w||b!=a.u[a.w])a.u.splice(0,0,b),a.w=0;a.w--}else a.O?b="end":b=a.u[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var g=0;g<=b.length;g++){var f=b.charAt(g);if('"'==f||"'"==f)e?f==e&&(e=null):e=f;else if(f==d&&!e||!f)a.push(fb(b.substring(c,g))),c=g+1}}return a} -function td(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),g=a.pop();switch(d){case "*":d=g*e;break;case "/":if(!e)return!1;d=g/e;break;case "%":if(!e)return!1;d=g%e;break;case "+":d=g+e;break;case "-":d=g-e;break;case "<<":d=g<>":d=g>>e;break;case ">>>":d=g>>>e;break;case "<":d=g":d=g>e?1:0;break;case ">=":d=g>=e?1:0;break;case "==":d=g==e?1:0;break;case "!=":d=g!=e?1:0;break;case "&":d=g&e;break; -case "^":d=g^e;break;case "|":d=g|e;break;case "&&":d=g&&e?1:0;break;case "||":d=g||e?1:0;break;default:return!1}a.push(d|0)}return!0} -function ud(a,b,c){var d;if(b){b=vd(a,b);for(var e=0,g=!1,f=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e>=1,K--;f=p+f;d>>=8}d=H(c,0,!0)+" "+c+". "+Qa(c,0,!0)+" "+("0b"+f);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.f((null!=b?b+": ":"")+d);return e} -function zd(a,b){if(b)return yd(a,b,a.Z[b]);var c=0;for(b in a.Z)yd(a,b,a.Z[b]),c++;return 0a&&-1>2:0)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c} -var xd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9}; -function Ad(a){rd.call(this,a);this.ya=!1;this.ma=!0;this.I=X();this.xa=X();this.N=X();this.H=[];this.g=this.K=this.G=[];Bd(this);this.P=this.ga=0;this.j=[];this.pa=void 0;Cd(this);this.A=this;this.na={};this.V=this.cb=0;this.U=null;this.M=[];Dd(this,a.messages);this.ra=a.commands;this.Ba=Ed;this.Ma=[];this.L=0;this.Da=this.qa=null;this.B=this.Aa=this.za=this.fa=this.oa=0;this.ea=this.aa=null;var b=this;window?void 0===window[C]&&(window[C]=function(a){return Wc(b,a)}):void 0===global[C]&&(global[C]= -function(a){return Wc(b,a)})}r(Ad,rd);function Y(a){a=a&&a.v;null==a&&(a=-1);return a}function X(a,b,c){return{v:void 0===a?null:a,qb:void 0===b?!1:b,ka:!1,ba:c}}function Fd(a){return[a.v,a.qb,a.ba,a.ka,a.Qa]}function Gd(a,b){var c=X(b[0],b[1],b[2]);c.ka=b[3];b[4]&&(c.ab=sd(a,c.Qa=b[4]));return c}l=Ad.prototype; -l.sa=function(a,b,c,d){this.C=b;this.D=a;this.b=c;this.ea=a.u;(a=Rc(a,"messages"))&&Dd(this,a);Hd(this,function(a){a:{var b=d.C.g,c=a[0],e=a=0,k=b.length;if(c){a=Y(Z(d,c));if(-1===a){d.f("invalid address: "+c);break a}e=a>>>d.C.j;k=1}d.f("blockid physical blockaddr used size type");d.f("-------- --------- --------- ------ ------ ----");for(var c=-1,m=0;k--;){var n=b[e];n.type==c?m++||d.f("..."):(c=n.type,m=lc[c],n&&d.f(H(n.id,8)+" %"+H(e<d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;dd&&(d=a.b.ta(b)),68719476735!=(d&65535)&&(c=a.j[a.P],c.v=b,c.ka=!1,c.ba=void 0,++a.P==a.j.length&&(a.P=0)));return!1} -function Bd(a){var b,c;a.g=["bp"];if(a.K)for(b=1;b>>d.j],!1)}a.K=["br"];if(a.G)for(b=1;b>>d.j],!0);a.G=["bw"];a.oa=0;a.ga=0}l.va=function(a,b,c){var d=!0;c||ue(this,a,b,!1,!0);if(a!=this.g){var e=Y(b);if(-1===e)this.f("invalid address: "+W(this,b.v)),d=!1;else{var g=this.C;g.g[e>>>g.j].va(e&16383,a==this.G)}}d&&(a.push(b),c?b.ka=!0:(ve(this,a,a.length-1,"set"),Cd(this)));return d}; -function ue(a,b,c,d,e){var g=!1;c=Y(c);for(var f=1;f>>d.j],b==a.G));h.ka||Cd(a);break}}return g}function we(a,b){for(var c=1;cb[0]?1:a[0]>>0,f],p=gb(n,k,a.eb);0>p&&n.splice(-(p+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.H.push({Yc:b,v:c,tb:d,S:e,bb:g})} -function Be(a,b,c){var d=[],e=Y(b)>>>0;for(b=0;b>>0,h=g.tb;if(e>=f&&eh[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.f(m)}h[3]&&(f=h[3],g=null);g=ye(a,b,f,g);a.f(g);a.I=b;e-=b.v-k;c++}}} -function xe(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.f(Pd+b):(a.O&&(a.f("ended assemble at "+W(a,a.N.v)),a.I=a.N,a.O=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.U=null;if(La(a)&&0n||"z"S.length&&(a.f("note: only "+S.length+" available"),L=S.length);P-=L;0>P&&(null==S[S.length-1].v?(L=P+L,P=0):P+=S.length);var sc=[];"call"==Wd&&(Ya=1E5,sc=["CALL"]);for(void 0!==Vd&&a.f(L+" instructions earlier:");0=S.length&&(P=0);a.pa=L;Yd++;Ya--}}Yd||(a.f("no "+Xd+"history available"), -a.pa=void 0)}else{var ka=Z(a,R);if(ka){var la=0,ae="ds"==Da;if(ca){if("l"==ca.charAt(0))ca=ca.substr(1)||hf,la=wd(a,ca);else{var be=Z(a,ca);be&&(la=be.v-ka.v)}0>la&&(la=0);65536fe;fe++)de+=String.fromCharCode((Ab%64|0)+32), -Ab/=64}ma&&(ma+="\n");ma=ae?ma+(na+","):ma+(R+": "+na+(0>ee?" "+de:""))}ma&&a.f(ma);a.xa=ka;a.ba=kf}}}}break;case "e":if("else"==f[0])break;var ge,he,ie=f[0],vc=f[1];"e"==ie||"ew"==ie?(ge=a.wa,he=a.Xa):vc=null;if(null==vc)a.f("edit memory commands:"),a.f("\tew [a] [...] edit words at address a");else{var Bb=Z(a,vc);if(Bb)for(var Cb=2;Cbzc;){for(var oa=null,of=256;65536>ab.v>>>0;){Ac.v=a.wa(ab,2);if(null==ab.v||!of--)break;if(!(Ac.v&1)){for(var pf=a,Db=Ac,ke=null,bb=Db.v,le=bb,Bc=1;6>=Bc&&bb;Bc++){if(2> "; -M(function(){for(var a=D(document,C,"debugger"),b=0;b\nLicense: GPL version 3 or later ");for(b=0;bMe){if(Ne(d,this.K)){this.B=new O(this,"1.34.0",We);Ne(this.B)&&(Xe(this,d),a=Ye,Ze(this.B));this.B.set(Te,hb());$e(this.B);var e=this.g&&!this.I;if(a==Ue||wa("Click OK to restore the previous "+Fb+" machine state, or CANCEL to reset the machine.")){if(c=Se(d)){var g=d.get("code"),f=d.get("data");g&&("ok"==g?Ne(d,f):("error"==g&&"no machine state"!= -f?(this.Y("Error: "+f),"unable to verify user"==f&&(mb(af,""),this.j=null)):this.f(g+": "+f),Ze(d),Ne(d)?(c=Se(d),e=!0):c=!1))}e&&Qe(this,c?d:null)}else a==Ye&&d.clear()}else Qe(this);delete this.K;delete this.H}e=y(this.id);for(g=0;ga[1];a=a[2];this.P=!0;this.i.T=!0;var d=this.F.power;d&&(d.textContent="Shutdown");this.b&&(bf(this,this.b,b,c,a),Q(this,-2),this.b.X());this.N&&(Xe(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.w=0}; -function Xe(a,b){if(wa("There may be a problem with your "+Fb+" machine.\n\nTo help us diagnose it, click OK to send this "+Fb+" machine state to http://www.pcjs.org.")){var c=a.aa;a=a.j||"";b=b.toString();var d={};d.app=Fb;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;J("http://www.pcjs.org/api/v1/report",d,!0)}} -function He(a,b,c){var d,e="none";if(a.w)return null;a.w--;var g=new O(a,"1.34.0"),f=new O(a,"1.34.0",Re),h=hb();f.set(Te,h);g.set(Te,h);g.set(cf,"1.34.0");g.set(df,window?window.location.href:null);g.set(ef,window?window.navigator.userAgent:"");a.b&&a.b.ca&&(c&&(b&&(a.b.i.X=a.b.i.J),a.b.R()),d=a.b.ca(b,c),"object"===typeof d&&g.set(a.b.id,d),c&&(a.b.i.T=!1,!1===d&&(e=null)));for(var h=y(a.id),k=0;ka;a++)this.g["S"+a]=[0,0,!1,!1,this.Ab,a];this.A=this.b=this.C=this.D=null;this.exports={hold:this.sb,toggle:this.Nb,reset:this.Jb, +set:this.Mb};E(this)}r(Kb,u);l=Kb.prototype;l.reset=function(a){this.stop();a&&Mb(this,this.w=0)}; +l.da=function(a,b,c,d){if(this.D&&this.D.da(a,b,c,d)||this.b&&this.b.da(a,b,c,d)||this.A&&this.A.da(a,b,c,d))return!0;switch(b){case "PC":return this.F[b]=c,this.K++,!0;default:return"led"==a||"rled"==a?(this.F[b]=c,this.B[b]=d?1:0,this.K++,!0):"switch"==a?(void 0===this.g[b]&&(this.g[b]=[d?1:0,d?1:0]),this.F[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Nb(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){Ob(a,b)}}(this,b),a.ontouchstart= +function(a,b){return function(c){Nb(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){Ob(a,b)}}(this,b),!0):u.prototype.da.call(this,a,b,c,d)}};l.sa=function(a,b,c,d){this.D=a;this.C=b;this.b=c;this.A=d;Pb(this);Qb(this)};l.la=function(a,b){if(!b)if(this.U&&Rb(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};l.ca=function(a){return a?this.save():!0};l.save=function(){var a=new O(this);a.set(0,[this.j,this.w,this.u]);return a.data()}; +l.restore=function(a){if(a=a[0])Sb(this,this.j=a[0]),Mb(this,this.w=a[1]),Tb(this,a[2]);return!0};l.Jb=function(){for(var a in this.g){var b=this.g[a];b[1]=b[0]}Qb(this);return!0};function Ub(a,b,c){if(a=a.F[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Pb(a,b){for(var c in a.B)Ub(a,c,null!=b?b:a.B[c])}function Vb(a,b,c){if(a=a.F[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Qb(a){for(var b in a.g)Vb(a,b,a.g[b][1])} +l.sb=function(a,b,c){if(Nb(this,b)){if(c){var d=this;setTimeout(function(){Ob(d,b);a&&a()},+c);return!1}Ob(this,b)}return!0};l.Mb=function(a,b){if("SR"==a)return Tb(this,Pa(b,8));var c=this.g[a];return c?(c[1]=+b?1:0,Vb(this,a,c[1]),!0):!1};l.Nb=function(a){return Nb(this,a)?(Ob(this,a),!0):!1};function Nb(a,b){var c=a.g[b];return c?(Vb(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=Wb&&(a.N=b==Xb,a.O=b==Yb),!0):!1} +function Ob(a,b){var c=a.g[b];c&&(c[2]&&c[3]&&(Vb(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}l.Bb=function(a){a||this.b.i.J||(this.b.g=this.j%Gb,this.g[Zb]&&this.g[Zb][1]&&$b(this.b))};l.Cb=function(){};l.wb=function(a){a||this.b.R()}; +l.ub=function(a){if(!a&&!this.b.i.J)if(this.g[Zb]&&this.g[Zb][1])$b(this.b);else{if((a=this.A)&&!Ma(a,!0))Na(a,!0),ac(a,0,null),Na(a,!1);else try{var b=this.b.Ia(1);0c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.g["S"+b][1]=a.u&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.j;0f&&(m=f);if(h&&h.size){if(h.type==d){if(e+f<=h.v)return h.Ga+=h.v-e,h.v=e,!0;if(e>=h.v+h.Ga){m=h.size-(e-k);m>f&&(m=f);h.Ga=e-h.v+m;e=k+16384;f-=m;g++;continue}}return lc(mc,e,f)}e=new V(a,e,m,16384,d);ic(e,a.A,h);a.g[g++]=e;e=k+16384;f-=m}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+nc[d]+" at "+Qa(b)),!0):lc(oc,b,c)} +function gc(a,b){var c=a.g[(b&a.u)>>>a.j];a.w++;b=c.j(b&16383,b);a.w--;return b}function fc(a,b,c){var d=a.g[(b&a.u)>>>a.j];a.w++;d.F(c,b&16383,b);a.w--}function jc(a){for(var b=0,c=[],d=0;d=c+d?a>>c&(1<=a.U&&(a.U+=a.P,c=!0);0<=a.Z&&a.Z<=Zc(a)&&(a.P=a.Z=-1,Vc(a),a.R(),c=!0);c&&a.f(Zc(a)+" cycles: checksum="+H(a.ma))}} +l.da=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.F[b]=c,!0;case "run":return this.F[b]=c,c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.i.T)a=!0;else{var b=null,c,h=y(a.id);for(c=0;ca.L/a.M?b=1:d=!0;a.N=b;b=a.ya*a.N;if(a.M!=b){a.M=b;b=a.M.toFixed(2)+"Mhz";var e=a.F.setSpeed;e&&(e.textContent=b);a.f("target speed: "+b)}c&&a.D&&cd(a.D)}cc(a,a.w);a.w=0;a.u=va();a.G=0;ad(a);return d}function dd(a,b){for(var c=a.B.length-1;0<=c;c--){var d=a.B[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function ed(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function fd(a,b){var c=a.H-=a.I;a.I=0;b&&(a.H=0);return c} +l.Kb=function(){if(this.i.J){this.ra>=this.Aa&&ad(this,!0);this.aa=0;this.ga=va();if(this.G){var a=this.ga-this.G;a>this.za&&(this.u+=a,this.u>this.ga&&(this.u=this.ga))}try{do{var b=dd(this,this.i.Ca?1:this.oa);try{this.Ia(b)}catch(e){if("number"!=typeof e)throw e;}b=fd(this,!0);this.aa+=b;this.w+=b;dc(this,b);bc(this,b);this.O-=b;if(0>=this.O){this.O+=this.oa;++this.Ba>=gd&&(this.D&&Q(this.D,void 0),this.Ba=0);break}}while(this.i.J)}catch(e){this.R();this.D&&this.D.stop(va(),Zc(this));Ja(this,e.stack|| +e.message);return}if(this.i.J){a=setTimeout;b=this.$a;this.G=va();var c=this.za;this.aa&&(c=Math.round(c*this.aa/this.oa));var c=c-(this.G-this.ga),d=this.G-this.u;d&&(this.L=Math.round(this.w/(10*d))/100,864E5<=d&&(this.K=0,$c(this)));if(0>c||this.Lc&&(this.u-=c),c=0;this.ra+=this.aa;this.G+=c;a(b,c)}}}; +function $b(a,b){if(!Ka(a))if(a.i.J)a.f(a.toString()+" busy");else{$c(a);a.i.J=!0;a.i.Pa=!0;var c=a.F.run;c&&(c.textContent="Halt");a.D&&(b&&cd(a.D,!0),a.D.start(a.u,Zc(a)));a.A||a.status("Started");setTimeout(a.$a,0)}}l.Ia=function(){return 0};l.R=function(a){var b=!1;if(this.i.J){fd(this);cc(this,this.w);this.w=0;this.i.J=!1;if(b=this.F.run)b.textContent="Run";this.D&&this.D.stop(va(),Zc(this));b=!0;this.A||this.status("Stopped")}this.i.complete=a;return b};var bd=30,gd=15,Sc=["power","reset"]; +function hd(a){var b=+a.model||1001;Rc.call(this,a,1E6);this.Za=b;this.Xa=+a.addrReset||0;this.fa=null;this.Wa=[];this.i.complete=!1}r(hd,Rc);l=hd.prototype;l.reset=function(){this.status("Model "+this.Za);this.i.J&&this.R();this.ea=this.g=this.pa=this.Xa;this.j=0;this.ta=this.Gb;this.Ha=this.Tb;this.fa=null;Uc(this);this.i.error=!1;Rc.prototype.reset.call(this)};l.gb=function(){return 0}; +l.save=function(){var a=new O(this);a.set(0,[this.g,this.pa,this.ea,this.j]);a.set(1,[]);a.set(2,[this.K,this.N,this.i.X]);a.set(3,id(this));a.set(4,ed(this));return a.data()}; +l.restore=function(a){var b;b=a[0];ha();ea();ha();var c=b[Symbol.iterator];b=c?c.call(b):ia(b);this.g=b.next().value;this.pa=b.next().value;this.ea=b.next().value;this.j=b.next().value;b=a[2];this.K=b[0];$c(this,b[1]);this.i.X=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.j].ta(a&16383,a)};l.Tb=function(a,b){var c=this.C;a=this.ea=a;c.g[(a&c.u)>>>c.j].Ha(b,a&16383,a)}; +l.Ia=function(a){this.i.complete=!0;var b=this.A?jd(this.A)?1:this.i.Pa?-1:0:0,c=a?this.i.Pa?0:1:-1;this.i.Pa=!1;this.H=this.I=a;this.j=this.j&-5|(b?4:0);do{if(this.j){if(this.j&4){if(kd(this.A,this.g,c)){this.R();break}++b||(this.j&=-5);c||c++}if(a=this.j&11)this.j&2?this.fa||(this.j&=-3):this.j&1&&this.j++,a=!1;if(a){if(this.j&4&&kd(this.A,this.g,c)){this.R();break}if(0>c)break}}this.j&=15;a=this.pa=this.g;this.ta(a);this.g=(a+1)%Gb}while(0>>f.j;0>>= +f.j;0>>a.j;0g&&g>=sa&&(g+=ra);g=Math.trunc(Math.abs(g))%ra;void 0===f&&(f=e.size);for(h=d;f--&&h=b.length){G(a,"invalid block at offset "+I(n),4096);break}for(var k=k+2,p=b[k++]&255|(b[k++]&255)<<8,q=b[k++]&255|(b[k++]&255)<<8,m=m+((p&255)+(p>>8)+(q&255)+(q>>8)),K=k,za=p-=6;0=b.length){G(a,"insufficient data for block at offset "+I(n),4096);break}m+= +b[k++]&255;if(m&255){G(a,"invalid checksum ("+H(m,2,!0)+") for block at offset "+I(n),4096);break}if(za)for(G(a,"loading "+I(za)+" bytes at "+I(q)+"-"+I(q+za),4096);za--;)fc(a.C,q++,b[K++]);else q&1?g=!0:null==d&&(d=q),null!=d&&G(a,"starting address: "+I(d),4096);h=!0}else k++;else k+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h=t.Ta&&c<=t.ob&&(b=c-(t.Ta-t.jb));b&&(a.preventDefault&&a.preventDefault(),d.Na(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==t.lb&&(b=t.kb);d.Na(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); +a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.Na(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};l.sa=function(a,b,c,d){this.D=a;this.C=b;this.b=c;this.A=d;E(this)}; +l.ib=function(a){if(!this.g){var b=Tc(this.D,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ya(c[0]);if(d!=this.Ja)return;c=Ya(c[1]);if(this.g=xa(c)){var e=this.g.exports;if(e){var f=e.connect;f&&f.call(this.g,this.u);if(this.B=e.receiveData){this.u=a;this.status("Connected "+this.Ka+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};l.la=function(a,b){if(!b)if(this.ib(this.u),!a)this.reset();else if(!this.restore(a))return!1;return!0}; +l.ca=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){var a=new O(this);a.set(0,[]);return a.data()};l.restore=function(){return!0};l.Na=function(a){if("number"==typeof a)this.j.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.w&&a.u.length&&(a.w=0);if(0>a.w||b!=a.u[a.w])a.u.splice(0,0,b),a.w=0;a.w--}else a.O?b="end":b=a.u[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";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==d&&!e||!g)a.push(Ya(b.substring(c,f))),c=f+1}}return a} +function vd(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break; +case "^":d=f^e;break;case "|":d=f|e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(d|0)}return!0} +function wd(a,b,c){var d;if(b){b=xd(a,b);for(var e=0,f=!1,g=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e>=1,K--;g=p+g;d>>=8}d=H(c,0,!0)+" "+c+". "+Qa(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.f((null!=b?b+": ":"")+d);return e} +function Bd(a,b){if(b)return Ad(a,b,a.Z[b]);var c=0;for(b in a.Z)Ad(a,b,a.Z[b]),c++;return 0a&&-1>2:0)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c} +var zd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9}; +function Cd(a){td.call(this,a);this.ya=!1;this.ma=!0;this.I=X();this.xa=X();this.N=X();this.H=[];this.g=this.K=this.G=[];Dd(this);this.P=this.ga=0;this.j=[];this.pa=void 0;Ed(this);this.A=this;this.na={};this.V=this.cb=0;this.U=null;this.M=[];Fd(this,a.messages);this.ra=a.commands;this.L=0;this.Ba=this.qa=null;this.B=this.Aa=this.za=this.fa=this.oa=0;this.ea=this.aa=null;var b=this;window?void 0===window[C]&&(window[C]=function(a){return Yc(b,a)}):void 0===global[C]&&(global[C]=function(a){return Yc(b, +a)})}r(Cd,td);function Y(a){a=a&&a.v;null==a&&(a=-1);return a}function X(a,b,c){return{v:void 0===a?null:a,qb:void 0===b?!1:b,ka:!1,ba:c}}function Gd(a){return[a.v,a.qb,a.ba,a.ka,a.Oa]}function Hd(a,b){var c=X(b[0],b[1],b[2]);c.ka=b[3];b[4]&&(c.ab=ud(a,c.Oa=b[4]));return c}l=Cd.prototype; +l.sa=function(a,b,c,d){this.C=b;this.D=a;this.b=c;this.ea=a.u;(a=Tc(a,"messages"))&&Fd(this,a);Id(this,function(a){a:{var b=d.C.g,c=a[0],e=a=0,k=b.length;if(c){a=Y(Z(d,c));if(-1===a){d.f("invalid address: "+c);break a}e=a>>>d.C.j;k=1}d.f("blockid physical blockaddr used size type");d.f("-------- --------- --------- ------ ------ ----");for(var c=-1,m=0;k--;){var n=b[e];n.type==c?m++||d.f("..."):(c=n.type,m=nc[c],n&&d.f(H(n.id,8)+" %"+H(e<d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;dd&&(d=a.b.ta(b)),68719476735!=(d&65535)&&(c=a.j[a.P],c.v=b,c.ka=!1,c.ba=void 0,++a.P==a.j.length&&(a.P=0)));return!1} +function ve(a,b,c,d){var e=X(b.v),f,g,h,k=0,m=a.wa(b,1),n=m/Ib|0;for(g in we)if(f=we[g][n&g]){g=+g;switch(g){case 508:h=xe;k=n&3;break;case 504:h=ye;k=n&7;break;case 393:h=ze,k=(n&48)>>2|(n&6)>>1}break}n="";h=h&&h[k]||"";"S"==h&&f>Ae&&(h="B");h=Be[f]+h;f||(n=Kd(m));f="";m=W(a,e.v)+":";if(-1!==e.v&&-1!==b.v){do if(k=a.wa(e,1),f+=" "+Kd(k),null==e.v)break;while(e.v!=b.v)}m+=Xa(f,16);m+=Xa(h,5);n&&(m+=" "+n);c&&(m=Xa(m,60)+";"+(c||""),m=a.b.i.Ca?m+("cycles="+Zc(a.b).toString()+" cs="+H(a.b.ma)):m+(null!= +d?"="+d.toString():""));return m}function Dd(a){var b,c;a.g=["bp"];if(a.K)for(b=1;b>>d.j],!1)}a.K=["br"];if(a.G)for(b=1;b>>d.j],!0);a.G=["bw"];a.oa=0;a.ga=0} +l.va=function(a,b,c){var d=!0;c||Ce(this,a,b,!1,!0);if(a!=this.g){var e=Y(b);if(-1===e)this.f("invalid address: "+W(this,b.v)),d=!1;else{var f=this.C;f.g[e>>>f.j].va(e&16383,a==this.G)}}d&&(a.push(b),c?b.ka=!0:(De(this,a,a.length-1,"set"),Ed(this)));return d};function Ce(a,b,c,d,e){var f=!1;c=Y(c);for(var g=1;g>>d.j],b==a.G));h.ka||Ed(a);break}}return f} +function Ee(a,b){for(var c=1;cb[0]?1:a[0]>>0,g],p=gb(n,k,a.eb);0>p&&n.splice(-(p+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.H.push({Yc:b,v:c,tb:d,S:e,bb:f})}function Ge(a,b,c){var d=[],e=Y(b)>>>0;for(b=0;b>>0,h=f.tb;if(e>=g&&eh[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.f(m)}h[3]&&(g=h[3],f=null);f=ve(a,b,g,f);a.f(f);a.I=b;e-=b.v-k;c++}}} +function Fe(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.f(Qd+b):(a.O&&(a.f("ended assemble at "+W(a,a.N.v)),a.I=a.N,a.O=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.U=null;if(La(a)&&0n||"z"S.length&&(a.f("note: only "+S.length+" available"),L=S.length);P-=L;0>P&&(null==S[S.length-1].v?(L=P+L,P=0):P+=S.length);var tc=[];"call"==Yd&&(Za=1E5,tc=["CALL"]);for(void 0!==Xd&&a.f(L+" instructions earlier:");0=S.length&&(P=0);a.pa=L;$d++;Za--}}$d||(a.f("no "+Zd+"history available"), +a.pa=void 0)}else{var ka=Z(a,R);if(ka){var la=0,ce="ds"==Da;if(ca){if("l"==ca.charAt(0))ca=ca.substr(1)||of,la=yd(a,ca);else{var de=Z(a,ca);de&&(la=de.v-ka.v)}0>la&&(la=0);65536he;he++)fe+=String.fromCharCode((Bb%64|0)+32), +Bb/=64}ma&&(ma+="\n");ma=ce?ma+(na+","):ma+(R+": "+na+(0>ge?" "+fe:""))}ma&&a.f(ma);a.xa=ka;a.ba=qf}}}}break;case "e":if("else"==g[0])break;var ie,je,ke=g[0],wc=g[1];"e"==ke||"ew"==ke?(ie=a.wa,je=a.Va):wc=null;if(null==wc)a.f("edit memory commands:"),a.f("\tew [a] [...] edit words at address a");else{var Cb=Z(a,wc);if(Cb)for(var Db=2;DbAc;){for(var oa=null,uf=256;65536>bb.v>>>0;){Bc.v=a.wa(bb,2);if(null==bb.v||!uf--)break;if(!(Bc.v&1)){for(var vf=a,Eb=Bc,me=null,cb=Eb.v,ne=cb,Cc=1;6>=Cc&&cb;Cc++){if(2> ";M(function(){for(var a=D(document,C,"debugger"),b=0;b\nLicense: GPL version 3 or later ");for(b=0;bSe){if(Te(d,this.K)){this.B=new O(this,"1.34.0",bf);Te(this.B)&&(cf(this,d),a=df,ef(this.B));this.B.set(Ze,hb());ff(this.B);var e=this.g&&!this.I;if(a==$e||wa("Click OK to restore the previous "+Ab+" machine state, or CANCEL to reset the machine.")){if(c=Ye(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Te(d,g):("error"==f&&"no machine state"!= +g?(this.Y("Error: "+g),"unable to verify user"==g&&(mb(gf,""),this.j=null)):this.f(f+": "+g),ef(d),Te(d)?(c=Ye(d),e=!0):c=!1))}e&&We(this,c?d:null)}else a==df&&d.clear()}else We(this);delete this.K;delete this.H}e=y(this.id);for(f=0;fa[1];a=a[2];this.P=!0;this.i.T=!0;var d=this.F.power;d&&(d.textContent="Shutdown");this.b&&(hf(this,this.b,b,c,a),Q(this,-2),this.b.X());this.N&&(cf(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.w=0}; +function cf(a,b){if(wa("There may be a problem with your "+Ab+" machine.\n\nTo help us diagnose it, click OK to send this "+Ab+" machine state to http://www.pcjs.org.")){var c=a.aa;a=a.j||"";b=b.toString();var d={};d.app=Ab;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;J("http://www.pcjs.org/api/v1/report",d,!0)}} +function Me(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new O(a,"1.34.0"),g=new O(a,"1.34.0",Xe),h=hb();g.set(Ze,h);f.set(Ze,h);f.set(jf,"1.34.0");f.set(kf,window?window.location.href:null);f.set(lf,window?window.navigator.userAgent:"");a.b&&a.b.ca&&(c&&(b&&(a.b.i.X=a.b.i.J),a.b.R()),d=a.b.ca(b,c),"object"===typeof d&&f.set(a.b.id,d),c&&(a.b.i.T=!1,!1===d&&(e=null)));for(var h=y(a.id),k=0;k=d||30<=(c.xa+=d))&&(e.textContent=c.i.J?c.L.toFixed(2)+"Mhz":"Stopped",c.xa=0)}if(a.u&&(a=a.u,b=b||0,a.K)){c=a.b.i.J;d=!!(a.b.j&8);if(0>=b||60<=(a.I+=b)){e=a.b.g;if(a.F.PC){var g=a.A&&a.A.ba||8,e=e||0,e=8==g?Qa(e,void 0):H(e,void 0);a.F.PC.textContent!=e&&(a.F.PC.textContent=e)}a.I=0}-1>b?a.j=a.b.g:0f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(f?' url="'+f+'"':"")));g||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"), -a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));f=null;if("<"==a.charAt(0))try{g||(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(p){f=null,a=p.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");J(e,null,!0,function(g,f,h){if(h||!f)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(g=d[3])if(h=f.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(g);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(f=f.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}f=f.replace(/<\?xml[^>]*>[\r\n]*/, -"");a=a.replace(d[0],f);Af(a,b,c)}})}else c(a,null)} -function Bf(a,b,c,d,e){function g(a){if(void 0===k){var b=h&&D(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Va(a))}function f(a){g("Error: "+a);m&&(--xf||wb(!0));m=!1}var h,k,m=!0;xf++;ua[b]={};try{if(h=document.getElementById(b)){var n;if("object"==typeof resources&&(n=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=n:q.appendChild(document.createTextNode(n));p.appendChild(q)}d|| -(n=a,"pdp"==a.substr(0,3)&&(n="pdpjs"),d="/versions/"+n+"/1.34.0/components.xsl");n=function(e,k){k?yf(d,null,a,null,!1,g,function(a,e){e?(ta(b,d,a),g("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--xf||wb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--xf|| -wb(!0)):f("invalid machine element: "+b):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(a)}):f(e)};"<"!=c.charAt(0)?yf(c,b,a,e,!0,g,n):zf(c,null,b,a,e,!1,g,n)}else f("missing machine element: "+b)}catch(K){f(K.message)}return m}window.embedPDP10=function(a,b,c,d){wb(!1);return Bf("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){wb(!1);return Bf("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return z(b,a+".machine")}; -window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!Aa[a]){for(var c=!0,d=Aa,e=a,g=b.length,f=[],h=[],k="",m=null,n=0;n=d||30<=(c.xa+=d))&&(e.textContent=c.i.J?c.L.toFixed(2)+"Mhz":"Stopped",c.xa=0)}if(a.u&&(a=a.u,b=b||0,a.K)){c=a.b.i.J;d=!!(a.b.j&8);if(0>=b||60<=(a.I+=b)){e=a.b.g;if(a.F.PC){var f=a.A&&a.A.ba||8,e=e||0,e=8==f?Qa(e,void 0):H(e,void 0);a.F.PC.textContent!=e&&(a.F.PC.textContent=e)}a.I=0}-1>b?a.j=a.b.g:0g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"), +a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){g=null,a=p.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");J(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[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{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, +"");a=a.replace(d[0],g);Gf(a,b,c)}})}else c(a,null)} +function Hf(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&D(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Va(a))}function g(a){f("Error: "+a);m&&(--Df||wb(!0));m=!1}var h,k,m=!0;Df++;ua[b]={};try{if(h=document.getElementById(b)){var n;if("object"==typeof resources&&(n=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=n:q.appendChild(document.createTextNode(n));p.appendChild(q)}d|| +(n=a,"pdp"==a.substr(0,3)&&(n="pdpjs"),d="/versions/"+n+"/1.34.0/components.xsl");n=function(e,k){k?Ef(d,null,a,null,!1,f,function(a,e){e?(ta(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Df||wb(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Df|| +wb(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Ef(c,b,a,e,!0,f,n):Ff(c,null,b,a,e,!1,f,n)}else g("missing machine element: "+b)}catch(K){g(K.message)}return m}window.embedPDP10=function(a,b,c,d){wb(!1);return Hf("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){wb(!1);return Hf("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return z(b,a+".machine")}; +window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!Aa[a]){for(var c=!0,d=Aa,e=a,f=b.length,g=[],h=[],k="",m=null,n=0;na?-b:b}});ha("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}}); -var ia=Math.pow(2,36),ja=-Math.pow(2,35),t={yb:0,Oa:1,Ab:2,Bb:3,Cb:4,Db:5,Eb:6,Fb:7,Fa:8,Gb:9,Pa:10,Hb:11,Ib:12,Qa:13,Jb:14,Kb:15,Lb:16,Mb:17,Nb:18,Ob:19,Pb:20,Qb:21,Rb:22,Sb:23,Tb:24,Ub:25,Vb:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Ea:65,xb:66,zb:67,Wb:68,E:69,Xb:70,Yb:71,Zb:72,$b:73,ac:74,bc:75,cc:76,dc:77,ec:78,fc:79,gc:80,Q:81, -hc:82,ic:83,jc:84,kc:85,lc:86,mc:87,nc:88,oc:89,Ua:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,pc:97,qc:98,rc:99,d:100,e:101,sc:102,tc:103,uc:104,vc:105,wc:106,k:107,xc:108,yc:109,n:110,zc:111,p:112,q:113,r:114,Ac:115,t:116,Bc:117,Cc:118,Dc:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Ra:127}; -function u(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ia=b.comment;this.Ta=b;this.exports={};this.i=this.bindings={};a=this.id.indexOf(".");0>a?this.ia=this.id:(this.ja=this.id.substr(0,a),this.ia=this.id.substr(a+1));this.b={ready:!1,na:!1,Ba:!1,w:!1,error:!1};this.qa=null;this.b.error=!1;this.o=this.c=this.j=this.m=this.Y=null;v.push(this)}function ka(a,b,c){la[a]&&b&&(la[a][b]=c)}function w(){return Date.now()||+new Date} +var ia=Math.pow(2,36),ja=-Math.pow(2,35),t={wb:0,Ma:1,yb:2,zb:3,Ab:4,Bb:5,Cb:6,Db:7,Ea:8,Eb:9,Na:10,Fb:11,Gb:12,Oa:13,Hb:14,Ib:15,Jb:16,Kb:17,Lb:18,Mb:19,Nb:20,Ob:21,Pb:22,Qb:23,Rb:24,Sb:25,Tb:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Da:65,vb:66,xb:67,Ub:68,E:69,Vb:70,Wb:71,Xb:72,Yb:73,Zb:74,$b:75,ac:76,bc:77,cc:78,dc:79,ec:80,Q:81, +fc:82,gc:83,hc:84,ic:85,jc:86,kc:87,lc:88,mc:89,Sa:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,nc:97,oc:98,pc:99,d:100,e:101,qc:102,rc:103,sc:104,tc:105,uc:106,k:107,vc:108,wc:109,n:110,xc:111,p:112,q:113,r:114,yc:115,t:116,zc:117,Ac:118,Bc:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Pa:127}; +function u(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ha=b.comment;this.Ra=b;this.exports={};this.i=this.bindings={};a=this.id.indexOf(".");0>a?this.ia=this.id:(this.ja=this.id.substr(0,a),this.ia=this.id.substr(a+1));this.b={ready:!1,na:!1,Ba:!1,w:!1,error:!1};this.qa=null;this.b.error=!1;this.o=this.c=this.l=this.m=this.Y=null;v.push(this)}function ka(a,b,c){la[a]&&b&&(la[a][b]=c)}function w(){return Date.now()||+new Date} function x(a){window&&window.alert(a)}function ma(a){var b=!1;window&&(b=window.confirm(a));return b}function y(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba;a++)this.a["S"+a]=[0,0,!1,!1,this.cb,a];this.o=this.c=this.j=this.m=null;this.exports={hold:this.Wa,toggle:this.qb,reset:this.mb, -set:this.pb};E(this)}r(Ua,u);k=Ua.prototype;k.reset=function(a){this.stop();a&&N(this,this.h=0)}; -k.S=function(a,b,c,d){if(this.m&&this.m.S(a,b,c,d)||this.c&&this.c.S(a,b,c,d))return!0;switch(b){case "PC":return this.i[b]=c,this.B++,!0;default:return"led"==a||"rled"==a?(this.i[b]=c,this.l[b]=d?1:0,this.B++,!0):"switch"==a?(void 0===this.a[b]&&(this.a[b]=[d?1:0,d?1:0]),this.i[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Wa(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){O(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){Wa(a, -b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){O(a,b)}}(this,b),!0):u.prototype.S.call(this,a,b,c,d)}};k.U=function(a,b,c,d){this.m=a;this.j=b;this.c=c;this.o=d;Xa(this);Ya(this)};k.T=function(a,b){if(!b)if(this.O&&Za(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};k.N=function(a){return a?this.save():!0};k.save=function(){var a=new P(this);a.set(0,[this.f,this.h,this.g]);return a.data()}; -k.restore=function(a){if(a=a[0])Q(this,this.f=a[0]),N(this,this.h=a[1]),$a(this,a[2]);return!0};k.mb=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}Ya(this);return!0};function ab(a,b,c){if(a=a.i[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Xa(a,b){for(var c in a.l)ab(a,c,null!=b?b:a.l[c])}function bb(a,b,c){if(a=a.i[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Ya(a){for(var b in a.a)bb(a,b,a.a[b][1])} -k.Wa=function(a,b,c){if(Wa(this,b)){if(c){var d=this;setTimeout(function(){O(d,b);a&&a()},+c);return!1}O(this,b)}return!0}; -k.pb=function(a,b){if("SR"==a){a=b;b=8;var c;if(a){b||(b=10);var d=a.charAt(0),e=0>>a.f].Ca(b&16383,b)}else a=this.c.ba(this.f);N(this,this.h=a)}};k.bb=function(a){a||this.c.b.u||Q(this,this.g)};k.ab=function(a){a?(this.s=!0,Xa(this,!0)):(this.s=!1,Xa(this),$a(this,0))};k.cb=function(a,b){this.g=a?this.g|1<c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.a["S"+b][1]=a.g&1<a;a++)this.a["S"+a]=[0,0,!1,!1,this.ab,a];this.o=this.c=this.l=this.m=null;this.exports={hold:this.Ua,toggle:this.ob,reset:this.kb, +set:this.nb};E(this)}r(Ua,u);k=Ua.prototype;k.reset=function(a){this.stop();a&&N(this,this.h=0)}; +k.S=function(a,b,c,d){if(this.m&&this.m.S(a,b,c,d)||this.c&&this.c.S(a,b,c,d))return!0;switch(b){case "PC":return this.i[b]=c,this.B++,!0;default:return"led"==a||"rled"==a?(this.i[b]=c,this.j[b]=d?1:0,this.B++,!0):"switch"==a?(void 0===this.a[b]&&(this.a[b]=[d?1:0,d?1:0]),this.i[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Wa(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){O(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){Wa(a, +b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){O(a,b)}}(this,b),!0):u.prototype.S.call(this,a,b,c,d)}};k.U=function(a,b,c,d){this.m=a;this.l=b;this.c=c;this.o=d;Xa(this);Ya(this)};k.T=function(a,b){if(!b)if(this.O&&Za(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};k.N=function(a){return a?this.save():!0};k.save=function(){var a=new P(this);a.set(0,[this.f,this.h,this.g]);return a.data()}; +k.restore=function(a){if(a=a[0])Q(this,this.f=a[0]),N(this,this.h=a[1]),$a(this,a[2]);return!0};k.kb=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}Ya(this);return!0};function ab(a,b,c){if(a=a.i[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Xa(a,b){for(var c in a.j)ab(a,c,null!=b?b:a.j[c])}function bb(a,b,c){if(a=a.i[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Ya(a){for(var b in a.a)bb(a,b,a.a[b][1])} +k.Ua=function(a,b,c){if(Wa(this,b)){if(c){var d=this;setTimeout(function(){O(d,b);a&&a()},+c);return!1}O(this,b)}return!0}; +k.nb=function(a,b){if("SR"==a){a=b;b=8;var c;if(a){b||(b=10);var d=a.charAt(0),e=0>>a.f];a.h++;b=c.a(b&16383,b);a.h--;a=b}else a=this.c.ba(this.f);N(this,this.h=a)}};k.$a=function(a){a||this.c.b.v||Q(this,this.g)};k.Za=function(a){a?(this.s=!0,Xa(this,!0)):(this.s=!1,Xa(this),$a(this,0))};k.ab=function(a,b){this.g=a?this.g|1<c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.a["S"+b][1]=a.g&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.f;0f&&(m=f);if(h&&h.size){if(h.type==d){if(e+f<=h.X)return h.sa+=h.X-e,h.X=e,!0;if(e>=h.X+h.sa){m=h.size-(e-l);m>f&&(m=f);h.sa=e-h.X+m;e=l+16384;f-=m;g++;continue}}return pb(qb,e,f)}e=new U(0,e,m,16384,d);mb(e,h);a.a[g++]=e;e=l+16384;f-=m}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+rb[d]+" at "+wa(b)),!0):pb(sb,b,c)}function kb(a,b,c){a.a[(b&a.g)>>>a.f].ua(c,b&16383,b)} -function nb(a){for(var b=0,c=[],d=0;d>>a.f;0f&&(m=f);if(h&&h.size){if(h.type==d){if(e+f<=h.X)return h.sa+=h.X-e,h.X=e,!0;if(e>=h.X+h.sa){m=h.size-(e-l);m>f&&(m=f);h.sa=e-h.X+m;e=l+16384;f-=m;g++;continue}}return pb(qb,e,f)}e=new U(a,e,m,16384,d);mb(e,h);a.a[g++]=e;e=l+16384;f-=m}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+rb[d]+" at "+wa(b)),!0):pb(sb,b,c)}function kb(a,b,c){var d=a.a[(b&a.g)>>>a.f];a.h++;d.m(c,b&16383,b);a.h--} +function nb(a){for(var b=0,c=[],d=0;d=c+d?a>>c&(1<=a.K&&(a.K+=a.ea,c=!0);0<=a.fa&&a.fa<=X(a)&&(a.ea=a.fa=-1,Fb(a),S(a),c=!0);c&&a.J(X(a)+" cycles: checksum="+F(a.ka))}} -k.S=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.i[b]=c,!0;case "run":return this.i[b]=c,c.onclick=function(){var a;if(a=d.m)if(a=d.m,a.b.w)a=!0;else{var b=null,c,h=y(a.id);for(c=0;ca.F/a.H&&(b=1);a.L=b;b=a.xa*a.L;if(a.H!=b){a.H=b;b=a.H.toFixed(2)+"Mhz";var d=a.i.setSpeed;d&&(d.textContent=b);a.J("target speed: "+b)}c&&a.m&&(c=a.m,c.Y&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.Y.focus(),window&&window.scrollTo(b,d)))}hb(a,a.h);a.h=0;a.g=w();a.s=0;Hb(a)}function Jb(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function Kb(a,b){var c=a.v-=a.A;a.A=0;b&&(a.v=0);return c} -k.nb=function(){if(this.b.u){this.ma>=this.za&&Hb(this,!0);this.O=0;this.ca=w();if(this.s){var a=this.ca-this.s;a>this.ya&&(this.g+=a,this.g>this.ca&&(this.g=this.ca))}try{do{for(var b,c=this.b.oa?1:this.ga,d=this.l.length-1;0<=d;d--){var e=this.l[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.va(b)}catch(f){if("number"!=typeof f)throw f;}b=Kb(this,!0);this.O+=b;this.h+=b;ib(this,b);gb(this,b);this.M-=b;if(0>=this.M){this.M+=this.ga;++this.Aa>=Lb&&(this.m&&T(this.m,void 0),this.Aa=0);break}}while(this.b.u)}catch(f){S(this); -this.m&&this.m.stop(w(),X(this));a=f.stack||f.message;this.b.error=!0;this.C(a);return}if(this.b.u){a=setTimeout;b=this.Ja;this.s=w();c=this.ya;this.O&&(c=Math.round(c*this.O/this.ga));c-=this.s-this.ca;if(d=this.s-this.g)this.F=Math.round(this.h/(10*d))/100,864E5<=d&&(this.B=0,Gb(this));if(0>c||this.Fc&&(this.g-=c),c=0;this.ma+=this.O;this.s+=c;a(b,c)}}}; -function R(a){var b;a.b.error?(a.J(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.b.u)a.J(a.toString()+" busy");else{Gb(a);a.b.u=!0;a.b.Da=!0;if(b=a.i.run)b.textContent="Halt";a.m&&a.m.start(a.g,X(a));a.o||a.status("Started");setTimeout(a.Ja,0)}}k.va=function(){return 0};function S(a){var b=!1;if(a.b.u){Kb(a);hb(a,a.h);a.h=0;a.b.u=!1;if(b=a.i.run)b.textContent="Run";a.m&&a.m.stop(w(),X(a));b=!0;a.o||a.status("Stopped")}a.b.complete=void 0;return b}var Ib=30,Lb=15,Db=["power","reset"]; -function Mb(a){var b=+a.model||1001;V.call(this,a,1E6);this.Sa=b;this.Ha=+a.addrReset||0;this.W=null;this.Ga=[];this.b.complete=!1}r(Mb,V);k=Mb.prototype;k.reset=function(){this.status("Model "+this.Sa);this.b.u&&S(this);this.V=this.f=this.Ka=this.Ha;this.a=0;this.ba=this.jb;this.ta=this.wb;this.W=null;Eb(this);this.b.error=!1;V.prototype.reset.call(this)};k.Ma=function(){return 0}; -k.save=function(){var a=new P(this);a.set(0,[this.f,this.Ka,this.V,this.a]);a.set(1,[]);a.set(2,[this.B,this.L,this.b.G]);a.set(3,Nb(this));a.set(4,Jb(this));return a.data()}; -k.restore=function(a){var b;b=a[0];ea();ba();ea();var c=b[Symbol.iterator];b=c?c.call(b):fa(b);this.f=b.next().value;this.Ka=b.next().value;this.V=b.next().value;this.a=b.next().value;b=a[2];this.B=b[0];Gb(this,b[1]);this.b.G=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.f].ba(a&16383,a)};k.wb=function(a,b){var c=this.j;a=this.V=a;c.a[(a&c.g)>>>c.f].ta(b,a&16383,a)}; -k.va=function(a){this.b.complete=!0;var b=a?this.b.Da?0:1:-1;this.b.Da=!1;this.v=this.A=a;this.a=this.a&-5|0;do{if(a=this.a)if(a=this.a&11)this.a&2?this.W||(this.a&=-3):this.a&1&&this.a++,a=!1;if(a){if(this.a&4&&this.o.h(this.f,b)){S(this);break}if(0>b)break}this.a&=15;a=this.f;this.ba(a);this.f=(a+1)%Sa}while(0>>f.f;0=c+d?a>>c&(1<=a.K&&(a.K+=a.ea,c=!0);0<=a.fa&&a.fa<=X(a)&&(a.ea=a.fa=-1,Fb(a),S(a),c=!0);c&&a.J(X(a)+" cycles: checksum="+F(a.ka))}} +k.S=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.i[b]=c,!0;case "run":return this.i[b]=c,c.onclick=function(){var a;if(a=d.m)if(a=d.m,a.b.w)a=!0;else{var b=null,c,h=y(a.id);for(c=0;ca.F/a.H&&(b=1);a.L=b;b=a.wa*a.L;if(a.H!=b){a.H=b;b=a.H.toFixed(2)+"Mhz";var d=a.i.setSpeed;d&&(d.textContent=b);a.J("target speed: "+b)}c&&a.m&&(c=a.m,c.Y&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.Y.focus(),window&&window.scrollTo(b,d)))}hb(a,a.h);a.h=0;a.g=w();a.s=0;Hb(a)}function Jb(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function Kb(a,b){var c=a.u-=a.A;a.A=0;b&&(a.u=0);return c} +k.lb=function(){if(this.b.v){this.ma>=this.ya&&Hb(this,!0);this.O=0;this.ca=w();if(this.s){var a=this.ca-this.s;a>this.xa&&(this.g+=a,this.g>this.ca&&(this.g=this.ca))}try{do{for(var b,c=this.b.oa?1:this.ga,d=this.j.length-1;0<=d;d--){var e=this.j[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.ua(b)}catch(f){if("number"!=typeof f)throw f;}b=Kb(this,!0);this.O+=b;this.h+=b;ib(this,b);gb(this,b);this.M-=b;if(0>=this.M){this.M+=this.ga;++this.za>=Lb&&(this.m&&T(this.m,void 0),this.za=0);break}}while(this.b.v)}catch(f){S(this); +this.m&&this.m.stop(w(),X(this));a=f.stack||f.message;this.b.error=!0;this.C(a);return}if(this.b.v){a=setTimeout;b=this.Ia;this.s=w();c=this.xa;this.O&&(c=Math.round(c*this.O/this.ga));c-=this.s-this.ca;if(d=this.s-this.g)this.F=Math.round(this.h/(10*d))/100,864E5<=d&&(this.B=0,Gb(this));if(0>c||this.Fc&&(this.g-=c),c=0;this.ma+=this.O;this.s+=c;a(b,c)}}}; +function R(a){var b;a.b.error?(a.J(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.b.v)a.J(a.toString()+" busy");else{Gb(a);a.b.v=!0;a.b.Ca=!0;if(b=a.i.run)b.textContent="Halt";a.m&&a.m.start(a.g,X(a));a.o||a.status("Started");setTimeout(a.Ia,0)}}k.ua=function(){return 0};function S(a){var b=!1;if(a.b.v){Kb(a);hb(a,a.h);a.h=0;a.b.v=!1;if(b=a.i.run)b.textContent="Run";a.m&&a.m.stop(w(),X(a));b=!0;a.o||a.status("Stopped")}a.b.complete=void 0;return b}var Ib=30,Lb=15,Db=["power","reset"]; +function Mb(a){var b=+a.model||1001;V.call(this,a,1E6);this.Qa=b;this.Ga=+a.addrReset||0;this.W=null;this.Fa=[];this.b.complete=!1}r(Mb,V);k=Mb.prototype;k.reset=function(){this.status("Model "+this.Qa);this.b.v&&S(this);this.V=this.f=this.Aa=this.Ga;this.a=0;this.ba=this.hb;this.ta=this.ub;this.W=null;Eb(this);this.b.error=!1;V.prototype.reset.call(this)};k.Ka=function(){return 0}; +k.save=function(){var a=new P(this);a.set(0,[this.f,this.Aa,this.V,this.a]);a.set(1,[]);a.set(2,[this.B,this.L,this.b.G]);a.set(3,Nb(this));a.set(4,Jb(this));return a.data()}; +k.restore=function(a){var b;b=a[0];ea();ba();ea();var c=b[Symbol.iterator];b=c?c.call(b):fa(b);this.f=b.next().value;this.Aa=b.next().value;this.V=b.next().value;this.a=b.next().value;b=a[2];this.B=b[0];Gb(this,b[1]);this.b.G=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.f].ba(a&16383,a)};k.ub=function(a,b){var c=this.l;a=this.V=a;c.a[(a&c.g)>>>c.f].ta(b,a&16383,a)}; +k.ua=function(a){this.b.complete=!0;var b=a?this.b.Ca?0:1:-1;this.b.Ca=!1;this.u=this.A=a;this.a=this.a&-5|0;do{if(a=this.a)if(a=this.a&11)this.a&2?this.W||(this.a&=-3):this.a&1&&this.a++,a=!1;if(a){if(this.a&4&&this.o.h(this.f,b)){S(this);break}if(0>b)break}this.a&=15;a=this.Aa=this.f;this.ba(a);this.f=(a+1)%Sa}while(0>>f.f;0>>=f.f;0>>a.f;0g&&g>=ja&&(g+=ia);g=Math.trunc(Math.abs(g))%ia;void 0===f&&(f=e.size);for(h=d;f--&&h=b.length)break;for(var l=l+2,n=b[l++]&255|(b[l++]&255)<<8,p=b[l++]&255|(b[l++]&255)<<8,m=m+((n&255)+(n>>8)+(p&255)+(p>>8)),M=l,qa=n-=6;0=b.length)break;m+=b[l++]&255;if(m&255)break;if(qa)for(;qa--;)kb(a.j,p++,b[M++]);else p&1?g=!0:null==d&&(d=p);h=!0}else l++;else l+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h=t.Ea&&c<=t.Ua&&(b=c-(t.Ea-t.Oa));b&&(a.preventDefault&&a.preventDefault(),d.ra(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==t.Qa&&(b=t.Pa);d.ra(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); -a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.ra(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.U=function(a,b,c,d){this.m=a;this.j=b;this.c=c;this.o=d;E(this)}; -k.Na=function(a){if(!this.a){var b=W(this.m,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ca(c[0]);if(d!=this.ia)return;c=Ca(c[1]);if(this.a=na(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.g);if(this.l=e.receiveData){this.g=a;this.status("Connected "+this.ja+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};k.T=function(a,b){if(!b)if(this.Na(this.g),!a)this.reset();else if(!this.restore(a))return!1;return!0}; -k.N=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){var a=new P(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};k.ra=function(a){if("number"==typeof a)this.f.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d>>a.f;0g&&g>=ja&&(g+=ia);g=Math.trunc(Math.abs(g))%ia;void 0===f&&(f=e.size);for(h=d;f--&&h=b.length)break;for(var l=l+2,n=b[l++]&255|(b[l++]&255)<<8,p=b[l++]&255|(b[l++]&255)<<8,m=m+((n&255)+(n>>8)+(p&255)+(p>>8)),M=l,qa=n-=6;0=b.length)break;m+=b[l++]&255;if(m&255)break;if(qa)for(;qa--;)kb(a.l,p++,b[M++]);else p&1?g=!0:null==d&&(d=p);h=!0}else l++;else l+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h=t.Da&&c<=t.Sa&&(b=c-(t.Da-t.Ma));b&&(a.preventDefault&&a.preventDefault(),d.ra(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==t.Oa&&(b=t.Na);d.ra(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); +a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.ra(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.U=function(a,b,c,d){this.m=a;this.l=b;this.c=c;this.o=d;E(this)}; +k.La=function(a){if(!this.a){var b=W(this.m,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ca(c[0]);if(d!=this.ia)return;c=Ca(c[1]);if(this.a=na(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.g);if(this.j=e.receiveData){this.g=a;this.status("Connected "+this.ja+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};k.T=function(a,b){if(!b)if(this.La(this.g),!a)this.reset();else if(!this.restore(a))return!1;return!0}; +k.N=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){var a=new P(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};k.ra=function(a){if("number"==typeof a)this.f.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d\nLicense: GPL version 3 or later ");for(b=0;b\nLicense: GPL version 3 or later ");for(b=0;bXb){if(Z(d,this.B)){this.l=new P(this,"1.34.0",fc);Z(this.l)&&(gc(this,d),a=hc,ic(this.l));this.l.set(cc,Da());jc(this.l);var e=this.a&&!this.A;if(a==dc||ma("Click OK to restore the previous "+L+" machine state, or CANCEL to reset the machine.")){if(c=bc(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Z(d,g):("error"==f&&"no machine state"!= -g?(this.C("Error: "+g),"unable to verify user"==g&&(Ia(kc,""),this.f=null)):this.J(f+": "+g),ic(d),Z(d)?(c=bc(d),e=!0):c=!1))}e&&$b(this,c?d:null)}else a==hc&&d.clear()}else $b(this);delete this.B;delete this.v}e=y(this.id);for(f=0;fa[1];a=a[2];this.M=!0;this.b.w=!0;var d=this.i.power;d&&(d.textContent="Shutdown");this.c&&(lc(this,this.c,b,c,a),T(this,-2),this.c.G());this.K&&(gc(this,b),b.clear());!c&&this.l&&(this.l.clear(),delete this.l);this.h=0}; +k.Z=function(a){void 0===a&&(a=this.a||(this.B?dc:Xb));if(!this.h){this.h++;var b=!1,c=!1;this.K=!1;var d=this.u||new P(this,"1.34.0");if(a==ec)b=!0;else if(a>Xb){if(Z(d,this.B)){this.j=new P(this,"1.34.0",fc);Z(this.j)&&(gc(this,d),a=hc,ic(this.j));this.j.set(cc,Da());jc(this.j);var e=this.a&&!this.A;if(a==dc||ma("Click OK to restore the previous "+L+" machine state, or CANCEL to reset the machine.")){if(c=bc(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Z(d,g):("error"==f&&"no machine state"!= +g?(this.C("Error: "+g),"unable to verify user"==g&&(Ia(kc,""),this.f=null)):this.J(f+": "+g),ic(d),Z(d)?(c=bc(d),e=!0):c=!1))}e&&$b(this,c?d:null)}else a==hc&&d.clear()}else $b(this);delete this.B;delete this.u}e=y(this.id);for(f=0;fa[1];a=a[2];this.M=!0;this.b.w=!0;var d=this.i.power;d&&(d.textContent="Shutdown");this.c&&(lc(this,this.c,b,c,a),T(this,-2),this.c.G());this.K&&(gc(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.h=0}; function gc(a,b){if(ma("There may be a problem with your "+L+" machine.\n\nTo help us diagnose it, click OK to send this "+L+" machine state to http://www.pcjs.org.")){var c=a.W;a=a.f||"";b=b.toString();var d={};d.app=L;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;H("http://www.pcjs.org/api/v1/report",d,!0)}} -function mc(a,b,c){var d,e="none";if(a.h)return null;a.h--;var f=new P(a,"1.34.0"),g=new P(a,"1.34.0",ac),h=Da();g.set(cc,h);f.set(cc,h);f.set(nc,"1.34.0");f.set(oc,window?window.location.href:null);f.set(pc,window?window.navigator.userAgent:"");a.c&&a.c.N&&(c&&(b&&(a.c.b.G=a.c.b.u),S(a.c)),d=a.c.N(b,c),"object"===typeof d&&f.set(a.c.id,d),c&&(a.c.b.w=!1,!1===d&&(e=null)));for(var h=y(a.id),l=0;l=d||30<=(c.wa+=d))&&(e.textContent=c.b.u?c.F.toFixed(2)+"Mhz":"Stopped",c.wa=0)}if(a.g&&(a=a.g,b=b||0,a.B)){c=a.c.b.u;d=!!(a.c.a&8);if(0>=b||60<=(a.A+=b)){e=a.c.f;if(a.i.PC){var f=a.o&&a.o.l||8,e=e||0,e=8==f?wa(e,void 0):F(e,void 0);a.i.PC.textContent!=e&&(a.i.PC.textContent=e)}a.A=0}-1>b?a.f=a.c.f:0=d||30<=(c.va+=d))&&(e.textContent=c.b.v?c.F.toFixed(2)+"Mhz":"Stopped",c.va=0)}if(a.g&&(a=a.g,b=b||0,a.B)){c=a.c.b.v;d=!!(a.c.a&8);if(0>=b||60<=(a.A+=b)){e=a.c.f;if(a.i.PC){var f=a.o&&a.o.j||8,e=e||0,e=8==f?wa(e,void 0):F(e,void 0);a.i.PC.textContent!=e&&(a.i.PC.textContent=e)}a.A=0}-1>b?a.f=a.c.f:0g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"),