Minor PCx86 Debugger-related improvements

This commit is contained in:
Jeff Parsons 2017-08-02 19:02:23 -07:00 • committed by Jeff Parsons
commit d0052eb7cd
13 changed files with 1081 additions and 1032 deletions

View file

@ -10,7 +10,7 @@
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/> <rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-keygrid.xml"/> <video ref="/devices/pcx86/video/ibm/cga/ibm-cga-keygrid.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/> <fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/> <keyboard ref="/devices/pcx86/keyboard/us83-buttons-arrows.xml"/>
<debugger id="debugger"/> <debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/> <panel ref="/devices/pcx86/panel/wide.xml"/>
<hdc ref="/disks/pcx86/fixed/10mb/pcdos200-empty.xml"/> <hdc ref="/disks/pcx86/fixed/10mb/pcdos200-empty.xml"/>

View file

@ -49,7 +49,7 @@ concurrent execution of multiple applications.
The machine below is configured to automatically start TopView 1.01 on top of PC-DOS 2.00. No mouse driver is loaded, The machine below is configured to automatically start TopView 1.01 on top of PC-DOS 2.00. No mouse driver is loaded,
so you must use TopView's "Keyboard Mouse" support: arrow keys move the cursor and **Home**, **PgUp**, and **Alt** so you must use TopView's "Keyboard Mouse" support: arrow keys move the cursor and **Home**, **PgUp**, and **Alt**
act as mouse buttons. act as mouse buttons. The machine is also available with the [PCjs Debugger](debugger/).
{% include machine.html id="ibm5160" %} {% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,36 @@
---
layout: page
title: "TopView 1.01 (With Debugger)"
permalink: /disks/pcx86/apps/ibm/topview/1.01/debugger/
machines:
- id: ibm5160
type: pcx86
config: /devices/pcx86/machine/5160/cga/640kb/debugger/machine.xml
autoMount:
A:
path: /disks/pcx86/dos/ibm/2.00/PCDOS200-DISK1.json
B:
path: /disks/pcx86/apps/ibm/topview/1.01/TOPVIEW101-PROGRAM.json
autoScript: startKbd
machineScripts:
startKbd: |
wait Keyboard DOS;
type Keyboard "$date\r$time\rB:\rTV\r";
startMouse: |
wait Keyboard DOS;
type Keyboard "$date\r$time\r";
wait Keyboard;
sleep 1000;
select FDC listDrives "A:";
select FDC listDisks "MS Mouse 5.00 (System)";
loadDisk FDC;
wait FDC;
type Keyboard "MOUSE\r";
sleep 5000;
type Keyboard "B:\rTV\r";
---
TopView 1.01 (With Debugger)
----------------------------
{% include machine.html id="ibm5160" %}

View file

@ -18,7 +18,7 @@ TopView 1.10
------------ ------------
NOTE: This disk image is from the PCjs disk collection. Presumably, as in [TopView 1.01](../1.01/), there was a NOTE: This disk image is from the PCjs disk collection. Presumably, as in [TopView 1.01](../1.01/), there was a
second (Tutorial) disk, but we don't have a copy of it. second (Tutorial) disk, but we don't have a copy of it. The machine below is also available with the [PCjs Debugger](debugger/).
{% include machine.html id="ibm5160" %} {% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,20 @@
---
layout: page
title: "TopView 1.10 (With Debugger)"
permalink: /disks/pcx86/apps/ibm/topview/1.10/debugger/
machines:
- id: ibm5160
type: pcx86
config: /devices/pcx86/machine/5160/cga/640kb/debugger/machine.xml
autoMount:
A:
path: /disks/pcx86/dos/ibm/2.00/PCDOS200-DISK1.json
B:
path: /disks/pcx86/apps/ibm/topview/1.10/TOPVIEW110.json
autoType: \r\rb:\rtv\r
---
TopView 1.10 (With Debugger)
----------------------------
{% include machine.html id="ibm5160" %}

File diff suppressed because it is too large Load diff

View file

@ -769,7 +769,7 @@ class Computer extends Component {
* "ibm5160", enabling us to find objects that match the original machine ID * "ibm5160", enabling us to find objects that match the original machine ID
* (eg, "ibm5160.romEGA"). * (eg, "ibm5160.romEGA").
* *
* See /devices/pcx86/machine/5160/ega/640kb/array/ for examples of this. * See /devices/pcx86/machine/5160/ega/640kb/array for examples of this.
*/ */
data = stateComputer.get(component.id.replace(/-[0-9]+\./i, '.')); data = stateComputer.get(component.id.replace(/-[0-9]+\./i, '.'));
} }

View file

@ -1213,15 +1213,16 @@ class CPU extends Component {
* For use by any component that wants to start the CPU. * For use by any component that wants to start the CPU.
* *
* @param {boolean} [fUpdateFocus] * @param {boolean} [fUpdateFocus]
* @param {boolean} [fQuiet]
* @return {boolean} * @return {boolean}
*/ */
startCPU(fUpdateFocus) startCPU(fUpdateFocus, fQuiet)
{ {
if (this.isError()) { if (this.isError()) {
return false; return false;
} }
if (this.flags.running) { if (this.flags.running) {
this.println(this.toString() + " busy"); if (!fQuiet) this.println(this.toString() + " busy");
return false; return false;
} }
/* /*

View file

@ -2698,15 +2698,16 @@ class DebuggerX86 extends Debugger {
* startCPU(fUpdateFocus, fQuiet) * startCPU(fUpdateFocus, fQuiet)
* *
* @this {DebuggerX86} * @this {DebuggerX86}
* @param {boolean} [fUpdateFocus] is true to update focus * @param {boolean} [fUpdateFocus]
* @param {boolean} [fQuiet] * @param {boolean} [fQuiet]
* @return {boolean} true if run request successful, false if not * @return {boolean} true if run request successful, false if not
*/ */
startCPU(fUpdateFocus, fQuiet) startCPU(fUpdateFocus, fQuiet)
{ {
if (!this.checkCPU(fQuiet)) return false; if (this.checkCPU(fQuiet)) {
this.cpu.startCPU(fUpdateFocus); return this.cpu.startCPU(fUpdateFocus, fQuiet);
return true; }
return false;
} }
/** /**
@ -2769,10 +2770,11 @@ class DebuggerX86 extends Debugger {
* *
* @this {DebuggerX86} * @this {DebuggerX86}
* @param {boolean} [fComplete] * @param {boolean} [fComplete]
* @return {boolean}
*/ */
stopCPU(fComplete) stopCPU(fComplete)
{ {
if (this.cpu) this.cpu.stopCPU(fComplete); return this.cpu && this.cpu.stopCPU(fComplete) || false;
} }
/** /**
@ -5089,15 +5091,10 @@ class DebuggerX86 extends Debugger {
*/ */
doHalt(fQuiet) doHalt(fQuiet)
{ {
var sMsg; if (!this.stopCPU()) {
if (this.flags.running) {
sMsg = "halting";
this.stopCPU();
} else {
if (this.isBusy(true)) return; if (this.isBusy(true)) return;
sMsg = "already halted"; if (!fQuiet) this.println("already halted");
} }
if (!fQuiet) this.println(sMsg);
} }
/** /**
@ -5929,9 +5926,7 @@ class DebuggerX86 extends Debugger {
this.parseAddrOptions(dbgAddr, sOptions); this.parseAddrOptions(dbgAddr, sOptions);
this.setTempBreakpoint(dbgAddr); this.setTempBreakpoint(dbgAddr);
} }
if (!this.startCPU(true)) { this.startCPU(true, fQuiet);
if (!fQuiet) this.println("cpu busy or unavailable, run command ignored");
}
} }
/** /**

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -12931,15 +12931,16 @@ class CPU extends Component {
* For use by any component that wants to start the CPU. * For use by any component that wants to start the CPU.
* *
* @param {boolean} [fUpdateFocus] * @param {boolean} [fUpdateFocus]
* @param {boolean} [fQuiet]
* @return {boolean} * @return {boolean}
*/ */
startCPU(fUpdateFocus) startCPU(fUpdateFocus, fQuiet)
{ {
if (this.isError()) { if (this.isError()) {
return false; return false;
} }
if (this.flags.running) { if (this.flags.running) {
this.println(this.toString() + " busy"); if (!fQuiet) this.println(this.toString() + " busy");
return false; return false;
} }
/* /*
@ -69527,15 +69528,16 @@ class DebuggerX86 extends Debugger {
* startCPU(fUpdateFocus, fQuiet) * startCPU(fUpdateFocus, fQuiet)
* *
* @this {DebuggerX86} * @this {DebuggerX86}
* @param {boolean} [fUpdateFocus] is true to update focus * @param {boolean} [fUpdateFocus]
* @param {boolean} [fQuiet] * @param {boolean} [fQuiet]
* @return {boolean} true if run request successful, false if not * @return {boolean} true if run request successful, false if not
*/ */
startCPU(fUpdateFocus, fQuiet) startCPU(fUpdateFocus, fQuiet)
{ {
if (!this.checkCPU(fQuiet)) return false; if (this.checkCPU(fQuiet)) {
this.cpu.startCPU(fUpdateFocus); return this.cpu.startCPU(fUpdateFocus, fQuiet);
return true; }
return false;
} }
/** /**
@ -69598,10 +69600,11 @@ class DebuggerX86 extends Debugger {
* *
* @this {DebuggerX86} * @this {DebuggerX86}
* @param {boolean} [fComplete] * @param {boolean} [fComplete]
* @return {boolean}
*/ */
stopCPU(fComplete) stopCPU(fComplete)
{ {
if (this.cpu) this.cpu.stopCPU(fComplete); return this.cpu && this.cpu.stopCPU(fComplete) || false;
} }
/** /**
@ -71918,15 +71921,10 @@ class DebuggerX86 extends Debugger {
*/ */
doHalt(fQuiet) doHalt(fQuiet)
{ {
var sMsg; if (!this.stopCPU()) {
if (this.flags.running) {
sMsg = "halting";
this.stopCPU();
} else {
if (this.isBusy(true)) return; if (this.isBusy(true)) return;
sMsg = "already halted"; if (!fQuiet) this.println("already halted");
} }
if (!fQuiet) this.println(sMsg);
} }
/** /**
@ -72749,6 +72747,7 @@ class DebuggerX86 extends Debugger {
*/ */
doRun(sCmd, sAddr, sOptions, fQuiet) doRun(sCmd, sAddr, sOptions, fQuiet)
{ {
if (sCmd == "gt") { if (sCmd == "gt") {
this.fIgnoreNextCheckFault = true; this.fIgnoreNextCheckFault = true;
} }
@ -72758,9 +72757,7 @@ class DebuggerX86 extends Debugger {
this.parseAddrOptions(dbgAddr, sOptions); this.parseAddrOptions(dbgAddr, sOptions);
this.setTempBreakpoint(dbgAddr); this.setTempBreakpoint(dbgAddr);
} }
if (!this.startCPU(true)) { this.startCPU(true, fQuiet);
if (!fQuiet) this.println("cpu busy or unavailable, run command ignored");
}
} }
/** /**
@ -75423,7 +75420,7 @@ class Computer extends Component {
* "ibm5160", enabling us to find objects that match the original machine ID * "ibm5160", enabling us to find objects that match the original machine ID
* (eg, "ibm5160.romEGA"). * (eg, "ibm5160.romEGA").
* *
* See /devices/pcx86/machine/5160/ega/640kb/array/ for examples of this. * See /devices/pcx86/machine/5160/ega/640kb/array for examples of this.
*/ */
data = stateComputer.get(component.id.replace(/-[0-9]+\./i, '.')); data = stateComputer.get(component.id.replace(/-[0-9]+\./i, '.'));
} }

File diff suppressed because one or more lines are too long