Release of v1.15.6
Some FDC tweaks, a CPU emulation fix, and some Debugger message improvements
This commit is contained in:
parent
0173492ef2
commit
326cfbb42c
146 changed files with 6798 additions and 859 deletions
|
|
@ -926,7 +926,7 @@ MarkOut.prototype.convertMDMachineLinks = function(sBlock)
|
|||
var sMachineFunc = "embed" + sMachine;
|
||||
var sMachineClass = sMachine.toLowerCase();
|
||||
var aMachineParms = aMatch[4].split(':');
|
||||
var sMachineMessage = "(If you see this message, " + sMachine + "js is still loading, or JavaScript has been disabled)";
|
||||
var sMachineMessage = "Waiting for " + sMachine + "js to start";
|
||||
|
||||
var sMachineID = aMachineParms[0];
|
||||
var sMachineXSLFile = aMachineParms[1] || "";
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
"global": true,
|
||||
"console": true,
|
||||
"module": true,
|
||||
"print": true,
|
||||
"require": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -39,15 +39,15 @@ try {
|
|||
* function (an alias for console.log). If JSC is running us instead,
|
||||
* then this will fail (there is neither a global NOR a console object),
|
||||
* but that's OK, because print() is a built-in function.
|
||||
*
|
||||
*
|
||||
* TODO: Find a cleaner way of doing this, and while you're at it, alias
|
||||
* Node's process.argv to JSC's "arguments" array, and Node's process.exit()
|
||||
* to JSC's quit().
|
||||
*
|
||||
*
|
||||
* UPDATE: Node *must* be used to run this test, because JSC's support for
|
||||
* typed arrays is incomplete.
|
||||
*/
|
||||
global.print = console.log;
|
||||
var print = console.log;
|
||||
} catch(err) {}
|
||||
|
||||
function toHex(v, len) {
|
||||
|
|
@ -39,22 +39,22 @@ try {
|
|||
* function (an alias for console.log). If JSC is running us instead,
|
||||
* then this will fail (there is neither a global NOR a console object),
|
||||
* but that's OK, because print() is a built-in function.
|
||||
*
|
||||
*
|
||||
* TODO: Find a cleaner way of doing this, and while you're at it, alias
|
||||
* Node's process.argv to JSC's "arguments" array, and Node's process.exit()
|
||||
* to JSC's quit().
|
||||
*/
|
||||
global.print = console.log;
|
||||
var print = console.log;
|
||||
} catch(err) {}
|
||||
|
||||
/*
|
||||
* I'm going to start by creating 4 sets of "mod,reg,r/m" aka OpMod tables:
|
||||
*
|
||||
*
|
||||
* Set 0: mod,r/m is dst, size is byte, dispatch table is aOpModMemByte
|
||||
* Set 1: mod,r/m is dst, size is word, dispatch table is aOpModMemWord
|
||||
* Set 2: reg is dst, size is byte, dispatch table is aOpModRegByte
|
||||
* Set 3: reg is dst, size is word, dispatch table is aOpModRegWord
|
||||
*
|
||||
*
|
||||
* See p. 3-41 of "The 8086 Book" for more details.
|
||||
*/
|
||||
|
||||
|
|
@ -354,8 +354,8 @@ function genMode(d, w, mrm, sGroup, sRO) {
|
|||
* The 8086/8088 cycle counts below come from p.3-48 of "The 8086 Book", where it discusses EA
|
||||
* ("effective address") calculations and the number of execution cycles required for each type
|
||||
* of calculation.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
var fInline = true;
|
||||
var nCycles = null;
|
||||
|
|
@ -607,7 +607,7 @@ function genMode(d, w, mrm, sGroup, sRO) {
|
|||
|
||||
if (sGroup) {
|
||||
/*
|
||||
* Use this to generate ModRM decoders that accept an array (ie, "group") of functions, and pass along an implied argument as well
|
||||
* Use this to generate ModRM decoders that accept an array (ie, "group") of functions, and pass along an implied argument as well
|
||||
*/
|
||||
if (sRO && reg != 7) {
|
||||
sOpMod = "opMod" + (sGroup? sGroup : aDst[d]) + aSize[w] + toHex(mrm, 2);
|
||||
|
|
@ -245,7 +245,8 @@ var X86Op0F = {
|
|||
* 145E:4BC3 CB RETF
|
||||
*
|
||||
* This code is expecting SGDT on an 80286 to set the 6th "undefined" byte to 0xFF. So we use setWord()
|
||||
* instead of setByte() and force the upper byte to 0xFF. TODO: Remove the 0xFF00 on post-80286 processors.
|
||||
* instead of setByte() and force the upper byte to 0xFF. TODO: Remove the 0xFF00 below on post-80286
|
||||
* processors; also, this behavior may be unique to real-mode.
|
||||
*/
|
||||
this.setWord(this.regEA + 4, 0xFF00 | (this.addrGDT >> 16));
|
||||
this.nStepCycles -= 11;
|
||||
|
|
@ -269,8 +270,9 @@ var X86Op0F = {
|
|||
dst = this.addrIDTLimit - this.addrIDT;
|
||||
this.setWord(this.regEA + 2, this.addrIDT);
|
||||
/*
|
||||
* As with SGDT, the 6th byte is technically "undefined" on an 80286, but given that SGDT now sets it to 0xFF,
|
||||
* we mimic SGDT.
|
||||
* As with SGDT, the 6th byte is technically "undefined" on an 80286, but we now set it to 0xFF, for the
|
||||
* same reasons discussed in SGDT (above). TODO: Remove the 0xFF00 below on post-80286 processors; also,
|
||||
* this behavior may be unique to real-mode.
|
||||
*/
|
||||
this.setWord(this.regEA + 4, 0xFF00 | (this.addrIDT >> 16));
|
||||
this.nStepCycles -= 12;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
<!-- pcjs:sockets -->
|
||||
</head>
|
||||
<body>
|
||||
<!-- Template revision 0037 (increment this number prior to any Git push that should trigger a rebuild of all web pages) -->
|
||||
<!-- Template revision 0038 (increment this number prior to any Git push that should trigger a rebuild of all web pages) -->
|
||||
<div class="common">
|
||||
<div class="common-top">
|
||||
<div class="common-top-left">
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/apps/pc/">Apps</a></li>
|
||||
<li><a href="/disks/pc/">Disks</a></li>
|
||||
<li><a href="/configs/pc/machines/">Machines</a></li>
|
||||
<li><a href="/configs/">Machines</a></li>
|
||||
<li><a href="/docs/pcjs/">Docs</a></li>
|
||||
<li><a href="/pubs/">Pubs</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
|
|
@ -76,4 +76,4 @@
|
|||
</script>
|
||||
<!-- pcjs:htmlfile("analytics.html") -->
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
|||
Loading…
Reference in a new issue