Minimal infrastructure for instantiating a PDP-10 test machine

This commit is contained in:
Jeff Parsons 2017-02-23 11:34:19 -08:00 committed by Jeff Parsons
commit c25ad00c41
15 changed files with 181 additions and 13 deletions

14
devices/pdp10/README.md Normal file
View file

@ -0,0 +1,14 @@
---
layout: page
title: PDP-10 Device Configurations
permalink: /devices/pdp10/
---
PDP-10 Device Configurations
----------------------------
[PDP-10 Machines](/devices/pdp10/machine/) rely on a variety of machine configuration files and resources, including:
* [Control Panels](panel/)
Test machines include a [PDP-10 (Model KA10) with Debugger](/devices/pdp11/machine/ka10/panel/debugger/).

View file

@ -0,0 +1,12 @@
---
layout: page
title: PDP-10 Machine Configurations
permalink: /devices/pdp10/machine/
---
PDP-10 Machine Configurations
-----------------------------
PDPjs supports the following PDP-10 machine configurations:
* [PDP-10 Model KA10](/devices/pdp10/machine/ka10/)

View file

@ -0,0 +1,12 @@
---
layout: page
title: PDP-10 (Model KA10) Machine Configurations
permalink: /devices/pdp10/machine/ka10/
---
PDP-10 (Model KA10) Machine Configurations
------------------------------------------
PDPjs supports the following PDP-10 Model KA10 machine configurations:
* [PDP-10 Model KA10 Test Machine](/devices/pdp10/machine/ka10/test/) (with [Debugger](/devices/pdp10/machine/ka10/test/debugger/))

View file

@ -0,0 +1,15 @@
---
layout: page
title: PDP-10 (Model KA10) Test Machine
permalink: /devices/pdp10/machine/ka10/test/
machines:
- id: ka10test
type: pdp10
---
PDP-10 Test Machine
-------------------
A PDP-10 (Model KA10) is simulated below.
{% include machine.html id="ka10test" %}

View file

@ -0,0 +1,16 @@
---
layout: page
title: PDP-10 (Model KA10) Test Machine with Debugger
permalink: /devices/pdp10/machine/ka10/test/debugger/
machines:
- id: ka10test
type: pdp10
debugger: true
---
PDP-10 Test Machine with Debugger
---------------------------------
A PDP-10 (Model KA10) is simulated below.
{% include machine.html id="ka10test" %}

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pdpjs/1.34.0/machine.xsl"?>
<machine id="ka10test" type="pdp10" border="1" pos="center" background="#FAEBD7">
<name pos="center">PDP-10 Test Machine with Debugger</name>
<computer id="computer" busWidth="18"/>
<cpu id="cpu" model="1001" cycles="1000000"/>
<ram id="ram" addr="0x0000" size="0x4000"/>
<device id="default" type="default"/>
<serial id="serial" adapter="0" binding="print" upperCase="true"/>
<panel ref="/devices/pdp10/panel/test/debugger/terminal.xml"/>
<debugger id="debugger" base="8" messages="" commands=""/>
</machine>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pdpjs/1.34.0/machine.xsl"?>
<machine id="ka10test" type="pdp10" border="1" pos="center" background="#FAEBD7">
<name pos="center">PDP-10 Test Machine</name>
<computer id="computer" busWidth="18"/>
<cpu id="cpu" model="1001" cycles="1000000"/>
<ram id="ram" addr="0x0000" size="0x4000"/>
<device id="default" type="default"/>
<serial id="serial" adapter="0" binding="print" upperCase="true"/>
<panel ref="/devices/pdp10/panel/test/debugger/terminal.xml"/>
</machine>

View file

@ -0,0 +1,10 @@
---
layout: page
title: PDP-10 Control Panels
permalink: /devices/pdp11/panel/
---
PDP-10 Control Panels
---------------------
* [Terminal Test Panels](test/)

View file

@ -0,0 +1,10 @@
---
layout: page
title: PDP-10 Test Panels
permalink: /devices/pdp10/panel/test/
---
PDP-10 Test Panels
------------------
* [Terminal Test Panel](terminal.xml) (with [Debugger](debugger/terminal.xml))

View file

@ -0,0 +1,10 @@
---
layout: page
title: PDP-10 Test Panel with Debugger
permalink: /devices/pdp10/panel/test/debugger/
---
PDP-10 Test Panel with Debugger
-------------------------------
* [Terminal Test Panel with Debugger](terminal.xml)

View file

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<panel id="panel" width="100%" padding="8px">
<name>Control Panel</name>
<control type="container" class="pcjs-textarea" width="60%" padBottom="8px">
<control type="textarea" binding="print" width="100%" height="340px" padRight="8px" pos="relative" style="resize:vertical;"/>
<control type="container" width="100%">
<control type="text" binding="debugInput" width="auto"/>
<control type="button" binding="debugEnter">Enter</control>
<control type="button" binding="clear">Clear</control>
</control>
</control>
<control type="container" class="pcjs-registers" width="35%" padLeft="8px">
<name>Registers</name>
<control type="register" label="PC" binding="PC" pos="left" width="60px" padRight="8px" padBottom="8px">000000</control>
</control>
<control type="container" class="pcjs-registers" width="35%" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="step">Step</control>
<control type="button" binding="reset">Reset</control>
<control type="button" binding="setSpeed">Fast</control>
<control type="description" binding="speed" pos="default">Stopped</control>
</control>
</panel>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<panel id="panel" width="100%" padding="8px">
<name>Control Panel</name>
<control type="container" class="pcjs-textarea" width="60%" padBottom="8px">
<control type="textarea" binding="print" width="100%" height="340px" padRight="8px" pos="relative" style="resize:vertical;"/>
</control>
<control type="container" class="pcjs-registers" width="35%" padLeft="8px">
<name>Registers</name>
<control type="register" label="PC" binding="PC" pos="left" width="60px" padRight="8px" padBottom="8px">000000</control>
</control>
<control type="container" class="pcjs-registers" width="35%" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
<control type="button" binding="setSpeed">Fast</control>
<control type="description" binding="speed" pos="default">Stopped</control>
</control>
</panel>

View file

@ -54,6 +54,7 @@ var usr = require("../../shared/lib/usrlib");
* @property {Array.<string>} pcCSSFiles
* @property {Array.<string>} pcX86Files
* @property {Array.<string>} pc8080Files
* @property {Array.<string>} pdp10Files
* @property {Array.<string>} pdp11Files
*/
var pkg = require("../../../package.json");
@ -169,6 +170,7 @@ var aMachineFiles = {
'PC': pkg.pcCSSFiles.concat(pkg.pcX86Files), // deprecated (same as PCx86)
'PCx86': pkg.pcCSSFiles.concat(pkg.pcX86Files),
'PC8080': pkg.pcCSSFiles.concat(pkg.pc8080Files),
'PDP10': pkg.pcCSSFiles.concat(pkg.pdp10Files),
'PDP11': pkg.pcCSSFiles.concat(pkg.pdp11Files)
};
var aMachineFileTypes = {
@ -1872,7 +1874,7 @@ HTMLOut.prototype.getRandomString = function(sIndent)
*
* At a minimum, each machine object should contain the following properties:
*
* 'type' (eg, a machine type, such as "C1P", "PCx86", "PC8080", or "PDP11")
* 'type' (eg, a machine type, such as "C1P", "PCx86", "PC8080", "PDP10", or "PDP11")
* 'version' (eg, "1.10", "*" to select the current version, or "uncompiled"; "*" is the default)
* 'debugger' (eg, true or false; false is the default)
*

View file

@ -75,18 +75,6 @@ var PDP10 = {
/*
* CPU model numbers (supported)
*
* The 11/20 includes the 11/10, which is not identified separately because there was
* nothing functionally different about it.
*
* The 11/40 added the MODE bits to the PSW (but only KERNEL=00 and USER=11) and 18-bit
* addressing via an MMU; there was still only one register set.
*
* The 11/45 added REGSET bit to the PSW (to support a second register set), SUPER=01
* mode to the existing KERNEL=00 and USER=11 modes, separate I/D spaces, and other MMU
* extensions (eg, MMR1 and MMR3).
*
* The 11/70 added 22-bit addressing and corresponding extensions to the MMU.
*/
MODEL_KA10: 1001,

View file

@ -579,6 +579,21 @@ function embedPC8080(idMachine, sXMLFile, sXSLFile, sParms)
return embedMachine("PC8080", "pc8080", APPVERSION, idMachine, sXMLFile, sXSLFile, sParms);
}
/**
* embedPDP10(idMachine, sXMLFile, sXSLFile, sParms)
*
* @param {string} idMachine
* @param {string} sXMLFile
* @param {string} sXSLFile
* @param {string} [sParms]
* @return {boolean} true if successful, false if error
*/
function embedPDP10(idMachine, sXMLFile, sXSLFile, sParms)
{
if (fAsync) Web.enablePageEvents(false);
return embedMachine("PDPjs", "pdp10", APPVERSION, idMachine, sXMLFile, sXSLFile, sParms);
}
/**
* embedPDP11(idMachine, sXMLFile, sXSLFile, sParms)
*
@ -635,6 +650,7 @@ if (APPNAME == "PC8080") {
window['embedPC8080'] = embedPC8080;
}
if (APPNAME == "PDPjs") {
window['embedPDP10'] = embedPDP10;
window['embedPDP11'] = embedPDP11;
}