The 5170 AT hard disk controller is limping along now, so I'm getting ready for a 1.15.4 release

Some other interesting bugs were fixed along the way:
the Video component incorrectly assumed that masking a negative number with 0x80000000 would yield 0x80000000 (it actually yields -0x80000000, thank you JavaScript);
the ChipSet component provides a new addCMOSMemory() interface that RAM objects can use to bump the CMOS total to match the actual total;
the CPU properly implements INSW and OUTSW instructions now (kind of important for the AT hard disk controller)
This commit is contained in:
Jeff Parsons 2014-10-08 16:15:12 -07:00 • committed by jeffpar
commit 0f06c3f039
115 changed files with 2803 additions and 1902 deletions

View file

@ -1258,7 +1258,7 @@ var X86OpXX = {
}
if (nReps--) {
var addrFrom = this.regEIP - nDelta - 1;
var w = this.bus.checkPortInputNotify(this.regDX, addrFrom) | (this.bus.checkPortInputNotify((this.regDX + 1) & 0xffff, addrFrom) << 8);
var w = this.bus.checkPortInputNotify(this.regDX, addrFrom) | (this.bus.checkPortInputNotify(this.regDX, addrFrom) << 8);
this.setSOWord(this.segES, this.regDI, w);
this.regDI = (this.regDI + ((this.regPS & X86.PS.DF)? -2 : 2)) & 0xffff;
this.nStepCycles -= nCycles;
@ -1350,7 +1350,7 @@ var X86OpXX = {
this.regCX -= nDelta;
var addrFrom = this.regEIP - nDelta - 1;
this.bus.checkPortOutputNotify(this.regDX, w & 0xff, addrFrom);
this.bus.checkPortOutputNotify((this.regDX + 1) & 0xffff, w >> 8, addrFrom);
this.bus.checkPortOutputNotify(this.regDX, w >> 8, addrFrom);
if (nReps) {
/*
* We have to back up to the prefix byte(s), not just to the string instruction,
@ -2728,7 +2728,7 @@ var X86OpXX = {
/**
* @this {X86CPU}
*
* Here's the pseudo-code from /pubs/pc/programming/80286_and_80287_Programmers_Reference_Manual_1987.pdf, p.B-40 (p.250):
* Here's the pseudo-code from http://www.pcjs.org/pubs/pc/reference/intel/80286/progref, p.B-40 (p.250):
*
* LEVEL := LEVEL MOD 32
* Push BP