Assorted improvements to new opcode decoders
This commit is contained in:
parent
a7148a6eb3
commit
f82d6f1bfa
13 changed files with 861 additions and 610 deletions
|
|
@ -32,10 +32,10 @@
|
|||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
float: left;
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
}
|
||||
.pcjs-controls textarea {
|
||||
font-family: Monaco, monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: x-small;
|
||||
}
|
||||
.pcjs-fieldset {
|
||||
|
|
@ -44,14 +44,14 @@
|
|||
padding: 0;
|
||||
}
|
||||
.pcjs-flag {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.pcjs-register {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
|
|
|
|||
|
|
@ -1088,7 +1088,7 @@ CPUPDP11.prototype.runCPU = function(fUpdateFocus)
|
|||
}
|
||||
catch(exception) {
|
||||
if (typeof exception != "number") throw exception;
|
||||
if (DEBUG) this.println("CPU exception " + str.toHexWord(exception));
|
||||
if (DEBUG) this.println("CPU exception: " + str.toHexWord(exception));
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -138,6 +138,7 @@ PDP11.opADC = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -152,6 +153,7 @@ PDP11.opADCB = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -178,6 +180,7 @@ PDP11.opASH = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -192,6 +195,7 @@ PDP11.opASHC = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -206,6 +210,7 @@ PDP11.opASL = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -220,6 +225,7 @@ PDP11.opASLB = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -234,6 +240,7 @@ PDP11.opASR = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -248,6 +255,7 @@ PDP11.opASRB = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -262,6 +270,7 @@ PDP11.opBCC = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -276,6 +285,7 @@ PDP11.opBCS = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -362,6 +372,7 @@ PDP11.opBEQ = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -376,6 +387,7 @@ PDP11.opBGE = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -390,6 +402,7 @@ PDP11.opBGT = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -404,6 +417,7 @@ PDP11.opBHI = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -418,6 +432,7 @@ PDP11.opBLE = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -432,6 +447,7 @@ PDP11.opBLOS = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -446,6 +462,7 @@ PDP11.opBLT = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -460,6 +477,7 @@ PDP11.opBMI = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -474,6 +492,7 @@ PDP11.opBNE = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -488,6 +507,7 @@ PDP11.opBPL = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -502,6 +522,7 @@ PDP11.opBPT = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -516,6 +537,7 @@ PDP11.opBR = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -530,6 +552,7 @@ PDP11.opBVC = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -544,6 +567,7 @@ PDP11.opBVS = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -555,9 +579,7 @@ PDP11.opBVS = function(opCode)
|
|||
*/
|
||||
PDP11.opCLR = function(opCode)
|
||||
{
|
||||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.updateNZCFlags(this.writeWordByMode(opCode, 0));
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -569,9 +591,55 @@ PDP11.opCLR = function(opCode)
|
|||
*/
|
||||
PDP11.opCLRB = function(opCode)
|
||||
{
|
||||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.updateNZCFlags(this.writeByteByMode(opCode, 0, PDP11.WRITE.ZERO));
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opCLC(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.opCLC = function(opCode)
|
||||
{
|
||||
this.clearCF();
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opCLN(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.opCLN = function(opCode)
|
||||
{
|
||||
this.clearNF();
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opCLV(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.opCLV = function(opCode)
|
||||
{
|
||||
this.clearVF();
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opCLZ(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.opCLZ = function(opCode)
|
||||
{
|
||||
this.clearZF();
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -583,9 +651,10 @@ PDP11.opCLRB = function(opCode)
|
|||
*/
|
||||
PDP11.opCLx = function(opCode)
|
||||
{
|
||||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
if (opCode & 0x1) this.clearCF();
|
||||
if (opCode & 0x2) this.clearVF();
|
||||
if (opCode & 0x4) this.clearZF();
|
||||
if (opCode & 0x8) this.clearNF();
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -638,6 +707,7 @@ PDP11.opCOM = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -652,6 +722,7 @@ PDP11.opCOMB = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -666,6 +737,7 @@ PDP11.opDEC = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -680,6 +752,7 @@ PDP11.opDECB = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -694,6 +767,7 @@ PDP11.opDIV = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -708,6 +782,7 @@ PDP11.opEMT = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -722,6 +797,7 @@ PDP11.opHALT = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -736,6 +812,7 @@ PDP11.opINC = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -750,6 +827,7 @@ PDP11.opINCB = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -764,6 +842,7 @@ PDP11.opIOT = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -778,6 +857,7 @@ PDP11.opJSR = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -792,6 +872,7 @@ PDP11.opMARK = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -806,6 +887,7 @@ PDP11.opMFPD = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -820,6 +902,7 @@ PDP11.opMFPI = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -834,6 +917,7 @@ PDP11.opMFPS = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -848,6 +932,7 @@ PDP11.opMFPT = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -872,10 +957,7 @@ PDP11.opMOV = function(opCode)
|
|||
PDP11.opMOVB = function(opCode)
|
||||
{
|
||||
var data = this.readByteByMode(opCode >> PDP11.SRCMODE.SHIFT);
|
||||
/*
|
||||
* When dst is a register, data must be sign-extended; otherwise, sign-extension is unnecessary (but harmless).
|
||||
*/
|
||||
this.updateNZFlags(this.writeByteByMode(opCode, (data & 0x80)? data | 0xff00 : data) << 8);
|
||||
this.updateNZFlags(this.writeByteByMode(opCode, data, PDP11.WRITE.SIGNEXT) << 8);
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -890,6 +972,7 @@ PDP11.opMTPD = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -904,6 +987,7 @@ PDP11.opMTPI = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -918,6 +1002,7 @@ PDP11.opMTPS = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -932,6 +1017,7 @@ PDP11.opMUL = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -946,6 +1032,7 @@ PDP11.opNEG = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -960,6 +1047,7 @@ PDP11.opNEGB = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -982,9 +1070,11 @@ PDP11.opNOP = function(opCode)
|
|||
*/
|
||||
PDP11.opRESET = function(opCode)
|
||||
{
|
||||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
if (!(this.PSW & PDP11.PSW.CMODE)) {
|
||||
this.resetRegs();
|
||||
this.bus.reset();
|
||||
// display.data = this.regsGen[0]; // TODO: Review
|
||||
}
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -999,6 +1089,7 @@ PDP11.opROL = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1013,6 +1104,7 @@ PDP11.opROLB = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1027,6 +1119,7 @@ PDP11.opROR = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1041,6 +1134,7 @@ PDP11.opRORB = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1055,6 +1149,7 @@ PDP11.opRTI = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1069,6 +1164,7 @@ PDP11.opRTT = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1083,6 +1179,7 @@ PDP11.opSBC = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1097,6 +1194,55 @@ PDP11.opSBCB = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opSEC(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.opSEC = function(opCode)
|
||||
{
|
||||
this.setCF();
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opSEN(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.opSEN = function(opCode)
|
||||
{
|
||||
this.setNF();
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opSEV(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.opSEV = function(opCode)
|
||||
{
|
||||
this.setVF();
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opSEZ(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.opSEZ = function(opCode)
|
||||
{
|
||||
this.setZF();
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1108,9 +1254,10 @@ PDP11.opSBCB = function(opCode)
|
|||
*/
|
||||
PDP11.opSEx = function(opCode)
|
||||
{
|
||||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
if (opCode & 0x1) this.setCF();
|
||||
if (opCode & 0x2) this.setVF();
|
||||
if (opCode & 0x4) this.setZF();
|
||||
if (opCode & 0x8) this.setNF();
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1125,6 +1272,7 @@ PDP11.opSOB = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1151,6 +1299,7 @@ PDP11.opSXT = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1165,6 +1314,7 @@ PDP11.opTRAP = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1179,6 +1329,7 @@ PDP11.opTST = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1193,6 +1344,7 @@ PDP11.opTSTB = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1207,6 +1359,7 @@ PDP11.opWAIT = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1221,6 +1374,7 @@ PDP11.opXOR = function(opCode)
|
|||
/*
|
||||
* TODO: Implement
|
||||
*/
|
||||
this.regOp = -1;
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -1232,7 +1386,7 @@ PDP11.opXOR = function(opCode)
|
|||
*/
|
||||
PDP11.opUndefined = function(opCode)
|
||||
{
|
||||
this.trap(PDP11.TRAP.RESERVED, /*010*/ 48);
|
||||
this.trap(PDP11.TRAP.RESERVED, 48);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1312,6 +1466,28 @@ PDP11.op00Xn_1170 = function(opCode)
|
|||
PDP11.aOps00Xn_1170[(opCode >> 4) & 0xf].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op00AX_1170(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op00AX_1170 = function(opCode)
|
||||
{
|
||||
PDP11.aOps00AX_1170[opCode & 0xf].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op00BX_1170(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op00BX_1170 = function(opCode)
|
||||
{
|
||||
PDP11.aOps00BX_1170[opCode & 0xf].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op000X_1170(opCode)
|
||||
*
|
||||
|
|
@ -1346,45 +1522,45 @@ PDP11.op8Xnn_1170 = function(opCode)
|
|||
};
|
||||
|
||||
/**
|
||||
* op8Ann_1170(opCode)
|
||||
* op8AXn_1170(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op8Ann_1170 = function(opCode)
|
||||
PDP11.op8AXn_1170 = function(opCode)
|
||||
{
|
||||
PDP11.aOps8AXn_1170[(opCode >> 6) & 0x3].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op8Bnn_1170(opCode)
|
||||
* op8BXn_1170(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op8Bnn_1170 = function(opCode)
|
||||
PDP11.op8BXn_1170 = function(opCode)
|
||||
{
|
||||
PDP11.aOps8BXn_1170[(opCode >> 6) & 0x3].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op8Cnn_1170(opCode)
|
||||
* op8CXn_1170(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op8Cnn_1170 = function(opCode)
|
||||
PDP11.op8CXn_1170 = function(opCode)
|
||||
{
|
||||
PDP11.aOps8CXn_1170[(opCode >> 6) & 0x3].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op8Dnn_1170(opCode)
|
||||
* op8DXn_1170(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op8Dnn_1170 = function(opCode)
|
||||
PDP11.op8DXn_1170 = function(opCode)
|
||||
{
|
||||
PDP11.aOps8DXn_1170[(opCode >> 6) & 0x3].call(this, opCode);
|
||||
};
|
||||
|
|
@ -1438,14 +1614,52 @@ PDP11.aOps00Xn_1170 = [
|
|||
PDP11.opUndefined, // 0x007n
|
||||
PDP11.opUndefined, // 0x008n
|
||||
PDP11.opUndefined, // 0x009n
|
||||
PDP11.opCLx, // 0x00An
|
||||
PDP11.opSEx, // 0x00Bn
|
||||
PDP11.op00AX_1170, // 0x00An
|
||||
PDP11.op00BX_1170, // 0x00Bn
|
||||
PDP11.opUndefined, // 0x00Cn
|
||||
PDP11.opUndefined, // 0x00Dn
|
||||
PDP11.opUndefined, // 0x00En
|
||||
PDP11.opUndefined // 0x00Fn
|
||||
];
|
||||
|
||||
PDP11.aOps00AX_1170 = [
|
||||
PDP11.opNOP, // 0x00A0
|
||||
PDP11.opCLC, // 0x00A1
|
||||
PDP11.opCLV, // 0x00A2
|
||||
PDP11.opCLx, // 0x00A3
|
||||
PDP11.opCLZ, // 0x00A4
|
||||
PDP11.opCLx, // 0x00A5
|
||||
PDP11.opCLx, // 0x00A6
|
||||
PDP11.opCLx, // 0x00A7
|
||||
PDP11.opCLN, // 0x00A8
|
||||
PDP11.opCLx, // 0x00A9
|
||||
PDP11.opCLx, // 0x00AA
|
||||
PDP11.opCLx, // 0x00AB
|
||||
PDP11.opCLx, // 0x00AC
|
||||
PDP11.opCLx, // 0x00AD
|
||||
PDP11.opCLx, // 0x00AE
|
||||
PDP11.opCLx // 0x00AF
|
||||
];
|
||||
|
||||
PDP11.aOps00BX_1170 = [
|
||||
PDP11.opNOP, // 0x00B0
|
||||
PDP11.opSEC, // 0x00B1
|
||||
PDP11.opSEV, // 0x00B2
|
||||
PDP11.opSEx, // 0x00B3
|
||||
PDP11.opSEZ, // 0x00B4
|
||||
PDP11.opSEx, // 0x00B5
|
||||
PDP11.opSEx, // 0x00B6
|
||||
PDP11.opSEx, // 0x00B7
|
||||
PDP11.opSEN, // 0x00B8
|
||||
PDP11.opSEx, // 0x00B9
|
||||
PDP11.opSEx, // 0x00BA
|
||||
PDP11.opSEx, // 0x00BB
|
||||
PDP11.opSEx, // 0x00BC
|
||||
PDP11.opSEx, // 0x00BD
|
||||
PDP11.opSEx, // 0x00BE
|
||||
PDP11.opSEx // 0x00BF
|
||||
];
|
||||
|
||||
PDP11.aOps000X_1170 = [
|
||||
PDP11.opHALT, // 0x0000
|
||||
PDP11.opWAIT, // 0x0001
|
||||
|
|
@ -1495,10 +1709,10 @@ PDP11.aOps8Xnn_1170 = [
|
|||
PDP11.opBCS, // 0x87nn
|
||||
PDP11.opEMT, // 0x88nn
|
||||
PDP11.opTRAP, // 0x89nn
|
||||
PDP11.op8Ann_1170, // 0x8Ann
|
||||
PDP11.op8Bnn_1170, // 0x8Bnn
|
||||
PDP11.op8Cnn_1170, // 0x8Cnn
|
||||
PDP11.op8Dnn_1170, // 0x8Dnn
|
||||
PDP11.op8AXn_1170, // 0x8Ann
|
||||
PDP11.op8BXn_1170, // 0x8Bnn
|
||||
PDP11.op8CXn_1170, // 0x8Cnn
|
||||
PDP11.op8DXn_1170, // 0x8Dnn
|
||||
PDP11.opUndefined, // 0x8Enn
|
||||
PDP11.opUndefined // 0x8Fnn
|
||||
];
|
||||
|
|
|
|||
|
|
@ -631,6 +631,20 @@ CPUStatePDP11.prototype.setPSW = function(newPSW)
|
|||
this.PSW = newPSW;
|
||||
};
|
||||
|
||||
/**
|
||||
* updateNZCFlags(result)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} result
|
||||
*/
|
||||
CPUStatePDP11.prototype.updateNZCFlags = function(result)
|
||||
{
|
||||
if (!(this.opFlags & PDP11.OPFLAG.SKIP_FLAGS)) {
|
||||
this.flagN = this.flagZ = this.flagC = result;
|
||||
this.flagV = 0;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* updateNZFlags(result)
|
||||
*
|
||||
|
|
@ -1218,13 +1232,12 @@ CPUStatePDP11.prototype.getAddrByMode = function(addressMode, accessFlags)
|
|||
{
|
||||
var result;
|
||||
if (!(addressMode & 0x38)) {
|
||||
return BusPDP11.MAX_ADDRESS + (addressMode & 7); // Registers have special addresses above maximum address
|
||||
result = BusPDP11.MAX_ADDRESS + (addressMode & 7); // Registers have special addresses above maximum address
|
||||
} else {
|
||||
if ((result = this.getVirtualByMode(addressMode, accessFlags)) >= 0) {
|
||||
result = this.mapVirtualToPhysical(result, accessFlags);
|
||||
}
|
||||
return result;
|
||||
var addr = this.getVirtualByMode(addressMode, accessFlags);
|
||||
result = this.mapVirtualToPhysical(addr, accessFlags);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1270,9 +1283,6 @@ CPUStatePDP11.prototype.readByteByMode = function(addressMode)
|
|||
*
|
||||
* Used whenever the dst operand (as described by addressMode) DOES need to be read before writing.
|
||||
*
|
||||
* TODO: writeWordByAddr() currently plays it safe and always masks the incoming data. Let's see if we can
|
||||
* change that to an assert(), and make sure we never give writeWordByAddr() unmasked data.
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} addressMode
|
||||
* @param {number} src
|
||||
|
|
@ -1284,7 +1294,7 @@ CPUStatePDP11.prototype.updateWordByMode = function(addressMode, src, fnOp)
|
|||
var data;
|
||||
if (!(addressMode & PDP11.OPMODE.MASK)) {
|
||||
var reg = addressMode & PDP11.OPREG.MASK;
|
||||
this.regsGen[reg] = (data = fnOp.call(this, src, this.regsGen[reg]));
|
||||
this.regsGen[reg] = (data = fnOp.call(this, src, this.regsGen[reg]) & 0xffff);
|
||||
} else {
|
||||
var addr = this.getAddrByMode(addressMode, PDP11.ACCESS.UPDATE);
|
||||
this.writeWordByAddr(addr, (data = fnOp.call(this, src, this.readWordByAddr(addr))));
|
||||
|
|
@ -1297,9 +1307,6 @@ CPUStatePDP11.prototype.updateWordByMode = function(addressMode, src, fnOp)
|
|||
*
|
||||
* Used whenever the dst operand (as described by addressMode) DOES need to be read before writing.
|
||||
*
|
||||
* TODO: writeByteByAddr() currently plays it safe and always masks the incoming data. Let's see if we can
|
||||
* change that to an assert(), and make sure we never give writeByteByAddr() unmasked data.
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} addressMode
|
||||
* @param {number} src
|
||||
|
|
@ -1311,7 +1318,7 @@ CPUStatePDP11.prototype.updateByteByMode = function(addressMode, src, fnOp)
|
|||
var data;
|
||||
if (!(addressMode & PDP11.OPMODE.MASK)) {
|
||||
var reg = addressMode & PDP11.OPREG.MASK;
|
||||
this.regsGen[reg] = (data = fnOp.call(this, src, this.regsGen[reg]));
|
||||
this.regsGen[reg] = (this.regsGen[reg] & 0xff00) | ((data = fnOp.call(this, src, this.regsGen[reg]) & 0xff));
|
||||
} else {
|
||||
var addr = this.getAddrByMode(addressMode, PDP11.ACCESS.UPDATE_BYTE);
|
||||
this.writeByteByAddr(addr, (data = fnOp.call(this, src, this.readByteByAddr(addr))));
|
||||
|
|
@ -1324,9 +1331,6 @@ CPUStatePDP11.prototype.updateByteByMode = function(addressMode, src, fnOp)
|
|||
*
|
||||
* Used whenever the dst operand (as described by addressMode) does NOT need to be read before writing.
|
||||
*
|
||||
* TODO: writeWordByAddr() currently plays it safe and always masks the incoming data. Let's see if we can
|
||||
* change that to an assert(), and make sure we never give writeWordByAddr() unmasked data.
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} addressMode
|
||||
* @param {number} data
|
||||
|
|
@ -1335,7 +1339,7 @@ CPUStatePDP11.prototype.updateByteByMode = function(addressMode, src, fnOp)
|
|||
CPUStatePDP11.prototype.writeWordByMode = function(addressMode, data)
|
||||
{
|
||||
if (!(addressMode & PDP11.OPMODE.MASK)) {
|
||||
this.regsGen[addressMode & PDP11.OPREG.MASK] = data;
|
||||
this.regsGen[addressMode & PDP11.OPREG.MASK] = data & 0xffff;
|
||||
} else {
|
||||
this.writeWordByAddr(this.getAddrByMode(addressMode, PDP11.ACCESS.WRITE), data);
|
||||
}
|
||||
|
|
@ -1343,24 +1347,29 @@ CPUStatePDP11.prototype.writeWordByMode = function(addressMode, data)
|
|||
};
|
||||
|
||||
/**
|
||||
* writeByteByMode(addressMode, data)
|
||||
* writeByteByMode(addressMode, data, writeFlags)
|
||||
*
|
||||
* Used whenever the dst operand (as described by addressMode) does NOT need to be read before writing.
|
||||
*
|
||||
* TODO: writeWordByAddr() currently plays it safe and always masks the incoming data. Let's see if we can
|
||||
* change that to an assert(), and make sure we never give writeWordByAddr() unmasked data.
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} addressMode
|
||||
* @param {number} data
|
||||
* @param {number} [writeFlags]
|
||||
* @return {number}
|
||||
*/
|
||||
CPUStatePDP11.prototype.writeByteByMode = function(addressMode, data)
|
||||
CPUStatePDP11.prototype.writeByteByMode = function(addressMode, data, writeFlags)
|
||||
{
|
||||
if (!(addressMode & PDP11.OPMODE.MASK)) {
|
||||
this.regsGen[addressMode & PDP11.OPREG.MASK] = data;
|
||||
var reg = addressMode & PDP11.OPREG.MASK;
|
||||
if (!writeFlags) {
|
||||
this.regsGen[reg] = (this.regsGen[reg] & ~0xff) | (data & 0xff);
|
||||
} else if (writeFlags & PDP11.WRITE.ZERO) {
|
||||
this.regsGen[reg] &= ~0xff;
|
||||
} else {
|
||||
this.assert(writeFlags & PDP11.WRITE.SIGNEXT);
|
||||
this.regsGen[reg] = ((data << 24) >> 24) & 0xffff;
|
||||
}
|
||||
} else {
|
||||
data &= 0xff; // we mask just in case the caller sign-extended the data
|
||||
this.writeByteByAddr(this.getAddrByMode(addressMode, PDP11.ACCESS.WRITE_BYTE), data);
|
||||
}
|
||||
return data;
|
||||
|
|
@ -1532,189 +1541,190 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
|
|||
|
||||
/*
|
||||
* TODO: Determine (later) if this.regOp is a useful (internal) register to maintain;
|
||||
* perhaps it would alleviate lots of opCode parameter-passing.
|
||||
* perhaps it would alleviate lots of opCode parameter-passing. In the meantime, we use
|
||||
* it to detect if our new decode() function has processed (ie, "consumed") the opcode,
|
||||
* by setting it to -1. If it has, then we can skip the older opcode decode logic below.
|
||||
*/
|
||||
this.regOp = opCode = this.readWordByVirtual(this.regsGen[7]);
|
||||
this.regsGen[7] = (this.regsGen[7] + 2) & 0xffff;
|
||||
if (opCode >= 0) this.regsGen[7] = (this.regsGen[7] + 2) & 0xffff;
|
||||
|
||||
this.decode(opCode);
|
||||
|
||||
if (opCode >= 0) {
|
||||
// this.regsGen[7] = (this.regsGen[7] + 2) & 0xffff;
|
||||
if (this.regOp < 0) {
|
||||
switch (opCode & 0xF000) /*0170000*/ { // Double operand instructions xxSSDD
|
||||
// case 0x1000: /*0010000*/ // MOV 01SSDD
|
||||
// //LOG_INSTRUCTION(opCode, 2, "MOV");
|
||||
// if ((src = this.readWordByMode(opCode >> 6)) >= 0) {
|
||||
// if (!(opCode & 0x38)) {
|
||||
// this.regsGen[opCode & 7] = src;
|
||||
// this.flagN = this.flagZ = src;
|
||||
// this.flagV = 0;
|
||||
// } else {
|
||||
// if ((dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.WRITE)) >= 0) {
|
||||
// if (this.writeWordByAddr(dstAddr, src) >= 0) {
|
||||
// this.flagN = this.flagZ = src;
|
||||
// this.flagV = 0;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case 0x2000: /*0020000*/ // CMP 02SSDD
|
||||
// //LOG_INSTRUCTION(opCode, 2, "CMP");
|
||||
// if ((src = this.readWordByMode(opCode >> 6)) >= 0) {
|
||||
// if ((dst = this.readWordByMode(opCode)) >= 0) {
|
||||
// result = src - dst;
|
||||
// this.flagN = this.flagZ = this.flagC = result;
|
||||
// this.flagV = (src ^ dst) & (src ^ result);
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case 0x3000: /*0030000*/ // BIT 03SSDD
|
||||
// //LOG_INSTRUCTION(opCode, 2, "BIT");
|
||||
// if ((src = this.readWordByMode(opCode >> 6)) >= 0) {
|
||||
// if ((dst = this.readWordByMode(opCode)) >= 0) {
|
||||
// this.flagN = this.flagZ = src & dst;
|
||||
// this.flagV = 0;
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case 0x4000: /*0040000*/ // BIC 04SSDD
|
||||
// //LOG_INSTRUCTION(opCode, 2, "BIC");
|
||||
// if ((src = this.readWordByMode(opCode >> 6)) >= 0) {
|
||||
// if (!(opCode & 0x38)) {
|
||||
// result = this.regsGen[opCode & 7] &= ~src;
|
||||
// this.flagN = this.flagZ = result;
|
||||
// this.flagV = 0;
|
||||
// } else {
|
||||
// if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= 0) {
|
||||
// result = dst & ~src;
|
||||
// if (this.writeWordByAddr(dstAddr, result) >= 0) {
|
||||
// this.flagN = this.flagZ = result;
|
||||
// this.flagV = 0;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case 0x5000: /*0050000*/ // BIS 05SSDD
|
||||
// //LOG_INSTRUCTION(opCode, 2, "BIS");
|
||||
// if ((src = this.readWordByMode(opCode >> 6)) >= 0) {
|
||||
// if (!(opCode & 0x38)) {
|
||||
// result = this.regsGen[opCode & 7] |= src;
|
||||
// this.flagN = this.flagZ = result;
|
||||
// this.flagV = 0;
|
||||
// } else {
|
||||
// if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= 0) {
|
||||
// result = dst | src;
|
||||
// if (this.writeWordByAddr(dstAddr, result) >= 0) {
|
||||
// this.flagN = this.flagZ = result;
|
||||
// this.flagV = 0;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case 0x6000: /*0060000*/ // ADD 06SSDD
|
||||
// //LOG_INSTRUCTION(opCode, 2, "ADD");
|
||||
// if ((src = this.readWordByMode(opCode >> 6)) >= 0) {
|
||||
// if (!(opCode & 0x38)) {
|
||||
// reg = opCode & 7;
|
||||
// dst = this.regsGen[reg];
|
||||
// this.regsGen[reg] = (result = src + dst) & 0xffff;
|
||||
// this.flagN = this.flagZ = this.flagC = result;
|
||||
// this.flagV = (src ^ result) & (dst ^ result);
|
||||
// } else {
|
||||
// if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= 0) {
|
||||
// result = src + dst;
|
||||
// if (this.writeWordByAddr(dstAddr, result) >= 0) {
|
||||
// this.flagN = this.flagZ = this.flagC = result;
|
||||
// this.flagV = (src ^ result) & (dst ^ result);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case 0x9000: /*0110000*/ // MOVB 11SSDD
|
||||
// //LOG_INSTRUCTION(opCode, 2, "MOVB");
|
||||
// if ((src = this.readByteByMode(opCode >> 6)) >= 0) {
|
||||
// if (!(opCode & 0x38)) {
|
||||
// if (src & 0x80) /*0200*/ src |= 0xff00; // movb sign extends register to word size
|
||||
// this.regsGen[opCode & 7] = src;
|
||||
// this.flagN = this.flagZ = src;
|
||||
// this.flagV = 0;
|
||||
// } else {
|
||||
// if ((dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.WRITE_BYTE)) >= 0) { // write byte
|
||||
// if (this.writeByteByAddr(dstAddr, src) >= 0) {
|
||||
// this.flagN = this.flagZ = src << 8;
|
||||
// this.flagV = 0;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case 0xA000: /*0120000*/ // CMPB 12SSDD
|
||||
// //LOG_INSTRUCTION(opCode, 2, "CMPB");
|
||||
// if ((src = this.readByteByMode(opCode >> 6)) >= 0) {
|
||||
// if ((dst = this.readByteByMode(opCode)) >= 0) {
|
||||
// result = src - dst;
|
||||
// this.flagN = this.flagZ = this.flagC = result << 8;
|
||||
// this.flagV = ((src ^ dst) & (src ^ result)) << 8;
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case 0xB000: /*0130000*/ // BITB 13SSDD
|
||||
// //LOG_INSTRUCTION(opCode, 2, "BITB");
|
||||
// if ((src = this.readByteByMode(opCode >> 6)) >= 0) {
|
||||
// if ((dst = this.readByteByMode(opCode)) >= 0) {
|
||||
// this.flagN = this.flagZ = (src & dst) << 8;
|
||||
// this.flagV = 0;
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case 0xC000: /*0140000*/ // BICB 14SSDD
|
||||
// //LOG_INSTRUCTION(opCode, 2, "BICB");
|
||||
// if ((src = this.readByteByMode(opCode >> 6)) >= 0) {
|
||||
// if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) {
|
||||
// result = dst & ~src;
|
||||
// if (this.writeByteByAddr(dstAddr, result) >= 0) {
|
||||
// this.flagN = this.flagZ = result << 8;
|
||||
// this.flagV = 0;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case 0xD000: /*0150000*/ // BISB 15SSDD
|
||||
// //LOG_INSTRUCTION(opCode, 2, "BISB");
|
||||
// if ((src = this.readByteByMode(opCode >> 6)) >= 0) {
|
||||
// if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) {
|
||||
// result = dst | src;
|
||||
// if (this.writeByteByAddr(dstAddr, result) >= 0) {
|
||||
// this.flagN = this.flagZ = result << 8;
|
||||
// this.flagV = 0;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case 0xE000: /*0160000*/ // SUB 16SSDD
|
||||
// //LOG_INSTRUCTION(opCode, 2, "SUB");
|
||||
// if ((src = this.readWordByMode(opCode >> 6)) >= 0) {
|
||||
// if (!(opCode & 0x38)) {
|
||||
// reg = opCode & 7;
|
||||
// dst = this.regsGen[reg];
|
||||
// this.regsGen[reg] = (result = dst - src) & 0xffff;
|
||||
// this.flagN = this.flagZ = this.flagC = result;
|
||||
// this.flagV = (src ^ dst) & (dst ^ result);
|
||||
// } else {
|
||||
// if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= 0) {
|
||||
// result = dst - src;
|
||||
// if (this.writeWordByAddr(dstAddr, result) >= 0) {
|
||||
// this.flagN = this.flagZ = this.flagC = result;
|
||||
// this.flagV = (src ^ dst) & (dst ^ result);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
case 0x1000: /*0010000*/ // MOV 01SSDD
|
||||
//LOG_INSTRUCTION(opCode, 2, "MOV");
|
||||
if ((src = this.readWordByMode(opCode >> 6)) >= 0) {
|
||||
if (!(opCode & 0x38)) {
|
||||
this.regsGen[opCode & 7] = src;
|
||||
this.flagN = this.flagZ = src;
|
||||
this.flagV = 0;
|
||||
} else {
|
||||
if ((dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.WRITE)) >= 0) {
|
||||
if (this.writeWordByAddr(dstAddr, src) >= 0) {
|
||||
this.flagN = this.flagZ = src;
|
||||
this.flagV = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x2000: /*0020000*/ // CMP 02SSDD
|
||||
//LOG_INSTRUCTION(opCode, 2, "CMP");
|
||||
if ((src = this.readWordByMode(opCode >> 6)) >= 0) {
|
||||
if ((dst = this.readWordByMode(opCode)) >= 0) {
|
||||
result = src - dst;
|
||||
this.flagN = this.flagZ = this.flagC = result;
|
||||
this.flagV = (src ^ dst) & (src ^ result);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x3000: /*0030000*/ // BIT 03SSDD
|
||||
//LOG_INSTRUCTION(opCode, 2, "BIT");
|
||||
if ((src = this.readWordByMode(opCode >> 6)) >= 0) {
|
||||
if ((dst = this.readWordByMode(opCode)) >= 0) {
|
||||
this.flagN = this.flagZ = src & dst;
|
||||
this.flagV = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x4000: /*0040000*/ // BIC 04SSDD
|
||||
//LOG_INSTRUCTION(opCode, 2, "BIC");
|
||||
if ((src = this.readWordByMode(opCode >> 6)) >= 0) {
|
||||
if (!(opCode & 0x38)) {
|
||||
result = this.regsGen[opCode & 7] &= ~src;
|
||||
this.flagN = this.flagZ = result;
|
||||
this.flagV = 0;
|
||||
} else {
|
||||
if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= 0) {
|
||||
result = dst & ~src;
|
||||
if (this.writeWordByAddr(dstAddr, result) >= 0) {
|
||||
this.flagN = this.flagZ = result;
|
||||
this.flagV = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x5000: /*0050000*/ // BIS 05SSDD
|
||||
//LOG_INSTRUCTION(opCode, 2, "BIS");
|
||||
if ((src = this.readWordByMode(opCode >> 6)) >= 0) {
|
||||
if (!(opCode & 0x38)) {
|
||||
result = this.regsGen[opCode & 7] |= src;
|
||||
this.flagN = this.flagZ = result;
|
||||
this.flagV = 0;
|
||||
} else {
|
||||
if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= 0) {
|
||||
result = dst | src;
|
||||
if (this.writeWordByAddr(dstAddr, result) >= 0) {
|
||||
this.flagN = this.flagZ = result;
|
||||
this.flagV = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x6000: /*0060000*/ // ADD 06SSDD
|
||||
//LOG_INSTRUCTION(opCode, 2, "ADD");
|
||||
if ((src = this.readWordByMode(opCode >> 6)) >= 0) {
|
||||
if (!(opCode & 0x38)) {
|
||||
reg = opCode & 7;
|
||||
dst = this.regsGen[reg];
|
||||
this.regsGen[reg] = (result = src + dst) & 0xffff;
|
||||
this.flagN = this.flagZ = this.flagC = result;
|
||||
this.flagV = (src ^ result) & (dst ^ result);
|
||||
} else {
|
||||
if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= 0) {
|
||||
result = src + dst;
|
||||
if (this.writeWordByAddr(dstAddr, result) >= 0) {
|
||||
this.flagN = this.flagZ = this.flagC = result;
|
||||
this.flagV = (src ^ result) & (dst ^ result);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x9000: /*0110000*/ // MOVB 11SSDD
|
||||
//LOG_INSTRUCTION(opCode, 2, "MOVB");
|
||||
if ((src = this.readByteByMode(opCode >> 6)) >= 0) {
|
||||
if (!(opCode & 0x38)) {
|
||||
if (src & 0x80) /*0200*/ src |= 0xff00; // movb sign extends register to word size
|
||||
this.regsGen[opCode & 7] = src;
|
||||
this.flagN = this.flagZ = src;
|
||||
this.flagV = 0;
|
||||
} else {
|
||||
if ((dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.WRITE_BYTE)) >= 0) { // write byte
|
||||
if (this.writeByteByAddr(dstAddr, src) >= 0) {
|
||||
this.flagN = this.flagZ = src << 8;
|
||||
this.flagV = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0xA000: /*0120000*/ // CMPB 12SSDD
|
||||
//LOG_INSTRUCTION(opCode, 2, "CMPB");
|
||||
if ((src = this.readByteByMode(opCode >> 6)) >= 0) {
|
||||
if ((dst = this.readByteByMode(opCode)) >= 0) {
|
||||
result = src - dst;
|
||||
this.flagN = this.flagZ = this.flagC = result << 8;
|
||||
this.flagV = ((src ^ dst) & (src ^ result)) << 8;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0xB000: /*0130000*/ // BITB 13SSDD
|
||||
//LOG_INSTRUCTION(opCode, 2, "BITB");
|
||||
if ((src = this.readByteByMode(opCode >> 6)) >= 0) {
|
||||
if ((dst = this.readByteByMode(opCode)) >= 0) {
|
||||
this.flagN = this.flagZ = (src & dst) << 8;
|
||||
this.flagV = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0xC000: /*0140000*/ // BICB 14SSDD
|
||||
//LOG_INSTRUCTION(opCode, 2, "BICB");
|
||||
if ((src = this.readByteByMode(opCode >> 6)) >= 0) {
|
||||
if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) {
|
||||
result = dst & ~src;
|
||||
if (this.writeByteByAddr(dstAddr, result) >= 0) {
|
||||
this.flagN = this.flagZ = result << 8;
|
||||
this.flagV = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0xD000: /*0150000*/ // BISB 15SSDD
|
||||
//LOG_INSTRUCTION(opCode, 2, "BISB");
|
||||
if ((src = this.readByteByMode(opCode >> 6)) >= 0) {
|
||||
if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE_BYTE))) >= 0) {
|
||||
result = dst | src;
|
||||
if (this.writeByteByAddr(dstAddr, result) >= 0) {
|
||||
this.flagN = this.flagZ = result << 8;
|
||||
this.flagV = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0xE000: /*0160000*/ // SUB 16SSDD
|
||||
//LOG_INSTRUCTION(opCode, 2, "SUB");
|
||||
if ((src = this.readWordByMode(opCode >> 6)) >= 0) {
|
||||
if (!(opCode & 0x38)) {
|
||||
reg = opCode & 7;
|
||||
dst = this.regsGen[reg];
|
||||
this.regsGen[reg] = (result = dst - src) & 0xffff;
|
||||
this.flagN = this.flagZ = this.flagC = result;
|
||||
this.flagV = (src ^ dst) & (dst ^ result);
|
||||
} else {
|
||||
if ((dst = this.readWordByAddr(dstAddr = this.getAddrByMode(opCode, PDP11.ACCESS.UPDATE))) >= 0) {
|
||||
result = dst - src;
|
||||
if (this.writeWordByAddr(dstAddr, result) >= 0) {
|
||||
this.flagN = this.flagZ = this.flagC = result;
|
||||
this.flagV = (src ^ dst) & (dst ^ result);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
switch (opCode & 0xFE00) /*0177000*/ { // Misc instructions xxRDD
|
||||
case 0x800: /*04000*/ // JSR 004RDD
|
||||
|
|
|
|||
|
|
@ -1200,6 +1200,9 @@ if (DEBUGGER) {
|
|||
*/
|
||||
if (this.checksEnabled()) this.checkInstruction(this.cpu.getPC(), 0);
|
||||
}
|
||||
/*
|
||||
* For our typically tiny bursts (usually single instructions), mimic what runCPU() does.
|
||||
*/
|
||||
try {
|
||||
var nCyclesStep = this.cpu.stepCPU(nCycles);
|
||||
if (nCyclesStep > 0) {
|
||||
|
|
@ -1214,6 +1217,8 @@ if (DEBUGGER) {
|
|||
var e = exception;
|
||||
this.nCycles = 0;
|
||||
this.cpu.setError(e.stack || e.message);
|
||||
} else {
|
||||
if (DEBUG) this.println("CPU exception: " + str.toHexWord(exception));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -225,6 +225,14 @@ var PDP11 = {
|
|||
READ: 0x2,
|
||||
WRITE: 0x4,
|
||||
UPDATE: 0x6
|
||||
},
|
||||
/*
|
||||
* Internal flags passed to writeByteByMode(), etc.
|
||||
*/
|
||||
WRITE: {
|
||||
NORMAL: 0x0, // write byte or word normally
|
||||
ZERO: 0x1, // zero byte or word
|
||||
SIGNEXT: 0x2 // sign-extend a byte to a word
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -769,8 +769,8 @@ Component.prototype = {
|
|||
* TODO: Add a task to the build process that "asserts" there are no instances of "assertion failure" in RELEASE builds.
|
||||
*
|
||||
* @this {Component}
|
||||
* @param {boolean} f is the expression we are asserting to be true
|
||||
* @param {string} [s] is description of the assertion on failure
|
||||
* @param {boolean|number} f is the expression asserted to be true
|
||||
* @param {string} [s] is a description of the assertion to be displayed or logged on failure
|
||||
*/
|
||||
assert: function(f, s) {
|
||||
if (DEBUG) {
|
||||
|
|
|
|||
|
|
@ -37,10 +37,10 @@
|
|||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
float: left;
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
}
|
||||
.pcjs-controls textarea {
|
||||
font-family: Monaco, monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: x-small;
|
||||
}
|
||||
.pcjs-fieldset {
|
||||
|
|
@ -49,14 +49,14 @@
|
|||
padding: 0;
|
||||
}
|
||||
.pcjs-flag {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.pcjs-register {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@
|
|||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
float: left;
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
}
|
||||
.pcjs-controls textarea {
|
||||
font-family: Monaco, monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: x-small;
|
||||
}
|
||||
.pcjs-fieldset {
|
||||
|
|
@ -44,14 +44,14 @@
|
|||
padding: 0;
|
||||
}
|
||||
.pcjs-flag {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.pcjs-register {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@
|
|||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
float: left;
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
}
|
||||
.pcjs-controls textarea {
|
||||
font-family: Monaco, monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: x-small;
|
||||
}
|
||||
.pcjs-fieldset {
|
||||
|
|
@ -44,14 +44,14 @@
|
|||
padding: 0;
|
||||
}
|
||||
.pcjs-flag {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.pcjs-register {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@
|
|||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
float: left;
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
}
|
||||
.pcjs-controls textarea {
|
||||
font-family: Monaco, monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: x-small;
|
||||
}
|
||||
.pcjs-fieldset {
|
||||
|
|
@ -44,14 +44,14 @@
|
|||
padding: 0;
|
||||
}
|
||||
.pcjs-flag {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.pcjs-register {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-family: Monaco, "Lucida Console", monospace;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
|
|
|
|||
|
|
@ -1,214 +1,221 @@
|
|||
(function(){var m;
|
||||
function aa(a,b){var d;if(a){b||(b=10);var c=a.charAt(0),f=0<a.indexOf(",");f&&(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&&f&&(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 e,c=a;((f=b)&&10!=f?16==f?null!==c.match(/^[0-9a-f]+$/i):8==f?null!==c.match(/^[0-7]+$/):2==
|
||||
f&&null!==c.match(/^[01]+$/):null!==c.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(d=e|0)}return d}function ba(a,b,d){var c="";b?11<b&&(b=11):b=a&-65536?11:6;if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;)c=String.fromCharCode((a&7)+48)+c,a>>=3;return(d?"0o":"")+c}function r(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 f=a&15,f=f+(0<=f&&9>=f?48:55),c=String.fromCharCode(f)+c;a>>=4}return(d?"0x":"")+c}
|
||||
function ca(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 da(a){var b="",d=a.lastIndexOf(".");0<=d&&(b=a.substr(d+1).toLowerCase());return b}function ea(){var a=fa();return-1!==a.indexOf("pcjs.org",a.length-8)}var ga={"&":"&","<":"<",">":">",'"':""","'":"'"};function ma(a){return a.replace(/[&<>"']/g,function(a){return ga[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 pa(a,b,d){var c=0,f=a.length,e=0;for(void 0===d&&(d=function(a,b){return a>b?1:a<b?-1:0});c<f;){var h=c+f>>1,g;g=d(b,a[h]);0<g?c=h+1:(f=h,e=!g)}return e?c:~c}var qa=Date.now||function(){return+new Date};function ra(){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 ua(a,b,d,c){var f=0,e=null,h=null;if("object"==typeof resources&&(e=resources[a]))return c&&c(a,e,f),[e,f];if(d&&"function"==typeof resources)return resources(a,function(b,d){c&&c(a,b,d)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(g.onreadystatechange=function(){4===g.readyState&&(e=g.responseText,200==g.status||!g.status&&e.length&&"file:"==(window?window.location.protocol:"file:")||(f=g.status||-1),c&&c(a,e,f))});if(b&&"object"==
|
||||
typeof b){var k="",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||(e=g.responseText,200!=g.status&&(f=g.status||-1),c&&c(a,e,f),h=[e,f]);return h}function fa(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
||||
function t(a){window&&window.alert(a)}function va(a){var b=!1;window&&(b=window.confirm(a));return b}var wa=null;function xa(){if(null==wa){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}wa=a}return wa}function Ba(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(d){}return b}
|
||||
function Ca(a,b){try{return window.localStorage.setItem(a,b),!0}catch(d){}return!1}function Da(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ea(a,b,d){function c(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(c,0):d()}c()}
|
||||
function Fa(a,b){function d(){b(100===c)&&(f=setTimeout(d,c),c=100)}var c=0,f=null,e=!1;a.onmousedown=function(){e||f||(c=500,d())};a.ontouchstart=function(){f||(c=500,d())};a.onmouseup=a.onmouseout=function(){f&&(clearTimeout(f),f=null)};a.ontouchend=a.ontouchcancel=function(){f&&(clearTimeout(f),f=null);e=!0}}var Ga={init:[],show:[],exit:[]},Ha=!1,Ia=!1,Ja=!0;function Ka(a,b){if(window){var d=window[a];window[a]="function"!==typeof d?b:function(){d&&d();b()}}}function Qa(a){Ga.init.push(a)}
|
||||
function Ra(a){if(Ja)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){!Ja&&a?(Ja=!0,Ha&&Ta("init"),Ia&&Ta("show")):Ja=a}function Ta(a){Ga[a]&&Ra(Ga[a])}Ka("onload",function(){Ha=!0;Ra(Ga.init)});Ka("onpageshow",function(){Ia=!0;Ra(Ga.show)});Ka(Da("Opera")||Da("iOS")?"onunload":"onbeforeunload",function(){Ra(Ga.exit)});
|
||||
function u(a,b,d,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.lc=b.comment;this.Nc=b;b=this.id.indexOf(".");0>b?this.Bb=this.id:(this.nc=this.id.substr(0,b),this.Bb=this.id.substr(b+1));this[a]=d;this.u={ready:!1,nb:!1,cc:!1,fa:!1,error:!1};this.Vb=null;this.u.error=!1;this.O={};this.H=null;this.ha=c||0;v.push(this)}var Ua=void 0,Va={};
|
||||
if(window){Ua||(Ua=window.location.search.substr(1));for(var Wa,Xa=/\+/g,Ya=/([^&=]+)=?([^&]*)/g;Wa=Ya.exec(Ua);)Va[decodeURIComponent(Wa[1].replace(Xa," "))]=decodeURIComponent(Wa[2].replace(Xa," "))}function Za(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var d=typeof a;if("object"!==d&&"function"!==d)throw new TypeError;}b.prototype=a;return new b}
|
||||
function $a(a,b){b||(b=u);a.prototype=Za(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var ab=window.PCjs.Machines||(window.PCjs.Machines={}),v=window.PCjs.Components||(window.PCjs.Components=[])}else ab={},v=[];function bb(a,b,d){ab[a]&&b&&(ab[a][b]=d)}function cb(a){var b,d=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<v.length;b++){var c=v[b];a&&c.id.indexOf(a)||d.push(c)}return d}
|
||||
function db(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<v.length;c++)if(d)d==v[c]&&(d=null);else if(!(a!=v[c].type||b&&v[c].id.indexOf(b)))return v[c]}return null}function w(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(d){t(d.message+" ("+a+")")}return b}
|
||||
function eb(a,b){for(var d=x(b.parentNode,"pdp11-control"),c=0;c<d.length;c++)for(var f=d[c].childNodes,e=0;e<f.length;e++){var h=f[e];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pdp11-binding":(g=w(h))&&g.binding&&a.ua(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||
function ca(a,b){var d;if(a){b||(b=10);var c=a.charAt(0),f=0<a.indexOf(",");f&&(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&&f&&(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 e,c=a;((f=b)&&10!=f?16==f?null!==c.match(/^[0-9a-f]+$/i):8==f?null!==c.match(/^[0-7]+$/):2==
|
||||
f&&null!==c.match(/^[01]+$/):null!==c.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(d=e|0)}return d}function da(a,b,d){var c="";b?11<b&&(b=11):b=a&-65536?11:6;if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;)c=String.fromCharCode((a&7)+48)+c,a>>=3;return(d?"0o":"")+c}function r(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 f=a&15,f=f+(0<=f&&9>=f?48:55),c=String.fromCharCode(f)+c;a>>=4}return(d?"0x":"")+c}
|
||||
function ea(a){var b=a,d=a.lastIndexOf("/");0<=d&&(b=a.substr(d+1));d=b.indexOf("&");0<d&&(b=b.substr(0,d));return b}function fa(a){var b="",d=a.lastIndexOf(".");0<=d&&(b=a.substr(d+1).toLowerCase());return b}function ga(){var a=ha();return-1!==a.indexOf("pcjs.org",a.length-8)}var ia={"&":"&","<":"<",">":">",'"':""","'":"'"};function ja(a){return a.replace(/[&<>"']/g,function(a){return ia[a]})}function pa(a,b){return(a+" ").slice(0,b)}
|
||||
function qa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function ra(a,b,d){var c=0,f=a.length,e=0;for(void 0===d&&(d=function(a,b){return a>b?1:a<b?-1:0});c<f;){var h=c+f>>1,g;g=d(b,a[h]);0<g?c=h+1:(f=h,e=!g)}return e?c:~c}var sa=Date.now||function(){return+new Date};function ta(){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 wa(a,b,d,c){var f=0,e=null,h=null;if("object"==typeof resources&&(e=resources[a]))return c&&c(a,e,f),[e,f];if(d&&"function"==typeof resources)return resources(a,function(b,d){c&&c(a,b,d)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(g.onreadystatechange=function(){4===g.readyState&&(e=g.responseText,200==g.status||!g.status&&e.length&&"file:"==(window?window.location.protocol:"file:")||(f=g.status||-1),c&&c(a,e,f))});if(b&&"object"==
|
||||
typeof b){var k="",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||(e=g.responseText,200!=g.status&&(f=g.status||-1),c&&c(a,e,f),h=[e,f]);return h}function ha(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
||||
function t(a){window&&window.alert(a)}function 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 Da(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(d){}return b}
|
||||
function Ea(a,b){try{return window.localStorage.setItem(a,b),!0}catch(d){}return!1}function Fa(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 Ga(a,b,d){function c(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(c,0):d()}c()}
|
||||
function Ha(a,b){function d(){b(100===c)&&(f=setTimeout(d,c),c=100)}var c=0,f=null,e=!1;a.onmousedown=function(){e||f||(c=500,d())};a.ontouchstart=function(){f||(c=500,d())};a.onmouseup=a.onmouseout=function(){f&&(clearTimeout(f),f=null)};a.ontouchend=a.ontouchcancel=function(){f&&(clearTimeout(f),f=null);e=!0}}var Ia={init:[],show:[],exit:[]},Ja=!1,Ka=!1,La=!0;function Ma(a,b){if(window){var d=window[a];window[a]="function"!==typeof d?b:function(){d&&d();b()}}}function Sa(a){Ia.init.push(a)}
|
||||
function Ta(a){if(La)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 Ua(a){!La&&a?(La=!0,Ja&&Va("init"),Ka&&Va("show")):La=a}function Va(a){Ia[a]&&Ta(Ia[a])}Ma("onload",function(){Ja=!0;Ta(Ia.init)});Ma("onpageshow",function(){Ka=!0;Ta(Ia.show)});Ma(Fa("Opera")||Fa("iOS")?"onunload":"onbeforeunload",function(){Ta(Ia.exit)});
|
||||
function u(a,b,d,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.mc=b.comment;this.Nc=b;b=this.id.indexOf(".");0>b?this.Bb=this.id:(this.oc=this.id.substr(0,b),this.Bb=this.id.substr(b+1));this[a]=d;this.A={ready:!1,nb:!1,dc:!1,fa:!1,error:!1};this.Wb=null;this.A.error=!1;this.O={};this.I=null;this.ia=c||0;v.push(this)}var Wa=void 0,Xa={};
|
||||
if(window){Wa||(Wa=window.location.search.substr(1));for(var Ya,Za=/\+/g,$a=/([^&=]+)=?([^&]*)/g;Ya=$a.exec(Wa);)Xa[decodeURIComponent(Ya[1].replace(Za," "))]=decodeURIComponent(Ya[2].replace(Za," "))}function ab(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 bb(a,b){b||(b=u);a.prototype=ab(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var cb=window.PCjs.Machines||(window.PCjs.Machines={}),v=window.PCjs.Components||(window.PCjs.Components=[])}else cb={},v=[];function db(a,b,d){cb[a]&&b&&(cb[a][b]=d)}function eb(a){var b,d=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<v.length;b++){var c=v[b];a&&c.id.indexOf(a)||d.push(c)}return d}
|
||||
function fb(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<v.length;c++)if(d)d==v[c]&&(d=null);else if(!(a!=v[c].type||b&&v[c].id.indexOf(b)))return v[c]}return null}function w(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(d){t(d.message+" ("+a+")")}return b}
|
||||
function gb(a,b){for(var d=x(b.parentNode,"pdp11-control"),c=0;c<d.length;c++)for(var f=d[c].childNodes,e=0;e<f.length;e++){var h=f[e];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pdp11-binding":(g=w(h))&&g.binding&&a.ua(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||
function x(a,b,d){d&&(b+="-"+d+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var c;d=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(c=a.length;b<c;b++)f.test(a[b].className)&&d.push(a[b]);return d}
|
||||
u.prototype={constructor:u,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ua:function(a,b,d){switch(b){case "clear":return this.O[b]||(this.O[b]=d,d.onclick=function(a){return function(){a.O.print&&(a.O.print.value="")}}(this)),!0;case "print":return this.O[b]||(this.fb=this.O[b]=d,d.value="",this.g=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.oa=function(a){this.g(a,this.Bb)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.Bb+": "+a)},oa:function(a,b,d){d=d||this.type;b||t((d?d+": ":"")+a)},Na:function(){return this.u.fa=!0},Ma:function(a,b){b&&(this.u.fa=!1);return!0}};function fb(a,b){if(a.H){a===a.H?b|=0:b=b||a.ha;var d=a.H.ha&b;return!!b&&d===b||!!(d&a.H.Hc)}return!1}
|
||||
function gb(a,b){if(a.u.cc)return a.u.nb&&(a.u.nb=!1),a.u.cc=!1;if(a.u.error)return a.g(a.toString()+" error"),!1;a.u.nb=b;return a.u.nb}function hb(a,b){a.u.nb&&(b?a.u.cc=!0:void 0===b&&a.g(a.toString()+" busy"));return a.u.nb}function A(a){if(!a.u.error&&(a.u.ready=!0,a.u.ready)){var b=a.Vb;a.Vb=null;b&&b()}}function ib(a,b){b&&(a.u.ready?b():a.Vb=b);return a.u.ready}function jb(a,b){a.u.error=!0;a.oa(b)}
|
||||
var kb="undefined"!==typeof ArrayBuffer,lb=2,B=4,F=6,lb=0|lb,wb=1|lb,B=0|B,xb=1|B,F=0|F,yb=1|F,zb={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 Ab(a){u.call(this,"Panel",a,Ab)}$a(Ab);m=Ab.prototype;m.ua=function(a,b,d,c){return this.i&&this.i.ua(a,b,d,c)||this.b&&this.b.ua(a,b,d,c)||this.H&&this.H.ua(a,b,d,c)?!0:this.parent.ua.call(this,a,b,d,c)};
|
||||
m.Xa=function(a,b,d,c){this.i=a;this.G=b;this.b=d;this.H=c};m.Na=function(a,b){b||Bb();return!0};m.Ma=function(){return!0};m.wa=function(){};function Bb(){for(var a=!1,b=x(document,"pdp11","panel"),d=0;d<b.length;d++){var c=b[d],f=w(c),e;a:{e=f.id;if(void 0!==e)for(var h=void 0,h=0;h<v.length;h++)if(v[h].id===e){e=v[h];break a}e=null}e||(a=!0,e=new Ab(f));eb(e,c);a&&A(e)}}Qa(Bb);
|
||||
function Cb(a,b,d){u.call(this,"Bus",a,Cb);this.b=b;this.H=d;this.N=a.busWidth||16;this.I=Math.pow(2,this.N);this.i=this.I-1|0;this.X=(this.N>>1)+2;10>this.X&&(this.X=10);15<this.X&&(this.X=15);this.Aa=1<<this.X;this.T=this.Aa>>2;this.G=this.Aa-1;this.C=this.I/this.Aa|0;this.j=this.C-1;this.Ta=[];this.J=null;this.Fb=this.Dc;a=new G;Db(a,this.H);this.R=Array(this.C);for(b=0;b<this.C;b++)this.R[b]=a;this.Cb=Array(4);this.Cb[0]=Eb;this.Cb[1]=Fb;this.Cb[2]=Gb;this.Cb[3]=Hb;this.P=this.I-8192;Ib(this,
|
||||
this.P,8192,Jb,this);A(this)}$a(Cb);function Eb(a,b){var d=this.controller.Ta[a];if(d){if(d[0])return d[0](b);if(d[2])return b&1?d[2](b&-2)>>8:d[2](b)&255}else if(b&1&&(d=this.controller.Ta[a&-2],d[2]))return d[2](b&-2)>>8;return this.controller.Fb(b,-1,1)}
|
||||
function Fb(a,b,d){var c=this.controller.Ta[a];if(c){if(c[1]){c[1](b,d);return}if(c[3]){a=c[2]?c[2](d):0;if(d&1)c[3](a&255|b<<8,d&-2);else c[3](a&-256|b,d);return}}else if(d&1&&(c=this.controller.Ta[a&-2],c[3])){d&=-2;a=c[2]?c[2](d):0;c[3](a&255|b<<8,d);return}this.controller.Fb(d,b,1)}function Gb(a,b){var d=this.controller.Ta[a];if(d){if(d[2])return d[2](b);if(d[0])return d[0](b)|d[0](b+1)<<8}return this.controller.Fb(b,-1,0)}
|
||||
function Hb(a,b,d){if(a=this.controller.Ta[a]){if(a[3]){a[3](b,d);return}if(a[1]){a[1](b&255,d);a[1](b>>8,d+1);return}}this.controller.Fb(d,b,0)}m=Cb.prototype;m.reset=function(){this.J&&this.J()};m.Dc=function(){return 0};m.Na=function(a,b){b||this.reset();return!0};
|
||||
function Ib(a,b,d,c,f){for(var e=b,h=d,g=e>>>a.X;0<h&&g<a.R.length;){var k=a.R[g],l=g*a.Aa,n=a.Aa-(e-l);n>h&&(n=h);if(k&&k.size){if(k.type==c&&k.controller==f){if(e+h<=k.A)return k.Tb+=k.A-e,k.A=e,!0;if(e>=k.A+k.Tb){n=k.size-(e-l);n>h&&(n=h);k.Tb=e-k.A+n;e=l+a.Aa;h-=n;g++;continue}}return Kb(1,e,h)}e=new G(e,n,a.Aa,c,f);Db(e,a.H,k);a.R[g++]=e;e=l+a.Aa;h-=n}return 0>=h?(a.status(Math.floor(d/1024)+"Kb "+Lb[c]+" at "+r(b,8,!0)),!0):Kb(2,b,d)}
|
||||
m.Gb=function(a){return this.R[(a&this.i)>>>this.X].sb(a&this.G,a)};m.Ga=function(a){var b=a&this.G,d=(a&this.i)>>>this.X;return b!=this.G?this.R[d].wc(b,a):this.R[d++].sb(b,a)|this.R[d&this.j].sb(0,a+1)<<8};function Mb(a,b){var d=b&a.G,c=(b&a.i)>>>a.X;return d!=a.G?a.R[c].gc(d,b):a.R[c++].Nb(d,b)|a.R[c&a.j].Nb(0,b+1)<<8}m.ac=function(a,b){this.R[(a&this.i)>>>this.X].xb(a&this.G,b&255,a)};
|
||||
m.ic=function(a,b){var d=a&this.G,c=(a&this.i)>>>this.X;d!=this.G?this.R[c].Cc(d,b&65535,a):(this.R[c++].xb(d,b&255,a),this.R[c&this.j].xb(0,b>>8&255,a+1))};function Kb(a,b,d){t("Memory block error ("+a+": "+r(b)+","+r(d)+")");return!1}
|
||||
function Nb(a){u.call(this,"Device",a,Nb);this.P=a.name;this.N={fc:[],Ha:0,qa:128,H:127,Jc:0};this.i={data:0,gd:0,pb:20,dd:0};this.j={Hb:0,K:0};this.C={Pb:2496,la:0,S:128,Qb:0,Ob:0,ta:0,xc:0,na:[],cb:[406,406,406,406],Z:[12,12,12,12]};this.I={K:129,Eb:0,ca:0,Ya:0,Ua:0,ab:0,na:[],Z:[40,40,40,40],cb:[1024,1024,512,512],Fc:[157,157,29,29]};this.J={b:[8210,8208,8210,8226],Z:[22,22,22,50],bb:[19,19,19,32],bc:[815,411,815,630],na:[],U:2176,vb:0,tb:0,Ca:[0,0,0,0,0,0,0,0],Ba:0,pa:[4544,4544,4544,4544,4544,
|
||||
4544,4544,4544],ub:[0,0,0,0,0,0,0,0],kb:0,bd:[0,0,0,0,0,0,0,0],yc:0,zc:[0,0,0,0,0,0,0,0],G:[0,0,0,0,0,0,0,0],cd:[1,2,3,4,5,6,7,8],Ac:[0,0,0,0,0,0,0,0],Pa:[0,0,0,0,0,0,0,0],$b:[0,0,0,0,0,0,0,0],$c:[0,0,0,0,0,0,0,0],ad:[0,0,0,0,0,0,0,0],Yc:[0,0,0,0,0,0,0,0],Zc:[0,0,0,0,0,0,0,0],$a:0,hc:0}}$a(Nb);
|
||||
var Ob=[4127,448,4191,450,4383,452,2591,454,21983,32768,65534,13791,16384,65534,770,2719,454,2591,65534,257,0,2566,33028,34051,33282,1281,33537,0,2758,32771,770,1025,1793,0,3078,33794,34305,513,0,5574,43690,4480,4097,4162,4227,4292,4357,57665,1281,769,0,3138,34305,1281,0,24707,2691,2627,24769,34561,1793,0,3076,20739,24899,2691,34562,2753,1281,0,2624,33537,0,16385,24641,1537,1793,0,193,8279,21589,516,12549,1538,2629,513,0,38336,65281,32769,0,32258,2561,2689,32258,3008,514,3009,769,0,5574,510,2551,
|
||||
u.prototype={constructor:u,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ua:function(a,b,d){switch(b){case "clear":return this.O[b]||(this.O[b]=d,d.onclick=function(a){return function(){a.O.print&&(a.O.print.value="")}}(this)),!0;case "print":return this.O[b]||(this.fb=this.O[b]=d,d.value="",this.i=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.oa=function(a){this.i(a,this.Bb)}),!0;default:return!1}},log:function(){},i:function(){},status:function(a){this.i(this.Bb+": "+a)},oa:function(a,b,d){d=d||this.type;b||t((d?d+": ":"")+a)},Na:function(){return this.A.fa=!0},Ma:function(a,b){b&&(this.A.fa=!1);return!0}};function hb(a,b){if(a.I){a===a.I?b|=0:b=b||a.ia;var d=a.I.ia&b;return!!b&&d===b||!!(d&a.I.Hc)}return!1}
|
||||
function ib(a,b){if(a.A.dc)return a.A.nb&&(a.A.nb=!1),a.A.dc=!1;if(a.A.error)return a.i(a.toString()+" error"),!1;a.A.nb=b;return a.A.nb}function jb(a,b){a.A.nb&&(b?a.A.dc=!0:void 0===b&&a.i(a.toString()+" busy"));return a.A.nb}function y(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.Wb;a.Wb=null;b&&b()}}function kb(a,b){b&&(a.A.ready?b():a.Wb=b);return a.A.ready}function lb(a,b){a.A.error=!0;a.oa(b)}
|
||||
var mb="undefined"!==typeof ArrayBuffer,nb=2,B=4,C=6,nb=0|nb,yb=1|nb,B=0|B,zb=1|B,C=0|C,D=1|C,Ab={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 Bb(a){u.call(this,"Panel",a,Bb)}bb(Bb);m=Bb.prototype;m.ua=function(a,b,d,c){return this.F&&this.F.ua(a,b,d,c)||this.b&&this.b.ua(a,b,d,c)||this.I&&this.I.ua(a,b,d,c)?!0:this.parent.ua.call(this,a,b,d,c)};
|
||||
m.Xa=function(a,b,d,c){this.F=a;this.H=b;this.b=d;this.I=c};m.Na=function(a,b){b||Cb();return!0};m.Ma=function(){return!0};m.xa=function(){};function Cb(){for(var a=!1,b=x(document,"pdp11","panel"),d=0;d<b.length;d++){var c=b[d],f=w(c),e;a:{e=f.id;if(void 0!==e)for(var h=void 0,h=0;h<v.length;h++)if(v[h].id===e){e=v[h];break a}e=null}e||(a=!0,e=new Bb(f));gb(e,c);a&&y(e)}}Sa(Cb);
|
||||
function Db(a,b,d){u.call(this,"Bus",a,Db);this.b=b;this.I=d;this.N=a.busWidth||16;this.G=Math.pow(2,this.N);this.H=this.G-1|0;this.Y=(this.N>>1)+2;10>this.Y&&(this.Y=10);15<this.Y&&(this.Y=15);this.Aa=1<<this.Y;this.T=this.Aa>>2;this.g=this.Aa-1;this.C=this.G/this.Aa|0;this.F=this.C-1;this.Ta=[];this.J=null;this.Gb=this.Dc;a=new E;Eb(a,this.I);this.R=Array(this.C);for(b=0;b<this.C;b++)this.R[b]=a;this.Cb=Array(4);this.Cb[0]=Fb;this.Cb[1]=Gb;this.Cb[2]=Hb;this.Cb[3]=Ib;this.P=this.G-8192;Jb(this,
|
||||
this.P,8192,Kb,this);y(this)}bb(Db);function Fb(a,b){var d=this.controller.Ta[a];if(d){if(d[0])return d[0](b);if(d[2])return b&1?d[2](b&-2)>>8:d[2](b)&255}else if(b&1&&(d=this.controller.Ta[a&-2],d[2]))return d[2](b&-2)>>8;return this.controller.Gb(b,-1,1)}
|
||||
function Gb(a,b,d){var c=this.controller.Ta[a];if(c){if(c[1]){c[1](b,d);return}if(c[3]){a=c[2]?c[2](d):0;if(d&1)c[3](a&255|b<<8,d&-2);else c[3](a&-256|b,d);return}}else if(d&1&&(c=this.controller.Ta[a&-2],c[3])){d&=-2;a=c[2]?c[2](d):0;c[3](a&255|b<<8,d);return}this.controller.Gb(d,b,1)}function Hb(a,b){var d=this.controller.Ta[a];if(d){if(d[2])return d[2](b);if(d[0])return d[0](b)|d[0](b+1)<<8}return this.controller.Gb(b,-1,0)}
|
||||
function Ib(a,b,d){if(a=this.controller.Ta[a]){if(a[3]){a[3](b,d);return}if(a[1]){a[1](b&255,d);a[1](b>>8,d+1);return}}this.controller.Gb(d,b,0)}m=Db.prototype;m.reset=function(){this.J&&this.J()};m.Dc=function(){return 0};m.Na=function(a,b){b||this.reset();return!0};
|
||||
function Jb(a,b,d,c,f){for(var e=b,h=d,g=e>>>a.Y;0<h&&g<a.R.length;){var k=a.R[g],l=g*a.Aa,n=a.Aa-(e-l);n>h&&(n=h);if(k&&k.size){if(k.type==c&&k.controller==f){if(e+h<=k.D)return k.Ub+=k.D-e,k.D=e,!0;if(e>=k.D+k.Ub){n=k.size-(e-l);n>h&&(n=h);k.Ub=e-k.D+n;e=l+a.Aa;h-=n;g++;continue}}return Lb(1,e,h)}e=new E(e,n,a.Aa,c,f);Eb(e,a.I,k);a.R[g++]=e;e=l+a.Aa;h-=n}return 0>=h?(a.status(Math.floor(d/1024)+"Kb "+Mb[c]+" at "+r(b,8,!0)),!0):Lb(2,b,d)}
|
||||
m.Hb=function(a){return this.R[(a&this.H)>>>this.Y].sb(a&this.g,a)};m.Ha=function(a){var b=a&this.g,d=(a&this.H)>>>this.Y;return b!=this.g?this.R[d].wc(b,a):this.R[d++].sb(b,a)|this.R[d&this.F].sb(0,a+1)<<8};function Nb(a,b){var d=b&a.g,c=(b&a.H)>>>a.Y;return d!=a.g?a.R[c].hc(d,b):a.R[c++].Ob(d,b)|a.R[c&a.F].Ob(0,b+1)<<8}m.bc=function(a,b){this.R[(a&this.H)>>>this.Y].xb(a&this.g,b&255,a)};
|
||||
m.jc=function(a,b){var d=a&this.g,c=(a&this.H)>>>this.Y;d!=this.g?this.R[c].Cc(d,b&65535,a):(this.R[c++].xb(d,b&255,a),this.R[c&this.F].xb(0,b>>8&255,a+1))};function Lb(a,b,d){t("Memory block error ("+a+": "+r(b)+","+r(d)+")");return!1}
|
||||
function Ob(a){u.call(this,"Device",a,Ob);this.P=a.name;this.N={gc:[],Ia:0,qa:128,g:127,Jc:0};this.g={data:0,gd:0,pb:20,dd:0};this.F={Ib:0,K:0};this.C={Qb:2496,la:0,S:128,Rb:0,Pb:0,ta:0,xc:0,na:[],cb:[406,406,406,406],Z:[12,12,12,12]};this.G={K:129,Fb:0,da:0,Ya:0,Ua:0,ab:0,na:[],Z:[40,40,40,40],cb:[1024,1024,512,512],Fc:[157,157,29,29]};this.J={b:[8210,8208,8210,8226],Z:[22,22,22,50],bb:[19,19,19,32],cc:[815,411,815,630],na:[],U:2176,vb:0,tb:0,Ca:[0,0,0,0,0,0,0,0],Ba:0,pa:[4544,4544,4544,4544,4544,
|
||||
4544,4544,4544],ub:[0,0,0,0,0,0,0,0],kb:0,bd:[0,0,0,0,0,0,0,0],yc:0,zc:[0,0,0,0,0,0,0,0],I:[0,0,0,0,0,0,0,0],cd:[1,2,3,4,5,6,7,8],Ac:[0,0,0,0,0,0,0,0],Pa:[0,0,0,0,0,0,0,0],ac:[0,0,0,0,0,0,0,0],$c:[0,0,0,0,0,0,0,0],ad:[0,0,0,0,0,0,0,0],Yc:[0,0,0,0,0,0,0,0],Zc:[0,0,0,0,0,0,0,0],$a:0,ic:0}}bb(Ob);
|
||||
var Pb=[4127,448,4191,450,4383,452,2591,454,21983,32768,65534,13791,16384,65534,770,2719,454,2591,65534,257,0,2566,33028,34051,33282,1281,33537,0,2758,32771,770,1025,1793,0,3078,33794,34305,513,0,5574,43690,4480,4097,4162,4227,4292,4357,57665,1281,769,0,3138,34305,1281,0,24707,2691,2627,24769,34561,1793,0,3076,20739,24899,2691,34562,2753,1281,0,2624,33537,0,16385,24641,1537,1793,0,193,8279,21589,516,12549,1538,2629,513,0,38336,65281,32769,0,32258,2561,2689,32258,3008,514,3009,769,0,5574,510,2551,
|
||||
2,0,9678,208,769,0,5582,226,135,0,2598,5606,236,2,0,95,242,128,5573,57344,2591,6,5599,256,4,5574,510,3045,5599,460,76,2591,78,5571,65510,5579,12,5570,512,4224,4104,3024,8197,33788,4224,4609,8193,769,0,2640,8197,33785,6145,2625,8193,769,0,8194,761,2574,5572,43690,5579,24,5568,2048,5570,512,2628,4360,2632,2632,8708,769,0,3103,65514,34562,0,305,35406,754,258,119,65160,3024,32403,5579,36,5568,3072,35446,1,740,5570,512,4224,4104,3024,8197,33788,5569,3,2574,3039,454,528,5582,24,4224,2632,2632,8200,769,
|
||||
0,3024,3103,65514,34562,0,264,8197,33779,5003,2574,32337,260,0,258,5579,12,6080,448,6081,450,6084,452,116,2,6084,65400,17860,65024,21956,62976,38848,65401,3200,161,76,0,16944,10797];m=Nb.prototype;
|
||||
m.Xa=function(a,b,d,c){this.G=b;this.b=d;this.H=c;switch(this.P){default:a=Pb;for(var f in a){var e=a[f];d=b;c=+f;for(var h=e[0]?e[0].bind(this):null,g=e[1]?e[1].bind(this):null,k=e[2]?e[2].bind(this):null,e=e[3]?e[3].bind(this):null,l=+f;l<=c;l+=2){var n=l&8191;void 0!==d.Ta[n]?t("I/O address already registered: "+r(d.P+n,8,!0)):d.Ta[n]=[h,g,k,e,!1]}}f=this.Ec.bind(this);b.J=this.reset.bind(this);b.Fb=f}A(this)};m.Uc=function(){return ac(this.b)};
|
||||
m.fd=function(a){bc(this.b,a&-1809|ac(this.b)&1808);this.b.W|=128};
|
||||
function cc(a){var b=a.C,d,c,f,e=b.ta>>13&7;"undefined"===typeof b.na[e]&&(b.na[e]={cache:[],postProcess:a.Vc,drive:e,blocksize:256,mapped:0,maxblock:b.cb[e]*b.Z[e],url:"rk"+e+".dsk"});b.S&=-129;switch(b.S>>1&7){case 0:b.Pb=2496;b.la=0;b.S=128;b.ta=0;break;case 1:if((b.ta>>4&511)>=b.cb[e]){b.la|=32832;b.S|=49152;break}if((b.ta&15)>=b.Z[e]){b.la|=32800;b.S|=49152;break}d=(b.ta>>4&511)*b.Z[e]+(b.ta&15);c=(b.S&48)<<12|b.Ob;f=65536-b.Qb&65535;dc(a,b.na[e],d,c,f);return;case 2:if((b.ta>>4&511)>=b.cb[e]){b.la|=
|
||||
32832;b.S|=49152;break}if((b.ta&15)>=b.Z[e]){b.la|=32800;b.S|=49152;break}d=(b.ta>>4&511)*b.Z[e]+(b.ta&15);c=(b.S&48)<<12|b.Ob;f=65536-b.Qb&65535;a.Zb(b.na[e],d,c,f);return}b.Pb=e<<13|b.Pb&8176|b.ta%9&15;H(a.b,20,160,144,function(){b.S=b.S&65534|128;return!!(b.S&64)})}m.Vc=function(a,b,d,c,f){var e=this.C;e.Ob=c&65535;e.S=e.S&-49|c>>12&48;e.Qb=65536-f&65535;switch(a){case 1:e.la|=33024;e.S|=49152;break;case 2:e.la|=33792,e.S|=49152}H(this.b,20,160,144,function(){e.S=e.S&65534|128;return!!(e.S&64)})};
|
||||
function ec(a){var b=a.I,d,c,f,e=b.K>>8&3;b.K&=-2;"undefined"===typeof b.na[e]&&(b.na[e]={cache:[],postProcess:a.Wc,drive:e,blocksize:128,mapped:1,maxblock:b.cb[e]*b.Z[e],url:"rl"+e+".dsk"});switch(b.K>>1&7){case 2:b.Ya&8&&(b.K&=63);b.Ya=b.Fc[e]|b.ab&64;break;case 3:1==(b.ca&3)&&(b.ab=b.ca&4?b.ab+(b.ca&65408)&65408|b.ca<<2&64:b.ab-(b.ca&65408)&65408|b.ca<<2&64,b.ca=b.ab);break;case 4:b.Ya=b.ab;break;case 5:if(b.ca>>6>=b.cb[e]){b.K|=37888;break}if((b.ca&63)>=b.Z[e]){b.K|=37888;break}d=(b.ca>>6)*b.Z[e]+
|
||||
(b.ca&63);c=(b.Ua&63)<<16|b.Eb;f=65536-b.Ya&65535;dc(a,b.na[e],d,c,f);return;case 6:if(b.ca>>6>=b.cb[e]){b.K|=37888;break}if((b.ca&63)>=b.Z[e]){b.K|=37888;break}d=(b.ca>>6)*b.Z[e]+(b.ca&63);c=(b.Ua&63)<<16|b.Eb;f=65536-b.Ya&65535;a.Zb(b.na[e],d,c,f);return}H(a.b,20,160,112,function(){b.K|=129;return!!(b.K&64)})}
|
||||
m.Wc=function(a,b,d,c,f){var e=this.I;e.Eb=c&65535;e.K=e.K&-49|c>>12&48;e.Ua=c>>16&63;e.ca=~~(d/e.Z[b.La])<<6|d%e.Z[b.La];e.ab=e.ca;e.Ya=65536-f&65535;switch(a){case 1:e.K|=33792;break;case 2:e.K|=40960}H(this.b,20,160,112,function(){e.K|=129;return!!(e.K&64)})};function fc(a){a=a.J;a.U=2176;a.Ba=0;a.pa=[4544,4544,4544,4544,4544,4544,4544,4544];a.ub=[0,0,0,0,0,0,0,0];a.kb=a.vb=a.tb=a.$a=a.hc=0}
|
||||
function gc(a,b){var d=a.J,c,f,e;d.U&=-16513;d.Ba&=-2049;d.pa[b]&=-1153;H(a.b,-1,0,172);"undefined"===typeof d.na[b]&&(d.na[b]={cache:[],postProcess:a.Xc,drive:b,blocksize:256,mapped:0,maxblock:d.bc[0]*d.bb[0]*d.Z[0],url:"rp"+b+".dsk"});switch(d.U&63){case 5:d.$b[b]=d.Pa[b];d.U|=32896;d.pa[b]|=32896;d.kb|=1<<b;break;case 9:fc(a);break;case 19:d.pa[b]|=64;break;case 49:if(d.Pa[b]>=d.bc[0]||d.Ca[b]>>8>=d.bb[0]||(d.Ca[b]&255)>=d.Z[0]){d.ub[b]|=1024;d.U|=49152;break}c=(d.Pa[b]*d.bb[0]+(d.Ca[b]>>8))*d.Z[0]+
|
||||
(d.Ca[b]&255);f=(d.$a&63)<<16|d.tb;e=65536-d.vb&65535;dc(a,d.na[b],c,f,e);return;case 57:if(d.Pa[b]>=d.bc[0]||d.Ca[b]>>8>=d.bb[0]||(d.Ca[b]&255)>=d.Z[0]){d.ub[b]|=1024;d.U|=49152;break}c=(d.Pa[b]*d.bb[0]+(d.Ca[b]>>8))*d.Z[0]+(d.Ca[b]&255);f=(d.$a&63)<<16|d.tb;e=65536-d.vb&65535;a.Zb(d.na[b],c,f,e);return}H(a.b,3,160,172,function(){d.U=d.U&65534|128;d.pa[b]|=128;return!!(d.U&64)})}
|
||||
m.Xc=function(a,b,d,c,f){var e=this.J;e.vb=65536-f&65535;e.tb=c&65535;e.U=e.U&-769|c>>8&768;e.$a=c>>16&63;f=~~(d/e.Z[0]);c=~~(f/e.bb[0]);e.Ca[b.La]=f%e.bb[0]<<8|d%e.Z[0];e.$b[b.La]=e.Pa[b.La]=c;e.kb|=1<<b.La;d>=b.Sc-1&&(e.pa[b.La]|=1024);switch(a){case 1:e.Ba|=512;e.U|=49152;break;case 2:e.Ba|=2048,e.U|=49152}H(this.b,20,160,172,function(){e.pa[b.La]|=128;e.U=e.U&65534|128;return!!(e.U&64)})};m.Pc=function(){this.j.K|=128;this.j.K&64&&H(this.b,0,192,64)};
|
||||
function hc(a,b,d,c,f,e){var h=~~((e+d.Va-1)/d.Va),g=new XMLHttpRequest;2048>h&&c+2048<d.Sc&&(h=2048);g.open("GET",d.url,!0);g.setRequestHeader("Range","bytes="+(c*d.Va<<1)+"-"+(((c+h)*d.Va<<1)-1));g.responseType="arraybuffer";g.onreadystatechange=function(){if(4==g.readyState){var h=b.bind(a),l,n,p,q;l=g.response;if(0!=g.status&&206!=g.status||!l)d.Yb(1,d,c,f,e);else{l=new Uint8Array(l);n=c;for(q=0;q<l.length;){if("undefined"===typeof d.cache[n])for(d.cache[n]=[],p=0;p<d.Va;p++)d.cache[n][p]=q<l.length?
|
||||
l[q]&255|l[q+1]<<8&65280:0,q+=2;else q+=d.Va<<1;n++}h(d,c,f,e)}}};g.send(null)}function I(a,b,d,c,f){if(d&1){if(!f)return J(a.b,4,122);c=0<=c?c<<8&65280|b&255:b}else 0<=c?f&&(c=b&65280|c&255):c=b;return c}m.Zb=function(a,b,d,c){for(var f;0<c;){if("undefined"===typeof a.cache[b]){hc(this,this.Zb,a,b,d,c);return}for(f=0;f<a.Va&&0<c;f++){if(0>K(this.b,a.Rc?ic(this.b,d):d,a.cache[b][f])){a.Yb(2,a,b,d,c);return}d+=2;--c}b++}a.Yb(0,a,b,d,c)};
|
||||
function dc(a,b,d,c,f){for(var e,h;0<f;){if("undefined"===typeof b.cache[d])for(b.cache[d]=[],e=0;e<b.Va;e++)b.cache[d][e]=0;for(e=0;e<b.Va&&0<f;e++){h=L(a.b,b.Rc?ic(a.b,c):c);if(0>h){b.Yb(2,b,d,c,f);return}b.cache[d][e]=h;c+=2;--f}d++}b.Yb(0,b,d,c,f)}m.reset=function(){this.i.pb=this.i.pb&-120|20;this.N.Ha=0;this.N.qa=128;this.j.K=0;this.C.S=128;this.I.K=128;fc(this)};
|
||||
m.Ec=function(a,b,d){var c,f,e=this.b;switch(a&-64){case 4194240:switch(a&-2){case 4194300:0>b?c=e.Qa&65280:(a&1&&(b<<=8),e.Qa=b|255,c=0);break;case 4194298:if(0>b)c=e.Xb;else{a&1&&(b<<=8);if(c=b&65024){f=c>>9;do c+=34;while(f>>=1)}e.Xb=c;e.Oa=2}break;case 4194294:if(70!==e.gb)return J(e,4,222);0>b?c=e.L:c=e.L=0;break;case 4194292:if(70!==e.gb)return J(e,4,224);c=1;break;case 4194290:if(70!==e.gb)return J(e,4,226);c=0;break;case 4194288:if(70!==e.gb)return J(e,4,228);c=61183;break;case 4194296:0<=
|
||||
b&&!(a&1)&&(b&=255);case 4194286:case 4194284:case 4194282:case 4194280:case 4194278:case 4194276:case 4194274:case 4194272:if(70!==e.gb)return J(e,4,232);f=a-4194272>>1;0>b?c=e.ec[f]:(c=I(this,e.ec[f],a,b,d),0<=c&&(e.ec[f]=c));break;case 4194254:return a&1?e.M>>14&1?(0<=b&&(e.f[6]=b),c=e.f[6]):(0<=b&&(e.sa[3]=b),c=e.sa[3]):e.M>>14&0?(0<=b&&(e.f[6]=b),c=e.f[6]):(0<=b&&(e.sa[1]=b),c=e.sa[1]),c;case 4194252:case 4194250:case 4194248:return f=a&7,e.M&2048?(0<=b&&(e.f[f]=b),c=e.f[f]):(0<=b&&(e.Za[f]=
|
||||
b),c=e.Za[f]),c;case 4194246:return a&1?(0<=b&&(e.f[7]=b),c=e.f[7]):e.M>>14&0?(0<=b&&(e.f[6]=b),c=e.f[6]):(0<=b&&(e.sa[0]=b),c=e.sa[0]),c;case 4194244:case 4194242:case 4194240:return f=a&7,e.M&2048?(0<=b&&(e.Za[f]=b),c=e.Za[f]):(0<=b&&(e.f[f]=b),c=e.f[f]),c;default:return e.L|=16,J(e,4,124)}break;case 4194176:f=a>>1&31;c=I(this,e.ka[3][f],a,b,d);0<=c&&(e.ka[3][f]=c,e.ka[3][f&15]&=65295);break;case 4194112:var h=this.N;f=this.j;switch(a&-2){case 4194174:c=I(this,e.Ab,a,b,d);0<=c&&(e.Ab=c);break;case 4194172:c=
|
||||
e.Da;c&65280&&(c=(c<<8|c>>8)&65535);break;case 4194170:e.ba=e.ba&62337|e.Jb<<5|e.Wb<<1;0>b?c=e.ba:(c=I(this,e.ba,a,b,d),0<=c&&(e.ba=c&=62337,e.Jb=c>>5&3,e.Wb=c>>1&15,c&257?(f=2,e.Ra&16&&(f=1),e.Ib=c&1?lb|B:B):(e.Ib=0,f=4),this.i.pb=this.i.pb&-8|f));break;case 4194168:0>b?c=this.i.dd&65535:(c=I(this,this.i.data,a,b,d),0<=c&&(this.i.data=c));break;case 4194166:0<=b&&(b&127&&(h.Jc=0),h.qa&=-129,H(e,100,128,52,function(){h.qa|=128;return!!(h.qa&64)}));c=0;break;case 4194164:0>b?c=h.qa:(c=I(this,h.qa,
|
||||
a,b,d),0<=c&&(128==(h.qa&192)&&c&64&&H(e,8,128,52,function(){h.qa|=128;return!!(h.qa&64)}),h.qa=h.qa&128|c&-129));break;case 4194162:c=0;0>b&&(h.Ha&=-129,0<h.fc.length&&(c=h.fc.shift(),0<h.fc.length&&setTimeout(function(){h.Ha|=128;h.Ha&64&&H(e,40,128,48)},50)));break;case 4194160:0>b?c=h.Ha:(c=I(this,h.Ha,a,b,d),0<=c&&(h.Ha=h.Ha&128|c&-129));break;case 4194150:0>b?(c=f.K,f.K&=-129):(c=I(this,f.K,a,b,d),0<=c&&(c&64&&!f.Hb&&(setInterval(this.Pc.bind(this),25),f.Hb=1),f.K=c&-129));break;default:return e.L|=
|
||||
16,J(e,4,126)}break;case 4194048:f=this.C;switch(a&-2){case 4194048:c=I(this,f.Pb,a,b,d);0<=c&&(f.Pb=c);break;case 4194050:c=I(this,f.la,a,b,d);0<=c&&(f.la=c);break;case 4194052:c=I(this,f.S,a,b,d);0<=b&&0<=c&&(f.S=c&-36993|f.S&36992,f.S&1&&cc(this));break;case 4194054:c=I(this,f.Qb,a,b,d);0<=c&&(f.Qb=c);break;case 4194056:c=I(this,f.Ob,a,b,d);0<=c&&(f.Ob=c);break;case 4194058:c=I(this,f.ta,a,b,d);0<=c&&(f.ta=c);break;case 4194060:break;case 4194062:c=I(this,f.xc,a,b,d);0<=c&&(f.xc=c);break;default:return e.L|=
|
||||
16,J(e,4,128)}break;case 4193728:var g=this.J;f=g.Ba&7;switch(a&-2){case 4193728:c=I(this,g.U,a,b,d);0<=b&&0<=c&&(g.$a=g.$a&60|c>>8&3,g.U=c&17279|g.U&34944|2048,c&1&&g.U&128?gc(this,f):192==(c&192)&&H(e,0,160,172));break;case 4193730:c=I(this,g.vb,a,b,d);0<=c&&(g.vb=c);break;case 4193732:c=I(this,g.tb,a,b,d);0<=c&&(g.tb=c&65534);break;case 4193734:c=I(this,g.Ca[f],a,b,d);0<=c&&(g.Ca[f]=c&7967);break;case 4193736:c=I(this,g.Ba,a,b,d);0<=c&&(g.Ba=c&63|g.Ba&65472,c&128&&fc(this));break;case 4193738:c=
|
||||
g.pa[f];break;case 4193740:c=g.ub[f];break;case 4193742:c=I(this,g.kb,a,b,d);0<=c&&(g.kb=c&255);break;case 4193744:c=g.bd[f];break;case 4193746:c=I(this,g.yc,a,b,d);0<=c&&(g.yc=c);break;case 4193748:c=I(this,g.zc[f],a,b,d);0<=c&&(g.zc[f]=c&1023);break;case 4193750:c=8210;break;case 4193752:c=g.cd[f];break;case 4193754:c=I(this,g.Ac[f],a,b,d);0<=c&&(g.Ac[f]=c);break;case 4193756:c=I(this,g.Pa[f],a,b,d);0<=c&&(g.Pa[f]=c&511);break;case 4193758:g.$b[f]=g.Pa[f];c=g.$b[f];break;case 4193760:c=g.$c[f];
|
||||
break;case 4193762:c=g.ad[f];break;case 4193764:c=g.Yc[f];break;case 4193766:c=g.Zc[f];break;case 4193768:c=I(this,g.$a,a,b,d);0<=c&&(g.$a=c&63,g.U=g.U&-769|(c&3)<<8);break;case 4193770:c=I(this,g.hc,a,b,d);0<=c&&(g.hc=c);break;default:return e.L|=16,J(e,4,132)}break;case 4192512:f=this.I;switch(a&-2){case 4192512:c=I(this,f.K,a,b,d);0<=b&&0<=c&&(f.Ua=f.Ua&60|c>>4&3,f.K=f.K&-1023|c&1022,f.K&128||ec(this));break;case 4192514:c=I(this,f.Eb,a,b,d);0<=c&&(f.Eb=c&65534);break;case 4192516:c=I(this,f.ca,
|
||||
a,b,d);0<=c&&(f.ca=c);break;case 4192518:c=I(this,f.Ya,a,b,d);0<=c&&(f.Ya=c);break;case 4192520:c=I(this,f.Ua,a,b,d);0<=c&&(f.Ua=c&63,f.K=f.K&-49|(f.Ua&3)<<4);break;default:return e.L|=16,J(e,4,134)}break;case 4191552:switch(a&-2){case 4191566:0>b?c=e.Ra:(c=I(this,e.Ra,a,b,d),0<=c&&(70!==e.gb&&(c&=-49),e.Ra=c,e.ib[0]=c&4?15:7,e.ib[1]=c&2?15:7,e.ib[3]=c&1?15:7,e.Ib&&(f=2,e.Ra&16&&(f=1),this.i.pb=this.i.pb&-8|f)));break;default:return e.L|=16,J(e,4,136)}break;case 4191424:f=a>>1&31;c=I(this,e.ka[0][f],
|
||||
a,b,d);0<=c&&(e.ka[0][f]=c,e.ka[0][f&15]&=65295);break;case 4191360:f=a>>1&31;c=I(this,e.ka[1][f],a,b,d);0<=c&&(e.ka[1][f]=c,e.ka[1][f&15]&=65295);break;case 4190400:case 4190336:if(70!==e.gb)return J(e,4,234);f=a>>2&31;c=e.Rb[f];a&2&&(c=c>>16);c&=65535;0<=b&&(c=I(this,c,a,b,d),0<=c&&(e.Rb[f]=a&2?c<<16|e.Rb[f]&65535:e.Rb[f]&4294901760|c&65534));break;case 4188672:case 4188736:case 4188800:case 4188864:case 4188928:case 4188992:case 4189056:case 4189120:if(0>b)c=Ob[a>>1&255];else return e.L|=16,J(e,
|
||||
4,138);break;default:return e.L|=16,J(e,4,142)}d&&0<=c&&(a&1?c=c>>8:c&=255);"undefined"===typeof c&&console.log("panic(76)");return c};var Pb={};Pb[4194302]=[null,null,Nb.prototype.Uc,Nb.prototype.fd];Qa(function(){for(var a=x(document,"pdp11","device"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Nb(c);eb(c,d)}});var jc;if(kb){var kc=new ArrayBuffer(2);(new DataView(kc)).setUint16(0,256,!0);jc=256===(new Uint16Array(kc))[0]}else jc=!1;var lc=jc;
|
||||
function G(a,b,d,c,f){this.id=mc+=2;this.b=null;this.A=a;this.Tb=b;this.size=d||0;this.type=c||nc;this.O=c==oc;this.controller=null;Db(this);this.Wa=this.Lc=!1;if(d)if(f)this.controller=f,this.b=null,pc(this,f.Cb);else if(kb)this.I=new ArrayBuffer(d),this.J=new DataView(this.I,0,d),this.G=new Uint8Array(this.I,0,d),this.P=new Uint16Array(this.I,0,d>>1),this.b=new Int32Array(this.I,0,d>>2),pc(this,lc?qc:rc);else{this.b=Array(d>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;pc(this,sc)}else pc(this)}
|
||||
var nc=0,oc=2,Jb=4,Lb=["NONE","RAM","ROM","VID","H/W"],mc=0;
|
||||
G.prototype={constructor:G,parent:null,Hb:function(a){this.A=a},save:function(){var a,b;if(this.controller)a=null;else if(kb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.J.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(this.controller)return null==a;if(a&&this.size==a.length<<2){var b;if(kb)for(b=0;b<a.length;b++)this.J.setInt32(b<<2,a[b],!0);else this.b=a;return this.Wa=!0}return!1},eb:function(a,b){b?0===this.j++&&tc(this,uc,!1):0===this.i++&&vc(this,uc,!1)},T:function(){this.H&&
|
||||
fb(this.H,129)&&this.H.message("attempt to read invalid block %"+r(this.A),!0);return 255},C:function(a,b){this.H&&fb(this.H,129)&&this.H.message("attempt to write "+r(b,4,!0)+" to invalid block %"+r(this.A),!0)},V:function(a,b){return this.sb(a++,b++)|this.sb(a,b)<<8},N:function(a,b,d){this.xb(a++,b&255,d++);this.xb(a,b>>8,d)},da:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ra:function(a){var b=a>>2;a=(a&3)<<3;var d=this.b[b]>>a;return 24>a?d&65535:d&255|(this.b[b+1]&255)<<8},za:function(a,
|
||||
b){var d=a>>2,c=(a&3)<<3;this.b[d]=this.b[d]&~(255<<c)|b<<c;this.Wa=!0},Bb: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.Wa=!0},$:function(a,b){if(this.H&&null!=this.A){var d=this.H;wc(d,this.A+a,1,d.Y)&&d.ma(!0)}return this.Nb(a,b)},ga:function(a,b){if(this.H&&null!=this.A){var d=this.H;wc(d,this.A+a,2,d.Y)&&d.ma(!0)}return this.gc(a,b)},xa:function(a,b,d){if(this.H&&null!=this.A){var c=this.H;
|
||||
wc(c,this.A+a,1,c.J)&&c.ma(!0)}this.O?this.C(a,b,d):this.yb(a,b,d)},Ja:function(a,b,d){if(this.H&&null!=this.A){var c=this.H;wc(c,this.A+a,2,c.J)&&c.ma(!0)}this.O?this.C(a,b,d):this.kc(a,b,d)},Y:function(a){return this.G[a]},aa:function(a){return this.G[a]},ea:function(a){return this.J.getUint16(a,!0)},ja:function(a){return a&1?this.G[a]|this.G[a+1]<<8:this.P[a>>1]},va:function(a,b){this.G[a]=b;this.Wa=!0},ya:function(a,b){this.G[a]=b;this.Wa=!0},Ia:function(a,b){this.J.setUint16(a,b,!0);this.Wa=
|
||||
!0},Sa:function(a,b){a&1?(this.G[a]=b,this.G[a+1]=b>>8):this.P[a>>1]=b;this.Wa=!0}};function Db(a,b,d){a.H=b;a.i=a.j=0;d&&((a.i=d.i)&&vc(a,uc,!1),(a.j=d.j)&&tc(a,uc,!1))}function xc(a,b){b?0===--a.j&&(a.xb=a.O?a.C:a.yb,a.Cc=a.O?a.N:a.kc):0===--a.i&&(a.sb=a.Nb,a.wc=a.gc)}function tc(a,b,d){d&&a.j||(a.xb=!a.O&&b[1]||a.C,a.Cc=!a.O&&b[3]||a.N);if(d||void 0===d)a.yb=b[1]||a.C,a.kc=b[3]||a.N}function vc(a,b,d){d&&a.i||(a.sb=b[0]||a.T,a.wc=b[2]||a.V);if(d||void 0===d)a.Nb=b[0]||a.T,a.gc=b[2]||a.V}
|
||||
function pc(a,b){b||(b=yc);vc(a,b,void 0);tc(a,b,void 0)}var yc=[],sc=[G.prototype.da,G.prototype.za,G.prototype.ra,G.prototype.Bb],uc=[G.prototype.$,G.prototype.xa,G.prototype.ga,G.prototype.Ja];if(kb)var rc=[G.prototype.Y,G.prototype.va,G.prototype.ea,G.prototype.Ia],qc=[G.prototype.aa,G.prototype.ya,G.prototype.ja,G.prototype.Sa];
|
||||
function zc(a,b){u.call(this,"CPU",a,zc,1);var d=a.multiplier||1;this.ya=a.cycles||b;this.jb=d;this.xa=Math.round(this.ya/1E4)/100;this.hb=this.xa*this.jb;this.u.ia=!1;this.u.jc=!1;this.u.Db=a.autoStart;this.u.sc=!1;this.u.ob=!1;this.Kb=this.Y=0;this.Lb=a.csStart;this.qb=a.csInterval;this.rb=a.csStop;this.ja=[];this.zb=this.lb.bind(this);A(this)}$a(zc);var Ac=["power","reset"];m=zc.prototype;
|
||||
m.Xa=function(a,b,d,c){this.i=a;this.G=b;this.H=c;for(b=0;b<Ac.length;b++)(d=this.O[Ac[b]])&&this.i.ua(null,Ac[b],d);this.da=null;a=Bc(a,"autoStart");null!=a&&(this.u.Db="true"==a?!0:"false"==a?!1:!!a);A(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};m.Na=function(a,b){if(!b){if(a&&this.restore){Cc(this);if(!this.restore(a))return!1;Dc(this)}else this.reset();this.H?this.H.Hb():this.g("No debugger detected")}Ec(this);return!0};
|
||||
m.Ma=function(a){return a?this.save():!0};m.Db=function(){return this.u.Db||!this.H&&void 0===this.O.run?(this.lb(!0),!0):!1};m.uc=function(){return 0};function Dc(a){void 0===a.Lb&&(a.Lb=0);void 0===a.qb&&(a.qb=-1);void 0===a.rb&&(a.rb=-1);a.u.ob=0<=a.Lb&&0<a.qb;a.u.ob&&(a.Kb=0,a.Y=a.Lb-a.V)}function Fc(a,b){if(a.u.ob){var d=!1;a.Kb=a.Kb+a.uc()|0;a.Y-=b;0>=a.Y&&(a.Y+=a.qb,d=!0);0<=a.rb&&a.rb<=Sc(a)&&(a.qb=a.rb=-1,Dc(a),a.ma(),d=!0);d&&a.g(Sc(a)+" cycles: checksum="+r(a.Kb))}}
|
||||
function Tc(a,b,d,c){if(a.O[b]){void 0===d&&(jb(a,"Value for "+b+" is invalid"),a.ma());var f=a.H&&a.H.xa||8;d=!a.u.ia||a.u.sc?8==f?ba(d,c):r(d,c):"--------".substr(0,c||4);a.O[b].textContent!=d&&(a.O[b].textContent=d)}}
|
||||
m.ua=function(a,b,d){var c=this;a=!1;switch(b){case "power":case "reset":this.O[b]=d;a=!0;break;case "run":this.O[b]=d;d.onclick=function(){var a;if(a=c.i)if(a=c.i,a.u.fa)a=!0;else{var b=null,d,g=cb(a.id);for(d=0;d<g.length&&(b=g[d],b===a||b.u.ready);d++);if(d==g.length)for(d=0;d<g.length&&(b=g[d],b===a||b.u.fa);d++);d==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.u.ready?"powered yet":"ready yet"+(b.Vb?" (waiting for notification)":""))+".");a=!1}a&&(c.u.ia?c.ma():c.lb())};
|
||||
a=!0;break;case "speed":this.O[b]=d;a=!0;break;case "setSpeed":this.O[b]=d,d.onclick=function(){Uc(c,c.jb<<1,!0)},d.textContent=this.hb.toFixed(2)+"Mhz",a=!0}return a};function Vc(a,b,d){a.V+=b;d&&(a.T=a.b=0)}function Wc(a,b){var d=1;b&&1<a.jb&&a.N&&(d=a.N/a.xa);a.Sa=Math.round(1E3/30);a.va=Math.floor(a.ya/30*d);b||(a.$=a.va);a.za=0}function Sc(a){return a.V+a.J+a.T-a.b}function Cc(a){a.N=0;a.mb=0;a.V=a.J=a.T=a.b=0;Dc(a);Uc(a,1)}
|
||||
function Uc(a,b,d){var c=!1;if(void 0!==b){.8>a.N/a.hb?b=1:c=!0;a.jb=b;b=a.xa*a.jb;if(a.hb!=b){a.hb=b;b=a.hb.toFixed(2)+"Mhz";var f=a.O.setSpeed;f&&(f.textContent=b);a.g("target speed: "+b)}d&&a.i&&a.i.Sb()}Vc(a,a.J);a.J=0;a.I=qa();a.P=0;Wc(a);return c}function Xc(a){a.T-=a.b;a.b=0}
|
||||
m.lb=function(a){if(gb(this,!0)){if(!this.u.ia){Uc(this);this.i&&this.i.start(this.I,Sc(this));this.u.ia=!0;this.u.jc=!0;this.da&&this.da.start();var b=this.O.run;b&&(b.textContent="Halt");this.i&&(this.i.wa(!0),a&&this.i.Sb(!0))}this.za>=this.ya&&Wc(this,!0);this.ea=0;this.ra=qa();this.P&&(a=this.ra-this.P,a>this.Sa&&(this.I+=a,this.I>this.ra&&(this.I=this.ra)));try{do{for(var d,c=this.u.ob?1:this.va,f=this.ja.length-1;0<=f;f--){var e=this.ja[f];0>e[0]||c>e[0]&&(c=e[0])}d=c;try{this.wb(d)}catch(l){if("number"!=
|
||||
typeof l)throw l;}var h=this.T-this.b;a=h;for(var g=this.ja.length-1;0<=g;g--){var k=this.ja[g];0>k[0]||(k[0]-=a,0>=k[0]&&(k[0]=-1,k[1]()))}this.ea+=h;this.J+=h;Vc(this,0,!0);Fc(this,h);this.$-=h;if(0>=this.$){this.$+=this.va;15<=++this.mb&&(this.i&&this.i.wa(),this.mb=0);break}}while(this.u.ia)}catch(l){this.ma();Ec(this);this.i&&this.i.stop(qa(),Sc(this));gb(this,!1);jb(this,l.stack||l.message);return}d=setTimeout;c=this.zb;this.P=qa();f=this.Sa;this.ea&&(f=Math.round(f*this.ea/this.va));f=f-(this.P-
|
||||
this.ra);if(e=this.P-this.I)this.N=Math.round(this.J/(10*e))/100,864E5<=e&&(this.V=0,Uc(this));if(0>f||this.N<this.hb)-1E3>f&&(this.I-=f),f=0;this.za+=this.ea;this.P+=f;d(c,f)}else Ec(this),this.i&&this.i.stop(qa(),Sc(this))};m.wb=function(){return 0};m.ma=function(a){hb(this,!0);Xc(this);Vc(this,this.J);this.J=0;if(this.u.ia){this.u.ia=!1;this.da&&this.da.stop();var b=this.O.run;b&&(b.textContent="Run")}this.u.complete=a};function Ec(a,b){a.i&&a.i.wa(b)}
|
||||
function Yc(a){this.vc=+a.model||1170;this.Ub=a.resetAddr||0;zc.call(this,a,1E6);this.Ia=0;this.decode=Zc.bind(this);this.D=65536;this.B=32768;this.F=65535;this.w=32768;this.f=[0,0,0,0,0,0,0,this.Ub];this.Za=[0,0,0,0,0,0];this.sa=[0,0,0,0];this.memory=[];this.j=[];this.ga=this.Xb=0;this.Oa=2;this.Qa=255;this.W=0;this.aa=-1;this.L=0;this.gb=70;this.Wb=this.Jb=this.Ib=this.C=this.Ra=this.Ab=this.Da=this.ba=0;this.ib=[7,7,7,7];this.ka=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.Rb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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.ec=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.u.complete=this.u.Ic=!1}$a(Yc,zc);m=Yc.prototype;
|
||||
m.reset=function(){this.u.ia&&this.ma();$c(this);Cc(this);this.u.error=!1;this.parent.reset.call(this)};function $c(a){a.Qa=255;a.L=0;a.j=[];a.Xb=0;a.ba=a.Da=a.Ab=a.Ra=a.Ib=0;a.ib[0]=a.ib[1]=a.ib[3]=7;a.Jb=0}m.uc=function(){return 0};
|
||||
m.save=function(){var a=new ad(this);M(a,0,[]);M(a,1,[this.Ja,this.V,this.jb]);for(var b=this.G,d=0,c=[],f=0;f<b.C;f++){var e=b.R[f];if(e.Wa||e.Lc){c[d++]=f;var h=d++;a:if(e=e.save()){for(var g=0,k=0,l=[];g<e.length;){for(var n=e[g],p=g+1;p<e.length&&e[p]===n;)p++;l[k++]=p-g;l[k++]=n;g=p}if(l.length<e.length){e=l;break a}}c[h]=e}}M(a,2,c);return a.data()};
|
||||
m.restore=function(a){var b=a[1];this.Ja=b[0];this.V=b[1];Uc(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],f=a[d+1];if(f&&f.length<b.T){for(var e=0,h=Array(b.T),g=0;g<f.length-1;)for(var k=f[g++],l=f[g++];k--;)h[e++]=l;f=h}e=b.R[c];if(!e||!e.restore(f)){t("Unable to restore memory block "+c);b=!1;break a}}b=!0}return b};
|
||||
m.ua=function(a,b,d){var c=!1;switch(b){case "R0":case "R1":case "R2":case "R3":case "R4":case "R5":case "R6":case "R7":case "NF":case "ZF":case "VF":case "CF":case "PS":this.O[b]=d;this.Ia++;c=!0;break;default:c=this.parent.ua.call(this,a,b,d)}return c};
|
||||
m.wa=function(a){if(this.Ia&&(a||!this.u.ia||this.u.sc)){for(a=0;a<this.f.length;a++)Tc(this,"R"+a,this.f[a]);a=ac(this);Tc(this,"PS",a);Tc(this,"NF",a&8?1:0,1);Tc(this,"ZF",a&4?1:0,1);Tc(this,"VF",a&2?1:0,1);Tc(this,"CF",a&1?1:0,1)}if(a=this.O.speed)a.textContent=this.u.ia&&this.N?this.N.toFixed(2)+"Mhz":"Stopped"};
|
||||
function H(a,b,d,c,f){for(var e=a.j.length;0<e--;)if(a.j[e].ed===c){0<e&&(a.j[e-1].Ea+=a.j[e].Ea);a.j.splice(e,1);break}if(0<=b){2===a.ga&&(b=0,a.ga=0,setTimeout(a.zb,0));for(e=a.j.length;0<e--;){if(a.j[e].Ea>b){a.j[e].Ea-=b;break}b-=a.j[e].Ea}a.j.splice(e+1,0,{delay:b,priority:d&224,vector:c,callback:f})}a.Oa=2}function ac(a){return a.M=a.M&63728|(a.w&32768?8:0)|(a.F&65535?0:4)|(a.B&32768?2:0)|(a.D&65536?1:0)}
|
||||
function bc(a,b){a.w=b<<12;a.F=~b&4;a.B=b<<14;a.D=b<<16;if((b^a.M)&2048)for(var d=a.Za.length;0<=--d;){var c=a.f[d];a.f[d]=a.Za[d];a.Za[d]=c}a.C=b>>14&3;d=a.M>>14&3;a.C!=d&&(a.sa[d]=a.f[6],a.f[6]=a.sa[a.C]);a.Oa=2;a.M=b}function bd(a,b){a.W&128||(a.w=a.F=b,a.B=0)}function cd(a,b,d,c){a.W&128||(a.w=a.F=a.D=b,a.B=(d^c)&(c^b))}
|
||||
function J(a,b,d){var c,f,e=0;0>a.aa?a.aa=ac(a):a.C||(b=4,e=1);a.ba&57344||(a.Da=63222,a.Ab=b);a.C=0;0<=(c=N(a,b|65536))&&0<=(f=N(a,b+2&65535|65536))&&(bc(a,f&53247|a.aa>>2&12288),e&&(a.L|=4,a.f[6]=4),0<=dd(a,a.aa)&&0<=dd(a,a.f[7])&&(a.f[7]=c));a.W&=-113;a.aa=-1;throw b|d<<8;}function ic(a,b){var d=b>>13&31;31>d?a.Ra&32&&(b=a.Rb[d]+(b&8190)&4194302,3932160<=b&&4186112>b&&console.log("panic(898)")):b|=4186112;return b}
|
||||
function ed(a,b,d){var c,f,e,h=0;if(d&a.Ib){c=b>>13&a.ib[a.C];f=a.ka[a.C][c];e=(a.ka[a.C][c+16]<<6)+(b&8191)&4194303;a.Ra&16?3932160<=e&&4186112>e&&(e=ic(a,e&262143)):(e&=262143,253952<=e&&(e|=4186112));3932160>e&&(3915776<=e&&(a.L|=32,J(a,4,24)),e&1&&!(d&1)&&(a.L|=64,J(a,4,26)));switch(f&7){case 1:h=4096;case 2:f|=128;d&B&&(h=8192);break;case 4:h=4096;case 5:d&B&&(h=4096);case 6:f|=d&B?192:128;break;default:h=32768}32512!==(f&32520)&&(f&8?f&32512&&(b&8128)<(f>>2&8128)&&(h|=16384):(b&8128)>(f>>2&
|
||||
8128)&&(h|=16384));a.ka[a.C][c]=f;if(4194170!==e||a.C)a.Jb=a.C,a.Wb=c;h&&(h&57344&&(0<=a.aa&&(h|=128),a.ba&57344||(a.ba=a.ba|h|a.Jb<<5|a.Wb<<1),J(a,168,28)),a.ba&61440||!(4191360>e||4194239<e)||(a.ba|=4096,a.ba&512&&(a.W|=32)))}else e=b&65535,57344<=e?e|=4186112:e&1&&!(d&1)&&(a.L|=64,J(a,4,22));return e}function L(a,b){return 4194304<=b?a.f[b-4194304]:0<=b?a.G.Ga(b):b}function K(a,b,d){d&=65535;return 4194304<=b?a.f[b-4194304]=d:0<=b?(a.G.ic(b,d),d):b}
|
||||
function O(a,b){return 4194304<=b?a.f[b-4194304]&255:0<=b?a.G.Gb(b):b}function P(a,b,d){d&=255;return 4194304<=b?a.f[b-4194304]=a.f[b-4194304]&65280|d:0<=b?(a.G.ac(b,d),d):b}function N(a,b){return L(a,ed(a,b,lb))}function fd(a){var b=N(a,a.f[6]|65536);0<=b&&(a.f[6]=a.f[6]+2&65535);return b}function dd(a,b){var d,c;a.f[6]=c=a.f[6]-2&65535;a.ba&57344||(a.Da=a.Da<<8|246);!a.C&&c<=a.Qa&&4<c&&(c<=a.Qa-32?(a.L|=4,a.f[6]=4,J(a,4,32)):(a.L|=8,a.W|=4));return 0<=(d=ed(a,c|65536,B))?K(a,d,b):d}
|
||||
function gd(a,b,d){var c,f,e=b&7;switch(b>>3&7){case 0:J(a,4,34);break;case 1:return 6===e&&!a.C&&d&B&&(a.f[6]<=a.Qa||65534<=a.f[6])&&(a.f[6]<=a.Qa-32||65534<=a.f[6]?(a.L|=4,a.f[6]=4,J(a,4,36)):(a.L|=8,a.W|=64)),7===e?a.f[e]:a.f[e]|65536;case 2:f=2;c=a.f[e];7!==e&&(c|=65536,6>e&&d&1&&(f=1));break;case 3:f=2;c=a.f[e];7!==e&&(c|=65536);if(0>(c=N(a,c)))return c;c|=65536;break;case 4:f=-2;6>e&&d&1&&(f=-1);c=a.f[e]+f&65535;7!==e&&(c|=65536);break;case 5:f=-2;c=a.f[e]-2&65535;7!==e&&(c|=65536);if(0>(c=
|
||||
N(a,c)))return c;c|=65536;break;case 6:if(0>(c=N(a,a.f[7])))return c;a.f[7]=a.f[7]+2&65535;c=c+a.f[e]&65535;return c|65536;case 7:if(0>(c=N(a,a.f[7])))return c;a.f[7]=a.f[7]+2&65535;c=c+a.f[e]&65535;return 0>(c=N(a,c|65536))?c:c|65536}a.f[e]=a.f[e]+f&65535;a.ba&57344||(a.Da=a.Da<<8|f<<3&248|e);6===e&&!a.C&&d&B&&0>=f&&(a.f[6]<=a.Qa||65534<=a.f[6])&&(a.f[6]<=a.Qa-32?(a.L|=4,a.f[6]=4,J(a,4,38)):(a.L|=8,a.W|=64));return c}
|
||||
function R(a,b,d){var c;return b&56?(0<=(c=gd(a,b,d))&&(c=ed(a,c,d)),c):4194304+(b&7)}function S(a,b){var d;b&56?(d=R(a,b,lb),d=L(a,d)):d=a.f[b&7];return d}function hd(a,b){var d;b&56?(d=R(a,b,wb),d=O(a,d)):d=a.f[b&7]&255;return d}function id(a,b,d,c){b&56?(b=R(a,b,F),K(a,b,c.call(a,d,L(a,b)))):(b&=7,a.f[b]=c.call(a,d,a.f[b]))}function jd(a,b,d,c){b&56?(b=R(a,b,yb),P(a,b,c.call(a,d,O(a,b)))):(b&=7,a.f[b]=c.call(a,d,a.f[b]))}function T(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.wb=function(a){this.u.complete=!0;var b=this.u.Ic=this.H&&kd(this.H),d=a?this.u.jc?0:1:-1;this.u.jc=!1;this.T=this.b=a;this.Ja&256?(Xc(this),a=!1):a=!0;if(a){do{if(b){if(ld(this.H,this.f[7],d)){this.ma();break}d=1}var c,f,e,h,g;this.W&112&&(this.W&32?J(this,168,52):this.W&64?J(this,4,54):this.W&16&&J(this,12,56),this.W&=-113);if(this.Oa)if(1===this.Oa)this.Oa=2;else{this.Oa=0;f=-1;c=this.Xb&224;if(0<(a=this.j.length))for(;0<a--;){if(0<this.j[a].Ea){this.j[a].Ea--;this.Oa=2;break}if(this.j[a].pc){if(!this.j[a].pc()){this.j.splice(a,
|
||||
1);f--;continue}this.j[a].pc=null}this.j[a].Tc>c&&(c=this.j[a].Tc,f=a)}c>(this.M&224)&&(0>f?J(this,160,42):(J(this,this.j[f].ed,44),this.j.splice(f,1)))}this.ba&57344||(this.Da=0,this.Ab=this.f[7]);this.W=this.M&16;a=N(this,this.f[7]);this.f[7]=this.f[7]+2&65535;this.decode(a);if(0<=a)switch(a&61440){default:switch(a&65024){case 2048:0<=(h=gd(this,a,0))&&(g=a>>6&7,0<=dd(this,this.f[g])&&(this.f[g]=this.f[7],this.f[7]=h&65535));break;case 28672:0<=(c=S(this,a))&&(g=a>>6&7,c&32768&&(c|=-65536),f=this.f[g],
|
||||
f&32768&&(f|=-65536),a=~~(c*f),this.f[g]=a>>16&65535,this.f[g|1]=a&65535,this.w=a>>16,this.F=this.w|a,this.D=this.B=0,-32768>a||32767<a)&&(this.D=65536);break;case 29184:0<=(c=S(this,a))&&(c?(g=a>>6&7,f=this.f[g]<<16|this.f[g|1],this.D=this.B=0,c&32768&&(c|=-65536),a=~~(f/c),-32768<=a&&32767>=a?(this.f[g]=a&65535,this.f[g|1]=f-a*c&65535,this.F=a>>16|a,this.w=a>>16):(this.B=32768,this.F=a>>15|a,this.w=f>>16,-1===c&&65534===this.f[g]&&(this.f[g]=this.f[g|1]=1))):(this.F=this.w=0,this.B=32768,this.D=
|
||||
65536));break;case 29696:0<=(c=S(this,a))&&(g=a>>6&7,a=this.f[g],a&32768&&(a|=4294901760),this.D=this.B=0,c&=63,c&32?(c=64-c,16<c&&(c=16),this.D=a<<17-c,a=a>>c):c&&(16<c?(this.B=a,a=0):(this.D=a=a<<c,(f=a>>15&65535)&&65535!==f&&(this.B=32768))),this.f[g]=a&65535,this.w=this.F=a);break;case 30208:if(0<=(c=S(this,a))){g=a>>6&7;f=this.f[g]<<16|this.f[g|1];this.D=this.B=0;c&=63;if(c&32)c=64-c,32<c&&(c=32),a=f>>c-1,this.D=a<<16,a>>=1,f&2147483648&&(a|=4294967295<<32-c);else if(c){if(a=f<<c-1,this.D=a>>
|
||||
15,a<<=1,32<c&&(c=32),f>>=32-c)f|=4294967295<<c&4294967295,4294967295!==f&&(this.B=32768)}else a=f;this.f[g]=a>>16&65535;this.f[g|1]=a&65535;this.w=a>>16;this.F=a>>16|a}break;case 30720:a&56?0<=(f=L(this,e=R(this,a,F)))&&(f^=this.f[a>>6&7],0<=K(this,e,f)&&(this.w=this.F=f,this.B=0)):(this.w=this.F=f=this.f[a&7]^=this.f[a>>6&7],this.B=0);break;case 32256:g=a>>6&7;if(this.f[g]=this.f[g]-1&65535)this.f[7]=this.f[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.f[7]=T(this.f[7],a);break;
|
||||
case 512:this.F&65535&&(this.f[7]=T(this.f[7],a));break;case 768:this.F&65535||(this.f[7]=T(this.f[7],a));break;case 1024:(this.w&32768)===(this.B&32768)&&(this.f[7]=T(this.f[7],a));break;case 1280:(this.w&32768)!==(this.B&32768)&&(this.f[7]=T(this.f[7],a));break;case 1536:this.F&65535&&(this.w&32768)===(this.B&32768)&&(this.f[7]=T(this.f[7],a));break;case 1792:this.F&65535&&(this.w&32768)===(this.B&32768)||(this.f[7]=T(this.f[7],a));break;case 32768:this.w&32768||(this.f[7]=T(this.f[7],a));break;
|
||||
case 33280:!(this.D&65536)&&this.F&65535&&(this.f[7]=T(this.f[7],a));break;case 33024:this.w&32768&&(this.f[7]=T(this.f[7],a));break;case 33536:if(this.D&65536||!(this.F&65535))this.f[7]=T(this.f[7],a);break;case 33792:this.B&32768||(this.f[7]=T(this.f[7],a));break;case 34048:this.B&32768&&(this.f[7]=T(this.f[7],a));break;case 34304:this.D&65536||(this.f[7]=T(this.f[7],a));break;case 34560:this.D&65536&&(this.f[7]=T(this.f[7],a));break;case 34816:J(this,24,2);break;case 35072:J(this,28,4);break;default:switch(a&
|
||||
65472){case 64:0<=(h=gd(this,a,0))&&(this.f[7]=h&65535);break;case 192:a&56?0<=(f=L(this,e=R(this,a,F)))&&(a=f<<8|f>>8,0<=K(this,e,a)&&(this.w=this.F=f&65280,this.B=this.D=0)):(g=a&7,f=this.f[g],this.f[g]=(f<<8|f>>8)&65535,this.w=this.F=f&65280,this.B=this.D=0);break;case 2560:a&56?0<=(e=R(this,a,B))&&0<=K(this,e,0)&&(this.w=this.D=this.B=this.F=0):this.w=this.D=this.B=this.F=this.f[a&7]=0;break;case 2624:0<=(f=L(this,e=R(this,a,F)))&&(a=~f,0<=K(this,e,a)&&(this.w=this.F=a,this.D=65536,this.B=0));
|
||||
break;case 2688:a&56?0<=(f=L(this,e=R(this,a,F)))&&(a=f+1,0<=K(this,e,a)&&(this.w=this.F=a,this.B=a&(a^f))):(g=a&7,f=this.f[g],a=f+1,this.f[g]=a&65535,this.w=this.F=a,this.B=a&(a^f));break;case 2752:a&56?0<=(f=L(this,e=R(this,a,F)))&&(a=f-1,0<=K(this,e,a)&&(this.w=this.F=a,this.B=(a^f)&f)):(g=a&7,f=this.f[g],a=f-1,this.f[g]=a&65535,this.w=this.F=a,this.B=(a^f)&f);break;case 2816:0<=(f=L(this,e=R(this,a,F)))&&(a=-f,0<=K(this,e,a)&&(this.D=this.w=this.F=a,this.B=a&f));break;case 2880:0<=(f=L(this,e=
|
||||
R(this,a,F)))&&(a=f+(this.D>>16&1),0<=K(this,e,a)&&(this.D=this.w=this.F=a,this.B=a&(a^f)));break;case 2944:0<=(f=L(this,e=R(this,a,F)))&&(a=f-(this.D>>16&1),0<=K(this,e,a)&&(this.D=this.w=this.F=a,this.B=(a^f)&f));break;case 3008:0<=(f=S(this,a))&&(this.w=this.F=f,this.D=this.B=0);break;case 3072:a&56?0<=(f=L(this,e=R(this,a,F)))&&(a=(this.D&65536|f)>>1,0<=K(this,e,a)&&(this.D=f<<16,this.w=this.F=a,this.B=a^this.D>>1)):(g=a&7,f=this.f[g],a=(this.D&65536|f)>>1,this.f[g]=a&65535,this.D=f<<16,this.w=
|
||||
this.F=a,this.B=a^this.D>>1);break;case 3136:a&56?0<=(f=L(this,e=R(this,a,F)))&&(a=f<<1|this.D>>16&1,0<=K(this,e,a)&&(this.D=this.w=this.F=a,this.B=a^f)):(g=a&7,f=this.f[g],a=f<<1|this.D>>16&1,this.f[g]=a&65535,this.D=this.w=this.F=a,this.B=a^f);break;case 3200:a&56?0<=(f=L(this,e=R(this,a,F)))&&(a=f&32768|f>>1,0<=K(this,e,a)&&(this.D=f<<16,this.w=this.F=a,this.B=this.w^this.D>>1)):(g=a&7,f=this.f[g],a=f&32768|f>>1,this.f[g]=a&65535,this.D=f<<16,this.w=this.F=a,this.B=this.w^this.D>>1);break;case 3264:a&
|
||||
56?0<=(f=L(this,e=R(this,a,F)))&&(a=f<<1,0<=K(this,e,a)&&(this.D=this.w=this.F=a,this.B=a^f)):(g=a&7,f=this.f[g],a=f<<1,this.f[g]=a&65535,this.D=this.w=this.F=a,this.B=a^f);break;case 3328:h=this.f[7]+((a&63)<<1)&65535;0<=(c=N(this,h|65536))&&(this.f[7]=this.f[5],this.f[5]=c,this.f[6]=h+2&65535);break;case 3392:a&56?0<=(h=gd(this,a,0))&&(61440!==(this.M&61440)&&(h&=65535),this.C=this.M>>12&3,0<=(c=N(this,h))&&(this.C=this.M>>14&3,0<=dd(this,c)&&(this.w=this.F=c,this.B=0))):(g=a&7,c=6!==g||(this.M>>
|
||||
2&12288)===(this.M&12288)?this.f[g]:this.sa[this.M>>12&3],0<=dd(this,c)&&(this.w=this.F=c,this.B=0));break;case 3456:0<=(f=fd(this))&&((this.ba&57344||(this.Da=22),a&56)?0<=(h=gd(this,a,0))&&(h&=65535,this.C=this.M>>12&3,0<=(e=ed(this,h,B))&&(this.C=this.M>>14&3,0<=K(this,e,f)&&(this.w=this.F=f,this.B=0))):(g=a&7,6!==g||(this.M>>2&12288)===(this.M&12288)?this.f[g]=f:this.sa[this.M>>12&3]=f,this.w=this.F=f,this.B=0));break;case 3520:0<=(e=R(this,a,B))&&(a=-(this.w>>15&1),0<=K(this,e,a)&&(this.F=a,
|
||||
this.B=0));break;case 35328:a&56?0<=(e=R(this,a,xb))&&0<=P(this,e,0)&&(this.w=this.D=this.B=this.F=0):(this.f[a&7]&=65280,this.w=this.D=this.B=this.F=0);break;case 35392:0<=(f=O(this,e=R(this,a,yb)))&&(a=~f,0<=P(this,e,a)&&(this.w=this.F=a<<8,this.D=65536,this.B=0));break;case 35456:0<=(f=O(this,e=R(this,a,yb)))&&(a=f+1,0<=P(this,e,a)&&(this.w=this.F=a<<8,this.B=(a&(a^f))<<8));break;case 35520:0<=(f=O(this,e=R(this,a,yb)))&&(a=f-1,0<=P(this,e,a)&&(this.w=this.F=a<<8,this.B=((a^f)&f)<<8));break;case 35584:0<=
|
||||
(f=O(this,e=R(this,a,yb)))&&(a=-f,0<=P(this,e,a)&&(this.D=this.w=this.F=a<<8,this.B=(a&f)<<8));break;case 35648:0<=(f=O(this,e=R(this,a,yb)))&&(a=f+(this.D>>16&1),0<=P(this,e,a)&&(this.w=this.F=this.D=a<<8,this.B=(a&(a^f))<<8));break;case 35712:0<=(f=O(this,e=R(this,a,yb)))&&(a=f-(this.D>>16&1),0<=P(this,e,a)&&(this.w=this.F=this.D=a<<8,this.B=((a^f)&f)<<8));break;case 35776:0<=(f=hd(this,a))&&(this.w=this.F=f<<8,this.D=this.B=0);break;case 35840:0<=(f=O(this,e=R(this,a,yb)))&&(a=((this.D&65536)>>
|
||||
8|f)>>1,0<=P(this,e,a)&&(this.D=f<<16,this.w=this.F=a<<8,this.B=this.w^this.D>>1));break;case 35904:0<=(f=O(this,e=R(this,a,yb)))&&(a=f<<1|this.D>>16&1,0<=P(this,e,a)&&(this.D=this.w=this.F=a<<8,this.B=(a^f)<<8));break;case 35968:0<=(f=O(this,e=R(this,a,yb)))&&(a=f&128|f>>1,0<=P(this,e,a)&&(this.D=f<<16,this.w=this.F=a<<8,this.B=this.w^this.D>>1));break;case 36032:0<=(f=O(this,e=R(this,a,yb)))&&(a=f<<1,0<=P(this,e,a)&&(this.D=this.w=this.F=a<<8,this.B=(a^f)<<8));break;case 36160:a&56?0<=(h=gd(this,
|
||||
a,0))&&(this.C=this.M>>12&3,0<=(c=N(this,h|65536))&&(this.C=this.M>>14&3,0<=dd(this,c)&&(this.w=this.F=c,this.B=0))):(g=a&7,c=6!==g||(this.M>>2&12288)===(this.M&12288)?this.f[g]:this.sa[this.M>>12&3],0<=dd(this,c)&&(this.w=this.F=c,this.B=0));break;case 36224:0<=(f=fd(this))&&((this.ba&57344||(this.Da=22),a&56)?0<=(h=gd(this,a,0))&&(this.C=this.M>>12&3,0<=(e=ed(this,h|65536,B))&&(this.C=this.M>>14&3,0<=K(this,e,f)&&(this.w=this.F=f,this.B=0))):(g=a&7,6!==g||(this.M>>2&12288)===(this.M&12288)?this.f[g]=
|
||||
f:this.sa[this.M>>12&3]=f,this.w=this.F=f,this.B=0));break;default:switch(a&65528){case 128:0<=(c=fd(this))&&(g=a&7,this.f[7]=this.f[g],this.f[g]=c);break;case 152:this.M&49152||(this.M=this.M&63519|(a&7)<<5,this.Oa=1);break;case 160:case 168:a&1&&(this.D=0);a&2&&(this.B=0);a&4&&(this.F=1);a&8&&(this.w=0);break;case 176:case 184:a&1&&(this.D=65536);a&2&&(this.B=32768);a&4&&(this.F=0);a&8&&(this.w=32768);break;default:switch(a){case 0:49152&this.M?(this.L|=128,J(this,4,46)):(this.ga=3,Xc(this),console.log("HALT at "+
|
||||
this.f[7].toString(8)));break;case 1:f=0;if(0<(a=this.j.length))for(;0<a--;)f+=this.j[a].Ea,this.j[a].Ea=0;0===f&&0===this.ga&&(this.ga=2,Xc(this));break;case 3:J(this,12,6);break;case 4:J(this,16,8);break;case 5:this.M&49152||($c(this),this.G.reset());break;case 2:case 6:e=this.f[6];0<=(h=N(this,e|65536))&&(e=e+2&65535,0<=(c=N(this,e|65536))&&(this.f[6]=e+2&65535,c&=63743,this.M&49152&&(c=c&63519|this.M&63712),this.f[7]=h,bc(this,c),this.W&=-17,2===a&&(this.W|=this.M&16)));break;default:J(this,8,
|
||||
48)}}}}}}}while(0<this.b)}return this.u.complete?this.T-this.b:void 0===this.u.complete?0:-1};Qa(function(){for(var a=x(document,"pdp11","cpu"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Yc(c);eb(c,d)}});function md(a,b){var d=a+b;this.W&128||(this.w=this.F=this.D=d,this.B=(a^d)&(b^d));return d&65535}function nd(a,b){var d=~a&b;bd(this,d);return d}function od(a,b){var d=~a&b;bd(this,d<<8);return d}function pd(a,b){var d=a|b;bd(this,d);return d}function qd(a,b){var d=a|b;bd(this,d<<8);return d}
|
||||
function rd(a,b){var d=b-a;cd(this,d,a,b);return d&65535}function sd(){--this.b}function td(){--this.b}function ud(){--this.b}function vd(){--this.b}function wd(){--this.b}function xd(){--this.b}function yd(){--this.b}function U(){J(this,8,48)}function Zc(a){zd[a>>12].call(this,a)}
|
||||
var zd=[function(a){Ad[a>>8&15].call(this,a)},function(a){var b=S(this,a>>6);a&56?K(this,R(this,a,B),b):this.f[a&7]=b;bd(this,b);--this.b},function(a){var b=S(this,a>>6);a=S(this,a);cd(this,b-a,a,b);--this.b},function(a){bd(this,S(this,a>>6)&S(this,a));--this.b},function(a){id(this,a,S(this,a>>6),nd);--this.b},function(a){id(this,a,S(this,a>>6),pd);--this.b},function(a){id(this,a,S(this,a>>6),md);--this.b},function(a){Bd[a>>8&15].call(this,a)},function(a){Cd[a>>8&15].call(this,a)},function(a){var b=
|
||||
hd(this,a>>6),b=b&128?b|65280:b;a&56?(b&=255,P(this,R(this,a,xb),b)):this.f[a&7]=b;bd(this,b<<8);--this.b},function(a){var b=hd(this,a>>6)<<8;a=hd(this,a)<<8;cd(this,b-a,a,b);--this.b},function(a){bd(this,(hd(this,a>>6)&hd(this,a))<<8);--this.b},function(a){jd(this,a,hd(this,a>>6),od);--this.b},function(a){jd(this,a,hd(this,a>>6),qd);--this.b},function(a){id(this,a,S(this,a>>6),rd);--this.b},U],Ad=[function(a){Dd[a>>4&15].call(this,a)},function(){--this.b},function(){--this.b},function(){--this.b},
|
||||
function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},vd,vd,function(a){Ed[a>>6&3].call(this,a)},function(a){Fd[a>>6&3].call(this,a)},function(a){Gd[a>>6&3].call(this,a)},function(a){Hd[a>>6&3].call(this,a)},U,U],Dd=[function(a){Id[a&15].call(this,a)},U,U,U,U,U,U,U,U,U,function(){--this.b},function(){--this.b},U,U,U,U],Id=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},
|
||||
function(){--this.b},U,U,U,U,U,U,U,U],Bd=[wd,wd,ud,ud,sd,sd,td,td,yd,yd,U,U,U,U,xd,xd],Cd=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(a){Jd[a>>6&3].call(this,a)},function(a){Kd[a>>6&3].call(this,a)},function(a){Ld[a>>6&3].call(this,a)},function(a){Md[a>>6&3].call(this,a)},U,U],Ed=[function(){--this.b},function(){--this.b},function(){--this.b},
|
||||
function(){--this.b}],Fd=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b}],Gd=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b}],Hd=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b}],Jd=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b}],Kd=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b}],Ld=[function(){--this.b},function(){--this.b},
|
||||
function(){--this.b},function(){--this.b}],Md=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b}];function Nd(a){u.call(this,"ROM",a,Nd);this.i=null;this.J=a.addr;this.j=a.size;this.N=a.writable;this.C=a.alias;this.I=a.file;this.P=ca(this.I);if(this.I){a=this.I;var b=da(this.P);"json"!=b&&"hex"!=b&&(a=fa()+"/api/v1/dump?file="+this.I+"&format=bytes&decimal=true");var d=this;ua(a,null,!0,function(a,b,e){Od(d,a,b,e)})}}$a(Nd);
|
||||
Nd.prototype.Xa=function(a,b,d,c){this.G=b;this.b=d;this.H=c;Pd(this)};Nd.prototype.Na=function(){if(this.Ka){if(this.H){var a=this.H,b=this.id,d=this.J,c=this.j,f=this.Ka,e=[],h;for(h in f){var g=f[h];"number"==typeof g&&(f[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var n=e,k=[k>>>0,h],p=pa(n,k,a.qc);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.N.push({hd:b,A:d,Qc:c,Ka:f,mc:e})}delete this.Ka}return!0};Nd.prototype.Ma=function(){return!0};
|
||||
function Od(a,b,d,c){if(c)a.oa("Unable to load system ROM (error "+c+": "+b+")");else{bb(a.nc,b,d);var f;if("["==d.charAt(0)||"{"==d.charAt(0))try{var e,h,g=eval("("+d+")");if(e=g.bytes)a.i=e;else if(e=g.words)for(a.i=Array(2*e.length),h=f=0;f<e.length;f++)a.i[h++]=e[f]&255,a.i[h++]=e[f]>>8&255;else if(e=g.data)for(a.i=Array(4*e.length),h=f=0;f<e.length;f++)a.i[h++]=e[f]&255,a.i[h++]=e[f]>>8&255,a.i[h++]=e[f]>>16&255,a.i[h++]=e[f]>>24&255;else a.i=g;a.Ka=g.symbols;if(!a.i.length){t("Empty ROM: "+
|
||||
b);return}if(1==a.i.length){t(a.i[0]);return}}catch(k){a.oa("ROM data error: "+k.message);return}else for(b=d.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.i=Array(b.length),f=0;f<b.length;f++)a.i[f]=aa(b[f],16);Pd(a)}}
|
||||
function Pd(a){if(!ib(a))if(!a.I)A(a);else if(a.i&&a.G){a.j||(a.j=a.i.length);if(a.i.length!=a.j)jb(a,"ROM size ("+r(a.i.length,8,!0)+") does not match specified size ("+r(a.j,8,!0)+")");else{var b;b=a.J;if(Ib(a.G,b,a.j,a.N?1:oc)){var d;for(d=0;d<a.i.length;d++){var c=a.G,f=b+d;c.R[(f&c.i)>>>c.X].yb(f&c.G,a.i[d]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.C?b.push(a.C):null!=a.C&&a.C.length&&(b=a.C);for(d=0;d<b.length;d++){for(var e=a,c=b[d],f=e.G,h=e.j,g=[],k=e.J>>>f.X;0<h&&k<f.R.length;)g.push(f.R[k++]),
|
||||
h-=f.Aa;f=e.G;e=e.j;h=0;for(c>>>=f.X;0<e&&c<f.R.length;){k=g[h++];if(!k)break;f.R[c++]=k;e-=f.Aa}}delete a.i}}A(a)}}Qa(function(){for(var a=x(document,"pdp11","rom"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Nd(c);eb(c,d)}});function Qd(a){u.call(this,"RAM",a,Qd);this.C=a.addr;this.j=a.size;this.i=!1}$a(Qd);m=Qd.prototype;m.Xa=function(a,b,d,c){this.G=b;this.b=d;this.H=c;A(this)};m.Na=function(a,b){b||this.reset();return!0};m.Ma=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.i&&this.j&&Ib(this.G,this.C,this.j,1)&&(this.i=!0);this.i||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Qa(function(){for(var a=x(document,"pdp11","ram"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Qd(c);eb(c,d)}});function Rd(a){u.call(this,"Keyboard",a,Rd,65536);A(this)}$a(Rd);Rd.prototype.ua=function(){return!1};Rd.prototype.Xa=function(a,b,d,c){this.i=a;this.b=d;this.H=c;this.da=null};
|
||||
Qa(function(){for(var a=x(document,"pdp11","keyboard"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Rd(c);eb(c,d)}});function Sd(a){u.call(this,"Debugger",a,Sd);this.xa=a.base||16;this.$=this.Ja=this.P=0;this.da=!1;this.I=-1;this.C=[];this.ga={}}$a(Sd);var Td={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function re(a,b,d,c){if(d)if(b){0>a.I&&a.C.length&&(a.I=0);if(0>a.I||b!=a.C[a.I])a.C.splice(0,0,b),a.I=0;a.I--}else a.da?b="end":b=a.C[a.I+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");d=0;var f=null;c=c||";";for(var e=0;e<=b.length;e++){var h=b.charAt(e);if('"'==h||"'"==h)f?h==f&&(f=null):f=h;else if(h==c&&!f||!h)a.push(oa(b.substring(d,e))),d=e+1}}return a}
|
||||
function se(a,b,d){for(d=d||-1;d--&&b.length;){var c=b.pop();if(2>a.length)return!1;var f=a.pop(),e=a.pop();switch(c){case "*":c=e*f;break;case "/":if(!f)return!1;c=e/f;break;case "%":if(!f)return!1;c=e%f;break;case "+":c=e+f;break;case "-":c=e-f;break;case "<<":c=e<<f;break;case ">>":c=e>>f;break;case ">>>":c=e>>>f;break;case "<":c=e<f?1:0;break;case "<=":c=e<=f?1:0;break;case ">":c=e>f?1:0;break;case ">=":c=e>=f?1:0;break;case "==":c=e==f?1:0;break;case "!=":c=e!=f?1:0;break;case "&":c=e&f;break;
|
||||
0,3024,3103,65514,34562,0,264,8197,33779,5003,2574,32337,260,0,258,5579,12,6080,448,6081,450,6084,452,116,2,6084,65400,17860,65024,21956,62976,38848,65401,3200,161,76,0,16944,10797];m=Ob.prototype;
|
||||
m.Xa=function(a,b,d,c){this.H=b;this.b=d;this.I=c;switch(this.P){default:a=Qb;for(var f in a){var e=a[f];d=b;c=+f;for(var h=e[0]?e[0].bind(this):null,g=e[1]?e[1].bind(this):null,k=e[2]?e[2].bind(this):null,e=e[3]?e[3].bind(this):null,l=+f;l<=c;l+=2){var n=l&8191;void 0!==d.Ta[n]?t("I/O address already registered: "+r(d.P+n,8,!0)):d.Ta[n]=[h,g,k,e,!1]}}f=this.Ec.bind(this);b.J=this.reset.bind(this);b.Gb=f}y(this)};m.Uc=function(){return Rb(this.b)};
|
||||
m.fd=function(a){cc(this.b,a&-1809|Rb(this.b)&1808);this.b.V|=128};
|
||||
function dc(a){var b=a.C,d,c,f,e=b.ta>>13&7;"undefined"===typeof b.na[e]&&(b.na[e]={cache:[],postProcess:a.Vc,drive:e,blocksize:256,mapped:0,maxblock:b.cb[e]*b.Z[e],url:"rk"+e+".dsk"});b.S&=-129;switch(b.S>>1&7){case 0:b.Qb=2496;b.la=0;b.S=128;b.ta=0;break;case 1:if((b.ta>>4&511)>=b.cb[e]){b.la|=32832;b.S|=49152;break}if((b.ta&15)>=b.Z[e]){b.la|=32800;b.S|=49152;break}d=(b.ta>>4&511)*b.Z[e]+(b.ta&15);c=(b.S&48)<<12|b.Pb;f=65536-b.Rb&65535;ec(a,b.na[e],d,c,f);return;case 2:if((b.ta>>4&511)>=b.cb[e]){b.la|=
|
||||
32832;b.S|=49152;break}if((b.ta&15)>=b.Z[e]){b.la|=32800;b.S|=49152;break}d=(b.ta>>4&511)*b.Z[e]+(b.ta&15);c=(b.S&48)<<12|b.Pb;f=65536-b.Rb&65535;a.$b(b.na[e],d,c,f);return}b.Qb=e<<13|b.Qb&8176|b.ta%9&15;I(a.b,20,160,144,function(){b.S=b.S&65534|128;return!!(b.S&64)})}m.Vc=function(a,b,d,c,f){var e=this.C;e.Pb=c&65535;e.S=e.S&-49|c>>12&48;e.Rb=65536-f&65535;switch(a){case 1:e.la|=33024;e.S|=49152;break;case 2:e.la|=33792,e.S|=49152}I(this.b,20,160,144,function(){e.S=e.S&65534|128;return!!(e.S&64)})};
|
||||
function fc(a){var b=a.G,d,c,f,e=b.K>>8&3;b.K&=-2;"undefined"===typeof b.na[e]&&(b.na[e]={cache:[],postProcess:a.Wc,drive:e,blocksize:128,mapped:1,maxblock:b.cb[e]*b.Z[e],url:"rl"+e+".dsk"});switch(b.K>>1&7){case 2:b.Ya&8&&(b.K&=63);b.Ya=b.Fc[e]|b.ab&64;break;case 3:1==(b.da&3)&&(b.ab=b.da&4?b.ab+(b.da&65408)&65408|b.da<<2&64:b.ab-(b.da&65408)&65408|b.da<<2&64,b.da=b.ab);break;case 4:b.Ya=b.ab;break;case 5:if(b.da>>6>=b.cb[e]){b.K|=37888;break}if((b.da&63)>=b.Z[e]){b.K|=37888;break}d=(b.da>>6)*b.Z[e]+
|
||||
(b.da&63);c=(b.Ua&63)<<16|b.Fb;f=65536-b.Ya&65535;ec(a,b.na[e],d,c,f);return;case 6:if(b.da>>6>=b.cb[e]){b.K|=37888;break}if((b.da&63)>=b.Z[e]){b.K|=37888;break}d=(b.da>>6)*b.Z[e]+(b.da&63);c=(b.Ua&63)<<16|b.Fb;f=65536-b.Ya&65535;a.$b(b.na[e],d,c,f);return}I(a.b,20,160,112,function(){b.K|=129;return!!(b.K&64)})}
|
||||
m.Wc=function(a,b,d,c,f){var e=this.G;e.Fb=c&65535;e.K=e.K&-49|c>>12&48;e.Ua=c>>16&63;e.da=~~(d/e.Z[b.La])<<6|d%e.Z[b.La];e.ab=e.da;e.Ya=65536-f&65535;switch(a){case 1:e.K|=33792;break;case 2:e.K|=40960}I(this.b,20,160,112,function(){e.K|=129;return!!(e.K&64)})};function gc(a){a=a.J;a.U=2176;a.Ba=0;a.pa=[4544,4544,4544,4544,4544,4544,4544,4544];a.ub=[0,0,0,0,0,0,0,0];a.kb=a.vb=a.tb=a.$a=a.ic=0}
|
||||
function hc(a,b){var d=a.J,c,f,e;d.U&=-16513;d.Ba&=-2049;d.pa[b]&=-1153;I(a.b,-1,0,172);"undefined"===typeof d.na[b]&&(d.na[b]={cache:[],postProcess:a.Xc,drive:b,blocksize:256,mapped:0,maxblock:d.cc[0]*d.bb[0]*d.Z[0],url:"rp"+b+".dsk"});switch(d.U&63){case 5:d.ac[b]=d.Pa[b];d.U|=32896;d.pa[b]|=32896;d.kb|=1<<b;break;case 9:gc(a);break;case 19:d.pa[b]|=64;break;case 49:if(d.Pa[b]>=d.cc[0]||d.Ca[b]>>8>=d.bb[0]||(d.Ca[b]&255)>=d.Z[0]){d.ub[b]|=1024;d.U|=49152;break}c=(d.Pa[b]*d.bb[0]+(d.Ca[b]>>8))*d.Z[0]+
|
||||
(d.Ca[b]&255);f=(d.$a&63)<<16|d.tb;e=65536-d.vb&65535;ec(a,d.na[b],c,f,e);return;case 57:if(d.Pa[b]>=d.cc[0]||d.Ca[b]>>8>=d.bb[0]||(d.Ca[b]&255)>=d.Z[0]){d.ub[b]|=1024;d.U|=49152;break}c=(d.Pa[b]*d.bb[0]+(d.Ca[b]>>8))*d.Z[0]+(d.Ca[b]&255);f=(d.$a&63)<<16|d.tb;e=65536-d.vb&65535;a.$b(d.na[b],c,f,e);return}I(a.b,3,160,172,function(){d.U=d.U&65534|128;d.pa[b]|=128;return!!(d.U&64)})}
|
||||
m.Xc=function(a,b,d,c,f){var e=this.J;e.vb=65536-f&65535;e.tb=c&65535;e.U=e.U&-769|c>>8&768;e.$a=c>>16&63;f=~~(d/e.Z[0]);c=~~(f/e.bb[0]);e.Ca[b.La]=f%e.bb[0]<<8|d%e.Z[0];e.ac[b.La]=e.Pa[b.La]=c;e.kb|=1<<b.La;d>=b.Sc-1&&(e.pa[b.La]|=1024);switch(a){case 1:e.Ba|=512;e.U|=49152;break;case 2:e.Ba|=2048,e.U|=49152}I(this.b,20,160,172,function(){e.pa[b.La]|=128;e.U=e.U&65534|128;return!!(e.U&64)})};m.Pc=function(){this.F.K|=128;this.F.K&64&&I(this.b,0,192,64)};
|
||||
function ic(a,b,d,c,f,e){var h=~~((e+d.Va-1)/d.Va),g=new XMLHttpRequest;2048>h&&c+2048<d.Sc&&(h=2048);g.open("GET",d.url,!0);g.setRequestHeader("Range","bytes="+(c*d.Va<<1)+"-"+(((c+h)*d.Va<<1)-1));g.responseType="arraybuffer";g.onreadystatechange=function(){if(4==g.readyState){var h=b.bind(a),l,n,p,q;l=g.response;if(0!=g.status&&206!=g.status||!l)d.Zb(1,d,c,f,e);else{l=new Uint8Array(l);n=c;for(q=0;q<l.length;){if("undefined"===typeof d.cache[n])for(d.cache[n]=[],p=0;p<d.Va;p++)d.cache[n][p]=q<l.length?
|
||||
l[q]&255|l[q+1]<<8&65280:0,q+=2;else q+=d.Va<<1;n++}h(d,c,f,e)}}};g.send(null)}function J(a,b,d,c,f){if(d&1){if(!f)return K(a.b,4,122);c=0<=c?c<<8&65280|b&255:b}else 0<=c?f&&(c=b&65280|c&255):c=b;return c}m.$b=function(a,b,d,c){for(var f;0<c;){if("undefined"===typeof a.cache[b]){ic(this,this.$b,a,b,d,c);return}for(f=0;f<a.Va&&0<c;f++){if(0>L(this.b,a.Rc?jc(this.b,d):d,a.cache[b][f])){a.Zb(2,a,b,d,c);return}d+=2;--c}b++}a.Zb(0,a,b,d,c)};
|
||||
function ec(a,b,d,c,f){for(var e,h;0<f;){if("undefined"===typeof b.cache[d])for(b.cache[d]=[],e=0;e<b.Va;e++)b.cache[d][e]=0;for(e=0;e<b.Va&&0<f;e++){h=M(a.b,b.Rc?jc(a.b,c):c);if(0>h){b.Zb(2,b,d,c,f);return}b.cache[d][e]=h;c+=2;--f}d++}b.Zb(0,b,d,c,f)}m.reset=function(){this.g.pb=this.g.pb&-120|20;this.N.Ia=0;this.N.qa=128;this.F.K=0;this.C.S=128;this.G.K=128;gc(this)};
|
||||
m.Ec=function(a,b,d){var c,f,e=this.b;switch(a&-64){case 4194240:switch(a&-2){case 4194300:0>b?c=e.Qa&65280:(a&1&&(b<<=8),e.Qa=b|255,c=0);break;case 4194298:if(0>b)c=e.Yb;else{a&1&&(b<<=8);if(c=b&65024){f=c>>9;do c+=34;while(f>>=1)}e.Yb=c;e.Oa=2}break;case 4194294:if(70!==e.gb)return K(e,4,222);0>b?c=e.L:c=e.L=0;break;case 4194292:if(70!==e.gb)return K(e,4,224);c=1;break;case 4194290:if(70!==e.gb)return K(e,4,226);c=0;break;case 4194288:if(70!==e.gb)return K(e,4,228);c=61183;break;case 4194296:0<=
|
||||
b&&!(a&1)&&(b&=255);case 4194286:case 4194284:case 4194282:case 4194280:case 4194278:case 4194276:case 4194274:case 4194272:if(70!==e.gb)return K(e,4,232);f=a-4194272>>1;0>b?c=e.fc[f]:(c=J(this,e.fc[f],a,b,d),0<=c&&(e.fc[f]=c));break;case 4194254:return a&1?e.M>>14&1?(0<=b&&(e.f[6]=b),c=e.f[6]):(0<=b&&(e.sa[3]=b),c=e.sa[3]):e.M>>14&0?(0<=b&&(e.f[6]=b),c=e.f[6]):(0<=b&&(e.sa[1]=b),c=e.sa[1]),c;case 4194252:case 4194250:case 4194248:return f=a&7,e.M&2048?(0<=b&&(e.f[f]=b),c=e.f[f]):(0<=b&&(e.Za[f]=
|
||||
b),c=e.Za[f]),c;case 4194246:return a&1?(0<=b&&(e.f[7]=b),c=e.f[7]):e.M>>14&0?(0<=b&&(e.f[6]=b),c=e.f[6]):(0<=b&&(e.sa[0]=b),c=e.sa[0]),c;case 4194244:case 4194242:case 4194240:return f=a&7,e.M&2048?(0<=b&&(e.Za[f]=b),c=e.Za[f]):(0<=b&&(e.f[f]=b),c=e.f[f]),c;default:return e.L|=16,K(e,4,124)}break;case 4194176:f=a>>1&31;c=J(this,e.ka[3][f],a,b,d);0<=c&&(e.ka[3][f]=c,e.ka[3][f&15]&=65295);break;case 4194112:var h=this.N;f=this.F;switch(a&-2){case 4194174:c=J(this,e.Ab,a,b,d);0<=c&&(e.Ab=c);break;case 4194172:c=
|
||||
e.Da;c&65280&&(c=(c<<8|c>>8)&65535);break;case 4194170:e.ca=e.ca&62337|e.Kb<<5|e.Xb<<1;0>b?c=e.ca:(c=J(this,e.ca,a,b,d),0<=c&&(e.ca=c&=62337,e.Kb=c>>5&3,e.Xb=c>>1&15,c&257?(f=2,e.Ra&16&&(f=1),e.Jb=c&1?nb|B:B):(e.Jb=0,f=4),this.g.pb=this.g.pb&-8|f));break;case 4194168:0>b?c=this.g.dd&65535:(c=J(this,this.g.data,a,b,d),0<=c&&(this.g.data=c));break;case 4194166:0<=b&&(b&127&&(h.Jc=0),h.qa&=-129,I(e,100,128,52,function(){h.qa|=128;return!!(h.qa&64)}));c=0;break;case 4194164:0>b?c=h.qa:(c=J(this,h.qa,
|
||||
a,b,d),0<=c&&(128==(h.qa&192)&&c&64&&I(e,8,128,52,function(){h.qa|=128;return!!(h.qa&64)}),h.qa=h.qa&128|c&-129));break;case 4194162:c=0;0>b&&(h.Ia&=-129,0<h.gc.length&&(c=h.gc.shift(),0<h.gc.length&&setTimeout(function(){h.Ia|=128;h.Ia&64&&I(e,40,128,48)},50)));break;case 4194160:0>b?c=h.Ia:(c=J(this,h.Ia,a,b,d),0<=c&&(h.Ia=h.Ia&128|c&-129));break;case 4194150:0>b?(c=f.K,f.K&=-129):(c=J(this,f.K,a,b,d),0<=c&&(c&64&&!f.Ib&&(setInterval(this.Pc.bind(this),25),f.Ib=1),f.K=c&-129));break;default:return e.L|=
|
||||
16,K(e,4,126)}break;case 4194048:f=this.C;switch(a&-2){case 4194048:c=J(this,f.Qb,a,b,d);0<=c&&(f.Qb=c);break;case 4194050:c=J(this,f.la,a,b,d);0<=c&&(f.la=c);break;case 4194052:c=J(this,f.S,a,b,d);0<=b&&0<=c&&(f.S=c&-36993|f.S&36992,f.S&1&&dc(this));break;case 4194054:c=J(this,f.Rb,a,b,d);0<=c&&(f.Rb=c);break;case 4194056:c=J(this,f.Pb,a,b,d);0<=c&&(f.Pb=c);break;case 4194058:c=J(this,f.ta,a,b,d);0<=c&&(f.ta=c);break;case 4194060:break;case 4194062:c=J(this,f.xc,a,b,d);0<=c&&(f.xc=c);break;default:return e.L|=
|
||||
16,K(e,4,128)}break;case 4193728:var g=this.J;f=g.Ba&7;switch(a&-2){case 4193728:c=J(this,g.U,a,b,d);0<=b&&0<=c&&(g.$a=g.$a&60|c>>8&3,g.U=c&17279|g.U&34944|2048,c&1&&g.U&128?hc(this,f):192==(c&192)&&I(e,0,160,172));break;case 4193730:c=J(this,g.vb,a,b,d);0<=c&&(g.vb=c);break;case 4193732:c=J(this,g.tb,a,b,d);0<=c&&(g.tb=c&65534);break;case 4193734:c=J(this,g.Ca[f],a,b,d);0<=c&&(g.Ca[f]=c&7967);break;case 4193736:c=J(this,g.Ba,a,b,d);0<=c&&(g.Ba=c&63|g.Ba&65472,c&128&&gc(this));break;case 4193738:c=
|
||||
g.pa[f];break;case 4193740:c=g.ub[f];break;case 4193742:c=J(this,g.kb,a,b,d);0<=c&&(g.kb=c&255);break;case 4193744:c=g.bd[f];break;case 4193746:c=J(this,g.yc,a,b,d);0<=c&&(g.yc=c);break;case 4193748:c=J(this,g.zc[f],a,b,d);0<=c&&(g.zc[f]=c&1023);break;case 4193750:c=8210;break;case 4193752:c=g.cd[f];break;case 4193754:c=J(this,g.Ac[f],a,b,d);0<=c&&(g.Ac[f]=c);break;case 4193756:c=J(this,g.Pa[f],a,b,d);0<=c&&(g.Pa[f]=c&511);break;case 4193758:g.ac[f]=g.Pa[f];c=g.ac[f];break;case 4193760:c=g.$c[f];
|
||||
break;case 4193762:c=g.ad[f];break;case 4193764:c=g.Yc[f];break;case 4193766:c=g.Zc[f];break;case 4193768:c=J(this,g.$a,a,b,d);0<=c&&(g.$a=c&63,g.U=g.U&-769|(c&3)<<8);break;case 4193770:c=J(this,g.ic,a,b,d);0<=c&&(g.ic=c);break;default:return e.L|=16,K(e,4,132)}break;case 4192512:f=this.G;switch(a&-2){case 4192512:c=J(this,f.K,a,b,d);0<=b&&0<=c&&(f.Ua=f.Ua&60|c>>4&3,f.K=f.K&-1023|c&1022,f.K&128||fc(this));break;case 4192514:c=J(this,f.Fb,a,b,d);0<=c&&(f.Fb=c&65534);break;case 4192516:c=J(this,f.da,
|
||||
a,b,d);0<=c&&(f.da=c);break;case 4192518:c=J(this,f.Ya,a,b,d);0<=c&&(f.Ya=c);break;case 4192520:c=J(this,f.Ua,a,b,d);0<=c&&(f.Ua=c&63,f.K=f.K&-49|(f.Ua&3)<<4);break;default:return e.L|=16,K(e,4,134)}break;case 4191552:switch(a&-2){case 4191566:0>b?c=e.Ra:(c=J(this,e.Ra,a,b,d),0<=c&&(70!==e.gb&&(c&=-49),e.Ra=c,e.ib[0]=c&4?15:7,e.ib[1]=c&2?15:7,e.ib[3]=c&1?15:7,e.Jb&&(f=2,e.Ra&16&&(f=1),this.g.pb=this.g.pb&-8|f)));break;default:return e.L|=16,K(e,4,136)}break;case 4191424:f=a>>1&31;c=J(this,e.ka[0][f],
|
||||
a,b,d);0<=c&&(e.ka[0][f]=c,e.ka[0][f&15]&=65295);break;case 4191360:f=a>>1&31;c=J(this,e.ka[1][f],a,b,d);0<=c&&(e.ka[1][f]=c,e.ka[1][f&15]&=65295);break;case 4190400:case 4190336:if(70!==e.gb)return K(e,4,234);f=a>>2&31;c=e.Sb[f];a&2&&(c=c>>16);c&=65535;0<=b&&(c=J(this,c,a,b,d),0<=c&&(e.Sb[f]=a&2?c<<16|e.Sb[f]&65535:e.Sb[f]&4294901760|c&65534));break;case 4188672:case 4188736:case 4188800:case 4188864:case 4188928:case 4188992:case 4189056:case 4189120:if(0>b)c=Pb[a>>1&255];else return e.L|=16,K(e,
|
||||
4,138);break;default:return e.L|=16,K(e,4,142)}d&&0<=c&&(a&1?c=c>>8:c&=255);"undefined"===typeof c&&console.log("panic(76)");return c};var Qb={};Qb[4194302]=[null,null,Ob.prototype.Uc,Ob.prototype.fd];Sa(function(){for(var a=x(document,"pdp11","device"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Ob(c);gb(c,d)}});var kc;if(mb){var lc=new ArrayBuffer(2);(new DataView(lc)).setUint16(0,256,!0);kc=256===(new Uint16Array(lc))[0]}else kc=!1;var mc=kc;
|
||||
function E(a,b,d,c,f){this.id=nc+=2;this.b=null;this.D=a;this.Ub=b;this.size=d||0;this.type=c||oc;this.H=c==pc;this.controller=null;Eb(this);this.Wa=this.Lc=!1;if(d)if(f)this.controller=f,this.b=null,qc(this,f.Cb);else if(mb)this.G=new ArrayBuffer(d),this.J=new DataView(this.G,0,d),this.g=new Uint8Array(this.G,0,d),this.P=new Uint16Array(this.G,0,d>>1),this.b=new Int32Array(this.G,0,d>>2),qc(this,mc?rc:sc);else{this.b=Array(d>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;qc(this,tc)}else qc(this)}
|
||||
var oc=0,pc=2,Kb=4,Mb=["NONE","RAM","ROM","VID","H/W"],nc=0;
|
||||
E.prototype={constructor:E,parent:null,Ib:function(a){this.D=a},save:function(){var a,b;if(this.controller)a=null;else if(mb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.J.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(this.controller)return null==a;if(a&&this.size==a.length<<2){var b;if(mb)for(b=0;b<a.length;b++)this.J.setInt32(b<<2,a[b],!0);else this.b=a;return this.Wa=!0}return!1},eb:function(a,b){b?0===this.F++&&uc(this,vc,!1):0===this.O++&&wc(this,vc,!1)},T:function(){this.I&&
|
||||
hb(this.I,129)&&this.I.message("attempt to read invalid block %"+r(this.D),!0);return 255},C:function(a,b){this.I&&hb(this.I,129)&&this.I.message("attempt to write "+r(b,4,!0)+" to invalid block %"+r(this.D),!0)},W:function(a,b){return this.sb(a++,b++)|this.sb(a,b)<<8},N:function(a,b,d){this.xb(a++,b&255,d++);this.xb(a,b>>8,d)},ba:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ra:function(a){var b=a>>2;a=(a&3)<<3;var d=this.b[b]>>a;return 24>a?d&65535:d&255|(this.b[b+1]&255)<<8},za:function(a,
|
||||
b){var d=a>>2,c=(a&3)<<3;this.b[d]=this.b[d]&~(255<<c)|b<<c;this.Wa=!0},Bb: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.Wa=!0},$:function(a,b){if(this.I&&null!=this.D){var d=this.I;xc(d,this.D+a,1,d.X)&&d.ma(!0)}return this.Ob(a,b)},ga:function(a,b){if(this.I&&null!=this.D){var d=this.I;xc(d,this.D+a,2,d.X)&&d.ma(!0)}return this.hc(a,b)},wa:function(a,b,d){if(this.I&&null!=this.D){var c=this.I;
|
||||
xc(c,this.D+a,1,c.J)&&c.ma(!0)}this.H?this.C(a,b,d):this.yb(a,b,d)},Ja:function(a,b,d){if(this.I&&null!=this.D){var c=this.I;xc(c,this.D+a,2,c.J)&&c.ma(!0)}this.H?this.C(a,b,d):this.lc(a,b,d)},X:function(a){return this.g[a]},aa:function(a){return this.g[a]},ea:function(a){return this.J.getUint16(a,!0)},ha:function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.P[a>>1]},va:function(a,b){this.g[a]=b;this.Wa=!0},ya:function(a,b){this.g[a]=b;this.Wa=!0},Ea:function(a,b){this.J.setUint16(a,b,!0);this.Wa=
|
||||
!0},Sa:function(a,b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.P[a>>1]=b;this.Wa=!0}};function Eb(a,b,d){a.I=b;a.O=a.F=0;d&&((a.O=d.O)&&wc(a,vc,!1),(a.F=d.F)&&uc(a,vc,!1))}function yc(a,b){b?0===--a.F&&(a.xb=a.H?a.C:a.yb,a.Cc=a.H?a.N:a.lc):0===--a.O&&(a.sb=a.Ob,a.wc=a.hc)}function uc(a,b,d){d&&a.F||(a.xb=!a.H&&b[1]||a.C,a.Cc=!a.H&&b[3]||a.N);if(d||void 0===d)a.yb=b[1]||a.C,a.lc=b[3]||a.N}function wc(a,b,d){d&&a.O||(a.sb=b[0]||a.T,a.wc=b[2]||a.W);if(d||void 0===d)a.Ob=b[0]||a.T,a.hc=b[2]||a.W}
|
||||
function qc(a,b){b||(b=zc);wc(a,b,void 0);uc(a,b,void 0)}var zc=[],tc=[E.prototype.ba,E.prototype.za,E.prototype.ra,E.prototype.Bb],vc=[E.prototype.$,E.prototype.wa,E.prototype.ga,E.prototype.Ja];if(mb)var sc=[E.prototype.X,E.prototype.va,E.prototype.ea,E.prototype.Ea],rc=[E.prototype.aa,E.prototype.ya,E.prototype.ha,E.prototype.Sa];
|
||||
function Ac(a,b){u.call(this,"CPU",a,Ac,1);var d=a.multiplier||1;this.za=a.cycles||b;this.jb=d;this.ya=Math.round(this.za/1E4)/100;this.hb=this.ya*this.jb;this.A.ja=!1;this.A.kc=!1;this.A.Db=a.autoStart;this.A.sc=!1;this.A.ob=!1;this.Lb=this.$=0;this.Mb=a.csStart;this.qb=a.csInterval;this.rb=a.csStop;this.ra=[];this.Eb=this.lb.bind(this);y(this)}bb(Ac);var Bc=["power","reset"];m=Ac.prototype;
|
||||
m.Xa=function(a,b,d,c){this.F=a;this.H=b;this.I=c;for(b=0;b<Bc.length;b++)(d=this.O[Bc[b]])&&this.F.ua(null,Bc[b],d);this.ea=null;a=Cc(a,"autoStart");null!=a&&(this.A.Db="true"==a?!0:"false"==a?!1:!!a);y(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};m.Na=function(a,b){if(!b){if(a&&this.restore){Dc(this);if(!this.restore(a))return!1;Ec(this)}else this.reset();this.I?this.I.Ib():this.i("No debugger detected")}Fc(this);return!0};
|
||||
m.Ma=function(a){return a?this.save():!0};m.Db=function(){return this.A.Db||!this.I&&void 0===this.O.run?(this.lb(!0),!0):!1};m.uc=function(){return 0};function Ec(a){void 0===a.Mb&&(a.Mb=0);void 0===a.qb&&(a.qb=-1);void 0===a.rb&&(a.rb=-1);a.A.ob=0<=a.Mb&&0<a.qb;a.A.ob&&(a.Lb=0,a.$=a.Mb-a.X)}function Gc(a,b){if(a.A.ob){var d=!1;a.Lb=a.Lb+a.uc()|0;a.$-=b;0>=a.$&&(a.$+=a.qb,d=!0);0<=a.rb&&a.rb<=Hc(a)&&(a.qb=a.rb=-1,Ec(a),a.ma(),d=!0);d&&a.i(Hc(a)+" cycles: checksum="+r(a.Lb))}}
|
||||
function Ic(a,b,d,c){if(a.O[b]){void 0===d&&(lb(a,"Value for "+b+" is invalid"),a.ma());var f=a.I&&a.I.wa||8;d=!a.A.ja||a.A.sc?8==f?da(d,c):r(d,c):"--------".substr(0,c||4);a.O[b].textContent!=d&&(a.O[b].textContent=d)}}
|
||||
m.ua=function(a,b,d){var c=this;a=!1;switch(b){case "power":case "reset":this.O[b]=d;a=!0;break;case "run":this.O[b]=d;d.onclick=function(){var a;if(a=c.F)if(a=c.F,a.A.fa)a=!0;else{var b=null,d,g=eb(a.id);for(d=0;d<g.length&&(b=g[d],b===a||b.A.ready);d++);if(d==g.length)for(d=0;d<g.length&&(b=g[d],b===a||b.A.fa);d++);d==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.A.ready?"powered yet":"ready yet"+(b.Wb?" (waiting for notification)":""))+".");a=!1}a&&(c.A.ja?c.ma():c.lb())};
|
||||
a=!0;break;case "speed":this.O[b]=d;a=!0;break;case "setSpeed":this.O[b]=d,d.onclick=function(){Jc(c,c.jb<<1,!0)},d.textContent=this.hb.toFixed(2)+"Mhz",a=!0}return a};function Wc(a,b,d){a.X+=b;d&&(a.W=a.b=0)}function Xc(a,b){var d=1;b&&1<a.jb&&a.P&&(d=a.P/a.ya);a.mb=Math.round(1E3/30);a.wa=Math.floor(a.za/30*d);b||(a.aa=a.wa);a.Ea=0}function Hc(a){return a.X+a.N+a.W-a.b}function Dc(a){a.P=0;a.zb=0;a.X=a.N=a.W=a.b=0;Ec(a);Jc(a,1)}
|
||||
function Jc(a,b,d){var c=!1;if(void 0!==b){.8>a.P/a.hb?b=1:c=!0;a.jb=b;b=a.ya*a.jb;if(a.hb!=b){a.hb=b;b=a.hb.toFixed(2)+"Mhz";var f=a.O.setSpeed;f&&(f.textContent=b);a.i("target speed: "+b)}d&&a.F&&a.F.Tb()}Wc(a,a.N);a.N=0;a.J=sa();a.T=0;Xc(a);return c}function Yc(a){a.W-=a.b;a.b=0}
|
||||
m.lb=function(a){if(ib(this,!0)){if(!this.A.ja){Jc(this);this.F&&this.F.start(this.J,Hc(this));this.A.ja=!0;this.A.kc=!0;this.ea&&this.ea.start();var b=this.O.run;b&&(b.textContent="Halt");this.F&&(this.F.xa(!0),a&&this.F.Tb(!0))}this.Ea>=this.za&&Xc(this,!0);this.ga=0;this.va=sa();this.T&&(a=this.va-this.T,a>this.mb&&(this.J+=a,this.J>this.va&&(this.J=this.va)));try{do{for(var d,c=this.A.ob?1:this.wa,f=this.ra.length-1;0<=f;f--){var e=this.ra[f];0>e[0]||c>e[0]&&(c=e[0])}d=c;try{this.wb(d)}catch(l){if("number"!=
|
||||
typeof l)throw l;}var h=this.W-this.b;a=h;for(var g=this.ra.length-1;0<=g;g--){var k=this.ra[g];0>k[0]||(k[0]-=a,0>=k[0]&&(k[0]=-1,k[1]()))}this.ga+=h;this.N+=h;Wc(this,0,!0);Gc(this,h);this.aa-=h;if(0>=this.aa){this.aa+=this.wa;15<=++this.zb&&(this.F&&this.F.xa(),this.zb=0);break}}while(this.A.ja)}catch(l){this.ma();Fc(this);this.F&&this.F.stop(sa(),Hc(this));ib(this,!1);lb(this,l.stack||l.message);return}d=setTimeout;c=this.Eb;this.T=sa();f=this.mb;this.ga&&(f=Math.round(f*this.ga/this.wa));f=f-
|
||||
(this.T-this.va);if(e=this.T-this.J)this.P=Math.round(this.N/(10*e))/100,864E5<=e&&(this.X=0,Jc(this));if(0>f||this.P<this.hb)-1E3>f&&(this.J-=f),f=0;this.Ea+=this.ga;this.T+=f;d(c,f)}else Fc(this),this.F&&this.F.stop(sa(),Hc(this))};m.wb=function(){return 0};m.ma=function(a){jb(this,!0);Yc(this);Wc(this,this.N);this.N=0;if(this.A.ja){this.A.ja=!1;this.ea&&this.ea.stop();var b=this.O.run;b&&(b.textContent="Run")}this.A.complete=a};function Fc(a,b){a.F&&a.F.xa(b)}
|
||||
function Zc(a){this.vc=+a.model||1170;this.Vb=a.resetAddr||0;Ac.call(this,a,1E6);this.Ja=0;this.decode=$c.bind(this);this.B=65536;this.u=32768;this.w=65535;this.j=32768;this.g=-1;this.f=[0,0,0,0,0,0,0,this.Vb];this.Za=[0,0,0,0,0,0];this.sa=[0,0,0,0];this.memory=[];this.C=[];this.ha=this.Yb=0;this.Oa=2;this.Qa=255;this.V=0;this.ba=-1;this.L=0;this.gb=70;this.Xb=this.Kb=this.Jb=this.G=this.Ra=this.Ab=this.Da=this.ca=0;this.ib=[7,7,7,7];this.ka=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.Sb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.fc=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.A.complete=this.A.Ic=!1}bb(Zc,Ac);m=Zc.prototype;
|
||||
m.reset=function(){this.A.ja&&this.ma();ad(this);Dc(this);this.A.error=!1;this.parent.reset.call(this)};function ad(a){a.Qa=255;a.L=0;a.C=[];a.Yb=0;a.ca=a.Da=a.Ab=a.Ra=a.Jb=0;a.ib[0]=a.ib[1]=a.ib[3]=7;a.Kb=0}m.uc=function(){return 0};
|
||||
m.save=function(){var a=new bd(this);N(a,0,[]);N(a,1,[this.Sa,this.X,this.jb]);for(var b=this.H,d=0,c=[],f=0;f<b.C;f++){var e=b.R[f];if(e.Wa||e.Lc){c[d++]=f;var h=d++;a:if(e=e.save()){for(var g=0,k=0,l=[];g<e.length;){for(var n=e[g],p=g+1;p<e.length&&e[p]===n;)p++;l[k++]=p-g;l[k++]=n;g=p}if(l.length<e.length){e=l;break a}}c[h]=e}}N(a,2,c);return a.data()};
|
||||
m.restore=function(a){var b=a[1];this.Sa=b[0];this.X=b[1];Jc(this,b[3]);a:{b=this.H;a=a[2];var d;for(d=0;d<a.length-1;d+=2){var c=a[d],f=a[d+1];if(f&&f.length<b.T){for(var e=0,h=Array(b.T),g=0;g<f.length-1;)for(var k=f[g++],l=f[g++];k--;)h[e++]=l;f=h}e=b.R[c];if(!e||!e.restore(f)){t("Unable to restore memory block "+c);b=!1;break a}}b=!0}return b};
|
||||
m.ua=function(a,b,d){var c=!1;switch(b){case "R0":case "R1":case "R2":case "R3":case "R4":case "R5":case "R6":case "R7":case "NF":case "ZF":case "VF":case "CF":case "PS":this.O[b]=d;this.Ja++;c=!0;break;default:c=this.parent.ua.call(this,a,b,d)}return c};
|
||||
m.xa=function(a){if(this.Ja&&(a||!this.A.ja||this.A.sc)){for(a=0;a<this.f.length;a++)Ic(this,"R"+a,this.f[a]);a=Rb(this);Ic(this,"PS",a);Ic(this,"NF",a&8?1:0,1);Ic(this,"ZF",a&4?1:0,1);Ic(this,"VF",a&2?1:0,1);Ic(this,"CF",a&1?1:0,1)}if(a=this.O.speed)a.textContent=this.A.ja&&this.P?this.P.toFixed(2)+"Mhz":"Stopped"};
|
||||
function I(a,b,d,c,f){for(var e=a.C.length;0<e--;)if(a.C[e].ed===c){0<e&&(a.C[e-1].Fa+=a.C[e].Fa);a.C.splice(e,1);break}if(0<=b){2===a.ha&&(b=0,a.ha=0,setTimeout(a.Eb,0));for(e=a.C.length;0<e--;){if(a.C[e].Fa>b){a.C[e].Fa-=b;break}b-=a.C[e].Fa}a.C.splice(e+1,0,{delay:b,priority:d&224,vector:c,callback:f})}a.Oa=2}function Rb(a){return a.M=a.M&63728|(a.j&32768?8:0)|(a.w&65535?0:4)|(a.u&32768?2:0)|(a.B&65536?1:0)}
|
||||
function cc(a,b){a.j=b<<12;a.w=~b&4;a.u=b<<14;a.B=b<<16;if((b^a.M)&2048)for(var d=a.Za.length;0<=--d;){var c=a.f[d];a.f[d]=a.Za[d];a.Za[d]=c}a.G=b>>14&3;d=a.M>>14&3;a.G!=d&&(a.sa[d]=a.f[6],a.f[6]=a.sa[a.G]);a.Oa=2;a.M=b}function cd(a,b){a.V&128||(a.j=a.w=a.B=b,a.u=0)}function dd(a,b){a.V&128||(a.j=a.w=b,a.u=0)}function ed(a,b,d,c){a.V&128||(a.j=a.w=a.B=b,a.u=(d^c)&(c^b))}
|
||||
function K(a,b,d){var c,f,e=0;0>a.ba?a.ba=Rb(a):a.G||(b=4,e=1);a.ca&57344||(a.Da=63222,a.Ab=b);a.G=0;0<=(c=O(a,b|65536))&&0<=(f=O(a,b+2&65535|65536))&&(cc(a,f&53247|a.ba>>2&12288),e&&(a.L|=4,a.f[6]=4),0<=fd(a,a.ba)&&0<=fd(a,a.f[7])&&(a.f[7]=c));a.V&=-113;a.ba=-1;throw b|d<<8;}function jc(a,b){var d=b>>13&31;31>d?a.Ra&32&&(b=a.Sb[d]+(b&8190)&4194302,3932160<=b&&4186112>b&&console.log("panic(898)")):b|=4186112;return b}
|
||||
function gd(a,b,d){var c,f,e,h=0;if(d&a.Jb){c=b>>13&a.ib[a.G];f=a.ka[a.G][c];e=(a.ka[a.G][c+16]<<6)+(b&8191)&4194303;a.Ra&16?3932160<=e&&4186112>e&&(e=jc(a,e&262143)):(e&=262143,253952<=e&&(e|=4186112));3932160>e&&(3915776<=e&&(a.L|=32,K(a,4,24)),e&1&&!(d&1)&&(a.L|=64,K(a,4,26)));switch(f&7){case 1:h=4096;case 2:f|=128;d&B&&(h=8192);break;case 4:h=4096;case 5:d&B&&(h=4096);case 6:f|=d&B?192:128;break;default:h=32768}32512!==(f&32520)&&(f&8?f&32512&&(b&8128)<(f>>2&8128)&&(h|=16384):(b&8128)>(f>>2&
|
||||
8128)&&(h|=16384));a.ka[a.G][c]=f;if(4194170!==e||a.G)a.Kb=a.G,a.Xb=c;h&&(h&57344&&(0<=a.ba&&(h|=128),a.ca&57344||(a.ca=a.ca|h|a.Kb<<5|a.Xb<<1),K(a,168,28)),a.ca&61440||!(4191360>e||4194239<e)||(a.ca|=4096,a.ca&512&&(a.V|=32)))}else e=b&65535,57344<=e?e|=4186112:e&1&&!(d&1)&&(a.L|=64,K(a,4,22));return e}function M(a,b){return 4194304<=b?a.f[b-4194304]:0<=b?a.H.Ha(b):b}function L(a,b,d){d&=65535;return 4194304<=b?a.f[b-4194304]=d:0<=b?(a.H.jc(b,d),d):b}
|
||||
function P(a,b){return 4194304<=b?a.f[b-4194304]&255:0<=b?a.H.Hb(b):b}function Q(a,b,d){d&=255;return 4194304<=b?a.f[b-4194304]=a.f[b-4194304]&65280|d:0<=b?(a.H.bc(b,d),d):b}function O(a,b){return M(a,gd(a,b,nb))}function hd(a){var b=O(a,a.f[6]|65536);0<=b&&(a.f[6]=a.f[6]+2&65535);return b}function fd(a,b){var d,c;a.f[6]=c=a.f[6]-2&65535;a.ca&57344||(a.Da=a.Da<<8|246);!a.G&&c<=a.Qa&&4<c&&(c<=a.Qa-32?(a.L|=4,a.f[6]=4,K(a,4,32)):(a.L|=8,a.V|=4));return 0<=(d=gd(a,c|65536,B))?L(a,d,b):d}
|
||||
function id(a,b,d){var c,f,e=b&7;switch(b>>3&7){case 0:K(a,4,34);break;case 1:return 6===e&&!a.G&&d&B&&(a.f[6]<=a.Qa||65534<=a.f[6])&&(a.f[6]<=a.Qa-32||65534<=a.f[6]?(a.L|=4,a.f[6]=4,K(a,4,36)):(a.L|=8,a.V|=64)),7===e?a.f[e]:a.f[e]|65536;case 2:f=2;c=a.f[e];7!==e&&(c|=65536,6>e&&d&1&&(f=1));break;case 3:f=2;c=a.f[e];7!==e&&(c|=65536);if(0>(c=O(a,c)))return c;c|=65536;break;case 4:f=-2;6>e&&d&1&&(f=-1);c=a.f[e]+f&65535;7!==e&&(c|=65536);break;case 5:f=-2;c=a.f[e]-2&65535;7!==e&&(c|=65536);if(0>(c=
|
||||
O(a,c)))return c;c|=65536;break;case 6:if(0>(c=O(a,a.f[7])))return c;a.f[7]=a.f[7]+2&65535;c=c+a.f[e]&65535;return c|65536;case 7:if(0>(c=O(a,a.f[7])))return c;a.f[7]=a.f[7]+2&65535;c=c+a.f[e]&65535;return 0>(c=O(a,c|65536))?c:c|65536}a.f[e]=a.f[e]+f&65535;a.ca&57344||(a.Da=a.Da<<8|f<<3&248|e);6===e&&!a.G&&d&B&&0>=f&&(a.f[6]<=a.Qa||65534<=a.f[6])&&(a.f[6]<=a.Qa-32?(a.L|=4,a.f[6]=4,K(a,4,38)):(a.L|=8,a.V|=64));return c}function R(a,b,d){b&56?(b=id(a,b,d),a=gd(a,b,d)):a=4194304+(b&7);return a}
|
||||
function S(a,b){var d;b&56?(d=R(a,b,nb),d=M(a,d)):d=a.f[b&7];return d}function U(a,b){var d;b&56?(d=R(a,b,yb),d=P(a,d)):d=a.f[b&7]&255;return d}function jd(a,b,d,c){b&56?(b=R(a,b,C),L(a,b,c.call(a,d,M(a,b)))):(b&=7,a.f[b]=c.call(a,d,a.f[b])&65535)}function kd(a,b,d,c){b&56?(b=R(a,b,D),Q(a,b,c.call(a,d,P(a,b)))):(b&=7,a.f[b]=a.f[b]&65280|c.call(a,d,a.f[b])&255)}function ld(a,b,d){b&56?L(a,R(a,b,B),d):a.f[b&7]=d&65535;return d}
|
||||
function md(a,b,d,c){b&56?Q(a,R(a,b,zb),d):(b&=7,a.f[b]=c?c&1?a.f[b]&-256:d<<24>>24&65535:a.f[b]&-256|d&255);return d}function V(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.wb=function(a){this.A.complete=!0;var b=this.A.Ic=this.I&&nd(this.I),d=a?this.A.kc?0:1:-1;this.A.kc=!1;this.W=this.b=a;this.Sa&256?(Yc(this),a=!1):a=!0;if(a){do{if(b){if(od(this.I,this.f[7],d)){this.ma();break}d=1}var c,f,e,h,g;this.V&112&&(this.V&32?K(this,168,52):this.V&64?K(this,4,54):this.V&16&&K(this,12,56),this.V&=-113);if(this.Oa)if(1===this.Oa)this.Oa=2;else{this.Oa=0;g=-1;c=this.Yb&224;if(0<(a=this.C.length))for(;0<a--;){if(0<this.C[a].Fa){this.C[a].Fa--;this.Oa=2;break}if(this.C[a].pc){if(!this.C[a].pc()){this.C.splice(a,
|
||||
1);g--;continue}this.C[a].pc=null}this.C[a].Tc>c&&(c=this.C[a].Tc,g=a)}c>(this.M&224)&&(0>g?K(this,160,42):(K(this,this.C[g].ed,44),this.C.splice(g,1)))}this.ca&57344||(this.Da=0,this.Ab=this.f[7]);this.V=this.M&16;this.g=a=O(this,this.f[7]);0<=a&&(this.f[7]=this.f[7]+2&65535);this.decode(a);if(0>this.g)switch(a&61440){case 4096:0<=(c=S(this,a>>6))&&(a&56?0<=(e=R(this,a,B))&&0<=L(this,e,c)&&(this.j=this.w=c,this.u=0):(this.j=this.w=this.f[a&7]=c,this.u=0));break;case 8192:0<=(c=S(this,a>>6))&&0<=
|
||||
(f=S(this,a))&&(this.j=this.w=this.B=a=c-f,this.u=(c^f)&(c^a));break;case 12288:0<=(c=S(this,a>>6))&&0<=(f=S(this,a))&&(this.j=this.w=c&f,this.u=0);break;case 16384:0<=(c=S(this,a>>6))&&(a&56?0<=(f=M(this,e=R(this,a,C)))&&(a=f&~c,0<=L(this,e,a)&&(this.j=this.w=a,this.u=0)):(this.j=this.w=a=this.f[a&7]&=~c,this.u=0));break;case 20480:0<=(c=S(this,a>>6))&&(a&56?0<=(f=M(this,e=R(this,a,C)))&&(a=f|c,0<=L(this,e,a)&&(this.j=this.w=a,this.u=0)):(this.j=this.w=a=this.f[a&7]|=c,this.u=0));break;case 24576:0<=
|
||||
(c=S(this,a>>6))&&(a&56?0<=(f=M(this,e=R(this,a,C)))&&(a=c+f,0<=L(this,e,a)&&(this.j=this.w=this.B=a,this.u=(c^a)&(f^a))):(g=a&7,f=this.f[g],this.f[g]=(a=c+f)&65535,this.j=this.w=this.B=a,this.u=(c^a)&(f^a)));break;case 36864:0<=(c=U(this,a>>6))&&(a&56?0<=(e=R(this,a,zb))&&0<=Q(this,e,c)&&(this.j=this.w=c<<8,this.u=0):(c&128&&(c|=65280),this.j=this.w=this.f[a&7]=c,this.u=0));break;case 40960:0<=(c=U(this,a>>6))&&0<=(f=U(this,a))&&(a=c-f,this.j=this.w=this.B=a<<8,this.u=((c^f)&(c^a))<<8);break;case 45056:0<=
|
||||
(c=U(this,a>>6))&&0<=(f=U(this,a))&&(this.j=this.w=(c&f)<<8,this.u=0);break;case 49152:0<=(c=U(this,a>>6))&&0<=(f=P(this,e=R(this,a,D)))&&(a=f&~c,0<=Q(this,e,a)&&(this.j=this.w=a<<8,this.u=0));break;case 53248:0<=(c=U(this,a>>6))&&0<=(f=P(this,e=R(this,a,D)))&&(a=f|c,0<=Q(this,e,a)&&(this.j=this.w=a<<8,this.u=0));break;case 57344:0<=(c=S(this,a>>6))&&(a&56?0<=(f=M(this,e=R(this,a,C)))&&(a=f-c,0<=L(this,e,a)&&(this.j=this.w=this.B=a,this.u=(c^f)&(f^a))):(g=a&7,f=this.f[g],this.f[g]=(a=f-c)&65535,this.j=
|
||||
this.w=this.B=a,this.u=(c^f)&(f^a)));break;default:switch(a&65024){case 2048:0<=(h=id(this,a,0))&&(g=a>>6&7,0<=fd(this,this.f[g])&&(this.f[g]=this.f[7],this.f[7]=h&65535));break;case 28672:0<=(c=S(this,a))&&(g=a>>6&7,c&32768&&(c|=-65536),f=this.f[g],f&32768&&(f|=-65536),a=~~(c*f),this.f[g]=a>>16&65535,this.f[g|1]=a&65535,this.j=a>>16,this.w=this.j|a,this.B=this.u=0,-32768>a||32767<a)&&(this.B=65536);break;case 29184:0<=(c=S(this,a))&&(c?(g=a>>6&7,f=this.f[g]<<16|this.f[g|1],this.B=this.u=0,c&32768&&
|
||||
(c|=-65536),a=~~(f/c),-32768<=a&&32767>=a?(this.f[g]=a&65535,this.f[g|1]=f-a*c&65535,this.w=a>>16|a,this.j=a>>16):(this.u=32768,this.w=a>>15|a,this.j=f>>16,-1===c&&65534===this.f[g]&&(this.f[g]=this.f[g|1]=1))):(this.w=this.j=0,this.u=32768,this.B=65536));break;case 29696:0<=(c=S(this,a))&&(g=a>>6&7,a=this.f[g],a&32768&&(a|=4294901760),this.B=this.u=0,c&=63,c&32?(c=64-c,16<c&&(c=16),this.B=a<<17-c,a=a>>c):c&&(16<c?(this.u=a,a=0):(this.B=a=a<<c,(f=a>>15&65535)&&65535!==f&&(this.u=32768))),this.f[g]=
|
||||
a&65535,this.j=this.w=a);break;case 30208:if(0<=(c=S(this,a))){g=a>>6&7;f=this.f[g]<<16|this.f[g|1];this.B=this.u=0;c&=63;if(c&32)c=64-c,32<c&&(c=32),a=f>>c-1,this.B=a<<16,a>>=1,f&2147483648&&(a|=4294967295<<32-c);else if(c){if(a=f<<c-1,this.B=a>>15,a<<=1,32<c&&(c=32),f>>=32-c)f|=4294967295<<c&4294967295,4294967295!==f&&(this.u=32768)}else a=f;this.f[g]=a>>16&65535;this.f[g|1]=a&65535;this.j=a>>16;this.w=a>>16|a}break;case 30720:a&56?0<=(f=M(this,e=R(this,a,C)))&&(f^=this.f[a>>6&7],0<=L(this,e,f)&&
|
||||
(this.j=this.w=f,this.u=0)):(this.j=this.w=f=this.f[a&7]^=this.f[a>>6&7],this.u=0);break;case 32256:g=a>>6&7;if(this.f[g]=this.f[g]-1&65535)this.f[7]=this.f[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.f[7]=V(this.f[7],a);break;case 512:this.w&65535&&(this.f[7]=V(this.f[7],a));break;case 768:this.w&65535||(this.f[7]=V(this.f[7],a));break;case 1024:(this.j&32768)===(this.u&32768)&&(this.f[7]=V(this.f[7],a));break;case 1280:(this.j&32768)!==(this.u&32768)&&(this.f[7]=V(this.f[7],
|
||||
a));break;case 1536:this.w&65535&&(this.j&32768)===(this.u&32768)&&(this.f[7]=V(this.f[7],a));break;case 1792:this.w&65535&&(this.j&32768)===(this.u&32768)||(this.f[7]=V(this.f[7],a));break;case 32768:this.j&32768||(this.f[7]=V(this.f[7],a));break;case 33280:!(this.B&65536)&&this.w&65535&&(this.f[7]=V(this.f[7],a));break;case 33024:this.j&32768&&(this.f[7]=V(this.f[7],a));break;case 33536:if(this.B&65536||!(this.w&65535))this.f[7]=V(this.f[7],a);break;case 33792:this.u&32768||(this.f[7]=V(this.f[7],
|
||||
a));break;case 34048:this.u&32768&&(this.f[7]=V(this.f[7],a));break;case 34304:this.B&65536||(this.f[7]=V(this.f[7],a));break;case 34560:this.B&65536&&(this.f[7]=V(this.f[7],a));break;case 34816:K(this,24,2);break;case 35072:K(this,28,4);break;default:switch(a&65472){case 64:0<=(h=id(this,a,0))&&(this.f[7]=h&65535);break;case 192:a&56?0<=(f=M(this,e=R(this,a,C)))&&(a=f<<8|f>>8,0<=L(this,e,a)&&(this.j=this.w=f&65280,this.u=this.B=0)):(g=a&7,f=this.f[g],this.f[g]=(f<<8|f>>8)&65535,this.j=this.w=f&65280,
|
||||
this.u=this.B=0);break;case 2560:a&56?0<=(e=R(this,a,B))&&0<=L(this,e,0)&&(this.j=this.B=this.u=this.w=0):this.j=this.B=this.u=this.w=this.f[a&7]=0;break;case 2624:0<=(f=M(this,e=R(this,a,C)))&&(a=~f,0<=L(this,e,a)&&(this.j=this.w=a,this.B=65536,this.u=0));break;case 2688:a&56?0<=(f=M(this,e=R(this,a,C)))&&(a=f+1,0<=L(this,e,a)&&(this.j=this.w=a,this.u=a&(a^f))):(g=a&7,f=this.f[g],a=f+1,this.f[g]=a&65535,this.j=this.w=a,this.u=a&(a^f));break;case 2752:a&56?0<=(f=M(this,e=R(this,a,C)))&&(a=f-1,0<=
|
||||
L(this,e,a)&&(this.j=this.w=a,this.u=(a^f)&f)):(g=a&7,f=this.f[g],a=f-1,this.f[g]=a&65535,this.j=this.w=a,this.u=(a^f)&f);break;case 2816:0<=(f=M(this,e=R(this,a,C)))&&(a=-f,0<=L(this,e,a)&&(this.B=this.j=this.w=a,this.u=a&f));break;case 2880:0<=(f=M(this,e=R(this,a,C)))&&(a=f+(this.B>>16&1),0<=L(this,e,a)&&(this.B=this.j=this.w=a,this.u=a&(a^f)));break;case 2944:0<=(f=M(this,e=R(this,a,C)))&&(a=f-(this.B>>16&1),0<=L(this,e,a)&&(this.B=this.j=this.w=a,this.u=(a^f)&f));break;case 3008:0<=(f=S(this,
|
||||
a))&&(this.j=this.w=f,this.B=this.u=0);break;case 3072:a&56?0<=(f=M(this,e=R(this,a,C)))&&(a=(this.B&65536|f)>>1,0<=L(this,e,a)&&(this.B=f<<16,this.j=this.w=a,this.u=a^this.B>>1)):(g=a&7,f=this.f[g],a=(this.B&65536|f)>>1,this.f[g]=a&65535,this.B=f<<16,this.j=this.w=a,this.u=a^this.B>>1);break;case 3136:a&56?0<=(f=M(this,e=R(this,a,C)))&&(a=f<<1|this.B>>16&1,0<=L(this,e,a)&&(this.B=this.j=this.w=a,this.u=a^f)):(g=a&7,f=this.f[g],a=f<<1|this.B>>16&1,this.f[g]=a&65535,this.B=this.j=this.w=a,this.u=a^
|
||||
f);break;case 3200:a&56?0<=(f=M(this,e=R(this,a,C)))&&(a=f&32768|f>>1,0<=L(this,e,a)&&(this.B=f<<16,this.j=this.w=a,this.u=this.j^this.B>>1)):(g=a&7,f=this.f[g],a=f&32768|f>>1,this.f[g]=a&65535,this.B=f<<16,this.j=this.w=a,this.u=this.j^this.B>>1);break;case 3264:a&56?0<=(f=M(this,e=R(this,a,C)))&&(a=f<<1,0<=L(this,e,a)&&(this.B=this.j=this.w=a,this.u=a^f)):(g=a&7,f=this.f[g],a=f<<1,this.f[g]=a&65535,this.B=this.j=this.w=a,this.u=a^f);break;case 3328:h=this.f[7]+((a&63)<<1)&65535;0<=(c=O(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=id(this,a,0))&&(61440!==(this.M&61440)&&(h&=65535),this.G=this.M>>12&3,0<=(c=O(this,h))&&(this.G=this.M>>14&3,0<=fd(this,c)&&(this.j=this.w=c,this.u=0))):(g=a&7,c=6!==g||(this.M>>2&12288)===(this.M&12288)?this.f[g]:this.sa[this.M>>12&3],0<=fd(this,c)&&(this.j=this.w=c,this.u=0));break;case 3456:0<=(f=hd(this))&&((this.ca&57344||(this.Da=22),a&56)?0<=(h=id(this,a,0))&&(h&=65535,this.G=this.M>>12&3,0<=(e=gd(this,h,B))&&
|
||||
(this.G=this.M>>14&3,0<=L(this,e,f)&&(this.j=this.w=f,this.u=0))):(g=a&7,6!==g||(this.M>>2&12288)===(this.M&12288)?this.f[g]=f:this.sa[this.M>>12&3]=f,this.j=this.w=f,this.u=0));break;case 3520:0<=(e=R(this,a,B))&&(a=-(this.j>>15&1),0<=L(this,e,a)&&(this.w=a,this.u=0));break;case 35328:a&56?0<=(e=R(this,a,zb))&&0<=Q(this,e,0)&&(this.j=this.B=this.u=this.w=0):(this.f[a&7]&=65280,this.j=this.B=this.u=this.w=0);break;case 35392:0<=(f=P(this,e=R(this,a,D)))&&(a=~f,0<=Q(this,e,a)&&(this.j=this.w=a<<8,
|
||||
this.B=65536,this.u=0));break;case 35456:0<=(f=P(this,e=R(this,a,D)))&&(a=f+1,0<=Q(this,e,a)&&(this.j=this.w=a<<8,this.u=(a&(a^f))<<8));break;case 35520:0<=(f=P(this,e=R(this,a,D)))&&(a=f-1,0<=Q(this,e,a)&&(this.j=this.w=a<<8,this.u=((a^f)&f)<<8));break;case 35584:0<=(f=P(this,e=R(this,a,D)))&&(a=-f,0<=Q(this,e,a)&&(this.B=this.j=this.w=a<<8,this.u=(a&f)<<8));break;case 35648:0<=(f=P(this,e=R(this,a,D)))&&(a=f+(this.B>>16&1),0<=Q(this,e,a)&&(this.j=this.w=this.B=a<<8,this.u=(a&(a^f))<<8));break;case 35712:0<=
|
||||
(f=P(this,e=R(this,a,D)))&&(a=f-(this.B>>16&1),0<=Q(this,e,a)&&(this.j=this.w=this.B=a<<8,this.u=((a^f)&f)<<8));break;case 35776:0<=(f=U(this,a))&&(this.j=this.w=f<<8,this.B=this.u=0);break;case 35840:0<=(f=P(this,e=R(this,a,D)))&&(a=((this.B&65536)>>8|f)>>1,0<=Q(this,e,a)&&(this.B=f<<16,this.j=this.w=a<<8,this.u=this.j^this.B>>1));break;case 35904:0<=(f=P(this,e=R(this,a,D)))&&(a=f<<1|this.B>>16&1,0<=Q(this,e,a)&&(this.B=this.j=this.w=a<<8,this.u=(a^f)<<8));break;case 35968:0<=(f=P(this,e=R(this,
|
||||
a,D)))&&(a=f&128|f>>1,0<=Q(this,e,a)&&(this.B=f<<16,this.j=this.w=a<<8,this.u=this.j^this.B>>1));break;case 36032:0<=(f=P(this,e=R(this,a,D)))&&(a=f<<1,0<=Q(this,e,a)&&(this.B=this.j=this.w=a<<8,this.u=(a^f)<<8));break;case 36160:a&56?0<=(h=id(this,a,0))&&(this.G=this.M>>12&3,0<=(c=O(this,h|65536))&&(this.G=this.M>>14&3,0<=fd(this,c)&&(this.j=this.w=c,this.u=0))):(g=a&7,c=6!==g||(this.M>>2&12288)===(this.M&12288)?this.f[g]:this.sa[this.M>>12&3],0<=fd(this,c)&&(this.j=this.w=c,this.u=0));break;case 36224:0<=
|
||||
(f=hd(this))&&((this.ca&57344||(this.Da=22),a&56)?0<=(h=id(this,a,0))&&(this.G=this.M>>12&3,0<=(e=gd(this,h|65536,B))&&(this.G=this.M>>14&3,0<=L(this,e,f)&&(this.j=this.w=f,this.u=0))):(g=a&7,6!==g||(this.M>>2&12288)===(this.M&12288)?this.f[g]=f:this.sa[this.M>>12&3]=f,this.j=this.w=f,this.u=0));break;default:switch(a&65528){case 128:0<=(c=hd(this))&&(g=a&7,this.f[7]=this.f[g],this.f[g]=c);break;case 152:this.M&49152||(this.M=this.M&63519|(a&7)<<5,this.Oa=1);break;case 160:case 168:a&1&&(this.B=0);
|
||||
a&2&&(this.u=0);a&4&&(this.w=1);a&8&&(this.j=0);break;case 176:case 184:a&1&&(this.B=65536);a&2&&(this.u=32768);a&4&&(this.w=0);a&8&&(this.j=32768);break;default:switch(a){case 0:49152&this.M?(this.L|=128,K(this,4,46)):(this.ha=3,Yc(this),console.log("HALT at "+this.f[7].toString(8)));break;case 1:g=0;if(0<(a=this.C.length))for(;0<a--;)g+=this.C[a].Fa,this.C[a].Fa=0;0===g&&0===this.ha&&(this.ha=2,Yc(this));break;case 3:K(this,12,6);break;case 4:K(this,16,8);break;case 5:this.M&49152||(ad(this),this.H.reset());
|
||||
break;case 2:case 6:e=this.f[6];0<=(h=O(this,e|65536))&&(e=e+2&65535,0<=(c=O(this,e|65536))&&(this.f[6]=e+2&65535,c&=63743,this.M&49152&&(c=c&63519|this.M&63712),this.f[7]=h,cc(this,c),this.V&=-17,2===a&&(this.V|=this.M&16)));break;default:K(this,8,48)}}}}}}}while(0<this.b)}return this.A.complete?this.W-this.b:void 0===this.A.complete?0:-1};Sa(function(){for(var a=x(document,"pdp11","cpu"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Zc(c);gb(c,d)}});
|
||||
function pd(a,b){var d=a+b;this.V&128||(this.j=this.w=this.B=d,this.u=(a^d)&(b^d));return d&65535}function qd(a,b){var d=~a&b;dd(this,d);return d}function rd(a,b){var d=~a&b;dd(this,d<<8);return d}function sd(a,b){var d=a|b;dd(this,d);return d}function td(a,b){var d=a|b;dd(this,d<<8);return d}function ud(a,b){var d=b-a;ed(this,d,a,b);return d&65535}function vd(){this.g=-1;--this.b}function wd(){this.g=-1;--this.b}
|
||||
function xd(a){a&1&&(this.B=0);a&2&&(this.u=0);a&4&&(this.w=1);a&8&&(this.j=0);--this.b}function yd(){this.g=-1;--this.b}function zd(){this.g=-1;--this.b}function Ad(){this.g=-1;--this.b}function Bd(){--this.b}function Cd(a){a&1&&(this.B=65536);a&2&&(this.u=32768);a&4&&(this.w=0);a&8&&(this.j=32768);--this.b}function Dd(){this.g=-1;--this.b}function Ed(){this.g=-1;--this.b}function W(){K(this,8,48)}function $c(a){Fd[a>>12].call(this,a)}
|
||||
var Fd=[function(a){Gd[a>>8&15].call(this,a)},function(a){dd(this,ld(this,a,S(this,a>>6)));--this.b},function(a){var b=S(this,a>>6);a=S(this,a);ed(this,b-a,a,b);--this.b},function(a){dd(this,S(this,a>>6)&S(this,a));--this.b},function(a){jd(this,a,S(this,a>>6),qd);--this.b},function(a){jd(this,a,S(this,a>>6),sd);--this.b},function(a){jd(this,a,S(this,a>>6),pd);--this.b},function(a){Hd[a>>8&15].call(this,a)},function(a){Id[a>>8&15].call(this,a)},function(a){var b=U(this,a>>6);dd(this,md(this,a,b,2)<<
|
||||
8);--this.b},function(a){var b=U(this,a>>6)<<8;a=U(this,a)<<8;ed(this,b-a,a,b);--this.b},function(a){dd(this,(U(this,a>>6)&U(this,a))<<8);--this.b},function(a){kd(this,a,U(this,a>>6),rd);--this.b},function(a){kd(this,a,U(this,a>>6),td);--this.b},function(a){jd(this,a,S(this,a>>6),ud);--this.b},W],Gd=[function(a){Jd[a>>4&15].call(this,a)},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=
|
||||
-1;--this.b},function(){this.g=-1;--this.b},zd,zd,function(a){Kd[a>>6&3].call(this,a)},function(a){Ld[a>>6&3].call(this,a)},function(a){Md[a>>6&3].call(this,a)},function(a){Nd[a>>6&3].call(this,a)},W,W],Jd=[function(a){Od[a&15].call(this,a)},W,W,W,W,W,W,W,W,W,function(a){Pd[a&15].call(this,a)},function(a){Qd[a&15].call(this,a)},W,W,W,W],Pd=[Bd,function(){this.B=0;--this.b},function(){this.u=0;--this.b},xd,function(){this.w=1;--this.b},xd,xd,xd,function(){this.j=0;--this.b},xd,xd,xd,xd,xd,xd,xd],Qd=
|
||||
[Bd,function(){this.B=65536;--this.b},function(){this.u=32768;--this.b},Cd,function(){this.w=0;--this.b},Cd,Cd,Cd,function(){this.j=32768;--this.b},Cd,Cd,Cd,Cd,Cd,Cd,Cd],Od=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.M&49152||(ad(this),this.H.reset());--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},W,W,W,W,W,W,W,W],Hd=[Ad,Ad,yd,yd,vd,vd,wd,wd,Ed,Ed,
|
||||
W,W,W,W,Dd,Dd],Id=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(a){Rd[a>>6&3].call(this,a)},function(a){Sd[a>>6&3].call(this,a)},function(a){Td[a>>6&3].call(this,a)},function(a){Ud[a>>6&3].call(this,a)},W,W],Kd=[function(a){cd(this,
|
||||
ld(this,a,0));--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Ld=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Md=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Nd=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],
|
||||
Rd=[function(a){cd(this,md(this,a,0,1));--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Sd=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Td=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b}],Ud=[function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=-1;--this.b},function(){this.g=
|
||||
-1;--this.b}];function Vd(a){u.call(this,"ROM",a,Vd);this.g=null;this.J=a.addr;this.F=a.size;this.N=a.writable;this.C=a.alias;this.G=a.file;this.P=ea(this.G);if(this.G){a=this.G;var b=fa(this.P);"json"!=b&&"hex"!=b&&(a=ha()+"/api/v1/dump?file="+this.G+"&format=bytes&decimal=true");var d=this;wa(a,null,!0,function(a,b,e){Wd(d,a,b,e)})}}bb(Vd);Vd.prototype.Xa=function(a,b,d,c){this.H=b;this.b=d;this.I=c;Xd(this)};
|
||||
Vd.prototype.Na=function(){if(this.Ka){if(this.I){var a=this.I,b=this.id,d=this.J,c=this.F,f=this.Ka,e=[],h;for(h in f){var g=f[h];"number"==typeof g&&(f[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var n=e,k=[k>>>0,h],p=ra(n,k,a.qc);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.N.push({hd:b,D:d,Qc:c,Ka:f,nc:e})}delete this.Ka}return!0};Vd.prototype.Ma=function(){return!0};
|
||||
function Wd(a,b,d,c){if(c)a.oa("Unable to load system ROM (error "+c+": "+b+")");else{db(a.oc,b,d);var f;if("["==d.charAt(0)||"{"==d.charAt(0))try{var e,h,g=eval("("+d+")");if(e=g.bytes)a.g=e;else if(e=g.words)for(a.g=Array(2*e.length),h=f=0;f<e.length;f++)a.g[h++]=e[f]&255,a.g[h++]=e[f]>>8&255;else if(e=g.data)for(a.g=Array(4*e.length),h=f=0;f<e.length;f++)a.g[h++]=e[f]&255,a.g[h++]=e[f]>>8&255,a.g[h++]=e[f]>>16&255,a.g[h++]=e[f]>>24&255;else a.g=g;a.Ka=g.symbols;if(!a.g.length){t("Empty ROM: "+
|
||||
b);return}if(1==a.g.length){t(a.g[0]);return}}catch(k){a.oa("ROM data error: "+k.message);return}else for(b=d.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.g=Array(b.length),f=0;f<b.length;f++)a.g[f]=ca(b[f],16);Xd(a)}}
|
||||
function Xd(a){if(!kb(a))if(!a.G)y(a);else if(a.g&&a.H){a.F||(a.F=a.g.length);if(a.g.length!=a.F)lb(a,"ROM size ("+r(a.g.length,8,!0)+") does not match specified size ("+r(a.F,8,!0)+")");else{var b;b=a.J;if(Jb(a.H,b,a.F,a.N?1:pc)){var d;for(d=0;d<a.g.length;d++){var c=a.H,f=b+d;c.R[(f&c.H)>>>c.Y].yb(f&c.g,a.g[d]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.C?b.push(a.C):null!=a.C&&a.C.length&&(b=a.C);for(d=0;d<b.length;d++){for(var e=a,c=b[d],f=e.H,h=e.F,g=[],k=e.J>>>f.Y;0<h&&k<f.R.length;)g.push(f.R[k++]),
|
||||
h-=f.Aa;f=e.H;e=e.F;h=0;for(c>>>=f.Y;0<e&&c<f.R.length;){k=g[h++];if(!k)break;f.R[c++]=k;e-=f.Aa}}delete a.g}}y(a)}}Sa(function(){for(var a=x(document,"pdp11","rom"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Vd(c);gb(c,d)}});function Yd(a){u.call(this,"RAM",a,Yd);this.C=a.addr;this.F=a.size;this.g=!1}bb(Yd);m=Yd.prototype;m.Xa=function(a,b,d,c){this.H=b;this.b=d;this.I=c;y(this)};m.Na=function(a,b){b||this.reset();return!0};m.Ma=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.g&&this.F&&Jb(this.H,this.C,this.F,1)&&(this.g=!0);this.g||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Sa(function(){for(var a=x(document,"pdp11","ram"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Yd(c);gb(c,d)}});function Zd(a){u.call(this,"Keyboard",a,Zd,65536);y(this)}bb(Zd);Zd.prototype.ua=function(){return!1};Zd.prototype.Xa=function(a,b,d,c){this.F=a;this.b=d;this.I=c;this.ea=null};
|
||||
Sa(function(){for(var a=x(document,"pdp11","keyboard"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Zd(c);gb(c,d)}});function xe(a){u.call(this,"Debugger",a,xe);this.wa=a.base||16;this.$=this.Ja=this.P=0;this.ba=!1;this.G=-1;this.C=[];this.ga={}}bb(xe);var ye={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function ze(a,b,d,c){if(d)if(b){0>a.G&&a.C.length&&(a.G=0);if(0>a.G||b!=a.C[a.G])a.C.splice(0,0,b),a.G=0;a.G--}else a.ba?b="end":b=a.C[a.G+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");d=0;var f=null;c=c||";";for(var e=0;e<=b.length;e++){var h=b.charAt(e);if('"'==h||"'"==h)f?h==f&&(f=null):f=h;else if(h==c&&!f||!h)a.push(qa(b.substring(d,e))),d=e+1}}return a}
|
||||
function Ae(a,b,d){for(d=d||-1;d--&&b.length;){var c=b.pop();if(2>a.length)return!1;var f=a.pop(),e=a.pop();switch(c){case "*":c=e*f;break;case "/":if(!f)return!1;c=e/f;break;case "%":if(!f)return!1;c=e%f;break;case "+":c=e+f;break;case "-":c=e-f;break;case "<<":c=e<<f;break;case ">>":c=e>>f;break;case ">>>":c=e>>>f;break;case "<":c=e<f?1:0;break;case "<=":c=e<=f?1:0;break;case ">":c=e>f?1:0;break;case ">=":c=e>=f?1:0;break;case "==":c=e==f?1:0;break;case "!=":c=e!=f?1:0;break;case "&":c=e&f;break;
|
||||
case "^":c=e^f;break;case "|":c=e|f;break;case "&&":c=e&&f?1:0;break;case "||":c=e||f?1:0;break;default:return!1}a.push(c|0)}return!0}
|
||||
function te(a,b,d){var c;if(b){b=ue(a,b);for(var f=0,e=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);f<l.length;){var n=l[f++],p=n.length,n=oa(n);if(!n){e=!0;break}n=ve(a,n,null,!1===d);if(void 0===n){e=!0;d=!1;break}g.push(n);if(f==l.length)break;var n=l[f++],q=n.length;k.length&&Td[n]<Td[k[k.length-1]]&&se(g,k,1);k.push(n);b=b.substr(p+q)}se(g,k)&&1==g.length||(e=!0);e?d&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(c=g.pop(),d&&we(a,null,
|
||||
c))}return c}function ue(a,b){for(var d;(d=b.match(/\{(.*?)}/))&&!(0<=d[1].indexOf("{"));){var c=te(a,d[1]);b=b.replace("{"+d[1]+"}",null!=c?r(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 f=null;switch(c[1].toLowerCase()){case "ops":f=a.$-a.Ja}if(null==f)break;d=d.replace(c[0],f.toString())}return d}
|
||||
function ve(a,b,d,c){var f;null!=b?(f=a.ga[b],null==f&&(f=aa(b,a.xa)),null!=f||c||a.g("invalid "+(d?d:"value")+": "+b)):c||a.g("missing "+(d||"value"));return f}function we(a,b,d){var c,f=!1;if(void 0!==d){f=!0;c=d;var e=0,h="";if(!e||4<e)e=4;for(var g=0;g<e;g++){h&&(h=","+h);var k=c&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;h=n+h;c>>=8}c=r(d,0,!0)+" "+d+". "+ba(d,0,!0)+" "+("0b"+h)}a.g((null!=b?b+": ":"")+c);return f}
|
||||
function xe(a,b){if(b)return we(a,b,a.ga[b]);var d=0;for(b in a.ga)we(a,b,a.ga[b]),d++;return 0<d}function V(a,b,d){switch(a.xa){case 8:return ba(b,d);case 10:return b.toString();default:return r(b,d)}}
|
||||
function ye(a){Sd.call(this,a);this.V=W();this.zb=W();this.aa=W();this.N=[];this.j=this.Y=this.J=[];ze(this);this.ya=0;Ae(this);this.Sa=[];Be(this,a.messages);this.mb=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return Ce(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return Ce(b,a)})}$a(ye,Sd);
|
||||
var De={"?":"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"},Ee="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 MUL DIV ASH ASHC XOR SOB EMT TRAP SPL IOT RTT MFPT".split(" "),
|
||||
Fe={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],28672:[100,63,448],29184:[101,63,448],29696:[102,63,448],30208:[103,63,448],30720:[104,448,63],32256:[105,448,8192]},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],
|
||||
function Be(a,b,d){var c;if(b){b=Ce(a,b);for(var f=0,e=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);f<l.length;){var n=l[f++],p=n.length,n=qa(n);if(!n){e=!0;break}n=De(a,n,null,!1===d);if(void 0===n){e=!0;d=!1;break}g.push(n);if(f==l.length)break;var n=l[f++],q=n.length;k.length&&ye[n]<ye[k[k.length-1]]&&Ae(g,k,1);k.push(n);b=b.substr(p+q)}Ae(g,k)&&1==g.length||(e=!0);e?d&&a.i("error parsing '"+h+"' at character "+(h.length-b.length)):(c=g.pop(),d&&Ee(a,null,
|
||||
c))}return c}function Ce(a,b){for(var d;(d=b.match(/\{(.*?)}/))&&!(0<=d[1].indexOf("{"));){var c=Be(a,d[1]);b=b.replace("{"+d[1]+"}",null!=c?r(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 f=null;switch(c[1].toLowerCase()){case "ops":f=a.$-a.Ja}if(null==f)break;d=d.replace(c[0],f.toString())}return d}
|
||||
function De(a,b,d,c){var f;null!=b?(f=a.ga[b],null==f&&(f=ca(b,a.wa)),null!=f||c||a.i("invalid "+(d?d:"value")+": "+b)):c||a.i("missing "+(d||"value"));return f}function Ee(a,b,d){var c,f=!1;if(void 0!==d){f=!0;c=d;var e=0,h="";if(!e||4<e)e=4;for(var g=0;g<e;g++){h&&(h=","+h);var k=c&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;h=n+h;c>>=8}c=r(d,0,!0)+" "+d+". "+da(d,0,!0)+" "+("0b"+h)}a.i((null!=b?b+": ":"")+c);return f}
|
||||
function Fe(a,b){if(b)return Ee(a,b,a.ga[b]);var d=0;for(b in a.ga)Ee(a,b,a.ga[b]),d++;return 0<d}function X(a,b,d){switch(a.wa){case 8:return da(b,d);case 10:return b.toString();default:return r(b,d)}}
|
||||
function Ge(a){xe.call(this,a);this.W=Y();this.zb=Y();this.aa=Y();this.N=[];this.g=this.X=this.J=[];He(this);this.ya=0;Ie(this);this.Sa=[];Je(this,a.messages);this.mb=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return Ke(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return Ke(b,a)})}bb(Ge,xe);
|
||||
var Le={"?":"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"},Me="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 MUL DIV ASH ASHC XOR SOB EMT TRAP SPL IOT RTT MFPT".split(" "),
|
||||
Ne={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],28672:[100,63,448],29184:[101,63,448],29696:[102,63,448],30208:[103,63,448],30720:[104,448,63],32256:[105,448,8192]},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],34816:[106],35072:[107]},65472:{64:[56,63],192:[95,63],2560:[39,63],2624:[49,63],2688:[53,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,24576],3392:[60,63],3456:[65,63],3520:[96,63],35328:[40,63],35392:[50,63],35456:[54,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,7],152:[108,12288]},65535:{0:[55],1:[99],2:[75],3:[26],4:[109],5:[70],6:[110],7:[111],160:[69],161:[31],162:[41],163:[33],164:[45],165:[36],166:[43],167:[35],168:[38],169:[32],170:[42],171:[34],172:[46],173:[37],174:[44],175:[30],176:[69],177:[80],178:[88],179:[82],180:[92],181:[85],182:[90],183:[84],184:[87],185:[81],186:[89],187:[83],188:[93],189:[86],190:[91],191:[79]}};m=ye.prototype;
|
||||
m.Xa=function(a,b,d,c){this.G=b;this.b=d;this.i=a;(a=Bc(a,"messages"))&&Be(this,a);this.rc=Fe;Ge(this,function(a){a:{var b=c.G.R,d=a[0],g=a=0,k=b.length;if(d){a=X(He(c,d));if(-1===a){c.g("invalid address: "+d);break a}g=a>>>c.G.X;k=1}c.g("blockid physical blockaddr used size type");c.g("-------- --------- ---------- ------ ------ ----");for(var d=-1,l=0;k--;){var n=b[g];n.type==d?l++||c.g("..."):(d=n.type,l=Lb[d],n&&c.g(r(n.id,8)+" %"+r(g<<c.G.X,8)+" %%"+r(n.A,8)+" "+r(n.Tb,4,
|
||||
!0)+" "+r(n.size,4,!0)+" "+l),d!=nc&&(d=-1),l=0);a+=c.G.Aa;g++}}});A(this)};
|
||||
m.ua=function(a,b,d){var c=this;switch(b){case "debugInput":return this.va=this.O[b]=d,d.onkeydown=function(a){var b;if(13==a.keyCode)b=d.value,d.value="",Ce(c,b,!0);else if(27==a.keyCode)d.value=b="";else if(38==a.keyCode?(b=null,c.I<c.C.length-1&&(b=c.C[++c.I])):40==a.keyCode&&(0<c.I?b=c.C[--c.I]:(b="",c.I=-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.O[b]=d,Fa(d,function(){if(c.va){var a=c.va.value;
|
||||
c.va.value="";Ce(c,a,!0);return!0}return!1}),!0;case "step":return this.O[b]=d,Fa(d,function(a){var b=!1;hb(c,!0)||(gb(c,!0),b=c.wb(a?1:0),gb(c,!1));return b}),!0}return!1};m.Sb=function(){this.va&&this.va.focus()};function X(a){a=a&&a.A;null==a&&(a=-1);return a}m.Gb=function(a,b){var d=255,c=X(a);-1!==c&&(d=this.G,d=d.R[(c&d.i)>>>d.X].Nb(c&d.G,c),b&&Ie(a,b));return d};m.Ga=function(a,b){var d=65535,c=X(a);-1!==c&&(d=Mb(this.G,c),b&&Ie(a,b));return d};
|
||||
m.ac=function(a,b,d){var c=X(a);if(-1!==c){var f=this.G;f.R[(c&f.i)>>>f.X].yb(c&f.G,b&255,c);d&&Ie(a,d);Ec(this.b,!0)}};m.ic=function(a,b,d){var c=X(a);if(-1!==c){var f=this.G,e=c&f.G,h=(c&f.i)>>>f.X;e!=f.G?f.R[h].kc(e,b&65535,c):(f.R[h++].yb(e,b&255,c),f.R[h&f.j].yb(0,b>>8&255,c+1));d&&Ie(a,d);Ec(this.b,!0)}};function W(a){return{A:a,Fa:!1}}function Je(a){return[a.A,a.Fa]}function Ke(a){return{A:a[0],Fa:a[1]}}
|
||||
function He(a,b,d){var c;d=(d?a.V:a.zb).A;if(void 0!==b){c=b=ue(a,b);var f;if(c.match(/^[a-z_][a-z0-9_]*$/i))for(c=c.toUpperCase(),d=0;d<a.N.length;d++){var e=a.N[d].Ka[c];if(void 0!==e){c=e.o;void 0!==c&&(f=W(c));break}}if(c=f)return c;d=te(a,b,void 0)}null!=d&&(c=W(d));return c}function Le(a,b,d){d&&(d=d.match(/(['"])(.*?)\1/))&&(b.Gc=re(a,b.Bc=d[2]))}function Ie(a,b){null!=a.A&&(a.A+=b||1)}
|
||||
function Be(a,b){a.H=a;a.ha=a.Hc=536870912;a.za=null;a.Ia=[];var d=re(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(d.length)for(var c in zb){var f;a:if(f=void 0,Array.prototype.indexOf)f=d.indexOf(c,f);else{f=f||0;0>f&&(f+=d.length);0>f&&(f=0);for(var e=d.length;f<e;f++)if(f in d&&d[f]===c)break a;f=-1}0<=f&&(a.ha|=zb[c],a.g(c+" messages enabled"))}}function Ge(a,b){for(var d in zb)if(64==zb[d]){a.Sa[d]=b;break}}
|
||||
m.message=function(a,b){b&&(a+=" at "+V(this,W(this.b.f[7]).A));if(this.ha&1073741824)this.Ia.push(a);else if(!this.za||a!=this.za)if(this.za=a,this.ha&-2147483648&&(this.ma(),a+=" (cpu halted)"),this.g(a),this.b){var d=this.b;Xc(d);d.$=0;Ec(d)}};m.Hb=function(){this.g("Type ? for help with PDP11 Debugger commands");this.wa();if(this.mb){var a=this.mb;this.mb=null;Ce(this,a)}};
|
||||
function Ae(a){var b;if(kd(a)){if(!a.T||!a.T.length){a.T=Array(1E3);for(b=0;b<a.T.length;b++)a.T[b]=W();a.ra=0;a.g("instruction history buffer allocated")}if(!a.ja||!a.ja.length)for(a.ja=Array(256),b=0;b<a.ja.length;b++)a.ja[b]=[b,0]}else a.T&&a.T.length&&a.g("instruction history buffer freed"),a.ra=0,a.T=[],a.ja=[]}m.lb=function(a){if(!Me(this))return!1;this.b.lb(a);return!0};
|
||||
m.wb=function(a,b,d){if(!Me(this))return!1;this.P=0;a||kd(this)&&ld(this,this.b.f[7],0);try{var c=this.b.wb(a);0<c&&(this.P+=c,Vc(this.b,c,!0),Fc(this.b,c),this.$++)}catch(f){"number"!=typeof f&&(this.P=0,jb(this.b,f.stack||f.message))}!1!==d&&Ec(this.b);this.wa(b||!1);return 0<this.P};m.ma=function(a){this.b&&this.b.ma(a)};m.wa=function(a){void 0===a&&(a=!0);this.V=W(this.b.f[7]);a&&1!=this.ea?Ne(this):Oe(this)};
|
||||
function Me(a){var b;if(b=a.b&&ib(a.b))b=a.b,b.u.fa?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!hb(a.b)?(a=a.b,a.u.error?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.Na=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.Ma=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Ae(this);this.$=this.Ja=0;this.za=null;this.P=0;this.V=W(this.b.f[7]);this.u.ia=!1;Pe(this);a||this.wa()};
|
||||
m.save=function(){var a=new ad(this);M(a,0,Je(this.V));M(a,1,Je(this.aa));M(a,2,[this.C,this.da,this.ha]);M(a,3,this.N);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.V=Ke(a[b++]),this.aa=Ke(a[b++]),this.C=a[b][0],"string"==typeof this.C&&(this.C=[this.C]),this.da=a[b][1],this.ha|=a[b][2]);a[3]&&(this.N=a[3]);return!0};m.start=function(a,b){this.ea||this.g("running");this.u.ia=!0;this.Kc=a;this.Mc=b};
|
||||
m.stop=function(a,b){if(this.u.ia){this.u.ia=!1;this.P=b-this.Mc;if(!this.ea){var d="stopped";if(this.P){var c=a-this.Kc,f=0<c?Math.round(1E3*this.P/c):0,d=d+" (";kd(this)&&(d+=this.$+" opcodes, ",this.Ja-=this.$,this.$=0);d+=this.P+" cycles, "+c+" ms, "+f+" hz)"}else fb(this,-2147483648)&&(d+=" (use the 't' command to execute blocked faults)");this.g(d)}this.wa(!0);this.Sb();Pe(this,this.b.f[7])}};function kd(a){return 1<a.j.length||!!a.ya}
|
||||
function ld(a,b,d){var c=a.b;if(0<d&&(a.ya&&!--a.ya||wc(a,b,1,a.j)))return!0;0<=d&&a.ja.length&&(a.$++,null!=Mb(a.G,b)&&(b=a.T[a.ra],b.A=c.f[7],b.Fa=!1,++a.ra==a.T.length&&(a.ra=0)));return!1}function ze(a){var b,d;a.j=["bp"];if(void 0!==a.Y)for(b=1;b<a.Y.length;b++){d=a.Y[b];var c=a.G;xc(c.R[X(d)>>>c.X],!1)}a.Y=["br"];if(void 0!==a.J)for(b=1;b<a.J.length;b++)d=a.J[b],c=a.G,xc(c.R[X(d)>>>c.X],!0);a.J=["bw"];a.Ub=0}
|
||||
m.eb=function(a,b,d){var c=!0;d||Qe(this,a,b,!1,!0);if(a!=this.j){var f=X(b);if(-1===f)this.g("invalid address: "+V(this,b.A)),c=!1;else{var e=this.G;e.R[f>>>e.X].eb(f&e.G,a==this.J)}}c&&(a.push(b),d?b.Fa=!0:(Re(this,a,a.length-1,"set"),Ae(this)));return c};function Qe(a,b,d,c,f){var e=!1;d=X(d);for(var h=1;h<b.length;h++){var g=b[h];if(d==X(g)&&(!c||g.Fa)){e=!0;g.Fa||f||Re(a,b,h,"cleared");b.splice(h,1);b!=a.j&&(c=a.G,xc(c.R[d>>>c.X],b==a.J));g.Fa||Ae(a);break}}return e}
|
||||
function Se(a,b){for(var d=1;d<b.length;d++)Re(a,b,d);return b.length-1}function Re(a,b,d,c){d=b[d];a.g(b[0]+" "+V(a,d.A)+(c?" "+c:d.Bc?' "'+d.Bc+'"':""))}function Pe(a,b){if(void 0!==b)wc(a,b,1,a.j,!0),a.ea=0;else for(var d=1;d<a.j.length;d++){var c=a.j[d];if(c.Fa){if(!Qe(a,a.j,c,!0))break;d=0}}}
|
||||
function wc(a,b,d,c,f){var e=!1;if(!a.Ub++)for(var h=1;!e&&h<c.length;h++){var g=c[h];if(!f||g.Fa)for(var k=X(g),l=0;l<d;l++)if(b+l==k){var n,e=!0;g.Fa&&(Qe(a,c,g,!0),f=!0);if(n=g.Gc){for(var e=!1,p=0;p<n.length;p++)if(!Te(a,n[p],!0)){if(n[p].indexOf("if")){e=!0;break}for(var q=p+1;q<n.length&&n[q].indexOf("else");q++)p++;if(q==n.length){e=!0;break}}a.b.u.ia||(e=!0)}if(e){f||Re(a,c,h,"hit");break}}}a.Ub--;return e}
|
||||
function Ue(a,b,d,c){var f=W(b.A),e=a.Ga(b,2),h,g;for(g in a.rc)if(h=a.rc[g][e&g])break;h||(h=[0]);g="";for(var k=Ee[h[0]],l=h.length-1,n=1;n<=l;n++){var p=h[n];if(void 0!==p){var q;q=a;var D=p,p=b,y="",z=void 0,z=void 0,z=D&61440;if(4096==z)z=(e&255)<<24>>23,z=p.A+z&65535,y=V(q,z);else if(8192==z)z=(e&63)<<1,z=p.A-z&65535,y=V(q,z);else if(12288==z)z=e&7,y=V(q,z,2);else if(24576==z)z=e&63,y=V(q,z);else if(z=e&D,D&4032&&(z>>=6,D>>=6),D&63){var D=void 0,C=z&7;switch(z&56){case 0:y=Ve(C);break;case 8:y=
|
||||
"@"+Ve(C);break;case 16:7>C?y="("+Ve(C)+")+":(D=q.Ga(p,2),y="#"+V(q,D));break;case 24:7>C?y="@("+Ve(C)+")+":(D=q.Ga(p,2),y="@#"+V(q,D));break;case 32:y="-("+Ve(C)+")";break;case 40:y="@-("+Ve(C)+")";break;case 48:D=q.Ga(p,2);y=V(q,D)+"("+Ve(C)+")";7==C&&(y=[y,V(q,D+p.A&65535)]);break;case 56:D=q.Ga(p,2),y="@"+V(q,D)+"("+Ve(C)+")",7==C&&(y=[y,V(q,D+p.A&65535)])}}q=y;if(!q||!q.length){g="INVALID";break}"string"!=typeof q&&(d||(d=q[1]),q=q[0]);0<g.length&&(g+=",");g+=q||"???"}}e="";h=V(a,f.A)+":";if(-1!==
|
||||
f.A&&-1!==b.A){do if(e+=" "+V(a,a.Ga(f,2)),null==f.A)break;while(f.A!=b.A)}h+=na(e,24);h+=na(k,5);g&&(h+=" "+g);d&&(h=na(h,60)+";"+d,h=a.b.u.ob?h+("cycles="+Sc(a.b).toString()+" cs="+r(a.b.Kb)):h+(null!=c?"="+c.toString():""));return h}function We(a,b){var d;switch(b){case "N":d=a.b.w&32768?8:0;break;case "Z":d=a.b.F&65535?0:4;break;case "V":d=a.b.B&32768?2:0;break;case "C":d=a.b.D&65536?1:0;break;default:d=0}return b.charAt(0)+(d?"1":"0")+" "}function Ve(a){return 6>a?"R"+a:6==a?"SP":"PC"}
|
||||
function Xe(a,b){var d="",c=a.b;8>b?(d=Ve(b),d+="="+V(a,c.f[b])):13>b?d="A"+(b-8)+"="+V(a,c.Za[b-8]):16<=b&&20>b?d="S"+(b-16)+"="+V(a,c.sa[b-16]):20==b&&(d="PS="+V(a,ac(c)));d&&(d+=" ");return d}function Ye(a){var b,d="";for(b=0;6>b;b++)d+=Xe(a,b);d=d+"\n"+(Xe(a,6)+Xe(a,7)+Xe(a,20));return d+=We(a,"T")+We(a,"N")+We(a,"Z")+We(a,"V")+We(a,"C")}m.qc=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Ze(a,b,d){var c=[],f=X(b)>>>0;for(b=0;b<a.N.length;b++){var e=a.N[b],h=e.A>>>0,g=e.Qc;if(f>=h&&f<h+g){f=pa(e.mc,[f-h],a.qc);0<=f?$e(a,b,f,c):d&&(f=~f,$e(a,b,f-1,c),$e(a,b,f,c));break}}return c}function $e(a,b,d,c){var f={},e=a.N[b].mc,h=0,g=null;0<=d&&d<e.length&&(h=e[d][0],g=e[d][1]);g&&(f=a.N[b].Ka[g],g="."==g.charAt(0)?null:f.l||g);c.push(g);c.push(h);c.push(f.a);c.push(f.c)}
|
||||
function af(a,b){var d=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(d){if(!d[1])return xe(a)||a.g("no variables"),!0;if(!d[2])return xe(a,d[1]);if(!d[3])return delete a.ga[d[1]],!0;var c=te(a,d[3]);return void 0!==c?(a.ga[d[1]]=c,!0):!1}a.g("invalid assignment:"+b);return!1}
|
||||
function bf(a,b,d){var c=null;if(b=He(a,b,!0)){var f=Ze(a,b,!0);if(f.length){var e,h;f[0]&&(h="",(e=b.A-f[1])&&(h=" + "+r(e,4,!0)),e=f[0]+" ("+V(a,f[1])+")"+h,d&&a.g(e),c=e);4<f.length&&f[4]&&(h="",(e=f[5]-b.A)&&(h=" - "+r(e,4,!0)),e=f[4]+" ("+V(a,f[5])+")"+h,d&&a.g(e),c||(c=e))}else d&&a.g("no symbols")}return c}
|
||||
function Ne(a,b){var d;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var c=a.b;null==d&&(d=!0);if(null!=b&&1<b.length){var f=b[1],e=null,h=f.indexOf("=");if(0<h)e=f.substr(h+1),f=f.substr(0,h);else if(2<b.length)e=b[2];else{a.g("missing value for "+b[1]);return}var h=!1,g=te(a,e);if(void 0!==g)switch(h=!0,f.toUpperCase()){case "PC":c.f[7]=g;a.V=W(c.f[7]);break;case "NF":c.w=g?32768:0;break;case "ZF":c.F=g?0:1;break;case "VF":c.B=
|
||||
g?32768:0;break;case "CF":c.D=g?65536:0;break;default:a.g("unknown register: "+f);return}if(!h){a.g("invalid value: "+e);return}Ec(c);a.g("updated registers:")}a.g(Ye(a));d&&(a.V=W(c.f[7]),Oe(a,V(a,a.V.A)))}}function cf(a,b){b=oa(b);var d=b.match(/^(['"])(.*?)\1$/);d?a.g(d[2]):te(a,b,!0)}function df(a,b,d){var c="t"!=b;d=ve(a,d,null,!0)||1;var f=1==d?0:1;"tc"==b&&(f=d,d=1);Ea(d,function(){return gb(a,!0)&&a.wb(f,c,!1)},function(){Ec(a.b);gb(a,!1)})}
|
||||
function Oe(a,b,d,c){if(b=He(a,b,!0)){void 0===c&&(c=1);var f=256;if(void 0!==d){c=He(a,d,!0);if(!c||c.A<b.A)return;f=c.A-b.A;if(256<f){a.g("range too large");return}c=-1}d=0;for(var e;0<f&&c--;){e=hb(a,!1)||a.ea?a.P:null;var h=null!=e?"cycles":null,g=Ze(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.g(l)}g[3]&&(h=g[3],e=null);e=Ue(a,b,h,e);a.g(e);a.V=b;f-=b.A-k;d++}}}
|
||||
function Te(a,b,d){var c=!0;try{b.length&&"end"!=b?d||a.g(">> "+b):(a.da&&(a.g("ended assemble at "+V(a,a.aa.A)),a.V=a.aa,a.da=!1),b="");var f=b.charAt(0);if('"'==f||"'"==f)return!0;a.za=null;if(ib(a)&&0<b.length){a.da&&(b="a "+V(a,a.aa.A)+" "+b);var e=b.replace(/ +/g," ").split(" ");if(e&&e.length)for(var h=e[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){e[0]=h.substr(k);e.unshift(h.substr(0,k));break}}switch(e[0].charAt(0)){case "a":var n=He(a,e[1],!0);
|
||||
if(n)if(a.aa=n,void 0===e[2])a.g("begin assemble at "+V(a,n.A)),a.da=!0,Ec(a.b);else{var p;a.g("not supported yet");p=[];if(p.length){for(var q=0;q<p.length;q++)a.ac(n,p[q],1);a.g(Ue(a,a.aa))}}break;case "b":a:{var D=e[0],y=e[1],z=b;if("?"==y)a.g("breakpoint commands:"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");
|
||||
else{var C=D.charAt(1);if("l"==C){var La=0,La=La+Se(a,a.j),La=La+Se(a,a.Y);(La+=Se(a,a.J))||a.g("no breakpoints")}else if("n"==C)a.ya=ve(a,y),a.g("break after "+a.ya+" instruction(s)");else if(void 0===y)a.g("missing breakpoint address");else{var Y=W();if("*"!=y&&(Y=He(a,y,!0),!Y))break a;"c"==C?null==Y.A?(ze(a),a.g("all breakpoints cleared")):Qe(a,a.j,Y)||Qe(a,a.Y,Y)||Qe(a,a.J,Y)||a.g("breakpoint missing: "+V(a,Y.A)):null!=Y.A&&(Le(a,Y,z),"p"==C?a.eb(a.j,Y):"r"==C?a.eb(a.Y,Y):"w"==C?a.eb(a.J,Y):
|
||||
a.g("unknown breakpoint command: "+C))}}}break;case "c":a.fb&&(a.fb.value="");break;case "d":a:{var Ma,Na=e[0],ha=e[1],ya=e[2],yf=e[3];if("?"==ha){var ia="";for(Ma in zb)a.Sa[Ma]&&(ia&&(ia+=","),ia+=Ma);ia+=",state,symbols";a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");ia.length&&a.g("dump extension commands:\n\t"+
|
||||
ia)}else if("state"==ha){var Ud=ef(a.i,!0);"console"==ya?console.log(Ud):(a.fb&&(a.fb.value=""),a.g(Ud))}else if("symbols"==ha)for(var Gc=0;Gc<a.N.length;Gc++){var Hc=a.N[Gc],Oa;for(Oa in Hc.Ka)if("."!=Oa.charAt(0)){var Vd=Hc.Ka[Oa].o;if(void 0!==Vd){var Wd=Hc.Ka[Oa].l;Wd&&(Oa=Wd);a.g(V(a,Vd)+" "+Oa)}}}else{if("d"==Na){for(Ma in zb)if(e[1]==Ma){var Xd=a.Sa[Ma];Xd?(e.shift(),e.shift(),Xd(e)):a.g("no dump registered for "+ha);break a}ha||(Na=a.Oc||"db")}else a.Oc=Na;if("dh"==Na){var Yd=ha,Zd=ya,$d=
|
||||
"",ae=0,Q=a.ra,ja=a.T;if(ja.length){var Z=+Yd||a.oc,Pa=+Zd||10;isNaN(Z)?Z=Pa:$d="more ";Z>ja.length&&(a.g("note: only "+ja.length+" available"),Z=ja.length);Q-=Z;0>Q&&(null==ja[ja.length-1].A?(Z=Q+Z,Q=0):Q+=ja.length);var Ic=[];"call"==Zd&&(Pa=1E5,Ic=["CALL"]);for(void 0!==Yd&&a.g(Z+" instructions earlier:");0<Pa&&Q!=a.ra;){var be=ja[Q++];if(null==be.A)break;var mb=W(be.A),zf=Z--,ce=Ue(a,mb,"history",zf);(!Ic.length||0<=ce.indexOf(Ic[0]))&&a.g(ce);mb.dc&&(Q+=mb.dc,Pa-=mb.dc,Z-=mb.dc);Q>=ja.length&&
|
||||
(Q=0);a.oc=Z;ae++;Pa--}}ae||(a.g("no "+$d+"history available"),a.oc=void 0)}else{var Qb=He(a,ha);if(Qb){var Rb=0;ya&&("l"==ya.charAt(0)&&(ya=ya.substr(1)||yf),Rb=ve(a,ya)>>>0,65536<Rb&&(Rb=65536));for(var za="",Sb="dd"==Na?4:"dw"==Na?2:1,Tb=Sb*Rb||128,Af=Tb+15>>4||1;Af--&&0<Tb;){var Ub=0,Jc=0,nb,ob="",Kc="",ha=V(a,Qb.A);for(nb=16;0<nb&&0<Tb;nb--){var Vb=a.Gb(Qb,1),Ub=Ub|Vb<<(Jc++<<3);Jc==Sb&&(ob+=r(Ub,2*Sb),ob+=1==Sb?9==nb?"-":" ":" ",Ub=Jc=0);Kc+=32<=Vb&&128>Vb?String.fromCharCode(Vb):".";Tb--}za&&
|
||||
(za+="\n");za+=ha+" "+ob+(0==nb?" "+Kc:"")}za&&a.g(za);a.zb=Qb}}}}break;case "e":if("else"==e[0])break;var Wb=1,de=255,ee=a.Gb,fe=a.ac;"ew"==e[0]&&(Wb=2,de=65535,ee=a.Ga,fe=a.ic);var ge=Wb<<1,he=e[1];if(null==he)a.g("edit memory commands:"),a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");else{var Xb=He(a,he);if(Xb)for(var Yb=2;Yb<e.length;Yb++){var pb=te(a,e[Yb]);if(void 0===pb){a.g("unrecognized value: "+e[Yb]);break}pb&~de&&a.g("warning: "+r(pb)+" exceeds "+
|
||||
Wb+"-byte value");var Bf=ee.call(a,Xb);a.g("changing "+V(a,Xb.A)+" from "+r(Bf,ge,!0)+" to "+r(pb,ge,!0));fe.call(a,Xb,pb,Wb)}}break;case "g":a:{var ie=e[1],Cf=b;if(void 0!==ie){var Lc=He(a,ie,!0);if(!Lc)break a;Le(a,Lc,Cf);a.eb(a.j,Lc,!0)}a.lb(!0)||d||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var Mc;if(a.u.ia)Mc="halting",a.ma();else{if(hb(a,!0))break a;Mc="already halted"}d||a.g(Mc)}break;case "i":if("if"==e[0]){var Nc;var qb=b.substr(2),qb=oa(qb);te(a,qb)?(d||a.g("true: "+
|
||||
qb),Nc=!0):(d||a.g("false: "+qb),Nc=!1);Nc||(c=!1)}break;case "k":var Df=e[0];if("?"==e[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var Oc=0,je=W(),rb=W(a.b.f[6]);for(a.g("stack trace for "+V(a,rb.A));10>Oc;){for(var Aa=null,Ef=256;65536>rb.A>>>0;){je.A=a.Ga(rb,2);if(null==rb.A||!Ef--)break;for(var Ff=a,Zb=je,ke=null,sb=Zb.A,le=sb,Pc=1;6>=Pc&&sb;Pc++){if(2<Pc){Zb.A=sb;var $b=Ue(Ff,Zb);if(0<=$b.indexOf("JSR")){var me=$b.indexOf(" ");if(sb+
|
||||
($b.indexOf(" ",me+1)-me-1)/2==le){ke=$b;break}}}sb--}Zb.A=le;if(Aa=ke)break}if(!Aa||null==Aa)break;var ne=null;if("ks"==Df){var oe=Aa.match(/[0-9A-F]+$/);oe&&(ne=bf(a,oe[0]))}Aa=na(Aa,50)+" ;"+(ne||"stack="+V(a,rb.A));a.g(Aa);Oc++}Oc||a.g("no return addresses found")}break;case "l":if("ln"==e[0]){bf(a,e[1],!0);break}break;case "m":a:{var ka,la=null,E=e[1];"?"==E&&(E=void 0);if(void 0!==E){var sa=0;if("all"==E)sa=1878917119,E=null;else if("on"==E)la=!0,E=null;else if("off"==E)la=!1,E=null;else{"keys"==
|
||||
E&&(E="key");"kbd"==E&&(E="keyboard");for(ka in zb)if(E==ka){sa=zb[ka];la=!!(a.ha&sa);break}if(!sa){a.g("unknown message category: "+E);break a}}if(sa)if("on"==e[2])a.ha|=sa,la=!0;else if("off"==e[2]&&(a.ha&=~sa,la=!1,1073741824==sa)){for(var Qc=0;Qc<a.Ia.length;Qc++)a.g(a.Ia[Qc]);a.Ia=[]}}var Gf=0,ta="";for(ka in zb)if(!E||E==ka){var Hf=!!(a.ha&zb[ka]);if(null===la||la==Hf)ta&&(ta+=","),++Gf%10||(ta+="\n\t"),"key"==ka&&(ka="keys"),ta+=ka}void 0===E&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");
|
||||
a.g((null!==la?la?"messages on: ":"messages off: ":"message categories:\n\t")+(ta||"none"));Ae(a)}break;case "p":if("print"==e[0]){cf(a,b.substr(5));break}var If="pr"==e[0]?1:0;if(a.ea)a.g("step in progress");else{var pe=W(a.b.f[7]);a.Gb(pe);a.ea?(a.eb(a.j,pe,!0),a.lb()||(a.i&&a.i.Sb(),a.ea=0)):df(a,If?"tr":"t")}break;case "r":if("reset"==b){a.i&&a.i.reset();break}Ne(a,e);break;case "s":a:switch(e[1]){case "base":if(e[2]){var tb=+e[2];if(8==tb||10==tb||16==tb)a.xa=tb;else{a.g("invalid base: "+tb);
|
||||
break}}a.g("default base: "+a.xa);break;case "cs":var ub;void 0!==e[3]&&(ub=+e[3]);switch(e[2]){case "int":a.b.qb=ub;break;case "start":a.b.Lb=ub;break;case "stop":a.b.rb=ub;break;default:a.g("unknown cs option");break a}void 0!==ub&&Dc(a.b);a.g("checksums "+(a.b.u.ob?"enabled":"disabled"));break;case "sp":void 0!==e[2]&&(Uc(a.b,+e[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.hb.toFixed(2)+"Mhz")+" ("+a.b.jb+"x)");break;case "?":a.g("debugger options:");
|
||||
a.g("\tbase #\t\tset default base to #");a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:e[1]&&a.g("unknown option: "+e[1])}break;case "t":df(a,e[0],e[1]);break;case "u":Oe(a,e[1],e[2],8);break;case "v":if("var"==e[0]){af(a,b.substr(3))||(c=!1);break}a.g("PDP11js version 1.30.0 ("+a.b.vc+",RELEASE"+(kb?",TYPEDARRAYS":",LONGARRAYS")+
|
||||
")");a.g(window?window.navigator.userAgent:"");break;case "?":if(e[1]){cf(a,b.substr(1));break}var vb="commands:",Rc;for(Rc in De)vb+="\n"+na(Rc,9)+De[Rc];kd(a)||(vb+="\nnote: history disabled if no exec breakpoints");a.g(vb);break;default:a.g("unknown command: "+b),c=!1}}}catch(qe){a.g("debugger error: "+(qe.stack||qe.message)),c=!1}return c}function Ce(a,b,d){b=re(a,b,d);for(var c in b)if(!Te(a,b[c]))return!1;return!0}
|
||||
Qa(function(){for(var a=x(document,"pdp11","debugger"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new ye(c);eb(c,d)}});
|
||||
function ff(a,b,d){u.call(this,"Computer",a,ff,67108864);this.u.fa=!1;gf(this,b);this.Y=Bc(this,"autoPower",a);this.C=0;this.ga=a.busWidth||a.buswidth;this.i=hf;this.T=null;this.N=this.da=!1;this.url=Bc(this,"url")||"";(Math.random()+.1).toString(36);this.j=jf(this);if(this.b=db("CPU",this.id)){this.H=db("Debugger",this.id);this.G=new Cb({id:this.nc+".bus",busWidth:this.ga},this.b,this.H);var c,f=cb(this.id);if((this.I=db("Panel",this.id))&&this.I.fb)for(b=0;b<f.length;b++)c=f[b],c.oa=this.I.oa,c.g=
|
||||
this.I.g,c.fb=this.I.fb;this.g("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.g("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<f.length;b++)c=f[b],c.Xa&&c.Xa(this,this.G,this.b,this.H);b=null;c=a.resume;void 0!==c&&(1<c.length?b=this.P=c:this.i=parseInt(c,10));var e;if(a=Bc(this,"state")||(e=!0,a.state))b=this.$=a,e||(this.N=!0,this.i=hf),this.i&&
|
||||
(this.V=new ad(this,"1.30.0"),kf(this.V)?b=null:delete this.V);!b&&this.i&&(b=lf(this))&&(this.N=!0);if(b){var h=this;ua(b,null,!0,function(a,b,c){c?(h.P=null,h.N=!1,h.oa("Unable to load machine state from server (error "+c+(b?": "+oa(b):"")+")")):(h.T=b,h.da=!0);A(h)})}else A(this);this.O.power||(this.Y=!0);!d&&this.Y&&mf(this,this.Mb)}else t("Unable to find CPU component")}$a(ff);var hf=0;
|
||||
function gf(a,b){if(!b){var d;if("object"==typeof resources&&(d=resources.parms))try{b=eval("("+d+")")}catch(c){t(c.message+" ("+d+")")}}a.ea=b}function Bc(a,b,d){var c=b.toLowerCase(),c=Va[b]||Va[c];void 0===c&&a.ea&&(c=a.ea[b]);void 0===c&&d&&(c=d[b]);void 0===c&&"object"==typeof resources&&resources[b]&&(c=b);return c}function mf(a,b,d){for(var c=cb(a.id),f=0;f<=c.length;f++){var e=f<c.length?c[f]:a;if(!ib(e)){ib(e,function(){mf(a,b,d)});return}}b.call(a,d)}
|
||||
function nf(a,b){var d=new ad(a,"1.30.0","validate");if(kf(d)&&of(d)){var c=pf(d,"timestamp"),f=b?pf(b,"timestamp"):"unknown";c!=f&&(a.oa("Machine state may be out-of-date\n("+c+" vs. "+f+")\nCheck your browser's local storage limits"),b||d.clear())}}m=ff.prototype;
|
||||
m.Mb=function(a){void 0===a&&(a=this.i||(this.T?1:hf));if(!this.C){this.C++;var b=!1,d=!1;this.aa=!1;var c=this.V||new ad(this,"1.30.0");if(-1==a)b=!0;else if(a>hf){if(kf(c,this.T)){this.J=new ad(this,"1.30.0","failsafe");kf(this.J)&&(qf(this,c),a=2,rf(this.J));M(this.J,"timestamp",ra());sf(this.J);var f=this.i&&!this.N;if(1==a||va("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(d=of(c)){var e=pf(c,"code"),h=pf(c,"data");e&&("ok"==e?kf(c,h):("error"==
|
||||
e&&"no machine state"!=h?(this.oa("Error: "+h),"unable to verify user"==h&&(Ca("user",""),this.j=null)):this.g(e+": "+h),rf(c),kf(c)?(d=of(c),f=!0):d=!1))}f&&nf(this,d?c:null)}else 2==a&&c.clear()}else nf(this);delete this.T;delete this.V}f=cb(this.id);for(e=0;e<f.length;e++)h=f[e],h!==this&&h!=this.b&&(d=tf(this,h,c,b,d));b=[c,a,d];-1!=a?mf(this,this.tc,b):this.tc(b)}};
|
||||
function tf(a,b,d,c,f){if(!b.u.fa){b.u.fa=!0;if(b.Na){var e=null;f&&((e=pf(d,b.id))||(e=pf(d,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof e&&(e=null);!b.Na(e,c)&&e&&(t("Unable to restore state for "+b.type),a.$&&!a.da?(d.clear(),a.i=hf,window&&window.location.reload()):a.aa=!0,b.Na(null),f=!1)}if(!c&&b.lc)for(a=b.lc.split("|"),d=0;d<a.length;d++)b.status(a[d])}return f}
|
||||
m.tc=function(a){var b=a[0],d=0>a[1];a=a[2];this.ja=!0;this.u.fa=!0;var c=this.O.power;c&&(c.textContent="Shutdown");this.b&&(tf(this,this.b,b,d,a),this.b.Db());this.aa&&(qf(this,b),b.clear());!d&&this.J&&(this.J.clear(),delete this.J);this.C=0};
|
||||
function qf(a,b){if(va("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var d=a.j||"",c=b.toString(),f={app:"PDP11js",ver:"1.30.0"};f.url=a.url;f.user=d;f.type="bug";f.data=c;ua("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function ef(a,b,d){var c,f="none";if(a.C)return null;a.C--;var e=new ad(a,"1.30.0"),h=new ad(a,"1.30.0","validate"),g=ra();M(h,"timestamp",g);M(e,"timestamp",g);M(e,"version","1.30.0");M(e,"url",window?window.location.href:null);M(e,"browser",window?window.navigator.userAgent:"");a.b&&a.b.Ma&&(d&&a.b.ma(),c=a.b.Ma(b,d),"object"===typeof c&&M(e,a.b.id,c),d&&(a.b.u.fa=!1,!1===c&&(f=null)));for(var g=cb(a.id),k=0;k<g.length;k++){var l=g[k];l.u.fa&&(l.Ma&&(c=l.Ma(b,d),"object"===typeof c&&M(e,l.id,c)),
|
||||
d&&(l.u.fa=!1,!1===c&&(f=null)))}f&&(d?(g=c=!1,b?(a.j&&uf(a,a.j,e.toString()),sf(h)&&sf(e)||(f=null,c=g=!0)):a.i&&(c=!0,g=3==a.i),c&&e.clear(g)):f=e.toString());d&&(a.u.fa=!1,b=a.O.power)&&(b.textContent="Power");a.C=0;return f}
|
||||
m.reset=function(){this.G&&this.G.reset&&(this.H&&fb(this,0)&&this.H.message("Resetting "+this.G.type,void 0),this.G.reset());for(var a=cb(this.id),b=0;b<a.length;b++){var d=a[b];d!==this&&d!==this.G&&d.reset&&(this.H&&fb(this,0)&&this.H.message("Resetting "+d.type,void 0),d.reset())}};m.start=function(a,b){for(var d=cb(this.id),c=0;c<d.length;c++){var f=d[c];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
|
||||
m.stop=function(a,b){for(var d=cb(this.id),c=0;c<d.length;c++){var f=d[c];"CPU"!=f.type&&f!==this&&f.stop&&f.stop(a,b)}};
|
||||
m.ua=function(a,b,d){var c=this;switch(b){case "power":return this.O[b]=d,d.onclick=function(){c.C||(c.u.fa?ef(c,!1,!0):mf(c,c.Mb))},!0;case "reset":return this.O[b]=d,d.onclick=function(){if(c.u.fa&&!c.C)if(c.i&&!c.P){var a=va("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");ef(c,a,!0);!a&&c.$?window&&window.location.reload():c.Mb(hf)}else c.reset(),c.b&&c.b.Db()},!0;case "save":if(ea()){d.parentNode.removeChild(d);break}this.O[b]=
|
||||
d;d.onclick=function(){var a=jf(c,!0);if(a){var b=!!(c.i&&!c.P||c.$),d=ef(c,b);b?uf(c,a,d):c.oa("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function jf(a,b){var d=a.j;d||(d=Ba("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=vf(a,d))||a.oa("The user ID is invalid."))):b&&a.oa("Browser local storage is not available"));return d}
|
||||
function vf(a,b){a.j=null;var d=ua(fa()+"/api/v1/user?req=verify&user="+b),c=d[1];if(!d[0]&&c)try{d=eval("("+c+")"),d.code&&"ok"==d.code&&(Ca("user",d.data),a.j=d.data)}catch(f){t(f.message+" ("+c+")")}return a.j}function lf(a){var b=null;a.j&&(b=fa()+"/api/v1/user?req=load&user="+a.j+"&state="+wf(a,"1.30.0"));return b}
|
||||
function uf(a,b,d){if(d){var c={req:"store"};c.user=b;c.state=wf(a,"1.30.0");c.data=d;b=ua(fa()+"/api/v1/user",c);c=b[0];if(b[1]){if(c){var f=c.indexOf("\n");0<f&&(c=c.substr(0,f));c.indexOf("Error: ")||(c=c.substr(7))}c='{"code":'+b[1]+',"data":"'+c+'"}'}b=JSON.parse(c);b&&"ok"==b.code?a.oa("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.oa(d),Ca("user",""),a.j=null)}}m.Sb=function(){};
|
||||
m.wa=function(a){this.b&&this.b.wa(a);this.I&&this.I.wa(a)};Qa(function(){for(var a=x(document,"pdp11-machine"),b=0;b<a.length;b++)for(var d=a[b],c=w(d),d=x(d,"pdp11","computer"),f=0;f<d.length;f++){var e=d[f],h=w(e),h=new ff(h,c,!0);eb(h,e);h.Y&&mf(h,h.Mb)}});Ga.show.push(function(){for(var a=x(document,"pdp11","computer"),b=0;b<a.length;b++){var d=w(a[b]);(d=db("Computer",d.id))&&d.ja&&!d.u.fa&&d.Mb(-1)}});
|
||||
Ga.exit.push(function(){for(var a=x(document,"pdp11","computer"),b=0;b<a.length;b++){var d=w(a[b]);(d=db("Computer",d.id))&&d.u.fa&&ef(d,!(!d.i||d.P),!0)}});function ad(a,b,d){this.id=a.id;this.key=wf(a,b,d);this.H=a.H;rf(this,a.Nc)}function wf(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}
|
||||
ad.prototype={constructor:ad,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){rf(this);var b=[];try{for(var d=0,c=window.localStorage.length;d<c;d++)b.push(window.localStorage.key(d))}catch(f){}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(f){}b.splice(d,1);d=0}}};
|
||||
function rf(a,b){a[a.id]={};b&&M(a,"parms",b);a.b=!1}function sf(a){var b=!0;if(xa()){var d=JSON.stringify(a[a.id]);Ca(a.key,d)||(t("Unable to store "+d.length+" bytes in browser local storage"),b=!1)}return b}function of(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(d){t(d.message||d),b=!1}return b}function kf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:xa()&&(b=Ba(a.key))?(a[a.id]=b,a.b=!0):!1}function pf(a,b){return a[a.id][b]||null}function M(a,b,d){try{a[a.id][b]=d}catch(c){}}var xf=0;
|
||||
function Jf(a,b,d,c,f,e){f("Loading "+a+"...");ua(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),e(g,null)):Kf(g,a,b,d,c,f,e)})}
|
||||
function Kf(a,b,d,c,f,e,h){function g(a,e){if(e)h(e,null);else{if(d){bb(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+'"':""))}f||(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{f||(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?f?Lf(a,e,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Lf(a,b,d){var c;if(c=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=c[2];b("Loading "+f+"...");ua(f,null,!0,function(e,h,g){if(g||!h)d(a,"unable to resolve XML reference: "+c[0]+" ("+g+")");else{if(e=c[3])if(g=h.match(new RegExp("<"+c[1]+"[^>]*>"))){for(var k=g[0],l,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.exec(e);)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 "+f);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(c[0],h);Lf(a,b,d)}})}else d(a,null)}
|
||||
function Mf(a,b,d,c){function f(a){if(void 0===g){var b=h&&x(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ma(a))}function e(a){f("Error: "+a);k&&(--xf||Sa(!0));k=!1}var h,g,k=!0;xf++;ab[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=l:p.appendChild(document.createTextNode(l));n.appendChild(p)}d||
|
||||
(d="/versions/pdp11/1.30.0/components.xsl");l=function(c,g){g?Jf(d,null,null,!1,f,function(c,k){if(k)if(bb(a,d,c),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--xf||Sa(!0)):e("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),--xf||Sa(!0)):e("invalid machine element: "+
|
||||
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(c)}):e(c)};"<"!=b.charAt(0)?Jf(b,a,c,!0,f,l):Kf(b,null,a,c,!1,f,l)}else e("missing machine element: "+a)}catch(q){e(q.message)}return k}window.embedPDP11=function(a,b,d,c){Sa(!1);return Mf(a,b,d,c)};window.enableEvents=Sa;window.sendEvent=Ta;})();
|
||||
63],35968:[7,63],36032:[5,63],36096:[66,63],36160:[59,63],36224:[64,63],36288:[61,63]},65528:{128:[76,7],152:[108,12288]},65535:{0:[55],1:[99],2:[75],3:[26],4:[109],5:[70],6:[110],7:[111],160:[69],161:[31],162:[41],163:[33],164:[45],165:[36],166:[43],167:[35],168:[38],169:[32],170:[42],171:[34],172:[46],173:[37],174:[44],175:[30],176:[69],177:[80],178:[88],179:[82],180:[92],181:[85],182:[90],183:[84],184:[87],185:[81],186:[89],187:[83],188:[93],189:[86],190:[91],191:[79]}};m=Ge.prototype;
|
||||
m.Xa=function(a,b,d,c){this.H=b;this.b=d;this.F=a;(a=Cc(a,"messages"))&&Je(this,a);this.rc=Ne;Oe(this,function(a){a:{var b=c.H.R,d=a[0],g=a=0,k=b.length;if(d){a=Z(Pe(c,d));if(-1===a){c.i("invalid address: "+d);break a}g=a>>>c.H.Y;k=1}c.i("blockid physical blockaddr used size type");c.i("-------- --------- ---------- ------ ------ ----");for(var d=-1,l=0;k--;){var n=b[g];n.type==d?l++||c.i("..."):(d=n.type,l=Mb[d],n&&c.i(r(n.id,8)+" %"+r(g<<c.H.Y,8)+" %%"+r(n.D,8)+" "+r(n.Ub,4,
|
||||
!0)+" "+r(n.size,4,!0)+" "+l),d!=oc&&(d=-1),l=0);a+=c.H.Aa;g++}}});y(this)};
|
||||
m.ua=function(a,b,d){var c=this;switch(b){case "debugInput":return this.va=this.O[b]=d,d.onkeydown=function(a){var b;if(13==a.keyCode)b=d.value,d.value="",Ke(c,b,!0);else if(27==a.keyCode)d.value=b="";else if(38==a.keyCode?(b=null,c.G<c.C.length-1&&(b=c.C[++c.G])):40==a.keyCode&&(0<c.G?b=c.C[--c.G]:(b="",c.G=-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.O[b]=d,Ha(d,function(){if(c.va){var a=c.va.value;
|
||||
c.va.value="";Ke(c,a,!0);return!0}return!1}),!0;case "step":return this.O[b]=d,Ha(d,function(a){var b=!1;jb(c,!0)||(ib(c,!0),b=c.wb(a?1:0),ib(c,!1));return b}),!0}return!1};m.Tb=function(){this.va&&this.va.focus()};function Z(a){a=a&&a.D;null==a&&(a=-1);return a}m.Hb=function(a,b){var d=255,c=Z(a);-1!==c&&(d=this.H,d=d.R[(c&d.H)>>>d.Y].Ob(c&d.g,c),b&&Qe(a,b));return d};m.Ha=function(a,b){var d=65535,c=Z(a);-1!==c&&(d=Nb(this.H,c),b&&Qe(a,b));return d};
|
||||
m.bc=function(a,b,d){var c=Z(a);if(-1!==c){var f=this.H;f.R[(c&f.H)>>>f.Y].yb(c&f.g,b&255,c);d&&Qe(a,d);Fc(this.b,!0)}};m.jc=function(a,b,d){var c=Z(a);if(-1!==c){var f=this.H,e=c&f.g,h=(c&f.H)>>>f.Y;e!=f.g?f.R[h].lc(e,b&65535,c):(f.R[h++].yb(e,b&255,c),f.R[h&f.F].yb(0,b>>8&255,c+1));d&&Qe(a,d);Fc(this.b,!0)}};function Y(a){return{D:a,Ga:!1}}function Re(a){return[a.D,a.Ga]}function Se(a){return{D:a[0],Ga:a[1]}}
|
||||
function Pe(a,b,d){var c;d=(d?a.W:a.zb).D;if(void 0!==b){c=b=Ce(a,b);var f;if(c.match(/^[a-z_][a-z0-9_]*$/i))for(c=c.toUpperCase(),d=0;d<a.N.length;d++){var e=a.N[d].Ka[c];if(void 0!==e){c=e.o;void 0!==c&&(f=Y(c));break}}if(c=f)return c;d=Be(a,b,void 0)}null!=d&&(c=Y(d));return c}function Te(a,b,d){d&&(d=d.match(/(['"])(.*?)\1/))&&(b.Gc=ze(a,b.Bc=d[2]))}function Qe(a,b){null!=a.D&&(a.D+=b||1)}
|
||||
function Je(a,b){a.I=a;a.ia=a.Hc=536870912;a.za=null;a.Ea=[];var d=ze(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(d.length)for(var c in Ab){var f;a:if(f=void 0,Array.prototype.indexOf)f=d.indexOf(c,f);else{f=f||0;0>f&&(f+=d.length);0>f&&(f=0);for(var e=d.length;f<e;f++)if(f in d&&d[f]===c)break a;f=-1}0<=f&&(a.ia|=Ab[c],a.i(c+" messages enabled"))}}function Oe(a,b){for(var d in Ab)if(64==Ab[d]){a.Sa[d]=b;break}}
|
||||
m.message=function(a,b){b&&(a+=" at "+X(this,Y(this.b.f[7]).D));if(this.ia&1073741824)this.Ea.push(a);else if(!this.za||a!=this.za)if(this.za=a,this.ia&-2147483648&&(this.ma(),a+=" (cpu halted)"),this.i(a),this.b){var d=this.b;Yc(d);d.aa=0;Fc(d)}};m.Ib=function(){this.i("Type ? for help with PDP11 Debugger commands");this.xa();if(this.mb){var a=this.mb;this.mb=null;Ke(this,a)}};
|
||||
function Ie(a){var b;if(nd(a)){if(!a.T||!a.T.length){a.T=Array(1E3);for(b=0;b<a.T.length;b++)a.T[b]=Y();a.ra=0;a.i("instruction history buffer allocated")}if(!a.ha||!a.ha.length)for(a.ha=Array(256),b=0;b<a.ha.length;b++)a.ha[b]=[b,0]}else a.T&&a.T.length&&a.i("instruction history buffer freed"),a.ra=0,a.T=[],a.ha=[]}m.lb=function(a){if(!Ue(this))return!1;this.b.lb(a);return!0};
|
||||
m.wb=function(a,b,d){if(!Ue(this))return!1;this.P=0;a||nd(this)&&od(this,this.b.f[7],0);try{var c=this.b.wb(a);0<c&&(this.P+=c,Wc(this.b,c,!0),Gc(this.b,c),this.$++)}catch(f){"number"!=typeof f&&(this.P=0,lb(this.b,f.stack||f.message))}!1!==d&&Fc(this.b);this.xa(b||!1);return 0<this.P};m.ma=function(a){this.b&&this.b.ma(a)};m.xa=function(a){void 0===a&&(a=!0);this.W=Y(this.b.f[7]);a&&1!=this.ea?Ve(this):We(this)};
|
||||
function Ue(a){var b;if(b=a.b&&kb(a.b))b=a.b,b.A.fa?b=!0:(b.i(b.toString()+" not powered"),b=!1);b&&!jb(a.b)?(a=a.b,a.A.error?(a.i(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.Na=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.Ma=function(a,b){b&&this.i(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Ie(this);this.$=this.Ja=0;this.za=null;this.P=0;this.W=Y(this.b.f[7]);this.A.ja=!1;Xe(this);a||this.xa()};
|
||||
m.save=function(){var a=new bd(this);N(a,0,Re(this.W));N(a,1,Re(this.aa));N(a,2,[this.C,this.ba,this.ia]);N(a,3,this.N);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.W=Se(a[b++]),this.aa=Se(a[b++]),this.C=a[b][0],"string"==typeof this.C&&(this.C=[this.C]),this.ba=a[b][1],this.ia|=a[b][2]);a[3]&&(this.N=a[3]);return!0};m.start=function(a,b){this.ea||this.i("running");this.A.ja=!0;this.Kc=a;this.Mc=b};
|
||||
m.stop=function(a,b){if(this.A.ja){this.A.ja=!1;this.P=b-this.Mc;if(!this.ea){var d="stopped";if(this.P){var c=a-this.Kc,f=0<c?Math.round(1E3*this.P/c):0,d=d+" (";nd(this)&&(d+=this.$+" opcodes, ",this.Ja-=this.$,this.$=0);d+=this.P+" cycles, "+c+" ms, "+f+" hz)"}else hb(this,-2147483648)&&(d+=" (use the 't' command to execute blocked faults)");this.i(d)}this.xa(!0);this.Tb();Xe(this,this.b.f[7])}};function nd(a){return 1<a.g.length||!!a.ya}
|
||||
function od(a,b,d){var c=a.b;if(0<d&&(a.ya&&!--a.ya||xc(a,b,1,a.g)))return!0;0<=d&&a.ha.length&&(a.$++,null!=Nb(a.H,b)&&(b=a.T[a.ra],b.D=c.f[7],b.Ga=!1,++a.ra==a.T.length&&(a.ra=0)));return!1}function He(a){var b,d;a.g=["bp"];if(void 0!==a.X)for(b=1;b<a.X.length;b++){d=a.X[b];var c=a.H;yc(c.R[Z(d)>>>c.Y],!1)}a.X=["br"];if(void 0!==a.J)for(b=1;b<a.J.length;b++)d=a.J[b],c=a.H,yc(c.R[Z(d)>>>c.Y],!0);a.J=["bw"];a.Eb=0}
|
||||
m.eb=function(a,b,d){var c=!0;d||Ye(this,a,b,!1,!0);if(a!=this.g){var f=Z(b);if(-1===f)this.i("invalid address: "+X(this,b.D)),c=!1;else{var e=this.H;e.R[f>>>e.Y].eb(f&e.g,a==this.J)}}c&&(a.push(b),d?b.Ga=!0:(Ze(this,a,a.length-1,"set"),Ie(this)));return c};function Ye(a,b,d,c,f){var e=!1;d=Z(d);for(var h=1;h<b.length;h++){var g=b[h];if(d==Z(g)&&(!c||g.Ga)){e=!0;g.Ga||f||Ze(a,b,h,"cleared");b.splice(h,1);b!=a.g&&(c=a.H,yc(c.R[d>>>c.Y],b==a.J));g.Ga||Ie(a);break}}return e}
|
||||
function $e(a,b){for(var d=1;d<b.length;d++)Ze(a,b,d);return b.length-1}function Ze(a,b,d,c){d=b[d];a.i(b[0]+" "+X(a,d.D)+(c?" "+c:d.Bc?' "'+d.Bc+'"':""))}function Xe(a,b){if(void 0!==b)xc(a,b,1,a.g,!0),a.ea=0;else for(var d=1;d<a.g.length;d++){var c=a.g[d];if(c.Ga){if(!Ye(a,a.g,c,!0))break;d=0}}}
|
||||
function xc(a,b,d,c,f){var e=!1;if(!a.Eb++)for(var h=1;!e&&h<c.length;h++){var g=c[h];if(!f||g.Ga)for(var k=Z(g),l=0;l<d;l++)if(b+l==k){var n,e=!0;g.Ga&&(Ye(a,c,g,!0),f=!0);if(n=g.Gc){for(var e=!1,p=0;p<n.length;p++)if(!af(a,n[p],!0)){if(n[p].indexOf("if")){e=!0;break}for(var q=p+1;q<n.length&&n[q].indexOf("else");q++)p++;if(q==n.length){e=!0;break}}a.b.A.ja||(e=!0)}if(e){f||Ze(a,c,h,"hit");break}}}a.Eb--;return e}
|
||||
function bf(a,b,d,c){var f=Y(b.D),e=a.Ha(b,2),h,g;for(g in a.rc)if(h=a.rc[g][e&g])break;h||(h=[0]);g="";for(var k=Me[h[0]],l=h.length-1,n=1;n<=l;n++){var p=h[n];if(void 0!==p){var q;q=a;var G=p,p=b,z="",A=void 0,A=void 0,A=G&61440;if(4096==A)A=(e&255)<<24>>23,A=p.D+A&65535,z=X(q,A);else if(8192==A)A=(e&63)<<1,A=p.D-A&65535,z=X(q,A);else if(12288==A)A=e&7,z=X(q,A,2);else if(24576==A)A=e&63,z=X(q,A);else if(A=e&G,G&4032&&(A>>=6,G>>=6),G&63){var G=void 0,F=A&7;switch(A&56){case 0:z=cf(F);break;case 8:z=
|
||||
"@"+cf(F);break;case 16:7>F?z="("+cf(F)+")+":(G=q.Ha(p,2),z="#"+X(q,G));break;case 24:7>F?z="@("+cf(F)+")+":(G=q.Ha(p,2),z="@#"+X(q,G));break;case 32:z="-("+cf(F)+")";break;case 40:z="@-("+cf(F)+")";break;case 48:G=q.Ha(p,2);z=X(q,G)+"("+cf(F)+")";7==F&&(z=[z,X(q,G+p.D&65535)]);break;case 56:G=q.Ha(p,2),z="@"+X(q,G)+"("+cf(F)+")",7==F&&(z=[z,X(q,G+p.D&65535)])}}q=z;if(!q||!q.length){g="INVALID";break}"string"!=typeof q&&(d||(d=q[1]),q=q[0]);0<g.length&&(g+=",");g+=q||"???"}}e="";h=X(a,f.D)+":";if(-1!==
|
||||
f.D&&-1!==b.D){do if(e+=" "+X(a,a.Ha(f,2)),null==f.D)break;while(f.D!=b.D)}h+=pa(e,24);h+=pa(k,5);g&&(h+=" "+g);d&&(h=pa(h,60)+";"+d,h=a.b.A.ob?h+("cycles="+Hc(a.b).toString()+" cs="+r(a.b.Lb)):h+(null!=c?"="+c.toString():""));return h}function df(a,b){var d;switch(b){case "N":d=a.b.j&32768?8:0;break;case "Z":d=a.b.w&65535?0:4;break;case "V":d=a.b.u&32768?2:0;break;case "C":d=a.b.B&65536?1:0;break;default:d=0}return b.charAt(0)+(d?"1":"0")+" "}function cf(a){return 6>a?"R"+a:6==a?"SP":"PC"}
|
||||
function ef(a,b){var d="",c=a.b;8>b?(d=cf(b),d+="="+X(a,c.f[b])):13>b?d="A"+(b-8)+"="+X(a,c.Za[b-8]):16<=b&&20>b?d="S"+(b-16)+"="+X(a,c.sa[b-16]):20==b&&(d="PS="+X(a,Rb(c)));d&&(d+=" ");return d}function ff(a){var b,d="";for(b=0;6>b;b++)d+=ef(a,b);d=d+"\n"+(ef(a,6)+ef(a,7)+ef(a,20));return d+=df(a,"T")+df(a,"N")+df(a,"Z")+df(a,"V")+df(a,"C")}m.qc=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function gf(a,b,d){var c=[],f=Z(b)>>>0;for(b=0;b<a.N.length;b++){var e=a.N[b],h=e.D>>>0,g=e.Qc;if(f>=h&&f<h+g){f=ra(e.nc,[f-h],a.qc);0<=f?hf(a,b,f,c):d&&(f=~f,hf(a,b,f-1,c),hf(a,b,f,c));break}}return c}function hf(a,b,d,c){var f={},e=a.N[b].nc,h=0,g=null;0<=d&&d<e.length&&(h=e[d][0],g=e[d][1]);g&&(f=a.N[b].Ka[g],g="."==g.charAt(0)?null:f.l||g);c.push(g);c.push(h);c.push(f.a);c.push(f.c)}
|
||||
function jf(a,b){var d=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(d){if(!d[1])return Fe(a)||a.i("no variables"),!0;if(!d[2])return Fe(a,d[1]);if(!d[3])return delete a.ga[d[1]],!0;var c=Be(a,d[3]);return void 0!==c?(a.ga[d[1]]=c,!0):!1}a.i("invalid assignment:"+b);return!1}
|
||||
function kf(a,b,d){var c=null;if(b=Pe(a,b,!0)){var f=gf(a,b,!0);if(f.length){var e,h;f[0]&&(h="",(e=b.D-f[1])&&(h=" + "+r(e,4,!0)),e=f[0]+" ("+X(a,f[1])+")"+h,d&&a.i(e),c=e);4<f.length&&f[4]&&(h="",(e=f[5]-b.D)&&(h=" - "+r(e,4,!0)),e=f[4]+" ("+X(a,f[5])+")"+h,d&&a.i(e),c||(c=e))}else d&&a.i("no symbols")}return c}
|
||||
function Ve(a,b){var d;if(b&&"?"==b[1])a.i("register commands:"),a.i("\tr\tdump registers"),a.i("\trx [#]\tset flag or register x to [#]");else{var c=a.b;null==d&&(d=!0);if(null!=b&&1<b.length){var f=b[1],e=null,h=f.indexOf("=");if(0<h)e=f.substr(h+1),f=f.substr(0,h);else if(2<b.length)e=b[2];else{a.i("missing value for "+b[1]);return}var h=!1,g=Be(a,e);if(void 0!==g)switch(h=!0,f.toUpperCase()){case "PC":c.f[7]=g;a.W=Y(c.f[7]);break;case "NF":c.j=g?32768:0;break;case "ZF":c.w=g?0:1;break;case "VF":c.u=
|
||||
g?32768:0;break;case "CF":c.B=g?65536:0;break;default:a.i("unknown register: "+f);return}if(!h){a.i("invalid value: "+e);return}Fc(c);a.i("updated registers:")}a.i(ff(a));d&&(a.W=Y(c.f[7]),We(a,X(a,a.W.D)))}}function lf(a,b){b=qa(b);var d=b.match(/^(['"])(.*?)\1$/);d?a.i(d[2]):Be(a,b,!0)}function mf(a,b,d){var c="t"!=b;d=De(a,d,null,!0)||1;var f=1==d?0:1;"tc"==b&&(f=d,d=1);Ga(d,function(){return ib(a,!0)&&a.wb(f,c,!1)},function(){Fc(a.b);ib(a,!1)})}
|
||||
function We(a,b,d,c){if(b=Pe(a,b,!0)){void 0===c&&(c=1);var f=256;if(void 0!==d){c=Pe(a,d,!0);if(!c||c.D<b.D)return;f=c.D-b.D;if(256<f){a.i("range too large");return}c=-1}d=0;for(var e;0<f&&c--;){e=jb(a,!1)||a.ea?a.P:null;var h=null!=e?"cycles":null,g=gf(a,b),k=b.D;if(g[0]&&c&&(!d&&c||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.i(l)}g[3]&&(h=g[3],e=null);e=bf(a,b,h,e);a.i(e);a.W=b;f-=b.D-k;d++}}}
|
||||
function af(a,b,d){var c=!0;try{b.length&&"end"!=b?d||a.i(">> "+b):(a.ba&&(a.i("ended assemble at "+X(a,a.aa.D)),a.W=a.aa,a.ba=!1),b="");var f=b.charAt(0);if('"'==f||"'"==f)return!0;a.za=null;if(kb(a)&&0<b.length){a.ba&&(b="a "+X(a,a.aa.D)+" "+b);var e=b.replace(/ +/g," ").split(" ");if(e&&e.length)for(var h=e[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){e[0]=h.substr(k);e.unshift(h.substr(0,k));break}}switch(e[0].charAt(0)){case "a":var n=Pe(a,e[1],!0);
|
||||
if(n)if(a.aa=n,void 0===e[2])a.i("begin assemble at "+X(a,n.D)),a.ba=!0,Fc(a.b);else{var p;a.i("not supported yet");p=[];if(p.length){for(var q=0;q<p.length;q++)a.bc(n,p[q],1);a.i(bf(a,a.aa))}}break;case "b":a:{var G=e[0],z=e[1],A=b;if("?"==z)a.i("breakpoint commands:"),a.i("\tbp [a]\tset exec breakpoint at addr [a]"),a.i("\tbr [a]\tset read breakpoint at addr [a]"),a.i("\tbw [a]\tset write breakpoint at addr [a]"),a.i("\tbc [a]\tclear breakpoint at addr [a]"),a.i("\tbl\tlist all breakpoints"),a.i("\tbn [n]\tbreak after [n] instruction(s)");
|
||||
else{var F=G.charAt(1);if("l"==F){var Na=0,Na=Na+$e(a,a.g),Na=Na+$e(a,a.X);(Na+=$e(a,a.J))||a.i("no breakpoints")}else if("n"==F)a.ya=De(a,z),a.i("break after "+a.ya+" instruction(s)");else if(void 0===z)a.i("missing breakpoint address");else{var aa=Y();if("*"!=z&&(aa=Pe(a,z,!0),!aa))break a;"c"==F?null==aa.D?(He(a),a.i("all breakpoints cleared")):Ye(a,a.g,aa)||Ye(a,a.X,aa)||Ye(a,a.J,aa)||a.i("breakpoint missing: "+X(a,aa.D)):null!=aa.D&&(Te(a,aa,A),"p"==F?a.eb(a.g,aa):"r"==F?a.eb(a.X,aa):"w"==F?
|
||||
a.eb(a.J,aa):a.i("unknown breakpoint command: "+F))}}}break;case "c":a.fb&&(a.fb.value="");break;case "d":a:{var Oa,Pa=e[0],ka=e[1],Aa=e[2],Gf=e[3];if("?"==ka){var la="";for(Oa in Ab)a.Sa[Oa]&&(la&&(la+=","),la+=Oa);la+=",state,symbols";a.i("dump memory commands:");a.i("\tdb [a] [#] dump # bytes at address a");a.i("\tdw [a] [#] dump # words at address a");a.i("\tdd [a] [#] dump # dwords at address a");a.i("\tdh [#] [#] dump # instructions from history");la.length&&a.i("dump extension commands:\n\t"+
|
||||
la)}else if("state"==ka){var $d=nf(a.F,!0);"console"==Aa?console.log($d):(a.fb&&(a.fb.value=""),a.i($d))}else if("symbols"==ka)for(var Kc=0;Kc<a.N.length;Kc++){var Lc=a.N[Kc],Qa;for(Qa in Lc.Ka)if("."!=Qa.charAt(0)){var ae=Lc.Ka[Qa].o;if(void 0!==ae){var be=Lc.Ka[Qa].l;be&&(Qa=be);a.i(X(a,ae)+" "+Qa)}}}else{if("d"==Pa){for(Oa in Ab)if(e[1]==Oa){var ce=a.Sa[Oa];ce?(e.shift(),e.shift(),ce(e)):a.i("no dump registered for "+ka);break a}ka||(Pa=a.Oc||"db")}else a.Oc=Pa;if("dh"==Pa){var de=ka,ee=Aa,fe=
|
||||
"",ge=0,T=a.ra,ma=a.T;if(ma.length){var ba=+de||a.Vb,Ra=+ee||10;isNaN(ba)?ba=Ra:fe="more ";ba>ma.length&&(a.i("note: only "+ma.length+" available"),ba=ma.length);T-=ba;0>T&&(null==ma[ma.length-1].D?(ba=T+ba,T=0):T+=ma.length);var Mc=[];"call"==ee&&(Ra=1E5,Mc=["CALL"]);for(void 0!==de&&a.i(ba+" instructions earlier:");0<Ra&&T!=a.ra;){var he=ma[T++];if(null==he.D)break;var ob=Y(he.D),Hf=ba--,ie=bf(a,ob,"history",Hf);(!Mc.length||0<=ie.indexOf(Mc[0]))&&a.i(ie);ob.ec&&(T+=ob.ec,Ra-=ob.ec,ba-=ob.ec);T>=
|
||||
ma.length&&(T=0);a.Vb=ba;ge++;Ra--}}ge||(a.i("no "+fe+"history available"),a.Vb=void 0)}else{var Sb=Pe(a,ka);if(Sb){var Tb=0;Aa&&("l"==Aa.charAt(0)&&(Aa=Aa.substr(1)||Gf),Tb=De(a,Aa)>>>0,65536<Tb&&(Tb=65536));for(var Ba="",Ub="dd"==Pa?4:"dw"==Pa?2:1,Vb=Ub*Tb||128,If=Vb+15>>4||1;If--&&0<Vb;){var Wb=0,Nc=0,pb,qb="",Oc="",ka=X(a,Sb.D);for(pb=16;0<pb&&0<Vb;pb--){var Xb=a.Hb(Sb,1),Wb=Wb|Xb<<(Nc++<<3);Nc==Ub&&(qb+=r(Wb,2*Ub),qb+=1==Ub?9==pb?"-":" ":" ",Wb=Nc=0);Oc+=32<=Xb&&128>Xb?String.fromCharCode(Xb):
|
||||
".";Vb--}Ba&&(Ba+="\n");Ba+=ka+" "+qb+(0==pb?" "+Oc:"")}Ba&&a.i(Ba);a.zb=Sb}}}}break;case "e":if("else"==e[0])break;var Yb=1,je=255,ke=a.Hb,le=a.bc;"ew"==e[0]&&(Yb=2,je=65535,ke=a.Ha,le=a.jc);var me=Yb<<1,ne=e[1];if(null==ne)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");else{var Zb=Pe(a,ne);if(Zb)for(var $b=2;$b<e.length;$b++){var rb=Be(a,e[$b]);if(void 0===rb){a.i("unrecognized value: "+e[$b]);break}rb&~je&&a.i("warning: "+
|
||||
r(rb)+" exceeds "+Yb+"-byte value");var Jf=ke.call(a,Zb);a.i("changing "+X(a,Zb.D)+" from "+r(Jf,me,!0)+" to "+r(rb,me,!0));le.call(a,Zb,rb,Yb)}}break;case "g":a:{var oe=e[1],Kf=b;if(void 0!==oe){var Pc=Pe(a,oe,!0);if(!Pc)break a;Te(a,Pc,Kf);a.eb(a.g,Pc,!0)}a.lb(!0)||d||a.i("cpu busy or unavailable, run command ignored")}break;case "h":a:{var Qc;if(a.A.ja)Qc="halting",a.ma();else{if(jb(a,!0))break a;Qc="already halted"}d||a.i(Qc)}break;case "i":if("if"==e[0]){var Rc;var sb=b.substr(2),sb=qa(sb);Be(a,
|
||||
sb)?(d||a.i("true: "+sb),Rc=!0):(d||a.i("false: "+sb),Rc=!1);Rc||(c=!1)}break;case "k":var Lf=e[0];if("?"==e[1])a.i("stack trace commands:"),a.i("\tk\tshow frame addresses"),a.i("\tks\tshow symbol information");else{var Sc=0,pe=Y(),tb=Y(a.b.f[6]);for(a.i("stack trace for "+X(a,tb.D));10>Sc;){for(var Ca=null,Mf=256;65536>tb.D>>>0;){pe.D=a.Ha(tb,2);if(null==tb.D||!Mf--)break;for(var Nf=a,ac=pe,qe=null,ub=ac.D,re=ub,Tc=1;6>=Tc&&ub;Tc++){if(2<Tc){ac.D=ub;var bc=bf(Nf,ac);if(0<=bc.indexOf("JSR")){var se=
|
||||
bc.indexOf(" ");if(ub+(bc.indexOf(" ",se+1)-se-1)/2==re){qe=bc;break}}}ub--}ac.D=re;if(Ca=qe)break}if(!Ca||null==Ca)break;var te=null;if("ks"==Lf){var ue=Ca.match(/[0-9A-F]+$/);ue&&(te=kf(a,ue[0]))}Ca=pa(Ca,50)+" ;"+(te||"stack="+X(a,tb.D));a.i(Ca);Sc++}Sc||a.i("no return addresses found")}break;case "l":if("ln"==e[0]){kf(a,e[1],!0);break}break;case "m":a:{var na,oa=null,H=e[1];"?"==H&&(H=void 0);if(void 0!==H){var ua=0;if("all"==H)ua=1878917119,H=null;else if("on"==H)oa=!0,H=null;else if("off"==
|
||||
H)oa=!1,H=null;else{"keys"==H&&(H="key");"kbd"==H&&(H="keyboard");for(na in Ab)if(H==na){ua=Ab[na];oa=!!(a.ia&ua);break}if(!ua){a.i("unknown message category: "+H);break a}}if(ua)if("on"==e[2])a.ia|=ua,oa=!0;else if("off"==e[2]&&(a.ia&=~ua,oa=!1,1073741824==ua)){for(var Uc=0;Uc<a.Ea.length;Uc++)a.i(a.Ea[Uc]);a.Ea=[]}}var Of=0,va="";for(na in Ab)if(!H||H==na){var Pf=!!(a.ia&Ab[na]);if(null===oa||oa==Pf)va&&(va+=","),++Of%10||(va+="\n\t"),"key"==na&&(na="keys"),va+=na}void 0===H&&a.i("message commands:\n\tm [category] [on|off]\tturn categories on/off");
|
||||
a.i((null!==oa?oa?"messages on: ":"messages off: ":"message categories:\n\t")+(va||"none"));Ie(a)}break;case "p":if("print"==e[0]){lf(a,b.substr(5));break}var Qf="pr"==e[0]?1:0;if(a.ea)a.i("step in progress");else{var ve=Y(a.b.f[7]);a.Hb(ve);a.ea?(a.eb(a.g,ve,!0),a.lb()||(a.F&&a.F.Tb(),a.ea=0)):mf(a,Qf?"tr":"t")}break;case "r":if("reset"==b){a.F&&a.F.reset();break}Ve(a,e);break;case "s":a:switch(e[1]){case "base":if(e[2]){var vb=+e[2];if(8==vb||10==vb||16==vb)a.wa=vb;else{a.i("invalid base: "+vb);
|
||||
break}}a.i("default base: "+a.wa);break;case "cs":var wb;void 0!==e[3]&&(wb=+e[3]);switch(e[2]){case "int":a.b.qb=wb;break;case "start":a.b.Mb=wb;break;case "stop":a.b.rb=wb;break;default:a.i("unknown cs option");break a}void 0!==wb&&Ec(a.b);a.i("checksums "+(a.b.A.ob?"enabled":"disabled"));break;case "sp":void 0!==e[2]&&(Jc(a.b,+e[2])||a.i("warning: using 1x multiplier, previous target not reached"));a.i("target speed: "+(a.b.hb.toFixed(2)+"Mhz")+" ("+a.b.jb+"x)");break;case "?":a.i("debugger options:");
|
||||
a.i("\tbase #\t\tset default base to #");a.i("\tcs int #\tset checksum cycle interval to #");a.i("\tcs start #\tset checksum cycle start count to #");a.i("\tcs stop #\tset checksum cycle stop count to #");a.i("\tsp #\t\tset speed multiplier to #");break;default:e[1]&&a.i("unknown option: "+e[1])}break;case "t":mf(a,e[0],e[1]);break;case "u":We(a,e[1],e[2],8);break;case "v":if("var"==e[0]){jf(a,b.substr(3))||(c=!1);break}a.i("PDP11js version 1.30.0 ("+a.b.vc+",RELEASE"+(mb?",TYPEDARRAYS":",LONGARRAYS")+
|
||||
")");a.i(window?window.navigator.userAgent:"");break;case "?":if(e[1]){lf(a,b.substr(1));break}var xb="commands:",Vc;for(Vc in Le)xb+="\n"+pa(Vc,9)+Le[Vc];nd(a)||(xb+="\nnote: history disabled if no exec breakpoints");a.i(xb);break;default:a.i("unknown command: "+b),c=!1}}}catch(we){a.i("debugger error: "+(we.stack||we.message)),c=!1}return c}function Ke(a,b,d){b=ze(a,b,d);for(var c in b)if(!af(a,b[c]))return!1;return!0}
|
||||
Sa(function(){for(var a=x(document,"pdp11","debugger"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Ge(c);gb(c,d)}});
|
||||
function of(a,b,d){u.call(this,"Computer",a,of,67108864);this.A.fa=!1;pf(this,b);this.X=Cc(this,"autoPower",a);this.C=0;this.ga=a.busWidth||a.buswidth;this.g=qf;this.T=null;this.N=this.ba=!1;this.url=Cc(this,"url")||"";(Math.random()+.1).toString(36);this.F=rf(this);if(this.b=fb("CPU",this.id)){this.I=fb("Debugger",this.id);this.H=new Db({id:this.oc+".bus",busWidth:this.ga},this.b,this.I);var c,f=eb(this.id);if((this.G=fb("Panel",this.id))&&this.G.fb)for(b=0;b<f.length;b++)c=f[b],c.oa=this.G.oa,c.i=
|
||||
this.G.i,c.fb=this.G.fb;this.i("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.i("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<f.length;b++)c=f[b],c.Xa&&c.Xa(this,this.H,this.b,this.I);b=null;c=a.resume;void 0!==c&&(1<c.length?b=this.P=c:this.g=parseInt(c,10));var e;if(a=Cc(this,"state")||(e=!0,a.state))b=this.$=a,e||(this.N=!0,this.g=qf),this.g&&
|
||||
(this.W=new bd(this,"1.30.0"),sf(this.W)?b=null:delete this.W);!b&&this.g&&(b=tf(this))&&(this.N=!0);if(b){var h=this;wa(b,null,!0,function(a,b,c){c?(h.P=null,h.N=!1,h.oa("Unable to load machine state from server (error "+c+(b?": "+qa(b):"")+")")):(h.T=b,h.ba=!0);y(h)})}else y(this);this.O.power||(this.X=!0);!d&&this.X&&uf(this,this.Nb)}else t("Unable to find CPU component")}bb(of);var qf=0;
|
||||
function pf(a,b){if(!b){var d;if("object"==typeof resources&&(d=resources.parms))try{b=eval("("+d+")")}catch(c){t(c.message+" ("+d+")")}}a.ea=b}function Cc(a,b,d){var c=b.toLowerCase(),c=Xa[b]||Xa[c];void 0===c&&a.ea&&(c=a.ea[b]);void 0===c&&d&&(c=d[b]);void 0===c&&"object"==typeof resources&&resources[b]&&(c=b);return c}function uf(a,b,d){for(var c=eb(a.id),f=0;f<=c.length;f++){var e=f<c.length?c[f]:a;if(!kb(e)){kb(e,function(){uf(a,b,d)});return}}b.call(a,d)}
|
||||
function vf(a,b){var d=new bd(a,"1.30.0","validate");if(sf(d)&&wf(d)){var c=xf(d,"timestamp"),f=b?xf(b,"timestamp"):"unknown";c!=f&&(a.oa("Machine state may be out-of-date\n("+c+" vs. "+f+")\nCheck your browser's local storage limits"),b||d.clear())}}m=of.prototype;
|
||||
m.Nb=function(a){void 0===a&&(a=this.g||(this.T?1:qf));if(!this.C){this.C++;var b=!1,d=!1;this.aa=!1;var c=this.W||new bd(this,"1.30.0");if(-1==a)b=!0;else if(a>qf){if(sf(c,this.T)){this.J=new bd(this,"1.30.0","failsafe");sf(this.J)&&(yf(this,c),a=2,zf(this.J));N(this.J,"timestamp",ta());Af(this.J);var f=this.g&&!this.N;if(1==a||xa("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(d=wf(c)){var e=xf(c,"code"),h=xf(c,"data");e&&("ok"==e?sf(c,h):("error"==
|
||||
e&&"no machine state"!=h?(this.oa("Error: "+h),"unable to verify user"==h&&(Ea("user",""),this.F=null)):this.i(e+": "+h),zf(c),sf(c)?(d=wf(c),f=!0):d=!1))}f&&vf(this,d?c:null)}else 2==a&&c.clear()}else vf(this);delete this.T;delete this.W}f=eb(this.id);for(e=0;e<f.length;e++)h=f[e],h!==this&&h!=this.b&&(d=Bf(this,h,c,b,d));b=[c,a,d];-1!=a?uf(this,this.tc,b):this.tc(b)}};
|
||||
function Bf(a,b,d,c,f){if(!b.A.fa){b.A.fa=!0;if(b.Na){var e=null;f&&((e=xf(d,b.id))||(e=xf(d,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof e&&(e=null);!b.Na(e,c)&&e&&(t("Unable to restore state for "+b.type),a.$&&!a.ba?(d.clear(),a.g=qf,window&&window.location.reload()):a.aa=!0,b.Na(null),f=!1)}if(!c&&b.mc)for(a=b.mc.split("|"),d=0;d<a.length;d++)b.status(a[d])}return f}
|
||||
m.tc=function(a){var b=a[0],d=0>a[1];a=a[2];this.ha=!0;this.A.fa=!0;var c=this.O.power;c&&(c.textContent="Shutdown");this.b&&(Bf(this,this.b,b,d,a),this.b.Db());this.aa&&(yf(this,b),b.clear());!d&&this.J&&(this.J.clear(),delete this.J);this.C=0};
|
||||
function yf(a,b){if(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.F||"",c=b.toString(),f={app:"PDP11js",ver:"1.30.0"};f.url=a.url;f.user=d;f.type="bug";f.data=c;wa("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function nf(a,b,d){var c,f="none";if(a.C)return null;a.C--;var e=new bd(a,"1.30.0"),h=new bd(a,"1.30.0","validate"),g=ta();N(h,"timestamp",g);N(e,"timestamp",g);N(e,"version","1.30.0");N(e,"url",window?window.location.href:null);N(e,"browser",window?window.navigator.userAgent:"");a.b&&a.b.Ma&&(d&&a.b.ma(),c=a.b.Ma(b,d),"object"===typeof c&&N(e,a.b.id,c),d&&(a.b.A.fa=!1,!1===c&&(f=null)));for(var g=eb(a.id),k=0;k<g.length;k++){var l=g[k];l.A.fa&&(l.Ma&&(c=l.Ma(b,d),"object"===typeof c&&N(e,l.id,c)),
|
||||
d&&(l.A.fa=!1,!1===c&&(f=null)))}f&&(d?(g=c=!1,b?(a.F&&Cf(a,a.F,e.toString()),Af(h)&&Af(e)||(f=null,c=g=!0)):a.g&&(c=!0,g=3==a.g),c&&e.clear(g)):f=e.toString());d&&(a.A.fa=!1,b=a.O.power)&&(b.textContent="Power");a.C=0;return f}
|
||||
m.reset=function(){this.H&&this.H.reset&&(this.I&&hb(this,0)&&this.I.message("Resetting "+this.H.type,void 0),this.H.reset());for(var a=eb(this.id),b=0;b<a.length;b++){var d=a[b];d!==this&&d!==this.H&&d.reset&&(this.I&&hb(this,0)&&this.I.message("Resetting "+d.type,void 0),d.reset())}};m.start=function(a,b){for(var d=eb(this.id),c=0;c<d.length;c++){var f=d[c];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
|
||||
m.stop=function(a,b){for(var d=eb(this.id),c=0;c<d.length;c++){var f=d[c];"CPU"!=f.type&&f!==this&&f.stop&&f.stop(a,b)}};
|
||||
m.ua=function(a,b,d){var c=this;switch(b){case "power":return this.O[b]=d,d.onclick=function(){c.C||(c.A.fa?nf(c,!1,!0):uf(c,c.Nb))},!0;case "reset":return this.O[b]=d,d.onclick=function(){if(c.A.fa&&!c.C)if(c.g&&!c.P){var a=xa("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");nf(c,a,!0);!a&&c.$?window&&window.location.reload():c.Nb(qf)}else c.reset(),c.b&&c.b.Db()},!0;case "save":if(ga()){d.parentNode.removeChild(d);break}this.O[b]=
|
||||
d;d.onclick=function(){var a=rf(c,!0);if(a){var b=!!(c.g&&!c.P||c.$),d=nf(c,b);b?Cf(c,a,d):c.oa("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function rf(a,b){var d=a.F;d||(d=Da("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=Df(a,d))||a.oa("The user ID is invalid."))):b&&a.oa("Browser local storage is not available"));return d}
|
||||
function Df(a,b){a.F=null;var d=wa(ha()+"/api/v1/user?req=verify&user="+b),c=d[1];if(!d[0]&&c)try{d=eval("("+c+")"),d.code&&"ok"==d.code&&(Ea("user",d.data),a.F=d.data)}catch(f){t(f.message+" ("+c+")")}return a.F}function tf(a){var b=null;a.F&&(b=ha()+"/api/v1/user?req=load&user="+a.F+"&state="+Ef(a,"1.30.0"));return b}
|
||||
function Cf(a,b,d){if(d){var c={req:"store"};c.user=b;c.state=Ef(a,"1.30.0");c.data=d;b=wa(ha()+"/api/v1/user",c);c=b[0];if(b[1]){if(c){var f=c.indexOf("\n");0<f&&(c=c.substr(0,f));c.indexOf("Error: ")||(c=c.substr(7))}c='{"code":'+b[1]+',"data":"'+c+'"}'}b=JSON.parse(c);b&&"ok"==b.code?a.oa("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.oa(d),Ea("user",""),a.F=null)}}m.Tb=function(){};
|
||||
m.xa=function(a){this.b&&this.b.xa(a);this.G&&this.G.xa(a)};Sa(function(){for(var a=x(document,"pdp11-machine"),b=0;b<a.length;b++)for(var d=a[b],c=w(d),d=x(d,"pdp11","computer"),f=0;f<d.length;f++){var e=d[f],h=w(e),h=new of(h,c,!0);gb(h,e);h.X&&uf(h,h.Nb)}});Ia.show.push(function(){for(var a=x(document,"pdp11","computer"),b=0;b<a.length;b++){var d=w(a[b]);(d=fb("Computer",d.id))&&d.ha&&!d.A.fa&&d.Nb(-1)}});
|
||||
Ia.exit.push(function(){for(var a=x(document,"pdp11","computer"),b=0;b<a.length;b++){var d=w(a[b]);(d=fb("Computer",d.id))&&d.A.fa&&nf(d,!(!d.g||d.P),!0)}});function bd(a,b,d){this.id=a.id;this.key=Ef(a,b,d);this.I=a.I;zf(this,a.Nc)}function Ef(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}
|
||||
bd.prototype={constructor:bd,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){zf(this);var b=[];try{for(var d=0,c=window.localStorage.length;d<c;d++)b.push(window.localStorage.key(d))}catch(f){}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(f){}b.splice(d,1);d=0}}};
|
||||
function zf(a,b){a[a.id]={};b&&N(a,"parms",b);a.b=!1}function Af(a){var b=!0;if(za()){var d=JSON.stringify(a[a.id]);Ea(a.key,d)||(t("Unable to store "+d.length+" bytes in browser local storage"),b=!1)}return b}function wf(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(d){t(d.message||d),b=!1}return b}function sf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:za()&&(b=Da(a.key))?(a[a.id]=b,a.b=!0):!1}function xf(a,b){return a[a.id][b]||null}function N(a,b,d){try{a[a.id][b]=d}catch(c){}}var Ff=0;
|
||||
function Rf(a,b,d,c,f,e){f("Loading "+a+"...");wa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),e(g,null)):Sf(g,a,b,d,c,f,e)})}
|
||||
function Sf(a,b,d,c,f,e,h){function g(a,e){if(e)h(e,null);else{if(d){db(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+'"':""))}f||(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{f||(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?f?Tf(a,e,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Tf(a,b,d){var c;if(c=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=c[2];b("Loading "+f+"...");wa(f,null,!0,function(e,h,g){if(g||!h)d(a,"unable to resolve XML reference: "+c[0]+" ("+g+")");else{if(e=c[3])if(g=h.match(new RegExp("<"+c[1]+"[^>]*>"))){for(var k=g[0],l,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.exec(e);)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 "+f);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(c[0],h);Tf(a,b,d)}})}else d(a,null)}
|
||||
function Uf(a,b,d,c){function f(a){if(void 0===g){var b=h&&x(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ja(a))}function e(a){f("Error: "+a);k&&(--Ff||Ua(!0));k=!1}var h,g,k=!0;Ff++;cb[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=l:p.appendChild(document.createTextNode(l));n.appendChild(p)}d||
|
||||
(d="/versions/pdp11/1.30.0/components.xsl");l=function(c,g){g?Rf(d,null,null,!1,f,function(c,k){if(k)if(db(a,d,c),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--Ff||Ua(!0)):e("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),--Ff||Ua(!0)):e("invalid machine element: "+
|
||||
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(c)}):e(c)};"<"!=b.charAt(0)?Rf(b,a,c,!0,f,l):Sf(b,null,a,c,!1,f,l)}else e("missing machine element: "+a)}catch(q){e(q.message)}return k}window.embedPDP11=function(a,b,d,c){Ua(!1);return Uf(a,b,d,c)};window.enableEvents=Ua;window.sendEvent=Va;})();
|
||||
|
|
|
|||
|
|
@ -8,148 +8,155 @@ typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encod
|
|||
function q(a){window&&window.alert(a)}function ja(a){var b=!1;window&&(b=window.confirm(a));return b}var ka=null;function la(){if(null==ka){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}ka=a}return ka}function ma(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function na(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function oa(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var r={init:[],show:[],exit:[]},pa=!1,qa=!1,ra=!0;function sa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function u(a){r.init.push(a)}
|
||||
function ta(a){if(ra)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){q(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function ua(a){!ra&&a?(ra=!0,pa&&va("init"),qa&&va("show")):ra=a}function va(a){r[a]&&ta(r[a])}sa("onload",function(){pa=!0;ta(r.init)});sa("onpageshow",function(){qa=!0;ta(r.show)});sa(oa("Opera")||oa("iOS")?"onunload":"onbeforeunload",function(){ta(r.exit)});
|
||||
function v(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Gb=b.comment;this.ac=b;b=this.id.indexOf(".");0>b?this.tb=this.id:(this.Hb=this.id.substr(0,b),this.tb=this.id.substr(b+1));this[a]=c;this.i={ready:!1,Za:!1,xb:!1,L:!1,error:!1};this.lb=null;this.i.error=!1;this.A={};this.I=null;x.push(this)}var wa=void 0,xa={};
|
||||
function v(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Hb=b.comment;this.cc=b;b=this.id.indexOf(".");0>b?this.ub=this.id:(this.Fb=this.id.substr(0,b),this.ub=this.id.substr(b+1));this[a]=c;this.j={ready:!1,Za:!1,yb:!1,M:!1,error:!1};this.mb=null;this.j.error=!1;this.B={};this.I=null;w.push(this)}var wa=void 0,xa={};
|
||||
if(window){wa||(wa=window.location.search.substr(1));for(var ya,za=/\+/g,Aa=/([^&=]+)=?([^&]*)/g;ya=Aa.exec(wa);)xa[decodeURIComponent(ya[1].replace(za," "))]=decodeURIComponent(ya[2].replace(za," "))}function Ba(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
||||
function y(a,b){b||(b=v);a.prototype=Ba(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Ca=window.PCjs.Machines||(window.PCjs.Machines={}),x=window.PCjs.Components||(window.PCjs.Components=[])}else Ca={},x=[];function Da(a,b,c){Ca[a]&&b&&(Ca[a][b]=c)}function z(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<x.length;b++){var d=x[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
||||
function Ea(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<x.length;d++)if(c)c==x[d]&&(c=null);else if(!(a!=x[d].type||b&&x[d].id.indexOf(b)))return x[d]}return null}function A(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){q(c.message+" ("+a+")")}return b}
|
||||
function B(a,b){for(var c=C(b.parentNode,"pdp11-control"),d=0;d<c.length;d++)for(var f=c[d].childNodes,e=0;e<f.length;e++){var h=f[e];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=A(h))&&g.binding&&a.ba(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||
function C(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)f.test(a[b].className)&&c.push(a[b]);return c}
|
||||
v.prototype={constructor:v,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ba:function(a,b,c){switch(b){case "clear":return this.A[b]||(this.A[b]=c,c.onclick=function(a){return function(){a.A.print&&(a.A.print.value="")}}(this)),!0;case "print":return this.A[b]||(this.yb=this.A[b]=c,c.value="",this.X=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.K=function(a){this.X(a,this.tb)}),!0;default:return!1}},log:function(){},X:function(){},status:function(a){this.X(this.tb+": "+a)},K:function(a,b,c){c=c||this.type;b||q((c?c+": ":"")+a)},ua:function(){return this.i.L=!0},ta:function(a,b){b&&(this.i.L=!1);return!0}};function Fa(a,b){if(a.i.xb)return a.i.Za&&(a.i.Za=!1),a.i.xb=!1;if(a.i.error)return a.X(a.toString()+" error"),!1;a.i.Za=b;return a.i.Za}function D(a){if(!a.i.error&&(a.i.ready=!0,a.i.ready)){var b=a.lb;a.lb=null;b&&b()}}
|
||||
function Ga(a,b){b&&(a.i.ready?b():a.lb=b);return a.i.ready}var Ha="undefined"!==typeof ArrayBuffer,Ia=2,E=4,F=6,Ia=0|Ia,Ja=1|Ia,E=0|E,Ka=1|E,F=0|F,G=1|F;function La(a){v.call(this,"Panel",a,La)}y(La);m=La.prototype;m.ba=function(a,b,c,d){return this.u&&this.u.ba(a,b,c,d)||this.b&&this.b.ba(a,b,c,d)?!0:this.parent.ba.call(this,a,b,c,d)};m.Ga=function(a,b,c,d){this.u=a;this.v=b;this.b=c;this.I=d};m.ua=function(a,b){b||Ma();return!0};m.ta=function(){return!0};m.Ka=function(){};
|
||||
function Ma(){for(var a=!1,b=C(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],f=A(d),e;a:{e=f.id;if(void 0!==e)for(var h=void 0,h=0;h<x.length;h++)if(x[h].id===e){e=x[h];break a}e=null}e||(a=!0,e=new La(f));B(e,d);a&&D(e)}}u(Ma);
|
||||
function Na(a,b,c){v.call(this,"Bus",a,Na);this.b=b;this.I=c;this.F=a.busWidth||16;this.m=Math.pow(2,this.F);this.j=this.m-1|0;this.f=(this.F>>1)+2;10>this.f&&(this.f=10);15<this.f&&(this.f=15);this.g=1<<this.f;this.M=this.g>>2;this.h=this.g-1;this.v=this.m/this.g|0;this.N=this.v-1;this.oa=[];this.u=null;this.$a=this.R;a=new H;Oa(a,this.I);this.c=Array(this.v);for(b=0;b<this.v;b++)this.c[b]=a;this.Wa=Array(4);this.Wa[0]=Pa;this.Wa[1]=Qa;this.Wa[2]=Ra;this.Wa[3]=Sa;this.J=this.m-8192;Ta(this,this.J,
|
||||
8192,Ua,this);D(this)}y(Na);function Pa(a,b){var c=this.controller.oa[a];if(c){if(c[0])return c[0](b);if(c[2])return b&1?c[2](b&-2)>>8:c[2](b)&255}else if(b&1&&(c=this.controller.oa[a&-2],c[2]))return c[2](b&-2)>>8;return this.controller.$a(b,-1,1)}
|
||||
function Qa(a,b,c){var d=this.controller.oa[a];if(d){if(d[1]){d[1](b,c);return}if(d[3]){a=d[2]?d[2](c):0;if(c&1)d[3](a&255|b<<8,c&-2);else d[3](a&-256|b,c);return}}else if(c&1&&(d=this.controller.oa[a&-2],d[3])){c&=-2;a=d[2]?d[2](c):0;d[3](a&255|b<<8,c);return}this.controller.$a(c,b,1)}function Ra(a,b){var c=this.controller.oa[a];if(c){if(c[2])return c[2](b);if(c[0])return c[0](b)|c[0](b+1)<<8}return this.controller.$a(b,-1,0)}
|
||||
function Sa(a,b,c){if(a=this.controller.oa[a]){if(a[3]){a[3](b,c);return}if(a[1]){a[1](b&255,c);a[1](b>>8,c+1);return}}this.controller.$a(c,b,0)}Na.prototype.reset=function(){this.u&&this.u()};Na.prototype.R=function(){return 0};Na.prototype.ua=function(a,b){b||this.reset();return!0};
|
||||
function Ta(a,b,c,d,f){for(var e=b,h=c,g=e>>>a.f;0<h&&g<a.c.length;){var k=a.c[g],l=g*a.g,t=a.g-(e-l);t>h&&(t=h);if(k&&k.size){if(k.type==d&&k.controller==f){if(e+h<=k.Qa)return k.rb+=k.Qa-e,k.Qa=e,!0;if(e>=k.Qa+k.rb){t=k.size-(e-l);t>h&&(t=h);k.rb=e-k.Qa+t;e=l+a.g;h-=t;g++;continue}}return Va(1,e,h)}e=new H(e,t,a.g,d,f);Oa(e,a.I,k);a.c[g++]=e;e=l+a.g;h-=t}return 0>=h?(a.status(Math.floor(c/1024)+"Kb "+Wa[d]+" at "+n(b,8,!0)),!0):Va(2,b,c)}
|
||||
function Va(a,b,c){q("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}
|
||||
function Xa(a){v.call(this,"Device",a,Xa);this.u=a.name;this.m={Bb:[],ga:0,U:128,c:127,$b:0};this.c={data:0,wc:0,Ra:20,sc:0};this.f={Ab:0,l:0};this.g={gb:2496,P:0,w:128,hb:0,fb:0,V:0,Pb:0,S:[],Ea:[406,406,406,406],D:[12,12,12,12]};this.h={l:129,Ya:0,H:0,sa:0,pa:0,wa:0,S:[],D:[40,40,40,40],Ea:[1024,1024,512,512],Xb:[157,157,29,29]};this.j={b:[8210,8208,8210,8226],D:[22,22,22,50],Da:[19,19,19,32],sb:[815,411,815,630],S:[],B:2176,Ua:0,Sa:0,aa:[0,0,0,0,0,0,0,0],$:0,T:[4544,4544,4544,4544,4544,4544,4544,
|
||||
4544],Ta:[0,0,0,0,0,0,0,0],Ja:0,qc:[0,0,0,0,0,0,0,0],Qb:0,Rb:[0,0,0,0,0,0,0,0],f:[0,0,0,0,0,0,0,0],rc:[1,2,3,4,5,6,7,8],Sb:[0,0,0,0,0,0,0,0],ka:[0,0,0,0,0,0,0,0],qb:[0,0,0,0,0,0,0,0],oc:[0,0,0,0,0,0,0,0],pc:[0,0,0,0,0,0,0,0],mc:[0,0,0,0,0,0,0,0],nc:[0,0,0,0,0,0,0,0],va:0,Cb:0}}y(Xa);
|
||||
var Ya=[4127,448,4191,450,4383,452,2591,454,21983,32768,65534,13791,16384,65534,770,2719,454,2591,65534,257,0,2566,33028,34051,33282,1281,33537,0,2758,32771,770,1025,1793,0,3078,33794,34305,513,0,5574,43690,4480,4097,4162,4227,4292,4357,57665,1281,769,0,3138,34305,1281,0,24707,2691,2627,24769,34561,1793,0,3076,20739,24899,2691,34562,2753,1281,0,2624,33537,0,16385,24641,1537,1793,0,193,8279,21589,516,12549,1538,2629,513,0,38336,65281,32769,0,32258,2561,2689,32258,3008,514,3009,769,0,5574,510,2551,
|
||||
function x(a,b){b||(b=v);a.prototype=Ba(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Ca=window.PCjs.Machines||(window.PCjs.Machines={}),w=window.PCjs.Components||(window.PCjs.Components=[])}else Ca={},w=[];function Da(a,b,c){Ca[a]&&b&&(Ca[a][b]=c)}function y(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<w.length;b++){var d=w[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
||||
function Ea(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<w.length;d++)if(c)c==w[d]&&(c=null);else if(!(a!=w[d].type||b&&w[d].id.indexOf(b)))return w[d]}return null}function A(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){q(c.message+" ("+a+")")}return b}
|
||||
function Fa(a,b){for(var c=B(b.parentNode,"pdp11-control"),d=0;d<c.length;d++)for(var f=c[d].childNodes,e=0;e<f.length;e++){var h=f[e];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=A(h))&&g.binding&&a.ba(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||
function B(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)f.test(a[b].className)&&c.push(a[b]);return c}
|
||||
v.prototype={constructor:v,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ba:function(a,b,c){switch(b){case "clear":return this.B[b]||(this.B[b]=c,c.onclick=function(a){return function(){a.B.print&&(a.B.print.value="")}}(this)),!0;case "print":return this.B[b]||(this.zb=this.B[b]=c,c.value="",this.Y=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.L=function(a){this.Y(a,this.ub)}),!0;default:return!1}},log:function(){},Y:function(){},status:function(a){this.Y(this.ub+": "+a)},L:function(a,b,c){c=c||this.type;b||q((c?c+": ":"")+a)},va:function(){return this.j.M=!0},ua:function(a,b){b&&(this.j.M=!1);return!0}};function Ga(a,b){if(a.j.yb)return a.j.Za&&(a.j.Za=!1),a.j.yb=!1;if(a.j.error)return a.Y(a.toString()+" error"),!1;a.j.Za=b;return a.j.Za}function C(a){if(!a.j.error&&(a.j.ready=!0,a.j.ready)){var b=a.mb;a.mb=null;b&&b()}}
|
||||
function Ha(a,b){b&&(a.j.ready?b():a.mb=b);return a.j.ready}var Ia="undefined"!==typeof ArrayBuffer,Ja=2,D=4,E=6,Ja=0|Ja,Ka=1|Ja,D=0|D,La=1|D,E=0|E,F=1|E;function Ma(a){v.call(this,"Panel",a,Ma)}x(Ma);m=Ma.prototype;m.ba=function(a,b,c,d){return this.v&&this.v.ba(a,b,c,d)||this.c&&this.c.ba(a,b,c,d)?!0:this.parent.ba.call(this,a,b,c,d)};m.Ha=function(a,b,c,d){this.v=a;this.w=b;this.c=c;this.I=d};m.va=function(a,b){b||Na();return!0};m.ua=function(){return!0};m.La=function(){};
|
||||
function Na(){for(var a=!1,b=B(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],f=A(d),e;a:{e=f.id;if(void 0!==e)for(var h=void 0,h=0;h<w.length;h++)if(w[h].id===e){e=w[h];break a}e=null}e||(a=!0,e=new Ma(f));Fa(e,d);a&&C(e)}}u(Na);
|
||||
function Oa(a,b,c){v.call(this,"Bus",a,Oa);this.c=b;this.I=c;this.v=a.busWidth||16;this.w=Math.pow(2,this.v);this.i=this.w-1|0;this.f=(this.v>>1)+2;10>this.f&&(this.f=10);15<this.f&&(this.f=15);this.g=1<<this.f;this.K=this.g>>2;this.h=this.g-1;this.l=this.w/this.g|0;this.N=this.l-1;this.pa=[];this.u=null;this.$a=this.R;a=new G;Pa(a,this.I);this.b=Array(this.l);for(b=0;b<this.l;b++)this.b[b]=a;this.Wa=Array(4);this.Wa[0]=Qa;this.Wa[1]=Ra;this.Wa[2]=Sa;this.Wa[3]=Ta;this.J=this.w-8192;Ua(this,this.J,
|
||||
8192,Va,this);C(this)}x(Oa);function Qa(a,b){var c=this.controller.pa[a];if(c){if(c[0])return c[0](b);if(c[2])return b&1?c[2](b&-2)>>8:c[2](b)&255}else if(b&1&&(c=this.controller.pa[a&-2],c[2]))return c[2](b&-2)>>8;return this.controller.$a(b,-1,1)}
|
||||
function Ra(a,b,c){var d=this.controller.pa[a];if(d){if(d[1]){d[1](b,c);return}if(d[3]){a=d[2]?d[2](c):0;if(c&1)d[3](a&255|b<<8,c&-2);else d[3](a&-256|b,c);return}}else if(c&1&&(d=this.controller.pa[a&-2],d[3])){c&=-2;a=d[2]?d[2](c):0;d[3](a&255|b<<8,c);return}this.controller.$a(c,b,1)}function Sa(a,b){var c=this.controller.pa[a];if(c){if(c[2])return c[2](b);if(c[0])return c[0](b)|c[0](b+1)<<8}return this.controller.$a(b,-1,0)}
|
||||
function Ta(a,b,c){if(a=this.controller.pa[a]){if(a[3]){a[3](b,c);return}if(a[1]){a[1](b&255,c);a[1](b>>8,c+1);return}}this.controller.$a(c,b,0)}Oa.prototype.reset=function(){this.u&&this.u()};Oa.prototype.R=function(){return 0};Oa.prototype.va=function(a,b){b||this.reset();return!0};
|
||||
function Ua(a,b,c,d,f){for(var e=b,h=c,g=e>>>a.f;0<h&&g<a.b.length;){var k=a.b[g],l=g*a.g,t=a.g-(e-l);t>h&&(t=h);if(k&&k.size){if(k.type==d&&k.controller==f){if(e+h<=k.Qa)return k.sb+=k.Qa-e,k.Qa=e,!0;if(e>=k.Qa+k.sb){t=k.size-(e-l);t>h&&(t=h);k.sb=e-k.Qa+t;e=l+a.g;h-=t;g++;continue}}return Wa(1,e,h)}e=new G(e,t,a.g,d,f);Pa(e,a.I,k);a.b[g++]=e;e=l+a.g;h-=t}return 0>=h?(a.status(Math.floor(c/1024)+"Kb "+Xa[d]+" at "+n(b,8,!0)),!0):Wa(2,b,c)}
|
||||
function Wa(a,b,c){q("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}
|
||||
function Ya(a){v.call(this,"Device",a,Ya);this.u=a.name;this.l={Cb:[],ga:0,U:128,b:127,$b:0};this.b={data:0,xc:0,Ra:20,tc:0};this.f={Bb:0,m:0};this.g={gb:2496,P:0,A:128,hb:0,fb:0,V:0,Qb:0,S:[],Fa:[406,406,406,406],F:[12,12,12,12]};this.h={m:129,Ya:0,H:0,ta:0,qa:0,xa:0,S:[],F:[40,40,40,40],Fa:[1024,1024,512,512],Yb:[157,157,29,29]};this.i={c:[8210,8208,8210,8226],F:[22,22,22,50],Ea:[19,19,19,32],tb:[815,411,815,630],S:[],C:2176,Ua:0,Sa:0,aa:[0,0,0,0,0,0,0,0],$:0,T:[4544,4544,4544,4544,4544,4544,4544,
|
||||
4544],Ta:[0,0,0,0,0,0,0,0],Ka:0,rc:[0,0,0,0,0,0,0,0],Rb:0,Sb:[0,0,0,0,0,0,0,0],f:[0,0,0,0,0,0,0,0],sc:[1,2,3,4,5,6,7,8],Tb:[0,0,0,0,0,0,0,0],ka:[0,0,0,0,0,0,0,0],rb:[0,0,0,0,0,0,0,0],pc:[0,0,0,0,0,0,0,0],qc:[0,0,0,0,0,0,0,0],nc:[0,0,0,0,0,0,0,0],oc:[0,0,0,0,0,0,0,0],wa:0,Db:0}}x(Ya);
|
||||
var Za=[4127,448,4191,450,4383,452,2591,454,21983,32768,65534,13791,16384,65534,770,2719,454,2591,65534,257,0,2566,33028,34051,33282,1281,33537,0,2758,32771,770,1025,1793,0,3078,33794,34305,513,0,5574,43690,4480,4097,4162,4227,4292,4357,57665,1281,769,0,3138,34305,1281,0,24707,2691,2627,24769,34561,1793,0,3076,20739,24899,2691,34562,2753,1281,0,2624,33537,0,16385,24641,1537,1793,0,193,8279,21589,516,12549,1538,2629,513,0,38336,65281,32769,0,32258,2561,2689,32258,3008,514,3009,769,0,5574,510,2551,
|
||||
2,0,9678,208,769,0,5582,226,135,0,2598,5606,236,2,0,95,242,128,5573,57344,2591,6,5599,256,4,5574,510,3045,5599,460,76,2591,78,5571,65510,5579,12,5570,512,4224,4104,3024,8197,33788,4224,4609,8193,769,0,2640,8197,33785,6145,2625,8193,769,0,8194,761,2574,5572,43690,5579,24,5568,2048,5570,512,2628,4360,2632,2632,8708,769,0,3103,65514,34562,0,305,35406,754,258,119,65160,3024,32403,5579,36,5568,3072,35446,1,740,5570,512,4224,4104,3024,8197,33788,5569,3,2574,3039,454,528,5582,24,4224,2632,2632,8200,769,
|
||||
0,3024,3103,65514,34562,0,264,8197,33779,5003,2574,32337,260,0,258,5579,12,6080,448,6081,450,6084,452,116,2,6084,65400,17860,65024,21956,62976,38848,65401,3200,161,76,0,16944,10797];m=Xa.prototype;
|
||||
m.Ga=function(a,b,c,d){this.v=b;this.b=c;this.I=d;switch(this.u){default:a=Za;for(var f in a){var e=a[f];c=b;d=+f;for(var h=e[0]?e[0].bind(this):null,g=e[1]?e[1].bind(this):null,k=e[2]?e[2].bind(this):null,e=e[3]?e[3].bind(this):null,l=+f;l<=d;l+=2){var t=l&8191;void 0!==c.oa[t]?q("I/O address already registered: "+n(c.J+t,8,!0)):c.oa[t]=[h,g,k,e,!1]}}f=this.Wb.bind(this);b.u=this.reset.bind(this);b.$a=f}D(this)};m.hc=function(){return $a(this.b)};
|
||||
m.uc=function(a){ab(this.b,a&-1809|$a(this.b)&1808);this.b.C|=128};
|
||||
function bb(a){var b=a.g,c,d,f,e=b.V>>13&7;"undefined"===typeof b.S[e]&&(b.S[e]={cache:[],postProcess:a.jc,drive:e,blocksize:256,mapped:0,maxblock:b.Ea[e]*b.D[e],url:"rk"+e+".dsk"});b.w&=-129;switch(b.w>>1&7){case 0:b.gb=2496;b.P=0;b.w=128;b.V=0;break;case 1:if((b.V>>4&511)>=b.Ea[e]){b.P|=32832;b.w|=49152;break}if((b.V&15)>=b.D[e]){b.P|=32800;b.w|=49152;break}c=(b.V>>4&511)*b.D[e]+(b.V&15);d=(b.w&48)<<12|b.fb;f=65536-b.hb&65535;cb(a,b.S[e],c,d,f);return;case 2:if((b.V>>4&511)>=b.Ea[e]){b.P|=32832;
|
||||
b.w|=49152;break}if((b.V&15)>=b.D[e]){b.P|=32800;b.w|=49152;break}c=(b.V>>4&511)*b.D[e]+(b.V&15);d=(b.w&48)<<12|b.fb;f=65536-b.hb&65535;a.pb(b.S[e],c,d,f);return}b.gb=e<<13|b.gb&8176|b.V%9&15;I(a.b,20,160,144,function(){b.w=b.w&65534|128;return!!(b.w&64)})}m.jc=function(a,b,c,d,f){var e=this.g;e.fb=d&65535;e.w=e.w&-49|d>>12&48;e.hb=65536-f&65535;switch(a){case 1:e.P|=33024;e.w|=49152;break;case 2:e.P|=33792,e.w|=49152}I(this.b,20,160,144,function(){e.w=e.w&65534|128;return!!(e.w&64)})};
|
||||
function db(a){var b=a.h,c,d,f,e=b.l>>8&3;b.l&=-2;"undefined"===typeof b.S[e]&&(b.S[e]={cache:[],postProcess:a.kc,drive:e,blocksize:128,mapped:1,maxblock:b.Ea[e]*b.D[e],url:"rl"+e+".dsk"});switch(b.l>>1&7){case 2:b.sa&8&&(b.l&=63);b.sa=b.Xb[e]|b.wa&64;break;case 3:1==(b.H&3)&&(b.wa=b.H&4?b.wa+(b.H&65408)&65408|b.H<<2&64:b.wa-(b.H&65408)&65408|b.H<<2&64,b.H=b.wa);break;case 4:b.sa=b.wa;break;case 5:if(b.H>>6>=b.Ea[e]){b.l|=37888;break}if((b.H&63)>=b.D[e]){b.l|=37888;break}c=(b.H>>6)*b.D[e]+(b.H&63);
|
||||
d=(b.pa&63)<<16|b.Ya;f=65536-b.sa&65535;cb(a,b.S[e],c,d,f);return;case 6:if(b.H>>6>=b.Ea[e]){b.l|=37888;break}if((b.H&63)>=b.D[e]){b.l|=37888;break}c=(b.H>>6)*b.D[e]+(b.H&63);d=(b.pa&63)<<16|b.Ya;f=65536-b.sa&65535;a.pb(b.S[e],c,d,f);return}I(a.b,20,160,112,function(){b.l|=129;return!!(b.l&64)})}
|
||||
m.kc=function(a,b,c,d,f){var e=this.h;e.Ya=d&65535;e.l=e.l&-49|d>>12&48;e.pa=d>>16&63;e.H=~~(c/e.D[b.ia])<<6|c%e.D[b.ia];e.wa=e.H;e.sa=65536-f&65535;switch(a){case 1:e.l|=33792;break;case 2:e.l|=40960}I(this.b,20,160,112,function(){e.l|=129;return!!(e.l&64)})};function eb(a){a=a.j;a.B=2176;a.$=0;a.T=[4544,4544,4544,4544,4544,4544,4544,4544];a.Ta=[0,0,0,0,0,0,0,0];a.Ja=a.Ua=a.Sa=a.va=a.Cb=0}
|
||||
function fb(a,b){var c=a.j,d,f,e;c.B&=-16513;c.$&=-2049;c.T[b]&=-1153;I(a.b,-1,0,172);"undefined"===typeof c.S[b]&&(c.S[b]={cache:[],postProcess:a.lc,drive:b,blocksize:256,mapped:0,maxblock:c.sb[0]*c.Da[0]*c.D[0],url:"rp"+b+".dsk"});switch(c.B&63){case 5:c.qb[b]=c.ka[b];c.B|=32896;c.T[b]|=32896;c.Ja|=1<<b;break;case 9:eb(a);break;case 19:c.T[b]|=64;break;case 49:if(c.ka[b]>=c.sb[0]||c.aa[b]>>8>=c.Da[0]||(c.aa[b]&255)>=c.D[0]){c.Ta[b]|=1024;c.B|=49152;break}d=(c.ka[b]*c.Da[0]+(c.aa[b]>>8))*c.D[0]+
|
||||
(c.aa[b]&255);f=(c.va&63)<<16|c.Sa;e=65536-c.Ua&65535;cb(a,c.S[b],d,f,e);return;case 57:if(c.ka[b]>=c.sb[0]||c.aa[b]>>8>=c.Da[0]||(c.aa[b]&255)>=c.D[0]){c.Ta[b]|=1024;c.B|=49152;break}d=(c.ka[b]*c.Da[0]+(c.aa[b]>>8))*c.D[0]+(c.aa[b]&255);f=(c.va&63)<<16|c.Sa;e=65536-c.Ua&65535;a.pb(c.S[b],d,f,e);return}I(a.b,3,160,172,function(){c.B=c.B&65534|128;c.T[b]|=128;return!!(c.B&64)})}
|
||||
m.lc=function(a,b,c,d,f){var e=this.j;e.Ua=65536-f&65535;e.Sa=d&65535;e.B=e.B&-769|d>>8&768;e.va=d>>16&63;f=~~(c/e.D[0]);d=~~(f/e.Da[0]);e.aa[b.ia]=f%e.Da[0]<<8|c%e.D[0];e.qb[b.ia]=e.ka[b.ia]=d;e.Ja|=1<<b.ia;c>=b.fc-1&&(e.T[b.ia]|=1024);switch(a){case 1:e.$|=512;e.B|=49152;break;case 2:e.$|=2048,e.B|=49152}I(this.b,20,160,172,function(){e.T[b.ia]|=128;e.B=e.B&65534|128;return!!(e.B&64)})};m.dc=function(){this.f.l|=128;this.f.l&64&&I(this.b,0,192,64)};
|
||||
function gb(a,b,c,d,f,e){var h=~~((e+c.qa-1)/c.qa),g=new XMLHttpRequest;2048>h&&d+2048<c.fc&&(h=2048);g.open("GET",c.url,!0);g.setRequestHeader("Range","bytes="+(d*c.qa<<1)+"-"+(((d+h)*c.qa<<1)-1));g.responseType="arraybuffer";g.onreadystatechange=function(){if(4==g.readyState){var h=b.bind(a),l,t,w,O;l=g.response;if(0!=g.status&&206!=g.status||!l)c.ob(1,c,d,f,e);else{l=new Uint8Array(l);t=d;for(O=0;O<l.length;){if("undefined"===typeof c.cache[t])for(c.cache[t]=[],w=0;w<c.qa;w++)c.cache[t][w]=O<l.length?
|
||||
l[O]&255|l[O+1]<<8&65280:0,O+=2;else O+=c.qa<<1;t++}h(c,d,f,e)}}};g.send(null)}function J(a,b,c,d,f){if(c&1){if(!f)return K(a.b,4,122);d=0<=d?d<<8&65280|b&255:b}else 0<=d?f&&(d=b&65280|d&255):d=b;return d}m.pb=function(a,b,c,d){for(var f;0<d;){if("undefined"===typeof a.cache[b]){gb(this,this.pb,a,b,c,d);return}for(f=0;f<a.qa&&0<d;f++){if(0>L(this.b,a.ec?hb(this.b,c):c,a.cache[b][f])){a.ob(2,a,b,c,d);return}c+=2;--d}b++}a.ob(0,a,b,c,d)};
|
||||
function cb(a,b,c,d,f){for(var e,h;0<f;){if("undefined"===typeof b.cache[c])for(b.cache[c]=[],e=0;e<b.qa;e++)b.cache[c][e]=0;for(e=0;e<b.qa&&0<f;e++){h=M(a.b,b.ec?hb(a.b,d):d);if(0>h){b.ob(2,b,c,d,f);return}b.cache[c][e]=h;d+=2;--f}c++}b.ob(0,b,c,d,f)}m.reset=function(){this.c.Ra=this.c.Ra&-120|20;this.m.ga=0;this.m.U=128;this.f.l=0;this.g.w=128;this.h.l=128;eb(this)};
|
||||
m.Wb=function(a,b,c){var d,f,e=this.b;switch(a&-64){case 4194240:switch(a&-2){case 4194300:0>b?d=e.la&65280:(a&1&&(b<<=8),e.la=b|255,d=0);break;case 4194298:if(0>b)d=e.nb;else{a&1&&(b<<=8);if(d=b&65024){f=d>>9;do d+=34;while(f>>=1)}e.nb=d;e.ja=2}break;case 4194294:if(70!==e.Fa)return K(e,4,222);0>b?d=e.o:d=e.o=0;break;case 4194292:if(70!==e.Fa)return K(e,4,224);d=1;break;case 4194290:if(70!==e.Fa)return K(e,4,226);d=0;break;case 4194288:if(70!==e.Fa)return K(e,4,228);d=61183;break;case 4194296:0<=
|
||||
b&&!(a&1)&&(b&=255);case 4194286:case 4194284:case 4194282:case 4194280:case 4194278:case 4194276:case 4194274:case 4194272:if(70!==e.Fa)return K(e,4,232);f=a-4194272>>1;0>b?d=e.zb[f]:(d=J(this,e.zb[f],a,b,c),0<=d&&(e.zb[f]=d));break;case 4194254:return a&1?e.s>>14&1?(0<=b&&(e.a[6]=b),d=e.a[6]):(0<=b&&(e.Y[3]=b),d=e.Y[3]):e.s>>14&0?(0<=b&&(e.a[6]=b),d=e.a[6]):(0<=b&&(e.Y[1]=b),d=e.Y[1]),d;case 4194252:case 4194250:case 4194248:return f=a&7,e.s&2048?(0<=b&&(e.a[f]=b),d=e.a[f]):(0<=b&&(e.Ia[f]=b),d=
|
||||
e.Ia[f]),d;case 4194246:return a&1?(0<=b&&(e.a[7]=b),d=e.a[7]):e.s>>14&0?(0<=b&&(e.a[6]=b),d=e.a[6]):(0<=b&&(e.Y[0]=b),d=e.Y[0]),d;case 4194244:case 4194242:case 4194240:return f=a&7,e.s&2048?(0<=b&&(e.Ia[f]=b),d=e.Ia[f]):(0<=b&&(e.a[f]=b),d=e.a[f]),d;default:return e.o|=16,K(e,4,124)}break;case 4194176:f=a>>1&31;d=J(this,e.O[3][f],a,b,c);0<=d&&(e.O[3][f]=d,e.O[3][f&15]&=65295);break;case 4194112:var h=this.m;f=this.f;switch(a&-2){case 4194174:d=J(this,e.Va,a,b,c);0<=d&&(e.Va=d);break;case 4194172:d=
|
||||
e.ea;d&65280&&(d=(d<<8|d>>8)&65535);break;case 4194170:e.G=e.G&62337|e.bb<<5|e.mb<<1;0>b?d=e.G:(d=J(this,e.G,a,b,c),0<=d&&(e.G=d&=62337,e.bb=d>>5&3,e.mb=d>>1&15,d&257?(f=2,e.na&16&&(f=1),e.ab=d&1?Ia|E:E):(e.ab=0,f=4),this.c.Ra=this.c.Ra&-8|f));break;case 4194168:0>b?d=this.c.sc&65535:(d=J(this,this.c.data,a,b,c),0<=d&&(this.c.data=d));break;case 4194166:0<=b&&(b&127&&(h.$b=0),h.U&=-129,I(e,100,128,52,function(){h.U|=128;return!!(h.U&64)}));d=0;break;case 4194164:0>b?d=h.U:(d=J(this,h.U,a,b,c),0<=
|
||||
d&&(128==(h.U&192)&&d&64&&I(e,8,128,52,function(){h.U|=128;return!!(h.U&64)}),h.U=h.U&128|d&-129));break;case 4194162:d=0;0>b&&(h.ga&=-129,0<h.Bb.length&&(d=h.Bb.shift(),0<h.Bb.length&&setTimeout(function(){h.ga|=128;h.ga&64&&I(e,40,128,48)},50)));break;case 4194160:0>b?d=h.ga:(d=J(this,h.ga,a,b,c),0<=d&&(h.ga=h.ga&128|d&-129));break;case 4194150:0>b?(d=f.l,f.l&=-129):(d=J(this,f.l,a,b,c),0<=d&&(d&64&&!f.Ab&&(setInterval(this.dc.bind(this),25),f.Ab=1),f.l=d&-129));break;default:return e.o|=16,K(e,
|
||||
4,126)}break;case 4194048:f=this.g;switch(a&-2){case 4194048:d=J(this,f.gb,a,b,c);0<=d&&(f.gb=d);break;case 4194050:d=J(this,f.P,a,b,c);0<=d&&(f.P=d);break;case 4194052:d=J(this,f.w,a,b,c);0<=b&&0<=d&&(f.w=d&-36993|f.w&36992,f.w&1&&bb(this));break;case 4194054:d=J(this,f.hb,a,b,c);0<=d&&(f.hb=d);break;case 4194056:d=J(this,f.fb,a,b,c);0<=d&&(f.fb=d);break;case 4194058:d=J(this,f.V,a,b,c);0<=d&&(f.V=d);break;case 4194060:break;case 4194062:d=J(this,f.Pb,a,b,c);0<=d&&(f.Pb=d);break;default:return e.o|=
|
||||
16,K(e,4,128)}break;case 4193728:var g=this.j;f=g.$&7;switch(a&-2){case 4193728:d=J(this,g.B,a,b,c);0<=b&&0<=d&&(g.va=g.va&60|d>>8&3,g.B=d&17279|g.B&34944|2048,d&1&&g.B&128?fb(this,f):192==(d&192)&&I(e,0,160,172));break;case 4193730:d=J(this,g.Ua,a,b,c);0<=d&&(g.Ua=d);break;case 4193732:d=J(this,g.Sa,a,b,c);0<=d&&(g.Sa=d&65534);break;case 4193734:d=J(this,g.aa[f],a,b,c);0<=d&&(g.aa[f]=d&7967);break;case 4193736:d=J(this,g.$,a,b,c);0<=d&&(g.$=d&63|g.$&65472,d&128&&eb(this));break;case 4193738:d=g.T[f];
|
||||
break;case 4193740:d=g.Ta[f];break;case 4193742:d=J(this,g.Ja,a,b,c);0<=d&&(g.Ja=d&255);break;case 4193744:d=g.qc[f];break;case 4193746:d=J(this,g.Qb,a,b,c);0<=d&&(g.Qb=d);break;case 4193748:d=J(this,g.Rb[f],a,b,c);0<=d&&(g.Rb[f]=d&1023);break;case 4193750:d=8210;break;case 4193752:d=g.rc[f];break;case 4193754:d=J(this,g.Sb[f],a,b,c);0<=d&&(g.Sb[f]=d);break;case 4193756:d=J(this,g.ka[f],a,b,c);0<=d&&(g.ka[f]=d&511);break;case 4193758:g.qb[f]=g.ka[f];d=g.qb[f];break;case 4193760:d=g.oc[f];break;case 4193762:d=
|
||||
g.pc[f];break;case 4193764:d=g.mc[f];break;case 4193766:d=g.nc[f];break;case 4193768:d=J(this,g.va,a,b,c);0<=d&&(g.va=d&63,g.B=g.B&-769|(d&3)<<8);break;case 4193770:d=J(this,g.Cb,a,b,c);0<=d&&(g.Cb=d);break;default:return e.o|=16,K(e,4,132)}break;case 4192512:f=this.h;switch(a&-2){case 4192512:d=J(this,f.l,a,b,c);0<=b&&0<=d&&(f.pa=f.pa&60|d>>4&3,f.l=f.l&-1023|d&1022,f.l&128||db(this));break;case 4192514:d=J(this,f.Ya,a,b,c);0<=d&&(f.Ya=d&65534);break;case 4192516:d=J(this,f.H,a,b,c);0<=d&&(f.H=d);
|
||||
break;case 4192518:d=J(this,f.sa,a,b,c);0<=d&&(f.sa=d);break;case 4192520:d=J(this,f.pa,a,b,c);0<=d&&(f.pa=d&63,f.l=f.l&-49|(f.pa&3)<<4);break;default:return e.o|=16,K(e,4,134)}break;case 4191552:switch(a&-2){case 4191566:0>b?d=e.na:(d=J(this,e.na,a,b,c),0<=d&&(70!==e.Fa&&(d&=-49),e.na=d,e.Ha[0]=d&4?15:7,e.Ha[1]=d&2?15:7,e.Ha[3]=d&1?15:7,e.ab&&(f=2,e.na&16&&(f=1),this.c.Ra=this.c.Ra&-8|f)));break;default:return e.o|=16,K(e,4,136)}break;case 4191424:f=a>>1&31;d=J(this,e.O[0][f],a,b,c);0<=d&&(e.O[0][f]=
|
||||
d,e.O[0][f&15]&=65295);break;case 4191360:f=a>>1&31;d=J(this,e.O[1][f],a,b,c);0<=d&&(e.O[1][f]=d,e.O[1][f&15]&=65295);break;case 4190400:case 4190336:if(70!==e.Fa)return K(e,4,234);f=a>>2&31;d=e.ib[f];a&2&&(d=d>>16);d&=65535;0<=b&&(d=J(this,d,a,b,c),0<=d&&(e.ib[f]=a&2?d<<16|e.ib[f]&65535:e.ib[f]&4294901760|d&65534));break;case 4188672:case 4188736:case 4188800:case 4188864:case 4188928:case 4188992:case 4189056:case 4189120:if(0>b)d=Ya[a>>1&255];else return e.o|=16,K(e,4,138);break;default:return e.o|=
|
||||
16,K(e,4,142)}c&&0<=d&&(a&1?d=d>>8:d&=255);"undefined"===typeof d&&console.log("panic(76)");return d};var Za={};Za[4194302]=[null,null,Xa.prototype.hc,Xa.prototype.uc];u(function(){for(var a=C(document,"pdp11","device"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Xa(d);B(d,c)}});var ib;if(Ha){var jb=new ArrayBuffer(2);(new DataView(jb)).setUint16(0,256,!0);ib=256===(new Uint16Array(jb))[0]}else ib=!1;var kb=ib;
|
||||
function H(a,b,c,d,f){this.id=lb+=2;this.b=null;this.Qa=a;this.rb=b;this.size=c||0;this.type=d||mb;this.h=d==nb;this.controller=null;Oa(this);this.ra=this.bc=!1;if(c)if(f)this.controller=f,this.b=null,ob(this,f.Wa);else if(Ha)this.f=new ArrayBuffer(c),this.g=new DataView(this.f,0,c),this.c=new Uint8Array(this.f,0,c),this.v=new Uint16Array(this.f,0,c>>1),this.b=new Int32Array(this.f,0,c>>2),ob(this,kb?pb:qb);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;ob(this,rb)}else ob(this)}
|
||||
var mb=0,nb=2,Ua=4,Wa=["NONE","RAM","ROM","VID","H/W"],lb=0;
|
||||
H.prototype={constructor:H,parent:null,Ab:function(a){this.Qa=a},save:function(){var a,b;if(this.controller)a=null;else if(Ha)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.g.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(this.controller)return null==a;if(a&&this.size==a.length<<2){var b;if(Ha)for(b=0;b<a.length;b++)this.g.setInt32(b<<2,a[b],!0);else this.b=a;return this.ra=!0}return!1},m:function(){return 255},F:function(){},u:function(a,b){return this.eb(a++,b++)|this.eb(a,
|
||||
b)<<8},J:function(a,b,c){this.jb(a++,b&255,c++);this.jb(a,b>>8,c)},Z:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ya:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},Ca:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.ra=!0},Pa:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.ra=!0},N:function(a,b){return this.R(a,
|
||||
b)},da:function(a,b){return this.ma(a,b)},Aa:function(a,b,c){this.h||this.Vb(a,b,c)},Ma:function(a,b,c){this.h||this.Na(a,b,c)},M:function(a){return this.c[a]},W:function(a){return this.c[a]},ca:function(a){return this.g.getUint16(a,!0)},xa:function(a){return a&1?this.c[a]|this.c[a+1]<<8:this.v[a>>1]},za:function(a,b){this.c[a]=b;this.ra=!0},Ba:function(a,b){this.c[a]=b;this.ra=!0},La:function(a,b){this.g.setUint16(a,b,!0);this.ra=!0},Oa:function(a,b){a&1?(this.c[a]=b,this.c[a+1]=b>>8):this.v[a>>
|
||||
1]=b;this.ra=!0}};function Oa(a,b,c){a.I=b;a.j=a.A=0;c&&((a.j=c.j)&&sb(a,tb,!1),(a.A=c.A)&&ub(a,tb,!1))}function ub(a,b,c){c&&a.A||(a.jb=!a.h&&b[1]||a.F,a.vc=!a.h&&b[3]||a.J);if(c||void 0===c)a.Vb=b[1]||a.F,a.Na=b[3]||a.J}function sb(a,b,c){c&&a.j||(a.eb=b[0]||a.m,a.ic=b[2]||a.u);if(c||void 0===c)a.R=b[0]||a.m,a.ma=b[2]||a.u}function ob(a,b){b||(b=vb);sb(a,b,void 0);ub(a,b,void 0)}
|
||||
var vb=[],rb=[H.prototype.Z,H.prototype.Ca,H.prototype.ya,H.prototype.Pa],tb=[H.prototype.N,H.prototype.Aa,H.prototype.da,H.prototype.Ma];if(Ha)var qb=[H.prototype.M,H.prototype.za,H.prototype.ca,H.prototype.La],pb=[H.prototype.W,H.prototype.Ba,H.prototype.xa,H.prototype.Oa];
|
||||
function wb(a,b){v.call(this,"CPU",a,wb);var c=a.multiplier||1;this.vb=a.cycles||b;this.da=c;this.ub=Math.round(this.vb/1E4)/100;this.Z=this.ub*this.da;this.i.ha=!1;this.i.Tb=!1;this.i.Xa=a.autoStart;this.i.Mb=!1;this.i.kb=!1;this.Na=this.ca=0;this.Oa=a.csStart;this.ya=a.csInterval;this.za=a.csStop;this.La=[];this.Kb=this.Db.bind(this);D(this)}y(wb);var xb=["power","reset"];m=wb.prototype;
|
||||
m.Ga=function(a,b,c,d){this.u=a;this.v=b;this.I=d;for(b=0;b<xb.length;b++)(c=this.A[xb[b]])&&this.u.ba(null,xb[b],c);this.xa=null;a=yb(a,"autoStart");null!=a&&(this.i.Xa="true"==a?!0:"false"==a?!1:!!a);D(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};m.ua=function(a,b){if(!b){if(a&&this.restore){zb(this);if(!this.restore(a))return!1;Ab(this)}else this.reset();this.X("No debugger detected")}Bb(this);return!0};m.ta=function(a){return a?this.save():!0};
|
||||
m.Xa=function(){return this.i.Xa||void 0===this.A.run?(this.Db(),!0):!1};m.Ob=function(){return 0};function Ab(a){void 0===a.Oa&&(a.Oa=0);void 0===a.ya&&(a.ya=-1);void 0===a.za&&(a.za=-1);a.i.kb=0<=a.Oa&&0<a.ya;a.i.kb&&(a.Na=0,a.ca=a.Oa-a.W)}
|
||||
function Cb(a,b,c,d){if(a.A[b]){void 0===c&&(a.i.error=!0,a.K("Value for "+b+" is invalid"),Db(a));var f=a.I&&a.I.c||8;if(!a.i.ha||a.i.Mb)if(8==f){f="";d?11<d&&(d=11):d=c&-65536?11:6;if(null==c||isNaN(c))for(;0<d--;)f="?"+f;else for(;0<d--;)f=String.fromCharCode((c&7)+48)+f,c>>=3;d=""+f}else d=n(c,d);else d="--------".substr(0,d||4);a.A[b].textContent!=d&&(a.A[b].textContent=d)}}
|
||||
m.ba=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.A[b]=c;a=!0;break;case "run":this.A[b]=c;c.onclick=function(){var a;if(a=d.u)if(a=d.u,a.i.L)a=!0;else{var b=null,c,g=z(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.i.ready);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.i.L);c++);c==g.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.i.ready?"powered yet":"ready yet"+(b.lb?" (waiting for notification)":""))+".");a=!1}a&&(d.i.ha?Db(d):d.Db())};a=!0;
|
||||
break;case "speed":this.A[b]=c;a=!0;break;case "setSpeed":this.A[b]=c,c.onclick=function(){Eb(d,d.da<<1)},c.textContent=this.Z.toFixed(2)+"Mhz",a=!0}return a};function Fb(a,b,c){a.W+=b;c&&(a.R=a.b=0)}function Gb(a,b){var c=1;b&&1<a.da&&a.M&&(c=a.M/a.ub);a.Ib=Math.round(1E3/30);a.Pa=Math.floor(a.vb/30*c);b||(a.Aa=a.Pa);a.wb=0}function Hb(a){return a.W+a.J+a.R-a.b}function zb(a){a.M=0;a.Jb=0;a.W=a.J=a.R=a.b=0;Ab(a);Eb(a,1)}
|
||||
function Eb(a,b){if(void 0!==b){.8>a.M/a.Z&&(b=1);a.da=b;var c=a.ub*a.da;if(a.Z!=c){a.Z=c;var c=a.Z.toFixed(2)+"Mhz",d=a.A.setSpeed;d&&(d.textContent=c);a.X("target speed: "+c)}}Fb(a,a.J);a.J=0;a.F=ha();a.N=0;Gb(a)}function Ib(a){a.R-=a.b;a.b=0}
|
||||
m.Db=function(){if(Fa(this,!0)){if(!this.i.ha){Eb(this);this.u&&this.u.start(this.F,Hb(this));this.i.ha=!0;this.i.Tb=!0;this.xa&&this.xa.start();var a=this.A.run;a&&(a.textContent="Halt");this.u&&this.u.Ka(!0)}this.wb>=this.vb&&Gb(this,!0);this.Ba=0;this.Ma=ha();this.N&&(a=this.Ma-this.N,a>this.Ib&&(this.F+=a,this.F>this.Ma&&(this.F=this.Ma)));try{do{for(var b,c=this.i.kb?1:this.Pa,d=this.La.length-1;0<=d;d--){var f=this.La[d];0>f[0]||c>f[0]&&(c=f[0])}b=c;try{this.Ub(b)}catch(l){if("number"!=typeof l)throw l;
|
||||
}for(var e=this.R-this.b,a=e,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.Ba+=e;this.J+=e;Fb(this,0,!0);a=e;if(this.i.kb){var k=!1;this.Na=this.Na+this.Ob()|0;this.ca-=a;0>=this.ca&&(this.ca+=this.ya,k=!0);0<=this.za&&this.za<=Hb(this)&&(this.ya=this.za=-1,Ab(this),Db(this),k=!0);k&&this.X(Hb(this)+" cycles: checksum="+n(this.Na))}this.Aa-=e;if(0>=this.Aa){this.Aa+=this.Pa;15<=++this.Jb&&(this.u&&this.u.Ka(),this.Jb=0);break}}while(this.i.ha)}catch(l){Db(this);
|
||||
Bb(this);this.u&&this.u.stop(ha(),Hb(this));Fa(this,!1);b=l.stack||l.message;this.i.error=!0;this.K(b);return}b=setTimeout;c=this.Kb;this.N=ha();d=this.Ib;this.Ba&&(d=Math.round(d*this.Ba/this.Pa));d=d-(this.N-this.Ma);if(f=this.N-this.F)this.M=Math.round(this.J/(10*f))/100,864E5<=f&&(this.W=0,Eb(this));if(0>d||this.M<this.Z)-1E3>d&&(this.F-=d),d=0;this.wb+=this.Ba;this.N+=d;b(c,d)}else Bb(this),this.u&&this.u.stop(ha(),Hb(this))};m.Ub=function(){return 0};
|
||||
function Db(a){a.i.Za&&(a.i.xb=!0);Ib(a);Fb(a,a.J);a.J=0;if(a.i.ha){a.i.ha=!1;a.xa&&a.xa.stop();var b=a.A.run;b&&(b.textContent="Run")}a.i.complete=void 0}function Bb(a){a.u&&a.u.Ka(void 0)}
|
||||
function Jb(a){this.Yb=+a.model||1170;this.cc=a.resetAddr||0;wb.call(this,a,1E6);this.Fb=0;this.decode=Kb.bind(this);this.g=65536;this.f=32768;this.h=65535;this.c=32768;this.a=[0,0,0,0,0,0,0,this.cc];this.Ia=[0,0,0,0,0,0];this.Y=[0,0,0,0];this.memory=[];this.j=[];this.Ca=this.nb=0;this.ja=2;this.la=255;this.C=0;this.ma=-1;this.o=0;this.Fa=70;this.mb=this.bb=this.ab=this.m=this.na=this.Va=this.ea=this.G=0;this.Ha=[7,7,7,7];this.O=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.ib=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.zb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.i.complete=this.i.Zb=!1}y(Jb,wb);m=Jb.prototype;
|
||||
m.reset=function(){this.i.ha&&Db(this);Lb(this);zb(this);this.i.error=!1;this.parent.reset.call(this)};function Lb(a){a.la=255;a.o=0;a.j=[];a.nb=0;a.G=a.ea=a.Va=a.na=a.ab=0;a.Ha[0]=a.Ha[1]=a.Ha[3]=7;a.bb=0}m.Ob=function(){return 0};
|
||||
m.save=function(){var a=new N(this);P(a,0,[]);P(a,1,[this.Eb,this.W,this.da]);for(var b=this.v,c=0,d=[],f=0;f<b.v;f++){var e=b.c[f];if(e.ra||e.bc){d[c++]=f;var h=c++;a:if(e=e.save()){for(var g=0,k=0,l=[];g<e.length;){for(var t=e[g],w=g+1;w<e.length&&e[w]===t;)w++;l[k++]=w-g;l[k++]=t;g=w}if(l.length<e.length){e=l;break a}}d[h]=e}}P(a,2,d);return a.data()};
|
||||
m.restore=function(a){var b=a[1];this.Eb=b[0];this.W=b[1];Eb(this,b[3]);a:{b=this.v;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],f=a[c+1];if(f&&f.length<b.M){for(var e=0,h=Array(b.M),g=0;g<f.length-1;)for(var k=f[g++],l=f[g++];k--;)h[e++]=l;f=h}e=b.c[d];if(!e||!e.restore(f)){q("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
m.ba=function(a,b,c){var d=!1;switch(b){case "R0":case "R1":case "R2":case "R3":case "R4":case "R5":case "R6":case "R7":case "NF":case "ZF":case "VF":case "CF":case "PS":this.A[b]=c;this.Fb++;d=!0;break;default:d=this.parent.ba.call(this,a,b,c)}return d};
|
||||
m.Ka=function(a){if(this.Fb&&(a||!this.i.ha||this.i.Mb)){for(a=0;a<this.a.length;a++)Cb(this,"R"+a,this.a[a]);a=$a(this);Cb(this,"PS",a);Cb(this,"NF",a&8?1:0,1);Cb(this,"ZF",a&4?1:0,1);Cb(this,"VF",a&2?1:0,1);Cb(this,"CF",a&1?1:0,1)}if(a=this.A.speed)a.textContent=this.i.ha&&this.M?this.M.toFixed(2)+"Mhz":"Stopped"};
|
||||
function I(a,b,c,d,f){for(var e=a.j.length;0<e--;)if(a.j[e].tc===d){0<e&&(a.j[e-1].fa+=a.j[e].fa);a.j.splice(e,1);break}if(0<=b){2===a.Ca&&(b=0,a.Ca=0,setTimeout(a.Kb,0));for(e=a.j.length;0<e--;){if(a.j[e].fa>b){a.j[e].fa-=b;break}b-=a.j[e].fa}a.j.splice(e+1,0,{delay:b,priority:c&224,vector:d,callback:f})}a.ja=2}function $a(a){return a.s=a.s&63728|(a.c&32768?8:0)|(a.h&65535?0:4)|(a.f&32768?2:0)|(a.g&65536?1:0)}
|
||||
function ab(a,b){a.c=b<<12;a.h=~b&4;a.f=b<<14;a.g=b<<16;if((b^a.s)&2048)for(var c=a.Ia.length;0<=--c;){var d=a.a[c];a.a[c]=a.Ia[c];a.Ia[c]=d}a.m=b>>14&3;c=a.s>>14&3;a.m!=c&&(a.Y[c]=a.a[6],a.a[6]=a.Y[a.m]);a.ja=2;a.s=b}function Q(a,b){a.C&128||(a.c=a.h=b,a.f=0)}function Mb(a,b,c,d){a.C&128||(a.c=a.h=a.g=b,a.f=(c^d)&(d^b))}
|
||||
function K(a,b,c){var d,f,e=0;0>a.ma?a.ma=$a(a):a.m||(b=4,e=1);a.G&57344||(a.ea=63222,a.Va=b);a.m=0;0<=(d=R(a,b|65536))&&0<=(f=R(a,b+2&65535|65536))&&(ab(a,f&53247|a.ma>>2&12288),e&&(a.o|=4,a.a[6]=4),0<=S(a,a.ma)&&0<=S(a,a.a[7])&&(a.a[7]=d));a.C&=-113;a.ma=-1;throw b|c<<8;}function hb(a,b){var c=b>>13&31;31>c?a.na&32&&(b=a.ib[c]+(b&8190)&4194302,3932160<=b&&4186112>b&&console.log("panic(898)")):b|=4186112;return b}
|
||||
function Nb(a,b,c){var d,f,e,h=0;if(c&a.ab){d=b>>13&a.Ha[a.m];f=a.O[a.m][d];e=(a.O[a.m][d+16]<<6)+(b&8191)&4194303;a.na&16?3932160<=e&&4186112>e&&(e=hb(a,e&262143)):(e&=262143,253952<=e&&(e|=4186112));3932160>e&&(3915776<=e&&(a.o|=32,K(a,4,24)),e&1&&!(c&1)&&(a.o|=64,K(a,4,26)));switch(f&7){case 1:h=4096;case 2:f|=128;c&E&&(h=8192);break;case 4:h=4096;case 5:c&E&&(h=4096);case 6:f|=c&E?192:128;break;default:h=32768}32512!==(f&32520)&&(f&8?f&32512&&(b&8128)<(f>>2&8128)&&(h|=16384):(b&8128)>(f>>2&8128)&&
|
||||
(h|=16384));a.O[a.m][d]=f;if(4194170!==e||a.m)a.bb=a.m,a.mb=d;h&&(h&57344&&(0<=a.ma&&(h|=128),a.G&57344||(a.G=a.G|h|a.bb<<5|a.mb<<1),K(a,168,28)),a.G&61440||!(4191360>e||4194239<e)||(a.G|=4096,a.G&512&&(a.C|=32)))}else e=b&65535,57344<=e?e|=4186112:e&1&&!(c&1)&&(a.o|=64,K(a,4,22));return e}function M(a,b){var c;if(4194304<=b)c=a.a[b-4194304];else if(0<=b){c=a.v;var d=b&c.h,f=(b&c.j)>>>c.f;c=d!=c.h?c.c[f].ic(d,b):c.c[f++].eb(d,b)|c.c[f&c.N].eb(0,b+1)<<8}else c=b;return c}
|
||||
function L(a,b,c){c&=65535;if(4194304<=b)return a.a[b-4194304]=c;if(0<=b){a=a.v;var d=c,f=b&a.h,e=(b&a.j)>>>a.f;f!=a.h?a.c[e].vc(f,d&65535,b):(a.c[e++].jb(f,d&255,b),a.c[e&a.N].jb(0,d>>8&255,b+1));return c}return b}function T(a,b){var c;4194304<=b?c=a.a[b-4194304]&255:0<=b?(c=a.v,c=c.c[(b&c.j)>>>c.f].eb(b&c.h,b)):c=b;return c}function U(a,b,c){c&=255;return 4194304<=b?a.a[b-4194304]=a.a[b-4194304]&65280|c:0<=b?(a=a.v,a.c[(b&a.j)>>>a.f].jb(b&a.h,c&255,b),c):b}
|
||||
function R(a,b){return M(a,Nb(a,b,Ia))}function Ob(a){var b=R(a,a.a[6]|65536);0<=b&&(a.a[6]=a.a[6]+2&65535);return b}function S(a,b){var c,d;a.a[6]=d=a.a[6]-2&65535;a.G&57344||(a.ea=a.ea<<8|246);!a.m&&d<=a.la&&4<d&&(d<=a.la-32?(a.o|=4,a.a[6]=4,K(a,4,32)):(a.o|=8,a.C|=4));return 0<=(c=Nb(a,d|65536,E))?L(a,c,b):c}
|
||||
function Pb(a,b,c){var d,f,e=b&7;switch(b>>3&7){case 0:K(a,4,34);break;case 1:return 6===e&&!a.m&&c&E&&(a.a[6]<=a.la||65534<=a.a[6])&&(a.a[6]<=a.la-32||65534<=a.a[6]?(a.o|=4,a.a[6]=4,K(a,4,36)):(a.o|=8,a.C|=64)),7===e?a.a[e]:a.a[e]|65536;case 2:f=2;d=a.a[e];7!==e&&(d|=65536,6>e&&c&1&&(f=1));break;case 3:f=2;d=a.a[e];7!==e&&(d|=65536);if(0>(d=R(a,d)))return d;d|=65536;break;case 4:f=-2;6>e&&c&1&&(f=-1);d=a.a[e]+f&65535;7!==e&&(d|=65536);break;case 5:f=-2;d=a.a[e]-2&65535;7!==e&&(d|=65536);if(0>(d=
|
||||
R(a,d)))return d;d|=65536;break;case 6:if(0>(d=R(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return d|65536;case 7:if(0>(d=R(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return 0>(d=R(a,d|65536))?d:d|65536}a.a[e]=a.a[e]+f&65535;a.G&57344||(a.ea=a.ea<<8|f<<3&248|e);6===e&&!a.m&&c&E&&0>=f&&(a.a[6]<=a.la||65534<=a.a[6])&&(a.a[6]<=a.la-32?(a.o|=4,a.a[6]=4,K(a,4,38)):(a.o|=8,a.C|=64));return d}
|
||||
function V(a,b,c){var d;return b&56?(0<=(d=Pb(a,b,c))&&(d=Nb(a,d,c)),d):4194304+(b&7)}function W(a,b){var c;b&56?(c=V(a,b,Ia),c=M(a,c)):c=a.a[b&7];return c}function X(a,b){var c;b&56?(c=V(a,b,Ja),c=T(a,c)):c=a.a[b&7]&255;return c}function Qb(a,b,c,d){b&56?(b=V(a,b,F),L(a,b,d.call(a,c,M(a,b)))):(b&=7,a.a[b]=d.call(a,c,a.a[b]))}function Rb(a,b,c,d){b&56?(b=V(a,b,G),U(a,b,d.call(a,c,T(a,b)))):(b&=7,a.a[b]=d.call(a,c,a.a[b]))}function Y(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.Ub=function(a){this.i.complete=!0;this.i.Zb=!1;this.i.Tb=!1;this.R=this.b=a;this.Eb&256?(Ib(this),a=!1):a=!0;if(a){do{var b,c,d,f,e;this.C&112&&(this.C&32?K(this,168,52):this.C&64?K(this,4,54):this.C&16&&K(this,12,56),this.C&=-113);if(this.ja)if(1===this.ja)this.ja=2;else{this.ja=0;c=-1;b=this.nb&224;if(0<(a=this.j.length))for(;0<a--;){if(0<this.j[a].fa){this.j[a].fa--;this.ja=2;break}if(this.j[a].Lb){if(!this.j[a].Lb()){this.j.splice(a,1);c--;continue}this.j[a].Lb=null}this.j[a].gc>b&&(b=this.j[a].gc,
|
||||
c=a)}b>(this.s&224)&&(0>c?K(this,160,42):(K(this,this.j[c].tc,44),this.j.splice(c,1)))}this.G&57344||(this.ea=0,this.Va=this.a[7]);this.C=this.s&16;a=R(this,this.a[7]);this.a[7]=this.a[7]+2&65535;this.decode(a);if(0<=a)switch(a&61440){default:switch(a&65024){case 2048:0<=(f=Pb(this,a,0))&&(e=a>>6&7,0<=S(this,this.a[e])&&(this.a[e]=this.a[7],this.a[7]=f&65535));break;case 28672:0<=(b=W(this,a))&&(e=a>>6&7,b&32768&&(b|=-65536),c=this.a[e],c&32768&&(c|=-65536),a=~~(b*c),this.a[e]=a>>16&65535,this.a[e|
|
||||
1]=a&65535,this.c=a>>16,this.h=this.c|a,this.g=this.f=0,-32768>a||32767<a)&&(this.g=65536);break;case 29184:0<=(b=W(this,a))&&(b?(e=a>>6&7,c=this.a[e]<<16|this.a[e|1],this.g=this.f=0,b&32768&&(b|=-65536),a=~~(c/b),-32768<=a&&32767>=a?(this.a[e]=a&65535,this.a[e|1]=c-a*b&65535,this.h=a>>16|a,this.c=a>>16):(this.f=32768,this.h=a>>15|a,this.c=c>>16,-1===b&&65534===this.a[e]&&(this.a[e]=this.a[e|1]=1))):(this.h=this.c=0,this.f=32768,this.g=65536));break;case 29696:0<=(b=W(this,a))&&(e=a>>6&7,a=this.a[e],
|
||||
a&32768&&(a|=4294901760),this.g=this.f=0,b&=63,b&32?(b=64-b,16<b&&(b=16),this.g=a<<17-b,a=a>>b):b&&(16<b?(this.f=a,a=0):(this.g=a=a<<b,(c=a>>15&65535)&&65535!==c&&(this.f=32768))),this.a[e]=a&65535,this.c=this.h=a);break;case 30208:if(0<=(b=W(this,a))){e=a>>6&7;c=this.a[e]<<16|this.a[e|1];this.g=this.f=0;b&=63;if(b&32)b=64-b,32<b&&(b=32),a=c>>b-1,this.g=a<<16,a>>=1,c&2147483648&&(a|=4294967295<<32-b);else if(b){if(a=c<<b-1,this.g=a>>15,a<<=1,32<b&&(b=32),c>>=32-b)c|=4294967295<<b&4294967295,4294967295!==
|
||||
c&&(this.f=32768)}else a=c;this.a[e]=a>>16&65535;this.a[e|1]=a&65535;this.c=a>>16;this.h=a>>16|a}break;case 30720:a&56?0<=(c=M(this,d=V(this,a,F)))&&(c^=this.a[a>>6&7],0<=L(this,d,c)&&(this.c=this.h=c,this.f=0)):(this.c=this.h=c=this.a[a&7]^=this.a[a>>6&7],this.f=0);break;case 32256:e=a>>6&7;if(this.a[e]=this.a[e]-1&65535)this.a[7]=this.a[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.a[7]=Y(this.a[7],a);break;case 512:this.h&65535&&(this.a[7]=Y(this.a[7],a));break;case 768:this.h&
|
||||
65535||(this.a[7]=Y(this.a[7],a));break;case 1024:(this.c&32768)===(this.f&32768)&&(this.a[7]=Y(this.a[7],a));break;case 1280:(this.c&32768)!==(this.f&32768)&&(this.a[7]=Y(this.a[7],a));break;case 1536:this.h&65535&&(this.c&32768)===(this.f&32768)&&(this.a[7]=Y(this.a[7],a));break;case 1792:this.h&65535&&(this.c&32768)===(this.f&32768)||(this.a[7]=Y(this.a[7],a));break;case 32768:this.c&32768||(this.a[7]=Y(this.a[7],a));break;case 33280:!(this.g&65536)&&this.h&65535&&(this.a[7]=Y(this.a[7],a));break;
|
||||
case 33024:this.c&32768&&(this.a[7]=Y(this.a[7],a));break;case 33536:if(this.g&65536||!(this.h&65535))this.a[7]=Y(this.a[7],a);break;case 33792:this.f&32768||(this.a[7]=Y(this.a[7],a));break;case 34048:this.f&32768&&(this.a[7]=Y(this.a[7],a));break;case 34304:this.g&65536||(this.a[7]=Y(this.a[7],a));break;case 34560:this.g&65536&&(this.a[7]=Y(this.a[7],a));break;case 34816:K(this,24,2);break;case 35072:K(this,28,4);break;default:switch(a&65472){case 64:0<=(f=Pb(this,a,0))&&(this.a[7]=f&65535);break;
|
||||
case 192:a&56?0<=(c=M(this,d=V(this,a,F)))&&(a=c<<8|c>>8,0<=L(this,d,a)&&(this.c=this.h=c&65280,this.f=this.g=0)):(e=a&7,c=this.a[e],this.a[e]=(c<<8|c>>8)&65535,this.c=this.h=c&65280,this.f=this.g=0);break;case 2560:a&56?0<=(d=V(this,a,E))&&0<=L(this,d,0)&&(this.c=this.g=this.f=this.h=0):this.c=this.g=this.f=this.h=this.a[a&7]=0;break;case 2624:0<=(c=M(this,d=V(this,a,F)))&&(a=~c,0<=L(this,d,a)&&(this.c=this.h=a,this.g=65536,this.f=0));break;case 2688:a&56?0<=(c=M(this,d=V(this,a,F)))&&(a=c+1,0<=
|
||||
L(this,d,a)&&(this.c=this.h=a,this.f=a&(a^c))):(e=a&7,c=this.a[e],a=c+1,this.a[e]=a&65535,this.c=this.h=a,this.f=a&(a^c));break;case 2752:a&56?0<=(c=M(this,d=V(this,a,F)))&&(a=c-1,0<=L(this,d,a)&&(this.c=this.h=a,this.f=(a^c)&c)):(e=a&7,c=this.a[e],a=c-1,this.a[e]=a&65535,this.c=this.h=a,this.f=(a^c)&c);break;case 2816:0<=(c=M(this,d=V(this,a,F)))&&(a=-c,0<=L(this,d,a)&&(this.g=this.c=this.h=a,this.f=a&c));break;case 2880:0<=(c=M(this,d=V(this,a,F)))&&(a=c+(this.g>>16&1),0<=L(this,d,a)&&(this.g=this.c=
|
||||
this.h=a,this.f=a&(a^c)));break;case 2944:0<=(c=M(this,d=V(this,a,F)))&&(a=c-(this.g>>16&1),0<=L(this,d,a)&&(this.g=this.c=this.h=a,this.f=(a^c)&c));break;case 3008:0<=(c=W(this,a))&&(this.c=this.h=c,this.g=this.f=0);break;case 3072:a&56?0<=(c=M(this,d=V(this,a,F)))&&(a=(this.g&65536|c)>>1,0<=L(this,d,a)&&(this.g=c<<16,this.c=this.h=a,this.f=a^this.g>>1)):(e=a&7,c=this.a[e],a=(this.g&65536|c)>>1,this.a[e]=a&65535,this.g=c<<16,this.c=this.h=a,this.f=a^this.g>>1);break;case 3136:a&56?0<=(c=M(this,d=
|
||||
V(this,a,F)))&&(a=c<<1|this.g>>16&1,0<=L(this,d,a)&&(this.g=this.c=this.h=a,this.f=a^c)):(e=a&7,c=this.a[e],a=c<<1|this.g>>16&1,this.a[e]=a&65535,this.g=this.c=this.h=a,this.f=a^c);break;case 3200:a&56?0<=(c=M(this,d=V(this,a,F)))&&(a=c&32768|c>>1,0<=L(this,d,a)&&(this.g=c<<16,this.c=this.h=a,this.f=this.c^this.g>>1)):(e=a&7,c=this.a[e],a=c&32768|c>>1,this.a[e]=a&65535,this.g=c<<16,this.c=this.h=a,this.f=this.c^this.g>>1);break;case 3264:a&56?0<=(c=M(this,d=V(this,a,F)))&&(a=c<<1,0<=L(this,d,a)&&
|
||||
(this.g=this.c=this.h=a,this.f=a^c)):(e=a&7,c=this.a[e],a=c<<1,this.a[e]=a&65535,this.g=this.c=this.h=a,this.f=a^c);break;case 3328:f=this.a[7]+((a&63)<<1)&65535;0<=(b=R(this,f|65536))&&(this.a[7]=this.a[5],this.a[5]=b,this.a[6]=f+2&65535);break;case 3392:a&56?0<=(f=Pb(this,a,0))&&(61440!==(this.s&61440)&&(f&=65535),this.m=this.s>>12&3,0<=(b=R(this,f))&&(this.m=this.s>>14&3,0<=S(this,b)&&(this.c=this.h=b,this.f=0))):(e=a&7,b=6!==e||(this.s>>2&12288)===(this.s&12288)?this.a[e]:this.Y[this.s>>12&3],
|
||||
0<=S(this,b)&&(this.c=this.h=b,this.f=0));break;case 3456:0<=(c=Ob(this))&&((this.G&57344||(this.ea=22),a&56)?0<=(f=Pb(this,a,0))&&(f&=65535,this.m=this.s>>12&3,0<=(d=Nb(this,f,E))&&(this.m=this.s>>14&3,0<=L(this,d,c)&&(this.c=this.h=c,this.f=0))):(e=a&7,6!==e||(this.s>>2&12288)===(this.s&12288)?this.a[e]=c:this.Y[this.s>>12&3]=c,this.c=this.h=c,this.f=0));break;case 3520:0<=(d=V(this,a,E))&&(a=-(this.c>>15&1),0<=L(this,d,a)&&(this.h=a,this.f=0));break;case 35328:a&56?0<=(d=V(this,a,Ka))&&0<=U(this,
|
||||
d,0)&&(this.c=this.g=this.f=this.h=0):(this.a[a&7]&=65280,this.c=this.g=this.f=this.h=0);break;case 35392:0<=(c=T(this,d=V(this,a,G)))&&(a=~c,0<=U(this,d,a)&&(this.c=this.h=a<<8,this.g=65536,this.f=0));break;case 35456:0<=(c=T(this,d=V(this,a,G)))&&(a=c+1,0<=U(this,d,a)&&(this.c=this.h=a<<8,this.f=(a&(a^c))<<8));break;case 35520:0<=(c=T(this,d=V(this,a,G)))&&(a=c-1,0<=U(this,d,a)&&(this.c=this.h=a<<8,this.f=((a^c)&c)<<8));break;case 35584:0<=(c=T(this,d=V(this,a,G)))&&(a=-c,0<=U(this,d,a)&&(this.g=
|
||||
this.c=this.h=a<<8,this.f=(a&c)<<8));break;case 35648:0<=(c=T(this,d=V(this,a,G)))&&(a=c+(this.g>>16&1),0<=U(this,d,a)&&(this.c=this.h=this.g=a<<8,this.f=(a&(a^c))<<8));break;case 35712:0<=(c=T(this,d=V(this,a,G)))&&(a=c-(this.g>>16&1),0<=U(this,d,a)&&(this.c=this.h=this.g=a<<8,this.f=((a^c)&c)<<8));break;case 35776:0<=(c=X(this,a))&&(this.c=this.h=c<<8,this.g=this.f=0);break;case 35840:0<=(c=T(this,d=V(this,a,G)))&&(a=((this.g&65536)>>8|c)>>1,0<=U(this,d,a)&&(this.g=c<<16,this.c=this.h=a<<8,this.f=
|
||||
this.c^this.g>>1));break;case 35904:0<=(c=T(this,d=V(this,a,G)))&&(a=c<<1|this.g>>16&1,0<=U(this,d,a)&&(this.g=this.c=this.h=a<<8,this.f=(a^c)<<8));break;case 35968:0<=(c=T(this,d=V(this,a,G)))&&(a=c&128|c>>1,0<=U(this,d,a)&&(this.g=c<<16,this.c=this.h=a<<8,this.f=this.c^this.g>>1));break;case 36032:0<=(c=T(this,d=V(this,a,G)))&&(a=c<<1,0<=U(this,d,a)&&(this.g=this.c=this.h=a<<8,this.f=(a^c)<<8));break;case 36160:a&56?0<=(f=Pb(this,a,0))&&(this.m=this.s>>12&3,0<=(b=R(this,f|65536))&&(this.m=this.s>>
|
||||
14&3,0<=S(this,b)&&(this.c=this.h=b,this.f=0))):(e=a&7,b=6!==e||(this.s>>2&12288)===(this.s&12288)?this.a[e]:this.Y[this.s>>12&3],0<=S(this,b)&&(this.c=this.h=b,this.f=0));break;case 36224:0<=(c=Ob(this))&&((this.G&57344||(this.ea=22),a&56)?0<=(f=Pb(this,a,0))&&(this.m=this.s>>12&3,0<=(d=Nb(this,f|65536,E))&&(this.m=this.s>>14&3,0<=L(this,d,c)&&(this.c=this.h=c,this.f=0))):(e=a&7,6!==e||(this.s>>2&12288)===(this.s&12288)?this.a[e]=c:this.Y[this.s>>12&3]=c,this.c=this.h=c,this.f=0));break;default:switch(a&
|
||||
65528){case 128:0<=(b=Ob(this))&&(e=a&7,this.a[7]=this.a[e],this.a[e]=b);break;case 152:this.s&49152||(this.s=this.s&63519|(a&7)<<5,this.ja=1);break;case 160:case 168:a&1&&(this.g=0);a&2&&(this.f=0);a&4&&(this.h=1);a&8&&(this.c=0);break;case 176:case 184:a&1&&(this.g=65536);a&2&&(this.f=32768);a&4&&(this.h=0);a&8&&(this.c=32768);break;default:switch(a){case 0:49152&this.s?(this.o|=128,K(this,4,46)):(this.Ca=3,Ib(this),console.log("HALT at "+this.a[7].toString(8)));break;case 1:c=0;if(0<(a=this.j.length))for(;0<
|
||||
a--;)c+=this.j[a].fa,this.j[a].fa=0;0===c&&0===this.Ca&&(this.Ca=2,Ib(this));break;case 3:K(this,12,6);break;case 4:K(this,16,8);break;case 5:this.s&49152||(Lb(this),this.v.reset());break;case 2:case 6:d=this.a[6];0<=(f=R(this,d|65536))&&(d=d+2&65535,0<=(b=R(this,d|65536))&&(this.a[6]=d+2&65535,b&=63743,this.s&49152&&(b=b&63519|this.s&63712),this.a[7]=f,ab(this,b),this.C&=-17,2===a&&(this.C|=this.s&16)));break;default:K(this,8,48)}}}}}}}while(0<this.b)}return this.i.complete?this.R-this.b:void 0===
|
||||
this.i.complete?0:-1};u(function(){for(var a=C(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Jb(d);B(d,c)}});function Sb(a,b){var c=a+b;this.C&128||(this.c=this.h=this.g=c,this.f=(a^c)&(b^c));return c&65535}function Tb(a,b){var c=~a&b;Q(this,c);return c}function Ub(a,b){var c=~a&b;Q(this,c<<8);return c}function Vb(a,b){var c=a|b;Q(this,c);return c}function Wb(a,b){var c=a|b;Q(this,c<<8);return c}function Xb(a,b){var c=b-a;Mb(this,c,a,b);return c&65535}
|
||||
function Yb(){--this.b}function Zb(){--this.b}function $b(){--this.b}function ac(){--this.b}function bc(){--this.b}function cc(){--this.b}function dc(){--this.b}function Z(){K(this,8,48)}function Kb(a){ec[a>>12].call(this,a)}
|
||||
var ec=[function(a){fc[a>>8&15].call(this,a)},function(a){var b=W(this,a>>6);a&56?L(this,V(this,a,E),b):this.a[a&7]=b;Q(this,b);--this.b},function(a){var b=W(this,a>>6);a=W(this,a);Mb(this,b-a,a,b);--this.b},function(a){Q(this,W(this,a>>6)&W(this,a));--this.b},function(a){Qb(this,a,W(this,a>>6),Tb);--this.b},function(a){Qb(this,a,W(this,a>>6),Vb);--this.b},function(a){Qb(this,a,W(this,a>>6),Sb);--this.b},function(a){gc[a>>8&15].call(this,a)},function(a){hc[a>>8&15].call(this,a)},function(a){var b=
|
||||
X(this,a>>6),b=b&128?b|65280:b;a&56?(b&=255,U(this,V(this,a,Ka),b)):this.a[a&7]=b;Q(this,b<<8);--this.b},function(a){var b=X(this,a>>6)<<8;a=X(this,a)<<8;Mb(this,b-a,a,b);--this.b},function(a){Q(this,(X(this,a>>6)&X(this,a))<<8);--this.b},function(a){Rb(this,a,X(this,a>>6),Ub);--this.b},function(a){Rb(this,a,X(this,a>>6),Wb);--this.b},function(a){Qb(this,a,W(this,a>>6),Xb);--this.b},Z],fc=[function(a){ic[a>>4&15].call(this,a)},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},
|
||||
function(){--this.b},function(){--this.b},function(){--this.b},ac,ac,function(a){jc[a>>6&3].call(this,a)},function(a){kc[a>>6&3].call(this,a)},function(a){lc[a>>6&3].call(this,a)},function(a){mc[a>>6&3].call(this,a)},Z,Z],ic=[function(a){nc[a&15].call(this,a)},Z,Z,Z,Z,Z,Z,Z,Z,Z,function(){--this.b},function(){--this.b},Z,Z,Z,Z],nc=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},
|
||||
Z,Z,Z,Z,Z,Z,Z,Z],gc=[bc,bc,$b,$b,Yb,Yb,Zb,Zb,dc,dc,Z,Z,Z,Z,cc,cc],hc=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b},function(a){oc[a>>6&3].call(this,a)},function(a){pc[a>>6&3].call(this,a)},function(a){qc[a>>6&3].call(this,a)},function(a){rc[a>>6&3].call(this,a)},Z,Z],jc=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b}],
|
||||
kc=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b}],lc=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b}],mc=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b}],oc=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b}],pc=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b}],qc=[function(){--this.b},function(){--this.b},function(){--this.b},
|
||||
function(){--this.b}],rc=[function(){--this.b},function(){--this.b},function(){--this.b},function(){--this.b}];function sc(a){v.call(this,"ROM",a,sc);this.c=null;this.m=a.addr;this.f=a.size;this.u=a.writable;this.g=a.alias;this.h=a.file;this.F=ba(this.h);if(this.h){a=this.h;var b=ca(this.F);"json"!=b&&"hex"!=b&&(a=ea()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;p(a,null,!0,function(a,b,e){tc(c,a,b,e)})}}y(sc);sc.prototype.Ga=function(a,b,c,d){this.v=b;this.b=c;this.I=d;uc(this)};
|
||||
sc.prototype.ua=function(){this.j&&(this.I&&this.I.b(this.id,this.m,this.f,this.j),delete this.j);return!0};sc.prototype.ta=function(){return!0};
|
||||
function tc(a,b,c,d){if(d)a.K("Unable to load system ROM (error "+d+": "+b+")");else{Da(a.Hb,b,c);var f;if("["==c.charAt(0)||"{"==c.charAt(0))try{var e,h,g=eval("("+c+")");if(e=g.bytes)a.c=e;else if(e=g.words)for(a.c=Array(2*e.length),h=f=0;f<e.length;f++)a.c[h++]=e[f]&255,a.c[h++]=e[f]>>8&255;else if(e=g.data)for(a.c=Array(4*e.length),h=f=0;f<e.length;f++)a.c[h++]=e[f]&255,a.c[h++]=e[f]>>8&255,a.c[h++]=e[f]>>16&255,a.c[h++]=e[f]>>24&255;else a.c=g;a.j=g.symbols;if(!a.c.length){q("Empty ROM: "+b);
|
||||
return}if(1==a.c.length){q(a.c[0]);return}}catch(k){a.K("ROM data error: "+k.message);return}else for(b=c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.c=Array(b.length),f=0;f<b.length;f++)a.c[f]=aa(b[f]);uc(a)}}
|
||||
function uc(a){if(!Ga(a))if(!a.h)D(a);else if(a.c&&a.v){a.f||(a.f=a.c.length);if(a.c.length!=a.f){var b="ROM size ("+n(a.c.length,8,!0)+") does not match specified size ("+n(a.f,8,!0)+")";a.i.error=!0;a.K(b)}else{b=a.m;if(Ta(a.v,b,a.f,a.u?1:nb)){var c;for(c=0;c<a.c.length;c++){var d=a.v,f=b+c;d.c[(f&d.j)>>>d.f].Vb(f&d.h,a.c[c]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.g?b.push(a.g):null!=a.g&&a.g.length&&(b=a.g);for(c=0;c<b.length;c++){for(var e=a,d=b[c],f=e.v,h=e.f,g=[],k=e.m>>>f.f;0<h&&
|
||||
k<f.c.length;)g.push(f.c[k++]),h-=f.g;f=e.v;e=e.f;h=0;for(d>>>=f.f;0<e&&d<f.c.length;){k=g[h++];if(!k)break;f.c[d++]=k;e-=f.g}}delete a.c}}D(a)}}u(function(){for(var a=C(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new sc(d);B(d,c)}});function vc(a){v.call(this,"RAM",a,vc);this.g=a.addr;this.f=a.size;this.c=!1}y(vc);m=vc.prototype;m.Ga=function(a,b,c,d){this.v=b;this.b=c;this.I=d;D(this)};m.ua=function(a,b){b||this.reset();return!0};m.ta=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.c&&this.f&&Ta(this.v,this.g,this.f,1)&&(this.c=!0);this.c||q("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};u(function(){for(var a=C(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new vc(d);B(d,c)}});function wc(a){v.call(this,"Keyboard",a,wc);D(this)}y(wc);wc.prototype.ba=function(){return!1};wc.prototype.Ga=function(a,b,c,d){this.u=a;this.b=c;this.I=d;this.xa=null};
|
||||
u(function(){for(var a=C(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new wc(d);B(d,c)}});
|
||||
function xc(a,b,c){v.call(this,"Computer",a,xc);this.i.L=!1;yc(this,b);this.M=yb(this,"autoPower",a);this.g=0;this.ca=a.busWidth||a.buswidth;this.c=zc;this.F=null;this.m=this.W=!1;this.url=yb(this,"url")||"";(Math.random()+.1).toString(36);this.f=Ac(this);if(this.b=Ea("CPU",this.id)){this.I=Ea("Debugger",this.id);this.v=new Na({id:this.Hb+".bus",busWidth:this.ca},this.b,this.I);var d,f=z(this.id);if((this.h=Ea("Panel",this.id))&&this.h.yb)for(b=0;b<f.length;b++)d=f[b],d.K=this.h.K,d.X=this.h.X,d.yb=
|
||||
this.h.yb;this.X("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.X("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<f.length;b++)d=f[b],d.Ga&&d.Ga(this,this.v,this.b,this.I);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.u=d:this.c=parseInt(d,10));var e;if(a=yb(this,"state")||(e=!0,a.state))b=this.N=a,e||(this.m=!0,this.c=zc),this.c&&(this.J=
|
||||
new N(this,"1.30.0"),Bc(this.J)?b=null:delete this.J);!b&&this.c&&(b=Cc(this))&&(this.m=!0);if(b){var h=this;p(b,null,!0,function(a,b,c){c?(h.u=null,h.m=!1,h.K("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(h.F=b,h.W=!0);D(h)})}else D(this);this.A.power||(this.M=!0);!c&&this.M&&Dc(this,this.cb)}else q("Unable to find CPU component")}y(xc);var zc=0;
|
||||
function yc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){q(d.message+" ("+c+")")}}a.Z=b}function yb(a,b,c){var d=b.toLowerCase(),d=xa[b]||xa[d];void 0===d&&a.Z&&(d=a.Z[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Dc(a,b,c){for(var d=z(a.id),f=0;f<=d.length;f++){var e=f<d.length?d[f]:a;if(!Ga(e)){Ga(e,function(){Dc(a,b,c)});return}}b.call(a,c)}
|
||||
function Ec(a,b){var c=new N(a,"1.30.0","validate");if(Bc(c)&&Fc(c)){var d=Gc(c,"timestamp"),f=b?Gc(b,"timestamp"):"unknown";d!=f&&(a.K("Machine state may be out-of-date\n("+d+" vs. "+f+")\nCheck your browser's local storage limits"),b||c.clear())}}m=xc.prototype;
|
||||
m.cb=function(a){void 0===a&&(a=this.c||(this.F?1:zc));if(!this.g){this.g++;var b=!1,c=!1;this.R=!1;var d=this.J||new N(this,"1.30.0");if(-1==a)b=!0;else if(a>zc){if(Bc(d,this.F)){this.j=new N(this,"1.30.0","failsafe");Bc(this.j)&&(Hc(this,d),a=2,Ic(this.j));P(this.j,"timestamp",ia());Jc(this.j);var f=this.c&&!this.m;if(1==a||ja("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=Fc(d)){var e=Gc(d,"code"),h=Gc(d,"data");e&&("ok"==e?Bc(d,h):("error"==e&&
|
||||
"no machine state"!=h?(this.K("Error: "+h),"unable to verify user"==h&&(na("user",""),this.f=null)):this.X(e+": "+h),Ic(d),Bc(d)?(c=Fc(d),f=!0):c=!1))}f&&Ec(this,c?d:null)}else 2==a&&d.clear()}else Ec(this);delete this.F;delete this.J}f=z(this.id);for(e=0;e<f.length;e++)h=f[e],h!==this&&h!=this.b&&(c=Kc(this,h,d,b,c));b=[d,a,c];-1!=a?Dc(this,this.Nb,b):this.Nb(b)}};
|
||||
function Kc(a,b,c,d,f){if(!b.i.L){b.i.L=!0;if(b.ua){var e=null;f&&((e=Gc(c,b.id))||(e=Gc(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof e&&(e=null);!b.ua(e,d)&&e&&(q("Unable to restore state for "+b.type),a.N&&!a.W?(c.clear(),a.c=zc,window&&window.location.reload()):a.R=!0,b.ua(null),f=!1)}if(!d&&b.Gb)for(a=b.Gb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return f}
|
||||
m.Nb=function(a){var b=a[0],c=0>a[1];a=a[2];this.da=!0;this.i.L=!0;var d=this.A.power;d&&(d.textContent="Shutdown");this.b&&(Kc(this,this.b,b,c,a),this.b.Xa());this.R&&(Hc(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.g=0};
|
||||
function Hc(a,b){if(ja("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var c=a.f||"",d=b.toString(),f={app:"PDP11js",ver:"1.30.0"};f.url=a.url;f.user=c;f.type="bug";f.data=d;p("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function Lc(a,b,c){var d,f="none";if(a.g)return null;a.g--;var e=new N(a,"1.30.0"),h=new N(a,"1.30.0","validate"),g=ia();P(h,"timestamp",g);P(e,"timestamp",g);P(e,"version","1.30.0");P(e,"url",window?window.location.href:null);P(e,"browser",window?window.navigator.userAgent:"");a.b&&a.b.ta&&(c&&Db(a.b),d=a.b.ta(b,c),"object"===typeof d&&P(e,a.b.id,d),c&&(a.b.i.L=!1,!1===d&&(f=null)));for(var g=z(a.id),k=0;k<g.length;k++){var l=g[k];l.i.L&&(l.ta&&(d=l.ta(b,c),"object"===typeof d&&P(e,l.id,d)),c&&(l.i.L=
|
||||
!1,!1===d&&(f=null)))}f&&(c?(g=d=!1,b?(a.f&&Mc(a,a.f,e.toString()),Jc(h)&&Jc(e)||(f=null,d=g=!0)):a.c&&(d=!0,g=3==a.c),d&&e.clear(g)):f=e.toString());c&&(a.i.L=!1,b=a.A.power)&&(b.textContent="Power");a.g=0;return f}m.reset=function(){this.v&&this.v.reset&&this.v.reset();for(var a=z(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.v&&c.reset&&c.reset()}};m.start=function(a,b){for(var c=z(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
|
||||
m.stop=function(a,b){for(var c=z(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.stop&&f.stop(a,b)}};
|
||||
m.ba=function(a,b,c){var d=this;switch(b){case "power":return this.A[b]=c,c.onclick=function(){d.g||(d.i.L?Lc(d,!1,!0):Dc(d,d.cb))},!0;case "reset":return this.A[b]=c,c.onclick=function(){if(d.i.L&&!d.g)if(d.c&&!d.u){var a=ja("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Lc(d,a,!0);!a&&d.N?window&&window.location.reload():d.cb(zc)}else d.reset(),d.b&&d.b.Xa()},!0;case "save":if(da()){c.parentNode.removeChild(c);break}this.A[b]=
|
||||
c;c.onclick=function(){var a=Ac(d,!0);if(a){var b=!!(d.c&&!d.u||d.N),c=Lc(d,b);b?Mc(d,a,c):d.K("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function Ac(a,b){var c=a.f;c||(c=ma("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=Nc(a,c))||a.K("The user ID is invalid."))):b&&a.K("Browser local storage is not available"));return c}
|
||||
function Nc(a,b){a.f=null;var c=p(ea()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(na("user",c.data),a.f=c.data)}catch(f){q(f.message+" ("+d+")")}return a.f}function Cc(a){var b=null;a.f&&(b=ea()+"/api/v1/user?req=load&user="+a.f+"&state="+Oc(a,"1.30.0"));return b}
|
||||
function Mc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Oc(a,"1.30.0");d.data=c;b=p(ea()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var f=d.indexOf("\n");0<f&&(d=d.substr(0,f));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.K("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.K(c),na("user",""),a.f=null)}}
|
||||
m.Ka=function(a){this.b&&this.b.Ka(a);this.h&&this.h.Ka(a)};u(function(){for(var a=C(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=C(c,"pdp11","computer"),f=0;f<c.length;f++){var e=c[f],h=A(e),h=new xc(h,d,!0);B(h,e);h.M&&Dc(h,h.cb)}});r.show.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=Ea("Computer",c.id))&&c.da&&!c.i.L&&c.cb(-1)}});
|
||||
r.exit.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=Ea("Computer",c.id))&&c.i.L&&Lc(c,!(!c.c||c.u),!0)}});function N(a,b,c){this.id=a.id;this.key=Oc(a,b,c);this.I=a.I;Ic(this,a.ac)}function Oc(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
N.prototype={constructor:N,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){Ic(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(f){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(f){}b.splice(c,1);c=0}}};
|
||||
function Ic(a,b){a[a.id]={};b&&P(a,"parms",b);a.b=!1}function Jc(a){var b=!0;if(la()){var c=JSON.stringify(a[a.id]);na(a.key,c)||(q("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Fc(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){q(c.message||c),b=!1}return b}function Bc(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:la()&&(b=ma(a.key))?(a[a.id]=b,a.b=!0):!1}function Gc(a,b){return a[a.id][b]||null}function P(a,b,c){try{a[a.id][b]=c}catch(d){}}var Pc=0;
|
||||
function Qc(a,b,c,d,f,e){f("Loading "+a+"...");p(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),e(g,null)):Rc(g,a,b,c,d,f,e)})}
|
||||
function Rc(a,b,c,d,f,e,h){function g(a,e){if(e)h(e,null);else{if(c){Da(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}f||(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{f||(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(w){g=null,a=w.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Sc(a,e,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Sc(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");p(f,null,!0,function(e,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(e=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,t=/( [a-z]+=)(['"])(.*?)\2/g;l=t.exec(e);)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{c(a,"missing <"+d[1]+"> in "+f);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);Sc(a,b,c)}})}else c(a,null)}
|
||||
function Tc(a,b,c,d){function f(a){if(void 0===g){var b=h&&C(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ga(a))}function e(a){f("Error: "+a);k&&(--Pc||ua(!0));k=!1}var h,g,k=!0;Pc++;Ca[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var t=document.head||document.getElementsByTagName("head")[0],w=document.createElement("style");w.type="text/css";w.styleSheet?w.styleSheet.cssText=l:w.appendChild(document.createTextNode(l));t.appendChild(w)}c||
|
||||
(c="/versions/pdp11/1.30.0/components.xsl");l=function(d,g){g?Qc(c,null,null,!1,f,function(d,k){if(k)if(Da(a,c,d),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--Pc||ua(!0)):e("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),--Pc||ua(!0)):e("invalid machine element: "+
|
||||
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(d)}):e(d)};"<"!=b.charAt(0)?Qc(b,a,d,!0,f,l):Rc(b,null,a,d,!1,f,l)}else e("missing machine element: "+a)}catch(O){e(O.message)}return k}window.embedPDP11=function(a,b,c,d){ua(!1);return Tc(a,b,c,d)};window.enableEvents=ua;window.sendEvent=va;})();
|
||||
0,3024,3103,65514,34562,0,264,8197,33779,5003,2574,32337,260,0,258,5579,12,6080,448,6081,450,6084,452,116,2,6084,65400,17860,65024,21956,62976,38848,65401,3200,161,76,0,16944,10797];m=Ya.prototype;
|
||||
m.Ha=function(a,b,c,d){this.w=b;this.c=c;this.I=d;switch(this.u){default:a=$a;for(var f in a){var e=a[f];c=b;d=+f;for(var h=e[0]?e[0].bind(this):null,g=e[1]?e[1].bind(this):null,k=e[2]?e[2].bind(this):null,e=e[3]?e[3].bind(this):null,l=+f;l<=d;l+=2){var t=l&8191;void 0!==c.pa[t]?q("I/O address already registered: "+n(c.J+t,8,!0)):c.pa[t]=[h,g,k,e,!1]}}f=this.Xb.bind(this);b.u=this.reset.bind(this);b.$a=f}C(this)};m.ic=function(){return ab(this.c)};
|
||||
m.vc=function(a){bb(this.c,a&-1809|ab(this.c)&1808);this.c.D|=128};
|
||||
function cb(a){var b=a.g,c,d,f,e=b.V>>13&7;"undefined"===typeof b.S[e]&&(b.S[e]={cache:[],postProcess:a.kc,drive:e,blocksize:256,mapped:0,maxblock:b.Fa[e]*b.F[e],url:"rk"+e+".dsk"});b.A&=-129;switch(b.A>>1&7){case 0:b.gb=2496;b.P=0;b.A=128;b.V=0;break;case 1:if((b.V>>4&511)>=b.Fa[e]){b.P|=32832;b.A|=49152;break}if((b.V&15)>=b.F[e]){b.P|=32800;b.A|=49152;break}c=(b.V>>4&511)*b.F[e]+(b.V&15);d=(b.A&48)<<12|b.fb;f=65536-b.hb&65535;db(a,b.S[e],c,d,f);return;case 2:if((b.V>>4&511)>=b.Fa[e]){b.P|=32832;
|
||||
b.A|=49152;break}if((b.V&15)>=b.F[e]){b.P|=32800;b.A|=49152;break}c=(b.V>>4&511)*b.F[e]+(b.V&15);d=(b.A&48)<<12|b.fb;f=65536-b.hb&65535;a.qb(b.S[e],c,d,f);return}b.gb=e<<13|b.gb&8176|b.V%9&15;H(a.c,20,160,144,function(){b.A=b.A&65534|128;return!!(b.A&64)})}m.kc=function(a,b,c,d,f){var e=this.g;e.fb=d&65535;e.A=e.A&-49|d>>12&48;e.hb=65536-f&65535;switch(a){case 1:e.P|=33024;e.A|=49152;break;case 2:e.P|=33792,e.A|=49152}H(this.c,20,160,144,function(){e.A=e.A&65534|128;return!!(e.A&64)})};
|
||||
function eb(a){var b=a.h,c,d,f,e=b.m>>8&3;b.m&=-2;"undefined"===typeof b.S[e]&&(b.S[e]={cache:[],postProcess:a.lc,drive:e,blocksize:128,mapped:1,maxblock:b.Fa[e]*b.F[e],url:"rl"+e+".dsk"});switch(b.m>>1&7){case 2:b.ta&8&&(b.m&=63);b.ta=b.Yb[e]|b.xa&64;break;case 3:1==(b.H&3)&&(b.xa=b.H&4?b.xa+(b.H&65408)&65408|b.H<<2&64:b.xa-(b.H&65408)&65408|b.H<<2&64,b.H=b.xa);break;case 4:b.ta=b.xa;break;case 5:if(b.H>>6>=b.Fa[e]){b.m|=37888;break}if((b.H&63)>=b.F[e]){b.m|=37888;break}c=(b.H>>6)*b.F[e]+(b.H&63);
|
||||
d=(b.qa&63)<<16|b.Ya;f=65536-b.ta&65535;db(a,b.S[e],c,d,f);return;case 6:if(b.H>>6>=b.Fa[e]){b.m|=37888;break}if((b.H&63)>=b.F[e]){b.m|=37888;break}c=(b.H>>6)*b.F[e]+(b.H&63);d=(b.qa&63)<<16|b.Ya;f=65536-b.ta&65535;a.qb(b.S[e],c,d,f);return}H(a.c,20,160,112,function(){b.m|=129;return!!(b.m&64)})}
|
||||
m.lc=function(a,b,c,d,f){var e=this.h;e.Ya=d&65535;e.m=e.m&-49|d>>12&48;e.qa=d>>16&63;e.H=~~(c/e.F[b.ia])<<6|c%e.F[b.ia];e.xa=e.H;e.ta=65536-f&65535;switch(a){case 1:e.m|=33792;break;case 2:e.m|=40960}H(this.c,20,160,112,function(){e.m|=129;return!!(e.m&64)})};function fb(a){a=a.i;a.C=2176;a.$=0;a.T=[4544,4544,4544,4544,4544,4544,4544,4544];a.Ta=[0,0,0,0,0,0,0,0];a.Ka=a.Ua=a.Sa=a.wa=a.Db=0}
|
||||
function gb(a,b){var c=a.i,d,f,e;c.C&=-16513;c.$&=-2049;c.T[b]&=-1153;H(a.c,-1,0,172);"undefined"===typeof c.S[b]&&(c.S[b]={cache:[],postProcess:a.mc,drive:b,blocksize:256,mapped:0,maxblock:c.tb[0]*c.Ea[0]*c.F[0],url:"rp"+b+".dsk"});switch(c.C&63){case 5:c.rb[b]=c.ka[b];c.C|=32896;c.T[b]|=32896;c.Ka|=1<<b;break;case 9:fb(a);break;case 19:c.T[b]|=64;break;case 49:if(c.ka[b]>=c.tb[0]||c.aa[b]>>8>=c.Ea[0]||(c.aa[b]&255)>=c.F[0]){c.Ta[b]|=1024;c.C|=49152;break}d=(c.ka[b]*c.Ea[0]+(c.aa[b]>>8))*c.F[0]+
|
||||
(c.aa[b]&255);f=(c.wa&63)<<16|c.Sa;e=65536-c.Ua&65535;db(a,c.S[b],d,f,e);return;case 57:if(c.ka[b]>=c.tb[0]||c.aa[b]>>8>=c.Ea[0]||(c.aa[b]&255)>=c.F[0]){c.Ta[b]|=1024;c.C|=49152;break}d=(c.ka[b]*c.Ea[0]+(c.aa[b]>>8))*c.F[0]+(c.aa[b]&255);f=(c.wa&63)<<16|c.Sa;e=65536-c.Ua&65535;a.qb(c.S[b],d,f,e);return}H(a.c,3,160,172,function(){c.C=c.C&65534|128;c.T[b]|=128;return!!(c.C&64)})}
|
||||
m.mc=function(a,b,c,d,f){var e=this.i;e.Ua=65536-f&65535;e.Sa=d&65535;e.C=e.C&-769|d>>8&768;e.wa=d>>16&63;f=~~(c/e.F[0]);d=~~(f/e.Ea[0]);e.aa[b.ia]=f%e.Ea[0]<<8|c%e.F[0];e.rb[b.ia]=e.ka[b.ia]=d;e.Ka|=1<<b.ia;c>=b.gc-1&&(e.T[b.ia]|=1024);switch(a){case 1:e.$|=512;e.C|=49152;break;case 2:e.$|=2048,e.C|=49152}H(this.c,20,160,172,function(){e.T[b.ia]|=128;e.C=e.C&65534|128;return!!(e.C&64)})};m.ec=function(){this.f.m|=128;this.f.m&64&&H(this.c,0,192,64)};
|
||||
function hb(a,b,c,d,f,e){var h=~~((e+c.ra-1)/c.ra),g=new XMLHttpRequest;2048>h&&d+2048<c.gc&&(h=2048);g.open("GET",c.url,!0);g.setRequestHeader("Range","bytes="+(d*c.ra<<1)+"-"+(((d+h)*c.ra<<1)-1));g.responseType="arraybuffer";g.onreadystatechange=function(){if(4==g.readyState){var h=b.bind(a),l,t,z,P;l=g.response;if(0!=g.status&&206!=g.status||!l)c.pb(1,c,d,f,e);else{l=new Uint8Array(l);t=d;for(P=0;P<l.length;){if("undefined"===typeof c.cache[t])for(c.cache[t]=[],z=0;z<c.ra;z++)c.cache[t][z]=P<l.length?
|
||||
l[P]&255|l[P+1]<<8&65280:0,P+=2;else P+=c.ra<<1;t++}h(c,d,f,e)}}};g.send(null)}function I(a,b,c,d,f){if(c&1){if(!f)return J(a.c,4,122);d=0<=d?d<<8&65280|b&255:b}else 0<=d?f&&(d=b&65280|d&255):d=b;return d}m.qb=function(a,b,c,d){for(var f;0<d;){if("undefined"===typeof a.cache[b]){hb(this,this.qb,a,b,c,d);return}for(f=0;f<a.ra&&0<d;f++){if(0>K(this.c,a.fc?ib(this.c,c):c,a.cache[b][f])){a.pb(2,a,b,c,d);return}c+=2;--d}b++}a.pb(0,a,b,c,d)};
|
||||
function db(a,b,c,d,f){for(var e,h;0<f;){if("undefined"===typeof b.cache[c])for(b.cache[c]=[],e=0;e<b.ra;e++)b.cache[c][e]=0;for(e=0;e<b.ra&&0<f;e++){h=L(a.c,b.fc?ib(a.c,d):d);if(0>h){b.pb(2,b,c,d,f);return}b.cache[c][e]=h;d+=2;--f}c++}b.pb(0,b,c,d,f)}m.reset=function(){this.b.Ra=this.b.Ra&-120|20;this.l.ga=0;this.l.U=128;this.f.m=0;this.g.A=128;this.h.m=128;fb(this)};
|
||||
m.Xb=function(a,b,c){var d,f,e=this.c;switch(a&-64){case 4194240:switch(a&-2){case 4194300:0>b?d=e.la&65280:(a&1&&(b<<=8),e.la=b|255,d=0);break;case 4194298:if(0>b)d=e.ob;else{a&1&&(b<<=8);if(d=b&65024){f=d>>9;do d+=34;while(f>>=1)}e.ob=d;e.ja=2}break;case 4194294:if(70!==e.Ga)return J(e,4,222);0>b?d=e.o:d=e.o=0;break;case 4194292:if(70!==e.Ga)return J(e,4,224);d=1;break;case 4194290:if(70!==e.Ga)return J(e,4,226);d=0;break;case 4194288:if(70!==e.Ga)return J(e,4,228);d=61183;break;case 4194296:0<=
|
||||
b&&!(a&1)&&(b&=255);case 4194286:case 4194284:case 4194282:case 4194280:case 4194278:case 4194276:case 4194274:case 4194272:if(70!==e.Ga)return J(e,4,232);f=a-4194272>>1;0>b?d=e.Ab[f]:(d=I(this,e.Ab[f],a,b,c),0<=d&&(e.Ab[f]=d));break;case 4194254:return a&1?e.s>>14&1?(0<=b&&(e.a[6]=b),d=e.a[6]):(0<=b&&(e.Z[3]=b),d=e.Z[3]):e.s>>14&0?(0<=b&&(e.a[6]=b),d=e.a[6]):(0<=b&&(e.Z[1]=b),d=e.Z[1]),d;case 4194252:case 4194250:case 4194248:return f=a&7,e.s&2048?(0<=b&&(e.a[f]=b),d=e.a[f]):(0<=b&&(e.Ja[f]=b),d=
|
||||
e.Ja[f]),d;case 4194246:return a&1?(0<=b&&(e.a[7]=b),d=e.a[7]):e.s>>14&0?(0<=b&&(e.a[6]=b),d=e.a[6]):(0<=b&&(e.Z[0]=b),d=e.Z[0]),d;case 4194244:case 4194242:case 4194240:return f=a&7,e.s&2048?(0<=b&&(e.Ja[f]=b),d=e.Ja[f]):(0<=b&&(e.a[f]=b),d=e.a[f]),d;default:return e.o|=16,J(e,4,124)}break;case 4194176:f=a>>1&31;d=I(this,e.O[3][f],a,b,c);0<=d&&(e.O[3][f]=d,e.O[3][f&15]&=65295);break;case 4194112:var h=this.l;f=this.f;switch(a&-2){case 4194174:d=I(this,e.Va,a,b,c);0<=d&&(e.Va=d);break;case 4194172:d=
|
||||
e.ea;d&65280&&(d=(d<<8|d>>8)&65535);break;case 4194170:e.G=e.G&62337|e.bb<<5|e.nb<<1;0>b?d=e.G:(d=I(this,e.G,a,b,c),0<=d&&(e.G=d&=62337,e.bb=d>>5&3,e.nb=d>>1&15,d&257?(f=2,e.oa&16&&(f=1),e.ab=d&1?Ja|D:D):(e.ab=0,f=4),this.b.Ra=this.b.Ra&-8|f));break;case 4194168:0>b?d=this.b.tc&65535:(d=I(this,this.b.data,a,b,c),0<=d&&(this.b.data=d));break;case 4194166:0<=b&&(b&127&&(h.$b=0),h.U&=-129,H(e,100,128,52,function(){h.U|=128;return!!(h.U&64)}));d=0;break;case 4194164:0>b?d=h.U:(d=I(this,h.U,a,b,c),0<=
|
||||
d&&(128==(h.U&192)&&d&64&&H(e,8,128,52,function(){h.U|=128;return!!(h.U&64)}),h.U=h.U&128|d&-129));break;case 4194162:d=0;0>b&&(h.ga&=-129,0<h.Cb.length&&(d=h.Cb.shift(),0<h.Cb.length&&setTimeout(function(){h.ga|=128;h.ga&64&&H(e,40,128,48)},50)));break;case 4194160:0>b?d=h.ga:(d=I(this,h.ga,a,b,c),0<=d&&(h.ga=h.ga&128|d&-129));break;case 4194150:0>b?(d=f.m,f.m&=-129):(d=I(this,f.m,a,b,c),0<=d&&(d&64&&!f.Bb&&(setInterval(this.ec.bind(this),25),f.Bb=1),f.m=d&-129));break;default:return e.o|=16,J(e,
|
||||
4,126)}break;case 4194048:f=this.g;switch(a&-2){case 4194048:d=I(this,f.gb,a,b,c);0<=d&&(f.gb=d);break;case 4194050:d=I(this,f.P,a,b,c);0<=d&&(f.P=d);break;case 4194052:d=I(this,f.A,a,b,c);0<=b&&0<=d&&(f.A=d&-36993|f.A&36992,f.A&1&&cb(this));break;case 4194054:d=I(this,f.hb,a,b,c);0<=d&&(f.hb=d);break;case 4194056:d=I(this,f.fb,a,b,c);0<=d&&(f.fb=d);break;case 4194058:d=I(this,f.V,a,b,c);0<=d&&(f.V=d);break;case 4194060:break;case 4194062:d=I(this,f.Qb,a,b,c);0<=d&&(f.Qb=d);break;default:return e.o|=
|
||||
16,J(e,4,128)}break;case 4193728:var g=this.i;f=g.$&7;switch(a&-2){case 4193728:d=I(this,g.C,a,b,c);0<=b&&0<=d&&(g.wa=g.wa&60|d>>8&3,g.C=d&17279|g.C&34944|2048,d&1&&g.C&128?gb(this,f):192==(d&192)&&H(e,0,160,172));break;case 4193730:d=I(this,g.Ua,a,b,c);0<=d&&(g.Ua=d);break;case 4193732:d=I(this,g.Sa,a,b,c);0<=d&&(g.Sa=d&65534);break;case 4193734:d=I(this,g.aa[f],a,b,c);0<=d&&(g.aa[f]=d&7967);break;case 4193736:d=I(this,g.$,a,b,c);0<=d&&(g.$=d&63|g.$&65472,d&128&&fb(this));break;case 4193738:d=g.T[f];
|
||||
break;case 4193740:d=g.Ta[f];break;case 4193742:d=I(this,g.Ka,a,b,c);0<=d&&(g.Ka=d&255);break;case 4193744:d=g.rc[f];break;case 4193746:d=I(this,g.Rb,a,b,c);0<=d&&(g.Rb=d);break;case 4193748:d=I(this,g.Sb[f],a,b,c);0<=d&&(g.Sb[f]=d&1023);break;case 4193750:d=8210;break;case 4193752:d=g.sc[f];break;case 4193754:d=I(this,g.Tb[f],a,b,c);0<=d&&(g.Tb[f]=d);break;case 4193756:d=I(this,g.ka[f],a,b,c);0<=d&&(g.ka[f]=d&511);break;case 4193758:g.rb[f]=g.ka[f];d=g.rb[f];break;case 4193760:d=g.pc[f];break;case 4193762:d=
|
||||
g.qc[f];break;case 4193764:d=g.nc[f];break;case 4193766:d=g.oc[f];break;case 4193768:d=I(this,g.wa,a,b,c);0<=d&&(g.wa=d&63,g.C=g.C&-769|(d&3)<<8);break;case 4193770:d=I(this,g.Db,a,b,c);0<=d&&(g.Db=d);break;default:return e.o|=16,J(e,4,132)}break;case 4192512:f=this.h;switch(a&-2){case 4192512:d=I(this,f.m,a,b,c);0<=b&&0<=d&&(f.qa=f.qa&60|d>>4&3,f.m=f.m&-1023|d&1022,f.m&128||eb(this));break;case 4192514:d=I(this,f.Ya,a,b,c);0<=d&&(f.Ya=d&65534);break;case 4192516:d=I(this,f.H,a,b,c);0<=d&&(f.H=d);
|
||||
break;case 4192518:d=I(this,f.ta,a,b,c);0<=d&&(f.ta=d);break;case 4192520:d=I(this,f.qa,a,b,c);0<=d&&(f.qa=d&63,f.m=f.m&-49|(f.qa&3)<<4);break;default:return e.o|=16,J(e,4,134)}break;case 4191552:switch(a&-2){case 4191566:0>b?d=e.oa:(d=I(this,e.oa,a,b,c),0<=d&&(70!==e.Ga&&(d&=-49),e.oa=d,e.Ia[0]=d&4?15:7,e.Ia[1]=d&2?15:7,e.Ia[3]=d&1?15:7,e.ab&&(f=2,e.oa&16&&(f=1),this.b.Ra=this.b.Ra&-8|f)));break;default:return e.o|=16,J(e,4,136)}break;case 4191424:f=a>>1&31;d=I(this,e.O[0][f],a,b,c);0<=d&&(e.O[0][f]=
|
||||
d,e.O[0][f&15]&=65295);break;case 4191360:f=a>>1&31;d=I(this,e.O[1][f],a,b,c);0<=d&&(e.O[1][f]=d,e.O[1][f&15]&=65295);break;case 4190400:case 4190336:if(70!==e.Ga)return J(e,4,234);f=a>>2&31;d=e.ib[f];a&2&&(d=d>>16);d&=65535;0<=b&&(d=I(this,d,a,b,c),0<=d&&(e.ib[f]=a&2?d<<16|e.ib[f]&65535:e.ib[f]&4294901760|d&65534));break;case 4188672:case 4188736:case 4188800:case 4188864:case 4188928:case 4188992:case 4189056:case 4189120:if(0>b)d=Za[a>>1&255];else return e.o|=16,J(e,4,138);break;default:return e.o|=
|
||||
16,J(e,4,142)}c&&0<=d&&(a&1?d=d>>8:d&=255);"undefined"===typeof d&&console.log("panic(76)");return d};var $a={};$a[4194302]=[null,null,Ya.prototype.ic,Ya.prototype.vc];u(function(){for(var a=B(document,"pdp11","device"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Ya(d);Fa(d,c)}});var jb;if(Ia){var kb=new ArrayBuffer(2);(new DataView(kb)).setUint16(0,256,!0);jb=256===(new Uint16Array(kb))[0]}else jb=!1;var lb=jb;
|
||||
function G(a,b,c,d,f){this.id=mb+=2;this.c=null;this.Qa=a;this.sb=b;this.size=c||0;this.type=d||nb;this.h=d==ob;this.controller=null;Pa(this);this.sa=this.bc=!1;if(c)if(f)this.controller=f,this.c=null,pb(this,f.Wa);else if(Ia)this.f=new ArrayBuffer(c),this.g=new DataView(this.f,0,c),this.b=new Uint8Array(this.f,0,c),this.B=new Uint16Array(this.f,0,c>>1),this.c=new Int32Array(this.f,0,c>>2),pb(this,lb?qb:rb);else{this.c=Array(c>>2);for(a=0;a<this.c.length;a++)this.c[a]=0;pb(this,sb)}else pb(this)}
|
||||
var nb=0,ob=2,Va=4,Xa=["NONE","RAM","ROM","VID","H/W"],mb=0;
|
||||
G.prototype={constructor:G,parent:null,Bb:function(a){this.Qa=a},save:function(){var a,b;if(this.controller)a=null;else if(Ia)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.g.getInt32(b<<2,!0);else a=this.c;return a},restore:function(a){if(this.controller)return null==a;if(a&&this.size==a.length<<2){var b;if(Ia)for(b=0;b<a.length;b++)this.g.setInt32(b<<2,a[b],!0);else this.c=a;return this.sa=!0}return!1},w:function(){return 255},v:function(){},u:function(a,b){return this.eb(a++,b++)|this.eb(a,
|
||||
b)<<8},J:function(a,b,c){this.jb(a++,b&255,c++);this.jb(a,b>>8,c)},X:function(a){return this.c[a>>2]>>>((a&3)<<3)&255},ya:function(a){var b=a>>2;a=(a&3)<<3;var c=this.c[b]>>a;return 24>a?c&65535:c&255|(this.c[b+1]&255)<<8},Ca:function(a,b){var c=a>>2,d=(a&3)<<3;this.c[c]=this.c[c]&~(255<<d)|b<<d;this.sa=!0},Pa:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.c[c]=this.c[c]&~(65535<<d)|b<<d:(this.c[c]=this.c[c]&16777215|b<<24,c++,this.c[c]=this.c[c]&-256|b>>8);this.sa=!0},N:function(a,b){return this.R(a,
|
||||
b)},da:function(a,b){return this.ma(a,b)},Aa:function(a,b,c){this.h||this.Wb(a,b,c)},Ma:function(a,b,c){this.h||this.Na(a,b,c)},K:function(a){return this.b[a]},W:function(a){return this.b[a]},ca:function(a){return this.g.getUint16(a,!0)},na:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.B[a>>1]},za:function(a,b){this.b[a]=b;this.sa=!0},Ba:function(a,b){this.b[a]=b;this.sa=!0},Da:function(a,b){this.g.setUint16(a,b,!0);this.sa=!0},Oa:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.B[a>>
|
||||
1]=b;this.sa=!0}};function Pa(a,b,c){a.I=b;a.i=a.l=0;c&&((a.i=c.i)&&tb(a,ub,!1),(a.l=c.l)&&vb(a,ub,!1))}function vb(a,b,c){c&&a.l||(a.jb=!a.h&&b[1]||a.v,a.wc=!a.h&&b[3]||a.J);if(c||void 0===c)a.Wb=b[1]||a.v,a.Na=b[3]||a.J}function tb(a,b,c){c&&a.i||(a.eb=b[0]||a.w,a.jc=b[2]||a.u);if(c||void 0===c)a.R=b[0]||a.w,a.ma=b[2]||a.u}function pb(a,b){b||(b=wb);tb(a,b,void 0);vb(a,b,void 0)}
|
||||
var wb=[],sb=[G.prototype.X,G.prototype.Ca,G.prototype.ya,G.prototype.Pa],ub=[G.prototype.N,G.prototype.Aa,G.prototype.da,G.prototype.Ma];if(Ia)var rb=[G.prototype.K,G.prototype.za,G.prototype.ca,G.prototype.Da],qb=[G.prototype.W,G.prototype.Ba,G.prototype.na,G.prototype.Oa];
|
||||
function xb(a,b){v.call(this,"CPU",a,xb);var c=a.multiplier||1;this.wb=a.cycles||b;this.ma=c;this.vb=Math.round(this.wb/1E4)/100;this.ca=this.vb*this.ma;this.j.ha=!1;this.j.Ub=!1;this.j.Xa=a.autoStart;this.j.Nb=!1;this.j.lb=!1;this.Oa=this.da=0;this.Pa=a.csStart;this.za=a.csInterval;this.Aa=a.csStop;this.Ma=[];this.Mb=this.Eb.bind(this);C(this)}x(xb);var yb=["power","reset"];m=xb.prototype;
|
||||
m.Ha=function(a,b,c,d){this.v=a;this.w=b;this.I=d;for(b=0;b<yb.length;b++)(c=this.B[yb[b]])&&this.v.ba(null,yb[b],c);this.ya=null;a=zb(a,"autoStart");null!=a&&(this.j.Xa="true"==a?!0:"false"==a?!1:!!a);C(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};m.va=function(a,b){if(!b){if(a&&this.restore){Ab(this);if(!this.restore(a))return!1;Bb(this)}else this.reset();this.Y("No debugger detected")}Cb(this);return!0};m.ua=function(a){return a?this.save():!0};
|
||||
m.Xa=function(){return this.j.Xa||void 0===this.B.run?(this.Eb(),!0):!1};m.Pb=function(){return 0};function Bb(a){void 0===a.Pa&&(a.Pa=0);void 0===a.za&&(a.za=-1);void 0===a.Aa&&(a.Aa=-1);a.j.lb=0<=a.Pa&&0<a.za;a.j.lb&&(a.Oa=0,a.da=a.Pa-a.X)}
|
||||
function Db(a,b,c,d){if(a.B[b]){void 0===c&&(a.j.error=!0,a.L("Value for "+b+" is invalid"),Eb(a));var f=a.I&&a.I.b||8;if(!a.j.ha||a.j.Nb)if(8==f){f="";d?11<d&&(d=11):d=c&-65536?11:6;if(null==c||isNaN(c))for(;0<d--;)f="?"+f;else for(;0<d--;)f=String.fromCharCode((c&7)+48)+f,c>>=3;d=""+f}else d=n(c,d);else d="--------".substr(0,d||4);a.B[b].textContent!=d&&(a.B[b].textContent=d)}}
|
||||
m.ba=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.B[b]=c;a=!0;break;case "run":this.B[b]=c;c.onclick=function(){var a;if(a=d.v)if(a=d.v,a.j.M)a=!0;else{var b=null,c,g=y(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.j.ready);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.j.M);c++);c==g.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.j.ready?"powered yet":"ready yet"+(b.mb?" (waiting for notification)":""))+".");a=!1}a&&(d.j.ha?Eb(d):d.Eb())};a=!0;
|
||||
break;case "speed":this.B[b]=c;a=!0;break;case "setSpeed":this.B[b]=c,c.onclick=function(){Fb(d,d.ma<<1)},c.textContent=this.ca.toFixed(2)+"Mhz",a=!0}return a};function Gb(a,b,c){a.X+=b;c&&(a.W=a.c=0)}function Hb(a,b){var c=1;b&&1<a.ma&&a.N&&(c=a.N/a.vb);a.Jb=Math.round(1E3/30);a.kb=Math.floor(a.wb/30*c);b||(a.Ba=a.kb);a.xb=0}function Ib(a){return a.X+a.K+a.W-a.c}function Ab(a){a.N=0;a.Kb=0;a.X=a.K=a.W=a.c=0;Bb(a);Fb(a,1)}
|
||||
function Fb(a,b){if(void 0!==b){.8>a.N/a.ca&&(b=1);a.ma=b;var c=a.vb*a.ma;if(a.ca!=c){a.ca=c;var c=a.ca.toFixed(2)+"Mhz",d=a.B.setSpeed;d&&(d.textContent=c);a.Y("target speed: "+c)}}Gb(a,a.K);a.K=0;a.J=ha();a.R=0;Hb(a)}function Jb(a){a.W-=a.c;a.c=0}
|
||||
m.Eb=function(){if(Ga(this,!0)){if(!this.j.ha){Fb(this);this.v&&this.v.start(this.J,Ib(this));this.j.ha=!0;this.j.Ub=!0;this.ya&&this.ya.start();var a=this.B.run;a&&(a.textContent="Halt");this.v&&this.v.La(!0)}this.xb>=this.wb&&Hb(this,!0);this.Ca=0;this.Na=ha();this.R&&(a=this.Na-this.R,a>this.Jb&&(this.J+=a,this.J>this.Na&&(this.J=this.Na)));try{do{for(var b,c=this.j.lb?1:this.kb,d=this.Ma.length-1;0<=d;d--){var f=this.Ma[d];0>f[0]||c>f[0]&&(c=f[0])}b=c;try{this.Vb(b)}catch(l){if("number"!=typeof l)throw l;
|
||||
}for(var e=this.W-this.c,a=e,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.Ca+=e;this.K+=e;Gb(this,0,!0);a=e;if(this.j.lb){var k=!1;this.Oa=this.Oa+this.Pb()|0;this.da-=a;0>=this.da&&(this.da+=this.za,k=!0);0<=this.Aa&&this.Aa<=Ib(this)&&(this.za=this.Aa=-1,Bb(this),Eb(this),k=!0);k&&this.Y(Ib(this)+" cycles: checksum="+n(this.Oa))}this.Ba-=e;if(0>=this.Ba){this.Ba+=this.kb;15<=++this.Kb&&(this.v&&this.v.La(),this.Kb=0);break}}while(this.j.ha)}catch(l){Eb(this);
|
||||
Cb(this);this.v&&this.v.stop(ha(),Ib(this));Ga(this,!1);b=l.stack||l.message;this.j.error=!0;this.L(b);return}b=setTimeout;c=this.Mb;this.R=ha();d=this.Jb;this.Ca&&(d=Math.round(d*this.Ca/this.kb));d=d-(this.R-this.Na);if(f=this.R-this.J)this.N=Math.round(this.K/(10*f))/100,864E5<=f&&(this.X=0,Fb(this));if(0>d||this.N<this.ca)-1E3>d&&(this.J-=d),d=0;this.xb+=this.Ca;this.R+=d;b(c,d)}else Cb(this),this.v&&this.v.stop(ha(),Ib(this))};m.Vb=function(){return 0};
|
||||
function Eb(a){a.j.Za&&(a.j.yb=!0);Jb(a);Gb(a,a.K);a.K=0;if(a.j.ha){a.j.ha=!1;a.ya&&a.ya.stop();var b=a.B.run;b&&(b.textContent="Run")}a.j.complete=void 0}function Cb(a){a.v&&a.v.La(void 0)}
|
||||
function Kb(a){this.ac=+a.model||1170;this.dc=a.resetAddr||0;xb.call(this,a,1E6);this.Gb=0;this.decode=Lb.bind(this);this.h=65536;this.f=32768;this.g=65535;this.b=32768;this.i=-1;this.a=[0,0,0,0,0,0,0,this.dc];this.Ja=[0,0,0,0,0,0];this.Z=[0,0,0,0];this.memory=[];this.l=[];this.Da=this.ob=0;this.ja=2;this.la=255;this.D=0;this.na=-1;this.o=0;this.Ga=70;this.nb=this.bb=this.ab=this.u=this.oa=this.Va=this.ea=this.G=0;this.Ia=[7,7,7,7];this.O=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.ib=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.Ab=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.j.complete=this.j.Zb=!1}x(Kb,xb);m=Kb.prototype;
|
||||
m.reset=function(){this.j.ha&&Eb(this);Mb(this);Ab(this);this.j.error=!1;this.parent.reset.call(this)};function Mb(a){a.la=255;a.o=0;a.l=[];a.ob=0;a.G=a.ea=a.Va=a.oa=a.ab=0;a.Ia[0]=a.Ia[1]=a.Ia[3]=7;a.bb=0}m.Pb=function(){return 0};
|
||||
m.save=function(){var a=new M(this);N(a,0,[]);N(a,1,[this.Ib,this.X,this.ma]);for(var b=this.w,c=0,d=[],f=0;f<b.l;f++){var e=b.b[f];if(e.sa||e.bc){d[c++]=f;var h=c++;a:if(e=e.save()){for(var g=0,k=0,l=[];g<e.length;){for(var t=e[g],z=g+1;z<e.length&&e[z]===t;)z++;l[k++]=z-g;l[k++]=t;g=z}if(l.length<e.length){e=l;break a}}d[h]=e}}N(a,2,d);return a.data()};
|
||||
m.restore=function(a){var b=a[1];this.Ib=b[0];this.X=b[1];Fb(this,b[3]);a:{b=this.w;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],f=a[c+1];if(f&&f.length<b.K){for(var e=0,h=Array(b.K),g=0;g<f.length-1;)for(var k=f[g++],l=f[g++];k--;)h[e++]=l;f=h}e=b.b[d];if(!e||!e.restore(f)){q("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
m.ba=function(a,b,c){var d=!1;switch(b){case "R0":case "R1":case "R2":case "R3":case "R4":case "R5":case "R6":case "R7":case "NF":case "ZF":case "VF":case "CF":case "PS":this.B[b]=c;this.Gb++;d=!0;break;default:d=this.parent.ba.call(this,a,b,c)}return d};
|
||||
m.La=function(a){if(this.Gb&&(a||!this.j.ha||this.j.Nb)){for(a=0;a<this.a.length;a++)Db(this,"R"+a,this.a[a]);a=ab(this);Db(this,"PS",a);Db(this,"NF",a&8?1:0,1);Db(this,"ZF",a&4?1:0,1);Db(this,"VF",a&2?1:0,1);Db(this,"CF",a&1?1:0,1)}if(a=this.B.speed)a.textContent=this.j.ha&&this.N?this.N.toFixed(2)+"Mhz":"Stopped"};
|
||||
function H(a,b,c,d,f){for(var e=a.l.length;0<e--;)if(a.l[e].uc===d){0<e&&(a.l[e-1].fa+=a.l[e].fa);a.l.splice(e,1);break}if(0<=b){2===a.Da&&(b=0,a.Da=0,setTimeout(a.Mb,0));for(e=a.l.length;0<e--;){if(a.l[e].fa>b){a.l[e].fa-=b;break}b-=a.l[e].fa}a.l.splice(e+1,0,{delay:b,priority:c&224,vector:d,callback:f})}a.ja=2}function ab(a){return a.s=a.s&63728|(a.b&32768?8:0)|(a.g&65535?0:4)|(a.f&32768?2:0)|(a.h&65536?1:0)}
|
||||
function bb(a,b){a.b=b<<12;a.g=~b&4;a.f=b<<14;a.h=b<<16;if((b^a.s)&2048)for(var c=a.Ja.length;0<=--c;){var d=a.a[c];a.a[c]=a.Ja[c];a.Ja[c]=d}a.u=b>>14&3;c=a.s>>14&3;a.u!=c&&(a.Z[c]=a.a[6],a.a[6]=a.Z[a.u]);a.ja=2;a.s=b}function Nb(a,b){a.D&128||(a.b=a.g=a.h=b,a.f=0)}function O(a,b){a.D&128||(a.b=a.g=b,a.f=0)}function Ob(a,b,c,d){a.D&128||(a.b=a.g=a.h=b,a.f=(c^d)&(d^b))}
|
||||
function J(a,b,c){var d,f,e=0;0>a.na?a.na=ab(a):a.u||(b=4,e=1);a.G&57344||(a.ea=63222,a.Va=b);a.u=0;0<=(d=Q(a,b|65536))&&0<=(f=Q(a,b+2&65535|65536))&&(bb(a,f&53247|a.na>>2&12288),e&&(a.o|=4,a.a[6]=4),0<=Pb(a,a.na)&&0<=Pb(a,a.a[7])&&(a.a[7]=d));a.D&=-113;a.na=-1;throw b|c<<8;}function ib(a,b){var c=b>>13&31;31>c?a.oa&32&&(b=a.ib[c]+(b&8190)&4194302,3932160<=b&&4186112>b&&console.log("panic(898)")):b|=4186112;return b}
|
||||
function Qb(a,b,c){var d,f,e,h=0;if(c&a.ab){d=b>>13&a.Ia[a.u];f=a.O[a.u][d];e=(a.O[a.u][d+16]<<6)+(b&8191)&4194303;a.oa&16?3932160<=e&&4186112>e&&(e=ib(a,e&262143)):(e&=262143,253952<=e&&(e|=4186112));3932160>e&&(3915776<=e&&(a.o|=32,J(a,4,24)),e&1&&!(c&1)&&(a.o|=64,J(a,4,26)));switch(f&7){case 1:h=4096;case 2:f|=128;c&D&&(h=8192);break;case 4:h=4096;case 5:c&D&&(h=4096);case 6:f|=c&D?192:128;break;default:h=32768}32512!==(f&32520)&&(f&8?f&32512&&(b&8128)<(f>>2&8128)&&(h|=16384):(b&8128)>(f>>2&8128)&&
|
||||
(h|=16384));a.O[a.u][d]=f;if(4194170!==e||a.u)a.bb=a.u,a.nb=d;h&&(h&57344&&(0<=a.na&&(h|=128),a.G&57344||(a.G=a.G|h|a.bb<<5|a.nb<<1),J(a,168,28)),a.G&61440||!(4191360>e||4194239<e)||(a.G|=4096,a.G&512&&(a.D|=32)))}else e=b&65535,57344<=e?e|=4186112:e&1&&!(c&1)&&(a.o|=64,J(a,4,22));return e}function L(a,b){var c;if(4194304<=b)c=a.a[b-4194304];else if(0<=b){c=a.w;var d=b&c.h,f=(b&c.i)>>>c.f;c=d!=c.h?c.b[f].jc(d,b):c.b[f++].eb(d,b)|c.b[f&c.N].eb(0,b+1)<<8}else c=b;return c}
|
||||
function K(a,b,c){c&=65535;if(4194304<=b)return a.a[b-4194304]=c;if(0<=b){a=a.w;var d=c,f=b&a.h,e=(b&a.i)>>>a.f;f!=a.h?a.b[e].wc(f,d&65535,b):(a.b[e++].jb(f,d&255,b),a.b[e&a.N].jb(0,d>>8&255,b+1));return c}return b}function R(a,b){var c;4194304<=b?c=a.a[b-4194304]&255:0<=b?(c=a.w,c=c.b[(b&c.i)>>>c.f].eb(b&c.h,b)):c=b;return c}function S(a,b,c){c&=255;return 4194304<=b?a.a[b-4194304]=a.a[b-4194304]&65280|c:0<=b?(a=a.w,a.b[(b&a.i)>>>a.f].jb(b&a.h,c&255,b),c):b}
|
||||
function Q(a,b){return L(a,Qb(a,b,Ja))}function Rb(a){var b=Q(a,a.a[6]|65536);0<=b&&(a.a[6]=a.a[6]+2&65535);return b}function Pb(a,b){var c,d;a.a[6]=d=a.a[6]-2&65535;a.G&57344||(a.ea=a.ea<<8|246);!a.u&&d<=a.la&&4<d&&(d<=a.la-32?(a.o|=4,a.a[6]=4,J(a,4,32)):(a.o|=8,a.D|=4));return 0<=(c=Qb(a,d|65536,D))?K(a,c,b):c}
|
||||
function Sb(a,b,c){var d,f,e=b&7;switch(b>>3&7){case 0:J(a,4,34);break;case 1:return 6===e&&!a.u&&c&D&&(a.a[6]<=a.la||65534<=a.a[6])&&(a.a[6]<=a.la-32||65534<=a.a[6]?(a.o|=4,a.a[6]=4,J(a,4,36)):(a.o|=8,a.D|=64)),7===e?a.a[e]:a.a[e]|65536;case 2:f=2;d=a.a[e];7!==e&&(d|=65536,6>e&&c&1&&(f=1));break;case 3:f=2;d=a.a[e];7!==e&&(d|=65536);if(0>(d=Q(a,d)))return d;d|=65536;break;case 4:f=-2;6>e&&c&1&&(f=-1);d=a.a[e]+f&65535;7!==e&&(d|=65536);break;case 5:f=-2;d=a.a[e]-2&65535;7!==e&&(d|=65536);if(0>(d=
|
||||
Q(a,d)))return d;d|=65536;break;case 6:if(0>(d=Q(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return d|65536;case 7:if(0>(d=Q(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return 0>(d=Q(a,d|65536))?d:d|65536}a.a[e]=a.a[e]+f&65535;a.G&57344||(a.ea=a.ea<<8|f<<3&248|e);6===e&&!a.u&&c&D&&0>=f&&(a.a[6]<=a.la||65534<=a.a[6])&&(a.a[6]<=a.la-32?(a.o|=4,a.a[6]=4,J(a,4,38)):(a.o|=8,a.D|=64));return d}function T(a,b,c){b&56?(b=Sb(a,b,c),a=Qb(a,b,c)):a=4194304+(b&7);return a}
|
||||
function U(a,b){var c;b&56?(c=T(a,b,Ja),c=L(a,c)):c=a.a[b&7];return c}function V(a,b){var c;b&56?(c=T(a,b,Ka),c=R(a,c)):c=a.a[b&7]&255;return c}function Tb(a,b,c,d){b&56?(b=T(a,b,E),K(a,b,d.call(a,c,L(a,b)))):(b&=7,a.a[b]=d.call(a,c,a.a[b])&65535)}function Ub(a,b,c,d){b&56?(b=T(a,b,F),S(a,b,d.call(a,c,R(a,b)))):(b&=7,a.a[b]=a.a[b]&65280|d.call(a,c,a.a[b])&255)}function Vb(a,b,c){b&56?K(a,T(a,b,D),c):a.a[b&7]=c&65535;return c}
|
||||
function Wb(a,b,c,d){b&56?S(a,T(a,b,La),c):(b&=7,a.a[b]=d?d&1?a.a[b]&-256:c<<24>>24&65535:a.a[b]&-256|c&255);return c}function W(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.Vb=function(a){this.j.complete=!0;this.j.Zb=!1;this.j.Ub=!1;this.W=this.c=a;this.Ib&256?(Jb(this),a=!1):a=!0;if(a){do{var b,c,d,f,e;this.D&112&&(this.D&32?J(this,168,52):this.D&64?J(this,4,54):this.D&16&&J(this,12,56),this.D&=-113);if(this.ja)if(1===this.ja)this.ja=2;else{this.ja=0;e=-1;b=this.ob&224;if(0<(a=this.l.length))for(;0<a--;){if(0<this.l[a].fa){this.l[a].fa--;this.ja=2;break}if(this.l[a].Lb){if(!this.l[a].Lb()){this.l.splice(a,1);e--;continue}this.l[a].Lb=null}this.l[a].hc>b&&(b=this.l[a].hc,
|
||||
e=a)}b>(this.s&224)&&(0>e?J(this,160,42):(J(this,this.l[e].uc,44),this.l.splice(e,1)))}this.G&57344||(this.ea=0,this.Va=this.a[7]);this.D=this.s&16;this.i=a=Q(this,this.a[7]);0<=a&&(this.a[7]=this.a[7]+2&65535);this.decode(a);if(0>this.i)switch(a&61440){case 4096:0<=(b=U(this,a>>6))&&(a&56?0<=(d=T(this,a,D))&&0<=K(this,d,b)&&(this.b=this.g=b,this.f=0):(this.b=this.g=this.a[a&7]=b,this.f=0));break;case 8192:0<=(b=U(this,a>>6))&&0<=(c=U(this,a))&&(this.b=this.g=this.h=a=b-c,this.f=(b^c)&(b^a));break;
|
||||
case 12288:0<=(b=U(this,a>>6))&&0<=(c=U(this,a))&&(this.b=this.g=b&c,this.f=0);break;case 16384:0<=(b=U(this,a>>6))&&(a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c&~b,0<=K(this,d,a)&&(this.b=this.g=a,this.f=0)):(this.b=this.g=a=this.a[a&7]&=~b,this.f=0));break;case 20480:0<=(b=U(this,a>>6))&&(a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c|b,0<=K(this,d,a)&&(this.b=this.g=a,this.f=0)):(this.b=this.g=a=this.a[a&7]|=b,this.f=0));break;case 24576:0<=(b=U(this,a>>6))&&(a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=b+c,0<=
|
||||
K(this,d,a)&&(this.b=this.g=this.h=a,this.f=(b^a)&(c^a))):(e=a&7,c=this.a[e],this.a[e]=(a=b+c)&65535,this.b=this.g=this.h=a,this.f=(b^a)&(c^a)));break;case 36864:0<=(b=V(this,a>>6))&&(a&56?0<=(d=T(this,a,La))&&0<=S(this,d,b)&&(this.b=this.g=b<<8,this.f=0):(b&128&&(b|=65280),this.b=this.g=this.a[a&7]=b,this.f=0));break;case 40960:0<=(b=V(this,a>>6))&&0<=(c=V(this,a))&&(a=b-c,this.b=this.g=this.h=a<<8,this.f=((b^c)&(b^a))<<8);break;case 45056:0<=(b=V(this,a>>6))&&0<=(c=V(this,a))&&(this.b=this.g=(b&
|
||||
c)<<8,this.f=0);break;case 49152:0<=(b=V(this,a>>6))&&0<=(c=R(this,d=T(this,a,F)))&&(a=c&~b,0<=S(this,d,a)&&(this.b=this.g=a<<8,this.f=0));break;case 53248:0<=(b=V(this,a>>6))&&0<=(c=R(this,d=T(this,a,F)))&&(a=c|b,0<=S(this,d,a)&&(this.b=this.g=a<<8,this.f=0));break;case 57344:0<=(b=U(this,a>>6))&&(a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c-b,0<=K(this,d,a)&&(this.b=this.g=this.h=a,this.f=(b^c)&(c^a))):(e=a&7,c=this.a[e],this.a[e]=(a=c-b)&65535,this.b=this.g=this.h=a,this.f=(b^c)&(c^a)));break;default:switch(a&
|
||||
65024){case 2048:0<=(f=Sb(this,a,0))&&(e=a>>6&7,0<=Pb(this,this.a[e])&&(this.a[e]=this.a[7],this.a[7]=f&65535));break;case 28672:0<=(b=U(this,a))&&(e=a>>6&7,b&32768&&(b|=-65536),c=this.a[e],c&32768&&(c|=-65536),a=~~(b*c),this.a[e]=a>>16&65535,this.a[e|1]=a&65535,this.b=a>>16,this.g=this.b|a,this.h=this.f=0,-32768>a||32767<a)&&(this.h=65536);break;case 29184:0<=(b=U(this,a))&&(b?(e=a>>6&7,c=this.a[e]<<16|this.a[e|1],this.h=this.f=0,b&32768&&(b|=-65536),a=~~(c/b),-32768<=a&&32767>=a?(this.a[e]=a&65535,
|
||||
this.a[e|1]=c-a*b&65535,this.g=a>>16|a,this.b=a>>16):(this.f=32768,this.g=a>>15|a,this.b=c>>16,-1===b&&65534===this.a[e]&&(this.a[e]=this.a[e|1]=1))):(this.g=this.b=0,this.f=32768,this.h=65536));break;case 29696:0<=(b=U(this,a))&&(e=a>>6&7,a=this.a[e],a&32768&&(a|=4294901760),this.h=this.f=0,b&=63,b&32?(b=64-b,16<b&&(b=16),this.h=a<<17-b,a=a>>b):b&&(16<b?(this.f=a,a=0):(this.h=a=a<<b,(c=a>>15&65535)&&65535!==c&&(this.f=32768))),this.a[e]=a&65535,this.b=this.g=a);break;case 30208:if(0<=(b=U(this,a))){e=
|
||||
a>>6&7;c=this.a[e]<<16|this.a[e|1];this.h=this.f=0;b&=63;if(b&32)b=64-b,32<b&&(b=32),a=c>>b-1,this.h=a<<16,a>>=1,c&2147483648&&(a|=4294967295<<32-b);else if(b){if(a=c<<b-1,this.h=a>>15,a<<=1,32<b&&(b=32),c>>=32-b)c|=4294967295<<b&4294967295,4294967295!==c&&(this.f=32768)}else a=c;this.a[e]=a>>16&65535;this.a[e|1]=a&65535;this.b=a>>16;this.g=a>>16|a}break;case 30720:a&56?0<=(c=L(this,d=T(this,a,E)))&&(c^=this.a[a>>6&7],0<=K(this,d,c)&&(this.b=this.g=c,this.f=0)):(this.b=this.g=c=this.a[a&7]^=this.a[a>>
|
||||
6&7],this.f=0);break;case 32256:e=a>>6&7;if(this.a[e]=this.a[e]-1&65535)this.a[7]=this.a[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.a[7]=W(this.a[7],a);break;case 512:this.g&65535&&(this.a[7]=W(this.a[7],a));break;case 768:this.g&65535||(this.a[7]=W(this.a[7],a));break;case 1024:(this.b&32768)===(this.f&32768)&&(this.a[7]=W(this.a[7],a));break;case 1280:(this.b&32768)!==(this.f&32768)&&(this.a[7]=W(this.a[7],a));break;case 1536:this.g&65535&&(this.b&32768)===(this.f&32768)&&
|
||||
(this.a[7]=W(this.a[7],a));break;case 1792:this.g&65535&&(this.b&32768)===(this.f&32768)||(this.a[7]=W(this.a[7],a));break;case 32768:this.b&32768||(this.a[7]=W(this.a[7],a));break;case 33280:!(this.h&65536)&&this.g&65535&&(this.a[7]=W(this.a[7],a));break;case 33024:this.b&32768&&(this.a[7]=W(this.a[7],a));break;case 33536:if(this.h&65536||!(this.g&65535))this.a[7]=W(this.a[7],a);break;case 33792:this.f&32768||(this.a[7]=W(this.a[7],a));break;case 34048:this.f&32768&&(this.a[7]=W(this.a[7],a));break;
|
||||
case 34304:this.h&65536||(this.a[7]=W(this.a[7],a));break;case 34560:this.h&65536&&(this.a[7]=W(this.a[7],a));break;case 34816:J(this,24,2);break;case 35072:J(this,28,4);break;default:switch(a&65472){case 64:0<=(f=Sb(this,a,0))&&(this.a[7]=f&65535);break;case 192:a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c<<8|c>>8,0<=K(this,d,a)&&(this.b=this.g=c&65280,this.f=this.h=0)):(e=a&7,c=this.a[e],this.a[e]=(c<<8|c>>8)&65535,this.b=this.g=c&65280,this.f=this.h=0);break;case 2560:a&56?0<=(d=T(this,a,D))&&0<=K(this,
|
||||
d,0)&&(this.b=this.h=this.f=this.g=0):this.b=this.h=this.f=this.g=this.a[a&7]=0;break;case 2624:0<=(c=L(this,d=T(this,a,E)))&&(a=~c,0<=K(this,d,a)&&(this.b=this.g=a,this.h=65536,this.f=0));break;case 2688:a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c+1,0<=K(this,d,a)&&(this.b=this.g=a,this.f=a&(a^c))):(e=a&7,c=this.a[e],a=c+1,this.a[e]=a&65535,this.b=this.g=a,this.f=a&(a^c));break;case 2752:a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c-1,0<=K(this,d,a)&&(this.b=this.g=a,this.f=(a^c)&c)):(e=a&7,c=this.a[e],a=
|
||||
c-1,this.a[e]=a&65535,this.b=this.g=a,this.f=(a^c)&c);break;case 2816:0<=(c=L(this,d=T(this,a,E)))&&(a=-c,0<=K(this,d,a)&&(this.h=this.b=this.g=a,this.f=a&c));break;case 2880:0<=(c=L(this,d=T(this,a,E)))&&(a=c+(this.h>>16&1),0<=K(this,d,a)&&(this.h=this.b=this.g=a,this.f=a&(a^c)));break;case 2944:0<=(c=L(this,d=T(this,a,E)))&&(a=c-(this.h>>16&1),0<=K(this,d,a)&&(this.h=this.b=this.g=a,this.f=(a^c)&c));break;case 3008:0<=(c=U(this,a))&&(this.b=this.g=c,this.h=this.f=0);break;case 3072:a&56?0<=(c=L(this,
|
||||
d=T(this,a,E)))&&(a=(this.h&65536|c)>>1,0<=K(this,d,a)&&(this.h=c<<16,this.b=this.g=a,this.f=a^this.h>>1)):(e=a&7,c=this.a[e],a=(this.h&65536|c)>>1,this.a[e]=a&65535,this.h=c<<16,this.b=this.g=a,this.f=a^this.h>>1);break;case 3136:a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c<<1|this.h>>16&1,0<=K(this,d,a)&&(this.h=this.b=this.g=a,this.f=a^c)):(e=a&7,c=this.a[e],a=c<<1|this.h>>16&1,this.a[e]=a&65535,this.h=this.b=this.g=a,this.f=a^c);break;case 3200:a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c&32768|c>>1,0<=
|
||||
K(this,d,a)&&(this.h=c<<16,this.b=this.g=a,this.f=this.b^this.h>>1)):(e=a&7,c=this.a[e],a=c&32768|c>>1,this.a[e]=a&65535,this.h=c<<16,this.b=this.g=a,this.f=this.b^this.h>>1);break;case 3264:a&56?0<=(c=L(this,d=T(this,a,E)))&&(a=c<<1,0<=K(this,d,a)&&(this.h=this.b=this.g=a,this.f=a^c)):(e=a&7,c=this.a[e],a=c<<1,this.a[e]=a&65535,this.h=this.b=this.g=a,this.f=a^c);break;case 3328:f=this.a[7]+((a&63)<<1)&65535;0<=(b=Q(this,f|65536))&&(this.a[7]=this.a[5],this.a[5]=b,this.a[6]=f+2&65535);break;case 3392:a&
|
||||
56?0<=(f=Sb(this,a,0))&&(61440!==(this.s&61440)&&(f&=65535),this.u=this.s>>12&3,0<=(b=Q(this,f))&&(this.u=this.s>>14&3,0<=Pb(this,b)&&(this.b=this.g=b,this.f=0))):(e=a&7,b=6!==e||(this.s>>2&12288)===(this.s&12288)?this.a[e]:this.Z[this.s>>12&3],0<=Pb(this,b)&&(this.b=this.g=b,this.f=0));break;case 3456:0<=(c=Rb(this))&&((this.G&57344||(this.ea=22),a&56)?0<=(f=Sb(this,a,0))&&(f&=65535,this.u=this.s>>12&3,0<=(d=Qb(this,f,D))&&(this.u=this.s>>14&3,0<=K(this,d,c)&&(this.b=this.g=c,this.f=0))):(e=a&7,
|
||||
6!==e||(this.s>>2&12288)===(this.s&12288)?this.a[e]=c:this.Z[this.s>>12&3]=c,this.b=this.g=c,this.f=0));break;case 3520:0<=(d=T(this,a,D))&&(a=-(this.b>>15&1),0<=K(this,d,a)&&(this.g=a,this.f=0));break;case 35328:a&56?0<=(d=T(this,a,La))&&0<=S(this,d,0)&&(this.b=this.h=this.f=this.g=0):(this.a[a&7]&=65280,this.b=this.h=this.f=this.g=0);break;case 35392:0<=(c=R(this,d=T(this,a,F)))&&(a=~c,0<=S(this,d,a)&&(this.b=this.g=a<<8,this.h=65536,this.f=0));break;case 35456:0<=(c=R(this,d=T(this,a,F)))&&(a=
|
||||
c+1,0<=S(this,d,a)&&(this.b=this.g=a<<8,this.f=(a&(a^c))<<8));break;case 35520:0<=(c=R(this,d=T(this,a,F)))&&(a=c-1,0<=S(this,d,a)&&(this.b=this.g=a<<8,this.f=((a^c)&c)<<8));break;case 35584:0<=(c=R(this,d=T(this,a,F)))&&(a=-c,0<=S(this,d,a)&&(this.h=this.b=this.g=a<<8,this.f=(a&c)<<8));break;case 35648:0<=(c=R(this,d=T(this,a,F)))&&(a=c+(this.h>>16&1),0<=S(this,d,a)&&(this.b=this.g=this.h=a<<8,this.f=(a&(a^c))<<8));break;case 35712:0<=(c=R(this,d=T(this,a,F)))&&(a=c-(this.h>>16&1),0<=S(this,d,a)&&
|
||||
(this.b=this.g=this.h=a<<8,this.f=((a^c)&c)<<8));break;case 35776:0<=(c=V(this,a))&&(this.b=this.g=c<<8,this.h=this.f=0);break;case 35840:0<=(c=R(this,d=T(this,a,F)))&&(a=((this.h&65536)>>8|c)>>1,0<=S(this,d,a)&&(this.h=c<<16,this.b=this.g=a<<8,this.f=this.b^this.h>>1));break;case 35904:0<=(c=R(this,d=T(this,a,F)))&&(a=c<<1|this.h>>16&1,0<=S(this,d,a)&&(this.h=this.b=this.g=a<<8,this.f=(a^c)<<8));break;case 35968:0<=(c=R(this,d=T(this,a,F)))&&(a=c&128|c>>1,0<=S(this,d,a)&&(this.h=c<<16,this.b=this.g=
|
||||
a<<8,this.f=this.b^this.h>>1));break;case 36032:0<=(c=R(this,d=T(this,a,F)))&&(a=c<<1,0<=S(this,d,a)&&(this.h=this.b=this.g=a<<8,this.f=(a^c)<<8));break;case 36160:a&56?0<=(f=Sb(this,a,0))&&(this.u=this.s>>12&3,0<=(b=Q(this,f|65536))&&(this.u=this.s>>14&3,0<=Pb(this,b)&&(this.b=this.g=b,this.f=0))):(e=a&7,b=6!==e||(this.s>>2&12288)===(this.s&12288)?this.a[e]:this.Z[this.s>>12&3],0<=Pb(this,b)&&(this.b=this.g=b,this.f=0));break;case 36224:0<=(c=Rb(this))&&((this.G&57344||(this.ea=22),a&56)?0<=(f=Sb(this,
|
||||
a,0))&&(this.u=this.s>>12&3,0<=(d=Qb(this,f|65536,D))&&(this.u=this.s>>14&3,0<=K(this,d,c)&&(this.b=this.g=c,this.f=0))):(e=a&7,6!==e||(this.s>>2&12288)===(this.s&12288)?this.a[e]=c:this.Z[this.s>>12&3]=c,this.b=this.g=c,this.f=0));break;default:switch(a&65528){case 128:0<=(b=Rb(this))&&(e=a&7,this.a[7]=this.a[e],this.a[e]=b);break;case 152:this.s&49152||(this.s=this.s&63519|(a&7)<<5,this.ja=1);break;case 160:case 168:a&1&&(this.h=0);a&2&&(this.f=0);a&4&&(this.g=1);a&8&&(this.b=0);break;case 176:case 184:a&
|
||||
1&&(this.h=65536);a&2&&(this.f=32768);a&4&&(this.g=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.s?(this.o|=128,J(this,4,46)):(this.Da=3,Jb(this),console.log("HALT at "+this.a[7].toString(8)));break;case 1:e=0;if(0<(a=this.l.length))for(;0<a--;)e+=this.l[a].fa,this.l[a].fa=0;0===e&&0===this.Da&&(this.Da=2,Jb(this));break;case 3:J(this,12,6);break;case 4:J(this,16,8);break;case 5:this.s&49152||(Mb(this),this.w.reset());break;case 2:case 6:d=this.a[6];0<=(f=Q(this,d|65536))&&(d=d+
|
||||
2&65535,0<=(b=Q(this,d|65536))&&(this.a[6]=d+2&65535,b&=63743,this.s&49152&&(b=b&63519|this.s&63712),this.a[7]=f,bb(this,b),this.D&=-17,2===a&&(this.D|=this.s&16)));break;default:J(this,8,48)}}}}}}}while(0<this.c)}return this.j.complete?this.W-this.c:void 0===this.j.complete?0:-1};u(function(){for(var a=B(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Kb(d);Fa(d,c)}});function Xb(a,b){var c=a+b;this.D&128||(this.b=this.g=this.h=c,this.f=(a^c)&(b^c));return c&65535}
|
||||
function Yb(a,b){var c=~a&b;O(this,c);return c}function Zb(a,b){var c=~a&b;O(this,c<<8);return c}function $b(a,b){var c=a|b;O(this,c);return c}function ac(a,b){var c=a|b;O(this,c<<8);return c}function bc(a,b){var c=b-a;Ob(this,c,a,b);return c&65535}function cc(){this.i=-1;--this.c}function dc(){this.i=-1;--this.c}function X(a){a&1&&(this.h=0);a&2&&(this.f=0);a&4&&(this.g=1);a&8&&(this.b=0);--this.c}function ec(){this.i=-1;--this.c}function fc(){this.i=-1;--this.c}
|
||||
function gc(){this.i=-1;--this.c}function hc(){--this.c}function Y(a){a&1&&(this.h=65536);a&2&&(this.f=32768);a&4&&(this.g=0);a&8&&(this.b=32768);--this.c}function ic(){this.i=-1;--this.c}function jc(){this.i=-1;--this.c}function Z(){J(this,8,48)}function Lb(a){kc[a>>12].call(this,a)}
|
||||
var kc=[function(a){lc[a>>8&15].call(this,a)},function(a){O(this,Vb(this,a,U(this,a>>6)));--this.c},function(a){var b=U(this,a>>6);a=U(this,a);Ob(this,b-a,a,b);--this.c},function(a){O(this,U(this,a>>6)&U(this,a));--this.c},function(a){Tb(this,a,U(this,a>>6),Yb);--this.c},function(a){Tb(this,a,U(this,a>>6),$b);--this.c},function(a){Tb(this,a,U(this,a>>6),Xb);--this.c},function(a){mc[a>>8&15].call(this,a)},function(a){nc[a>>8&15].call(this,a)},function(a){var b=V(this,a>>6);O(this,Wb(this,a,b,2)<<8);
|
||||
--this.c},function(a){var b=V(this,a>>6)<<8;a=V(this,a)<<8;Ob(this,b-a,a,b);--this.c},function(a){O(this,(V(this,a>>6)&V(this,a))<<8);--this.c},function(a){Ub(this,a,V(this,a>>6),Zb);--this.c},function(a){Ub(this,a,V(this,a>>6),ac);--this.c},function(a){Tb(this,a,U(this,a>>6),bc);--this.c},Z],lc=[function(a){oc[a>>4&15].call(this,a)},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=
|
||||
-1;--this.c},function(){this.i=-1;--this.c},fc,fc,function(a){pc[a>>6&3].call(this,a)},function(a){qc[a>>6&3].call(this,a)},function(a){rc[a>>6&3].call(this,a)},function(a){sc[a>>6&3].call(this,a)},Z,Z],oc=[function(a){tc[a&15].call(this,a)},Z,Z,Z,Z,Z,Z,Z,Z,Z,function(a){uc[a&15].call(this,a)},function(a){vc[a&15].call(this,a)},Z,Z,Z,Z],uc=[hc,function(){this.h=0;--this.c},function(){this.f=0;--this.c},X,function(){this.g=1;--this.c},X,X,X,function(){this.b=0;--this.c},X,X,X,X,X,X,X],vc=[hc,function(){this.h=
|
||||
65536;--this.c},function(){this.f=32768;--this.c},Y,function(){this.g=0;--this.c},Y,Y,Y,function(){this.b=32768;--this.c},Y,Y,Y,Y,Y,Y,Y],tc=[function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.s&49152||(Mb(this),this.w.reset());--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},Z,Z,Z,Z,Z,Z,Z,Z],mc=[gc,gc,ec,ec,cc,cc,dc,dc,jc,jc,Z,Z,Z,Z,ic,ic],nc=[function(){this.i=
|
||||
-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(a){wc[a>>6&3].call(this,a)},function(a){xc[a>>6&3].call(this,a)},function(a){yc[a>>6&3].call(this,a)},function(a){zc[a>>6&3].call(this,a)},Z,Z],pc=[function(a){Nb(this,Vb(this,a,0));--this.c},function(){this.i=
|
||||
-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}],qc=[function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}],rc=[function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}],sc=[function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}],wc=[function(a){Nb(this,Wb(this,a,0,1));
|
||||
--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}],xc=[function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}],yc=[function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}],zc=[function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c},function(){this.i=-1;--this.c}];
|
||||
function Ac(a){v.call(this,"ROM",a,Ac);this.b=null;this.l=a.addr;this.f=a.size;this.u=a.writable;this.g=a.alias;this.h=a.file;this.v=ba(this.h);if(this.h){a=this.h;var b=ca(this.v);"json"!=b&&"hex"!=b&&(a=ea()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;p(a,null,!0,function(a,b,e){Bc(c,a,b,e)})}}x(Ac);Ac.prototype.Ha=function(a,b,c,d){this.w=b;this.c=c;this.I=d;Cc(this)};Ac.prototype.va=function(){this.i&&(this.I&&this.I.c(this.id,this.l,this.f,this.i),delete this.i);return!0};
|
||||
Ac.prototype.ua=function(){return!0};
|
||||
function Bc(a,b,c,d){if(d)a.L("Unable to load system ROM (error "+d+": "+b+")");else{Da(a.Fb,b,c);var f;if("["==c.charAt(0)||"{"==c.charAt(0))try{var e,h,g=eval("("+c+")");if(e=g.bytes)a.b=e;else if(e=g.words)for(a.b=Array(2*e.length),h=f=0;f<e.length;f++)a.b[h++]=e[f]&255,a.b[h++]=e[f]>>8&255;else if(e=g.data)for(a.b=Array(4*e.length),h=f=0;f<e.length;f++)a.b[h++]=e[f]&255,a.b[h++]=e[f]>>8&255,a.b[h++]=e[f]>>16&255,a.b[h++]=e[f]>>24&255;else a.b=g;a.i=g.symbols;if(!a.b.length){q("Empty ROM: "+b);
|
||||
return}if(1==a.b.length){q(a.b[0]);return}}catch(k){a.L("ROM data error: "+k.message);return}else for(b=c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.b=Array(b.length),f=0;f<b.length;f++)a.b[f]=aa(b[f]);Cc(a)}}
|
||||
function Cc(a){if(!Ha(a))if(!a.h)C(a);else if(a.b&&a.w){a.f||(a.f=a.b.length);if(a.b.length!=a.f){var b="ROM size ("+n(a.b.length,8,!0)+") does not match specified size ("+n(a.f,8,!0)+")";a.j.error=!0;a.L(b)}else{b=a.l;if(Ua(a.w,b,a.f,a.u?1:ob)){var c;for(c=0;c<a.b.length;c++){var d=a.w,f=b+c;d.b[(f&d.i)>>>d.f].Wb(f&d.h,a.b[c]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.g?b.push(a.g):null!=a.g&&a.g.length&&(b=a.g);for(c=0;c<b.length;c++){for(var e=a,d=b[c],f=e.w,h=e.f,g=[],k=e.l>>>f.f;0<h&&
|
||||
k<f.b.length;)g.push(f.b[k++]),h-=f.g;f=e.w;e=e.f;h=0;for(d>>>=f.f;0<e&&d<f.b.length;){k=g[h++];if(!k)break;f.b[d++]=k;e-=f.g}}delete a.b}}C(a)}}u(function(){for(var a=B(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Ac(d);Fa(d,c)}});function Dc(a){v.call(this,"RAM",a,Dc);this.g=a.addr;this.f=a.size;this.b=!1}x(Dc);m=Dc.prototype;m.Ha=function(a,b,c,d){this.w=b;this.c=c;this.I=d;C(this)};m.va=function(a,b){b||this.reset();return!0};m.ua=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.b&&this.f&&Ua(this.w,this.g,this.f,1)&&(this.b=!0);this.b||q("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};u(function(){for(var a=B(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Dc(d);Fa(d,c)}});function Ec(a){v.call(this,"Keyboard",a,Ec);C(this)}x(Ec);Ec.prototype.ba=function(){return!1};Ec.prototype.Ha=function(a,b,c,d){this.v=a;this.c=c;this.I=d;this.ya=null};
|
||||
u(function(){for(var a=B(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Ec(d);Fa(d,c)}});
|
||||
function Fc(a,b,c){v.call(this,"Computer",a,Fc);this.j.M=!1;Gc(this,b);this.K=zb(this,"autoPower",a);this.g=0;this.ca=a.busWidth||a.buswidth;this.b=Hc;this.v=null;this.l=this.W=!1;this.url=zb(this,"url")||"";(Math.random()+.1).toString(36);this.f=Ic(this);if(this.c=Ea("CPU",this.id)){this.I=Ea("Debugger",this.id);this.w=new Oa({id:this.Fb+".bus",busWidth:this.ca},this.c,this.I);var d,f=y(this.id);if((this.h=Ea("Panel",this.id))&&this.h.zb)for(b=0;b<f.length;b++)d=f[b],d.L=this.h.L,d.Y=this.h.Y,d.zb=
|
||||
this.h.zb;this.Y("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.Y("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<f.length;b++)d=f[b],d.Ha&&d.Ha(this,this.w,this.c,this.I);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.u=d:this.b=parseInt(d,10));var e;if(a=zb(this,"state")||(e=!0,a.state))b=this.N=a,e||(this.l=!0,this.b=Hc),this.b&&(this.J=
|
||||
new M(this,"1.30.0"),Jc(this.J)?b=null:delete this.J);!b&&this.b&&(b=Kc(this))&&(this.l=!0);if(b){var h=this;p(b,null,!0,function(a,b,c){c?(h.u=null,h.l=!1,h.L("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(h.v=b,h.W=!0);C(h)})}else C(this);this.B.power||(this.K=!0);!c&&this.K&&Lc(this,this.cb)}else q("Unable to find CPU component")}x(Fc);var Hc=0;
|
||||
function Gc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){q(d.message+" ("+c+")")}}a.X=b}function zb(a,b,c){var d=b.toLowerCase(),d=xa[b]||xa[d];void 0===d&&a.X&&(d=a.X[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Lc(a,b,c){for(var d=y(a.id),f=0;f<=d.length;f++){var e=f<d.length?d[f]:a;if(!Ha(e)){Ha(e,function(){Lc(a,b,c)});return}}b.call(a,c)}
|
||||
function Mc(a,b){var c=new M(a,"1.30.0","validate");if(Jc(c)&&Nc(c)){var d=Oc(c,"timestamp"),f=b?Oc(b,"timestamp"):"unknown";d!=f&&(a.L("Machine state may be out-of-date\n("+d+" vs. "+f+")\nCheck your browser's local storage limits"),b||c.clear())}}m=Fc.prototype;
|
||||
m.cb=function(a){void 0===a&&(a=this.b||(this.v?1:Hc));if(!this.g){this.g++;var b=!1,c=!1;this.R=!1;var d=this.J||new M(this,"1.30.0");if(-1==a)b=!0;else if(a>Hc){if(Jc(d,this.v)){this.i=new M(this,"1.30.0","failsafe");Jc(this.i)&&(Pc(this,d),a=2,Qc(this.i));N(this.i,"timestamp",ia());Rc(this.i);var f=this.b&&!this.l;if(1==a||ja("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=Nc(d)){var e=Oc(d,"code"),h=Oc(d,"data");e&&("ok"==e?Jc(d,h):("error"==e&&
|
||||
"no machine state"!=h?(this.L("Error: "+h),"unable to verify user"==h&&(na("user",""),this.f=null)):this.Y(e+": "+h),Qc(d),Jc(d)?(c=Nc(d),f=!0):c=!1))}f&&Mc(this,c?d:null)}else 2==a&&d.clear()}else Mc(this);delete this.v;delete this.J}f=y(this.id);for(e=0;e<f.length;e++)h=f[e],h!==this&&h!=this.c&&(c=Sc(this,h,d,b,c));b=[d,a,c];-1!=a?Lc(this,this.Ob,b):this.Ob(b)}};
|
||||
function Sc(a,b,c,d,f){if(!b.j.M){b.j.M=!0;if(b.va){var e=null;f&&((e=Oc(c,b.id))||(e=Oc(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof e&&(e=null);!b.va(e,d)&&e&&(q("Unable to restore state for "+b.type),a.N&&!a.W?(c.clear(),a.b=Hc,window&&window.location.reload()):a.R=!0,b.va(null),f=!1)}if(!d&&b.Hb)for(a=b.Hb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return f}
|
||||
m.Ob=function(a){var b=a[0],c=0>a[1];a=a[2];this.da=!0;this.j.M=!0;var d=this.B.power;d&&(d.textContent="Shutdown");this.c&&(Sc(this,this.c,b,c,a),this.c.Xa());this.R&&(Pc(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.g=0};
|
||||
function Pc(a,b){if(ja("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var c=a.f||"",d=b.toString(),f={app:"PDP11js",ver:"1.30.0"};f.url=a.url;f.user=c;f.type="bug";f.data=d;p("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function Tc(a,b,c){var d,f="none";if(a.g)return null;a.g--;var e=new M(a,"1.30.0"),h=new M(a,"1.30.0","validate"),g=ia();N(h,"timestamp",g);N(e,"timestamp",g);N(e,"version","1.30.0");N(e,"url",window?window.location.href:null);N(e,"browser",window?window.navigator.userAgent:"");a.c&&a.c.ua&&(c&&Eb(a.c),d=a.c.ua(b,c),"object"===typeof d&&N(e,a.c.id,d),c&&(a.c.j.M=!1,!1===d&&(f=null)));for(var g=y(a.id),k=0;k<g.length;k++){var l=g[k];l.j.M&&(l.ua&&(d=l.ua(b,c),"object"===typeof d&&N(e,l.id,d)),c&&(l.j.M=
|
||||
!1,!1===d&&(f=null)))}f&&(c?(g=d=!1,b?(a.f&&Uc(a,a.f,e.toString()),Rc(h)&&Rc(e)||(f=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&e.clear(g)):f=e.toString());c&&(a.j.M=!1,b=a.B.power)&&(b.textContent="Power");a.g=0;return f}m.reset=function(){this.w&&this.w.reset&&this.w.reset();for(var a=y(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.w&&c.reset&&c.reset()}};m.start=function(a,b){for(var c=y(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
|
||||
m.stop=function(a,b){for(var c=y(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.stop&&f.stop(a,b)}};
|
||||
m.ba=function(a,b,c){var d=this;switch(b){case "power":return this.B[b]=c,c.onclick=function(){d.g||(d.j.M?Tc(d,!1,!0):Lc(d,d.cb))},!0;case "reset":return this.B[b]=c,c.onclick=function(){if(d.j.M&&!d.g)if(d.b&&!d.u){var a=ja("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Tc(d,a,!0);!a&&d.N?window&&window.location.reload():d.cb(Hc)}else d.reset(),d.c&&d.c.Xa()},!0;case "save":if(da()){c.parentNode.removeChild(c);break}this.B[b]=
|
||||
c;c.onclick=function(){var a=Ic(d,!0);if(a){var b=!!(d.b&&!d.u||d.N),c=Tc(d,b);b?Uc(d,a,c):d.L("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function Ic(a,b){var c=a.f;c||(c=ma("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=Vc(a,c))||a.L("The user ID is invalid."))):b&&a.L("Browser local storage is not available"));return c}
|
||||
function Vc(a,b){a.f=null;var c=p(ea()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(na("user",c.data),a.f=c.data)}catch(f){q(f.message+" ("+d+")")}return a.f}function Kc(a){var b=null;a.f&&(b=ea()+"/api/v1/user?req=load&user="+a.f+"&state="+Wc(a,"1.30.0"));return b}
|
||||
function Uc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Wc(a,"1.30.0");d.data=c;b=p(ea()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var f=d.indexOf("\n");0<f&&(d=d.substr(0,f));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.L("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.L(c),na("user",""),a.f=null)}}
|
||||
m.La=function(a){this.c&&this.c.La(a);this.h&&this.h.La(a)};u(function(){for(var a=B(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=B(c,"pdp11","computer"),f=0;f<c.length;f++){var e=c[f],h=A(e),h=new Fc(h,d,!0);Fa(h,e);h.K&&Lc(h,h.cb)}});r.show.push(function(){for(var a=B(document,"pdp11","computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=Ea("Computer",c.id))&&c.da&&!c.j.M&&c.cb(-1)}});
|
||||
r.exit.push(function(){for(var a=B(document,"pdp11","computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=Ea("Computer",c.id))&&c.j.M&&Tc(c,!(!c.b||c.u),!0)}});function M(a,b,c){this.id=a.id;this.key=Wc(a,b,c);this.I=a.I;Qc(this,a.cc)}function Wc(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
M.prototype={constructor:M,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){Qc(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(f){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(f){}b.splice(c,1);c=0}}};
|
||||
function Qc(a,b){a[a.id]={};b&&N(a,"parms",b);a.c=!1}function Rc(a){var b=!0;if(la()){var c=JSON.stringify(a[a.id]);na(a.key,c)||(q("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Nc(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){q(c.message||c),b=!1}return b}function Jc(a,b){return b?(a[a.id]=b,a.c=!0):a.c?!0:la()&&(b=ma(a.key))?(a[a.id]=b,a.c=!0):!1}function Oc(a,b){return a[a.id][b]||null}function N(a,b,c){try{a[a.id][b]=c}catch(d){}}var Xc=0;
|
||||
function Yc(a,b,c,d,f,e){f("Loading "+a+"...");p(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),e(g,null)):Zc(g,a,b,c,d,f,e)})}
|
||||
function Zc(a,b,c,d,f,e,h){function g(a,e){if(e)h(e,null);else{if(c){Da(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}f||(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{f||(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(z){g=null,a=z.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?$c(a,e,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function $c(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");p(f,null,!0,function(e,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(e=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,t=/( [a-z]+=)(['"])(.*?)\2/g;l=t.exec(e);)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{c(a,"missing <"+d[1]+"> in "+f);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);$c(a,b,c)}})}else c(a,null)}
|
||||
function ad(a,b,c,d){function f(a){if(void 0===g){var b=h&&B(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ga(a))}function e(a){f("Error: "+a);k&&(--Xc||ua(!0));k=!1}var h,g,k=!0;Xc++;Ca[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var t=document.head||document.getElementsByTagName("head")[0],z=document.createElement("style");z.type="text/css";z.styleSheet?z.styleSheet.cssText=l:z.appendChild(document.createTextNode(l));t.appendChild(z)}c||
|
||||
(c="/versions/pdp11/1.30.0/components.xsl");l=function(d,g){g?Yc(c,null,null,!1,f,function(d,k){if(k)if(Da(a,c,d),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--Xc||ua(!0)):e("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),--Xc||ua(!0)):e("invalid machine element: "+
|
||||
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(d)}):e(d)};"<"!=b.charAt(0)?Yc(b,a,d,!0,f,l):Zc(b,null,a,d,!1,f,l)}else e("missing machine element: "+a)}catch(P){e(P.message)}return k}window.embedPDP11=function(a,b,c,d){ua(!1);return ad(a,b,c,d)};window.enableEvents=ua;window.sendEvent=va;})();
|
||||
|
|
|
|||
Loading…
Reference in a new issue