diff --git a/apps/pcx86/1981/donkey/README.md b/apps/pcx86/1981/donkey/README.md
index a83a905f25..39ffa2de5e 100644
--- a/apps/pcx86/1981/donkey/README.md
+++ b/apps/pcx86/1981/donkey/README.md
@@ -19,7 +19,6 @@ machines:
name: PC-DOS 1.00
B:
name: None
- autoType: $date\rbasica donkey\r
---
IBM PC Running DONKEY.BAS
diff --git a/apps/pcx86/1981/donkey/debugger/README.md b/apps/pcx86/1981/donkey/debugger/README.md
index f1ca88f9d3..026e0b6c3b 100644
--- a/apps/pcx86/1981/donkey/debugger/README.md
+++ b/apps/pcx86/1981/donkey/debugger/README.md
@@ -13,7 +13,6 @@ machines:
name: PC-DOS 1.00
B:
name: None
- autoType: $date\rbasica donkey\r
---
IBM PC Running DONKEY.BAS (with Debugger)
diff --git a/apps/pcx86/1981/visicalc/README.md b/apps/pcx86/1981/visicalc/README.md
index c67f216c56..9f42540d56 100644
--- a/apps/pcx86/1981/visicalc/README.md
+++ b/apps/pcx86/1981/visicalc/README.md
@@ -13,7 +13,6 @@ machines:
name: PC-DOS 1.00
B:
name: VisiCalc (1981)
- autoType: $date\rb:\rvc\r
---
VisiCalc (1981)
diff --git a/disks/pcx86/library.xml b/disks/pcx86/library.xml
index bfafe11d7e..3cb8fa820e 100644
--- a/disks/pcx86/library.xml
+++ b/disks/pcx86/library.xml
@@ -814,6 +814,7 @@
QEMM-386 4.23
QEMM-386 5.13
QEMM-386 6.02
+ SPACEMAKER 1.06
Wolfenstein 3D 1.4
MS Flight Simulator (1982)
MS Flight Simulator (1984)
diff --git a/disks/pcx86/shareware/pcsig08/library.xml b/disks/pcx86/shareware/pcsig08/library.xml
index 58083ad758..6980c8e130 100644
--- a/disks/pcx86/shareware/pcsig08/library.xml
+++ b/disks/pcx86/shareware/pcsig08/library.xml
@@ -814,6 +814,7 @@
QEMM-386 4.23
QEMM-386 5.13
QEMM-386 6.02
+ SPACEMAKER 1.06
Wolfenstein 3D 1.4
MS Flight Simulator (1982)
MS Flight Simulator (1984)
diff --git a/disks/pcx86/tools/other/spacemaker/1.06/README.md b/disks/pcx86/tools/other/spacemaker/1.06/README.md
new file mode 100644
index 0000000000..ad0ab99d84
--- /dev/null
+++ b/disks/pcx86/tools/other/spacemaker/1.06/README.md
@@ -0,0 +1,15 @@
+---
+layout: page
+title: SPACEMAKER 1.06
+permalink: /disks/pcx86/tools/other/spacemaker/1.06/
+---
+
+SPACEMAKER 1.06
+---------------
+
+### Directory of SPACEMAKER 1.06
+
+ Volume in drive A has no label
+ Directory of A:\
+
+ SM COM 4680 6-08-88 6:55p
diff --git a/disks/pcx86/tools/other/spacemaker/README.md b/disks/pcx86/tools/other/spacemaker/README.md
new file mode 100644
index 0000000000..2f5cffbb9e
--- /dev/null
+++ b/disks/pcx86/tools/other/spacemaker/README.md
@@ -0,0 +1,12 @@
+---
+layout: page
+title: SPACEMAKER
+permalink: /disks/pcx86/tools/other/spacemaker/
+---
+
+SPACEMAKER
+----------
+
+SPACEMAKER was an EXE compression utility created by Realia Inc.
+
+* [SPACEMAKER 1.06](1.06/)
diff --git a/modules/c1pjs/lib/computer.js b/modules/c1pjs/lib/computer.js
index 15aa3ce6f7..c66b73f2e7 100644
--- a/modules/c1pjs/lib/computer.js
+++ b/modules/c1pjs/lib/computer.js
@@ -145,7 +145,7 @@ class C1PComputer extends Component {
/**
* @this {C1PComputer}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/c1pjs/lib/cpu.js b/modules/c1pjs/lib/cpu.js
index 96cfb941d9..a00bb3c7d0 100644
--- a/modules/c1pjs/lib/cpu.js
+++ b/modules/c1pjs/lib/cpu.js
@@ -514,7 +514,7 @@ class C1PCPU extends Component {
/**
* @this {C1PCPU}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "run")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/c1pjs/lib/debugger.js b/modules/c1pjs/lib/debugger.js
index 038e7510a2..c7fa130d27 100644
--- a/modules/c1pjs/lib/debugger.js
+++ b/modules/c1pjs/lib/debugger.js
@@ -492,7 +492,7 @@ class C1PDebugger extends Component {
/**
* @this {C1PDebugger}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/c1pjs/lib/disk.js b/modules/c1pjs/lib/disk.js
index 01378ece09..3fb69824e6 100644
--- a/modules/c1pjs/lib/disk.js
+++ b/modules/c1pjs/lib/disk.js
@@ -665,7 +665,7 @@ class C1PDiskController extends Component {
/**
* @this {C1PDiskController}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "listDisk")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/c1pjs/lib/keyboard.js b/modules/c1pjs/lib/keyboard.js
index 2eddbf744f..24b53b7b29 100644
--- a/modules/c1pjs/lib/keyboard.js
+++ b/modules/c1pjs/lib/keyboard.js
@@ -396,7 +396,7 @@ class C1PKeyboard extends Component {
/**
* @this {C1PKeyboard}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "esc", "ctrl-c")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/c1pjs/lib/panel.js b/modules/c1pjs/lib/panel.js
index 7429fd0287..c54e323408 100644
--- a/modules/c1pjs/lib/panel.js
+++ b/modules/c1pjs/lib/panel.js
@@ -62,7 +62,7 @@ class C1PPanel extends Component {
* component that doesn't recognize the specified binding should simply ignore it.
*
* @this {C1PPanel}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/c1pjs/lib/serial.js b/modules/c1pjs/lib/serial.js
index e60e9bea22..c8aca1ce8d 100644
--- a/modules/c1pjs/lib/serial.js
+++ b/modules/c1pjs/lib/serial.js
@@ -101,7 +101,7 @@ class C1PSerialPort extends Component {
/**
* @this {C1PSerialPort}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "listSerial")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/c1pjs/lib/video.js b/modules/c1pjs/lib/video.js
index c9a58cf6bf..2796443712 100644
--- a/modules/c1pjs/lib/video.js
+++ b/modules/c1pjs/lib/video.js
@@ -216,7 +216,7 @@ class C1PVideo extends Component {
/**
* @this {C1PVideo}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "refresh")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/diskdump/bin/disklist b/modules/diskdump/bin/disklist
index 2b4d1c70e0..cb98f0b5d8 100644
--- a/modules/diskdump/bin/disklist
+++ b/modules/diskdump/bin/disklist
@@ -31,15 +31,20 @@
*/
var fs = require("fs");
+var defines = require("../../shared/lib/defines");
+var Str = require("../../../modules/shared/lib/strlib");
+var Proc = require("../../shared/lib/proclib");
+var args = Proc.getArgs();
/**
- * println(s)
+ * printf(format, ...args)
*
- * @param {*} s
+ * @param {string} format
+ * @param {...} args
*/
-function println(s)
+function printf(format, ...args)
{
- console.log(s);
+ process.stdout.write(Str.sprintf(format, ...args));
}
function processManifest(sManifest)
@@ -47,42 +52,41 @@ function processManifest(sManifest)
try {
var sXML = fs.readFileSync(sManifest, 'utf-8');
} catch(err) {
- println("error: unable to read manifest: " + sManifest);
+ printf("error: unable to read manifest: %s\n", sManifest);
return;
}
var aMatchDisks = sXML.match(/]*>[\S\s]*?<\/disk>/g);
if (!aMatchDisks) {
- println("warning: no disks found in: " + sManifest);
+ printf("warning: no disks found in: %s\n", sManifest);
return;
}
+ var sDiskTitle;
+ var matchTitle = sXML.match(/(.*?)<\/title>/);
+ var matchVersion = sXML.match(/(.*?)<\/version>/);
+ if (matchTitle && matchVersion) sDiskTitle = matchTitle[1] + ' ' + matchVersion[1];
for (var iDisk = 0; iDisk < aMatchDisks.length; iDisk++) {
var sDisk = aMatchDisks[iDisk];
var matchDir = sDisk.match(/dir="(.*?)"/);
var matchLink = sDisk.match(/href="(.*?)"/);
var matchDiskName = sDisk.match(/(.*?)<\/name>/);
var aMatchFiles = sDisk.match(/]*>[\S\s]*?<\/file>/g);
- var sDiskName = matchDiskName && matchDiskName[1];
+ var sDiskName = matchDiskName && matchDiskName[1] || sDiskTitle;
if (!aMatchFiles || !sDiskName) {
- println("warning: no files in disk: " + sDiskName);
+ printf("warning: no files in disk: %s\n", sDiskName);
return;
}
- println("### Directory of " + sDiskName + "\n");
- println("\t Volume in drive A " + (matchDiskName? ("is " + matchDiskName[1]) : "has no label"));
- println("\t Directory of A:\\\n\t");
+ printf("### Directory of %s\n\n", sDiskName);
+ printf(" Volume in drive A %s\n", (matchDiskName? ("is " + matchDiskName[1]) : "has no label"));
+ printf(" Directory of A:\\\n \n");
for (var iFile = 0; iFile < aMatchFiles.length; iFile++) {
var sFile = aMatchFiles[iFile];
var matchSize = sFile.match(/size="([0-9]*)"/);
var matchTime = sFile.match(/time="([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9]) ([0-9][0-9]):([0-9][0-9]):([0-9][0-9])"/);
var matchFileName = sFile.match(/>(.*?));
if (!matchSize || !matchTime || !matchFileName) {
- println("warning: file entry #" + iFile + " incomplete");
+ printf("warning: file entry #%d incomplete\n", iFile);
return;
}
- /*
- * Here's our template, from PC-DOS 2.00:
- *
- * COMMAND COM 17664 3-08-83 12:00p
- */
var sSize = matchSize[1];
var sTime = matchTime[1];
var sFileName = matchFileName[1].replace(/&/g, "&");
@@ -93,12 +97,11 @@ function processManifest(sManifest)
sBaseName = sFileName.substr(0, i);
sExtension = sFileName.substr(i + 1);
}
- sBaseName = (sBaseName + " ").substr(0, 9);
- sExtension = (sExtension + " ").substr(0, 3);
- sSize = (" " + sSize).slice(-9);
var iMonth = +matchTime[2];
- var sDate = (" " + iMonth).slice(-4) + '-' + matchTime[3] + '-' + matchTime[1].substr(2);
+ var iDay = +matchTime[3];
+ var iYear = +matchTime[1] % 100;
var iHour = +matchTime[4];
+ var iMinute = +matchTime[5];
var sSuffix;
if (iHour < 12) {
sSuffix = "a";
@@ -108,11 +111,20 @@ function processManifest(sManifest)
sSuffix = "p";
if (iHour > 12) iHour -= 12;
}
- var sTime = (" " + iHour).slice(-4) + ':' + matchTime[5] + sSuffix;
- println("\t" + sBaseName + sExtension + sSize + sDate + sTime);
+ /*
+ * Here's our template, from PC-DOS 2.00:
+ *
+ * COMMAND COM 17664 3-08-83 12:00p
+ */
+ printf(" %-8s %-3s %8s %2d-%02d-%02d %2d:%02d%s\n", sBaseName, sExtension, sSize, iMonth, iDay, iYear, iHour, iMinute, sSuffix);
}
- println("");
+ printf("\n");
}
}
-processManifest("../../../disks/pcx86/tools/microsoft/pascal/4.00/manifest.xml");
+if (args.argc > 1) {
+ processManifest(args.argv[1]);
+ process.exit(0);
+}
+
+printf("usage: disklist \n");
diff --git a/modules/pc8080/lib/chipset.js b/modules/pc8080/lib/chipset.js
index 8f15c358cc..a135bdead1 100644
--- a/modules/pc8080/lib/chipset.js
+++ b/modules/pc8080/lib/chipset.js
@@ -132,7 +132,7 @@ class ChipSet8080 extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {ChipSet8080}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "sw1")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pc8080/lib/computer.js b/modules/pc8080/lib/computer.js
index f4c3842e0f..8dba5e45e3 100644
--- a/modules/pc8080/lib/computer.js
+++ b/modules/pc8080/lib/computer.js
@@ -1036,7 +1036,7 @@ class Computer8080 extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {Computer8080}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pc8080/lib/cpu.js b/modules/pc8080/lib/cpu.js
index f9c1caf7de..56d5a57743 100644
--- a/modules/pc8080/lib/cpu.js
+++ b/modules/pc8080/lib/cpu.js
@@ -150,7 +150,7 @@ class CPU8080 extends Component {
for (var i = 0; i < CPU8080.BUTTONS.length; i++) {
var control = this.bindings[CPU8080.BUTTONS[i]];
- if (control) this.cmp.setBinding(null, CPU8080.BUTTONS[i], control);
+ if (control) this.cmp.setBinding("", CPU8080.BUTTONS[i], control);
}
/*
@@ -439,7 +439,7 @@ class CPU8080 extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {CPU8080}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "run")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pc8080/lib/cpustate.js b/modules/pc8080/lib/cpustate.js
index 6d25399f78..e490e82f6f 100644
--- a/modules/pc8080/lib/cpustate.js
+++ b/modules/pc8080/lib/cpustate.js
@@ -258,7 +258,7 @@ class CPUState8080 extends CPU8080 {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {CPUState8080}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "AX")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pc8080/lib/debugger.js b/modules/pc8080/lib/debugger.js
index d5f31a3c0e..15f05d0841 100644
--- a/modules/pc8080/lib/debugger.js
+++ b/modules/pc8080/lib/debugger.js
@@ -209,7 +209,7 @@ class Debugger8080 extends Debugger {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {Debugger8080}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "debugInput")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pc8080/lib/keyboard.js b/modules/pc8080/lib/keyboard.js
index cf9d0d127f..0b3e554da6 100644
--- a/modules/pc8080/lib/keyboard.js
+++ b/modules/pc8080/lib/keyboard.js
@@ -78,7 +78,7 @@ class Keyboard8080 extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {Keyboard8080}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "esc")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pc8080/lib/panel.js b/modules/pc8080/lib/panel.js
index 015f649b7d..b6041d7212 100644
--- a/modules/pc8080/lib/panel.js
+++ b/modules/pc8080/lib/panel.js
@@ -66,7 +66,7 @@ class Panel8080 extends Component {
* that doesn't recognize the specified binding should simply ignore it.
*
* @this {Panel8080}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pc8080/lib/serial.js b/modules/pc8080/lib/serial.js
index 3fe2c243d5..1bdca757d1 100644
--- a/modules/pc8080/lib/serial.js
+++ b/modules/pc8080/lib/serial.js
@@ -174,7 +174,7 @@ class SerialPort8080 extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {SerialPort8080}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "buffer")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -184,7 +184,7 @@ class SerialPort8080 extends Component {
{
var serial = this;
- if (sHTMLType == null || sHTMLType == "textarea") {
+ if (!sHTMLType || sHTMLType == "textarea") {
this.bindings[sBinding] = this.controlBuffer = control;
diff --git a/modules/pc8080/lib/video.js b/modules/pc8080/lib/video.js
index ca094efbd3..0b33ef5522 100644
--- a/modules/pc8080/lib/video.js
+++ b/modules/pc8080/lib/video.js
@@ -342,7 +342,7 @@ class Video8080 extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {Video8080}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "refresh")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pcx86/lib/chipset.js b/modules/pcx86/lib/chipset.js
index 10fd3e7a30..ca23937baf 100644
--- a/modules/pcx86/lib/chipset.js
+++ b/modules/pcx86/lib/chipset.js
@@ -268,7 +268,7 @@ class ChipSet extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {ChipSet}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "sw1")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pcx86/lib/computer.js b/modules/pcx86/lib/computer.js
index 0ad459b4b6..876ae82a96 100644
--- a/modules/pcx86/lib/computer.js
+++ b/modules/pcx86/lib/computer.js
@@ -1296,7 +1296,7 @@ class Computer extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {Computer}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pcx86/lib/cpu.js b/modules/pcx86/lib/cpu.js
index b6fb1ac352..11956cc9d2 100644
--- a/modules/pcx86/lib/cpu.js
+++ b/modules/pcx86/lib/cpu.js
@@ -146,7 +146,7 @@ class CPU extends Component {
for (var i = 0; i < CPU.BUTTONS.length; i++) {
var control = this.bindings[CPU.BUTTONS[i]];
- if (control) this.cmp.setBinding(null, CPU.BUTTONS[i], control);
+ if (control) this.cmp.setBinding("", CPU.BUTTONS[i], control);
}
this.fpu = cmp.getMachineComponent("FPU");
@@ -451,7 +451,7 @@ class CPU extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {CPU}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "run")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pcx86/lib/cpux86.js b/modules/pcx86/lib/cpux86.js
index 641e18c60e..c5fdd7690c 100644
--- a/modules/pcx86/lib/cpux86.js
+++ b/modules/pcx86/lib/cpux86.js
@@ -2984,7 +2984,7 @@ class CPUX86 extends CPU {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {CPUX86}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "AX")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pcx86/lib/debugger.js b/modules/pcx86/lib/debugger.js
index 3655d9fb84..490af43e2b 100644
--- a/modules/pcx86/lib/debugger.js
+++ b/modules/pcx86/lib/debugger.js
@@ -890,7 +890,7 @@ class DebuggerX86 extends Debugger {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {DebuggerX86}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "debugInput")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -4183,7 +4183,7 @@ class DebuggerX86 extends Debugger {
*
* @this {DebuggerX86}
* @param {string} sName
- * @param {number|null} sel
+ * @param {number|null|*} sel
* @param {number} addr
* @param {number} addrLimit
* @return {string}
@@ -4378,7 +4378,7 @@ class DebuggerX86 extends Debugger {
* @param {number} nSegment (zero if undefined)
* @param {number} sel (the default segment/selector for all symbols in this group)
* @param {number} off (from the base of the given selector)
- * @param {number|null} addr (physical address where the symbols are located, if the memory is physical; eg, ROM)
+ * @param {number|null|*} addr (physical address where the symbols are located, if the memory is physical; eg, ROM)
* @param {number} len (the size of the region, in bytes)
* @param {Object} aSymbols (collection of symbols in this group; the format of this collection is described below)
*/
@@ -4434,7 +4434,7 @@ class DebuggerX86 extends Debugger {
* removeSymbols(sModule, nSegment)
*
* @this {DebuggerX86}
- * @param {string|null} sModule
+ * @param {string|null|*} sModule
* @param {number} [nSegment] (segment # if sModule set, selector if sModule clear)
* @return {string|null} name of the module removed, or null if no module was found
*/
diff --git a/modules/pcx86/lib/fdc.js b/modules/pcx86/lib/fdc.js
index b77fce31b1..e12f76438b 100644
--- a/modules/pcx86/lib/fdc.js
+++ b/modules/pcx86/lib/fdc.js
@@ -200,7 +200,7 @@ class FDC extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {FDC}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "listDisks")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pcx86/lib/fpux86.js b/modules/pcx86/lib/fpux86.js
index 356eebf1c5..8f3f658697 100644
--- a/modules/pcx86/lib/fpux86.js
+++ b/modules/pcx86/lib/fpux86.js
@@ -69,7 +69,7 @@ if (NODE) {
*/
/**
- * class FPUX86
+ * @class FPUX86
* @unrestricted (allows the class to define properties, both dot and named, outside of the constructor)
*/
class FPUX86 extends Component {
@@ -1547,1671 +1547,1671 @@ class FPUX86 extends Component {
*/
/**
- * F2XM1()
- *
- * F2XM1 (2 to the x minus 1) calculates the function 2^x - 1 and returns the result to ST(0).
- *
- * On the 8087 and 80287, the value in ST(0) must satisfy the inequality 0 <= ST(0) <= 0.5. On the 80287XL and
- * later coprocessors, the permissible range is greater, and ST(0) must satisfy the inequality -1 <= ST(0) <= 1.
- * If ST(0) is out of range, the result is undefined, even though no exception is raised.
- *
- * The F2XM1 instruction is designed to provide an accurate result even when x is close to zero. To obtain 2^x,
- * simply add 1.0 to the result returned by F2XM1.
- *
- * This instruction is useful in performing exponentiation of values other than 2 as shown in the following formulas:
- *
- * 10^x = 2^(x * log2(10))
- * e^x = 2^(x * log2(e))
- * y^x = 2^(x * log2(y))
- *
- * Note that the NPX has dedicated instructions for loading the constants log2(10) and log2(e). The FYL2X instruction
- * may be used to calculate x * log2(y).
- *
- * See also: FYL2X, FLDL2T, FLDL2E.
+ * FPUX86.init()
*
- * @this {FPUX86}
+ * This function operates on every HTML element of class "fpu", extracting the
+ * JSON-encoded parameters for the FPUX86 constructor from the element's "data-value"
+ * attribute, invoking the constructor to create an FPUX86 component, and then binding
+ * any associated HTML controls to the new component.
*/
- static F2XM1()
+ static init()
{
- this.setST(0, Math.pow(2, this.getST(0)) - 1);
+ var aeFPUs = Component.getElementsByClass(document, PCX86.APPCLASS, "fpu");
+ for (var iFPU = 0; iFPU < aeFPUs.length; iFPU++) {
+ var eFPU = aeFPUs[iFPU];
+ var parmsFPU = Component.getComponentParms(eFPU);
+ var fpu = new FPUX86(parmsFPU);
+ Component.bindComponentControls(fpu, eFPU, PCX86.APPCLASS);
+ }
}
+}
- /**
- * FABS()
- *
- * @this {FPUX86}
- */
- static FABS()
- {
- /*
- * TODO: This could be implemented more efficiently by simply clearing the sign bit of ST(0).
- */
- this.setST(0, Math.abs(this.getST(0)));
- }
+/**
+ * F2XM1()
+ *
+ * F2XM1 (2 to the x minus 1) calculates the function 2^x - 1 and returns the result to ST(0).
+ *
+ * On the 8087 and 80287, the value in ST(0) must satisfy the inequality 0 <= ST(0) <= 0.5. On the 80287XL and
+ * later coprocessors, the permissible range is greater, and ST(0) must satisfy the inequality -1 <= ST(0) <= 1.
+ * If ST(0) is out of range, the result is undefined, even though no exception is raised.
+ *
+ * The F2XM1 instruction is designed to provide an accurate result even when x is close to zero. To obtain 2^x,
+ * simply add 1.0 to the result returned by F2XM1.
+ *
+ * This instruction is useful in performing exponentiation of values other than 2 as shown in the following formulas:
+ *
+ * 10^x = 2^(x * log2(10))
+ * e^x = 2^(x * log2(e))
+ * y^x = 2^(x * log2(y))
+ *
+ * Note that the NPX has dedicated instructions for loading the constants log2(10) and log2(e). The FYL2X instruction
+ * may be used to calculate x * log2(y).
+ *
+ * See also: FYL2X, FLDL2T, FLDL2E.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.F2XM1 = function()
+{
+ this.setST(0, Math.pow(2, this.getST(0)) - 1);
+};
- /**
- * FADDlr()
- *
- * @this {FPUX86}
+/**
+ * FABS()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FABS = function()
+{
+ /*
+ * TODO: This could be implemented more efficiently by simply clearing the sign bit of ST(0).
*/
- static FADDlr()
- {
- this.setST(0, this.doAdd(this.getST(0), this.getLRFromEA()));
- }
+ this.setST(0, Math.abs(this.getST(0)));
+};
- /**
- * FADDsr()
- *
- * Encoding 0xD8,reg=0x00 ("FADD short-real"): ST(0) <- ST(0) + REAL32
- *
- * @this {FPUX86}
- */
- static FADDsr()
- {
- this.setST(0, this.doAdd(this.getST(0), this.getSRFromEA()));
- }
+/**
+ * FADDlr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FADDlr = function()
+{
+ this.setST(0, this.doAdd(this.getST(0), this.getLRFromEA()));
+};
- /**
- * FADDst()
- *
- * @this {FPUX86}
- */
- static FADDst()
- {
- this.setST(0, this.doAdd(this.getST(0), this.getST(this.iStack)));
- }
+/**
+ * FADDsr()
+ *
+ * Encoding 0xD8,reg=0x00 ("FADD short-real"): ST(0) <- ST(0) + REAL32
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FADDsr = function()
+{
+ this.setST(0, this.doAdd(this.getST(0), this.getSRFromEA()));
+};
- /**
- * FADDsti()
- *
- * @this {FPUX86}
- */
- static FADDsti()
- {
- this.setST(this.iStack, this.doAdd(this.getST(this.iStack), this.getST(0)));
- }
+/**
+ * FADDst()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FADDst = function()
+{
+ this.setST(0, this.doAdd(this.getST(0), this.getST(this.iStack)));
+};
- /**
- * FADDPsti()
- *
- * @this {FPUX86}
- */
- static FADDPsti()
- {
- if (this.setST(this.iStack, this.doAdd(this.getST(this.iStack), this.getST(0)))) this.popValue();
- }
+/**
+ * FADDsti()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FADDsti = function()
+{
+ this.setST(this.iStack, this.doAdd(this.getST(this.iStack), this.getST(0)));
+};
- /**
- * FBLDpd()
- *
- * @this {FPUX86}
- */
- static FBLDpd()
- {
- var a = this.getTRFromEA();
- /*
- * a[0] contains the 8 least-significant BCD digits, a[1] contains the next 8, and a[2] contains
- * the next 2 (bit 15 of a[2] is the sign bit, and bits 8-14 of a[2] are unused).
- */
- var v = this.decodeBCD(a[0], 8) + this.decodeBCD(a[1], 8) * 100000000 + this.decodeBCD(a[2], 2) * 10000000000000000;
- if (a[2] & 0x8000) v = -v;
- this.pushValue(v);
- }
+/**
+ * FADDPsti()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FADDPsti = function()
+{
+ if (this.setST(this.iStack, this.doAdd(this.getST(this.iStack), this.getST(0)))) this.popValue();
+};
- /**
- * FBSTPpd()
- *
- * @this {FPUX86}
- */
- static FBSTPpd()
- {
- /*
- * TODO: Verify the operation of FBSTP (eg, does it signal an exception if abs(value) >= 1000000000000000000?)
- */
- var v = this.roundValue(this.popValue());
- if (v != null) {
- /*
- * intTmpTR[0] will contain the 8 least-significant BCD digits, intTmpTR[1] will contain the next 8,
- * and intTmpTR[2] will contain the next 2 (bit 15 of intTmpTR[2] will be the sign bit, and bits 8-14 of
- * intTmpTR[2] will be unused).
- */
- this.intTmpTR[0] = this.encodeBCD(v, 8);
- this.intTmpTR[1] = this.encodeBCD(v / 100000000, 8);
- this.intTmpTR[2] = this.encodeBCD(v / 10000000000000000, 2);
- if (v < 0) this.intTmpTR[2] |= 0x8000;
- this.setEAFromTR();
- }
- }
+/**
+ * FBLDpd()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FBLDpd = function()
+{
+ var a = this.getTRFromEA();
+ /*
+ * a[0] contains the 8 least-significant BCD digits, a[1] contains the next 8, and a[2] contains
+ * the next 2 (bit 15 of a[2] is the sign bit, and bits 8-14 of a[2] are unused).
+ */
+ var v = this.decodeBCD(a[0], 8) + this.decodeBCD(a[1], 8) * 100000000 + this.decodeBCD(a[2], 2) * 10000000000000000;
+ if (a[2] & 0x8000) v = -v;
+ this.pushValue(v);
+};
- /**
- * FCHS()
- *
- * @this {FPUX86}
+/**
+ * FBSTPpd()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FBSTPpd = function()
+{
+ /*
+ * TODO: Verify the operation of FBSTP (eg, does it signal an exception if abs(value) >= 1000000000000000000?)
*/
- static FCHS()
- {
+ var v = this.roundValue(this.popValue());
+ if (v != null) {
/*
- * TODO: This could be implemented more efficiently by simply inverting the sign bit of ST(0).
+ * intTmpTR[0] will contain the 8 least-significant BCD digits, intTmpTR[1] will contain the next 8,
+ * and intTmpTR[2] will contain the next 2 (bit 15 of intTmpTR[2] will be the sign bit, and bits 8-14 of
+ * intTmpTR[2] will be unused).
*/
- this.setST(0, -this.getST(0));
- }
-
- /**
- * FCLEX()
- *
- * NOTE: Although we explicitly clear the BUSY bit, there shouldn't be any code setting it, because
- * we're never "busy" (all floating-point operations are performed synchronously). Conversely, there's
- * no need to explicitly clear the ES bit, because clearStatus() will call checkException(), which
- * updates ES and clears/sets FPU interrupt status as appropriate.
- *
- * @this {FPUX86}
- */
- static FCLEX()
- {
- this.clearStatus(X86.FPU.STATUS.EXC | X86.FPU.STATUS.BUSY);
+ this.intTmpTR[0] = this.encodeBCD(v, 8);
+ this.intTmpTR[1] = this.encodeBCD(v / 100000000, 8);
+ this.intTmpTR[2] = this.encodeBCD(v / 10000000000000000, 2);
+ if (v < 0) this.intTmpTR[2] |= 0x8000;
+ this.setEAFromTR();
}
+};
- /**
- * FCOMlr()
- *
- * Encoding 0xDC,mod<3,reg=2 ("FCOM long-real"): Evaluate ST(0) - REAL64
- *
- * @this {FPUX86}
+/**
+ * FCHS()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FCHS = function()
+{
+ /*
+ * TODO: This could be implemented more efficiently by simply inverting the sign bit of ST(0).
*/
- static FCOMlr()
- {
- this.doCompare(this.getST(0), this.getLRFromEA());
- }
+ this.setST(0, -this.getST(0));
+};
- /**
- * FCOMsr()
- *
- * Encoding 0xD8,mod<3,reg=2 ("FCOM short-real"): Evaluate ST(0) - REAL32
- *
- * @this {FPUX86}
- */
- static FCOMsr()
- {
- this.doCompare(this.getST(0), this.getSRFromEA());
- }
+/**
+ * FCLEX()
+ *
+ * NOTE: Although we explicitly clear the BUSY bit, there shouldn't be any code setting it, because
+ * we're never "busy" (all floating-point operations are performed synchronously). Conversely, there's
+ * no need to explicitly clear the ES bit, because clearStatus() will call checkException(), which
+ * updates ES and clears/sets FPU interrupt status as appropriate.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FCLEX = function()
+{
+ this.clearStatus(X86.FPU.STATUS.EXC | X86.FPU.STATUS.BUSY);
+};
- /**
- * FCOMst()
- *
- * Encoding 0xD8,mod=3,reg=2 ("FCOM ST(i)"): Evaluate ST(0) - ST(i)
- *
- * @this {FPUX86}
- */
- static FCOMst()
- {
- this.doCompare(this.getST(0), this.getST(this.iStack));
- }
+/**
+ * FCOMlr()
+ *
+ * Encoding 0xDC,mod<3,reg=2 ("FCOM long-real"): Evaluate ST(0) - REAL64
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FCOMlr = function()
+{
+ this.doCompare(this.getST(0), this.getLRFromEA());
+};
- /**
- * FCOM8087()
- *
- * NOTE: This is used with encoding(s) (0xDC,0xD0-0xD7) that were valid for the 8087 and 80287
- * but may no longer be valid as of the 80387.
- *
- * TODO: Determine if this form subtracted the operands in the same order, or if it requires an FCOMsti(),
- * which, like the other *sti() functions, uses ST(0) as the second operand rather than the first.
- *
- * @this {FPUX86}
- */
- static FCOM8087()
- {
- this.opObsolete();
- FPUX86.FCOMst.call(this);
- }
+/**
+ * FCOMsr()
+ *
+ * Encoding 0xD8,mod<3,reg=2 ("FCOM short-real"): Evaluate ST(0) - REAL32
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FCOMsr = function()
+{
+ this.doCompare(this.getST(0), this.getSRFromEA());
+};
- /**
- * FCOMPlr()
- *
- * Encoding 0xDC,mod<3,reg=3 ("FCOM long-real"): Evaluate ST(0) - REAL64, POP
- *
- * @this {FPUX86}
- */
- static FCOMPlr()
- {
- if (this.doCompare(this.getST(0), this.getLRFromEA())) this.popValue();
- }
+/**
+ * FCOMst()
+ *
+ * Encoding 0xD8,mod=3,reg=2 ("FCOM ST(i)"): Evaluate ST(0) - ST(i)
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FCOMst = function()
+{
+ this.doCompare(this.getST(0), this.getST(this.iStack));
+};
- /**
- * FCOMPsr()
- *
- * Encoding 0xD8,mod<3,reg=3 ("FCOM short-real"): Evaluate ST(0) - REAL32, POP
- *
- * @this {FPUX86}
- */
- static FCOMPsr()
- {
- if (this.doCompare(this.getST(0), this.getSRFromEA())) this.popValue();
- }
+/**
+ * FCOM8087()
+ *
+ * NOTE: This is used with encoding(s) (0xDC,0xD0-0xD7) that were valid for the 8087 and 80287
+ * but may no longer be valid as of the 80387.
+ *
+ * TODO: Determine if this form subtracted the operands in the same order, or if it requires an FCOMsti(),
+ * which, like the other *sti() functions, uses ST(0) as the second operand rather than the first.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FCOM8087 = function()
+{
+ this.opObsolete();
+ FPUX86.FCOMst.call(this);
+};
- /**
- * FCOMPst()
- *
- * Encoding 0xD8,mod=3,reg=3 ("FCOMP ST(i)"): Evaluate ST(0) - ST(i), POP
- *
- * @this {FPUX86}
- */
- static FCOMPst()
- {
- if (this.doCompare(this.getST(0), this.getST(this.iStack))) this.popValue();
- }
+/**
+ * FCOMPlr()
+ *
+ * Encoding 0xDC,mod<3,reg=3 ("FCOM long-real"): Evaluate ST(0) - REAL64, POP
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FCOMPlr = function()
+{
+ if (this.doCompare(this.getST(0), this.getLRFromEA())) this.popValue();
+};
- /**
- * FCOMP8087()
- *
- * NOTE: This is used with encodings (0xDC,0xD8-0xDF and 0xDE,0xD0-0xD7) that were valid for the 8087
- * and 80287 but may no longer be valid as of the 80387.
- *
- * TODO: Determine if this form subtracted the operands in the same order, or if it requires an FCOMPsti(),
- * which, like the other *sti() functions, uses ST(0) as the second operand rather than the first.
- *
- * @this {FPUX86}
- */
- static FCOMP8087()
- {
- this.opObsolete();
- FPUX86.FCOMPst.call(this);
- }
+/**
+ * FCOMPsr()
+ *
+ * Encoding 0xD8,mod<3,reg=3 ("FCOM short-real"): Evaluate ST(0) - REAL32, POP
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FCOMPsr = function()
+{
+ if (this.doCompare(this.getST(0), this.getSRFromEA())) this.popValue();
+};
- /**
- * FCOMPP()
- *
- * @this {FPUX86}
- */
- static FCOMPP()
- {
- if (this.doCompare(this.getST(0), this.getST(1)) && this.popValue() != null) this.popValue();
- }
+/**
+ * FCOMPst()
+ *
+ * Encoding 0xD8,mod=3,reg=3 ("FCOMP ST(i)"): Evaluate ST(0) - ST(i), POP
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FCOMPst = function()
+{
+ if (this.doCompare(this.getST(0), this.getST(this.iStack))) this.popValue();
+};
- /**
- * FDECSTP()
- *
- * @this {FPUX86}
- */
- static FDECSTP()
- {
- this.iST = (this.iST - 1) & 0x7;
- this.regStatus &= ~X86.FPU.STATUS.C1;
- }
+/**
+ * FCOMP8087()
+ *
+ * NOTE: This is used with encodings (0xDC,0xD8-0xDF and 0xDE,0xD0-0xD7) that were valid for the 8087
+ * and 80287 but may no longer be valid as of the 80387.
+ *
+ * TODO: Determine if this form subtracted the operands in the same order, or if it requires an FCOMPsti(),
+ * which, like the other *sti() functions, uses ST(0) as the second operand rather than the first.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FCOMP8087 = function()
+{
+ this.opObsolete();
+ FPUX86.FCOMPst.call(this);
+};
- /**
- * FDISI8087()
- *
- * @this {FPUX86}
- */
- static FDISI8087()
- {
- if (this.isModel(X86.FPU.MODEL_8087)) {
- this.regControl |= X86.FPU.CONTROL.IEM;
- }
- }
+/**
+ * FCOMPP()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FCOMPP = function()
+{
+ if (this.doCompare(this.getST(0), this.getST(1)) && this.popValue() != null) this.popValue();
+};
- /**
- * FDIVlr()
- *
- * @this {FPUX86}
- */
- static FDIVlr()
- {
- this.setST(0, this.doDivide(this.getST(0), this.getLRFromEA()));
- }
+/**
+ * FDECSTP()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FDECSTP = function()
+{
+ this.iST = (this.iST - 1) & 0x7;
+ this.regStatus &= ~X86.FPU.STATUS.C1;
+};
- /**
- * FDIVsr()
- *
- * @this {FPUX86}
- */
- static FDIVsr()
- {
- this.setST(0, this.doDivide(this.getST(0), this.getSRFromEA()));
+/**
+ * FDISI8087()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FDISI8087 = function()
+{
+ if (this.isModel(X86.FPU.MODEL_8087)) {
+ this.regControl |= X86.FPU.CONTROL.IEM;
}
+};
- /**
- * FDIVst()
- *
- * Encoding 0xD8,0xF0-0xF7 ("FDIV ST,ST(i)"): ST(0) <- ST(0) / ST(i)
- *
- * @this {FPUX86}
- */
- static FDIVst()
- {
- this.setST(0, this.doDivide(this.getST(0), this.getST(this.iStack)));
- }
+/**
+ * FDIVlr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FDIVlr = function()
+{
+ this.setST(0, this.doDivide(this.getST(0), this.getLRFromEA()));
+};
- /**
- * FDIVsti()
- *
- * Encoding 0xDC,0xF8-0xFF ("FDIV ST(i),ST"): ST(i) <- ST(i) / ST(0)
- *
- * @this {FPUX86}
- */
- static FDIVsti()
- {
- this.setST(this.iStack, this.doDivide(this.getST(this.iStack), this.getST(0)));
- }
+/**
+ * FDIVsr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FDIVsr = function()
+{
+ this.setST(0, this.doDivide(this.getST(0), this.getSRFromEA()));
+};
- /**
- * FDIVPsti()
- *
- * Encoding 0xDE,0xF8-0xFF ("FDIVP ST(i),ST"): ST(i) <- ST(i) / ST(0), POP
- *
- * @this {FPUX86}
- */
- static FDIVPsti()
- {
- if (this.setST(this.iStack, this.doDivide(this.getST(this.iStack), this.getST(0)))) this.popValue();
- }
+/**
+ * FDIVst()
+ *
+ * Encoding 0xD8,0xF0-0xF7 ("FDIV ST,ST(i)"): ST(0) <- ST(0) / ST(i)
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FDIVst = function()
+{
+ this.setST(0, this.doDivide(this.getST(0), this.getST(this.iStack)));
+};
- /**
- * FDIVRlr()
- *
- * @this {FPUX86}
- */
- static FDIVRlr()
- {
- this.setST(0, this.doDivide(this.getLRFromEA(), this.getST(0)));
- }
+/**
+ * FDIVsti()
+ *
+ * Encoding 0xDC,0xF8-0xFF ("FDIV ST(i),ST"): ST(i) <- ST(i) / ST(0)
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FDIVsti = function()
+{
+ this.setST(this.iStack, this.doDivide(this.getST(this.iStack), this.getST(0)));
+};
- /**
- * FDIVRsr()
- *
- * @this {FPUX86}
- */
- static FDIVRsr()
- {
- this.setST(0, this.doDivide(this.getSRFromEA(), this.getST(0)));
- }
+/**
+ * FDIVPsti()
+ *
+ * Encoding 0xDE,0xF8-0xFF ("FDIVP ST(i),ST"): ST(i) <- ST(i) / ST(0), POP
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FDIVPsti = function()
+{
+ if (this.setST(this.iStack, this.doDivide(this.getST(this.iStack), this.getST(0)))) this.popValue();
+};
- /**
- * FDIVRst()
- *
- * Encoding 0xD8,0xF8-0xFF ("FDIVR ST,ST(i)"): ST(0) <- ST(i) / ST(0)
- *
- * @this {FPUX86}
- */
- static FDIVRst()
- {
- this.setST(0, this.doDivide(this.getST(this.iStack), this.getST(0)));
- }
+/**
+ * FDIVRlr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FDIVRlr = function()
+{
+ this.setST(0, this.doDivide(this.getLRFromEA(), this.getST(0)));
+};
- /**
- * FDIVRsti()
- *
- * Encoding 0xDC,0xF0-0xF7 ("FDIVR ST(i),ST"): ST(i) <- ST(0) / ST(i)
- *
- * @this {FPUX86}
- */
- static FDIVRsti()
- {
- this.setST(this.iStack, this.doDivide(this.getST(0), this.getST(this.iStack)));
- }
+/**
+ * FDIVRsr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FDIVRsr = function()
+{
+ this.setST(0, this.doDivide(this.getSRFromEA(), this.getST(0)));
+};
- /**
- * FDIVRPsti()
- *
- * Encoding 0xDE,0xF0-0xE7 ("FDIVRP ST(i),ST"): ST(i) <- ST(0) / ST(i), POP
- *
- * @this {FPUX86}
- */
- static FDIVRPsti()
- {
- if (this.setST(this.iStack, this.doDivide(this.getST(0), this.getST(this.iStack)))) this.popValue();
- }
+/**
+ * FDIVRst()
+ *
+ * Encoding 0xD8,0xF8-0xFF ("FDIVR ST,ST(i)"): ST(0) <- ST(i) / ST(0)
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FDIVRst = function()
+{
+ this.setST(0, this.doDivide(this.getST(this.iStack), this.getST(0)));
+};
- /**
- * FENI8087()
- *
- * @this {FPUX86}
- */
- static FENI8087()
- {
- if (this.isModel(X86.FPU.MODEL_8087)) {
- this.regControl &= ~X86.FPU.CONTROL.IEM;
- }
- }
+/**
+ * FDIVRsti()
+ *
+ * Encoding 0xDC,0xF0-0xF7 ("FDIVR ST(i),ST"): ST(i) <- ST(0) / ST(i)
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FDIVRsti = function()
+{
+ this.setST(this.iStack, this.doDivide(this.getST(0), this.getST(this.iStack)));
+};
- /**
- * FFREEsti()
- *
- * @this {FPUX86}
- */
- static FFREEsti()
- {
- this.setTag(this.iST, X86.FPU.TAGS.EMPTY);
- }
+/**
+ * FDIVRPsti()
+ *
+ * Encoding 0xDE,0xF0-0xE7 ("FDIVRP ST(i),ST"): ST(i) <- ST(0) / ST(i), POP
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FDIVRPsti = function()
+{
+ if (this.setST(this.iStack, this.doDivide(this.getST(0), this.getST(this.iStack)))) this.popValue();
+};
- /**
- * FFREEP8087()
- *
- * NOTE: This is used with an encoding (0xDF,0xC0-0xC7) that was valid for the 8087 and 80287
- * but may no longer be valid as of the 80387. Also, if the older documentation is to be believed,
- * this instruction has no modern counterpart, as FFREE doesn't pop the stack.
- *
- * @this {FPUX86}
- */
- static FFREEP8087()
- {
- this.opObsolete();
- FPUX86.FFREEsti.call(this);
- this.popValue();
+/**
+ * FENI8087()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FENI8087 = function()
+{
+ if (this.isModel(X86.FPU.MODEL_8087)) {
+ this.regControl &= ~X86.FPU.CONTROL.IEM;
}
+};
- /**
- * FIADD16()
- *
- * @this {FPUX86}
- */
- static FIADD16()
- {
- this.setST(0, this.doAdd(this.getST(0), this.getWIFromEA()));
- }
+/**
+ * FFREEsti()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FFREEsti = function()
+{
+ this.setTag(this.iST, X86.FPU.TAGS.EMPTY);
+};
- /**
- * FIADD32()
- *
- * @this {FPUX86}
- */
- static FIADD32()
- {
- this.setST(0, this.doAdd(this.getST(0), this.getSIFromEA()));
- }
+/**
+ * FFREEP8087()
+ *
+ * NOTE: This is used with an encoding (0xDF,0xC0-0xC7) that was valid for the 8087 and 80287
+ * but may no longer be valid as of the 80387. Also, if the older documentation is to be believed,
+ * this instruction has no modern counterpart, as FFREE doesn't pop the stack.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FFREEP8087 = function()
+{
+ this.opObsolete();
+ FPUX86.FFREEsti.call(this);
+ this.popValue();
+};
- /**
- * FICOM16()
- *
- * @this {FPUX86}
- */
- static FICOM16()
- {
- this.doCompare(this.getST(0), this.getWIFromEA());
- }
+/**
+ * FIADD16()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FIADD16 = function()
+{
+ this.setST(0, this.doAdd(this.getST(0), this.getWIFromEA()));
+};
- /**
- * FICOM32()
- *
- * @this {FPUX86}
- */
- static FICOM32()
- {
- this.doCompare(this.getST(0), this.getSIFromEA());
- }
+/**
+ * FIADD32()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FIADD32 = function()
+{
+ this.setST(0, this.doAdd(this.getST(0), this.getSIFromEA()));
+};
- /**
- * FICOMP16()
- *
- * @this {FPUX86}
- */
- static FICOMP16()
- {
- if (this.doCompare(this.getST(0), this.getWIFromEA())) this.popValue();
- }
+/**
+ * FICOM16()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FICOM16 = function()
+{
+ this.doCompare(this.getST(0), this.getWIFromEA());
+};
- /**
- * FICOMP32()
- *
- * @this {FPUX86}
- */
- static FICOMP32()
- {
- if (this.doCompare(this.getST(0), this.getSIFromEA())) this.popValue();
- }
+/**
+ * FICOM32()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FICOM32 = function()
+{
+ this.doCompare(this.getST(0), this.getSIFromEA());
+};
- /**
- * FIDIV16()
- *
- * @this {FPUX86}
- */
- static FIDIV16()
- {
- this.setST(0, this.doDivide(this.getST(0), this.getWIFromEA()));
- }
+/**
+ * FICOMP16()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FICOMP16 = function()
+{
+ if (this.doCompare(this.getST(0), this.getWIFromEA())) this.popValue();
+};
- /**
- * FIDIV32()
- *
- * @this {FPUX86}
- */
- static FIDIV32()
- {
- this.setST(0, this.doDivide(this.getST(0), this.getSIFromEA()));
- }
+/**
+ * FICOMP32()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FICOMP32 = function()
+{
+ if (this.doCompare(this.getST(0), this.getSIFromEA())) this.popValue();
+};
- /**
- * FIDIVR16()
- *
- * @this {FPUX86}
- */
- static FIDIVR16()
- {
- this.setST(0, this.doDivide(this.getWIFromEA(), this.getST(0)));
- }
+/**
+ * FIDIV16()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FIDIV16 = function()
+{
+ this.setST(0, this.doDivide(this.getST(0), this.getWIFromEA()));
+};
- /**
- * FIDIVR32()
- *
- * @this {FPUX86}
- */
- static FIDIVR32()
- {
- this.setST(0, this.doDivide(this.getSIFromEA(), this.getST(0)));
- }
+/**
+ * FIDIV32()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FIDIV32 = function()
+{
+ this.setST(0, this.doDivide(this.getST(0), this.getSIFromEA()));
+};
- /**
- * FILD16()
- *
- * @this {FPUX86}
- */
- static FILD16()
- {
- this.pushValue(this.getWIFromEA());
- }
+/**
+ * FIDIVR16()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FIDIVR16 = function()
+{
+ this.setST(0, this.doDivide(this.getWIFromEA(), this.getST(0)));
+};
- /**
- * FILD32()
- *
- * @this {FPUX86}
- */
- static FILD32()
- {
- this.pushValue(this.getSIFromEA());
- }
+/**
+ * FIDIVR32()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FIDIVR32 = function()
+{
+ this.setST(0, this.doDivide(this.getSIFromEA(), this.getST(0)));
+};
- /**
- * FILD64()
- *
- * @this {FPUX86}
- */
- static FILD64()
- {
- this.pushValue(this.getLIFromEA());
- }
+/**
+ * FILD16()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FILD16 = function()
+{
+ this.pushValue(this.getWIFromEA());
+};
- /**
- * FIMUL16()
- *
- * @this {FPUX86}
- */
- static FIMUL16()
- {
- this.setST(0, this.doMultiply(this.getST(0), this.getWIFromEA()));
- }
+/**
+ * FILD32()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FILD32 = function()
+{
+ this.pushValue(this.getSIFromEA());
+};
- /**
- * FIMUL32()
- *
- * @this {FPUX86}
- */
- static FIMUL32()
- {
- this.setST(0, this.doMultiply(this.getST(0), this.getSIFromEA()));
- }
+/**
+ * FILD64()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FILD64 = function()
+{
+ this.pushValue(this.getLIFromEA());
+};
- /**
- * FINCSTP()
- *
- * @this {FPUX86}
- */
- static FINCSTP()
- {
- this.iST = (this.iST + 1) & 0x7;
- this.regStatus &= ~X86.FPU.STATUS.C1;
- }
+/**
+ * FIMUL16()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FIMUL16 = function()
+{
+ this.setST(0, this.doMultiply(this.getST(0), this.getWIFromEA()));
+};
- /**
- * FINIT()
- *
- * @this {FPUX86}
- */
- static FINIT()
- {
- this.resetFPU();
- }
+/**
+ * FIMUL32()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FIMUL32 = function()
+{
+ this.setST(0, this.doMultiply(this.getST(0), this.getSIFromEA()));
+};
- /**
- * FIST16()
- *
- * @this {FPUX86}
- */
- static FIST16()
- {
- if (this.getWI(0)) this.setEAFromWI();
- }
+/**
+ * FINCSTP()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FINCSTP = function()
+{
+ this.iST = (this.iST + 1) & 0x7;
+ this.regStatus &= ~X86.FPU.STATUS.C1;
+};
- /**
- * FIST32()
- *
- * @this {FPUX86}
- */
- static FIST32()
- {
- if (this.getSI(0)) this.setEAFromSI();
- }
+/**
+ * FINIT()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FINIT = function()
+{
+ this.resetFPU();
+};
- /**
- * FISTP16()
- *
- * @this {FPUX86}
- */
- static FISTP16()
- {
- if (this.getWI(0)) {
- this.setEAFromWI();
- this.popValue();
- }
- }
+/**
+ * FIST16()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FIST16 = function()
+{
+ if (this.getWI(0)) this.setEAFromWI();
+};
- /**
- * FISTP32()
- *
- * @this {FPUX86}
- */
- static FISTP32()
- {
- if (this.getSI(0)) {
- this.setEAFromSI();
- this.popValue();
- }
- }
+/**
+ * FIST32()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FIST32 = function()
+{
+ if (this.getSI(0)) this.setEAFromSI();
+};
- /**
- * FISTP64()
- *
- * @this {FPUX86}
- */
- static FISTP64()
- {
- if (this.getLI(0)) {
- this.setEAFromLI();
- this.popValue();
- }
+/**
+ * FISTP16()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FISTP16 = function()
+{
+ if (this.getWI(0)) {
+ this.setEAFromWI();
+ this.popValue();
}
+};
- /**
- * FISUB16()
- *
- * @this {FPUX86}
- */
- static FISUB16()
- {
- this.setST(0, this.doSubtract(this.getST(0), this.getWIFromEA()));
+/**
+ * FISTP32()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FISTP32 = function()
+{
+ if (this.getSI(0)) {
+ this.setEAFromSI();
+ this.popValue();
}
+};
- /**
- * FISUB32()
- *
- * @this {FPUX86}
- */
- static FISUB32()
- {
- this.setST(0, this.doSubtract(this.getST(0), this.getSIFromEA()));
+/**
+ * FISTP64()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FISTP64 = function()
+{
+ if (this.getLI(0)) {
+ this.setEAFromLI();
+ this.popValue();
}
+};
- /**
- * FISUBR16()
- *
- * @this {FPUX86}
- */
- static FISUBR16()
- {
- this.setST(0, this.doSubtract(this.getWIFromEA(), this.getST(0)));
- }
+/**
+ * FISUB16()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FISUB16 = function()
+{
+ this.setST(0, this.doSubtract(this.getST(0), this.getWIFromEA()));
+};
- /**
- * FISUBR32()
- *
- * @this {FPUX86}
- */
- static FISUBR32()
- {
- this.setST(0, this.doSubtract(this.getSIFromEA(), this.getST(0)));
- }
+/**
+ * FISUB32()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FISUB32 = function()
+{
+ this.setST(0, this.doSubtract(this.getST(0), this.getSIFromEA()));
+};
- /**
- * FLDlr()
- *
- * The FLD instruction loads the source operand, converts it to temporary real format (if required),
- * and pushes the resulting value onto the floating-point stack.
- *
- * The load operation is accomplished by decrementing the top-of-stack pointer (TOP) and copying the
- * source operand to the new stack top. If the source operand is a float ing-point register, the index of
- * the register is taken before TOP is changed. The source operand may also be a short real, long real,
- * or temporary real memory operand. Short real and long real operands are converted automatically.
- *
- * Note that coding the instruction FLD ST(0) duplicates the value at the stack top.
- *
- * On the 8087 and 80287, the FLD real80 instruction will raise the denormal exception if the memory
- * operand is a denormal. The 80287XL and later coprocessors will not, since the operation is not arithmetic.
- *
- * On the 8087 and 80287, a denormal will be converted to an unnormal by FLD; on the 80287XL and later
- * coprocessors, the number will be converted to temporary real. If the next instruction is an FXTRACT or FXAM,
- * the 8087/80827 and 80287XL/80387/ 80486 results will be different.
- *
- * On the 8087 and 80287, the FLD real32 and FLD real64 instructions will not raise an exception when loading
- * a signaling NaN; on the 80287XL and later coprocessors, loading a signaling NaN raises the invalid operation
- * exception.
- *
- * @this {FPUX86}
- */
- static FLDlr()
- {
- this.pushValue(this.getLRFromEA());
- }
+/**
+ * FISUBR16()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FISUBR16 = function()
+{
+ this.setST(0, this.doSubtract(this.getWIFromEA(), this.getST(0)));
+};
- /**
- * FLDsr()
- *
- * @this {FPUX86}
- */
- static FLDsr()
- {
- this.pushValue(this.getSRFromEA());
- }
+/**
+ * FISUBR32()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FISUBR32 = function()
+{
+ this.setST(0, this.doSubtract(this.getSIFromEA(), this.getST(0)));
+};
- /**
- * FLDsti()
- *
- * @this {FPUX86}
- */
- static FLDsti()
- {
- this.pushValue(this.getST(this.iStack));
- }
+/**
+ * FLDlr()
+ *
+ * The FLD instruction loads the source operand, converts it to temporary real format (if required),
+ * and pushes the resulting value onto the floating-point stack.
+ *
+ * The load operation is accomplished by decrementing the top-of-stack pointer (TOP) and copying the
+ * source operand to the new stack top. If the source operand is a float ing-point register, the index of
+ * the register is taken before TOP is changed. The source operand may also be a short real, long real,
+ * or temporary real memory operand. Short real and long real operands are converted automatically.
+ *
+ * Note that coding the instruction FLD ST(0) duplicates the value at the stack top.
+ *
+ * On the 8087 and 80287, the FLD real80 instruction will raise the denormal exception if the memory
+ * operand is a denormal. The 80287XL and later coprocessors will not, since the operation is not arithmetic.
+ *
+ * On the 8087 and 80287, a denormal will be converted to an unnormal by FLD; on the 80287XL and later
+ * coprocessors, the number will be converted to temporary real. If the next instruction is an FXTRACT or FXAM,
+ * the 8087/80827 and 80287XL/80387/ 80486 results will be different.
+ *
+ * On the 8087 and 80287, the FLD real32 and FLD real64 instructions will not raise an exception when loading
+ * a signaling NaN; on the 80287XL and later coprocessors, loading a signaling NaN raises the invalid operation
+ * exception.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FLDlr = function()
+{
+ this.pushValue(this.getLRFromEA());
+};
- /**
- * FLDtr()
- *
- * @this {FPUX86}
- */
- static FLDtr()
- {
- this.pushValue(this.getLRFromTR(this.getTRFromEA()));
- }
+/**
+ * FLDsr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FLDsr = function()
+{
+ this.pushValue(this.getSRFromEA());
+};
- /**
- * FLDCW()
- *
- * @this {FPUX86}
- */
- static FLDCW()
- {
- this.assert(this.cpu.regEA !== X86.ADDR_INVALID);
- this.setControl(this.cpu.getShort(this.cpu.regEA));
- }
+/**
+ * FLDsti()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FLDsti = function()
+{
+ this.pushValue(this.getST(this.iStack));
+};
- /**
- * FLDENV()
- *
- * @this {FPUX86}
- */
- static FLDENV()
- {
- this.assert(this.cpu.regEA !== X86.ADDR_INVALID);
- this.loadEnv(this.cpu.regEA);
- }
+/**
+ * FLDtr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FLDtr = function()
+{
+ this.pushValue(this.getLRFromTR(this.getTRFromEA()));
+};
- /**
- * FLD1()
- *
- * The FLD1 instruction loads the constant +1.0 from the NPX's constant ROM and pushes the value onto the
- * floating-point stack.
- *
- * The constant is stored internally in temporary real format and is simply moved to the stack.
- *
- * See also: FLDLG2, FLDLN2, FLDL2E, FLDL2T, FLDPI, and FLD1.
- *
- * @this {FPUX86}
- */
- static FLD1()
- {
- this.pushValue(1.0);
- }
+/**
+ * FLDCW()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FLDCW = function()
+{
+ this.assert(this.cpu.regEA !== X86.ADDR_INVALID);
+ this.setControl(this.cpu.getShort(this.cpu.regEA));
+};
- /**
- * FLDL2T()
- *
- * The FLDL2T instruction loads the constant log2(10) from the NPX's constant ROM and pushes the value onto the
- * floating-point stack.
- *
- * The constant is stored internally in temporary real format and is simply moved to the stack.
- *
- * On the 8087 and 80287, rounding control is not in effect for the loading of this constant. On the 80287XL and
- * later coprocessors, rounding control is in effect. If RC is set for chop (round toward 0), round down (toward
- * -infinity), or round to nearest or even, the result will be the same as on the 8087 and 80287. If RC is set for
- * round up (toward +infinity), the result will differ by one in the least significant bit of the mantissa.
- *
- * See also: FLDLG2, FLDLN2, FLDL2E, FLDPI, FLD1, and FLDZ.
- *
- * @this {FPUX86}
- */
- static FLDL2T()
- {
- this.pushValue(FPUX86.regL2T);
- }
+/**
+ * FLDENV()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FLDENV = function()
+{
+ this.assert(this.cpu.regEA !== X86.ADDR_INVALID);
+ this.loadEnv(this.cpu.regEA);
+};
- /**
- * FLDL2E()
- *
- * The FLDL2E instruction loads the constant log2(e) from the NPX's constant ROM and pushes the value onto the
- * floating-point stack.
- *
- * The constant is stored internally in temporary real format and is simply moved to the stack.
- *
- * On the 8087 and 80287, rounding control is not in effect for the loading of this constant. On the 80287XL and
- * later coprocessors, rounding control is in effect. If RC is set for chop (round toward 0) or round down (toward
- * -infinity), the result is the same as on the 8087 and 80827. If RC is set for round to nearest or even, or round
- * up (toward +infinity), the result will differ by one in the least significant bit of the mantissa.
- *
- * See also: FLDLG2, FLDLN2, FLDL2T, FLDPI, FLD1, and FLDZ.
- *
- * @this {FPUX86}
- */
- static FLDL2E()
- {
- this.pushValue(FPUX86.regL2E);
- }
+/**
+ * FLD1()
+ *
+ * The FLD1 instruction loads the constant +1.0 from the NPX's constant ROM and pushes the value onto the
+ * floating-point stack.
+ *
+ * The constant is stored internally in temporary real format and is simply moved to the stack.
+ *
+ * See also: FLDLG2, FLDLN2, FLDL2E, FLDL2T, FLDPI, and FLD1.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FLD1 = function()
+{
+ this.pushValue(1.0);
+};
- /**
- * FLDPI()
- *
- * The FLDPI instruction loads the constant Pi from the NPX's constant ROM and pushes the value onto the
- * floating-point stack.
- *
- * The constant is stored internally in temporary real format and is simply moved to the stack.
- *
- * On the 8087 and 80287, rounding control is not in effect for the loading of these constants. On the 80287XL and
- * later coprocessors, rounding control is in effect. If RC is set for chop (round toward 0) or round down (toward
- * -infinity), the result is the same as on the 8087 and 80827. If RC is set for round to nearest or even, or round
- * up (toward +infinity), the result will differ by one in the least significant bit of the mantissa.
- *
- * See also: FLDLG2, FLDLN2, FLDL2E, FLDL2T, FLD1, and FLDZ.
- *
- * @this {FPUX86}
- */
- static FLDPI()
- {
- this.pushValue(FPUX86.regPI);
- }
+/**
+ * FLDL2T()
+ *
+ * The FLDL2T instruction loads the constant log2(10) from the NPX's constant ROM and pushes the value onto the
+ * floating-point stack.
+ *
+ * The constant is stored internally in temporary real format and is simply moved to the stack.
+ *
+ * On the 8087 and 80287, rounding control is not in effect for the loading of this constant. On the 80287XL and
+ * later coprocessors, rounding control is in effect. If RC is set for chop (round toward 0), round down (toward
+ * -infinity), or round to nearest or even, the result will be the same as on the 8087 and 80287. If RC is set for
+ * round up (toward +infinity), the result will differ by one in the least significant bit of the mantissa.
+ *
+ * See also: FLDLG2, FLDLN2, FLDL2E, FLDPI, FLD1, and FLDZ.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FLDL2T = function()
+{
+ this.pushValue(FPUX86.regL2T);
+};
- /**
- * FLDLG2()
- *
- * The FLDLG2 instruction loads the constant log10(2) from the NPX's constant ROM and pushes the value onto the
- * floating-point stack.
- *
- * The constant is stored internally in temporary real format and is simply moved to the stack.
- *
- * On the 8087 and 80287, rounding control is not in effect for the loading of this constant. On the 80287XL and
- * later coprocessors, rounding control is in effect. If RC is set for chop (round toward 0) or round down (toward
- * -infinity), the result is the same as on the 8087 and 80827. If RC is set for round to nearest or even, or round
- * up (toward +infinity), the result will differ by one in the least significant bit of the mantissa.
- *
- * See also: FLDLN2, FLDL2E, FLDL2T, FLDPI, FLD1, and FLDZ.
- *
- * @this {FPUX86}
- */
- static FLDLG2()
- {
- this.pushValue(FPUX86.regLG2);
- }
+/**
+ * FLDL2E()
+ *
+ * The FLDL2E instruction loads the constant log2(e) from the NPX's constant ROM and pushes the value onto the
+ * floating-point stack.
+ *
+ * The constant is stored internally in temporary real format and is simply moved to the stack.
+ *
+ * On the 8087 and 80287, rounding control is not in effect for the loading of this constant. On the 80287XL and
+ * later coprocessors, rounding control is in effect. If RC is set for chop (round toward 0) or round down (toward
+ * -infinity), the result is the same as on the 8087 and 80827. If RC is set for round to nearest or even, or round
+ * up (toward +infinity), the result will differ by one in the least significant bit of the mantissa.
+ *
+ * See also: FLDLG2, FLDLN2, FLDL2T, FLDPI, FLD1, and FLDZ.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FLDL2E = function()
+{
+ this.pushValue(FPUX86.regL2E);
+};
- /**
- * FLDLN2()
- *
- * The FLDLN2 instruction loads the constant loge(2) from the NPX's constant ROM and pushes the value onto the
- * floating-point stack.
- *
- * The constant is stored internally in temporary real format and is simply moved to the stack.
- *
- * On the 8087 and 80287, rounding control is not in effect for the loading of this constant. On the 80287XL and
- * later coprocessors, rounding control is in effect. If RC is set for chop (round toward 0) or round down (toward
- * -infinity), the result will be the same as on the 8087 and 80827. If RC is set for round to nearest or even, or
- * round up (toward +infinity), the result will differ by one in the least significant bit of the mantissa.
- *
- * See also: FLDLG2, FLDL2E, FLDL2T, FLDPI, FLD1, and FLDZ.
- *
- * @this {FPUX86}
- */
- static FLDLN2()
- {
- this.pushValue(FPUX86.regLN2);
- }
+/**
+ * FLDPI()
+ *
+ * The FLDPI instruction loads the constant Pi from the NPX's constant ROM and pushes the value onto the
+ * floating-point stack.
+ *
+ * The constant is stored internally in temporary real format and is simply moved to the stack.
+ *
+ * On the 8087 and 80287, rounding control is not in effect for the loading of these constants. On the 80287XL and
+ * later coprocessors, rounding control is in effect. If RC is set for chop (round toward 0) or round down (toward
+ * -infinity), the result is the same as on the 8087 and 80827. If RC is set for round to nearest or even, or round
+ * up (toward +infinity), the result will differ by one in the least significant bit of the mantissa.
+ *
+ * See also: FLDLG2, FLDLN2, FLDL2E, FLDL2T, FLD1, and FLDZ.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FLDPI = function()
+{
+ this.pushValue(FPUX86.regPI);
+};
- /**
- * FLDZ()
- *
- * The FLDZ instruction loads the constant +0.0 from the NPX's constant ROM and pushes the value onto the
- * floating-point stack.
- *
- * The constant is stored internally in temporary real format and is simply moved to the stack.
- *
- * See also: FLDLG2, FLDLN2, FLDL2E, FLDL2T, FLDPI, and FLD1.
- *
- * @this {FPUX86}
- */
- static FLDZ()
- {
- this.pushValue(0.0);
- }
+/**
+ * FLDLG2()
+ *
+ * The FLDLG2 instruction loads the constant log10(2) from the NPX's constant ROM and pushes the value onto the
+ * floating-point stack.
+ *
+ * The constant is stored internally in temporary real format and is simply moved to the stack.
+ *
+ * On the 8087 and 80287, rounding control is not in effect for the loading of this constant. On the 80287XL and
+ * later coprocessors, rounding control is in effect. If RC is set for chop (round toward 0) or round down (toward
+ * -infinity), the result is the same as on the 8087 and 80827. If RC is set for round to nearest or even, or round
+ * up (toward +infinity), the result will differ by one in the least significant bit of the mantissa.
+ *
+ * See also: FLDLN2, FLDL2E, FLDL2T, FLDPI, FLD1, and FLDZ.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FLDLG2 = function()
+{
+ this.pushValue(FPUX86.regLG2);
+};
- /**
- * FMULlr()
- *
- * @this {FPUX86}
- */
- static FMULlr()
- {
- this.setST(0, this.doMultiply(this.getST(0), this.getLRFromEA()));
- }
+/**
+ * FLDLN2()
+ *
+ * The FLDLN2 instruction loads the constant loge(2) from the NPX's constant ROM and pushes the value onto the
+ * floating-point stack.
+ *
+ * The constant is stored internally in temporary real format and is simply moved to the stack.
+ *
+ * On the 8087 and 80287, rounding control is not in effect for the loading of this constant. On the 80287XL and
+ * later coprocessors, rounding control is in effect. If RC is set for chop (round toward 0) or round down (toward
+ * -infinity), the result will be the same as on the 8087 and 80827. If RC is set for round to nearest or even, or
+ * round up (toward +infinity), the result will differ by one in the least significant bit of the mantissa.
+ *
+ * See also: FLDLG2, FLDL2E, FLDL2T, FLDPI, FLD1, and FLDZ.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FLDLN2 = function()
+{
+ this.pushValue(FPUX86.regLN2);
+};
- /**
- * FMULsr()
- *
- * Encoding 0xD8,reg=0x01 ("FMUL short-real"): ST(0) <- ST(0) * REAL32
- *
- * @this {FPUX86}
- */
- static FMULsr()
- {
- this.setST(0, this.doMultiply(this.getST(0), this.getSRFromEA()));
- }
+/**
+ * FLDZ()
+ *
+ * The FLDZ instruction loads the constant +0.0 from the NPX's constant ROM and pushes the value onto the
+ * floating-point stack.
+ *
+ * The constant is stored internally in temporary real format and is simply moved to the stack.
+ *
+ * See also: FLDLG2, FLDLN2, FLDL2E, FLDL2T, FLDPI, and FLD1.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FLDZ = function()
+{
+ this.pushValue(0.0);
+};
- /**
- * FMULst()
- *
- * @this {FPUX86}
- */
- static FMULst()
- {
- this.setST(0, this.doMultiply(this.getST(0), this.getST(this.iStack)));
- }
+/**
+ * FMULlr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FMULlr = function()
+{
+ this.setST(0, this.doMultiply(this.getST(0), this.getLRFromEA()));
+};
- /**
- * FMULsti()
- *
- * @this {FPUX86}
- */
- static FMULsti()
- {
- this.setST(this.iStack, this.doMultiply(this.getST(this.iStack), this.getST(0)));
- }
+/**
+ * FMULsr()
+ *
+ * Encoding 0xD8,reg=0x01 ("FMUL short-real"): ST(0) <- ST(0) * REAL32
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FMULsr = function()
+{
+ this.setST(0, this.doMultiply(this.getST(0), this.getSRFromEA()));
+};
- /**
- * FMULPsti()
- *
- * @this {FPUX86}
- */
- static FMULPsti()
- {
- if (this.setST(this.iStack, this.doMultiply(this.getST(this.iStack), this.getST(0)))) this.popValue();
- }
+/**
+ * FMULst()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FMULst = function()
+{
+ this.setST(0, this.doMultiply(this.getST(0), this.getST(this.iStack)));
+};
- /**
- * FNOP()
- *
- * @this {FPUX86}
- */
- static FNOP()
- {
- }
+/**
+ * FMULsti()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FMULsti = function()
+{
+ this.setST(this.iStack, this.doMultiply(this.getST(this.iStack), this.getST(0)));
+};
- /**
- * FPATAN()
- *
- * FPATAN calculates the partial arctangent of ST(0) divided by ST(1):
- *
- * ST(1) = tan^-1( ST(1) / ST(0) )
- *
- * On the 8087 and 80287, the arguments must satisfy the inequality 0 <= ST(1) < ST(0) < +infinity.
- * On the 80287XL and later coprocessors, the range of the operands is unrestricted. The result is
- * returned to ST(1), and the stack is popped, destroying both operands and leaving the result in ST(0).
- *
- * @this {FPUX86}
- */
- static FPATAN()
- {
- if (this.setST(1, Math.atan2(this.getST(1), this.getST(0)))) this.popValue();
- }
+/**
+ * FMULPsti()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FMULPsti = function()
+{
+ if (this.setST(this.iStack, this.doMultiply(this.getST(this.iStack), this.getST(0)))) this.popValue();
+};
- /**
- * FPTAN()
- *
- * FPTAN calculates the partial tangent of ST(0):
- *
- * y / x = tan( ST(0) )
- *
- * The result of the operation is a ratio. y replaces the argument on the stack, and x is pushed onto the stack,
- * where it becomes the new ST(0).
- *
- * On the 8087 and 80287, the FPTAN function assumes that its argument is valid and in-range. No argument checking
- * is performed. The value of ST(0) must satisfy the inequality -pi/4 <= ST(0) <= pi/4. In the case of an invalid
- * argument, the result is undefined and no error is signaled.
- *
- * On the 80287XL and later coprocessors, if value of ST(0) satisfies the condition -2^63 < ST(0) < 2^63, it will
- * automatically be reduced to within range. If the operand is outside this range, however, C2 is set to 1 to indicate
- * that the function is incomplete, and ST(0) is left unchanged.
- *
- * The 80287XL, 80387, and 80486 always push a value of +1.0 for x. The value of x pushed by the 8087 and 80287 may be
- * any real number. In either case, the ratio is the same. The cotangent can be calculated by executing FDIVR immediately
- * after FPTAN. The following code will leave the 8087 and 80287 in the same state as the later coprocessors:
- *
- * FDIV
- * FLD1
- *
- * ST(7) must be empty before this instruction is executed to avoid an invalid operation exception. If the invalid
- * operation exception is masked, the 8087 and 80287 leave the original operand unchanged, but push it to ST(1). On the
- * 80287XL and later coprocessors, both ST(0) and ST(1) will contain quiet NaNs. On the 80287XL and later coprocessors,
- * if condition code bit C2 is 0 and the precision exception is raised, then C1=1 if the last bit was rounded up. C1 is
- * undefined for the 8087 and 80287.
- *
- * @this {FPUX86}
- */
- static FPTAN()
- {
- if (this.setST(0, Math.tan(this.getST(0)))) this.pushValue(1.0);
- }
+/**
+ * FNOP()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FNOP = function()
+{
+};
- /**
- * FPREM()
- *
- * FPREM performs modulo division of ST(0) by ST(1) and returns the result to ST(0).
- *
- * The FPREM instruction is used to reduce the real operand in ST(0) to a value whose magnitude is less than the
- * magnitude of ST(1). FPREM produces an exact result, so the precision exception is never raised and the rounding
- * control has no effect. The sign of the remainder is the same as the sign of the original operand.
- *
- * The remaindering operation is performed by iterative scaled subtractions and can reduce the exponent of ST(0) by
- * no more than 63 in one execution. If the remainder is less than ST(1) (the modulus), the function is complete and
- * C2 in the status word is cleared.
- *
- * If the modulo function is incomplete, C2 is set to 1, and the result in ST(0) is termed the partial remainder.
- * C2 can be inspected by storing the status word and re-executing the instruction until C2 is clear. Alternately,
- * ST(0) can be compared to ST(1). If ST(0) > ST(1), then FPREM must be executed again. If ST(0) = ST(1), then the
- * remainder is 0.
- *
- * FPREM is important for reducing arguments to the periodic transcendental functions such as FPTAN. Because FPREM
- * produces an exact result, no round-off error is introduced into the calculation.
- *
- * When reduction is complete, the three least-significant bits of the quotient are stored in the condition code bits
- * C3, C1, and C0, respectively. When arguments to the tangent function are reduced by pi/4, this result can be used
- * to identify the octant that contained the original angle.
- *
- * The FPREM function operates differently than specified by the IEEE 754 standard when rounding the quotient to form
- * a partial remainder (see the algorithm). The FPREM1 function (80287XL and up) is provided for compatibility with
- * that standard.
- *
- * The FPREM instruction can also be used to normalize ST(0). If ST(0) is unnormal and ST(1) is greater than ST(0),
- * FPREM will normalize ST(0). On the 8087 and 80287, operation on a denormal operand raises the invalid operation
- * exception. Underflow is not possible. On the 80287XL and later coprocessors, operation on a denormal is supported
- * and an underflow exception can occur.
- *
- * ALGORITHM:
- *
- * t = EXPONENT(ST) - EXPONENT(ST(1))
- * IF (t < 64) THEN
- * q = R0UND(ST(0) / ST(1), CHOP)
- * ST(0) = ST(0) - (ST(1) * q)
- * C2 = 0
- * C0 = BIT 2 of q
- * C1 = BIT 1 of q
- * C3 = BIT 0 of q
- * ELSE
- * n = a number between 32 and 63
- * q = ROUND((ST(0) / ST(1)) / 2^(t-n), CHOP)
- * ST(0) = ST(0) - (ST(1) * q * 2^(t-n))
- * C2 = 1
- * ENDIF
- *
- * TODO: Determine the extent to which the JavaScript MOD operator differs from the above algorithm.
- *
- * ERRATA: On the 8087 and 80287, the condition code bits C3, C1, and C0 are incorrect when performing a reduction of
- * 64^n + m, where n >= 1, and m=1 or m=2. A bug fix should be implemented in software.
- *
- * @this {FPUX86}
- */
- static FPREM()
- {
- this.setST(0, this.getST(0) % this.getST(1));
- }
+/**
+ * FPATAN()
+ *
+ * FPATAN calculates the partial arctangent of ST(0) divided by ST(1):
+ *
+ * ST(1) = tan^-1( ST(1) / ST(0) )
+ *
+ * On the 8087 and 80287, the arguments must satisfy the inequality 0 <= ST(1) < ST(0) < +infinity.
+ * On the 80287XL and later coprocessors, the range of the operands is unrestricted. The result is
+ * returned to ST(1), and the stack is popped, destroying both operands and leaving the result in ST(0).
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FPATAN = function()
+{
+ if (this.setST(1, Math.atan2(this.getST(1), this.getST(0)))) this.popValue();
+};
- /**
- * FRSTOR()
- *
- * @this {FPUX86}
- */
- static FRSTOR()
- {
- var cpu = this.cpu;
- var addr = this.loadEnv(cpu.regEA);
- var a = this.intTmpTR;
- for (var i = 0; i < this.regStack.length; i++) {
- a[0] = cpu.getLong(addr);
- a[1] = cpu.getLong(addr += 4);
- a[2] = cpu.getShort(addr += 4);
- this.setTR(i, a);
- addr += 2;
- }
- }
+/**
+ * FPTAN()
+ *
+ * FPTAN calculates the partial tangent of ST(0):
+ *
+ * y / x = tan( ST(0) )
+ *
+ * The result of the operation is a ratio. y replaces the argument on the stack, and x is pushed onto the stack,
+ * where it becomes the new ST(0).
+ *
+ * On the 8087 and 80287, the FPTAN function assumes that its argument is valid and in-range. No argument checking
+ * is performed. The value of ST(0) must satisfy the inequality -pi/4 <= ST(0) <= pi/4. In the case of an invalid
+ * argument, the result is undefined and no error is signaled.
+ *
+ * On the 80287XL and later coprocessors, if value of ST(0) satisfies the condition -2^63 < ST(0) < 2^63, it will
+ * automatically be reduced to within range. If the operand is outside this range, however, C2 is set to 1 to indicate
+ * that the function is incomplete, and ST(0) is left unchanged.
+ *
+ * The 80287XL, 80387, and 80486 always push a value of +1.0 for x. The value of x pushed by the 8087 and 80287 may be
+ * any real number. In either case, the ratio is the same. The cotangent can be calculated by executing FDIVR immediately
+ * after FPTAN. The following code will leave the 8087 and 80287 in the same state as the later coprocessors:
+ *
+ * FDIV
+ * FLD1
+ *
+ * ST(7) must be empty before this instruction is executed to avoid an invalid operation exception. If the invalid
+ * operation exception is masked, the 8087 and 80287 leave the original operand unchanged, but push it to ST(1). On the
+ * 80287XL and later coprocessors, both ST(0) and ST(1) will contain quiet NaNs. On the 80287XL and later coprocessors,
+ * if condition code bit C2 is 0 and the precision exception is raised, then C1=1 if the last bit was rounded up. C1 is
+ * undefined for the 8087 and 80287.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FPTAN = function()
+{
+ if (this.setST(0, Math.tan(this.getST(0)))) this.pushValue(1.0);
+};
- /**
- * FRNDINT()
- *
- * @this {FPUX86}
- */
- static FRNDINT()
- {
- this.setST(0, this.roundValue(this.getST(0), FPUX86.MAX_INT64));
- }
+/**
+ * FPREM()
+ *
+ * FPREM performs modulo division of ST(0) by ST(1) and returns the result to ST(0).
+ *
+ * The FPREM instruction is used to reduce the real operand in ST(0) to a value whose magnitude is less than the
+ * magnitude of ST(1). FPREM produces an exact result, so the precision exception is never raised and the rounding
+ * control has no effect. The sign of the remainder is the same as the sign of the original operand.
+ *
+ * The remaindering operation is performed by iterative scaled subtractions and can reduce the exponent of ST(0) by
+ * no more than 63 in one execution. If the remainder is less than ST(1) (the modulus), the function is complete and
+ * C2 in the status word is cleared.
+ *
+ * If the modulo function is incomplete, C2 is set to 1, and the result in ST(0) is termed the partial remainder.
+ * C2 can be inspected by storing the status word and re-executing the instruction until C2 is clear. Alternately,
+ * ST(0) can be compared to ST(1). If ST(0) > ST(1), then FPREM must be executed again. If ST(0) = ST(1), then the
+ * remainder is 0.
+ *
+ * FPREM is important for reducing arguments to the periodic transcendental functions such as FPTAN. Because FPREM
+ * produces an exact result, no round-off error is introduced into the calculation.
+ *
+ * When reduction is complete, the three least-significant bits of the quotient are stored in the condition code bits
+ * C3, C1, and C0, respectively. When arguments to the tangent function are reduced by pi/4, this result can be used
+ * to identify the octant that contained the original angle.
+ *
+ * The FPREM function operates differently than specified by the IEEE 754 standard when rounding the quotient to form
+ * a partial remainder (see the algorithm). The FPREM1 function (80287XL and up) is provided for compatibility with
+ * that standard.
+ *
+ * The FPREM instruction can also be used to normalize ST(0). If ST(0) is unnormal and ST(1) is greater than ST(0),
+ * FPREM will normalize ST(0). On the 8087 and 80287, operation on a denormal operand raises the invalid operation
+ * exception. Underflow is not possible. On the 80287XL and later coprocessors, operation on a denormal is supported
+ * and an underflow exception can occur.
+ *
+ * ALGORITHM:
+ *
+ * t = EXPONENT(ST) - EXPONENT(ST(1))
+ * IF (t < 64) THEN
+ * q = R0UND(ST(0) / ST(1), CHOP)
+ * ST(0) = ST(0) - (ST(1) * q)
+ * C2 = 0
+ * C0 = BIT 2 of q
+ * C1 = BIT 1 of q
+ * C3 = BIT 0 of q
+ * ELSE
+ * n = a number between 32 and 63
+ * q = ROUND((ST(0) / ST(1)) / 2^(t-n), CHOP)
+ * ST(0) = ST(0) - (ST(1) * q * 2^(t-n))
+ * C2 = 1
+ * ENDIF
+ *
+ * TODO: Determine the extent to which the JavaScript MOD operator differs from the above algorithm.
+ *
+ * ERRATA: On the 8087 and 80287, the condition code bits C3, C1, and C0 are incorrect when performing a reduction of
+ * 64^n + m, where n >= 1, and m=1 or m=2. A bug fix should be implemented in software.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FPREM = function()
+{
+ this.setST(0, this.getST(0) % this.getST(1));
+};
- /**
- * FSAVE()
- *
- * @this {FPUX86}
- */
- static FSAVE()
- {
- var cpu = this.cpu;
- var addr = this.saveEnv(cpu.regEA);
- for (var i = 0; i < this.regStack.length; i++) {
- var a = this.getTR(i, true);
- cpu.setLong(addr, a[0]);
- cpu.setLong(addr += 4, a[1]);
- cpu.setShort(addr += 4, a[2]);
- addr += 2;
- }
- this.resetFPU();
+/**
+ * FRSTOR()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FRSTOR = function()
+{
+ var cpu = this.cpu;
+ var addr = this.loadEnv(cpu.regEA);
+ var a = this.intTmpTR;
+ for (var i = 0; i < this.regStack.length; i++) {
+ a[0] = cpu.getLong(addr);
+ a[1] = cpu.getLong(addr += 4);
+ a[2] = cpu.getShort(addr += 4);
+ this.setTR(i, a);
+ addr += 2;
}
+};
- /**
- * FSCALE()
- *
- * FSCALE interprets the value in ST(1) as an integer and adds this number to the exponent of the number in ST(0).
- *
- * The FSCALE instruction provides a means of quickly performing multiplication or division by powers of two.
- * This operation is often required when scaling array indexes.
- *
- * On the 8087 and 80287, FSCALE assumes that the scale factor in ST(1) is an integer that satisfies the inequality
- * -2^15 <= ST(1) < +2^15. If ST(1) is not an integer value, the value is chopped to the next smallest integer in
- * magnitude (chopped toward zero). If the value is out of range or 0 < ST(1) < 1, FSCALE produces an undefined
- * result and doesn't signal an exception. Typically, the value in ST(0) is unchanged but should not be depended on.
- *
- * On the 80287XL and later coprocessors, there is no limit on the range of the scale factor in ST(1). The value in
- * ST(1) is still chopped toward zero. If ST(1) is 0, ST(0) is unchanged.
- *
- * @this {FPUX86}
- */
- static FSCALE()
- {
- var x = this.getST(0);
- var y = this.getST(1);
- if (x != null && y != null) this.setST(0, x * Math.pow(2, this.truncateValue(y)));
- }
+/**
+ * FRNDINT()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FRNDINT = function()
+{
+ this.setST(0, this.roundValue(this.getST(0), FPUX86.MAX_INT64));
+};
- /**
- * FSETPM287()
- *
- * @this {FPUX86}
- */
- static FSETPM287()
- {
- if (this.isModel(X86.FPU.MODEL_80287)) {
- this.opUnimplemented();
- }
- }
+/**
+ * FSAVE()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSAVE = function()
+{
+ var cpu = this.cpu;
+ var addr = this.saveEnv(cpu.regEA);
+ for (var i = 0; i < this.regStack.length; i++) {
+ var a = this.getTR(i, true);
+ cpu.setLong(addr, a[0]);
+ cpu.setLong(addr += 4, a[1]);
+ cpu.setShort(addr += 4, a[2]);
+ addr += 2;
+ }
+ this.resetFPU();
+};
- /**
- * FSINCOS387()
- *
- * @this {FPUX86}
- */
- static FSINCOS387()
- {
- if (this.isAtLeastModel(X86.FPU.MODEL_80287XL)) {
- this.opUnimplemented();
- }
- }
+/**
+ * FSCALE()
+ *
+ * FSCALE interprets the value in ST(1) as an integer and adds this number to the exponent of the number in ST(0).
+ *
+ * The FSCALE instruction provides a means of quickly performing multiplication or division by powers of two.
+ * This operation is often required when scaling array indexes.
+ *
+ * On the 8087 and 80287, FSCALE assumes that the scale factor in ST(1) is an integer that satisfies the inequality
+ * -2^15 <= ST(1) < +2^15. If ST(1) is not an integer value, the value is chopped to the next smallest integer in
+ * magnitude (chopped toward zero). If the value is out of range or 0 < ST(1) < 1, FSCALE produces an undefined
+ * result and doesn't signal an exception. Typically, the value in ST(0) is unchanged but should not be depended on.
+ *
+ * On the 80287XL and later coprocessors, there is no limit on the range of the scale factor in ST(1). The value in
+ * ST(1) is still chopped toward zero. If ST(1) is 0, ST(0) is unchanged.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSCALE = function()
+{
+ var x = this.getST(0);
+ var y = this.getST(1);
+ if (x != null && y != null) this.setST(0, x * Math.pow(2, this.truncateValue(y)));
+};
- /**
- * FSQRT()
- *
- * @this {FPUX86}
- */
- static FSQRT()
- {
- this.setST(0, this.doSquareRoot(this.getST(0)));
+/**
+ * FSETPM287()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSETPM287 = function()
+{
+ if (this.isModel(X86.FPU.MODEL_80287)) {
+ this.opUnimplemented();
}
+};
- /**
- * FSTlr()
- *
- * @this {FPUX86}
- */
- static FSTlr()
- {
- if (this.getLR(0)) this.setEAFromLR();
+/**
+ * FSINCOS387()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSINCOS387 = function()
+{
+ if (this.isAtLeastModel(X86.FPU.MODEL_80287XL)) {
+ this.opUnimplemented();
}
+};
- /**
- * FSTsr()
- *
- * @this {FPUX86}
- */
- static FSTsr()
- {
- if (this.getSR(0)) this.setEAFromSR();
- }
+/**
+ * FSQRT()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSQRT = function()
+{
+ this.setST(0, this.doSquareRoot(this.getST(0)));
+};
- /**
- * FSTsti()
- *
- * @this {FPUX86}
- */
- static FSTsti()
- {
- this.setST(this.iStack, this.getST(0));
- }
+/**
+ * FSTlr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSTlr = function()
+{
+ if (this.getLR(0)) this.setEAFromLR();
+};
- /**
- * FSTENV()
- *
- * @this {FPUX86}
- */
- static FSTENV()
- {
- this.assert(this.cpu.regEA !== X86.ADDR_INVALID);
- this.saveEnv(this.cpu.regEA);
- this.regControl |= X86.FPU.CONTROL.EXC; // mask all exceptions (but do not set IEM)
- }
+/**
+ * FSTsr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSTsr = function()
+{
+ if (this.getSR(0)) this.setEAFromSR();
+};
- /**
- * FSTPlr()
- *
- * @this {FPUX86}
- */
- static FSTPlr()
- {
- if (this.getLR(0)) {
- this.setEAFromLR();
- this.popValue();
- }
- }
+/**
+ * FSTsti()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSTsti = function()
+{
+ this.setST(this.iStack, this.getST(0));
+};
- /**
- * FSTPsr()
- *
- * @this {FPUX86}
- */
- static FSTPsr()
- {
- if (this.getSR(0)) {
- this.setEAFromSR();
- this.popValue();
- }
- }
+/**
+ * FSTENV()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSTENV = function()
+{
+ this.assert(this.cpu.regEA !== X86.ADDR_INVALID);
+ this.saveEnv(this.cpu.regEA);
+ this.regControl |= X86.FPU.CONTROL.EXC; // mask all exceptions (but do not set IEM)
+};
- /**
- * FSTPsti()
- *
- * @this {FPUX86}
- */
- static FSTPsti()
- {
- if (this.setST(this.iStack, this.getST(0))) this.popValue();
+/**
+ * FSTPlr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSTPlr = function()
+{
+ if (this.getLR(0)) {
+ this.setEAFromLR();
+ this.popValue();
}
+};
- /**
- * FSTP8087()
- *
- * NOTE: This is used with encodings (0xD9,0xD8-0xDF and 0xDF,0xD0-0xDF) that were valid for the 8087 and 80287
- * but may no longer be valid as of the 80387.
- *
- * @this {FPUX86}
- */
- static FSTP8087()
- {
- this.opObsolete();
- FPUX86.FSTPsti.call(this);
+/**
+ * FSTPsr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSTPsr = function()
+{
+ if (this.getSR(0)) {
+ this.setEAFromSR();
+ this.popValue();
}
+};
- /**
- * FSTPtr()
- *
- * @this {FPUX86}
- */
- static FSTPtr()
- {
- if (this.getTR(0)) {
- this.setEAFromTR();
- this.popValue();
- }
- }
+/**
+ * FSTPsti()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSTPsti = function()
+{
+ if (this.setST(this.iStack, this.getST(0))) this.popValue();
+};
- /**
- * FSTCW()
- *
- * @this {FPUX86}
- */
- static FSTCW()
- {
- this.assert(this.cpu.regEA !== X86.ADDR_INVALID);
- this.cpu.setShort(this.cpu.regEA, this.regControl);
- }
+/**
+ * FSTP8087()
+ *
+ * NOTE: This is used with encodings (0xD9,0xD8-0xDF and 0xDF,0xD0-0xDF) that were valid for the 8087 and 80287
+ * but may no longer be valid as of the 80387.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSTP8087 = function()
+{
+ this.opObsolete();
+ FPUX86.FSTPsti.call(this);
+};
- /**
- * FSTSW()
- *
- * @this {FPUX86}
- */
- static FSTSW()
- {
- this.assert(this.cpu.regEA !== X86.ADDR_INVALID);
- this.cpu.setShort(this.cpu.regEA, this.getStatus());
+/**
+ * FSTPtr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSTPtr = function()
+{
+ if (this.getTR(0)) {
+ this.setEAFromTR();
+ this.popValue();
}
+};
+
+/**
+ * FSTCW()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSTCW = function()
+{
+ this.assert(this.cpu.regEA !== X86.ADDR_INVALID);
+ this.cpu.setShort(this.cpu.regEA, this.regControl);
+};
+
+/**
+ * FSTSW()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSTSW = function()
+{
+ this.assert(this.cpu.regEA !== X86.ADDR_INVALID);
+ this.cpu.setShort(this.cpu.regEA, this.getStatus());
+};
- /**
- * FSTSWAX287()
- *
- * @this {FPUX86}
- */
- static FSTSWAX287()
- {
- if (this.isAtLeastModel(X86.FPU.MODEL_80287)) {
- this.cpu.regEAX = (this.cpu.regEAX & ~0xffff) | this.getStatus();
- }
+/**
+ * FSTSWAX287()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSTSWAX287 = function()
+{
+ if (this.isAtLeastModel(X86.FPU.MODEL_80287)) {
+ this.cpu.regEAX = (this.cpu.regEAX & ~0xffff) | this.getStatus();
}
+};
- /**
- * FSUBlr()
- *
- * @this {FPUX86}
- */
- static FSUBlr()
- {
- this.setST(0, this.doSubtract(this.getST(0), this.getLRFromEA()));
- }
+/**
+ * FSUBlr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSUBlr = function()
+{
+ this.setST(0, this.doSubtract(this.getST(0), this.getLRFromEA()));
+};
- /**
- * FSUBsr()
- *
- * @this {FPUX86}
- */
- static FSUBsr()
- {
- this.setST(0, this.doSubtract(this.getST(0), this.getSRFromEA()));
- }
+/**
+ * FSUBsr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSUBsr = function()
+{
+ this.setST(0, this.doSubtract(this.getST(0), this.getSRFromEA()));
+};
- /**
- * FSUBst()
- *
- * Encoding 0xD8,0xE0-0xE7 ("FSUB ST,ST(i)"): ST(0) <- ST(0) - ST(i)
- *
- * @this {FPUX86}
- */
- static FSUBst()
- {
- this.setST(0, this.doSubtract(this.getST(0), this.getST(this.iStack)));
- }
+/**
+ * FSUBst()
+ *
+ * Encoding 0xD8,0xE0-0xE7 ("FSUB ST,ST(i)"): ST(0) <- ST(0) - ST(i)
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSUBst = function()
+{
+ this.setST(0, this.doSubtract(this.getST(0), this.getST(this.iStack)));
+};
- /**
- * FSUBsti()
- *
- * Encoding 0xDC,0xE8-0xEF ("FSUB ST(i),ST"): ST(i) <- ST(i) - ST(0)
- *
- * @this {FPUX86}
- */
- static FSUBsti()
- {
- this.setST(this.iStack, this.doSubtract(this.getST(this.iStack), this.getST(0)));
- }
+/**
+ * FSUBsti()
+ *
+ * Encoding 0xDC,0xE8-0xEF ("FSUB ST(i),ST"): ST(i) <- ST(i) - ST(0)
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSUBsti = function()
+{
+ this.setST(this.iStack, this.doSubtract(this.getST(this.iStack), this.getST(0)));
+};
- /**
- * FSUBPsti()
- *
- * Encoding 0xDE,0xE8-0xEF ("FSUBP ST(i),ST"): ST(i) <- ST(i) - ST(0), POP
- *
- * @this {FPUX86}
- */
- static FSUBPsti()
- {
- if (this.setST(this.iStack, this.doSubtract(this.getST(this.iStack), this.getST(0)))) this.popValue();
- }
+/**
+ * FSUBPsti()
+ *
+ * Encoding 0xDE,0xE8-0xEF ("FSUBP ST(i),ST"): ST(i) <- ST(i) - ST(0), POP
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSUBPsti = function()
+{
+ if (this.setST(this.iStack, this.doSubtract(this.getST(this.iStack), this.getST(0)))) this.popValue();
+};
- /**
- * FSUBRlr()
- *
- * @this {FPUX86}
- */
- static FSUBRlr()
- {
- this.setST(0, this.doSubtract(this.getLRFromEA(), this.getST(0)));
- }
+/**
+ * FSUBRlr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSUBRlr = function()
+{
+ this.setST(0, this.doSubtract(this.getLRFromEA(), this.getST(0)));
+};
- /**
- * FSUBRsr()
- *
- * @this {FPUX86}
- */
- static FSUBRsr()
- {
- this.setST(0, this.doSubtract(this.getSRFromEA(), this.getST(0)));
- }
+/**
+ * FSUBRsr()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSUBRsr = function()
+{
+ this.setST(0, this.doSubtract(this.getSRFromEA(), this.getST(0)));
+};
- /**
- * FSUBRst()
- *
- * Encoding 0xD8,0xE8-0xEF ("FSUBR ST,ST(i)"): ST(0) <- ST(i) - ST(0)
- *
- * @this {FPUX86}
- */
- static FSUBRst()
- {
- this.setST(0, this.doSubtract(this.getST(this.iStack), this.getST(0)));
- }
+/**
+ * FSUBRst()
+ *
+ * Encoding 0xD8,0xE8-0xEF ("FSUBR ST,ST(i)"): ST(0) <- ST(i) - ST(0)
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSUBRst = function()
+{
+ this.setST(0, this.doSubtract(this.getST(this.iStack), this.getST(0)));
+};
- /**
- * FSUBRsti()
- *
- * Encoding 0xDC,0xE0-0xE7 ("FSUBR ST(i),ST"): ST(i) <- ST(0) - ST(i)
- *
- * @this {FPUX86}
- */
- static FSUBRsti()
- {
- this.setST(this.iStack, this.doSubtract(this.getST(0), this.getST(this.iStack)));
- }
+/**
+ * FSUBRsti()
+ *
+ * Encoding 0xDC,0xE0-0xE7 ("FSUBR ST(i),ST"): ST(i) <- ST(0) - ST(i)
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSUBRsti = function()
+{
+ this.setST(this.iStack, this.doSubtract(this.getST(0), this.getST(this.iStack)));
+};
- /**
- * FSUBRPsti()
- *
- * Encoding 0xDE,0xE0-0xE7 ("FSUBRP ST(i),ST"): ST(i) <- ST(0) - ST(i), POP
- *
- * @this {FPUX86}
- */
- static FSUBRPsti()
- {
- if (this.setST(this.iStack, this.doSubtract(this.getST(0), this.getST(this.iStack)))) this.popValue();
- }
+/**
+ * FSUBRPsti()
+ *
+ * Encoding 0xDE,0xE0-0xE7 ("FSUBRP ST(i),ST"): ST(i) <- ST(0) - ST(i), POP
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FSUBRPsti = function()
+{
+ if (this.setST(this.iStack, this.doSubtract(this.getST(0), this.getST(this.iStack)))) this.popValue();
+};
- /**
- * FTST()
- *
- * @this {FPUX86}
- */
- static FTST()
- {
- this.doCompare(this.getST(0), 0);
- }
+/**
+ * FTST()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FTST = function()
+{
+ this.doCompare(this.getST(0), 0);
+};
- /**
- * FXAM()
- *
- * @this {FPUX86}
- */
- static FXAM()
- {
- this.regStatus &= ~X86.FPU.STATUS.CC;
+/**
+ * FXAM()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FXAM = function()
+{
+ this.regStatus &= ~X86.FPU.STATUS.CC;
- if (this.getSTSign(0)) {
- this.regStatus |= X86.FPU.STATUS.C1;
+ if (this.getSTSign(0)) {
+ this.regStatus |= X86.FPU.STATUS.C1;
+ }
+ if (this.getTag(this.iST) == X86.FPU.TAGS.EMPTY) {
+ this.regStatus |= X86.FPU.STATUS.C0 | X86.FPU.STATUS.C3;
+ }
+ else {
+ var v = this.getST(0);
+ if (isNaN(v)) {
+ this.regStatus |= X86.FPU.STATUS.C0;
+ }
+ else if (v === 0) { // this equals -0, too (WTF, strict equality?)
+ this.regStatus |= X86.FPU.STATUS.C3;
}
- if (this.getTag(this.iST) == X86.FPU.TAGS.EMPTY) {
- this.regStatus |= X86.FPU.STATUS.C0 | X86.FPU.STATUS.C3;
+ else if (v === Infinity || v === -Infinity) { // these are so divergent that even non-strict equality doesn't consider them equal
+ this.regStatus |= X86.FPU.STATUS.C0 | X86.FPU.STATUS.C2;
}
else {
- var v = this.getST(0);
- if (isNaN(v)) {
- this.regStatus |= X86.FPU.STATUS.C0;
- }
- else if (v === 0) { // this equals -0, too (WTF, strict equality?)
- this.regStatus |= X86.FPU.STATUS.C3;
- }
- else if (v === Infinity || v === -Infinity) { // these are so divergent that even non-strict equality doesn't consider them equal
- this.regStatus |= X86.FPU.STATUS.C0 | X86.FPU.STATUS.C2;
- }
- else {
- this.regStatus |= X86.FPU.STATUS.C2;
- }
+ this.regStatus |= X86.FPU.STATUS.C2;
}
}
+};
- /**
- * FXCHsti()
- *
- * @this {FPUX86}
- */
- static FXCHsti()
- {
- var tmp = this.getST(0);
- this.setST(0, this.getST(this.iStack));
- this.setST(this.iStack, tmp);
- }
-
- /**
- * FXCH8087()
- *
- * NOTE: This is used with encodings (0xDD,0xC8-0xCF and 0xDF,0xC8-0xCF) that were valid for the 8087 and 80287
- * but may no longer be valid as of the 80387.
- *
- * @this {FPUX86}
- */
- static FXCH8087()
- {
- this.opObsolete();
- FPUX86.FXCHsti.call(this);
- }
+/**
+ * FXCHsti()
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FXCHsti = function()
+{
+ var tmp = this.getST(0);
+ this.setST(0, this.getST(this.iStack));
+ this.setST(this.iStack, tmp);
+};
- /**
- * FXTRACT()
- *
- * FXTRACT splits the value encoded in ST(0) into two separate numbers representing the actual value of the
- * fraction (mantissa) and exponent fields.
- *
- * The FXTRACT instruction is used to decompose the two fields of the temporary real number in ST(0). The exponent
- * replaces the value in ST(0), then the fraction is pushed onto the stack. When execution is complete, ST(0)
- * contains the original fraction, expressed as a real number with a true exponent of 0 (0x3FFF in biased form),
- * and ST(1) contains the value of the original operand's true (unbiased) exponent expressed as a real number.
- *
- * If ST(0) is 0, the 8087 and 80287 will leave zeros in both ST(0) and ST(1); both zeros will have the same sign as
- * the original operand. If ST(0) is +infinity, the invalid operation exception is raised.
- *
- * On the 80287XL and later coprocessors, if ST(0) is 0, the zero-divide exception is reported and ST(1) is set to
- * -infinity. If ST(0) is +infinity, no exception is reported.
- *
- * The FXTRACT instruction may be thought of as the complement to the FSCALE instruction, which combines a separate
- * fraction and exponent into a single value.
- *
- * ALGORITHM:
- *
- * IF (ST(0) = 0) THEN
- * DEC TOP
- * ST(0) = ST(1)
- * ELSE
- * temp = ST(0)
- * ST(0) = EXPONENT(ST(0)) ; stored as true exponent
- * DEC TOP
- * ST(0) = FRACTION(ST(0))
- * ENDIF
- *
- * @this {FPUX86}
- */
- static FXTRACT()
- {
- var v = this.getST(0);
- if (v != null) {
- this.regTmpLR[0] = v;
- this.setST(0, ((this.intTmpLR[1] >> 20) & 0x7ff) - 0x3ff);
- this.intTmpLR[1] = (this.intTmpLR[1] | 0x3ff00000) & ~0x40000000;
- this.pushValue(this.regTmpLR[0]);
- }
- }
+/**
+ * FXCH8087()
+ *
+ * NOTE: This is used with encodings (0xDD,0xC8-0xCF and 0xDF,0xC8-0xCF) that were valid for the 8087 and 80287
+ * but may no longer be valid as of the 80387.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FXCH8087 = function()
+{
+ this.opObsolete();
+ FPUX86.FXCHsti.call(this);
+};
- /**
- * FYL2X()
- *
- * FYL2X (y log base 2 of x) calculates:
- *
- * ST(1) = ST(1) * log2(ST(0))
- *
- * The operands must satisfy the inequalities 0 < ST(0) < +infinity and -infinity < ST(1) < +infinity. FYL2X pops
- * the stack and returns the result to the new ST(0). Both original operands are destroyed.
- *
- * The FYL2X function is designed to optimize the calculation of a log to a base, n, other than two. In such a case,
- * the following multiplication is required; ie:
- *
- * logn(x) = logn(2) * log2(x)
- *
- * @this {FPUX86}
- */
- static FYL2X()
- {
- if (this.setST(1, this.getST(1) * Math.log(this.getST(0)) / Math.LN2)) this.popValue();
+/**
+ * FXTRACT()
+ *
+ * FXTRACT splits the value encoded in ST(0) into two separate numbers representing the actual value of the
+ * fraction (mantissa) and exponent fields.
+ *
+ * The FXTRACT instruction is used to decompose the two fields of the temporary real number in ST(0). The exponent
+ * replaces the value in ST(0), then the fraction is pushed onto the stack. When execution is complete, ST(0)
+ * contains the original fraction, expressed as a real number with a true exponent of 0 (0x3FFF in biased form),
+ * and ST(1) contains the value of the original operand's true (unbiased) exponent expressed as a real number.
+ *
+ * If ST(0) is 0, the 8087 and 80287 will leave zeros in both ST(0) and ST(1); both zeros will have the same sign as
+ * the original operand. If ST(0) is +infinity, the invalid operation exception is raised.
+ *
+ * On the 80287XL and later coprocessors, if ST(0) is 0, the zero-divide exception is reported and ST(1) is set to
+ * -infinity. If ST(0) is +infinity, no exception is reported.
+ *
+ * The FXTRACT instruction may be thought of as the complement to the FSCALE instruction, which combines a separate
+ * fraction and exponent into a single value.
+ *
+ * ALGORITHM:
+ *
+ * IF (ST(0) = 0) THEN
+ * DEC TOP
+ * ST(0) = ST(1)
+ * ELSE
+ * temp = ST(0)
+ * ST(0) = EXPONENT(ST(0)) ; stored as true exponent
+ * DEC TOP
+ * ST(0) = FRACTION(ST(0))
+ * ENDIF
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FXTRACT = function()
+{
+ var v = this.getST(0);
+ if (v != null) {
+ this.regTmpLR[0] = v;
+ this.setST(0, ((this.intTmpLR[1] >> 20) & 0x7ff) - 0x3ff);
+ this.intTmpLR[1] = (this.intTmpLR[1] | 0x3ff00000) & ~0x40000000;
+ this.pushValue(this.regTmpLR[0]);
}
+};
- /**
- * FYL2XP1()
- *
- * FYL2XP1 (y log base 2 of x plus 1) calculates:
- *
- * ST(1) = ST(1) * log2(ST(0) + 1)
- *
- * The operands must satisfy the inequalities -(1-sqrt(2)/2) < ST(0) < (1-sqrt(2)/2) and -infinity < ST(1) < +infinity.
- * FYL2XP1 pops the stack and returns the result to the new ST(0). Both original operands are destroyed.
- *
- * The FYL2XP1 function provides greater accuracy than FYL2X in computing the log of a number that is very close to 1.
- *
- * FYL2XP1 is typically used when computing compound interest, for example, which requires the calculation of a logarithm
- * of 1.0 + n where 0 < n < 0.29. If 1.0 was added to n, significant digits might be lost. By using FYL2XP1, the result
- * will be as accurate as n to within three units of temporary real precision.
- *
- * @this {FPUX86}
- */
- static FYL2XP1()
- {
- if (this.setST(1, this.getST(1) * Math.log(this.getST(0) + 1.0) / Math.LN2)) this.popValue();
- }
+/**
+ * FYL2X()
+ *
+ * FYL2X (y log base 2 of x) calculates:
+ *
+ * ST(1) = ST(1) * log2(ST(0))
+ *
+ * The operands must satisfy the inequalities 0 < ST(0) < +infinity and -infinity < ST(1) < +infinity. FYL2X pops
+ * the stack and returns the result to the new ST(0). Both original operands are destroyed.
+ *
+ * The FYL2X function is designed to optimize the calculation of a log to a base, n, other than two. In such a case,
+ * the following multiplication is required; ie:
+ *
+ * logn(x) = logn(2) * log2(x)
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FYL2X = function()
+{
+ if (this.setST(1, this.getST(1) * Math.log(this.getST(0)) / Math.LN2)) this.popValue();
+};
- /**
- * FPUX86.init()
- *
- * This function operates on every HTML element of class "fpu", extracting the
- * JSON-encoded parameters for the FPUX86 constructor from the element's "data-value"
- * attribute, invoking the constructor to create an FPUX86 component, and then binding
- * any associated HTML controls to the new component.
- */
- static init()
- {
- var aeFPUs = Component.getElementsByClass(document, PCX86.APPCLASS, "fpu");
- for (var iFPU = 0; iFPU < aeFPUs.length; iFPU++) {
- var eFPU = aeFPUs[iFPU];
- var parmsFPU = Component.getComponentParms(eFPU);
- var fpu = new FPUX86(parmsFPU);
- Component.bindComponentControls(fpu, eFPU, PCX86.APPCLASS);
- }
- }
-}
+/**
+ * FYL2XP1()
+ *
+ * FYL2XP1 (y log base 2 of x plus 1) calculates:
+ *
+ * ST(1) = ST(1) * log2(ST(0) + 1)
+ *
+ * The operands must satisfy the inequalities -(1-sqrt(2)/2) < ST(0) < (1-sqrt(2)/2) and -infinity < ST(1) < +infinity.
+ * FYL2XP1 pops the stack and returns the result to the new ST(0). Both original operands are destroyed.
+ *
+ * The FYL2XP1 function provides greater accuracy than FYL2X in computing the log of a number that is very close to 1.
+ *
+ * FYL2XP1 is typically used when computing compound interest, for example, which requires the calculation of a logarithm
+ * of 1.0 + n where 0 < n < 0.29. If 1.0 was added to n, significant digits might be lost. By using FYL2XP1, the result
+ * will be as accurate as n to within three units of temporary real precision.
+ *
+ * @this {FPUX86}
+ */
+FPUX86.FYL2XP1 = function()
+{
+ if (this.setST(1, this.getST(1) * Math.log(this.getST(0) + 1.0) / Math.LN2)) this.popValue();
+};
/*
* Class constants
diff --git a/modules/pcx86/lib/hdc.js b/modules/pcx86/lib/hdc.js
index b2801a1aaa..0f9d394d51 100644
--- a/modules/pcx86/lib/hdc.js
+++ b/modules/pcx86/lib/hdc.js
@@ -119,7 +119,7 @@ class HDC extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {HDC}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "listDisks")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -1132,7 +1132,7 @@ class HDC extends Component {
* simplistic MRU logic. If that fails, the worst that will (or should) happen is we'll burn through
* more BackTrack wrapper objects than necessary, and risk running out.
*/
- var bto = hdc.bus.addBackTrackObject(obj, null, off);
+ var bto = hdc.bus.addBackTrackObject(obj, /** @type BackTrack */ (null), off);
hdc.cpu.backTrack.btiIO = hdc.bus.getBackTrackIndex(bto, off);
}
});
diff --git a/modules/pcx86/lib/keyboard.js b/modules/pcx86/lib/keyboard.js
index d93336556c..c992464692 100644
--- a/modules/pcx86/lib/keyboard.js
+++ b/modules/pcx86/lib/keyboard.js
@@ -206,7 +206,7 @@ class Keyboard extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {Keyboard}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "esc")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pcx86/lib/mouse.js b/modules/pcx86/lib/mouse.js
index 0d34f87db6..d120d602b0 100644
--- a/modules/pcx86/lib/mouse.js
+++ b/modules/pcx86/lib/mouse.js
@@ -557,7 +557,7 @@ class Mouse extends Component {
* Byte 3 X 0 Y5 Y4 Y3 Y2 Y1 Y0
*
* @this {Mouse}
- * @param {string|null} [sDiag] diagnostic message
+ * @param {string|null|*} [sDiag] diagnostic message
* @param {number} [xDiag] original x-coordinate (optional; for diagnostic use only)
* @param {number} [yDiag] original y-coordinate (optional; for diagnostic use only)
*/
diff --git a/modules/pcx86/lib/panel.js b/modules/pcx86/lib/panel.js
index 2506e96c6f..a2dda72f37 100644
--- a/modules/pcx86/lib/panel.js
+++ b/modules/pcx86/lib/panel.js
@@ -243,7 +243,7 @@ class Panel extends Component {
* that doesn't recognize the specified binding should simply ignore it.
*
* @this {Panel}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -887,7 +887,7 @@ class Panel extends Component {
*
* @this {Panel}
* @param {string} sText
- * @param {number|null} [nValue]
+ * @param {number|null|*} [nValue]
* @param {number} [nColsSkip]
* @param {number} [nLinesSkip]
*/
diff --git a/modules/pcx86/lib/parallel.js b/modules/pcx86/lib/parallel.js
index 2a1bac5b92..8b0186fd19 100644
--- a/modules/pcx86/lib/parallel.js
+++ b/modules/pcx86/lib/parallel.js
@@ -146,7 +146,7 @@ class ParallelPort extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {ParallelPort}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "buffer")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -154,7 +154,7 @@ class ParallelPort extends Component {
*/
setBinding(sHTMLType, sBinding, control, sValue)
{
- if (sHTMLType == null || sHTMLType == "textarea") {
+ if (!sHTMLType || sHTMLType == "textarea") {
this.bindings[sBinding] = this.controlBuffer = control;
return true;
}
diff --git a/modules/pcx86/lib/serial.js b/modules/pcx86/lib/serial.js
index 1ed69bef30..fa1d49921c 100644
--- a/modules/pcx86/lib/serial.js
+++ b/modules/pcx86/lib/serial.js
@@ -258,7 +258,7 @@ class SerialPort extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {SerialPort}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "buffer")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -266,7 +266,7 @@ class SerialPort extends Component {
*/
setBinding(sHTMLType, sBinding, control, sValue)
{
- if (sHTMLType == null || sHTMLType == "textarea") {
+ if (!sHTMLType || sHTMLType == "textarea") {
var serial = this;
this.bindings[sBinding] = this.controlBuffer = /** @type {HTMLTextAreaElement} */ (control);
diff --git a/modules/pcx86/lib/testctl.js b/modules/pcx86/lib/testctl.js
index 911c896d0f..3d93e5007a 100644
--- a/modules/pcx86/lib/testctl.js
+++ b/modules/pcx86/lib/testctl.js
@@ -167,7 +167,7 @@ class TestController extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {TestController}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "buffer")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/modules/pcx86/lib/video.js b/modules/pcx86/lib/video.js
index 63cbbb8869..362478467e 100644
--- a/modules/pcx86/lib/video.js
+++ b/modules/pcx86/lib/video.js
@@ -688,7 +688,7 @@ class Card extends Controller {
if (this.nCard >= Video.CARD.EGA) {
this.dbg.println(" LATCHES: " + Str.toHex(this.latches));
this.dbg.println(" ACCESS: " + Str.toHex(this.nAccess, 4));
- this.dbg.println("Use 'dump video [addr]' to dump video memory");
+ this.dbg.println("Use 'd video [addr]' to dump video memory");
/*
* There are few more EGA regs we could dump, like GRCPos1, GRCPos2, but does anyone care?
*/
@@ -793,7 +793,7 @@ class Card extends Controller {
var sData = Str.toHex(this.addrBuffer + idw) + ":";
for (j = 0; j < n && idw < this.adwMemory.length; j++) {
var dw = this.adwMemory[idw++];
- sData += ' ' + ((p < 0)? Str.toHex(dw) : Str.toBin((dw >> (p << 3)), 8));
+ sData += ' ' + ((p < 0)? Str.toHex(dw, 8) : Str.toBin((dw >> (p << 3)), 8));
}
if (fColAdjust) idw += w - n;
if (sDump) sDump += "\n";
@@ -1288,8 +1288,9 @@ Card.ATC = {
};
if (DEBUGGER) {
- Card.ATC.REGS = ["PAL00","PAL01","PAL02","PAL03","PAL04","PAL05","PAL06","PAL07",
- "PAL08","PAL09","PAL0A","PAL0B","PAL0C","PAL0D","PAL0E","PAL0F", "MODE","OVERSCAN","PLANES","HPAN"];
+ Card.ATC.REGS = [
+ "ATC00","ATC01","ATC02","ATC03","ATC04","ATC05","ATC06","ATC07",
+ "ATC08","ATC09","ATC0A","ATC0B","ATC0C","ATC0D","ATC0E","ATC0F", "ATCMODE","OVERSCAN","PLANES","HPAN"];
}
/*
@@ -1509,7 +1510,7 @@ Card.GRC = {
TOTAL_REGS: 0x09
};
-if (DEBUGGER) Card.GRC.REGS = ["SRESET","ESRESET","COLORCMP","DATAROT","READMAP","MODE","MISC","COLORDC","BITMASK"];
+if (DEBUGGER) Card.GRC.REGS = ["SRESET","ESRESET","COLORCMP","DATAROT","READMAP","GRCMODE","GRCMISC","COLORDC","BITMASK"];
/*
* EGA Memory Access Functions
@@ -2360,13 +2361,13 @@ class Video extends Component {
if (sEvent) {
var sFullScreen = Web.findProperty(document, 'fullscreenElement') || Web.findProperty(document, 'fullScreenElement');
document.addEventListener(sEvent, function onFullScreenChange() {
- video.notifyFullScreen(!!sFullScreen);
+ video.notifyFullScreen(document[sFullScreen] != null);
}, false);
}
sEvent = Web.findProperty(document, 'on', 'fullscreenerror');
if (sEvent) {
document.addEventListener(sEvent, function onFullScreenError() {
- video.notifyFullScreen(null);
+ video.notifyFullScreen();
}, false);
}
}
@@ -2536,7 +2537,7 @@ class Video extends Component {
* setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {Video}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "refresh")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -2711,7 +2712,7 @@ class Video extends Component {
* notifyFullScreen(fFullScreen)
*
* @this {Video}
- * @param {boolean|null} fFullScreen (null if there was a full-screen error)
+ * @param {boolean|undefined} [fFullScreen] (undefined if there was a full-screen error)
*/
notifyFullScreen(fFullScreen)
{
@@ -2722,8 +2723,8 @@ class Video extends Component {
this.canvasScreen.style.width = this.canvasScreen.style.height = "";
}
}
- this.printMessage("notifyFullScreen(" + fFullScreen + ")", true);
- if (this.kbd) this.kbd.notifyEscape(fFullScreen);
+ if (DEBUG) this.printMessage("notifyFullScreen(" + fFullScreen + ")", true);
+ if (this.kbd) this.kbd.notifyEscape(fFullScreen == true);
}
/**
diff --git a/modules/pdp10/lib/computer.js b/modules/pdp10/lib/computer.js
index 51a40ecb43..69cc6042f2 100644
--- a/modules/pdp10/lib/computer.js
+++ b/modules/pdp10/lib/computer.js
@@ -1086,16 +1086,16 @@ class ComputerPDP10 extends Component {
}
/**
- * setBinding(sType, sBinding, control, sValue)
+ * setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {ComputerPDP10}
- * @param {string|null} sType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
- setBinding(sType, sBinding, control, sValue)
+ setBinding(sHTMLType, sBinding, control, sValue)
{
var computer = this;
diff --git a/modules/pdp10/lib/cpu.js b/modules/pdp10/lib/cpu.js
index f654934843..da898554dd 100644
--- a/modules/pdp10/lib/cpu.js
+++ b/modules/pdp10/lib/cpu.js
@@ -150,7 +150,7 @@ class CPUPDP10 extends Component {
this.panel = cmp.panel;
for (var i = 0; i < CPUPDP10.BUTTONS.length; i++) {
var control = this.bindings[CPUPDP10.BUTTONS[i]];
- if (control) this.cmp.setBinding(null, CPUPDP10.BUTTONS[i], control);
+ if (control) this.cmp.setBinding("", CPUPDP10.BUTTONS[i], control);
}
this.setReady();
}
@@ -401,16 +401,16 @@ class CPUPDP10 extends Component {
}
/**
- * setBinding(sType, sBinding, control, sValue)
+ * setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {CPUPDP10}
- * @param {string|null} sType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "run")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
- setBinding(sType, sBinding, control, sValue)
+ setBinding(sHTMLType, sBinding, control, sValue)
{
var cpu = this;
diff --git a/modules/pdp10/lib/debugger.js b/modules/pdp10/lib/debugger.js
index 0aeb89ca84..ee090eb291 100644
--- a/modules/pdp10/lib/debugger.js
+++ b/modules/pdp10/lib/debugger.js
@@ -352,16 +352,16 @@ class DebuggerPDP10 extends Debugger {
}
/**
- * setBinding(sType, sBinding, control, sValue)
+ * setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {DebuggerPDP10}
- * @param {string|null} sType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "debugInput")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
- setBinding(sType, sBinding, control, sValue)
+ setBinding(sHTMLType, sBinding, control, sValue)
{
var dbg = this;
switch (sBinding) {
diff --git a/modules/pdp10/lib/panel.js b/modules/pdp10/lib/panel.js
index 8324630d4f..d0d9f064e9 100644
--- a/modules/pdp10/lib/panel.js
+++ b/modules/pdp10/lib/panel.js
@@ -296,7 +296,7 @@ class PanelPDP10 extends Component {
}
/**
- * setBinding(sType, sBinding, control, sValue)
+ * setBinding(sHTMLType, sBinding, control, sValue)
*
* Some panel layouts don't have bindings of their own, and even when they do, there may still be some
* components (eg, the CPU) that prefer to update their own bindings, so we pass along all binding requests
@@ -304,23 +304,17 @@ class PanelPDP10 extends Component {
* component that doesn't recognize the specified binding should simply ignore it.
*
* @this {PanelPDP10}
- * @param {string|null} sType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
- setBinding(sType, sBinding, control, sValue)
+ setBinding(sHTMLType, sBinding, control, sValue)
{
- if (this.cmp && this.cmp.setBinding(sType, sBinding, control, sValue)) {
- return true;
- }
- if (this.cpu && this.cpu.setBinding(sType, sBinding, control, sValue)) {
- return true;
- }
- if (DEBUGGER && this.dbg && this.dbg.setBinding(sType, sBinding, control, sValue)) {
- return true;
- }
+ if (this.cmp && this.cmp.setBinding(sHTMLType, sBinding, control, sValue)) return true;
+ if (this.cpu && this.cpu.setBinding(sHTMLType, sBinding, control, sValue)) return true;
+ if (DEBUGGER && this.dbg && this.dbg.setBinding(sHTMLType, sBinding, control, sValue)) return true;
switch (sBinding) {
case 'PC':
@@ -336,7 +330,7 @@ class PanelPDP10 extends Component {
*
* Only *type* and *binding* attributes are required; if *value* is omitted, the default value is 0 ("off").
*/
- if (sType == "led" || sType == "rled") {
+ if (sHTMLType == "led" || sHTMLType == "rled") {
this.bindings[sBinding] = control;
this.leds[sBinding] = sValue? 1 : 0;
this.cLiveRegs++;
@@ -352,7 +346,7 @@ class PanelPDP10 extends Component {
* Currently, there is no XML attribute to indicate whether a switch is "momentary"; only recognized switches
* in our internal table can have that attribute.
*/
- if (sType == "switch") {
+ if (sHTMLType == "switch") {
/*
* Like LEDs, we allow unrecognized switches to be defined as well, but they won't do anything useful,
* since only recognized switches will have handlers that perform the appropriate operations.
@@ -386,7 +380,7 @@ class PanelPDP10 extends Component {
}(this, sBinding);
return true;
}
- return super.setBinding(sType, sBinding, control, sValue);
+ return super.setBinding(sHTMLType, sBinding, control, sValue);
}
}
diff --git a/modules/pdp10/lib/serial.js b/modules/pdp10/lib/serial.js
index c91c5660d8..01703b0d5f 100644
--- a/modules/pdp10/lib/serial.js
+++ b/modules/pdp10/lib/serial.js
@@ -169,18 +169,18 @@ class SerialPortPDP10 extends Component {
}
/**
- * setBinding(sType, sBinding, control, sValue)
+ * setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {SerialPortPDP10}
- * @param {string|null} sType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "buffer")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
- setBinding(sType, sBinding, control, sValue)
+ setBinding(sHTMLType, sBinding, control, sValue)
{
- if (sType == null || sType == "textarea") {
+ if (!sHTMLType || sHTMLType == "textarea") {
var serial = this;
this.bindings[sBinding] = this.controlBuffer = control;
diff --git a/modules/pdp11/lib/computer.js b/modules/pdp11/lib/computer.js
index 978a9f6178..ac1a698f29 100644
--- a/modules/pdp11/lib/computer.js
+++ b/modules/pdp11/lib/computer.js
@@ -1092,16 +1092,16 @@ class ComputerPDP11 extends Component {
}
/**
- * setBinding(sType, sBinding, control, sValue)
+ * setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {ComputerPDP11}
- * @param {string|null} sType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
- setBinding(sType, sBinding, control, sValue)
+ setBinding(sHTMLType, sBinding, control, sValue)
{
var computer = this;
diff --git a/modules/pdp11/lib/cpu.js b/modules/pdp11/lib/cpu.js
index 0b95de05b9..6bbd964dd0 100644
--- a/modules/pdp11/lib/cpu.js
+++ b/modules/pdp11/lib/cpu.js
@@ -146,7 +146,7 @@ class CPUPDP11 extends Component {
this.panel = cmp.panel;
for (var i = 0; i < CPUPDP11.BUTTONS.length; i++) {
var control = this.bindings[CPUPDP11.BUTTONS[i]];
- if (control) this.cmp.setBinding(null, CPUPDP11.BUTTONS[i], control);
+ if (control) this.cmp.setBinding("", CPUPDP11.BUTTONS[i], control);
}
this.setReady();
}
@@ -396,16 +396,16 @@ class CPUPDP11 extends Component {
}
/**
- * setBinding(sType, sBinding, control, sValue)
+ * setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {CPUPDP11}
- * @param {string|null} sType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "run")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
- setBinding(sType, sBinding, control, sValue)
+ setBinding(sHTMLType, sBinding, control, sValue)
{
var cpu = this;
diff --git a/modules/pdp11/lib/debugger.js b/modules/pdp11/lib/debugger.js
index 4c54cb2fdc..5e3fe39601 100644
--- a/modules/pdp11/lib/debugger.js
+++ b/modules/pdp11/lib/debugger.js
@@ -317,16 +317,16 @@ class DebuggerPDP11 extends Debugger {
}
/**
- * setBinding(sType, sBinding, control, sValue)
+ * setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {DebuggerPDP11}
- * @param {string|null} sType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "debugInput")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
- setBinding(sType, sBinding, control, sValue)
+ setBinding(sHTMLType, sBinding, control, sValue)
{
var dbg = this;
switch (sBinding) {
diff --git a/modules/pdp11/lib/drive.js b/modules/pdp11/lib/drive.js
index d7e0fad315..ee17acd73c 100644
--- a/modules/pdp11/lib/drive.js
+++ b/modules/pdp11/lib/drive.js
@@ -156,16 +156,16 @@ class DriveController extends Component {
}
/**
- * setBinding(sType, sBinding, control, sValue)
+ * setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {DriveController}
- * @param {string|null} sType is the type of the HTML control (eg, "button", "list", "text", etc)
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", etc)
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "listDisks")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
- setBinding(sType, sBinding, control, sValue)
+ setBinding(sHTMLType, sBinding, control, sValue)
{
var dc = this;
diff --git a/modules/pdp11/lib/keyboard.js b/modules/pdp11/lib/keyboard.js
index 9bef96ce9f..c36f98e5ef 100644
--- a/modules/pdp11/lib/keyboard.js
+++ b/modules/pdp11/lib/keyboard.js
@@ -49,16 +49,16 @@ class KeyboardPDP11 extends Component {
}
/**
- * setBinding(sType, sBinding, control, sValue)
+ * setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {KeyboardPDP11}
- * @param {string|null} sType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "esc")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
- setBinding(sType, sBinding, control, sValue)
+ setBinding(sHTMLType, sBinding, control, sValue)
{
return false;
}
diff --git a/modules/pdp11/lib/panel.js b/modules/pdp11/lib/panel.js
index 82caeb37b5..782d4df928 100644
--- a/modules/pdp11/lib/panel.js
+++ b/modules/pdp11/lib/panel.js
@@ -299,7 +299,7 @@ class PanelPDP11 extends Component {
}
/**
- * setBinding(sType, sBinding, control, sValue)
+ * setBinding(sHTMLType, sBinding, control, sValue)
*
* Some panel layouts don't have bindings of their own, and even when they do, there may still be some
* components (eg, the CPU) that prefer to update their own bindings, so we pass along all binding requests
@@ -307,23 +307,17 @@ class PanelPDP11 extends Component {
* component that doesn't recognize the specified binding should simply ignore it.
*
* @this {PanelPDP11}
- * @param {string|null} sType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
- setBinding(sType, sBinding, control, sValue)
+ setBinding(sHTMLType, sBinding, control, sValue)
{
- if (this.cmp && this.cmp.setBinding(sType, sBinding, control, sValue)) {
- return true;
- }
- if (this.cpu && this.cpu.setBinding(sType, sBinding, control, sValue)) {
- return true;
- }
- if (DEBUGGER && this.dbg && this.dbg.setBinding(sType, sBinding, control, sValue)) {
- return true;
- }
+ if (this.cmp && this.cmp.setBinding(sHTMLType, sBinding, control, sValue)) return true;
+ if (this.cpu && this.cpu.setBinding(sHTMLType, sBinding, control, sValue)) return true;
+ if (DEBUGGER && this.dbg && this.dbg.setBinding(sHTMLType, sBinding, control, sValue)) return true;
switch (sBinding) {
case 'R0':
@@ -351,7 +345,7 @@ class PanelPDP11 extends Component {
*
* Only *type* and *binding* attributes are required; if *value* is omitted, the default value is 0 ("off").
*/
- if (sType == "led" || sType == "rled") {
+ if (sHTMLType == "led" || sHTMLType == "rled") {
this.bindings[sBinding] = control;
this.leds[sBinding] = sValue? 1 : 0;
this.cLiveRegs++;
@@ -367,7 +361,7 @@ class PanelPDP11 extends Component {
* Currently, there is no XML attribute to indicate whether a switch is "momentary"; only recognized switches
* in our internal table can have that attribute.
*/
- if (sType == "switch") {
+ if (sHTMLType == "switch") {
/*
* Like LEDs, we allow unrecognized switches to be defined as well, but they won't do anything useful,
* since only recognized switches will have handlers that perform the appropriate operations.
@@ -401,7 +395,7 @@ class PanelPDP11 extends Component {
}(this, sBinding);
return true;
}
- return super.setBinding(sType, sBinding, control, sValue);
+ return super.setBinding(sHTMLType, sBinding, control, sValue);
}
}
diff --git a/modules/pdp11/lib/pc11.js b/modules/pdp11/lib/pc11.js
index 811a002641..a7b25e6ccd 100644
--- a/modules/pdp11/lib/pc11.js
+++ b/modules/pdp11/lib/pc11.js
@@ -131,16 +131,16 @@ class PC11 extends Component {
}
/**
- * setBinding(sType, sBinding, control, sValue)
+ * setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {PC11}
- * @param {string|null} sType is the type of the HTML control (eg, "button", "list", "text", etc)
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", etc)
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "listTapes")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
- setBinding(sType, sBinding, control, sValue)
+ setBinding(sHTMLType, sBinding, control, sValue)
{
var pc11 = this;
var nTapeTarget = PC11.TARGET.NONE;
diff --git a/modules/pdp11/lib/serial.js b/modules/pdp11/lib/serial.js
index 4e6bee88c3..f79976c133 100644
--- a/modules/pdp11/lib/serial.js
+++ b/modules/pdp11/lib/serial.js
@@ -189,18 +189,18 @@ class SerialPortPDP11 extends Component {
}
/**
- * setBinding(sType, sBinding, control, sValue)
+ * setBinding(sHTMLType, sBinding, control, sValue)
*
* @this {SerialPortPDP11}
- * @param {string|null} sType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "textarea", "register", "flag", "rled", etc)
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "buffer")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
- setBinding(sType, sBinding, control, sValue)
+ setBinding(sHTMLType, sBinding, control, sValue)
{
- if (sType == null || sType == "textarea") {
+ if (!sHTMLType || sHTMLType == "textarea") {
var serial = this;
this.bindings[sBinding] = this.controlBuffer = control;
diff --git a/modules/shared/lib/component.js b/modules/shared/lib/component.js
index f1e8f072d2..59c3a51f0a 100644
--- a/modules/shared/lib/component.js
+++ b/modules/shared/lib/component.js
@@ -465,7 +465,7 @@ class Component {
if (target) {
var control = target.bindings[sBinding];
if (control) {
- component.setBinding(null, sBinding, control);
+ component.setBinding("", sBinding, control);
}
}
}
@@ -953,7 +953,7 @@ class Component {
* Component's setBinding() method is intended to be overridden by subclasses.
*
* @this {Component}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, 'print')
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -1406,10 +1406,10 @@ class Component {
*
* @this {Component}
* @param {number} port
- * @param {number|null} bOut if an output operation
- * @param {number|null} [addrFrom]
- * @param {string|null} [name] of the port, if any
- * @param {number|null} [bIn] is the input value, if known, on an input operation
+ * @param {number|null|*} bOut if an output operation
+ * @param {number|null|*} [addrFrom]
+ * @param {string|null|*} [name] of the port, if any
+ * @param {number|null|*} [bIn] is the input value, if known, on an input operation
* @param {number|boolean} [bitsMessage] is zero or more MESSAGE_* category flag(s)
*/
printMessageIO(port, bOut, addrFrom, name, bIn, bitsMessage)
diff --git a/modules/shared/lib/debugger.js b/modules/shared/lib/debugger.js
index 4e916fa275..23887932ba 100644
--- a/modules/shared/lib/debugger.js
+++ b/modules/shared/lib/debugger.js
@@ -1055,7 +1055,7 @@ class Debugger extends Component
*
* @this {Debugger}
* @param {string|undefined} sValue
- * @param {string|null} [sName] is the name of the value, if any
+ * @param {string|null|*} [sName] is the name of the value, if any
* @param {Array|undefined|boolean} [fQuiet]
* @param {number} [nUnary] (0 for none, 1 for negate, 2 for complement, 3 for leading zeros)
* @return {number|undefined} numeric value, or undefined if sValue is either undefined or invalid
diff --git a/modules/shared/lib/proclib.js b/modules/shared/lib/proclib.js
index 0731c219e3..5ab8e7f037 100644
--- a/modules/shared/lib/proclib.js
+++ b/modules/shared/lib/proclib.js
@@ -48,9 +48,11 @@ class Proc {
{
var argc = 0;
var argv = {};
+ argv[argc++] = process.argv[1];
for (var i = 2; i < process.argv.length; i++) {
var j, sSep;
var sArg = process.argv[i];
+ argv[argc++] = sArg;
if (!sArg.indexOf(sSep = "--") || !sArg.indexOf(sSep = "—")) {
sArg = sArg.substr(sSep.length);
var sValue = true;
diff --git a/modules/shared/lib/strlib.js b/modules/shared/lib/strlib.js
index 735b136bd8..e362c9edfd 100644
--- a/modules/shared/lib/strlib.js
+++ b/modules/shared/lib/strlib.js
@@ -185,7 +185,7 @@ class Str {
*
* Displays the given number as an unsigned integer using the specified radix and number of digits.
*
- * @param {number|null|undefined} n
+ * @param {number|*} n
* @param {number} radix (ie, the base)
* @param {number} cch (the desired number of digits)
* @param {string} [sPrefix] (default is none)
@@ -195,17 +195,17 @@ class Str {
static toBase(n, radix, cch, sPrefix = "", nGrouping = 0)
{
/*
- * An initial "falsey" check for null takes care of both null and undefined;
- * we can't rely entirely on isNaN(), because isNaN(null) returns false, oddly enough.
+ * We can't rely entirely on isNaN(), because isNaN(null) returns false, and we can't rely
+ * entirely on typeof either, because typeof Nan returns "number". Sigh.
*
* Alternatively, we could mask and shift n regardless of whether it's null/undefined/NaN,
* since JavaScript coerces such operands to zero, but I think there's "value" in seeing those
* values displayed differently.
*/
var s = "";
- if (isNaN(n)) {
+ if (isNaN(n) || typeof n != "number") {
n = null;
- } else if (n != null) {
+ } else {
/*
* Callers that produced an input by dividing by a power of two rather than shifting (in order
* to access more than 32 bits) may produce a fractional result, which ordinarily we would simply
@@ -248,7 +248,7 @@ class Str {
*
* Converts an integer to binary, with the specified number of digits (up to a maximum of 36).
*
- * @param {number|null|undefined} n (supports integers up to 36 bits now)
+ * @param {number|*} n (supports integers up to 36 bits now)
* @param {number} [cch] is the desired number of binary digits (0 or undefined for default of either 8, 18, or 36)
* @param {number} [nGrouping]
* @return {string} the binary representation of n
@@ -300,7 +300,7 @@ class Str {
* doesn't properly convert negative values. Moreover, if n is undefined, n.toString() will throw
* an exception, whereas this function will return '?' characters.
*
- * @param {number|null|undefined} n (supports integers up to 36 bits now)
+ * @param {number|*} n (supports integers up to 36 bits now)
* @param {number} [cch] is the desired number of octal digits (0 or undefined for default of either 6, 8, or 12)
* @param {boolean} [fPrefix]
* @return {string} the octal representation of n
@@ -330,7 +330,7 @@ class Str {
* doesn't properly convert negative values. Moreover, if n is undefined, n.toString() will throw
* an exception, whereas this function will return '?' characters.
*
- * @param {number|null|undefined} n (supports integers up to 36 bits now)
+ * @param {number|*} n (supports integers up to 36 bits now)
* @param {number} [cch] is the desired number of decimal digits (0 or undefined for default of either 5 or 11)
* @return {string} the decimal representation of n
*/
@@ -365,7 +365,7 @@ class Str {
* s = "00000000".substr(0, 8 - s.length) + s;
* s = s.substr(0, cch).toUpperCase();
*
- * @param {number|null|undefined} n (supports integers up to 36 bits now)
+ * @param {number|*} n (supports integers up to 36 bits now)
* @param {number} [cch] is the desired number of hex digits (0 or undefined for default of either 4, 8, or 9)
* @param {boolean} [fPrefix]
* @return {string} the hex representation of n
diff --git a/pcjs-disks b/pcjs-disks
index 950a645def..e74dcadd14 160000
--- a/pcjs-disks
+++ b/pcjs-disks
@@ -1 +1 @@
-Subproject commit 950a645def07b76996a155185ff0f48edadd33f0
+Subproject commit e74dcadd14daa6509321277d9dd50915d151e93d
diff --git a/private-disks b/private-disks
index 9b1fe752ee..67716412cb 160000
--- a/private-disks
+++ b/private-disks
@@ -1 +1 @@
-Subproject commit 9b1fe752eec246331dba5e304ed2a181c6884588
+Subproject commit 67716412cbb6d42fb9138b092b4453697085f09a
diff --git a/versions/c1pjs/1.61.0/c1p-uncompiled.js b/versions/c1pjs/1.61.0/c1p-uncompiled.js
index f1483b796f..c2c70ccf01 100644
--- a/versions/c1pjs/1.61.0/c1p-uncompiled.js
+++ b/versions/c1pjs/1.61.0/c1p-uncompiled.js
@@ -339,7 +339,7 @@ class Str {
*
* Displays the given number as an unsigned integer using the specified radix and number of digits.
*
- * @param {number|null|undefined} n
+ * @param {number|*} n
* @param {number} radix (ie, the base)
* @param {number} cch (the desired number of digits)
* @param {string} [sPrefix] (default is none)
@@ -349,17 +349,17 @@ class Str {
static toBase(n, radix, cch, sPrefix = "", nGrouping = 0)
{
/*
- * An initial "falsey" check for null takes care of both null and undefined;
- * we can't rely entirely on isNaN(), because isNaN(null) returns false, oddly enough.
+ * We can't rely entirely on isNaN(), because isNaN(null) returns false, and we can't rely
+ * entirely on typeof either, because typeof Nan returns "number". Sigh.
*
* Alternatively, we could mask and shift n regardless of whether it's null/undefined/NaN,
* since JavaScript coerces such operands to zero, but I think there's "value" in seeing those
* values displayed differently.
*/
var s = "";
- if (isNaN(n)) {
+ if (isNaN(n) || typeof n != "number") {
n = null;
- } else if (n != null) {
+ } else {
/*
* Callers that produced an input by dividing by a power of two rather than shifting (in order
* to access more than 32 bits) may produce a fractional result, which ordinarily we would simply
@@ -402,7 +402,7 @@ class Str {
*
* Converts an integer to binary, with the specified number of digits (up to a maximum of 36).
*
- * @param {number|null|undefined} n (supports integers up to 36 bits now)
+ * @param {number|*} n (supports integers up to 36 bits now)
* @param {number} [cch] is the desired number of binary digits (0 or undefined for default of either 8, 18, or 36)
* @param {number} [nGrouping]
* @return {string} the binary representation of n
@@ -454,7 +454,7 @@ class Str {
* doesn't properly convert negative values. Moreover, if n is undefined, n.toString() will throw
* an exception, whereas this function will return '?' characters.
*
- * @param {number|null|undefined} n (supports integers up to 36 bits now)
+ * @param {number|*} n (supports integers up to 36 bits now)
* @param {number} [cch] is the desired number of octal digits (0 or undefined for default of either 6, 8, or 12)
* @param {boolean} [fPrefix]
* @return {string} the octal representation of n
@@ -484,7 +484,7 @@ class Str {
* doesn't properly convert negative values. Moreover, if n is undefined, n.toString() will throw
* an exception, whereas this function will return '?' characters.
*
- * @param {number|null|undefined} n (supports integers up to 36 bits now)
+ * @param {number|*} n (supports integers up to 36 bits now)
* @param {number} [cch] is the desired number of decimal digits (0 or undefined for default of either 5 or 11)
* @return {string} the decimal representation of n
*/
@@ -519,7 +519,7 @@ class Str {
* s = "00000000".substr(0, 8 - s.length) + s;
* s = s.substr(0, cch).toUpperCase();
*
- * @param {number|null|undefined} n (supports integers up to 36 bits now)
+ * @param {number|*} n (supports integers up to 36 bits now)
* @param {number} [cch] is the desired number of hex digits (0 or undefined for default of either 4, 8, or 9)
* @param {boolean} [fPrefix]
* @return {string} the hex representation of n
@@ -2849,7 +2849,7 @@ class Component {
if (target) {
var control = target.bindings[sBinding];
if (control) {
- component.setBinding(null, sBinding, control);
+ component.setBinding("", sBinding, control);
}
}
}
@@ -3337,7 +3337,7 @@ class Component {
* Component's setBinding() method is intended to be overridden by subclasses.
*
* @this {Component}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, 'print')
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -3790,10 +3790,10 @@ class Component {
*
* @this {Component}
* @param {number} port
- * @param {number|null} bOut if an output operation
- * @param {number|null} [addrFrom]
- * @param {string|null} [name] of the port, if any
- * @param {number|null} [bIn] is the input value, if known, on an input operation
+ * @param {number|null|*} bOut if an output operation
+ * @param {number|null|*} [addrFrom]
+ * @param {string|null|*} [name] of the port, if any
+ * @param {number|null|*} [bIn] is the input value, if known, on an input operation
* @param {number|boolean} [bitsMessage] is zero or more MESSAGE_* category flag(s)
*/
printMessageIO(port, bOut, addrFrom, name, bIn, bitsMessage)
@@ -4001,7 +4001,7 @@ class C1PPanel extends Component {
* component that doesn't recognize the specified binding should simply ignore it.
*
* @this {C1PPanel}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -4557,7 +4557,7 @@ class C1PCPU extends Component {
/**
* @this {C1PCPU}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "run")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -8599,7 +8599,7 @@ class C1PKeyboard extends Component {
/**
* @this {C1PKeyboard}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "esc", "ctrl-c")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -9502,7 +9502,7 @@ class C1PVideo extends Component {
/**
* @this {C1PVideo}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "refresh")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -10001,7 +10001,7 @@ class C1PSerialPort extends Component {
/**
* @this {C1PSerialPort}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "listSerial")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -10987,7 +10987,7 @@ class C1PDiskController extends Component {
/**
* @this {C1PDiskController}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "listDisk")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -12057,7 +12057,7 @@ class C1PDebugger extends Component {
/**
* @this {C1PDebugger}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
@@ -13903,7 +13903,7 @@ class C1PComputer extends Component {
/**
* @this {C1PComputer}
- * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
+ * @param {string} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {HTMLElement} control is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string} [sValue] optional data value
diff --git a/versions/c1pjs/1.61.0/c1p.js b/versions/c1pjs/1.61.0/c1p.js
index 6ff0c2db4f..130adf3b50 100644
--- a/versions/c1pjs/1.61.0/c1p.js
+++ b/versions/c1pjs/1.61.0/c1p.js
@@ -22,7 +22,7 @@
var f,aa="function"==typeof Object.create?Object.create:function(a){function b(){}b.prototype=a;return new b},ba;if("function"==typeof Object.setPrototypeOf)ba=Object.setPrototypeOf;else{var ca;a:{var da={Jb:!0},ea={};try{ea.__proto__=da;ca=ea.Jb;break a}catch(a){}ca=!1}ba=ca?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+" is not extensible");return a}:null}var fa=ba;
function p(a,b){a.prototype=aa(b.prototype);a.prototype.constructor=a;if(fa)fa(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.Se=b.prototype}var ha="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},ia="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this;
function ja(a,b){if(b){var c=ia;a=a.split(".");for(var d=0;da?-b:b}});ja("Number.parseInt",function(a){return a||parseInt});
-function q(a,b,c){b?9=b?4:4294967295>=b?8:9);c=c?"0x":"";var d=void 0===d?0:d;var e="";isNaN(a)?a=null:null!=a&&(0>a&&-1a&&(a+=Math.pow(16,b)),a>=Math.pow(16,b)&&(b=Math.ceil(Math.log(a)/Math.log(16))));for(var g=d||-1;0=h?48:55;e=String.fromCharCode(h)+e;a=Math.trunc(a/16)}g--}return(void 0===c?"":c)+e}function t(a){return q(a,2,!0)}function u(a){return q(a,4,!0)}
+function q(a,b,c){b?9=b?4:4294967295>=b?8:9);c=c?"0x":"";var d=void 0===d?0:d;var e="";isNaN(a)||"number"!=typeof a?a=null:(0>a&&-1a&&(a+=Math.pow(16,b)),a>=Math.pow(16,b)&&(b=Math.ceil(Math.log(a)/Math.log(16))));for(var g=d||-1;0=h?48:55;e=String.fromCharCode(h)+e;a=Math.trunc(a/16)}g--}return(void 0===c?"":c)+e}function t(a){return q(a,2,!0)}function u(a){return q(a,4,!0)}
function ka(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("\x26");0"']/g,function(a){return na[a]})}var na={"\x26":"\x26amp;","\x3c":"\x26lt;","\x3e":"\x26gt;",'"':"\x26quot;","'":"\x26#039;"},oa=Date.now||function(){return+new Date};
function w(a,b){var c=null,d=!0;c=void 0===c?"text":c;d=void 0===d?!1:d;var e=0,g=null;if("object"==typeof resources&&(g=resources[a]))b&&b(a,g,e);else if(d&&"function"==typeof resources)resources(a,function(c,d){b&&b(a,c,d)});else{a=a.replace(/^\/(pcjs-disks|private-disks)\//,"https://jeffpar.github.io/$1/");var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP"),l=!1,k="string"===typeof h.responseType,m=function(){if(4!==h.readyState)return null;try{g=
l?h.response:h.responseText}catch(r){}if(null==g||200!=h.status&&(h.status||!g.length||"file:"!=(window?window.location.protocol:"file:")))e=h.status||-1;b&&b(a,g,e);return[g,e]};d&&(h.onreadystatechange=m);if(c&&"object"==typeof c){k="";for(var n in c)c.hasOwnProperty(n)&&(k&&(k+="\x26"),k+=n+"\x3d"+encodeURIComponent(c[n]));k=k.replace(/%20/g,"+");h.open("POST",a,d);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,d),"arraybuffer"==c&&(k?(l=!0,
diff --git a/versions/c1pjs/1.61.0/c1p.js.map b/versions/c1pjs/1.61.0/c1p.js.map
index 5cbf342883..004f8d1d9e 100644
--- a/versions/c1pjs/1.61.0/c1p.js.map
+++ b/versions/c1pjs/1.61.0/c1p.js.map
@@ -1 +1 @@
-{"version":3,"file":"c1p.js","lineCount":202,"mappings":"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","sources":["versions/c1pjs/1.61.0/c1p-uncompiled.js"," [synthetic:util/objectcreate] "," [synthetic:es6/util/setprototypeof] "," [synthetic:es6/util/inherits] "," [synthetic:util/defineproperty] "," [synthetic:util/global] "," [synthetic:util/polyfill] "," [synthetic:es6/math/trunc] "," [synthetic:es6/number/parseint] "],"names":["$jscomp.objectCreate","$jscomp.setPrototypeOf","$jscomp.defineProperty","$jscomp.global","$jscomp.polyfill","toHex","n","cch","fPrefix","v","Math","abs","nGrouping","s","isNaN","pow","radix","ceil","log","g","d","String","fromCharCode","trunc","sPrefix","toHexByte","b","Str.toHex","toHexWord","w","getBaseName","sFileName","sBaseName","i","lastIndexOf","substr","indexOf","getExtension","sExtension","toLowerCase","escapeHTML","sHTML","replace","m","Str.HTMLEscapeMap","Usr.getTime","Date","now","getResource","sURL","done","type","fAsync","nErrorCode","resource","resources","request","window","XMLHttpRequest","ActiveXObject","fArrayBuffer","fXHR2","responseType","callback","readyState","response","responseText","err","status","length","location","protocol","onreadystatechange","sPost","p","hasOwnProperty","encodeURIComponent","open","setRequestHeader","send","overrideMimeType","isUserAgent","userAgent","navigator","match","isMobile","sDevice","sMobile","Web.getURLParm","Web.isUserAgent","fInvert","getURLParm","sParm","Web.parmsURL","sParms","aParms","search","pl","exec","decodeURIComponent","onCountRepeat","fnRepeat","fnComplete","fnTimeout","doCountRepeat","setTimeout","onClickRepeat","e","fn","doClickRepeat","msRepeat","ms","timer","fIgnoreMouseEvents","onmousedown","e.onmousedown","msDelay","ontouchstart","e.ontouchstart","onmouseup","onmouseout","e.onmouseout","clearTimeout","ontouchend","ontouchcancel","e.ontouchcancel","onPageEvent","sFunc","fnPrev","onInit","Web.aPageEventHandlers","push","doPageEvent","afn","Web.fPageEventsEnabled","Component.alertUser","message","enablePageEvents","fEnable","Web.fPageLoaded","Web.sendPageEvent","Web.fPageShowed","sendPageEvent","sEvent","Web.doPageEvent","Web.onPageEvent","onPageLoad","onPageShow","onPageUnload","constructor","Component","parms","bitsMessage","id","name","bindings","idMachine","flags","ready","busy","busyCancel","initDone","powered","unloading","error","fnReady","clearError","dbg","cpu","cmp","Component.components.push","component","alertUser","sMessage","alert","appendControl","control","sText","value","scrollTop","scrollHeight","bindComponentControls","element","aeControls","Component.getElementsByClass","parentNode","iControl","aeChildNodes","childNodes","iNode","nodeType","sClass","getAttribute","aClasses","split","iClass","Component.getComponentParms","undefined","setBinding","getComponentByID","idRelated","Component.components.length","Component.components","getComponentByType","sType","componentPrev","getComponentParms","eval","getElementsByClass","sObjClass","getElementsByClassName","j","ae","aeAll","getElementsByTagName","re","RegExp","test","className","processCommands","fSuccess","aCommands","Component.commands","aTokens","splice","sCommand","fnCallReady","Component.asyncCommands.indexOf","processNextCommand","Component.processCommands","fnCommand","Component.globalCommands","Component.getComponentByType","Component.componentCommands","exports","call","Component.prototype","?.prototype","toString","sHTMLType","sBinding","onclick","clearControl","notice","this.notice","println","print","printControl","Component.appendControl","printlnControl","Component.PRINT.PROGRESS","slice","fPrintOnly","computer","console","setError","isReady","setReady","isBusy","fCancel","setBusy","fBusy","messageEnabled","bitsEnabled","PROGRESS","Component.machines","Component.asyncCommands","scriptAlert","scriptSleep","fnCallback","sDelay","scriptSelect","sValue","aBindings","options","textContent","selectedIndex","Array","prototype","Array.prototype.indexOf","obj","start","isArray","Array.isArray","arg","Object","Function","bind","Function.prototype.bind","fnBound","fToBind","apply","fnNOP","args","concat","arguments","TypeError","C1PPanel","parmsPanel","$jscomp.inherits","kbd","setPower","fOn","C1PPanel.init","init","fReady","aePanels","document","APPCLASS","iPanel","ePanel","panel","Component.getComponentByID","Component.bindComponentControls","Web.onInit","C1PCPU","parmsCPU","clearRegs","running","fAutoStart","SPEED_SLOW","SPEED_FAST","SPEED_MAX","speed","nVideoUpdatesPerSecond","nStatusUpdatesPerSecond","mhzFast","aSpeeds","aSpeedDescs","aReadNotify","aWriteNotify","addrReadLower","addrReadUpper","addrWriteLower","addrWriteUpper","OP_JSR","OP_SIM","SIMOP_MSG","aOpcodeFuncs","opBRK","opORAindx","opSim","opUndefined","opORAzp","opASLzp","opPHP","opORAimm","opASLacc","opORAabs","opASLabs","opBPL","opORAindy","opORAzpx","opASLzpx","opCLC","opORAabsy","opORAabsx","opASLabsx","opJSRabs","opANDindx","opBITzp","opANDzp","opROLzp","opPLP","opANDimm","opROLacc","opBITabs","opANDabs","opROLabs","opBMI","opANDindy","opANDzpx","opROLzpx","opSEC","opANDabsy","opANDabsx","opROLabsx","opRTI","opEORindx","opEORzp","opLSRzp","opPHA","opEORimm","opLSRacc","opJMPimm16","opEORabs","opLSRabs","opBVC","opEORindy","opEORzpx","opLSRzpx","opCLI","opEORabsy","opEORabsx","opLSRabsx","opRTS","opADCindx","opADCzp","opRORzp","opPLA","opADCimm","opRORacc","opJMPabs16","opADCabs","opRORabs","opBVS","opADCindy","opADCzpx","opRORzpx","opSEI","opADCabsy","opADCabsx","opRORabsx","opSTAindx","opSTYzp","opSTAzp","opSTXzp","opDEY","opTXA","opSTYabs","opSTAabs","opSTXabs","opBCC","opSTAindy","opSTYzpx","opSTAzpx","opSTXzpy","opTYA","opSTAabsy","opTXS","opSTAabsx","opLDYimm","opLDAindx","opLDXimm","opLDYzp","opLDAzp","opLDXzp","opTAY","opLDAimm","opTAX","opLDYabs","opLDAabs","opLDXabs","opBCS","opLDAindy","opLDYzpx","opLDAzpx","opLDXzpy","opCLV","opLDAabsy","opTSX","opLDYabsx","opLDAabsx","opLDXabsy","opCPYimm","opCMPindx","opCPYzp","opCMPzp","opDECzp","opINY","opCMPimm","opDEX","opCPYabs","opCMPabs","opDECabs","opBNE","opCMPindy","opCMPzpx","opDECzpx","opCLD","opCMPabsy","opCMPabsx","opDECabsx","opCPXimm","opSBCindx","opCPXzp","opSBCzp","opINCzp","opINX","opSBCimm","opNOP","opCPXabs","opSBCabs","opINCabs","opBEQ","opSBCindy","opSBCzpx","opINCzpx","opSED","opSBCabsy","opSBCabsx","opINCabsx","aOpcodeCycles","C1PCPU.prototype","reset","fPowerOn","halt","regPC","getWord","abMem","VECTOR_RESET","run","fBound","setSpeed","setBuffer","abMemory","end","offMem","cbMem","offLimit","video","displayVideo","updateScreen","setFocus","update","addReadNotify","findNotify","checkReadNotify","addrRead","addrFrom","addWriteNotify","checkWriteNotify","addrWrite","aNotify","fOnClick","innerHTML","nRunCycles","msRunStart","calcCycles","displayReg","sReg","vReg","len","toUpperCase","displayStatus","regA","regX","regY","regP","getRegP","BIT_PC","BIT_PZ","BIT_PI","BIT_PD","BIT_PB","BIT_PV","BIT_PN","regS","mhz","toFixed","fRecalc","nMostUpdatesPerSecond","nYieldsPerSecond","vMultiplier","msPerYield","round","nCyclesPerBurst","floor","nCyclesPerSecond","nCyclesPerYield","nCyclesPerVideoUpdate","nCyclesPerStatusUpdate","nCyclesNextYield","nCyclesNextVideoUpdate","nCyclesNextStatusUpdate","nRecalcCycles","calcRemainingTime","msCurrent","msYield","nCyclesThisRun","msRemainsThisRun","msStartThisRun","msElapsed","calcSpeed","calcStartTime","step","nCycles","nBurstCycles","nStepCycles","stack","stop","nMinCycles","fCompleted","regEA","regEAWrite","aExecBreak","aReadBreak","aWriteBreak","bOpCode","fDebugCheck","fBreak","checkBreakpoint","addr","cIns","aaOpcodeFreqs","aStepHistory","iStepHistory","Str.toHexWord","yieldCPU","getCycles","getByte","regRC","regRZ","regRV","regRU","regRN","setBCD","opADCindxBCD","opADCzpBCD","opADCimmBCD","opADCabsBCD","opADCindyBCD","opADCzpxBCD","opADCabsyBCD","opADCabsxBCD","opSBCindxBCD","opSBCzpBCD","opSBCimmBCD","opSBCabsBCD","opSBCindyBCD","opSBCzpxBCD","opSBCabsyBCD","opSBCabsxBCD","clearBCD","addBCD","reg","mem","carry","r","subBCD","notcarry","bSimOp","SIMOP_HLT","Str.toHexByte","aeCPUs","iCPU","eCPU","C1PROM","parmsROM","abImage","cbROM","sImage","sFileURL","sFileExt","Str.getExtension","FORMAT","host","SITEHOST","rom","Web.getResource","sResponse","convertImage","offROM","setByte","copyImage","messageIO","MESSAGE_PORT","offset","sImageName","sImageData","charAt","ab","asData","sData","parseInt","cbImage","aeROM","iROM","eROM","C1PRAM","parmsRAM","aeRAM","iRAM","eRAM","ram","C1PKeyboard","parmsKbd","nDefaultModel","KEYCODE_DELETE","KEYCODE_LF","KEYCODE_CR","KEYCODE_ESC","CHARCODE_DELETE","CHARCODE_LF","CHARCODE_CR","CHARCODE_ESC","CHARCODE_CTRL","CHARCODE_BREAK","CHARCODE_CTRLC","CHARCODE_CTRLO","BIT_SHIFTLOCK","aButtonCodeMap","aCharCodeMap","CHARCODE_LSHIFT","CHARCODE_RSHIFT","CHARCODE_SHIFTLOCK","C1PKeyboard.prototype","setModel","bitsShift","bKbdRows","abKbdCols","aKbdStates","aKeyTimers","prevKeyDown","prevCharDown","bWriteLast","abKbdColsLast","nCyclesSinceLastEvent","nWritesSinceLastEvent","sInjectBuffer","onkeydown","event","keyEvent","onkeypress","fPass","charCode","which","keyCode","BIT_COMMAND","keyPressSimulate","MESSAGE_KBD","onkeyup","sButton","offKbd","cbKbd","offKbdLimit","nModel","bInvert","fMobile","iOS","calcReleaseDelay","fRepeat","msReleaseRepeat","msReleaseDelay","autoClear","notCharCode","keyEventSimulate","SIMCODE_AUTOCLEAR","injectKeys","sKeyCodes","injectKeysFromBuffer","msInjectDelay","ch","charCodeAt","fDown","fAutoClear","BIT_LSHIFT","PSEUDO_CHARCODE","BIT_RSHIFT","BIT_CTRL","KEYCODE_COMMAND","KEYCODE_TAB","SIMCODE_KEYEVENT","fSimulated","SIMCODE_KEYPRESS","SIMCODE_KEYRELEASE","SIMCODE_KEYTIMEOUT","simCode","bShift","bCode","iRow","iCol","BITS_SIMULATE","fPropagate","updateMemory","C1PKeyboard_prototype$setByte","nCycleDelta","nCyclesThreshold","shift","aeKbd","iKbd","eKbd","C1PVideo","parmsVideo","canvas","context","imgChars","nDefaultCols","nDefaultRows","cxScreen","cyScreen","cxChar","cyChar","setDimensions","canvasScreen","contextScreen","asWebPrefixes","fSmoothing","sSmoothing","C1PVideo.prototype","offVideo","offVideoLimit","random","initScreen","cbVideo","addrVideoPort","nCols","nRows","iRowTop","nRowsVisible","cbScreen","setDrawingDimensions","cxCharDst","cyCharDst","focus","addrGuard","tripGuard","width","height","MESSAGE_VIDEO","nCyclesHigh","C1PVideo_prototype$setByte","aBounds","addrLower","addrUpper","abScreen","row","writeByte","xChar","drawImage","aeVideo","iVideo","eVideo","eCanvas","createElement","getContext","setAttribute","style","backgroundColor","clientWidth","onresize","eParent","eChild","cx","cy","appendChild","imgCharSet","Image","eContext","onload","src","C1PSerialPort","parmsSerial","fDemo","C1PSerialPort.prototype","fHard","autoLoad","C1PSerialPort.AUTOLOAD_6502","bInput","iInput","sInput","nMachine","getMachineNum","aDigits","fConvertLF","C1PSerialPort.AUTOLOAD_NONE","serial","C1PSerialPort.AUTOLOAD_BASIC","control.onclick","loadFile","Web.isMobile","onchange","controlInput.onchange","fieldset","children","submit","disabled","files","onsubmit","controlInput.onsubmit","file","currentTarget","reader","FileReader","reader.onload","result","readAsText","removeChild","offPort","cbPort","offPortLimit","sFileData","nResponse","sSuffix","data","advanceInput","C1PSerialPort_prototype$setByte","MESSAGE_SERIAL","C1PSerialPort.STATUS_DATA","C1PSerialPort.STATUS_NONE","aeSerial","iSerial","eSerial","C1PDiskController","parmsDC","C1PDiskController.prototype","resetRegs","iDriveSelect","aDrives","resetDrive","iDrive","iType","DRIVETYPE_5INCH","nTracks","MAXTRACKS_5INCH","fProtected","nIndexPulse","iTrackSelect","iTrackOffset","aTracks","regDDA","bits","PDA_SD2","read","controller","regCRA","CR_PD_SEL","writePort","PORT_DDA","regPDA","bPDA","setSelectedDrive","regPDB","drive","stopDriveData","advanceDriveData","PORT_PDA","PORT_CRA","regDDB","regCRB","PORT_DDB","bPDB","PDB_ST","PDB_STI","MESSAGE_DISK","PDA_IHD","PORT_PDB","PORT_CRB","regCTRL","CTRL_CDIV","regSTAT","bSTAT","STAT_RDRF","PORT_STAT","regDATA","PORT_DATA","regUnknown","sFilePath","Str.getBaseName","loadDisk","addrController","sDiskName","sDiskData","aHeads","iTrack","iTrackNum","track","sectors","Error","trackData","pushSig","pushBCD","pushBin","iSector","sector","sectorData","a","o","k","cb","getReg","port","fWrite","PORT_CTRL","sName","C1PDiskController_prototype$setByte","aBitIDs","bTest","bChanged","PDB_SD1","aeDC","iDC","eDC","C1PDebugger","parmsDbg","nextAddr","prevCmd","fAssemble","addrAssembleNext","clearBreakpoints","MESSAGE_NONE","aMessageCategories","aOpCodes","aOpSimCodes","setOpModes","aaOperations","OP_BRK","OP_ORA","MODE_INDX","MODE_ZP","OP_ASL","OP_PHP","MODE_IMM","MODE_ACC","MODE_ABS","OP_BPL","MODE_DISP","MODE_INDY","MODE_ZPX","OP_CLC","MODE_ABSY","MODE_ABSX","MODE_IMM16","OP_AND","OP_BIT","OP_ROL","OP_PLP","OP_BMI","OP_SEC","OP_RTI","OP_EOR","OP_LSR","OP_PHA","OP_JMP","OP_BVC","OP_CLI","OP_RTS","OP_ADC","OP_ROR","OP_PLA","MODE_ABS16","OP_BVS","OP_SEI","OP_STA","OP_STY","OP_STX","OP_DEY","OP_TXA","OP_BCC","MODE_ZPY","OP_TYA","OP_TXS","OP_LDY","OP_LDA","OP_LDX","OP_TAY","OP_TAX","OP_BCS","OP_CLV","OP_TSX","OP_CPY","OP_CMP","OP_DEC","OP_INY","OP_DEX","OP_BNE","OP_CLD","OP_CPX","OP_SBC","OP_INC","OP_INX","OP_NOP","OP_BEQ","OP_SED","C1PDebugger.prototype","eDebug","C1PDebugger.input","Web.onClickRepeat","fClassic","sRegEx","aOpModes","iMode","sMode","regexOpModes","aImm16Codes","isCPUOK","fStep","fStepOver","doUnassemble","doRegisters","msStart","msTotal","clearTempBreakpoint","addSignedByte","addExecBreakpoint","findBreakpoint","findExecBreakpoint","fRemove","aBreak","fMatch","setTempBreakpoint","addrTempBP","aBreakpoints","getInstruction","nIns","sLine","aOpDesc","abOperand","OP_DB","sOperand","bOpMode","pop","nextIns","getUserAddr","sAddr","nBase","doFreqs","cData","aaSortedOpcodeFreqs","sort","q","bOpcode","cFreq","sAddrEnd","addrEnd","sIns","asArgs","fIns","getRegs","doTrace","sCount","c","Web.onCountRepeat","input","sCmd","aOpBytes","sCode","iCode","aModeMatch","cModes","asHex","nHex","cBreaks","aAddrs","cLines","sLen","line","sChars","sBytes","addrLine","sOption","sCategory","iHistory","aHistory","nextHistory","nInsHistory","aeDbg","iDbg","eDbg","C1PComputer","parmsComputer","modules","power","C1PComputer.power","aeComputers","iComputer","eComputer","addrStart","iAddr","addrInfo","controlPrint","aComponents","iComponent","cAsyncMachines","loadXML","sXMLFile","fResolve","display","doneLoadXML","sURLName","sXML","parseXML","buildXML","sError","pathname","xmlDoc","async","parseFromString","DOMParser","resolveXML","matchRef","reRef","sRefFile","doneReadXML","sXMLRef","sRefAttrs","aXMLRefTag","sXMLNewTag","matchAttr","reAttr","embedMachine","sXSLFile","displayMessage","eWarning","aeWarning","eMachine","Str.escapeHTML","displayError","Web.enablePageEvents","getElementById","css","head","styleSheet","cssText","createTextNode","processXML","xml","transformXML","sXSL","xsl","sFragment","outerHTML","implementation","createDocument","xsltProcessor","XSLTProcessor","eFragment","replaceChild","embedC1P","commandMachine","fSingle","sComponent","sToken","chQuote"],"sourcesContent":["\"use strict\";\n\n/**\n * @copyright https://www.pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2018\n */\n\n/**\n * @define {string}\n */\nvar APPVERSION = \"\"; // this @define is overridden by the Closure Compiler with the version in machines.json\n\nvar XMLVERSION = null; // this is set in non-COMPILED builds by embedMachine() if a version number was found in the machine XML\n\nvar COPYRIGHT = \"Copyright © 2012-2018 Jeff Parsons \";\n\nvar LICENSE = \"License: GPL version 3 or later \";\n\nvar CSSCLASS = \"pcjs\";\n\n/**\n * @define {string}\n */\nvar SITEHOST = \"localhost:8088\";// this @define is overridden by the Closure Compiler with \"www.pcjs.org\"\n\n/**\n * @define {boolean}\n */\nvar COMPILED = false; // this @define is overridden by the Closure Compiler (to true)\n\n/**\n * @define {boolean}\n */\nvar DEBUG = true; // this @define is overridden by the Closure Compiler (to false) to remove DEBUG-only code\n\n/**\n * @define {boolean}\n */\nvar MAXDEBUG = false; // this @define is overridden by the Closure Compiler (to false) to remove MAXDEBUG-only code\n\n/**\n * @define {boolean}\n */\nvar PRIVATE = false; // this @define is overridden by the Closure Compiler (to false) to enable PRIVATE code\n\n/*\n * RS-232 DB-25 Pin Definitions, mapped to bits 1-25 in a 32-bit status value.\n *\n * SerialPorts in PCjs machines are considered DTE (Data Terminal Equipment), which means they should be \"virtually\"\n * connected to each other via a null-modem cable, which assumes the following cross-wiring:\n *\n * G 1 <-> 1 G (Ground)\n * TD 2 <-> 3 RD (Received Data)\n * RD 3 <-> 2 TD (Transmitted Data)\n * RTS 4 <-> 5 CTS (Clear To Send)\n * CTS 5 <-> 4 RTS (Request To Send)\n * DSR 6+8 <-> 20 DTR (Data Terminal Ready)\n * SG 7 <-> 7 SG (Signal Ground)\n * DTR 20 <-> 6+8 DSR (Data Set Ready + Carrier Detect)\n * RI 22 <-> 22 RI (Ring Indicator)\n *\n * TODO: Move these definitions to a more appropriate shared file at some point.\n */\nvar RS232 = {\n RTS: {\n PIN: 4,\n MASK: 0x00000010\n },\n CTS: {\n PIN: 5,\n MASK: 0x00000020\n },\n DSR: {\n PIN: 6,\n MASK: 0x00000040\n },\n CD: {\n PIN: 8,\n MASK: 0x00000100\n },\n DTR: {\n PIN: 20,\n MASK: 0x00100000\n },\n RI: {\n PIN: 22,\n MASK: 0x00400000\n }\n};\n\n/*\n * NODE should be true if we're running under NodeJS (eg, command-line), false if not (eg, web browser)\n */\nvar NODE = false;\n\n\n/**\n * @copyright https://www.pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2018\n */\n\n/*\n * Our \"DiskDump API\", such as it was, used to look like:\n *\n * http://jsmachines.net/bin/convdisk.php?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img\n *\n * To make it (a bit) more \"REST-like\", the above request now looks like:\n *\n * http://www.pcjs.org/api/v1/dump?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img\n *\n * Similarly, our \"FileDump API\" used to look like:\n *\n * http://jsmachines.net/bin/convrom.php?rom=/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.rom&format=json\n *\n * and that request now looks like:\n *\n * http://www.pcjs.org/api/v1/dump?file=/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.rom&format=json\n *\n * I don't think it makes sense to avoid \"query\" parameters, because blending the path of a disk image with the\n * the rest of the URL would be (a) confusing, and (b) more work to parse.\n */\nvar DumpAPI = {\n ENDPOINT: \"/api/v1/dump\",\n QUERY: {\n DIR: \"dir\", // value is path of a directory (DiskDump only)\n DISK: \"disk\", // value is path of a disk image (DiskDump only)\n FILE: \"file\", // value is path of a ROM image file (FileDump only)\n IMG: \"img\", // alias for DISK\n PATH: \"path\", // value is path of a one or more files (DiskDump only)\n FORMAT: \"format\", // value is one of FORMAT values below\n COMMENTS: \"comments\", // value is either \"true\" or \"false\"\n DECIMAL: \"decimal\", // value is either \"true\" to force all numbers to decimal, \"false\" or undefined otherwise\n MBHD: \"mbhd\", // value is hard drive size in Mb (formerly \"mbsize\") (DiskDump only) (DEPRECATED)\n SIZE: \"size\" // value is target disk size in Kb (supersedes \"mbhd\") (DiskDump only)\n },\n FORMAT: {\n JSON: \"json\", // default\n JSON_GZ: \"gz\", // gzip is currently used ONLY for compressed JSON\n DATA: \"data\", // same as \"json\", but built without JSON.stringify() (DiskDump only)\n HEX: \"hex\", // deprecated\n OCTAL: \"octal\", // displays data as octal words\n BYTES: \"bytes\", // displays data as hex bytes; normally used only when comments are enabled\n WORDS: \"words\", // displays data as hex words; normally used only when comments are enabled\n LONGS: \"longs\", // displays data as dwords\n IMG: \"img\", // returns the raw disk data (ie, using a Buffer object) (DiskDump only)\n ROM: \"rom\" // returns the raw file data (ie, using a Buffer object) (FileDump only)\n }\n};\n\n/*\n * Because we use an overloaded API endpoint (ie, one that's shared with the FileDump module), we must\n * also provide a list of commands which, when combined with the endpoint, define a unique request.\n */\nDumpAPI.asDiskCommands = [DumpAPI.QUERY.DIR, DumpAPI.QUERY.DISK, DumpAPI.QUERY.PATH];\nDumpAPI.asFileCommands = [DumpAPI.QUERY.FILE];\n\n\n\n/**\n * @copyright https://www.pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2018\n */\n\nvar ReportAPI = {\n ENDPOINT: \"/api/v1/report\",\n QUERY: {\n APP: \"app\",\n VER: \"ver\",\n URL: \"url\",\n USER: \"user\",\n TYPE: \"type\",\n DATA: \"data\"\n },\n TYPE: {\n BUG: \"bug\"\n },\n RES: {\n OK: \"Thank you\"\n }\n};\n\n\n\n/**\n * @copyright https://www.pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2018\n */\n\nclass Str {\n /**\n * isValidInt(s, base)\n *\n * The built-in parseInt() function has the annoying feature of returning a partial value (ie,\n * up to the point where it encounters an invalid character); eg, parseInt(\"foo\", 16) returns 0xf.\n *\n * So it's best to use our own Str.parseInt() function, which will in turn use this function to\n * validate the entire string.\n *\n * @param {string} s is the string representation of some number\n * @param {number} [base] is the radix to use (default is 10); only 2, 8, 10 and 16 are supported\n * @return {boolean} true if valid, false if invalid (or the specified base isn't supported)\n */\n static isValidInt(s, base)\n {\n if (!base || base == 10) return s.match(/^-?[0-9]+$/) !== null;\n if (base == 16) return s.match(/^-?[0-9a-f]+$/i) !== null;\n if (base == 8) return s.match(/^-?[0-7]+$/) !== null;\n if (base == 2) return s.match(/^-?[01]+$/) !== null;\n return false;\n }\n\n /**\n * parseInt(s, base)\n *\n * This is a wrapper around the built-in parseInt() function. Our wrapper recognizes certain prefixes\n * ('$' or \"0x\" for hex, '#' or \"0o\" for octal) and suffixes ('.' for decimal, 'h' for hex, 'y' for\n * binary), and then calls isValidInt() to ensure we don't convert strings that contain partial values;\n * see isValidInt() for details.\n *\n * The use of multiple prefix/suffix combinations is undefined (although for the record, we process\n * prefixes first). We do NOT support the \"0b\" prefix to indicate binary UNLESS one or more commas are\n * also present (because \"0b\" is also a valid hex sequence), and we do NOT support a single leading zero\n * to indicate octal (because such a number could also be decimal or hex). Any number of commas are\n * allowed; we remove them all before calling the built-in parseInt().\n *\n * More recently, we've added support for \"^D\", \"^O\", and \"^B\" prefixes to accommodate the base overrides\n * that the PDP-10's MACRO-10 assembly language supports (decimal, octal, and binary, respectively).\n * If this support turns out to adversely affect other debuggers, then it will have to be \"conditionalized\".\n * Similarly, we've added support for \"K\", \"M\", and \"G\" MACRO-10-style suffixes that add 3, 6, or 9 zeros\n * to the value to be parsed, respectively.\n *\n * @param {string} s is the string representation of some number\n * @param {number} [base] is the radix to use (default is 10); can be overridden by prefixes/suffixes\n * @return {number|undefined} corresponding value, or undefined if invalid\n */\n static parseInt(s, base)\n {\n var value;\n\n if (s) {\n if (!base) base = 10;\n\n var ch, chPrefix, chSuffix;\n var fCommas = (s.indexOf(',') > 0);\n if (fCommas) s = s.replace(/,/g, '');\n\n ch = chPrefix = s.charAt(0);\n if (chPrefix == '#') {\n base = 8;\n chPrefix = '';\n }\n else if (chPrefix == '$') {\n base = 16;\n chPrefix = '';\n }\n if (ch != chPrefix) {\n s = s.substr(1);\n }\n else {\n ch = chPrefix = s.substr(0, 2);\n if (chPrefix == '0b' && fCommas || chPrefix == '^B') {\n base = 2;\n chPrefix = '';\n }\n else if (chPrefix == '0o' || chPrefix == '^O') {\n base = 8;\n chPrefix = '';\n }\n else if (chPrefix == '^D') {\n base = 10;\n chPrefix = '';\n }\n else if (chPrefix == '0x') {\n base = 16;\n chPrefix = '';\n }\n if (ch != chPrefix) s = s.substr(2);\n }\n ch = chSuffix = s.slice(-1);\n if (chSuffix == 'Y' || chSuffix == 'y') {\n base = 2;\n chSuffix = '';\n }\n else if (chSuffix == '.') {\n base = 10;\n chSuffix = '';\n }\n else if (chSuffix == 'H' || chSuffix == 'h') {\n base = 16;\n chSuffix = '';\n }\n else if (chSuffix == 'K') {\n chSuffix = '000';\n }\n else if (chSuffix == 'M') {\n chSuffix = '000000';\n }\n else if (chSuffix == 'G') {\n chSuffix = '000000000';\n }\n if (ch != chSuffix) s = s.slice(0, -1) + chSuffix;\n /*\n * This adds support for the MACRO-10 binary shifting (Bn) suffix, which must be stripped from the\n * number before parsing, and then applied to the value after parsing. If n is omitted, 35 is assumed,\n * which is a net shift of zero. If n < 35, then a left shift of (35 - n) is required; if n > 35, then\n * a right shift of -(35 - n) is required.\n */\n var v, shift = 0;\n if (base <= 10) {\n var match = s.match(/(-?[0-9]+)B([0-9]*)/);\n if (match) {\n s = match[1];\n shift = 35 - ((match[2] || 35) & 0xff);\n }\n }\n if (Str.isValidInt(s, base) && !isNaN(v = parseInt(s, base))) {\n /*\n * With the need to support larger (eg, 36-bit) integers, truncating to 32 bits is no longer helpful.\n *\n * value = v|0;\n */\n if (shift) {\n /*\n * Since binary shifting is a logical operation, and since shifting by division only works properly\n * with positive numbers, we must convert a negative value to a positive value, by computing the two's\n * complement.\n */\n if (v < 0) v += Math.pow(2, 36);\n if (shift > 0) {\n v *= Math.pow(2, shift);\n } else {\n v = Math.trunc(v / Math.pow(2, -shift));\n }\n }\n value = v;\n }\n }\n return value;\n }\n\n /**\n * toBase(n, radix, cch, sPrefix, nGrouping)\n *\n * Displays the given number as an unsigned integer using the specified radix and number of digits.\n *\n * @param {number|null|undefined} n\n * @param {number} radix (ie, the base)\n * @param {number} cch (the desired number of digits)\n * @param {string} [sPrefix] (default is none)\n * @param {number} [nGrouping]\n * @return {string}\n */\n static toBase(n, radix, cch, sPrefix = \"\", nGrouping = 0)\n {\n /*\n * An initial \"falsey\" check for null takes care of both null and undefined;\n * we can't rely entirely on isNaN(), because isNaN(null) returns false, oddly enough.\n *\n * Alternatively, we could mask and shift n regardless of whether it's null/undefined/NaN,\n * since JavaScript coerces such operands to zero, but I think there's \"value\" in seeing those\n * values displayed differently.\n */\n var s = \"\";\n if (isNaN(n)) {\n n = null;\n } else if (n != null) {\n /*\n * Callers that produced an input by dividing by a power of two rather than shifting (in order\n * to access more than 32 bits) may produce a fractional result, which ordinarily we would simply\n * ignore, but if the integer portion is zero and the sign is negative, we should probably treat\n * this value as a sign-extension.\n */\n if (n < 0 && n > -1) n = -1;\n /*\n * Negative values should be two's complemented according to the number of digits; for example,\n * 12 octal digits implies an upper limit 8^12.\n */\n if (n < 0) {\n n += Math.pow(radix, cch);\n }\n if (n >= Math.pow(radix, cch)) {\n cch = Math.ceil(Math.log(n) / Math.log(radix));\n }\n }\n var g = nGrouping || -1;\n while (cch-- > 0) {\n if (!g) {\n s = ',' + s;\n g = nGrouping;\n }\n if (n == null) {\n s = '?' + s;\n } else {\n var d = n % radix;\n d += (d >= 0 && d <= 9? 0x30 : 0x41 - 10);\n s = String.fromCharCode(d) + s;\n n = Math.trunc(n / radix);\n }\n g--;\n }\n return sPrefix + s;\n }\n\n /**\n * toBin(n, cch, nGrouping)\n *\n * Converts an integer to binary, with the specified number of digits (up to a maximum of 36).\n *\n * @param {number|null|undefined} n (supports integers up to 36 bits now)\n * @param {number} [cch] is the desired number of binary digits (0 or undefined for default of either 8, 18, or 36)\n * @param {number} [nGrouping]\n * @return {string} the binary representation of n\n */\n static toBin(n, cch, nGrouping)\n {\n if (!cch) {\n // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.LN2) || 1;\n var v = Math.abs(n);\n if (v <= 0b11111111) {\n cch = 8;\n } else if (v <= 0b111111111111111111) {\n cch = 18;\n } else {\n cch = 36;\n }\n } else if (cch > 36) cch = 36;\n return Str.toBase(n, 2, cch, \"\", nGrouping);\n }\n\n /**\n * toBinBytes(n, cb, fPrefix)\n *\n * Converts an integer to binary, with the specified number of bytes (up to the default of 4).\n *\n * @param {number|null|undefined} n (interpreted as a 32-bit value)\n * @param {number} [cb] is the desired number of binary bytes (4 is both the default and the maximum)\n * @param {boolean} [fPrefix]\n * @return {string} the binary representation of n\n */\n static toBinBytes(n, cb, fPrefix)\n {\n var s = \"\";\n if (!cb || cb > 4) cb = 4;\n for (var i = 0; i < cb; i++) {\n if (s) s = ',' + s;\n s = Str.toBin(n & 0xff, 8) + s;\n n >>= 8;\n }\n return (fPrefix? \"0b\" : \"\") + s;\n }\n\n /**\n * toOct(n, cch, fPrefix)\n *\n * Converts an integer to octal, with the specified number of digits (default of 6; max of 12)\n *\n * You might be tempted to use the built-in n.toString(8) instead, but it doesn't zero-pad and it\n * doesn't properly convert negative values. Moreover, if n is undefined, n.toString() will throw\n * an exception, whereas this function will return '?' characters.\n *\n * @param {number|null|undefined} n (supports integers up to 36 bits now)\n * @param {number} [cch] is the desired number of octal digits (0 or undefined for default of either 6, 8, or 12)\n * @param {boolean} [fPrefix]\n * @return {string} the octal representation of n\n */\n static toOct(n, cch, fPrefix)\n {\n if (!cch) {\n // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.log(8)) || 1;\n var v = Math.abs(n);\n if (v <= 0o777777) {\n cch = 6;\n } else if (v <= 0o77777777) {\n cch = 8;\n } else {\n cch = 12;\n }\n } else if (cch > 12) cch = 12;\n return Str.toBase(n, 8, cch, fPrefix? \"0o\" : \"\");\n }\n\n /**\n * toDec(n, cch)\n *\n * Converts an integer to decimal, with the specified number of digits (default of 5; max of 11)\n *\n * You might be tempted to use the built-in n.toString(10) instead, but it doesn't zero-pad and it\n * doesn't properly convert negative values. Moreover, if n is undefined, n.toString() will throw\n * an exception, whereas this function will return '?' characters.\n *\n * @param {number|null|undefined} n (supports integers up to 36 bits now)\n * @param {number} [cch] is the desired number of decimal digits (0 or undefined for default of either 5 or 11)\n * @return {string} the decimal representation of n\n */\n static toDec(n, cch)\n {\n if (!cch) {\n // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.LN10) || 1;\n var v = Math.abs(n);\n if (v <= 99999) {\n cch = 5;\n } else {\n cch = 11;\n }\n } else if (cch > 11) cch = 11;\n return Str.toBase(n, 10, cch);\n }\n\n /**\n * toHex(n, cch, fPrefix)\n *\n * Converts an integer to hex, with the specified number of digits (default of 4 or 8, max of 9).\n *\n * You might be tempted to use the built-in n.toString(16) instead, but it doesn't zero-pad and it\n * doesn't properly convert negative values; for example, if n is -2147483647, then n.toString(16)\n * will return \"-7fffffff\" instead of \"80000001\". Moreover, if n is undefined, n.toString() will\n * throw an exception, whereas this function will return '?' characters.\n *\n * NOTE: The following work-around (adapted from code found on StackOverflow) would be another solution,\n * taking care of negative values, zero-padding, and upper-casing, but not null/undefined/NaN values:\n *\n * s = (n < 0? n + 0x100000000 : n).toString(16);\n * s = \"00000000\".substr(0, 8 - s.length) + s;\n * s = s.substr(0, cch).toUpperCase();\n *\n * @param {number|null|undefined} n (supports integers up to 36 bits now)\n * @param {number} [cch] is the desired number of hex digits (0 or undefined for default of either 4, 8, or 9)\n * @param {boolean} [fPrefix]\n * @return {string} the hex representation of n\n */\n static toHex(n, cch, fPrefix)\n {\n if (!cch) {\n // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.log(16)) || 1;\n var v = Math.abs(n);\n if (v <= 0xffff) {\n cch = 4;\n } else if (v <= 0xffffffff) {\n cch = 8;\n } else {\n cch = 9;\n }\n } else if (cch > 9) cch = 9;\n return Str.toBase(n, 16, cch, fPrefix? \"0x\" : \"\");\n }\n\n /**\n * toHexByte(b)\n *\n * Alias for Str.toHex(b, 2, true)\n *\n * @param {number|null|undefined} b is a byte value\n * @return {string} the hex representation of b\n */\n static toHexByte(b)\n {\n return Str.toHex(b, 2, true);\n }\n\n /**\n * toHexWord(w)\n *\n * Alias for Str.toHex(w, 4, true)\n *\n * @param {number|null|undefined} w is a word (16-bit) value\n * @return {string} the hex representation of w\n */\n static toHexWord(w)\n {\n return Str.toHex(w, 4, true);\n }\n\n /**\n * toHexLong(l)\n *\n * Alias for Str.toHex(l, 8, true)\n *\n * @param {number|null|undefined} l is a dword (32-bit) value\n * @return {string} the hex representation of w\n */\n static toHexLong(l)\n {\n return Str.toHex(l, 8, true);\n }\n\n /**\n * getBaseName(sFileName, fStripExt)\n *\n * This is a poor-man's version of Node's path.basename(), which Node-only components should use instead.\n *\n * Note that if fStripExt is true, this strips ANY extension, whereas path.basename() strips the extension only\n * if it matches the second parameter (eg, path.basename(\"/foo/bar/baz/asdf/quux.html\", \".html\") returns \"quux\").\n *\n * @param {string} sFileName\n * @param {boolean} [fStripExt]\n * @return {string}\n */\n static getBaseName(sFileName, fStripExt)\n {\n var sBaseName = sFileName;\n\n var i = sFileName.lastIndexOf('/');\n if (i >= 0) sBaseName = sFileName.substr(i + 1);\n\n /*\n * This next bit is a kludge to clean up names that are part of a URL that includes unsightly query parameters.\n */\n i = sBaseName.indexOf('&');\n if (i > 0) sBaseName = sBaseName.substr(0, i);\n\n if (fStripExt) {\n i = sBaseName.lastIndexOf(\".\");\n if (i > 0) {\n sBaseName = sBaseName.substring(0, i);\n }\n }\n return sBaseName;\n }\n\n /**\n * getExtension(sFileName)\n *\n * This is a poor-man's version of Node's path.extname(), which Node-only components should use instead.\n *\n * Note that we EXCLUDE the period from the returned extension, whereas path.extname() includes it.\n *\n * @param {string} sFileName\n * @return {string} the filename's extension (in lower-case and EXCLUDING the \".\"), or an empty string\n */\n static getExtension(sFileName)\n {\n var sExtension = \"\";\n var i = sFileName.lastIndexOf(\".\");\n if (i >= 0) {\n sExtension = sFileName.substr(i + 1).toLowerCase();\n }\n return sExtension;\n }\n\n /**\n * endsWith(s, sSuffix)\n *\n * @param {string} s\n * @param {string} sSuffix\n * @return {boolean} true if s ends with sSuffix, false if not\n */\n static endsWith(s, sSuffix)\n {\n return s.indexOf(sSuffix, s.length - sSuffix.length) !== -1;\n }\n\n /**\n * escapeHTML(sHTML)\n *\n * @param {string} sHTML\n * @return {string} with HTML entities \"escaped\", similar to PHP's htmlspecialchars()\n */\n static escapeHTML(sHTML)\n {\n return sHTML.replace(/[&<>\"']/g, function(m)\n {\n return Str.HTMLEscapeMap[m];\n });\n }\n\n /**\n * replace(sSearch, sReplace, s)\n *\n * The JavaScript replace() function ALWAYS interprets \"$\" specially in replacement strings, even when\n * the search string is NOT a RegExp; specifically:\n *\n * $$ Inserts a \"$\"\n * $& Inserts the matched substring\n * $` Inserts the portion of the string that precedes the matched substring\n * $' Inserts the portion of the string that follows the matched substring\n * $n Where n is a positive integer less than 100, inserts the nth parenthesized sub-match string,\n * provided the first argument was a RegExp object\n *\n * So, if a replacement string containing dollar signs passes through a series of replace() calls, untold\n * problems could result. Hence, this function, which simply uses the replacement string as-is.\n *\n * Similar to the JavaScript replace() method (when sSearch is a string), this replaces only ONE occurrence\n * (ie, the FIRST occurrence); it might be nice to add options to replace the LAST occurrence and/or ALL\n * occurrences, but we'll revisit that later.\n *\n * @param {string} sSearch\n * @param {string} sReplace\n * @param {string} s\n * @return {string}\n */\n static replace(sSearch, sReplace, s)\n {\n var i = s.indexOf(sSearch);\n if (i >= 0) {\n s = s.substr(0, i) + sReplace + s.substr(i + sSearch.length);\n }\n return s;\n }\n\n /**\n * replaceAll(sSearch, sReplace, s)\n *\n * @param {string} sSearch\n * @param {string} sReplace\n * @param {string} s\n * @return {string}\n */\n static replaceAll(sSearch, sReplace, s)\n {\n var a = {};\n a[sSearch] = sReplace;\n return Str.replaceArray(a, s);\n }\n\n /**\n * replaceArray(a, s)\n *\n * @param {Object} a\n * @param {string} s\n * @return {string}\n */\n static replaceArray(a, s)\n {\n var sMatch = \"\";\n for (var k in a) {\n /*\n * As noted in:\n *\n * http://www.regexguru.com/2008/04/escape-characters-only-when-necessary/\n *\n * inside character classes, only backslash, caret, hyphen and the closing bracket need to be\n * escaped. And in fact, if you ensure that the closing bracket is first, the caret is not first,\n * and the hyphen is last, you can avoid escaping those as well.\n */\n k = k.replace(/([\\\\[\\]*{}().+?|$])/g, \"\\\\$1\");\n sMatch += (sMatch? '|' : '') + k;\n }\n return s.replace(new RegExp('(' + sMatch + ')', \"g\"), function(m)\n {\n return a[m];\n });\n }\n\n /**\n * pad(s, cch, fPadLeft)\n *\n * NOTE: the maximum amount of padding currently supported is 40 spaces.\n *\n * @param {string} s is a string\n * @param {number} cch is desired length\n * @param {boolean} [fPadLeft] (default is padding on the right)\n * @return {string} the original string (s) with spaces padding it to the specified length\n */\n static pad(s, cch, fPadLeft)\n {\n var sPadding = \" \";\n return fPadLeft? (sPadding + s).slice(-cch) : (s + sPadding).slice(0, cch);\n }\n\n /**\n * sprintf(format, ...args)\n *\n * Copied from the CCjs project (https://github.com/jeffpar/ccjs/blob/master/lib/stdio.js) and extended.\n *\n * Far from complete, let alone sprintf-compatible, but it's adequate for the handful of sprintf-style format\n * specifiers that I use.\n *\n * @param {string} format\n * @param {...} args\n * @return {string}\n */\n static sprintf(format, ...args)\n {\n let buffer = \"\";\n let aParts = format.split(/%([-+ 0#]?)([0-9]*)(\\.?)([0-9]*)([hlL]?)([A-Za-z%])/);\n\n let iArg = 0, iPart;\n for (iPart = 0; iPart < aParts.length - 7; iPart += 7) {\n\n buffer += aParts[iPart];\n\n let arg = args[iArg++];\n let flags = aParts[iPart+1];\n let minimum = +aParts[iPart+2] || 0;\n let precision = +aParts[iPart+4] || 0;\n let conversion = aParts[iPart+6];\n let ach = null, s;\n\n switch(conversion) {\n case 'd':\n /*\n * We could use \"arg |= 0\", but there may be some value to supporting integers > 32 bits.\n * \n * Also, unlike the 'X' and 'x' hexadecimal cases, there's no need to explicitly check for a string\n * arguments, because the call to trunc() automatically coerces any string value to a (decimal) number.\n */\n arg = Math.trunc(arg);\n /* falls through */\n\n case 'f':\n s = Math.trunc(arg) + \"\";\n if (precision) {\n minimum -= (precision + 1);\n }\n if (s.length < minimum) {\n if (flags == '0') {\n if (arg < 0) minimum--;\n s = (\"0000000000\" + Math.abs(arg)).slice(-minimum);\n if (arg < 0) s = '-' + s;\n } else {\n s = (\" \" + s).slice(-minimum);\n }\n }\n if (precision) {\n arg = Math.round((arg - Math.trunc(arg)) * Math.pow(10, precision));\n s += '.' + (\"0000000000\" + Math.abs(arg)).slice(-precision);\n }\n buffer += s;\n break;\n\n case 'c':\n arg = String.fromCharCode(arg);\n /* falls through */\n\n case 's':\n if (typeof arg == \"string\") {\n while (arg.length < minimum) {\n if (flags == '-') {\n arg += ' ';\n } else {\n arg = ' ' + arg;\n }\n }\n }\n buffer += arg;\n break;\n\n case 'X':\n ach = Str.HexUpperCase;\n /* falls through */\n\n case 'x':\n if (!ach) ach = Str.HexLowerCase;\n s = \"\";\n if (typeof arg == \"string\") {\n /*\n * Since we're advised to ALWAYS pass a radix to parseInt(), we must detect explicitly\n * hex values ourselves, because using a radix of 10 with any \"0x...\" value always returns 0.\n * \n * And if the value CAN be interpreted as decimal, then we MUST interpret it as decimal, because\n * we have sprintf() calls in /modules/lib/testmon.js that depend on this code to perform decimal\n * to hex conversion. We're allowed to make our own rules here, since passing numbers in string\n * form isn't part of the sprintf \"spec\". \n */\n arg = Number.parseInt(arg, arg.match(/(^0x|[a-f])/i)? 16 : 10);\n } \n do {\n s = ach[arg & 0xf] + s;\n arg >>>= 4;\n } while (--minimum > 0 || arg);\n buffer += s;\n break;\n\n default:\n /*\n * The supported ANSI C set of conversions: \"dioxXucsfeEgGpn%\"\n */\n buffer += \"(unrecognized printf conversion %\" + conversion + \")\";\n break;\n }\n }\n\n buffer += aParts[iPart];\n return buffer;\n }\n\n /**\n * stripLeadingZeros(s, fPad)\n *\n * @param {string} s\n * @param {boolean} [fPad]\n * @return {string}\n */\n static stripLeadingZeros(s, fPad)\n {\n var cch = s.length;\n s = s.replace(/^0+([0-9A-F]+)$/i, \"$1\");\n if (fPad) s = Str.pad(s, cch, true);\n return s;\n }\n\n /**\n * trim(s)\n *\n * @param {string} s\n * @return {string}\n */\n static trim(s)\n {\n if (String.prototype.trim) {\n return s.trim();\n }\n return s.replace(/^\\s+|\\s+$/g, \"\");\n }\n\n /**\n * toASCIICode(b)\n *\n * @param {number} b\n * @return {string}\n */\n static toASCIICode(b)\n {\n var s;\n if (b != Str.ASCII.CR && b != Str.ASCII.LF) {\n s = Str.ASCIICodeMap[b];\n }\n if (s) {\n s = '<' + s + '>';\n } else {\n s = String.fromCharCode(b);\n }\n return s;\n }\n}\n\n/*\n * Map special characters to their HTML escape sequences.\n */\nStr.HTMLEscapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\n/*\n * Map \"unprintable\" ASCII codes to mnemonics, to more clearly see what's being printed.\n */\nStr.ASCIICodeMap = {\n 0x00: \"NUL\",\n 0x01: \"SOH\", // (CTRL_A) Start of Heading\n 0x02: \"STX\", // (CTRL_B) Start of Text\n 0x03: \"ETX\", // (CTRL_C) End of Text\n 0x04: \"EOT\", // (CTRL_D) End of Transmission\n 0x05: \"ENQ\", // (CTRL_E) Enquiry\n 0x06: \"ACK\", // (CTRL_F) Acknowledge\n 0x07: \"BEL\", // (CTRL_G) Bell\n 0x08: \"BS\", // (CTRL_H) Backspace\n 0x09: \"TAB\", // (CTRL_I) Horizontal Tab (aka HT)\n 0x0A: \"LF\", // (CTRL_J) Line Feed (New Line)\n 0x0B: \"VT\", // (CTRL_K) Vertical Tab\n 0x0C: \"FF\", // (CTRL_L) Form Feed (New Page)\n 0x0D: \"CR\", // (CTRL_M) Carriage Return\n 0x0E: \"SO\", // (CTRL_N) Shift Out\n 0x0F: \"SI\", // (CTRL_O) Shift In\n 0x10: \"DLE\", // (CTRL_P) Data Link Escape\n 0x11: \"XON\", // (CTRL_Q) Device Control 1 (aka DC1)\n 0x12: \"DC2\", // (CTRL_R) Device Control 2\n 0x13: \"XOFF\", // (CTRL_S) Device Control 3 (aka DC3)\n 0x14: \"DC4\", // (CTRL_T) Device Control 4\n 0x15: \"NAK\", // (CTRL_U) Negative Acknowledge\n 0x16: \"SYN\", // (CTRL_V) Synchronous Idle\n 0x17: \"ETB\", // (CTRL_W) End of Transmission Block\n 0x18: \"CAN\", // (CTRL_X) Cancel\n 0x19: \"EM\", // (CTRL_Y) End of Medium\n 0x1A: \"SUB\", // (CTRL_Z) Substitute\n 0x1B: \"ESC\", // Escape\n 0x1C: \"FS\", // File Separator\n 0x1D: \"GS\", // Group Separator\n 0x1E: \"RS\", // Record Separator\n 0x1F: \"US\", // Unit Separator\n 0x7F: \"DEL\"\n};\n\n/*\n * Refer to: https://en.wikipedia.org/wiki/Code_page_437\n */\nStr.CP437ToUnicode = [\n '\\u0000', '\\u263A', '\\u263B', '\\u2665', '\\u2666', '\\u2663', '\\u2660', '\\u2022',\n '\\u25D8', '\\u25CB', '\\u25D9', '\\u2642', '\\u2640', '\\u266A', '\\u266B', '\\u263C',\n '\\u25BA', '\\u25C4', '\\u2195', '\\u203C', '\\u00B6', '\\u00A7', '\\u25AC', '\\u21A8',\n '\\u2191', '\\u2193', '\\u2192', '\\u2190', '\\u221F', '\\u2194', '\\u25B2', '\\u25BC',\n '\\u0020', '\\u0021', '\\u0022', '\\u0023', '\\u0024', '\\u0025', '\\u0026', '\\u0027',\n '\\u0028', '\\u0029', '\\u002A', '\\u002B', '\\u002C', '\\u002D', '\\u002E', '\\u002F',\n '\\u0030', '\\u0031', '\\u0032', '\\u0033', '\\u0034', '\\u0035', '\\u0036', '\\u0037',\n '\\u0038', '\\u0039', '\\u003A', '\\u003B', '\\u003C', '\\u003D', '\\u003E', '\\u003F',\n '\\u0040', '\\u0041', '\\u0042', '\\u0043', '\\u0044', '\\u0045', '\\u0046', '\\u0047',\n '\\u0048', '\\u0049', '\\u004A', '\\u004B', '\\u004C', '\\u004D', '\\u004E', '\\u004F',\n '\\u0050', '\\u0051', '\\u0052', '\\u0053', '\\u0054', '\\u0055', '\\u0056', '\\u0057',\n '\\u0058', '\\u0059', '\\u005A', '\\u005B', '\\u005C', '\\u005D', '\\u005E', '\\u005F',\n '\\u0060', '\\u0061', '\\u0062', '\\u0063', '\\u0064', '\\u0065', '\\u0066', '\\u0067',\n '\\u0068', '\\u0069', '\\u006A', '\\u006B', '\\u006C', '\\u006D', '\\u006E', '\\u006F',\n '\\u0070', '\\u0071', '\\u0072', '\\u0073', '\\u0074', '\\u0075', '\\u0076', '\\u0077',\n '\\u0078', '\\u0079', '\\u007A', '\\u007B', '\\u007C', '\\u007D', '\\u007E', '\\u2302',\n '\\u00C7', '\\u00FC', '\\u00E9', '\\u00E2', '\\u00E4', '\\u00E0', '\\u00E5', '\\u00E7',\n '\\u00EA', '\\u00EB', '\\u00E8', '\\u00EF', '\\u00EE', '\\u00EC', '\\u00C4', '\\u00C5',\n '\\u00C9', '\\u00E6', '\\u00C6', '\\u00F4', '\\u00F6', '\\u00F2', '\\u00FB', '\\u00F9',\n '\\u00FF', '\\u00D6', '\\u00DC', '\\u00A2', '\\u00A3', '\\u00A5', '\\u20A7', '\\u0192',\n '\\u00E1', '\\u00ED', '\\u00F3', '\\u00FA', '\\u00F1', '\\u00D1', '\\u00AA', '\\u00BA',\n '\\u00BF', '\\u2310', '\\u00AC', '\\u00BD', '\\u00BC', '\\u00A1', '\\u00AB', '\\u00BB',\n '\\u2591', '\\u2592', '\\u2593', '\\u2502', '\\u2524', '\\u2561', '\\u2562', '\\u2556',\n '\\u2555', '\\u2563', '\\u2551', '\\u2557', '\\u255D', '\\u255C', '\\u255B', '\\u2510',\n '\\u2514', '\\u2534', '\\u252C', '\\u251C', '\\u2500', '\\u253C', '\\u255E', '\\u255F',\n '\\u255A', '\\u2554', '\\u2569', '\\u2566', '\\u2560', '\\u2550', '\\u256C', '\\u2567',\n '\\u2568', '\\u2564', '\\u2565', '\\u2559', '\\u2558', '\\u2552', '\\u2553', '\\u256B',\n '\\u256A', '\\u2518', '\\u250C', '\\u2588', '\\u2584', '\\u258C', '\\u2590', '\\u2580',\n '\\u03B1', '\\u00DF', '\\u0393', '\\u03C0', '\\u03A3', '\\u03C3', '\\u00B5', '\\u03C4',\n '\\u03A6', '\\u0398', '\\u03A9', '\\u03B4', '\\u221E', '\\u03C6', '\\u03B5', '\\u2229',\n '\\u2261', '\\u00B1', '\\u2265', '\\u2264', '\\u2320', '\\u2321', '\\u00F7', '\\u2248',\n '\\u00B0', '\\u2219', '\\u00B7', '\\u221A', '\\u207F', '\\u00B2', '\\u25A0', '\\u00A0'\n];\n\n/*\n * TODO: Future home of a complete ASCII table.\n */\nStr.ASCII = {\n LF: 0x0A,\n CR: 0x0D\n};\n\nStr.TYPES = {\n NULL: 0,\n BYTE: 1,\n WORD: 2,\n DWORD: 3,\n NUMBER: 4,\n STRING: 5,\n BOOLEAN: 6,\n OBJECT: 7,\n ARRAY: 8\n};\n\nStr.HexLowerCase = \"0123456789abcdef\";\nStr.HexUpperCase = \"0123456789ABCDEF\";\n\n\n\n/**\n * @copyright https://www.pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2018\n */\n\n/**\n * @typedef {{\n * mask: number,\n * shift: number\n * }}\n */\nvar BitField;\n\n/**\n * @typedef {Object.}\n */\nvar BitFields;\n\nclass Usr {\n /**\n * binarySearch(a, v, fnCompare)\n *\n * @param {Array} a is an array\n * @param {number|string|Array|Object} v\n * @param {function((number|string|Array|Object), (number|string|Array|Object))} [fnCompare]\n * @return {number} the index of matching entry if non-negative, otherwise the index of the insertion point\n */\n static binarySearch(a, v, fnCompare)\n {\n var left = 0;\n var right = a.length;\n var found = 0;\n if (fnCompare === undefined) {\n fnCompare = function(a, b)\n {\n return a > b ? 1 : a < b ? -1 : 0;\n };\n }\n while (left < right) {\n var middle = (left + right) >> 1;\n var compareResult;\n compareResult = fnCompare(v, a[middle]);\n if (compareResult > 0) {\n left = middle + 1;\n } else {\n right = middle;\n found = !compareResult;\n }\n }\n return found ? left : ~left;\n }\n\n /**\n * binaryInsert(a, v, fnCompare)\n *\n * If element v already exists in array a, the array is unchanged (we don't allow duplicates); otherwise, the\n * element is inserted into the array at the appropriate index.\n *\n * @param {Array} a is an array\n * @param {number|string|Array|Object} v is the value to insert\n * @param {function((number|string|Array|Object), (number|string|Array|Object))} [fnCompare]\n */\n static binaryInsert(a, v, fnCompare)\n {\n var index = Usr.binarySearch(a, v, fnCompare);\n if (index < 0) {\n a.splice(-(index + 1), 0, v);\n }\n }\n\n /**\n * getTimestamp()\n *\n * @return {string} timestamp containing the current date and time (\"yyyy-mm-dd hh:mm:ss\")\n */\n static getTimestamp()\n {\n return Usr.formatDate(\"Y-m-d H:i:s\");\n }\n\n /**\n * getMonthDays(nMonth, nYear)\n *\n * Note that if we're being called on behalf of the RTC, its year is always truncated to two digits (mod 100),\n * so we have no idea what century the year 0 might refer to. When using the normal leap-year formula, 0 fails\n * the mod 100 test but passes the mod 400 test, so as far as the RTC is concerned, every century year is a leap\n * year. Since we're most likely dealing with the year 2000, that's fine, since 2000 was also a leap year.\n *\n * TODO: There IS a separate CMOS byte that's supposed to be set to CMOS_ADDR.CENTURY_DATE; it's always BCD,\n * so theoretically it will contain values like 0x19 or 0x20 (for the 20th and 21st centuries, respectively), and\n * we could add that as another parameter to this function, to improve the accuracy, but that would go beyond what\n * a real RTC actually does.\n *\n * @param {number} nMonth (1-12)\n * @param {number} nYear (normally a 4-digit year, but it may also be mod 100)\n * @return {number} the maximum (1-based) day allowed for the specified month and year\n */\n static getMonthDays(nMonth, nYear)\n {\n var nDays = Usr.aMonthDays[nMonth - 1];\n if (nDays == 28) {\n if ((nYear % 4) === 0 && ((nYear % 100) || (nYear % 400) === 0)) {\n nDays++;\n }\n }\n return nDays;\n }\n\n /**\n * formatDate(sFormat, date)\n *\n * @param {string} sFormat (eg, \"F j, Y\", \"Y-m-d H:i:s\")\n * @param {Date} [date] (default is the current time)\n * @return {string}\n *\n * Supported identifiers in sFormat include:\n *\n * a: lowercase ante meridiem and post meridiem (am or pm)\n * d: day of the month, 2 digits with leading zeros (01,02,...,31)\n * D: 3-letter day of the week (\"Sun\",\"Mon\",...,\"Sat\")\n * F: month (\"January\",\"February\",...,\"December\")\n * g: hour in 12-hour format, without leading zeros (1,2,...,12)\n * h: hour in 24-hour format, without leading zeros (0,1,...,23)\n * H: hour in 24-hour format, with leading zeros (00,01,...,23)\n * i: minutes, with leading zeros (00,01,...,59)\n * j: day of the month, without leading zeros (1,2,...,31)\n * l: day of the week (\"Sunday\",\"Monday\",...,\"Saturday\")\n * m: month, with leading zeros (01,02,...,12)\n * M: 3-letter month (\"Jan\",\"Feb\",...,\"Dec\")\n * n: month, without leading zeros (1,2,...,12)\n * s: seconds, with leading zeros (00,01,...,59)\n * y: 2-digit year (eg, 14)\n * Y: 4-digit year (eg, 2014)\n *\n * For more inspiration, see: http://php.net/manual/en/function.date.php (of which we support ONLY a subset).\n */\n static formatDate(sFormat, date)\n {\n var sDate = \"\";\n if (!date) date = new Date();\n var iHour = date.getHours();\n var iDay = date.getDate();\n var iMonth = date.getMonth() + 1;\n for (var i = 0; i < sFormat.length; i++) {\n var ch;\n switch ((ch = sFormat.charAt(i))) {\n case 'a':\n sDate += (iHour < 12 ? \"am\" : \"pm\");\n break;\n case 'd':\n sDate += ('0' + iDay).slice(-2);\n break;\n case 'D':\n sDate += Usr.asDays[date.getDay()].substr(0, 3);\n break;\n case 'F':\n sDate += Usr.asMonths[iMonth - 1];\n break;\n case 'g':\n sDate += (!iHour ? 12 : (iHour > 12 ? iHour - 12 : iHour));\n break;\n case 'h':\n sDate += iHour;\n break;\n case 'H':\n sDate += ('0' + iHour).slice(-2);\n break;\n case 'i':\n sDate += ('0' + date.getMinutes()).slice(-2);\n break;\n case 'j':\n sDate += iDay;\n break;\n case 'l':\n sDate += Usr.asDays[date.getDay()];\n break;\n case 'm':\n sDate += ('0' + iMonth).slice(-2);\n break;\n case 'M':\n sDate += Usr.asMonths[iMonth - 1].substr(0, 3);\n break;\n case 'n':\n sDate += iMonth;\n break;\n case 's':\n sDate += ('0' + date.getSeconds()).slice(-2);\n break;\n case 'y':\n sDate += (\"\" + date.getFullYear()).slice(-2);\n break;\n case 'Y':\n sDate += date.getFullYear();\n break;\n default:\n sDate += ch;\n break;\n }\n }\n return sDate;\n }\n\n /**\n * defineBitFields(bfs)\n *\n * Prepares a bit field definition for use with getBitField() and setBitField(); eg:\n *\n * var bfs = Usr.defineBitFields({num:20, count:8, btmod:1, type:3});\n *\n * The above defines a set of bit fields containing four fields: num (bits 0-19), count (bits 20-27), btmod (bit 28), and type (bits 29-31).\n *\n * Usr.setBitField(bfs.num, n, 1);\n *\n * The above set bit field \"bfs.num\" in numeric variable \"n\" to the value 1.\n *\n * @param {Object} bfs\n * @return {BitFields}\n */\n static defineBitFields(bfs)\n {\n var bit = 0;\n for (var f in bfs) {\n var width = bfs[f];\n var mask = ((1 << width) - 1) << bit;\n bfs[f] = {mask: mask, shift: bit};\n bit += width;\n }\n return bfs;\n }\n\n /**\n * initBitFields(bfs, ...)\n *\n * @param {BitFields} bfs\n * @param {...number} var_args\n * @return {number} a value containing all supplied bit fields\n */\n static initBitFields(bfs, var_args)\n {\n var v = 0, i = 1;\n for (var f in bfs) {\n if (i >= arguments.length) break;\n v = Usr.setBitField(bfs[f], v, arguments[i++]);\n }\n return v;\n }\n\n /**\n * getBitField(bf, v)\n *\n * @param {BitField} bf\n * @param {number} v is a value containing bit fields\n * @return {number} the value of the bit field in v defined by bf\n */\n static getBitField(bf, v)\n {\n return (v & bf.mask) >> bf.shift;\n }\n\n /**\n * setBitField(bf, v, n)\n *\n * @param {BitField} bf\n * @param {number} v is a value containing bit fields\n * @param {number} n is a value to store in v in the bit field defined by bf\n * @return {number} updated v\n */\n static setBitField(bf, v, n)\n {\n return (v & ~bf.mask) | ((n << bf.shift) & bf.mask);\n }\n\n /**\n * indexOf(a, t, i)\n *\n * Use this instead of Array.prototype.indexOf() if you can't be sure the browser supports it.\n *\n * @param {Array} a\n * @param {*} t\n * @param {number} [i]\n * @returns {number}\n */\n static indexOf(a, t, i)\n {\n if (Array.prototype.indexOf) {\n return a.indexOf(t, i);\n }\n i = i || 0;\n if (i < 0) i += a.length;\n if (i < 0) i = 0;\n for (var n = a.length; i < n; i++) {\n if (i in a && a[i] === t) return i;\n }\n return -1;\n }\n}\n\nUsr.asDays = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\nUsr.asMonths = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\nUsr.aMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n/**\n * getTime()\n *\n * @return {number} the current time, in milliseconds\n */\nUsr.getTime = Date.now || function() { return +new Date(); };\n\n\n\n/**\n * @copyright https://www.pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2018\n */\n\n\n/*\n * According to http://www.w3schools.com/jsref/jsref_obj_global.asp, these are the *global* properties\n * and functions of JavaScript-in-the-Browser:\n *\n * Property Description\n * ---\n * Infinity A numeric value that represents positive/negative infinity\n * NaN \"Not-a-Number\" value\n * undefined Indicates that a variable has not been assigned a value\n *\n * Function Description\n * ---\n * decodeURI() Decodes a URI\n * decodeURIComponent() Decodes a URI component\n * encodeURI() Encodes a URI\n * encodeURIComponent() Encodes a URI component\n * escape() Deprecated in version 1.5. Use encodeURI() or encodeURIComponent() instead\n * eval() Evaluates a string and executes it as if it was script code\n * isFinite() Determines whether a value is a finite, legal number\n * isNaN() Determines whether a value is an illegal number\n * Number() Converts an object's value to a number\n * parseFloat() Parses a string and returns a floating point number\n * parseInt() Parses a string and returns an integer\n * String() Converts an object's value to a string\n * unescape() Deprecated in version 1.5. Use decodeURI() or decodeURIComponent() instead\n *\n * And according to http://www.w3schools.com/jsref/obj_window.asp, these are the properties and functions\n * of the *window* object.\n *\n * Property Description\n * ---\n * closed Returns a Boolean value indicating whether a window has been closed or not\n * defaultStatus Sets or returns the default text in the statusbar of a window\n * document Returns the Document object for the window (See Document object)\n * frames Returns an array of all the frames (including iframes) in the current window\n * history Returns the History object for the window (See History object)\n * innerHeight Returns the inner height of a window's content area\n * innerWidth Returns the inner width of a window's content area\n * length Returns the number of frames (including iframes) in a window\n * location Returns the Location object for the window (See Location object)\n * name Sets or returns the name of a window\n * navigator Returns the Navigator object for the window (See Navigator object)\n * opener Returns a reference to the window that created the window\n * outerHeight Returns the outer height of a window, including toolbars/scrollbars\n * outerWidth Returns the outer width of a window, including toolbars/scrollbars\n * pageXOffset Returns the pixels the current document has been scrolled (horizontally) from the upper left corner of the window\n * pageYOffset Returns the pixels the current document has been scrolled (vertically) from the upper left corner of the window\n * parent Returns the parent window of the current window\n * screen Returns the Screen object for the window (See Screen object)\n * screenLeft Returns the x coordinate of the window relative to the screen\n * screenTop Returns the y coordinate of the window relative to the screen\n * screenX Returns the x coordinate of the window relative to the screen\n * screenY Returns the y coordinate of the window relative to the screen\n * self Returns the current window\n * status Sets or returns the text in the statusbar of a window\n * top Returns the topmost browser window\n *\n * Method Description\n * ---\n * alert() Displays an alert box with a message and an OK button\n * atob() Decodes a base-64 encoded string\n * blur() Removes focus from the current window\n * btoa() Encodes a string in base-64\n * clearInterval() Clears a timer set with setInterval()\n * clearTimeout() Clears a timer set with setTimeout()\n * close() Closes the current window\n * confirm() Displays a dialog box with a message and an OK and a Cancel button\n * createPopup() Creates a pop-up window\n * focus() Sets focus to the current window\n * moveBy() Moves a window relative to its current position\n * moveTo() Moves a window to the specified position\n * open() Opens a new browser window\n * print() Prints the content of the current window\n * prompt() Displays a dialog box that prompts the visitor for input\n * resizeBy() Resizes the window by the specified pixels\n * resizeTo() Resizes the window to the specified width and height\n * scroll() This method has been replaced by the scrollTo() method.\n * scrollBy() Scrolls the content by the specified number of pixels\n * scrollTo() Scrolls the content to the specified coordinates\n * setInterval() Calls a function or evaluates an expression at specified intervals (in milliseconds)\n * setTimeout() Calls a function or evaluates an expression after a specified number of milliseconds\n * stop() Stops the window from loading\n */\n\nclass Web {\n /**\n * log(s, type)\n *\n * For diagnostic output only. DEBUG must be true (or \"--debug\" specified via the command-line)\n * for Component.log() to display anything.\n *\n * @param {string} [s] is the message text\n * @param {string} [type] is the message type\n */\n static log(s, type)\n {\n Component.log(s, type);\n }\n\n /**\n * notice(s, fPrintOnly, id)\n *\n * @param {string} s is the message text\n * @param {boolean} [fPrintOnly]\n * @param {string} [id] is the caller's ID, if any\n */\n static notice(s, fPrintOnly, id)\n {\n Component.notice(s, fPrintOnly, id);\n }\n\n /**\n * alertUser(sMessage)\n * \n * NOTE: Legacy function for older modules (eg, DiskDump); see Component.alertUser().\n *\n * @param {string} sMessage\n */\n static alertUser(sMessage)\n {\n if (window) {\n window.alert(sMessage);\n } else {\n Web.log(sMessage);\n }\n }\n\n /**\n * getResource(sURL, type, fAsync, done, progress)\n *\n * Request the specified resource (sURL), and once the request is complete, notify done().\n *\n * If fAsync is true, a done() callback should ALWAYS be supplied; otherwise, you'll have no\n * idea when the request is complete or what the response was. done() is passed three parameters:\n *\n * done(sURL, resource, nErrorCode)\n *\n * If nErrorCode is zero, resource should contain the requested data; otherwise, an error occurred.\n *\n * If type is set to a string, that string can be used to control the response format;\n * by default, the response format is plain text, but you can specify \"arraybuffer\" to request arbitrary\n * binary data, in which case the returned resource will be a ArrayBuffer rather than a string.\n *\n * @param {string} sURL\n * @param {string|Object|null} [type] (object for POST request, otherwise type of GET request)\n * @param {boolean} [fAsync] is true for an asynchronous request; false otherwise (MUST be set for IE)\n * @param {function(string,string,number)} [done]\n * @param {function(number)} [progress]\n * @return {Array|null} Array containing [resource, nErrorCode], or null if no response available (yet)\n */\n static getResource(sURL, type = \"text\", fAsync = false, done, progress)\n {\n var nErrorCode = 0, resource = null, response = null;\n\n if (typeof resources == 'object' && (resource = resources[sURL])) {\n if (done) done(sURL, resource, nErrorCode);\n return [resource, nErrorCode];\n }\n else if (fAsync && typeof resources == 'function') {\n resources(sURL, function(resource, nErrorCode)\n {\n if (done) done(sURL, resource, nErrorCode);\n });\n return response;\n }\n\n if (!DEBUG && !NODE) {\n /*\n * TODO: Perhaps it's time for our code in netlib.js to finally add support for HTTPS; for now\n * though, it's just as well that the NODE environment assumes all resources are available locally.\n */\n sURL = sURL.replace(/^\\/(pcjs-disks|private-disks)\\//, \"https://jeffpar.github.io/$1/\");\n }\n else {\n /*\n * The larger resources we put on archive.pcjs.org should also be available locally.\n *\n * NOTE: \"http://archive.pcjs.org\" is now \"https://s3-us-west-2.amazonaws.com/archive.pcjs.org\"\n */\n sURL = sURL.replace(/^(http:\\/\\/archive\\.pcjs\\.org|https:\\/\\/s3-us-west-2\\.amazonaws\\.com\\/archive\\.pcjs\\.org)(\\/.*)\\/([^\\/]*)$/, \"$2/archive/$3\");\n sURL = sURL.replace(/^https:\\/\\/jeffpar\\.github\\.io\\/(pcjs-disks|private-disks)\\/(.*)$/, \"/$1/$2\");\n }\n\n\n var request = (window.XMLHttpRequest? new window.XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\n var fArrayBuffer = false, fXHR2 = (typeof request.responseType === 'string');\n \n var callback = function() {\n if (request.readyState !== 4) {\n if (progress) progress(1);\n return null;\n }\n /*\n * The following line was recommended for WebKit, as a work-around to prevent the handler firing multiple\n * times when debugging. Unfortunately, that's not the only XMLHttpRequest problem that occurs when\n * debugging, so I think the WebKit problem is deeper than that. When we have multiple XMLHttpRequests\n * pending, any debugging activity means most of them simply get dropped on floor, so what may actually be\n * happening are mis-notifications rather than redundant notifications.\n *\n * request.onreadystatechange = undefined;\n */\n /*\n * If the request failed due to, say, a CORS policy denial; eg:\n * \n * Failed to load http://www.allbootdisks.com/downloads/Disks/Windows_95_Boot_Disk_Download48/Diskette%20Images/Windows95a.img:\n * Redirect from 'http://www.allbootdisks.com/downloads/Disks/Windows_95_Boot_Disk_Download48/Diskette%20Images/Windows95a.img' to\n * 'http://www.allbootdisks.com/' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.\n * Origin 'http://pcjs:8088' is therefore not allowed access.\n * \n * and our request type was \"arraybuffer\", attempting to access responseText may trigger an exception; eg:\n * \n * Uncaught DOMException: Failed to read the 'responseText' property from 'XMLHttpRequest': The value is only accessible if the object's\n * 'responseType' is '' or 'text' (was 'arraybuffer').\n * \n * We could tiptoe around these potential landmines, but the safest thing to do is wrap this code with try/catch.\n */\n try {\n resource = fArrayBuffer? request.response : request.responseText;\n } catch(err) {\n if (MAXDEBUG) Web.log(\"xmlHTTPRequest(\" + sURL + \") exception: \" + err.message);\n }\n /*\n * The normal \"success\" case is a non-null resource and an HTTP status code of 200, but when loading files from the\n * local file system (ie, when using the \"file:\" protocol), we have to be a bit more flexible.\n */\n if (resource != null && (request.status == 200 || !request.status && resource.length && Web.getHostProtocol() == \"file:\")) {\n if (MAXDEBUG) Web.log(\"xmlHTTPRequest(\" + sURL + \"): returned \" + resource.length + \" bytes\");\n }\n else {\n nErrorCode = request.status || -1;\n Web.log(\"xmlHTTPRequest(\" + sURL + \"): error code \" + nErrorCode);\n }\n if (progress) progress(2);\n if (done) done(sURL, resource, nErrorCode);\n return [resource, nErrorCode];\n };\n \n if (fAsync) {\n request.onreadystatechange = callback;\n }\n\n if (progress) progress(0);\n\n if (type && typeof type == \"object\") {\n var sPost = \"\";\n for (var p in type) {\n if (!type.hasOwnProperty(p)) continue;\n if (sPost) sPost += \"&\";\n sPost += p + '=' + encodeURIComponent(type[p]);\n }\n sPost = sPost.replace(/%20/g, '+');\n if (MAXDEBUG) Web.log(\"Web.getResource(POST \" + sURL + \"): \" + sPost.length + \" bytes\");\n request.open(\"POST\", sURL, fAsync);\n request.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n request.send(sPost);\n } else {\n if (MAXDEBUG) Web.log(\"Web.getResource(GET \" + sURL + \")\");\n request.open(\"GET\", sURL, fAsync);\n if (type == \"arraybuffer\") {\n if (fXHR2) {\n fArrayBuffer = true;\n request.responseType = type;\n } else {\n request.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n }\n request.send();\n }\n\n if (!fAsync) {\n request.readyState = 4; // this may already be set for synchronous requests, but I don't want to take any chances \n response = callback();\n }\n return response;\n }\n\n /**\n * parseMemoryResource(sURL, sData)\n *\n * This converts a variety of JSON-style data streams into an Object with the following properties:\n *\n * aBytes\n * aSymbols\n * addrLoad\n * addrExec\n *\n * If the source data contains a 'bytes' array, it's passed through to 'aBytes'; alternatively, if\n * it contains a 'words' array, the values are converted from 16-bit to 8-bit and stored in 'aBytes',\n * and if it contains a 'longs' array, the values are converted from 32-bit longs into bytes and\n * stored in 'aBytes'.\n *\n * Alternatively, if the source data contains a 'data' array, we simply pass that through to the output\n * object as:\n *\n * aData\n *\n * @param {string} sURL\n * @param {string} sData\n * @return {Object|null} (resource)\n */\n static parseMemoryResource(sURL, sData)\n {\n var i;\n var resource = {\n aBytes: null,\n aSymbols: null,\n addrLoad: null,\n addrExec: null\n };\n\n if (sData.charAt(0) == \"[\" || sData.charAt(0) == \"{\") {\n try {\n var a, ib, data;\n\n if (sData.substr(0, 1) == \"<\") { // if the \"data\" begins with a \"<\"...\n /*\n * Early server configs reported an error (via the nErrorCode parameter) if a tape URL was invalid,\n * but more recent server configs now display a somewhat friendlier HTML error page. The downside,\n * however, is that the original error has been buried, and we've received \"data\" that isn't actually\n * tape data. So if the data we've received appears to be \"HTML-like\", we treat it as an error message.\n */\n throw new Error(sData);\n }\n\n /*\n * TODO: IE9 is rather unfriendly and restrictive with regard to how much data it's willing to\n * eval(). In particular, the 10Mb disk image we use for the Windows 1.01 demo config fails in\n * IE9 with an \"Out of memory\" exception. One work-around would be to chop the data into chunks\n * (perhaps one track per chunk, using regular expressions) and then manually re-assemble it.\n *\n * However, it turns out that using JSON.parse(sDiskData) instead of eval(\"(\" + sDiskData + \")\")\n * is a much easier fix. The only drawback is that we must first quote any unquoted property names\n * and remove any comments, because while eval() was cool with them, JSON.parse() is more particular;\n * the following RegExp replacements take care of those requirements.\n *\n * The use of hex values is something else that eval() was OK with, but JSON.parse() is not, and\n * while I've stopped using hex values in DumpAPI responses (at least when \"format=json\" is specified),\n * I can't guarantee they won't show up in \"legacy\" images, and there's no simple RegExp replacement\n * for transforming hex values into decimal values, so I cop out and fall back to eval() if I detect\n * any hex prefixes (\"0x\") in the sequence. Ditto for error messages, which appear like so:\n *\n * [\"unrecognized disk path: test.img\"]\n */\n if (sData.indexOf(\"0x\") < 0 && sData.indexOf(\"0o\") < 0 && sData.substr(0, 2) != '[\"') {\n data = JSON.parse(sData.replace(/([a-z]+):/gm, '\"$1\":').replace(/\\/\\/[^\\n]*/gm, \"\"));\n } else {\n data = eval(\"(\" + sData + \")\");\n }\n\n resource.addrLoad = data['load'];\n resource.addrExec = data['exec'];\n\n if (a = data['bytes']) {\n resource.aBytes = a;\n }\n else if (a = data['words']) {\n /*\n * Convert all words into bytes\n */\n resource.aBytes = new Array(a.length * 2);\n for (i = 0, ib = 0; i < a.length; i++) {\n resource.aBytes[ib++] = a[i] & 0xff;\n resource.aBytes[ib++] = (a[i] >> 8) & 0xff;\n\n }\n }\n else if (a = data['longs']) {\n /*\n * Convert all dwords (longs) into bytes\n */\n resource.aBytes = new Array(a.length * 4);\n for (i = 0, ib = 0; i < a.length; i++) {\n resource.aBytes[ib++] = a[i] & 0xff;\n resource.aBytes[ib++] = (a[i] >> 8) & 0xff;\n resource.aBytes[ib++] = (a[i] >> 16) & 0xff;\n resource.aBytes[ib++] = (a[i] >> 24) & 0xff;\n }\n }\n else if (a = data['data']) {\n resource.aData = a;\n }\n else {\n resource.aBytes = data;\n }\n\n if (resource.aBytes) {\n if (!resource.aBytes.length) {\n Component.error(\"Empty resource: \" + sURL);\n resource = null;\n }\n else if (resource.aBytes.length == 1) {\n Component.error(resource.aBytes[0]);\n resource = null;\n }\n }\n resource.aSymbols = data['symbols'];\n\n } catch (e) {\n Component.error(\"Resource data error (\" + sURL + \"): \" + e.message);\n resource = null;\n }\n }\n else {\n /*\n * Parse the data manually; we assume it's a series of hex byte-values separated by whitespace.\n */\n var ab = [];\n var sHexData = sData.replace(/\\n/gm, \" \").replace(/ +$/, \"\");\n var asHexData = sHexData.split(\" \");\n for (i = 0; i < asHexData.length; i++) {\n var n = parseInt(asHexData[i], 16);\n if (isNaN(n)) {\n Component.error(\"Resource data error (\" + sURL + \"): invalid hex byte (\" + asHexData[i] + \")\");\n break;\n }\n ab.push(n & 0xff);\n }\n if (i == asHexData.length) resource.aBytes = ab;\n }\n return resource;\n }\n\n /**\n * sendReport(sApp, sVer, sURL, sUser, sType, sReport, sHostName)\n *\n * Send a report (eg, bug report) to the server.\n *\n * @param {string} sApp (eg, \"PCjs\")\n * @param {string} sVer (eg, \"1.02\")\n * @param {string} sURL (eg, \"/devices/pc/machine/5150/mda/64kb/machine.xml\")\n * @param {string} sUser (ie, the user key, if any)\n * @param {string} sType (eg, \"bug\"); one of ReportAPI.TYPE.*\n * @param {string} sReport (eg, unparsed state data)\n * @param {string} [sHostName] (default is http://SITEHOST)\n */\n static sendReport(sApp, sVer, sURL, sUser, sType, sReport, sHostName)\n {\n var dataPost = {};\n dataPost[ReportAPI.QUERY.APP] = sApp;\n dataPost[ReportAPI.QUERY.VER] = sVer;\n dataPost[ReportAPI.QUERY.URL] = sURL;\n dataPost[ReportAPI.QUERY.USER] = sUser;\n dataPost[ReportAPI.QUERY.TYPE] = sType;\n dataPost[ReportAPI.QUERY.DATA] = sReport;\n var sReportURL = (sHostName? sHostName : \"http://\" + SITEHOST) + ReportAPI.ENDPOINT;\n Web.getResource(sReportURL, dataPost, true);\n }\n\n /**\n * getHost()\n *\n * @return {string}\n */\n static getHost()\n {\n return (\"http://\" + (window? window.location.host : SITEHOST));\n }\n\n /**\n * getHostURL()\n *\n * @return {string|null}\n */\n static getHostURL()\n {\n return (window? window.location.href : null);\n }\n\n /**\n * getHostProtocol()\n *\n * @return {string}\n */\n static getHostProtocol()\n {\n return (window? window.location.protocol : \"file:\");\n }\n\n /**\n * getUserAgent()\n *\n * @return {string}\n */\n static getUserAgent()\n {\n return (window? window.navigator.userAgent : \"\");\n }\n\n /**\n * hasLocalStorage\n *\n * true if localStorage support exists, is enabled, and works; false otherwise\n *\n * @return {boolean}\n */\n static hasLocalStorage()\n {\n if (Web.fLocalStorage == null) {\n var f = false;\n if (window) {\n try {\n window.localStorage.setItem(Web.sLocalStorageTest, Web.sLocalStorageTest);\n f = (window.localStorage.getItem(Web.sLocalStorageTest) == Web.sLocalStorageTest);\n window.localStorage.removeItem(Web.sLocalStorageTest);\n } catch (e) {\n Web.logLocalStorageError(e);\n f = false;\n }\n }\n Web.fLocalStorage = f;\n }\n return Web.fLocalStorage;\n }\n\n /**\n * logLocalStorageError(e)\n *\n * @param {Error} e is an exception\n */\n static logLocalStorageError(e)\n {\n Web.log(e.message, \"localStorage error\");\n }\n\n /**\n * getLocalStorageItem(sKey)\n *\n * Returns the requested key value, or null if the key does not exist, or undefined if localStorage is not available\n *\n * @param {string} sKey\n * @return {string|null|undefined} sValue\n */\n static getLocalStorageItem(sKey)\n {\n var sValue;\n if (window) {\n try {\n sValue = window.localStorage.getItem(sKey);\n } catch (e) {\n Web.logLocalStorageError(e);\n }\n }\n return sValue;\n }\n\n /**\n * setLocalStorageItem(sKey, sValue)\n *\n * @param {string} sKey\n * @param {string} sValue\n * @return {boolean} true if localStorage is available, false if not\n */\n static setLocalStorageItem(sKey, sValue)\n {\n try {\n window.localStorage.setItem(sKey, sValue);\n return true;\n } catch (e) {\n Web.logLocalStorageError(e);\n }\n return false;\n }\n\n /**\n * removeLocalStorageItem(sKey)\n *\n * @param {string} sKey\n */\n static removeLocalStorageItem(sKey)\n {\n try {\n window.localStorage.removeItem(sKey);\n } catch (e) {\n Web.logLocalStorageError(e);\n }\n }\n\n /**\n * getLocalStorageKeys()\n *\n * @return {Array}\n */\n static getLocalStorageKeys()\n {\n var a = [];\n try {\n for (var i = 0, c = window.localStorage.length; i < c; i++) {\n a.push(window.localStorage.key(i));\n }\n } catch (e) {\n Web.logLocalStorageError(e);\n }\n return a;\n }\n\n /**\n * reloadPage()\n */\n static reloadPage()\n {\n if (window) window.location.reload();\n }\n\n /**\n * isUserAgent(s)\n *\n * Check the browser's user-agent string for the given substring; \"iOS\" and \"MSIE\" are special values you can\n * use that will match any iOS or MSIE browser, respectively (even IE11, in the case of \"MSIE\").\n *\n * 2013-11-06: In a questionable move, MSFT changed the user-agent reported by IE11 on Windows 8.1, eliminating\n * the \"MSIE\" string (which MSDN calls a \"version token\"; see http://msdn.microsoft.com/library/ms537503.aspx);\n * they say \"public websites should rely on feature detection, rather than browser detection, in order to design\n * their sites for browsers that don't support the features used by the website.\" So, in IE11, we get a user-agent\n * that tries to fool apps into thinking the browser is more like WebKit or Gecko:\n *\n * Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko\n *\n * That's a nice idea, but in the meantime, they hosed the XSL transform code in embed.js, which contained\n * some very critical browser-specific code; turning on IE's \"Compatibility Mode\" didn't help either, because\n * that's a sledgehammer solution which restores the old user-agent string but also disables other features like\n * HTML5 canvas support. As an interim solution, I'm treating any \"MSIE\" check as a check for either \"MSIE\" or\n * \"Trident\".\n *\n * UPDATE: I've since found ways to make the code in embed.js more browser-agnostic, so for now, there's isn't\n * any code that cares about \"MSIE\", but I've left the change in place, because I wouldn't be surprised if I'll\n * need more IE-specific code in the future, perhaps for things like copy/paste functionality, or mouse capture.\n *\n * @param {string} s is a substring to search for in the user-agent; as noted above, \"iOS\" and \"MSIE\" are special values\n * @return {boolean} is true if the string was found, false if not\n */\n static isUserAgent(s)\n {\n if (window) {\n var userAgent = Web.getUserAgent();\n /*\n * Here's one case where we have to be careful with Component, because when isUserAgent() is called by\n * the init code below, component.js hasn't been loaded yet. The simple solution for now is to remove the call.\n *\n * Web.log(\"agent: \" + userAgent);\n *\n * And yes, it would be pointless to use the conditional (?) operator below, if not for the Google Closure\n * Compiler (v20130823) failing to detect the entire expression as a boolean.\n */\n return s == \"iOS\" && !!userAgent.match(/(iPod|iPhone|iPad)/) && !!userAgent.match(/AppleWebKit/) || s == \"MSIE\" && !!userAgent.match(/(MSIE|Trident)/) || (userAgent.indexOf(s) >= 0);\n }\n return false;\n }\n\n /**\n * isMobile(sDevice)\n *\n * Checks the URL for a \"mobile\" parameter, and failing that, checks the browser's user-agent string for the\n * substring \"Mobi\", as per Mozilla recommendation:\n *\n * https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent\n *\n * @param {string} [sDevice] (eg, \"iPad\" to check for iPad, or \"!iPad\" to specifically exclude it) \n * @return {boolean} is true if the browser appears to be a mobile (ie, non-desktop) web browser, false if not\n */\n static isMobile(sDevice)\n {\n var sMobile = Web.getURLParm(\"mobile\");\n if (sMobile) return sMobile == \"true\";\n if (Web.isUserAgent(\"Mobi\")) {\n if (!sDevice) return true;\n var fInvert = sDevice[0] == '!';\n if (fInvert) sDevice = sDevice.substr(1);\n return Web.isUserAgent(sDevice) != fInvert;\n }\n return false;\n }\n\n /**\n * findProperty(obj, sProp, sSuffix)\n *\n * If both sProp and sSuffix are set, then any browser-specific prefixes are inserted between sProp and sSuffix,\n * and if a match is found, it is returned without sProp.\n *\n * For example, if findProperty(document, 'on', 'fullscreenchange') discovers that 'onwebkitfullscreenchange' exists,\n * it will return 'webkitfullscreenchange', in preparation for an addEventListener() call.\n *\n * More commonly, sSuffix is not used, so whatever property is found is returned as-is.\n *\n * @param {Object|null|undefined} obj\n * @param {string} sProp\n * @param {string} [sSuffix]\n * @return {string|null}\n */\n static findProperty(obj, sProp, sSuffix)\n {\n if (obj) {\n for (var i = 0; i < Web.asBrowserPrefixes.length; i++) {\n var sName = Web.asBrowserPrefixes[i];\n if (sSuffix) {\n sName += sSuffix;\n var sEvent = sProp + sName;\n if (sEvent in obj) return sName;\n } else {\n if (!sName) {\n sName = sProp[0];\n } else {\n sName += sProp[0].toUpperCase();\n }\n sName += sProp.substr(1);\n if (sName in obj) return sName;\n }\n }\n }\n return null;\n }\n\n /**\n * getURLParm(sParm)\n *\n * First looks for sParm exactly as specified, then looks for the lower-case version.\n *\n * @param {string} sParm\n * @return {string|undefined}\n */\n static getURLParm(sParm)\n {\n if (!Web.parmsURL) {\n Web.parmsURL = Web.parseURLParms();\n }\n return Web.parmsURL[sParm] || Web.parmsURL[sParm.toLowerCase()];\n }\n\n /**\n * parseURLParms(sParms)\n *\n * @param {string} [sParms] containing the parameter portion of a URL (ie, after the '?')\n * @return {Object} containing properties for each parameter found\n */\n static parseURLParms(sParms)\n {\n var aParms = {};\n if (window) { // an alternative to \"if (typeof module === 'undefined')\" if require(\"defines\") was used\n if (!sParms) {\n /*\n * Note that window.location.href returns the entire URL, whereas window.location.search\n * returns only the parameters, if any (starting with the '?', which we skip over with a substr() call).\n */\n sParms = window.location.search.substr(1);\n }\n var match;\n var pl = /\\+/g; // RegExp for replacing addition symbol with a space\n var search = /([^&=]+)=?([^&]*)/g;\n var decode = function(s)\n {\n return decodeURIComponent(s.replace(pl, \" \"));\n };\n\n while ((match = search.exec(sParms))) {\n aParms[decode(match[1])] = decode(match[2]);\n }\n }\n return aParms;\n }\n\n /**\n * downloadFile(sData, sType, fBase64, sFileName)\n *\n * @param {string} sData\n * @param {string} sType\n * @param {boolean} [fBase64]\n * @param {string} [sFileName]\n */\n static downloadFile(sData, sType, fBase64, sFileName)\n {\n var link = null, sAlert;\n var sURI = \"data:application/\" + sType + (fBase64? \";base64\" : \"\") + \",\";\n\n if (!Web.isUserAgent(\"Firefox\")) {\n sURI += (fBase64? sData : encodeURI(sData));\n } else {\n sURI += (fBase64? sData : encodeURIComponent(sData));\n }\n if (sFileName) {\n link = document.createElement('a');\n if (typeof link.download != 'string') link = null;\n }\n if (link) {\n link.href = sURI;\n link.download = sFileName;\n document.body.appendChild(link); // Firefox allegedly requires the link to be in the body\n link.click();\n document.body.removeChild(link);\n sAlert = 'Check your Downloads folder for ' + sFileName + '.';\n if (Web.isUserAgent(\"Chrome\")) {\n sAlert += '\\n\\nIn Chrome, after clicking OK, you may ALSO have to select the \"Window\" menu, choose \"Downloads\", and then locate this download and select \"Keep\".';\n sAlert += '\\n\\nThis is part of Chrome\\'s \"Security By Jumping Through Extra Hoops\" technology, which is much easier for Google to implement than actually checking for something malicious.';\n sAlert += '\\n\\nAnd for the record, there is nothing malicious on the PCjs website.';\n }\n } else {\n window.open(sURI);\n sAlert = 'Check your browser for a new window/tab containing the requested data' + (sFileName? (' (' + sFileName + ')') : '') + '.';\n }\n return sAlert;\n }\n\n /**\n * onCountRepeat(n, fnRepeat, fnComplete, msDelay)\n *\n * Call fnRepeat() n times with an msDelay millisecond delay between calls,\n * then call fnComplete() when n has been exhausted OR fnRepeat() returns false.\n *\n * @param {number} n\n * @param {function()} fnRepeat\n * @param {function()} fnComplete\n * @param {number} [msDelay]\n */\n static onCountRepeat(n, fnRepeat, fnComplete, msDelay)\n {\n var fnTimeout = function doCountRepeat()\n {\n n -= 1;\n if (n >= 0) {\n if (!fnRepeat()) n = 0;\n }\n if (n > 0) {\n setTimeout(fnTimeout, msDelay || 0);\n return;\n }\n fnComplete();\n };\n fnTimeout();\n }\n\n /**\n * onClickRepeat(e, msDelay, msRepeat, fn)\n *\n * Repeatedly call fn() with an initial msDelay, and an msRepeat delay thereafter,\n * as long as HTML control Object e has an active \"down\" event and fn() returns true.\n *\n * @param {Object} e\n * @param {number} msDelay\n * @param {number} msRepeat\n * @param {function(boolean)} fn is passed false on the first call, true on all repeated calls\n */\n static onClickRepeat(e, msDelay, msRepeat, fn)\n {\n var ms = 0, timer = null, fIgnoreMouseEvents = false;\n\n var fnRepeat = function doClickRepeat()\n {\n if (fn(ms === msRepeat)) {\n timer = setTimeout(fnRepeat, ms);\n ms = msRepeat;\n }\n };\n e.onmousedown = function()\n {\n // Web.log(\"onMouseDown()\");\n if (!fIgnoreMouseEvents) {\n if (!timer) {\n ms = msDelay;\n fnRepeat();\n }\n }\n };\n e.ontouchstart = function()\n {\n // Web.log(\"onTouchStart()\");\n if (!timer) {\n ms = msDelay;\n fnRepeat();\n }\n };\n e.onmouseup = e.onmouseout = function()\n {\n // Web.log(\"onMouseUp()/onMouseOut()\");\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n e.ontouchend = e.ontouchcancel = function()\n {\n // Web.log(\"onTouchEnd()/onTouchCancel()\");\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n /*\n * Devices that generate ontouch* events ALSO generate onmouse* events,\n * and generally do so immediately after all the touch events are complete,\n * so unless we want double the action, we need to ignore mouse events.\n */\n fIgnoreMouseEvents = true;\n };\n }\n\n /**\n * onPageEvent(sName, fn)\n *\n * For 'onload', 'onunload', and 'onpageshow' events, most callers should NOT use this function, but\n * instead use Web.onInit(), Web.onShow(), and Web.onExit(), respectively.\n *\n * The only components that should still use onPageEvent() are THIS component (see the bottom of this file)\n * and components that need to capture other events (eg, the 'onresize' event in the Video component).\n *\n * This function creates a chain of callbacks, allowing multiple JavaScript modules to define handlers\n * for the same event, which wouldn't be possible if everyone modified window['onload'], window['onunload'],\n * etc, themselves. However, that's less of a concern now, because assuming everyone else is now using\n * onInit(), onExit(), etc, then there really IS only one component setting the window callback: this one.\n *\n * NOTE: It's risky to refer to obscure event handlers with \"dot\" names, because the Closure Compiler may\n * erroneously replace them (eg, window.onpageshow is a good example).\n *\n * @param {string} sFunc\n * @param {function()} fn\n */\n static onPageEvent(sFunc, fn)\n {\n if (window) {\n var fnPrev = window[sFunc];\n if (typeof fnPrev !== 'function') {\n window[sFunc] = fn;\n } else {\n /*\n * TODO: Determine whether there's any value in receiving/sending the Event object that the\n * browser provides when it generates the original event.\n */\n window[sFunc] = function onWindowEvent()\n {\n if (fnPrev) fnPrev();\n fn();\n };\n }\n }\n };\n\n /**\n * onInit(fn)\n *\n * Use this instead of setting window.onload. Allows multiple JavaScript modules to define their own 'onload' event handler.\n *\n * @param {function()} fn\n */\n static onInit(fn)\n {\n Web.aPageEventHandlers['init'].push(fn);\n };\n\n /**\n * onShow(fn)\n *\n * @param {function()} fn\n *\n * Use this instead of setting window.onpageshow. Allows multiple JavaScript modules to define their own 'onpageshow' event handler.\n */\n static onShow(fn)\n {\n Web.aPageEventHandlers['show'].push(fn);\n };\n\n /**\n * onExit(fn)\n *\n * @param {function()} fn\n *\n * Use this instead of setting window.onunload. Allows multiple JavaScript modules to define their own 'onunload' event handler.\n */\n static onExit(fn)\n {\n Web.aPageEventHandlers['exit'].push(fn);\n };\n\n /**\n * doPageEvent(afn)\n *\n * @param {Array.} afn\n */\n static doPageEvent(afn)\n {\n if (Web.fPageEventsEnabled) {\n try {\n for (var i = 0; i < afn.length; i++) {\n afn[i]();\n }\n } catch (e) {\n Web.notice(\"An unexpected error occurred: \" + e.message + \"\\n\\nIf it happens again, please send this information to support@pcjs.org. Thanks.\");\n }\n }\n };\n\n /**\n * enablePageEvents(fEnable)\n *\n * @param {boolean} fEnable is true to enable page events, false to disable (they're enabled by default)\n */\n static enablePageEvents(fEnable)\n {\n if (!Web.fPageEventsEnabled && fEnable) {\n Web.fPageEventsEnabled = true;\n if (Web.fPageLoaded) Web.sendPageEvent('init');\n if (Web.fPageShowed) Web.sendPageEvent('show');\n return;\n }\n Web.fPageEventsEnabled = fEnable;\n }\n\n /**\n * sendPageEvent(sEvent)\n *\n * This allows us to manually trigger page events.\n *\n * @param {string} sEvent (one of 'init', 'show' or 'exit')\n */\n static sendPageEvent(sEvent)\n {\n if (Web.aPageEventHandlers[sEvent]) {\n Web.doPageEvent(Web.aPageEventHandlers[sEvent]);\n }\n }\n}\n\nWeb.parmsURL = null; // initialized on first call to parseURLParms()\n\nWeb.aPageEventHandlers = {\n 'init': [], // list of window 'onload' handlers\n 'show': [], // list of window 'onpageshow' handlers\n 'exit': [] // list of window 'onunload' handlers (although we prefer to use 'onbeforeunload' if possible)\n};\n\nWeb.asBrowserPrefixes = ['', 'moz', 'ms', 'webkit'];\n\nWeb.fPageLoaded = false; // set once the page's first 'onload' event has occurred\nWeb.fPageShowed = false; // set once the page's first 'onpageshow' event has occurred\nWeb.fPageEventsEnabled = true; // default is true, set to false (or true) by enablePageEvents()\n\n/**\n * fLocalStorage\n *\n * true if localStorage support exists, is enabled, and works; \"falsey\" otherwise\n *\n * @type {boolean|null}\n */\nWeb.fLocalStorage = null;\n\n/**\n * TODO: Is there any way to get the Closure Compiler to stop inlining this string? This isn't cutting it.\n *\n * @const {string}\n */\nWeb.sLocalStorageTest = \"PCjs.localStorage\";\n\nWeb.onPageEvent('onload', function onPageLoad() {\n Web.fPageLoaded = true;\n Web.doPageEvent(Web.aPageEventHandlers['init']);\n});\n\nWeb.onPageEvent('onpageshow', function onPageShow() {\n Web.fPageShowed = true;\n Web.doPageEvent(Web.aPageEventHandlers['show']);\n});\n\nWeb.onPageEvent(Web.isUserAgent(\"iOS\")? 'onpagehide' : (Web.isUserAgent(\"Opera\")? 'onunload' : 'onbeforeunload'), function onPageUnload() {\n Web.doPageEvent(Web.aPageEventHandlers['exit']);\n});\n\n\n\n/**\n * @copyright https://www.pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2018\n */\n\n/*\n * All PCjs components now use JSDoc types, primarily so that Google's Closure Compiler will compile\n * everything with zero warnings when ADVANCED_OPTIMIZATIONS are enabled. For more information about\n * the JSDoc types supported by the Closure Compiler:\n *\n * https://developers.google.com/closure/compiler/docs/js-for-compiler#types\n *\n * I also attempted to validate this code with JSLint, but it complained too much; eg, it didn't like\n * \"while (true)\", a tried and \"true\" programming convention for decades, and it wanted me to replace\n * all \"++\" and \"--\" operators with \"+= 1\" and \"-= 1\", use \"(s || '')\" instead of \"(s? s : '')\", etc.\n *\n * I prefer sticking with traditional C-style idioms, in part because they are more portable. That\n * does NOT mean I'm trying to write \"portable JavaScript,\" but some of this code was ported from C code\n * I'd written long ago, so portability is good, and I'm not going to throw that away if there's no need.\n *\n * UPDATE: I've since switched from JSLint to JSHint, which seems to have more reasonable defaults.\n * And for new code, I have adopted some popular JavaScript idioms, like \"(s || '')\", although the need\n * for those kinds of expressions will be reduced as I also start adopting some ES6 features, like\n * default parameters.\n */\n\n\n\n/**\n * Since the Closure Compiler treats ES6 classes as @struct rather than @dict by default,\n * it deters us from defining named properties on our components; eg:\n *\n * this['exports'] = {...}\n *\n * results in an error:\n *\n * Cannot do '[]' access on a struct\n *\n * So, in order to define 'exports', we must override the @struct assumption by annotating\n * the class as @unrestricted (or @dict). Note that this must be done both here and in the\n * subclass (eg, SerialPort), because otherwise the Compiler won't allow us to *reference*\n * the named property either.\n *\n * TODO: Consider marking ALL our classes unrestricted, because otherwise it forces us to\n * define every single property the class uses in its constructor, which results in a fair\n * bit of redundant initialization, since many properties aren't (and don't need to be) fully\n * initialized until the appropriate init(), reset(), restore(), etc. function is called.\n *\n * The upside, however, may be that since the structure of the class is completely defined by\n * the constructor, JavaScript engines may be able to optimize and run more efficiently.\n *\n * @unrestricted\n */\nclass Component {\n /**\n * Component(type, parms, bitsMessage)\n *\n * A Component object requires:\n *\n * type: a user-defined type name (eg, \"CPU\")\n *\n * and accepts any or all of the following (parms) properties:\n *\n * id: component ID (default is \"\")\n * name: component name (default is \"\"; if blank, toString() will use the type name only)\n * comment: component comment string (default is undefined)\n *\n * Component subclasses will usually have additional (parms) properties.\n *\n * @param {string} type\n * @param {Object} [parms]\n * @param {number} [bitsMessage] selects message(s) that the component wants to enable (default is 0)\n */\n constructor(type, parms, bitsMessage)\n {\n this.type = type;\n\n if (!parms) parms = {'id': \"\", 'name': \"\"};\n\n this.id = parms['id'] || \"\";\n this.name = parms['name'];\n this.comment = parms['comment'];\n this.parms = parms;\n\n /*\n * The following Component properties need to be accessible by other machines and/or command scripts;\n * well, OK, or we could have exported some new functions to walk the contents of these properties, as we\n * did with findMachineComponent(), but this works just as well.\n *\n * Also, while the double-assignment looks silly (ie, using both dot and bracket property notation), it\n * resolves a complaint from the Closure Compiler, because if we use ONLY bracket notation here, then the\n * Compiler wants us to change all the other references to bracket notation as well.\n */\n this.exports = this['exports'] = {};\n this.bindings = this['bindings'] = {};\n\n var i = this.id.indexOf('.');\n if (i < 0) {\n this.idComponent = this.id;\n } else {\n this.idMachine = this.id.substr(0, i);\n this.idComponent = this.id.substr(i + 1);\n }\n\n /*\n * Gather all the various component flags (booleans) into a single \"flags\" object, and encourage\n * subclasses to do the same, to reduce the property clutter we have to wade through while debugging.\n */\n this.flags = {\n ready: false,\n busy: false,\n busyCancel: false,\n initDone: false,\n powered: false,\n unloading: false,\n error: false\n };\n\n this.fnReady = null;\n this.clearError();\n this.bitsMessage = bitsMessage || 0;\n\n this.cmp = null;\n this.bus = null;\n this.cpu = null;\n this.dbg = null;\n\n /*\n * TODO: Consider adding another parameter to the Component() constructor that allows components to tell\n * us if they support single or multiple instances per machine. For example, there can be multiple SerialPort\n * components per machine, but only one CPU component (some machines also support an FPU, but that component\n * is considered separate from the CPU).\n *\n * It's not critical, but it would help catch machine configuration errors; for example, a machine that mistakenly\n * includes two CPU components may, aside from wasting memory, end up with odd side-effects, like unresponsive\n * CPU controls.\n */\n Component.add(this);\n }\n\n /**\n * Component.add(component)\n *\n * @param {Component} component\n */\n static add(component)\n {\n /*\n * This just generates a lot of useless noise, handy in the early days, not so much these days....\n *\n * if (DEBUG) Component.log(\"Component.add(\" + component.type + \",\" + component.id + \")\");\n */\n Component.components.push(component);\n }\n\n /**\n * Component.addMachine(idMachine)\n *\n * @param {string} idMachine\n */\n static addMachine(idMachine)\n {\n Component.machines[idMachine] = {};\n }\n\n /**\n * Component.addMachineResource(idMachine, sName, data)\n *\n * @param {string} idMachine\n * @param {string|null} sName (name of the resource)\n * @param {*} data\n */\n static addMachineResource(idMachine, sName, data)\n {\n /*\n * I used to assert(Component.machines[idMachine]), but when we're running as a Node app, embed.js is not used,\n * so addMachine() is never called, so resources do not need to be recorded.\n */\n if (Component.machines[idMachine] && sName) {\n Component.machines[idMachine][sName] = data;\n }\n }\n\n /**\n * Component.getMachineResources(idMachine)\n *\n * @param {string} idMachine\n * @return {Object|undefined}\n */\n static getMachineResources(idMachine)\n {\n return Component.machines[idMachine];\n }\n\n /**\n * Component.getTime()\n *\n * @return {number} the current time, in milliseconds\n */\n static getTime()\n {\n return Date.now() || +new Date();\n }\n\n /**\n * Component.log(s, type)\n *\n * For diagnostic output only.\n *\n * @param {string} [s] is the message text\n * @param {string} [type] is the message type\n */\n static log(s, type)\n {\n if (!COMPILED) {\n if (s) {\n var sElapsed = \"\", sMsg = (type? (type + \": \") : \"\") + s;\n if (typeof Usr != \"undefined\") {\n if (Component.msStart === undefined) {\n Component.msStart = Component.getTime();\n }\n sElapsed = (Component.getTime() - Component.msStart) + \"ms: \";\n }\n sMsg = sMsg.replace(/\\r/g, '\\\\r').replace(/\\n/g, ' ');\n if (window && window.console) console.log(sElapsed + sMsg);\n }\n }\n }\n\n /**\n * Component.assert(f, s)\n *\n * Verifies conditions that must be true (for DEBUG builds only).\n *\n * The Closure Compiler should automatically remove all references to Component.assert() in non-DEBUG builds.\n * TODO: Add a task to the build process that \"asserts\" there are no instances of \"assertion failure\" in RELEASE builds.\n *\n * @param {boolean} f is the expression we are asserting to be true\n * @param {string} [s] is description of the assertion on failure\n */\n static assert(f, s)\n {\n if (DEBUG) {\n if (!f) {\n if (!s) s = \"assertion failure\";\n Component.log(s);\n throw new Error(s);\n }\n }\n }\n\n /**\n * Component.print(s)\n *\n * Components that inherit from this class should use this.print(), rather than Component.print(), because\n * if a Control Panel is loaded, it will override only the instance method, not the class method (overriding the\n * class method would improperly affect any other machines loaded on the same page).\n *\n * @this {Component}\n * @param {string} s\n */\n static print(s)\n {\n if (!COMPILED) {\n var i = s.lastIndexOf('\\n');\n if (i >= 0) {\n Component.println(s.substr(0, i));\n s = s.substr(i + 1);\n }\n Component.printBuffer += s;\n }\n }\n\n /**\n * Component.println(s, type, id)\n *\n * Components that inherit from this class should use this.println(), rather than Component.println(), because\n * if a Control Panel is loaded, it will override only the instance method, not the class method (overriding the\n * class method would improperly affect any other machines loaded on the same page).\n *\n * @param {string} [s] is the message text\n * @param {string} [type] is the message type\n * @param {string} [id] is the caller's ID, if any\n */\n static println(s, type, id)\n {\n if (!COMPILED) {\n s = Component.printBuffer + (s || \"\");\n Component.log((id? (id + \": \") : \"\") + (s? (\"\\\"\" + s + \"\\\"\") : \"\"), type);\n Component.printBuffer = \"\";\n }\n }\n\n /**\n * Component.notice(s, fPrintOnly, id)\n *\n * notice() is like println() but implies a need for user notification, so we alert() as well.\n *\n * @param {string} s is the message text\n * @param {boolean} [fPrintOnly]\n * @param {string} [id] is the caller's ID, if any\n * @return {boolean}\n */\n static notice(s, fPrintOnly, id)\n {\n if (!COMPILED) {\n Component.println(s, Component.PRINT.NOTICE, id);\n }\n if (!fPrintOnly) Component.alertUser((id? (id + \": \") : \"\") + s);\n return true;\n }\n\n /**\n * Component.warning(s)\n *\n * @param {string} s describes the warning\n */\n static warning(s)\n {\n if (!COMPILED) {\n Component.println(s, Component.PRINT.WARNING);\n }\n Component.alertUser(s);\n }\n\n /**\n * Component.error(s)\n *\n * @param {string} s describes the error; an alert() is displayed as well\n */\n static error(s)\n {\n if (!COMPILED) {\n Component.println(s, Component.PRINT.ERROR);\n }\n Component.alertUser(s);\n }\n\n /**\n * Component.alertUser(sMessage)\n *\n * @param {string} sMessage\n */\n static alertUser(sMessage)\n {\n if (window) {\n window.alert(sMessage);\n } else {\n Component.log(sMessage);\n }\n }\n\n /**\n * Component.confirmUser(sPrompt)\n *\n * @param {string} sPrompt\n * @returns {boolean} true if the user clicked OK, false if Cancel/Close\n */\n static confirmUser(sPrompt)\n {\n var fResponse = false;\n if (window) {\n fResponse = window.confirm(sPrompt);\n }\n return fResponse;\n }\n\n /**\n * Component.promptUser()\n *\n * @param {string} sPrompt\n * @param {string} [sDefault]\n * @returns {string|null}\n */\n static promptUser(sPrompt, sDefault)\n {\n var sResponse = null;\n if (window) {\n sResponse = window.prompt(sPrompt, sDefault === undefined? \"\" : sDefault);\n }\n return sResponse;\n }\n\n /**\n * Component.appendControl(control, sText)\n *\n * @param {Object} control\n * @param {string} sText\n */\n static appendControl(control, sText)\n {\n control.value += sText;\n /*\n * Prevent the