More PDP-11 debugger work

This commit is contained in:
Jeff Parsons 2016-09-16 16:04:28 -07:00
commit 75918a6edc
3 changed files with 335 additions and 449 deletions

View file

@ -131,13 +131,13 @@ CPUStatePDP11.prototype.initRegs = function()
this.flagV = 0x8000; // PSW V bit this.flagV = 0x8000; // PSW V bit
this.flagZ = 0xffff; // ~ PSW Z bit this.flagZ = 0xffff; // ~ PSW Z bit
this.PSW = 0xf; // PSW other bits this.PSW = 0xf; // PSW other bits
this.registerVal = [ // Current R0 - R7 this.regsCur = [ // Current R0 - R7
0, 0, 0, 0, 0, 0, 0, 0 0, 0, 0, 0, 0, 0, 0, 0
]; ];
this.registerAlt = [ // Alternate R0 - R5 this.regsAlt = [ // Alternate R0 - R5
0, 0, 0, 0, 0, 0 0, 0, 0, 0, 0, 0
]; ];
this.stackPointer = [ // Alternate R6 (kernel, super, illegal; user) this.regsStack = [ // Alternate R6 (kernel, super, illegal, user)
0, 0, 0, 0 0, 0, 0, 0
]; ];
this.memory = []; // Main memory (words) this.memory = []; // Main memory (words)
@ -385,7 +385,7 @@ CPUStatePDP11.prototype.setSF = function()
*/ */
CPUStatePDP11.prototype.getPC = function() CPUStatePDP11.prototype.getPC = function()
{ {
return this.registerVal[7]; return this.regsCur[7];
}; };
/** /**
@ -396,7 +396,7 @@ CPUStatePDP11.prototype.getPC = function()
*/ */
CPUStatePDP11.prototype.setPC = function(addr) CPUStatePDP11.prototype.setPC = function(addr)
{ {
this.registerVal[7] = addr; this.regsCur[7] = addr;
}; };
/** /**
@ -418,7 +418,7 @@ CPUStatePDP11.prototype.getPSW = function()
*/ */
CPUStatePDP11.prototype.getSP = function() CPUStatePDP11.prototype.getSP = function()
{ {
return this.registerVal[6]; return this.regsCur[6];
}; };
/** /**
@ -590,14 +590,14 @@ CPUStatePDP11.prototype.writePSW = function(newPSW)
this.flagC = newPSW << 16; this.flagC = newPSW << 16;
if ((newPSW ^ this.PSW) & 0x800) { if ((newPSW ^ this.PSW) & 0x800) {
for (i = 0; i < 6; i++) { for (i = 0; i < 6; i++) {
j = this.registerVal[i]; j = this.regsCur[i];
this.registerVal[i] = this.registerAlt[i]; this.regsCur[i] = this.regsAlt[i];
this.registerAlt[i] = j; // swap to alternate register set this.regsAlt[i] = j; // swap to alternate register set
} }
} }
if ((this.mmuMode = (newPSW >> 14) & 3) !== ((this.PSW >> 14) & 3)) { if ((this.mmuMode = (newPSW >> 14) & 3) !== ((this.PSW >> 14) & 3)) {
this.stackPointer[j] = this.registerVal[6]; this.regsStack[j] = this.regsCur[6];
this.registerVal[6] = this.stackPointer[this.mmuMode]; // swap to new mode SP this.regsCur[6] = this.regsStack[this.mmuMode]; // swap to new mode SP
} }
this.priorityReview = 2; // trigger check of priority levels this.priorityReview = 2; // trigger check of priority levels
this.PSW = newPSW; this.PSW = newPSW;
@ -663,10 +663,10 @@ CPUStatePDP11.prototype.trap = function(vector, reason)
this.writePSW((newPSW & 0xcfff) | ((this.trapPSW >> 2) & 0x3000)); // set new this.PSW with previous mode this.writePSW((newPSW & 0xcfff) | ((this.trapPSW >> 2) & 0x3000)); // set new this.PSW with previous mode
if (doubleTrap) { if (doubleTrap) {
this.CPU_Error |= 4; this.CPU_Error |= 4;
this.registerVal[6] = 4; this.regsCur[6] = 4;
} }
if (this.pushWord(this.trapPSW) >= 0 && this.pushWord(this.registerVal[7]) >= 0) { if (this.pushWord(this.trapPSW) >= 0 && this.pushWord(this.regsCur[7]) >= 0) {
this.registerVal[7] = newPC; this.regsCur[7] = newPC;
} }
} }
} }
@ -860,7 +860,7 @@ CPUStatePDP11.prototype.mapVirtualToPhysical = function(virtualAddress, accessMa
CPUStatePDP11.prototype.readWordByAddr = function(physicalAddress) CPUStatePDP11.prototype.readWordByAddr = function(physicalAddress)
{ {
if (physicalAddress >= PDP11.MAX_ADDRESS) { if (physicalAddress >= PDP11.MAX_ADDRESS) {
return this.registerVal[physicalAddress - PDP11.MAX_ADDRESS]; return this.regsCur[physicalAddress - PDP11.MAX_ADDRESS];
} else { } else {
if (physicalAddress >= PDP11.IOBASE_UNIBUS) { if (physicalAddress >= PDP11.IOBASE_UNIBUS) {
return this.bus.access_iopage(physicalAddress, -1, 0); return this.bus.access_iopage(physicalAddress, -1, 0);
@ -885,7 +885,7 @@ CPUStatePDP11.prototype.writeWordByAddr = function(physicalAddress, data)
{ {
data &= 0xffff; data &= 0xffff;
if (physicalAddress >= PDP11.MAX_ADDRESS) { if (physicalAddress >= PDP11.MAX_ADDRESS) {
return (this.registerVal[physicalAddress - PDP11.MAX_ADDRESS] = data); return (this.regsCur[physicalAddress - PDP11.MAX_ADDRESS] = data);
} else { } else {
if (physicalAddress >= PDP11.IOBASE_UNIBUS) { if (physicalAddress >= PDP11.IOBASE_UNIBUS) {
return this.bus.access_iopage(physicalAddress, data, 0); return this.bus.access_iopage(physicalAddress, data, 0);
@ -909,7 +909,7 @@ CPUStatePDP11.prototype.readByteByAddr = function(physicalAddress)
{ {
var result; var result;
if (physicalAddress >= PDP11.MAX_ADDRESS) { if (physicalAddress >= PDP11.MAX_ADDRESS) {
return (this.registerVal[physicalAddress - PDP11.MAX_ADDRESS] & 0xff); return (this.regsCur[physicalAddress - PDP11.MAX_ADDRESS] & 0xff);
} else { } else {
if (physicalAddress >= PDP11.IOBASE_UNIBUS) { if (physicalAddress >= PDP11.IOBASE_UNIBUS) {
return this.bus.access_iopage(physicalAddress, -1, 1); return this.bus.access_iopage(physicalAddress, -1, 1);
@ -938,7 +938,7 @@ CPUStatePDP11.prototype.writeByteByAddr = function(physicalAddress, data)
{ {
data &= 0xff; data &= 0xff;
if (physicalAddress >= PDP11.MAX_ADDRESS) { if (physicalAddress >= PDP11.MAX_ADDRESS) {
return (this.registerVal[physicalAddress - PDP11.MAX_ADDRESS] = (this.registerVal[physicalAddress - PDP11.MAX_ADDRESS] & 0xff00) | data); return (this.regsCur[physicalAddress - PDP11.MAX_ADDRESS] = (this.regsCur[physicalAddress - PDP11.MAX_ADDRESS] & 0xff00) | data);
} else { } else {
if (physicalAddress >= PDP11.IOBASE_UNIBUS) { if (physicalAddress >= PDP11.IOBASE_UNIBUS) {
return this.bus.access_iopage(physicalAddress, data, 1); return this.bus.access_iopage(physicalAddress, data, 1);
@ -974,9 +974,9 @@ CPUStatePDP11.prototype.readWordByVirtual = function(virtualAddress)
*/ */
CPUStatePDP11.prototype.popWord = function() CPUStatePDP11.prototype.popWord = function()
{ {
var result = this.readWordByVirtual(this.registerVal[6] | 0x10000); var result = this.readWordByVirtual(this.regsCur[6] | 0x10000);
if (result >= 0) { if (result >= 0) {
this.registerVal[6] = (this.registerVal[6] + 2) & 0xffff; this.regsCur[6] = (this.regsCur[6] + 2) & 0xffff;
} }
return result; return result;
}; };
@ -991,14 +991,14 @@ CPUStatePDP11.prototype.popWord = function()
CPUStatePDP11.prototype.pushWord = function(data) CPUStatePDP11.prototype.pushWord = function(data)
{ {
var physicalAddress, virtualAddress; var physicalAddress, virtualAddress;
this.registerVal[6] = virtualAddress = (this.registerVal[6] - 2) & 0xffff; // BSD needs SP updated before any fault :-( this.regsCur[6] = virtualAddress = (this.regsCur[6] - 2) & 0xffff; // BSD needs SP updated before any fault :-(
if (!(this.MMR0 & 0xe000)) { if (!(this.MMR0 & 0xe000)) {
this.MMR1 = (this.MMR1 << 8) | 0xf6; this.MMR1 = (this.MMR1 << 8) | 0xf6;
} }
if ((!this.mmuMode) && virtualAddress <= this.stackLimit && virtualAddress > 4) { if ((!this.mmuMode) && virtualAddress <= this.stackLimit && virtualAddress > 4) {
if (virtualAddress <= this.stackLimit - 32) { if (virtualAddress <= this.stackLimit - 32) {
this.CPU_Error |= 4; // Red stack this.CPU_Error |= 4; // Red stack
this.registerVal[6] = 4; this.regsCur[6] = 4;
return this.trap(4, 32); return this.trap(4, 32);
} }
this.CPU_Error |= 8; // Yellow this.CPU_Error |= 8; // Yellow
@ -1048,19 +1048,19 @@ CPUStatePDP11.prototype.getVirtualByMode = function(addressMode, accessMode)
return this.trap(4, 34); // trap for invalid virtual address return this.trap(4, 34); // trap for invalid virtual address
case 1: // Mode 1: (R) case 1: // Mode 1: (R)
if (reg === 6 && (!this.mmuMode) && (accessMode & PDP11.WRITE_MODE) && if (reg === 6 && (!this.mmuMode) && (accessMode & PDP11.WRITE_MODE) &&
(this.registerVal[6] <= this.stackLimit || this.registerVal[6] >= 0xfffe)) { (this.regsCur[6] <= this.stackLimit || this.regsCur[6] >= 0xfffe)) {
if (this.registerVal[6] <= this.stackLimit - 32 || this.registerVal[6] >= 0xfffe) { if (this.regsCur[6] <= this.stackLimit - 32 || this.regsCur[6] >= 0xfffe) {
this.CPU_Error |= 4; // Red stack this.CPU_Error |= 4; // Red stack
this.registerVal[6] = 4; this.regsCur[6] = 4;
return this.trap(4, 36); return this.trap(4, 36);
} }
this.CPU_Error |= 8; // Yellow this.CPU_Error |= 8; // Yellow
this.trapMask |= 4; this.trapMask |= 4;
} }
return (reg === 7 ? this.registerVal[reg] : (this.registerVal[reg] | 0x10000)); return (reg === 7 ? this.regsCur[reg] : (this.regsCur[reg] | 0x10000));
case 2: // Mode 2: (R)+ case 2: // Mode 2: (R)+
stepSize = 2; stepSize = 2;
virtualAddress = this.registerVal[reg]; virtualAddress = this.regsCur[reg];
if (reg !== 7) { if (reg !== 7) {
virtualAddress |= 0x10000; virtualAddress |= 0x10000;
if (reg < 6 && (accessMode & PDP11.BYTE_MODE)) { if (reg < 6 && (accessMode & PDP11.BYTE_MODE)) {
@ -1070,7 +1070,7 @@ CPUStatePDP11.prototype.getVirtualByMode = function(addressMode, accessMode)
break; break;
case 3: // Mode 3: @(R)+ case 3: // Mode 3: @(R)+
stepSize = 2; stepSize = 2;
virtualAddress = this.registerVal[reg]; virtualAddress = this.regsCur[reg];
if (reg !== 7) virtualAddress |= 0x10000; if (reg !== 7) virtualAddress |= 0x10000;
if ((virtualAddress = this.readWordByVirtual(virtualAddress)) < 0) { if ((virtualAddress = this.readWordByVirtual(virtualAddress)) < 0) {
return virtualAddress; return virtualAddress;
@ -1081,14 +1081,14 @@ CPUStatePDP11.prototype.getVirtualByMode = function(addressMode, accessMode)
case 4: // Mode 4: -(R) case 4: // Mode 4: -(R)
stepSize = -2; stepSize = -2;
if (reg < 6 && (accessMode & PDP11.BYTE_MODE)) stepSize = -1; if (reg < 6 && (accessMode & PDP11.BYTE_MODE)) stepSize = -1;
virtualAddress = (this.registerVal[reg] + stepSize) & 0xffff; virtualAddress = (this.regsCur[reg] + stepSize) & 0xffff;
if (reg !== 7) { if (reg !== 7) {
virtualAddress |= 0x10000; virtualAddress |= 0x10000;
} }
break; break;
case 5: // Mode 5: @-(R) case 5: // Mode 5: @-(R)
stepSize = -2; stepSize = -2;
virtualAddress = (this.registerVal[reg] - 2) & 0xffff; virtualAddress = (this.regsCur[reg] - 2) & 0xffff;
if (reg !== 7) virtualAddress |= 0x10000; if (reg !== 7) virtualAddress |= 0x10000;
if ((virtualAddress = this.readWordByVirtual(virtualAddress)) < 0) { if ((virtualAddress = this.readWordByVirtual(virtualAddress)) < 0) {
return virtualAddress; return virtualAddress;
@ -1096,28 +1096,28 @@ CPUStatePDP11.prototype.getVirtualByMode = function(addressMode, accessMode)
virtualAddress |= 0x10000; virtualAddress |= 0x10000;
break; break;
case 6: // Mode 6: d(R) case 6: // Mode 6: d(R)
if ((virtualAddress = this.readWordByVirtual(this.registerVal[7])) < 0) { if ((virtualAddress = this.readWordByVirtual(this.regsCur[7])) < 0) {
return virtualAddress; return virtualAddress;
} }
this.registerVal[7] = (this.registerVal[7] + 2) & 0xffff; this.regsCur[7] = (this.regsCur[7] + 2) & 0xffff;
if (reg < 7) { if (reg < 7) {
//LOG_ADDRESS(virtualAddress); //LOG_ADDRESS(virtualAddress);
virtualAddress = (virtualAddress + this.registerVal[reg]) & 0xffff; virtualAddress = (virtualAddress + this.regsCur[reg]) & 0xffff;
} else { } else {
virtualAddress = (virtualAddress + this.registerVal[reg]) & 0xffff; virtualAddress = (virtualAddress + this.regsCur[reg]) & 0xffff;
//LOG_ADDRESS(virtualAddress); //LOG_ADDRESS(virtualAddress);
} }
return virtualAddress | 0x10000; return virtualAddress | 0x10000;
case 7: // Mode 7: @d(R) case 7: // Mode 7: @d(R)
if ((virtualAddress = this.readWordByVirtual(this.registerVal[7])) < 0) { if ((virtualAddress = this.readWordByVirtual(this.regsCur[7])) < 0) {
return virtualAddress; return virtualAddress;
} }
this.registerVal[7] = (this.registerVal[7] + 2) & 0xffff; this.regsCur[7] = (this.regsCur[7] + 2) & 0xffff;
if (reg < 7) { if (reg < 7) {
//LOG_ADDRESS(virtualAddress); //LOG_ADDRESS(virtualAddress);
virtualAddress = (virtualAddress + this.registerVal[reg]) & 0xffff; virtualAddress = (virtualAddress + this.regsCur[reg]) & 0xffff;
} else { } else {
virtualAddress = (virtualAddress + this.registerVal[reg]) & 0xffff; virtualAddress = (virtualAddress + this.regsCur[reg]) & 0xffff;
//LOG_ADDRESS(virtualAddress); //LOG_ADDRESS(virtualAddress);
} }
if ((virtualAddress = this.readWordByVirtual(virtualAddress | 0x10000)) < 0) { if ((virtualAddress = this.readWordByVirtual(virtualAddress | 0x10000)) < 0) {
@ -1125,15 +1125,15 @@ CPUStatePDP11.prototype.getVirtualByMode = function(addressMode, accessMode)
} }
return virtualAddress | 0x10000; // @x return virtualAddress | 0x10000; // @x
} }
this.registerVal[reg] = (this.registerVal[reg] + stepSize) & 0xffff; this.regsCur[reg] = (this.regsCur[reg] + stepSize) & 0xffff;
if (!(this.MMR0 & 0xe000)) { if (!(this.MMR0 & 0xe000)) {
this.MMR1 = (this.MMR1 << 8) | ((stepSize << 3) & 0xf8) | reg; this.MMR1 = (this.MMR1 << 8) | ((stepSize << 3) & 0xf8) | reg;
} }
if (reg === 6 && (!this.mmuMode) && (accessMode & PDP11.WRITE_MODE) && stepSize <= 0 && if (reg === 6 && (!this.mmuMode) && (accessMode & PDP11.WRITE_MODE) && stepSize <= 0 &&
(this.registerVal[6] <= this.stackLimit || this.registerVal[6] >= 0xfffe)) { (this.regsCur[6] <= this.stackLimit || this.regsCur[6] >= 0xfffe)) {
if (this.registerVal[6] <= this.stackLimit - 32) { if (this.regsCur[6] <= this.stackLimit - 32) {
this.CPU_Error |= 4; // Red stack this.CPU_Error |= 4; // Red stack
this.registerVal[6] = 4; this.regsCur[6] = 4;
return this.trap(4, 38); return this.trap(4, 38);
} }
this.CPU_Error |= 8; // Yellow this.CPU_Error |= 8; // Yellow
@ -1174,7 +1174,7 @@ CPUStatePDP11.prototype.readWordByMode = function(addressMode)
{ {
var result; var result;
if (!(addressMode & 0x38)) { if (!(addressMode & 0x38)) {
result = this.registerVal[addressMode & 7]; result = this.regsCur[addressMode & 7];
//LOG_SOURCE(result); //LOG_SOURCE(result);
} else { } else {
if ((result = this.getAddrByMode(addressMode, PDP11.READ_MODE)) >= 0) { if ((result = this.getAddrByMode(addressMode, PDP11.READ_MODE)) >= 0) {
@ -1197,7 +1197,7 @@ CPUStatePDP11.prototype.readByteByMode = function(addressMode)
{ {
var result; var result;
if (!(addressMode & 0x38)) { if (!(addressMode & 0x38)) {
result = this.registerVal[addressMode & 7] & 0xff; result = this.regsCur[addressMode & 7] & 0xff;
//LOG_SOURCE(result); //LOG_SOURCE(result);
} else { } else {
if ((result = this.getAddrByMode(addressMode, PDP11.READ_MODE | PDP11.BYTE_MODE)) >= 0) { if ((result = this.getAddrByMode(addressMode, PDP11.READ_MODE | PDP11.BYTE_MODE)) >= 0) {
@ -1340,25 +1340,25 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
} }
} }
} }
//if (this.registerVal[7] === this.debugPC) { //if (this.regsCur[7] === this.debugPC) {
//LOG_PRINT(); //LOG_PRINT();
// //
//} //}
// Initialize this.memory before getting an instruction // Initialize this.memory before getting an instruction
if (!(this.MMR0 & 0xe000)) { if (!(this.MMR0 & 0xe000)) {
this.MMR1 = 0; this.MMR1 = 0;
this.MMR2 = this.registerVal[7]; this.MMR2 = this.regsCur[7];
} }
// If needed T-bit trap at the end of this instruction // If needed T-bit trap at the end of this instruction
this.trapMask = this.PSW & 0x10; this.trapMask = this.PSW & 0x10;
if ((instruction = this.readWordByVirtual(this.registerVal[7])) >= 0) { if ((instruction = this.readWordByVirtual(this.regsCur[7])) >= 0) {
this.registerVal[7] = (this.registerVal[7] + 2) & 0xffff; this.regsCur[7] = (this.regsCur[7] + 2) & 0xffff;
switch (instruction & 0xF000) /*0170000*/ { // Double operand instructions xxSSDD switch (instruction & 0xF000) /*0170000*/ { // Double operand instructions xxSSDD
case 0x1000: /*0010000*/ // MOV 01SSDD case 0x1000: /*0010000*/ // MOV 01SSDD
//LOG_INSTRUCTION(instruction, 2, "MOV"); //LOG_INSTRUCTION(instruction, 2, "MOV");
if ((src = this.readWordByMode(instruction >> 6)) >= 0) { if ((src = this.readWordByMode(instruction >> 6)) >= 0) {
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
this.registerVal[instruction & 7] = src; this.regsCur[instruction & 7] = src;
this.flagN = this.flagZ = src; this.flagN = this.flagZ = src;
this.flagV = 0; this.flagV = 0;
} else { } else {
@ -1394,7 +1394,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
//LOG_INSTRUCTION(instruction, 2, "BIC"); //LOG_INSTRUCTION(instruction, 2, "BIC");
if ((src = this.readWordByMode(instruction >> 6)) >= 0) { if ((src = this.readWordByMode(instruction >> 6)) >= 0) {
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
result = this.registerVal[instruction & 7] &= ~src; result = this.regsCur[instruction & 7] &= ~src;
this.flagN = this.flagZ = result; this.flagN = this.flagZ = result;
this.flagV = 0; this.flagV = 0;
} else { } else {
@ -1412,7 +1412,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
//LOG_INSTRUCTION(instruction, 2, "BIS"); //LOG_INSTRUCTION(instruction, 2, "BIS");
if ((src = this.readWordByMode(instruction >> 6)) >= 0) { if ((src = this.readWordByMode(instruction >> 6)) >= 0) {
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
result = this.registerVal[instruction & 7] |= src; result = this.regsCur[instruction & 7] |= src;
this.flagN = this.flagZ = result; this.flagN = this.flagZ = result;
this.flagV = 0; this.flagV = 0;
} else { } else {
@ -1431,8 +1431,8 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
if ((src = this.readWordByMode(instruction >> 6)) >= 0) { if ((src = this.readWordByMode(instruction >> 6)) >= 0) {
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
reg = instruction & 7; reg = instruction & 7;
dst = this.registerVal[reg]; dst = this.regsCur[reg];
this.registerVal[reg] = (result = src + dst) & 0xffff; this.regsCur[reg] = (result = src + dst) & 0xffff;
this.flagN = this.flagZ = this.flagC = result; this.flagN = this.flagZ = this.flagC = result;
this.flagV = (src ^ result) & (dst ^ result); this.flagV = (src ^ result) & (dst ^ result);
} else { } else {
@ -1451,7 +1451,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
if ((src = this.readByteByMode(instruction >> 6)) >= 0) { if ((src = this.readByteByMode(instruction >> 6)) >= 0) {
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
if (src & 0x80) /*0200*/ src |= 0xff00; // movb sign extends register to word size if (src & 0x80) /*0200*/ src |= 0xff00; // movb sign extends register to word size
this.registerVal[instruction & 7] = src; this.regsCur[instruction & 7] = src;
this.flagN = this.flagZ = src; this.flagN = this.flagZ = src;
this.flagV = 0; this.flagV = 0;
} else { } else {
@ -1512,8 +1512,8 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
if ((src = this.readWordByMode(instruction >> 6)) >= 0) { if ((src = this.readWordByMode(instruction >> 6)) >= 0) {
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
reg = instruction & 7; reg = instruction & 7;
dst = this.registerVal[reg]; dst = this.regsCur[reg];
this.registerVal[reg] = (result = dst - src) & 0xffff; this.regsCur[reg] = (result = dst - src) & 0xffff;
this.flagN = this.flagZ = this.flagC = result; this.flagN = this.flagZ = this.flagC = result;
this.flagV = (src ^ dst) & (dst ^ result); this.flagV = (src ^ dst) & (dst ^ result);
} else { } else {
@ -1533,9 +1533,9 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
//LOG_INSTRUCTION(instruction, 3, "JSR"); //LOG_INSTRUCTION(instruction, 3, "JSR");
if ((virtualAddress = this.getVirtualByMode(instruction, 0)) >= 0) { if ((virtualAddress = this.getVirtualByMode(instruction, 0)) >= 0) {
reg = (instruction >> 6) & 7; reg = (instruction >> 6) & 7;
if (this.pushWord(this.registerVal[reg]) >= 0) { if (this.pushWord(this.regsCur[reg]) >= 0) {
this.registerVal[reg] = this.registerVal[7]; this.regsCur[reg] = this.regsCur[7];
this.registerVal[7] = virtualAddress & 0xffff; this.regsCur[7] = virtualAddress & 0xffff;
} }
} }
break; break;
@ -1544,11 +1544,11 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
if ((src = this.readWordByMode(instruction)) >= 0) { if ((src = this.readWordByMode(instruction)) >= 0) {
reg = (instruction >> 6) & 7; reg = (instruction >> 6) & 7;
if (src & 0x8000) src |= ~0xffff; if (src & 0x8000) src |= ~0xffff;
dst = this.registerVal[reg]; dst = this.regsCur[reg];
if (dst & 0x8000) dst |= ~0xffff; if (dst & 0x8000) dst |= ~0xffff;
result = ~~(src * dst); result = ~~(src * dst);
this.registerVal[reg] = (result >> 16) & 0xffff; this.regsCur[reg] = (result >> 16) & 0xffff;
this.registerVal[reg | 1] = result & 0xffff; this.regsCur[reg | 1] = result & 0xffff;
this.flagN = result >> 16; this.flagN = result >> 16;
this.flagZ = this.flagN | result; this.flagZ = this.flagN | result;
this.flagC = this.flagV = 0; this.flagC = this.flagV = 0;
@ -1565,21 +1565,21 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
this.flagC = 0x10000; // divide by zero this.flagC = 0x10000; // divide by zero
} else { } else {
reg = (instruction >> 6) & 7; reg = (instruction >> 6) & 7;
dst = (this.registerVal[reg] << 16) | this.registerVal[reg | 1]; dst = (this.regsCur[reg] << 16) | this.regsCur[reg | 1];
this.flagC = this.flagV = 0; this.flagC = this.flagV = 0;
if (src & 0x8000) src |= ~0xffff; if (src & 0x8000) src |= ~0xffff;
result = ~~(dst / src); result = ~~(dst / src);
if (result >= -32768 && result <= 32767) { if (result >= -32768 && result <= 32767) {
this.registerVal[reg] = result & 0xffff; this.regsCur[reg] = result & 0xffff;
this.registerVal[reg | 1] = (dst - (result * src)) & 0xffff; this.regsCur[reg | 1] = (dst - (result * src)) & 0xffff;
this.flagZ = (result >> 16) | result; this.flagZ = (result >> 16) | result;
this.flagN = result >> 16; this.flagN = result >> 16;
} else { } else {
this.flagV = 0x8000; // overflow - following are indeterminate this.flagV = 0x8000; // overflow - following are indeterminate
this.flagZ = (result >> 15) | result; // dodgy this.flagZ = (result >> 15) | result; // dodgy
this.flagN = dst >> 16; // just as dodgy this.flagN = dst >> 16; // just as dodgy
if (src === -1 && this.registerVal[reg] === if (src === -1 && this.regsCur[reg] ===
0xfffe) this.registerVal[reg] = this.registerVal[reg | 1] = 1; // etc 0xfffe) this.regsCur[reg] = this.regsCur[reg | 1] = 1; // etc
} }
} }
} }
@ -1588,7 +1588,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
//LOG_INSTRUCTION(instruction, 3, "ASH"); //LOG_INSTRUCTION(instruction, 3, "ASH");
if ((src = this.readWordByMode(instruction)) >= 0) { if ((src = this.readWordByMode(instruction)) >= 0) {
reg = (instruction >> 6) & 7; reg = (instruction >> 6) & 7;
result = this.registerVal[reg]; result = this.regsCur[reg];
if (result & 0x8000) result |= 0xffff0000; if (result & 0x8000) result |= 0xffff0000;
this.flagC = this.flagV = 0; this.flagC = this.flagV = 0;
src &= 0x3F; /*077*/ src &= 0x3F; /*077*/
@ -1610,7 +1610,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
} }
} }
} }
this.registerVal[reg] = result & 0xffff; this.regsCur[reg] = result & 0xffff;
this.flagN = this.flagZ = result; this.flagN = this.flagZ = result;
} }
break; break;
@ -1618,7 +1618,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
//LOG_INSTRUCTION(instruction, 3, "ASHC"); //LOG_INSTRUCTION(instruction, 3, "ASHC");
if ((src = this.readWordByMode(instruction)) >= 0) { if ((src = this.readWordByMode(instruction)) >= 0) {
reg = (instruction >> 6) & 7; reg = (instruction >> 6) & 7;
dst = (this.registerVal[reg] << 16) | this.registerVal[reg | 1]; dst = (this.regsCur[reg] << 16) | this.regsCur[reg | 1];
this.flagC = this.flagV = 0; this.flagC = this.flagV = 0;
src &= 0x3F; /*077*/ src &= 0x3F; /*077*/
if (src & 0x20) /*040*/ { if (src & 0x20) /*040*/ {
@ -1643,8 +1643,8 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
result = dst; result = dst;
} }
} }
this.registerVal[reg] = (result >> 16) & 0xffff; this.regsCur[reg] = (result >> 16) & 0xffff;
this.registerVal[reg | 1] = result & 0xffff; this.regsCur[reg | 1] = result & 0xffff;
this.flagN = result >> 16; this.flagN = result >> 16;
this.flagZ = result >> 16 | result; this.flagZ = result >> 16 | result;
} }
@ -1652,12 +1652,12 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
case 0x7800: /*0074000*/ // XOR 074RSS case 0x7800: /*0074000*/ // XOR 074RSS
//LOG_INSTRUCTION(instruction, 3, "XOR"); //LOG_INSTRUCTION(instruction, 3, "XOR");
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
dst = this.registerVal[instruction & 7] ^= this.registerVal[(instruction >> 6) & 7]; dst = this.regsCur[instruction & 7] ^= this.regsCur[(instruction >> 6) & 7];
this.flagN = this.flagZ = dst; this.flagN = this.flagZ = dst;
this.flagV = 0; this.flagV = 0;
} else { } else {
if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(instruction, PDP11.MODIFY_WORD))) >= 0) { if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(instruction, PDP11.MODIFY_WORD))) >= 0) {
dst ^= this.registerVal[(instruction >> 6) & 7]; dst ^= this.regsCur[(instruction >> 6) & 7];
if (this.writeWordByAddr(dstAddr, dst) >= 0) { if (this.writeWordByAddr(dstAddr, dst) >= 0) {
this.flagN = this.flagZ = dst; this.flagN = this.flagZ = dst;
this.flagV = 0; this.flagV = 0;
@ -1668,78 +1668,78 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
case 0x7E00: /*0077000*/ // SOB 077Rnn case 0x7E00: /*0077000*/ // SOB 077Rnn
//LOG_INSTRUCTION(instruction, 5, "SOB"); //LOG_INSTRUCTION(instruction, 5, "SOB");
reg = (instruction >> 6) & 7; reg = (instruction >> 6) & 7;
if ((this.registerVal[reg] = ((this.registerVal[reg] - 1) & 0xffff))) { if ((this.regsCur[reg] = ((this.regsCur[reg] - 1) & 0xffff))) {
this.registerVal[7] = (this.registerVal[7] - ((instruction & 0x3F) /*077*/ << 1)) & 0xffff; this.regsCur[7] = (this.regsCur[7] - ((instruction & 0x3F) /*077*/ << 1)) & 0xffff;
} }
break; break;
default: default:
switch (instruction & 0xFF00) /*0177400*/ { // Program control instructions & traps switch (instruction & 0xFF00) /*0177400*/ { // Program control instructions & traps
case 0x100: /*0000400*/ // BR case 0x100: /*0000400*/ // BR
//LOG_INSTRUCTION(instruction, 4, "BR"); //LOG_INSTRUCTION(instruction, 4, "BR");
this.registerVal[7] = this.branch(this.registerVal[7], instruction); this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x200: /*0001000*/ // BNE case 0x200: /*0001000*/ // BNE
//LOG_INSTRUCTION(instruction, 4, "BNE"); //LOG_INSTRUCTION(instruction, 4, "BNE");
if (this.flagZ & 0xffff) this.registerVal[7] = this.branch(this.registerVal[7], instruction); if (this.flagZ & 0xffff) this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x300: /*0001400*/ // BEQ case 0x300: /*0001400*/ // BEQ
//LOG_INSTRUCTION(instruction, 4, "BEQ"); //LOG_INSTRUCTION(instruction, 4, "BEQ");
if (!(this.flagZ & 0xffff)) this.registerVal[7] = this.branch(this.registerVal[7], instruction); if (!(this.flagZ & 0xffff)) this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x400: /*0002000*/ // BGE case 0x400: /*0002000*/ // BGE
//LOG_INSTRUCTION(instruction, 4, "BGE"); //LOG_INSTRUCTION(instruction, 4, "BGE");
if ((this.flagN & 0x8000) === if ((this.flagN & 0x8000) ===
(this.flagV & 0x8000)) this.registerVal[7] = this.branch(this.registerVal[7], instruction); (this.flagV & 0x8000)) this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x500: /*0002400*/ // BLT case 0x500: /*0002400*/ // BLT
//LOG_INSTRUCTION(instruction, 4, "BLT"); //LOG_INSTRUCTION(instruction, 4, "BLT");
if ((this.flagN & 0x8000) !== if ((this.flagN & 0x8000) !==
(this.flagV & 0x8000)) this.registerVal[7] = this.branch(this.registerVal[7], instruction); (this.flagV & 0x8000)) this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x600: /*0003000*/ // BGT case 0x600: /*0003000*/ // BGT
//LOG_INSTRUCTION(instruction, 4, "BGT"); //LOG_INSTRUCTION(instruction, 4, "BGT");
if ((this.flagZ & 0xffff) && ((this.flagN & 0x8000) === if ((this.flagZ & 0xffff) && ((this.flagN & 0x8000) ===
(this.flagV & 0x8000))) this.registerVal[7] = this.branch(this.registerVal[7], instruction); (this.flagV & 0x8000))) this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x700: /*0003400*/ // BLE case 0x700: /*0003400*/ // BLE
//LOG_INSTRUCTION(instruction, 4, "BLE"); //LOG_INSTRUCTION(instruction, 4, "BLE");
if (!(this.flagZ & 0xffff) || ((this.flagN & 0x8000) !== if (!(this.flagZ & 0xffff) || ((this.flagN & 0x8000) !==
(this.flagV & 0x8000))) this.registerVal[7] = this.branch(this.registerVal[7], instruction); (this.flagV & 0x8000))) this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x8000: /*0100000*/ // BPL case 0x8000: /*0100000*/ // BPL
//LOG_INSTRUCTION(instruction, 4, "BPL"); //LOG_INSTRUCTION(instruction, 4, "BPL");
if (!(this.flagN & 0x8000)) this.registerVal[7] = this.branch(this.registerVal[7], instruction); if (!(this.flagN & 0x8000)) this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x8200: /*0101000*/ // BHI case 0x8200: /*0101000*/ // BHI
//LOG_INSTRUCTION(instruction, 4, "BHI"); //LOG_INSTRUCTION(instruction, 4, "BHI");
if (!(this.flagC & 0x10000) && if (!(this.flagC & 0x10000) &&
(this.flagZ & 0xffff)) this.registerVal[7] = this.branch(this.registerVal[7], instruction); (this.flagZ & 0xffff)) this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x8100: /*0100400*/ // BMI case 0x8100: /*0100400*/ // BMI
//LOG_INSTRUCTION(instruction, 4, "BMI"); //LOG_INSTRUCTION(instruction, 4, "BMI");
if ((this.flagN & 0x8000)) this.registerVal[7] = this.branch(this.registerVal[7], instruction); if ((this.flagN & 0x8000)) this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x8300: /*0101400*/ // BLOS case 0x8300: /*0101400*/ // BLOS
//LOG_INSTRUCTION(instruction, 4, "BLOS"); //LOG_INSTRUCTION(instruction, 4, "BLOS");
if ((this.flagC & 0x10000) || if ((this.flagC & 0x10000) ||
!(this.flagZ & 0xffff)) this.registerVal[7] = this.branch(this.registerVal[7], instruction); !(this.flagZ & 0xffff)) this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x8400: /*0102000*/ // BVC case 0x8400: /*0102000*/ // BVC
//LOG_INSTRUCTION(instruction, 4, "BVC"); //LOG_INSTRUCTION(instruction, 4, "BVC");
if (!(this.flagV & 0x8000)) this.registerVal[7] = this.branch(this.registerVal[7], instruction); if (!(this.flagV & 0x8000)) this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x8500: /*0102400*/ // BVS case 0x8500: /*0102400*/ // BVS
//LOG_INSTRUCTION(instruction, 4, "BVS"); //LOG_INSTRUCTION(instruction, 4, "BVS");
if ((this.flagV & 0x8000)) this.registerVal[7] = this.branch(this.registerVal[7], instruction); if ((this.flagV & 0x8000)) this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x8600: /*0103000*/ // BCC case 0x8600: /*0103000*/ // BCC
//LOG_INSTRUCTION(instruction, 4, "BCC"); //LOG_INSTRUCTION(instruction, 4, "BCC");
if (!(this.flagC & if (!(this.flagC &
0x10000)) this.registerVal[7] = this.branch(this.registerVal[7], instruction); 0x10000)) this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x8700: /*0103400*/ // BCS case 0x8700: /*0103400*/ // BCS
//LOG_INSTRUCTION(instruction, 4, "BCS"); //LOG_INSTRUCTION(instruction, 4, "BCS");
if (this.flagC & 0x10000) this.registerVal[7] = this.branch(this.registerVal[7], instruction); if (this.flagC & 0x10000) this.regsCur[7] = this.branch(this.regsCur[7], instruction);
break; break;
case 0x8800: /*0104000*/ // EMT 104000 -> 104377 case 0x8800: /*0104000*/ // EMT 104000 -> 104377
//LOG_INSTRUCTION(instruction, 7, "EMT"); //LOG_INSTRUCTION(instruction, 7, "EMT");
@ -1754,15 +1754,15 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
case 0x40: /*0000100*/ // JMP 0001DD case 0x40: /*0000100*/ // JMP 0001DD
//LOG_INSTRUCTION(instruction, 1, "JMP"); //LOG_INSTRUCTION(instruction, 1, "JMP");
if ((virtualAddress = this.getVirtualByMode(instruction, 0)) >= 0) { if ((virtualAddress = this.getVirtualByMode(instruction, 0)) >= 0) {
this.registerVal[7] = virtualAddress & 0xffff; this.regsCur[7] = virtualAddress & 0xffff;
} }
break; break;
case 0xC0: /*0000300*/ // SWAB 0003DD case 0xC0: /*0000300*/ // SWAB 0003DD
//LOG_INSTRUCTION(instruction, 1, "SWAB"); //LOG_INSTRUCTION(instruction, 1, "SWAB");
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
reg = instruction & 7; reg = instruction & 7;
dst = this.registerVal[reg]; dst = this.regsCur[reg];
this.registerVal[reg] = ((dst << 8) | (dst >> 8)) & 0xffff; this.regsCur[reg] = ((dst << 8) | (dst >> 8)) & 0xffff;
this.flagN = this.flagZ = dst & 0xff00; this.flagN = this.flagZ = dst & 0xff00;
this.flagV = this.flagC = 0; this.flagV = this.flagC = 0;
} else { } else {
@ -1779,7 +1779,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
case 0xA00: /*0005000*/ // CLR 0050DD case 0xA00: /*0005000*/ // CLR 0050DD
//LOG_INSTRUCTION(instruction, 1, "CLR"); //LOG_INSTRUCTION(instruction, 1, "CLR");
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
this.registerVal[instruction & 7] = 0; this.regsCur[instruction & 7] = 0;
this.flagN = this.flagC = this.flagV = this.flagZ = 0; this.flagN = this.flagC = this.flagV = this.flagZ = 0;
} else { } else {
if ((dstAddr = this.getAddrByMode(instruction, PDP11.WRITE_MODE)) >= 0) { // write word if ((dstAddr = this.getAddrByMode(instruction, PDP11.WRITE_MODE)) >= 0) { // write word
@ -1805,9 +1805,9 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
//LOG_INSTRUCTION(instruction, 1, "INC"); //LOG_INSTRUCTION(instruction, 1, "INC");
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
reg = instruction & 7; reg = instruction & 7;
dst = this.registerVal[reg]; dst = this.regsCur[reg];
result = dst + 1; result = dst + 1;
this.registerVal[reg] = result & 0xffff; this.regsCur[reg] = result & 0xffff;
this.flagN = this.flagZ = result; this.flagN = this.flagZ = result;
this.flagV = result & (result ^ dst); this.flagV = result & (result ^ dst);
} else { } else {
@ -1825,9 +1825,9 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
//LOG_INSTRUCTION(instruction, 1, "DEC"); //LOG_INSTRUCTION(instruction, 1, "DEC");
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
reg = instruction & 7; reg = instruction & 7;
dst = this.registerVal[reg]; dst = this.regsCur[reg];
result = dst - 1; result = dst - 1;
this.registerVal[reg] = result & 0xffff; this.regsCur[reg] = result & 0xffff;
this.flagN = this.flagZ = result; this.flagN = this.flagZ = result;
this.flagV = (result ^ dst) & dst; this.flagV = (result ^ dst) & dst;
} else { } else {
@ -1885,9 +1885,9 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
//LOG_INSTRUCTION(instruction, 1, "ROR"); //LOG_INSTRUCTION(instruction, 1, "ROR");
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
reg = instruction & 7; reg = instruction & 7;
dst = this.registerVal[reg]; dst = this.regsCur[reg];
result = ((this.flagC & 0x10000) | dst) >> 1; result = ((this.flagC & 0x10000) | dst) >> 1;
this.registerVal[reg] = result & 0xffff; this.regsCur[reg] = result & 0xffff;
this.flagC = (dst << 16); this.flagC = (dst << 16);
this.flagN = this.flagZ = result; this.flagN = this.flagZ = result;
this.flagV = result ^ (this.flagC >> 1); this.flagV = result ^ (this.flagC >> 1);
@ -1907,9 +1907,9 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
//LOG_INSTRUCTION(instruction, 1, "ROL"); //LOG_INSTRUCTION(instruction, 1, "ROL");
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
reg = instruction & 7; reg = instruction & 7;
dst = this.registerVal[reg]; dst = this.regsCur[reg];
result = (dst << 1) | ((this.flagC >> 16) & 1); result = (dst << 1) | ((this.flagC >> 16) & 1);
this.registerVal[reg] = result & 0xffff; this.regsCur[reg] = result & 0xffff;
this.flagC = this.flagN = this.flagZ = result; this.flagC = this.flagN = this.flagZ = result;
this.flagV = result ^ dst; this.flagV = result ^ dst;
} else { } else {
@ -1927,9 +1927,9 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
//LOG_INSTRUCTION(instruction, 1, "ASR"); //LOG_INSTRUCTION(instruction, 1, "ASR");
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
reg = instruction & 7; reg = instruction & 7;
dst = this.registerVal[reg]; dst = this.regsCur[reg];
result = (dst & 0x8000) | (dst >> 1); result = (dst & 0x8000) | (dst >> 1);
this.registerVal[reg] = result & 0xffff; this.regsCur[reg] = result & 0xffff;
this.flagC = dst << 16; this.flagC = dst << 16;
this.flagN = this.flagZ = result; this.flagN = this.flagZ = result;
this.flagV = this.flagN ^ (this.flagC >> 1); this.flagV = this.flagN ^ (this.flagC >> 1);
@ -1949,9 +1949,9 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
//LOG_INSTRUCTION(instruction, 1, "ASL"); //LOG_INSTRUCTION(instruction, 1, "ASL");
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
reg = instruction & 7; reg = instruction & 7;
dst = this.registerVal[reg]; dst = this.regsCur[reg];
result = dst << 1; result = dst << 1;
this.registerVal[reg] = result & 0xffff; this.regsCur[reg] = result & 0xffff;
this.flagC = this.flagN = this.flagZ = result; this.flagC = this.flagN = this.flagZ = result;
this.flagV = result ^ dst; this.flagV = result ^ dst;
} else { } else {
@ -1967,11 +1967,11 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
break; break;
case 0xD00: /*0006400*/ // MARK 0064nn case 0xD00: /*0006400*/ // MARK 0064nn
//LOG_INSTRUCTION(instruction, 8, "MARK"); //LOG_INSTRUCTION(instruction, 8, "MARK");
virtualAddress = (this.registerVal[7] + ((instruction & 0x3F) /*077*/ << 1)) & 0xffff; virtualAddress = (this.regsCur[7] + ((instruction & 0x3F) /*077*/ << 1)) & 0xffff;
if ((src = this.readWordByVirtual(virtualAddress | 0x10000)) >= 0) { if ((src = this.readWordByVirtual(virtualAddress | 0x10000)) >= 0) {
this.registerVal[7] = this.registerVal[5]; this.regsCur[7] = this.regsCur[5];
this.registerVal[5] = src; this.regsCur[5] = src;
this.registerVal[6] = (virtualAddress + 2) & 0xffff; this.regsCur[6] = (virtualAddress + 2) & 0xffff;
} }
break; break;
case 0xD40: /*0006500*/ // MFPI 0065SS case 0xD40: /*0006500*/ // MFPI 0065SS
@ -1979,9 +1979,9 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
reg = instruction & 7; reg = instruction & 7;
if (6 !== reg || ((this.PSW >> 2) & 0x3000) === (this.PSW & 0x3000)) { if (6 !== reg || ((this.PSW >> 2) & 0x3000) === (this.PSW & 0x3000)) {
src = this.registerVal[reg]; src = this.regsCur[reg];
} else { } else {
src = this.stackPointer[(this.PSW >> 12) & 3]; src = this.regsStack[(this.PSW >> 12) & 3];
} }
if (this.pushWord(src) >= 0) { if (this.pushWord(src) >= 0) {
this.flagN = this.flagZ = src; this.flagN = this.flagZ = src;
@ -2008,9 +2008,9 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
reg = instruction & 7; reg = instruction & 7;
if (6 !== reg || ((this.PSW >> 2) & 0x3000) === (this.PSW & 0x3000)) { if (6 !== reg || ((this.PSW >> 2) & 0x3000) === (this.PSW & 0x3000)) {
this.registerVal[reg] = dst; this.regsCur[reg] = dst;
} else { } else {
this.stackPointer[(this.PSW >> 12) & 3] = dst; this.regsStack[(this.PSW >> 12) & 3] = dst;
} }
this.flagN = this.flagZ = dst; this.flagN = this.flagZ = dst;
this.flagV = 0; this.flagV = 0;
@ -2042,7 +2042,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
case 0x8A00: /*0105000*/ // CLRB 1050DD case 0x8A00: /*0105000*/ // CLRB 1050DD
//LOG_INSTRUCTION(instruction, 1, "CLRB"); //LOG_INSTRUCTION(instruction, 1, "CLRB");
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
this.registerVal[instruction & 7] &= 0xff00; this.regsCur[instruction & 7] &= 0xff00;
this.flagN = this.flagC = this.flagV = this.flagZ = 0; this.flagN = this.flagC = this.flagV = this.flagZ = 0;
} else { } else {
if ((dstAddr = this.getAddrByMode(instruction, PDP11.WRITE_MODE | PDP11.BYTE_MODE)) >= 0) { // write byte if ((dstAddr = this.getAddrByMode(instruction, PDP11.WRITE_MODE | PDP11.BYTE_MODE)) >= 0) { // write byte
@ -2183,9 +2183,9 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
reg = instruction & 7; reg = instruction & 7;
if (6 !== reg || ((this.PSW >> 2) & 0x3000) === (this.PSW & 0x3000)) { if (6 !== reg || ((this.PSW >> 2) & 0x3000) === (this.PSW & 0x3000)) {
src = this.registerVal[reg]; src = this.regsCur[reg];
} else { } else {
src = this.stackPointer[(this.PSW >> 12) & 3]; src = this.regsStack[(this.PSW >> 12) & 3];
} }
if (this.pushWord(src) >= 0) { if (this.pushWord(src) >= 0) {
this.flagN = this.flagZ = src; this.flagN = this.flagZ = src;
@ -2211,9 +2211,9 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
if (!(instruction & 0x38)) { if (!(instruction & 0x38)) {
reg = instruction & 7; reg = instruction & 7;
if (6 !== reg || ((this.PSW >> 2) & 0x3000) === (this.PSW & 0x3000)) { if (6 !== reg || ((this.PSW >> 2) & 0x3000) === (this.PSW & 0x3000)) {
this.registerVal[reg] = dst; this.regsCur[reg] = dst;
} else { } else {
this.stackPointer[(this.PSW >> 12) & 3] = dst; this.regsStack[(this.PSW >> 12) & 3] = dst;
} }
this.flagN = this.flagZ = dst; this.flagN = this.flagZ = dst;
this.flagV = 0; this.flagV = 0;
@ -2244,7 +2244,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
// } // }
// } else { // } else {
// if (src & 0200) src |= 0xff00; // if (src & 0200) src |= 0xff00;
// this.registerVal[instruction & 7] = src; // this.regsCur[instruction & 7] = src;
// this.flagN = this.flagZ = src << 8; // this.flagN = this.flagZ = src << 8;
// this.flagV = 0; // this.flagV = 0;
// } // Temporary PDP 11/34A // } // Temporary PDP 11/34A
@ -2255,8 +2255,8 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
//LOG_INSTRUCTION(instruction, 6, "RTS"); //LOG_INSTRUCTION(instruction, 6, "RTS");
if ((src = this.popWord()) >= 0) { if ((src = this.popWord()) >= 0) {
reg = instruction & 7; reg = instruction & 7;
this.registerVal[7] = this.registerVal[reg]; this.regsCur[7] = this.regsCur[reg];
this.registerVal[reg] = src; this.regsCur[reg] = src;
} }
break; break;
case 0x98: /*0000230*/ // SPL 00023N case 0x98: /*0000230*/ // SPL 00023N
@ -2293,7 +2293,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
this.runState = 3; // halt this.runState = 3; // halt
this.endBurst(); this.endBurst();
//LOG_PRINT(); //LOG_PRINT();
console.log("HALT at " + this.registerVal[7].toString(8)); console.log("HALT at " + this.regsCur[7].toString(8));
} }
break; break;
case 0x1: /*0000001*/ // WAIT 000001 case 0x1: /*0000001*/ // WAIT 000001
@ -2323,23 +2323,23 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
if (!(this.PSW & 0xc000)) { if (!(this.PSW & 0xc000)) {
this.resetRegs(); this.resetRegs();
this.bus.reset_iopage(); this.bus.reset_iopage();
// display.data = this.registerVal[0]; // TODO: Review // display.data = this.regsCur[0]; // TODO: Review
} }
break; break;
case 0x2: /*0000002*/ // RTI 000002 case 0x2: /*0000002*/ // RTI 000002
case 0x6: /*0000006*/ // RTT 000006 case 0x6: /*0000006*/ // RTT 000006
//LOG_INSTRUCTION(instruction, 0, "RTT"); //LOG_INSTRUCTION(instruction, 0, "RTT");
dstAddr = this.registerVal[6]; dstAddr = this.regsCur[6];
if ((virtualAddress = this.readWordByVirtual(dstAddr | 0x10000)) >= 0) { if ((virtualAddress = this.readWordByVirtual(dstAddr | 0x10000)) >= 0) {
dstAddr = (dstAddr + 2) & 0xffff; dstAddr = (dstAddr + 2) & 0xffff;
if ((savePSW = this.readWordByVirtual(dstAddr | 0x10000)) >= 0) { if ((savePSW = this.readWordByVirtual(dstAddr | 0x10000)) >= 0) {
this.registerVal[6] = (dstAddr + 2) & 0xffff; this.regsCur[6] = (dstAddr + 2) & 0xffff;
savePSW &= 0xf8ff; savePSW &= 0xf8ff;
if (this.PSW & 0xc000) { // user / super restrictions if (this.PSW & 0xc000) { // user / super restrictions
// keep SPL and allow lower only for modes and register set // keep SPL and allow lower only for modes and register set
savePSW = (savePSW & 0xf81f) | (this.PSW & 0xf8e0); savePSW = (savePSW & 0xf81f) | (this.PSW & 0xf8e0);
} }
this.registerVal[7] = virtualAddress; this.regsCur[7] = virtualAddress;
this.writePSW(savePSW); this.writePSW(savePSW);
this.trapMask &= ~0x10; // turn off Trace trap this.trapMask &= ~0x10; // turn off Trace trap
if (instruction === 2) this.trapMask |= this.PSW & 0x10; // RTI enables immediate trace if (instruction === 2) this.trapMask |= this.PSW & 0x10; // RTI enables immediate trace
@ -2348,7 +2348,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
break; break;
//case 0000007: // MFPT 000007 //case 0000007: // MFPT 000007
// //LOG_INSTRUCTION(instruction, 0, "MFPT"); // //LOG_INSTRUCTION(instruction, 0, "MFPT");
// this.registerVal[0] = 1; // this.regsCur[0] = 1;
// break; // Exists on pdp 11/44 & KB11-EM // break; // Exists on pdp 11/44 & KB11-EM
default: // We don't know this instruction default: // We don't know this instruction
//LOG_INSTRUCTION(instruction, 11, "-unknown-"); //LOG_INSTRUCTION(instruction, 11, "-unknown-");

View file

@ -251,12 +251,12 @@ if (DEBUGGER) {
"SXT", "TST", "TSTB", "WAIT" "SXT", "TST", "TSTB", "WAIT"
]; ];
DebuggerPDP11.REG_PC = 0x0C; /*
DebuggerPDP11.REG_PSW = 0x0E; * Register numbers 0-7 are reserved for cpu.regsCur, 8-15 are reserved for cpu.regsAlt, and 16-19 for cpu.regsStack.
*/
DebuggerPDP11.REGS = [ DebuggerPDP11.REG_SP = 6; // aka R6
"PC", "PSW" DebuggerPDP11.REG_PC = 7; // aka R7
]; DebuggerPDP11.REG_PSW = 20;
DebuggerPDP11.MODE_REG = 0x0; // REGISTER (register is operand) DebuggerPDP11.MODE_REG = 0x0; // REGISTER (register is operand)
DebuggerPDP11.MODE_REGD = 0x1; // REGISTER DEFERRED (register is address of operand) DebuggerPDP11.MODE_REGD = 0x1; // REGISTER DEFERRED (register is address of operand)
@ -1035,75 +1035,6 @@ if (DEBUGGER) {
return false; return false;
}; };
/**
* getRegIndex(sReg, off)
*
* @this {DebuggerPDP11}
* @param {string} sReg
* @param {number} [off] optional offset into sReg
* @return {number} register index, or -1 if not found
*/
DebuggerPDP11.prototype.getRegIndex = function(sReg, off)
{
var i;
sReg = sReg.toUpperCase();
if (off == null) {
i = usr.indexOf(DebuggerPDP11.REGS, sReg);
} else {
i = usr.indexOf(DebuggerPDP11.REGS, sReg.substr(off, 2));
if (i < 0) i = usr.indexOf(DebuggerPDP11.REGS, sReg.substr(off, 1));
}
return i;
};
/**
* getRegString(iReg)
*
* @this {DebuggerPDP11}
* @param {number} iReg
* @return {string}
*/
DebuggerPDP11.prototype.getRegString = function(iReg)
{
var cch = 0;
var n = this.getRegValue(iReg);
if (n !== undefined) {
switch(iReg) {
case DebuggerPDP11.REG_PC:
case DebuggerPDP11.REG_PSW:
cch = 4;
break;
}
}
return cch? str.toHex(n, cch) : "??";
};
/**
* getRegValue(iReg)
*
* @this {DebuggerPDP11}
* @param {number} iReg
* @return {number|undefined}
*/
DebuggerPDP11.prototype.getRegValue = function(iReg)
{
var n;
if (iReg >= 0) {
var cpu = this.cpu;
switch(iReg) {
case DebuggerPDP11.REG_PC:
n = cpu.getPC();
break;
case DebuggerPDP11.REG_PSW:
n = cpu.getPSW();
break;
default:
break;
}
}
return n;
};
/** /**
* replaceRegs(s) * replaceRegs(s)
* *
@ -1113,70 +1044,6 @@ if (DEBUGGER) {
*/ */
DebuggerPDP11.prototype.replaceRegs = function(s) DebuggerPDP11.prototype.replaceRegs = function(s)
{ {
/*
* Replace any references first; this means that register references inside the reference
* do NOT need to be prefixed with '@'.
*/
s = this.parseReference(s);
/*
* Replace every @XX (or @XXX), where XX (or XXX) is a register, with the register's value.
*/
var i = 0;
var b, sChar, sAddr, dbgAddr, sReplace;
while ((i = s.indexOf('@', i)) >= 0) {
var iReg = this.getRegIndex(s, i + 1);
if (iReg >= 0) {
s = s.substr(0, i) + this.getRegString(iReg) + s.substr(i + 1 + DebuggerPDP11.REGS[iReg].length);
}
i++;
}
/*
* Replace every #XX, where XX is a hex byte value, with the corresponding ASCII character (if printable).
*/
i = 0;
while ((i = s.indexOf('#', i)) >= 0) {
sChar = s.substr(i+1, 2);
b = str.parseInt(sChar, 16);
if (b != null && b >= 32 && b < 128) {
sReplace = sChar + " '" + String.fromCharCode(b) + "'";
s = s.replace('#' + sChar, sReplace);
i += sReplace.length;
continue;
}
i++;
}
/*
* Replace every $XXXX:XXXX, where XXXX:XXXX is a segmented address, with the zero-terminated string at that address.
*/
i = 0;
while ((i = s.indexOf('$', i)) >= 0) {
sAddr = s.substr(i+1, 9);
dbgAddr = this.parseAddr(sAddr);
if (dbgAddr) {
sReplace = sAddr + ' "' + this.getSZ(dbgAddr) + '"';
s = s.replace('$' + sAddr, sReplace);
i += sReplace.length;
continue;
}
i++;
}
/*
* Replace every ^XXXX:XXXX, where XXXX:XXXX is a segmented address, with the FCB filename stored at that address.
*/
i = 0;
while ((i = s.indexOf('^', i)) >= 0) {
sAddr = s.substr(i+1, 9);
dbgAddr = this.parseAddr(sAddr);
if (dbgAddr) {
this.incAddr(dbgAddr);
sReplace = sAddr + ' "' + this.getSZ(dbgAddr, 11) + '"';
s = s.replace('^' + sAddr, sReplace);
i += sReplace.length;
continue;
}
i++;
}
return s; return s;
}; };
@ -2016,6 +1883,7 @@ if (DEBUGGER) {
opDesc = opMask[bits]; opDesc = opMask[bits];
if (opDesc) break; if (opDesc) break;
} }
if (!opDesc) opDesc = [DebuggerPDP11.OPS.NONE]; if (!opDesc) opDesc = [DebuggerPDP11.OPS.NONE];
var sOperands = ""; var sOperands = "";
@ -2039,7 +1907,7 @@ if (DEBUGGER) {
} }
var sBytes = ""; var sBytes = "";
var sLine = this.toHexAddr(dbgAddrOp) + ' '; var sLine = this.toHexAddr(dbgAddrOp) + ": ";
if (dbgAddrOp.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(dbgAddrOp, 1), 2); sBytes += str.toHex(this.getByte(dbgAddrOp, 1), 2);
@ -2075,6 +1943,10 @@ if (DEBUGGER) {
DebuggerPDP11.prototype.getOperand = function(opCode, type, dbgAddr) DebuggerPDP11.prototype.getOperand = function(opCode, type, dbgAddr)
{ {
var sOperand = ""; var sOperand = "";
/*
* Take care of TYPE_BRANCH opcodes first; then all we'll have to worry about
* next are TYPE_SRC or TYPE_DST opcodes.
*/
if (type & DebuggerPDP11.TYPE_BRANCH) { if (type & DebuggerPDP11.TYPE_BRANCH) {
var disp = ((opCode & 0xff) << 24) >> 24; var disp = ((opCode & 0xff) << 24) >> 24;
var addr = (dbgAddr.addr + disp) & 0xffff; var addr = (dbgAddr.addr + disp) & 0xffff;
@ -2082,11 +1954,11 @@ if (DEBUGGER) {
} }
else { else {
/* /*
* Isolate all SRC or DST bits from opcode in the mode variable. * Isolate all TYPE_SRC or TYPE_DST bits from opcode in the mode variable.
*/ */
var mode = opCode & type; var mode = opCode & type;
/* /*
* Convert SRC bits into DST bits, since they use the same format. * Convert TYPE_SRC bits into TYPE_DST bits, since they use the same format.
*/ */
if (type & DebuggerPDP11.TYPE_SRC) { if (type & DebuggerPDP11.TYPE_SRC) {
mode >>= 6; mode >>= 6;
@ -2154,20 +2026,6 @@ if (DEBUGGER) {
return sOperand; return sOperand;
}; };
/**
* getRegOperand(iReg, type, dbgAddr)
*
* @this {DebuggerPDP11}
* @param {number} iReg
* @param {number} type
* @param {DbgAddrPDP11} dbgAddr
* @return {string} operand
*/
DebuggerPDP11.prototype.getRegOperand = function(iReg, type, dbgAddr)
{
return DebuggerPDP11.REGS[iReg];
};
/** /**
* parseInstruction(sOp, sOperand, addr) * parseInstruction(sOp, sOperand, addr)
* *
@ -2197,13 +2055,13 @@ if (DEBUGGER) {
{ {
var b; var b;
switch (sFlag) { switch (sFlag) {
case "SF": case 'N':
b = this.cpu.getSF(); b = this.cpu.getSF();
break; break;
case "ZF": case 'Z':
b = this.cpu.getZF(); b = this.cpu.getZF();
break; break;
case "CF": case 'C':
b = this.cpu.getCF(); b = this.cpu.getCF();
break; break;
default: default:
@ -2222,19 +2080,48 @@ if (DEBUGGER) {
*/ */
DebuggerPDP11.prototype.getRegOutput = function(iReg) DebuggerPDP11.prototype.getRegOutput = function(iReg)
{ {
var sReg = DebuggerPDP11.REGS[iReg]; var sReg = "";
return sReg + '=' + this.getRegString(iReg) + ' '; var cpu = this.cpu;
if (iReg < 8) {
sReg = (iReg < 6? ("R" + iReg) : (iReg == 6? "SP" : "PC"));
sReg += '=' + str.toHex(cpu.regsCur[iReg], 4);
}
else if (iReg < 13) {
sReg = "A" + (iReg - 8) + '=' + str.toHex(cpu.regsAlt[iReg - 8], 4);
}
else if (iReg >= 16 && iReg < 20) {
sReg = "S" + (iReg - 16) + '=' + str.toHex(cpu.regsStack[iReg - 16], 4);
}
else if (iReg == DebuggerPDP11.REG_PSW) {
sReg = "PS=" + str.toHex(cpu.getPSW(), 4);
}
if (sReg) sReg += ' ';
return sReg;
}; };
/** /**
* getRegDump() * getRegDump()
* *
* Sample register dump:
*
* R0=xxxx R1=xxxx R2=xxxx R3=xxxx R4=xxxx R5=xxxx
* SP=xxxx PC=xxxx PS=xxxx T0 N0 Z0 V0 C0
*
* @this {DebuggerPDP11} * @this {DebuggerPDP11}
* @return {string} * @return {string}
*/ */
DebuggerPDP11.prototype.getRegDump = function() DebuggerPDP11.prototype.getRegDump = function()
{ {
return "no regs"; var i;
var sDump = "";
for (i = 0; i < DebuggerPDP11.REG_SP; i++) {
sDump += this.getRegOutput(i);
}
sDump += '\n';
sDump += this.getRegOutput(DebuggerPDP11.REG_SP) + this.getRegOutput(DebuggerPDP11.REG_PC);
sDump += this.getFlagOutput('T') + this.getFlagOutput('N') + this.getFlagOutput('Z') + this.getFlagOutput('V') + this.getFlagOutput('C');
return sDump;
}; };
/** /**

View file

@ -1,174 +1,173 @@
(function(){var m; (function(){var m;
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== 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 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} 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 r(a){return p(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 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 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,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 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 t(a){window&&window.alert(a)}function wa(a){var b=!1;window&&(b=window.confirm(a));return b}var xa=null;function ya(){if(null==xa){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}xa=a}return xa}function Fa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(d){}return b}
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 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 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 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 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 Qa(a){if(Na)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 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 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={}; function v(a,b,d,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.mb=b.comment;this.Gb=b;b=this.id.indexOf(".");0>b?this.Va=this.id:(this.nb=this.id.substr(0,b),this.Va=this.id.substr(b+1));this[a]=d;this.w={ready:!1,Da:!1,Wa:!1,W:!1,error:!1};this.Ua=null;this.w.error=!1;this.J={};this.D=null;this.X=c||0;x.push(this)}var Ta=void 0,Ua={};
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} if(window){Ta||(Ta=window.location.search.substr(1));for(var Va,Wa=/\+/g,Xa=/([^&=]+)=?([^&]*)/g;Va=Xa.exec(Ta);)Ua[decodeURIComponent(Va[1].replace(Wa," "))]=decodeURIComponent(Va[2].replace(Wa," "))}function Ya(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var d=typeof a;if("object"!==d&&"function"!==d)throw new TypeError;}b.prototype=a;return new b}
function 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 y(a,b){b||(b=v);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={}),x=window.PCjs.Components||(window.PCjs.Components=[])}else Za={},x=[];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<x.length;b++){var c=x[b];a&&c.id.indexOf(a)||d.push(c)}return d}
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 kb(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 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 lb(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.fa(g.type,g.binding,h,g.value),l=k.length}}}}
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} 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}
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), v.prototype={constructor:v,parent:null,toString:function(){return this.name?this.name:this.id||this.type},fa: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.wa=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.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} this.da=function(a){this.j(a,this.Va)}),!0;default:return!1}},log:function(){},j:function(){},status:function(a){this.j(this.Va+": "+a)},da:function(a,b,d){d=d||this.type;b||t((d?d+": ":"")+a)},sa:function(){return this.w.W=!0},ra:function(a,b){b&&(this.w.W=!1);return!0}};function mb(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.Ab)}return!1}
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)} function nb(a,b){if(a.w.Wa)return a.w.Da&&(a.w.Da=!1),a.w.Wa=!1;if(a.w.error)return a.j(a.toString()+" error"),!1;a.w.Da=b;return a.w.Da}function ob(a,b){a.w.Da&&(b?a.w.Wa=!0:void 0===b&&a.j(a.toString()+" busy"));return a.w.Da}function E(a){if(!a.w.error&&(a.w.ready=!0,a.w.ready)){var b=a.Ua;a.Ua=null;b&&b()}}function pb(a,b){b&&(a.w.ready?b():a.Ua=b);return a.w.ready}function qb(a,b){a.w.error=!0;a.da(b)}
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}; var rb="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 sb(a){v.call(this,"Panel",a,sb)}y(sb);m=sb.prototype;m.fa=function(a,b,d,c){return this.C&&this.C.fa(a,b,d,c)||this.b&&this.b.fa(a,b,d,c)||this.D&&this.D.fa(a,b,d,c)?!0:this.parent.fa.call(this,a,b,d,c)};m.xa=function(a,b,d,c){this.C=a;this.G=b;this.b=d;this.D=c};
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); m.sa=function(a,b){b||tb();return!0};m.ra=function(){return!0};m.ha=function(){};function tb(){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 sb(e));lb(f,c);a&&E(f)}}Pa(tb);
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 ub(a,b,d){v.call(this,"Bus",a,ub);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.ja=1<<this.$;this.B=this.ja>>2;this.g=this.ja-1;this.G=this.C/this.ja|0;this.F=this.G-1;a=new G;vb(a,this.D);this.N=Array(this.G);for(b=0;b<this.G;b++)this.N[b]=a;E(this)}y(ub);ub.prototype.reset=function(){};ub.prototype.sa=function(a,b){b||this.reset();return!0};
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 wb(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.ja,l=a.ja-(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.ja;f-=l;h++;continue}}return xb(1,e,f)}e=new G(e,l,a.ja,c);vb(e,a.D,g);a.N[h++]=e;e=k+a.ja;f-=l}return 0>=f?(a.status(Math.floor(d/1024)+"Kb "+yb[c]+" at "+r(b)),!0):xb(2,b,d)}
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 zb(a,b){var d=b&a.g,c=(b&a.i)>>>a.$;return d!=a.g?a.N[c].vb(d,b):a.N[c++].Qa(d,b)|a.N[c&a.F].Qa(0,b+1)<<8}function xb(a,b,d){t("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 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; function G(a,b,d,c){this.id=Ob+=2;this.b=null;this.A=a;this.Sa=b;this.size=d||0;this.type=c||Pb;this.B=c==Qb;vb(this);this.ta=this.Cb=!1;if(d)if(rb)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),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;
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); G.prototype={constructor:G,parent:null,save:function(){var a,b;if(rb)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(rb)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},va:function(a,b){b?0===this.u++&&Vb(this,Wb,!1):0===this.i++&&Xb(this,Wb,!1)},L:function(){this.D&&mb(this.D,129)&&this.D.message("attempt to read invalid block %"+p(this.A),!0);
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= return 255},G:function(a,b){this.D&&mb(this.D,129)&&this.D.message("attempt to write "+r(b)+" to invalid block %"+p(this.A),!0)},U:function(a,b){return this.F(a++,b++)|this.F(a,b)<<8},na: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},ga:function(a,b){var d=a>>2,c=(a&3)<<3;this.b[d]=this.b[d]&~(255<<c)|b<<c;this.ta=!0},pa:function(a,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.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&& 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;Yb(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;Yb(d,this.A+a,2,d.M)&&d.aa(!0)}return this.vb(a,b)},ca:function(a,b,d){if(this.D&&null!=this.A){var c=this.D;Yb(c,this.A+a,1,c.B)&&c.aa(!0)}this.B?this.G(a,b,d):this.Ia(a,b,d)},la:function(a,b,d){if(this.D&&
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}}; null!=this.A){var c=this.D;Yb(c,this.A+a,2,c.B)&&c.aa(!0)}this.B?this.G(a,b,d):this.xb(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},oa:function(a,b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.K[a>>1]=b;this.ta=!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)} function vb(a,b,d){a.D=b;a.i=a.u=0;d&&((a.i=d.i)&&Xb(a,Wb,!1),(a.u=d.u)&&Vb(a,Wb,!1))}function Zb(a,b){b?0===--a.u&&(a.I=a.B?a.G:a.Ia):0===--a.i&&(a.F=a.Qa)}function Vb(a,b,d){d&&a.u||(a.I=!a.B&&b[2]||a.G);if(d||void 0===d)a.Ia=b[2]||a.G,a.xb=b[3]||a.na}function Xb(a,b,d){d&&a.i||(a.F=b[0]||a.L);if(d||void 0===d)a.Qa=b[0]||a.L,a.vb=b[1]||a.U}function Rb(a,b){b||(b=$b);Xb(a,b,void 0);Vb(a,b,void 0)}
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]; var $b=[],Ub=[G.prototype.R,G.prototype.Z,G.prototype.ga,G.prototype.pa],Wb=[G.prototype.O,G.prototype.T,G.prototype.ca,G.prototype.la];if(rb)var Tb=[G.prototype.M,G.prototype.S,G.prototype.ba,G.prototype.ia],Sb=[G.prototype.P,G.prototype.V,G.prototype.ea,G.prototype.oa];
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; function ac(a,b){v.call(this,"CPU",a,ac,1);var d=a.multiplier||1;this.Za=a.cycles||b;this.za=d;this.Ka=Math.round(this.Za/1E4)/100;this.ya=this.Ka*this.za;this.w.Y=!1;this.w.cb=!1;this.w.Ja=a.autoStart;this.w.ib=!1;this.w.Ea=!1;this.Na=this.ba=0;this.Oa=a.csStart;this.Fa=a.csInterval;this.Ga=a.csStop;this.la=[];this.Fb=this.Ba.bind(this);E(this)}y(ac);var bc=["power","reset"];m=ac.prototype;
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.xa=function(a,b,d,c){this.C=a;this.G=b;this.D=c;for(b=0;b<bc.length;b++)(d=this.J[bc[b]])&&this.C.fa(null,bc[b],d);this.ga=null;a=cc(a,"autoStart");null!=a&&(this.w.Ja="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
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}; 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.D){var d=this.D;d.j("Type ? for help with PDP11 Debugger commands");d.ha();if(d.la){var c=d.la;d.la=null;fc(d,c)}}else this.j("No debugger detected")}H(this);return!0};m.ra=function(a){return a?this.save():!0};m.Ja=function(){return this.w.Ja||!this.D&&void 0===this.J.run?(this.Ba(!0),!0):!1};m.kb=function(){return 0};
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 ec(a){void 0===a.Oa&&(a.Oa=0);void 0===a.Fa&&(a.Fa=-1);void 0===a.Ga&&(a.Ga=-1);a.w.Ea=0<=a.Oa&&0<a.Fa;a.w.Ea&&(a.Na=0,a.ba=a.Oa-a.U)}function gc(a,b){if(a.w.Ea){var d=!1;a.Na=a.Na+a.kb()|0;a.ba-=b;0>=a.ba&&(a.ba+=a.Fa,d=!0);0<=a.Ga&&a.Ga<=hc(a)&&(a.Fa=a.Ga=-1,ec(a),a.aa(),d=!0);d&&a.j(hc(a)+" cycles: checksum="+p(a.Na))}}
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))} function ic(a,b,d,c){a.J[b]&&(void 0===d&&(qb(a,"Value for "+b+" is invalid"),a.aa()),d=!a.w.Y||a.w.ib?p(d,c):"--------".substr(0,c),a.J[b].textContent!=d&&(a.J[b].textContent=d))}
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; m.fa=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=ab(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.Ua?" (waiting for notification)":""))+".");a=!1}a&&(c.w.Y?c.aa():c.Ba())};a=!0;
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)} break;case "speed":this.J[b]=d;a=!0;break;case "setSpeed":this.J[b]=d,d.onclick=function(){jc(c,c.za<<1,!0)},d.textContent=this.ya.toFixed(2)+"Mhz",a=!0}return a};function kc(a,b,d){a.U+=b;d&&(a.T=a.P=0)}function lc(a,b){var d=1;b&&1<a.za&&a.R&&(d=a.R/a.Ka);a.sb=Math.round(1E3/30);a.pa=Math.floor(a.Za/30*d);b||(a.ca=a.pa);a.$a=0}function hc(a){return a.U+a.O+a.T-a.P}function dc(a){a.R=0;a.tb=0;a.U=a.O=a.T=a.P=0;ec(a);jc(a,1)}
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} function jc(a,b,d){var c=!1;if(void 0!==b){.8>a.R/a.ya?b=1:c=!0;a.za=b;b=a.Ka*a.za;if(a.ya!=b){a.ya=b;b=a.ya.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.j("target speed: "+b)}d&&a.C&&a.C.Ra()}kc(a,a.O);a.O=0;a.M=ta();a.S=0;lc(a);return c}function yc(a){a.T-=a.P;a.P=0}
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; m.Ba=function(a){if(nb(this,!0)){if(!this.w.Y){jc(this);this.C&&this.C.start(this.M,hc(this));this.w.Y=!0;this.w.cb=!0;this.ga&&this.ga.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&&lc(this,!0);this.ia=0;this.oa=ta();this.S&&(a=this.oa-this.S,a>this.sb&&(this.M+=a,this.M>this.oa&&(this.M=this.oa)));try{do{for(var d=this.w.Ea?1:this.pa,c=this.la.length-1;0<=c;c--){var e=this.la[c];0>e[0]||d>e[0]&&(d=e[0])}this.Ha(d);var f=this.T-this.P;
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= a=f;for(var h=this.la.length-1;0<=h;h--){var g=this.la[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ia+=f;this.O+=f;kc(this,0,!0);gc(this,f);this.ca-=f;if(0>=this.ca){this.ca+=this.pa;15<=++this.tb&&(this.C&&this.C.ha(),this.tb=0);break}}while(this.w.Y)}catch(k){this.aa();H(this);this.C&&this.C.stop(ta(),hc(this));nb(this,!1);qb(this,k.stack||k.message);return}d=setTimeout;c=this.Fb;this.S=ta();e=this.sb;this.ia&&(e=Math.round(e*this.ia/this.pa));e=e-(this.S-this.oa);if(f=this.S-this.M)this.R=
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)} Math.round(this.O/(10*f))/100,864E5<=f&&(this.U=0,jc(this));if(0>e||this.R<this.ya)-1E3>e&&(this.M-=e),e=0;this.$a+=this.ia;this.S+=e;d(c,e)}else H(this),this.C&&this.C.stop(ta(),hc(this))};m.Ha=function(){return 0};m.aa=function(a){ob(this,!0);yc(this);kc(this,this.O);this.O=0;if(this.w.Y){this.w.Y=!1;this.ga&&this.ga.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 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, function zc(a){this.rb=+a.model||1170;ac.call(this,a,1E6);this.lb=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.bb=[0,0,0,0,0,0];this.Aa=[0,0,0,0];this.memory=[];this.I=[];this.ab=this.ub=0;this.V=2;this.Z=255;this.F=0;this.ea=-1;this.qb=this.La=this.pb=this.B=this.Ca=this.L=this.K=0;this.na=[7,7,7,7];this.Ma=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535,65535,
65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.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)}; 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.Hb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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.Bb=!1}y(zc,ac);m=zc.prototype;m.reset=function(){this.w.Y&&this.aa();Ac(this);dc(this);this.w.error=!1;this.parent.reset.call(this)};
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()}; function Ac(a){a.Z=255;a.I=[];a.ub=0;a.K=a.L=a.Ca=a.pb=0;a.na[0]=a.na[1]=a.na[3]=7;a.La=0}m.kb=function(){return 0};m.save=function(){var a=new I(this);J(a,0,[]);J(a,1,[this.ob,this.U,this.za]);for(var b=this.G,d=0,c=[],e=0;e<b.G;e++){var f=b.N[e];if(f.ta||f.Cb){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}}J(a,2,c);return a.data()};
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.restore=function(a){var b=a[1];this.ob=b[0];this.U=b[1];jc(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.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"}; m.fa=function(a,b,d){var c=!1;switch(b){case "PC":case "PSW":case "SF":case "ZF":case "CF":this.J[b]=d;this.lb++;c=!0;break;default:c=this.parent.fa.call(this,a,b,d)}return c};m.ha=function(a){this.lb&&(a||!this.w.Y||this.w.ib)&&(a=this.H&-14|0|(this.ka&255?0:4)|(this.ka&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.J.speed)a.textContent=this.w.Y&&this.R?this.R.toFixed(2)+"Mhz":"Stopped"};
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 Bc(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.bb[d],a.bb[d]=c;(a.B=b>>14&3)!==(a.H>>14&3)&&(a.Aa[c]=a.f[6],a.f[6]=a.Aa[a.B]);a.V=2;a.H=b}
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 L(a,b){var d,c,e=0;0>a.ea?(a.H=a.H&63728|a.b>>12&8|a.g>>14&2|a.u>>16&1,a.i&65535||(a.H|=4),a.ea=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))&&(Bc(a,c&53247|a.ea>>2&12288),e&&(a.f[6]=4),0<=Cc(a,a.ea)&&0<=Cc(a,a.f[7])&&(a.f[7]=d));a.F=0;return a.ea=-1}
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; function Dc(a,b,d){var c,e,f,h=0;if(d&a.pb){c=b>>13&a.na[a.B];e=a.Ma[a.B][c];f=(a.Ma[a.B][c+16]<<6)+(b&8191)&4194303;if(a.Ca&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.Ca&32&&(f=a.Hb[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.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} 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.Ma[a.B][c]=e;if(4194170!==f||a.B)a.La=a.B,a.qb=c;if(h){if(h&57344)return 0<=a.ea&&(h|=128),a.K&57344||(a.K=a.K|h|a.La<<5|a.qb<<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 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 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,Dc(a,b,2))}
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 Ec(a){var b=M(a,a.f[6]|65536);0<=b&&(a.f[6]=a.f[6]+2&65535);return b}function Cc(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=Dc(a,c|65536,4))?Q(a,d,b):d}
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; function Fc(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=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)} 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=Fc(a,b,d))&&(c=Dc(a,c,d)),c):4194304+(b&7)}
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} 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 Gc(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.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= m.Ha=function(a){this.w.complete=!0;var b=this.w.Bb=this.D&&Hc(this.D),d=a?this.w.cb?0:1:-1;this.w.cb=!1;this.T=this.P=a;this.ob&256?(yc(this),a=!1):a=!0;if(a){do{if(b){if(Ic(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.ub&224;if(0<(a=this.I.length))for(;0<a--;){if(0<this.I[a].Ya){this.I[a].Ya--;this.V=2;break}if(this.I[a].gb){if(!this.I[a].gb()){this.I.splice(a,1);g--;continue}this.I[a].gb=null}this.I[a].Eb>c&&(c=this.I[a].Eb,g=
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= a)}c>(this.H&224)&&(0>g?L(this,160):(L(this,this.I[g].Jb),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.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, 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.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= 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=Gc(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=Gc(this,a>>6))&&0<=(e=Gc(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=Gc(this,a>>6))&&0<=(e=Gc(this,a))&&(this.b=this.i=(c&e)<<8,this.g=0);break;case 49152:0<=(c=Gc(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 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, 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=Gc(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=Fc(this,a,0))&&(g=a>>6&7,
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= 0<=Cc(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.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= 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.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>> 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.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& 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.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], 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.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= 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=Fc(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.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); 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=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, 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.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= 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.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)&& 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=Fc(this,a,0))&&(61440!==(this.H&61440)&&
(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]= (h&=65535),this.B=this.H>>12&3,0<=(c=M(this,h))&&(this.B=this.H>>14&3,0<=Cc(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.Aa[this.H>>12&3],0<=Cc(this,c)&&(this.b=this.i=c,this.g=0));break;case 3456:0<=(e=Ec(this))&&((this.K&57344||(this.L=22),a&56)?0<=(h=Fc(this,a,0))&&(h&=65535,this.B=this.H>>12&3,0<=(f=Dc(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.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:this.Aa[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=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; 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=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<= case 35776:0<=(e=Gc(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=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| (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=Fc(this,a,0))&&(this.B=this.H>>12&3,0<=(c=M(this,h|65536))&&(this.B=this.H>>14&3,0<=Cc(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.Aa[this.H>>12&3],0<=Cc(this,c)&&(this.b=this.i=c,this.g=0));break;case 36224:0<=(e=Ec(this))&&((this.K&57344||(this.L=22),a&56)?0<=(h=Fc(this,a,0))&&(this.B=this.H>>12&3,0<=(f=Dc(this,h|
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); 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.Aa[this.H>>12&3]=e,this.b=this.i=e,this.g=0));break;default:switch(a&65528){case 128:0<=(c=Ec(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.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&& a&4&&(this.i=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.H?L(this,4):(this.ab=3,yc(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].Ya,this.I[a].Ya=0;0===g&&0===this.ab&&(this.ab=2,yc(this));break;case 3:L(this,12);break;case 4:L(this,16);break;case 5:this.H&49152||Ac(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.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)}}); (c=c&63519|this.H&63712),this.f[7]=h,Bc(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};Pa(function(){for(var a=D(document,"pdp11","cpu"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new zc(c);lb(c,d)}});
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)}; function Jc(a){v.call(this,"ROM",a,Jc);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;va(a,null,!0,function(a,b,f){Kc(d,a,b,f)})}}y(Jc);Jc.prototype.xa=function(a,b,d,c){this.G=b;this.b=d;this.D=c;Lc(this)};
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}; Jc.prototype.sa=function(){if(this.qa){if(this.D){var a=this.D,b=this.id,d=this.B,c=this.i,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.hb);0>q&&n.splice(-(q+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.F.push({Ib:b,A:d,Db:c,qa:e,fb:f})}delete this.qa}return!0};Jc.prototype.ra=function(){return!0};
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, function Kc(a,b,d,c){if(c)a.da("Unable to load system ROM (error "+c+": "+b+")");else{$a(a.nb,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.qa=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.g=Array(b.length),e=0;e<b.length;e++)a.g[e]=ea(b[e]);Mc(a)}} " ").replace(/ +$/,"").split(" "),a.g=Array(b.length),e=0;e<b.length;e++)a.g[e]=ea(b[e]);Lc(a)}}
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++]), function Lc(a){if(!pb(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)qb(a,"ROM size ("+p(a.g.length,8,!0)+") does not match specified size ("+p(a.i,8,!0)+")");else{var b;b=a.B;if(wb(a.G,b,a.i,a.F?1:Qb)){var d;for(d=0;d<a.g.length;d++){var c=a.G,e=b+d;c.N[(e&c.i)>>>c.$].Ia(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.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}; h-=e.ja;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.ja}}delete a.g}}E(a)}}Pa(function(){for(var a=D(document,"pdp11","rom"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Jc(c);lb(c,d)}});function Mc(a){v.call(this,"RAM",a,Mc);this.u=a.addr;this.i=a.size;this.g=!1}y(Mc);m=Mc.prototype;m.xa=function(a,b,d,c){this.G=b;this.b=d;this.D=c;E(this)};m.sa=function(a,b){b||this.reset();return!0};m.ra=function(a){return a?this.save():!0};
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}; m.reset=function(){!this.g&&this.i&&wb(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};Pa(function(){for(var a=D(document,"pdp11","ram"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Mc(c);lb(c,d)}});function Nc(a){v.call(this,"Keyboard",a,Nc,65536);E(this)}y(Nc);Nc.prototype.fa=function(){return!1};Nc.prototype.xa=function(a,b,d,c){this.C=a;this.b=d;this.D=c;this.ga=null};
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(){}; Pa(function(){for(var a=D(document,"pdp11","keyboard"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Nc(c);lb(c,d)}});function Oc(a){v.call(this,"Debugger",a,Oc);this.O=this.ga=this.I=0;this.R=!1;this.u=-1;this.i=[];this.T={}}y(Oc);var Pc={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
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 Qc(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 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; 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;
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 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, 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++],u=n.length;k.length&&Pc[n]<Pc[k[k.length-1]]&&Rc(g,k,1);k.push(n);b=b.substr(q+u)}Rc(g,k)&&1==g.length||(f=!0);f?d&&a.j("error parsing '"+h+"' at character "+(h.length-b.length)):(c=g.pop(),d&&Vc(a,null,
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} 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.O-a.ga}if(null==e)break;d=d.replace(c[0],e.toString())}return d}
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 Uc(a,b,d,c){var e;null!=b?(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 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 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.j((null!=b?b+": ":"")+c);return e}
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); function Wc(a,b){if(b)return Vc(a,b,a.T[b]);var d=0;for(b in a.T)Vc(a,b,a.T[b]),d++;return 0<d}function Xc(a){Oc.call(this,a);this.L=W();this.na=W();this.P=W();this.F=[];this.g=this.M=this.B=[];Yc(this);this.ba=0;Zc(this);this.ia=[];$c(this,a.messages);this.la=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)})}y(Xc,Oc);
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(" "), var ad={"?":"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"},bd="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(" "),
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, cd={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,4096]},65472:{16:[56,
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], 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],2:[75],4:[26],5:[70],
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; 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=Xc.prototype;
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.xa=function(a,b,d,c){this.G=b;this.b=d;this.C=a;(a=cc(a,"messages"))&&$c(this,a);this.Ca=cd;dd(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=yb[d],n&&c.j(p(n.id)+" %"+p(g<<c.G.$)+" %%"+p(n.A)+" "+r(n.Sa)+" "+r(n.size)+
" "+l),d!=Qb&&(d=-1),l=0);a+=c.G.ka;g++}}});E(this)}; " "+l),d!=Pb&&(d=-1),l=0);a+=c.G.ja;g++}}});E(this)};
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= m.fa=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="",fc(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,Ja(d,function(){if(c.Z){var a=c.Z.value;c.Z.value=
"";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}; "";fc(c,a,!0);return!0}return!1}),!0;case "step":return this.J[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.Z&&this.Z.focus()};function X(a){a=a&&a.A;null==a&&(a=-1);return a}m.Ta=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&&ed(a,b));return d};m.ua=function(a,b){var d=65535,c=X(a);-1!==c&&(d=zb(this.G,c),b&&ed(a,b));return d};
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]}} m.eb=function(a,b,d){var c=X(a);if(-1!==c){var e=this.G;e.N[(c&e.i)>>>e.$].Ia(c&e.g,b&255,c);d&&ed(a,d);H(this.b,!0)}};m.yb=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].xb(f,b&65535,c):(e.N[h++].Ia(f,b&255,c),e.N[h&e.F].Ia(0,b>>8&255,c+1));d&&ed(a,d);H(this.b,!0)}};function W(a){return{A:a,ma:!1}}function fd(a){return[a.A,a.ma]}function gd(a){return{A:a[0],ma:a[1]}}
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)} function Y(a,b,d){var c;d=(d?a.L:a.na).A;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.F.length;d++){var f=a.F[d].qa[c];if(void 0!==f){c=f.o;void 0!==c&&(e=W(c));break}}if(c=e)return c;d=Sc(a,b,void 0)}null!=d&&(c=W(d));return c}function hd(a,b,d){d&&(d=d.match(/(['"])(.*?)\1/))&&(b.zb=Qc(a,b.wb=d[2]))}function ed(a,b){null!=a.A&&(a.A+=b||1)}
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 $c(a,b){a.D=a;a.X=a.Ab=536870912;a.ca=null;a.ea=[];var d=Qc(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(d.length)for(var c in F){var e;a:if(e=void 0,Array.prototype.indexOf)e=d.indexOf(c,e);else{e=e||0;0>e&&(e+=d.length);0>e&&(e=0);for(var f=d.length;e<f;e++)if(e in d&&d[e]===c)break a;e=-1}0<=e&&(a.X|=F[c],a.j(c+" messages enabled"))}}function dd(a,b){for(var d in F)if(64==F[d]){a.ia[d]=b;break}}
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.message=function(a,b){b&&(a+=" at "+p(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;yc(d);d.ca=0;H(d)}};
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 Zc(a){var b;if(Hc(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(!id(this))return!1;this.b.Ba(a);return!0};
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.Ha=function(a,b,d){if(!id(this))return!1;this.I=0;a||Hc(this)&&Ic(this,this.b.f[7],0);try{var c=this.b.Ha(a);0<c&&(this.I+=c,kc(this.b,c,!0),gc(this.b,c),this.O++)}catch(e){"number"!=typeof e&&(this.I=0,qb(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?jd(this):kd(this)};
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}; function id(a){var b;if(b=a.b&&pb(a.b))b=a.b,b.w.W?b=!0:(b.j(b.toString()+" not powered"),b=!1);b&&!ob(a.b)?(a=a.b,a.w.error?(a.j(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.j(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Zc(this);this.O=this.ga=0;this.ca=null;this.I=0;this.L=W(this.b.f[7]);this.w.Y=!1;ld(this);a||this.ha()};
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)}; m.save=function(){var a=new I(this);J(a,0,fd(this.L));J(a,1,fd(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=gd(a[b++]),this.P=gd(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.Ka=a;this.La=b};
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.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.Ka,e=0<c?Math.round(1E3*this.I/c):0,d=d+" (";Hc(this)&&(d+=this.O+" opcodes, ",this.ga-=this.O,this.O=0);d+=this.I+" cycles, "+c+" ms, "+e+" hz)"}else mb(this,-2147483648)&&(d+=" (use the 't' command to execute blocked faults)");this.j(d)}this.ha(!0);this.Ra();ld(this,this.b.f[7])}};function Hc(a){return 1<a.g.length||!!a.ba}
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 Ic(a,b,d){var c=a.b;if(0<d&&(a.ba&&!--a.ba||Yb(a,b,1,a.g)))return!0;0<=d&&a.U.length&&(a.O++,null!=zb(a.G,b)&&(b=a.K[a.V],b.A=c.f[7],b.ma=!1,++a.V==a.K.length&&(a.V=0)));return!1}function Yc(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;Zb(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,Zb(c.N[X(d)>>>c.$],!0);a.B=["bw"];a.oa=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} m.va=function(a,b,d){var c=!0;d||md(this,a,b,!1,!0);if(a!=this.g){var e=X(b);if(-1===e)this.j("invalid address: "+p(b.A,4)),c=!1;else{var f=this.G;f.N[e>>>f.$].va(e&f.g,a==this.B)}}c&&(a.push(b),d?b.ma=!0:(nd(this,a,a.length-1,"set"),Zc(this)));return c};function md(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.ma)){f=!0;g.ma||e||nd(a,b,h,"cleared");b.splice(h,1);b!=a.g&&(c=a.G,Zb(c.N[d>>>c.$],b==a.B));g.ma||Zc(a);break}}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 od(a,b){for(var d=1;d<b.length;d++)nd(a,b,d);return b.length-1}function nd(a,b,d,c){d=b[d];a.j(b[0]+" "+p(d.A,4)+(c?" "+c:d.wb?' "'+d.wb+'"':""))}function ld(a,b){if(void 0!==b)Yb(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.ma){if(!md(a,a.g,c,!0))break;d=0}}}
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} function Yb(a,b,d,c,e){var f=!1;if(!a.oa++)for(var h=1;!f&&h<c.length;h++){var g=c[h];if(!e||g.ma)for(var k=X(g),l=0;l<d;l++)if(b+l==k){var n,f=!0;g.ma&&(md(a,c,g,!0),e=!0);if(n=g.zb){for(var f=!1,q=0;q<n.length;q++)if(!pd(a,n[q],!0)){if(n[q].indexOf("if")){f=!0;break}for(var u=q+1;u<n.length&&n[u].indexOf("else");u++)q++;if(u==n.length){f=!0;break}}a.b.w.Y||(f=!0)}if(f){e||nd(a,c,h,"hit");break}}}a.oa--;return f}
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 qd(a,b,d,c){var e=W(b.A),f=a.ua(b,2),h,g;for(g in a.Ca)if(h=a.Ca[g][f&g])break;h||(h=[0]);g="";for(var k=bd[h[0]],l=h.length-1,n=1;n<=l;n++){var q=h[n];if(void 0!==q){var u;u=a;var C=q,q=b,z="";if(C&4096)z=r(q.A+((f&255)<<24>>24)&65535);else{var za=f&C;C&4032&&(za>>=6,C>>=6);if(C&63){var C=void 0,w=za&7;switch(za&56){case 0:z="R"+w;break;case 1:z="@R"+w;break;case 2:7>w?z="(R"+w+")+":(C=u.ua(q,2),z="#"+r(C));break;case 3:7>w?z="@(R"+w+")+":(C=u.ua(q,2),z="@#"+r(C));break;case 4:z="-(R"+w+
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} ")";break;case 5:z="@-R("+w+")";break;case 6:C=u.ua(q,2);z=r(C)+(7>w?"(R"+w+")":"(PC)");break;case 7:C=u.ua(q,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=p(e.A,4)+" ";if(-1!==e.A&&-1!==b.A){do if(f+=p(a.Ta(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.Ea?h+("cycles="+hc(a.b).toString()+" cs="+p(a.b.Na)):h+(null!=c?"="+c.toString():""));return h}
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 rd(a,b){var d;switch(b){case "N":d=0;break;case "Z":d=a.b.ka&255?0:4;break;case "C":d=a.b.ka&256?1:0;break;default:d=0}return b.charAt(0)+(d?"1":"0")+" "}function Qd(a,b){var d="",c=a.b;8>b?d=(6>b?"R"+b:6==b?"SP":"PC")+("="+p(c.f[b],4)):13>b?d="A"+(b-8)+"="+p(c.bb[b-8],4):16<=b&&20>b?d="S"+(b-16)+"="+p(c.Aa[b-16],4):20==b&&(d="PS="+p(c.H&-14|0|(c.ka&255?0:4)|(c.ka&256?1:0),4));d&&(d+=" ");return d}m.hb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
")";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 Rd(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.Db;if(e>=h&&e<h+g){e=sa(f.fb,[e-h],a.hb);0<=e?Sd(a,b,e,c):d&&(e=~e,Sd(a,b,e-1,c),Sd(a,b,e,c));break}}return c}function Sd(a,b,d,c){var e={},f=a.F[b].fb,h=0,g=null;0<=d&&d<f.length&&(h=f[d][0],g=f[d][1]);g&&(e=a.F[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)}
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 Td(a,b){var d=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(d){if(!d[1])return Wc(a)||a.j("no variables"),!0;if(!d[2])return Wc(a,d[1]);if(!d[3])return delete a.T[d[1]],!0;var c=Sc(a,d[3]);return void 0!==c?(a.T[d[1]]=c,!0):!1}a.j("invalid assignment:"+b);return!1}
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} function Ud(a,b,d){var c=null;if(b=Y(a,b,!0)){var e=Rd(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.A-e[1])&&(h=" + "+r(f)),f=e[0]+" ("+p(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]+" ("+p(e[5],4)+")"+h,d&&a.j(f),c||(c=f))}else d&&a.j("no symbols")}return c}
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 jd(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=Sc(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.ka=g?c.ka|256:c.ka&255;break;case "ZF":c.ka=g?c.ka&
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& -256:c.ka|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:")}f="";for(e=0;6>e;e++)f+=Qd(a,e);f=f+"\n"+(Qd(a,6)+Qd(a,7));f+=rd(a,"T")+rd(a,"N")+rd(a,"Z")+rd(a,"V")+rd(a,"C");a.j(f);d&&(a.L=W(c.f[7]),kd(a,p(a.L.A,4)))}}function Vd(a,b){b=oa(b);var d=b.match(/^(['"])(.*?)\1$/);d?a.j(d[2]):Sc(a,b,!0)}
-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)})} function Wd(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(){H(a.b);nb(a,!1)})}
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++}}} function kd(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=ob(a,!1)||a.S?a.I:null;var h=null!=f?"cycles":null,g=Rd(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=qd(a,b,h,f);a.j(f);a.L=b;e-=b.A-k;d++}}}
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= function pd(a,b,d){var c=!0;try{b.length&&"end"!=b?d||a.j(">> "+b):(a.R&&(a.j("ended assemble at "+p(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(pb(a)&&0<b.length){a.R&&(b="a "+p(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=
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)"); n,void 0===f[2])a.j("begin assemble at "+p(n.A,4)),a.R=!0,H(a.b);else{var q;a.j("not supported yet");q=[];if(q.length){for(var u=0;u<q.length;u++)a.eb(n,q[u],1);a.j(qd(a,a.P))}}break;case "b":a:{var C=f[0],z=f[1],za=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)");
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): else{var w=C.charAt(1);if("l"==w){var Aa=0,Aa=Aa+od(a,a.g),Aa=Aa+od(a,a.M);(Aa+=od(a,a.B))||a.j("no breakpoints")}else if("n"==w)a.ba=Uc(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?(Yc(a),a.j("all breakpoints cleared")):md(a,a.g,O)||md(a,a.M,O)||md(a,a.B,O)||a.j("breakpoint missing: "+p(O.A,4)):null!=O.A&&(hd(a,O,za),"p"==w?a.va(a.g,O):"r"==w?a.va(a.M,O):"w"==w?a.va(a.B,O):
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"== a.j("unknown breakpoint command: "+w))}}}break;case "c":a.wa&&(a.wa.value="");break;case "d":a:{var Ba,Ca=f[0],Z=f[1],pa=f[2],pe=f[3];if("?"==Z){var aa="";for(Ba in F)a.ia[Ba]&&(aa&&(aa+=","),aa+=Ba);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"==
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= Z){var sd=Xd(a.C,!0);"console"==pa?console.log(sd):(a.wa&&(a.wa.value=""),a.j(sd))}else if("symbols"==Z)for(var mc=0;mc<a.F.length;mc++){var nc=a.F[mc],Da;for(Da in nc.qa)if("."!=Da.charAt(0)){var td=nc.qa[Da].o;if(void 0!==td){var ud=nc.qa[Da].l;ud&&(Da=ud);a.j(p(td,4)+" "+Da)}}}else{if("d"==Ca){for(Ba in F)if(f[1]==Ba){var vd=a.ia[Ba];vd?(f.shift(),f.shift(),vd(f)):a.j("no dump registered for "+Z);break a}Z||(Ca=a.Ma||"db")}else a.Ma=Ca;if("dh"==Ca){var wd=Z,xd=pa,yd="",zd=0,K=a.V,ba=a.K;if(ba.length){var P=
+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+ +wd||a.pa,Ea=+xd||10;isNaN(P)?P=Ea:yd="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 oc=[];"call"==xd&&(Ea=1E5,oc=["CALL"]);for(void 0!==wd&&a.j(P+" instructions earlier:");0<Ea&&K!=a.V;){var Ad=ba[K++];if(null==Ad.A)break;var bb=W(Ad.A),qe=P--,Bd=qd(a,bb,"history",qe);(!oc.length||0<=Bd.indexOf(oc[0]))&&a.j(Bd);bb.Xa&&(K+=bb.Xa,Ea-=bb.Xa,P-=bb.Xa);K>=ba.length&&(K=0);a.pa=P;zd++;Ea--}}zd||(a.j("no "+yd+
"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&& "history available"),a.pa=void 0)}else{var Bb=Y(a,Z);if(Bb){var Cb=0;pa&&("l"==pa.charAt(0)&&(pa=pa.substr(1)||pe),Cb=Uc(a,pa)>>>0,65536<Cb&&(Cb=65536));for(var qa="",Db="dd"==Ca?4:"dw"==Ca?2:1,Eb=Db*Cb||128,re=Eb+15>>4||1;re--&&0<Eb;){var Fb=0,pc=0,cb,db="",qc="",Z=p(Bb.A,4);for(cb=16;0<cb&&0<Eb;cb--){var Gb=a.Ta(Bb,1),Fb=Fb|Gb<<(pc++<<3);pc==Db&&(db+=p(Fb,2*Db),db+=1==Db?9==cb?"-":" ":" ",Fb=pc=0);qc+=32<=Gb&&128>Gb?String.fromCharCode(Gb):".";Eb--}qa&&(qa+="\n");qa+=Z+" "+db+(0==cb?" "+qc:"")}qa&&
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); a.j(qa);a.na=Bb}}}}break;case "e":if("else"==f[0])break;var Hb=1,Cd=255,Dd=a.Ta,Ed=a.eb;"ew"==f[0]&&(Hb=2,Cd=65535,Dd=a.ua,Ed=a.yb);var Fd=Hb<<1,Gd=f[1];if(null==Gd)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 Ib=Y(a,Gd);if(Ib)for(var Jb=2;Jb<f.length;Jb++){var eb=Sc(a,f[Jb]);if(void 0===eb){a.j("unrecognized value: "+f[Jb]);break}eb&~Cd&&a.j("warning: "+p(eb)+" exceeds "+Hb+"-byte value");var se=Dd.call(a,Ib);
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= a.j("changing "+p(Ib.A,4)+" from "+p(se,Fd,!0)+" to "+p(eb,Fd,!0));Ed.call(a,Ib,eb,Hb)}}break;case "g":a:{var Hd=f[1],te=b;if(void 0!==Hd){var rc=Y(a,Hd,!0);if(!rc)break a;hd(a,rc,te);a.va(a.g,rc,!0)}a.Ba(!0)||d||a.j("cpu busy or unavailable, run command ignored")}break;case "h":a:{var sc;if(a.w.Y)sc="halting",a.aa();else{if(ob(a,!0))break a;sc="already halted"}d||a.j(sc)}break;case "i":if("if"==f[0]){var tc;var fb=b.substr(2),fb=oa(fb);Sc(a,fb)?(d||a.j("true: "+fb),tc=!0):(d||a.j("false: "+fb),tc=
!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== !1);tc||(c=!1)}break;case "k":var ue=f[0];if("?"==f[1])a.j("stack trace commands:"),a.j("\tk\tshow frame addresses"),a.j("\tks\tshow symbol information");else{var uc=0,Id=W(),gb=W(a.b.f[6]);for(a.j("stack trace for "+p(gb.A,4));10>uc;){for(var ra=null,ve=256;65536>gb.A>>>0;){Id.A=a.ua(gb,2);if(null==gb.A||!ve--)break;for(var we=a,Kb=Id,Jd=null,hb=Kb.A,Kd=hb,vc=1;6>=vc&&hb;vc++){if(2<vc){Kb.A=hb;var Lb=qd(we,Kb);if(0<=Lb.indexOf("CALL")){var Ld=Lb.indexOf(" ");if(hb+(Lb.indexOf(" ",Ld+1)-Ld-1)/2==
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= Kd){Jd=Lb;break}}}hb--}Kb.A=Kd;if(ra=Jd)break}if(!ra||null==ra)break;var Md=null;if("ks"==ue){var Nd=ra.match(/[0-9A-F]+$/);Nd&&(Md=Ud(a,Nd[0]))}ra=na(ra,50)+" ;"+(Md||"stack="+p(gb.A,4));a.j(ra);uc++}uc||a.j("no return addresses found")}break;case "l":if("ln"==f[0]){Ud(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=
"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!== "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 wc=0;wc<a.ea.length;wc++)a.j(a.ea[wc]);a.ea=[]}}var xe=0,ia="";for(ca in F)if(!A||A==ca){var ye=!!(a.X&F[ca]);if(null===da||da==ye)ia&&(ia+=","),++xe%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!==
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; da?da?"messages on: ":"messages off: ":"message categories:\n\t")+(ia||"none"));Zc(a)}break;case "p":if("print"==f[0]){Vd(a,b.substr(5));break}var ze="pr"==f[0]?1:0;if(a.S)a.j("step in progress");else{var Od=W(a.b.f[7]);a.Ta(Od);a.S?(a.va(a.g,Od,!0),a.Ba()||(a.C&&a.C.Ra(),a.S=0)):Wd(a,ze?"tr":"t")}break;case "r":if("reset"==b){a.C&&a.C.reset();break}jd(a,f);break;case "s":a:switch(f[1]){case "cs":var ib;void 0!==f[3]&&(ib=+f[3]);switch(f[2]){case "int":a.b.Fa=ib;break;case "start":a.b.Oa=ib;break;
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 #"); case "stop":a.b.Ga=ib;break;default:a.j("unknown cs option");break a}void 0!==ib&&ec(a.b);a.j("checksums "+(a.b.w.Ea?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(jc(a.b,+f[2])||a.j("warning: using 1x multiplier, previous target not reached"));a.j("target speed: "+(a.b.ya.toFixed(2)+"Mhz")+" ("+a.b.za+"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 #");
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"); a.j("\tsp #\t\tset speed multiplier to #");break;default:f[1]&&a.j("unknown option: "+f[1])}break;case "t":Wd(a,f[0],f[1]);break;case "u":kd(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Td(a,b.substr(3))||(c=!1);break}a.j("PDP11js version 1.30.0 ("+a.b.rb+",RELEASE"+(rb?",TYPEDARRAYS":",LONGARRAYS")+")");a.j(window?window.navigator.userAgent:"");break;case "?":if(f[1]){Vd(a,b.substr(1));break}var jb="commands:",xc;for(xc in ad)jb+="\n"+na(xc,9)+ad[xc];Hc(a)||(jb+="\nnote: history disabled if no exec breakpoints");
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)}}); a.j(jb);break;default:a.j("unknown command: "+b),c=!1}}}catch(Pd){a.j("debugger error: "+(Pd.stack||Pd.message)),c=!1}return c}function fc(a,b,d){b=Qc(a,b,d);for(var c in b)if(!pd(a,b[c]))return!1;return!0}Pa(function(){for(var a=D(document,"pdp11","debugger"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Xc(c);lb(c,d)}});
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 Yd(a,b,d){v.call(this,"Computer",a,Yd,67108864);this.w.W=!1;Zd(this,b);this.M=cc(this,"autoPower",a);this.u=0;this.T=a.busWidth||a.buswidth;this.g=$d;this.K=null;this.F=this.R=!1;this.U=cc(this,"url")||"";(Math.random()+.1).toString(36);this.i=ae(this);if(this.b=kb("CPU",this.id)){this.D=kb("Debugger",this.id);this.G=new ub({id:this.nb+".bus",busWidth:this.T},this.b,this.D);var c,e=ab(this.id);if((this.C=kb("Panel",this.id))&&this.C.wa)for(b=0;b<e.length;b++)c=e[b],c.da=this.C.da,c.j=this.C.j,
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= c.wa=this.C.wa;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.xa&&c.xa(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=cc(this,"state")||(f=!0,a.state))b=this.O=a,f||(this.F=!0,this.g=$d),this.g&&(this.L=
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; new I(this,"1.30.0"),be(this.L)?b=null:delete this.L);!b&&this.g&&(b=ce(this))&&(this.F=!0);if(b){var h=this;va(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&&de(this,this.Pa)}else t("Unable to find CPU component")}y(Yd);var $d=0;
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)} function Zd(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 cc(a,b,d){var c=b.toLowerCase(),c=Ua[b]||Ua[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 de(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(){de(a,b,d)});return}}b.call(a,d)}
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 ee(a,b){var d=new I(a,"1.30.0","validate");if(be(d)&&fe(d)){var c=ge(d,"timestamp"),e=b?ge(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=Yd.prototype;
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.Pa=function(a){void 0===a&&(a=this.g||(this.K?1:$d));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>$d){if(be(c,this.K)){this.B=new I(this,"1.30.0","failsafe");be(this.B)&&(he(this,c),a=2,ie(this.B));J(this.B,"timestamp",ua());je(this.B);var e=this.g&&!this.F;if(1==a||wa("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(d=fe(c)){var f=ge(c,"code"),h=ge(c,"data");f&&("ok"==f?be(c,h):("error"==f&&
"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)}}; "no machine state"!=h?(this.da("Error: "+h),"unable to verify user"==h&&(Ga("user",""),this.i=null)):this.j(f+": "+h),ie(c),be(c)?(d=fe(c),e=!0):d=!1))}e&&ee(this,d?c:null)}else 2==a&&c.clear()}else ee(this);delete this.K;delete this.L}e=ab(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(d=ke(this,h,c,b,d));b=[c,a,d];-1!=a?de(this,this.jb,b):this.jb(b)}};
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 ke(a,b,d,c,e){if(!b.w.W){b.w.W=!0;if(b.sa){var f=null;e&&((f=ge(d,b.id))||(f=ge(d,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.sa(f,c)&&f&&(t("Unable to restore state for "+b.type),a.O&&!a.R?(d.clear(),a.g=$d,window&&window.location.reload()):a.P=!0,b.sa(null),e=!1)}if(!c&&b.mb)for(a=b.mb.split("|"),d=0;d<a.length;d++)b.status(a[d])}return e}
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}; m.jb=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&&(ke(this,this.b,b,d,a),this.b.Ja());this.P&&(he(this,b),b.clear());!d&&this.B&&(this.B.clear(),delete this.B);this.u=0};
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)}} function he(a,b){if(wa("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;va("http://www.pcjs.org/api/v1/report",e,!0)}}
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&& function Xd(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.ra&&(d&&a.b.aa(),c=a.b.ra(b,d),"object"===typeof c&&J(f,a.b.id,c),d&&(a.b.w.W=!1,!1===c&&(e=null)));for(var g=ab(a.id),k=0;k<g.length;k++){var l=g[k];l.w.W&&(l.ra&&(c=l.ra(b,d),"object"===typeof c&&J(f,l.id,c)),d&&
(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())}}; (l.w.W=!1,!1===c&&(e=null)))}e&&(d?(g=c=!1,b?(a.i&&le(a,a.i,f.toString()),je(h)&&je(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&&mb(this,0)&&this.D.message("Resetting "+this.G.type,void 0),this.G.reset());for(var a=ab(this.id),b=0;b<a.length;b++){var d=a[b];d!==this&&d!==this.G&&d.reset&&(this.D&&mb(this,0)&&this.D.message("Resetting "+d.type,void 0),d.reset())}};
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)}}; 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)}};
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]= m.fa=function(a,b,d){var c=this;switch(b){case "power":return this.J[b]=d,d.onclick=function(){c.u||(c.w.W?Xd(c,!1,!0):de(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=wa("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Xd(c,a,!0);!a&&c.O?window&&window.location.reload():c.Pa($d)}else c.reset(),c.b&&c.b.Ja()},!0;case "save":if(ja()){d.parentNode.removeChild(d);break}this.J[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}; d;d.onclick=function(){var a=ae(c,!0);if(a){var b=!!(c.g&&!c.I||c.O),d=Xd(c,b);b?le(c,a,d):c.da("Resume disabled, machine state not saved")}};return!0}return!1};
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} function ae(a,b){var d=a.i;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=me(a,d))||a.da("The user ID is invalid."))):b&&a.da("Browser local storage is not available"));return d}
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} function me(a,b){a.i=null;var d=va(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.i=d.data)}catch(e){t(e.message+" ("+c+")")}return a.i}function ce(a){var b=null;a.i&&(b=ka()+"/api/v1/user?req=load&user="+a.i+"&state="+ne(a,"1.30.0"));return b}
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(){}; function le(a,b,d){if(d){var c={req:"store"};c.user=b;c.state=ne(a,"1.30.0");c.data=d;b=va(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),Ga("user",""),a.i=null)}}m.Ra=function(){};
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)}}); m.ha=function(a){this.b&&this.b.ha(a);this.C&&this.C.ha(a)};Pa(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 Yd(h,c,!0);lb(h,f);h.M&&de(h,h.Pa)}});Ka.show.push(function(){for(var a=D(document,"pdp11","computer"),b=0;b<a.length;b++){var d=B(a[b]);(d=kb("Computer",d.id))&&d.V&&!d.w.W&&d.Pa(-1)}});
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} Ka.exit.push(function(){for(var a=D(document,"pdp11","computer"),b=0;b<a.length;b++){var d=B(a[b]);(d=kb("Computer",d.id))&&d.w.W&&Xd(d,!(!d.g||d.I),!0)}});function I(a,b,d){this.id=a.id;this.key=ne(a,b,d);this.D=a.D;ie(this,a.Gb)}function ne(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}}}; 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){ie(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 ie(a,b){a[a.id]={};b&&J(a,"parms",b);a.b=!1}function je(a){var b=!0;if(ya()){var d=JSON.stringify(a[a.id]);Ga(a.key,d)||(t("Unable to store "+d.length+" bytes in browser local storage"),b=!1)}return b}function fe(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(d){t(d.message||d),b=!1}return b}function be(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:ya()&&(b=Fa(a.key))?(a[a.id]=b,a.b=!0):!1}function ge(a,b){return a[a.id][b]||null}function J(a,b,d){try{a[a.id][b]=d}catch(c){}}var oe=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 Ae(a,b,d,c,e,f){e("Loading "+a+"...");va(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Be(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){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"), function Be(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"),
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)} 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?Ce(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 Ce(a,b,d){var c;if(c=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=c[2];b("Loading "+e+"...");va(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);Ce(a,b,d)}})}else d(a,null)}
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|| function De(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&&(--oe||Ra(!0));k=!1}var h,g,k=!0;oe++;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||
(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: "+ (d="/versions/pdp11/1.30.0/components.xsl");l=function(c,g){g?Ae(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,--oe||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),--oe||Ra(!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(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;})(); a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(c)}):f(c)};"<"!=b.charAt(0)?Ae(b,a,c,!0,e,l):Be(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){Ra(!1);return De(a,b,d,c)};window.enableEvents=Ra;window.sendEvent=Sa;})();