More PDP-11 debugger work
This commit is contained in:
parent
d8856ac8bd
commit
75918a6edc
3 changed files with 335 additions and 449 deletions
|
|
@ -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-");
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -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={"&":"&","<":"<",">":">",'"':""","'":"'"};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={"&":"&","<":"<",">":">",'"':""","'":"'"};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;})();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue