Start debugging HDC failure on DeskPro 386 configuration

This commit is contained in:
Jeff Parsons 2015-06-07 23:33:22 -07:00
commit c29b1061dc
3 changed files with 13 additions and 6 deletions

View file

@ -14,15 +14,16 @@ For example, when I ran this code:
0CE0:0106
-g
the following "text" appeared at the top of the screen, in 640x200 16-color graphics mode 0x0E:
the following "text" correctly appeared at the top of the screen, in 640x200 16-color graphics mode 0x0E:
AX=0B01 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0CE0 ES=0CE0 SS=0CE0 CS=0CE0 IP=0105 NV UP EI PL NZ NA PO NC
0CE0:0105 CC INT 3
-
When I typed "q", then "cls" and finally "dir", the screen filled with DOS directory contents. But as
soon as the screen started to scroll, the screen contents became garbled. Other EGA graphics modes,
And when I typed "q", then "cls" and finally "dir", the screen filled with DOS directory contents.
But as soon as the screen started to scroll, the screen contents became garbled. Other EGA graphics modes,
like 640x350 16-color mode 0x10, didn't have this problem.
To investigate, I set a breakpoint in the IBM EGA ROM where the scrolling starts, at 0xC000:12EA (see p.130 of the

View file

@ -13,7 +13,7 @@
<debugger id="debugger" messages="fault|port" commands=""/>
<panel ref="/devices/pc/panel/btpanel.xml"/>
<fdc ref="/disks/pc/library.xml" width="340px" automount='{A: {name: "PC-DOS 3.00 (Disk 1)", path: "/disks/pc/dos/ibm/3.00/PCDOS300-DISK1.json"}, B: {name: "PC-DOS 3.00 (Disk 2)", path: "/disks/pc/dos/ibm/3.00/PCDOS300-DISK2.json"}}'/>
<hdcFoo id="hdcAT" type="at" drives='[{name:"20Mb Hard Disk",type:2}]'/>
<hdc id="hdcAT" type="at" drives='[{name:"20Mb Hard Disk",type:2}]'/>
<chipset id="chipset" model="deskpro386" floppies="[1200,1200]" monitor="vga"/>
<serial id="com1" adapter="1"/>
<serial id="com2" adapter="2" binding="print"/>

View file

@ -2320,7 +2320,10 @@ Card.prototype.setMemoryAccess = function(nAccess)
var nReadAccess = nAccess & Card.ACCESS.READ.MASK;
var fnReadByte = Card.ACCESS.afn[nReadAccess];
if (!fnReadByte) {
if (DEBUG && this.dbg) this.dbg.message("Card.setMemoryAccess(" + str.toHexWord(nAccess) + "): missing readByte handler");
if (DEBUG && this.dbg) {
this.dbg.message("Card.setMemoryAccess(" + str.toHexWord(nAccess) + "): missing readByte handler");
this.dbg.stopCPU(); // let's take a look
}
if (nReadAccess & Card.ACCESS.READ.EVENODD) {
fnReadByte = Card.ACCESS.afn[Card.ACCESS.READ.EVENODD];
}
@ -2328,7 +2331,10 @@ Card.prototype.setMemoryAccess = function(nAccess)
var nWriteAccess = nAccess & Card.ACCESS.WRITE.MASK;
var fnWriteByte = Card.ACCESS.afn[nWriteAccess];
if (!fnWriteByte) {
if (DEBUG && this.dbg) this.dbg.message("Card.setMemoryAccess(" + str.toHexWord(nAccess) + "): missing writeByte handler");
if (DEBUG && this.dbg) {
this.dbg.message("Card.setMemoryAccess(" + str.toHexWord(nAccess) + "): missing writeByte handler");
this.dbg.stopCPU(); // let's take a look
}
if (nWriteAccess & Card.ACCESS.WRITE.EVENODD) {
fnWriteByte = Card.ACCESS.afn[Card.ACCESS.WRITE.EVENODD];
}