Fixed a couple of PDP-10 opcode emulation bugs (AOBJN, AOBJP, and CMP), and rounded out the set of DEC's basic instruction diagnostics
This commit is contained in:
parent
dd24f4bb61
commit
2a8c2a74d2
21 changed files with 29570 additions and 84 deletions
|
|
@ -8,10 +8,10 @@ machines:
|
||||||
type: pdp10
|
type: pdp10
|
||||||
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
||||||
debugger: true
|
debugger: true
|
||||||
commands: a 30724 /apps/pdp10/diags/klad/dakaa/MYDAKAA.MAC
|
commands: a 30724 /apps/pdp10/diags/klad/dakaa/DAKAA.MAC
|
||||||
---
|
---
|
||||||
|
|
||||||
Now that the PDPjs MACRO-10 Mini-Assembler is [limping along](/blog/2017/03/21/), it was time to start assembling some
|
Now that the PDPjs MACRO-10 Mini-Assembler is [limping along](/blog/2017/03/21/), it's time to start assembling some
|
||||||
of DEC's PDP-10 diagnostics and loading them into a test machine. The first diagnostic I tried was
|
of DEC's PDP-10 diagnostics and loading them into a test machine. The first diagnostic I tried was
|
||||||
[KA10 Basic Instruction Diagnostic #1 (MAINDEC-10-DAKAA-B-D)](/apps/pdp10/diags/klad/dakaa/), which has been loaded into
|
[KA10 Basic Instruction Diagnostic #1 (MAINDEC-10-DAKAA-B-D)](/apps/pdp10/diags/klad/dakaa/), which has been loaded into
|
||||||
the machine below.
|
the machine below.
|
||||||
|
|
@ -20,9 +20,9 @@ the machine below.
|
||||||
|
|
||||||
Here were the results of my first run attempt:
|
Here were the results of my first run attempt:
|
||||||
|
|
||||||
>> a 30724 /apps/pdp10/diags/klad/dakaa/MYDAKAA.MAC
|
>> a 30724 /apps/pdp10/diags/klad/dakaa/DAKAA.MAC
|
||||||
starting PCjs MACRO-10 Mini-Assembler...
|
starting PCjs MACRO-10 Mini-Assembler...
|
||||||
loading MYDAKAA.MAC
|
loading DAKAA.MAC
|
||||||
CPU will not be auto-started (click Run to start)
|
CPU will not be auto-started (click Run to start)
|
||||||
2844 words loaded at 030724-036357
|
2844 words loaded at 030724-036357
|
||||||
00=000000000000 01=000000000000 02=000000000000 03=000000000000
|
00=000000000000 01=000000000000 02=000000000000 03=000000000000
|
||||||
|
|
@ -60,9 +60,9 @@ Happily, this was a good outcome, because 035057 is the end of the test. If you
|
||||||
|
|
||||||
Next, I tried [KA10 Basic Instruction Diagnostic #4 (MAINDEC-10-DAKAD-B-D)](/apps/pdp10/diags/klad/dakad/):
|
Next, I tried [KA10 Basic Instruction Diagnostic #4 (MAINDEC-10-DAKAD-B-D)](/apps/pdp10/diags/klad/dakad/):
|
||||||
|
|
||||||
>> a 30724 /apps/pdp10/diags/klad/dakad/MYDAKAD.MAC
|
>> a 30724 /apps/pdp10/diags/klad/dakad/DAKAD.MAC
|
||||||
starting PCjs MACRO-10 Mini-Assembler...
|
starting PCjs MACRO-10 Mini-Assembler...
|
||||||
loading MYDAKAD.MAC
|
loading DAKAD.MAC
|
||||||
1986 words loaded at 030724-034625
|
1986 words loaded at 030724-034625
|
||||||
00=000000000000 01=000000000000 02=777777777777 03=000000000000
|
00=000000000000 01=000000000000 02=777777777777 03=000000000000
|
||||||
04=777777777777 05=000000000000 06=000000000000 07=777777777777
|
04=777777777777 05=000000000000 06=000000000000 07=777777777777
|
||||||
|
|
@ -91,8 +91,88 @@ Next, I tried [KA10 Basic Instruction Diagnostic #4 (MAINDEC-10-DAKAD-B-D)](/app
|
||||||
032005: 312140 034462 CAME 3,34462 ;history=2
|
032005: 312140 034462 CAME 3,34462 ;history=2
|
||||||
032006: 254200 032007 HALT 32007 ;history=1
|
032006: 254200 032007 HALT 32007 ;history=1
|
||||||
|
|
||||||
This looked less good.
|
This looked less good. Both AC3 and memory location 34462 contained 400000000000, so the CAME instruction should have
|
||||||
|
"skipped if equal." There was a bug in the [cpuops.js](/modules/pdp10/lib/cpuops.js) *CMP()* function:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
/**
|
||||||
|
* CMP(dst, src)
|
||||||
|
*
|
||||||
|
* Performs the SIGNED comparison (CMP) of two 36-bit operands.
|
||||||
|
*
|
||||||
|
* @param {number} dst (36-bit value)
|
||||||
|
* @param {number} src (36-bit value)
|
||||||
|
* @return {number} (dst - src)
|
||||||
|
*/
|
||||||
|
PDP10.CMP = function(dst, src)
|
||||||
|
{
|
||||||
|
return (dst < PDP10.INT_LIMIT? dst : dst - PDP10.WORD_LIMIT) - (src < PDP10.INT_LIMIT? src : src - PDP10.INT_LIMIT);
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
And here's the correction:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
return (dst < PDP10.INT_LIMIT? dst : dst - PDP10.WORD_LIMIT) - (src < PDP10.INT_LIMIT? src : src - PDP10.WORD_LIMIT);
|
||||||
|
```
|
||||||
|
|
||||||
|
Just a stupid typo. After fixing that and trying again, the diagnostic got a bit farther:
|
||||||
|
|
||||||
|
>> g
|
||||||
|
running
|
||||||
|
stopped (1119 instructions, 1118 cycles, 12 ms, 93167 hz)
|
||||||
|
00=000001000001 01=000000000000 02=000000000002 03=000000000003
|
||||||
|
04=000000000004 05=000000000005 06=000000000006 07=000000000007
|
||||||
|
10=000000000010 11=000000000011 12=000000000012 13=000000000013
|
||||||
|
14=000000000014 15=000000000015 16=000000000016 17=000000777723
|
||||||
|
PC=033446 RA=00033446 EA=033446 C0=0 C1=0 OV=0 ND=0 PD=0
|
||||||
|
033446: 324000 033447 JUMPA 0,33447
|
||||||
|
>> dh
|
||||||
|
033432: 253000 033434 AOBJN 0,33434 ;history=10
|
||||||
|
033434: 324000 033435 JUMPA 0,33435 ;history=9
|
||||||
|
033435: 200000 034573 MOVE 0,34573 ;history=8
|
||||||
|
033436: 252000 033440 AOBJP 0,33440 ;history=7
|
||||||
|
033437: 334000 000000 SKIPA 0,0 ;history=6
|
||||||
|
033441: 324000 033442 JUMPA 0,33442 ;history=5
|
||||||
|
033442: 474000 000000 SETO 0,0 ;history=4
|
||||||
|
033443: 253000 033444 AOBJN 0,33444 ;history=3
|
||||||
|
033444: 312000 034574 CAME 0,34574 ;history=2
|
||||||
|
033445: 254200 033446 HALT 33446 ;history=1
|
||||||
|
|
||||||
|
The problem here was that after `SETO 0,0`, AC0 contained 777777777777, so when AOBJN added 000001000001 to it, the result
|
||||||
|
should have been 000001000000, but because other another typo, this time in the *opAOBJN()* function:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
/**
|
||||||
|
* opAOBJN(0o253000): Add One to Both Halves of AC and Jump if Negative
|
||||||
|
*
|
||||||
|
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-41:
|
||||||
|
*
|
||||||
|
* Add 1000001 [base 8] to AC and place the result back in AC. If the result is less than zero
|
||||||
|
* (ie if bit 0 is 1, and hence a negative count in the left half has not yet reached zero or a positive
|
||||||
|
* count has reached 2^17), take the next instruction from location E and continue sequential operation
|
||||||
|
* from there.
|
||||||
|
*
|
||||||
|
* The incrementing of both halves of AC simultaneously is effected by adding 1000001 [base 8]. A count
|
||||||
|
* of -2 in AC left is therefore increased to zero if 2^18 - 1 is incremented in AC right.
|
||||||
|
*
|
||||||
|
* @this {CPUStatePDP10}
|
||||||
|
* @param {number} op
|
||||||
|
* @param {number} acc
|
||||||
|
*/
|
||||||
|
PDP10.opAOBJN = function(op, acc)
|
||||||
|
{
|
||||||
|
var dst = (this.readWord(acc) + 0o000001000001) % PDP10.WORD_MASK;
|
||||||
|
this.writeWord(acc, dst);
|
||||||
|
if (dst >= PDP10.INT_LIMIT) this.setPC(this.regEA);
|
||||||
|
};
|
||||||
|
```
|
||||||
|
when `dst` became 0o1000001000000 and exceeded WORD_MASK (0o777777777777), it needed to be mod'ed with WORD_LIMIT (0o1000000000000),
|
||||||
|
not WORD_MASK, to truncate the value to 36 bits. Here's the corrected line:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var dst = (this.readWord(acc) + 0o000001000001) % PDP10.WORD_LIMIT;
|
||||||
|
```
|
||||||
|
|
||||||
*[@jeffpar](http://twitter.com/jeffpar)*
|
*[@jeffpar](http://twitter.com/jeffpar)*
|
||||||
*Mar 24, 2017*
|
*Mar 24, 2017*
|
||||||
|
|
@ -11,4 +11,6 @@ PCjs has archived selected files from
|
||||||
[PDP-10 KLAD Diagnostics Sources](http://pdp-10.trailing-edge.com/klad_sources/index.html), 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 #2 (MAINDEC-10-DAKAB-B-D)](dakab/)
|
||||||
|
- [KA10 Basic Instruction Diagnostic #3 (MAINDEC-10-DAKAC-B-D)](dakac/)
|
||||||
- [KA10 Basic Instruction Diagnostic #4 (MAINDEC-10-DAKAD-B-D)](dakad/)
|
- [KA10 Basic Instruction Diagnostic #4 (MAINDEC-10-DAKAD-B-D)](dakad/)
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,27 @@
|
||||||
|
;MACROS
|
||||||
|
|
||||||
|
; STOP - USED FOR SCOPE LOOP, IF INSTRUCTION FAILS, CHANGE (JUMPA .+1)
|
||||||
|
; TO A (JUMPA X) TO CYCLE ON FAILING INSTRUCTION
|
||||||
|
|
||||||
|
DEFINE STOP (A)<
|
||||||
|
HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE
|
||||||
|
JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
|
||||||
|
;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
|
||||||
|
;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
|
||||||
|
;AND CHANGE HALT INSTRUCTION TO JUMPA .+1>
|
||||||
|
|
||||||
SUBTTL DIAGNOSTIC SECTION
|
SUBTTL DIAGNOSTIC SECTION
|
||||||
|
|
||||||
START: SETZM USER# ;CLEAR USER CONTROL WORD
|
START: ;SETZM USER# ;CLEAR USER CONTROL WORD
|
||||||
JSP 0,.+1 ;GET FLAGS
|
;JSP 0,.+1 ;GET FLAGS
|
||||||
TLNE USERF ;IN USER MODE?
|
;TLNE USERF ;IN USER MODE?
|
||||||
SETOM USER ;YES, SET USER CONTROL WORD
|
;SETOM USER ;YES, SET USER CONTROL WORD
|
||||||
SKIPN MONFLG ;SPECIAL USER MODE?
|
;SKIPN MONFLG ;SPECIAL USER MODE?
|
||||||
SETZM USER ;YES, CLEAR USER CONTROL WORD
|
;SETZM USER ;YES, CLEAR USER CONTROL WORD
|
||||||
SKIPN USER
|
;SKIPN USER
|
||||||
JRST STARTA
|
;JRST STARTA
|
||||||
SKIPL MONCTL
|
;SKIPL MONCTL
|
||||||
TTCALL 3,PGMNAM ;MENTION OUR NAME
|
;TTCALL 3,PGMNAM ;MENTION OUR NAME
|
||||||
JRST STARTA
|
JRST STARTA
|
||||||
|
|
||||||
PGMNAM: ASCIZ/
|
PGMNAM: ASCIZ/
|
||||||
|
|
@ -1037,6 +1049,5 @@ SN=SN+1
|
||||||
|
|
||||||
;**********
|
;**********
|
||||||
>
|
>
|
||||||
ENDXX: JRST BEGEND ;LOOP PROGRAM
|
ENDXX:
|
||||||
|
;JRST BEGEND ;LOOP PROGRAM
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,27 +1,15 @@
|
||||||
;MACROS
|
|
||||||
|
|
||||||
; STOP - USED FOR SCOPE LOOP, IF INSTRUCTION FAILS, CHANGE (JUMPA .+1)
|
|
||||||
; TO A (JUMPA X) TO CYCLE ON FAILING INSTRUCTION
|
|
||||||
|
|
||||||
DEFINE STOP (A)<
|
|
||||||
HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE
|
|
||||||
JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
|
|
||||||
;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
|
|
||||||
;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
|
|
||||||
;AND CHANGE HALT INSTRUCTION TO JUMPA .+1>
|
|
||||||
|
|
||||||
SUBTTL DIAGNOSTIC SECTION
|
SUBTTL DIAGNOSTIC SECTION
|
||||||
|
|
||||||
START: ;SETZM USER# ;CLEAR USER CONTROL WORD
|
START: SETZM USER# ;CLEAR USER CONTROL WORD
|
||||||
;JSP 0,.+1 ;GET FLAGS
|
JSP 0,.+1 ;GET FLAGS
|
||||||
;TLNE USERF ;IN USER MODE?
|
TLNE USERF ;IN USER MODE?
|
||||||
;SETOM USER ;YES, SET USER CONTROL WORD
|
SETOM USER ;YES, SET USER CONTROL WORD
|
||||||
;SKIPN MONFLG ;SPECIAL USER MODE?
|
SKIPN MONFLG ;SPECIAL USER MODE?
|
||||||
;SETZM USER ;YES, CLEAR USER CONTROL WORD
|
SETZM USER ;YES, CLEAR USER CONTROL WORD
|
||||||
;SKIPN USER
|
SKIPN USER
|
||||||
;JRST STARTA
|
JRST STARTA
|
||||||
;SKIPL MONCTL
|
SKIPL MONCTL
|
||||||
;TTCALL 3,PGMNAM ;MENTION OUR NAME
|
TTCALL 3,PGMNAM ;MENTION OUR NAME
|
||||||
JRST STARTA
|
JRST STARTA
|
||||||
|
|
||||||
PGMNAM: ASCIZ/
|
PGMNAM: ASCIZ/
|
||||||
|
|
@ -1049,5 +1037,6 @@ SN=SN+1
|
||||||
|
|
||||||
;**********
|
;**********
|
||||||
>
|
>
|
||||||
ENDXX:
|
ENDXX: JRST BEGEND ;LOOP PROGRAM
|
||||||
; JRST BEGEND ;LOOP PROGRAM
|
|
||||||
|
|
||||||
|
|
@ -7,14 +7,14 @@ machines:
|
||||||
type: pdp10
|
type: pdp10
|
||||||
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
||||||
debugger: true
|
debugger: true
|
||||||
commands: a 30724 MYDAKAA.MAC
|
commands: a 30724 DAKAA.MAC
|
||||||
---
|
---
|
||||||
|
|
||||||
PDP-10 KA10 Basic Instruction Diagnostic #1
|
PDP-10 KA10 Basic Instruction Diagnostic #1
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
|
|
||||||
The *PDP-10 KA10 Basic Instruction Diagnostic #1* (MAINDEC-10-DAKAA-B-D) test code has been extracted from
|
The *PDP-10 KA10 Basic Instruction Diagnostic #1* (MAINDEC-10-DAKAA-B-D) test code has been extracted from
|
||||||
[DAKAA.MAC](DAKAA.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakaam.mac.html)]
|
[DAKAAM.MAC](DAKAAM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakaam.mac.html)]
|
||||||
for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below.
|
for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below.
|
||||||
|
|
||||||
Resources for this test include:
|
Resources for this test include:
|
||||||
|
|
@ -32,9 +32,9 @@ The Debugger's assemble ("a") command can be used to test the new built-in
|
||||||
of the [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language.
|
of the [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language.
|
||||||
This command:
|
This command:
|
||||||
|
|
||||||
a 30724 MYDAKAA.MAC
|
a 30724 DAKAA.MAC
|
||||||
|
|
||||||
will automatically read the [MYDAKAA.MAC](MYDAKAA.MAC.txt) source file (a slightly modified copy of [DAKAA.MAC](DAKAA.MAC.txt)),
|
will automatically read the [DAKAA.MAC](DAKAA.MAC.txt) source file (a slightly modified copy of [DAKAAM.MAC](DAKAAM.MAC.txt)),
|
||||||
assemble it, and then load the binary output at the specified address.
|
assemble it, and then load the binary output at the specified address.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
12231
apps/pdp10/diags/klad/dakab/DAKAB.LST.txt
Normal file
12231
apps/pdp10/diags/klad/dakab/DAKAB.LST.txt
Normal file
File diff suppressed because it is too large
Load diff
1782
apps/pdp10/diags/klad/dakab/DAKAB.MAC.txt
Normal file
1782
apps/pdp10/diags/klad/dakab/DAKAB.MAC.txt
Normal file
File diff suppressed because it is too large
Load diff
1770
apps/pdp10/diags/klad/dakab/DAKABM.MAC.txt
Normal file
1770
apps/pdp10/diags/klad/dakab/DAKABM.MAC.txt
Normal file
File diff suppressed because it is too large
Load diff
274
apps/pdp10/diags/klad/dakab/README.md
Normal file
274
apps/pdp10/diags/klad/dakab/README.md
Normal file
|
|
@ -0,0 +1,274 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: PDP-10 KA10 Basic Instruction Diagnostic #2
|
||||||
|
permalink: /apps/pdp10/diags/klad/dakab/
|
||||||
|
machines:
|
||||||
|
- id: testka10
|
||||||
|
type: pdp10
|
||||||
|
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
||||||
|
debugger: true
|
||||||
|
commands: a 30724 DAKAB.MAC
|
||||||
|
---
|
||||||
|
|
||||||
|
PDP-10 KA10 Basic Instruction Diagnostic #2
|
||||||
|
-------------------------------------------
|
||||||
|
|
||||||
|
The *PDP-10 KA10 Basic Instruction Diagnostic #2* (MAINDEC-10-DAKAB-B-D) test code has been extracted from
|
||||||
|
[DAKABM.MAC](DAKABM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakabm.mac.html)]
|
||||||
|
for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below.
|
||||||
|
|
||||||
|
Resources for this test include:
|
||||||
|
|
||||||
|
- [Instructions](#dakabtxt)
|
||||||
|
- [History](#dakabhst)
|
||||||
|
- [Source Code](#dakabmac)
|
||||||
|
- [MACRO-10 Listing](DAKAB.LST.txt)
|
||||||
|
- [Additional Information](http://archive.pcjs.org/apps/pdp10/diags/klad/dakab/DAKAB.SEQ.txt)
|
||||||
|
|
||||||
|
{% include machine.html id="testka10" %}
|
||||||
|
|
||||||
|
The Debugger's assemble ("a") command can be used to test the new built-in
|
||||||
|
[MACRO-10 Mini-Assembler](/modules/pdp10/lib/macro10.js), which supports a subset
|
||||||
|
of the [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language.
|
||||||
|
This command:
|
||||||
|
|
||||||
|
a 30724 DAKAB.MAC
|
||||||
|
|
||||||
|
will automatically read the [DAKAB.MAC](DAKAB.MAC.txt) source file (a slightly modified copy of [DAKABM.MAC](DAKABM.MAC.txt)),
|
||||||
|
assemble it, and then load the binary output at the specified address.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
DAKAB.TXT
|
||||||
|
---------
|
||||||
|
|
||||||
|
```
|
||||||
|
MAINDEC-10-DAKAB.TXT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
IDENTIFICATION
|
||||||
|
--------------
|
||||||
|
|
||||||
|
PRODUCT CODE: MAINDEC-10-DAKAB-B-D
|
||||||
|
|
||||||
|
PRODUCT NAME: DECSYSTEM10 PDP-10 KA10 BASIC
|
||||||
|
INSTRUCTION DIAGNOSTIC (2)
|
||||||
|
|
||||||
|
FUNCTION: BASIC INSTRUCTIONS 2
|
||||||
|
|
||||||
|
VERSION: 0.2
|
||||||
|
|
||||||
|
DATE RELEASED: JANUARY 1977
|
||||||
|
|
||||||
|
MAINTAINED BY: DIAGNOSTIC ENGINEERING GROUP
|
||||||
|
|
||||||
|
AUTHOR: JOHN R. KIRCHOFF
|
||||||
|
|
||||||
|
COPYRIGHT(C) 1976,1977
|
||||||
|
DIGITAL EQUIPMENT CORPORATION
|
||||||
|
MARLBORO, MASS. 01752
|
||||||
|
|
||||||
|
THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY
|
||||||
|
ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH
|
||||||
|
THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE,
|
||||||
|
OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE
|
||||||
|
MADE AVAILABLE TO ANY OTHER PERSON EXECPT FOR USE ON SUCH SYSTEM
|
||||||
|
AND TO ONE WHO AGREES TO THESE LICENSE TERMS. TITLE TO AND
|
||||||
|
OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.
|
||||||
|
|
||||||
|
THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
|
||||||
|
NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
|
||||||
|
EQUIPMENT CORPORATION.
|
||||||
|
|
||||||
|
DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
|
||||||
|
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
|
||||||
|
MAINDEC-10-DAKAB.TXT
|
||||||
|
PAGE 2
|
||||||
|
|
||||||
|
|
||||||
|
TABLE OF CONTENTS
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
1.0 ABSTRACT
|
||||||
|
|
||||||
|
2.0 REQUIREMENTS
|
||||||
|
|
||||||
|
2.1 EQUIPMENT
|
||||||
|
|
||||||
|
2.2 STORAGE
|
||||||
|
|
||||||
|
2.3 PRELIMINARY PROGRAMS
|
||||||
|
|
||||||
|
3.0 PROGRAM PROCEDURES
|
||||||
|
|
||||||
|
3.1 LOADING PROCEDURE
|
||||||
|
|
||||||
|
3.2 STARTING PROCEDURE
|
||||||
|
|
||||||
|
3.3 OPERATING PROCEDURE
|
||||||
|
|
||||||
|
4.0 ERRORS
|
||||||
|
|
||||||
|
5.0 ITERATION COUNTER
|
||||||
|
|
||||||
|
6.0 CYCLE TIME
|
||||||
|
|
||||||
|
7.0 OPERATIONAL VARIATIONS
|
||||||
|
|
||||||
|
8.0 MISCELLANEOUS
|
||||||
|
|
||||||
|
9.0 LISTING
|
||||||
|
MAINDEC-10-DAKAB.TXT
|
||||||
|
PAGE 3
|
||||||
|
|
||||||
|
|
||||||
|
1.0 ABSTRACT
|
||||||
|
|
||||||
|
THIS PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC IS THE
|
||||||
|
SECOND IN A SERIES OF PDP-10 KA10 PROCESSOR DIAGNOSTICS.
|
||||||
|
THE DIAGNOSTIC TESTS SOME FOLLOWING INSTRUCTIONS.
|
||||||
|
MOVE, COMPARE, TEST, HALF WORD AND BOOLE.
|
||||||
|
IT ALSO TESTS THE ADDERS USING ADD AND COMPARE INSTRUCTIONS.
|
||||||
|
|
||||||
|
2.0 REQUIREMENTS
|
||||||
|
|
||||||
|
2.1 EQUIPMENT
|
||||||
|
|
||||||
|
A PDP-10 KA10 WITH A MINIMUM OF 32K OF MEMORY
|
||||||
|
|
||||||
|
PAPER TAPE READER
|
||||||
|
DECTAPE (OPTIONAL)
|
||||||
|
CONSOLE TELETYPE
|
||||||
|
|
||||||
|
2.2 STORAGE
|
||||||
|
|
||||||
|
THE PROGRAM RUNS WITHIN 32K OF MEMORY.
|
||||||
|
|
||||||
|
2.3 PRELIMINARY PROGRAMS
|
||||||
|
|
||||||
|
CONSOLE FUNCTIONS WORKING PROPERLY
|
||||||
|
PAPER TAPE OR DECTAPE READ-IN WORKING PROPERLY
|
||||||
|
PREVIOUS PROCESSOR DIAGNOSTICS
|
||||||
|
MAINDEC-10-DAKAB.TXT
|
||||||
|
PAGE 4
|
||||||
|
|
||||||
|
|
||||||
|
3.0 PROGRAM PROCEDURES
|
||||||
|
|
||||||
|
3.1 LOADING PROCEDURE
|
||||||
|
|
||||||
|
PAPER TAPE - HARDWARE READ-IN (READER DEVICE CODE 104)
|
||||||
|
DECTAPE - LOAD WITH DIAMON (DECTAPE DEVICE CODE 320)
|
||||||
|
|
||||||
|
3.2 STARTING PROCEDURE
|
||||||
|
|
||||||
|
STAND-ALONE STARTING ADDRESS IS 30000.
|
||||||
|
|
||||||
|
IF THE DIAGNOSTIC FAILS TO START CORRECTLY TRY STARTING AT THE
|
||||||
|
FIRST TEST INSTEAD OF AT THE BEGINNING OF THE CONTROL SEQUENCE.
|
||||||
|
(SEE LISTING).
|
||||||
|
|
||||||
|
3.3 OPERATING PROCEDURE
|
||||||
|
|
||||||
|
ONCE STARTED THE PROGRAM WILL CYCLE CONTINUALLY UNTIL STOPPED
|
||||||
|
OR AN ERROR OCCURS.
|
||||||
|
|
||||||
|
4.0 ERRORS
|
||||||
|
|
||||||
|
ERRORS ARE IN THE FORM OF HALT INSTRUCTIONS. THE LISTING
|
||||||
|
SHOULD BE CONSULTED TO DETERMINE THE CAUSE OF THE ERROR. A
|
||||||
|
NO OPERATION (JUMP) INSTRUCTION FOLLOWS EACH HALT. THIS
|
||||||
|
MAY BE USEFUL IN CONSTRUCTING A SCOPE LOOP TO CYCLE ON THE
|
||||||
|
FAILING INSTRUCTION.
|
||||||
|
|
||||||
|
5.0 ITERATION COUNTER
|
||||||
|
|
||||||
|
THE ITERATION COUNT OF THE PROGRAM IS DISPLAYED IN THE MEM-
|
||||||
|
ORY INDICATORS (MI). THIS COUNT IS A DECREMENTING COUNT AND
|
||||||
|
INITIALLY STARTS AT -1 IN STAND-ALONE OPERATION.
|
||||||
|
|
||||||
|
6.0 CYCLE TIME
|
||||||
|
|
||||||
|
THE CYCLE TIME OF THE PROGRAM IS IN THE MILLISECOND RANGE AND
|
||||||
|
IS THEREFORE SUITABLE FOR TAKING MARGINS, VIBRATION TESTS, ETC.
|
||||||
|
|
||||||
|
MAINDEC-10-DAKAB.TXT
|
||||||
|
PAGE 5
|
||||||
|
|
||||||
|
|
||||||
|
7.0 OPERATIONAL VARIATIONS
|
||||||
|
|
||||||
|
A. DIAGNOSTIC MONITOR
|
||||||
|
|
||||||
|
THE PROGRAM IS USABLE WITH THE DIAGNOSTIC MONITOR TO PRO-
|
||||||
|
VIDE RELIABILITY TESTS, ACCEPTANCE TESTS, AND/OR TO PRO-
|
||||||
|
VIDE A QUICK METHOD OF ISOLATION OF A FAULT TO A PARTICULAR
|
||||||
|
AREA OF THE PROCESSOR. CERTAIN PROCEDURES ARE USED WHEN
|
||||||
|
THE PROGRAM IS USED IN THIS MANNER. THEY ARE:
|
||||||
|
|
||||||
|
1. THE DIAGNOSTIC MONITOR TRANSFERS CONTROL TO THE PRO-
|
||||||
|
GRAM AND STARTS IT AT LOCATION 30002.
|
||||||
|
|
||||||
|
2. MONCTL - LOCATION 30043 IS USED AS THE DIAGNOSTIC MON-
|
||||||
|
ITOR CONTROL FLAG WORD.
|
||||||
|
|
||||||
|
B. USER MODE
|
||||||
|
|
||||||
|
THE PROGRAM WILL OPERATE IN USER MODE AND AS SUCH PROVIDES
|
||||||
|
ASSURANCE THAT THE PROCESSOR IS PERFORMING ALL FUNCTIONS
|
||||||
|
CORRECTLY. USER MODE STARTING ADDRESS IS 30000.
|
||||||
|
|
||||||
|
C. SYSTEM EXERCISER
|
||||||
|
|
||||||
|
STARTING ADDRESS IS 30003. NO DATA SWITCHES ARE USED BY
|
||||||
|
THIS PROGRAM.
|
||||||
|
|
||||||
|
8.0 MISCELLANEOUS
|
||||||
|
|
||||||
|
NONE
|
||||||
|
|
||||||
|
9.0 LISTING
|
||||||
|
```
|
||||||
|
|
||||||
|
DAKAB.HST
|
||||||
|
---------
|
||||||
|
|
||||||
|
THIS IS A HISTORY OF THE DEVELOPMENT OF MAINDEC-10-DAKAB
|
||||||
|
|
||||||
|
************************************************************************
|
||||||
|
|
||||||
|
PRODUCT CODE: MAINDEC-10-DAKAB
|
||||||
|
|
||||||
|
PRODUCT NAME: BASIC INSTRUCTION DIAGNOSTIC #2
|
||||||
|
|
||||||
|
DATE RELEASED: JANUARY 1977
|
||||||
|
|
||||||
|
VERSION: 0.2
|
||||||
|
|
||||||
|
UPDATE AUTHOR: JOHN R. KIRCHOFF
|
||||||
|
|
||||||
|
CHANGES MADE:
|
||||||
|
|
||||||
|
1. UPGRADE TO ALLOW COMPATABILITY WITH THE SUBROUTINE PACKAGE.
|
||||||
|
|
||||||
|
************************************************************************
|
||||||
|
|
||||||
|
ORIGINAL VERSION: 0.1
|
||||||
|
|
||||||
|
ORIGINAL AUTHOR: RICHARD MALISKA
|
||||||
|
|
||||||
|
ORIGINAL RELEASE: 16-MAR-72
|
||||||
|
|
||||||
|
************************************************************************
|
||||||
|
|
||||||
|
DAKAB.MAC
|
||||||
|
---------
|
||||||
|
|
||||||
|
[[Download](DAKAB.MAC.txt)]
|
||||||
|
|
||||||
|
{% highlight text %}
|
||||||
|
{% include_relative DAKAB.MAC.txt %}
|
||||||
|
{% endhighlight %}
|
||||||
7750
apps/pdp10/diags/klad/dakac/DAKAC.LST.txt
Normal file
7750
apps/pdp10/diags/klad/dakac/DAKAC.LST.txt
Normal file
File diff suppressed because it is too large
Load diff
2652
apps/pdp10/diags/klad/dakac/DAKAC.MAC.txt
Normal file
2652
apps/pdp10/diags/klad/dakac/DAKAC.MAC.txt
Normal file
File diff suppressed because it is too large
Load diff
2652
apps/pdp10/diags/klad/dakac/DAKACM.MAC.txt
Normal file
2652
apps/pdp10/diags/klad/dakac/DAKACM.MAC.txt
Normal file
File diff suppressed because it is too large
Load diff
273
apps/pdp10/diags/klad/dakac/README.md
Normal file
273
apps/pdp10/diags/klad/dakac/README.md
Normal file
|
|
@ -0,0 +1,273 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: PDP-10 KA10 Basic Instruction Diagnostic #3
|
||||||
|
permalink: /apps/pdp10/diags/klad/dakac/
|
||||||
|
machines:
|
||||||
|
- id: testka10
|
||||||
|
type: pdp10
|
||||||
|
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
||||||
|
debugger: true
|
||||||
|
commands: a 30724 DAKAC.MAC
|
||||||
|
---
|
||||||
|
|
||||||
|
PDP-10 KA10 Basic Instruction Diagnostic #3
|
||||||
|
-------------------------------------------
|
||||||
|
|
||||||
|
The *PDP-10 KA10 Basic Instruction Diagnostic #3* (MAINDEC-10-DAKAC-B-D) test code has been extracted from
|
||||||
|
[DAKACM.MAC](DAKACM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakacm.mac.html)]
|
||||||
|
for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below.
|
||||||
|
|
||||||
|
Resources for this test include:
|
||||||
|
|
||||||
|
- [Instructions](#dakactxt)
|
||||||
|
- [History](#dakachst)
|
||||||
|
- [Source Code](#dakacmac)
|
||||||
|
- [MACRO-10 Listing](DAKAC.LST.txt)
|
||||||
|
- [Additional Information](http://archive.pcjs.org/apps/pdp10/diags/klad/dakac/DAKAC.SEQ.txt)
|
||||||
|
|
||||||
|
{% include machine.html id="testka10" %}
|
||||||
|
|
||||||
|
The Debugger's assemble ("a") command can be used to test the new built-in
|
||||||
|
[MACRO-10 Mini-Assembler](/modules/pdp10/lib/macro10.js), which supports a subset
|
||||||
|
of the [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language.
|
||||||
|
This command:
|
||||||
|
|
||||||
|
a 30724 DAKAC.MAC
|
||||||
|
|
||||||
|
will automatically read the [DAKAC.MAC](DAKAC.MAC.txt) source file (a slightly modified copy of [DAKACM.MAC](DAKACM.MAC.txt)),
|
||||||
|
assemble it, and then load the binary output at the specified address.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
DAKAC.TXT
|
||||||
|
---------
|
||||||
|
|
||||||
|
```
|
||||||
|
MAINDEC-10-DAKAC.TXT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
IDENTIFICATION
|
||||||
|
--------------
|
||||||
|
|
||||||
|
PRODUCT CODE: MAINDEC-10-DAKAC-B-D
|
||||||
|
|
||||||
|
PRODUCT NAME: DECSYSTEM10 PDP-10 KA10 BASIC
|
||||||
|
INSTRUCTION DIAGNOSTIC (3)
|
||||||
|
|
||||||
|
FUNCTION: LOGICAL, HALF WORD, ADDER
|
||||||
|
|
||||||
|
VERSION: 0.2
|
||||||
|
|
||||||
|
DATE RELEASED: JANUARY 1977
|
||||||
|
|
||||||
|
MAINTAINED BY: DIAGNOSTIC ENGINEERING GROUP
|
||||||
|
|
||||||
|
AUTHOR: JOHN R. KIRCHOFF
|
||||||
|
|
||||||
|
COPYRIGHT(C) 1976,1977
|
||||||
|
DIGITAL EQUIPMENT CORPORATION
|
||||||
|
MARLBORO, MASS. 01752
|
||||||
|
|
||||||
|
THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY
|
||||||
|
ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH
|
||||||
|
THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE,
|
||||||
|
OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE
|
||||||
|
MADE AVAILABLE TO ANY OTHER PERSON EXECPT FOR USE ON SUCH SYSTEM
|
||||||
|
AND TO ONE WHO AGREES TO THESE LICENSE TERMS. TITLE TO AND
|
||||||
|
OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.
|
||||||
|
|
||||||
|
THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
|
||||||
|
NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
|
||||||
|
EQUIPMENT CORPORATION.
|
||||||
|
|
||||||
|
DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
|
||||||
|
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
|
||||||
|
MAINDEC-10-DAKAC.TXT
|
||||||
|
PAGE 2
|
||||||
|
|
||||||
|
|
||||||
|
TABLE OF CONTENTS
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
1.0 ABSTRACT
|
||||||
|
|
||||||
|
2.0 REQUIREMENTS
|
||||||
|
|
||||||
|
2.1 EQUIPMENT
|
||||||
|
|
||||||
|
2.2 STORAGE
|
||||||
|
|
||||||
|
2.3 PRELIMINARY PROGRAMS
|
||||||
|
|
||||||
|
3.0 PROGRAM PROCEDURES
|
||||||
|
|
||||||
|
3.1 LOADING PROCEDURE
|
||||||
|
|
||||||
|
3.2 STARTING PROCEDURE
|
||||||
|
|
||||||
|
3.3 OPERATING PROCEDURE
|
||||||
|
|
||||||
|
4.0 ERRORS
|
||||||
|
|
||||||
|
5.0 ITERATION COUNTER
|
||||||
|
|
||||||
|
6.0 CYCLE TIME
|
||||||
|
|
||||||
|
7.0 OPERATIONAL VARIATIONS
|
||||||
|
|
||||||
|
8.0 MISCELLANEOUS
|
||||||
|
|
||||||
|
9.0 LISTING
|
||||||
|
MAINDEC-10-DAKAC.TXT
|
||||||
|
PAGE 3
|
||||||
|
|
||||||
|
|
||||||
|
1.0 ABSTRACT
|
||||||
|
|
||||||
|
THIS PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC IS THE
|
||||||
|
THIRD IN A SERIES OF PDP-10 KA10 PROCESSOR DIAGNOSTICS.
|
||||||
|
THE DIAGNOSTIC TESTS SOME FOLLOWING INSTRUCTIONS.
|
||||||
|
LOGICAL TEST, HALF WORD INSTRUCTIONS AND THE ADDER.
|
||||||
|
|
||||||
|
2.0 REQUIREMENTS
|
||||||
|
|
||||||
|
2.1 EQUIPMENT
|
||||||
|
|
||||||
|
A PDP-10 KA10 WITH A MINIMUM OF 32K OF MEMORY
|
||||||
|
|
||||||
|
PAPER-TAPE READER
|
||||||
|
DECTAPE (OPTIONAL)
|
||||||
|
CONSOLE TELETYPE
|
||||||
|
|
||||||
|
2.2 STORAGE
|
||||||
|
|
||||||
|
THE PROGRAM RUNS WITHIN 32K OF MEMORY.
|
||||||
|
|
||||||
|
2.3 PRELIMINARY PROGRAMS
|
||||||
|
|
||||||
|
CONSOLE FUNCTIONS WORKING PROPERLY
|
||||||
|
PAPER-TAPE OR DECTAPE READ-IN WORKING PROPERLY
|
||||||
|
PREVIOUS PROCESSOR DIAGNOSTICS
|
||||||
|
MAINDEC-10-DAKAC.TXT
|
||||||
|
PAGE 4
|
||||||
|
|
||||||
|
|
||||||
|
3.0 PROGRAM PROCEDURES
|
||||||
|
|
||||||
|
3.1 LOADING PROCEDURE
|
||||||
|
|
||||||
|
PAPER TAPE - HARDWARE READ-IN (READER DEVICE CODE 104)
|
||||||
|
DECTAPE - LOAD WITH DIAMON (DECTAPE DEVICE CODE 320)
|
||||||
|
|
||||||
|
3.2 STARTING PROCEDURE
|
||||||
|
|
||||||
|
STAND-ALONE STARTING ADDRESS IS 30000.
|
||||||
|
|
||||||
|
IF THE DIAGNOSTIC FAILS TO START CORRECTLY TRY STARTING AT THE
|
||||||
|
FIRST TEST INSTEAD OF AT THE BEGINNING OF THE CONTROL SEQUENCE.
|
||||||
|
(SEE LISTING).
|
||||||
|
|
||||||
|
3.3 OPERATING PROCEDURE
|
||||||
|
|
||||||
|
ONCE STARTED THE PROGRAM WILL CYCLE CONTINUALLY UNTIL STOPPED
|
||||||
|
OR AN ERROR OCCURS.
|
||||||
|
|
||||||
|
4.0 ERRORS
|
||||||
|
|
||||||
|
ERRORS ARE IN THE FORM OF HALT INSTRUCTIONS. THE LISTING
|
||||||
|
SHOULD BE CONSULTED TO DETERMINE THE CAUSE OF THE ERROR. A
|
||||||
|
NO OPERATION (JUMP) INSTRUCTION FOLLOWS EACH HALT. THIS
|
||||||
|
MAY BE USEFUL IN CONSTRUCTING A SCOPE LOOP TO CYCLE ON THE
|
||||||
|
FAILING INSTRUCTION.
|
||||||
|
|
||||||
|
5.0 ITERATION COUNTER
|
||||||
|
|
||||||
|
THE ITERATION COUNT OF THE PROGRAM IS DISPLAYED IN THE MEM-
|
||||||
|
ORY INDICATORS (MI). THIS COUNT IS A DECREMENTING COUNT AND
|
||||||
|
INITIALLY STARTS AT -1 IN STAND-ALONE OPERATION.
|
||||||
|
|
||||||
|
6.0 CYCLE TIME
|
||||||
|
|
||||||
|
THE CYCLE TIME OF THE PROGRAM IS IN THE MILLISECOND RANGE AND
|
||||||
|
IS THEREFORE SUITABLE FOR TAKING MARGINS, VIBRATION TESTS, ETC.
|
||||||
|
|
||||||
|
MAINDEC-10-DAKAC.TXT
|
||||||
|
PAGE 5
|
||||||
|
|
||||||
|
|
||||||
|
7.0 OPERATIONAL VARIATIONS
|
||||||
|
|
||||||
|
A. DIAGNOSTIC MONITOR
|
||||||
|
|
||||||
|
THE PROGRAM IS USABLE WITH THE DIAGNOSTIC MONITOR TO PRO-
|
||||||
|
VIDE RELIABILITY TESTS, ACCEPTANCE TESTS, AND/OR TO PRO-
|
||||||
|
VIDE A QUICK METHOD OF ISOLATION OF A FAULT TO A PARTICULAR
|
||||||
|
AREA OF THE PROCESSOR. CERTAIN PROCEDURES ARE USED WHEN
|
||||||
|
THE PROGRAM IS USED IN THIS MANNER. THEY ARE:
|
||||||
|
|
||||||
|
1. THE DIAGNOSTIC MONITOR TRANSFERS CONTROL TO THE PRO-
|
||||||
|
GRAM AND STARTS IT AT LOCATION 30002.
|
||||||
|
|
||||||
|
2. MONCTL - LOCATION 30043 IS USED AS THE DIAGNOSTIC MON-
|
||||||
|
ITOR CONTROL FLAG WORD.
|
||||||
|
|
||||||
|
B. USER MODE
|
||||||
|
|
||||||
|
THE PROGRAM WILL OPERATE IN USER MODE AND AS SUCH PROVIDES
|
||||||
|
ASSURANCE THAT THE PROCESSOR IS PERFORMING ALL FUNCTIONS
|
||||||
|
CORRECTLY. USER MODE STARTING ADDRESS IS 30000.
|
||||||
|
|
||||||
|
C. SYSTEM EXERCISER
|
||||||
|
|
||||||
|
STARTING ADDRESS IS 30003. NO DATA SWITCHES ARE USED BY
|
||||||
|
THIS PROGRAM.
|
||||||
|
|
||||||
|
8.0 MISCELLANEOUS
|
||||||
|
|
||||||
|
NONE
|
||||||
|
|
||||||
|
9.0 LISTING
|
||||||
|
```
|
||||||
|
|
||||||
|
DAKAC.HST
|
||||||
|
---------
|
||||||
|
|
||||||
|
THIS IS A HISTORY OF THE DEVELOPMENT OF MAINDEC-10-DAKAC
|
||||||
|
|
||||||
|
************************************************************************
|
||||||
|
|
||||||
|
PRODUCT CODE: MAINDEC-10-DAKAC
|
||||||
|
|
||||||
|
PRODUCT NAME: BASIC INSTRUCTION DIAGNOSTIC #3
|
||||||
|
|
||||||
|
DATE RELEASED: JANUARY 1977
|
||||||
|
|
||||||
|
VERSION: 0.2
|
||||||
|
|
||||||
|
UPDATE AUTHOR: JOHN R. KIRCHOFF
|
||||||
|
|
||||||
|
CHANGES MADE:
|
||||||
|
|
||||||
|
1. UPGRADE TO ALLOW COMPATABILITY WITH THE SUBROUTINE PACKAGE.
|
||||||
|
|
||||||
|
************************************************************************
|
||||||
|
|
||||||
|
ORIGINAL VERSION: 0.1
|
||||||
|
|
||||||
|
ORIGINAL AUTHOR: RICHARD MALISKA
|
||||||
|
|
||||||
|
ORIGINAL RELEASE: 16-MAR-72
|
||||||
|
|
||||||
|
************************************************************************
|
||||||
|
|
||||||
|
DAKAC.MAC
|
||||||
|
---------
|
||||||
|
|
||||||
|
[[Download](DAKAC.MAC.txt)]
|
||||||
|
|
||||||
|
{% highlight text %}
|
||||||
|
{% include_relative DAKAC.MAC.txt %}
|
||||||
|
{% endhighlight %}
|
||||||
|
|
@ -35,16 +35,16 @@ DEFINE SFLAG (A)<
|
||||||
JRST 2,.+1(1) ;SET A FLAG>
|
JRST 2,.+1(1) ;SET A FLAG>
|
||||||
SUBTTL DIAGNOSTIC SECTION
|
SUBTTL DIAGNOSTIC SECTION
|
||||||
|
|
||||||
START: SETZM USER# ;CLEAR USER CONTROL WORD
|
START: ;SETZM USER# ;CLEAR USER CONTROL WORD
|
||||||
JSP 0,.+1 ;GET FLAGS
|
;JSP 0,.+1 ;GET FLAGS
|
||||||
TLNE USERF ;IN USER MODE?
|
;TLNE USERF ;IN USER MODE?
|
||||||
SETOM USER ;YES, SET USER CONTROL WORD
|
;SETOM USER ;YES, SET USER CONTROL WORD
|
||||||
SKIPN MONFLG ;SPECIAL USER MODE?
|
;SKIPN MONFLG ;SPECIAL USER MODE?
|
||||||
SETZM USER ;YES, CLEAR USER CONTROL WORD
|
;SETZM USER ;YES, CLEAR USER CONTROL WORD
|
||||||
SKIPN USER
|
;SKIPN USER
|
||||||
JRST C00
|
;JRST C00
|
||||||
SKIPL MONCTL
|
;SKIPL MONCTL
|
||||||
TTCALL 3,PGMNAM ;MENTION OUR NAME
|
;TTCALL 3,PGMNAM ;MENTION OUR NAME
|
||||||
JRST STARTA
|
JRST STARTA
|
||||||
|
|
||||||
PGMNAM: ASCIZ/
|
PGMNAM: ASCIZ/
|
||||||
|
|
@ -2051,4 +2051,4 @@ C22700: SETZM 2 ;INITIALIZE AC
|
||||||
|
|
||||||
;**********
|
;**********
|
||||||
|
|
||||||
JRST BEGEND
|
;JRST BEGEND
|
||||||
|
|
|
||||||
|
|
@ -35,16 +35,16 @@ DEFINE SFLAG (A)<
|
||||||
JRST 2,.+1(1) ;SET A FLAG>
|
JRST 2,.+1(1) ;SET A FLAG>
|
||||||
SUBTTL DIAGNOSTIC SECTION
|
SUBTTL DIAGNOSTIC SECTION
|
||||||
|
|
||||||
START: ;SETZM USER# ;CLEAR USER CONTROL WORD
|
START: SETZM USER# ;CLEAR USER CONTROL WORD
|
||||||
;JSP 0,.+1 ;GET FLAGS
|
JSP 0,.+1 ;GET FLAGS
|
||||||
;TLNE USERF ;IN USER MODE?
|
TLNE USERF ;IN USER MODE?
|
||||||
;SETOM USER ;YES, SET USER CONTROL WORD
|
SETOM USER ;YES, SET USER CONTROL WORD
|
||||||
;SKIPN MONFLG ;SPECIAL USER MODE?
|
SKIPN MONFLG ;SPECIAL USER MODE?
|
||||||
;SETZM USER ;YES, CLEAR USER CONTROL WORD
|
SETZM USER ;YES, CLEAR USER CONTROL WORD
|
||||||
;SKIPN USER
|
SKIPN USER
|
||||||
;JRST C00
|
JRST C00
|
||||||
;SKIPL MONCTL
|
SKIPL MONCTL
|
||||||
;TTCALL 3,PGMNAM ;MENTION OUR NAME
|
TTCALL 3,PGMNAM ;MENTION OUR NAME
|
||||||
JRST STARTA
|
JRST STARTA
|
||||||
|
|
||||||
PGMNAM: ASCIZ/
|
PGMNAM: ASCIZ/
|
||||||
|
|
@ -2051,4 +2051,4 @@ C22700: SETZM 2 ;INITIALIZE AC
|
||||||
|
|
||||||
;**********
|
;**********
|
||||||
|
|
||||||
; JRST BEGEND
|
JRST BEGEND
|
||||||
|
|
@ -7,14 +7,14 @@ machines:
|
||||||
type: pdp10
|
type: pdp10
|
||||||
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
||||||
debugger: true
|
debugger: true
|
||||||
commands: a 30724 MYDAKAD.MAC
|
commands: a 30724 DAKAD.MAC
|
||||||
---
|
---
|
||||||
|
|
||||||
PDP-10 KA10 Basic Instruction Diagnostic #4
|
PDP-10 KA10 Basic Instruction Diagnostic #4
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
|
|
||||||
The *PDP-10 KA10 Basic Instruction Diagnostic #4* (MAINDEC-10-DAKAD-B-D) test code has been extracted from
|
The *PDP-10 KA10 Basic Instruction Diagnostic #4* (MAINDEC-10-DAKAD-B-D) test code has been extracted from
|
||||||
[DAKAD.MAC](DAKAD.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakadm.mac.html)]
|
[DAKADM.MAC](DAKADM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakadm.mac.html)]
|
||||||
for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below.
|
for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below.
|
||||||
|
|
||||||
Resources for this test include:
|
Resources for this test include:
|
||||||
|
|
@ -32,9 +32,9 @@ The Debugger's assemble ("a") command can be used to test the new built-in
|
||||||
of the [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language.
|
of the [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language.
|
||||||
This command:
|
This command:
|
||||||
|
|
||||||
a 30724 MYDAKAD.MAC
|
a 30724 DAKAD.MAC
|
||||||
|
|
||||||
will automatically read the [MYDAKAD.MAC](MYDAKAD.MAC.txt) source file (a slightly modified copy of [DAKAD.MAC](DAKAD.MAC.txt)),
|
will automatically read the [DAKAD.MAC](DAKAD.MAC.txt) source file (a slightly modified copy of [DAKADM.MAC](DAKADM.MAC.txt)),
|
||||||
assemble it, and then load the binary output at the specified address. Use the command `db 30724` to dump the first few words
|
assemble it, and then load the binary output at the specified address. Use the command `db 30724` to dump the first few words
|
||||||
of binary data:
|
of binary data:
|
||||||
|
|
||||||
|
|
@ -246,7 +246,6 @@ SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
|
||||||
NONE
|
NONE
|
||||||
|
|
||||||
9.0 LISTING
|
9.0 LISTING
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
DAKAD.HST
|
DAKAD.HST
|
||||||
|
|
|
||||||
12
apps/pdp10/tests/opcodes/OPTEST02.simh
Normal file
12
apps/pdp10/tests/opcodes/OPTEST02.simh
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
dep 100 JFCL 17,101
|
||||||
|
dep 101 MOVEI 1,1
|
||||||
|
dep 102 SUBI 1,1
|
||||||
|
dep 103 JFCL 17,104
|
||||||
|
dep 104 SUBI 1,1
|
||||||
|
dep 105 MOVSI 1,400000
|
||||||
|
dep 106 ADDI 1,1
|
||||||
|
dep 107 SUBI 1,1
|
||||||
|
dep 110 JFCL 17,111
|
||||||
|
dep 111 SUBI 1,1
|
||||||
|
dep pc 100
|
||||||
|
do t
|
||||||
11
apps/pdp10/tests/opcodes/OPTEST02.txt
Normal file
11
apps/pdp10/tests/opcodes/OPTEST02.txt
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
A 100;
|
||||||
|
JFCL 17,101;
|
||||||
|
MOVEI 1,1;
|
||||||
|
SUBI 1,1;
|
||||||
|
JFCL 17,104;
|
||||||
|
SUBI 1,1;
|
||||||
|
MOVSI 1,400000;
|
||||||
|
ADDI 1,1;
|
||||||
|
SUBI 1,1;
|
||||||
|
JFCL 17,111;
|
||||||
|
SUBI 1,1;
|
||||||
|
|
@ -2160,7 +2160,7 @@ PDP10.opBLT = function(op, acc)
|
||||||
*/
|
*/
|
||||||
PDP10.opAOBJP = function(op, acc)
|
PDP10.opAOBJP = function(op, acc)
|
||||||
{
|
{
|
||||||
var dst = (this.readWord(acc) + 0o000001000001) % PDP10.WORD_MASK;
|
var dst = (this.readWord(acc) + 0o000001000001) % PDP10.WORD_LIMIT;
|
||||||
this.writeWord(acc, dst);
|
this.writeWord(acc, dst);
|
||||||
if (dst < PDP10.INT_LIMIT) this.setPC(this.regEA);
|
if (dst < PDP10.INT_LIMIT) this.setPC(this.regEA);
|
||||||
};
|
};
|
||||||
|
|
@ -2184,7 +2184,7 @@ PDP10.opAOBJP = function(op, acc)
|
||||||
*/
|
*/
|
||||||
PDP10.opAOBJN = function(op, acc)
|
PDP10.opAOBJN = function(op, acc)
|
||||||
{
|
{
|
||||||
var dst = (this.readWord(acc) + 0o000001000001) % PDP10.WORD_MASK;
|
var dst = (this.readWord(acc) + 0o000001000001) % PDP10.WORD_LIMIT;
|
||||||
this.writeWord(acc, dst);
|
this.writeWord(acc, dst);
|
||||||
if (dst >= PDP10.INT_LIMIT) this.setPC(this.regEA);
|
if (dst >= PDP10.INT_LIMIT) this.setPC(this.regEA);
|
||||||
};
|
};
|
||||||
|
|
@ -6500,7 +6500,7 @@ PDP10.CLR = function(dst, src)
|
||||||
*/
|
*/
|
||||||
PDP10.CMP = function(dst, src)
|
PDP10.CMP = function(dst, src)
|
||||||
{
|
{
|
||||||
return (dst < PDP10.INT_LIMIT? dst : dst - PDP10.WORD_LIMIT) - (src < PDP10.INT_LIMIT? src : src - PDP10.INT_LIMIT);
|
return (dst < PDP10.INT_LIMIT? dst : dst - PDP10.WORD_LIMIT) - (src < PDP10.INT_LIMIT? src : src - PDP10.WORD_LIMIT);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -172,7 +172,6 @@ class DebuggerPDP10 extends Debugger {
|
||||||
this.nStep = 0;
|
this.nStep = 0;
|
||||||
this.sCmdTracePrev = null;
|
this.sCmdTracePrev = null;
|
||||||
this.sCmdDumpPrev = null;
|
this.sCmdDumpPrev = null;
|
||||||
this.fIgnoreNextCheckFault = false; // TODO: Does this serve any purpose on a PDP-11?
|
|
||||||
this.nSuppressBreaks = 0;
|
this.nSuppressBreaks = 0;
|
||||||
this.cInstructions = this.cInstructionsStart = 0;
|
this.cInstructions = this.cInstructionsStart = 0;
|
||||||
this.nCycles = this.nCyclesStart = this.msStart = 0;
|
this.nCycles = this.nCyclesStart = this.msStart = 0;
|
||||||
|
|
@ -2607,7 +2606,7 @@ class DebuggerPDP10 extends Debugger {
|
||||||
}
|
}
|
||||||
|
|
||||||
var sOptions = asArgs[0].substr(1);
|
var sOptions = asArgs[0].substr(1);
|
||||||
var match = sOpcode.match(/^(['"]?)(.*\.mac)\1$/i);
|
var match = sOpcode.match(/^(['"]?)(.*\.mac|.*\.html)\1$/i);
|
||||||
if (match) {
|
if (match) {
|
||||||
var dbg = this;
|
var dbg = this;
|
||||||
if (this.macro10) {
|
if (this.macro10) {
|
||||||
|
|
@ -3327,9 +3326,6 @@ class DebuggerPDP10 extends Debugger {
|
||||||
*/
|
*/
|
||||||
doRun(sCmd, sAddr, sOptions, fQuiet)
|
doRun(sCmd, sAddr, sOptions, fQuiet)
|
||||||
{
|
{
|
||||||
if (sCmd == "gt") {
|
|
||||||
this.fIgnoreNextCheckFault = true;
|
|
||||||
}
|
|
||||||
if (sAddr !== undefined) {
|
if (sAddr !== undefined) {
|
||||||
var dbgAddr = this.parseAddr(sAddr);
|
var dbgAddr = this.parseAddr(sAddr);
|
||||||
if (!dbgAddr) return;
|
if (!dbgAddr) return;
|
||||||
|
|
|
||||||
|
|
@ -348,7 +348,7 @@ class Macro10 {
|
||||||
* If the "preprocess" option is set, then just return the plain text we retrieved.
|
* If the "preprocess" option is set, then just return the plain text we retrieved.
|
||||||
*/
|
*/
|
||||||
if (this.sOptions.indexOf('p') >= 0) {
|
if (this.sOptions.indexOf('p') >= 0) {
|
||||||
this.println(this.asLines.join());
|
this.println(this.asLines.join(""));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -577,6 +577,7 @@ class Macro10 {
|
||||||
this.addMacro(sOperator, sRemainder);
|
this.addMacro(sOperator, sRemainder);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Macro10.PSEUDO_OP.LALL: // TODO
|
||||||
case Macro10.PSEUDO_OP.PAGE: // TODO
|
case Macro10.PSEUDO_OP.PAGE: // TODO
|
||||||
case Macro10.PSEUDO_OP.SUBTTL: // TODO
|
case Macro10.PSEUDO_OP.SUBTTL: // TODO
|
||||||
case Macro10.PSEUDO_OP.TITLE: // TODO
|
case Macro10.PSEUDO_OP.TITLE: // TODO
|
||||||
|
|
@ -1417,6 +1418,7 @@ Macro10.PSEUDO_OP = {
|
||||||
IFN: "IFN",
|
IFN: "IFN",
|
||||||
IRP: "IRP",
|
IRP: "IRP",
|
||||||
IRPC: "IRPC",
|
IRPC: "IRPC",
|
||||||
|
LALL: "LALL",
|
||||||
LITERAL: "LITERAL", // this is a pseudo-pseudo-op, used for internal purposes
|
LITERAL: "LITERAL", // this is a pseudo-pseudo-op, used for internal purposes
|
||||||
PAGE: "PAGE",
|
PAGE: "PAGE",
|
||||||
REPEAT: "REPEAT",
|
REPEAT: "REPEAT",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue