Updated PDP-10 diagnostic README
This commit is contained in:
parent
d2bb577bfd
commit
e1e11b3b2d
4 changed files with 213 additions and 8 deletions
|
|
@ -12,18 +12,216 @@ machines:
|
|||
PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC
|
||||
----------------------------------------
|
||||
|
||||
The **PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC** ([DAKAD.MAC](DAKAD.MAC)), as extracted from the
|
||||
[original file](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakaam.mac.html), is shown below,
|
||||
The *PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC* (MAINDEC-10-DAKAD-B-D) test code has been extracted from [DAKAD.MAC](DAKAD.MAC)
|
||||
[[original file](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakaam.mac.html)] and is shown below,
|
||||
along with a [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/).
|
||||
|
||||
The Debugger command `a 100 /apps/pdp10/tapes/diags/klad/dakad/TEST.MAC`
|
||||
can be used to test the new [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf)
|
||||
work-alike assembler being added to the PDP-10 Emulator.
|
||||
can be used to test the new [Mini MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf)
|
||||
assembler being added to the PDP-10 Emulator.
|
||||
|
||||
{% include machine.html id="testka10" %}
|
||||
|
||||
More information about MAINDEC-10-DAKAD-B-D:
|
||||
---
|
||||
|
||||
DAKAD.TXT
|
||||
---------
|
||||
|
||||
```
|
||||
MAINDEC-10-DAKAD.TXT
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IDENTIFICATION
|
||||
--------------
|
||||
|
||||
PRODUCT CODE: MAINDEC-10-DAKAD-B-D
|
||||
|
||||
PRODUCT NAME: DECSYSTEM10 PDP-10 KA10 BASIC
|
||||
INSTRUCTION DIAGNOSTIC (4)
|
||||
|
||||
FUNCTION: REGISTER ADDRESSING, PC CHANGE, XCT
|
||||
|
||||
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-DAKAD.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-DAKAD.TXT
|
||||
PAGE 3
|
||||
|
||||
|
||||
1.0 ABSTRACT
|
||||
|
||||
THIS PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC IS THE
|
||||
FOURTH IN A SERIES OF PDP-10 KA10 PROCESSOR DIAGNOSTICS.
|
||||
THE DIAGNOSTIC TESTS REGISTER ADDRESSING, JFCL, AR FLAGS,
|
||||
AOS, SOS, JRST, AOBJX, JSP, XCT, INDIRECT AND
|
||||
INDEXED ADDRESSING.
|
||||
|
||||
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-DAKAD.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-DAKAD.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
|
||||
|
||||
```
|
||||
|
||||
DAKAD.MAC
|
||||
---------
|
||||
|
||||
```
|
||||
SUBTTL DIAGNOSTIC PARAMETERS
|
||||
|
|
|
|||
|
|
@ -2479,7 +2479,11 @@ class DebuggerPDP10 extends Debugger {
|
|||
bus.setWordDirect(addr, w);
|
||||
nWords++;
|
||||
});
|
||||
this.println(nWords + " words loaded at " + this.toStrBase(addrLoad) + '-' + this.toStrBase(addrLoad + nWords - (nWords?1:0)));
|
||||
if (!nWords) {
|
||||
this.println("no data");
|
||||
} else {
|
||||
this.println(nWords + " words loaded at " + this.toStrBase(addrLoad) + '-' + this.toStrBase(addrLoad + nWords - 1));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -2578,7 +2582,7 @@ class DebuggerPDP10 extends Debugger {
|
|||
}
|
||||
else {
|
||||
var addrLoad = dbgAddr.addr;
|
||||
var sOptions = ""; // "p";
|
||||
var sOptions = ""; // add "p" for preprocessing only
|
||||
this.macro10 = new Macro10(match[2], addrLoad, sOptions, dbg, function doneMacro10(nErrorCode, sURL) {
|
||||
if (!nErrorCode) {
|
||||
dbg.loadBin(dbg.macro10.getBin(), addrLoad);
|
||||
|
|
|
|||
|
|
@ -87,6 +87,9 @@ class Macro10 {
|
|||
/**
|
||||
* Macro10(sURL, nAddr, sOptions, dbg, done)
|
||||
*
|
||||
* A "mini" version of DEC's MACRO-10 assembler, with just enough features to support the handful
|
||||
* of DEC diagnostic source code files that we choose to throw at it.
|
||||
*
|
||||
* Requests the resource(s) specified by sURL; multiple resources can be requested by separating
|
||||
* them with semicolons.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ function hg(a,b){for(var c=1;c<b.length;c++)gg(a,b,c);return b.length-1}function
|
|||
function Vc(a,b,c,d,e){var f=!1;if(!a.sa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.ja)for(var k=Ve(h)&(d==a.b?65535:-1),n=0;n<c;n++)if(b+n==k){var p,f=!0;h.ja&&(eg(a,d,h,!0),e=!0);if(p=h.tb){for(var f=!1,t=0;t<p.length;t++)if(!ig(a,p[t],!0)){if(p[t].indexOf("if")){f=!0;break}for(var D=t+1;D<p.length&&p[D].indexOf("else");D++)t++;if(D==p.length){f=!0;break}}a.v.A.N||(f=!0)}if(f){e||gg(a,d,g,"hit");break}}}a.sa--;return f}
|
||||
function jg(a,b){b=void 0===b?!0:b;for(var c="",d=0;16>d;d++){!d||d&3||(c+="\n");var e=a,f=m(d,2);We(e.Ba,d);f+="="+J(e,e.Ha(e.Ba),36)+" ";c+=f}if(b){b="";for(d=0;d<df.length;d++)(e=df[d]||"")&&(e+="="+J(a,a.lb(d),d>=hf?1:d==ff?23:18)+" "),b+=e;c+="\n"+b}return c}l.zb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Ae(a,b,c,d,e){var f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var k=h.o,n=h.a;if(void 0!==k){var p=f,k=[k>>>0,g],t=Ea(p,k,a.zb);0>t&&p.splice(-(t+1),0,k)}n&&(h.a=n.replace(/''/g,'"'))}a.F.push({sd:b,B:c,Ob:d,U:e,ub:f})}function kg(a,b,c){var d=[],e=Ve(b)>>>0;for(b=0;b<a.F.length;b++){var f=a.F[b],g=f.B>>>0,h=f.Ob;if(e>=g&&e<g+h){e=Ea(f.ub,[e-g],a.zb);0<=e?lg(a,b,e,d):c&&(e=~e,lg(a,b,e-1,d),lg(a,b,e,d));break}}return d}
|
||||
function mg(a,b,c){var d=0,e=a.G;b.forEach(function(a,b){vc(e,b,a);d++});a.j(d+" words loaded at "+J(a,c)+"-"+J(a,c+d-(d?1:0)))}function lg(a,b,c,d){var e={},f=a.F[b].ub,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.F[b].U[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
|
||||
function mg(a,b,c){var d=0,e=a.G;b.forEach(function(a,b){vc(e,b,a);d++});d?a.j(d+" words loaded at "+J(a,c)+"-"+J(a,c+d-1)):a.j("no data")}function lg(a,b,c,d){var e={},f=a.F[b].ub,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.F[b].U[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
|
||||
function ng(a,b){var c=$e(a,b[1],a.ba);if(c){var d=b[2];if(void 0==d)a.j("begin assemble at "+J(a,c.B)),a.R=!0,I(a.H);else{var e=d.match(/^(['"]?)((\/|http:).*)\1$/);if(e)if(a.pa)a.j("assembly already in progress");else{var f=c.B;a.pa=new og(e[2],f,"",a,function(b,c){b?a.j("error ("+b+") processing "+c):mg(a,a.pa.w,f);a.pa=null})}else b.shift(),b.shift(),b.shift(),b=Cf(a,d,b.join(""),c.B||0),0<=b&&(a.rb(c,b),a.j(uf(a,c)))}}}
|
||||
function pg(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Qe(a)||a.j("no variables"),!0;if(!c[2])return Qe(a,c[1]);if(!c[3])return delete a.K[c[1]],!0;b=X(a,c[3]);return void 0!==b?(a.K[c[1]]=b,!0):!1}a.j("invalid assignment:"+b);return!1}
|
||||
function qg(a,b,c){var d=null;if(b=$e(a,b)){var e=kg(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.B-e[1])&&(g=" + "+q(f,4,!0)),f=e[0]+" ("+J(a,e[1])+")"+g,c&&a.j(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.B)&&(g=" - "+q(f,4,!0)),f=e[4]+" ("+J(a,e[5])+")"+g,c&&a.j(f),d||(d=f))}else c&&a.j("no symbols")}return d}
|
||||
|
|
|
|||
Loading…
Reference in a new issue