Minor PCx86 Debugger-related improvements
This commit is contained in:
parent
aefe2b4b5b
commit
d0052eb7cd
13 changed files with 1081 additions and 1032 deletions
|
|
@ -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"/>
|
||||||
|
|
|
||||||
|
|
@ -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" %}
|
||||||
|
|
||||||
|
|
|
||||||
36
disks/pcx86/apps/ibm/topview/1.01/debugger/README.md
Normal file
36
disks/pcx86/apps/ibm/topview/1.01/debugger/README.md
Normal 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" %}
|
||||||
|
|
@ -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" %}
|
||||||
|
|
||||||
|
|
|
||||||
20
disks/pcx86/apps/ibm/topview/1.10/debugger/README.md
Normal file
20
disks/pcx86/apps/ibm/topview/1.10/debugger/README.md
Normal 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
|
|
@ -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, '.'));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
@ -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
Loading…
Reference in a new issue