Making some headway on the PDP-11 debugger (finally)

This commit is contained in:
Jeff Parsons 2016-09-16 14:53:05 -07:00
commit d8856ac8bd
7 changed files with 454 additions and 357 deletions

View file

@ -195,7 +195,6 @@ if (DEBUGGER) {
'c': "clear output", 'c': "clear output",
'd [#]': "dump memory", // additional syntax: d [#] [l#], where l# is a number of bytes to dump 'd [#]': "dump memory", // additional syntax: d [#] [l#], where l# is a number of bytes to dump
'e [#]': "edit memory", 'e [#]': "edit memory",
'f': "frequencies",
'g [#]': "go [to #]", 'g [#]': "go [to #]",
'h': "halt", 'h': "halt",
'if': "eval expression", 'if': "eval expression",
@ -215,17 +214,41 @@ if (DEBUGGER) {
}; };
/* /*
* CPU instruction ordinals * CPU opcode ordinals
*/ */
DebuggerPDP11.INS = { DebuggerPDP11.OPS = {
NONE: 0 NONE: 0, ADC: 1, ADCB: 2, ADD: 3, ASL: 4, ASLB: 5, ASR: 6, ASRB: 7,
BCC: 8, BCS: 9, BEQ: 10, BGE: 11, BGT: 12, BHI: 13, BIC: 14, BICB: 15,
BIS: 16, BISB: 17, BIT: 18, BITB: 19, BLE: 20, BLOS: 21, BLT: 22, BMI: 23,
BNE: 24, BPL: 25, BPT: 26, BR: 27, BVC: 28, BVS: 29, CCC: 30, CLC: 31,
CLCN: 32, CLCV: 32, CLCVN: 33, CLCVZ: 34, CLCZ: 35, CLCZN: 36, CLN: 37, CLR: 38,
CLRB: 40, CLV: 41, CLVN: 42, CLVZ: 43, CLVZN: 44, CLZ: 45, CLZN: 46, CMP: 47,
CMPB: 48, COM: 49, COMB: 50, DEC: 51, DECB: 52, INC: 53, INCB: 54, HALT: 55,
JMP: 56, JSR: 57, MARK: 58, MFPD: 59, MFPI: 60, MFPS: 61, MOV: 62, MOVB: 63,
MTPD: 64, MTPI: 65, MTPS: 66, NEG: 67, NEGB: 68, NOP: 69, RESET: 70, ROL: 71,
ROLB: 72, ROR: 73, RORB: 74, RTI: 75, RTS: 76, SBC: 77, SBCB: 78, SCC: 79,
SEC: 80, SECN: 81, SECV: 82, SECVN: 83, SECVZ: 84, SECZ: 85, SECZN: 86, SEN: 87,
SEV: 88, SEVN: 89, SEVZ: 90, SEVZN: 91, SEZ: 92, SEZN: 93, SUB: 94, SWAB: 95,
SXT: 96, TST: 97, TSTB: 98, WAIT: 99
}; };
/* /*
* CPU instruction names (mnemonics), indexed by CPU instruction ordinal (above) * CPU opcode names, indexed by CPU opcode ordinal (above)
*/ */
DebuggerPDP11.INS_NAMES = [ DebuggerPDP11.OPNAMES = [
"NONE" "NONE", "ADC", "ADCB", "ADD", "ASL", "ASLB", "ASR", "ASRB",
"BCC", "BCS", "BEQ", "BGE", "BGT", "BHI", "BIC", "BICB",
"BIS", "BISB", "BIT", "BITB", "BLE", "BLOS", "BLT", "BMI",
"BNE", "BPL", "BPT", "BR", "BVC", "BVS", "CCC", "CLC",
"CLCN", "CLCV", "CLCVN", "CLCVZ", "CLCZ", "CLCZN", "CLN", "CLR",
"CLRB", "CLV", "CLVN", "CLVZ", "CLVZN", "CLZ", "CLZN", "CMP",
"CMPB", "COM", "COMB", "DEC", "DECB", "INC", "INCB", "HALT",
"JMP", "JSR", "MARK", "MFPD", "MFPI", "MFPS", "MOV", "MOVB",
"MTPD", "MTPI", "MTPS", "NEG", "NEGB", "NOP", "RESET", "ROL",
"ROLB", "ROR", "RORB", "RTI", "RTS", "SBC", "SBCB", "SCC",
"SEC", "SECN", "SECV", "SECVN", "SECVZ", "SECZ", "SECZN", "SEN",
"SEV", "SEVN", "SEVZ", "SEVZN", "SEZ", "SEZN", "SUB", "SWAB",
"SXT", "TST", "TSTB", "WAIT"
]; ];
DebuggerPDP11.REG_PC = 0x0C; DebuggerPDP11.REG_PC = 0x0C;
@ -235,68 +258,152 @@ if (DEBUGGER) {
"PC", "PSW" "PC", "PSW"
]; ];
/* DebuggerPDP11.MODE_REG = 0x0; // REGISTER (register is operand)
* Operand type descriptor masks and definitions DebuggerPDP11.MODE_REGD = 0x1; // REGISTER DEFERRED (register is address of operand)
*/ DebuggerPDP11.MODE_POSTINC = 0x2; // POST-INCREMENT (register is address of operand, register incremented)
DebuggerPDP11.TYPE_SIZE = 0x000F; // size field DebuggerPDP11.MODE_POSTINCD = 0x3; // POST-INCREMENT DEFERRED (register is address of address of operand, register incremented)
DebuggerPDP11.TYPE_MODE = 0x00F0; // mode field DebuggerPDP11.MODE_PREDEC = 0x4; // PRE-DECREMENT (register decremented, register is address of operand)
DebuggerPDP11.TYPE_IREG = 0x0F00; // implied register field DebuggerPDP11.MODE_PREDECD = 0x5; // PRE-DECREMENT DEFERRED (register decremented, register is address of address of operand)
DebuggerPDP11.TYPE_OTHER = 0xF000; // "other" field DebuggerPDP11.MODE_INDEX = 0x6; // INDEX (register + next word is address of operand)
DebuggerPDP11.MODE_INDEXD = 0x7; // INDEX DEFERRED (register + next word is address of address of operand)
/* /*
* TYPE_SIZE values * Operand descriptor masks
*/ */
DebuggerPDP11.TYPE_NONE = 0x0000; // (all other TYPE fields ignored) DebuggerPDP11.TYPE_DSTREG = 0x0007;
DebuggerPDP11.TYPE_BYTE = 0x0001; // byte, regardless of operand size DebuggerPDP11.TYPE_DSTMOD = 0x0038;
DebuggerPDP11.TYPE_SBYTE = 0x0002; // byte sign-extended to word DebuggerPDP11.TYPE_DST = (DebuggerPDP11.TYPE_DSTMOD | DebuggerPDP11.TYPE_DSTREG);
DebuggerPDP11.TYPE_WORD = 0x0003; // word (16-bit value) DebuggerPDP11.TYPE_SRCREG = 0x01C0;
DebuggerPDP11.TYPE_SRCMOD = 0x0E00;
DebuggerPDP11.TYPE_SRC = (DebuggerPDP11.TYPE_SRCMOD | DebuggerPDP11.TYPE_SRCREG);
DebuggerPDP11.TYPE_BRANCH = 0x1000;
/* /*
* TYPE_MODE values * The opMasks table contains opcode masks, and each mask refers to table of possible values,
*/ * and each value refers to an array that contains:
DebuggerPDP11.TYPE_REG = 0x0010; // register
DebuggerPDP11.TYPE_IMM = 0x0020; // immediate data
DebuggerPDP11.TYPE_ADDR = 0x0033; // immediate (word) address
DebuggerPDP11.TYPE_MEM = 0x0040; // memory reference
DebuggerPDP11.TYPE_INT = 0x0080; // interrupt level encoded in instruction (bits 3-5)
/*
* TYPE_IREG values, based on the REG_* constants.
* *
* Note that TYPE_M isn't really a register, just an alternative form of TYPE_HL | TYPE_MEM. * [0]: {number} of the opcode name (see OP.*)
*/ * [1]: {number} containing the first operand descriptor bit(s), if any
DebuggerPDP11.TYPE_PC = (DebuggerPDP11.REG_PC << 8 | DebuggerPDP11.TYPE_REG | DebuggerPDP11.TYPE_WORD); * [2]: {number} containing the second operand descriptor bit(s), if any
DebuggerPDP11.TYPE_PSW = (DebuggerPDP11.REG_PSW<< 8 | DebuggerPDP11.TYPE_REG | DebuggerPDP11.TYPE_WORD);
/*
* TYPE_OTHER bit definitions
*/
DebuggerPDP11.TYPE_IN = 0x1000; // operand is input
DebuggerPDP11.TYPE_OUT = 0x2000; // operand is output
DebuggerPDP11.TYPE_BOTH = (DebuggerPDP11.TYPE_IN | DebuggerPDP11.TYPE_OUT);
DebuggerPDP11.TYPE_UNDOC = 0x8000; // opcode is an undocumented alternative encoding
/*
* The aaOpDescs array is indexed by opcode, and each element is a sub-array (aOpDesc) that describes
* the corresponding opcode. The sub-elements are as follows:
*
* [0]: {number} of the opcode name (see INS.*)
* [1]: {number} containing the destination operand descriptor bit(s), if any
* [2]: {number} containing the source operand descriptor bit(s), if any
* [3]: {number} containing the occasional third operand descriptor bit(s), if any
* *
* These sub-elements are all optional. If [0] is not present, the opcode is undefined; if [1] is not * These sub-elements are all optional. If [0] is not present, the opcode is undefined; if [1] is not
* present (or contains zero), the opcode has no (or only implied) operands; if [2] is not present, the * present (or contains zero), the opcode has no (or only implied) operands; if [2] is not present, the
* opcode has only a single operand. And so on. * opcode has only a single operand. And so on.
*
* Additional default rules:
*
* 1) If no TYPE_OTHER bits are specified for the first (destination) operand, TYPE_OUT is assumed;
* 2) If no TYPE_OTHER bits are specified for the second (source) operand, TYPE_IN is assumed;
* 3) If no size is specified for the second operand, the size is assumed to match the first operand.
*/ */
DebuggerPDP11.aaOpDescs = [ DebuggerPDP11.opMasks = {
]; 0xF000: {
0x1000: [DebuggerPDP11.OPS.MOV, DebuggerPDP11.TYPE_SRC, DebuggerPDP11.TYPE_DST],
0x2000: [DebuggerPDP11.OPS.CMP, DebuggerPDP11.TYPE_SRC, DebuggerPDP11.TYPE_DST],
0x3000: [DebuggerPDP11.OPS.BIT, DebuggerPDP11.TYPE_SRC, DebuggerPDP11.TYPE_DST],
0x4000: [DebuggerPDP11.OPS.BIC, DebuggerPDP11.TYPE_SRC, DebuggerPDP11.TYPE_DST],
0x5000: [DebuggerPDP11.OPS.BIS, DebuggerPDP11.TYPE_SRC, DebuggerPDP11.TYPE_DST],
0x6000: [DebuggerPDP11.OPS.ADD, DebuggerPDP11.TYPE_SRC, DebuggerPDP11.TYPE_DST],
0x9000: [DebuggerPDP11.OPS.MOVB, DebuggerPDP11.TYPE_SRC, DebuggerPDP11.TYPE_DST],
0xA000: [DebuggerPDP11.OPS.CMPB, DebuggerPDP11.TYPE_SRC, DebuggerPDP11.TYPE_DST],
0xB000: [DebuggerPDP11.OPS.BITB, DebuggerPDP11.TYPE_SRC, DebuggerPDP11.TYPE_DST],
0xC000: [DebuggerPDP11.OPS.BICB, DebuggerPDP11.TYPE_SRC, DebuggerPDP11.TYPE_DST],
0xD000: [DebuggerPDP11.OPS.BISB, DebuggerPDP11.TYPE_SRC, DebuggerPDP11.TYPE_DST],
0xE000: [DebuggerPDP11.OPS.SUB, DebuggerPDP11.TYPE_SRC, DebuggerPDP11.TYPE_DST]
},
0xFE00: {
0x0800: [DebuggerPDP11.OPS.JSR, DebuggerPDP11.TYPE_SRCREG, DebuggerPDP11.TYPE_DST]
},
0xFF00: {
0x0100: [DebuggerPDP11.OPS.BR, DebuggerPDP11.TYPE_BRANCH],
0x0200: [DebuggerPDP11.OPS.BNE, DebuggerPDP11.TYPE_BRANCH],
0x0300: [DebuggerPDP11.OPS.BEQ, DebuggerPDP11.TYPE_BRANCH],
0x0400: [DebuggerPDP11.OPS.BGE, DebuggerPDP11.TYPE_BRANCH],
0x0500: [DebuggerPDP11.OPS.BLT, DebuggerPDP11.TYPE_BRANCH],
0x0600: [DebuggerPDP11.OPS.BGT, DebuggerPDP11.TYPE_BRANCH],
0x0700: [DebuggerPDP11.OPS.BLE, DebuggerPDP11.TYPE_BRANCH],
0x8000: [DebuggerPDP11.OPS.BPL, DebuggerPDP11.TYPE_BRANCH],
0x8100: [DebuggerPDP11.OPS.BMI, DebuggerPDP11.TYPE_BRANCH],
0x8200: [DebuggerPDP11.OPS.BHI, DebuggerPDP11.TYPE_BRANCH],
0x8300: [DebuggerPDP11.OPS.BLOS, DebuggerPDP11.TYPE_BRANCH],
0x8400: [DebuggerPDP11.OPS.BVC, DebuggerPDP11.TYPE_BRANCH],
0x8500: [DebuggerPDP11.OPS.BVS, DebuggerPDP11.TYPE_BRANCH],
0x8600: [DebuggerPDP11.OPS.BCC, DebuggerPDP11.TYPE_BRANCH],
0x8700: [DebuggerPDP11.OPS.BCS, DebuggerPDP11.TYPE_BRANCH]
},
0xFFC0: {
0x0010: [DebuggerPDP11.OPS.JMP, DebuggerPDP11.TYPE_DST],
0x00C0: [DebuggerPDP11.OPS.SWAB, DebuggerPDP11.TYPE_DST],
0x0480: [DebuggerPDP11.OPS.INC, DebuggerPDP11.TYPE_DST],
0x0A00: [DebuggerPDP11.OPS.CLR, DebuggerPDP11.TYPE_DST],
0x0A40: [DebuggerPDP11.OPS.COM, DebuggerPDP11.TYPE_DST],
0x0AC0: [DebuggerPDP11.OPS.DEC, DebuggerPDP11.TYPE_DST],
0x0B00: [DebuggerPDP11.OPS.NEG, DebuggerPDP11.TYPE_DST],
0x0B40: [DebuggerPDP11.OPS.ADC, DebuggerPDP11.TYPE_DST],
0x0B80: [DebuggerPDP11.OPS.SBC, DebuggerPDP11.TYPE_DST],
0x0BC0: [DebuggerPDP11.OPS.TST, DebuggerPDP11.TYPE_DST],
0x0C00: [DebuggerPDP11.OPS.ROR, DebuggerPDP11.TYPE_DST],
0x0C40: [DebuggerPDP11.OPS.ROL, DebuggerPDP11.TYPE_DST],
0x0C80: [DebuggerPDP11.OPS.ASR, DebuggerPDP11.TYPE_DST],
0x0CC0: [DebuggerPDP11.OPS.ASL, DebuggerPDP11.TYPE_DST],
0x0D00: [DebuggerPDP11.OPS.MARK, DebuggerPDP11.TYPE_DST],
0x0D40: [DebuggerPDP11.OPS.MFPI, DebuggerPDP11.TYPE_DST],
0x0D80: [DebuggerPDP11.OPS.MTPI, DebuggerPDP11.TYPE_DST],
0x0DC0: [DebuggerPDP11.OPS.SXT, DebuggerPDP11.TYPE_DST],
0x8480: [DebuggerPDP11.OPS.INCB, DebuggerPDP11.TYPE_DST],
0x8A00: [DebuggerPDP11.OPS.CLRB, DebuggerPDP11.TYPE_DST],
0x8A40: [DebuggerPDP11.OPS.COMB, DebuggerPDP11.TYPE_DST],
0x8AC0: [DebuggerPDP11.OPS.DECB, DebuggerPDP11.TYPE_DST],
0x8B00: [DebuggerPDP11.OPS.NEGB, DebuggerPDP11.TYPE_DST],
0x8B40: [DebuggerPDP11.OPS.ADCB, DebuggerPDP11.TYPE_DST],
0x8B80: [DebuggerPDP11.OPS.SBCB, DebuggerPDP11.TYPE_DST],
0x8BC0: [DebuggerPDP11.OPS.TSTB, DebuggerPDP11.TYPE_DST],
0x8C00: [DebuggerPDP11.OPS.RORB, DebuggerPDP11.TYPE_DST],
0x8C40: [DebuggerPDP11.OPS.ROLB, DebuggerPDP11.TYPE_DST],
0x8C80: [DebuggerPDP11.OPS.ASRB, DebuggerPDP11.TYPE_DST],
0x8CC0: [DebuggerPDP11.OPS.ASLB, DebuggerPDP11.TYPE_DST],
0x8D00: [DebuggerPDP11.OPS.MTPS, DebuggerPDP11.TYPE_DST], // only on LSI-11
0x8D40: [DebuggerPDP11.OPS.MFPD, DebuggerPDP11.TYPE_DST], // same as MFPI if no separate instruction/data spaces
0x8D80: [DebuggerPDP11.OPS.MTPD, DebuggerPDP11.TYPE_DST], // same as MTPI if no separate instruction/data spaces
0x8DC0: [DebuggerPDP11.OPS.MFPS, DebuggerPDP11.TYPE_DST] // only on LSI-11
},
0xFFF8: {
0x0080: [DebuggerPDP11.OPS.RTS, DebuggerPDP11.TYPE_SRCREG]
},
0xFFFF: {
0x0000: [DebuggerPDP11.OPS.HALT],
0x0001: [DebuggerPDP11.OPS.WAIT],
0x0002: [DebuggerPDP11.OPS.RTI],
0x0004: [DebuggerPDP11.OPS.BPT],
0x0005: [DebuggerPDP11.OPS.RESET],
0x00A0: [DebuggerPDP11.OPS.NOP],
0x00A1: [DebuggerPDP11.OPS.CLC],
0x00A2: [DebuggerPDP11.OPS.CLV],
0x00A3: [DebuggerPDP11.OPS.CLCV],
0x00A4: [DebuggerPDP11.OPS.CLZ],
0x00A5: [DebuggerPDP11.OPS.CLCZ],
0x00A6: [DebuggerPDP11.OPS.CLVZ],
0x00A7: [DebuggerPDP11.OPS.CLCVZ],
0x00A8: [DebuggerPDP11.OPS.CLN],
0x00A9: [DebuggerPDP11.OPS.CLCN],
0x00AA: [DebuggerPDP11.OPS.CLVN],
0x00AB: [DebuggerPDP11.OPS.CLCVN],
0x00AC: [DebuggerPDP11.OPS.CLZN],
0x00AD: [DebuggerPDP11.OPS.CLCZN],
0x00AE: [DebuggerPDP11.OPS.CLVZN],
0x00AF: [DebuggerPDP11.OPS.CCC], // aka CLCVZN
0x00B0: [DebuggerPDP11.OPS.NOP],
0x00B1: [DebuggerPDP11.OPS.SEC],
0x00B2: [DebuggerPDP11.OPS.SEV],
0x00B3: [DebuggerPDP11.OPS.SECV],
0x00B4: [DebuggerPDP11.OPS.SEZ],
0x00B5: [DebuggerPDP11.OPS.SECZ],
0x00B6: [DebuggerPDP11.OPS.SEVZ],
0x00B7: [DebuggerPDP11.OPS.SECVZ],
0x00B8: [DebuggerPDP11.OPS.SEN],
0x00B9: [DebuggerPDP11.OPS.SECN],
0x00BA: [DebuggerPDP11.OPS.SEVN],
0x00BB: [DebuggerPDP11.OPS.SECVN],
0x00BC: [DebuggerPDP11.OPS.SEZN],
0x00BD: [DebuggerPDP11.OPS.SECZN],
0x00BE: [DebuggerPDP11.OPS.SEVZN],
0x00BF: [DebuggerPDP11.OPS.SCC] // aka SECVZN
}
};
DebuggerPDP11.HISTORY_LIMIT = DEBUG? 100000 : 1000; DebuggerPDP11.HISTORY_LIMIT = DEBUG? 100000 : 1000;
@ -321,7 +428,7 @@ if (DEBUGGER) {
var sMessages = cmp.getMachineParm('messages'); var sMessages = cmp.getMachineParm('messages');
if (sMessages) this.messageInit(sMessages); if (sMessages) this.messageInit(sMessages);
this.aaOpDescs = DebuggerPDP11.aaOpDescs; this.opMasks = DebuggerPDP11.opMasks;
this.messageDump(MessagesPDP11.BUS, function onDumpBus(asArgs) { dbg.dumpBus(asArgs); }); this.messageDump(MessagesPDP11.BUS, function onDumpBus(asArgs) { dbg.dumpBus(asArgs); });
@ -1492,7 +1599,7 @@ if (DEBUGGER) {
* checkInstruction(addr, nState) * checkInstruction(addr, nState)
* *
* This "check" function is called by the CPU to inform us about the next instruction to be executed, * This "check" function is called by the CPU to inform us about the next instruction to be executed,
* giving us an opportunity to look for "exec" breakpoints and update opcode frequencies and instruction history. * giving us an opportunity to look for "exec" breakpoints and update opcode instruction history.
* *
* @this {DebuggerPDP11} * @this {DebuggerPDP11}
* @param {number} addr * @param {number} addr
@ -1520,9 +1627,8 @@ if (DEBUGGER) {
*/ */
if (nState >= 0 && this.aaOpcodeCounts.length) { if (nState >= 0 && this.aaOpcodeCounts.length) {
this.cOpcodes++; this.cOpcodes++;
var bOpcode = this.bus.getByteDirect(addr); var opCode = this.bus.getShortDirect(addr);
if (bOpcode != null) { if (opCode != null) {
this.aaOpcodeCounts[bOpcode][1]++;
var dbgAddr = this.aOpcodeHistory[this.iOpcodeHistory]; var dbgAddr = this.aOpcodeHistory[this.iOpcodeHistory];
this.setAddr(dbgAddr, cpu.getPC()); this.setAddr(dbgAddr, cpu.getPC());
if (DEBUG) dbgAddr.cycleCount = cpu.getCycles(); if (DEBUG) dbgAddr.cycleCount = cpu.getCycles();
@ -1804,8 +1910,8 @@ if (DEBUGGER) {
DebuggerPDP11.prototype.checkBreakpoint = function(addr, nb, aBreak, fTemporary) DebuggerPDP11.prototype.checkBreakpoint = function(addr, nb, aBreak, fTemporary)
{ {
/* /*
* Time to check for execution breakpoints; note that this should be done BEFORE updating frequency * Time to check for execution breakpoints; note that this should be done BEFORE updating
* or history data (see checkInstruction), since we might not actually execute the current instruction. * history data (see checkInstruction), since we might not actually execute the current instruction.
*/ */
var fBreak = false; var fBreak = false;
@ -1889,6 +1995,8 @@ if (DEBUGGER) {
/** /**
* getInstruction(dbgAddr, sComment, nSequence) * getInstruction(dbgAddr, sComment, nSequence)
* *
* Get the next instruction, by decoding the opcode and any operands.
*
* @this {DebuggerPDP11} * @this {DebuggerPDP11}
* @param {DbgAddrPDP11} dbgAddr * @param {DbgAddrPDP11} dbgAddr
* @param {string} [sComment] is an associated comment * @param {string} [sComment] is an associated comment
@ -1897,72 +2005,50 @@ if (DEBUGGER) {
*/ */
DebuggerPDP11.prototype.getInstruction = function(dbgAddr, sComment, nSequence) DebuggerPDP11.prototype.getInstruction = function(dbgAddr, sComment, nSequence)
{ {
var dbgAddrIns = this.newAddr(dbgAddr.addr); var opNames = DebuggerPDP11.OPNAMES;
var dbgAddrOp = this.newAddr(dbgAddr.addr);
var opCode = this.getWord(dbgAddr, true);
var bOpcode = this.getByte(dbgAddr, 1); var opDesc;
for (var mask in this.opMasks) {
var asOpcodes = DebuggerPDP11.INS_NAMES; var opMask = this.opMasks[mask];
var aOpDesc = this.aaOpDescs[bOpcode] || [DebuggerPDP11.INS.NONE]; var bits = opCode & mask;
var iIns = aOpDesc[0]; opDesc = opMask[bits];
if (opDesc) break;
}
if (!opDesc) opDesc = [DebuggerPDP11.OPS.NONE];
var sOperands = ""; var sOperands = "";
var sOpcode = asOpcodes[iIns]; var sOpName = opNames[opDesc[0]];
var cOperands = aOpDesc.length - 1; var cOperands = opDesc.length - 1;
var typeSizeDefault = DebuggerPDP11.TYPE_NONE, type;
for (var iOperand = 1; iOperand <= cOperands; iOperand++) { for (var iOperand = 1; iOperand <= cOperands; iOperand++) {
var disp, off, cch; var type = opDesc[iOperand];
var sOperand = "";
type = aOpDesc[iOperand];
if (type === undefined) continue; if (type === undefined) continue;
var typeMode = type & DebuggerPDP11.TYPE_MODE; var sOperand = this.getOperand(opCode, type, dbgAddr);
if (!typeMode) continue;
var typeSize = type & DebuggerPDP11.TYPE_SIZE;
if (!typeSize) {
type |= typeSizeDefault;
} else {
typeSizeDefault = typeSize;
}
var typeOther = type & DebuggerPDP11.TYPE_OTHER;
if (!typeOther) {
type |= (iOperand == 1? DebuggerPDP11.TYPE_OUT : DebuggerPDP11.TYPE_IN);
}
if (typeMode & DebuggerPDP11.TYPE_IMM) {
sOperand = this.getImmOperand(type, dbgAddr);
}
else if (typeMode & DebuggerPDP11.TYPE_REG) {
sOperand = this.getRegOperand((type & DebuggerPDP11.TYPE_IREG) >> 8, type, dbgAddr);
}
else if (typeMode & DebuggerPDP11.TYPE_INT) {
sOperand = ((bOpcode >> 3) & 0x7).toString();
}
if (!sOperand || !sOperand.length) { if (!sOperand || !sOperand.length) {
sOperands = "INVALID"; sOperands = "INVALID";
break; break;
} }
if (sOperands.length > 0) sOperands += ','; if (sOperands.length > 0) sOperands += ',';
sOperands += (sOperand || "???"); sOperands += (sOperand || "???");
} }
var sBytes = ""; var sBytes = "";
var sLine = this.toHexAddr(dbgAddrIns) + ' '; var sLine = this.toHexAddr(dbgAddrOp) + ' ';
if (dbgAddrIns.addr !== PDP11.ADDR_INVALID && dbgAddr.addr !== PDP11.ADDR_INVALID) { if (dbgAddrOp.addr !== PDP11.ADDR_INVALID && dbgAddr.addr !== PDP11.ADDR_INVALID) {
do { do {
sBytes += str.toHex(this.getByte(dbgAddrIns, 1), 2); sBytes += str.toHex(this.getByte(dbgAddrOp, 1), 2);
if (dbgAddrIns.addr == null) break; if (dbgAddrOp.addr == null) break;
} while (dbgAddrIns.addr != dbgAddr.addr); } while (dbgAddrOp.addr != dbgAddr.addr);
} }
sLine += str.pad(sBytes, 10); sLine += str.pad(sBytes, 10);
sLine += (type & DebuggerPDP11.TYPE_UNDOC)? '*' : ' '; sLine += str.pad(sOpName, 7);
sLine += str.pad(sOpcode, 7);
if (sOperands) sLine += ' ' + sOperands; if (sOperands) sLine += ' ' + sOperands;
if (sComment) { if (sComment) {
@ -1978,35 +2064,92 @@ if (DEBUGGER) {
}; };
/** /**
* getImmOperand(type, dbgAddr) * getOperand(opCode, type, dbgAddr)
* *
* @this {DebuggerPDP11} * @this {DebuggerPDP11}
* @param {number} opCode
* @param {number} type * @param {number} type
* @param {DbgAddrPDP11} dbgAddr * @param {DbgAddrPDP11} dbgAddr
* @return {string} operand * @return {string} operand
*/ */
DebuggerPDP11.prototype.getImmOperand = function(type, dbgAddr) DebuggerPDP11.prototype.getOperand = function(opCode, type, dbgAddr)
{ {
var sOperand = ' '; var sOperand = "";
var typeSize = type & DebuggerPDP11.TYPE_SIZE; if (type & DebuggerPDP11.TYPE_BRANCH) {
var disp = ((opCode & 0xff) << 24) >> 24;
switch (typeSize) { var addr = (dbgAddr.addr + disp) & 0xffff;
case DebuggerPDP11.TYPE_BYTE: sOperand = str.toHexWord(addr);
sOperand = str.toHex(this.getByte(dbgAddr, 1), 2);
break;
case DebuggerPDP11.TYPE_SBYTE:
sOperand = str.toHex((this.getByte(dbgAddr, 1) << 24) >> 24, 4);
break;
case DebuggerPDP11.TYPE_WORD:
sOperand = str.toHex(this.getShort(dbgAddr, 2), 4);
break;
default:
return "imm(" + str.toHexWord(type) + ')';
} }
if (type & DebuggerPDP11.TYPE_MEM) { else {
sOperand = '[' + sOperand + ']'; /*
} else if (!(type & DebuggerPDP11.TYPE_REG)) { * Isolate all SRC or DST bits from opcode in the mode variable.
sOperand = "0x" + sOperand; */
var mode = opCode & type;
/*
* Convert SRC bits into DST bits, since they use the same format.
*/
if (type & DebuggerPDP11.TYPE_SRC) {
mode >>= 6;
type >>= 6;
}
if (type & DebuggerPDP11.TYPE_DST) {
var wIndex;
var reg = mode & DebuggerPDP11.TYPE_DSTREG;
/*
* Note that opcodes that specify only REG bits in the type mask (ie, no MOD bits)
* will automatically default to MODE_REG below.
*/
switch(mode & DebuggerPDP11.TYPE_DSTMOD) {
case DebuggerPDP11.MODE_REG: // 0x0: REGISTER
sOperand = "R" + reg;
break;
case DebuggerPDP11.MODE_REGD: // 0x1: REGISTER DEFERRED
sOperand = "@R" + reg;
break;
case DebuggerPDP11.MODE_POSTINC: // 0x2: POST-INCREMENT
if (reg < 7) {
sOperand = "(R" + reg + ")+";
} else {
/*
* When using R7 (aka PC), POST-INCREMENT is known as IMMEDIATE
*/
wIndex = this.getWord(dbgAddr, true);
sOperand = "#" + str.toHexWord(wIndex);
}
break;
case DebuggerPDP11.MODE_POSTINCD: // 0x3: POST-INCREMENT DEFERRED
if (reg < 7) {
sOperand = "@(R" + reg + ")+";
} else {
/*
* When using R7 (aka PC), POST-INCREMENT DEFERRED is known as ABSOLUTE
*/
wIndex = this.getWord(dbgAddr, true);
sOperand = "@#" + str.toHexWord(wIndex);
}
break;
case DebuggerPDP11.MODE_PREDEC: // 0x4: PRE-DECREMENT
sOperand = "-(R" + reg + ")";
break;
case DebuggerPDP11.MODE_PREDECD: // 0x5: PRE-DECREMENT DEFERRED
sOperand = "@-R(" + reg + ")";
break;
case DebuggerPDP11.MODE_INDEX: // 0x6: INDEX
wIndex = this.getWord(dbgAddr, true);
/*
* When using R7 (aka PC), INDEX is known as RELATIVE
*/
sOperand = str.toHexWord(wIndex) + (reg < 7? "(R" + reg + ")" : "(PC)");
break;
case DebuggerPDP11.MODE_INDEXD: // 0x7: INDEX DEFERRED
wIndex = this.getWord(dbgAddr, true);
/*
* When using R7 (aka PC), INDEX DEFERRED is known as RELATIVE DEFERRED
*/
sOperand = '@' + str.toHexWord(wIndex) + (reg < 7? "(R" + reg + ")" : "(PC)");
break;
}
}
} }
return sOperand; return sOperand;
}; };
@ -2350,7 +2493,7 @@ if (DEBUGGER) {
for (var sCommand in DebuggerPDP11.COMMANDS) { for (var sCommand in DebuggerPDP11.COMMANDS) {
s += '\n' + str.pad(sCommand, 9) + DebuggerPDP11.COMMANDS[sCommand]; s += '\n' + str.pad(sCommand, 9) + DebuggerPDP11.COMMANDS[sCommand];
} }
if (!this.checksEnabled()) s += "\nnote: frequency/history disabled if no exec breakpoints"; if (!this.checksEnabled()) s += "\nnote: history disabled if no exec breakpoints";
this.println(s); this.println(s);
}; };
@ -2702,53 +2845,6 @@ if (DEBUGGER) {
} }
}; };
/**
* doFreqs(sParm)
*
* @this {DebuggerPDP11}
* @param {string|undefined} sParm
*/
DebuggerPDP11.prototype.doFreqs = function(sParm)
{
if (sParm == '?') {
this.println("frequency commands:");
this.println("\tclear\tclear all frequency counts");
return;
}
var i;
var cData = 0;
if (this.aaOpcodeCounts) {
if (sParm == "clear") {
for (i = 0; i < this.aaOpcodeCounts.length; i++)
this.aaOpcodeCounts[i] = [i, 0];
this.println("frequency data cleared");
cData++;
}
else if (sParm !== undefined) {
this.println("unknown frequency command: " + sParm);
cData++;
}
else {
var aaSortedOpcodeCounts = this.aaOpcodeCounts.slice();
aaSortedOpcodeCounts.sort(function(p, q) {
return q[1] - p[1];
});
var asOpcodes = DebuggerPDP11.INS_NAMES;
for (i = 0; i < aaSortedOpcodeCounts.length; i++) {
var bOpcode = aaSortedOpcodeCounts[i][0];
var cFreq = aaSortedOpcodeCounts[i][1];
if (cFreq) {
this.println((asOpcodes[this.aaOpDescs[bOpcode][0]] + " ").substr(0, 5) + " (" + str.toHexByte(bOpcode) + "): " + cFreq + " times");
cData++;
}
}
}
}
if (!cData) {
this.println("no frequency data available");
}
};
/** /**
* doHalt(fQuiet) * doHalt(fQuiet)
* *
@ -3515,9 +3611,6 @@ if (DEBUGGER) {
if (asArgs[0] == "else") break; if (asArgs[0] == "else") break;
this.doEdit(asArgs); this.doEdit(asArgs);
break; break;
case 'f':
this.doFreqs(asArgs[1]);
break;
case 'g': case 'g':
this.doRun(asArgs[0], asArgs[1], sCmd, fQuiet); this.doRun(asArgs[0], asArgs[1], sCmd, fQuiet);
break; break;

View file

@ -108,7 +108,9 @@ function Debugger(parmsDbg)
* unprefixed hex value (eg, "a5" as opposed to "0xa5") will trump the numeric value. Unprefixed * unprefixed hex value (eg, "a5" as opposed to "0xa5") will trump the numeric value. Unprefixed
* hex values are a convenience of parseValue(), which always calls str.parseInt() with a default * hex values are a convenience of parseValue(), which always calls str.parseInt() with a default
* base of 16; however, that default be overridden with a variety of explicit prefixes or suffixes * base of 16; however, that default be overridden with a variety of explicit prefixes or suffixes
* (eg, a leading zero to indicate octal, or a trailing period to indicate decimal). * (eg, a leading "0o" to indicate octal, a trailing period to indicate decimal, etc.)
*
* See str.parseInt() for more details about supported numbers.
*/ */
this.aVariables = {}; this.aVariables = {};

View file

@ -62,13 +62,12 @@ var Keys = {
* keyCodes for most common ASCII keys can simply use the appropriate ASCII code above. * keyCodes for most common ASCII keys can simply use the appropriate ASCII code above.
* *
* Most of these represent non-ASCII keys (eg, the LEFT arrow key), yet for some reason, browsers defined * Most of these represent non-ASCII keys (eg, the LEFT arrow key), yet for some reason, browsers defined
* them using ASCII codes (eg, the LEFT arrow key uses the ASCII code for '%' or 37). This conflict is * them using ASCII codes (eg, the LEFT arrow key uses the ASCII code for '%' or 37).
* discussed further in the definition of CLICKCODE below.
*/ */
KEYCODE: { KEYCODE: {
/* 0x08 */ BS: 8, /* 0x08 */ BS: 8,
/* 0x09 */ TAB: 9, /* 0x09 */ TAB: 9,
/* 0x0A */ LF: 10, // TODO: Determine if any key actually generates this (I suspect there is none) /* 0x0A */ LF: 10, // TODO: Determine if any key actually generates this
/* 0x0D */ CR: 13, /* 0x0D */ CR: 13,
/* 0x10 */ SHIFT: 16, /* 0x10 */ SHIFT: 16,
/* 0x11 */ CTRL: 17, /* 0x11 */ CTRL: 17,

View file

@ -71,7 +71,8 @@ str.isValidInt = function(s, base)
* *
* To summarize our non-standard alternatives: a 'y' suffix indicates binary, a '#' prefix indicates * To summarize our non-standard alternatives: a 'y' suffix indicates binary, a '#' prefix indicates
* octal, a '$' prefix indicates hex, and a "0b" prefix indicates binary IF at least one comma is present. * octal, a '$' prefix indicates hex, and a "0b" prefix indicates binary IF at least one comma is present.
* Commas are useful for grouping binary digits, but if you don't want to use them, then use a 'y' suffix. * Commas are useful for grouping binary digits, but if you don't want to use them, then you must use a
* 'y' suffix for binary numbers.
* *
* @param {string} s is the string representation of some number * @param {string} s is the string representation of some number
* @param {number} [base] is the radix to use (default is 10); can be overridden by prefixes/suffixes * @param {number} [base] is the radix to use (default is 10); can be overridden by prefixes/suffixes

View file

@ -1,4 +1,4 @@
(function(){var f;function p(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function q(a){return"0x"+p(a,2)}function r(a){return"0x"+p(a,4)}function aa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function ba(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b} (function(){var f;function p(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}function q(a){return p(a,2,!0)}function r(a){return p(a,4,!0)}function aa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function ba(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
var ca={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function da(a){return a.replace(/[&<>"']/g,function(a){return ca[a]})}var ea=Date.now||function(){return+new Date}; var ca={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function da(a){return a.replace(/[&<>"']/g,function(a){return ca[a]})}var ea=Date.now||function(){return+new Date};
function t(a,b){var c=0,d=null;if("object"==typeof resources&&(d=resources[a]))b&&b(a,d,c);else if("function"==typeof resources)resources(a,function(c,d){b&&b(a,c,d)});else{var e=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");e.onreadystatechange=function(){4===e.readyState&&(d=e.responseText,200==e.status||!e.status&&d.length&&"file:"==(window?window.location.protocol:"file:")||(c=e.status||-1),b&&b(a,d,c))};e.open("GET",a,!0);e.send()}} function t(a,b){var c=0,d=null;if("object"==typeof resources&&(d=resources[a]))b&&b(a,d,c);else if("function"==typeof resources)resources(a,function(c,d){b&&b(a,c,d)});else{var e=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");e.onreadystatechange=function(){4===e.readyState&&(d=e.responseText,200==e.status||!e.status&&d.length&&"file:"==(window?window.location.protocol:"file:")||(c=e.status||-1),b&&b(a,d,c))};e.open("GET",a,!0);e.send()}}
function u(a){window&&window.alert(a)}function v(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 fa(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()} function u(a){window&&window.alert(a)}function v(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 fa(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}

View file

@ -1,4 +1,4 @@
(function(){var e;function p(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function aa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function ba(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}var ca={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"}; (function(){var e;function p(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var f=a&15,f=f+(0<=f&&9>=f?48:55),d=String.fromCharCode(f)+d;a>>=4}return(c?"0x":"")+d}function aa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function ba(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}var ca={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};
function da(a){return a.replace(/[&<>"']/g,function(a){return ca[a]})}var q=Date.now||function(){return+new Date}; function da(a){return a.replace(/[&<>"']/g,function(a){return ca[a]})}var q=Date.now||function(){return+new Date};
function r(a,b){var c=0,d=null;if("object"==typeof resources&&(d=resources[a]))b&&b(a,d,c);else if("function"==typeof resources)resources(a,function(c,d){b&&b(a,c,d)});else{var f=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");f.onreadystatechange=function(){4===f.readyState&&(d=f.responseText,200==f.status||!f.status&&d.length&&"file:"==(window?window.location.protocol:"file:")||(c=f.status||-1),b&&b(a,d,c))};f.open("GET",a,!0);f.send()}} function r(a,b){var c=0,d=null;if("object"==typeof resources&&(d=resources[a]))b&&b(a,d,c);else if("function"==typeof resources)resources(a,function(c,d){b&&b(a,c,d)});else{var f=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");f.onreadystatechange=function(){4===f.readyState&&(d=f.responseText,200==f.status||!f.status&&d.length&&"file:"==(window?window.location.protocol:"file:")||(c=f.status||-1),b&&b(a,d,c))};f.open("GET",a,!0);f.send()}}
function t(a){window&&window.alert(a)}function v(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 w={init:[],show:[],exit:[]},ea=!1,fa=!1,x=!0;function ga(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function y(a){w.init.push(a)} function t(a){window&&window.alert(a)}function v(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 w={init:[],show:[],exit:[]},ea=!1,fa=!1,x=!0;function ga(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function y(a){w.init.push(a)}
@ -71,12 +71,12 @@ e.Wa=function(){this.b=this.a[this.c++]+this.m&255;this.f=this.g-this.a[this.b]-
e.Dd=function(){this.B|=8;this.v[97]=this.ib;this.v[101]=this.kb;this.v[105]=this.hb;this.v[109]=this.eb;this.v[113]=this.jb;this.v[117]=this.lb;this.v[121]=this.gb;this.v[125]=this.fb;this.v[225]=this.yd;this.v[229]=this.Ad;this.v[233]=this.xd;this.v[237]=this.ud;this.v[241]=this.zd;this.v[245]=this.Bd;this.v[249]=this.wd;this.v[253]=this.vd}; e.Dd=function(){this.B|=8;this.v[97]=this.ib;this.v[101]=this.kb;this.v[105]=this.hb;this.v[109]=this.eb;this.v[113]=this.jb;this.v[117]=this.lb;this.v[121]=this.gb;this.v[125]=this.fb;this.v[225]=this.yd;this.v[229]=this.Ad;this.v[233]=this.xd;this.v[237]=this.ud;this.v[241]=this.zd;this.v[245]=this.Bd;this.v[249]=this.wd;this.v[253]=this.vd};
e.Ra=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.o;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.wd=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.o;this.g=R(this,this.g,this.a[this.b])}; e.Ra=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.o;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.wd=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.o;this.g=R(this,this.g,this.a[this.b])};
e.Qa=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.vd=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.g=R(this,this.g,this.a[this.b])};e.qc=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.a[this.j]=this.a[this.j]+1&255}; e.Qa=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.vd=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.g=R(this,this.g,this.a[this.b])};e.qc=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.a[this.j]=this.a[this.j]+1&255};
e.Sd=function(){var a;a=this.a[this.c++];switch(a){case 0:this.F("HALT");M(this);break;case 1:a=this.c;for(var b="";a<this.a.length;){var c=this.a[a++];if(!c)break;b+=String.fromCharCode(c)}this.c=a;b=b.replace(/%A/g,p(this.g,2)).replace(/%X/g,p(this.m,2)).replace(/%Y/g,p(this.o,2));this.F(b);this.P=0;this.L-=this.G;this.G=0;break;default:this.c-=2,this.F("undefined opSim: 0x"+p(a,2)+" at "+("0x"+p(this.c,4))),M(this)}}; e.Sd=function(){var a;a=this.a[this.c++];switch(a){case 0:this.F("HALT");M(this);break;case 1:a=this.c;for(var b="";a<this.a.length;){var c=this.a[a++];if(!c)break;b+=String.fromCharCode(c)}this.c=a;b=b.replace(/%A/g,p(this.g,2)).replace(/%X/g,p(this.m,2)).replace(/%Y/g,p(this.o,2));this.F(b);this.P=0;this.L-=this.G;this.G=0;break;default:this.c-=2,this.F("undefined opSim: "+p(a,2,!0)+" at "+p(this.c,4,!0)),M(this)}};
e.l=function(){var a=this.a[--this.c];this.F("undefined opcode: 0x"+p(a,2)+" at "+("0x"+p(this.c,4)));M(this)};y(function(){for(var a=I(document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new ra(d);H(d,c)}}); e.l=function(){var a=this.a[--this.c];this.F("undefined opcode: "+p(a,2,!0)+" at "+p(this.c,4,!0));M(this)};y(function(){for(var a=I(document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new ra(d);H(d,c)}});
function S(a){B.call(this,"C1PROM",a);this.b=this.a=null;this.c=a.size;if(this.g=a.image){a=this.g;var b=ba(this.g);"json"!=b&&"hex"!=b&&(a="http://"+(window?window.location.host:"www.pcjs.org")+"/api/v1/dump?file="+this.g+"&format=bytes");var c=this;r(a,function(a,b,g){Da(c,a,b,g)})}}D(S); function S(a){B.call(this,"C1PROM",a);this.b=this.a=null;this.c=a.size;if(this.g=a.image){a=this.g;var b=ba(this.g);"json"!=b&&"hex"!=b&&(a="http://"+(window?window.location.host:"www.pcjs.org")+"/api/v1/dump?file="+this.g+"&format=bytes");var c=this;r(a,function(a,b,g){Da(c,a,b,g)})}}D(S);
S.prototype.X=function(a,b,c,d){this.a=a;this.h=b;a=c-b+1;this.c||(this.c=a);a!=this.c?pa(this,"computer-specified ROM size (0x"+p(a,4)+") does not match component-specified size ("+("0x"+p(this.c,4))+")"):(d&&(this.f=d,O(d,b,c,this,this.R)),Ea(this))};S.prototype.$=function(a){a&&!this.u.H&&(this.u.H=!0)};S.prototype.R=function(a,b){if(void 0!==b){var c=a-this.h;this.a[this.h+c]=this.b?this.b[c]:0}}; S.prototype.X=function(a,b,c,d){this.a=a;this.h=b;a=c-b+1;this.c||(this.c=a);a!=this.c?pa(this,"computer-specified ROM size ("+p(a,4,!0)+") does not match component-specified size ("+p(this.c,4,!0)+")"):(d&&(this.f=d,O(d,b,c,this,this.R)),Ea(this))};S.prototype.$=function(a){a&&!this.u.H&&(this.u.H=!0)};S.prototype.R=function(a,b){if(void 0!==b){var c=a-this.h;this.a[this.h+c]=this.b?this.b[c]:0}};
function Da(a,b,c,d){if(d)a.F('Error loading ROM "'+b+'" ('+d+")");else{if("["==c.charAt(0)||"{"==c.charAt(0))try{var f=eval("("+c+")"),g=f.bytes;g?a.b=g:a.b=f}catch(k){a.F('Error processing ROM "'+b+'": '+k.message);return}else for(b=c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.b=Array(b.length),c=0;c<b.length;c++)a.b[c]=parseInt(b[c],16);Ea(a)}} function Da(a,b,c,d){if(d)a.F('Error loading ROM "'+b+'" ('+d+")");else{if("["==c.charAt(0)||"{"==c.charAt(0))try{var f=eval("("+c+")"),g=f.bytes;g?a.b=g:a.b=f}catch(k){a.F('Error processing ROM "'+b+'": '+k.message);return}else for(b=c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.b=Array(b.length),c=0;c<b.length;c++)a.b[c]=parseInt(b[c],16);Ea(a)}}
function Ea(a){if(!J(a))if(!a.g)a.N();else if(a.b&&a.a){var b=a.b.length;if(b!=a.c)pa(a,"ROM image size (0x"+p(b,4)+") does not match component-specified size ("+("0x"+p(a.c,4))+")");else{for(var c=0;c<b;c++)a.a[a.h+c]=a.b[c];a.N()}}}y(function(){for(var a=I(document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new S(d);H(d,c)}});function Fa(a){B.call(this,"C1PRAM",a)}D(Fa);Fa.prototype.X=function(a){this.a=a;this.N()}; function Ea(a){if(!J(a))if(!a.g)a.N();else if(a.b&&a.a){var b=a.b.length;if(b!=a.c)pa(a,"ROM image size ("+p(b,4,!0)+") does not match component-specified size ("+p(a.c,4,!0)+")");else{for(var c=0;c<b;c++)a.a[a.h+c]=a.b[c];a.N()}}}y(function(){for(var a=I(document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new S(d);H(d,c)}});function Fa(a){B.call(this,"C1PRAM",a)}D(Fa);Fa.prototype.X=function(a){this.a=a;this.N()};
y(function(){for(var a=I(document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Fa(d);H(d,c)}}); y(function(){for(var a=I(document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Fa(d);H(d,c)}});
function Ga(a){B.call(this,"C1PKeyboard",a);this.u.H=!1;this.ea=a.model;this.L=8;this.na=10;this.ma=13;this.O=27;this.ka=this.L;this.la=this.na;this.fa=this.ma;this.K=this.O;this.v=241;this.G=224;this.ia=3;this.ja=15;this.s=1;this.m=[];this.m["break"]=this.G;this.m.esc=this.K;this.m["ctrl-c"]=this.ia;this.m["ctrl-o"]=this.ja;this.b=[];this.b[49]=30464;this.b[33]=30704;this.b[50]=30208;this.b[34]=30448;this.b[51]=29952;this.b[35]=30192;this.b[52]=29696;this.b[36]=29936;this.b[53]=29440;this.b[37]= function Ga(a){B.call(this,"C1PKeyboard",a);this.u.H=!1;this.ea=a.model;this.L=8;this.na=10;this.ma=13;this.O=27;this.ka=this.L;this.la=this.na;this.fa=this.ma;this.K=this.O;this.v=241;this.G=224;this.ia=3;this.ja=15;this.s=1;this.m=[];this.m["break"]=this.G;this.m.esc=this.K;this.m["ctrl-c"]=this.ia;this.m["ctrl-o"]=this.ja;this.b=[];this.b[49]=30464;this.b[33]=30704;this.b[50]=30208;this.b[34]=30448;this.b[51]=29952;this.b[35]=30192;this.b[52]=29696;this.b[36]=29936;this.b[53]=29440;this.b[37]=
29680;this.b[54]=29184;this.b[38]=29424;this.b[55]=28928;this.b[39]=29168;this.b[56]=26368;this.b[40]=26608;this.b[57]=26112;this.b[41]=26352;this.b[48]=25856;this.b[58]=25600;this.b[42]=25840;this.b[45]=25344;this.b[61]=25584;this.b[46]=22272;this.b[62]=22512;this.b[108]=22016;this.b[76]=22256;this.b[92]=22256;this.b[111]=21760;this.b[79]=22E3;this.b[this.ka]=22E3;this.b[this.la]=21504;this.b[this.fa]=21248;this.b[119]=18176;this.b[87]=18416;this.b[101]=17920;this.b[69]=18160;this.b[114]=17664;this.b[82]= 29680;this.b[54]=29184;this.b[38]=29424;this.b[55]=28928;this.b[39]=29168;this.b[56]=26368;this.b[40]=26608;this.b[57]=26112;this.b[41]=26352;this.b[48]=25856;this.b[58]=25600;this.b[42]=25840;this.b[45]=25344;this.b[61]=25584;this.b[46]=22272;this.b[62]=22512;this.b[108]=22016;this.b[76]=22256;this.b[92]=22256;this.b[111]=21760;this.b[79]=22E3;this.b[this.ka]=22E3;this.b[this.la]=21504;this.b[this.fa]=21248;this.b[119]=18176;this.b[87]=18416;this.b[101]=17920;this.b[69]=18160;this.b[114]=17664;this.b[82]=

View file

@ -1,172 +1,174 @@
(function(){var m; (function(){var m;
function da(a){var b=16,d;if(a){b||(b=10);var c=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==c?(b=8,c=null):"$"==c&&(b=16,c=null);null==c?a=a.substr(1):("0"==c&&(c=a.charAt(1),"b"==c&&e&&(b=2,c=null),"o"==c?(b=8,c=null):"x"==c&&(b=16,c=null)),null==c?a=a.substr(2):(c=a.charAt(a.length-1).toLowerCase(),"y"==c?(b=2,c=null):"."==c?(b=10,c=null):"h"==c&&(b=16,c=null),null==c&&(a=a.substr(0,a.length-1))));var f,c=a;((e=b)&&10!=e?16==e?null!==c.match(/^[0-9a-f]+$/i):8==e?null!==c.match(/^[0-7]+$/):2== function ea(a){var b=16,d;if(a){b||(b=10);var c=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==c?(b=8,c=null):"$"==c&&(b=16,c=null);null==c?a=a.substr(1):("0"==c&&(c=a.charAt(1),"b"==c&&e&&(b=2,c=null),"o"==c?(b=8,c=null):"x"==c&&(b=16,c=null)),null==c?a=a.substr(2):(c=a.charAt(a.length-1).toLowerCase(),"y"==c?(b=2,c=null):"."==c?(b=10,c=null):"h"==c&&(b=16,c=null),null==c&&(a=a.substr(0,a.length-1))));var f,c=a;((e=b)&&10!=e?16==e?null!==c.match(/^[0-9a-f]+$/i):8==e?null!==c.match(/^[0-7]+$/):2==
e&&null!==c.match(/^[01]+$/):null!==c.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(d=f|0)}return d}function p(a,b,d){var c="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),c=String.fromCharCode(e)+c;a>>=4}return(d?"0x":"")+c}function ea(a){var b=a,d=a.lastIndexOf("/");0<=d&&(b=a.substr(d+1));d=b.indexOf("&");0<d&&(b=b.substr(0,d));return b} e&&null!==c.match(/^[01]+$/):null!==c.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(d=f|0)}return d}function q(a,b,d){var c="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),c=String.fromCharCode(e)+c;a>>=4}return(d?"0x":"")+c}function r(a){return q(a,4,!0)}function fa(a){var b=a,d=a.lastIndexOf("/");0<=d&&(b=a.substr(d+1));d=b.indexOf("&");0<d&&(b=b.substr(0,d));return b}
function fa(a){var b="",d=a.lastIndexOf(".");0<=d&&(b=a.substr(d+1).toLowerCase());return b}function ja(){var a=ka();return-1!==a.indexOf("pcjs.org",a.length-8)}var la={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function ma(a){return a.replace(/[&<>"']/g,function(a){return la[a]})}function na(a,b){return(a+" ").slice(0,b)}function oa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")} function ga(a){var b="",d=a.lastIndexOf(".");0<=d&&(b=a.substr(d+1).toLowerCase());return b}function ja(){var a=ka();return-1!==a.indexOf("pcjs.org",a.length-8)}var la={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function ma(a){return a.replace(/[&<>"']/g,function(a){return la[a]})}function na(a,b){return(a+" ").slice(0,b)}function oa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
function sa(a,b,d){var c=0,e=a.length,f=0;for(void 0===d&&(d=function(a,b){return a>b?1:a<b?-1:0});c<e;){var h=c+e>>1,g;g=d(b,a[h]);0<g?c=h+1:(e=h,f=!g)}return f?c:~c}var ta=Date.now||function(){return+new Date};function ua(){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 sa(a,b,d){var c=0,e=a.length,f=0;for(void 0===d&&(d=function(a,b){return a>b?1:a<b?-1:0});c<e;){var h=c+e>>1,g;g=d(b,a[h]);0<g?c=h+1:(e=h,f=!g)}return f?c:~c}var ta=Date.now||function(){return+new Date};function ua(){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 va(a,b){var d;if(Array.prototype.indexOf)return a.indexOf(b,d);d=d||0;0>d&&(d+=a.length);0>d&&(d=0);for(var c=a.length;d<c;d++)if(d in a&&a[d]===b)return d;return-1} function va(a,b){var d;if(Array.prototype.indexOf)return a.indexOf(b,d);d=d||0;0>d&&(d+=a.length);0>d&&(d=0);for(var c=a.length;d<c;d++)if(d in a&&a[d]===b)return d;return-1}
function wa(a,b,d,c){var e=0,f=null,h=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)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),c&&c(a,f,e))});if(b&&"object"== function wa(a,b,d,c){var e=0,f=null,h=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)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),c&&c(a,f,e))});if(b&&"object"==
typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));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||(f=g.responseText,200!=g.status&&(e=g.status||-1),c&&c(a,f,e),h=[f,e]);return h}function ka(){return"http://"+(window?window.location.host:"www.pcjs.org")} typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));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||(f=g.responseText,200!=g.status&&(e=g.status||-1),c&&c(a,f,e),h=[f,e]);return h}function ka(){return"http://"+(window?window.location.host:"www.pcjs.org")}
function r(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 Fa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(d){}return b} 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 Ga(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(d){}return b}
function Ga(a,b){try{return window.localStorage.setItem(a,b),!0}catch(d){}return!1}function Ha(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 Ia(a,b,d){function c(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(c,0):d()}c()} function Ha(a,b){try{return window.localStorage.setItem(a,b),!0}catch(d){}return!1}function Ia(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 Ja(a,b,d){function c(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(c,0):d()}c()}
function Ja(a,b){function d(){b(100===c)&&(e=setTimeout(d,c),c=100)}var c=0,e=null,f=!1;a.onmousedown=function(){f||e||(c=500,d())};a.ontouchstart=function(){e||(c=500,d())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var Ka={init:[],show:[],exit:[]},La=!1,Ma=!1,Na=!0;function Oa(a,b){if(window){var d=window[a];window[a]="function"!==typeof d?b:function(){d&&d();b()}}}function Pa(a){Ka.init.push(a)} function Ka(a,b){function d(){b(100===c)&&(e=setTimeout(d,c),c=100)}var c=0,e=null,f=!1;a.onmousedown=function(){f||e||(c=500,d())};a.ontouchstart=function(){e||(c=500,d())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var La={init:[],show:[],exit:[]},Ma=!1,Na=!1,Oa=!0;function Pa(a,b){if(window){var d=window[a];window[a]="function"!==typeof d?b:function(){d&&d();b()}}}function Qa(a){La.init.push(a)}
function Qa(a){if(Na)try{for(var b=0;b<a.length;b++)a[b]()}catch(d){r(""+("An unexpected exception occurred:\n\n"+d.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function Ra(a){!Na&&a?(Na=!0,La&&Sa("init"),Ma&&Sa("show")):Na=a}function Sa(a){Ka[a]&&Qa(Ka[a])}Oa("onload",function(){La=!0;Qa(Ka.init)});Oa("onpageshow",function(){Ma=!0;Qa(Ka.show)});Oa(Ha("Opera")||Ha("iOS")?"onunload":"onbeforeunload",function(){Qa(Ka.exit)}); function Ra(a){if(Oa)try{for(var b=0;b<a.length;b++)a[b]()}catch(d){t(""+("An unexpected exception occurred:\n\n"+d.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function Sa(a){!Oa&&a?(Oa=!0,Ma&&Ta("init"),Na&&Ta("show")):Oa=a}function Ta(a){La[a]&&Ra(La[a])}Pa("onload",function(){Ma=!0;Ra(La.init)});Pa("onpageshow",function(){Na=!0;Ra(La.show)});Pa(Ia("Opera")||Ia("iOS")?"onunload":"onbeforeunload",function(){Ra(La.exit)});
function t(a,b,d,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.ob=b.comment;this.Jb=b;b=this.id.indexOf(".");0>b?this.Xa=this.id:(this.pb=this.id.substr(0,b),this.Xa=this.id.substr(b+1));this[a]=d;this.A={ready:!1,Da:!1,Va:!1,X:!1,error:!1};this.Ta=null;this.A.error=!1;this.K={};this.F=null;this.Y=c||0;u.push(this)}var Ta=void 0,Ua={}; function v(a,b,d,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.nb=b.comment;this.Ib=b;b=this.id.indexOf(".");0>b?this.Ua=this.id:(this.ob=this.id.substr(0,b),this.Ua=this.id.substr(b+1));this[a]=d;this.w={ready:!1,Ca:!1,Va:!1,W:!1,error:!1};this.Ta=null;this.w.error=!1;this.J={};this.D=null;this.X=c||0;x.push(this)}var Ua=void 0,Va={};
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} if(window){Ua||(Ua=window.location.search.substr(1));for(var Wa,Xa=/\+/g,Ya=/([^&=]+)=?([^&]*)/g;Wa=Ya.exec(Ua);)Va[decodeURIComponent(Wa[1].replace(Xa," "))]=decodeURIComponent(Wa[2].replace(Xa," "))}function Za(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 v(a,b){b||(b=t);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={}),u=window.PCjs.Components||(window.PCjs.Components=[])}else Za={},u=[];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<u.length;b++){var c=u[b];a&&c.id.indexOf(a)||d.push(c)}return d} function y(a,b){b||(b=v);a.prototype=Za(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var $a=window.PCjs.Machines||(window.PCjs.Machines={}),x=window.PCjs.Components||(window.PCjs.Components=[])}else $a={},x=[];function ab(a,b,d){$a[a]&&b&&($a[a][b]=d)}function bb(a){var b,d=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<x.length;b++){var c=x[b];a&&c.id.indexOf(a)||d.push(c)}return d}
function bb(a,b){var d;if(void 0!==a){var c;b&&(b=0<(c=b.indexOf("."))?b.substr(0,c+1):"");for(c=0;c<u.length;c++)if(d)d==u[c]&&(d=null);else if(!(a!=u[c].type||b&&u[c].id.indexOf(b)))return u[c]}return null}function w(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(d){r(d.message+" ("+a+")")}return b} function lb(a,b){var d;if(void 0!==a){var c;b&&(b=0<(c=b.indexOf("."))?b.substr(0,c+1):"");for(c=0;c<x.length;c++)if(d)d==x[c]&&(d=null);else if(!(a!=x[c].type||b&&x[c].id.indexOf(b)))return x[c]}return null}function B(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(d){t(d.message+" ("+a+")")}return b}
function lb(a,b){for(var d=z(b.parentNode,"pdp11-control"),c=0;c<d.length;c++)for(var e=d[c].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pdp11-binding":(g=w(h))&&g.binding&&a.ha(g.type,g.binding,h,g.value),l=k.length}}}} function mb(a,b){for(var d=D(b.parentNode,"pdp11-control"),c=0;c<d.length;c++)for(var e=d[c].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pdp11-binding":(g=B(h))&&g.binding&&a.ga(g.type,g.binding,h,g.value),l=k.length}}}}
function z(a,b,d){d&&(b+="-"+d+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var c;d=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(c=a.length;b<c;b++)e.test(a[b].className)&&d.push(a[b]);return d} function D(a,b,d){d&&(b+="-"+d+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var c;d=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(c=a.length;b<c;b++)e.test(a[b].className)&&d.push(a[b]);return d}
t.prototype={constructor:t,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ha:function(a,b,d){switch(b){case "clear":return this.K[b]||(this.K[b]=d,d.onclick=function(a){return function(){a.K.print&&(a.K.print.value="")}}(this)),!0;case "print":return this.K[b]||(this.ya=this.K[b]=d,d.value="",this.u=function(a){return function(b,d){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==d?d+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(d), v.prototype={constructor:v,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ga:function(a,b,d){switch(b){case "clear":return this.J[b]||(this.J[b]=d,d.onclick=function(a){return function(){a.J.print&&(a.J.print.value="")}}(this)),!0;case "print":return this.J[b]||(this.xa=this.J[b]=d,d.value="",this.j=function(a){return function(b,d){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==d?d+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(d),
this.ea=function(a){this.u(a,this.Xa)}),!0;default:return!1}},log:function(){},u:function(){},status:function(a){this.u(this.Xa+": "+a)},ea:function(a,b,d){d=d||this.type;b||r((d?d+": ":"")+a)},sa:function(){return this.A.X=!0},ra:function(a,b){b&&(this.A.X=!1);return!0}};function mb(a,b){if(a.F){a===a.F?b|=0:b=b||a.Y;var d=a.F.Y&b;return!!b&&d===b||!!(d&a.F.Db)}return!1} this.da=function(a){this.j(a,this.Ua)}),!0;default:return!1}},log:function(){},j:function(){},status:function(a){this.j(this.Ua+": "+a)},da:function(a,b,d){d=d||this.type;b||t((d?d+": ":"")+a)},ra:function(){return this.w.W=!0},qa:function(a,b){b&&(this.w.W=!1);return!0}};function nb(a,b){if(a.D){a===a.D?b|=0:b=b||a.X;var d=a.D.X&b;return!!b&&d===b||!!(d&a.D.Cb)}return!1}
function nb(a,b){if(a.A.Va)return a.A.Da&&(a.A.Da=!1),a.A.Va=!1;if(a.A.error)return a.u(a.toString()+" error"),!1;a.A.Da=b;return a.A.Da}function ob(a,b){a.A.Da&&(b?a.A.Va=!0:void 0===b&&a.u(a.toString()+" busy"));return a.A.Da}function A(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.Ta;a.Ta=null;b&&b()}}function pb(a,b){b&&(a.A.ready?b():a.Ta=b);return a.A.ready}function qb(a,b){a.A.error=!0;a.ea(b)} function ob(a,b){if(a.w.Va)return a.w.Ca&&(a.w.Ca=!1),a.w.Va=!1;if(a.w.error)return a.j(a.toString()+" error"),!1;a.w.Ca=b;return a.w.Ca}function pb(a,b){a.w.Ca&&(b?a.w.Va=!0:void 0===b&&a.j(a.toString()+" busy"));return a.w.Ca}function E(a){if(!a.w.error&&(a.w.ready=!0,a.w.ready)){var b=a.Ta;a.Ta=null;b&&b()}}function qb(a,b){b&&(a.w.ready?b():a.Ta=b);return a.w.ready}function rb(a,b){a.w.error=!0;a.da(b)}
var rb="undefined"!==typeof ArrayBuffer,C={cpu:1,bus:64,mem:128,keyboard:65536,key:131072,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function sb(a){t.call(this,"Panel",a,sb)}v(sb);m=sb.prototype;m.ha=function(a,b,d,c){return this.D&&this.D.ha(a,b,d,c)||this.b&&this.b.ha(a,b,d,c)||this.F&&this.F.ha(a,b,d,c)?!0:this.parent.ha.call(this,a,b,d,c)};m.za=function(a,b,d,c){this.D=a;this.H=b;this.b=d;this.F=c}; var sb="undefined"!==typeof ArrayBuffer,F={cpu:1,bus:64,mem:128,keyboard:65536,key:131072,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function tb(a){v.call(this,"Panel",a,tb)}y(tb);m=tb.prototype;m.ga=function(a,b,d,c){return this.C&&this.C.ga(a,b,d,c)||this.b&&this.b.ga(a,b,d,c)||this.D&&this.D.ga(a,b,d,c)?!0:this.parent.ga.call(this,a,b,d,c)};m.ya=function(a,b,d,c){this.C=a;this.G=b;this.b=d;this.D=c};
m.sa=function(a,b){b||tb();return!0};m.ra=function(){return!0};m.ia=function(){};function tb(){for(var a=!1,b=z(document,"pdp11","panel"),d=0;d<b.length;d++){var c=b[d],e=w(c),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<u.length;h++)if(u[h].id===f){f=u[h];break a}f=null}f||(a=!0,f=new sb(e));lb(f,c);a&&A(f)}}Pa(tb); m.ra=function(a,b){b||ub();return!0};m.qa=function(){return!0};m.ha=function(){};function ub(){for(var a=!1,b=D(document,"pdp11","panel"),d=0;d<b.length;d++){var c=b[d],e=B(c),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<x.length;h++)if(x[h].id===f){f=x[h];break a}f=null}f||(a=!0,f=new tb(e));mb(f,c);a&&E(f)}}Qa(ub);
function ub(a,b,d){t.call(this,"Bus",a,ub);this.b=b;this.F=d;this.w=a.busWidth||16;this.D=Math.pow(2,this.w);this.j=this.D-1|0;this.aa=16>=this.w?10:20>=this.w?12:24>=this.w?14:15;this.la=1<<this.aa;this.C=this.la>>2;this.i=this.la-1;this.H=this.D/this.la|0;this.G=this.H-1;a=new D;vb(a,this.F);this.P=Array(this.H);for(b=0;b<this.H;b++)this.P[b]=a;A(this)}v(ub);ub.prototype.reset=function(){};ub.prototype.sa=function(a,b){b||this.reset();return!0}; function vb(a,b,d){v.call(this,"Bus",a,vb);this.b=b;this.D=d;this.u=a.busWidth||16;this.C=Math.pow(2,this.u);this.i=this.C-1|0;this.$=16>=this.u?10:20>=this.u?12:24>=this.u?14:15;this.ka=1<<this.$;this.B=this.ka>>2;this.g=this.ka-1;this.G=this.C/this.ka|0;this.F=this.G-1;a=new G;wb(a,this.D);this.N=Array(this.G);for(b=0;b<this.G;b++)this.N[b]=a;E(this)}y(vb);vb.prototype.reset=function(){};vb.prototype.ra=function(a,b){b||this.reset();return!0};
function wb(a,b,d,c){for(var e=b,f=d,h=e>>>a.aa;0<f&&h<a.P.length;){var g=a.P[h],k=h*a.la,l=a.la-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==c){if(e+f<=g.B)return g.Sa+=g.B-e,g.B=e,!0;if(e>=g.B+g.Sa){l=g.size-(e-k);l>f&&(l=f);g.Sa=e-g.B+l;e=k+a.la;f-=l;h++;continue}}return xb(1,e,f)}e=new D(e,l,a.la,c);vb(e,a.F,g);a.P[h++]=e;e=k+a.la;f-=l}return 0>=f?(a.status(Math.floor(d/1024)+"Kb "+yb[c]+" at "+p(b,4,!0)),!0):xb(2,b,d)}function zb(a,b){return a.P[(b&a.j)>>>a.aa].Qa(b&a.i,b)} function xb(a,b,d,c){for(var e=b,f=d,h=e>>>a.$;0<f&&h<a.N.length;){var g=a.N[h],k=h*a.ka,l=a.ka-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==c){if(e+f<=g.A)return g.Sa+=g.A-e,g.A=e,!0;if(e>=g.A+g.Sa){l=g.size-(e-k);l>f&&(l=f);g.Sa=e-g.A+l;e=k+a.ka;f-=l;h++;continue}}return yb(1,e,f)}e=new G(e,l,a.ka,c);wb(e,a.D,g);a.N[h++]=e;e=k+a.ka;f-=l}return 0>=f?(a.status(Math.floor(d/1024)+"Kb "+zb[c]+" at "+r(b)),!0):yb(2,b,d)}
function xb(a,b,d){r("Memory block error ("+a+": "+p(b)+","+p(d)+")");return!1}var Ab;if(rb){var Mb=new ArrayBuffer(2);(new DataView(Mb)).setUint16(0,256,!0);Ab=256===(new Uint16Array(Mb))[0]}else Ab=!1;var Nb=Ab; function Ab(a,b){var d=b&a.g,c=(b&a.i)>>>a.$;return d!=a.g?a.N[c].xb(d,b):a.N[c++].Qa(d,b)|a.N[c&a.F].Qa(0,b+1)<<8}function yb(a,b,d){t("Memory block error ("+a+": "+q(b)+","+q(d)+")");return!1}var Bb;if(sb){var Nb=new ArrayBuffer(2);(new DataView(Nb)).setUint16(0,256,!0);Bb=256===(new Uint16Array(Nb))[0]}else Bb=!1;var Ob=Bb;
function D(a,b,d,c){this.id=Ob+=2;this.b=null;this.B=a;this.Sa=b;this.size=d||0;this.type=c||Pb;this.C=c==Qb;vb(this);this.va=this.Fb=!1;if(d)if(rb)this.K=new ArrayBuffer(d),this.D=new DataView(this.K,0,d),this.i=new Uint8Array(this.K,0,d),this.L=new Uint16Array(this.K,0,d>>1),this.b=new Int32Array(this.K,0,d>>2),Rb(this,Nb?Sb:Tb);else{this.b=Array(d>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Rb(this,Ub)}else Rb(this)}var Pb=0,Qb=2,yb=["NONE","RAM","ROM","VID","H/W"],Ob=0; function G(a,b,d,c){this.id=Pb+=2;this.b=null;this.A=a;this.Sa=b;this.size=d||0;this.type=c||Qb;this.B=c==Rb;wb(this);this.ta=this.Eb=!1;if(d)if(sb)this.J=new ArrayBuffer(d),this.C=new DataView(this.J,0,d),this.g=new Uint8Array(this.J,0,d),this.K=new Uint16Array(this.J,0,d>>1),this.b=new Int32Array(this.J,0,d>>2),Sb(this,Ob?Tb:Ub);else{this.b=Array(d>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Sb(this,Vb)}else Sb(this)}var Qb=0,Rb=2,zb=["NONE","RAM","ROM","VID","H/W"],Pb=0;
D.prototype={constructor:D,parent:null,save:function(){var a,b;if(rb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.D.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(rb)for(b=0;b<a.length;b++)this.D.setInt32(b<<2,a[b],!0);else this.b=a;return this.va=!0}return!1},xa:function(a,b){b?0===this.w++&&Vb(this,Wb,!1):0===this.j++&&Xb(this,Wb,!1)},M:function(){this.F&&mb(this.F,129)&&this.F.message("attempt to read invalid block %"+p(this.B),!0); G.prototype={constructor:G,parent:null,save:function(){var a,b;if(sb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.C.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(sb)for(b=0;b<a.length;b++)this.C.setInt32(b<<2,a[b],!0);else this.b=a;return this.ta=!0}return!1},wa:function(a,b){b?0===this.u++&&Wb(this,Xb,!1):0===this.i++&&Yb(this,Xb,!1)},L:function(){this.D&&nb(this.D,129)&&this.D.message("attempt to read invalid block %"+q(this.A),!0);
return 255},H:function(a,b){this.F&&mb(this.F,129)&&this.F.message("attempt to write "+p(b,4,!0)+" to invalid block %"+p(this.B),!0)},V:function(a,b){return this.G(a++,b++)|this.G(a,b)<<8},oa:function(a,b,d){this.J(a++,b&255,d++);this.J(a,b>>8,d)},S:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},$: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},ga:function(a,b){var d=a>>2,c=(a&3)<<3;this.b[d]=this.b[d]&~(255<<c)|b<<c;this.va=!0},na:function(a, return 255},G:function(a,b){this.D&&nb(this.D,129)&&this.D.message("attempt to write "+r(b)+" to invalid block %"+q(this.A),!0)},U:function(a,b){return this.F(a++,b++)|this.F(a,b)<<8},ma:function(a,b,d){this.I(a++,b&255,d++);this.I(a,b>>8,d)},R:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},Z: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},fa:function(a,b){var d=a>>2,c=(a&3)<<3;this.b[d]=this.b[d]&~(255<<c)|b<<c;this.ta=!0},oa:function(a,b){var d=
b){var d=a>>2,c=(a&3)<<3;24>c?this.b[d]=this.b[d]&~(65535<<c)|b<<c:(this.b[d]=this.b[d]&16777215|b<<24,d++,this.b[d]=this.b[d]&-256|b>>8);this.va=!0},O:function(a,b){if(this.F&&null!=this.B){var d=this.F;Yb(d,this.B+a,1,d.O)&&d.ba(!0)}return this.Qa(a,b)},U:function(a,b){if(this.F&&null!=this.B){var d=this.F;Yb(d,this.B+a,2,d.O)&&d.ba(!0)}return this.xb(a,b)},da:function(a,b,d){if(this.F&&null!=this.B){var c=this.F;Yb(c,this.B+a,1,c.C)&&c.ba(!0)}this.C?this.H(a,b,d):this.Ia(a,b,d)},ka:function(a, a>>2,c=(a&3)<<3;24>c?this.b[d]=this.b[d]&~(65535<<c)|b<<c:(this.b[d]=this.b[d]&16777215|b<<24,d++,this.b[d]=this.b[d]&-256|b>>8);this.ta=!0},O:function(a,b){if(this.D&&null!=this.A){var d=this.D;Zb(d,this.A+a,1,d.M)&&d.aa(!0)}return this.Qa(a,b)},T:function(a,b){if(this.D&&null!=this.A){var d=this.D;Zb(d,this.A+a,2,d.M)&&d.aa(!0)}return this.xb(a,b)},ca:function(a,b,d){if(this.D&&null!=this.A){var c=this.D;Zb(c,this.A+a,1,c.B)&&c.aa(!0)}this.B?this.G(a,b,d):this.Ha(a,b,d)},ja:function(a,b,d){if(this.D&&
b,d){if(this.F&&null!=this.B){var c=this.F;Yb(c,this.B+a,2,c.C)&&c.ba(!0)}this.C?this.H(a,b,d):this.Ab(a,b,d)},N:function(a){return this.i[a]},R:function(a){return this.i[a]},T:function(a){return this.D.getUint16(a,!0)},W:function(a){return a&1?this.i[a]|this.i[a+1]<<8:this.L[a>>1]},ca:function(a,b){this.i[a]=b;this.va=!0},fa:function(a,b){this.i[a]=b;this.va=!0},ja:function(a,b){this.D.setUint16(a,b,!0);this.va=!0},pa:function(a,b){a&1?(this.i[a]=b,this.i[a+1]=b>>8):this.L[a>>1]=b;this.va=!0}}; null!=this.A){var c=this.D;Zb(c,this.A+a,2,c.B)&&c.aa(!0)}this.B?this.G(a,b,d):this.zb(a,b,d)},M:function(a){return this.g[a]},P:function(a){return this.g[a]},S:function(a){return this.C.getUint16(a,!0)},V:function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.K[a>>1]},ba:function(a,b){this.g[a]=b;this.ta=!0},ea:function(a,b){this.g[a]=b;this.ta=!0},ia:function(a,b){this.C.setUint16(a,b,!0);this.ta=!0},na:function(a,b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.K[a>>1]=b;this.ta=!0}};
function vb(a,b,d){a.F=b;a.j=a.w=0;d&&((a.j=d.j)&&Xb(a,Wb,!1),(a.w=d.w)&&Vb(a,Wb,!1))}function Zb(a,b){b?0===--a.w&&(a.J=a.C?a.H:a.Ia):0===--a.j&&(a.G=a.Qa)}function Vb(a,b,d){d&&a.w||(a.J=!a.C&&b[2]||a.H);if(d||void 0===d)a.Ia=b[2]||a.H,a.Ab=b[3]||a.oa}function Xb(a,b,d){d&&a.j||(a.G=b[0]||a.M);if(d||void 0===d)a.Qa=b[0]||a.M,a.xb=b[1]||a.V}function Rb(a,b){b||(b=$b);Xb(a,b,void 0);Vb(a,b,void 0)} function wb(a,b,d){a.D=b;a.i=a.u=0;d&&((a.i=d.i)&&Yb(a,Xb,!1),(a.u=d.u)&&Wb(a,Xb,!1))}function $b(a,b){b?0===--a.u&&(a.I=a.B?a.G:a.Ha):0===--a.i&&(a.F=a.Qa)}function Wb(a,b,d){d&&a.u||(a.I=!a.B&&b[2]||a.G);if(d||void 0===d)a.Ha=b[2]||a.G,a.zb=b[3]||a.ma}function Yb(a,b,d){d&&a.i||(a.F=b[0]||a.L);if(d||void 0===d)a.Qa=b[0]||a.L,a.xb=b[1]||a.U}function Sb(a,b){b||(b=ac);Yb(a,b,void 0);Wb(a,b,void 0)}
var $b=[],Ub=[D.prototype.S,D.prototype.$,D.prototype.ga,D.prototype.na],Wb=[D.prototype.O,D.prototype.U,D.prototype.da,D.prototype.ka];if(rb)var Tb=[D.prototype.N,D.prototype.T,D.prototype.ca,D.prototype.ja],Sb=[D.prototype.R,D.prototype.W,D.prototype.fa,D.prototype.pa]; var ac=[],Vb=[G.prototype.R,G.prototype.Z,G.prototype.fa,G.prototype.oa],Xb=[G.prototype.O,G.prototype.T,G.prototype.ca,G.prototype.ja];if(sb)var Ub=[G.prototype.M,G.prototype.S,G.prototype.ba,G.prototype.ia],Tb=[G.prototype.P,G.prototype.V,G.prototype.ea,G.prototype.na];
function ac(a,b){t.call(this,"CPU",a,ac,1);var d=a.multiplier||1;this.$a=a.cycles||b;this.Ba=d;this.La=Math.round(this.$a/1E4)/100;this.Aa=this.La*this.Ba;this.A.Z=!1;this.A.fb=!1;this.A.Ja=a.autoStart;this.A.kb=!1;this.A.Ea=!1;this.Na=this.ca=0;this.Oa=a.csStart;this.Fa=a.csInterval;this.Ga=a.csStop;this.oa=[];this.Ib=this.Ca.bind(this);A(this)}v(ac);var bc=["power","reset"];m=ac.prototype; function bc(a,b){v.call(this,"CPU",a,bc,1);var d=a.multiplier||1;this.Za=a.cycles||b;this.Aa=d;this.La=Math.round(this.Za/1E4)/100;this.za=this.La*this.Aa;this.w.Y=!1;this.w.eb=!1;this.w.Ka=a.autoStart;this.w.jb=!1;this.w.Da=!1;this.Na=this.ba=0;this.Oa=a.csStart;this.Ea=a.csInterval;this.Fa=a.csStop;this.ma=[];this.Hb=this.Ba.bind(this);E(this)}y(bc);var cc=["power","reset"];m=bc.prototype;
m.za=function(a,b,d,c){this.D=a;this.H=b;this.F=c;for(b=0;b<bc.length;b++)(d=this.K[bc[b]])&&this.D.ha(null,bc[b],d);this.ja=null;a=cc(a,"autoStart");null!=a&&(this.A.Ja="true"==a?!0:"false"==a?!1:!!a);A(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1}; m.ya=function(a,b,d,c){this.C=a;this.G=b;this.D=c;for(b=0;b<cc.length;b++)(d=this.J[cc[b]])&&this.C.ga(null,cc[b],d);this.ia=null;a=dc(a,"autoStart");null!=a&&(this.w.Ka="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
m.sa=function(a,b){if(!b){if(a&&this.restore){dc(this);if(!this.restore(a))return!1;ec(this)}else this.reset();if(this.F){var d=this.F;d.u("Type ? for help with PDP11 Debugger commands");d.ia();if(d.ka){var c=d.ka;d.ka=null;fc(d,c)}}else this.u("No debugger detected")}F(this);return!0};m.ra=function(a){return a?this.save():!0};m.Ja=function(){return this.A.Ja||!this.F&&void 0===this.K.run?(this.Ca(!0),!0):!1};m.mb=function(){return 0}; m.ra=function(a,b){if(!b){if(a&&this.restore){ec(this);if(!this.restore(a))return!1;fc(this)}else this.reset();if(this.D){var d=this.D;d.j("Type ? for help with PDP11 Debugger commands");d.ha();if(d.ja){var c=d.ja;d.ja=null;gc(d,c)}}else this.j("No debugger detected")}H(this);return!0};m.qa=function(a){return a?this.save():!0};m.Ka=function(){return this.w.Ka||!this.D&&void 0===this.J.run?(this.Ba(!0),!0):!1};m.lb=function(){return 0};
function ec(a){void 0===a.Oa&&(a.Oa=0);void 0===a.Fa&&(a.Fa=-1);void 0===a.Ga&&(a.Ga=-1);a.A.Ea=0<=a.Oa&&0<a.Fa;a.A.Ea&&(a.Na=0,a.ca=a.Oa-a.V)}function gc(a,b){if(a.A.Ea){var d=!1;a.Na=a.Na+a.mb()|0;a.ca-=b;0>=a.ca&&(a.ca+=a.Fa,d=!0);0<=a.Ga&&a.Ga<=hc(a)&&(a.Fa=a.Ga=-1,ec(a),a.ba(),d=!0);d&&a.u(hc(a)+" cycles: checksum="+p(a.Na))}} function fc(a){void 0===a.Oa&&(a.Oa=0);void 0===a.Ea&&(a.Ea=-1);void 0===a.Fa&&(a.Fa=-1);a.w.Da=0<=a.Oa&&0<a.Ea;a.w.Da&&(a.Na=0,a.ba=a.Oa-a.U)}function hc(a,b){if(a.w.Da){var d=!1;a.Na=a.Na+a.lb()|0;a.ba-=b;0>=a.ba&&(a.ba+=a.Ea,d=!0);0<=a.Fa&&a.Fa<=ic(a)&&(a.Ea=a.Fa=-1,fc(a),a.aa(),d=!0);d&&a.j(ic(a)+" cycles: checksum="+q(a.Na))}}
function ic(a,b,d,c){a.K[b]&&(void 0===d&&(qb(a,"Value for "+b+" is invalid"),a.ba()),d=!a.A.Z||a.A.kb?p(d,c):"--------".substr(0,c),a.K[b].textContent!=d&&(a.K[b].textContent=d))} function jc(a,b,d,c){a.J[b]&&(void 0===d&&(rb(a,"Value for "+b+" is invalid"),a.aa()),d=!a.w.Y||a.w.jb?q(d,c):"--------".substr(0,c),a.J[b].textContent!=d&&(a.J[b].textContent=d))}
m.ha=function(a,b,d){var c=this;a=!1;switch(b){case "power":case "reset":this.K[b]=d;a=!0;break;case "run":this.K[b]=d;d.onclick=function(){var a;if(a=c.D)if(a=c.D,a.A.X)a=!0;else{var b=null,d,g=ab(a.id);for(d=0;d<g.length&&(b=g[d],b===a||b.A.ready);d++);if(d==g.length)for(d=0;d<g.length&&(b=g[d],b===a||b.A.X);d++);d==g.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.A.ready?"powered yet":"ready yet"+(b.Ta?" (waiting for notification)":""))+".");a=!1}a&&(c.A.Z?c.ba():c.Ca())};a=!0; m.ga=function(a,b,d){var c=this;a=!1;switch(b){case "power":case "reset":this.J[b]=d;a=!0;break;case "run":this.J[b]=d;d.onclick=function(){var a;if(a=c.C)if(a=c.C,a.w.W)a=!0;else{var b=null,d,g=bb(a.id);for(d=0;d<g.length&&(b=g[d],b===a||b.w.ready);d++);if(d==g.length)for(d=0;d<g.length&&(b=g[d],b===a||b.w.W);d++);d==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.w.ready?"powered yet":"ready yet"+(b.Ta?" (waiting for notification)":""))+".");a=!1}a&&(c.w.Y?c.aa():c.Ba())};a=!0;
break;case "speed":this.K[b]=d;a=!0;break;case "setSpeed":this.K[b]=d,d.onclick=function(){jc(c,c.Ba<<1,!0)},d.textContent=this.Aa.toFixed(2)+"Mhz",a=!0}return a};function kc(a,b,d){a.V+=b;d&&(a.U=a.R=0)}function lc(a,b){var d=1;b&&1<a.Ba&&a.S&&(d=a.S/a.La);a.ub=Math.round(1E3/30);a.wa=Math.floor(a.$a/30*d);b||(a.da=a.wa);a.cb=0}function hc(a){return a.V+a.O+a.U-a.R}function dc(a){a.S=0;a.vb=0;a.V=a.O=a.U=a.R=0;ec(a);jc(a,1)} break;case "speed":this.J[b]=d;a=!0;break;case "setSpeed":this.J[b]=d,d.onclick=function(){kc(c,c.Aa<<1,!0)},d.textContent=this.za.toFixed(2)+"Mhz",a=!0}return a};function lc(a,b,d){a.U+=b;d&&(a.T=a.P=0)}function mc(a,b){var d=1;b&&1<a.Aa&&a.R&&(d=a.R/a.La);a.tb=Math.round(1E3/30);a.ua=Math.floor(a.Za/30*d);b||(a.ca=a.ua);a.$a=0}function ic(a){return a.U+a.O+a.T-a.P}function ec(a){a.R=0;a.ub=0;a.U=a.O=a.T=a.P=0;fc(a);kc(a,1)}
function jc(a,b,d){var c=!1;if(void 0!==b){.8>a.S/a.Aa?b=1:c=!0;a.Ba=b;b=a.La*a.Ba;if(a.Aa!=b){a.Aa=b;b=a.Aa.toFixed(2)+"Mhz";var e=a.K.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}d&&a.D&&a.D.Ra()}kc(a,a.O);a.O=0;a.N=ta();a.T=0;lc(a);return c}function mc(a){a.U-=a.R;a.R=0} function kc(a,b,d){var c=!1;if(void 0!==b){.8>a.R/a.za?b=1:c=!0;a.Aa=b;b=a.La*a.Aa;if(a.za!=b){a.za=b;b=a.za.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.j("target speed: "+b)}d&&a.C&&a.C.Ra()}lc(a,a.O);a.O=0;a.M=ta();a.S=0;mc(a);return c}function nc(a){a.T-=a.P;a.P=0}
m.Ca=function(a){if(nb(this,!0)){if(!this.A.Z){jc(this);this.D&&this.D.start(this.N,hc(this));this.A.Z=!0;this.A.fb=!0;this.ja&&this.ja.start();var b=this.K.run;b&&(b.textContent="Halt");this.D&&(this.D.ia(!0),a&&this.D.Ra(!0))}this.cb>=this.$a&&lc(this,!0);this.ka=0;this.na=ta();this.T&&(a=this.na-this.T,a>this.ub&&(this.N+=a,this.N>this.na&&(this.N=this.na)));try{do{for(var d=this.A.Ea?1:this.wa,c=this.oa.length-1;0<=c;c--){var e=this.oa[c];0>e[0]||d>e[0]&&(d=e[0])}this.Ha(d);var f=this.U-this.R; m.Ba=function(a){if(ob(this,!0)){if(!this.w.Y){kc(this);this.C&&this.C.start(this.M,ic(this));this.w.Y=!0;this.w.eb=!0;this.ia&&this.ia.start();var b=this.J.run;b&&(b.textContent="Halt");this.C&&(this.C.ha(!0),a&&this.C.Ra(!0))}this.$a>=this.Za&&mc(this,!0);this.ja=0;this.oa=ta();this.S&&(a=this.oa-this.S,a>this.tb&&(this.M+=a,this.M>this.oa&&(this.M=this.oa)));try{do{for(var d=this.w.Da?1:this.ua,c=this.ma.length-1;0<=c;c--){var e=this.ma[c];0>e[0]||d>e[0]&&(d=e[0])}this.Ga(d);var f=this.T-this.P;
a=f;for(var h=this.oa.length-1;0<=h;h--){var g=this.oa[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ka+=f;this.O+=f;kc(this,0,!0);gc(this,f);this.da-=f;if(0>=this.da){this.da+=this.wa;15<=++this.vb&&(this.D&&this.D.ia(),this.vb=0);break}}while(this.A.Z)}catch(k){this.ba();F(this);this.D&&this.D.stop(ta(),hc(this));nb(this,!1);qb(this,k.stack||k.message);return}d=setTimeout;c=this.Ib;this.T=ta();e=this.ub;this.ka&&(e=Math.round(e*this.ka/this.wa));e=e-(this.T-this.na);if(f=this.T-this.N)this.S= a=f;for(var h=this.ma.length-1;0<=h;h--){var g=this.ma[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ja+=f;this.O+=f;lc(this,0,!0);hc(this,f);this.ca-=f;if(0>=this.ca){this.ca+=this.ua;15<=++this.ub&&(this.C&&this.C.ha(),this.ub=0);break}}while(this.w.Y)}catch(k){this.aa();H(this);this.C&&this.C.stop(ta(),ic(this));ob(this,!1);rb(this,k.stack||k.message);return}d=setTimeout;c=this.Hb;this.S=ta();e=this.tb;this.ja&&(e=Math.round(e*this.ja/this.ua));e=e-(this.S-this.oa);if(f=this.S-this.M)this.R=
Math.round(this.O/(10*f))/100,864E5<=f&&(this.V=0,jc(this));if(0>e||this.S<this.Aa)-1E3>e&&(this.N-=e),e=0;this.cb+=this.ka;this.T+=e;d(c,e)}else F(this),this.D&&this.D.stop(ta(),hc(this))};m.Ha=function(){return 0};m.ba=function(a){ob(this,!0);mc(this);kc(this,this.O);this.O=0;if(this.A.Z){this.A.Z=!1;this.ja&&this.ja.stop();var b=this.K.run;b&&(b.textContent="Run")}this.A.complete=a};function F(a,b){a.D&&a.D.ia(b)} Math.round(this.O/(10*f))/100,864E5<=f&&(this.U=0,kc(this));if(0>e||this.R<this.za)-1E3>e&&(this.M-=e),e=0;this.$a+=this.ja;this.S+=e;d(c,e)}else H(this),this.C&&this.C.stop(ta(),ic(this))};m.Ga=function(){return 0};m.aa=function(a){pb(this,!0);nc(this);lc(this,this.O);this.O=0;if(this.w.Y){this.w.Y=!1;this.ia&&this.ia.stop();var b=this.J.run;b&&(b.textContent="Run")}this.w.complete=a};function H(a,b){a.C&&a.C.ha(b)}
function zc(a){this.rb=+a.model||1170;ac.call(this,a,1E6);this.nb=0;this.w=65536;this.i=this.b=32768;this.j=65535;this.I=15;this.g=[0,0,0,0,0,0,0,0];this.zb=[0,0,0,0,0,0];this.fa=[0,0,0,0];this.memory=[];this.J=[];this.eb=this.wb=0;this.W=2;this.$=255;this.G=0;this.ga=-1;this.tb=this.Ma=this.sb=this.C=this.Ka=this.M=this.L=0;this.pa=[7,7,7,7];this.Za=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,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, function Ac(a){this.rb=+a.model||1170;bc.call(this,a,1E6);this.mb=0;this.u=65536;this.g=this.b=32768;this.i=65535;this.H=15;this.f=[0,0,0,0,0,0,0,0];this.wb=[0,0,0,0,0,0];this.ea=[0,0,0,0];this.memory=[];this.I=[];this.cb=this.vb=0;this.V=2;this.Z=255;this.F=0;this.fa=-1;this.sb=this.Ma=this.qb=this.B=this.Ja=this.L=this.K=0;this.na=[7,7,7,7];this.Ya=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,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.A.complete=this.A.Eb=!1}v(zc,ac);m=zc.prototype;m.reset=function(){this.A.Z&&this.ba();Ac(this);dc(this);this.A.error=!1;this.parent.reset.call(this)}; 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.Jb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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.w.complete=this.w.Db=!1}y(Ac,bc);m=Ac.prototype;m.reset=function(){this.w.Y&&this.aa();Bc(this);ec(this);this.w.error=!1;this.parent.reset.call(this)};
function Ac(a){a.$=255;a.J=[];a.wb=0;a.L=a.M=a.Ka=a.sb=0;a.pa[0]=a.pa[1]=a.pa[3]=7;a.Ma=0}m.mb=function(){return 0};m.save=function(){var a=new G(this);H(a,0,[]);H(a,1,[this.qb,this.V,this.Ba]);for(var b=this.H,d=0,c=[],e=0;e<b.H;e++){var f=b.P[e];if(f.va||f.Fb){c[d++]=e;var h=d++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var n=f[g],q=g+1;q<f.length&&f[q]===n;)q++;l[k++]=q-g;l[k++]=n;g=q}if(l.length<f.length){f=l;break a}}c[h]=f}}H(a,2,c);return a.data()}; function Bc(a){a.Z=255;a.I=[];a.vb=0;a.K=a.L=a.Ja=a.qb=0;a.na[0]=a.na[1]=a.na[3]=7;a.Ma=0}m.lb=function(){return 0};m.save=function(){var a=new I(this);J(a,0,[]);J(a,1,[this.pb,this.U,this.Aa]);for(var b=this.G,d=0,c=[],e=0;e<b.G;e++){var f=b.N[e];if(f.ta||f.Eb){c[d++]=e;var h=d++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var n=f[g],p=g+1;p<f.length&&f[p]===n;)p++;l[k++]=p-g;l[k++]=n;g=p}if(l.length<f.length){f=l;break a}}c[h]=f}}J(a,2,c);return a.data()};
m.restore=function(a){var b=a[1];this.qb=b[0];this.V=b[1];jc(this,b[3]);a:{b=this.H;a=a[2];var d;for(d=0;d<a.length-1;d+=2){var c=a[d],e=a[d+1];if(e&&e.length<b.C){for(var f=0,h=Array(b.C),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.P[c];if(!f||!f.restore(e)){r("Unable to restore memory block "+c);b=!1;break a}}b=!0}return b}; m.restore=function(a){var b=a[1];this.pb=b[0];this.U=b[1];kc(this,b[3]);a:{b=this.G;a=a[2];var d;for(d=0;d<a.length-1;d+=2){var c=a[d],e=a[d+1];if(e&&e.length<b.B){for(var f=0,h=Array(b.B),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.N[c];if(!f||!f.restore(e)){t("Unable to restore memory block "+c);b=!1;break a}}b=!0}return b};
m.ha=function(a,b,d){var c=!1;switch(b){case "PC":case "PSW":case "SF":case "ZF":case "CF":this.K[b]=d;this.nb++;c=!0;break;default:c=this.parent.ha.call(this,a,b,d)}return c};m.ia=function(a){this.nb&&(a||!this.A.Z||this.A.kb)&&(a=this.I&-14|0|(this.ta&255?0:4)|(this.ta&256?1:0),ic(this,"PSW",a,4),ic(this,"SF",a&8?1:0,1),ic(this,"ZF",a&4?1:0,1),ic(this,"CF",a&1?1:0,1));if(a=this.K.speed)a.textContent=this.A.Z&&this.S?this.S.toFixed(2)+"Mhz":"Stopped"}; m.ga=function(a,b,d){var c=!1;switch(b){case "PC":case "PSW":case "SF":case "ZF":case "CF":this.J[b]=d;this.mb++;c=!0;break;default:c=this.parent.ga.call(this,a,b,d)}return c};m.ha=function(a){this.mb&&(a||!this.w.Y||this.w.jb)&&(a=this.H&-14|0|(this.sa&255?0:4)|(this.sa&256?1:0),jc(this,"PSW",a,4),jc(this,"SF",a&8?1:0,1),jc(this,"ZF",a&4?1:0,1),jc(this,"CF",a&1?1:0,1));if(a=this.J.speed)a.textContent=this.w.Y&&this.R?this.R.toFixed(2)+"Mhz":"Stopped"};
function Bc(a,b){var d,c;a.b=b<<12;a.j=~b&4;a.i=b<<14;a.w=b<<16;if((b^a.I)&2048)for(d=0;6>d;d++)c=a.g[d],a.g[d]=a.zb[d],a.zb[d]=c;(a.C=b>>14&3)!==(a.I>>14&3)&&(a.fa[c]=a.g[6],a.g[6]=a.fa[a.C]);a.W=2;a.I=b} function Cc(a,b){var d,c;a.b=b<<12;a.i=~b&4;a.g=b<<14;a.u=b<<16;if((b^a.H)&2048)for(d=0;6>d;d++)c=a.f[d],a.f[d]=a.wb[d],a.wb[d]=c;(a.B=b>>14&3)!==(a.H>>14&3)&&(a.ea[c]=a.f[6],a.f[6]=a.ea[a.B]);a.V=2;a.H=b}
function I(a,b){var d,c,e=0;0>a.ga?(a.I=a.I&63728|a.b>>12&8|a.i>>14&2|a.w>>16&1,a.j&65535||(a.I|=4),a.ga=a.I):a.C||(b=4,e=1);a.L&57344||(a.M=63222);a.C=0;0<=(d=L(a,b|65536))&&0<=(c=L(a,b+2&65535|65536))&&(Bc(a,c&53247|a.ga>>2&12288),e&&(a.g[6]=4),0<=Cc(a,a.ga)&&0<=Cc(a,a.g[7])&&(a.g[7]=d));a.G=0;return a.ga=-1} function L(a,b){var d,c,e=0;0>a.fa?(a.H=a.H&63728|a.b>>12&8|a.g>>14&2|a.u>>16&1,a.i&65535||(a.H|=4),a.fa=a.H):a.B||(b=4,e=1);a.K&57344||(a.L=63222);a.B=0;0<=(d=M(a,b|65536))&&0<=(c=M(a,b+2&65535|65536))&&(Cc(a,c&53247|a.fa>>2&12288),e&&(a.f[6]=4),0<=Dc(a,a.fa)&&0<=Dc(a,a.f[7])&&(a.f[7]=d));a.F=0;return a.fa=-1}
function Dc(a,b,d){var c,e,f,h=0;if(d&a.sb){c=b>>13&a.pa[a.C];e=a.Za[a.C][c];f=(a.Za[a.C][c+16]<<6)+(b&8191)&4194303;if(a.Ka&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.Ka&32&&(f=a.Kb[g]+(f&8190)&4194302,3932160<=f&&4186112>f&&console.log("panic(898)")):f|=4186112}}else f&=262143,253952<=f&&(f|=4186112);if(3932160>f&&(3915776<=f||f&1&&!(d&1)))return I(a,4);switch(e&7){case 1:h=4096;case 2:e|=128;d&4&&(h=8192);break;case 4:h=4096;case 5:d&4&&(h=4096);case 6:e|=d&4?192:128;break; function Ec(a,b,d){var c,e,f,h=0;if(d&a.qb){c=b>>13&a.na[a.B];e=a.Ya[a.B][c];f=(a.Ya[a.B][c+16]<<6)+(b&8191)&4194303;if(a.Ja&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.Ja&32&&(f=a.Jb[g]+(f&8190)&4194302,3932160<=f&&4186112>f&&console.log("panic(898)")):f|=4186112}}else f&=262143,253952<=f&&(f|=4186112);if(3932160>f&&(3915776<=f||f&1&&!(d&1)))return L(a,4);switch(e&7){case 1:h=4096;case 2:e|=128;d&4&&(h=8192);break;case 4:h=4096;case 5:d&4&&(h=4096);case 6:e|=d&4?192:128;break;
default:h=32768}32512!==(e&32520)&&(e&8?e&32512&&(b&8128)<(e>>2&8128)&&(h|=16384):(b&8128)>(e>>2&8128)&&(h|=16384));a.Za[a.C][c]=e;if(4194170!==f||a.C)a.Ma=a.C,a.tb=c;if(h){if(h&57344)return 0<=a.ga&&(h|=128),a.L&57344||(a.L=a.L|h|a.Ma<<5|a.tb<<1),I(a,168);a.L&61440||!(4191360>f||4194239<f)||(a.L|=4096,a.L&512&&(a.G|=2))}}else if(f=b&65535,57344<=f)f|=4186112;else if(f&1&&!(d&1))return I(a,4);return f}function M(a,b){return 4194304<=b?a.g[b-4194304]:3932160<=b?-1:0<=b?a.memory[b>>1]:b} default:h=32768}32512!==(e&32520)&&(e&8?e&32512&&(b&8128)<(e>>2&8128)&&(h|=16384):(b&8128)>(e>>2&8128)&&(h|=16384));a.Ya[a.B][c]=e;if(4194170!==f||a.B)a.Ma=a.B,a.sb=c;if(h){if(h&57344)return 0<=a.fa&&(h|=128),a.K&57344||(a.K=a.K|h|a.Ma<<5|a.sb<<1),L(a,168);a.K&61440||!(4191360>f||4194239<f)||(a.K|=4096,a.K&512&&(a.F|=2))}}else if(f=b&65535,57344<=f)f|=4186112;else if(f&1&&!(d&1))return L(a,4);return f}function N(a,b){return 4194304<=b?a.f[b-4194304]:3932160<=b?-1:0<=b?a.memory[b>>1]:b}
function N(a,b,d){d&=65535;return 4194304<=b?a.g[b-4194304]=d:3932160<=b?-1:0<=b?a.memory[b>>1]=d:b}function Q(a,b){var d;return 4194304<=b?a.g[b-4194304]&255:3932160<=b?-1:0<=b?(d=a.memory[b>>1],b&1&&(d=d>>8),d&255):b}function R(a,b,d){d&=255;return 4194304<=b?a.g[b-4194304]=a.g[b-4194304]&65280|d:3932160<=b?-1:0<=b?b&1?a.memory[b>>1]=d<<8|a.memory[b>>1]&255:a.memory[b>>1]=a.memory[b>>1]&65280|d:b}function L(a,b){return M(a,Dc(a,b,2))} function Q(a,b,d){d&=65535;return 4194304<=b?a.f[b-4194304]=d:3932160<=b?-1:0<=b?a.memory[b>>1]=d:b}function R(a,b){var d;return 4194304<=b?a.f[b-4194304]&255:3932160<=b?-1:0<=b?(d=a.memory[b>>1],b&1&&(d=d>>8),d&255):b}function S(a,b,d){d&=255;return 4194304<=b?a.f[b-4194304]=a.f[b-4194304]&65280|d:3932160<=b?-1:0<=b?b&1?a.memory[b>>1]=d<<8|a.memory[b>>1]&255:a.memory[b>>1]=a.memory[b>>1]&65280|d:b}function M(a,b){return N(a,Ec(a,b,2))}
function Ec(a){var b=L(a,a.g[6]|65536);0<=b&&(a.g[6]=a.g[6]+2&65535);return b}function Cc(a,b){var d,c;a.g[6]=c=a.g[6]-2&65535;a.L&57344||(a.M=a.M<<8|246);if(!a.C&&c<=a.$&&4<c){if(c<=a.$-32)return a.g[6]=4,I(a,4);a.G|=4}return 0<=(d=Dc(a,c|65536,4))?N(a,d,b):d} function Fc(a){var b=M(a,a.f[6]|65536);0<=b&&(a.f[6]=a.f[6]+2&65535);return b}function Dc(a,b){var d,c;a.f[6]=c=a.f[6]-2&65535;a.K&57344||(a.L=a.L<<8|246);if(!a.B&&c<=a.Z&&4<c){if(c<=a.Z-32)return a.f[6]=4,L(a,4);a.F|=4}return 0<=(d=Ec(a,c|65536,4))?Q(a,d,b):d}
function Fc(a,b,d){var c,e,f=b&7;switch(b>>3&7){case 0:return I(a,4);case 1:if(6===f&&!a.C&&d&4&&(a.g[6]<=a.$||65534<=a.g[6])){if(a.g[6]<=a.$-32||65534<=a.g[6])return a.g[6]=4,I(a,4);a.G|=4}return 7===f?a.g[f]:a.g[f]|65536;case 2:e=2;c=a.g[f];7!==f&&(c|=65536,6>f&&d&1&&(e=1));break;case 3:e=2;c=a.g[f];7!==f&&(c|=65536);if(0>(c=L(a,c)))return c;c|=65536;break;case 4:e=-2;6>f&&d&1&&(e=-1);c=a.g[f]+e&65535;7!==f&&(c|=65536);break;case 5:e=-2;c=a.g[f]-2&65535;7!==f&&(c|=65536);if(0>(c=L(a,c)))return c; function Gc(a,b,d){var c,e,f=b&7;switch(b>>3&7){case 0:return L(a,4);case 1:if(6===f&&!a.B&&d&4&&(a.f[6]<=a.Z||65534<=a.f[6])){if(a.f[6]<=a.Z-32||65534<=a.f[6])return a.f[6]=4,L(a,4);a.F|=4}return 7===f?a.f[f]:a.f[f]|65536;case 2:e=2;c=a.f[f];7!==f&&(c|=65536,6>f&&d&1&&(e=1));break;case 3:e=2;c=a.f[f];7!==f&&(c|=65536);if(0>(c=M(a,c)))return c;c|=65536;break;case 4:e=-2;6>f&&d&1&&(e=-1);c=a.f[f]+e&65535;7!==f&&(c|=65536);break;case 5:e=-2;c=a.f[f]-2&65535;7!==f&&(c|=65536);if(0>(c=M(a,c)))return c;
c|=65536;break;case 6:if(0>(c=L(a,a.g[7])))return c;a.g[7]=a.g[7]+2&65535;c=c+a.g[f]&65535;return c|65536;case 7:if(0>(c=L(a,a.g[7])))return c;a.g[7]=a.g[7]+2&65535;c=c+a.g[f]&65535;return 0>(c=L(a,c|65536))?c:c|65536}a.g[f]=a.g[f]+e&65535;a.L&57344||(a.M=a.M<<8|e<<3&248|f);if(6===f&&!a.C&&d&4&&0>=e&&(a.g[6]<=a.$||65534<=a.g[6])){if(a.g[6]<=a.$-32)return a.g[6]=4,I(a,4);a.G|=4}return c}function S(a,b,d){var c;return b&56?(0<=(c=Fc(a,b,d))&&(c=Dc(a,c,d)),c):4194304+(b&7)} c|=65536;break;case 6:if(0>(c=M(a,a.f[7])))return c;a.f[7]=a.f[7]+2&65535;c=c+a.f[f]&65535;return c|65536;case 7:if(0>(c=M(a,a.f[7])))return c;a.f[7]=a.f[7]+2&65535;c=c+a.f[f]&65535;return 0>(c=M(a,c|65536))?c:c|65536}a.f[f]=a.f[f]+e&65535;a.K&57344||(a.L=a.L<<8|e<<3&248|f);if(6===f&&!a.B&&d&4&&0>=e&&(a.f[6]<=a.Z||65534<=a.f[6])){if(a.f[6]<=a.Z-32)return a.f[6]=4,L(a,4);a.F|=4}return c}function T(a,b,d){var c;return b&56?(0<=(c=Gc(a,b,d))&&(c=Ec(a,c,d)),c):4194304+(b&7)}
function T(a,b){var d;b&56?0<=(d=S(a,b,2))&&(d=M(a,d)):d=a.g[b&7];return d}function Gc(a,b){var d;b&56?0<=(d=S(a,b,3))&&(d=Q(a,d)):d=a.g[b&7]&255;return d}function U(a,b){return((b&128?b|65280:b&255)<<1)+a&65535} function U(a,b){var d;b&56?0<=(d=T(a,b,2))&&(d=N(a,d)):d=a.f[b&7];return d}function Hc(a,b){var d;b&56?0<=(d=T(a,b,3))&&(d=R(a,d)):d=a.f[b&7]&255;return d}function V(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
m.Ha=function(a){this.A.complete=!0;var b=this.A.Eb=this.F&&Hc(this.F),d=a?this.A.fb?0:1:-1;this.A.fb=!1;this.U=this.R=a;this.qb&256?(mc(this),a=!1):a=!0;if(a){do{if(b){if(Ic(this.F,this.g[7],d)){this.ba();break}d=1}var c,e,f,h,g;if(this.W)if(1===this.W)this.W=2;else{this.W=0;g=-1;c=this.wb&224;if(0<(a=this.J.length))for(;0<a--;){if(0<this.J[a].Ya){this.J[a].Ya--;this.W=2;break}if(this.J[a].ib){if(!this.J[a].ib()){this.J.splice(a,1);g--;continue}this.J[a].ib=null}this.J[a].Hb>c&&(c=this.J[a].Hb,g= m.Ga=function(a){this.w.complete=!0;var b=this.w.Db=this.D&&Ic(this.D),d=a?this.w.eb?0:1:-1;this.w.eb=!1;this.T=this.P=a;this.pb&256?(nc(this),a=!1):a=!0;if(a){do{if(b){if(Jc(this.D,this.f[7],d)){this.aa();break}d=1}var c,e,f,h,g;if(this.V)if(1===this.V)this.V=2;else{this.V=0;g=-1;c=this.vb&224;if(0<(a=this.I.length))for(;0<a--;){if(0<this.I[a].Xa){this.I[a].Xa--;this.V=2;break}if(this.I[a].hb){if(!this.I[a].hb()){this.I.splice(a,1);g--;continue}this.I[a].hb=null}this.I[a].Gb>c&&(c=this.I[a].Gb,g=
a)}c>(this.I&224)&&(0>g?I(this,160):(I(this,this.J[g].Mb),this.J.splice(g,1)))}this.L&57344||(this.M=0);this.G=this.I&16;if(0<=(a=L(this,this.g[7])))switch(this.g[7]=this.g[7]+2&65535,a&61440){case 4096:0<=(c=T(this,a>>6))&&(a&56?0<=(f=S(this,a,4))&&0<=N(this,f,c)&&(this.b=this.j=c,this.i=0):(this.b=this.j=this.g[a&7]=c,this.i=0));break;case 8192:0<=(c=T(this,a>>6))&&0<=(e=T(this,a))&&(this.b=this.j=this.w=a=c-e,this.i=(c^e)&(c^a));break;case 12288:0<=(c=T(this,a>>6))&&0<=(e=T(this,a))&&(this.b=this.j= a)}c>(this.H&224)&&(0>g?L(this,160):(L(this,this.I[g].Lb),this.I.splice(g,1)))}this.K&57344||(this.L=0);this.F=this.H&16;if(0<=(a=M(this,this.f[7])))switch(this.f[7]=this.f[7]+2&65535,a&61440){case 4096:0<=(c=U(this,a>>6))&&(a&56?0<=(f=T(this,a,4))&&0<=Q(this,f,c)&&(this.b=this.i=c,this.g=0):(this.b=this.i=this.f[a&7]=c,this.g=0));break;case 8192:0<=(c=U(this,a>>6))&&0<=(e=U(this,a))&&(this.b=this.i=this.u=a=c-e,this.g=(c^e)&(c^a));break;case 12288:0<=(c=U(this,a>>6))&&0<=(e=U(this,a))&&(this.b=this.i=
c&e,this.i=0);break;case 16384:0<=(c=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e&~c,0<=N(this,f,a)&&(this.b=this.j=a,this.i=0)):(this.b=this.j=a=this.g[a&7]&=~c,this.i=0));break;case 20480:0<=(c=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e|c,0<=N(this,f,a)&&(this.b=this.j=a,this.i=0)):(this.b=this.j=a=this.g[a&7]|=c,this.i=0));break;case 24576:0<=(c=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=c+e,0<=N(this,f,a)&&(this.b=this.j=this.w=a,this.i=(c^a)&(e^a))):(g=a&7, c&e,this.g=0);break;case 16384:0<=(c=U(this,a>>6))&&(a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e&~c,0<=Q(this,f,a)&&(this.b=this.i=a,this.g=0)):(this.b=this.i=a=this.f[a&7]&=~c,this.g=0));break;case 20480:0<=(c=U(this,a>>6))&&(a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e|c,0<=Q(this,f,a)&&(this.b=this.i=a,this.g=0)):(this.b=this.i=a=this.f[a&7]|=c,this.g=0));break;case 24576:0<=(c=U(this,a>>6))&&(a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=c+e,0<=Q(this,f,a)&&(this.b=this.i=this.u=a,this.g=(c^a)&(e^a))):(g=a&7,
e=this.g[g],this.g[g]=(a=c+e)&65535,this.b=this.j=this.w=a,this.i=(c^a)&(e^a)));break;case 36864:0<=(c=Gc(this,a>>6))&&(a&56?0<=(f=S(this,a,5))&&0<=R(this,f,c)&&(this.b=this.j=c<<8,this.i=0):(c&128&&(c|=65280),this.b=this.j=this.g[a&7]=c,this.i=0));break;case 40960:0<=(c=Gc(this,a>>6))&&0<=(e=Gc(this,a))&&(a=c-e,this.b=this.j=this.w=a<<8,this.i=((c^e)&(c^a))<<8);break;case 45056:0<=(c=Gc(this,a>>6))&&0<=(e=Gc(this,a))&&(this.b=this.j=(c&e)<<8,this.i=0);break;case 49152:0<=(c=Gc(this,a>>6))&&0<=(e= e=this.f[g],this.f[g]=(a=c+e)&65535,this.b=this.i=this.u=a,this.g=(c^a)&(e^a)));break;case 36864:0<=(c=Hc(this,a>>6))&&(a&56?0<=(f=T(this,a,5))&&0<=S(this,f,c)&&(this.b=this.i=c<<8,this.g=0):(c&128&&(c|=65280),this.b=this.i=this.f[a&7]=c,this.g=0));break;case 40960:0<=(c=Hc(this,a>>6))&&0<=(e=Hc(this,a))&&(a=c-e,this.b=this.i=this.u=a<<8,this.g=((c^e)&(c^a))<<8);break;case 45056:0<=(c=Hc(this,a>>6))&&0<=(e=Hc(this,a))&&(this.b=this.i=(c&e)<<8,this.g=0);break;case 49152:0<=(c=Hc(this,a>>6))&&0<=(e=
Q(this,f=S(this,a,7)))&&(a=e&~c,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=0));break;case 53248:0<=(c=Gc(this,a>>6))&&0<=(e=Q(this,f=S(this,a,7)))&&(a=e|c,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=0));break;case 57344:0<=(c=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e-c,0<=N(this,f,a)&&(this.b=this.j=this.w=a,this.i=(c^e)&(e^a))):(g=a&7,e=this.g[g],this.g[g]=(a=e-c)&65535,this.b=this.j=this.w=a,this.i=(c^e)&(e^a)));break;default:switch(a&65024){case 2048:0<=(h=Fc(this,a,0))&&(g=a>>6&7, R(this,f=T(this,a,7)))&&(a=e&~c,0<=S(this,f,a)&&(this.b=this.i=a<<8,this.g=0));break;case 53248:0<=(c=Hc(this,a>>6))&&0<=(e=R(this,f=T(this,a,7)))&&(a=e|c,0<=S(this,f,a)&&(this.b=this.i=a<<8,this.g=0));break;case 57344:0<=(c=U(this,a>>6))&&(a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e-c,0<=Q(this,f,a)&&(this.b=this.i=this.u=a,this.g=(c^e)&(e^a))):(g=a&7,e=this.f[g],this.f[g]=(a=e-c)&65535,this.b=this.i=this.u=a,this.g=(c^e)&(e^a)));break;default:switch(a&65024){case 2048:0<=(h=Gc(this,a,0))&&(g=a>>6&7,
0<=Cc(this,this.g[g])&&(this.g[g]=this.g[7],this.g[7]=h&65535));break;case 28672:0<=(c=T(this,a))&&(g=a>>6&7,c&32768&&(c|=-65536),e=this.g[g],e&32768&&(e|=-65536),a=~~(c*e),this.g[g]=a>>16&65535,this.g[g|1]=a&65535,this.b=a>>16,this.j=this.b|a,this.w=this.i=0,-32768>a||32767<a)&&(this.w=65536);break;case 29184:0<=(c=T(this,a))&&(c?(g=a>>6&7,e=this.g[g]<<16|this.g[g|1],this.w=this.i=0,c&32768&&(c|=-65536),a=~~(e/c),-32768<=a&&32767>=a?(this.g[g]=a&65535,this.g[g|1]=e-a*c&65535,this.j=a>>16|a,this.b= 0<=Dc(this,this.f[g])&&(this.f[g]=this.f[7],this.f[7]=h&65535));break;case 28672:0<=(c=U(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.b=a>>16,this.i=this.b|a,this.u=this.g=0,-32768>a||32767<a)&&(this.u=65536);break;case 29184:0<=(c=U(this,a))&&(c?(g=a>>6&7,e=this.f[g]<<16|this.f[g|1],this.u=this.g=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.i=a>>16|a,this.b=
a>>16):(this.i=32768,this.j=a>>15|a,this.b=e>>16,-1===c&&65534===this.g[g]&&(this.g[g]=this.g[g|1]=1))):(this.j=this.b=0,this.i=32768,this.w=65536));break;case 29696:0<=(c=T(this,a))&&(g=a>>6&7,a=this.g[g],a&32768&&(a|=4294901760),this.w=this.i=0,c&=63,c&32?(c=64-c,16<c&&(c=16),this.w=a<<17-c,a=a>>c):c&&(16<c?(this.i=a,a=0):(this.w=a=a<<c,(e=a>>15&65535)&&65535!==e&&(this.i=32768))),this.g[g]=a&65535,this.b=this.j=a);break;case 30208:if(0<=(c=T(this,a))){g=a>>6&7;e=this.g[g]<<16|this.g[g|1];this.w= a>>16):(this.g=32768,this.i=a>>15|a,this.b=e>>16,-1===c&&65534===this.f[g]&&(this.f[g]=this.f[g|1]=1))):(this.i=this.b=0,this.g=32768,this.u=65536));break;case 29696:0<=(c=U(this,a))&&(g=a>>6&7,a=this.f[g],a&32768&&(a|=4294901760),this.u=this.g=0,c&=63,c&32?(c=64-c,16<c&&(c=16),this.u=a<<17-c,a=a>>c):c&&(16<c?(this.g=a,a=0):(this.u=a=a<<c,(e=a>>15&65535)&&65535!==e&&(this.g=32768))),this.f[g]=a&65535,this.b=this.i=a);break;case 30208:if(0<=(c=U(this,a))){g=a>>6&7;e=this.f[g]<<16|this.f[g|1];this.u=
this.i=0;c&=63;if(c&32)c=64-c,32<c&&(c=32),a=e>>c-1,this.w=a<<16,a>>=1,e&2147483648&&(a|=4294967295<<32-c);else if(c){if(a=e<<c-1,this.w=a>>15,a<<=1,32<c&&(c=32),e>>=32-c)e|=4294967295<<c&4294967295,4294967295!==e&&(this.i=32768)}else a=e;this.g[g]=a>>16&65535;this.g[g|1]=a&65535;this.b=a>>16;this.j=a>>16|a}break;case 30720:a&56?0<=(e=M(this,f=S(this,a,6)))&&(e^=this.g[a>>6&7],0<=N(this,f,e)&&(this.b=this.j=e,this.i=0)):(this.b=this.j=e=this.g[a&7]^=this.g[a>>6&7],this.i=0);break;case 32256:g=a>> this.g=0;c&=63;if(c&32)c=64-c,32<c&&(c=32),a=e>>c-1,this.u=a<<16,a>>=1,e&2147483648&&(a|=4294967295<<32-c);else if(c){if(a=e<<c-1,this.u=a>>15,a<<=1,32<c&&(c=32),e>>=32-c)e|=4294967295<<c&4294967295,4294967295!==e&&(this.g=32768)}else a=e;this.f[g]=a>>16&65535;this.f[g|1]=a&65535;this.b=a>>16;this.i=a>>16|a}break;case 30720:a&56?0<=(e=N(this,f=T(this,a,6)))&&(e^=this.f[a>>6&7],0<=Q(this,f,e)&&(this.b=this.i=e,this.g=0)):(this.b=this.i=e=this.f[a&7]^=this.f[a>>6&7],this.g=0);break;case 32256:g=a>>
6&7;if(this.g[g]=this.g[g]-1&65535)this.g[7]=this.g[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.g[7]=U(this.g[7],a);break;case 512:this.j&65535&&(this.g[7]=U(this.g[7],a));break;case 768:this.j&65535||(this.g[7]=U(this.g[7],a));break;case 1024:(this.b&32768)===(this.i&32768)&&(this.g[7]=U(this.g[7],a));break;case 1280:(this.b&32768)!==(this.i&32768)&&(this.g[7]=U(this.g[7],a));break;case 1536:this.j&65535&&(this.b&32768)===(this.i&32768)&&(this.g[7]=U(this.g[7],a));break;case 1792:this.j& 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]=V(this.f[7],a);break;case 512:this.i&65535&&(this.f[7]=V(this.f[7],a));break;case 768:this.i&65535||(this.f[7]=V(this.f[7],a));break;case 1024:(this.b&32768)===(this.g&32768)&&(this.f[7]=V(this.f[7],a));break;case 1280:(this.b&32768)!==(this.g&32768)&&(this.f[7]=V(this.f[7],a));break;case 1536:this.i&65535&&(this.b&32768)===(this.g&32768)&&(this.f[7]=V(this.f[7],a));break;case 1792:this.i&
65535&&(this.b&32768)===(this.i&32768)||(this.g[7]=U(this.g[7],a));break;case 32768:this.b&32768||(this.g[7]=U(this.g[7],a));break;case 33280:!(this.w&65536)&&this.j&65535&&(this.g[7]=U(this.g[7],a));break;case 33024:this.b&32768&&(this.g[7]=U(this.g[7],a));break;case 33536:if(this.w&65536||!(this.j&65535))this.g[7]=U(this.g[7],a);break;case 33792:this.i&32768||(this.g[7]=U(this.g[7],a));break;case 34048:this.i&32768&&(this.g[7]=U(this.g[7],a));break;case 34304:this.w&65536||(this.g[7]=U(this.g[7], 65535&&(this.b&32768)===(this.g&32768)||(this.f[7]=V(this.f[7],a));break;case 32768:this.b&32768||(this.f[7]=V(this.f[7],a));break;case 33280:!(this.u&65536)&&this.i&65535&&(this.f[7]=V(this.f[7],a));break;case 33024:this.b&32768&&(this.f[7]=V(this.f[7],a));break;case 33536:if(this.u&65536||!(this.i&65535))this.f[7]=V(this.f[7],a);break;case 33792:this.g&32768||(this.f[7]=V(this.f[7],a));break;case 34048:this.g&32768&&(this.f[7]=V(this.f[7],a));break;case 34304:this.u&65536||(this.f[7]=V(this.f[7],
a));break;case 34560:this.w&65536&&(this.g[7]=U(this.g[7],a));break;case 34816:I(this,24);break;case 35072:I(this,28);break;default:switch(a&65472){case 64:0<=(h=Fc(this,a,0))&&(this.g[7]=h&65535);break;case 192:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e<<8|e>>8,0<=N(this,f,a)&&(this.b=this.j=e&65280,this.i=this.w=0)):(g=a&7,e=this.g[g],this.g[g]=(e<<8|e>>8)&65535,this.b=this.j=e&65280,this.i=this.w=0);break;case 2560:a&56?0<=(f=S(this,a,4))&&0<=N(this,f,0)&&(this.b=this.w=this.i=this.j=0):this.b=this.w= a));break;case 34560:this.u&65536&&(this.f[7]=V(this.f[7],a));break;case 34816:L(this,24);break;case 35072:L(this,28);break;default:switch(a&65472){case 64:0<=(h=Gc(this,a,0))&&(this.f[7]=h&65535);break;case 192:a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e<<8|e>>8,0<=Q(this,f,a)&&(this.b=this.i=e&65280,this.g=this.u=0)):(g=a&7,e=this.f[g],this.f[g]=(e<<8|e>>8)&65535,this.b=this.i=e&65280,this.g=this.u=0);break;case 2560:a&56?0<=(f=T(this,a,4))&&0<=Q(this,f,0)&&(this.b=this.u=this.g=this.i=0):this.b=this.u=
this.i=this.j=this.g[a&7]=0;break;case 2624:0<=(e=M(this,f=S(this,a,6)))&&(a=~e,0<=N(this,f,a)&&(this.b=this.j=a,this.w=65536,this.i=0));break;case 2688:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e+1,0<=N(this,f,a)&&(this.b=this.j=a,this.i=a&(a^e))):(g=a&7,e=this.g[g],a=e+1,this.g[g]=a&65535,this.b=this.j=a,this.i=a&(a^e));break;case 2752:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e-1,0<=N(this,f,a)&&(this.b=this.j=a,this.i=(a^e)&e)):(g=a&7,e=this.g[g],a=e-1,this.g[g]=a&65535,this.b=this.j=a,this.i=(a^e)&e); this.g=this.i=this.f[a&7]=0;break;case 2624:0<=(e=N(this,f=T(this,a,6)))&&(a=~e,0<=Q(this,f,a)&&(this.b=this.i=a,this.u=65536,this.g=0));break;case 2688:a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e+1,0<=Q(this,f,a)&&(this.b=this.i=a,this.g=a&(a^e))):(g=a&7,e=this.f[g],a=e+1,this.f[g]=a&65535,this.b=this.i=a,this.g=a&(a^e));break;case 2752:a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e-1,0<=Q(this,f,a)&&(this.b=this.i=a,this.g=(a^e)&e)):(g=a&7,e=this.f[g],a=e-1,this.f[g]=a&65535,this.b=this.i=a,this.g=(a^e)&e);
break;case 2816:0<=(e=M(this,f=S(this,a,6)))&&(a=-e,0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a&e));break;case 2880:0<=(e=M(this,f=S(this,a,6)))&&(a=e+(this.w>>16&1),0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a&(a^e)));break;case 2944:0<=(e=M(this,f=S(this,a,6)))&&(a=e-(this.w>>16&1),0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=(a^e)&e));break;case 3008:0<=(e=T(this,a))&&(this.b=this.j=e,this.w=this.i=0);break;case 3072:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=(this.w&65536|e)>>1,0<=N(this, break;case 2816:0<=(e=N(this,f=T(this,a,6)))&&(a=-e,0<=Q(this,f,a)&&(this.u=this.b=this.i=a,this.g=a&e));break;case 2880:0<=(e=N(this,f=T(this,a,6)))&&(a=e+(this.u>>16&1),0<=Q(this,f,a)&&(this.u=this.b=this.i=a,this.g=a&(a^e)));break;case 2944:0<=(e=N(this,f=T(this,a,6)))&&(a=e-(this.u>>16&1),0<=Q(this,f,a)&&(this.u=this.b=this.i=a,this.g=(a^e)&e));break;case 3008:0<=(e=U(this,a))&&(this.b=this.i=e,this.u=this.g=0);break;case 3072:a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=(this.u&65536|e)>>1,0<=Q(this,
f,a)&&(this.w=e<<16,this.b=this.j=a,this.i=a^this.w>>1)):(g=a&7,e=this.g[g],a=(this.w&65536|e)>>1,this.g[g]=a&65535,this.w=e<<16,this.b=this.j=a,this.i=a^this.w>>1);break;case 3136:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e<<1|this.w>>16&1,0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a^e)):(g=a&7,e=this.g[g],a=e<<1|this.w>>16&1,this.g[g]=a&65535,this.w=this.b=this.j=a,this.i=a^e);break;case 3200:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e&32768|e>>1,0<=N(this,f,a)&&(this.w=e<<16,this.b=this.j=a,this.i= f,a)&&(this.u=e<<16,this.b=this.i=a,this.g=a^this.u>>1)):(g=a&7,e=this.f[g],a=(this.u&65536|e)>>1,this.f[g]=a&65535,this.u=e<<16,this.b=this.i=a,this.g=a^this.u>>1);break;case 3136:a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e<<1|this.u>>16&1,0<=Q(this,f,a)&&(this.u=this.b=this.i=a,this.g=a^e)):(g=a&7,e=this.f[g],a=e<<1|this.u>>16&1,this.f[g]=a&65535,this.u=this.b=this.i=a,this.g=a^e);break;case 3200:a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e&32768|e>>1,0<=Q(this,f,a)&&(this.u=e<<16,this.b=this.i=a,this.g=
this.b^this.w>>1)):(g=a&7,e=this.g[g],a=e&32768|e>>1,this.g[g]=a&65535,this.w=e<<16,this.b=this.j=a,this.i=this.b^this.w>>1);break;case 3264:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e<<1,0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a^e)):(g=a&7,e=this.g[g],a=e<<1,this.g[g]=a&65535,this.w=this.b=this.j=a,this.i=a^e);break;case 3328:h=this.g[7]+((a&63)<<1)&65535;0<=(c=L(this,h|65536))&&(this.g[7]=this.g[5],this.g[5]=c,this.g[6]=h+2&65535);break;case 3392:a&56?0<=(h=Fc(this,a,0))&&(61440!==(this.I&61440)&& this.b^this.u>>1)):(g=a&7,e=this.f[g],a=e&32768|e>>1,this.f[g]=a&65535,this.u=e<<16,this.b=this.i=a,this.g=this.b^this.u>>1);break;case 3264:a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e<<1,0<=Q(this,f,a)&&(this.u=this.b=this.i=a,this.g=a^e)):(g=a&7,e=this.f[g],a=e<<1,this.f[g]=a&65535,this.u=this.b=this.i=a,this.g=a^e);break;case 3328:h=this.f[7]+((a&63)<<1)&65535;0<=(c=M(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=Gc(this,a,0))&&(61440!==(this.H&61440)&&
(h&=65535),this.C=this.I>>12&3,0<=(c=L(this,h))&&(this.C=this.I>>14&3,0<=Cc(this,c)&&(this.b=this.j=c,this.i=0))):(g=a&7,c=6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]:this.fa[this.I>>12&3],0<=Cc(this,c)&&(this.b=this.j=c,this.i=0));break;case 3456:0<=(e=Ec(this))&&((this.L&57344||(this.M=22),a&56)?0<=(h=Fc(this,a,0))&&(h&=65535,this.C=this.I>>12&3,0<=(f=Dc(this,h,4))&&(this.C=this.I>>14&3,0<=N(this,f,e)&&(this.b=this.j=e,this.i=0))):(g=a&7,6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]= (h&=65535),this.B=this.H>>12&3,0<=(c=M(this,h))&&(this.B=this.H>>14&3,0<=Dc(this,c)&&(this.b=this.i=c,this.g=0))):(g=a&7,c=6!==g||(this.H>>2&12288)===(this.H&12288)?this.f[g]:this.ea[this.H>>12&3],0<=Dc(this,c)&&(this.b=this.i=c,this.g=0));break;case 3456:0<=(e=Fc(this))&&((this.K&57344||(this.L=22),a&56)?0<=(h=Gc(this,a,0))&&(h&=65535,this.B=this.H>>12&3,0<=(f=Ec(this,h,4))&&(this.B=this.H>>14&3,0<=Q(this,f,e)&&(this.b=this.i=e,this.g=0))):(g=a&7,6!==g||(this.H>>2&12288)===(this.H&12288)?this.f[g]=
e:this.fa[this.I>>12&3]=e,this.b=this.j=e,this.i=0));break;case 3520:0<=(f=S(this,a,4))&&(a=-(this.b>>15&1),0<=N(this,f,a)&&(this.j=a,this.i=0));break;case 35328:a&56?0<=(f=S(this,a,5))&&0<=R(this,f,0)&&(this.b=this.w=this.i=this.j=0):(this.g[a&7]&=65280,this.b=this.w=this.i=this.j=0);break;case 35392:0<=(e=Q(this,f=S(this,a,7)))&&(a=~e,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.w=65536,this.i=0));break;case 35456:0<=(e=Q(this,f=S(this,a,7)))&&(a=e+1,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=(a&(a^ e:this.ea[this.H>>12&3]=e,this.b=this.i=e,this.g=0));break;case 3520:0<=(f=T(this,a,4))&&(a=-(this.b>>15&1),0<=Q(this,f,a)&&(this.i=a,this.g=0));break;case 35328:a&56?0<=(f=T(this,a,5))&&0<=S(this,f,0)&&(this.b=this.u=this.g=this.i=0):(this.f[a&7]&=65280,this.b=this.u=this.g=this.i=0);break;case 35392:0<=(e=R(this,f=T(this,a,7)))&&(a=~e,0<=S(this,f,a)&&(this.b=this.i=a<<8,this.u=65536,this.g=0));break;case 35456:0<=(e=R(this,f=T(this,a,7)))&&(a=e+1,0<=S(this,f,a)&&(this.b=this.i=a<<8,this.g=(a&(a^
e))<<8));break;case 35520:0<=(e=Q(this,f=S(this,a,7)))&&(a=e-1,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=((a^e)&e)<<8));break;case 35584:0<=(e=Q(this,f=S(this,a,7)))&&(a=-e,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a&e)<<8));break;case 35648:0<=(e=Q(this,f=S(this,a,7)))&&(a=e+(this.w>>16&1),0<=R(this,f,a)&&(this.b=this.j=this.w=a<<8,this.i=(a&(a^e))<<8));break;case 35712:0<=(e=Q(this,f=S(this,a,7)))&&(a=e-(this.w>>16&1),0<=R(this,f,a)&&(this.b=this.j=this.w=a<<8,this.i=((a^e)&e)<<8));break; e))<<8));break;case 35520:0<=(e=R(this,f=T(this,a,7)))&&(a=e-1,0<=S(this,f,a)&&(this.b=this.i=a<<8,this.g=((a^e)&e)<<8));break;case 35584:0<=(e=R(this,f=T(this,a,7)))&&(a=-e,0<=S(this,f,a)&&(this.u=this.b=this.i=a<<8,this.g=(a&e)<<8));break;case 35648:0<=(e=R(this,f=T(this,a,7)))&&(a=e+(this.u>>16&1),0<=S(this,f,a)&&(this.b=this.i=this.u=a<<8,this.g=(a&(a^e))<<8));break;case 35712:0<=(e=R(this,f=T(this,a,7)))&&(a=e-(this.u>>16&1),0<=S(this,f,a)&&(this.b=this.i=this.u=a<<8,this.g=((a^e)&e)<<8));break;
case 35776:0<=(e=Gc(this,a))&&(this.b=this.j=e<<8,this.w=this.i=0);break;case 35840:0<=(e=Q(this,f=S(this,a,7)))&&(a=((this.w&65536)>>8|e)>>1,0<=R(this,f,a)&&(this.w=e<<16,this.b=this.j=a<<8,this.i=this.b^this.w>>1));break;case 35904:0<=(e=Q(this,f=S(this,a,7)))&&(a=e<<1|this.w>>16&1,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a^e)<<8));break;case 35968:0<=(e=Q(this,f=S(this,a,7)))&&(a=e&128|e>>1,0<=R(this,f,a)&&(this.w=e<<16,this.b=this.j=a<<8,this.i=this.b^this.w>>1));break;case 36032:0<= case 35776:0<=(e=Hc(this,a))&&(this.b=this.i=e<<8,this.u=this.g=0);break;case 35840:0<=(e=R(this,f=T(this,a,7)))&&(a=((this.u&65536)>>8|e)>>1,0<=S(this,f,a)&&(this.u=e<<16,this.b=this.i=a<<8,this.g=this.b^this.u>>1));break;case 35904:0<=(e=R(this,f=T(this,a,7)))&&(a=e<<1|this.u>>16&1,0<=S(this,f,a)&&(this.u=this.b=this.i=a<<8,this.g=(a^e)<<8));break;case 35968:0<=(e=R(this,f=T(this,a,7)))&&(a=e&128|e>>1,0<=S(this,f,a)&&(this.u=e<<16,this.b=this.i=a<<8,this.g=this.b^this.u>>1));break;case 36032:0<=
(e=Q(this,f=S(this,a,7)))&&(a=e<<1,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a^e)<<8));break;case 36160:a&56?0<=(h=Fc(this,a,0))&&(this.C=this.I>>12&3,0<=(c=L(this,h|65536))&&(this.C=this.I>>14&3,0<=Cc(this,c)&&(this.b=this.j=c,this.i=0))):(g=a&7,c=6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]:this.fa[this.I>>12&3],0<=Cc(this,c)&&(this.b=this.j=c,this.i=0));break;case 36224:0<=(e=Ec(this))&&((this.L&57344||(this.M=22),a&56)?0<=(h=Fc(this,a,0))&&(this.C=this.I>>12&3,0<=(f=Dc(this,h| (e=R(this,f=T(this,a,7)))&&(a=e<<1,0<=S(this,f,a)&&(this.u=this.b=this.i=a<<8,this.g=(a^e)<<8));break;case 36160:a&56?0<=(h=Gc(this,a,0))&&(this.B=this.H>>12&3,0<=(c=M(this,h|65536))&&(this.B=this.H>>14&3,0<=Dc(this,c)&&(this.b=this.i=c,this.g=0))):(g=a&7,c=6!==g||(this.H>>2&12288)===(this.H&12288)?this.f[g]:this.ea[this.H>>12&3],0<=Dc(this,c)&&(this.b=this.i=c,this.g=0));break;case 36224:0<=(e=Fc(this))&&((this.K&57344||(this.L=22),a&56)?0<=(h=Gc(this,a,0))&&(this.B=this.H>>12&3,0<=(f=Ec(this,h|
65536,4))&&(this.C=this.I>>14&3,0<=N(this,f,e)&&(this.b=this.j=e,this.i=0))):(g=a&7,6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]=e:this.fa[this.I>>12&3]=e,this.b=this.j=e,this.i=0));break;default:switch(a&65528){case 128:0<=(c=Ec(this))&&(g=a&7,this.g[7]=this.g[g],this.g[g]=c);break;case 152:this.I&49152||(this.I=this.I&63519|(a&7)<<5,this.W=1);break;case 160:case 168:a&1&&(this.w=0);a&2&&(this.i=0);a&4&&(this.j=1);a&8&&(this.b=0);break;case 176:case 184:a&1&&(this.w=65536);a&2&&(this.i=32768); 65536,4))&&(this.B=this.H>>14&3,0<=Q(this,f,e)&&(this.b=this.i=e,this.g=0))):(g=a&7,6!==g||(this.H>>2&12288)===(this.H&12288)?this.f[g]=e:this.ea[this.H>>12&3]=e,this.b=this.i=e,this.g=0));break;default:switch(a&65528){case 128:0<=(c=Fc(this))&&(g=a&7,this.f[7]=this.f[g],this.f[g]=c);break;case 152:this.H&49152||(this.H=this.H&63519|(a&7)<<5,this.V=1);break;case 160:case 168:a&1&&(this.u=0);a&2&&(this.g=0);a&4&&(this.i=1);a&8&&(this.b=0);break;case 176:case 184:a&1&&(this.u=65536);a&2&&(this.g=32768);
a&4&&(this.j=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.I?I(this,4):(this.eb=3,mc(this),console.log("HALT at "+this.g[7].toString(8)));break;case 1:g=0;if(0<(a=this.J.length))for(;0<a--;)g+=this.J[a].Ya,this.J[a].Ya=0;0===g&&0===this.eb&&(this.eb=2,mc(this));break;case 3:I(this,12);break;case 4:I(this,16);break;case 5:this.I&49152||Ac(this);break;case 2:case 6:f=this.g[6];0<=(h=L(this,f|65536))&&(f=f+2&65535,0<=(c=L(this,f|65536))&&(this.g[6]=f+2&65535,c&=63743,this.I&49152&& a&4&&(this.i=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.H?L(this,4):(this.cb=3,nc(this),console.log("HALT at "+this.f[7].toString(8)));break;case 1:g=0;if(0<(a=this.I.length))for(;0<a--;)g+=this.I[a].Xa,this.I[a].Xa=0;0===g&&0===this.cb&&(this.cb=2,nc(this));break;case 3:L(this,12);break;case 4:L(this,16);break;case 5:this.H&49152||Bc(this);break;case 2:case 6:f=this.f[6];0<=(h=M(this,f|65536))&&(f=f+2&65535,0<=(c=M(this,f|65536))&&(this.f[6]=f+2&65535,c&=63743,this.H&49152&&
(c=c&63519|this.I&63712),this.g[7]=h,Bc(this,c),this.G&=-17,2===a&&(this.G|=this.I&16)));break;default:I(this,8)}}}}}}this.G&&(this.G&2?I(this,168):this.G&4?I(this,4):this.G&16&&I(this,12),this.G=0)}while(0<this.R)}return this.A.complete?this.U-this.R:void 0===this.A.complete?0:-1};Pa(function(){for(var a=z(document,"pdp11","cpu"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new zc(c);lb(c,d)}}); (c=c&63519|this.H&63712),this.f[7]=h,Cc(this,c),this.F&=-17,2===a&&(this.F|=this.H&16)));break;default:L(this,8)}}}}}}this.F&&(this.F&2?L(this,168):this.F&4?L(this,4):this.F&16&&L(this,12),this.F=0)}while(0<this.P)}return this.w.complete?this.T-this.P:void 0===this.w.complete?0:-1};Qa(function(){for(var a=D(document,"pdp11","cpu"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Ac(c);mb(c,d)}});
function Jc(a){t.call(this,"ROM",a,Jc);this.i=null;this.C=a.addr;this.j=a.size;this.G=a.writable;this.w=a.alias;this.D=a.file;this.J=ea(this.D);if(this.D){a=this.D;var b=fa(this.J);"json"!=b&&"hex"!=b&&(a=ka()+"/api/v1/dump?file="+this.D+"&format=bytes&decimal=true");var d=this;wa(a,null,!0,function(a,b,f){Kc(d,a,b,f)})}}v(Jc);Jc.prototype.za=function(a,b,d,c){this.H=b;this.b=d;this.F=c;Lc(this)}; function Kc(a){v.call(this,"ROM",a,Kc);this.g=null;this.B=a.addr;this.i=a.size;this.F=a.writable;this.u=a.alias;this.C=a.file;this.I=fa(this.C);if(this.C){a=this.C;var b=ga(this.I);"json"!=b&&"hex"!=b&&(a=ka()+"/api/v1/dump?file="+this.C+"&format=bytes&decimal=true");var d=this;wa(a,null,!0,function(a,b,f){Lc(d,a,b,f)})}}y(Kc);Kc.prototype.ya=function(a,b,d,c){this.G=b;this.b=d;this.D=c;Mc(this)};
Jc.prototype.sa=function(){if(this.qa){if(this.F){var a=this.F,b=this.id,d=this.C,c=this.j,e=this.qa,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var n=f,k=[k>>>0,h],q=sa(n,k,a.jb);0>q&&n.splice(-(q+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.G.push({Lb:b,B:d,Gb:c,qa:e,hb:f})}delete this.qa}return!0};Jc.prototype.ra=function(){return!0}; Kc.prototype.ra=function(){if(this.pa){if(this.D){var a=this.D,b=this.id,d=this.B,c=this.i,e=this.pa,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var n=f,k=[k>>>0,h],p=sa(n,k,a.ib);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.F.push({Kb:b,A:d,Fb:c,pa:e,gb:f})}delete this.pa}return!0};Kc.prototype.qa=function(){return!0};
function Kc(a,b,d,c){if(c)a.ea("Unable to load system ROM (error "+c+": "+b+")");else{$a(a.pb,b,d);if("["==d.charAt(0)||"{"==d.charAt(0))try{var e=eval("("+d+")"),f=e.bytes,h=e.data;if(f)a.i=f;else if(h)for(a.i=Array(4*h.length),c=d=0;d<h.length;d++)a.i[c++]=h[d]&255,a.i[c++]=h[d]>>8&255,a.i[c++]=h[d]>>16&255,a.i[c++]=h[d]>>24&255;else a.i=e;a.qa=e.symbols;if(!a.i.length){r("Empty ROM: "+b);return}if(1==a.i.length){r(a.i[0]);return}}catch(g){a.ea("ROM data error: "+g.message);return}else for(b=d.replace(/\n/gm, function Lc(a,b,d,c){if(c)a.da("Unable to load system ROM (error "+c+": "+b+")");else{ab(a.ob,b,d);if("["==d.charAt(0)||"{"==d.charAt(0))try{var e=eval("("+d+")"),f=e.bytes,h=e.data;if(f)a.g=f;else if(h)for(a.g=Array(4*h.length),c=d=0;d<h.length;d++)a.g[c++]=h[d]&255,a.g[c++]=h[d]>>8&255,a.g[c++]=h[d]>>16&255,a.g[c++]=h[d]>>24&255;else a.g=e;a.pa=e.symbols;if(!a.g.length){t("Empty ROM: "+b);return}if(1==a.g.length){t(a.g[0]);return}}catch(g){a.da("ROM data error: "+g.message);return}else for(b=d.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.i=Array(b.length),e=0;e<b.length;e++)a.i[e]=da(b[e]);Lc(a)}} " ").replace(/ +$/,"").split(" "),a.g=Array(b.length),e=0;e<b.length;e++)a.g[e]=ea(b[e]);Mc(a)}}
function Lc(a){if(!pb(a))if(!a.D)A(a);else if(a.i&&a.H){a.j||(a.j=a.i.length);if(a.i.length!=a.j)qb(a,"ROM size ("+p(a.i.length,8,!0)+") does not match specified size ("+p(a.j,8,!0)+")");else{var b;b=a.C;if(wb(a.H,b,a.j,a.G?1:Qb)){var d;for(d=0;d<a.i.length;d++){var c=a.H,e=b+d;c.P[(e&c.j)>>>c.aa].Ia(e&c.i,a.i[d]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(d=0;d<b.length;d++){for(var f=a,c=b[d],e=f.H,h=f.j,g=[],k=f.C>>>e.aa;0<h&&k<e.P.length;)g.push(e.P[k++]), function Mc(a){if(!qb(a))if(!a.C)E(a);else if(a.g&&a.G){a.i||(a.i=a.g.length);if(a.g.length!=a.i)rb(a,"ROM size ("+q(a.g.length,8,!0)+") does not match specified size ("+q(a.i,8,!0)+")");else{var b;b=a.B;if(xb(a.G,b,a.i,a.F?1:Rb)){var d;for(d=0;d<a.g.length;d++){var c=a.G,e=b+d;c.N[(e&c.i)>>>c.$].Ha(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<b.length;d++){for(var f=a,c=b[d],e=f.G,h=f.i,g=[],k=f.B>>>e.$;0<h&&k<e.N.length;)g.push(e.N[k++]),
h-=e.la;e=f.H;f=f.j;h=0;for(c>>>=e.aa;0<f&&c<e.P.length;){k=g[h++];if(!k)break;e.P[c++]=k;f-=e.la}}delete a.i}}A(a)}}Pa(function(){for(var a=z(document,"pdp11","rom"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Jc(c);lb(c,d)}});function Mc(a){t.call(this,"RAM",a,Mc);this.w=a.addr;this.j=a.size;this.i=!1}v(Mc);m=Mc.prototype;m.za=function(a,b,d,c){this.H=b;this.b=d;this.F=c;A(this)};m.sa=function(a,b){b||this.reset();return!0};m.ra=function(a){return a?this.save():!0}; h-=e.ka;e=f.G;f=f.i;h=0;for(c>>>=e.$;0<f&&c<e.N.length;){k=g[h++];if(!k)break;e.N[c++]=k;f-=e.ka}}delete a.g}}E(a)}}Qa(function(){for(var a=D(document,"pdp11","rom"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Kc(c);mb(c,d)}});function Nc(a){v.call(this,"RAM",a,Nc);this.u=a.addr;this.i=a.size;this.g=!1}y(Nc);m=Nc.prototype;m.ya=function(a,b,d,c){this.G=b;this.b=d;this.D=c;E(this)};m.ra=function(a,b){b||this.reset();return!0};m.qa=function(a){return a?this.save():!0};
m.reset=function(){!this.i&&this.j&&wb(this.H,this.w,this.j,1)&&(this.i=!0);this.i||r("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Pa(function(){for(var a=z(document,"pdp11","ram"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Mc(c);lb(c,d)}});function Nc(a){t.call(this,"Keyboard",a,Nc,65536);A(this)}v(Nc);Nc.prototype.ha=function(){return!1};Nc.prototype.za=function(a,b,d,c){this.D=a;this.b=d;this.F=c;this.ja=null}; m.reset=function(){!this.g&&this.i&&xb(this.G,this.u,this.i,1)&&(this.g=!0);this.g||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Qa(function(){for(var a=D(document,"pdp11","ram"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Nc(c);mb(c,d)}});function Oc(a){v.call(this,"Keyboard",a,Oc,65536);E(this)}y(Oc);Oc.prototype.ga=function(){return!1};Oc.prototype.ya=function(a,b,d,c){this.C=a;this.b=d;this.D=c;this.ia=null};
Pa(function(){for(var a=z(document,"pdp11","keyboard"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Nc(c);lb(c,d)}});function Oc(a){t.call(this,"Debugger",a,Oc);this.R=this.ga=this.L=0;this.T=!1;this.w=-1;this.j=[];this.V={}}v(Oc);var Pc={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};Oc.prototype.ab=function(){return-1};Oc.prototype.bb=function(){}; Qa(function(){for(var a=D(document,"pdp11","keyboard"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Oc(c);mb(c,d)}});function Pc(a){v.call(this,"Debugger",a,Pc);this.O=this.fa=this.I=0;this.R=!1;this.u=-1;this.i=[];this.T={}}y(Pc);var Qc={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};Pc.prototype.ab=function(){return-1};Pc.prototype.bb=function(){};
function Qc(a,b,d,c){if(d)if(b){0>a.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.T?b="end":b=a.j[a.w+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 h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==c&&!e||!h)a.push(oa(b.substring(d,f))),d=f+1}}return a} function Rc(a,b,d,c){if(d)if(b){0>a.u&&a.i.length&&(a.u=0);if(0>a.u||b!=a.i[a.u])a.i.splice(0,0,b),a.u=0;a.u--}else a.R?b="end":b=a.i[a.u+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 h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==c&&!e||!h)a.push(oa(b.substring(d,f))),d=f+1}}return a}
function Rc(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<<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;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?1:0;break;case "&":c=f&e;break; function Sc(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<<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;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?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} 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 Sc(a,b,d){var c;if(b){b=Tc(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var n=l[e++],q=n.length,n=oa(n);if(!n){f=!0;break}n=Uc(a,n,null,!1===d);if(void 0===n){f=!0;d=!1;break}g.push(n);if(e==l.length)break;var n=l[e++],y=n.length;k.length&&Pc[n]<Pc[k[k.length-1]]&&Rc(g,k,1);k.push(n);b=b.substr(q+y)}Rc(g,k)&&1==g.length||(f=!0);f?d&&a.u("error parsing '"+h+"' at character "+(h.length-b.length)):(c=g.pop(),d&&Vc(a,null, function Tc(a,b,d){var c;if(b){b=Uc(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var n=l[e++],p=n.length,n=oa(n);if(!n){f=!0;break}n=Vc(a,n,null,!1===d);if(void 0===n){f=!0;d=!1;break}g.push(n);if(e==l.length)break;var n=l[e++],u=n.length;k.length&&Qc[n]<Qc[k[k.length-1]]&&Sc(g,k,1);k.push(n);b=b.substr(p+u)}Sc(g,k)&&1==g.length||(f=!0);f?d&&a.j("error parsing '"+h+"' at character "+(h.length-b.length)):(c=g.pop(),d&&Wc(a,null,
c))}return c}function Tc(a,b){for(var d;(d=b.match(/\{(.*?)}/))&&!(0<=d[1].indexOf("{"));){var c=Sc(a,d[1]);b=b.replace("{"+d[1]+"}",null!=c?p(c):"undefined")}for(;(d=b.match(/\[(.*?)]/))&&!(0<=d[1].indexOf("["));)b=b.replace("["+d[1]+"]","unimplemented");for(d=b;c=d.match(/\$([a-z]+)/i);){var e=null;switch(c[1].toLowerCase()){case "ops":e=a.R-a.ga}if(null==e)break;d=d.replace(c[0],e.toString())}return d} c))}return c}function Uc(a,b){for(var d;(d=b.match(/\{(.*?)}/))&&!(0<=d[1].indexOf("{"));){var c=Tc(a,d[1]);b=b.replace("{"+d[1]+"}",null!=c?q(c):"undefined")}for(;(d=b.match(/\[(.*?)]/))&&!(0<=d[1].indexOf("["));)b=b.replace("["+d[1]+"]","unimplemented");for(d=b;c=d.match(/\$([a-z]+)/i);){var e=null;switch(c[1].toLowerCase()){case "ops":e=a.O-a.fa}if(null==e)break;d=d.replace(c[0],e.toString())}return d}
function Uc(a,b,d,c){var e;null!=b?(e=a.ab(b),0<=e?e=a.bb(e):(e=a.V[b],null==e&&(e=da(b))),null!=e||c||a.u("invalid "+(d?d:"value")+": "+b)):c||a.u("missing "+(d||"value"));return e} function Vc(a,b,d,c){var e;null!=b?(e=a.ab(b),0<=e?e=a.bb(e):(e=a.T[b],null==e&&(e=ea(b))),null!=e||c||a.j("invalid "+(d?d:"value")+": "+b)):c||a.j("missing "+(d||"value"));return e}
function Vc(a,b,d){var c,e=!1;if(void 0!==d){var e=!0,f=d,h=0;c="";if(!h||4<h)h=4;for(var g=0;g<h;g++){c&&(c=","+c);var k=f&255,l=8,n="";l?32<l&&(l=32):l=32;if(null==k||isNaN(k))for(;0<l--;)n="?"+n;else for(;0<l--;)n=(k&1?"1":"0")+n,k>>=1;c=n+c;f>>=8}f=d;h=0;g="";h?11<h&&(h=11):h=f&-65536?11:6;if(null==f||isNaN(f))for(;0<h--;)g="?"+g;else for(;0<h--;)g=String.fromCharCode((f&7)+48)+g,f>>=3;c=p(d,0,!0)+" "+d+". "+("0o"+g)+" "+("0b"+c)}a.u((null!=b?b+": ":"")+c);return e} function Wc(a,b,d){var c,e=!1;if(void 0!==d){var e=!0,f=d,h=0;c="";if(!h||4<h)h=4;for(var g=0;g<h;g++){c&&(c=","+c);var k=f&255,l=8,n="";l?32<l&&(l=32):l=32;if(null==k||isNaN(k))for(;0<l--;)n="?"+n;else for(;0<l--;)n=(k&1?"1":"0")+n,k>>=1;c=n+c;f>>=8}f=d;h=0;g="";h?11<h&&(h=11):h=f&-65536?11:6;if(null==f||isNaN(f))for(;0<h--;)g="?"+g;else for(;0<h--;)g=String.fromCharCode((f&7)+48)+g,f>>=3;c=q(d,0,!0)+" "+d+". "+("0o"+g)+" "+("0b"+c)}a.j((null!=b?b+": ":"")+c);return e}
function Wc(a,b){if(b)return Vc(a,b,a.V[b]);var d=0;for(b in a.V)Vc(a,b,a.V[b]),d++;return 0<d}function Xc(a){Oc.call(this,a);this.N=V();this.pa=V();this.S=V();this.G=[];this.i=this.O=this.C=[];Yc(this);this.ca=0;Zc(this);this.ja=[];$c(this,a.messages);this.ka=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return fc(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return fc(b,a)})}v(Xc,Oc); function Xc(a,b){if(b)return Wc(a,b,a.T[b]);var d=0;for(b in a.T)Wc(a,b,a.T[b]),d++;return 0<d}function Yc(a){Pc.call(this,a);this.L=W();this.ma=W();this.P=W();this.F=[];this.g=this.M=this.B=[];Zc(this);this.ba=0;$c(this);this.ia=[];ad(this,a.messages);this.ja=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return gc(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return gc(b,a)})}y(Yc,Pc);
var ad={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},bd=["NONE"],cd=["PC","PSW"],dd=[];m=Xc.prototype; var bd={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},cd="NONE ADC ADCB ADD ASL ASLB ASR ASRB BCC BCS BEQ BGE BGT BHI BIC BICB BIS BISB BIT BITB BLE BLOS BLT BMI BNE BPL BPT BR BVC BVS CCC CLC CLCN CLCV CLCVN CLCVZ CLCZ CLCZN CLN CLR CLRB CLV CLVN CLVZ CLVZN CLZ CLZN CMP CMPB COM COMB DEC DECB INC INCB HALT JMP JSR MARK MFPD MFPI MFPS MOV MOVB MTPD MTPI MTPS NEG NEGB NOP RESET ROL ROLB ROR RORB RTI RTS SBC SBCB SCC SEC SECN SECV SECVN SECVZ SECZ SECZN SEN SEV SEVN SEVZ SEVZN SEZ SEZN SUB SWAB SXT TST TSTB WAIT".split(" "),
m.za=function(a,b,d,c){this.H=b;this.b=d;this.D=a;(a=cc(a,"messages"))&&$c(this,a);this.oa=dd;ed(this,function(a){a:{var b=c.H.P,d=a[0],g=a=0,k=b.length;if(d){a=W(X(c,d));if(-1===a){c.u("invalid address: "+d);break a}g=a>>>c.H.aa;k=1}c.u("blockid physical blockaddr used size type");c.u("-------- --------- ---------- ------ ------ ----");for(var d=-1,l=0;k--;){var n=b[g];n.type==d?l++||c.u("..."):(d=n.type,l=yb[d],n&&c.u(p(n.id)+" %"+p(g<<c.H.aa)+" %%"+p(n.B)+" "+p(n.Sa,4,!0)+" "+ dd=["PC","PSW"],ed={61440:{4096:[62,4032,63],8192:[47,4032,63],12288:[18,4032,63],16384:[14,4032,63],20480:[16,4032,63],24576:[3,4032,63],36864:[63,4032,63],40960:[48,4032,63],45056:[19,4032,63],49152:[15,4032,63],53248:[17,4032,63],57344:[94,4032,63]},65024:{2048:[57,448,63]},65280:{256:[27,4096],512:[24,4096],768:[10,4096],1024:[11,4096],1280:[22,4096],1536:[12,4096],1792:[20,4096],32768:[25,4096],33024:[23,4096],33280:[13,4096],33536:[21,4096],33792:[28,4096],34048:[29,4096],34304:[8,4096],34560:[9,
p(n.size,4,!0)+" "+l),d!=Pb&&(d=-1),l=0);a+=c.H.la;g++}}});A(this)}; 4096]},65472:{16:[56,63],192:[95,63],1152:[53,63],2560:[38,63],2624:[49,63],2752:[51,63],2816:[67,63],2880:[1,63],2944:[77,63],3008:[97,63],3072:[73,63],3136:[71,63],3200:[6,63],3264:[4,63],3328:[58,63],3392:[60,63],3456:[65,63],3520:[96,63],33920:[54,63],35328:[40,63],35392:[50,63],35520:[52,63],35584:[68,63],35648:[2,63],35712:[78,63],35776:[98,63],35840:[74,63],35904:[72,63],35968:[7,63],36032:[5,63],36096:[66,63],36160:[59,63],36224:[64,63],36288:[61,63]},65528:{128:[76,448]},65535:{0:[55],1:[99],
m.ha=function(a,b,d){var c=this;switch(b){case "debugInput":return this.$=this.K[b]=d,d.onkeydown=function(a){var b;if(13==a.keyCode)b=d.value,d.value="",fc(c,b,!0);else if(27==a.keyCode)d.value=b="";else if(38==a.keyCode?(b=null,c.w<c.j.length-1&&(b=c.j[++c.w])):40==a.keyCode&&(0<c.w?b=c.j[--c.w]:(b="",c.w=-1)),null!=b){var h=b.length;d.value=b;d.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.K[b]=d,Ja(d,function(){if(c.$){var a=c.$.value;c.$.value= 2:[75],4:[26],5:[70],160:[69],161:[31],162:[41],163:[32],164:[45],165:[35],166:[43],167:[34],168:[37],169:[32],170:[42],171:[33],172:[46],173:[36],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]}};m=Yc.prototype;
"";fc(c,a,!0);return!0}return!1}),!0;case "step":return this.K[b]=d,Ja(d,function(a){var b=!1;ob(c,!0)||(nb(c,!0),b=c.Ha(a?1:0),nb(c,!1));return b}),!0}return!1};m.Ra=function(){this.$&&this.$.focus()};function W(a){a=a&&a.B;null==a&&(a=-1);return a}m.ua=function(a,b){var d=255,c=W(a);-1!==c&&(d=zb(this.H,c),b&&fd(a,b));return d};m.Ua=function(a,b){var d=65535,c=W(a);if(-1!==c){var d=this.H,e=c&d.i,f=(c&d.j)>>>d.aa,d=e!=d.i?d.P[f].xb(e,c):d.P[f++].Qa(e,c)|d.P[f&d.G].Qa(0,c+1)<<8;b&&fd(a,b)}return d}; m.ya=function(a,b,d,c){this.G=b;this.b=d;this.C=a;(a=dc(a,"messages"))&&ad(this,a);this.ua=ed;fd(this,function(a){a:{var b=c.G.N,d=a[0],g=a=0,k=b.length;if(d){a=X(Y(c,d));if(-1===a){c.j("invalid address: "+d);break a}g=a>>>c.G.$;k=1}c.j("blockid physical blockaddr used size type");c.j("-------- --------- ---------- ------ ------ ----");for(var d=-1,l=0;k--;){var n=b[g];n.type==d?l++||c.j("..."):(d=n.type,l=zb[d],n&&c.j(q(n.id)+" %"+q(g<<c.G.$)+" %%"+q(n.A)+" "+r(n.Sa)+" "+r(n.size)+
m.gb=function(a,b,d){var c=W(a);if(-1!==c){var e=this.H;e.P[(c&e.j)>>>e.aa].Ia(c&e.i,b&255,c);d&&fd(a,d);F(this.b,!0)}};m.Bb=function(a,b,d){var c=W(a);if(-1!==c){var e=this.H,f=c&e.i,h=(c&e.j)>>>e.aa;f!=e.i?e.P[h].Ab(f,b&65535,c):(e.P[h++].Ia(f,b&255,c),e.P[h&e.G].Ia(0,b>>8&255,c+1));d&&fd(a,d);F(this.b,!0)}};function V(a){return{B:a,ma:!1}}function gd(a){return[a.B,a.ma]}function hd(a){return{B:a[0],ma:a[1]}} " "+l),d!=Qb&&(d=-1),l=0);a+=c.G.ka;g++}}});E(this)};
function X(a,b,d){var c;d=(d?a.N:a.pa).B;if(void 0!==b){c=b=Tc(a,b);var e;if(c.match(/^[a-z_][a-z0-9_]*$/i))for(c=c.toUpperCase(),d=0;d<a.G.length;d++){var f=a.G[d].qa[c];if(void 0!==f){c=f.o;void 0!==c&&(e=V(c));break}}if(c=e)return c;d=Sc(a,b,void 0)}null!=d&&(c=V(d));return c}function id(a,b,d){d&&(d=d.match(/(['"])(.*?)\1/))&&(b.Cb=Qc(a,b.yb=d[2]))}function fd(a,b){null!=a.B&&(a.B+=b||1)} m.ga=function(a,b,d){var c=this;switch(b){case "debugInput":return this.Z=this.J[b]=d,d.onkeydown=function(a){var b;if(13==a.keyCode)b=d.value,d.value="",gc(c,b,!0);else if(27==a.keyCode)d.value=b="";else if(38==a.keyCode?(b=null,c.u<c.i.length-1&&(b=c.i[++c.u])):40==a.keyCode&&(0<c.u?b=c.i[--c.u]:(b="",c.u=-1)),null!=b){var h=b.length;d.value=b;d.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.J[b]=d,Ka(d,function(){if(c.Z){var a=c.Z.value;c.Z.value=
function jd(a,b,d){var c="";for(d=d||256;c.length<d;){var e=a.ua(b,1);if(!e||36==e||127<=e)break;c+=32<=e?String.fromCharCode(e):"."}return c}function $c(a,b){a.F=a;a.Y=a.Db=536870912;a.da=null;a.fa=[];var d=Qc(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(d.length)for(var c in C)0<=va(d,c)&&(a.Y|=C[c],a.u(c+" messages enabled"))}function ed(a,b){for(var d in C)if(64==C[d]){a.ja[d]=b;break}} "";gc(c,a,!0);return!0}return!1}),!0;case "step":return this.J[b]=d,Ka(d,function(a){var b=!1;pb(c,!0)||(ob(c,!0),b=c.Ga(a?1:0),ob(c,!1));return b}),!0}return!1};m.Ra=function(){this.Z&&this.Z.focus()};function X(a){a=a&&a.A;null==a&&(a=-1);return a}m.Ia=function(a,b){var d=255,c=X(a);-1!==c&&(d=this.G,d=d.N[(c&d.i)>>>d.$].Qa(c&d.g,c),b&&gd(a,b));return d};m.va=function(a,b){var d=65535,c=X(a);-1!==c&&(d=Ab(this.G,c),b&&gd(a,b));return d};
m.ab=function(a,b){var d;a=a.toUpperCase();null==b?d=va(cd,a):(d=va(cd,a.substr(b,2)),0>d&&(d=va(cd,a.substr(b,1))));return d};m.bb=function(a){var b;if(0<=a){var d=this.b;switch(a){case 12:b=d.g[7];break;case 14:b=d.I&-14|0|(d.ta&255?0:4)|(d.ta&256?1:0)}}return b}; m.fb=function(a,b,d){var c=X(a);if(-1!==c){var e=this.G;e.N[(c&e.i)>>>e.$].Ha(c&e.g,b&255,c);d&&gd(a,d);H(this.b,!0)}};m.Ab=function(a,b,d){var c=X(a);if(-1!==c){var e=this.G,f=c&e.g,h=(c&e.i)>>>e.$;f!=e.g?e.N[h].zb(f,b&65535,c):(e.N[h++].Ha(f,b&255,c),e.N[h&e.F].Ha(0,b>>8&255,c+1));d&&gd(a,d);H(this.b,!0)}};function W(a){return{A:a,la:!1}}function hd(a){return[a.A,a.la]}function id(a){return{A:a[0],la:a[1]}}
function kd(a,b){b=Tc(a,b);for(var d=0,c,e;0<=(d=b.indexOf("@",d));){e=a.ab(b,d+1);if(0<=e){c=0;var f=a.bb(e);if(void 0!==f)switch(e){case 12:case 14:c=4}b=b.substr(0,d)+(c?p(f,c):"??")+b.substr(d+1+cd[e].length)}d++}for(d=0;0<=(d=b.indexOf("#",d));)e=b.substr(d+1,2),c=da(e),null!=c&&32<=c&&128>c?(c=e+" '"+String.fromCharCode(c)+"'",b=b.replace("#"+e,c),d+=c.length):d++;for(d=0;0<=(d=b.indexOf("$",d));)e=b.substr(d+1,9),(c=X(a,e))?(c=e+' "'+jd(a,c)+'"',b=b.replace("$"+e,c),d+=c.length):d++;for(d= function Y(a,b,d){var c;d=(d?a.L:a.ma).A;if(void 0!==b){c=b=Uc(a,b);var e;if(c.match(/^[a-z_][a-z0-9_]*$/i))for(c=c.toUpperCase(),d=0;d<a.F.length;d++){var f=a.F[d].pa[c];if(void 0!==f){c=f.o;void 0!==c&&(e=W(c));break}}if(c=e)return c;d=Tc(a,b,void 0)}null!=d&&(c=W(d));return c}function jd(a,b,d){d&&(d=d.match(/(['"])(.*?)\1/))&&(b.Bb=Rc(a,b.yb=d[2]))}function gd(a,b){null!=a.A&&(a.A+=b||1)}
0;0<=(d=b.indexOf("^",d));)e=b.substr(d+1,9),(c=X(a,e))?(fd(c),c=e+' "'+jd(a,c,11)+'"',b=b.replace("^"+e,c),d+=c.length):d++;return b}m.message=function(a,b){b&&(a+=" at "+p(V(this.b.g[7]).B,4));if(this.Y&1073741824)this.fa.push(a);else if(!this.da||a!=this.da)if(this.da=a,this.Y&-2147483648&&(this.ba(),a+=" (cpu halted)"),this.u(a),this.b){var d=this.b;mc(d);d.da=0;F(d)}}; function kd(a,b,d){var c="";for(d=d||256;c.length<d;){var e=a.Ia(b,1);if(!e||36==e||127<=e)break;c+=32<=e?String.fromCharCode(e):"."}return c}function ad(a,b){a.D=a;a.X=a.Cb=536870912;a.ca=null;a.ea=[];var d=Rc(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(d.length)for(var c in F)0<=va(d,c)&&(a.X|=F[c],a.j(c+" messages enabled"))}function fd(a,b){for(var d in F)if(64==F[d]){a.ia[d]=b;break}}
function Zc(a){var b;if(Hc(a)){if(!a.M||!a.M.length){a.M=Array(1E3);for(b=0;b<a.M.length;b++)a.M[b]=V();a.W=0;a.u("instruction history buffer allocated")}if(!a.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.M&&a.M.length&&a.u("instruction history buffer freed"),a.W=0,a.M=[],a.J=[]}m.Ca=function(a){if(!ld(this))return!1;this.b.Ca(a);return!0}; m.ab=function(a,b){var d;a=a.toUpperCase();null==b?d=va(dd,a):(d=va(dd,a.substr(b,2)),0>d&&(d=va(dd,a.substr(b,1))));return d};m.bb=function(a){var b;if(0<=a){var d=this.b;switch(a){case 12:b=d.f[7];break;case 14:b=d.H&-14|0|(d.sa&255?0:4)|(d.sa&256?1:0)}}return b};
m.Ha=function(a,b,d){if(!ld(this))return!1;this.L=0;a||Hc(this)&&Ic(this,this.b.g[7],0);try{var c=this.b.Ha(a);0<c&&(this.L+=c,kc(this.b,c,!0),gc(this.b,c),this.R++)}catch(e){"number"!=typeof e&&(this.L=0,qb(this.b,e.stack||e.message))}!1!==d&&F(this.b);this.ia(b||!1);return 0<this.L};m.ba=function(a){this.b&&this.b.ba(a)};m.ia=function(a){void 0===a&&(a=!0);this.N=V(this.b.g[7]);a&&1!=this.U?md(this):nd(this)}; function ld(a,b){b=Uc(a,b);for(var d=0,c,e;0<=(d=b.indexOf("@",d));){e=a.ab(b,d+1);if(0<=e){c=0;var f=a.bb(e);if(void 0!==f)switch(e){case 12:case 14:c=4}b=b.substr(0,d)+(c?q(f,c):"??")+b.substr(d+1+dd[e].length)}d++}for(d=0;0<=(d=b.indexOf("#",d));)e=b.substr(d+1,2),c=ea(e),null!=c&&32<=c&&128>c?(c=e+" '"+String.fromCharCode(c)+"'",b=b.replace("#"+e,c),d+=c.length):d++;for(d=0;0<=(d=b.indexOf("$",d));)e=b.substr(d+1,9),(c=Y(a,e))?(c=e+' "'+kd(a,c)+'"',b=b.replace("$"+e,c),d+=c.length):d++;for(d=
function ld(a){var b;if(b=a.b&&pb(a.b))b=a.b,b.A.X?b=!0:(b.u(b.toString()+" not powered"),b=!1);b&&!ob(a.b)?(a=a.b,a.A.error?(a.u(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.sa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.ra=function(a,b){b&&this.u(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Zc(this);this.R=this.ga=0;this.da=null;this.L=0;this.N=V(this.b.g[7]);this.A.Z=!1;od(this);a||this.ia()}; 0;0<=(d=b.indexOf("^",d));)e=b.substr(d+1,9),(c=Y(a,e))?(gd(c),c=e+' "'+kd(a,c,11)+'"',b=b.replace("^"+e,c),d+=c.length):d++;return b}m.message=function(a,b){b&&(a+=" at "+q(W(this.b.f[7]).A,4));if(this.X&1073741824)this.ea.push(a);else if(!this.ca||a!=this.ca)if(this.ca=a,this.X&-2147483648&&(this.aa(),a+=" (cpu halted)"),this.j(a),this.b){var d=this.b;nc(d);d.ca=0;H(d)}};
m.save=function(){var a=new G(this);H(a,0,gd(this.N));H(a,1,gd(this.S));H(a,2,[this.j,this.T,this.Y]);H(a,3,this.G);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.N=hd(a[b++]),this.S=hd(a[b++]),this.j=a[b][0],"string"==typeof this.j&&(this.j=[this.j]),this.T=a[b][1],this.Y|=a[b][2]);a[3]&&(this.G=a[3]);return!0};m.start=function(a,b){this.U||this.u("running");this.A.Z=!0;this.Ka=a;this.La=b}; function $c(a){var b;if(Ic(a)){if(!a.K||!a.K.length){a.K=Array(1E3);for(b=0;b<a.K.length;b++)a.K[b]=W();a.V=0;a.j("instruction history buffer allocated")}if(!a.U||!a.U.length)for(a.U=Array(256),b=0;b<a.U.length;b++)a.U[b]=[b,0]}else a.K&&a.K.length&&a.j("instruction history buffer freed"),a.V=0,a.K=[],a.U=[]}m.Ba=function(a){if(!md(this))return!1;this.b.Ba(a);return!0};
m.stop=function(a,b){if(this.A.Z){this.A.Z=!1;this.L=b-this.La;if(!this.U){var d="stopped";if(this.L){var c=a-this.Ka,e=0<c?Math.round(1E3*this.L/c):0,d=d+" (";Hc(this)&&(d+=this.R+" opcodes, ",this.ga-=this.R,this.R=0);d+=this.L+" cycles, "+c+" ms, "+e+" hz)"}else mb(this,-2147483648)&&(d+=" (use the 't' command to execute blocked faults)");this.u(d)}this.ia(!0);this.Ra();od(this,this.b.g[7])}};function Hc(a){return 1<a.i.length||!!a.ca} m.Ga=function(a,b,d){if(!md(this))return!1;this.I=0;a||Ic(this)&&Jc(this,this.b.f[7],0);try{var c=this.b.Ga(a);0<c&&(this.I+=c,lc(this.b,c,!0),hc(this.b,c),this.O++)}catch(e){"number"!=typeof e&&(this.I=0,rb(this.b,e.stack||e.message))}!1!==d&&H(this.b);this.ha(b||!1);return 0<this.I};m.aa=function(a){this.b&&this.b.aa(a)};m.ha=function(a){void 0===a&&(a=!0);this.L=W(this.b.f[7]);a&&1!=this.S?nd(this):od(this)};
function Ic(a,b,d){var c=a.b;if(0<d&&(a.ca&&!--a.ca||Yb(a,b,1,a.i)))return!0;0<=d&&a.J.length&&(a.R++,b=zb(a.H,b),null!=b&&(a.J[b][1]++,b=a.M[a.W],b.B=c.g[7],b.ma=!1,++a.W==a.M.length&&(a.W=0)));return!1}function Yc(a){var b,d;a.i=["bp"];if(void 0!==a.O)for(b=1;b<a.O.length;b++){d=a.O[b];var c=a.H;Zb(c.P[W(d)>>>c.aa],!1)}a.O=["br"];if(void 0!==a.C)for(b=1;b<a.C.length;b++)d=a.C[b],c=a.H,Zb(c.P[W(d)>>>c.aa],!0);a.C=["bw"];a.na=0} function md(a){var b;if(b=a.b&&qb(a.b))b=a.b,b.w.W?b=!0:(b.j(b.toString()+" not powered"),b=!1);b&&!pb(a.b)?(a=a.b,a.w.error?(a.j(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.ra=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.qa=function(a,b){b&&this.j(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){$c(this);this.O=this.fa=0;this.ca=null;this.I=0;this.L=W(this.b.f[7]);this.w.Y=!1;pd(this);a||this.ha()};
m.xa=function(a,b,d){var c=!0;d||pd(this,a,b,!1,!0);if(a!=this.i){var e=W(b);if(-1===e)this.u("invalid address: "+p(b.B,4)),c=!1;else{var f=this.H;f.P[e>>>f.aa].xa(e&f.i,a==this.C)}}c&&(a.push(b),d?b.ma=!0:(qd(this,a,a.length-1,"set"),Zc(this)));return c};function pd(a,b,d,c,e){var f=!1;d=W(d);for(var h=1;h<b.length;h++){var g=b[h];if(d==W(g)&&(!c||g.ma)){f=!0;g.ma||e||qd(a,b,h,"cleared");b.splice(h,1);b!=a.i&&(c=a.H,Zb(c.P[d>>>c.aa],b==a.C));g.ma||Zc(a);break}}return f} m.save=function(){var a=new I(this);J(a,0,hd(this.L));J(a,1,hd(this.P));J(a,2,[this.i,this.R,this.X]);J(a,3,this.F);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.L=id(a[b++]),this.P=id(a[b++]),this.i=a[b][0],"string"==typeof this.i&&(this.i=[this.i]),this.R=a[b][1],this.X|=a[b][2]);a[3]&&(this.F=a[3]);return!0};m.start=function(a,b){this.S||this.j("running");this.w.Y=!0;this.Ja=a;this.La=b};
function rd(a,b){for(var d=1;d<b.length;d++)qd(a,b,d);return b.length-1}function qd(a,b,d,c){d=b[d];a.u(b[0]+" "+p(d.B,4)+(c?" "+c:d.yb?' "'+d.yb+'"':""))}function od(a,b){if(void 0!==b)Yb(a,b,1,a.i,!0),a.U=0;else for(var d=1;d<a.i.length;d++){var c=a.i[d];if(c.ma){if(!pd(a,a.i,c,!0))break;d=0}}} m.stop=function(a,b){if(this.w.Y){this.w.Y=!1;this.I=b-this.La;if(!this.S){var d="stopped";if(this.I){var c=a-this.Ja,e=0<c?Math.round(1E3*this.I/c):0,d=d+" (";Ic(this)&&(d+=this.O+" opcodes, ",this.fa-=this.O,this.O=0);d+=this.I+" cycles, "+c+" ms, "+e+" hz)"}else nb(this,-2147483648)&&(d+=" (use the 't' command to execute blocked faults)");this.j(d)}this.ha(!0);this.Ra();pd(this,this.b.f[7])}};function Ic(a){return 1<a.g.length||!!a.ba}
function Yb(a,b,d,c,e){var f=!1;if(!a.na++)for(var h=1;!f&&h<c.length;h++){var g=c[h];if(!e||g.ma)for(var k=W(g),l=0;l<d;l++)if(b+l==k){var n,f=!0;g.ma&&(pd(a,c,g,!0),e=!0);if(n=g.Cb){for(var f=!1,q=0;q<n.length;q++)if(!sd(a,n[q],!0)){if(n[q].indexOf("if")){f=!0;break}for(var y=q+1;y<n.length&&n[y].indexOf("else");y++)q++;if(y==n.length){f=!0;break}}a.b.A.Z||(f=!0)}if(f){e||qd(a,c,h,"hit");break}}}a.na--;return f} function Jc(a,b,d){var c=a.b;if(0<d&&(a.ba&&!--a.ba||Zb(a,b,1,a.g)))return!0;0<=d&&a.U.length&&(a.O++,null!=Ab(a.G,b)&&(b=a.K[a.V],b.A=c.f[7],b.la=!1,++a.V==a.K.length&&(a.V=0)));return!1}function Zc(a){var b,d;a.g=["bp"];if(void 0!==a.M)for(b=1;b<a.M.length;b++){d=a.M[b];var c=a.G;$b(c.N[X(d)>>>c.$],!1)}a.M=["br"];if(void 0!==a.B)for(b=1;b<a.B.length;b++)d=a.B[b],c=a.G,$b(c.N[X(d)>>>c.$],!0);a.B=["bw"];a.na=0}
function Rd(a,b,d,c){for(var e=V(b.B),f=a.ua(b,1),h=a.oa[f]||[0],g="",k=bd[h[0]],l=h.length-1,n=0,q,y=1;y<=l;y++){var J="";q=h[y];if(void 0!==q){var E=q&240;if(E){var ga=q&15;ga?n=ga:q|=n;q&61440||(q|=1==y?8192:4096);if(E&32)a:{var J=a,E=q,ga=b,B=" ";switch(E&15){case 1:B=p(J.ua(ga,1),2);break;case 2:B=p(J.ua(ga,1)<<24>>24,4);break;case 3:B=p(J.Ua(ga,2),4);break;default:J="imm("+p(E,4,!0)+")";break a}E&64?B="["+B+"]":E&16||(B="0x"+B);J=B}else E&16?J=cd[(q&3840)>>8]:E&128&&(J=(f>>3&7).toString()); m.wa=function(a,b,d){var c=!0;d||qd(this,a,b,!1,!0);if(a!=this.g){var e=X(b);if(-1===e)this.j("invalid address: "+q(b.A,4)),c=!1;else{var f=this.G;f.N[e>>>f.$].wa(e&f.g,a==this.B)}}c&&(a.push(b),d?b.la=!0:(rd(this,a,a.length-1,"set"),$c(this)));return c};function qd(a,b,d,c,e){var f=!1;d=X(d);for(var h=1;h<b.length;h++){var g=b[h];if(d==X(g)&&(!c||g.la)){f=!0;g.la||e||rd(a,b,h,"cleared");b.splice(h,1);b!=a.g&&(c=a.G,$b(c.N[d>>>c.$],b==a.B));g.la||$c(a);break}}return f}
if(!J||!J.length){g="INVALID";break}0<g.length&&(g+=",");g+=J||"???"}}}f="";h=p(e.B,4)+" ";if(-1!==e.B&&-1!==b.B){do if(f+=p(a.ua(e,1),2),null==e.B)break;while(e.B!=b.B)}h+=na(f,10);h=h+(q&32768?"*":" ")+na(k,7);g&&(h+=" "+g);d&&(h=na(h,40)+";"+d,h=a.b.A.Ea?h+("cycles="+hc(a.b).toString()+" cs="+p(a.b.Na)):h+(null!=c?"="+c.toString():""));return h}m.jb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0}; function sd(a,b){for(var d=1;d<b.length;d++)rd(a,b,d);return b.length-1}function rd(a,b,d,c){d=b[d];a.j(b[0]+" "+q(d.A,4)+(c?" "+c:d.yb?' "'+d.yb+'"':""))}function pd(a,b){if(void 0!==b)Zb(a,b,1,a.g,!0),a.S=0;else for(var d=1;d<a.g.length;d++){var c=a.g[d];if(c.la){if(!qd(a,a.g,c,!0))break;d=0}}}
function Sd(a,b,d){var c=[],e=W(b)>>>0;for(b=0;b<a.G.length;b++){var f=a.G[b],h=f.B>>>0,g=f.Gb;if(e>=h&&e<h+g){e=sa(f.hb,[e-h],a.jb);0<=e?Td(a,b,e,c):d&&(e=~e,Td(a,b,e-1,c),Td(a,b,e,c));break}}return c}function Td(a,b,d,c){var e={},f=a.G[b].hb,h=0,g=null;0<=d&&d<f.length&&(h=f[d][0],g=f[d][1]);g&&(e=a.G[b].qa[g],g="."==g.charAt(0)?null:e.l||g);c.push(g);c.push(h);c.push(e.a);c.push(e.c)} function Zb(a,b,d,c,e){var f=!1;if(!a.na++)for(var h=1;!f&&h<c.length;h++){var g=c[h];if(!e||g.la)for(var k=X(g),l=0;l<d;l++)if(b+l==k){var n,f=!0;g.la&&(qd(a,c,g,!0),e=!0);if(n=g.Bb){for(var f=!1,p=0;p<n.length;p++)if(!Rd(a,n[p],!0)){if(n[p].indexOf("if")){f=!0;break}for(var u=p+1;u<n.length&&n[u].indexOf("else");u++)p++;if(u==n.length){f=!0;break}}a.b.w.Y||(f=!0)}if(f){e||rd(a,c,h,"hit");break}}}a.na--;return f}
function Ud(a,b){if("?"==b)a.u("frequency commands:"),a.u("\tclear\tclear all frequency counts");else{var d,c=0;if(a.J)if("clear"==b){for(d=0;d<a.J.length;d++)a.J[d]=[d,0];a.u("frequency data cleared");c++}else if(void 0!==b)a.u("unknown frequency command: "+b),c++;else{var e=a.J.slice();e.sort(function(a,b){return b[1]-a[1]});for(d=0;d<e.length;d++){var f=e[d][0],h=e[d][1];h&&(a.u((bd[a.oa[f][0]]+" ").substr(0,5)+" ("+p(f,2,!0)+"): "+h+" times"),c++)}}c||a.u("no frequency data available")}} function Sd(a,b,d,c){var e=W(b.A),f=a.va(b,2),h,g;for(g in a.ua)if(h=a.ua[g][f&g])break;h||(h=[0]);g="";for(var k=cd[h[0]],l=h.length-1,n=1;n<=l;n++){var p=h[n];if(void 0!==p){var u;u=a;var C=p,p=b,z="";if(C&4096)z=r(p.A+((f&255)<<24>>24)&65535);else{var Aa=f&C;C&4032&&(Aa>>=6,C>>=6);if(C&63){var C=void 0,w=Aa&7;switch(Aa&56){case 0:z="R"+w;break;case 1:z="@R"+w;break;case 2:7>w?z="(R"+w+")+":(C=u.va(p,2),z="#"+r(C));break;case 3:7>w?z="@(R"+w+")+":(C=u.va(p,2),z="@#"+r(C));break;case 4:z="-(R"+w+
function Vd(a,b){var d=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(d){if(!d[1])return Wc(a)||a.u("no variables"),!0;if(!d[2])return Wc(a,d[1]);if(!d[3])return delete a.V[d[1]],!0;var c=Sc(a,d[3]);return void 0!==c?(a.V[d[1]]=c,!0):!1}a.u("invalid assignment:"+b);return!1} ")";break;case 5:z="@-R("+w+")";break;case 6:C=u.va(p,2);z=r(C)+(7>w?"(R"+w+")":"(PC)");break;case 7:C=u.va(p,2),z="@"+r(C)+(7>w?"(R"+w+")":"(PC)")}}}u=z;if(!u||!u.length){g="INVALID";break}0<g.length&&(g+=",");g+=u||"???"}}f="";h=q(e.A,4)+" ";if(-1!==e.A&&-1!==b.A){do if(f+=q(a.Ia(e,1),2),null==e.A)break;while(e.A!=b.A)}h+=na(f,10);h+=na(k,7);g&&(h+=" "+g);d&&(h=na(h,40)+";"+d,h=a.b.w.Da?h+("cycles="+ic(a.b).toString()+" cs="+q(a.b.Na)):h+(null!=c?"="+c.toString():""));return h}
function Wd(a,b,d){var c=null;if(b=X(a,b,!0)){var e=Sd(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.B-e[1])&&(h=" + "+p(f,4,!0)),f=e[0]+" ("+p(e[1],4)+")"+h,d&&a.u(f),c=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.B)&&(h=" - "+p(f,4,!0)),f=e[4]+" ("+p(e[5],4)+")"+h,d&&a.u(f),c||(c=f))}else d&&a.u("no symbols")}return c} m.ib=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};function Td(a,b,d){var c=[],e=X(b)>>>0;for(b=0;b<a.F.length;b++){var f=a.F[b],h=f.A>>>0,g=f.Fb;if(e>=h&&e<h+g){e=sa(f.gb,[e-h],a.ib);0<=e?Ud(a,b,e,c):d&&(e=~e,Ud(a,b,e-1,c),Ud(a,b,e,c));break}}return c}function Ud(a,b,d,c){var e={},f=a.F[b].gb,h=0,g=null;0<=d&&d<f.length&&(h=f[d][0],g=f[d][1]);g&&(e=a.F[b].pa[g],g="."==g.charAt(0)?null:e.l||g);c.push(g);c.push(h);c.push(e.a);c.push(e.c)}
function md(a,b){var d;if(b&&"?"==b[1])a.u("register commands:"),a.u("\tr\tdump registers"),a.u("\trx [#]\tset flag or register x to [#]");else{var c=a.b;null==d&&(d=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.u("missing value for "+b[1]);return}var h=!1,g=Sc(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "PC":c.g[7]=g;a.N=V(c.g[7]);break;case "CF":c.ta=g?c.ta|256:c.ta&255;break;case "ZF":c.ta=g?c.ta& function Vd(a,b){var d=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(d){if(!d[1])return Xc(a)||a.j("no variables"),!0;if(!d[2])return Xc(a,d[1]);if(!d[3])return delete a.T[d[1]],!0;var c=Tc(a,d[3]);return void 0!==c?(a.T[d[1]]=c,!0):!1}a.j("invalid assignment:"+b);return!1}
-256:c.ta|255;break;case "SF":break;default:a.u("unknown register: "+e);return}if(!h){a.u("invalid value: "+f);return}F(c);a.u("updated registers:")}a.u("no regs");d&&(a.N=V(c.g[7]),nd(a,p(a.N.B,4)))}}function Xd(a,b){b=oa(b);var d=b.match(/^(['"])(.*?)\1$/);d?a.u(kd(a,d[2])):Sc(a,b,!0)}function Yd(a,b,d){var c="t"!=b;d=Uc(a,d,null,!0)||1;var e=1==d?0:1;"tc"==b&&(e=d,d=1);Ia(d,function(){return nb(a,!0)&&a.Ha(e,c,!1)},function(){F(a.b);nb(a,!1)})} function Wd(a,b,d){var c=null;if(b=Y(a,b,!0)){var e=Td(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.A-e[1])&&(h=" + "+r(f)),f=e[0]+" ("+q(e[1],4)+")"+h,d&&a.j(f),c=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.A)&&(h=" - "+r(f)),f=e[4]+" ("+q(e[5],4)+")"+h,d&&a.j(f),c||(c=f))}else d&&a.j("no symbols")}return c}
function nd(a,b,d,c){if(b=X(a,b,!0)){void 0===c&&(c=1);var e=256;if(void 0!==d){c=X(a,d,!0);if(!c||c.B<b.B)return;e=c.B-b.B;if(256<e){a.u("range too large");return}c=-1}d=0;for(var f;0<e&&c--;){f=ob(a,!1)||a.U?a.L:null;var h=null!=f?"cycles":null,g=Sd(a,b),k=b.B;if(g[0]&&c&&(!d&&c||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.u(l)}g[3]&&(h=g[3],f=null);f=Rd(a,b,h,f);a.u(f);a.N=b;e-=b.B-k;d++}}} function nd(a,b){var d;if(b&&"?"==b[1])a.j("register commands:"),a.j("\tr\tdump registers"),a.j("\trx [#]\tset flag or register x to [#]");else{var c=a.b;null==d&&(d=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.j("missing value for "+b[1]);return}var h=!1,g=Tc(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "PC":c.f[7]=g;a.L=W(c.f[7]);break;case "CF":c.sa=g?c.sa|256:c.sa&255;break;case "ZF":c.sa=g?c.sa&
function sd(a,b,d){var c=!0;try{b.length&&"end"!=b?d||a.u(">> "+b):(a.T&&(a.u("ended assemble at "+p(a.S.B,4)),a.N=a.S,a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.da=null;if(pb(a)&&0<b.length){a.T&&(b="a "+p(a.S.B,4)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var n=X(a,f[1],!0);if(n)if(a.S= -256:c.sa|255;break;case "SF":break;default:a.j("unknown register: "+e);return}if(!h){a.j("invalid value: "+f);return}H(c);a.j("updated registers:")}a.j("no regs");d&&(a.L=W(c.f[7]),od(a,q(a.L.A,4)))}}function Xd(a,b){b=oa(b);var d=b.match(/^(['"])(.*?)\1$/);d?a.j(ld(a,d[2])):Tc(a,b,!0)}function Yd(a,b,d){var c="t"!=b;d=Vc(a,d,null,!0)||1;var e=1==d?0:1;"tc"==b&&(e=d,d=1);Ja(d,function(){return ob(a,!0)&&a.Ga(e,c,!1)},function(){H(a.b);ob(a,!1)})}
n,void 0===f[2])a.u("begin assemble at "+p(n.B,4)),a.T=!0,F(a.b);else{var q;a.u("not supported yet");q=[];if(q.length){for(var y=0;y<q.length;y++)a.gb(n,q[y],1);a.u(Rd(a,a.S))}}break;case "b":a:{var J=f[0],E=f[1],ga=b;if("?"==E)a.u("breakpoint commands:"),a.u("\tbp [a]\tset exec breakpoint at addr [a]"),a.u("\tbr [a]\tset read breakpoint at addr [a]"),a.u("\tbw [a]\tset write breakpoint at addr [a]"),a.u("\tbc [a]\tclear breakpoint at addr [a]"),a.u("\tbl\tlist all breakpoints"),a.u("\tbn [n]\tbreak after [n] instruction(s)"); function od(a,b,d,c){if(b=Y(a,b,!0)){void 0===c&&(c=1);var e=256;if(void 0!==d){c=Y(a,d,!0);if(!c||c.A<b.A)return;e=c.A-b.A;if(256<e){a.j("range too large");return}c=-1}d=0;for(var f;0<e&&c--;){f=pb(a,!1)||a.S?a.I:null;var h=null!=f?"cycles":null,g=Td(a,b),k=b.A;if(g[0]&&c&&(!d&&c||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.j(l)}g[3]&&(h=g[3],f=null);f=Sd(a,b,h,f);a.j(f);a.L=b;e-=b.A-k;d++}}}
else{var B=J.charAt(1);if("l"==B){var Aa=0,Aa=Aa+rd(a,a.i),Aa=Aa+rd(a,a.O);(Aa+=rd(a,a.C))||a.u("no breakpoints")}else if("n"==B)a.ca=Uc(a,E),a.u("break after "+a.ca+" instruction(s)");else if(void 0===E)a.u("missing breakpoint address");else{var O=V();if("*"!=E&&(O=X(a,E,!0),!O))break a;"c"==B?null==O.B?(Yc(a),a.u("all breakpoints cleared")):pd(a,a.i,O)||pd(a,a.O,O)||pd(a,a.C,O)||a.u("breakpoint missing: "+p(O.B,4)):null!=O.B&&(id(a,O,ga),"p"==B?a.xa(a.i,O):"r"==B?a.xa(a.O,O):"w"==B?a.xa(a.C,O): function Rd(a,b,d){var c=!0;try{b.length&&"end"!=b?d||a.j(">> "+b):(a.R&&(a.j("ended assemble at "+q(a.P.A,4)),a.L=a.P,a.R=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ca=null;if(qb(a)&&0<b.length){a.R&&(b="a "+q(a.P.A,4)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var n=Y(a,f[1],!0);if(n)if(a.P=
a.u("unknown breakpoint command: "+B))}}}break;case "c":a.ya&&(a.ya.value="");break;case "d":a:{var Ba,Ca=f[0],Y=f[1],pa=f[2],re=f[3];if("?"==Y){var Z="";for(Ba in C)a.ja[Ba]&&(Z&&(Z+=","),Z+=Ba);Z+=",state,symbols";a.u("dump memory commands:");a.u("\tdb [a] [#] dump # bytes at address a");a.u("\tdw [a] [#] dump # words at address a");a.u("\tdd [a] [#] dump # dwords at address a");a.u("\tdh [#] [#] dump # instructions from history");Z.length&&a.u("dump extension commands:\n\t"+Z)}else if("state"== n,void 0===f[2])a.j("begin assemble at "+q(n.A,4)),a.R=!0,H(a.b);else{var p;a.j("not supported yet");p=[];if(p.length){for(var u=0;u<p.length;u++)a.fb(n,p[u],1);a.j(Sd(a,a.P))}}break;case "b":a:{var C=f[0],z=f[1],Aa=b;if("?"==z)a.j("breakpoint commands:"),a.j("\tbp [a]\tset exec breakpoint at addr [a]"),a.j("\tbr [a]\tset read breakpoint at addr [a]"),a.j("\tbw [a]\tset write breakpoint at addr [a]"),a.j("\tbc [a]\tclear breakpoint at addr [a]"),a.j("\tbl\tlist all breakpoints"),a.j("\tbn [n]\tbreak after [n] instruction(s)");
Y){var td=Zd(a.D,!0);"console"==pa?console.log(td):(a.ya&&(a.ya.value=""),a.u(td))}else if("symbols"==Y)for(var nc=0;nc<a.G.length;nc++){var oc=a.G[nc],Da;for(Da in oc.qa)if("."!=Da.charAt(0)){var ud=oc.qa[Da].o;if(void 0!==ud){var vd=oc.qa[Da].l;vd&&(Da=vd);a.u(p(ud,4)+" "+Da)}}}else{if("d"==Ca){for(Ba in C)if(f[1]==Ba){var wd=a.ja[Ba];wd?(f.shift(),f.shift(),wd(f)):a.u("no dump registered for "+Y);break a}Y||(Ca=a.Ma||"db")}else a.Ma=Ca;if("dh"==Ca){var xd=Y,yd=pa,zd="",Ad=0,K=a.W,aa=a.M;if(aa.length){var P= else{var w=C.charAt(1);if("l"==w){var Ba=0,Ba=Ba+sd(a,a.g),Ba=Ba+sd(a,a.M);(Ba+=sd(a,a.B))||a.j("no breakpoints")}else if("n"==w)a.ba=Vc(a,z),a.j("break after "+a.ba+" instruction(s)");else if(void 0===z)a.j("missing breakpoint address");else{var O=W();if("*"!=z&&(O=Y(a,z,!0),!O))break a;"c"==w?null==O.A?(Zc(a),a.j("all breakpoints cleared")):qd(a,a.g,O)||qd(a,a.M,O)||qd(a,a.B,O)||a.j("breakpoint missing: "+q(O.A,4)):null!=O.A&&(jd(a,O,Aa),"p"==w?a.wa(a.g,O):"r"==w?a.wa(a.M,O):"w"==w?a.wa(a.B,O):
+xd||a.wa,Ea=+yd||10;isNaN(P)?P=Ea:zd="more ";P>aa.length&&(a.u("note: only "+aa.length+" available"),P=aa.length);K-=P;0>K&&(null==aa[aa.length-1].B?(P=K+P,K=0):K+=aa.length);var pc=[];"call"==yd&&(Ea=1E5,pc=["CALL"]);for(void 0!==xd&&a.u(P+" instructions earlier:");0<Ea&&K!=a.W;){var Bd=aa[K++];if(null==Bd.B)break;var cb=V(Bd.B),se=P--,Cd=Rd(a,cb,"history",se);(!pc.length||0<=Cd.indexOf(pc[0]))&&a.u(Cd);cb.Wa&&(K+=cb.Wa,Ea-=cb.Wa,P-=cb.Wa);K>=aa.length&&(K=0);a.wa=P;Ad++;Ea--}}Ad||(a.u("no "+zd+ a.j("unknown breakpoint command: "+w))}}}break;case "c":a.xa&&(a.xa.value="");break;case "d":a:{var Ca,Da=f[0],Z=f[1],pa=f[2],re=f[3];if("?"==Z){var aa="";for(Ca in F)a.ia[Ca]&&(aa&&(aa+=","),aa+=Ca);aa+=",state,symbols";a.j("dump memory commands:");a.j("\tdb [a] [#] dump # bytes at address a");a.j("\tdw [a] [#] dump # words at address a");a.j("\tdd [a] [#] dump # dwords at address a");a.j("\tdh [#] [#] dump # instructions from history");aa.length&&a.j("dump extension commands:\n\t"+aa)}else if("state"==
"history available"),a.wa=void 0)}else{var Bb=X(a,Y);if(Bb){var Cb=0;pa&&("l"==pa.charAt(0)&&(pa=pa.substr(1)||re),Cb=Uc(a,pa)>>>0,65536<Cb&&(Cb=65536));for(var qa="",Db="dd"==Ca?4:"dw"==Ca?2:1,Eb=Db*Cb||128,te=Eb+15>>4||1;te--&&0<Eb;){var Fb=0,qc=0,db,eb="",rc="",Y=p(Bb.B,4);for(db=16;0<db&&0<Eb;db--){var Gb=a.ua(Bb,1),Fb=Fb|Gb<<(qc++<<3);qc==Db&&(eb+=p(Fb,2*Db),eb+=1==Db?9==db?"-":" ":" ",Fb=qc=0);rc+=32<=Gb&&128>Gb?String.fromCharCode(Gb):".";Eb--}qa&&(qa+="\n");qa+=Y+" "+eb+(0==db?" "+rc:"")}qa&& Z){var td=Zd(a.C,!0);"console"==pa?console.log(td):(a.xa&&(a.xa.value=""),a.j(td))}else if("symbols"==Z)for(var oc=0;oc<a.F.length;oc++){var pc=a.F[oc],Ea;for(Ea in pc.pa)if("."!=Ea.charAt(0)){var ud=pc.pa[Ea].o;if(void 0!==ud){var vd=pc.pa[Ea].l;vd&&(Ea=vd);a.j(q(ud,4)+" "+Ea)}}}else{if("d"==Da){for(Ca in F)if(f[1]==Ca){var wd=a.ia[Ca];wd?(f.shift(),f.shift(),wd(f)):a.j("no dump registered for "+Z);break a}Z||(Da=a.Ma||"db")}else a.Ma=Da;if("dh"==Da){var xd=Z,yd=pa,zd="",Ad=0,K=a.V,ba=a.K;if(ba.length){var P=
a.u(qa);a.pa=Bb}}}}break;case "e":if("else"==f[0])break;var Hb=1,Dd=255,Ed=a.ua,Fd=a.gb;"ew"==f[0]&&(Hb=2,Dd=65535,Ed=a.Ua,Fd=a.Bb);var Gd=Hb<<1,Hd=f[1];if(null==Hd)a.u("edit memory commands:"),a.u("\teb [a] [...] edit bytes at address a"),a.u("\tew [a] [...] edit words at address a");else{var Ib=X(a,Hd);if(Ib)for(var Jb=2;Jb<f.length;Jb++){var fb=Sc(a,f[Jb]);if(void 0===fb){a.u("unrecognized value: "+f[Jb]);break}fb&~Dd&&a.u("warning: "+p(fb)+" exceeds "+Hb+"-byte value");var ue=Ed.call(a,Ib); +xd||a.oa,Fa=+yd||10;isNaN(P)?P=Fa:zd="more ";P>ba.length&&(a.j("note: only "+ba.length+" available"),P=ba.length);K-=P;0>K&&(null==ba[ba.length-1].A?(P=K+P,K=0):K+=ba.length);var qc=[];"call"==yd&&(Fa=1E5,qc=["CALL"]);for(void 0!==xd&&a.j(P+" instructions earlier:");0<Fa&&K!=a.V;){var Bd=ba[K++];if(null==Bd.A)break;var cb=W(Bd.A),se=P--,Cd=Sd(a,cb,"history",se);(!qc.length||0<=Cd.indexOf(qc[0]))&&a.j(Cd);cb.Wa&&(K+=cb.Wa,Fa-=cb.Wa,P-=cb.Wa);K>=ba.length&&(K=0);a.oa=P;Ad++;Fa--}}Ad||(a.j("no "+zd+
a.u("changing "+p(Ib.B,4)+" from "+p(ue,Gd,!0)+" to "+p(fb,Gd,!0));Fd.call(a,Ib,fb,Hb)}}break;case "f":Ud(a,f[1]);break;case "g":a:{var Id=f[1],ve=b;if(void 0!==Id){var sc=X(a,Id,!0);if(!sc)break a;id(a,sc,ve);a.xa(a.i,sc,!0)}a.Ca(!0)||d||a.u("cpu busy or unavailable, run command ignored")}break;case "h":a:{var tc;if(a.A.Z)tc="halting",a.ba();else{if(ob(a,!0))break a;tc="already halted"}d||a.u(tc)}break;case "i":if("if"==f[0]){var uc;var gb=b.substr(2),gb=oa(gb);Sc(a,gb)?(d||a.u("true: "+gb),uc=!0): "history available"),a.oa=void 0)}else{var Cb=Y(a,Z);if(Cb){var Db=0;pa&&("l"==pa.charAt(0)&&(pa=pa.substr(1)||re),Db=Vc(a,pa)>>>0,65536<Db&&(Db=65536));for(var qa="",Eb="dd"==Da?4:"dw"==Da?2:1,Fb=Eb*Db||128,te=Fb+15>>4||1;te--&&0<Fb;){var Gb=0,rc=0,db,eb="",sc="",Z=q(Cb.A,4);for(db=16;0<db&&0<Fb;db--){var Hb=a.Ia(Cb,1),Gb=Gb|Hb<<(rc++<<3);rc==Eb&&(eb+=q(Gb,2*Eb),eb+=1==Eb?9==db?"-":" ":" ",Gb=rc=0);sc+=32<=Hb&&128>Hb?String.fromCharCode(Hb):".";Fb--}qa&&(qa+="\n");qa+=Z+" "+eb+(0==db?" "+sc:"")}qa&&
(d||a.u("false: "+gb),uc=!1);uc||(c=!1)}break;case "k":var we=f[0];if("?"==f[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var vc=0,Jd=V(),hb=V(a.b.g[6]);for(a.u("stack trace for "+p(hb.B,4));10>vc;){for(var ra=null,xe=256;65536>hb.B>>>0;){Jd.B=a.Ua(hb,2);if(null==hb.B||!xe--)break;for(var ye=a,Kb=Jd,Kd=null,ib=Kb.B,Ld=ib,wc=1;6>=wc&&ib;wc++){if(2<wc){Kb.B=ib;var Lb=Rd(ye,Kb);if(0<=Lb.indexOf("CALL")){var Md=Lb.indexOf(" ");if(ib+(Lb.indexOf(" ", a.j(qa);a.ma=Cb}}}}break;case "e":if("else"==f[0])break;var Ib=1,Dd=255,Ed=a.Ia,Fd=a.fb;"ew"==f[0]&&(Ib=2,Dd=65535,Ed=a.va,Fd=a.Ab);var Gd=Ib<<1,Hd=f[1];if(null==Hd)a.j("edit memory commands:"),a.j("\teb [a] [...] edit bytes at address a"),a.j("\tew [a] [...] edit words at address a");else{var Jb=Y(a,Hd);if(Jb)for(var Kb=2;Kb<f.length;Kb++){var fb=Tc(a,f[Kb]);if(void 0===fb){a.j("unrecognized value: "+f[Kb]);break}fb&~Dd&&a.j("warning: "+q(fb)+" exceeds "+Ib+"-byte value");var ue=Ed.call(a,Jb);
Md+1)-Md-1)/2==Ld){Kd=Lb;break}}}ib--}Kb.B=Ld;if(ra=Kd)break}if(!ra||null==ra)break;var Nd=null;if("ks"==we){var Od=ra.match(/[0-9A-F]+$/);Od&&(Nd=Wd(a,Od[0]))}ra=na(ra,50)+" ;"+(Nd||"stack="+p(hb.B,4));a.u(ra);vc++}vc||a.u("no return addresses found")}break;case "l":if("ln"==f[0]){Wd(a,f[1],!0);break}break;case "m":a:{var ba,ca=null,x=f[1];"?"==x&&(x=void 0);if(void 0!==x){var ha=0;if("all"==x)ha=1878917119,x=null;else if("on"==x)ca=!0,x=null;else if("off"==x)ca=!1,x=null;else{"keys"==x&&(x="key"); a.j("changing "+q(Jb.A,4)+" from "+q(ue,Gd,!0)+" to "+q(fb,Gd,!0));Fd.call(a,Jb,fb,Ib)}}break;case "g":a:{var Id=f[1],ve=b;if(void 0!==Id){var tc=Y(a,Id,!0);if(!tc)break a;jd(a,tc,ve);a.wa(a.g,tc,!0)}a.Ba(!0)||d||a.j("cpu busy or unavailable, run command ignored")}break;case "h":a:{var uc;if(a.w.Y)uc="halting",a.aa();else{if(pb(a,!0))break a;uc="already halted"}d||a.j(uc)}break;case "i":if("if"==f[0]){var vc;var gb=b.substr(2),gb=oa(gb);Tc(a,gb)?(d||a.j("true: "+gb),vc=!0):(d||a.j("false: "+gb),vc=
"kbd"==x&&(x="keyboard");for(ba in C)if(x==ba){ha=C[ba];ca=!!(a.Y&ha);break}if(!ha){a.u("unknown message category: "+x);break a}}if(ha)if("on"==f[2])a.Y|=ha,ca=!0;else if("off"==f[2]&&(a.Y&=~ha,ca=!1,1073741824==ha)){for(var xc=0;xc<a.fa.length;xc++)a.u(a.fa[xc]);a.fa=[]}}var ze=0,ia="";for(ba in C)if(!x||x==ba){var Ae=!!(a.Y&C[ba]);if(null===ca||ca==Ae)ia&&(ia+=","),++ze%10||(ia+="\n\t"),"key"==ba&&(ba="keys"),ia+=ba}void 0===x&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off"); !1);vc||(c=!1)}break;case "k":var we=f[0];if("?"==f[1])a.j("stack trace commands:"),a.j("\tk\tshow frame addresses"),a.j("\tks\tshow symbol information");else{var wc=0,Jd=W(),hb=W(a.b.f[6]);for(a.j("stack trace for "+q(hb.A,4));10>wc;){for(var ra=null,xe=256;65536>hb.A>>>0;){Jd.A=a.va(hb,2);if(null==hb.A||!xe--)break;for(var ye=a,Lb=Jd,Kd=null,ib=Lb.A,Ld=ib,xc=1;6>=xc&&ib;xc++){if(2<xc){Lb.A=ib;var Mb=Sd(ye,Lb);if(0<=Mb.indexOf("CALL")){var Md=Mb.indexOf(" ");if(ib+(Mb.indexOf(" ",Md+1)-Md-1)/2==
a.u((null!==ca?ca?"messages on: ":"messages off: ":"message categories:\n\t")+(ia||"none"));Zc(a)}break;case "p":if("print"==f[0]){Xd(a,b.substr(5));break}var Be="pr"==f[0]?1:0;if(a.U)a.u("step in progress");else{var Pd=V(a.b.g[7]);a.ua(Pd);a.U?(a.xa(a.i,Pd,!0),a.Ca()||(a.D&&a.D.Ra(),a.U=0)):Yd(a,Be?"tr":"t")}break;case "r":if("reset"==b){a.D&&a.D.reset();break}md(a,f);break;case "s":a:switch(f[1]){case "cs":var jb;void 0!==f[3]&&(jb=+f[3]);switch(f[2]){case "int":a.b.Fa=jb;break;case "start":a.b.Oa= Ld){Kd=Mb;break}}}ib--}Lb.A=Ld;if(ra=Kd)break}if(!ra||null==ra)break;var Nd=null;if("ks"==we){var Od=ra.match(/[0-9A-F]+$/);Od&&(Nd=Wd(a,Od[0]))}ra=na(ra,50)+" ;"+(Nd||"stack="+q(hb.A,4));a.j(ra);wc++}wc||a.j("no return addresses found")}break;case "l":if("ln"==f[0]){Wd(a,f[1],!0);break}break;case "m":a:{var ca,da=null,A=f[1];"?"==A&&(A=void 0);if(void 0!==A){var ha=0;if("all"==A)ha=1878917119,A=null;else if("on"==A)da=!0,A=null;else if("off"==A)da=!1,A=null;else{"keys"==A&&(A="key");"kbd"==A&&(A=
jb;break;case "stop":a.b.Ga=jb;break;default:a.u("unknown cs option");break a}void 0!==jb&&ec(a.b);a.u("checksums "+(a.b.A.Ea?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(jc(a.b,+f[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.b.Aa.toFixed(2)+"Mhz")+" ("+a.b.Ba+"x)");break;case "?":a.u("debugger options:");a.u("\tcs int #\tset checksum cycle interval to #");a.u("\tcs start #\tset checksum cycle start count to #");a.u("\tcs stop #\tset checksum cycle stop count to #"); "keyboard");for(ca in F)if(A==ca){ha=F[ca];da=!!(a.X&ha);break}if(!ha){a.j("unknown message category: "+A);break a}}if(ha)if("on"==f[2])a.X|=ha,da=!0;else if("off"==f[2]&&(a.X&=~ha,da=!1,1073741824==ha)){for(var yc=0;yc<a.ea.length;yc++)a.j(a.ea[yc]);a.ea=[]}}var ze=0,ia="";for(ca in F)if(!A||A==ca){var Ae=!!(a.X&F[ca]);if(null===da||da==Ae)ia&&(ia+=","),++ze%10||(ia+="\n\t"),"key"==ca&&(ca="keys"),ia+=ca}void 0===A&&a.j("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.j((null!==
a.u("\tsp #\t\tset speed multiplier to #");break;default:f[1]&&a.u("unknown option: "+f[1])}break;case "t":Yd(a,f[0],f[1]);break;case "u":nd(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Vd(a,b.substr(3))||(c=!1);break}a.u("PDP11js version 1.30.0 ("+a.b.rb+",RELEASE"+(rb?",TYPEDARRAYS":",LONGARRAYS")+")");a.u(window?window.navigator.userAgent:"");break;case "?":if(f[1]){Xd(a,b.substr(1));break}var kb="commands:",yc;for(yc in ad)kb+="\n"+na(yc,9)+ad[yc];Hc(a)||(kb+="\nnote: frequency/history disabled if no exec breakpoints"); da?da?"messages on: ":"messages off: ":"message categories:\n\t")+(ia||"none"));$c(a)}break;case "p":if("print"==f[0]){Xd(a,b.substr(5));break}var Be="pr"==f[0]?1:0;if(a.S)a.j("step in progress");else{var Pd=W(a.b.f[7]);a.Ia(Pd);a.S?(a.wa(a.g,Pd,!0),a.Ba()||(a.C&&a.C.Ra(),a.S=0)):Yd(a,Be?"tr":"t")}break;case "r":if("reset"==b){a.C&&a.C.reset();break}nd(a,f);break;case "s":a:switch(f[1]){case "cs":var jb;void 0!==f[3]&&(jb=+f[3]);switch(f[2]){case "int":a.b.Ea=jb;break;case "start":a.b.Oa=jb;break;
a.u(kb);break;default:a.u("unknown command: "+b),c=!1}}}catch(Qd){a.u("debugger error: "+(Qd.stack||Qd.message)),c=!1}return c}function fc(a,b,d){b=Qc(a,b,d);for(var c in b)if(!sd(a,b[c]))return!1;return!0}Pa(function(){for(var a=z(document,"pdp11","debugger"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Xc(c);lb(c,d)}}); case "stop":a.b.Fa=jb;break;default:a.j("unknown cs option");break a}void 0!==jb&&fc(a.b);a.j("checksums "+(a.b.w.Da?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(kc(a.b,+f[2])||a.j("warning: using 1x multiplier, previous target not reached"));a.j("target speed: "+(a.b.za.toFixed(2)+"Mhz")+" ("+a.b.Aa+"x)");break;case "?":a.j("debugger options:");a.j("\tcs int #\tset checksum cycle interval to #");a.j("\tcs start #\tset checksum cycle start count to #");a.j("\tcs stop #\tset checksum cycle stop count to #");
function $d(a,b,d){t.call(this,"Computer",a,$d,67108864);this.A.X=!1;ae(this,b);this.N=cc(this,"autoPower",a);this.w=0;this.U=a.busWidth||a.buswidth;this.i=be;this.L=null;this.G=this.S=!1;this.V=cc(this,"url")||"";(Math.random()+.1).toString(36);this.j=ce(this);if(this.b=bb("CPU",this.id)){this.F=bb("Debugger",this.id);this.H=new ub({id:this.pb+".bus",busWidth:this.U},this.b,this.F);var c,e=ab(this.id);if((this.D=bb("Panel",this.id))&&this.D.ya)for(b=0;b<e.length;b++)c=e[b],c.ea=this.D.ea,c.u=this.D.u, a.j("\tsp #\t\tset speed multiplier to #");break;default:f[1]&&a.j("unknown option: "+f[1])}break;case "t":Yd(a,f[0],f[1]);break;case "u":od(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Vd(a,b.substr(3))||(c=!1);break}a.j("PDP11js version 1.30.0 ("+a.b.rb+",RELEASE"+(sb?",TYPEDARRAYS":",LONGARRAYS")+")");a.j(window?window.navigator.userAgent:"");break;case "?":if(f[1]){Xd(a,b.substr(1));break}var kb="commands:",zc;for(zc in bd)kb+="\n"+na(zc,9)+bd[zc];Ic(a)||(kb+="\nnote: history disabled if no exec breakpoints");
c.ya=this.D.ya;this.u("PDP11js v1.30.0\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");this.u("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<e.length;b++)c=e[b],c.za&&c.za(this,this.H,this.b,this.F);b=null;c=a.resume;void 0!==c&&(1<c.length?b=this.J=c:this.i=parseInt(c,10));var f;if(a=cc(this,"state")||(f=!0,a.state))b=this.O=a,f||(this.G=!0,this.i=be),this.i&&(this.M= a.j(kb);break;default:a.j("unknown command: "+b),c=!1}}}catch(Qd){a.j("debugger error: "+(Qd.stack||Qd.message)),c=!1}return c}function gc(a,b,d){b=Rc(a,b,d);for(var c in b)if(!Rd(a,b[c]))return!1;return!0}Qa(function(){for(var a=D(document,"pdp11","debugger"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Yc(c);mb(c,d)}});
new G(this,"1.30.0"),de(this.M)?b=null:delete this.M);!b&&this.i&&(b=ee(this))&&(this.G=!0);if(b){var h=this;wa(b,null,!0,function(a,b,c){c?(h.J=null,h.G=!1,h.ea("Unable to load machine state from server (error "+c+(b?": "+oa(b):"")+")")):(h.L=b,h.S=!0);A(h)})}else A(this);this.K.power||(this.N=!0);!d&&this.N&&fe(this,this.Pa)}else r("Unable to find CPU component")}v($d);var be=0; function $d(a,b,d){v.call(this,"Computer",a,$d,67108864);this.w.W=!1;ae(this,b);this.M=dc(this,"autoPower",a);this.u=0;this.T=a.busWidth||a.buswidth;this.g=be;this.K=null;this.F=this.R=!1;this.U=dc(this,"url")||"";(Math.random()+.1).toString(36);this.i=ce(this);if(this.b=lb("CPU",this.id)){this.D=lb("Debugger",this.id);this.G=new vb({id:this.ob+".bus",busWidth:this.T},this.b,this.D);var c,e=bb(this.id);if((this.C=lb("Panel",this.id))&&this.C.xa)for(b=0;b<e.length;b++)c=e[b],c.da=this.C.da,c.j=this.C.j,
function ae(a,b){if(!b){var d;if("object"==typeof resources&&(d=resources.parms))try{b=eval("("+d+")")}catch(c){r(c.message+" ("+d+")")}}a.T=b}function cc(a,b,d){var c=b.toLowerCase(),c=Ua[b]||Ua[c];void 0===c&&a.T&&(c=a.T[b]);void 0===c&&d&&(c=d[b]);void 0===c&&"object"==typeof resources&&resources[b]&&(c=b);return c}function fe(a,b,d){for(var c=ab(a.id),e=0;e<=c.length;e++){var f=e<c.length?c[e]:a;if(!pb(f)){pb(f,function(){fe(a,b,d)});return}}b.call(a,d)} c.xa=this.C.xa;this.j("PDP11js v1.30.0\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");this.j("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<e.length;b++)c=e[b],c.ya&&c.ya(this,this.G,this.b,this.D);b=null;c=a.resume;void 0!==c&&(1<c.length?b=this.I=c:this.g=parseInt(c,10));var f;if(a=dc(this,"state")||(f=!0,a.state))b=this.O=a,f||(this.F=!0,this.g=be),this.g&&(this.L=
function ge(a,b){var d=new G(a,"1.30.0","validate");if(de(d)&&he(d)){var c=ie(d,"timestamp"),e=b?ie(b,"timestamp"):"unknown";c!=e&&(a.ea("Machine state may be out-of-date\n("+c+" vs. "+e+")\nCheck your browser's local storage limits"),b||d.clear())}}m=$d.prototype; new I(this,"1.30.0"),de(this.L)?b=null:delete this.L);!b&&this.g&&(b=ee(this))&&(this.F=!0);if(b){var h=this;wa(b,null,!0,function(a,b,c){c?(h.I=null,h.F=!1,h.da("Unable to load machine state from server (error "+c+(b?": "+oa(b):"")+")")):(h.K=b,h.R=!0);E(h)})}else E(this);this.J.power||(this.M=!0);!d&&this.M&&fe(this,this.Pa)}else t("Unable to find CPU component")}y($d);var be=0;
m.Pa=function(a){void 0===a&&(a=this.i||(this.L?1:be));if(!this.w){this.w++;var b=!1,d=!1;this.R=!1;var c=this.M||new G(this,"1.30.0");if(-1==a)b=!0;else if(a>be){if(de(c,this.L)){this.C=new G(this,"1.30.0","failsafe");de(this.C)&&(je(this,c),a=2,ke(this.C));H(this.C,"timestamp",ua());le(this.C);var e=this.i&&!this.G;if(1==a||xa("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(d=he(c)){var f=ie(c,"code"),h=ie(c,"data");f&&("ok"==f?de(c,h):("error"==f&& function ae(a,b){if(!b){var d;if("object"==typeof resources&&(d=resources.parms))try{b=eval("("+d+")")}catch(c){t(c.message+" ("+d+")")}}a.S=b}function dc(a,b,d){var c=b.toLowerCase(),c=Va[b]||Va[c];void 0===c&&a.S&&(c=a.S[b]);void 0===c&&d&&(c=d[b]);void 0===c&&"object"==typeof resources&&resources[b]&&(c=b);return c}function fe(a,b,d){for(var c=bb(a.id),e=0;e<=c.length;e++){var f=e<c.length?c[e]:a;if(!qb(f)){qb(f,function(){fe(a,b,d)});return}}b.call(a,d)}
"no machine state"!=h?(this.ea("Error: "+h),"unable to verify user"==h&&(Ga("user",""),this.j=null)):this.u(f+": "+h),ke(c),de(c)?(d=he(c),e=!0):d=!1))}e&&ge(this,d?c:null)}else 2==a&&c.clear()}else ge(this);delete this.L;delete this.M}e=ab(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(d=me(this,h,c,b,d));b=[c,a,d];-1!=a?fe(this,this.lb,b):this.lb(b)}}; function ge(a,b){var d=new I(a,"1.30.0","validate");if(de(d)&&he(d)){var c=ie(d,"timestamp"),e=b?ie(b,"timestamp"):"unknown";c!=e&&(a.da("Machine state may be out-of-date\n("+c+" vs. "+e+")\nCheck your browser's local storage limits"),b||d.clear())}}m=$d.prototype;
function me(a,b,d,c,e){if(!b.A.X){b.A.X=!0;if(b.sa){var f=null;e&&((f=ie(d,b.id))||(f=ie(d,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.sa(f,c)&&f&&(r("Unable to restore state for "+b.type),a.O&&!a.S?(d.clear(),a.i=be,window&&window.location.reload()):a.R=!0,b.sa(null),e=!1)}if(!c&&b.ob)for(a=b.ob.split("|"),d=0;d<a.length;d++)b.status(a[d])}return e} m.Pa=function(a){void 0===a&&(a=this.g||(this.K?1:be));if(!this.u){this.u++;var b=!1,d=!1;this.P=!1;var c=this.L||new I(this,"1.30.0");if(-1==a)b=!0;else if(a>be){if(de(c,this.K)){this.B=new I(this,"1.30.0","failsafe");de(this.B)&&(je(this,c),a=2,ke(this.B));J(this.B,"timestamp",ua());le(this.B);var e=this.g&&!this.F;if(1==a||xa("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(d=he(c)){var f=ie(c,"code"),h=ie(c,"data");f&&("ok"==f?de(c,h):("error"==f&&
m.lb=function(a){var b=a[0],d=0>a[1];a=a[2];this.W=!0;this.A.X=!0;var c=this.K.power;c&&(c.textContent="Shutdown");this.b&&(me(this,this.b,b,d,a),this.b.Ja());this.R&&(je(this,b),b.clear());!d&&this.C&&(this.C.clear(),delete this.C);this.w=0}; "no machine state"!=h?(this.da("Error: "+h),"unable to verify user"==h&&(Ha("user",""),this.i=null)):this.j(f+": "+h),ke(c),de(c)?(d=he(c),e=!0):d=!1))}e&&ge(this,d?c:null)}else 2==a&&c.clear()}else ge(this);delete this.K;delete this.L}e=bb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(d=me(this,h,c,b,d));b=[c,a,d];-1!=a?fe(this,this.kb,b):this.kb(b)}};
function je(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.j||"",c=b.toString(),e={app:"PDP11js",ver:"1.30.0"};e.url=a.V;e.user=d;e.type="bug";e.data=c;wa("http://www.pcjs.org/api/v1/report",e,!0)}} function me(a,b,d,c,e){if(!b.w.W){b.w.W=!0;if(b.ra){var f=null;e&&((f=ie(d,b.id))||(f=ie(d,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ra(f,c)&&f&&(t("Unable to restore state for "+b.type),a.O&&!a.R?(d.clear(),a.g=be,window&&window.location.reload()):a.P=!0,b.ra(null),e=!1)}if(!c&&b.nb)for(a=b.nb.split("|"),d=0;d<a.length;d++)b.status(a[d])}return e}
function Zd(a,b,d){var c,e="none";if(a.w)return null;a.w--;var f=new G(a,"1.30.0"),h=new G(a,"1.30.0","validate"),g=ua();H(h,"timestamp",g);H(f,"timestamp",g);H(f,"version","1.30.0");H(f,"url",window?window.location.href:null);H(f,"browser",window?window.navigator.userAgent:"");a.b&&a.b.ra&&(d&&a.b.ba(),c=a.b.ra(b,d),"object"===typeof c&&H(f,a.b.id,c),d&&(a.b.A.X=!1,!1===c&&(e=null)));for(var g=ab(a.id),k=0;k<g.length;k++){var l=g[k];l.A.X&&(l.ra&&(c=l.ra(b,d),"object"===typeof c&&H(f,l.id,c)),d&& m.kb=function(a){var b=a[0],d=0>a[1];a=a[2];this.V=!0;this.w.W=!0;var c=this.J.power;c&&(c.textContent="Shutdown");this.b&&(me(this,this.b,b,d,a),this.b.Ka());this.P&&(je(this,b),b.clear());!d&&this.B&&(this.B.clear(),delete this.B);this.u=0};
(l.A.X=!1,!1===c&&(e=null)))}e&&(d?(g=c=!1,b?(a.j&&ne(a,a.j,f.toString()),le(h)&&le(f)||(e=null,c=g=!0)):a.i&&(c=!0,g=3==a.i),c&&f.clear(g)):e=f.toString());d&&(a.A.X=!1,b=a.K.power)&&(b.textContent="Power");a.w=0;return e}m.reset=function(){this.H&&this.H.reset&&(this.F&&mb(this,0)&&this.F.message("Resetting "+this.H.type,void 0),this.H.reset());for(var a=ab(this.id),b=0;b<a.length;b++){var d=a[b];d!==this&&d!==this.H&&d.reset&&(this.F&&mb(this,0)&&this.F.message("Resetting "+d.type,void 0),d.reset())}}; function je(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.i||"",c=b.toString(),e={app:"PDP11js",ver:"1.30.0"};e.url=a.U;e.user=d;e.type="bug";e.data=c;wa("http://www.pcjs.org/api/v1/report",e,!0)}}
m.start=function(a,b){for(var d=ab(this.id),c=0;c<d.length;c++){var e=d[c];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var d=ab(this.id),c=0;c<d.length;c++){var e=d[c];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}}; function Zd(a,b,d){var c,e="none";if(a.u)return null;a.u--;var f=new I(a,"1.30.0"),h=new I(a,"1.30.0","validate"),g=ua();J(h,"timestamp",g);J(f,"timestamp",g);J(f,"version","1.30.0");J(f,"url",window?window.location.href:null);J(f,"browser",window?window.navigator.userAgent:"");a.b&&a.b.qa&&(d&&a.b.aa(),c=a.b.qa(b,d),"object"===typeof c&&J(f,a.b.id,c),d&&(a.b.w.W=!1,!1===c&&(e=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.w.W&&(l.qa&&(c=l.qa(b,d),"object"===typeof c&&J(f,l.id,c)),d&&
m.ha=function(a,b,d){var c=this;switch(b){case "power":return this.K[b]=d,d.onclick=function(){c.w||(c.A.X?Zd(c,!1,!0):fe(c,c.Pa))},!0;case "reset":return this.K[b]=d,d.onclick=function(){if(c.A.X&&!c.w)if(c.i&&!c.J){var a=xa("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Zd(c,a,!0);!a&&c.O?window&&window.location.reload():c.Pa(be)}else c.reset(),c.b&&c.b.Ja()},!0;case "save":if(ja()){d.parentNode.removeChild(d);break}this.K[b]= (l.w.W=!1,!1===c&&(e=null)))}e&&(d?(g=c=!1,b?(a.i&&ne(a,a.i,f.toString()),le(h)&&le(f)||(e=null,c=g=!0)):a.g&&(c=!0,g=3==a.g),c&&f.clear(g)):e=f.toString());d&&(a.w.W=!1,b=a.J.power)&&(b.textContent="Power");a.u=0;return e}m.reset=function(){this.G&&this.G.reset&&(this.D&&nb(this,0)&&this.D.message("Resetting "+this.G.type,void 0),this.G.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var d=a[b];d!==this&&d!==this.G&&d.reset&&(this.D&&nb(this,0)&&this.D.message("Resetting "+d.type,void 0),d.reset())}};
d;d.onclick=function(){var a=ce(c,!0);if(a){var b=!!(c.i&&!c.J||c.O),d=Zd(c,b);b?ne(c,a,d):c.ea("Resume disabled, machine state not saved")}};return!0}return!1}; m.start=function(a,b){for(var d=bb(this.id),c=0;c<d.length;c++){var e=d[c];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var d=bb(this.id),c=0;c<d.length;c++){var e=d[c];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
function ce(a,b){var d=a.j;d||(d=Fa("user"),void 0!==d?!d&&b&&(d=null,window&&(d=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.","")),d&&((d=oe(a,d))||a.ea("The user ID is invalid."))):b&&a.ea("Browser local storage is not available"));return d} m.ga=function(a,b,d){var c=this;switch(b){case "power":return this.J[b]=d,d.onclick=function(){c.u||(c.w.W?Zd(c,!1,!0):fe(c,c.Pa))},!0;case "reset":return this.J[b]=d,d.onclick=function(){if(c.w.W&&!c.u)if(c.g&&!c.I){var a=xa("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Zd(c,a,!0);!a&&c.O?window&&window.location.reload():c.Pa(be)}else c.reset(),c.b&&c.b.Ka()},!0;case "save":if(ja()){d.parentNode.removeChild(d);break}this.J[b]=
function oe(a,b){a.j=null;var d=wa(ka()+"/api/v1/user?req=verify&user="+b),c=d[1];if(!d[0]&&c)try{d=eval("("+c+")"),d.code&&"ok"==d.code&&(Ga("user",d.data),a.j=d.data)}catch(e){r(e.message+" ("+c+")")}return a.j}function ee(a){var b=null;a.j&&(b=ka()+"/api/v1/user?req=load&user="+a.j+"&state="+pe(a,"1.30.0"));return b} d;d.onclick=function(){var a=ce(c,!0);if(a){var b=!!(c.g&&!c.I||c.O),d=Zd(c,b);b?ne(c,a,d):c.da("Resume disabled, machine state not saved")}};return!0}return!1};
function ne(a,b,d){if(d){var c={req:"store"};c.user=b;c.state=pe(a,"1.30.0");c.data=d;b=wa(ka()+"/api/v1/user",c);c=b[0];if(b[1]){if(c){var e=c.indexOf("\n");0<e&&(c=c.substr(0,e));c.indexOf("Error: ")||(c=c.substr(7))}c='{"code":'+b[1]+',"data":"'+c+'"}'}b=JSON.parse(c);b&&"ok"==b.code?a.ea("Machine state saved to server"):d&&(d=b&&b.data||"unable to save machine state",d="error"==b.code?"Error: "+d:"Error "+b.code+": "+d,a.ea(d),Ga("user",""),a.j=null)}}m.Ra=function(){}; function ce(a,b){var d=a.i;d||(d=Ga("user"),void 0!==d?!d&&b&&(d=null,window&&(d=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.","")),d&&((d=oe(a,d))||a.da("The user ID is invalid."))):b&&a.da("Browser local storage is not available"));return d}
m.ia=function(a){this.b&&this.b.ia(a);this.D&&this.D.ia(a)};Pa(function(){for(var a=z(document,"pdp11-machine"),b=0;b<a.length;b++)for(var d=a[b],c=w(d),d=z(d,"pdp11","computer"),e=0;e<d.length;e++){var f=d[e],h=w(f),h=new $d(h,c,!0);lb(h,f);h.N&&fe(h,h.Pa)}});Ka.show.push(function(){for(var a=z(document,"pdp11","computer"),b=0;b<a.length;b++){var d=w(a[b]);(d=bb("Computer",d.id))&&d.W&&!d.A.X&&d.Pa(-1)}}); function oe(a,b){a.i=null;var d=wa(ka()+"/api/v1/user?req=verify&user="+b),c=d[1];if(!d[0]&&c)try{d=eval("("+c+")"),d.code&&"ok"==d.code&&(Ha("user",d.data),a.i=d.data)}catch(e){t(e.message+" ("+c+")")}return a.i}function ee(a){var b=null;a.i&&(b=ka()+"/api/v1/user?req=load&user="+a.i+"&state="+pe(a,"1.30.0"));return b}
Ka.exit.push(function(){for(var a=z(document,"pdp11","computer"),b=0;b<a.length;b++){var d=w(a[b]);(d=bb("Computer",d.id))&&d.A.X&&Zd(d,!(!d.i||d.J),!0)}});function G(a,b,d){this.id=a.id;this.key=pe(a,b,d);this.F=a.F;ke(this,a.Jb)}function pe(a,b,d){a=a.id;if(b){var c=b.indexOf(".");0<c&&(a+=".v"+b.substr(0,c))}d&&(a+="."+d);return a} function ne(a,b,d){if(d){var c={req:"store"};c.user=b;c.state=pe(a,"1.30.0");c.data=d;b=wa(ka()+"/api/v1/user",c);c=b[0];if(b[1]){if(c){var e=c.indexOf("\n");0<e&&(c=c.substr(0,e));c.indexOf("Error: ")||(c=c.substr(7))}c='{"code":'+b[1]+',"data":"'+c+'"}'}b=JSON.parse(c);b&&"ok"==b.code?a.da("Machine state saved to server"):d&&(d=b&&b.data||"unable to save machine state",d="error"==b.code?"Error: "+d:"Error "+b.code+": "+d,a.da(d),Ha("user",""),a.i=null)}}m.Ra=function(){};
G.prototype={constructor:G,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){ke(this);var b=[];try{for(var d=0,c=window.localStorage.length;d<c;d++)b.push(window.localStorage.key(d))}catch(e){}for(d=0;d<b.length;d++)if((c=b[d])&&(a||c.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(c)}catch(e){}b.splice(d,1);d=0}}}; m.ha=function(a){this.b&&this.b.ha(a);this.C&&this.C.ha(a)};Qa(function(){for(var a=D(document,"pdp11-machine"),b=0;b<a.length;b++)for(var d=a[b],c=B(d),d=D(d,"pdp11","computer"),e=0;e<d.length;e++){var f=d[e],h=B(f),h=new $d(h,c,!0);mb(h,f);h.M&&fe(h,h.Pa)}});La.show.push(function(){for(var a=D(document,"pdp11","computer"),b=0;b<a.length;b++){var d=B(a[b]);(d=lb("Computer",d.id))&&d.V&&!d.w.W&&d.Pa(-1)}});
function ke(a,b){a[a.id]={};b&&H(a,"parms",b);a.b=!1}function le(a){var b=!0;if(za()){var d=JSON.stringify(a[a.id]);Ga(a.key,d)||(r("Unable to store "+d.length+" bytes in browser local storage"),b=!1)}return b}function he(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(d){r(d.message||d),b=!1}return b}function de(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:za()&&(b=Fa(a.key))?(a[a.id]=b,a.b=!0):!1}function ie(a,b){return a[a.id][b]||null}function H(a,b,d){try{a[a.id][b]=d}catch(c){}}var qe=0; La.exit.push(function(){for(var a=D(document,"pdp11","computer"),b=0;b<a.length;b++){var d=B(a[b]);(d=lb("Computer",d.id))&&d.w.W&&Zd(d,!(!d.g||d.I),!0)}});function I(a,b,d){this.id=a.id;this.key=pe(a,b,d);this.D=a.D;ke(this,a.Ib)}function pe(a,b,d){a=a.id;if(b){var c=b.indexOf(".");0<c&&(a+=".v"+b.substr(0,c))}d&&(a+="."+d);return a}
I.prototype={constructor:I,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){ke(this);var b=[];try{for(var d=0,c=window.localStorage.length;d<c;d++)b.push(window.localStorage.key(d))}catch(e){}for(d=0;d<b.length;d++)if((c=b[d])&&(a||c.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(c)}catch(e){}b.splice(d,1);d=0}}};
function ke(a,b){a[a.id]={};b&&J(a,"parms",b);a.b=!1}function le(a){var b=!0;if(za()){var d=JSON.stringify(a[a.id]);Ha(a.key,d)||(t("Unable to store "+d.length+" bytes in browser local storage"),b=!1)}return b}function he(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(d){t(d.message||d),b=!1}return b}function de(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:za()&&(b=Ga(a.key))?(a[a.id]=b,a.b=!0):!1}function ie(a,b){return a[a.id][b]||null}function J(a,b,d){try{a[a.id][b]=d}catch(c){}}var qe=0;
function Ce(a,b,d,c,e,f){e("Loading "+a+"...");wa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):De(g,a,b,d,c,e,f)})} function Ce(a,b,d,c,e,f){e("Loading "+a+"...");wa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):De(g,a,b,d,c,e,f)})}
function De(a,b,d,c,e,f,h){function g(a,f){if(f)h(f,null);else{if(d){$a(d,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);c?"}"==c.slice(-1)?(c=c.slice(0,-1),1<c.length&&(c+=",")):c='{state:"'+c+'",':c="{";c+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+d+"$2"+(c?" parms='"+c+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDP11js$2"), function De(a,b,d,c,e,f,h){function g(a,f){if(f)h(f,null);else{if(d){ab(d,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);c?"}"==c.slice(-1)?(c=c.slice(0,-1),1<c.length&&(c+=",")):c='{state:"'+c+'",':c="{";c+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+d+"$2"+(c?" parms='"+c+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDP11js$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pdp11$2"));g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\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(q){g=null,a=q.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Ee(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)} a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pdp11$2"));g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\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<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Ee(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Ee(a,b,d){var c;if(c=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=c[2];b("Loading "+e+"...");wa(e,null,!0,function(f,h,g){if(g||!h)d(a,"unable to resolve XML reference: "+c[0]+" ("+g+")");else{if(f=c[3])if(g=h.match(new RegExp("<"+c[1]+"[^>]*>"))){for(var k=g[0],l,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{d(a,"missing <"+c[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/, function Ee(a,b,d){var c;if(c=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=c[2];b("Loading "+e+"...");wa(e,null,!0,function(f,h,g){if(g||!h)d(a,"unable to resolve XML reference: "+c[0]+" ("+g+")");else{if(f=c[3])if(g=h.match(new RegExp("<"+c[1]+"[^>]*>"))){for(var k=g[0],l,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{d(a,"missing <"+c[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(c[0],h);Ee(a,b,d)}})}else d(a,null)} "");a=a.replace(c[0],h);Ee(a,b,d)}})}else d(a,null)}
function Fe(a,b,d,c){function e(a){if(void 0===g){var b=h&&z(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ma(a))}function f(a){e("Error: "+a);k&&(--qe||Ra(!0));k=!1}var h,g,k=!0;qe++;Za[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=l:q.appendChild(document.createTextNode(l));n.appendChild(q)}d|| function Fe(a,b,d,c){function e(a){if(void 0===g){var b=h&&D(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ma(a))}function f(a){e("Error: "+a);k&&(--qe||Sa(!0));k=!1}var h,g,k=!0;qe++;$a[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=l:p.appendChild(document.createTextNode(l));n.appendChild(p)}d||
(d="/versions/pdp11/1.30.0/components.xsl");l=function(c,g){g?Ce(d,null,null,!1,e,function(c,k){if(k)if($a(a,d,c),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--qe||Ra(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--qe||Ra(!0)):f("invalid machine element: "+ (d="/versions/pdp11/1.30.0/components.xsl");l=function(c,g){g?Ce(d,null,null,!1,e,function(c,k){if(k)if(ab(a,d,c),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--qe||Sa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--qe||Sa(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(c)}):f(c)};"<"!=b.charAt(0)?Ce(b,a,c,!0,e,l):De(b,null,a,c,!1,e,l)}else f("missing machine element: "+a)}catch(y){f(y.message)}return k}window.embedPDP11=function(a,b,d,c){Ra(!1);return Fe(a,b,d,c)};window.enableEvents=Ra;window.sendEvent=Sa;})(); a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(c)}):f(c)};"<"!=b.charAt(0)?Ce(b,a,c,!0,e,l):De(b,null,a,c,!1,e,l)}else f("missing machine element: "+a)}catch(u){f(u.message)}return k}window.embedPDP11=function(a,b,d,c){Sa(!1);return Fe(a,b,d,c)};window.enableEvents=Sa;window.sendEvent=Ta;})();