Minor re-org of PDP-10 tests
This commit is contained in:
parent
a42a261cca
commit
5fa958dfea
11 changed files with 186 additions and 166 deletions
|
|
@ -9,5 +9,6 @@ PDP-10 Software
|
||||||
|
|
||||||
PCjs provides the following PDP-10 software:
|
PCjs provides the following PDP-10 software:
|
||||||
|
|
||||||
- [PDP-10 Diagnostics](diags/)
|
- [DEC PDP-10 Diagnostics](diags/)
|
||||||
- [PDP-10 Opcode Tests](tests/)
|
- [PDPjs PDP-10 Opcode Tests](tests/opcodes/)
|
||||||
|
- [PDPjs MACRO-10 Mini-Assembler Tests](tests/macro10/)
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
---
|
---
|
||||||
layout: page
|
layout: page
|
||||||
title: PDP-10 Diagnostics
|
title: DEC PDP-10 Diagnostics
|
||||||
permalink: /apps/pdp10/diags/
|
permalink: /apps/pdp10/diags/
|
||||||
---
|
---
|
||||||
|
|
||||||
PDP-10 Diagnostics
|
DEC PDP-10 Diagnostics
|
||||||
------------------
|
----------------------
|
||||||
|
|
||||||
PCjs has archived the following PDP-10 diagnostics:
|
PCjs has archived the following PDP-10 diagnostics:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@ permalink: /apps/pdp10/diags/klad/
|
||||||
PDP-10 KLAD Diagnostics
|
PDP-10 KLAD Diagnostics
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
PCjs has archived selected files from [PDP-10 KLAD Diagnostics Sources](http://pdp-10.trailing-edge.com/klad_sources/index.html),
|
PCjs has archived selected files from
|
||||||
including:
|
[PDP-10 KLAD Diagnostics Sources](http://pdp-10.trailing-edge.com/klad_sources/index.html), including:
|
||||||
|
|
||||||
- [KA10 Basic Instruction Diagnostic #1 (MAINDEC-10-DAKAA-B-D)](dakaa/)
|
- [KA10 Basic Instruction Diagnostic #1 (MAINDEC-10-DAKAA-B-D)](dakaa/)
|
||||||
- [KA10 Basic Instruction Diagnostic #4 (MAINDEC-10-DAKAD-B-D)](dakad/)
|
- [KA10 Basic Instruction Diagnostic #4 (MAINDEC-10-DAKAD-B-D)](dakad/)
|
||||||
|
|
|
||||||
|
|
@ -1,164 +1,13 @@
|
||||||
---
|
---
|
||||||
layout: page
|
layout: page
|
||||||
title: DEC PDP-10 Opcode Tests
|
title: PDPjs PDP-10 Tests
|
||||||
permalink: /apps/pdp10/tests/
|
permalink: /apps/pdp10/tests/
|
||||||
machines:
|
|
||||||
- id: testka10
|
|
||||||
type: pdp10
|
|
||||||
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
|
||||||
debugger: true
|
|
||||||
---
|
---
|
||||||
|
|
||||||
DEC PDP-10 Tests
|
PDPjs PDP-10 Tests
|
||||||
----------------
|
------------------
|
||||||
|
|
||||||
This page describes a collection of tests used to perform *very* simple exercises of PDPjs components:
|
PDPjs tests to exercise PDP-10 and MACRO-10 features include:
|
||||||
|
|
||||||
- [Simple Opcode Tests](#simple-opcode-tests)
|
- [PDPjs PDP-10 Opcode Tests](opcodes/)
|
||||||
- [MACRO-10 Mini-Assembler Tests](#macro-10-mini-assembler-tests)
|
- [PDPjs MACRO-10 Mini-Assembler Tests](macro10/)
|
||||||
|
|
||||||
Simple Opcode Tests
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
The PDP-10 machine below loads the following hand-written test:
|
|
||||||
|
|
||||||
- [PDP-10 Half-Word Opcode Test](OPTEST01.json)
|
|
||||||
|
|
||||||
Details on how to run and modify the test, and perform similar tests in [SIMH](https://github.com/simh/simh),
|
|
||||||
are provided below.
|
|
||||||
|
|
||||||
{% include machine.html id="testka10" %}
|
|
||||||
|
|
||||||
The [PDP-10 Half-Word Opcode Test](OPTEST01.json) file specifies that the following words:
|
|
||||||
|
|
||||||
0o505040111111, // HRLI 1,111111
|
|
||||||
0o541040444444, // HRRI 1,444444
|
|
||||||
0o544100000001, // HLR 2,1
|
|
||||||
0o504100000001, // HRL 2,1
|
|
||||||
...
|
|
||||||
|
|
||||||
should be loaded at address 0o100, and that the program counter (PC register) should be set to 0o100. The embedded
|
|
||||||
comments display the instructions that correspond to each word.
|
|
||||||
|
|
||||||
If you want to alter or add new instructions, the PDP-10 Debugger now includes a rudimentary assembler. Using the `a` command,
|
|
||||||
along with an optional start address, you can enter "assembler mode". For example, here's how the first four instructions from
|
|
||||||
the [PDP-10 Half-Word Opcode Test](OPTEST01.json) could be entered by hand:
|
|
||||||
|
|
||||||
>> a 100
|
|
||||||
begin assemble at 000100
|
|
||||||
>> hrli 1,111111
|
|
||||||
000100: 505040 111111 HRLI 1,111111
|
|
||||||
>> hrri 1,444444
|
|
||||||
000101: 541040 444444 HRRI 1,444444
|
|
||||||
>> hlr 2,1
|
|
||||||
000102: 544100 000001 HLR 2,1
|
|
||||||
>> hrl 2,1
|
|
||||||
000103: 504100 000001 HRL 2,1
|
|
||||||
ended assemble at 000104
|
|
||||||
|
|
||||||
Entering a blank line exits "assembler mode". To disassemble the four instructions, use `u 100 l4`:
|
|
||||||
|
|
||||||
>> u 100 l4
|
|
||||||
000100: 505040 111111 HRLI 1,111111
|
|
||||||
000101: 541040 444444 HRRI 1,444444
|
|
||||||
000102: 544100 000001 HLR 2,1
|
|
||||||
000103: 504100 000001 HRL 2,1
|
|
||||||
|
|
||||||
You can also copy-and-paste a series of instructions into the PDPjs Debugger, as long as each command ends
|
|
||||||
with a semicolon:
|
|
||||||
|
|
||||||
a 100;
|
|
||||||
hrli 1,111111;
|
|
||||||
hrri 1,444444;
|
|
||||||
hlr 2,1;
|
|
||||||
hrl 2,1;
|
|
||||||
end
|
|
||||||
|
|
||||||
Individual instructions can also be assembled *without* entering "assembler mode", as long as you precede
|
|
||||||
each instruction with the `a` command and a specific address:
|
|
||||||
|
|
||||||
a 100 hrli 1,111111;
|
|
||||||
a 101 hrri 1,444444;
|
|
||||||
a 102 hlr 2,1;
|
|
||||||
a 103 hrl 2,1
|
|
||||||
|
|
||||||
Individual instructions can be executed with the `t` command and memory can be dumped with the `d` command.
|
|
||||||
|
|
||||||
After executing the first four instructions and using the `d 0 l4` command to dump first four words of memory
|
|
||||||
(also known as AC registers 0-3), you should see the following output:
|
|
||||||
|
|
||||||
>> r
|
|
||||||
000100: 505040 111111 HRLI 1,111111
|
|
||||||
>> t
|
|
||||||
000101: 541040 444444 HRRI 1,444444
|
|
||||||
>> t
|
|
||||||
000102: 544100 000001 HLR 2,1
|
|
||||||
>> t
|
|
||||||
000103: 504100 000001 HRL 2,1
|
|
||||||
>> t
|
|
||||||
000104: 000000 000000 UUO 0,0
|
|
||||||
>> d 0 l4
|
|
||||||
000000: 000000 000000 111111 444444 444444 111111 000000 000000
|
|
||||||
|
|
||||||
To assemble and test the same instructions in [SIMH](https://github.com/simh/simh), using the `pdp10` binary:
|
|
||||||
|
|
||||||
sim> dep 100 505040111111
|
|
||||||
sim> dep 101 541040444444
|
|
||||||
sim> dep 102 544100000001
|
|
||||||
sim> dep 103 504100000001
|
|
||||||
sim> ex -m 100-103
|
|
||||||
100: HRLI 1,111111
|
|
||||||
101: HRRI 1,444444
|
|
||||||
102: HLR 2,1
|
|
||||||
103: HRL 2,1
|
|
||||||
sim> dep pc 100
|
|
||||||
sim> step
|
|
||||||
|
|
||||||
Step expired, PC: 000101 (HRRI 1,444444)
|
|
||||||
sim> step
|
|
||||||
|
|
||||||
Step expired, PC: 000102 (HLR 2,1)
|
|
||||||
sim> step
|
|
||||||
|
|
||||||
Step expired, PC: 000103 (HRL 2,1)
|
|
||||||
sim> step
|
|
||||||
|
|
||||||
Step expired, PC: 000104 (000000000000)
|
|
||||||
sim> ex 0-3
|
|
||||||
0: 000000000000
|
|
||||||
1: 111111444444
|
|
||||||
2: 444444111111
|
|
||||||
3: 000000000000
|
|
||||||
|
|
||||||
MACRO-10 Mini-Assembler Tests
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
The following command loads an early test of the built-in PDPjs MACRO-10 Mini-Assembler:
|
|
||||||
|
|
||||||
a 100 /apps/pdp10/tests/TEXT.MAC
|
|
||||||
|
|
||||||
[TEXT.MAC](TEXT.MAC.txt) is a copy of the file listed on p. 7-9 of the
|
|
||||||
[MACRO-10 Assembler Programmer's Reference Manual (June 1972)](/pubs/dec/pdp10/). It's a simple test
|
|
||||||
of nested macro definitions, recursion, expressions using shift operators and character constants,
|
|
||||||
and pseudo-ops **IRPC**, **IFE**, **IFN**, and **EXP**. It generates 4 words of data.
|
|
||||||
|
|
||||||
If successful, the following results should appear:
|
|
||||||
|
|
||||||
>> a 100 /apps/pdp10/tests/TEXT.MAC
|
|
||||||
starting PCjs MACRO-10 Mini-Assembler...
|
|
||||||
loading TEXT.MAC
|
|
||||||
4 words loaded at 000100-000103
|
|
||||||
00=000000000000 01=000000000000 02=000000000000 03=000000000000
|
|
||||||
04=000000000000 05=000000000000 06=000000000000 07=000000000000
|
|
||||||
10=000000000000 11=000000000000 12=000000000000 13=000000000000
|
|
||||||
14=000000000000 15=000000000000 16=000000000000 17=000000000000
|
|
||||||
PC=000100 RA=00000000 EA=000000 C0=0 C1=0 OV=0 ND=0 PD=0
|
|
||||||
000100: 014101 102103 UUO 2,102103(1)
|
|
||||||
|
|
||||||
and if you dump the first 4 words with the command `db 100 l4`:
|
|
||||||
|
|
||||||
>> db 100 l4
|
|
||||||
000100: 014101 102103 003 004 011 004 041 ....!
|
|
||||||
000101: 104105 106107 021 004 051 014 043 ..).#
|
|
||||||
000102: 110111 112113 022 004 111 024 045 ..I.%
|
|
||||||
000103: 114000 000000 023 000 000 000 000 .....
|
|
||||||
|
|
|
||||||
47
apps/pdp10/tests/macro10/README.md
Normal file
47
apps/pdp10/tests/macro10/README.md
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: PDPjs MACRO-10 Mini-Assembler Tests
|
||||||
|
permalink: /apps/pdp10/tests/macro10/
|
||||||
|
machines:
|
||||||
|
- id: testka10
|
||||||
|
type: pdp10
|
||||||
|
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
||||||
|
debugger: true
|
||||||
|
commands: a 100 /apps/pdp10/tests/macro10/TEXT.MAC
|
||||||
|
---
|
||||||
|
|
||||||
|
PDPjs MACRO-10 Mini-Assembler Tests
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
The PDP-10 machine below automatically loads and assembles [TEXT.MAC](TEXT.MAC.txt), one of the
|
||||||
|
first tests of the built-in PDPjs MACRO-10 Mini-Assembler.
|
||||||
|
|
||||||
|
[TEXT.MAC](TEXT.MAC.txt) is a copy of the file listed on p. 7-9 of the
|
||||||
|
[MACRO-10 Assembler Programmer's Reference Manual (June 1972)](/pubs/dec/pdp10/). It's a simple test
|
||||||
|
of nested macro definitions, recursion, expressions using shift operators and character constants,
|
||||||
|
and pseudo-ops **IRPC**, **IFE**, **IFN**, and **EXP**. It generates 4 words of data.
|
||||||
|
|
||||||
|
{% include machine.html id="testka10" %}
|
||||||
|
|
||||||
|
After the machine executes the following command:
|
||||||
|
|
||||||
|
a 100 /apps/pdp10/tests/macro10/TEXT.MAC
|
||||||
|
|
||||||
|
the following results should appear:
|
||||||
|
|
||||||
|
starting PCjs MACRO-10 Mini-Assembler...
|
||||||
|
loading TEXT.MAC
|
||||||
|
4 words loaded at 000100-000103
|
||||||
|
00=000000000000 01=000000000000 02=000000000000 03=000000000000
|
||||||
|
04=000000000000 05=000000000000 06=000000000000 07=000000000000
|
||||||
|
10=000000000000 11=000000000000 12=000000000000 13=000000000000
|
||||||
|
14=000000000000 15=000000000000 16=000000000000 17=000000000000
|
||||||
|
PC=000100 RA=00000000 EA=000000 C0=0 C1=0 OV=0 ND=0 PD=0
|
||||||
|
000100: 014101 102103 UUO 2,102103(1)
|
||||||
|
|
||||||
|
and if you dump the first 4 words with the command `db 100 l4`:
|
||||||
|
|
||||||
|
000100: 014101 102103 003 004 011 004 041 ....!
|
||||||
|
000101: 104105 106107 021 004 051 014 043 ..).#
|
||||||
|
000102: 110111 112113 022 004 111 024 045 ..I.%
|
||||||
|
000103: 114000 000000 023 000 000 000 000 .....
|
||||||
123
apps/pdp10/tests/opcodes/README.md
Normal file
123
apps/pdp10/tests/opcodes/README.md
Normal file
|
|
@ -0,0 +1,123 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: PDPjs PDP-10 Opcode Tests
|
||||||
|
permalink: /apps/pdp10/tests/opcodes/
|
||||||
|
machines:
|
||||||
|
- id: testka10
|
||||||
|
type: pdp10
|
||||||
|
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
||||||
|
debugger: true
|
||||||
|
---
|
||||||
|
|
||||||
|
PDPjs PDP-10 Opcode Tests
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
The PDP-10 machine below loads the following PDPjs opcode test:
|
||||||
|
|
||||||
|
- [PDP-10 Half-Word Opcode Test](OPTEST01.json)
|
||||||
|
|
||||||
|
Details on how to run and modify the test, and perform similar tests in [SIMH](https://github.com/simh/simh),
|
||||||
|
are provided below.
|
||||||
|
|
||||||
|
{% include machine.html id="testka10" %}
|
||||||
|
|
||||||
|
The [PDP-10 Half-Word Opcode Test](OPTEST01.json) file specifies that the following words:
|
||||||
|
|
||||||
|
0o505040111111, // HRLI 1,111111
|
||||||
|
0o541040444444, // HRRI 1,444444
|
||||||
|
0o544100000001, // HLR 2,1
|
||||||
|
0o504100000001, // HRL 2,1
|
||||||
|
...
|
||||||
|
|
||||||
|
should be loaded at address 0o100, and that the program counter (PC register) should be set to 0o100. The embedded
|
||||||
|
comments display the instructions that correspond to each word.
|
||||||
|
|
||||||
|
If you want to alter or add new instructions, the PDP-10 Debugger now includes a rudimentary assembler. Using the `a` command,
|
||||||
|
along with an optional start address, you can enter "assembler mode". For example, here's how the first four instructions from
|
||||||
|
the [PDP-10 Half-Word Opcode Test](OPTEST01.json) could be entered by hand:
|
||||||
|
|
||||||
|
>> a 100
|
||||||
|
begin assemble at 000100
|
||||||
|
>> hrli 1,111111
|
||||||
|
000100: 505040 111111 HRLI 1,111111
|
||||||
|
>> hrri 1,444444
|
||||||
|
000101: 541040 444444 HRRI 1,444444
|
||||||
|
>> hlr 2,1
|
||||||
|
000102: 544100 000001 HLR 2,1
|
||||||
|
>> hrl 2,1
|
||||||
|
000103: 504100 000001 HRL 2,1
|
||||||
|
ended assemble at 000104
|
||||||
|
|
||||||
|
Entering a blank line exits "assembler mode". To disassemble the four instructions, use `u 100 l4`:
|
||||||
|
|
||||||
|
>> u 100 l4
|
||||||
|
000100: 505040 111111 HRLI 1,111111
|
||||||
|
000101: 541040 444444 HRRI 1,444444
|
||||||
|
000102: 544100 000001 HLR 2,1
|
||||||
|
000103: 504100 000001 HRL 2,1
|
||||||
|
|
||||||
|
You can also copy-and-paste a series of instructions into the PDPjs Debugger, as long as each command ends
|
||||||
|
with a semicolon:
|
||||||
|
|
||||||
|
a 100;
|
||||||
|
hrli 1,111111;
|
||||||
|
hrri 1,444444;
|
||||||
|
hlr 2,1;
|
||||||
|
hrl 2,1;
|
||||||
|
end
|
||||||
|
|
||||||
|
Individual instructions can also be assembled *without* entering "assembler mode", as long as you precede
|
||||||
|
each instruction with the `a` command and a specific address:
|
||||||
|
|
||||||
|
a 100 hrli 1,111111;
|
||||||
|
a 101 hrri 1,444444;
|
||||||
|
a 102 hlr 2,1;
|
||||||
|
a 103 hrl 2,1
|
||||||
|
|
||||||
|
Individual instructions can be executed with the `t` command and memory can be dumped with the `d` command.
|
||||||
|
|
||||||
|
After executing the first four instructions and using the `d 0 l4` command to dump first four words of memory
|
||||||
|
(also known as AC registers 0-3), you should see the following output:
|
||||||
|
|
||||||
|
>> r
|
||||||
|
000100: 505040 111111 HRLI 1,111111
|
||||||
|
>> t
|
||||||
|
000101: 541040 444444 HRRI 1,444444
|
||||||
|
>> t
|
||||||
|
000102: 544100 000001 HLR 2,1
|
||||||
|
>> t
|
||||||
|
000103: 504100 000001 HRL 2,1
|
||||||
|
>> t
|
||||||
|
000104: 000000 000000 UUO 0,0
|
||||||
|
>> d 0 l4
|
||||||
|
000000: 000000 000000 111111 444444 444444 111111 000000 000000
|
||||||
|
|
||||||
|
To assemble and test the same instructions in [SIMH](https://github.com/simh/simh), using the `pdp10` binary:
|
||||||
|
|
||||||
|
sim> dep 100 505040111111
|
||||||
|
sim> dep 101 541040444444
|
||||||
|
sim> dep 102 544100000001
|
||||||
|
sim> dep 103 504100000001
|
||||||
|
sim> ex -m 100-103
|
||||||
|
100: HRLI 1,111111
|
||||||
|
101: HRRI 1,444444
|
||||||
|
102: HLR 2,1
|
||||||
|
103: HRL 2,1
|
||||||
|
sim> dep pc 100
|
||||||
|
sim> step
|
||||||
|
|
||||||
|
Step expired, PC: 000101 (HRRI 1,444444)
|
||||||
|
sim> step
|
||||||
|
|
||||||
|
Step expired, PC: 000102 (HLR 2,1)
|
||||||
|
sim> step
|
||||||
|
|
||||||
|
Step expired, PC: 000103 (HRL 2,1)
|
||||||
|
sim> step
|
||||||
|
|
||||||
|
Step expired, PC: 000104 (000000000000)
|
||||||
|
sim> ex 0-3
|
||||||
|
0: 000000000000
|
||||||
|
1: 111111444444
|
||||||
|
2: 444444111111
|
||||||
|
3: 000000000000
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<name pos="center">PDP-10 (Model KA10) with Debugger</name>
|
<name pos="center">PDP-10 (Model KA10) with Debugger</name>
|
||||||
<computer id="computer" busWidth="18"/>
|
<computer id="computer" busWidth="18"/>
|
||||||
<cpu id="cpu" model="1001" cycles="1000000"/>
|
<cpu id="cpu" model="1001" cycles="1000000"/>
|
||||||
<ram id="ram" addr="0x0000" size="0x4000" file="/apps/pdp10/tests/OPTEST01.json"/>
|
<ram id="ram" addr="0x0000" size="0x4000" file="/apps/pdp10/tests/opcodes/OPTEST01.json"/>
|
||||||
<device id="default" type="default"/>
|
<device id="default" type="default"/>
|
||||||
<serial id="serial" adapter="0" binding="print" upperCase="true"/>
|
<serial id="serial" adapter="0" binding="print" upperCase="true"/>
|
||||||
<panel ref="/devices/pdp10/panel/ka10/debugger/front.xml"/>
|
<panel ref="/devices/pdp10/panel/ka10/debugger/front.xml"/>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<name pos="center">PDP-10 Test Machine</name>
|
<name pos="center">PDP-10 Test Machine</name>
|
||||||
<computer id="computer" busWidth="18"/>
|
<computer id="computer" busWidth="18"/>
|
||||||
<cpu id="cpu" model="1001" cycles="1000000"/>
|
<cpu id="cpu" model="1001" cycles="1000000"/>
|
||||||
<ram id="ram" addr="0x0000" size="0x4000" file="/apps/pdp10/tests/OPTEST01.json"/>
|
<ram id="ram" addr="0x0000" size="0x4000" file="/apps/pdp10/tests/opcodes/OPTEST01.json"/>
|
||||||
<device id="default" type="default"/>
|
<device id="default" type="default"/>
|
||||||
<serial id="serial" adapter="0" binding="print" upperCase="true"/>
|
<serial id="serial" adapter="0" binding="print" upperCase="true"/>
|
||||||
<panel ref="/devices/pdp10/panel/test/terminal.xml"/>
|
<panel ref="/devices/pdp10/panel/test/terminal.xml"/>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue