Fixed some sloppy coding (my bad)
This commit is contained in:
parent
9d045008a3
commit
b5a7525ad2
5 changed files with 449 additions and 329 deletions
|
|
@ -34,9 +34,7 @@
|
|||
"use strict";
|
||||
|
||||
if (NODE) {
|
||||
var str = require("../../shared/lib/strlib");
|
||||
var PDP11 = require("./defines");
|
||||
var MessagesPDP11 = require("./messages");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -69,6 +67,21 @@ PDP11.fnBIC = function(src, dst)
|
|||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* fnBICB(dst, src)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} src
|
||||
* @param {number} dst
|
||||
* @return {number} (~src & dst)
|
||||
*/
|
||||
PDP11.fnBICB = function(src, dst)
|
||||
{
|
||||
var result = ~src & dst;
|
||||
this.updateNZFlags(result << 8);
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* fnBIS(dst, src)
|
||||
*
|
||||
|
|
@ -84,6 +97,21 @@ PDP11.fnBIS = function(src, dst)
|
|||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* fnBISB(dst, src)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} src
|
||||
* @param {number} dst
|
||||
* @return {number} (src | dst)
|
||||
*/
|
||||
PDP11.fnBISB = function(src, dst)
|
||||
{
|
||||
var result = src | dst;
|
||||
this.updateNZFlags(result << 8);
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* fnSUB(dst, src)
|
||||
*
|
||||
|
|
@ -99,28 +127,6 @@ PDP11.fnSUB = function(src, dst)
|
|||
return result & 0xffff;
|
||||
};
|
||||
|
||||
/**
|
||||
* op1170(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op1170 = function(opCode)
|
||||
{
|
||||
PDP11.aOpsF000_1170[opCode >> 12].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op0XXX_1170(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op0XXX_1170 = function(opCode)
|
||||
{
|
||||
// PDP11.aOpsF000_1170[opCode >> 12].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* opADD(opCode)
|
||||
*
|
||||
|
|
@ -145,6 +151,18 @@ PDP11.opBIC = function(opCode)
|
|||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opBICB(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.opBICB = function(opCode)
|
||||
{
|
||||
this.updateByteByMode(opCode, this.readByteByMode(opCode >> PDP11.SRCMODE.SHIFT), PDP11.fnBICB);
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opBIS(opCode)
|
||||
*
|
||||
|
|
@ -157,6 +175,18 @@ PDP11.opBIS = function(opCode)
|
|||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opBISB(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.opBISB = function(opCode)
|
||||
{
|
||||
this.updateByteByMode(opCode, this.readByteByMode(opCode >> PDP11.SRCMODE.SHIFT), PDP11.fnBISB);
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opBIT(opCode)
|
||||
*
|
||||
|
|
@ -169,6 +199,18 @@ PDP11.opBIT = function(opCode)
|
|||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opBITB(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.opBITB = function(opCode)
|
||||
{
|
||||
this.updateNZFlags((this.readByteByMode(opCode >> PDP11.SRCMODE.SHIFT) & this.readByteByMode(opCode)) << 8);
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opCMP(opCode)
|
||||
*
|
||||
|
|
@ -188,6 +230,25 @@ PDP11.opCMP = function(opCode)
|
|||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opCMPB(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.opCMPB = function(opCode)
|
||||
{
|
||||
var src = this.readByteByMode(opCode >> PDP11.SRCMODE.SHIFT) << 8;
|
||||
var dst = this.readByteByMode(opCode) << 8;
|
||||
var result = src - dst;
|
||||
/*
|
||||
* NOTE: CMP calculates (src - dst) rather than (dst - src), so when we call updateSubFlags(),
|
||||
* we must reverse the order of the src and dst parameters.
|
||||
*/
|
||||
this.updateSubFlags(result, dst, src);
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* opMOV(opCode)
|
||||
*
|
||||
|
|
@ -212,7 +273,7 @@ PDP11.opMOVB = function(opCode)
|
|||
/*
|
||||
* 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));
|
||||
this.updateNZFlags(this.writeByteByMode(opCode, (data & 0x80)? data | 0xff00 : data) << 8);
|
||||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
|
|
@ -239,6 +300,28 @@ PDP11.opSUB = function(opCode)
|
|||
this.nStepCycles -= 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* op1170(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op1170 = function(opCode)
|
||||
{
|
||||
PDP11.aOpsF000_1170[opCode >> 12].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op0XXX_1170(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op0XXX_1170 = function(opCode)
|
||||
{
|
||||
// PDP11.aOpsF000_1170[opCode >> 12].call(this, opCode);
|
||||
};
|
||||
|
||||
PDP11.aOpsF000_1170 = [
|
||||
PDP11.op0XXX_1170,
|
||||
PDP11.opMOV, // MOV 01SSDD
|
||||
|
|
@ -250,10 +333,10 @@ PDP11.aOpsF000_1170 = [
|
|||
PDP11.opNOP, // 0x7XXX
|
||||
PDP11.opNOP, // 0x8XXX
|
||||
PDP11.opMOVB, // MOVB 11SSDD
|
||||
PDP11.opNOP, // 0xAXXX
|
||||
PDP11.opNOP, // 0xBXXX
|
||||
PDP11.opNOP, // 0xCXXX
|
||||
PDP11.opNOP, // 0xDXXX
|
||||
PDP11.opCMPB, // CMPB 12SSDD
|
||||
PDP11.opBITB, // BITB 13SSDD
|
||||
PDP11.opBICB, // BICB 14SSDD
|
||||
PDP11.opBISB, // BISB 15SSDD
|
||||
PDP11.opSUB, // SUB 16SSDD
|
||||
PDP11.opNOP // 0xFXXX
|
||||
];
|
||||
|
|
|
|||
|
|
@ -639,7 +639,7 @@ CPUStatePDP11.prototype.setPSW = function(newPSW)
|
|||
*/
|
||||
CPUStatePDP11.prototype.updateNZFlags = function(result)
|
||||
{
|
||||
if (!this.opFlags & PDP11.OPFLAG.SKIP_FLAGS) {
|
||||
if (!(this.opFlags & PDP11.OPFLAG.SKIP_FLAGS)) {
|
||||
this.flagN = this.flagZ = result;
|
||||
this.flagV = 0;
|
||||
}
|
||||
|
|
@ -655,7 +655,7 @@ CPUStatePDP11.prototype.updateNZFlags = function(result)
|
|||
*/
|
||||
CPUStatePDP11.prototype.updateAddFlags = function(result, src, dst)
|
||||
{
|
||||
if (!this.opFlags & PDP11.OPFLAG.SKIP_FLAGS) {
|
||||
if (!(this.opFlags & PDP11.OPFLAG.SKIP_FLAGS)) {
|
||||
this.flagN = this.flagZ = this.flagC = result;
|
||||
this.flagV = (src ^ result) & (dst ^ result);
|
||||
}
|
||||
|
|
@ -674,7 +674,7 @@ CPUStatePDP11.prototype.updateAddFlags = function(result, src, dst)
|
|||
*/
|
||||
CPUStatePDP11.prototype.updateSubFlags = function(result, src, dst)
|
||||
{
|
||||
if (!this.opFlags & PDP11.OPFLAG.SKIP_FLAGS) {
|
||||
if (!(this.opFlags & PDP11.OPFLAG.SKIP_FLAGS)) {
|
||||
this.flagN = this.flagZ = this.flagC = result;
|
||||
this.flagV = (src ^ dst) & (dst ^ result);
|
||||
}
|
||||
|
|
@ -1292,6 +1292,33 @@ CPUStatePDP11.prototype.updateWordByMode = function(addressMode, src, fnOp)
|
|||
return data;
|
||||
};
|
||||
|
||||
/**
|
||||
* updateByteByMode(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
|
||||
* @param {function(number,number)} fnOp
|
||||
* @return {number}
|
||||
*/
|
||||
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]));
|
||||
} else {
|
||||
var addr = this.getAddrByMode(addressMode, PDP11.ACCESS.UPDATE_BYTE);
|
||||
this.writeByteByAddr(addr, (data = fnOp.call(this, src, this.readByteByAddr(addr))));
|
||||
}
|
||||
return data;
|
||||
};
|
||||
|
||||
/**
|
||||
* writeWordByMode(addressMode, data)
|
||||
*
|
||||
|
|
@ -1622,49 +1649,49 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
|
|||
// }
|
||||
// }
|
||||
// break;
|
||||
case 0xA000: /*0120000*/ // CMPB 12SSDD
|
||||
//LOG_INSTRUCTION(instruction, 2, "CMPB");
|
||||
if ((src = this.readByteByMode(instruction >> 6)) >= 0) {
|
||||
if ((dst = this.readByteByMode(instruction)) >= 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(instruction, 2, "BITB");
|
||||
if ((src = this.readByteByMode(instruction >> 6)) >= 0) {
|
||||
if ((dst = this.readByteByMode(instruction)) >= 0) {
|
||||
this.flagN = this.flagZ = (src & dst) << 8;
|
||||
this.flagV = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0xC000: /*0140000*/ // BICB 14SSDD
|
||||
//LOG_INSTRUCTION(instruction, 2, "BICB");
|
||||
if ((src = this.readByteByMode(instruction >> 6)) >= 0) {
|
||||
if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(instruction, 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(instruction, 2, "BISB");
|
||||
if ((src = this.readByteByMode(instruction >> 6)) >= 0) {
|
||||
if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(instruction, 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 0xA000: /*0120000*/ // CMPB 12SSDD
|
||||
// //LOG_INSTRUCTION(instruction, 2, "CMPB");
|
||||
// if ((src = this.readByteByMode(instruction >> 6)) >= 0) {
|
||||
// if ((dst = this.readByteByMode(instruction)) >= 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(instruction, 2, "BITB");
|
||||
// if ((src = this.readByteByMode(instruction >> 6)) >= 0) {
|
||||
// if ((dst = this.readByteByMode(instruction)) >= 0) {
|
||||
// this.flagN = this.flagZ = (src & dst) << 8;
|
||||
// this.flagV = 0;
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case 0xC000: /*0140000*/ // BICB 14SSDD
|
||||
// //LOG_INSTRUCTION(instruction, 2, "BICB");
|
||||
// if ((src = this.readByteByMode(instruction >> 6)) >= 0) {
|
||||
// if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(instruction, 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(instruction, 2, "BISB");
|
||||
// if ((src = this.readByteByMode(instruction >> 6)) >= 0) {
|
||||
// if ((dst = this.readByteByAddr(dstAddr = this.getAddrByMode(instruction, 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(instruction, 2, "SUB");
|
||||
// if ((src = this.readWordByMode(instruction >> 6)) >= 0) {
|
||||
|
|
|
|||
|
|
@ -163,12 +163,15 @@ var PDP11 = {
|
|||
INTR: 0x00ff, // mask for 8 bits, representing interrupt levels 0-7
|
||||
HALT: 0x0100 // halt requested; see opHLT()
|
||||
},
|
||||
/*
|
||||
* Internal operation state flags
|
||||
*/
|
||||
OPFLAG: {
|
||||
TRAP_TF: 0x10, // aka PDP11.PSW.TF
|
||||
TRAP_MMU: 0x20,
|
||||
TRAP_SP: 0x40,
|
||||
TRAP_MASK: 0x70,
|
||||
SKIP_FLAGS: 0x80
|
||||
SKIP_FLAGS: 0x80 // when set, all updateXXXFlags() functions must leave flags unchanged
|
||||
},
|
||||
/*
|
||||
* Opcode reg (opcode bits 2-0)
|
||||
|
|
@ -198,6 +201,9 @@ var PDP11 = {
|
|||
MASK: 0x0FC0,
|
||||
SHIFT: 6
|
||||
},
|
||||
/*
|
||||
* PDP-11 trap vectors
|
||||
*/
|
||||
TRAP: {
|
||||
UNDEFINED: 0x00, // 000 (reserved)
|
||||
BUS_ERROR: 0x04, // 004 illegal instructions, bus errors, stack limit, illegal internal address, microbreak
|
||||
|
|
@ -210,6 +216,9 @@ var PDP11 = {
|
|||
PIRQ: 0xA0, // 240 PIRQ, program interrupt request
|
||||
MMU_FAULT: 0xA8 // 250 MMU aborts and traps
|
||||
},
|
||||
/*
|
||||
* Internal memory access flags
|
||||
*/
|
||||
ACCESS: {
|
||||
WORD: 0x0,
|
||||
BYTE: 0x1,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
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 la={"&":"&","<":"<",">":">",'"':""","'":"'"};function ma(a){return a.replace(/[&<>"']/g,function(a){return la[a]})}function na(a,b){return(a+" ").slice(0,b)}
|
||||
function oa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function 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 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 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 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 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 Aa(){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}
|
||||
|
|
@ -11,31 +11,31 @@ function Fa(a,b){function d(){b(100===c)&&(f=setTimeout(d,c),c=100)}var c=0,f=nu
|
|||
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])}Pa("onload",function(){Ha=!0;Ra(Ga.init)});Pa("onpageshow",function(){Ia=!0;Ra(Ga.show)});Pa(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.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.j={ready:!1,nb:!1,dc:!1,fa:!1,error:!1};this.Wb=null;this.j.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=z(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 z(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}
|
||||
function w(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 $a=window.PCjs.Machines||(window.PCjs.Machines={}),v=window.PCjs.Components||(window.PCjs.Components=[])}else $a={},v=[];function ab(a,b,d){$a[a]&&b&&($a[a][b]=d)}function bb(a){var b,d=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<v.length;b++){var c=v[b];a&&c.id.indexOf(a)||d.push(c)}return d}
|
||||
function cb(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 z(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(d){t(d.message+" ("+a+")")}return b}
|
||||
function db(a,b){for(var d=A(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=z(h))&&g.binding&&a.ua(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||
function A(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.j.fa=!0},Ma:function(a,b){b&&(this.j.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.j.dc)return a.j.nb&&(a.j.nb=!1),a.j.dc=!1;if(a.j.error)return a.g(a.toString()+" error"),!1;a.j.nb=b;return a.j.nb}function hb(a,b){a.j.nb&&(b?a.j.dc=!0:void 0===b&&a.g(a.toString()+" busy"));return a.j.nb}function A(a){if(!a.j.error&&(a.j.ready=!0,a.j.ready)){var b=a.Wb;a.Wb=null;b&&b()}}function ib(a,b){b&&(a.j.ready?b():a.Wb=b);return a.j.ready}function jb(a,b){a.j.error=!0;a.oa(b)}
|
||||
var kb="undefined"!==typeof ArrayBuffer,lb=2,E=4,F=6,lb=0|lb,wb=1|lb,E=0|E,xb=1|E,F=0|F,G=1|F,yb={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 zb(a){u.call(this,"Panel",a,zb)}$a(zb);m=zb.prototype;m.ua=function(a,b,d,c){return this.i&&this.i.ua(a,b,d,c)||this.f&&this.f.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.F=b;this.f=d;this.H=c};m.Na=function(a,b){b||Ab();return!0};m.Ma=function(){return!0};m.xa=function(){};function Ab(){for(var a=!1,b=z(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 zb(f));eb(e,c);a&&A(e)}}Qa(Ab);
|
||||
function Bb(a,b,d){u.call(this,"Bus",a,Bb);this.f=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.F=this.Aa-1;this.G=this.I/this.Aa|0;this.u=this.G-1;this.Ta=[];this.J=null;this.Gb=this.Dc;a=new H;Cb(a,this.H);this.R=Array(this.G);for(b=0;b<this.G;b++)this.R[b]=a;this.Cb=Array(4);this.Cb[0]=Db;this.Cb[1]=Eb;this.Cb[2]=Fb;this.Cb[3]=Gb;this.P=this.I-8192;Hb(this,
|
||||
this.P,8192,Ib,this);A(this)}$a(Bb);function Db(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)}
|
||||
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.j.fa=!0},Ma:function(a,b){b&&(this.j.fa=!1);return!0}};function eb(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 fb(a,b){if(a.j.dc)return a.j.nb&&(a.j.nb=!1),a.j.dc=!1;if(a.j.error)return a.g(a.toString()+" error"),!1;a.j.nb=b;return a.j.nb}function gb(a,b){a.j.nb&&(b?a.j.dc=!0:void 0===b&&a.g(a.toString()+" busy"));return a.j.nb}function E(a){if(!a.j.error&&(a.j.ready=!0,a.j.ready)){var b=a.Wb;a.Wb=null;b&&b()}}function hb(a,b){b&&(a.j.ready?b():a.Wb=b);return a.j.ready}function ib(a,b){a.j.error=!0;a.oa(b)}
|
||||
var jb="undefined"!==typeof ArrayBuffer,kb=2,F=4,G=6,kb=0|kb,vb=1|kb,F=0|F,wb=1|F,G=0|G,xb=1|G,yb={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 zb(a){u.call(this,"Panel",a,zb)}w(zb);m=zb.prototype;m.ua=function(a,b,d,c){return this.i&&this.i.ua(a,b,d,c)||this.f&&this.f.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.f=d;this.H=c};m.Na=function(a,b){b||Ab();return!0};m.Ma=function(){return!0};m.xa=function(){};function Ab(){for(var a=!1,b=A(document,"pdp11","panel"),d=0;d<b.length;d++){var c=b[d],f=z(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 zb(f));db(e,c);a&&E(e)}}Qa(Ab);
|
||||
function Bb(a,b,d){u.call(this,"Bus",a,Bb);this.f=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.u=this.C-1;this.Ta=[];this.J=null;this.Gb=this.Dc;a=new H;Cb(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]=Db;this.Cb[1]=Eb;this.Cb[2]=Fb;this.Cb[3]=Gb;this.P=this.I-8192;Hb(this,
|
||||
this.P,8192,Ib,this);E(this)}w(Bb);function Db(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 Eb(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 Fb(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 Gb(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=Bb.prototype;m.reset=function(){this.J&&this.J()};m.Dc=function(){return 0};m.Na=function(a,b){b||this.reset();return!0};
|
||||
function Hb(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.C)return k.Ub+=k.C-e,k.C=e,!0;if(e>=k.C+k.Ub){n=k.size-(e-l);n>h&&(n=h);k.Ub=e-k.C+n;e=l+a.Aa;h-=n;g++;continue}}return Jb(1,e,h)}e=new H(e,n,a.Aa,c,f);Cb(e,a.H,k);a.R[g++]=e;e=l+a.Aa;h-=n}return 0>=h?(a.status(Math.floor(d/1024)+"Kb "+Kb[c]+" at "+r(b,8,!0)),!0):Jb(2,b,d)}
|
||||
m.Hb=function(a){return this.R[(a&this.i)>>>this.X].sb(a&this.F,a)};m.Ha=function(a){var b=a&this.F,d=(a&this.i)>>>this.X;return b!=this.F?this.R[d].wc(b,a):this.R[d++].sb(b,a)|this.R[d&this.u].sb(0,a+1)<<8};function Lb(a,b){var d=b&a.F,c=(b&a.i)>>>a.X;return d!=a.F?a.R[c].hc(d,b):a.R[c++].Ob(d,b)|a.R[c&a.u].Ob(0,b+1)<<8}m.bc=function(a,b){this.R[(a&this.i)>>>this.X].xb(a&this.F,b&255,a)};
|
||||
m.jc=function(a,b){var d=a&this.F,c=(a&this.i)>>>this.X;d!=this.F?this.R[c].Cc(d,b&65535,a):(this.R[c++].xb(d,b&255,a),this.R[c&this.u].xb(0,b>>8&255,a+1))};function Jb(a,b,d){t("Memory block error ("+a+": "+r(b)+","+r(d)+")");return!1}
|
||||
function Mb(a){u.call(this,"Device",a,Mb);this.P=a.name;this.N={gc:[],Ia:0,qa:128,H:127,Jc:0};this.i={data:0,gd:0,pb:20,dd:0};this.u={Ib:0,K:0};this.G={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.I={K:129,Fb: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={f:[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],F:[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}}$a(Mb);
|
||||
function Hb(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.Ub+=k.A-e,k.A=e,!0;if(e>=k.A+k.Ub){n=k.size-(e-l);n>h&&(n=h);k.Ub=e-k.A+n;e=l+a.Aa;h-=n;g++;continue}}return Jb(1,e,h)}e=new H(e,n,a.Aa,c,f);Cb(e,a.H,k);a.R[g++]=e;e=l+a.Aa;h-=n}return 0>=h?(a.status(Math.floor(d/1024)+"Kb "+Kb[c]+" at "+r(b,8,!0)),!0):Jb(2,b,d)}
|
||||
m.Hb=function(a){return this.R[(a&this.i)>>>this.X].sb(a&this.G,a)};m.Ha=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.u].sb(0,a+1)<<8};function Lb(a,b){var d=b&a.G,c=(b&a.i)>>>a.X;return d!=a.G?a.R[c].hc(d,b):a.R[c++].Ob(d,b)|a.R[c&a.u].Ob(0,b+1)<<8}m.bc=function(a,b){this.R[(a&this.i)>>>this.X].xb(a&this.G,b&255,a)};
|
||||
m.jc=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.u].xb(0,b>>8&255,a+1))};function Jb(a,b,d){t("Memory block error ("+a+": "+r(b)+","+r(d)+")");return!1}
|
||||
function Mb(a){u.call(this,"Device",a,Mb);this.P=a.name;this.N={gc:[],Ia:0,qa:128,H:127,Jc:0};this.i={data:0,gd:0,pb:20,dd:0};this.u={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.I={K:129,Fb: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={f:[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],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],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}}w(Mb);
|
||||
var Nb=[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=Mb.prototype;
|
||||
m.Xa=function(a,b,d,c){this.F=b;this.f=d;this.H=c;switch(this.P){default:a=Ob;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}A(this)};m.Uc=function(){return Pb(this.f)};
|
||||
m.fd=function(a){ac(this.f,a&-1809|Pb(this.f)&1808);this.f.V|=128};
|
||||
function bc(a){var b=a.G,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;cc(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.f,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.G;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.f,20,160,144,function(){e.S=e.S&65534|128;return!!(e.S&64)})};
|
||||
m.Xa=function(a,b,d,c){this.G=b;this.f=d;this.H=c;switch(this.P){default:a=Ob;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}E(this)};m.Uc=function(){return $b(this.f)};
|
||||
m.fd=function(a){ac(this.f,a&-1809|$b(this.f)&1808);this.f.W|=128};
|
||||
function bc(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;cc(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.f,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.f,20,160,144,function(){e.S=e.S&65534|128;return!!(e.S&64)})};
|
||||
function dc(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.Fb;f=65536-b.Ya&65535;cc(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.Fb;f=65536-b.Ya&65535;a.$b(b.na[e],d,c,f);return}I(a.f,20,160,112,function(){b.K|=129;return!!(b.K&64)})}
|
||||
m.Wc=function(a,b,d,c,f){var e=this.I;e.Fb=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}I(this.f,20,160,112,function(){e.K|=129;return!!(e.K&64)})};function ec(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}
|
||||
|
|
@ -44,168 +44,168 @@ function fc(a,b){var d=a.J,c,f,e;d.U&=-16513;d.Ba&=-2049;d.pa[b]&=-1153;I(a.f,-1
|
|||
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.f,20,160,172,function(){e.pa[b.La]|=128;e.U=e.U&65534|128;return!!(e.U&64)})};m.Pc=function(){this.u.K|=128;this.u.K&64&&I(this.f,0,192,64)};
|
||||
function gc(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.f,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]){gc(this,this.$b,a,b,d,c);return}for(f=0;f<a.Va&&0<c;f++){if(0>L(this.f,a.Rc?hc(this.f,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 cc(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.f,b.Rc?hc(a.f,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.i.pb=this.i.pb&-120|20;this.N.Ia=0;this.N.qa=128;this.u.K=0;this.G.S=128;this.I.K=128;ec(this)};
|
||||
function cc(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.f,b.Rc?hc(a.f,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.i.pb=this.i.pb&-120|20;this.N.Ia=0;this.N.qa=128;this.u.K=0;this.C.S=128;this.I.K=128;ec(this)};
|
||||
m.Ec=function(a,b,d){var c,f,e=this.f;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.b[6]=b),c=e.b[6]):(0<=b&&(e.sa[3]=b),c=e.sa[3]):e.M>>14&0?(0<=b&&(e.b[6]=b),c=e.b[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.b[f]=b),c=e.b[f]):(0<=b&&(e.Za[f]=
|
||||
b),c=e.Za[f]),c;case 4194246:return a&1?(0<=b&&(e.b[7]=b),c=e.b[7]):e.M>>14&0?(0<=b&&(e.b[6]=b),c=e.b[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.b[f]=b),c=e.b[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.u;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.ba=e.ba&62337|e.Kb<<5|e.Xb<<1;0>b?c=e.ba:(c=J(this,e.ba,a,b,d),0<=c&&(e.ba=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?lb|E:E):(e.Jb=0,f=4),this.i.pb=this.i.pb&-8|f));break;case 4194168:0>b?c=this.i.dd&65535:(c=J(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,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,
|
||||
e.Da;c&65280&&(c=(c<<8|c>>8)&65535);break;case 4194170:e.ba=e.ba&62337|e.Kb<<5|e.Xb<<1;0>b?c=e.ba:(c=J(this,e.ba,a,b,d),0<=c&&(e.ba=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?kb|F:F):(e.Jb=0,f=4),this.i.pb=this.i.pb&-8|f));break;case 4194168:0>b?c=this.i.dd&65535:(c=J(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,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.G;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&&bc(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,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&&bc(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?fc(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&&ec(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.I;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||dc(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.ca,
|
||||
a,b,d);0<=c&&(f.ca=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.i.pb=this.i.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=Nb[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 Ob={};Ob[4194302]=[null,null,Mb.prototype.Uc,Mb.prototype.fd];Qa(function(){for(var a=z(document,"pdp11","device"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Mb(c);eb(c,d)}});var ic;if(kb){var jc=new ArrayBuffer(2);(new DataView(jc)).setUint16(0,256,!0);ic=256===(new Uint16Array(jc))[0]}else ic=!1;var kc=ic;
|
||||
function H(a,b,d,c,f){this.id=lc+=2;this.f=null;this.C=a;this.Ub=b;this.size=d||0;this.type=c||mc;this.O=c==nc;this.controller=null;Cb(this);this.Wa=this.Lc=!1;if(d)if(f)this.controller=f,this.f=null,oc(this,f.Cb);else if(kb)this.I=new ArrayBuffer(d),this.J=new DataView(this.I,0,d),this.F=new Uint8Array(this.I,0,d),this.P=new Uint16Array(this.I,0,d>>1),this.f=new Int32Array(this.I,0,d>>2),oc(this,kc?pc:qc);else{this.f=Array(d>>2);for(a=0;a<this.f.length;a++)this.f[a]=0;oc(this,rc)}else oc(this)}
|
||||
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 Ob={};Ob[4194302]=[null,null,Mb.prototype.Uc,Mb.prototype.fd];Qa(function(){for(var a=A(document,"pdp11","device"),b=0;b<a.length;b++){var d=a[b],c=z(d),c=new Mb(c);db(c,d)}});var ic;if(jb){var jc=new ArrayBuffer(2);(new DataView(jc)).setUint16(0,256,!0);ic=256===(new Uint16Array(jc))[0]}else ic=!1;var kc=ic;
|
||||
function H(a,b,d,c,f){this.id=lc+=2;this.f=null;this.A=a;this.Ub=b;this.size=d||0;this.type=c||mc;this.O=c==nc;this.controller=null;Cb(this);this.Wa=this.Lc=!1;if(d)if(f)this.controller=f,this.f=null,oc(this,f.Cb);else if(jb)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.f=new Int32Array(this.I,0,d>>2),oc(this,kc?pc:qc);else{this.f=Array(d>>2);for(a=0;a<this.f.length;a++)this.f[a]=0;oc(this,rc)}else oc(this)}
|
||||
var mc=0,nc=2,Ib=4,Kb=["NONE","RAM","ROM","VID","H/W"],lc=0;
|
||||
H.prototype={constructor:H,parent:null,Ib:function(a){this.C=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.f;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.f=a;return this.Wa=!0}return!1},eb:function(a,b){b?0===this.u++&&sc(this,tc,!1):0===this.i++&&uc(this,tc,!1)},T:function(){this.H&&
|
||||
fb(this.H,129)&&this.H.message("attempt to read invalid block %"+r(this.C),!0);return 255},G:function(a,b){this.H&&fb(this.H,129)&&this.H.message("attempt to write "+r(b,4,!0)+" to invalid block %"+r(this.C),!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)},da:function(a){return this.f[a>>2]>>>((a&3)<<3)&255},ra:function(a){var b=a>>2;a=(a&3)<<3;var d=this.f[b]>>a;return 24>a?d&65535:d&255|(this.f[b+1]&255)<<8},za:function(a,
|
||||
b){var d=a>>2,c=(a&3)<<3;this.f[d]=this.f[d]&~(255<<c)|b<<c;this.Wa=!0},Bb:function(a,b){var d=a>>2,c=(a&3)<<3;24>c?this.f[d]=this.f[d]&~(65535<<c)|b<<c:(this.f[d]=this.f[d]&16777215|b<<24,d++,this.f[d]=this.f[d]&-256|b>>8);this.Wa=!0},$:function(a,b){if(this.H&&null!=this.C){var d=this.H;vc(d,this.C+a,1,d.Y)&&d.ma(!0)}return this.Ob(a,b)},ga:function(a,b){if(this.H&&null!=this.C){var d=this.H;vc(d,this.C+a,2,d.Y)&&d.ma(!0)}return this.hc(a,b)},wa:function(a,b,d){if(this.H&&null!=this.C){var c=this.H;
|
||||
vc(c,this.C+a,1,c.J)&&c.ma(!0)}this.O?this.G(a,b,d):this.yb(a,b,d)},Ja:function(a,b,d){if(this.H&&null!=this.C){var c=this.H;vc(c,this.C+a,2,c.J)&&c.ma(!0)}this.O?this.G(a,b,d):this.lc(a,b,d)},Y:function(a){return this.F[a]},aa:function(a){return this.F[a]},ea:function(a){return this.J.getUint16(a,!0)},ja:function(a){return a&1?this.F[a]|this.F[a+1]<<8:this.P[a>>1]},va:function(a,b){this.F[a]=b;this.Wa=!0},ya:function(a,b){this.F[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.F[a]=b,this.F[a+1]=b>>8):this.P[a>>1]=b;this.Wa=!0}};function Cb(a,b,d){a.H=b;a.i=a.u=0;d&&((a.i=d.i)&&uc(a,tc,!1),(a.u=d.u)&&sc(a,tc,!1))}function wc(a,b){b?0===--a.u&&(a.xb=a.O?a.G:a.yb,a.Cc=a.O?a.N:a.lc):0===--a.i&&(a.sb=a.Ob,a.wc=a.hc)}function sc(a,b,d){d&&a.u||(a.xb=!a.O&&b[1]||a.G,a.Cc=!a.O&&b[3]||a.N);if(d||void 0===d)a.yb=b[1]||a.G,a.lc=b[3]||a.N}function uc(a,b,d){d&&a.i||(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 oc(a,b){b||(b=xc);uc(a,b,void 0);sc(a,b,void 0)}var xc=[],rc=[H.prototype.da,H.prototype.za,H.prototype.ra,H.prototype.Bb],tc=[H.prototype.$,H.prototype.wa,H.prototype.ga,H.prototype.Ja];if(kb)var qc=[H.prototype.Y,H.prototype.va,H.prototype.ea,H.prototype.Ea],pc=[H.prototype.aa,H.prototype.ya,H.prototype.ja,H.prototype.Sa];
|
||||
function yc(a,b){u.call(this,"CPU",a,yc,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.j.ia=!1;this.j.kc=!1;this.j.Db=a.autoStart;this.j.sc=!1;this.j.ob=!1;this.Lb=this.Y=0;this.Mb=a.csStart;this.qb=a.csInterval;this.rb=a.csStop;this.ja=[];this.Eb=this.lb.bind(this);A(this)}$a(yc);var zc=["power","reset"];m=yc.prototype;
|
||||
m.Xa=function(a,b,d,c){this.i=a;this.F=b;this.H=c;for(b=0;b<zc.length;b++)(d=this.O[zc[b]])&&this.i.ua(null,zc[b],d);this.da=null;a=Ac(a,"autoStart");null!=a&&(this.j.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){Bc(this);if(!this.restore(a))return!1;Cc(this)}else this.reset();this.H?this.H.Ib():this.g("No debugger detected")}Dc(this);return!0};
|
||||
m.Ma=function(a){return a?this.save():!0};m.Db=function(){return this.j.Db||!this.H&&void 0===this.O.run?(this.lb(!0),!0):!1};m.uc=function(){return 0};function Cc(a){void 0===a.Mb&&(a.Mb=0);void 0===a.qb&&(a.qb=-1);void 0===a.rb&&(a.rb=-1);a.j.ob=0<=a.Mb&&0<a.qb;a.j.ob&&(a.Lb=0,a.Y=a.Mb-a.W)}function Ec(a,b){if(a.j.ob){var d=!1;a.Lb=a.Lb+a.uc()|0;a.Y-=b;0>=a.Y&&(a.Y+=a.qb,d=!0);0<=a.rb&&a.rb<=Rc(a)&&(a.qb=a.rb=-1,Cc(a),a.ma(),d=!0);d&&a.g(Rc(a)+" cycles: checksum="+r(a.Lb))}}
|
||||
function Sc(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.wa||8;d=!a.j.ia||a.j.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.j.fa)a=!0;else{var b=null,d,g=cb(a.id);for(d=0;d<g.length&&(b=g[d],b===a||b.j.ready);d++);if(d==g.length)for(d=0;d<g.length&&(b=g[d],b===a||b.j.fa);d++);d==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.j.ready?"powered yet":"ready yet"+(b.Wb?" (waiting for notification)":""))+".");a=!1}a&&(c.j.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(){Tc(c,c.jb<<1,!0)},d.textContent=this.hb.toFixed(2)+"Mhz",a=!0}return a};function Uc(a,b,d){a.W+=b;d&&(a.T=a.G=0)}function Vc(a,b){var d=1;b&&1<a.jb&&a.N&&(d=a.N/a.ya);a.mb=Math.round(1E3/30);a.va=Math.floor(a.za/30*d);b||(a.$=a.va);a.Ea=0}function Rc(a){return a.W+a.J+a.T-a.G}function Bc(a){a.N=0;a.zb=0;a.W=a.J=a.T=a.G=0;Cc(a);Tc(a,1)}
|
||||
function Tc(a,b,d){var c=!1;if(void 0!==b){.8>a.N/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.g("target speed: "+b)}d&&a.i&&a.i.Tb()}Uc(a,a.J);a.J=0;a.I=sa();a.P=0;Vc(a);return c}function Wc(a){a.T-=a.G;a.G=0}
|
||||
m.lb=function(a){if(gb(this,!0)){if(!this.j.ia){Tc(this);this.i&&this.i.start(this.I,Rc(this));this.j.ia=!0;this.j.kc=!0;this.da&&this.da.start();var b=this.O.run;b&&(b.textContent="Halt");this.i&&(this.i.xa(!0),a&&this.i.Tb(!0))}this.Ea>=this.za&&Vc(this,!0);this.ea=0;this.ra=sa();this.P&&(a=this.ra-this.P,a>this.mb&&(this.I+=a,this.I>this.ra&&(this.I=this.ra)));try{do{for(var d,c=this.j.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.G;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;Uc(this,0,!0);Ec(this,h);this.$-=h;if(0>=this.$){this.$+=this.va;15<=++this.zb&&(this.i&&this.i.xa(),this.zb=0);break}}while(this.j.ia)}catch(l){this.ma();Dc(this);this.i&&this.i.stop(sa(),Rc(this));gb(this,!1);jb(this,l.stack||l.message);return}d=setTimeout;c=this.Eb;this.P=sa();f=this.mb;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.W=0,Tc(this));if(0>f||this.N<this.hb)-1E3>f&&(this.I-=f),f=0;this.Ea+=this.ea;this.P+=f;d(c,f)}else Dc(this),this.i&&this.i.stop(sa(),Rc(this))};m.wb=function(){return 0};m.ma=function(a){hb(this,!0);Wc(this);Uc(this,this.J);this.J=0;if(this.j.ia){this.j.ia=!1;this.da&&this.da.stop();var b=this.O.run;b&&(b.textContent="Run")}this.j.complete=a};function Dc(a,b){a.i&&a.i.xa(b)}
|
||||
function Xc(a){this.vc=+a.model||1170;this.Vb=a.resetAddr||0;yc.call(this,a,1E6);this.Ja=0;this.decode=Yc.bind(this);this.D=65536;this.A=32768;this.B=65535;this.w=32768;this.wa=-1;this.b=[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.f=[];this.ga=this.Yb=0;this.Oa=2;this.Qa=255;this.V=0;this.aa=-1;this.L=0;this.gb=70;this.Xb=this.Kb=this.Jb=this.u=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.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.j.complete=this.j.Ic=!1}$a(Xc,yc);m=Xc.prototype;
|
||||
H.prototype={constructor:H,parent:null,Ib:function(a){this.A=a},save:function(){var a,b;if(this.controller)a=null;else if(jb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.J.getInt32(b<<2,!0);else a=this.f;return a},restore:function(a){if(this.controller)return null==a;if(a&&this.size==a.length<<2){var b;if(jb)for(b=0;b<a.length;b++)this.J.setInt32(b<<2,a[b],!0);else this.f=a;return this.Wa=!0}return!1},eb:function(a,b){b?0===this.u++&&sc(this,tc,!1):0===this.i++&&uc(this,tc,!1)},T:function(){this.H&&
|
||||
eb(this.H,129)&&this.H.message("attempt to read invalid block %"+r(this.A),!0);return 255},C:function(a,b){this.H&&eb(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.f[a>>2]>>>((a&3)<<3)&255},ra:function(a){var b=a>>2;a=(a&3)<<3;var d=this.f[b]>>a;return 24>a?d&65535:d&255|(this.f[b+1]&255)<<8},za:function(a,
|
||||
b){var d=a>>2,c=(a&3)<<3;this.f[d]=this.f[d]&~(255<<c)|b<<c;this.Wa=!0},Bb:function(a,b){var d=a>>2,c=(a&3)<<3;24>c?this.f[d]=this.f[d]&~(65535<<c)|b<<c:(this.f[d]=this.f[d]&16777215|b<<24,d++,this.f[d]=this.f[d]&-256|b>>8);this.Wa=!0},$:function(a,b){if(this.H&&null!=this.A){var d=this.H;vc(d,this.A+a,1,d.Y)&&d.ma(!0)}return this.Ob(a,b)},ga:function(a,b){if(this.H&&null!=this.A){var d=this.H;vc(d,this.A+a,2,d.Y)&&d.ma(!0)}return this.hc(a,b)},wa:function(a,b,d){if(this.H&&null!=this.A){var c=this.H;
|
||||
vc(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;vc(c,this.A+a,2,c.J)&&c.ma(!0)}this.O?this.C(a,b,d):this.lc(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},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 Cb(a,b,d){a.H=b;a.i=a.u=0;d&&((a.i=d.i)&&uc(a,tc,!1),(a.u=d.u)&&sc(a,tc,!1))}function wc(a,b){b?0===--a.u&&(a.xb=a.O?a.C:a.yb,a.Cc=a.O?a.N:a.lc):0===--a.i&&(a.sb=a.Ob,a.wc=a.hc)}function sc(a,b,d){d&&a.u||(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.lc=b[3]||a.N}function uc(a,b,d){d&&a.i||(a.sb=b[0]||a.T,a.wc=b[2]||a.V);if(d||void 0===d)a.Ob=b[0]||a.T,a.hc=b[2]||a.V}
|
||||
function oc(a,b){b||(b=xc);uc(a,b,void 0);sc(a,b,void 0)}var xc=[],rc=[H.prototype.da,H.prototype.za,H.prototype.ra,H.prototype.Bb],tc=[H.prototype.$,H.prototype.wa,H.prototype.ga,H.prototype.Ja];if(jb)var qc=[H.prototype.Y,H.prototype.va,H.prototype.ea,H.prototype.Ea],pc=[H.prototype.aa,H.prototype.ya,H.prototype.ja,H.prototype.Sa];
|
||||
function yc(a,b){u.call(this,"CPU",a,yc,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.j.ia=!1;this.j.kc=!1;this.j.Db=a.autoStart;this.j.sc=!1;this.j.ob=!1;this.Lb=this.Y=0;this.Mb=a.csStart;this.qb=a.csInterval;this.rb=a.csStop;this.ja=[];this.Eb=this.lb.bind(this);E(this)}w(yc);var zc=["power","reset"];m=yc.prototype;
|
||||
m.Xa=function(a,b,d,c){this.i=a;this.G=b;this.H=c;for(b=0;b<zc.length;b++)(d=this.O[zc[b]])&&this.i.ua(null,zc[b],d);this.da=null;a=Ac(a,"autoStart");null!=a&&(this.j.Db="true"==a?!0:"false"==a?!1:!!a);E(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){Bc(this);if(!this.restore(a))return!1;Cc(this)}else this.reset();this.H?this.H.Ib():this.g("No debugger detected")}Dc(this);return!0};
|
||||
m.Ma=function(a){return a?this.save():!0};m.Db=function(){return this.j.Db||!this.H&&void 0===this.O.run?(this.lb(!0),!0):!1};m.uc=function(){return 0};function Cc(a){void 0===a.Mb&&(a.Mb=0);void 0===a.qb&&(a.qb=-1);void 0===a.rb&&(a.rb=-1);a.j.ob=0<=a.Mb&&0<a.qb;a.j.ob&&(a.Lb=0,a.Y=a.Mb-a.V)}function Ec(a,b){if(a.j.ob){var d=!1;a.Lb=a.Lb+a.uc()|0;a.Y-=b;0>=a.Y&&(a.Y+=a.qb,d=!0);0<=a.rb&&a.rb<=Fc(a)&&(a.qb=a.rb=-1,Cc(a),a.ma(),d=!0);d&&a.g(Fc(a)+" cycles: checksum="+r(a.Lb))}}
|
||||
function Sc(a,b,d,c){if(a.O[b]){void 0===d&&(ib(a,"Value for "+b+" is invalid"),a.ma());var f=a.H&&a.H.wa||8;d=!a.j.ia||a.j.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.j.fa)a=!0;else{var b=null,d,g=bb(a.id);for(d=0;d<g.length&&(b=g[d],b===a||b.j.ready);d++);if(d==g.length)for(d=0;d<g.length&&(b=g[d],b===a||b.j.fa);d++);d==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.j.ready?"powered yet":"ready yet"+(b.Wb?" (waiting for notification)":""))+".");a=!1}a&&(c.j.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(){Tc(c,c.jb<<1,!0)},d.textContent=this.hb.toFixed(2)+"Mhz",a=!0}return a};function Uc(a,b,d){a.V+=b;d&&(a.T=a.C=0)}function Vc(a,b){var d=1;b&&1<a.jb&&a.N&&(d=a.N/a.ya);a.mb=Math.round(1E3/30);a.va=Math.floor(a.za/30*d);b||(a.$=a.va);a.Ea=0}function Fc(a){return a.V+a.J+a.T-a.C}function Bc(a){a.N=0;a.zb=0;a.V=a.J=a.T=a.C=0;Cc(a);Tc(a,1)}
|
||||
function Tc(a,b,d){var c=!1;if(void 0!==b){.8>a.N/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.g("target speed: "+b)}d&&a.i&&a.i.Tb()}Uc(a,a.J);a.J=0;a.I=qa();a.P=0;Vc(a);return c}function Wc(a){a.T-=a.C;a.C=0}
|
||||
m.lb=function(a){if(fb(this,!0)){if(!this.j.ia){Tc(this);this.i&&this.i.start(this.I,Fc(this));this.j.ia=!0;this.j.kc=!0;this.da&&this.da.start();var b=this.O.run;b&&(b.textContent="Halt");this.i&&(this.i.xa(!0),a&&this.i.Tb(!0))}this.Ea>=this.za&&Vc(this,!0);this.ea=0;this.ra=qa();this.P&&(a=this.ra-this.P,a>this.mb&&(this.I+=a,this.I>this.ra&&(this.I=this.ra)));try{do{for(var d,c=this.j.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.C;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;Uc(this,0,!0);Ec(this,h);this.$-=h;if(0>=this.$){this.$+=this.va;15<=++this.zb&&(this.i&&this.i.xa(),this.zb=0);break}}while(this.j.ia)}catch(l){this.ma();Dc(this);this.i&&this.i.stop(qa(),Fc(this));fb(this,!1);ib(this,l.stack||l.message);return}d=setTimeout;c=this.Eb;this.P=qa();f=this.mb;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,Tc(this));if(0>f||this.N<this.hb)-1E3>f&&(this.I-=f),f=0;this.Ea+=this.ea;this.P+=f;d(c,f)}else Dc(this),this.i&&this.i.stop(qa(),Fc(this))};m.wb=function(){return 0};m.ma=function(a){gb(this,!0);Wc(this);Uc(this,this.J);this.J=0;if(this.j.ia){this.j.ia=!1;this.da&&this.da.stop();var b=this.O.run;b&&(b.textContent="Run")}this.j.complete=a};function Dc(a,b){a.i&&a.i.xa(b)}
|
||||
function Xc(a){this.vc=+a.model||1170;this.Vb=a.resetAddr||0;yc.call(this,a,1E6);this.Ja=0;this.decode=Yc.bind(this);this.D=65536;this.B=32768;this.F=65535;this.w=32768;this.wa=-1;this.b=[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.f=[];this.ga=this.Yb=0;this.Oa=2;this.Qa=255;this.W=0;this.aa=-1;this.L=0;this.gb=70;this.Xb=this.Kb=this.Jb=this.u=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.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.j.complete=this.j.Ic=!1}w(Xc,yc);m=Xc.prototype;
|
||||
m.reset=function(){this.j.ia&&this.ma();Zc(this);Bc(this);this.j.error=!1;this.parent.reset.call(this)};function Zc(a){a.Qa=255;a.L=0;a.f=[];a.Yb=0;a.ba=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 $c(this);N(a,0,[]);N(a,1,[this.Sa,this.W,this.jb]);for(var b=this.F,d=0,c=[],f=0;f<b.G;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.W=b[1];Tc(this,b[3]);a:{b=this.F;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.save=function(){var a=new $c(this);N(a,0,[]);N(a,1,[this.Sa,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}}N(a,2,c);return a.data()};
|
||||
m.restore=function(a){var b=a[1];this.Sa=b[0];this.V=b[1];Tc(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.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.j.ia||this.j.sc)){for(a=0;a<this.b.length;a++)Sc(this,"R"+a,this.b[a]);a=Pb(this);Sc(this,"PS",a);Sc(this,"NF",a&8?1:0,1);Sc(this,"ZF",a&4?1:0,1);Sc(this,"VF",a&2?1:0,1);Sc(this,"CF",a&1?1:0,1)}if(a=this.O.speed)a.textContent=this.j.ia&&this.N?this.N.toFixed(2)+"Mhz":"Stopped"};
|
||||
function I(a,b,d,c,f){for(var e=a.f.length;0<e--;)if(a.f[e].ed===c){0<e&&(a.f[e-1].Fa+=a.f[e].Fa);a.f.splice(e,1);break}if(0<=b){2===a.ga&&(b=0,a.ga=0,setTimeout(a.Eb,0));for(e=a.f.length;0<e--;){if(a.f[e].Fa>b){a.f[e].Fa-=b;break}b-=a.f[e].Fa}a.f.splice(e+1,0,{delay:b,priority:d&224,vector:c,callback:f})}a.Oa=2}function Pb(a){return a.M=a.M&63728|(a.w&32768?8:0)|(a.B&65535?0:4)|(a.A&32768?2:0)|(a.D&65536?1:0)}
|
||||
function ac(a,b){a.w=b<<12;a.B=~b&4;a.A=b<<14;a.D=b<<16;if((b^a.M)&2048)for(var d=a.Za.length;0<=--d;){var c=a.b[d];a.b[d]=a.Za[d];a.Za[d]=c}a.u=b>>14&3;d=a.M>>14&3;a.u!=d&&(a.sa[d]=a.b[6],a.b[6]=a.sa[a.u]);a.Oa=2;a.M=b}function ad(a,b){!a.V&128&&(a.w=a.B=b,a.A=0)}
|
||||
function K(a,b,d){var c,f,e=0;0>a.aa?a.aa=Pb(a):a.u||(b=4,e=1);a.ba&57344||(a.Da=63222,a.Ab=b);a.u=0;0<=(c=O(a,b|65536))&&0<=(f=O(a,b+2&65535|65536))&&(ac(a,f&53247|a.aa>>2&12288),e&&(a.L|=4,a.b[6]=4),0<=bd(a,a.aa)&&0<=bd(a,a.b[7])&&(a.b[7]=c));a.V&=-113;a.aa=-1;throw b|d<<8;}function hc(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 cd(a,b,d){var c,f,e,h=0;if(d&a.Jb){c=b>>13&a.ib[a.u];f=a.ka[a.u][c];e=(a.ka[a.u][c+16]<<6)+(b&8191)&4194303;a.Ra&16?3932160<=e&&4186112>e&&(e=hc(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&E&&(h=8192);break;case 4:h=4096;case 5:d&E&&(h=4096);case 6:f|=d&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.ka[a.u][c]=f;if(4194170!==e||a.u)a.Kb=a.u,a.Xb=c;h&&(h&57344&&(0<=a.aa&&(h|=128),a.ba&57344||(a.ba=a.ba|h|a.Kb<<5|a.Xb<<1),K(a,168,28)),a.ba&61440||!(4191360>e||4194239<e)||(a.ba|=4096,a.ba&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.b[b-4194304]:0<=b?a.F.Ha(b):b}function L(a,b,d){d&=65535;return 4194304<=b?a.b[b-4194304]=d:0<=b?(a.F.jc(b,d),d):b}
|
||||
function P(a,b){return 4194304<=b?a.b[b-4194304]&255:0<=b?a.F.Hb(b):b}function R(a,b,d){d&=255;return 4194304<=b?a.b[b-4194304]=a.b[b-4194304]&65280|d:0<=b?(a.F.bc(b,d),d):b}function O(a,b){return M(a,cd(a,b,lb))}function dd(a){var b=O(a,a.b[6]|65536);0<=b&&(a.b[6]=a.b[6]+2&65535);return b}function bd(a,b){var d,c;a.b[6]=c=a.b[6]-2&65535;a.ba&57344||(a.Da=a.Da<<8|246);!a.u&&c<=a.Qa&&4<c&&(c<=a.Qa-32?(a.L|=4,a.b[6]=4,K(a,4,32)):(a.L|=8,a.V|=4));return 0<=(d=cd(a,c|65536,E))?L(a,d,b):d}
|
||||
function ed(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.u&&d&E&&(a.b[6]<=a.Qa||65534<=a.b[6])&&(a.b[6]<=a.Qa-32||65534<=a.b[6]?(a.L|=4,a.b[6]=4,K(a,4,36)):(a.L|=8,a.V|=64)),7===e?a.b[e]:a.b[e]|65536;case 2:f=2;c=a.b[e];7!==e&&(c|=65536,6>e&&d&1&&(f=1));break;case 3:f=2;c=a.b[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.b[e]+f&65535;7!==e&&(c|=65536);break;case 5:f=-2;c=a.b[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.b[7])))return c;a.b[7]=a.b[7]+2&65535;c=c+a.b[e]&65535;return c|65536;case 7:if(0>(c=O(a,a.b[7])))return c;a.b[7]=a.b[7]+2&65535;c=c+a.b[e]&65535;return 0>(c=O(a,c|65536))?c:c|65536}a.b[e]=a.b[e]+f&65535;a.ba&57344||(a.Da=a.Da<<8|f<<3&248|e);6===e&&!a.u&&d&E&&0>=f&&(a.b[6]<=a.Qa||65534<=a.b[6])&&(a.b[6]<=a.Qa-32?(a.L|=4,a.b[6]=4,K(a,4,38)):(a.L|=8,a.V|=64));return c}
|
||||
function S(a,b,d){var c;return b&56?(0<=(c=ed(a,b,d))&&(c=cd(a,c,d)),c):4194304+(b&7)}function T(a,b){var d;b&56?(d=S(a,b,lb),d=M(a,d)):d=a.b[b&7];return d}function fd(a,b){var d;b&56?(d=S(a,b,wb),d=P(a,d)):d=a.b[b&7]&255;return d}function gd(a,b,d,c){b&56?(b=S(a,b,F),L(a,b,c.call(a,d,M(a,b)))):(b&=7,a.b[b]=c.call(a,d,a.b[b]))}function U(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.wb=function(a){this.j.complete=!0;var b=this.j.Ic=this.H&&hd(this.H),d=a?this.j.kc?0:1:-1;this.j.kc=!1;this.T=this.G=a;this.Sa&256?(Wc(this),a=!1):a=!0;if(a){do{if(b){if(id(this.H,this.b[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.f.length))for(;0<a--;){if(0<this.f[a].Fa){this.f[a].Fa--;this.Oa=2;break}if(this.f[a].pc){if(!this.f[a].pc()){this.f.splice(a,
|
||||
1);g--;continue}this.f[a].pc=null}this.f[a].Tc>c&&(c=this.f[a].Tc,g=a)}c>(this.M&224)&&(0>g?K(this,160,42):(K(this,this.f[g].ed,44),this.f.splice(g,1)))}this.ba&57344||(this.Da=0,this.Ab=this.b[7]);this.V=this.M&16;this.wa=O(this,this.b[7]);this.b[7]=this.b[7]+2&65535;this.decode(this.wa);if(0<=this.wa)switch(a=this.wa,this.b[7]=this.b[7]+2&65535,a&61440){case 40960:0<=(c=fd(this,a>>6))&&0<=(f=fd(this,a))&&(a=c-f,this.w=this.B=this.D=a<<8,this.A=((c^f)&(c^a))<<8);break;case 45056:0<=(c=fd(this,a>>
|
||||
6))&&0<=(f=fd(this,a))&&(this.w=this.B=(c&f)<<8,this.A=0);break;case 49152:0<=(c=fd(this,a>>6))&&0<=(f=P(this,e=S(this,a,G)))&&(a=f&~c,0<=R(this,e,a)&&(this.w=this.B=a<<8,this.A=0));break;case 53248:0<=(c=fd(this,a>>6))&&0<=(f=P(this,e=S(this,a,G)))&&(a=f|c,0<=R(this,e,a)&&(this.w=this.B=a<<8,this.A=0));break;default:switch(a&65024){case 2048:0<=(h=ed(this,a,0))&&(g=a>>6&7,0<=bd(this,this.b[g])&&(this.b[g]=this.b[7],this.b[7]=h&65535));break;case 28672:0<=(c=T(this,a))&&(g=a>>6&7,c&32768&&(c|=-65536),
|
||||
f=this.b[g],f&32768&&(f|=-65536),a=~~(c*f),this.b[g]=a>>16&65535,this.b[g|1]=a&65535,this.w=a>>16,this.B=this.w|a,this.D=this.A=0,-32768>a||32767<a)&&(this.D=65536);break;case 29184:0<=(c=T(this,a))&&(c?(g=a>>6&7,f=this.b[g]<<16|this.b[g|1],this.D=this.A=0,c&32768&&(c|=-65536),a=~~(f/c),-32768<=a&&32767>=a?(this.b[g]=a&65535,this.b[g|1]=f-a*c&65535,this.B=a>>16|a,this.w=a>>16):(this.A=32768,this.B=a>>15|a,this.w=f>>16,-1===c&&65534===this.b[g]&&(this.b[g]=this.b[g|1]=1))):(this.B=this.w=0,this.A=
|
||||
32768,this.D=65536));break;case 29696:0<=(c=T(this,a))&&(g=a>>6&7,a=this.b[g],a&32768&&(a|=4294901760),this.D=this.A=0,c&=63,c&32?(c=64-c,16<c&&(c=16),this.D=a<<17-c,a=a>>c):c&&(16<c?(this.A=a,a=0):(this.D=a=a<<c,(f=a>>15&65535)&&65535!==f&&(this.A=32768))),this.b[g]=a&65535,this.w=this.B=a);break;case 30208:if(0<=(c=T(this,a))){g=a>>6&7;f=this.b[g]<<16|this.b[g|1];this.D=this.A=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.A=32768)}else a=f;this.b[g]=a>>16&65535;this.b[g|1]=a&65535;this.w=a>>16;this.B=a>>16|a}break;case 30720:a&56?0<=(f=M(this,e=S(this,a,F)))&&(f^=this.b[a>>6&7],0<=L(this,e,f)&&(this.w=this.B=f,this.A=0)):(this.w=this.B=f=this.b[a&7]^=this.b[a>>6&7],this.A=0);break;case 32256:g=a>>6&7;if(this.b[g]=this.b[g]-1&65535)this.b[7]=this.b[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.b[7]=U(this.b[7],
|
||||
a);break;case 512:this.B&65535&&(this.b[7]=U(this.b[7],a));break;case 768:this.B&65535||(this.b[7]=U(this.b[7],a));break;case 1024:(this.w&32768)===(this.A&32768)&&(this.b[7]=U(this.b[7],a));break;case 1280:(this.w&32768)!==(this.A&32768)&&(this.b[7]=U(this.b[7],a));break;case 1536:this.B&65535&&(this.w&32768)===(this.A&32768)&&(this.b[7]=U(this.b[7],a));break;case 1792:this.B&65535&&(this.w&32768)===(this.A&32768)||(this.b[7]=U(this.b[7],a));break;case 32768:this.w&32768||(this.b[7]=U(this.b[7],
|
||||
a));break;case 33280:!(this.D&65536)&&this.B&65535&&(this.b[7]=U(this.b[7],a));break;case 33024:this.w&32768&&(this.b[7]=U(this.b[7],a));break;case 33536:if(this.D&65536||!(this.B&65535))this.b[7]=U(this.b[7],a);break;case 33792:this.A&32768||(this.b[7]=U(this.b[7],a));break;case 34048:this.A&32768&&(this.b[7]=U(this.b[7],a));break;case 34304:this.D&65536||(this.b[7]=U(this.b[7],a));break;case 34560:this.D&65536&&(this.b[7]=U(this.b[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=ed(this,a,0))&&(this.b[7]=h&65535);break;case 192:a&56?0<=(f=M(this,e=S(this,a,F)))&&(a=f<<8|f>>8,0<=L(this,e,a)&&(this.w=this.B=f&65280,this.A=this.D=0)):(g=a&7,f=this.b[g],this.b[g]=(f<<8|f>>8)&65535,this.w=this.B=f&65280,this.A=this.D=0);break;case 2560:a&56?0<=(e=S(this,a,E))&&0<=L(this,e,0)&&(this.w=this.D=this.A=this.B=0):this.w=this.D=this.A=this.B=this.b[a&7]=0;break;case 2624:0<=(f=M(this,e=S(this,a,F)))&&(a=~f,0<=L(this,e,a)&&(this.w=this.B=
|
||||
a,this.D=65536,this.A=0));break;case 2688:a&56?0<=(f=M(this,e=S(this,a,F)))&&(a=f+1,0<=L(this,e,a)&&(this.w=this.B=a,this.A=a&(a^f))):(g=a&7,f=this.b[g],a=f+1,this.b[g]=a&65535,this.w=this.B=a,this.A=a&(a^f));break;case 2752:a&56?0<=(f=M(this,e=S(this,a,F)))&&(a=f-1,0<=L(this,e,a)&&(this.w=this.B=a,this.A=(a^f)&f)):(g=a&7,f=this.b[g],a=f-1,this.b[g]=a&65535,this.w=this.B=a,this.A=(a^f)&f);break;case 2816:0<=(f=M(this,e=S(this,a,F)))&&(a=-f,0<=L(this,e,a)&&(this.D=this.w=this.B=a,this.A=a&f));break;
|
||||
case 2880:0<=(f=M(this,e=S(this,a,F)))&&(a=f+(this.D>>16&1),0<=L(this,e,a)&&(this.D=this.w=this.B=a,this.A=a&(a^f)));break;case 2944:0<=(f=M(this,e=S(this,a,F)))&&(a=f-(this.D>>16&1),0<=L(this,e,a)&&(this.D=this.w=this.B=a,this.A=(a^f)&f));break;case 3008:0<=(f=T(this,a))&&(this.w=this.B=f,this.D=this.A=0);break;case 3072:a&56?0<=(f=M(this,e=S(this,a,F)))&&(a=(this.D&65536|f)>>1,0<=L(this,e,a)&&(this.D=f<<16,this.w=this.B=a,this.A=a^this.D>>1)):(g=a&7,f=this.b[g],a=(this.D&65536|f)>>1,this.b[g]=a&
|
||||
65535,this.D=f<<16,this.w=this.B=a,this.A=a^this.D>>1);break;case 3136:a&56?0<=(f=M(this,e=S(this,a,F)))&&(a=f<<1|this.D>>16&1,0<=L(this,e,a)&&(this.D=this.w=this.B=a,this.A=a^f)):(g=a&7,f=this.b[g],a=f<<1|this.D>>16&1,this.b[g]=a&65535,this.D=this.w=this.B=a,this.A=a^f);break;case 3200:a&56?0<=(f=M(this,e=S(this,a,F)))&&(a=f&32768|f>>1,0<=L(this,e,a)&&(this.D=f<<16,this.w=this.B=a,this.A=this.w^this.D>>1)):(g=a&7,f=this.b[g],a=f&32768|f>>1,this.b[g]=a&65535,this.D=f<<16,this.w=this.B=a,this.A=this.w^
|
||||
this.D>>1);break;case 3264:a&56?0<=(f=M(this,e=S(this,a,F)))&&(a=f<<1,0<=L(this,e,a)&&(this.D=this.w=this.B=a,this.A=a^f)):(g=a&7,f=this.b[g],a=f<<1,this.b[g]=a&65535,this.D=this.w=this.B=a,this.A=a^f);break;case 3328:h=this.b[7]+((a&63)<<1)&65535;0<=(c=O(this,h|65536))&&(this.b[7]=this.b[5],this.b[5]=c,this.b[6]=h+2&65535);break;case 3392:a&56?0<=(h=ed(this,a,0))&&(61440!==(this.M&61440)&&(h&=65535),this.u=this.M>>12&3,0<=(c=O(this,h))&&(this.u=this.M>>14&3,0<=bd(this,c)&&(this.w=this.B=c,this.A=
|
||||
0))):(g=a&7,c=6!==g||(this.M>>2&12288)===(this.M&12288)?this.b[g]:this.sa[this.M>>12&3],0<=bd(this,c)&&(this.w=this.B=c,this.A=0));break;case 3456:0<=(f=dd(this))&&((this.ba&57344||(this.Da=22),a&56)?0<=(h=ed(this,a,0))&&(h&=65535,this.u=this.M>>12&3,0<=(e=cd(this,h,E))&&(this.u=this.M>>14&3,0<=L(this,e,f)&&(this.w=this.B=f,this.A=0))):(g=a&7,6!==g||(this.M>>2&12288)===(this.M&12288)?this.b[g]=f:this.sa[this.M>>12&3]=f,this.w=this.B=f,this.A=0));break;case 3520:0<=(e=S(this,a,E))&&(a=-(this.w>>15&
|
||||
1),0<=L(this,e,a)&&(this.B=a,this.A=0));break;case 35328:a&56?0<=(e=S(this,a,xb))&&0<=R(this,e,0)&&(this.w=this.D=this.A=this.B=0):(this.b[a&7]&=65280,this.w=this.D=this.A=this.B=0);break;case 35392:0<=(f=P(this,e=S(this,a,G)))&&(a=~f,0<=R(this,e,a)&&(this.w=this.B=a<<8,this.D=65536,this.A=0));break;case 35456:0<=(f=P(this,e=S(this,a,G)))&&(a=f+1,0<=R(this,e,a)&&(this.w=this.B=a<<8,this.A=(a&(a^f))<<8));break;case 35520:0<=(f=P(this,e=S(this,a,G)))&&(a=f-1,0<=R(this,e,a)&&(this.w=this.B=a<<8,this.A=
|
||||
((a^f)&f)<<8));break;case 35584:0<=(f=P(this,e=S(this,a,G)))&&(a=-f,0<=R(this,e,a)&&(this.D=this.w=this.B=a<<8,this.A=(a&f)<<8));break;case 35648:0<=(f=P(this,e=S(this,a,G)))&&(a=f+(this.D>>16&1),0<=R(this,e,a)&&(this.w=this.B=this.D=a<<8,this.A=(a&(a^f))<<8));break;case 35712:0<=(f=P(this,e=S(this,a,G)))&&(a=f-(this.D>>16&1),0<=R(this,e,a)&&(this.w=this.B=this.D=a<<8,this.A=((a^f)&f)<<8));break;case 35776:0<=(f=fd(this,a))&&(this.w=this.B=f<<8,this.D=this.A=0);break;case 35840:0<=(f=P(this,e=S(this,
|
||||
a,G)))&&(a=((this.D&65536)>>8|f)>>1,0<=R(this,e,a)&&(this.D=f<<16,this.w=this.B=a<<8,this.A=this.w^this.D>>1));break;case 35904:0<=(f=P(this,e=S(this,a,G)))&&(a=f<<1|this.D>>16&1,0<=R(this,e,a)&&(this.D=this.w=this.B=a<<8,this.A=(a^f)<<8));break;case 35968:0<=(f=P(this,e=S(this,a,G)))&&(a=f&128|f>>1,0<=R(this,e,a)&&(this.D=f<<16,this.w=this.B=a<<8,this.A=this.w^this.D>>1));break;case 36032:0<=(f=P(this,e=S(this,a,G)))&&(a=f<<1,0<=R(this,e,a)&&(this.D=this.w=this.B=a<<8,this.A=(a^f)<<8));break;case 36160:a&
|
||||
56?0<=(h=ed(this,a,0))&&(this.u=this.M>>12&3,0<=(c=O(this,h|65536))&&(this.u=this.M>>14&3,0<=bd(this,c)&&(this.w=this.B=c,this.A=0))):(g=a&7,c=6!==g||(this.M>>2&12288)===(this.M&12288)?this.b[g]:this.sa[this.M>>12&3],0<=bd(this,c)&&(this.w=this.B=c,this.A=0));break;case 36224:0<=(f=dd(this))&&((this.ba&57344||(this.Da=22),a&56)?0<=(h=ed(this,a,0))&&(this.u=this.M>>12&3,0<=(e=cd(this,h|65536,E))&&(this.u=this.M>>14&3,0<=L(this,e,f)&&(this.w=this.B=f,this.A=0))):(g=a&7,6!==g||(this.M>>2&12288)===(this.M&
|
||||
12288)?this.b[g]=f:this.sa[this.M>>12&3]=f,this.w=this.B=f,this.A=0));break;default:switch(a&65528){case 128:0<=(c=dd(this))&&(g=a&7,this.b[7]=this.b[g],this.b[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.A=0);a&4&&(this.B=1);a&8&&(this.w=0);break;case 176:case 184:a&1&&(this.D=65536);a&2&&(this.A=32768);a&4&&(this.B=0);a&8&&(this.w=32768);break;default:switch(a){case 0:49152&this.M?(this.L|=128,K(this,4,46)):(this.ga=
|
||||
3,Wc(this),console.log("HALT at "+this.b[7].toString(8)));break;case 1:g=0;if(0<(a=this.f.length))for(;0<a--;)g+=this.f[a].Fa,this.f[a].Fa=0;0===g&&0===this.ga&&(this.ga=2,Wc(this));break;case 3:K(this,12,6);break;case 4:K(this,16,8);break;case 5:this.M&49152||(Zc(this),this.F.reset());break;case 2:case 6:e=this.b[6];0<=(h=O(this,e|65536))&&(e=e+2&65535,0<=(c=O(this,e|65536))&&(this.b[6]=e+2&65535,c&=63743,this.M&49152&&(c=c&63519|this.M&63712),this.b[7]=h,ac(this,c),this.V&=-17,2===a&&(this.V|=this.M&
|
||||
16)));break;default:K(this,8,48)}}}}}}}while(0<this.G)}return this.j.complete?this.T-this.G:void 0===this.j.complete?0:-1};Qa(function(){for(var a=z(document,"pdp11","cpu"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Xc(c);eb(c,d)}});function jd(a,b){var d=a+b;!this.V&128&&(this.w=this.B=this.D=d,this.A=(a^d)&(b^d));return d&65535}function kd(a,b){var d=~a&b;ad(this,d);return d}function ld(a,b){var d=a|b;ad(this,d);return d}
|
||||
function md(a,b){var d=b-a;!this.V&128&&(this.w=this.B=this.D=d,this.A=(a^b)&(b^d));return d&65535}function Yc(a){nd[a>>12].call(this,a)}function od(){--this.G}
|
||||
var nd=[function(){},function(a){var b=T(this,a>>6);a&56?L(this,S(this,a,E),b):this.b[a&7]=b;ad(this,b);--this.G},function(a){var b=T(this,a>>6);a=T(this,a);var d=b-a;!this.V&128&&(this.w=this.B=this.D=d,this.A=(a^b)&(b^d));--this.G},function(a){ad(this,T(this,a>>6)&T(this,a));--this.G},function(a){gd(this,a,T(this,a>>6),kd);--this.G},function(a){gd(this,a,T(this,a>>6),ld);--this.G},function(a){gd(this,a,T(this,a>>6),jd);--this.G},od,od,function(a){var b=fd(this,a>>6),b=b&128?b|65280:b;a&56?(b&=255,
|
||||
R(this,S(this,a,xb),b)):this.b[a&7]=b;ad(this,b);--this.G},od,od,od,od,function(a){gd(this,a,T(this,a>>6),md);--this.G},od];function pd(a){u.call(this,"ROM",a,pd);this.i=null;this.J=a.addr;this.u=a.size;this.N=a.writable;this.G=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){qd(d,a,b,e)})}}$a(pd);
|
||||
pd.prototype.Xa=function(a,b,d,c){this.F=b;this.f=d;this.H=c;rd(this)};pd.prototype.Na=function(){if(this.Ka){if(this.H){var a=this.H,b=this.id,d=this.J,c=this.u,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,C:d,Qc:c,Ka:f,nc:e})}delete this.Ka}return!0};pd.prototype.Ma=function(){return!0};
|
||||
function qd(a,b,d,c){if(c)a.oa("Unable to load system ROM (error "+c+": "+b+")");else{bb(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.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);rd(a)}}
|
||||
function rd(a){if(!ib(a))if(!a.I)A(a);else if(a.i&&a.F){a.u||(a.u=a.i.length);if(a.i.length!=a.u)jb(a,"ROM size ("+r(a.i.length,8,!0)+") does not match specified size ("+r(a.u,8,!0)+")");else{var b;b=a.J;if(Hb(a.F,b,a.u,a.N?1:nc)){var d;for(d=0;d<a.i.length;d++){var c=a.F,f=b+d;c.R[(f&c.i)>>>c.X].yb(f&c.F,a.i[d]&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(d=0;d<b.length;d++){for(var e=a,c=b[d],f=e.F,h=e.u,g=[],k=e.J>>>f.X;0<h&&k<f.R.length;)g.push(f.R[k++]),
|
||||
h-=f.Aa;f=e.F;e=e.u;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=z(document,"pdp11","rom"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new pd(c);eb(c,d)}});function sd(a){u.call(this,"RAM",a,sd);this.G=a.addr;this.u=a.size;this.i=!1}$a(sd);m=sd.prototype;m.Xa=function(a,b,d,c){this.F=b;this.f=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.u&&Hb(this.F,this.G,this.u,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=z(document,"pdp11","ram"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new sd(c);eb(c,d)}});function td(a){u.call(this,"Keyboard",a,td,65536);A(this)}$a(td);td.prototype.ua=function(){return!1};td.prototype.Xa=function(a,b,d,c){this.i=a;this.f=d;this.H=c;this.da=null};
|
||||
Qa(function(){for(var a=z(document,"pdp11","keyboard"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new td(c);eb(c,d)}});function ud(a){u.call(this,"Debugger",a,ud);this.wa=a.base||16;this.$=this.Ja=this.P=0;this.da=!1;this.I=-1;this.G=[];this.ga={}}$a(ud);var vd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function wd(a,b,d,c){if(d)if(b){0>a.I&&a.G.length&&(a.I=0);if(0>a.I||b!=a.G[a.I])a.G.splice(0,0,b),a.I=0;a.I--}else a.da?b="end":b=a.G[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 xd(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;
|
||||
m.xa=function(a){if(this.Ja&&(a||!this.j.ia||this.j.sc)){for(a=0;a<this.b.length;a++)Sc(this,"R"+a,this.b[a]);a=$b(this);Sc(this,"PS",a);Sc(this,"NF",a&8?1:0,1);Sc(this,"ZF",a&4?1:0,1);Sc(this,"VF",a&2?1:0,1);Sc(this,"CF",a&1?1:0,1)}if(a=this.O.speed)a.textContent=this.j.ia&&this.N?this.N.toFixed(2)+"Mhz":"Stopped"};
|
||||
function I(a,b,d,c,f){for(var e=a.f.length;0<e--;)if(a.f[e].ed===c){0<e&&(a.f[e-1].Fa+=a.f[e].Fa);a.f.splice(e,1);break}if(0<=b){2===a.ga&&(b=0,a.ga=0,setTimeout(a.Eb,0));for(e=a.f.length;0<e--;){if(a.f[e].Fa>b){a.f[e].Fa-=b;break}b-=a.f[e].Fa}a.f.splice(e+1,0,{delay:b,priority:d&224,vector:c,callback:f})}a.Oa=2}function $b(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 ac(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.b[d];a.b[d]=a.Za[d];a.Za[d]=c}a.u=b>>14&3;d=a.M>>14&3;a.u!=d&&(a.sa[d]=a.b[6],a.b[6]=a.sa[a.u]);a.Oa=2;a.M=b}function ad(a,b){!a.W&128&&(a.w=a.F=b,a.B=0)}function bd(a,b,d,c){!a.W&128&&(a.w=a.F=a.D=b,a.B=(d^c)&(c^b))}
|
||||
function K(a,b,d){var c,f,e=0;0>a.aa?a.aa=$b(a):a.u||(b=4,e=1);a.ba&57344||(a.Da=63222,a.Ab=b);a.u=0;0<=(c=O(a,b|65536))&&0<=(f=O(a,b+2&65535|65536))&&(ac(a,f&53247|a.aa>>2&12288),e&&(a.L|=4,a.b[6]=4),0<=cd(a,a.aa)&&0<=cd(a,a.b[7])&&(a.b[7]=c));a.W&=-113;a.aa=-1;throw b|d<<8;}function hc(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 dd(a,b,d){var c,f,e,h=0;if(d&a.Jb){c=b>>13&a.ib[a.u];f=a.ka[a.u][c];e=(a.ka[a.u][c+16]<<6)+(b&8191)&4194303;a.Ra&16?3932160<=e&&4186112>e&&(e=hc(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&F&&(h=8192);break;case 4:h=4096;case 5:d&F&&(h=4096);case 6:f|=d&F?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.u][c]=f;if(4194170!==e||a.u)a.Kb=a.u,a.Xb=c;h&&(h&57344&&(0<=a.aa&&(h|=128),a.ba&57344||(a.ba=a.ba|h|a.Kb<<5|a.Xb<<1),K(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,K(a,4,22));return e}function M(a,b){return 4194304<=b?a.b[b-4194304]:0<=b?a.G.Ha(b):b}function L(a,b,d){d&=65535;return 4194304<=b?a.b[b-4194304]=d:0<=b?(a.G.jc(b,d),d):b}
|
||||
function Q(a,b){return 4194304<=b?a.b[b-4194304]&255:0<=b?a.G.Hb(b):b}function R(a,b,d){d&=255;return 4194304<=b?a.b[b-4194304]=a.b[b-4194304]&65280|d:0<=b?(a.G.bc(b,d),d):b}function O(a,b){return M(a,dd(a,b,kb))}function ed(a){var b=O(a,a.b[6]|65536);0<=b&&(a.b[6]=a.b[6]+2&65535);return b}function cd(a,b){var d,c;a.b[6]=c=a.b[6]-2&65535;a.ba&57344||(a.Da=a.Da<<8|246);!a.u&&c<=a.Qa&&4<c&&(c<=a.Qa-32?(a.L|=4,a.b[6]=4,K(a,4,32)):(a.L|=8,a.W|=4));return 0<=(d=dd(a,c|65536,F))?L(a,d,b):d}
|
||||
function fd(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.u&&d&F&&(a.b[6]<=a.Qa||65534<=a.b[6])&&(a.b[6]<=a.Qa-32||65534<=a.b[6]?(a.L|=4,a.b[6]=4,K(a,4,36)):(a.L|=8,a.W|=64)),7===e?a.b[e]:a.b[e]|65536;case 2:f=2;c=a.b[e];7!==e&&(c|=65536,6>e&&d&1&&(f=1));break;case 3:f=2;c=a.b[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.b[e]+f&65535;7!==e&&(c|=65536);break;case 5:f=-2;c=a.b[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.b[7])))return c;a.b[7]=a.b[7]+2&65535;c=c+a.b[e]&65535;return c|65536;case 7:if(0>(c=O(a,a.b[7])))return c;a.b[7]=a.b[7]+2&65535;c=c+a.b[e]&65535;return 0>(c=O(a,c|65536))?c:c|65536}a.b[e]=a.b[e]+f&65535;a.ba&57344||(a.Da=a.Da<<8|f<<3&248|e);6===e&&!a.u&&d&F&&0>=f&&(a.b[6]<=a.Qa||65534<=a.b[6])&&(a.b[6]<=a.Qa-32?(a.L|=4,a.b[6]=4,K(a,4,38)):(a.L|=8,a.W|=64));return c}
|
||||
function S(a,b,d){var c;return b&56?(0<=(c=fd(a,b,d))&&(c=dd(a,c,d)),c):4194304+(b&7)}function T(a,b){var d;b&56?(d=S(a,b,kb),d=M(a,d)):d=a.b[b&7];return d}function gd(a,b){var d;b&56?(d=S(a,b,vb),d=Q(a,d)):d=a.b[b&7]&255;return d}function hd(a,b,d,c){b&56?(b=S(a,b,G),L(a,b,c.call(a,d,M(a,b)))):(b&=7,a.b[b]=c.call(a,d,a.b[b]))}function id(a,b,d,c){b&56?(b=S(a,b,xb),R(a,b,c.call(a,d,Q(a,b)))):(b&=7,a.b[b]=c.call(a,d,a.b[b]))}function U(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.wb=function(a){this.j.complete=!0;var b=this.j.Ic=this.H&&jd(this.H),d=a?this.j.kc?0:1:-1;this.j.kc=!1;this.T=this.C=a;this.Sa&256?(Wc(this),a=!1):a=!0;if(a){do{if(b){if(kd(this.H,this.b[7],d)){this.ma();break}d=1}var c,f,e,h,g;this.W&112&&(this.W&32?K(this,168,52):this.W&64?K(this,4,54):this.W&16&&K(this,12,56),this.W&=-113);if(this.Oa)if(1===this.Oa)this.Oa=2;else{this.Oa=0;f=-1;c=this.Yb&224;if(0<(a=this.f.length))for(;0<a--;){if(0<this.f[a].Fa){this.f[a].Fa--;this.Oa=2;break}if(this.f[a].pc){if(!this.f[a].pc()){this.f.splice(a,
|
||||
1);f--;continue}this.f[a].pc=null}this.f[a].Tc>c&&(c=this.f[a].Tc,f=a)}c>(this.M&224)&&(0>f?K(this,160,42):(K(this,this.f[f].ed,44),this.f.splice(f,1)))}this.ba&57344||(this.Da=0,this.Ab=this.b[7]);this.W=this.M&16;this.wa=O(this,this.b[7]);this.b[7]=this.b[7]+2&65535;this.decode(this.wa);if(0<=this.wa)switch(a=this.wa,this.b[7]=this.b[7]+2&65535,a&61440){default:switch(a&65024){case 2048:0<=(h=fd(this,a,0))&&(g=a>>6&7,0<=cd(this,this.b[g])&&(this.b[g]=this.b[7],this.b[7]=h&65535));break;case 28672:0<=
|
||||
(c=T(this,a))&&(g=a>>6&7,c&32768&&(c|=-65536),f=this.b[g],f&32768&&(f|=-65536),a=~~(c*f),this.b[g]=a>>16&65535,this.b[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=T(this,a))&&(c?(g=a>>6&7,f=this.b[g]<<16|this.b[g|1],this.D=this.B=0,c&32768&&(c|=-65536),a=~~(f/c),-32768<=a&&32767>=a?(this.b[g]=a&65535,this.b[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.b[g]&&(this.b[g]=
|
||||
this.b[g|1]=1))):(this.F=this.w=0,this.B=32768,this.D=65536));break;case 29696:0<=(c=T(this,a))&&(g=a>>6&7,a=this.b[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.b[g]=a&65535,this.w=this.F=a);break;case 30208:if(0<=(c=T(this,a))){g=a>>6&7;f=this.b[g]<<16|this.b[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.b[g]=a>>16&65535;this.b[g|1]=a&65535;this.w=a>>16;this.F=a>>16|a}break;case 30720:a&56?0<=(f=M(this,e=S(this,a,G)))&&(f^=this.b[a>>6&7],0<=L(this,e,f)&&(this.w=this.F=f,this.B=0)):(this.w=this.F=f=this.b[a&7]^=this.b[a>>6&7],this.B=0);break;case 32256:g=a>>6&7;if(this.b[g]=this.b[g]-1&65535)this.b[7]=this.b[7]-((a&63)<<1)&65535;break;default:switch(a&
|
||||
65280){case 256:this.b[7]=U(this.b[7],a);break;case 512:this.F&65535&&(this.b[7]=U(this.b[7],a));break;case 768:this.F&65535||(this.b[7]=U(this.b[7],a));break;case 1024:(this.w&32768)===(this.B&32768)&&(this.b[7]=U(this.b[7],a));break;case 1280:(this.w&32768)!==(this.B&32768)&&(this.b[7]=U(this.b[7],a));break;case 1536:this.F&65535&&(this.w&32768)===(this.B&32768)&&(this.b[7]=U(this.b[7],a));break;case 1792:this.F&65535&&(this.w&32768)===(this.B&32768)||(this.b[7]=U(this.b[7],a));break;case 32768:this.w&
|
||||
32768||(this.b[7]=U(this.b[7],a));break;case 33280:!(this.D&65536)&&this.F&65535&&(this.b[7]=U(this.b[7],a));break;case 33024:this.w&32768&&(this.b[7]=U(this.b[7],a));break;case 33536:if(this.D&65536||!(this.F&65535))this.b[7]=U(this.b[7],a);break;case 33792:this.B&32768||(this.b[7]=U(this.b[7],a));break;case 34048:this.B&32768&&(this.b[7]=U(this.b[7],a));break;case 34304:this.D&65536||(this.b[7]=U(this.b[7],a));break;case 34560:this.D&65536&&(this.b[7]=U(this.b[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=fd(this,a,0))&&(this.b[7]=h&65535);break;case 192:a&56?0<=(f=M(this,e=S(this,a,G)))&&(a=f<<8|f>>8,0<=L(this,e,a)&&(this.w=this.F=f&65280,this.B=this.D=0)):(g=a&7,f=this.b[g],this.b[g]=(f<<8|f>>8)&65535,this.w=this.F=f&65280,this.B=this.D=0);break;case 2560:a&56?0<=(e=S(this,a,F))&&0<=L(this,e,0)&&(this.w=this.D=this.B=this.F=0):this.w=this.D=this.B=this.F=this.b[a&7]=0;break;case 2624:0<=(f=M(this,e=S(this,a,G)))&&(a=~f,
|
||||
0<=L(this,e,a)&&(this.w=this.F=a,this.D=65536,this.B=0));break;case 2688:a&56?0<=(f=M(this,e=S(this,a,G)))&&(a=f+1,0<=L(this,e,a)&&(this.w=this.F=a,this.B=a&(a^f))):(g=a&7,f=this.b[g],a=f+1,this.b[g]=a&65535,this.w=this.F=a,this.B=a&(a^f));break;case 2752:a&56?0<=(f=M(this,e=S(this,a,G)))&&(a=f-1,0<=L(this,e,a)&&(this.w=this.F=a,this.B=(a^f)&f)):(g=a&7,f=this.b[g],a=f-1,this.b[g]=a&65535,this.w=this.F=a,this.B=(a^f)&f);break;case 2816:0<=(f=M(this,e=S(this,a,G)))&&(a=-f,0<=L(this,e,a)&&(this.D=this.w=
|
||||
this.F=a,this.B=a&f));break;case 2880:0<=(f=M(this,e=S(this,a,G)))&&(a=f+(this.D>>16&1),0<=L(this,e,a)&&(this.D=this.w=this.F=a,this.B=a&(a^f)));break;case 2944:0<=(f=M(this,e=S(this,a,G)))&&(a=f-(this.D>>16&1),0<=L(this,e,a)&&(this.D=this.w=this.F=a,this.B=(a^f)&f));break;case 3008:0<=(f=T(this,a))&&(this.w=this.F=f,this.D=this.B=0);break;case 3072:a&56?0<=(f=M(this,e=S(this,a,G)))&&(a=(this.D&65536|f)>>1,0<=L(this,e,a)&&(this.D=f<<16,this.w=this.F=a,this.B=a^this.D>>1)):(g=a&7,f=this.b[g],a=(this.D&
|
||||
65536|f)>>1,this.b[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=M(this,e=S(this,a,G)))&&(a=f<<1|this.D>>16&1,0<=L(this,e,a)&&(this.D=this.w=this.F=a,this.B=a^f)):(g=a&7,f=this.b[g],a=f<<1|this.D>>16&1,this.b[g]=a&65535,this.D=this.w=this.F=a,this.B=a^f);break;case 3200:a&56?0<=(f=M(this,e=S(this,a,G)))&&(a=f&32768|f>>1,0<=L(this,e,a)&&(this.D=f<<16,this.w=this.F=a,this.B=this.w^this.D>>1)):(g=a&7,f=this.b[g],a=f&32768|f>>1,this.b[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=M(this,e=S(this,a,G)))&&(a=f<<1,0<=L(this,e,a)&&(this.D=this.w=this.F=a,this.B=a^f)):(g=a&7,f=this.b[g],a=f<<1,this.b[g]=a&65535,this.D=this.w=this.F=a,this.B=a^f);break;case 3328:h=this.b[7]+((a&63)<<1)&65535;0<=(c=O(this,h|65536))&&(this.b[7]=this.b[5],this.b[5]=c,this.b[6]=h+2&65535);break;case 3392:a&56?0<=(h=fd(this,a,0))&&(61440!==(this.M&61440)&&(h&=65535),this.u=this.M>>12&3,0<=(c=O(this,h))&&(this.u=this.M>>14&3,0<=cd(this,c)&&
|
||||
(this.w=this.F=c,this.B=0))):(g=a&7,c=6!==g||(this.M>>2&12288)===(this.M&12288)?this.b[g]:this.sa[this.M>>12&3],0<=cd(this,c)&&(this.w=this.F=c,this.B=0));break;case 3456:0<=(f=ed(this))&&((this.ba&57344||(this.Da=22),a&56)?0<=(h=fd(this,a,0))&&(h&=65535,this.u=this.M>>12&3,0<=(e=dd(this,h,F))&&(this.u=this.M>>14&3,0<=L(this,e,f)&&(this.w=this.F=f,this.B=0))):(g=a&7,6!==g||(this.M>>2&12288)===(this.M&12288)?this.b[g]=f:this.sa[this.M>>12&3]=f,this.w=this.F=f,this.B=0));break;case 3520:0<=(e=S(this,
|
||||
a,F))&&(a=-(this.w>>15&1),0<=L(this,e,a)&&(this.F=a,this.B=0));break;case 35328:a&56?0<=(e=S(this,a,wb))&&0<=R(this,e,0)&&(this.w=this.D=this.B=this.F=0):(this.b[a&7]&=65280,this.w=this.D=this.B=this.F=0);break;case 35392:0<=(f=Q(this,e=S(this,a,xb)))&&(a=~f,0<=R(this,e,a)&&(this.w=this.F=a<<8,this.D=65536,this.B=0));break;case 35456:0<=(f=Q(this,e=S(this,a,xb)))&&(a=f+1,0<=R(this,e,a)&&(this.w=this.F=a<<8,this.B=(a&(a^f))<<8));break;case 35520:0<=(f=Q(this,e=S(this,a,xb)))&&(a=f-1,0<=R(this,e,a)&&
|
||||
(this.w=this.F=a<<8,this.B=((a^f)&f)<<8));break;case 35584:0<=(f=Q(this,e=S(this,a,xb)))&&(a=-f,0<=R(this,e,a)&&(this.D=this.w=this.F=a<<8,this.B=(a&f)<<8));break;case 35648:0<=(f=Q(this,e=S(this,a,xb)))&&(a=f+(this.D>>16&1),0<=R(this,e,a)&&(this.w=this.F=this.D=a<<8,this.B=(a&(a^f))<<8));break;case 35712:0<=(f=Q(this,e=S(this,a,xb)))&&(a=f-(this.D>>16&1),0<=R(this,e,a)&&(this.w=this.F=this.D=a<<8,this.B=((a^f)&f)<<8));break;case 35776:0<=(f=gd(this,a))&&(this.w=this.F=f<<8,this.D=this.B=0);break;
|
||||
case 35840:0<=(f=Q(this,e=S(this,a,xb)))&&(a=((this.D&65536)>>8|f)>>1,0<=R(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=Q(this,e=S(this,a,xb)))&&(a=f<<1|this.D>>16&1,0<=R(this,e,a)&&(this.D=this.w=this.F=a<<8,this.B=(a^f)<<8));break;case 35968:0<=(f=Q(this,e=S(this,a,xb)))&&(a=f&128|f>>1,0<=R(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=Q(this,e=S(this,a,xb)))&&(a=f<<1,0<=R(this,e,a)&&(this.D=this.w=this.F=
|
||||
a<<8,this.B=(a^f)<<8));break;case 36160:a&56?0<=(h=fd(this,a,0))&&(this.u=this.M>>12&3,0<=(c=O(this,h|65536))&&(this.u=this.M>>14&3,0<=cd(this,c)&&(this.w=this.F=c,this.B=0))):(g=a&7,c=6!==g||(this.M>>2&12288)===(this.M&12288)?this.b[g]:this.sa[this.M>>12&3],0<=cd(this,c)&&(this.w=this.F=c,this.B=0));break;case 36224:0<=(f=ed(this))&&((this.ba&57344||(this.Da=22),a&56)?0<=(h=fd(this,a,0))&&(this.u=this.M>>12&3,0<=(e=dd(this,h|65536,F))&&(this.u=this.M>>14&3,0<=L(this,e,f)&&(this.w=this.F=f,this.B=
|
||||
0))):(g=a&7,6!==g||(this.M>>2&12288)===(this.M&12288)?this.b[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=ed(this))&&(g=a&7,this.b[7]=this.b[g],this.b[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,K(this,4,46)):(this.ga=3,Wc(this),console.log("HALT at "+this.b[7].toString(8)));break;case 1:f=0;if(0<(a=this.f.length))for(;0<a--;)f+=this.f[a].Fa,this.f[a].Fa=0;0===f&&0===this.ga&&(this.ga=2,Wc(this));break;case 3:K(this,12,6);break;case 4:K(this,16,8);break;case 5:this.M&49152||(Zc(this),this.G.reset());break;case 2:case 6:e=this.b[6];0<=(h=O(this,e|65536))&&(e=e+2&65535,0<=(c=O(this,e|65536))&&(this.b[6]=e+2&65535,c&=63743,this.M&49152&&(c=c&63519|this.M&63712),this.b[7]=
|
||||
h,ac(this,c),this.W&=-17,2===a&&(this.W|=this.M&16)));break;default:K(this,8,48)}}}}}}}while(0<this.C)}return this.j.complete?this.T-this.C:void 0===this.j.complete?0:-1};Qa(function(){for(var a=A(document,"pdp11","cpu"),b=0;b<a.length;b++){var d=a[b],c=z(d),c=new Xc(c);db(c,d)}});function ld(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 md(a,b){var d=~a&b;ad(this,d);return d}function nd(a,b){var d=~a&b;ad(this,d<<8);return d}
|
||||
function od(a,b){var d=a|b;ad(this,d);return d}function pd(a,b){var d=a|b;ad(this,d<<8);return d}function qd(a,b){var d=b-a;bd(this,d,a,b);return d&65535}function Yc(a){rd[a>>12].call(this,a)}function sd(){--this.C}
|
||||
var rd=[function(){},function(a){var b=T(this,a>>6);a&56?L(this,S(this,a,F),b):this.b[a&7]=b;ad(this,b);--this.C},function(a){var b=T(this,a>>6);a=T(this,a);bd(this,b-a,a,b);--this.C},function(a){ad(this,T(this,a>>6)&T(this,a));--this.C},function(a){hd(this,a,T(this,a>>6),md);--this.C},function(a){hd(this,a,T(this,a>>6),od);--this.C},function(a){hd(this,a,T(this,a>>6),ld);--this.C},sd,sd,function(a){var b=gd(this,a>>6),b=b&128?b|65280:b;a&56?(b&=255,R(this,S(this,a,wb),b)):this.b[a&7]=b;ad(this,b<<
|
||||
8);--this.C},function(a){var b=gd(this,a>>6)<<8;a=gd(this,a)<<8;bd(this,b-a,a,b);--this.C},function(a){ad(this,(gd(this,a>>6)&gd(this,a))<<8);--this.C},function(a){id(this,a,gd(this,a>>6),nd);--this.C},function(a){id(this,a,gd(this,a>>6),pd);--this.C},function(a){hd(this,a,T(this,a>>6),qd);--this.C},sd];
|
||||
function td(a){u.call(this,"ROM",a,td);this.i=null;this.J=a.addr;this.u=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){ud(d,a,b,e)})}}w(td);td.prototype.Xa=function(a,b,d,c){this.G=b;this.f=d;this.H=c;vd(this)};
|
||||
td.prototype.Na=function(){if(this.Ka){if(this.H){var a=this.H,b=this.id,d=this.J,c=this.u,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,nc:e})}delete this.Ka}return!0};td.prototype.Ma=function(){return!0};
|
||||
function ud(a,b,d,c){if(c)a.oa("Unable to load system ROM (error "+c+": "+b+")");else{ab(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.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);vd(a)}}
|
||||
function vd(a){if(!hb(a))if(!a.I)E(a);else if(a.i&&a.G){a.u||(a.u=a.i.length);if(a.i.length!=a.u)ib(a,"ROM size ("+r(a.i.length,8,!0)+") does not match specified size ("+r(a.u,8,!0)+")");else{var b;b=a.J;if(Hb(a.G,b,a.u,a.N?1:nc)){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.u,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.u;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}}E(a)}}Qa(function(){for(var a=A(document,"pdp11","rom"),b=0;b<a.length;b++){var d=a[b],c=z(d),c=new td(c);db(c,d)}});function wd(a){u.call(this,"RAM",a,wd);this.C=a.addr;this.u=a.size;this.i=!1}w(wd);m=wd.prototype;m.Xa=function(a,b,d,c){this.G=b;this.f=d;this.H=c;E(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.u&&Hb(this.G,this.C,this.u,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=A(document,"pdp11","ram"),b=0;b<a.length;b++){var d=a[b],c=z(d),c=new wd(c);db(c,d)}});function xd(a){u.call(this,"Keyboard",a,xd,65536);E(this)}w(xd);xd.prototype.ua=function(){return!1};xd.prototype.Xa=function(a,b,d,c){this.i=a;this.f=d;this.H=c;this.da=null};
|
||||
Qa(function(){for(var a=A(document,"pdp11","keyboard"),b=0;b<a.length;b++){var d=a[b],c=z(d),c=new xd(c);db(c,d)}});function yd(a){u.call(this,"Debugger",a,yd);this.wa=a.base||16;this.$=this.Ja=this.P=0;this.da=!1;this.I=-1;this.C=[];this.ga={}}w(yd);var zd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function Ad(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 Bd(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 yd(a,b,d){var c;if(b){b=zd(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=Ad(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&&vd[n]<vd[k[k.length-1]]&&xd(g,k,1);k.push(n);b=b.substr(p+q)}xd(g,k)&&1==g.length||(e=!0);e?d&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(c=g.pop(),d&&Bd(a,null,
|
||||
c))}return c}function zd(a,b){for(var d;(d=b.match(/\{(.*?)}/))&&!(0<=d[1].indexOf("{"));){var c=yd(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 Ad(a,b,d,c){var f;null!=b?(f=a.ga[b],null==f&&(f=aa(b,a.wa)),null!=f||c||a.g("invalid "+(d?d:"value")+": "+b)):c||a.g("missing "+(d||"value"));return f}function Bd(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 Cd(a,b){if(b)return Bd(a,b,a.ga[b]);var d=0;for(b in a.ga)Bd(a,b,a.ga[b]),d++;return 0<d}function V(a,b,d){switch(a.wa){case 8:return ba(b,d);case 10:return b.toString();default:return r(b,d)}}
|
||||
function Dd(a){ud.call(this,a);this.W=W();this.zb=W();this.aa=W();this.N=[];this.u=this.Y=this.J=[];Ed(this);this.ya=0;Fd(this);this.Sa=[];Gd(this,a.messages);this.mb=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return Hd(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return Hd(b,a)})}$a(Dd,ud);
|
||||
var Id={"?":"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"},Jd="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(" "),
|
||||
Kd={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 Cd(a,b,d){var c;if(b){b=Dd(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=Ed(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&&zd[n]<zd[k[k.length-1]]&&Bd(g,k,1);k.push(n);b=b.substr(p+q)}Bd(g,k)&&1==g.length||(e=!0);e?d&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(c=g.pop(),d&&Fd(a,null,
|
||||
c))}return c}function Dd(a,b){for(var d;(d=b.match(/\{(.*?)}/))&&!(0<=d[1].indexOf("{"));){var c=Cd(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 Ed(a,b,d,c){var f;null!=b?(f=a.ga[b],null==f&&(f=aa(b,a.wa)),null!=f||c||a.g("invalid "+(d?d:"value")+": "+b)):c||a.g("missing "+(d||"value"));return f}function Fd(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 Gd(a,b){if(b)return Fd(a,b,a.ga[b]);var d=0;for(b in a.ga)Fd(a,b,a.ga[b]),d++;return 0<d}function V(a,b,d){switch(a.wa){case 8:return ba(b,d);case 10:return b.toString();default:return r(b,d)}}
|
||||
function Hd(a){yd.call(this,a);this.V=W();this.zb=W();this.aa=W();this.N=[];this.u=this.Y=this.J=[];Id(this);this.ya=0;Jd(this);this.Sa=[];Kd(this,a.messages);this.mb=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return Ld(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return Ld(b,a)})}w(Hd,yd);
|
||||
var Md={"?":"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"},ke="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(" "),
|
||||
le={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=Dd.prototype;
|
||||
m.Xa=function(a,b,d,c){this.F=b;this.f=d;this.i=a;(a=Ac(a,"messages"))&&Gd(this,a);this.rc=Kd;ie(this,function(a){a:{var b=c.F.R,d=a[0],g=a=0,k=b.length;if(d){a=X(je(c,d));if(-1===a){c.g("invalid address: "+d);break a}g=a>>>c.F.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=Kb[d],n&&c.g(r(n.id,8)+" %"+r(g<<c.F.X,8)+" %%"+r(n.C,8)+" "+r(n.Ub,4,
|
||||
!0)+" "+r(n.size,4,!0)+" "+l),d!=mc&&(d=-1),l=0);a+=c.F.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="",Hd(c,b,!0);else if(27==a.keyCode)d.value=b="";else if(38==a.keyCode?(b=null,c.I<c.G.length-1&&(b=c.G[++c.I])):40==a.keyCode&&(0<c.I?b=c.G[--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="";Hd(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.Tb=function(){this.va&&this.va.focus()};function X(a){a=a&&a.C;null==a&&(a=-1);return a}m.Hb=function(a,b){var d=255,c=X(a);-1!==c&&(d=this.F,d=d.R[(c&d.i)>>>d.X].Ob(c&d.F,c),b&&ke(a,b));return d};m.Ha=function(a,b){var d=65535,c=X(a);-1!==c&&(d=Lb(this.F,c),b&&ke(a,b));return d};
|
||||
m.bc=function(a,b,d){var c=X(a);if(-1!==c){var f=this.F;f.R[(c&f.i)>>>f.X].yb(c&f.F,b&255,c);d&&ke(a,d);Dc(this.f,!0)}};m.jc=function(a,b,d){var c=X(a);if(-1!==c){var f=this.F,e=c&f.F,h=(c&f.i)>>>f.X;e!=f.F?f.R[h].lc(e,b&65535,c):(f.R[h++].yb(e,b&255,c),f.R[h&f.u].yb(0,b>>8&255,c+1));d&&ke(a,d);Dc(this.f,!0)}};function W(a){return{C:a,Ga:!1}}function le(a){return[a.C,a.Ga]}function me(a){return{C:a[0],Ga:a[1]}}
|
||||
function je(a,b,d){var c;d=(d?a.W:a.zb).C;if(void 0!==b){c=b=zd(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=yd(a,b,void 0)}null!=d&&(c=W(d));return c}function ne(a,b,d){d&&(d=d.match(/(['"])(.*?)\1/))&&(b.Gc=wd(a,b.Bc=d[2]))}function ke(a,b){null!=a.C&&(a.C+=b||1)}
|
||||
function Gd(a,b){a.H=a;a.ha=a.Hc=536870912;a.za=null;a.Ea=[];var d=wd(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(d.length)for(var c in yb){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|=yb[c],a.g(c+" messages enabled"))}}function ie(a,b){for(var d in yb)if(64==yb[d]){a.Sa[d]=b;break}}
|
||||
m.message=function(a,b){b&&(a+=" at "+V(this,W(this.f.b[7]).C));if(this.ha&1073741824)this.Ea.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.f){var d=this.f;Wc(d);d.$=0;Dc(d)}};m.Ib=function(){this.g("Type ? for help with PDP11 Debugger commands");this.xa();if(this.mb){var a=this.mb;this.mb=null;Hd(this,a)}};
|
||||
function Fd(a){var b;if(hd(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(!oe(this))return!1;this.f.lb(a);return!0};
|
||||
m.wb=function(a,b,d){if(!oe(this))return!1;this.P=0;a||hd(this)&&id(this,this.f.b[7],0);try{var c=this.f.wb(a);0<c&&(this.P+=c,Uc(this.f,c,!0),Ec(this.f,c),this.$++)}catch(f){"number"!=typeof f&&(this.P=0,jb(this.f,f.stack||f.message))}!1!==d&&Dc(this.f);this.xa(b||!1);return 0<this.P};m.ma=function(a){this.f&&this.f.ma(a)};m.xa=function(a){void 0===a&&(a=!0);this.W=W(this.f.b[7]);a&&1!=this.ea?pe(this):qe(this)};
|
||||
function oe(a){var b;if(b=a.f&&ib(a.f))b=a.f,b.j.fa?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!hb(a.f)?(a=a.f,a.j.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){Fd(this);this.$=this.Ja=0;this.za=null;this.P=0;this.W=W(this.f.b[7]);this.j.ia=!1;re(this);a||this.xa()};
|
||||
m.save=function(){var a=new $c(this);N(a,0,le(this.W));N(a,1,le(this.aa));N(a,2,[this.G,this.da,this.ha]);N(a,3,this.N);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.W=me(a[b++]),this.aa=me(a[b++]),this.G=a[b][0],"string"==typeof this.G&&(this.G=[this.G]),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.j.ia=!0;this.Kc=a;this.Mc=b};
|
||||
m.stop=function(a,b){if(this.j.ia){this.j.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+" (";hd(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.xa(!0);this.Tb();re(this,this.f.b[7])}};function hd(a){return 1<a.u.length||!!a.ya}
|
||||
function id(a,b,d){var c=a.f;if(0<d&&(a.ya&&!--a.ya||vc(a,b,1,a.u)))return!0;0<=d&&a.ja.length&&(a.$++,null!=Lb(a.F,b)&&(b=a.T[a.ra],b.C=c.b[7],b.Ga=!1,++a.ra==a.T.length&&(a.ra=0)));return!1}function Ed(a){var b,d;a.u=["bp"];if(void 0!==a.Y)for(b=1;b<a.Y.length;b++){d=a.Y[b];var c=a.F;wc(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.F,wc(c.R[X(d)>>>c.X],!0);a.J=["bw"];a.Eb=0}
|
||||
m.eb=function(a,b,d){var c=!0;d||se(this,a,b,!1,!0);if(a!=this.u){var f=X(b);if(-1===f)this.g("invalid address: "+V(this,b.C)),c=!1;else{var e=this.F;e.R[f>>>e.X].eb(f&e.F,a==this.J)}}c&&(a.push(b),d?b.Ga=!0:(te(this,a,a.length-1,"set"),Fd(this)));return c};function se(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.Ga)){e=!0;g.Ga||f||te(a,b,h,"cleared");b.splice(h,1);b!=a.u&&(c=a.F,wc(c.R[d>>>c.X],b==a.J));g.Ga||Fd(a);break}}return e}
|
||||
function ue(a,b){for(var d=1;d<b.length;d++)te(a,b,d);return b.length-1}function te(a,b,d,c){d=b[d];a.g(b[0]+" "+V(a,d.C)+(c?" "+c:d.Bc?' "'+d.Bc+'"':""))}function re(a,b){if(void 0!==b)vc(a,b,1,a.u,!0),a.ea=0;else for(var d=1;d<a.u.length;d++){var c=a.u[d];if(c.Ga){if(!se(a,a.u,c,!0))break;d=0}}}
|
||||
function vc(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=X(g),l=0;l<d;l++)if(b+l==k){var n,e=!0;g.Ga&&(se(a,c,g,!0),f=!0);if(n=g.Gc){for(var e=!1,p=0;p<n.length;p++)if(!ve(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.f.j.ia||(e=!0)}if(e){f||te(a,c,h,"hit");break}}}a.Eb--;return e}
|
||||
function we(a,b,d,c){var f=W(b.C),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=Jd[h[0]],l=h.length-1,n=1;n<=l;n++){var p=h[n];if(void 0!==p){var q;q=a;var C=p,p=b,x="",y=void 0,y=void 0,y=C&61440;if(4096==y)y=(e&255)<<24>>23,y=p.C+y&65535,x=V(q,y);else if(8192==y)y=(e&63)<<1,y=p.C-y&65535,x=V(q,y);else if(12288==y)y=e&7,x=V(q,y,2);else if(24576==y)y=e&63,x=V(q,y);else if(y=e&C,C&4032&&(y>>=6,C>>=6),C&63){var C=void 0,B=y&7;switch(y&56){case 0:x=xe(B);break;case 8:x=
|
||||
"@"+xe(B);break;case 16:7>B?x="("+xe(B)+")+":(C=q.Ha(p,2),x="#"+V(q,C));break;case 24:7>B?x="@("+xe(B)+")+":(C=q.Ha(p,2),x="@#"+V(q,C));break;case 32:x="-("+xe(B)+")";break;case 40:x="@-("+xe(B)+")";break;case 48:C=q.Ha(p,2);x=V(q,C)+"("+xe(B)+")";7==B&&(x=[x,V(q,C+p.C&65535)]);break;case 56:C=q.Ha(p,2),x="@"+V(q,C)+"("+xe(B)+")",7==B&&(x=[x,V(q,C+p.C&65535)])}}q=x;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.C)+":";if(-1!==
|
||||
f.C&&-1!==b.C){do if(e+=" "+V(a,a.Ha(f,2)),null==f.C)break;while(f.C!=b.C)}h+=na(e,24);h+=na(k,5);g&&(h+=" "+g);d&&(h=na(h,60)+";"+d,h=a.f.j.ob?h+("cycles="+Rc(a.f).toString()+" cs="+r(a.f.Lb)):h+(null!=c?"="+c.toString():""));return h}function ye(a,b){var d;switch(b){case "N":d=a.f.w&32768?8:0;break;case "Z":d=a.f.B&65535?0:4;break;case "V":d=a.f.A&32768?2:0;break;case "C":d=a.f.D&65536?1:0;break;default:d=0}return b.charAt(0)+(d?"1":"0")+" "}function xe(a){return 6>a?"R"+a:6==a?"SP":"PC"}
|
||||
function ze(a,b){var d="",c=a.f;8>b?(d=xe(b),d+="="+V(a,c.b[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,Pb(c)));d&&(d+=" ");return d}function Ae(a){var b,d="";for(b=0;6>b;b++)d+=ze(a,b);d=d+"\n"+(ze(a,6)+ze(a,7)+ze(a,20));return d+=ye(a,"T")+ye(a,"N")+ye(a,"Z")+ye(a,"V")+ye(a,"C")}m.qc=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Be(a,b,d){var c=[],f=X(b)>>>0;for(b=0;b<a.N.length;b++){var e=a.N[b],h=e.C>>>0,g=e.Qc;if(f>=h&&f<h+g){f=pa(e.nc,[f-h],a.qc);0<=f?Ce(a,b,f,c):d&&(f=~f,Ce(a,b,f-1,c),Ce(a,b,f,c));break}}return c}function Ce(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 De(a,b){var d=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(d){if(!d[1])return Cd(a)||a.g("no variables"),!0;if(!d[2])return Cd(a,d[1]);if(!d[3])return delete a.ga[d[1]],!0;var c=yd(a,d[3]);return void 0!==c?(a.ga[d[1]]=c,!0):!1}a.g("invalid assignment:"+b);return!1}
|
||||
function Ee(a,b,d){var c=null;if(b=je(a,b,!0)){var f=Be(a,b,!0);if(f.length){var e,h;f[0]&&(h="",(e=b.C-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.C)&&(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 pe(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.f;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=yd(a,e);if(void 0!==g)switch(h=!0,f.toUpperCase()){case "PC":c.b[7]=g;a.W=W(c.b[7]);break;case "NF":c.w=g?32768:0;break;case "ZF":c.B=g?0:1;break;case "VF":c.A=
|
||||
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}Dc(c);a.g("updated registers:")}a.g(Ae(a));d&&(a.W=W(c.b[7]),qe(a,V(a,a.W.C)))}}function Fe(a,b){b=oa(b);var d=b.match(/^(['"])(.*?)\1$/);d?a.g(d[2]):yd(a,b,!0)}function Ge(a,b,d){var c="t"!=b;d=Ad(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(){Dc(a.f);gb(a,!1)})}
|
||||
function qe(a,b,d,c){if(b=je(a,b,!0)){void 0===c&&(c=1);var f=256;if(void 0!==d){c=je(a,d,!0);if(!c||c.C<b.C)return;f=c.C-b.C;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=Be(a,b),k=b.C;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=we(a,b,h,e);a.g(e);a.W=b;f-=b.C-k;d++}}}
|
||||
function ve(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.C)),a.W=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.C)+" "+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=je(a,e[1],!0);
|
||||
if(n)if(a.aa=n,void 0===e[2])a.g("begin assemble at "+V(a,n.C)),a.da=!0,Dc(a.f);else{var p;a.g("not supported yet");p=[];if(p.length){for(var q=0;q<p.length;q++)a.bc(n,p[q],1);a.g(we(a,a.aa))}}break;case "b":a:{var C=e[0],x=e[1],y=b;if("?"==x)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 B=C.charAt(1);if("l"==B){var Ka=0,Ka=Ka+ue(a,a.u),Ka=Ka+ue(a,a.Y);(Ka+=ue(a,a.J))||a.g("no breakpoints")}else if("n"==B)a.ya=Ad(a,x),a.g("break after "+a.ya+" instruction(s)");else if(void 0===x)a.g("missing breakpoint address");else{var Y=W();if("*"!=x&&(Y=je(a,x,!0),!Y))break a;"c"==B?null==Y.C?(Ed(a),a.g("all breakpoints cleared")):se(a,a.u,Y)||se(a,a.Y,Y)||se(a,a.J,Y)||a.g("breakpoint missing: "+V(a,Y.C)):null!=Y.C&&(ne(a,Y,y),"p"==B?a.eb(a.u,Y):"r"==B?a.eb(a.Y,Y):"w"==B?a.eb(a.J,Y):
|
||||
a.g("unknown breakpoint command: "+B))}}}break;case "c":a.fb&&(a.fb.value="");break;case "d":a:{var La,Ma=e[0],ga=e[1],xa=e[2],$e=e[3];if("?"==ga){var ha="";for(La in yb)a.Sa[La]&&(ha&&(ha+=","),ha+=La);ha+=",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");ha.length&&a.g("dump extension commands:\n\t"+
|
||||
ha)}else if("state"==ga){var Ld=He(a.i,!0);"console"==xa?console.log(Ld):(a.fb&&(a.fb.value=""),a.g(Ld))}else if("symbols"==ga)for(var Fc=0;Fc<a.N.length;Fc++){var Gc=a.N[Fc],Na;for(Na in Gc.Ka)if("."!=Na.charAt(0)){var Md=Gc.Ka[Na].o;if(void 0!==Md){var Nd=Gc.Ka[Na].l;Nd&&(Na=Nd);a.g(V(a,Md)+" "+Na)}}}else{if("d"==Ma){for(La in yb)if(e[1]==La){var Od=a.Sa[La];Od?(e.shift(),e.shift(),Od(e)):a.g("no dump registered for "+ga);break a}ga||(Ma=a.Oc||"db")}else a.Oc=Ma;if("dh"==Ma){var Pd=ga,Qd=xa,Rd=
|
||||
"",Sd=0,Q=a.ra,ia=a.T;if(ia.length){var Z=+Pd||a.Vb,Oa=+Qd||10;isNaN(Z)?Z=Oa:Rd="more ";Z>ia.length&&(a.g("note: only "+ia.length+" available"),Z=ia.length);Q-=Z;0>Q&&(null==ia[ia.length-1].C?(Z=Q+Z,Q=0):Q+=ia.length);var Hc=[];"call"==Qd&&(Oa=1E5,Hc=["CALL"]);for(void 0!==Pd&&a.g(Z+" instructions earlier:");0<Oa&&Q!=a.ra;){var Td=ia[Q++];if(null==Td.C)break;var mb=W(Td.C),af=Z--,Ud=we(a,mb,"history",af);(!Hc.length||0<=Ud.indexOf(Hc[0]))&&a.g(Ud);mb.ec&&(Q+=mb.ec,Oa-=mb.ec,Z-=mb.ec);Q>=ia.length&&
|
||||
(Q=0);a.Vb=Z;Sd++;Oa--}}Sd||(a.g("no "+Rd+"history available"),a.Vb=void 0)}else{var Qb=je(a,ga);if(Qb){var Rb=0;xa&&("l"==xa.charAt(0)&&(xa=xa.substr(1)||$e),Rb=Ad(a,xa)>>>0,65536<Rb&&(Rb=65536));for(var ya="",Sb="dd"==Ma?4:"dw"==Ma?2:1,Tb=Sb*Rb||128,bf=Tb+15>>4||1;bf--&&0<Tb;){var Ub=0,Ic=0,nb,ob="",Jc="",ga=V(a,Qb.C);for(nb=16;0<nb&&0<Tb;nb--){var Vb=a.Hb(Qb,1),Ub=Ub|Vb<<(Ic++<<3);Ic==Sb&&(ob+=r(Ub,2*Sb),ob+=1==Sb?9==nb?"-":" ":" ",Ub=Ic=0);Jc+=32<=Vb&&128>Vb?String.fromCharCode(Vb):".";Tb--}ya&&
|
||||
(ya+="\n");ya+=ga+" "+ob+(0==nb?" "+Jc:"")}ya&&a.g(ya);a.zb=Qb}}}}break;case "e":if("else"==e[0])break;var Wb=1,Vd=255,Wd=a.Hb,Xd=a.bc;"ew"==e[0]&&(Wb=2,Vd=65535,Wd=a.Ha,Xd=a.jc);var Yd=Wb<<1,Zd=e[1];if(null==Zd)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=je(a,Zd);if(Xb)for(var Yb=2;Yb<e.length;Yb++){var pb=yd(a,e[Yb]);if(void 0===pb){a.g("unrecognized value: "+e[Yb]);break}pb&~Vd&&a.g("warning: "+r(pb)+" exceeds "+
|
||||
Wb+"-byte value");var cf=Wd.call(a,Xb);a.g("changing "+V(a,Xb.C)+" from "+r(cf,Yd,!0)+" to "+r(pb,Yd,!0));Xd.call(a,Xb,pb,Wb)}}break;case "g":a:{var $d=e[1],df=b;if(void 0!==$d){var Kc=je(a,$d,!0);if(!Kc)break a;ne(a,Kc,df);a.eb(a.u,Kc,!0)}a.lb(!0)||d||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var Lc;if(a.j.ia)Lc="halting",a.ma();else{if(hb(a,!0))break a;Lc="already halted"}d||a.g(Lc)}break;case "i":if("if"==e[0]){var Mc;var qb=b.substr(2),qb=oa(qb);yd(a,qb)?(d||a.g("true: "+
|
||||
qb),Mc=!0):(d||a.g("false: "+qb),Mc=!1);Mc||(c=!1)}break;case "k":var ef=e[0];if("?"==e[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var Nc=0,ae=W(),rb=W(a.f.b[6]);for(a.g("stack trace for "+V(a,rb.C));10>Nc;){for(var za=null,ff=256;65536>rb.C>>>0;){ae.C=a.Ha(rb,2);if(null==rb.C||!ff--)break;for(var gf=a,Zb=ae,be=null,sb=Zb.C,ce=sb,Oc=1;6>=Oc&&sb;Oc++){if(2<Oc){Zb.C=sb;var $b=we(gf,Zb);if(0<=$b.indexOf("JSR")){var de=$b.indexOf(" ");if(sb+
|
||||
($b.indexOf(" ",de+1)-de-1)/2==ce){be=$b;break}}}sb--}Zb.C=ce;if(za=be)break}if(!za||null==za)break;var ee=null;if("ks"==ef){var fe=za.match(/[0-9A-F]+$/);fe&&(ee=Ee(a,fe[0]))}za=na(za,50)+" ;"+(ee||"stack="+V(a,rb.C));a.g(za);Nc++}Nc||a.g("no return addresses found")}break;case "l":if("ln"==e[0]){Ee(a,e[1],!0);break}break;case "m":a:{var ja,ka=null,D=e[1];"?"==D&&(D=void 0);if(void 0!==D){var qa=0;if("all"==D)qa=1878917119,D=null;else if("on"==D)ka=!0,D=null;else if("off"==D)ka=!1,D=null;else{"keys"==
|
||||
D&&(D="key");"kbd"==D&&(D="keyboard");for(ja in yb)if(D==ja){qa=yb[ja];ka=!!(a.ha&qa);break}if(!qa){a.g("unknown message category: "+D);break a}}if(qa)if("on"==e[2])a.ha|=qa,ka=!0;else if("off"==e[2]&&(a.ha&=~qa,ka=!1,1073741824==qa)){for(var Pc=0;Pc<a.Ea.length;Pc++)a.g(a.Ea[Pc]);a.Ea=[]}}var hf=0,ra="";for(ja in yb)if(!D||D==ja){var jf=!!(a.ha&yb[ja]);if(null===ka||ka==jf)ra&&(ra+=","),++hf%10||(ra+="\n\t"),"key"==ja&&(ja="keys"),ra+=ja}void 0===D&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");
|
||||
a.g((null!==ka?ka?"messages on: ":"messages off: ":"message categories:\n\t")+(ra||"none"));Fd(a)}break;case "p":if("print"==e[0]){Fe(a,b.substr(5));break}var kf="pr"==e[0]?1:0;if(a.ea)a.g("step in progress");else{var ge=W(a.f.b[7]);a.Hb(ge);a.ea?(a.eb(a.u,ge,!0),a.lb()||(a.i&&a.i.Tb(),a.ea=0)):Ge(a,kf?"tr":"t")}break;case "r":if("reset"==b){a.i&&a.i.reset();break}pe(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.wa=tb;else{a.g("invalid base: "+tb);
|
||||
break}}a.g("default base: "+a.wa);break;case "cs":var ub;void 0!==e[3]&&(ub=+e[3]);switch(e[2]){case "int":a.f.qb=ub;break;case "start":a.f.Mb=ub;break;case "stop":a.f.rb=ub;break;default:a.g("unknown cs option");break a}void 0!==ub&&Cc(a.f);a.g("checksums "+(a.f.j.ob?"enabled":"disabled"));break;case "sp":void 0!==e[2]&&(Tc(a.f,+e[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.f.hb.toFixed(2)+"Mhz")+" ("+a.f.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":Ge(a,e[0],e[1]);break;case "u":qe(a,e[1],e[2],8);break;case "v":if("var"==e[0]){De(a,b.substr(3))||(c=!1);break}a.g("PDP11js version 1.30.0 ("+a.f.vc+",RELEASE"+(kb?",TYPEDARRAYS":",LONGARRAYS")+
|
||||
")");a.g(window?window.navigator.userAgent:"");break;case "?":if(e[1]){Fe(a,b.substr(1));break}var vb="commands:",Qc;for(Qc in Id)vb+="\n"+na(Qc,9)+Id[Qc];hd(a)||(vb+="\nnote: history disabled if no exec breakpoints");a.g(vb);break;default:a.g("unknown command: "+b),c=!1}}}catch(he){a.g("debugger error: "+(he.stack||he.message)),c=!1}return c}function Hd(a,b,d){b=wd(a,b,d);for(var c in b)if(!ve(a,b[c]))return!1;return!0}
|
||||
Qa(function(){for(var a=z(document,"pdp11","debugger"),b=0;b<a.length;b++){var d=a[b],c=w(d),c=new Dd(c);eb(c,d)}});
|
||||
function Ie(a,b,d){u.call(this,"Computer",a,Ie,67108864);this.j.fa=!1;Je(this,b);this.Y=Ac(this,"autoPower",a);this.G=0;this.ga=a.busWidth||a.buswidth;this.i=Ke;this.T=null;this.N=this.da=!1;this.url=Ac(this,"url")||"";(Math.random()+.1).toString(36);this.u=Le(this);if(this.f=db("CPU",this.id)){this.H=db("Debugger",this.id);this.F=new Bb({id:this.oc+".bus",busWidth:this.ga},this.f,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.F,this.f,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=Ac(this,"state")||(e=!0,a.state))b=this.$=a,e||(this.N=!0,this.i=Ke),this.i&&
|
||||
(this.W=new $c(this,"1.30.0"),Me(this.W)?b=null:delete this.W);!b&&this.i&&(b=Ne(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&&Oe(this,this.Nb)}else t("Unable to find CPU component")}$a(Ie);var Ke=0;
|
||||
function Je(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 Ac(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 Oe(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(){Oe(a,b,d)});return}}b.call(a,d)}
|
||||
function Pe(a,b){var d=new $c(a,"1.30.0","validate");if(Me(d)&&Qe(d)){var c=Re(d,"timestamp"),f=b?Re(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=Ie.prototype;
|
||||
m.Nb=function(a){void 0===a&&(a=this.i||(this.T?1:Ke));if(!this.G){this.G++;var b=!1,d=!1;this.aa=!1;var c=this.W||new $c(this,"1.30.0");if(-1==a)b=!0;else if(a>Ke){if(Me(c,this.T)){this.J=new $c(this,"1.30.0","failsafe");Me(this.J)&&(Se(this,c),a=2,Te(this.J));N(this.J,"timestamp",ta());Ue(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=Qe(c)){var e=Re(c,"code"),h=Re(c,"data");e&&("ok"==e?Me(c,h):("error"==
|
||||
e&&"no machine state"!=h?(this.oa("Error: "+h),"unable to verify user"==h&&(Ca("user",""),this.u=null)):this.g(e+": "+h),Te(c),Me(c)?(d=Qe(c),f=!0):d=!1))}f&&Pe(this,d?c:null)}else 2==a&&c.clear()}else Pe(this);delete this.T;delete this.W}f=cb(this.id);for(e=0;e<f.length;e++)h=f[e],h!==this&&h!=this.f&&(d=Ve(this,h,c,b,d));b=[c,a,d];-1!=a?Oe(this,this.tc,b):this.tc(b)}};
|
||||
function Ve(a,b,d,c,f){if(!b.j.fa){b.j.fa=!0;if(b.Na){var e=null;f&&((e=Re(d,b.id))||(e=Re(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=Ke,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.ja=!0;this.j.fa=!0;var c=this.O.power;c&&(c.textContent="Shutdown");this.f&&(Ve(this,this.f,b,d,a),this.f.Db());this.aa&&(Se(this,b),b.clear());!d&&this.J&&(this.J.clear(),delete this.J);this.G=0};
|
||||
function Se(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.u||"",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 He(a,b,d){var c,f="none";if(a.G)return null;a.G--;var e=new $c(a,"1.30.0"),h=new $c(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.f&&a.f.Ma&&(d&&a.f.ma(),c=a.f.Ma(b,d),"object"===typeof c&&N(e,a.f.id,c),d&&(a.f.j.fa=!1,!1===c&&(f=null)));for(var g=cb(a.id),k=0;k<g.length;k++){var l=g[k];l.j.fa&&(l.Ma&&(c=l.Ma(b,d),"object"===typeof c&&N(e,l.id,c)),
|
||||
d&&(l.j.fa=!1,!1===c&&(f=null)))}f&&(d?(g=c=!1,b?(a.u&&We(a,a.u,e.toString()),Ue(h)&&Ue(e)||(f=null,c=g=!0)):a.i&&(c=!0,g=3==a.i),c&&e.clear(g)):f=e.toString());d&&(a.j.fa=!1,b=a.O.power)&&(b.textContent="Power");a.G=0;return f}
|
||||
m.reset=function(){this.F&&this.F.reset&&(this.H&&fb(this,0)&&this.H.message("Resetting "+this.F.type,void 0),this.F.reset());for(var a=cb(this.id),b=0;b<a.length;b++){var d=a[b];d!==this&&d!==this.F&&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.G||(c.j.fa?He(c,!1,!0):Oe(c,c.Nb))},!0;case "reset":return this.O[b]=d,d.onclick=function(){if(c.j.fa&&!c.G)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.");He(c,a,!0);!a&&c.$?window&&window.location.reload():c.Nb(Ke)}else c.reset(),c.f&&c.f.Db()},!0;case "save":if(ea()){d.parentNode.removeChild(d);break}this.O[b]=
|
||||
d;d.onclick=function(){var a=Le(c,!0);if(a){var b=!!(c.i&&!c.P||c.$),d=He(c,b);b?We(c,a,d):c.oa("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function Le(a,b){var d=a.u;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=Xe(a,d))||a.oa("The user ID is invalid."))):b&&a.oa("Browser local storage is not available"));return d}
|
||||
function Xe(a,b){a.u=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.u=d.data)}catch(f){t(f.message+" ("+c+")")}return a.u}function Ne(a){var b=null;a.u&&(b=fa()+"/api/v1/user?req=load&user="+a.u+"&state="+Ye(a,"1.30.0"));return b}
|
||||
function We(a,b,d){if(d){var c={req:"store"};c.user=b;c.state=Ye(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.u=null)}}m.Tb=function(){};
|
||||
m.xa=function(a){this.f&&this.f.xa(a);this.I&&this.I.xa(a)};Qa(function(){for(var a=z(document,"pdp11-machine"),b=0;b<a.length;b++)for(var d=a[b],c=w(d),d=z(d,"pdp11","computer"),f=0;f<d.length;f++){var e=d[f],h=w(e),h=new Ie(h,c,!0);eb(h,e);h.Y&&Oe(h,h.Nb)}});Ga.show.push(function(){for(var a=z(document,"pdp11","computer"),b=0;b<a.length;b++){var d=w(a[b]);(d=db("Computer",d.id))&&d.ja&&!d.j.fa&&d.Nb(-1)}});
|
||||
Ga.exit.push(function(){for(var a=z(document,"pdp11","computer"),b=0;b<a.length;b++){var d=w(a[b]);(d=db("Computer",d.id))&&d.j.fa&&He(d,!(!d.i||d.P),!0)}});function $c(a,b,d){this.id=a.id;this.key=Ye(a,b,d);this.H=a.H;Te(this,a.Nc)}function Ye(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}
|
||||
$c.prototype={constructor:$c,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){Te(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 Te(a,b){a[a.id]={};b&&N(a,"parms",b);a.f=!1}function Ue(a){var b=!0;if(Aa()){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 Qe(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(d){t(d.message||d),b=!1}return b}function Me(a,b){return b?(a[a.id]=b,a.f=!0):a.f?!0:Aa()&&(b=Ba(a.key))?(a[a.id]=b,a.f=!0):!1}function Re(a,b){return a[a.id][b]||null}function N(a,b,d){try{a[a.id][b]=d}catch(c){}}var Ze=0;
|
||||
function lf(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)):mf(g,a,b,d,c,f,e)})}
|
||||
function mf(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?nf(a,e,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function nf(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);nf(a,b,d)}})}else d(a,null)}
|
||||
function of(a,b,d,c){function f(a){if(void 0===g){var b=h&&z(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ma(a))}function e(a){f("Error: "+a);k&&(--Ze||Sa(!0));k=!1}var h,g,k=!0;Ze++;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?lf(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,--Ze||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),--Ze||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)?lf(b,a,c,!0,f,l):mf(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 of(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=Hd.prototype;
|
||||
m.Xa=function(a,b,d,c){this.G=b;this.f=d;this.i=a;(a=Ac(a,"messages"))&&Kd(this,a);this.rc=le;me(this,function(a){a:{var b=c.G.R,d=a[0],g=a=0,k=b.length;if(d){a=Z(ne(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=Kb[d],n&&c.g(r(n.id,8)+" %"+r(g<<c.G.X,8)+" %%"+r(n.A,8)+" "+r(n.Ub,4,
|
||||
!0)+" "+r(n.size,4,!0)+" "+l),d!=mc&&(d=-1),l=0);a+=c.G.Aa;g++}}});E(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="",Ld(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="";Ld(c,a,!0);return!0}return!1}),!0;case "step":return this.O[b]=d,Fa(d,function(a){var b=!1;gb(c,!0)||(fb(c,!0),b=c.wb(a?1:0),fb(c,!1));return b}),!0}return!1};m.Tb=function(){this.va&&this.va.focus()};function Z(a){a=a&&a.A;null==a&&(a=-1);return a}m.Hb=function(a,b){var d=255,c=Z(a);-1!==c&&(d=this.G,d=d.R[(c&d.i)>>>d.X].Ob(c&d.G,c),b&&oe(a,b));return d};m.Ha=function(a,b){var d=65535,c=Z(a);-1!==c&&(d=Lb(this.G,c),b&&oe(a,b));return d};
|
||||
m.bc=function(a,b,d){var c=Z(a);if(-1!==c){var f=this.G;f.R[(c&f.i)>>>f.X].yb(c&f.G,b&255,c);d&&oe(a,d);Dc(this.f,!0)}};m.jc=function(a,b,d){var c=Z(a);if(-1!==c){var f=this.G,e=c&f.G,h=(c&f.i)>>>f.X;e!=f.G?f.R[h].lc(e,b&65535,c):(f.R[h++].yb(e,b&255,c),f.R[h&f.u].yb(0,b>>8&255,c+1));d&&oe(a,d);Dc(this.f,!0)}};function W(a){return{A:a,Ga:!1}}function pe(a){return[a.A,a.Ga]}function qe(a){return{A:a[0],Ga:a[1]}}
|
||||
function ne(a,b,d){var c;d=(d?a.V:a.zb).A;if(void 0!==b){c=b=Dd(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=Cd(a,b,void 0)}null!=d&&(c=W(d));return c}function re(a,b,d){d&&(d=d.match(/(['"])(.*?)\1/))&&(b.Gc=Ad(a,b.Bc=d[2]))}function oe(a,b){null!=a.A&&(a.A+=b||1)}
|
||||
function Kd(a,b){a.H=a;a.ha=a.Hc=536870912;a.za=null;a.Ea=[];var d=Ad(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(d.length)for(var c in yb){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|=yb[c],a.g(c+" messages enabled"))}}function me(a,b){for(var d in yb)if(64==yb[d]){a.Sa[d]=b;break}}
|
||||
m.message=function(a,b){b&&(a+=" at "+V(this,W(this.f.b[7]).A));if(this.ha&1073741824)this.Ea.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.f){var d=this.f;Wc(d);d.$=0;Dc(d)}};m.Ib=function(){this.g("Type ? for help with PDP11 Debugger commands");this.xa();if(this.mb){var a=this.mb;this.mb=null;Ld(this,a)}};
|
||||
function Jd(a){var b;if(jd(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(!se(this))return!1;this.f.lb(a);return!0};
|
||||
m.wb=function(a,b,d){if(!se(this))return!1;this.P=0;a||jd(this)&&kd(this,this.f.b[7],0);try{var c=this.f.wb(a);0<c&&(this.P+=c,Uc(this.f,c,!0),Ec(this.f,c),this.$++)}catch(f){"number"!=typeof f&&(this.P=0,ib(this.f,f.stack||f.message))}!1!==d&&Dc(this.f);this.xa(b||!1);return 0<this.P};m.ma=function(a){this.f&&this.f.ma(a)};m.xa=function(a){void 0===a&&(a=!0);this.V=W(this.f.b[7]);a&&1!=this.ea?te(this):ue(this)};
|
||||
function se(a){var b;if(b=a.f&&hb(a.f))b=a.f,b.j.fa?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!gb(a.f)?(a=a.f,a.j.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){Jd(this);this.$=this.Ja=0;this.za=null;this.P=0;this.V=W(this.f.b[7]);this.j.ia=!1;ve(this);a||this.xa()};
|
||||
m.save=function(){var a=new $c(this);N(a,0,pe(this.V));N(a,1,pe(this.aa));N(a,2,[this.C,this.da,this.ha]);N(a,3,this.N);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.V=qe(a[b++]),this.aa=qe(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.j.ia=!0;this.Kc=a;this.Mc=b};
|
||||
m.stop=function(a,b){if(this.j.ia){this.j.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+" (";jd(this)&&(d+=this.$+" opcodes, ",this.Ja-=this.$,this.$=0);d+=this.P+" cycles, "+c+" ms, "+f+" hz)"}else eb(this,-2147483648)&&(d+=" (use the 't' command to execute blocked faults)");this.g(d)}this.xa(!0);this.Tb();ve(this,this.f.b[7])}};function jd(a){return 1<a.u.length||!!a.ya}
|
||||
function kd(a,b,d){var c=a.f;if(0<d&&(a.ya&&!--a.ya||vc(a,b,1,a.u)))return!0;0<=d&&a.ja.length&&(a.$++,null!=Lb(a.G,b)&&(b=a.T[a.ra],b.A=c.b[7],b.Ga=!1,++a.ra==a.T.length&&(a.ra=0)));return!1}function Id(a){var b,d;a.u=["bp"];if(void 0!==a.Y)for(b=1;b<a.Y.length;b++){d=a.Y[b];var c=a.G;wc(c.R[Z(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,wc(c.R[Z(d)>>>c.X],!0);a.J=["bw"];a.Eb=0}
|
||||
m.eb=function(a,b,d){var c=!0;d||we(this,a,b,!1,!0);if(a!=this.u){var f=Z(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.Ga=!0:(xe(this,a,a.length-1,"set"),Jd(this)));return c};function we(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||xe(a,b,h,"cleared");b.splice(h,1);b!=a.u&&(c=a.G,wc(c.R[d>>>c.X],b==a.J));g.Ga||Jd(a);break}}return e}
|
||||
function ye(a,b){for(var d=1;d<b.length;d++)xe(a,b,d);return b.length-1}function xe(a,b,d,c){d=b[d];a.g(b[0]+" "+V(a,d.A)+(c?" "+c:d.Bc?' "'+d.Bc+'"':""))}function ve(a,b){if(void 0!==b)vc(a,b,1,a.u,!0),a.ea=0;else for(var d=1;d<a.u.length;d++){var c=a.u[d];if(c.Ga){if(!we(a,a.u,c,!0))break;d=0}}}
|
||||
function vc(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&&(we(a,c,g,!0),f=!0);if(n=g.Gc){for(var e=!1,p=0;p<n.length;p++)if(!ze(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.f.j.ia||(e=!0)}if(e){f||xe(a,c,h,"hit");break}}}a.Eb--;return e}
|
||||
function Ae(a,b,d,c){var f=W(b.A),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=ke[h[0]],l=h.length-1,n=1;n<=l;n++){var p=h[n];if(void 0!==p){var q;q=a;var C=p,p=b,x="",y=void 0,y=void 0,y=C&61440;if(4096==y)y=(e&255)<<24>>23,y=p.A+y&65535,x=V(q,y);else if(8192==y)y=(e&63)<<1,y=p.A-y&65535,x=V(q,y);else if(12288==y)y=e&7,x=V(q,y,2);else if(24576==y)y=e&63,x=V(q,y);else if(y=e&C,C&4032&&(y>>=6,C>>=6),C&63){var C=void 0,B=y&7;switch(y&56){case 0:x=Be(B);break;case 8:x=
|
||||
"@"+Be(B);break;case 16:7>B?x="("+Be(B)+")+":(C=q.Ha(p,2),x="#"+V(q,C));break;case 24:7>B?x="@("+Be(B)+")+":(C=q.Ha(p,2),x="@#"+V(q,C));break;case 32:x="-("+Be(B)+")";break;case 40:x="@-("+Be(B)+")";break;case 48:C=q.Ha(p,2);x=V(q,C)+"("+Be(B)+")";7==B&&(x=[x,V(q,C+p.A&65535)]);break;case 56:C=q.Ha(p,2),x="@"+V(q,C)+"("+Be(B)+")",7==B&&(x=[x,V(q,C+p.A&65535)])}}q=x;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.Ha(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.f.j.ob?h+("cycles="+Fc(a.f).toString()+" cs="+r(a.f.Lb)):h+(null!=c?"="+c.toString():""));return h}function Ce(a,b){var d;switch(b){case "N":d=a.f.w&32768?8:0;break;case "Z":d=a.f.F&65535?0:4;break;case "V":d=a.f.B&32768?2:0;break;case "C":d=a.f.D&65536?1:0;break;default:d=0}return b.charAt(0)+(d?"1":"0")+" "}function Be(a){return 6>a?"R"+a:6==a?"SP":"PC"}
|
||||
function De(a,b){var d="",c=a.f;8>b?(d=Be(b),d+="="+V(a,c.b[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,$b(c)));d&&(d+=" ");return d}function Ee(a){var b,d="";for(b=0;6>b;b++)d+=De(a,b);d=d+"\n"+(De(a,6)+De(a,7)+De(a,20));return d+=Ce(a,"T")+Ce(a,"N")+Ce(a,"Z")+Ce(a,"V")+Ce(a,"C")}m.qc=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Fe(a,b,d){var c=[],f=Z(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.nc,[f-h],a.qc);0<=f?Ge(a,b,f,c):d&&(f=~f,Ge(a,b,f-1,c),Ge(a,b,f,c));break}}return c}function Ge(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 He(a,b){var d=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(d){if(!d[1])return Gd(a)||a.g("no variables"),!0;if(!d[2])return Gd(a,d[1]);if(!d[3])return delete a.ga[d[1]],!0;var c=Cd(a,d[3]);return void 0!==c?(a.ga[d[1]]=c,!0):!1}a.g("invalid assignment:"+b);return!1}
|
||||
function Ie(a,b,d){var c=null;if(b=ne(a,b,!0)){var f=Fe(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 te(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.f;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=Cd(a,e);if(void 0!==g)switch(h=!0,f.toUpperCase()){case "PC":c.b[7]=g;a.V=W(c.b[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}Dc(c);a.g("updated registers:")}a.g(Ee(a));d&&(a.V=W(c.b[7]),ue(a,V(a,a.V.A)))}}function Je(a,b){b=oa(b);var d=b.match(/^(['"])(.*?)\1$/);d?a.g(d[2]):Cd(a,b,!0)}function Ke(a,b,d){var c="t"!=b;d=Ed(a,d,null,!0)||1;var f=1==d?0:1;"tc"==b&&(f=d,d=1);Ea(d,function(){return fb(a,!0)&&a.wb(f,c,!1)},function(){Dc(a.f);fb(a,!1)})}
|
||||
function ue(a,b,d,c){if(b=ne(a,b,!0)){void 0===c&&(c=1);var f=256;if(void 0!==d){c=ne(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=gb(a,!1)||a.ea?a.P:null;var h=null!=e?"cycles":null,g=Fe(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=Ae(a,b,h,e);a.g(e);a.V=b;f-=b.A-k;d++}}}
|
||||
function ze(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(hb(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=ne(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,Dc(a.f);else{var p;a.g("not supported yet");p=[];if(p.length){for(var q=0;q<p.length;q++)a.bc(n,p[q],1);a.g(Ae(a,a.aa))}}break;case "b":a:{var C=e[0],x=e[1],y=b;if("?"==x)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 B=C.charAt(1);if("l"==B){var Ka=0,Ka=Ka+ye(a,a.u),Ka=Ka+ye(a,a.Y);(Ka+=ye(a,a.J))||a.g("no breakpoints")}else if("n"==B)a.ya=Ed(a,x),a.g("break after "+a.ya+" instruction(s)");else if(void 0===x)a.g("missing breakpoint address");else{var X=W();if("*"!=x&&(X=ne(a,x,!0),!X))break a;"c"==B?null==X.A?(Id(a),a.g("all breakpoints cleared")):we(a,a.u,X)||we(a,a.Y,X)||we(a,a.J,X)||a.g("breakpoint missing: "+V(a,X.A)):null!=X.A&&(re(a,X,y),"p"==B?a.eb(a.u,X):"r"==B?a.eb(a.Y,X):"w"==B?a.eb(a.J,X):
|
||||
a.g("unknown breakpoint command: "+B))}}}break;case "c":a.fb&&(a.fb.value="");break;case "d":a:{var La,Ma=e[0],ga=e[1],xa=e[2],df=e[3];if("?"==ga){var ha="";for(La in yb)a.Sa[La]&&(ha&&(ha+=","),ha+=La);ha+=",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");ha.length&&a.g("dump extension commands:\n\t"+
|
||||
ha)}else if("state"==ga){var Nd=Le(a.i,!0);"console"==xa?console.log(Nd):(a.fb&&(a.fb.value=""),a.g(Nd))}else if("symbols"==ga)for(var Gc=0;Gc<a.N.length;Gc++){var Hc=a.N[Gc],Na;for(Na in Hc.Ka)if("."!=Na.charAt(0)){var Od=Hc.Ka[Na].o;if(void 0!==Od){var Pd=Hc.Ka[Na].l;Pd&&(Na=Pd);a.g(V(a,Od)+" "+Na)}}}else{if("d"==Ma){for(La in yb)if(e[1]==La){var Qd=a.Sa[La];Qd?(e.shift(),e.shift(),Qd(e)):a.g("no dump registered for "+ga);break a}ga||(Ma=a.Oc||"db")}else a.Oc=Ma;if("dh"==Ma){var Rd=ga,Sd=xa,Td=
|
||||
"",Ud=0,P=a.ra,ia=a.T;if(ia.length){var Y=+Rd||a.Vb,Oa=+Sd||10;isNaN(Y)?Y=Oa:Td="more ";Y>ia.length&&(a.g("note: only "+ia.length+" available"),Y=ia.length);P-=Y;0>P&&(null==ia[ia.length-1].A?(Y=P+Y,P=0):P+=ia.length);var Ic=[];"call"==Sd&&(Oa=1E5,Ic=["CALL"]);for(void 0!==Rd&&a.g(Y+" instructions earlier:");0<Oa&&P!=a.ra;){var Vd=ia[P++];if(null==Vd.A)break;var lb=W(Vd.A),ef=Y--,Wd=Ae(a,lb,"history",ef);(!Ic.length||0<=Wd.indexOf(Ic[0]))&&a.g(Wd);lb.ec&&(P+=lb.ec,Oa-=lb.ec,Y-=lb.ec);P>=ia.length&&
|
||||
(P=0);a.Vb=Y;Ud++;Oa--}}Ud||(a.g("no "+Td+"history available"),a.Vb=void 0)}else{var Pb=ne(a,ga);if(Pb){var Qb=0;xa&&("l"==xa.charAt(0)&&(xa=xa.substr(1)||df),Qb=Ed(a,xa)>>>0,65536<Qb&&(Qb=65536));for(var ya="",Rb="dd"==Ma?4:"dw"==Ma?2:1,Sb=Rb*Qb||128,ff=Sb+15>>4||1;ff--&&0<Sb;){var Tb=0,Jc=0,mb,nb="",Kc="",ga=V(a,Pb.A);for(mb=16;0<mb&&0<Sb;mb--){var Ub=a.Hb(Pb,1),Tb=Tb|Ub<<(Jc++<<3);Jc==Rb&&(nb+=r(Tb,2*Rb),nb+=1==Rb?9==mb?"-":" ":" ",Tb=Jc=0);Kc+=32<=Ub&&128>Ub?String.fromCharCode(Ub):".";Sb--}ya&&
|
||||
(ya+="\n");ya+=ga+" "+nb+(0==mb?" "+Kc:"")}ya&&a.g(ya);a.zb=Pb}}}}break;case "e":if("else"==e[0])break;var Vb=1,Xd=255,Yd=a.Hb,Zd=a.bc;"ew"==e[0]&&(Vb=2,Xd=65535,Yd=a.Ha,Zd=a.jc);var $d=Vb<<1,ae=e[1];if(null==ae)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 Wb=ne(a,ae);if(Wb)for(var Xb=2;Xb<e.length;Xb++){var ob=Cd(a,e[Xb]);if(void 0===ob){a.g("unrecognized value: "+e[Xb]);break}ob&~Xd&&a.g("warning: "+r(ob)+" exceeds "+
|
||||
Vb+"-byte value");var gf=Yd.call(a,Wb);a.g("changing "+V(a,Wb.A)+" from "+r(gf,$d,!0)+" to "+r(ob,$d,!0));Zd.call(a,Wb,ob,Vb)}}break;case "g":a:{var be=e[1],hf=b;if(void 0!==be){var Lc=ne(a,be,!0);if(!Lc)break a;re(a,Lc,hf);a.eb(a.u,Lc,!0)}a.lb(!0)||d||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var Mc;if(a.j.ia)Mc="halting",a.ma();else{if(gb(a,!0))break a;Mc="already halted"}d||a.g(Mc)}break;case "i":if("if"==e[0]){var Nc;var pb=b.substr(2),pb=oa(pb);Cd(a,pb)?(d||a.g("true: "+
|
||||
pb),Nc=!0):(d||a.g("false: "+pb),Nc=!1);Nc||(c=!1)}break;case "k":var jf=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,ce=W(),qb=W(a.f.b[6]);for(a.g("stack trace for "+V(a,qb.A));10>Oc;){for(var za=null,kf=256;65536>qb.A>>>0;){ce.A=a.Ha(qb,2);if(null==qb.A||!kf--)break;for(var lf=a,Yb=ce,de=null,rb=Yb.A,ee=rb,Pc=1;6>=Pc&&rb;Pc++){if(2<Pc){Yb.A=rb;var Zb=Ae(lf,Yb);if(0<=Zb.indexOf("JSR")){var fe=Zb.indexOf(" ");if(rb+
|
||||
(Zb.indexOf(" ",fe+1)-fe-1)/2==ee){de=Zb;break}}}rb--}Yb.A=ee;if(za=de)break}if(!za||null==za)break;var ge=null;if("ks"==jf){var he=za.match(/[0-9A-F]+$/);he&&(ge=Ie(a,he[0]))}za=na(za,50)+" ;"+(ge||"stack="+V(a,qb.A));a.g(za);Oc++}Oc||a.g("no return addresses found")}break;case "l":if("ln"==e[0]){Ie(a,e[1],!0);break}break;case "m":a:{var ja,ka=null,D=e[1];"?"==D&&(D=void 0);if(void 0!==D){var ra=0;if("all"==D)ra=1878917119,D=null;else if("on"==D)ka=!0,D=null;else if("off"==D)ka=!1,D=null;else{"keys"==
|
||||
D&&(D="key");"kbd"==D&&(D="keyboard");for(ja in yb)if(D==ja){ra=yb[ja];ka=!!(a.ha&ra);break}if(!ra){a.g("unknown message category: "+D);break a}}if(ra)if("on"==e[2])a.ha|=ra,ka=!0;else if("off"==e[2]&&(a.ha&=~ra,ka=!1,1073741824==ra)){for(var Qc=0;Qc<a.Ea.length;Qc++)a.g(a.Ea[Qc]);a.Ea=[]}}var mf=0,sa="";for(ja in yb)if(!D||D==ja){var nf=!!(a.ha&yb[ja]);if(null===ka||ka==nf)sa&&(sa+=","),++mf%10||(sa+="\n\t"),"key"==ja&&(ja="keys"),sa+=ja}void 0===D&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");
|
||||
a.g((null!==ka?ka?"messages on: ":"messages off: ":"message categories:\n\t")+(sa||"none"));Jd(a)}break;case "p":if("print"==e[0]){Je(a,b.substr(5));break}var of="pr"==e[0]?1:0;if(a.ea)a.g("step in progress");else{var ie=W(a.f.b[7]);a.Hb(ie);a.ea?(a.eb(a.u,ie,!0),a.lb()||(a.i&&a.i.Tb(),a.ea=0)):Ke(a,of?"tr":"t")}break;case "r":if("reset"==b){a.i&&a.i.reset();break}te(a,e);break;case "s":a:switch(e[1]){case "base":if(e[2]){var sb=+e[2];if(8==sb||10==sb||16==sb)a.wa=sb;else{a.g("invalid base: "+sb);
|
||||
break}}a.g("default base: "+a.wa);break;case "cs":var tb;void 0!==e[3]&&(tb=+e[3]);switch(e[2]){case "int":a.f.qb=tb;break;case "start":a.f.Mb=tb;break;case "stop":a.f.rb=tb;break;default:a.g("unknown cs option");break a}void 0!==tb&&Cc(a.f);a.g("checksums "+(a.f.j.ob?"enabled":"disabled"));break;case "sp":void 0!==e[2]&&(Tc(a.f,+e[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.f.hb.toFixed(2)+"Mhz")+" ("+a.f.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":Ke(a,e[0],e[1]);break;case "u":ue(a,e[1],e[2],8);break;case "v":if("var"==e[0]){He(a,b.substr(3))||(c=!1);break}a.g("PDP11js version 1.30.0 ("+a.f.vc+",RELEASE"+(jb?",TYPEDARRAYS":",LONGARRAYS")+
|
||||
")");a.g(window?window.navigator.userAgent:"");break;case "?":if(e[1]){Je(a,b.substr(1));break}var ub="commands:",Rc;for(Rc in Md)ub+="\n"+na(Rc,9)+Md[Rc];jd(a)||(ub+="\nnote: history disabled if no exec breakpoints");a.g(ub);break;default:a.g("unknown command: "+b),c=!1}}}catch(je){a.g("debugger error: "+(je.stack||je.message)),c=!1}return c}function Ld(a,b,d){b=Ad(a,b,d);for(var c in b)if(!ze(a,b[c]))return!1;return!0}
|
||||
Qa(function(){for(var a=A(document,"pdp11","debugger"),b=0;b<a.length;b++){var d=a[b],c=z(d),c=new Hd(c);db(c,d)}});
|
||||
function Me(a,b,d){u.call(this,"Computer",a,Me,67108864);this.j.fa=!1;Ne(this,b);this.Y=Ac(this,"autoPower",a);this.C=0;this.ga=a.busWidth||a.buswidth;this.i=Oe;this.T=null;this.N=this.da=!1;this.url=Ac(this,"url")||"";(Math.random()+.1).toString(36);this.u=Pe(this);if(this.f=cb("CPU",this.id)){this.H=cb("Debugger",this.id);this.G=new Bb({id:this.oc+".bus",busWidth:this.ga},this.f,this.H);var c,f=bb(this.id);if((this.I=cb("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.f,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=Ac(this,"state")||(e=!0,a.state))b=this.$=a,e||(this.N=!0,this.i=Oe),this.i&&
|
||||
(this.V=new $c(this,"1.30.0"),Qe(this.V)?b=null:delete this.V);!b&&this.i&&(b=Re(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);E(h)})}else E(this);this.O.power||(this.Y=!0);!d&&this.Y&&Se(this,this.Nb)}else t("Unable to find CPU component")}w(Me);var Oe=0;
|
||||
function Ne(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 Ac(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 Se(a,b,d){for(var c=bb(a.id),f=0;f<=c.length;f++){var e=f<c.length?c[f]:a;if(!hb(e)){hb(e,function(){Se(a,b,d)});return}}b.call(a,d)}
|
||||
function Te(a,b){var d=new $c(a,"1.30.0","validate");if(Qe(d)&&Ue(d)){var c=Ve(d,"timestamp"),f=b?Ve(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=Me.prototype;
|
||||
m.Nb=function(a){void 0===a&&(a=this.i||(this.T?1:Oe));if(!this.C){this.C++;var b=!1,d=!1;this.aa=!1;var c=this.V||new $c(this,"1.30.0");if(-1==a)b=!0;else if(a>Oe){if(Qe(c,this.T)){this.J=new $c(this,"1.30.0","failsafe");Qe(this.J)&&(We(this,c),a=2,Xe(this.J));N(this.J,"timestamp",ta());Ye(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=Ue(c)){var e=Ve(c,"code"),h=Ve(c,"data");e&&("ok"==e?Qe(c,h):("error"==
|
||||
e&&"no machine state"!=h?(this.oa("Error: "+h),"unable to verify user"==h&&(Ca("user",""),this.u=null)):this.g(e+": "+h),Xe(c),Qe(c)?(d=Ue(c),f=!0):d=!1))}f&&Te(this,d?c:null)}else 2==a&&c.clear()}else Te(this);delete this.T;delete this.V}f=bb(this.id);for(e=0;e<f.length;e++)h=f[e],h!==this&&h!=this.f&&(d=Ze(this,h,c,b,d));b=[c,a,d];-1!=a?Se(this,this.tc,b):this.tc(b)}};
|
||||
function Ze(a,b,d,c,f){if(!b.j.fa){b.j.fa=!0;if(b.Na){var e=null;f&&((e=Ve(d,b.id))||(e=Ve(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=Oe,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.ja=!0;this.j.fa=!0;var c=this.O.power;c&&(c.textContent="Shutdown");this.f&&(Ze(this,this.f,b,d,a),this.f.Db());this.aa&&(We(this,b),b.clear());!d&&this.J&&(this.J.clear(),delete this.J);this.C=0};
|
||||
function We(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.u||"",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 Le(a,b,d){var c,f="none";if(a.C)return null;a.C--;var e=new $c(a,"1.30.0"),h=new $c(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.f&&a.f.Ma&&(d&&a.f.ma(),c=a.f.Ma(b,d),"object"===typeof c&&N(e,a.f.id,c),d&&(a.f.j.fa=!1,!1===c&&(f=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.j.fa&&(l.Ma&&(c=l.Ma(b,d),"object"===typeof c&&N(e,l.id,c)),
|
||||
d&&(l.j.fa=!1,!1===c&&(f=null)))}f&&(d?(g=c=!1,b?(a.u&&$e(a,a.u,e.toString()),Ye(h)&&Ye(e)||(f=null,c=g=!0)):a.i&&(c=!0,g=3==a.i),c&&e.clear(g)):f=e.toString());d&&(a.j.fa=!1,b=a.O.power)&&(b.textContent="Power");a.C=0;return f}
|
||||
m.reset=function(){this.G&&this.G.reset&&(this.H&&eb(this,0)&&this.H.message("Resetting "+this.G.type,void 0),this.G.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var d=a[b];d!==this&&d!==this.G&&d.reset&&(this.H&&eb(this,0)&&this.H.message("Resetting "+d.type,void 0),d.reset())}};m.start=function(a,b){for(var d=bb(this.id),c=0;c<d.length;c++){var f=d[c];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
|
||||
m.stop=function(a,b){for(var d=bb(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.j.fa?Le(c,!1,!0):Se(c,c.Nb))},!0;case "reset":return this.O[b]=d,d.onclick=function(){if(c.j.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.");Le(c,a,!0);!a&&c.$?window&&window.location.reload():c.Nb(Oe)}else c.reset(),c.f&&c.f.Db()},!0;case "save":if(ea()){d.parentNode.removeChild(d);break}this.O[b]=
|
||||
d;d.onclick=function(){var a=Pe(c,!0);if(a){var b=!!(c.i&&!c.P||c.$),d=Le(c,b);b?$e(c,a,d):c.oa("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function Pe(a,b){var d=a.u;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=af(a,d))||a.oa("The user ID is invalid."))):b&&a.oa("Browser local storage is not available"));return d}
|
||||
function af(a,b){a.u=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.u=d.data)}catch(f){t(f.message+" ("+c+")")}return a.u}function Re(a){var b=null;a.u&&(b=fa()+"/api/v1/user?req=load&user="+a.u+"&state="+bf(a,"1.30.0"));return b}
|
||||
function $e(a,b,d){if(d){var c={req:"store"};c.user=b;c.state=bf(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.u=null)}}m.Tb=function(){};
|
||||
m.xa=function(a){this.f&&this.f.xa(a);this.I&&this.I.xa(a)};Qa(function(){for(var a=A(document,"pdp11-machine"),b=0;b<a.length;b++)for(var d=a[b],c=z(d),d=A(d,"pdp11","computer"),f=0;f<d.length;f++){var e=d[f],h=z(e),h=new Me(h,c,!0);db(h,e);h.Y&&Se(h,h.Nb)}});Ga.show.push(function(){for(var a=A(document,"pdp11","computer"),b=0;b<a.length;b++){var d=z(a[b]);(d=cb("Computer",d.id))&&d.ja&&!d.j.fa&&d.Nb(-1)}});
|
||||
Ga.exit.push(function(){for(var a=A(document,"pdp11","computer"),b=0;b<a.length;b++){var d=z(a[b]);(d=cb("Computer",d.id))&&d.j.fa&&Le(d,!(!d.i||d.P),!0)}});function $c(a,b,d){this.id=a.id;this.key=bf(a,b,d);this.H=a.H;Xe(this,a.Nc)}function bf(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}
|
||||
$c.prototype={constructor:$c,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){Xe(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 Xe(a,b){a[a.id]={};b&&N(a,"parms",b);a.f=!1}function Ye(a){var b=!0;if(Aa()){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 Ue(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(d){t(d.message||d),b=!1}return b}function Qe(a,b){return b?(a[a.id]=b,a.f=!0):a.f?!0:Aa()&&(b=Ba(a.key))?(a[a.id]=b,a.f=!0):!1}function Ve(a,b){return a[a.id][b]||null}function N(a,b,d){try{a[a.id][b]=d}catch(c){}}var cf=0;
|
||||
function pf(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)):qf(g,a,b,d,c,f,e)})}
|
||||
function qf(a,b,d,c,f,e,h){function g(a,e){if(e)h(e,null);else{if(d){ab(d,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);c?"}"==c.slice(-1)?(c=c.slice(0,-1),1<c.length&&(c+=",")):c='{state:"'+c+'",':c="{";c+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+d+"$2"+(c?" parms='"+c+"'":"")+(g?' url="'+g+'"':""))}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?rf(a,e,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function rf(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);rf(a,b,d)}})}else d(a,null)}
|
||||
function sf(a,b,d,c){function f(a){if(void 0===g){var b=h&&A(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ma(a))}function e(a){f("Error: "+a);k&&(--cf||Sa(!0));k=!1}var h,g,k=!0;cf++;$a[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=l:p.appendChild(document.createTextNode(l));n.appendChild(p)}d||
|
||||
(d="/versions/pdp11/1.30.0/components.xsl");l=function(c,g){g?pf(d,null,null,!1,f,function(c,k){if(k)if(ab(a,d,c),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--cf||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),--cf||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)?pf(b,a,c,!0,f,l):qf(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 sf(a,b,d,c)};window.enableEvents=Sa;window.sendEvent=Ta;})();
|
||||
|
|
|
|||
|
|
@ -16,20 +16,20 @@ function B(a,b){for(var c=C(b.parentNode,"pdp11-control"),d=0;d<c.length;d++)for
|
|||
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}
|
||||
w.prototype={constructor:w,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.zb=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.ub)}),!0;default:return!1}},log:function(){},X:function(){},status:function(a){this.X(this.ub+": "+a)},K:function(a,b,c){c=c||this.type;b||q((c?c+": ":"")+a)},ua:function(){return this.h.L=!0},ta:function(a,b){b&&(this.h.L=!1);return!0}};function Fa(a,b){if(a.h.yb)return a.h.Za&&(a.h.Za=!1),a.h.yb=!1;if(a.h.error)return a.X(a.toString()+" error"),!1;a.h.Za=b;return a.h.Za}function D(a){if(!a.h.error&&(a.h.ready=!0,a.h.ready)){var b=a.mb;a.mb=null;b&&b()}}
|
||||
function Ga(a,b){b&&(a.h.ready?b():a.mb=b);return a.h.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){w.call(this,"Panel",a,La)}y(La);m=La.prototype;m.ba=function(a,b,c,d){return this.s&&this.s.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.Ga=function(a,b,c,d){this.s=a;this.u=b;this.c=c;this.I=d};m.ua=function(a,b){b||Ma();return!0};m.ta=function(){return!0};m.Ka=function(){};
|
||||
function Ga(a,b){b&&(a.h.ready?b():a.mb=b);return a.h.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){w.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.c&&this.c.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.c=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){w.call(this,"Bus",a,Na);this.c=b;this.I=c;this.F=a.busWidth||16;this.s=Math.pow(2,this.F);this.u=this.s-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.i=this.g-1;this.j=this.s/this.g|0;this.N=this.j-1;this.oa=[];this.v=null;this.$a=this.R;a=new H;Oa(a,this.I);this.b=Array(this.j);for(b=0;b<this.j;b++)this.b[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.s-8192;Ta(this,this.J,
|
||||
function Na(a,b,c){w.call(this,"Bus",a,Na);this.c=b;this.I=c;this.F=a.busWidth||16;this.o=Math.pow(2,this.F);this.v=this.o-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.i=this.g-1;this.j=this.o/this.g|0;this.N=this.j-1;this.oa=[];this.u=null;this.$a=this.R;a=new H;Oa(a,this.I);this.b=Array(this.j);for(b=0;b<this.j;b++)this.b[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.o-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.v&&this.v()};Na.prototype.R=function(){return 0};Na.prototype.ua=function(a,b){b||this.reset();return!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.b.length;){var k=a.b[g],l=g*a.g,r=a.g-(e-l);r>h&&(r=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){r=k.size-(e-l);r>h&&(r=h);k.sb=e-k.Qa+r;e=l+a.g;h-=r;g++;continue}}return Va(1,e,h)}e=new H(e,r,a.g,d,f);Oa(e,a.I,k);a.b[g++]=e;e=l+a.g;h-=r}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){w.call(this,"Device",a,Xa);this.v=a.name;this.s={Cb:[],ga:0,U:128,b:127,$b:0};this.b={data:0,xc:0,Ra:20,tc:0};this.f={Bb:0,l:0};this.g={gb:2496,P:0,w:128,hb:0,fb:0,V:0,Qb:0,S:[],Ea:[406,406,406,406],D:[12,12,12,12]};this.i={l:129,Ya:0,H:0,sa:0,pa:0,wa:0,S:[],D:[40,40,40,40],Ea:[1024,1024,512,512],Yb:[157,157,29,29]};this.j={c:[8210,8208,8210,8226],D:[22,22,22,50],Da:[19,19,19,32],tb:[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,
|
||||
function Xa(a){w.call(this,"Device",a,Xa);this.u=a.name;this.o={Cb:[],ga:0,U:128,b:127,$b:0};this.b={data:0,xc:0,Ra:20,tc:0};this.f={Bb:0,l:0};this.g={gb:2496,P:0,w:128,hb:0,fb:0,V:0,Qb:0,S:[],Ea:[406,406,406,406],D:[12,12,12,12]};this.i={l:129,Ya:0,H:0,sa:0,pa:0,wa:0,S:[],D:[40,40,40,40],Ea:[1024,1024,512,512],Yb:[157,157,29,29]};this.j={c:[8210,8208,8210,8226],D:[22,22,22,50],Da:[19,19,19,32],tb:[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,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],va:0,Db: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,
|
||||
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.u=b;this.c=c;this.I=d;switch(this.v){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 r=l&8191;void 0!==c.oa[r]?q("I/O address already registered: "+n(c.J+r,8,!0)):c.oa[r]=[h,g,k,e,!1]}}f=this.Xb.bind(this);b.v=this.reset.bind(this);b.$a=f}D(this)};m.ic=function(){return $a(this.c)};
|
||||
m.Ga=function(a,b,c,d){this.v=b;this.c=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 r=l&8191;void 0!==c.oa[r]?q("I/O address already registered: "+n(c.J+r,8,!0)):c.oa[r]=[h,g,k,e,!1]}}f=this.Xb.bind(this);b.u=this.reset.bind(this);b.$a=f}D(this)};m.ic=function(){return $a(this.c)};
|
||||
m.vc=function(a){ab(this.c,a&-1809|$a(this.c)&1808);this.c.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.kc,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.qb(b.S[e],c,d,f);return}b.gb=e<<13|b.gb&8176|b.V%9&15;I(a.c,20,160,144,function(){b.w=b.w&65534|128;return!!(b.w&64)})}m.kc=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.c,20,160,144,function(){e.w=e.w&65534|128;return!!(e.w&64)})};
|
||||
|
|
@ -41,10 +41,10 @@ function fb(a,b){var c=a.j,d,f,e;c.B&=-16513;c.$&=-2049;c.T[b]&=-1153;I(a.c,-1,0
|
|||
m.mc=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.rb[b.ia]=e.ka[b.ia]=d;e.Ja|=1<<b.ia;c>=b.gc-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.c,20,160,172,function(){e.T[b.ia]|=128;e.B=e.B&65534|128;return!!(e.B&64)})};m.ec=function(){this.f.l|=128;this.f.l&64&&I(this.c,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.gc&&(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,r,v,N;l=g.response;if(0!=g.status&&206!=g.status||!l)c.pb(1,c,d,f,e);else{l=new Uint8Array(l);r=d;for(N=0;N<l.length;){if("undefined"===typeof c.cache[r])for(c.cache[r]=[],v=0;v<c.qa;v++)c.cache[r][v]=N<l.length?
|
||||
l[N]&255|l[N+1]<<8&65280:0,N+=2;else N+=c.qa<<1;r++}h(c,d,f,e)}}};g.send(null)}function J(a,b,c,d,f){if(c&1){if(!f)return K(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]){gb(this,this.qb,a,b,c,d);return}for(f=0;f<a.qa&&0<d;f++){if(0>L(this.c,a.fc?hb(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 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.c,b.fc?hb(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.s.ga=0;this.s.U=128;this.f.l=0;this.g.w=128;this.i.l=128;eb(this)};
|
||||
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.c,b.fc?hb(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.o.ga=0;this.o.U=128;this.f.l=0;this.g.w=128;this.i.l=128;eb(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.Fa)return K(e,4,222);0>b?d=e.m:d=e.m=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.Ab[f]:(d=J(this,e.Ab[f],a,b,c),0<=d&&(e.Ab[f]=d));break;case 4194254:return a&1?e.o>>14&1?(0<=b&&(e.a[6]=b),d=e.a[6]):(0<=b&&(e.Y[3]=b),d=e.Y[3]):e.o>>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.o&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.o>>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.o&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.m|=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.s;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=
|
||||
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.Ab[f]:(d=J(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.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.m|=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.o;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.nb<<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.nb=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.b.Ra=this.b.Ra&-8|f));break;case 4194168:0>b?d=this.b.tc&65535:(d=J(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,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.Cb.length&&(d=h.Cb.shift(),0<h.Cb.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.Bb&&(setInterval(this.ec.bind(this),25),f.Bb=1),f.l=d&-129));break;default:return e.m|=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.Qb,a,b,c);0<=d&&(f.Qb=d);break;default:return e.m|=
|
||||
|
|
@ -56,96 +56,97 @@ 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<
|
|||
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.ic,Xa.prototype.vc];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.c=null;this.Qa=a;this.sb=b;this.size=c||0;this.type=d||mb;this.i=d==nb;this.controller=null;Oa(this);this.ra=this.bc=!1;if(c)if(f)this.controller=f,this.c=null,ob(this,f.Wa);else if(Ha)this.f=new ArrayBuffer(c),this.g=new DataView(this.f,0,c),this.b=new Uint8Array(this.f,0,c),this.j=new Uint16Array(this.f,0,c>>1),this.c=new Int32Array(this.f,0,c>>2),ob(this,kb?pb:qb);else{this.c=Array(c>>2);for(a=0;a<this.c.length;a++)this.c[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,Bb: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.c;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.c=a;return this.ra=!0}return!1},s:function(){return 255},F:function(){},v:function(a,b){return this.eb(a++,b++)|this.eb(a,
|
||||
H.prototype={constructor:H,parent:null,Bb: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.c;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.c=a;return this.ra=!0}return!1},o: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.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.ra=!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.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.i||this.Wb(a,b,c)},Ma:function(a,b,c){this.i||this.Na(a,b,c)},M:function(a){return this.b[a]},W:function(a){return this.b[a]},ca:function(a){return this.g.getUint16(a,!0)},xa:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.j[a>>1]},za:function(a,b){this.b[a]=b;this.ra=!0},Ba:function(a,b){this.b[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.b[a]=b,this.b[a+1]=b>>8):this.j[a>>
|
||||
1]=b;this.ra=!0}};function Oa(a,b,c){a.I=b;a.A=a.u=0;c&&((a.A=c.A)&&sb(a,tb,!1),(a.u=c.u)&&ub(a,tb,!1))}function ub(a,b,c){c&&a.u||(a.jb=!a.i&&b[1]||a.F,a.wc=!a.i&&b[3]||a.J);if(c||void 0===c)a.Wb=b[1]||a.F,a.Na=b[3]||a.J}function sb(a,b,c){c&&a.A||(a.eb=b[0]||a.s,a.jc=b[2]||a.v);if(c||void 0===c)a.R=b[0]||a.s,a.ma=b[2]||a.v}function ob(a,b){b||(b=vb);sb(a,b,void 0);ub(a,b,void 0)}
|
||||
1]=b;this.ra=!0}};function Oa(a,b,c){a.I=b;a.A=a.v=0;c&&((a.A=c.A)&&sb(a,tb,!1),(a.v=c.v)&&ub(a,tb,!1))}function ub(a,b,c){c&&a.v||(a.jb=!a.i&&b[1]||a.F,a.wc=!a.i&&b[3]||a.J);if(c||void 0===c)a.Wb=b[1]||a.F,a.Na=b[3]||a.J}function sb(a,b,c){c&&a.A||(a.eb=b[0]||a.o,a.jc=b[2]||a.u);if(c||void 0===c)a.R=b[0]||a.o,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){w.call(this,"CPU",a,wb);var c=a.multiplier||1;this.wb=a.cycles||b;this.da=c;this.vb=Math.round(this.wb/1E4)/100;this.Z=this.vb*this.da;this.h.ha=!1;this.h.Ub=!1;this.h.Xa=a.autoStart;this.h.Nb=!1;this.h.lb=!1;this.Na=this.ca=0;this.Oa=a.csStart;this.ya=a.csInterval;this.za=a.csStop;this.La=[];this.Mb=this.Eb.bind(this);D(this)}y(wb);var xb=["power","reset"];m=wb.prototype;
|
||||
m.Ga=function(a,b,c,d){this.s=a;this.u=b;this.I=d;for(b=0;b<xb.length;b++)(c=this.A[xb[b]])&&this.s.ba(null,xb[b],c);this.xa=null;a=yb(a,"autoStart");null!=a&&(this.h.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.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.h.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.h.Xa||void 0===this.A.run?(this.Eb(),!0):!1};m.Pb=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.h.lb=0<=a.Oa&&0<a.ya;a.h.lb&&(a.Na=0,a.ca=a.Oa-a.W)}
|
||||
function Cb(a,b,c,d){if(a.A[b]){void 0===c&&(a.h.error=!0,a.K("Value for "+b+" is invalid"),Db(a));var f=a.I&&a.I.b||8;if(!a.h.ha||a.h.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.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.s)if(a=d.s,a.h.L)a=!0;else{var b=null,c,g=z(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.h.ready);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.h.L);c++);c==g.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.h.ready?"powered yet":"ready yet"+(b.mb?" (waiting for notification)":""))+".");a=!1}a&&(d.h.ha?Db(d):d.Eb())};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.v=0)}function Gb(a,b){var c=1;b&&1<a.da&&a.M&&(c=a.M/a.vb);a.Jb=Math.round(1E3/30);a.Pa=Math.floor(a.wb/30*c);b||(a.Aa=a.Pa);a.xb=0}function Hb(a){return a.W+a.J+a.R-a.v}function zb(a){a.M=0;a.Kb=0;a.W=a.J=a.R=a.v=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.vb*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.v;a.v=0}
|
||||
m.Eb=function(){if(Fa(this,!0)){if(!this.h.ha){Eb(this);this.s&&this.s.start(this.F,Hb(this));this.h.ha=!0;this.h.Ub=!0;this.xa&&this.xa.start();var a=this.A.run;a&&(a.textContent="Halt");this.s&&this.s.Ka(!0)}this.xb>=this.wb&&Gb(this,!0);this.Ba=0;this.Ma=ha();this.N&&(a=this.Ma-this.N,a>this.Jb&&(this.F+=a,this.F>this.Ma&&(this.F=this.Ma)));try{do{for(var b,c=this.h.lb?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.Vb(b)}catch(l){if("number"!=typeof l)throw l;
|
||||
}for(var e=this.R-this.v,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.h.lb){var k=!1;this.Na=this.Na+this.Pb()|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.Kb&&(this.s&&this.s.Ka(),this.Kb=0);break}}while(this.h.ha)}catch(l){Db(this);
|
||||
Bb(this);this.s&&this.s.stop(ha(),Hb(this));Fa(this,!1);b=l.stack||l.message;this.h.error=!0;this.K(b);return}b=setTimeout;c=this.Mb;this.N=ha();d=this.Jb;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.xb+=this.Ba;this.N+=d;b(c,d)}else Bb(this),this.s&&this.s.stop(ha(),Hb(this))};m.Vb=function(){return 0};
|
||||
function Db(a){a.h.Za&&(a.h.yb=!0);Ib(a);Fb(a,a.J);a.J=0;if(a.h.ha){a.h.ha=!1;a.xa&&a.xa.stop();var b=a.A.run;b&&(b.textContent="Run")}a.h.complete=void 0}function Bb(a){a.s&&a.s.Ka(void 0)}
|
||||
function Jb(a){this.ac=+a.model||1170;this.dc=a.resetAddr||0;wb.call(this,a,1E6);this.Gb=0;this.decode=Kb.bind(this);this.g=65536;this.b=32768;this.f=65535;this.c=32768;this.kb=-1;this.a=[0,0,0,0,0,0,0,this.dc];this.Ia=[0,0,0,0,0,0];this.Y=[0,0,0,0];this.memory=[];this.i=[];this.Ca=this.ob=0;this.ja=2;this.la=255;this.C=0;this.ma=-1;this.m=0;this.Fa=70;this.nb=this.bb=this.ab=this.j=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,
|
||||
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.h.L)a=!0;else{var b=null,c,g=z(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.h.ready);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.h.L);c++);c==g.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.h.ready?"powered yet":"ready yet"+(b.mb?" (waiting for notification)":""))+".");a=!1}a&&(d.h.ha?Db(d):d.Eb())};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.o=0)}function Gb(a,b){var c=1;b&&1<a.da&&a.M&&(c=a.M/a.vb);a.Jb=Math.round(1E3/30);a.Pa=Math.floor(a.wb/30*c);b||(a.Aa=a.Pa);a.xb=0}function Hb(a){return a.W+a.J+a.R-a.o}function zb(a){a.M=0;a.Kb=0;a.W=a.J=a.R=a.o=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.vb*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.o;a.o=0}
|
||||
m.Eb=function(){if(Fa(this,!0)){if(!this.h.ha){Eb(this);this.u&&this.u.start(this.F,Hb(this));this.h.ha=!0;this.h.Ub=!0;this.xa&&this.xa.start();var a=this.A.run;a&&(a.textContent="Halt");this.u&&this.u.Ka(!0)}this.xb>=this.wb&&Gb(this,!0);this.Ba=0;this.Ma=ha();this.N&&(a=this.Ma-this.N,a>this.Jb&&(this.F+=a,this.F>this.Ma&&(this.F=this.Ma)));try{do{for(var b,c=this.h.lb?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.Vb(b)}catch(l){if("number"!=typeof l)throw l;
|
||||
}for(var e=this.R-this.o,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.h.lb){var k=!1;this.Na=this.Na+this.Pb()|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.Kb&&(this.u&&this.u.Ka(),this.Kb=0);break}}while(this.h.ha)}catch(l){Db(this);
|
||||
Bb(this);this.u&&this.u.stop(ha(),Hb(this));Fa(this,!1);b=l.stack||l.message;this.h.error=!0;this.K(b);return}b=setTimeout;c=this.Mb;this.N=ha();d=this.Jb;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.xb+=this.Ba;this.N+=d;b(c,d)}else Bb(this),this.u&&this.u.stop(ha(),Hb(this))};m.Vb=function(){return 0};
|
||||
function Db(a){a.h.Za&&(a.h.yb=!0);Ib(a);Fb(a,a.J);a.J=0;if(a.h.ha){a.h.ha=!1;a.xa&&a.xa.stop();var b=a.A.run;b&&(b.textContent="Run")}a.h.complete=void 0}function Bb(a){a.u&&a.u.Ka(void 0)}
|
||||
function Jb(a){this.ac=+a.model||1170;this.dc=a.resetAddr||0;wb.call(this,a,1E6);this.Gb=0;this.decode=Kb.bind(this);this.f=65536;this.b=32768;this.g=65535;this.c=32768;this.kb=-1;this.a=[0,0,0,0,0,0,0,this.dc];this.Ia=[0,0,0,0,0,0];this.Y=[0,0,0,0];this.memory=[];this.i=[];this.Ca=this.ob=0;this.ja=2;this.la=255;this.C=0;this.ma=-1;this.m=0;this.Fa=70;this.nb=this.bb=this.ab=this.j=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.Ab=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.h.complete=this.h.Zb=!1}y(Jb,wb);m=Jb.prototype;
|
||||
m.reset=function(){this.h.ha&&Db(this);Lb(this);zb(this);this.h.error=!1;this.parent.reset.call(this)};function Lb(a){a.la=255;a.m=0;a.i=[];a.ob=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.Pb=function(){return 0};
|
||||
m.save=function(){var a=new O(this);P(a,0,[]);P(a,1,[this.Ib,this.W,this.da]);for(var b=this.u,c=0,d=[],f=0;f<b.j;f++){var e=b.b[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 r=e[g],v=g+1;v<e.length&&e[v]===r;)v++;l[k++]=v-g;l[k++]=r;g=v}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.Ib=b[0];this.W=b[1];Eb(this,b[3]);a:{b=this.u;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.b[d];if(!e||!e.restore(f)){q("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
m.save=function(){var a=new O(this);P(a,0,[]);P(a,1,[this.Ib,this.W,this.da]);for(var b=this.v,c=0,d=[],f=0;f<b.j;f++){var e=b.b[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 r=e[g],v=g+1;v<e.length&&e[v]===r;)v++;l[k++]=v-g;l[k++]=r;g=v}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.Ib=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.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.A[b]=c;this.Gb++;d=!0;break;default:d=this.parent.ba.call(this,a,b,c)}return d};
|
||||
m.Ka=function(a){if(this.Gb&&(a||!this.h.ha||this.h.Nb)){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.h.ha&&this.M?this.M.toFixed(2)+"Mhz":"Stopped"};
|
||||
function I(a,b,c,d,f){for(var e=a.i.length;0<e--;)if(a.i[e].uc===d){0<e&&(a.i[e-1].fa+=a.i[e].fa);a.i.splice(e,1);break}if(0<=b){2===a.Ca&&(b=0,a.Ca=0,setTimeout(a.Mb,0));for(e=a.i.length;0<e--;){if(a.i[e].fa>b){a.i[e].fa-=b;break}b-=a.i[e].fa}a.i.splice(e+1,0,{delay:b,priority:c&224,vector:d,callback:f})}a.ja=2}function $a(a){return a.o=a.o&63728|(a.c&32768?8:0)|(a.f&65535?0:4)|(a.b&32768?2:0)|(a.g&65536?1:0)}
|
||||
function ab(a,b){a.c=b<<12;a.f=~b&4;a.b=b<<14;a.g=b<<16;if((b^a.o)&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.j=b>>14&3;c=a.o>>14&3;a.j!=c&&(a.Y[c]=a.a[6],a.a[6]=a.Y[a.j]);a.ja=2;a.o=b}function Mb(a,b){!a.C&128&&(a.c=a.f=b,a.b=0)}
|
||||
function K(a,b,c){var d,f,e=0;0>a.ma?a.ma=$a(a):a.j||(b=4,e=1);a.G&57344||(a.ea=63222,a.Va=b);a.j=0;0<=(d=Q(a,b|65536))&&0<=(f=Q(a,b+2&65535|65536))&&(ab(a,f&53247|a.ma>>2&12288),e&&(a.m|=4,a.a[6]=4),0<=R(a,a.ma)&&0<=R(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 I(a,b,c,d,f){for(var e=a.i.length;0<e--;)if(a.i[e].uc===d){0<e&&(a.i[e-1].fa+=a.i[e].fa);a.i.splice(e,1);break}if(0<=b){2===a.Ca&&(b=0,a.Ca=0,setTimeout(a.Mb,0));for(e=a.i.length;0<e--;){if(a.i[e].fa>b){a.i[e].fa-=b;break}b-=a.i[e].fa}a.i.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.g&65535?0:4)|(a.b&32768?2:0)|(a.f&65536?1:0)}
|
||||
function ab(a,b){a.c=b<<12;a.g=~b&4;a.b=b<<14;a.f=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.j=b>>14&3;c=a.s>>14&3;a.j!=c&&(a.Y[c]=a.a[6],a.a[6]=a.Y[a.j]);a.ja=2;a.s=b}function Q(a,b){!a.C&128&&(a.c=a.g=b,a.b=0)}function Mb(a,b,c,d){!a.C&128&&(a.c=a.g=a.f=b,a.b=(c^d)&(d^b))}
|
||||
function K(a,b,c){var d,f,e=0;0>a.ma?a.ma=$a(a):a.j||(b=4,e=1);a.G&57344||(a.ea=63222,a.Va=b);a.j=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.m|=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.j];f=a.O[a.j][d];e=(a.O[a.j][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.m|=32,K(a,4,24)),e&1&&!(c&1)&&(a.m|=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.j][d]=f;if(4194170!==e||a.j)a.bb=a.j,a.nb=d;h&&(h&57344&&(0<=a.ma&&(h|=128),a.G&57344||(a.G=a.G|h|a.bb<<5|a.nb<<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.m|=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.u;var d=b&c.i,f=(b&c.u)>>>c.f;c=d!=c.i?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 L(a,b,c){c&=65535;if(4194304<=b)return a.a[b-4194304]=c;if(0<=b){a=a.u;var d=c,f=b&a.i,e=(b&a.u)>>>a.f;f!=a.i?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 S(a,b){var c;4194304<=b?c=a.a[b-4194304]&255:0<=b?(c=a.u,c=c.b[(b&c.u)>>>c.f].eb(b&c.i,b)):c=b;return c}function T(a,b,c){c&=255;return 4194304<=b?a.a[b-4194304]=a.a[b-4194304]&65280|c:0<=b?(a=a.u,a.b[(b&a.u)>>>a.f].jb(b&a.i,c&255,b),c):b}
|
||||
function Q(a,b){return M(a,Nb(a,b,Ia))}function Ob(a){var b=Q(a,a.a[6]|65536);0<=b&&(a.a[6]=a.a[6]+2&65535);return b}function R(a,b){var c,d;a.a[6]=d=a.a[6]-2&65535;a.G&57344||(a.ea=a.ea<<8|246);!a.j&&d<=a.la&&4<d&&(d<=a.la-32?(a.m|=4,a.a[6]=4,K(a,4,32)):(a.m|=8,a.C|=4));return 0<=(c=Nb(a,d|65536,E))?L(a,c,b):c}
|
||||
function U(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.j&&c&E&&(a.a[6]<=a.la||65534<=a.a[6])&&(a.a[6]<=a.la-32||65534<=a.a[6]?(a.m|=4,a.a[6]=4,K(a,4,36)):(a.m|=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=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.j&&c&E&&0>=f&&(a.a[6]<=a.la||65534<=a.a[6])&&(a.a[6]<=a.la-32?(a.m|=4,a.a[6]=4,K(a,4,38)):(a.m|=8,a.C|=64));return d}
|
||||
function V(a,b,c){var d;return b&56?(0<=(d=U(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=S(a,c)):c=a.a[b&7]&255;return c}function Pb(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 Y(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.Vb=function(a){this.h.complete=!0;this.h.Zb=!1;this.h.Ub=!1;this.R=this.v=a;this.Ib&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;e=-1;b=this.ob&224;if(0<(a=this.i.length))for(;0<a--;){if(0<this.i[a].fa){this.i[a].fa--;this.ja=2;break}if(this.i[a].Lb){if(!this.i[a].Lb()){this.i.splice(a,1);e--;continue}this.i[a].Lb=null}this.i[a].hc>b&&(b=this.i[a].hc,
|
||||
e=a)}b>(this.o&224)&&(0>e?K(this,160,42):(K(this,this.i[e].uc,44),this.i.splice(e,1)))}this.G&57344||(this.ea=0,this.Va=this.a[7]);this.C=this.o&16;this.kb=Q(this,this.a[7]);this.a[7]=this.a[7]+2&65535;this.decode(this.kb);if(0<=this.kb)switch(a=this.kb,this.a[7]=this.a[7]+2&65535,a&61440){case 40960:0<=(b=X(this,a>>6))&&0<=(c=X(this,a))&&(a=b-c,this.c=this.f=this.g=a<<8,this.b=((b^c)&(b^a))<<8);break;case 45056:0<=(b=X(this,a>>6))&&0<=(c=X(this,a))&&(this.c=this.f=(b&c)<<8,this.b=0);break;case 49152:0<=
|
||||
(b=X(this,a>>6))&&0<=(c=S(this,d=V(this,a,G)))&&(a=c&~b,0<=T(this,d,a)&&(this.c=this.f=a<<8,this.b=0));break;case 53248:0<=(b=X(this,a>>6))&&0<=(c=S(this,d=V(this,a,G)))&&(a=c|b,0<=T(this,d,a)&&(this.c=this.f=a<<8,this.b=0));break;default:switch(a&65024){case 2048:0<=(f=U(this,a,0))&&(e=a>>6&7,0<=R(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.f=this.c|a,this.g=this.b=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.b=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.f=a>>16|a,this.c=a>>16):(this.b=32768,this.f=a>>15|a,this.c=c>>16,-1===b&&65534===this.a[e]&&(this.a[e]=this.a[e|1]=1))):(this.f=this.c=0,this.b=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.b=0,b&=63,b&32?(b=64-b,16<b&&(b=16),this.g=a<<17-b,a=a>>b):b&&(16<b?(this.b=a,a=0):(this.g=a=a<<b,(c=a>>15&65535)&&65535!==c&&(this.b=32768))),this.a[e]=a&65535,this.c=this.f=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.b=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.b=32768)}else a=c;this.a[e]=a>>16&65535;this.a[e|1]=a&65535;this.c=a>>16;this.f=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.f=c,this.b=0)):(this.c=this.f=c=this.a[a&7]^=this.a[a>>6&7],this.b=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.f&65535&&(this.a[7]=Y(this.a[7],a));break;case 768:this.f&
|
||||
65535||(this.a[7]=Y(this.a[7],a));break;case 1024:(this.c&32768)===(this.b&32768)&&(this.a[7]=Y(this.a[7],a));break;case 1280:(this.c&32768)!==(this.b&32768)&&(this.a[7]=Y(this.a[7],a));break;case 1536:this.f&65535&&(this.c&32768)===(this.b&32768)&&(this.a[7]=Y(this.a[7],a));break;case 1792:this.f&65535&&(this.c&32768)===(this.b&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.f&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.f&65535))this.a[7]=Y(this.a[7],a);break;case 33792:this.b&32768||(this.a[7]=Y(this.a[7],a));break;case 34048:this.b&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=U(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.f=c&65280,this.b=this.g=0)):(e=a&7,c=this.a[e],this.a[e]=(c<<8|c>>8)&65535,this.c=this.f=c&65280,this.b=this.g=0);break;case 2560:a&56?0<=(d=V(this,a,E))&&0<=L(this,d,0)&&(this.c=this.g=this.b=this.f=0):this.c=this.g=this.b=this.f=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.f=a,this.g=65536,this.b=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.f=a,this.b=a&(a^c))):(e=a&7,c=this.a[e],a=c+1,this.a[e]=a&65535,this.c=this.f=a,this.b=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.f=a,this.b=(a^c)&c)):(e=a&7,c=this.a[e],a=c-1,this.a[e]=a&65535,this.c=this.f=a,this.b=(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.f=a,this.b=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.f=a,this.b=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.f=a,this.b=(a^c)&c));break;case 3008:0<=(c=W(this,a))&&(this.c=this.f=c,this.g=this.b=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.f=a,this.b=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.f=a,this.b=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.f=a,this.b=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.f=a,this.b=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.f=a,this.b=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.f=a,this.b=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.f=a,this.b=a^c)):(e=a&7,c=this.a[e],a=c<<1,this.a[e]=a&65535,this.g=this.c=this.f=a,this.b=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=U(this,a,0))&&(61440!==(this.o&61440)&&(f&=65535),this.j=this.o>>12&3,0<=(b=Q(this,f))&&(this.j=this.o>>14&3,0<=R(this,b)&&(this.c=this.f=b,this.b=0))):(e=a&7,b=6!==e||(this.o>>2&12288)===(this.o&12288)?this.a[e]:this.Y[this.o>>12&3],
|
||||
0<=R(this,b)&&(this.c=this.f=b,this.b=0));break;case 3456:0<=(c=Ob(this))&&((this.G&57344||(this.ea=22),a&56)?0<=(f=U(this,a,0))&&(f&=65535,this.j=this.o>>12&3,0<=(d=Nb(this,f,E))&&(this.j=this.o>>14&3,0<=L(this,d,c)&&(this.c=this.f=c,this.b=0))):(e=a&7,6!==e||(this.o>>2&12288)===(this.o&12288)?this.a[e]=c:this.Y[this.o>>12&3]=c,this.c=this.f=c,this.b=0));break;case 3520:0<=(d=V(this,a,E))&&(a=-(this.c>>15&1),0<=L(this,d,a)&&(this.f=a,this.b=0));break;case 35328:a&56?0<=(d=V(this,a,Ka))&&0<=T(this,
|
||||
d,0)&&(this.c=this.g=this.b=this.f=0):(this.a[a&7]&=65280,this.c=this.g=this.b=this.f=0);break;case 35392:0<=(c=S(this,d=V(this,a,G)))&&(a=~c,0<=T(this,d,a)&&(this.c=this.f=a<<8,this.g=65536,this.b=0));break;case 35456:0<=(c=S(this,d=V(this,a,G)))&&(a=c+1,0<=T(this,d,a)&&(this.c=this.f=a<<8,this.b=(a&(a^c))<<8));break;case 35520:0<=(c=S(this,d=V(this,a,G)))&&(a=c-1,0<=T(this,d,a)&&(this.c=this.f=a<<8,this.b=((a^c)&c)<<8));break;case 35584:0<=(c=S(this,d=V(this,a,G)))&&(a=-c,0<=T(this,d,a)&&(this.g=
|
||||
this.c=this.f=a<<8,this.b=(a&c)<<8));break;case 35648:0<=(c=S(this,d=V(this,a,G)))&&(a=c+(this.g>>16&1),0<=T(this,d,a)&&(this.c=this.f=this.g=a<<8,this.b=(a&(a^c))<<8));break;case 35712:0<=(c=S(this,d=V(this,a,G)))&&(a=c-(this.g>>16&1),0<=T(this,d,a)&&(this.c=this.f=this.g=a<<8,this.b=((a^c)&c)<<8));break;case 35776:0<=(c=X(this,a))&&(this.c=this.f=c<<8,this.g=this.b=0);break;case 35840:0<=(c=S(this,d=V(this,a,G)))&&(a=((this.g&65536)>>8|c)>>1,0<=T(this,d,a)&&(this.g=c<<16,this.c=this.f=a<<8,this.b=
|
||||
this.c^this.g>>1));break;case 35904:0<=(c=S(this,d=V(this,a,G)))&&(a=c<<1|this.g>>16&1,0<=T(this,d,a)&&(this.g=this.c=this.f=a<<8,this.b=(a^c)<<8));break;case 35968:0<=(c=S(this,d=V(this,a,G)))&&(a=c&128|c>>1,0<=T(this,d,a)&&(this.g=c<<16,this.c=this.f=a<<8,this.b=this.c^this.g>>1));break;case 36032:0<=(c=S(this,d=V(this,a,G)))&&(a=c<<1,0<=T(this,d,a)&&(this.g=this.c=this.f=a<<8,this.b=(a^c)<<8));break;case 36160:a&56?0<=(f=U(this,a,0))&&(this.j=this.o>>12&3,0<=(b=Q(this,f|65536))&&(this.j=this.o>>
|
||||
14&3,0<=R(this,b)&&(this.c=this.f=b,this.b=0))):(e=a&7,b=6!==e||(this.o>>2&12288)===(this.o&12288)?this.a[e]:this.Y[this.o>>12&3],0<=R(this,b)&&(this.c=this.f=b,this.b=0));break;case 36224:0<=(c=Ob(this))&&((this.G&57344||(this.ea=22),a&56)?0<=(f=U(this,a,0))&&(this.j=this.o>>12&3,0<=(d=Nb(this,f|65536,E))&&(this.j=this.o>>14&3,0<=L(this,d,c)&&(this.c=this.f=c,this.b=0))):(e=a&7,6!==e||(this.o>>2&12288)===(this.o&12288)?this.a[e]=c:this.Y[this.o>>12&3]=c,this.c=this.f=c,this.b=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.o&49152||(this.o=this.o&63519|(a&7)<<5,this.ja=1);break;case 160:case 168:a&1&&(this.g=0);a&2&&(this.b=0);a&4&&(this.f=1);a&8&&(this.c=0);break;case 176:case 184:a&1&&(this.g=65536);a&2&&(this.b=32768);a&4&&(this.f=0);a&8&&(this.c=32768);break;default:switch(a){case 0:49152&this.o?(this.m|=128,K(this,4,46)):(this.Ca=3,Ib(this),console.log("HALT at "+this.a[7].toString(8)));break;case 1:e=0;if(0<(a=this.i.length))for(;0<
|
||||
a--;)e+=this.i[a].fa,this.i[a].fa=0;0===e&&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.o&49152||(Lb(this),this.u.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.o&49152&&(b=b&63519|this.o&63712),this.a[7]=f,ab(this,b),this.C&=-17,2===a&&(this.C|=this.o&16)));break;default:K(this,8,48)}}}}}}}while(0<this.v)}return this.h.complete?this.R-this.v:void 0===
|
||||
this.h.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 Qb(a,b){var c=a+b;!this.C&128&&(this.c=this.f=this.g=c,this.b=(a^c)&(b^c));return c&65535}function Rb(a,b){var c=~a&b;Mb(this,c);return c}function Sb(a,b){var c=a|b;Mb(this,c);return c}function Tb(a,b){var c=b-a;!this.C&128&&(this.c=this.f=this.g=c,this.b=(a^b)&(b^c));return c&65535}function Kb(a){Ub[a>>12].call(this,a)}function Z(){--this.v}
|
||||
var Ub=[function(){},function(a){var b=W(this,a>>6);a&56?L(this,V(this,a,E),b):this.a[a&7]=b;Mb(this,b);--this.v},function(a){var b=W(this,a>>6);a=W(this,a);var c=b-a;!this.C&128&&(this.c=this.f=this.g=c,this.b=(a^b)&(b^c));--this.v},function(a){Mb(this,W(this,a>>6)&W(this,a));--this.v},function(a){Pb(this,a,W(this,a>>6),Rb);--this.v},function(a){Pb(this,a,W(this,a>>6),Sb);--this.v},function(a){Pb(this,a,W(this,a>>6),Qb);--this.v},Z,Z,function(a){var b=X(this,a>>6),b=b&128?b|65280:b;a&56?(b&=255,
|
||||
T(this,V(this,a,Ka),b)):this.a[a&7]=b;Mb(this,b);--this.v},Z,Z,Z,Z,function(a){Pb(this,a,W(this,a>>6),Tb);--this.v},Z];function Vb(a){w.call(this,"ROM",a,Vb);this.b=null;this.s=a.addr;this.f=a.size;this.v=a.writable;this.g=a.alias;this.i=a.file;this.F=ba(this.i);if(this.i){a=this.i;var b=ca(this.F);"json"!=b&&"hex"!=b&&(a=ea()+"/api/v1/dump?file="+this.i+"&format=bytes&decimal=true");var c=this;p(a,null,!0,function(a,b,e){Wb(c,a,b,e)})}}y(Vb);
|
||||
Vb.prototype.Ga=function(a,b,c,d){this.u=b;this.c=c;this.I=d;Xb(this)};Vb.prototype.ua=function(){this.j&&(this.I&&this.I.c(this.id,this.s,this.f,this.j),delete this.j);return!0};Vb.prototype.ta=function(){return!0};
|
||||
function Wb(a,b,c,d){if(d)a.K("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.j=g.symbols;if(!a.b.length){q("Empty ROM: "+b);
|
||||
return}if(1==a.b.length){q(a.b[0]);return}}catch(k){a.K("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]);Xb(a)}}
|
||||
function Xb(a){if(!Ga(a))if(!a.i)D(a);else if(a.b&&a.u){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.h.error=!0;a.K(b)}else{b=a.s;if(Ta(a.u,b,a.f,a.v?1:nb)){var c;for(c=0;c<a.b.length;c++){var d=a.u,f=b+c;d.b[(f&d.u)>>>d.f].Wb(f&d.i,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.u,h=e.f,g=[],k=e.s>>>f.f;0<h&&
|
||||
k<f.b.length;)g.push(f.b[k++]),h-=f.g;f=e.u;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}}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 Vb(d);B(d,c)}});function Yb(a){w.call(this,"RAM",a,Yb);this.g=a.addr;this.f=a.size;this.b=!1}y(Yb);m=Yb.prototype;m.Ga=function(a,b,c,d){this.u=b;this.c=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.b&&this.f&&Ta(this.u,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=C(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Yb(d);B(d,c)}});function Zb(a){w.call(this,"Keyboard",a,Zb);D(this)}y(Zb);Zb.prototype.ba=function(){return!1};Zb.prototype.Ga=function(a,b,c,d){this.s=a;this.c=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 Zb(d);B(d,c)}});
|
||||
function $b(a,b,c){w.call(this,"Computer",a,$b);this.h.L=!1;ac(this,b);this.M=yb(this,"autoPower",a);this.g=0;this.ca=a.busWidth||a.buswidth;this.b=bc;this.F=null;this.s=this.W=!1;this.url=yb(this,"url")||"";(Math.random()+.1).toString(36);this.f=cc(this);if(this.c=Ea("CPU",this.id)){this.I=Ea("Debugger",this.id);this.u=new Na({id:this.Fb+".bus",busWidth:this.ca},this.c,this.I);var d,f=z(this.id);if((this.i=Ea("Panel",this.id))&&this.i.zb)for(b=0;b<f.length;b++)d=f[b],d.K=this.i.K,d.X=this.i.X,d.zb=
|
||||
this.i.zb;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.u,this.c,this.I);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.v=d:this.b=parseInt(d,10));var e;if(a=yb(this,"state")||(e=!0,a.state))b=this.N=a,e||(this.s=!0,this.b=bc),this.b&&(this.J=
|
||||
new O(this,"1.30.0"),dc(this.J)?b=null:delete this.J);!b&&this.b&&(b=ec(this))&&(this.s=!0);if(b){var h=this;p(b,null,!0,function(a,b,c){c?(h.v=null,h.s=!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&&fc(this,this.cb)}else q("Unable to find CPU component")}y($b);var bc=0;
|
||||
function ac(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 fc(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(){fc(a,b,c)});return}}b.call(a,c)}
|
||||
function gc(a,b){var c=new O(a,"1.30.0","validate");if(dc(c)&&hc(c)){var d=ic(c,"timestamp"),f=b?ic(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=$b.prototype;
|
||||
m.cb=function(a){void 0===a&&(a=this.b||(this.F?1:bc));if(!this.g){this.g++;var b=!1,c=!1;this.R=!1;var d=this.J||new O(this,"1.30.0");if(-1==a)b=!0;else if(a>bc){if(dc(d,this.F)){this.j=new O(this,"1.30.0","failsafe");dc(this.j)&&(jc(this,d),a=2,kc(this.j));P(this.j,"timestamp",ia());lc(this.j);var f=this.b&&!this.s;if(1==a||ja("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=hc(d)){var e=ic(d,"code"),h=ic(d,"data");e&&("ok"==e?dc(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),kc(d),dc(d)?(c=hc(d),f=!0):c=!1))}f&&gc(this,c?d:null)}else 2==a&&d.clear()}else gc(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.c&&(c=mc(this,h,d,b,c));b=[d,a,c];-1!=a?fc(this,this.Ob,b):this.Ob(b)}};
|
||||
function mc(a,b,c,d,f){if(!b.h.L){b.h.L=!0;if(b.ua){var e=null;f&&((e=ic(c,b.id))||(e=ic(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.b=bc,window&&window.location.reload()):a.R=!0,b.ua(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.h.L=!0;var d=this.A.power;d&&(d.textContent="Shutdown");this.c&&(mc(this,this.c,b,c,a),this.c.Xa());this.R&&(jc(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.g=0};
|
||||
function jc(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 nc(a,b,c){var d,f="none";if(a.g)return null;a.g--;var e=new O(a,"1.30.0"),h=new O(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.c&&a.c.ta&&(c&&Db(a.c),d=a.c.ta(b,c),"object"===typeof d&&P(e,a.c.id,d),c&&(a.c.h.L=!1,!1===d&&(f=null)));for(var g=z(a.id),k=0;k<g.length;k++){var l=g[k];l.h.L&&(l.ta&&(d=l.ta(b,c),"object"===typeof d&&P(e,l.id,d)),c&&(l.h.L=
|
||||
!1,!1===d&&(f=null)))}f&&(c?(g=d=!1,b?(a.f&&oc(a,a.f,e.toString()),lc(h)&&lc(e)||(f=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&e.clear(g)):f=e.toString());c&&(a.h.L=!1,b=a.A.power)&&(b.textContent="Power");a.g=0;return f}m.reset=function(){this.u&&this.u.reset&&this.u.reset();for(var a=z(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&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)}};
|
||||
(h|=16384));a.O[a.j][d]=f;if(4194170!==e||a.j)a.bb=a.j,a.nb=d;h&&(h&57344&&(0<=a.ma&&(h|=128),a.G&57344||(a.G=a.G|h|a.bb<<5|a.nb<<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.m|=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.i,f=(b&c.v)>>>c.f;c=d!=c.i?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 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.i,e=(b&a.v)>>>a.f;f!=a.i?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 T(a,b){var c;4194304<=b?c=a.a[b-4194304]&255:0<=b?(c=a.v,c=c.b[(b&c.v)>>>c.f].eb(b&c.i,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.b[(b&a.v)>>>a.f].jb(b&a.i,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.j&&d<=a.la&&4<d&&(d<=a.la-32?(a.m|=4,a.a[6]=4,K(a,4,32)):(a.m|=8,a.C|=4));return 0<=(c=Nb(a,d|65536,E))?L(a,c,b):c}
|
||||
function V(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.j&&c&E&&(a.a[6]<=a.la||65534<=a.a[6])&&(a.a[6]<=a.la-32||65534<=a.a[6]?(a.m|=4,a.a[6]=4,K(a,4,36)):(a.m|=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.j&&c&E&&0>=f&&(a.a[6]<=a.la||65534<=a.a[6])&&(a.a[6]<=a.la-32?(a.m|=4,a.a[6]=4,K(a,4,38)):(a.m|=8,a.C|=64));return d}
|
||||
function W(a,b,c){var d;return b&56?(0<=(d=V(a,b,c))&&(d=Nb(a,d,c)),d):4194304+(b&7)}function X(a,b){var c;b&56?(c=W(a,b,Ia),c=M(a,c)):c=a.a[b&7];return c}function Y(a,b){var c;b&56?(c=W(a,b,Ja),c=T(a,c)):c=a.a[b&7]&255;return c}function Pb(a,b,c,d){b&56?(b=W(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 Qb(a,b,c,d){b&56?(b=W(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 Z(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.Vb=function(a){this.h.complete=!0;this.h.Zb=!1;this.h.Ub=!1;this.R=this.o=a;this.Ib&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.ob&224;if(0<(a=this.i.length))for(;0<a--;){if(0<this.i[a].fa){this.i[a].fa--;this.ja=2;break}if(this.i[a].Lb){if(!this.i[a].Lb()){this.i.splice(a,1);c--;continue}this.i[a].Lb=null}this.i[a].hc>b&&(b=this.i[a].hc,
|
||||
c=a)}b>(this.s&224)&&(0>c?K(this,160,42):(K(this,this.i[c].uc,44),this.i.splice(c,1)))}this.G&57344||(this.ea=0,this.Va=this.a[7]);this.C=this.s&16;this.kb=R(this,this.a[7]);this.a[7]=this.a[7]+2&65535;this.decode(this.kb);if(0<=this.kb)switch(a=this.kb,this.a[7]=this.a[7]+2&65535,a&61440){default:switch(a&65024){case 2048:0<=(f=V(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=X(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.g=this.c|a,this.f=this.b=0,-32768>a||32767<a)&&(this.f=65536);break;case 29184:0<=(b=X(this,a))&&(b?(e=a>>6&7,c=this.a[e]<<16|this.a[e|1],this.f=this.b=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.c=a>>16):(this.b=32768,this.g=a>>15|a,this.c=c>>16,-1===b&&65534===this.a[e]&&(this.a[e]=this.a[e|1]=1))):(this.g=this.c=0,this.b=32768,this.f=65536));
|
||||
break;case 29696:0<=(b=X(this,a))&&(e=a>>6&7,a=this.a[e],a&32768&&(a|=4294901760),this.f=this.b=0,b&=63,b&32?(b=64-b,16<b&&(b=16),this.f=a<<17-b,a=a>>b):b&&(16<b?(this.b=a,a=0):(this.f=a=a<<b,(c=a>>15&65535)&&65535!==c&&(this.b=32768))),this.a[e]=a&65535,this.c=this.g=a);break;case 30208:if(0<=(b=X(this,a))){e=a>>6&7;c=this.a[e]<<16|this.a[e|1];this.f=this.b=0;b&=63;if(b&32)b=64-b,32<b&&(b=32),a=c>>b-1,this.f=a<<16,a>>=1,c&2147483648&&(a|=4294967295<<32-b);else if(b){if(a=c<<b-1,this.f=a>>15,a<<=
|
||||
1,32<b&&(b=32),c>>=32-b)c|=4294967295<<b&4294967295,4294967295!==c&&(this.b=32768)}else a=c;this.a[e]=a>>16&65535;this.a[e|1]=a&65535;this.c=a>>16;this.g=a>>16|a}break;case 30720:a&56?0<=(c=M(this,d=W(this,a,F)))&&(c^=this.a[a>>6&7],0<=L(this,d,c)&&(this.c=this.g=c,this.b=0)):(this.c=this.g=c=this.a[a&7]^=this.a[a>>6&7],this.b=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]=Z(this.a[7],a);break;case 512:this.g&
|
||||
65535&&(this.a[7]=Z(this.a[7],a));break;case 768:this.g&65535||(this.a[7]=Z(this.a[7],a));break;case 1024:(this.c&32768)===(this.b&32768)&&(this.a[7]=Z(this.a[7],a));break;case 1280:(this.c&32768)!==(this.b&32768)&&(this.a[7]=Z(this.a[7],a));break;case 1536:this.g&65535&&(this.c&32768)===(this.b&32768)&&(this.a[7]=Z(this.a[7],a));break;case 1792:this.g&65535&&(this.c&32768)===(this.b&32768)||(this.a[7]=Z(this.a[7],a));break;case 32768:this.c&32768||(this.a[7]=Z(this.a[7],a));break;case 33280:!(this.f&
|
||||
65536)&&this.g&65535&&(this.a[7]=Z(this.a[7],a));break;case 33024:this.c&32768&&(this.a[7]=Z(this.a[7],a));break;case 33536:if(this.f&65536||!(this.g&65535))this.a[7]=Z(this.a[7],a);break;case 33792:this.b&32768||(this.a[7]=Z(this.a[7],a));break;case 34048:this.b&32768&&(this.a[7]=Z(this.a[7],a));break;case 34304:this.f&65536||(this.a[7]=Z(this.a[7],a));break;case 34560:this.f&65536&&(this.a[7]=Z(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=V(this,a,0))&&(this.a[7]=f&65535);break;case 192:a&56?0<=(c=M(this,d=W(this,a,F)))&&(a=c<<8|c>>8,0<=L(this,d,a)&&(this.c=this.g=c&65280,this.b=this.f=0)):(e=a&7,c=this.a[e],this.a[e]=(c<<8|c>>8)&65535,this.c=this.g=c&65280,this.b=this.f=0);break;case 2560:a&56?0<=(d=W(this,a,E))&&0<=L(this,d,0)&&(this.c=this.f=this.b=this.g=0):this.c=this.f=this.b=this.g=this.a[a&7]=0;break;case 2624:0<=(c=M(this,d=W(this,a,F)))&&(a=~c,0<=L(this,d,a)&&(this.c=this.g=a,this.f=65536,this.b=0));break;case 2688:a&
|
||||
56?0<=(c=M(this,d=W(this,a,F)))&&(a=c+1,0<=L(this,d,a)&&(this.c=this.g=a,this.b=a&(a^c))):(e=a&7,c=this.a[e],a=c+1,this.a[e]=a&65535,this.c=this.g=a,this.b=a&(a^c));break;case 2752:a&56?0<=(c=M(this,d=W(this,a,F)))&&(a=c-1,0<=L(this,d,a)&&(this.c=this.g=a,this.b=(a^c)&c)):(e=a&7,c=this.a[e],a=c-1,this.a[e]=a&65535,this.c=this.g=a,this.b=(a^c)&c);break;case 2816:0<=(c=M(this,d=W(this,a,F)))&&(a=-c,0<=L(this,d,a)&&(this.f=this.c=this.g=a,this.b=a&c));break;case 2880:0<=(c=M(this,d=W(this,a,F)))&&(a=
|
||||
c+(this.f>>16&1),0<=L(this,d,a)&&(this.f=this.c=this.g=a,this.b=a&(a^c)));break;case 2944:0<=(c=M(this,d=W(this,a,F)))&&(a=c-(this.f>>16&1),0<=L(this,d,a)&&(this.f=this.c=this.g=a,this.b=(a^c)&c));break;case 3008:0<=(c=X(this,a))&&(this.c=this.g=c,this.f=this.b=0);break;case 3072:a&56?0<=(c=M(this,d=W(this,a,F)))&&(a=(this.f&65536|c)>>1,0<=L(this,d,a)&&(this.f=c<<16,this.c=this.g=a,this.b=a^this.f>>1)):(e=a&7,c=this.a[e],a=(this.f&65536|c)>>1,this.a[e]=a&65535,this.f=c<<16,this.c=this.g=a,this.b=
|
||||
a^this.f>>1);break;case 3136:a&56?0<=(c=M(this,d=W(this,a,F)))&&(a=c<<1|this.f>>16&1,0<=L(this,d,a)&&(this.f=this.c=this.g=a,this.b=a^c)):(e=a&7,c=this.a[e],a=c<<1|this.f>>16&1,this.a[e]=a&65535,this.f=this.c=this.g=a,this.b=a^c);break;case 3200:a&56?0<=(c=M(this,d=W(this,a,F)))&&(a=c&32768|c>>1,0<=L(this,d,a)&&(this.f=c<<16,this.c=this.g=a,this.b=this.c^this.f>>1)):(e=a&7,c=this.a[e],a=c&32768|c>>1,this.a[e]=a&65535,this.f=c<<16,this.c=this.g=a,this.b=this.c^this.f>>1);break;case 3264:a&56?0<=(c=
|
||||
M(this,d=W(this,a,F)))&&(a=c<<1,0<=L(this,d,a)&&(this.f=this.c=this.g=a,this.b=a^c)):(e=a&7,c=this.a[e],a=c<<1,this.a[e]=a&65535,this.f=this.c=this.g=a,this.b=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=V(this,a,0))&&(61440!==(this.s&61440)&&(f&=65535),this.j=this.s>>12&3,0<=(b=R(this,f))&&(this.j=this.s>>14&3,0<=S(this,b)&&(this.c=this.g=b,this.b=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.g=b,this.b=0));break;case 3456:0<=(c=Ob(this))&&((this.G&57344||(this.ea=22),a&56)?0<=(f=V(this,a,0))&&(f&=65535,this.j=this.s>>12&3,0<=(d=Nb(this,f,E))&&(this.j=this.s>>14&3,0<=L(this,d,c)&&(this.c=this.g=c,this.b=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.g=c,this.b=0));break;case 3520:0<=(d=W(this,a,E))&&(a=-(this.c>>15&1),0<=L(this,d,a)&&(this.g=a,this.b=0));break;
|
||||
case 35328:a&56?0<=(d=W(this,a,Ka))&&0<=U(this,d,0)&&(this.c=this.f=this.b=this.g=0):(this.a[a&7]&=65280,this.c=this.f=this.b=this.g=0);break;case 35392:0<=(c=T(this,d=W(this,a,G)))&&(a=~c,0<=U(this,d,a)&&(this.c=this.g=a<<8,this.f=65536,this.b=0));break;case 35456:0<=(c=T(this,d=W(this,a,G)))&&(a=c+1,0<=U(this,d,a)&&(this.c=this.g=a<<8,this.b=(a&(a^c))<<8));break;case 35520:0<=(c=T(this,d=W(this,a,G)))&&(a=c-1,0<=U(this,d,a)&&(this.c=this.g=a<<8,this.b=((a^c)&c)<<8));break;case 35584:0<=(c=T(this,
|
||||
d=W(this,a,G)))&&(a=-c,0<=U(this,d,a)&&(this.f=this.c=this.g=a<<8,this.b=(a&c)<<8));break;case 35648:0<=(c=T(this,d=W(this,a,G)))&&(a=c+(this.f>>16&1),0<=U(this,d,a)&&(this.c=this.g=this.f=a<<8,this.b=(a&(a^c))<<8));break;case 35712:0<=(c=T(this,d=W(this,a,G)))&&(a=c-(this.f>>16&1),0<=U(this,d,a)&&(this.c=this.g=this.f=a<<8,this.b=((a^c)&c)<<8));break;case 35776:0<=(c=Y(this,a))&&(this.c=this.g=c<<8,this.f=this.b=0);break;case 35840:0<=(c=T(this,d=W(this,a,G)))&&(a=((this.f&65536)>>8|c)>>1,0<=U(this,
|
||||
d,a)&&(this.f=c<<16,this.c=this.g=a<<8,this.b=this.c^this.f>>1));break;case 35904:0<=(c=T(this,d=W(this,a,G)))&&(a=c<<1|this.f>>16&1,0<=U(this,d,a)&&(this.f=this.c=this.g=a<<8,this.b=(a^c)<<8));break;case 35968:0<=(c=T(this,d=W(this,a,G)))&&(a=c&128|c>>1,0<=U(this,d,a)&&(this.f=c<<16,this.c=this.g=a<<8,this.b=this.c^this.f>>1));break;case 36032:0<=(c=T(this,d=W(this,a,G)))&&(a=c<<1,0<=U(this,d,a)&&(this.f=this.c=this.g=a<<8,this.b=(a^c)<<8));break;case 36160:a&56?0<=(f=V(this,a,0))&&(this.j=this.s>>
|
||||
12&3,0<=(b=R(this,f|65536))&&(this.j=this.s>>14&3,0<=S(this,b)&&(this.c=this.g=b,this.b=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.g=b,this.b=0));break;case 36224:0<=(c=Ob(this))&&((this.G&57344||(this.ea=22),a&56)?0<=(f=V(this,a,0))&&(this.j=this.s>>12&3,0<=(d=Nb(this,f|65536,E))&&(this.j=this.s>>14&3,0<=L(this,d,c)&&(this.c=this.g=c,this.b=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.g=c,this.b=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.f=0);a&2&&(this.b=0);a&4&&(this.g=1);a&8&&(this.c=0);break;case 176:case 184:a&1&&(this.f=65536);a&2&&(this.b=32768);a&4&&(this.g=0);a&8&&(this.c=32768);break;default:switch(a){case 0:49152&this.s?(this.m|=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.i.length))for(;0<a--;)c+=this.i[a].fa,this.i[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.o)
|
||||
}return this.h.complete?this.R-this.o:void 0===this.h.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 Rb(a,b){var c=a+b;!this.C&128&&(this.c=this.g=this.f=c,this.b=(a^c)&(b^c));return c&65535}function Sb(a,b){var c=~a&b;Q(this,c);return c}function Tb(a,b){var c=~a&b;Q(this,c<<8);return c}function Ub(a,b){var c=a|b;Q(this,c);return c}function Vb(a,b){var c=a|b;Q(this,c<<8);return c}
|
||||
function Wb(a,b){var c=b-a;Mb(this,c,a,b);return c&65535}function Kb(a){Xb[a>>12].call(this,a)}function Yb(){--this.o}
|
||||
var Xb=[function(){},function(a){var b=X(this,a>>6);a&56?L(this,W(this,a,E),b):this.a[a&7]=b;Q(this,b);--this.o},function(a){var b=X(this,a>>6);a=X(this,a);Mb(this,b-a,a,b);--this.o},function(a){Q(this,X(this,a>>6)&X(this,a));--this.o},function(a){Pb(this,a,X(this,a>>6),Sb);--this.o},function(a){Pb(this,a,X(this,a>>6),Ub);--this.o},function(a){Pb(this,a,X(this,a>>6),Rb);--this.o},Yb,Yb,function(a){var b=Y(this,a>>6),b=b&128?b|65280:b;a&56?(b&=255,U(this,W(this,a,Ka),b)):this.a[a&7]=b;Q(this,b<<8);
|
||||
--this.o},function(a){var b=Y(this,a>>6)<<8;a=Y(this,a)<<8;Mb(this,b-a,a,b);--this.o},function(a){Q(this,(Y(this,a>>6)&Y(this,a))<<8);--this.o},function(a){Qb(this,a,Y(this,a>>6),Tb);--this.o},function(a){Qb(this,a,Y(this,a>>6),Vb);--this.o},function(a){Pb(this,a,X(this,a>>6),Wb);--this.o},Yb];
|
||||
function Zb(a){w.call(this,"ROM",a,Zb);this.b=null;this.o=a.addr;this.f=a.size;this.u=a.writable;this.g=a.alias;this.i=a.file;this.F=ba(this.i);if(this.i){a=this.i;var b=ca(this.F);"json"!=b&&"hex"!=b&&(a=ea()+"/api/v1/dump?file="+this.i+"&format=bytes&decimal=true");var c=this;p(a,null,!0,function(a,b,e){$b(c,a,b,e)})}}y(Zb);Zb.prototype.Ga=function(a,b,c,d){this.v=b;this.c=c;this.I=d;ac(this)};Zb.prototype.ua=function(){this.j&&(this.I&&this.I.c(this.id,this.o,this.f,this.j),delete this.j);return!0};
|
||||
Zb.prototype.ta=function(){return!0};
|
||||
function $b(a,b,c,d){if(d)a.K("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.j=g.symbols;if(!a.b.length){q("Empty ROM: "+b);
|
||||
return}if(1==a.b.length){q(a.b[0]);return}}catch(k){a.K("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]);ac(a)}}
|
||||
function ac(a){if(!Ga(a))if(!a.i)D(a);else if(a.b&&a.v){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.h.error=!0;a.K(b)}else{b=a.o;if(Ta(a.v,b,a.f,a.u?1:nb)){var c;for(c=0;c<a.b.length;c++){var d=a.v,f=b+c;d.b[(f&d.v)>>>d.f].Wb(f&d.i,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.v,h=e.f,g=[],k=e.o>>>f.f;0<h&&
|
||||
k<f.b.length;)g.push(f.b[k++]),h-=f.g;f=e.v;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}}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 Zb(d);B(d,c)}});function bc(a){w.call(this,"RAM",a,bc);this.g=a.addr;this.f=a.size;this.b=!1}y(bc);m=bc.prototype;m.Ga=function(a,b,c,d){this.v=b;this.c=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.b&&this.f&&Ta(this.v,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=C(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new bc(d);B(d,c)}});function cc(a){w.call(this,"Keyboard",a,cc);D(this)}y(cc);cc.prototype.ba=function(){return!1};cc.prototype.Ga=function(a,b,c,d){this.u=a;this.c=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 cc(d);B(d,c)}});
|
||||
function dc(a,b,c){w.call(this,"Computer",a,dc);this.h.L=!1;ec(this,b);this.M=yb(this,"autoPower",a);this.g=0;this.ca=a.busWidth||a.buswidth;this.b=fc;this.F=null;this.o=this.W=!1;this.url=yb(this,"url")||"";(Math.random()+.1).toString(36);this.f=gc(this);if(this.c=Ea("CPU",this.id)){this.I=Ea("Debugger",this.id);this.v=new Na({id:this.Fb+".bus",busWidth:this.ca},this.c,this.I);var d,f=z(this.id);if((this.i=Ea("Panel",this.id))&&this.i.zb)for(b=0;b<f.length;b++)d=f[b],d.K=this.i.K,d.X=this.i.X,d.zb=
|
||||
this.i.zb;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.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=yb(this,"state")||(e=!0,a.state))b=this.N=a,e||(this.o=!0,this.b=fc),this.b&&(this.J=
|
||||
new O(this,"1.30.0"),hc(this.J)?b=null:delete this.J);!b&&this.b&&(b=ic(this))&&(this.o=!0);if(b){var h=this;p(b,null,!0,function(a,b,c){c?(h.u=null,h.o=!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&&jc(this,this.cb)}else q("Unable to find CPU component")}y(dc);var fc=0;
|
||||
function ec(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 jc(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(){jc(a,b,c)});return}}b.call(a,c)}
|
||||
function kc(a,b){var c=new O(a,"1.30.0","validate");if(hc(c)&&lc(c)){var d=mc(c,"timestamp"),f=b?mc(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=dc.prototype;
|
||||
m.cb=function(a){void 0===a&&(a=this.b||(this.F?1:fc));if(!this.g){this.g++;var b=!1,c=!1;this.R=!1;var d=this.J||new O(this,"1.30.0");if(-1==a)b=!0;else if(a>fc){if(hc(d,this.F)){this.j=new O(this,"1.30.0","failsafe");hc(this.j)&&(nc(this,d),a=2,oc(this.j));P(this.j,"timestamp",ia());pc(this.j);var f=this.b&&!this.o;if(1==a||ja("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=lc(d)){var e=mc(d,"code"),h=mc(d,"data");e&&("ok"==e?hc(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),oc(d),hc(d)?(c=lc(d),f=!0):c=!1))}f&&kc(this,c?d:null)}else 2==a&&d.clear()}else kc(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.c&&(c=qc(this,h,d,b,c));b=[d,a,c];-1!=a?jc(this,this.Ob,b):this.Ob(b)}};
|
||||
function qc(a,b,c,d,f){if(!b.h.L){b.h.L=!0;if(b.ua){var e=null;f&&((e=mc(c,b.id))||(e=mc(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.b=fc,window&&window.location.reload()):a.R=!0,b.ua(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.h.L=!0;var d=this.A.power;d&&(d.textContent="Shutdown");this.c&&(qc(this,this.c,b,c,a),this.c.Xa());this.R&&(nc(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.g=0};
|
||||
function nc(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 rc(a,b,c){var d,f="none";if(a.g)return null;a.g--;var e=new O(a,"1.30.0"),h=new O(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.c&&a.c.ta&&(c&&Db(a.c),d=a.c.ta(b,c),"object"===typeof d&&P(e,a.c.id,d),c&&(a.c.h.L=!1,!1===d&&(f=null)));for(var g=z(a.id),k=0;k<g.length;k++){var l=g[k];l.h.L&&(l.ta&&(d=l.ta(b,c),"object"===typeof d&&P(e,l.id,d)),c&&(l.h.L=
|
||||
!1,!1===d&&(f=null)))}f&&(c?(g=d=!1,b?(a.f&&sc(a,a.f,e.toString()),pc(h)&&pc(e)||(f=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&e.clear(g)):f=e.toString());c&&(a.h.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.h.L?nc(d,!1,!0):fc(d,d.cb))},!0;case "reset":return this.A[b]=c,c.onclick=function(){if(d.h.L&&!d.g)if(d.b&&!d.v){var a=ja("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");nc(d,a,!0);!a&&d.N?window&&window.location.reload():d.cb(bc)}else d.reset(),d.c&&d.c.Xa()},!0;case "save":if(da()){c.parentNode.removeChild(c);break}this.A[b]=
|
||||
c;c.onclick=function(){var a=cc(d,!0);if(a){var b=!!(d.b&&!d.v||d.N),c=nc(d,b);b?oc(d,a,c):d.K("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function cc(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=pc(a,c))||a.K("The user ID is invalid."))):b&&a.K("Browser local storage is not available"));return c}
|
||||
function pc(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 ec(a){var b=null;a.f&&(b=ea()+"/api/v1/user?req=load&user="+a.f+"&state="+qc(a,"1.30.0"));return b}
|
||||
function oc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=qc(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.c&&this.c.Ka(a);this.i&&this.i.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 $b(h,d,!0);B(h,e);h.M&&fc(h,h.cb)}});t.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.h.L&&c.cb(-1)}});
|
||||
t.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.h.L&&nc(c,!(!c.b||c.v),!0)}});function O(a,b,c){this.id=a.id;this.key=qc(a,b,c);this.I=a.I;kc(this,a.cc)}function qc(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}
|
||||
O.prototype={constructor:O,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){kc(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 kc(a,b){a[a.id]={};b&&P(a,"parms",b);a.c=!1}function lc(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 hc(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){q(c.message||c),b=!1}return b}function dc(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 ic(a,b){return a[a.id][b]||null}function P(a,b,c){try{a[a.id][b]=c}catch(d){}}var rc=0;
|
||||
function sc(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)):tc(g,a,b,c,d,f,e)})}
|
||||
function tc(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(v){g=null,a=v.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?uc(a,e,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function uc(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,r=/( [a-z]+=)(['"])(.*?)\2/g;l=r.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);uc(a,b,c)}})}else c(a,null)}
|
||||
function vc(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&&(--rc||ua(!0));k=!1}var h,g,k=!0;rc++;Ca[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=l:v.appendChild(document.createTextNode(l));r.appendChild(v)}c||
|
||||
(c="/versions/pdp11/1.30.0/components.xsl");l=function(d,g){g?sc(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,--rc||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),--rc||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)?sc(b,a,d,!0,f,l):tc(b,null,a,d,!1,f,l)}else e("missing machine element: "+a)}catch(N){e(N.message)}return k}window.embedPDP11=function(a,b,c,d){ua(!1);return vc(a,b,c,d)};window.enableEvents=ua;window.sendEvent=va;})();
|
||||
m.ba=function(a,b,c){var d=this;switch(b){case "power":return this.A[b]=c,c.onclick=function(){d.g||(d.h.L?rc(d,!1,!0):jc(d,d.cb))},!0;case "reset":return this.A[b]=c,c.onclick=function(){if(d.h.L&&!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.");rc(d,a,!0);!a&&d.N?window&&window.location.reload():d.cb(fc)}else d.reset(),d.c&&d.c.Xa()},!0;case "save":if(da()){c.parentNode.removeChild(c);break}this.A[b]=
|
||||
c;c.onclick=function(){var a=gc(d,!0);if(a){var b=!!(d.b&&!d.u||d.N),c=rc(d,b);b?sc(d,a,c):d.K("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function gc(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=tc(a,c))||a.K("The user ID is invalid."))):b&&a.K("Browser local storage is not available"));return c}
|
||||
function tc(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 ic(a){var b=null;a.f&&(b=ea()+"/api/v1/user?req=load&user="+a.f+"&state="+uc(a,"1.30.0"));return b}
|
||||
function sc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=uc(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.c&&this.c.Ka(a);this.i&&this.i.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 dc(h,d,!0);B(h,e);h.M&&jc(h,h.cb)}});t.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.h.L&&c.cb(-1)}});
|
||||
t.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.h.L&&rc(c,!(!c.b||c.u),!0)}});function O(a,b,c){this.id=a.id;this.key=uc(a,b,c);this.I=a.I;oc(this,a.cc)}function uc(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}
|
||||
O.prototype={constructor:O,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){oc(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 oc(a,b){a[a.id]={};b&&P(a,"parms",b);a.c=!1}function pc(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 lc(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){q(c.message||c),b=!1}return b}function hc(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 mc(a,b){return a[a.id][b]||null}function P(a,b,c){try{a[a.id][b]=c}catch(d){}}var vc=0;
|
||||
function wc(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)):xc(g,a,b,c,d,f,e)})}
|
||||
function xc(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(v){g=null,a=v.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?yc(a,e,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function yc(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,r=/( [a-z]+=)(['"])(.*?)\2/g;l=r.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);yc(a,b,c)}})}else c(a,null)}
|
||||
function zc(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&&(--vc||ua(!0));k=!1}var h,g,k=!0;vc++;Ca[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=l:v.appendChild(document.createTextNode(l));r.appendChild(v)}c||
|
||||
(c="/versions/pdp11/1.30.0/components.xsl");l=function(d,g){g?wc(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,--vc||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),--vc||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)?wc(b,a,d,!0,f,l):xc(b,null,a,d,!1,f,l)}else e("missing machine element: "+a)}catch(N){e(N.message)}return k}window.embedPDP11=function(a,b,c,d){ua(!1);return zc(a,b,c,d)};window.enableEvents=ua;window.sendEvent=va;})();
|
||||
|
|
|
|||
Loading…
Reference in a new issue