| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .. | ||
| DAKAL.LST.txt | ||
| DAKAL.MAC.txt | ||
| DAKALM.MAC.txt | ||
| DAKALT.MAC.txt | ||
| README.md | ||
| layout | title | permalink | machines | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| page | PDP-10 KA10 Basic Instruction Diagnostic | /apps/pdp10/diags/ka10/dakal/ |
|
PDP-10 KA10 Basic Instruction Diagnostic #12
The PDP-10 KA10 Basic Instruction Diagnostic #12 (MAINDEC-10-DAKAL) test code has been extracted from DAKALM.MAC [original] and DAKALT.MAC [original] for use with the PDP-10 Test Machine with Debugger below.
This diagnostic "TESTS THE MULTIPY, INTERGER MULIPLY, DIVIDE AND INTERGER DIVIDE INSTRUCTIONS." Hopefully the tests work better than their spell-checking.
Information regarding this diagnostic includes:
{% include machine.html id="testka10" %}
The Debugger's assemble ("a") command can be used to test the new built-in MACRO-10 Mini-Assembler, which supports a subset of the MACRO-10 assembly language. This command:
a DAKAL.MAC
will automatically read the DAKAL.MAC source file (a slightly modified copy of DAKALM.MAC), assemble it, and then load the binary image at the location specified in the file.
Issues
The following DAKAL diagnostic test sequence produced correct results but still failed:
00=000000000000 01=000000000000 02=000000000000 03=000000000000
04=000000000000 05=000000000000 06=000000000000 07=000000000000
10=000000000000 11=000000000000 12=000000000001 13=000000000000
14=777777777777 15=525252525252 16=000000000016 17=000000000000
PC=030641 RA=00030626 EA=030626 PS=000000 OV=0 C0=0 C1=0 ND=0 PD=0
030641: 200600 044434 MOVE 14,44434 ;cycles=1
>> tr
00=000000000000 01=000000000000 02=000000000000 03=000000000000
04=000000000000 05=000000000000 06=000000000000 07=000000000000
10=000000000000 11=000000000000 12=000000000001 13=000000000000
14=525252525252 15=525252525252 16=000000000016 17=000000000000
PC=030642 RA=00044434 EA=044434 PS=000000 OV=0 C0=0 C1=0 ND=0 PD=0
030642: 200640 044435 MOVE 15,44435 ;cycles=1
>> tr
00=000000000000 01=000000000000 02=000000000000 03=000000000000
04=000000000000 05=000000000000 06=000000000000 07=000000000000
10=000000000000 11=000000000000 12=000000000001 13=000000000000
14=525252525252 15=000000000000 16=000000000016 17=000000000000
PC=030643 RA=00044435 EA=044435 PS=000000 OV=0 C0=0 C1=0 ND=0 PD=0
030643: 200500 044440 MOVE 12,44440 ;cycles=1
>> tr
00=000000000000 01=000000000000 02=000000000000 03=000000000000
04=000000000000 05=000000000000 06=000000000000 07=000000000000
10=000000000000 11=000000000000 12=000000000002 13=000000000000
14=525252525252 15=000000000000 16=000000000016 17=000000000000
PC=030644 RA=00044440 EA=044440 PS=000000 OV=0 C0=0 C1=0 ND=0 PD=0
030644: 224600 000012 MUL 14,12 ;cycles=1
>> tr
00=000000000000 01=000000000000 02=000000000000 03=000000000000
04=000000000000 05=000000000000 06=000000000000 07=000000000000
10=000000000000 11=000000000000 12=000000000002 13=000000000000
14=777777777776 15=652525252524 16=000000000016 17=000000000000
PC=030645 RA=00000012 EA=000012 PS=000000 OV=0 C0=0 C1=0 ND=0 PD=0
030645: 312600 044441 CAME 14,44441 ;cycles=1
>> tr
00=000000000000 01=000000000000 02=000000000000 03=000000000000
04=000000000000 05=000000000000 06=000000000000 07=000000000000
10=000000000000 11=000000000000 12=000000000002 13=000000000000
14=777777777776 15=652525252524 16=000000000016 17=000000000000
PC=030647 RA=00044441 EA=044441 PS=000000 OV=0 C0=0 C1=0 ND=0 PD=0
030647: 312640 044442 CAME 15,44442 ;cycles=1
The multiplication of 525252525252 * 2 produces 777777777776,652525252524, which is correct for the PDP-10's 72-bit "dual sign" format. However, the first time I ran this test, it failed -- not because the result was wrong, but because the value calculated for the expected result was wrong.
The source code for the test produces the expected results by performing 36-bit multiplication in the MACRO-10 Assembler:
775 ;MULTIPLY A FLOATING 1 BY 1010...101010
776 525252 525252 V1=N1
777 652525 252524 V2=N1*XX
but the expected result my MACRO-10 Mini-Assembler calculated was different:
>> dw 44442 l1
044442: 252525 252524
My result wasn't really the wrong value; it was the correct (albeit truncated) value in the wrong format. My expression parser was performing simple JavaScript multiplication and then truncating the result to 36 bits; MACRO-10 performs a similar calculation, but it also adjusts the sign of the low 36 bits to match the sign of the high 36 bits -- because that's what the PDP-10 does, too.
My solution was to move the expression parser's multiplication code to its own function, evalMUL(), and then change the PDP-10 Debugger to override evalMUL() with its own function that calls the PDP-10 CPU doMUL() function, guaranteeing that all multiplication results are performed with the same 72-bit precision and returned in the same PDP-10 72-bit format (before being truncated to 36 bits).
Unfortunately, this creates an incestuous relationship between CPU functionality being tested and the code testing it, because it increases the likelihood that the multiplication tests will succeed even if/when they calculate incorrect results, at least whenever the expected results are being calculated with the same multiplicands that the test itself uses.
So, as a precaution, I added some DEBUG code to the evalMUL() function that outputs all the instances where JavaScript multiplication and PDP-10 multiplication differ, so that I can verify that all my PDP-10 results match those in DEC's MACRO-10 Listing, which I'm treating as "the gold standard."
Here's that output:
MUL(525252525252,000000000002) PDP-10: 652525252524 JavaScript: 252525252524 @030641
MUL(525252525252,000000000002) PDP-10: 652525252524 JavaScript: 252525252524 @030641
MUL(525252525252,000000000004) PDP-10: 525252525250 JavaScript: 525252525250 @030654
MUL(525252525252,000000000004) PDP-10: 525252525250 JavaScript: 525252525250 @030654
MUL(525252525252,000000000010) PDP-10: 652525252520 JavaScript: 252525252520 @030667
MUL(525252525252,000000000010) PDP-10: 652525252520 JavaScript: 252525252520 @030667
MUL(525252525252,000000000020) PDP-10: 525252525240 JavaScript: 525252525240 @030702
MUL(525252525252,000000000020) PDP-10: 525252525240 JavaScript: 525252525240 @030702
MUL(525252525252,000000000040) PDP-10: 652525252500 JavaScript: 252525252500 @030715
MUL(525252525252,000000000040) PDP-10: 652525252500 JavaScript: 252525252500 @030715
MUL(525252525252,000000000100) PDP-10: 525252525200 JavaScript: 525252525200 @030730
MUL(525252525252,000000000100) PDP-10: 525252525200 JavaScript: 525252525200 @030730
MUL(525252525252,000000000200) PDP-10: 652525252400 JavaScript: 252525252400 @030743
MUL(525252525252,000000000200) PDP-10: 652525252400 JavaScript: 252525252400 @030743
MUL(525252525252,000000000400) PDP-10: 525252525000 JavaScript: 525252525000 @030756
MUL(525252525252,000000000400) PDP-10: 525252525000 JavaScript: 525252525000 @030756
MUL(525252525252,000000001000) PDP-10: 652525252000 JavaScript: 252525252000 @030771
MUL(525252525252,000000001000) PDP-10: 652525252000 JavaScript: 252525252000 @030771
MUL(525252525252,000000002000) PDP-10: 525252524000 JavaScript: 525252524000 @031004
MUL(525252525252,000000002000) PDP-10: 525252524000 JavaScript: 525252524000 @031004
MUL(525252525252,000000004000) PDP-10: 652525250000 JavaScript: 252525250000 @031017
MUL(525252525252,000000004000) PDP-10: 652525250000 JavaScript: 252525250000 @031017
MUL(525252525252,000000010000) PDP-10: 525252520000 JavaScript: 525252520000 @031032
MUL(525252525252,000000010000) PDP-10: 525252520000 JavaScript: 525252520000 @031032
MUL(525252525252,000000020000) PDP-10: 652525240000 JavaScript: 252525240000 @031045
MUL(525252525252,000000020000) PDP-10: 652525240000 JavaScript: 252525240000 @031045
MUL(525252525252,000000040000) PDP-10: 525252500000 JavaScript: 525252500000 @031060
MUL(525252525252,000000040000) PDP-10: 525252500000 JavaScript: 525252500000 @031060
MUL(525252525252,000000100000) PDP-10: 652525200000 JavaScript: 252525200000 @031073
MUL(525252525252,000000100000) PDP-10: 652525200000 JavaScript: 252525200000 @031073
MUL(525252525252,000000200000) PDP-10: 525252400000 JavaScript: 525252400000 @031106
MUL(525252525252,000000200000) PDP-10: 525252400000 JavaScript: 525252400000 @031106
MUL(525252525252,000000400000) PDP-10: 652525000000 JavaScript: 252525000000 @031121
MUL(525252525252,000000400000) PDP-10: 652525000000 JavaScript: 252525000000 @031121
MUL(525252525252,000001000000) PDP-10: 125252000000 JavaScript: 525252000000 @031134
MUL(525252525252,000004000000) PDP-10: 125250000000 JavaScript: 525250000000 @031162
MUL(525252525252,000020000000) PDP-10: 125240000000 JavaScript: 525240000000 @031210
MUL(525252525252,000100000000) PDP-10: 125200000000 JavaScript: 525200000000 @031236
MUL(525252525252,000400000000) PDP-10: 125000000000 JavaScript: 525000000000 @031264
MUL(525252525252,002000000000) PDP-10: 124000000000 JavaScript: 524000000000 @031312
MUL(525252525252,010000000000) PDP-10: 120000000000 JavaScript: 520000000000 @031340
MUL(525252525252,040000000000) PDP-10: 100000000000 JavaScript: 500000000000 @031366
MUL(525252525252,200000000000) PDP-10: 000000000000 JavaScript: 400000000000 @031414
MUL(525252525252,400000000000) PDP-10: 000000000000 JavaScript: 000000000000 @031427
MUL(252525252525,000000000002) PDP-10: 125252525252 JavaScript: 525252525252 @031461
MUL(252525252525,000000000004) PDP-10: 252525252524 JavaScript: 252525252524 @031474
MUL(252525252525,000000000010) PDP-10: 125252525250 JavaScript: 525252525250 @031507
MUL(252525252525,000000000020) PDP-10: 252525252520 JavaScript: 252525252520 @031522
MUL(252525252525,000000000040) PDP-10: 125252525240 JavaScript: 525252525240 @031535
MUL(252525252525,000000000100) PDP-10: 252525252500 JavaScript: 252525252500 @031550
MUL(252525252525,000000000200) PDP-10: 125252525200 JavaScript: 525252525200 @031563
MUL(252525252525,000000000400) PDP-10: 252525252400 JavaScript: 252525252400 @031576
MUL(252525252525,000000001000) PDP-10: 125252525000 JavaScript: 525252525000 @031611
MUL(252525252525,000000002000) PDP-10: 252525252000 JavaScript: 252525252000 @031624
MUL(252525252525,000000004000) PDP-10: 125252524000 JavaScript: 525252524000 @031637
MUL(252525252525,000000010000) PDP-10: 252525250000 JavaScript: 252525250000 @031652
MUL(252525252525,000000020000) PDP-10: 125252520000 JavaScript: 525252520000 @031665
MUL(252525252525,000000040000) PDP-10: 252525240000 JavaScript: 252525240000 @031700
MUL(252525252525,000000100000) PDP-10: 125252500000 JavaScript: 525252500000 @031713
MUL(252525252525,000000200000) PDP-10: 252525200000 JavaScript: 252525200000 @031726
MUL(252525252525,000000400000) PDP-10: 125252400000 JavaScript: 525252400000 @031741
MUL(252525252525,000001000000) PDP-10: 252525000000 JavaScript: 252525000000 @031754
MUL(252525252525,000002000000) PDP-10: 125252000000 JavaScript: 525252000000 @031767
MUL(252525252525,000004000000) PDP-10: 252524000000 JavaScript: 252524000000 @032002
MUL(252525252525,000010000000) PDP-10: 125250000000 JavaScript: 525250000000 @032015
MUL(252525252525,000020000000) PDP-10: 252520000000 JavaScript: 252520000000 @032030
MUL(252525252525,000040000000) PDP-10: 125240000000 JavaScript: 525240000000 @032043
MUL(252525252525,000100000000) PDP-10: 252500000000 JavaScript: 252500000000 @032056
MUL(252525252525,000200000000) PDP-10: 125200000000 JavaScript: 525200000000 @032071
MUL(252525252525,000400000000) PDP-10: 252400000000 JavaScript: 252400000000 @032104
MUL(252525252525,001000000000) PDP-10: 125000000000 JavaScript: 525000000000 @032117
MUL(252525252525,002000000000) PDP-10: 252000000000 JavaScript: 252000000000 @032132
MUL(252525252525,004000000000) PDP-10: 124000000000 JavaScript: 524000000000 @032145
MUL(252525252525,010000000000) PDP-10: 250000000000 JavaScript: 250000000000 @032160
MUL(252525252525,020000000000) PDP-10: 120000000000 JavaScript: 520000000000 @032173
MUL(252525252525,040000000000) PDP-10: 240000000000 JavaScript: 240000000000 @032206
MUL(252525252525,100000000000) PDP-10: 100000000000 JavaScript: 500000000000 @032221
MUL(252525252525,200000000000) PDP-10: 200000000000 JavaScript: 200000000000 @032234
MUL(252525252525,000000000002) PDP-10: 125252525252 JavaScript: 525252525252 @032301
MUL(252525252525,000000000004) PDP-10: 252525252524 JavaScript: 252525252524 @032314
MUL(252525252525,000000000010) PDP-10: 125252525250 JavaScript: 525252525250 @032327
MUL(252525252525,000000000020) PDP-10: 252525252520 JavaScript: 252525252520 @032342
MUL(252525252525,000000000040) PDP-10: 125252525240 JavaScript: 525252525240 @032355
MUL(252525252525,000000000100) PDP-10: 252525252500 JavaScript: 252525252500 @032370
MUL(252525252525,000000000200) PDP-10: 125252525200 JavaScript: 525252525200 @032403
MUL(252525252525,000000000400) PDP-10: 252525252400 JavaScript: 252525252400 @032416
MUL(252525252525,000000001000) PDP-10: 125252525000 JavaScript: 525252525000 @032431
MUL(252525252525,000000002000) PDP-10: 252525252000 JavaScript: 252525252000 @032444
MUL(252525252525,000000004000) PDP-10: 125252524000 JavaScript: 525252524000 @032457
MUL(252525252525,000000010000) PDP-10: 252525250000 JavaScript: 252525250000 @032472
MUL(252525252525,000000020000) PDP-10: 125252520000 JavaScript: 525252520000 @032505
MUL(252525252525,000000040000) PDP-10: 252525240000 JavaScript: 252525240000 @032520
MUL(252525252525,000000100000) PDP-10: 125252500000 JavaScript: 525252500000 @032533
MUL(252525252525,000000200000) PDP-10: 252525200000 JavaScript: 252525200000 @032546
MUL(252525252525,000000400000) PDP-10: 125252400000 JavaScript: 525252400000 @032561
MUL(252525252525,000001000000) PDP-10: 252525000000 JavaScript: 252525000000 @032574
MUL(252525252525,000002000000) PDP-10: 125252000000 JavaScript: 525252000000 @032607
MUL(252525252525,000004000000) PDP-10: 252524000000 JavaScript: 252524000000 @032622
MUL(252525252525,000010000000) PDP-10: 125250000000 JavaScript: 525250000000 @032635
MUL(252525252525,000020000000) PDP-10: 252520000000 JavaScript: 252520000000 @032650
MUL(252525252525,000040000000) PDP-10: 125240000000 JavaScript: 525240000000 @032663
MUL(252525252525,000100000000) PDP-10: 252500000000 JavaScript: 252500000000 @032676
MUL(252525252525,000200000000) PDP-10: 125200000000 JavaScript: 525200000000 @032711
MUL(252525252525,000400000000) PDP-10: 252400000000 JavaScript: 252400000000 @032724
MUL(252525252525,001000000000) PDP-10: 125000000000 JavaScript: 525000000000 @032737
MUL(252525252525,002000000000) PDP-10: 252000000000 JavaScript: 252000000000 @032752
MUL(252525252525,004000000000) PDP-10: 124000000000 JavaScript: 524000000000 @032765
MUL(252525252525,010000000000) PDP-10: 250000000000 JavaScript: 250000000000 @033000
MUL(252525252525,020000000000) PDP-10: 120000000000 JavaScript: 520000000000 @033013
MUL(252525252525,040000000000) PDP-10: 240000000000 JavaScript: 240000000000 @033026
MUL(252525252525,100000000000) PDP-10: 100000000000 JavaScript: 500000000000 @033041
MUL(252525252525,200000000000) PDP-10: 200000000000 JavaScript: 200000000000 @033054
MUL(252525252525,400000000000) PDP-10: 000000000000 JavaScript: 400000000000 @033067
MUL(000001000000,000001000000) PDP-10: 000000000000 JavaScript: 000000000000 @033414
MUL(000002000000,000002000000) PDP-10: 000000000000 JavaScript: 000000000000 @033427
MUL(000004000000,000004000000) PDP-10: 000000000000 JavaScript: 000000000000 @033442
MUL(000010000000,000010000000) PDP-10: 000000000000 JavaScript: 000000000000 @033455
MUL(000020000000,000020000000) PDP-10: 000000000000 JavaScript: 000000000000 @033470
MUL(000040000000,000040000000) PDP-10: 000000000000 JavaScript: 000000000000 @033503
MUL(000100000000,000100000000) PDP-10: 000000000000 JavaScript: 000000000000 @033516
MUL(000200000000,000200000000) PDP-10: 000000000000 JavaScript: 000000000000 @033531
MUL(000400000000,000400000000) PDP-10: 000000000000 JavaScript: 000000000000 @033544
MUL(001000000000,001000000000) PDP-10: 000000000000 JavaScript: 000000000000 @033557
MUL(002000000000,002000000000) PDP-10: 000000000000 JavaScript: 000000000000 @033572
MUL(004000000000,004000000000) PDP-10: 000000000000 JavaScript: 000000000000 @033605
MUL(010000000000,010000000000) PDP-10: 000000000000 JavaScript: 000000000000 @033620
MUL(020000000000,020000000000) PDP-10: 000000000000 JavaScript: 000000000000 @033633
MUL(040000000000,040000000000) PDP-10: 000000000000 JavaScript: 000000000000 @033646
MUL(100000000000,100000000000) PDP-10: 000000000000 JavaScript: 000000000000 @033661
MUL(200000000000,200000000000) PDP-10: 000000000000 JavaScript: 000000000000 @033674
MUL(400000000000,400000000000) PDP-10: 000000000000 JavaScript: 000000000000 @033707
MUL(400000000000,400000000000) PDP-10: 000000000000 JavaScript: 000000000000 @033707
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033726
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033726
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033741
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033741
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033754
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033754
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033767
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033767
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034002
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034002
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034015
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034015
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034030
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034030
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034043
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034043
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034056
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034056
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034071
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034071
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034104
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034104
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034117
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034117
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034132
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034132
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034145
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034145
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034160
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034160
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034173
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034173
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034206
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034206
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034221
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034221
MUL(777776777777,777776777777) PDP-10: 000002000001 JavaScript: 000002000001 @034234
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034234
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034234
MUL(777775777777,777775777777) PDP-10: 000004000001 JavaScript: 000004000001 @034247
MUL(000000777776,000000777776) PDP-10: 377774000004 JavaScript: 777774000004 @034247
MUL(000000777776,000000777776) PDP-10: 377774000004 JavaScript: 777774000004 @034247
MUL(777773777777,777773777777) PDP-10: 000010000001 JavaScript: 000010000001 @034262
MUL(000000777774,000000777774) PDP-10: 377770000020 JavaScript: 777770000020 @034262
MUL(000000777774,000000777774) PDP-10: 377770000020 JavaScript: 777770000020 @034262
MUL(777767777777,777767777777) PDP-10: 000020000001 JavaScript: 000020000001 @034275
MUL(000000777770,000000777770) PDP-10: 377760000100 JavaScript: 777760000100 @034275
MUL(000000777770,000000777770) PDP-10: 377760000100 JavaScript: 777760000100 @034275
MUL(777757777777,777757777777) PDP-10: 000040000001 JavaScript: 000040000001 @034310
MUL(000000777760,000000777760) PDP-10: 377740000400 JavaScript: 777740000400 @034310
MUL(000000777760,000000777760) PDP-10: 377740000400 JavaScript: 777740000400 @034310
MUL(777737777777,777737777777) PDP-10: 000100000001 JavaScript: 000100000001 @034323
MUL(000000777740,000000777740) PDP-10: 377700002000 JavaScript: 777700002000 @034323
MUL(000000777740,000000777740) PDP-10: 377700002000 JavaScript: 777700002000 @034323
MUL(777677777777,777677777777) PDP-10: 000200000001 JavaScript: 000200000001 @034336
MUL(000000777700,000000777700) PDP-10: 377600010000 JavaScript: 777600010000 @034336
MUL(000000777700,000000777700) PDP-10: 377600010000 JavaScript: 777600010000 @034336
MUL(777577777777,777577777777) PDP-10: 000400000001 JavaScript: 000400000001 @034351
MUL(000000777600,000000777600) PDP-10: 377400040000 JavaScript: 777400040000 @034351
MUL(000000777600,000000777600) PDP-10: 377400040000 JavaScript: 777400040000 @034351
MUL(777377777777,777377777777) PDP-10: 001000000001 JavaScript: 001000000001 @034364
MUL(000000777400,000000777400) PDP-10: 377000200000 JavaScript: 777000200000 @034364
MUL(000000777400,000000777400) PDP-10: 377000200000 JavaScript: 777000200000 @034364
MUL(776777777777,776777777777) PDP-10: 002000000000 JavaScript: 002000000000 @034377
MUL(000000777000,000000777000) PDP-10: 376001000000 JavaScript: 776001000000 @034377
MUL(000000777000,000000777000) PDP-10: 376001000000 JavaScript: 776001000000 @034377
MUL(775777777777,775777777777) PDP-10: 004000000000 JavaScript: 004000000000 @034412
MUL(000000776000,000000776000) PDP-10: 374004000000 JavaScript: 774004000000 @034412
MUL(000000776000,000000776000) PDP-10: 374004000000 JavaScript: 774004000000 @034412
MUL(773777777777,773777777777) PDP-10: 010000000000 JavaScript: 010000000000 @034425
MUL(000000774000,000000774000) PDP-10: 370020000000 JavaScript: 770020000000 @034425
MUL(000000774000,000000774000) PDP-10: 370020000000 JavaScript: 770020000000 @034425
MUL(767777777777,767777777777) PDP-10: 020000000000 JavaScript: 020000000000 @034440
MUL(000000770000,000000770000) PDP-10: 360100000000 JavaScript: 760100000000 @034440
MUL(000000770000,000000770000) PDP-10: 360100000000 JavaScript: 760100000000 @034440
MUL(757777777777,757777777777) PDP-10: 040000000000 JavaScript: 040000000000 @034453
MUL(000000760000,000000760000) PDP-10: 340400000000 JavaScript: 740400000000 @034453
MUL(000000760000,000000760000) PDP-10: 340400000000 JavaScript: 740400000000 @034453
MUL(737777777777,737777777777) PDP-10: 100000000000 JavaScript: 100000000000 @034466
MUL(000000740000,000000740000) PDP-10: 302000000000 JavaScript: 702000000000 @034466
MUL(000000740000,000000740000) PDP-10: 302000000000 JavaScript: 702000000000 @034466
MUL(677777777777,677777777777) PDP-10: 200000000000 JavaScript: 200000000000 @034501
MUL(000000700000,000000700000) PDP-10: 210000000000 JavaScript: 610000000000 @034501
MUL(000000700000,000000700000) PDP-10: 210000000000 JavaScript: 610000000000 @034501
MUL(577777777777,577777777777) PDP-10: 000000000000 JavaScript: 400000000000 @034514
MUL(000000600000,000000600000) PDP-10: 040000000000 JavaScript: 440000000000 @034514
MUL(377777777777,377777777777) PDP-10: 000000000001 JavaScript: 000000000000 @034527
MUL(000001000000,777776777777) PDP-10: 377777000000 JavaScript: 777777000000 @035054
MUL(000002000000,777775777777) PDP-10: 377776000000 JavaScript: 777776000000 @035067
MUL(000004000000,777773777777) PDP-10: 377774000000 JavaScript: 777774000000 @035102
MUL(000010000000,777767777777) PDP-10: 377770000000 JavaScript: 777770000000 @035115
MUL(000020000000,777757777777) PDP-10: 377760000000 JavaScript: 777760000000 @035130
MUL(000040000000,777737777777) PDP-10: 377740000000 JavaScript: 777740000000 @035143
MUL(000100000000,777677777777) PDP-10: 377700000000 JavaScript: 777700000000 @035156
MUL(000200000000,777577777777) PDP-10: 377600000000 JavaScript: 777600000000 @035171
MUL(000400000000,777377777777) PDP-10: 377400000000 JavaScript: 777400000000 @035204
MUL(001000000000,776777777777) PDP-10: 377000000000 JavaScript: 777000000000 @035217
MUL(002000000000,775777777777) PDP-10: 376000000000 JavaScript: 776000000000 @035232
MUL(004000000000,773777777777) PDP-10: 374000000000 JavaScript: 774000000000 @035245
MUL(010000000000,767777777777) PDP-10: 370000000000 JavaScript: 770000000000 @035260
MUL(020000000000,757777777777) PDP-10: 360000000000 JavaScript: 760000000000 @035273
MUL(040000000000,737777777777) PDP-10: 340000000000 JavaScript: 740000000000 @035306
MUL(100000000000,677777777777) PDP-10: 300000000000 JavaScript: 700000000000 @035321
MUL(200000000000,577777777777) PDP-10: 200000000000 JavaScript: 600000000000 @035334
MUL(400000000000,377777777777) PDP-10: 000000000000 JavaScript: 400000000000 @035347
MUL(000001000000,777776777777) PDP-10: 377777000000 JavaScript: 777777000000 @035674
MUL(000002000000,777775777777) PDP-10: 377776000000 JavaScript: 777776000000 @035707
MUL(000004000000,777773777777) PDP-10: 377774000000 JavaScript: 777774000000 @035722
MUL(000010000000,777767777777) PDP-10: 377770000000 JavaScript: 777770000000 @035735
MUL(000020000000,777757777777) PDP-10: 377760000000 JavaScript: 777760000000 @035750
MUL(000040000000,777737777777) PDP-10: 377740000000 JavaScript: 777740000000 @035763
MUL(000100000000,777677777777) PDP-10: 377700000000 JavaScript: 777700000000 @035776
MUL(000200000000,777577777777) PDP-10: 377600000000 JavaScript: 777600000000 @036011
MUL(000400000000,777377777777) PDP-10: 377400000000 JavaScript: 777400000000 @036024
MUL(001000000000,776777777777) PDP-10: 377000000000 JavaScript: 777000000000 @036037
MUL(002000000000,775777777777) PDP-10: 376000000000 JavaScript: 776000000000 @036052
MUL(004000000000,773777777777) PDP-10: 374000000000 JavaScript: 774000000000 @036065
MUL(010000000000,767777777777) PDP-10: 370000000000 JavaScript: 770000000000 @036100
MUL(020000000000,757777777777) PDP-10: 360000000000 JavaScript: 760000000000 @036113
MUL(040000000000,737777777777) PDP-10: 340000000000 JavaScript: 740000000000 @036126
MUL(100000000000,677777777777) PDP-10: 300000000000 JavaScript: 700000000000 @036141
MUL(200000000000,577777777777) PDP-10: 200000000000 JavaScript: 600000000000 @036154
MUL(000000000010,377777777777) PDP-10: 377777777770 JavaScript: 777777777770 @000000
MUL(000000000020,377777777777) PDP-10: 377777777760 JavaScript: 777777777760 @000000
DAKAL.TXT
MAINDEC-10-DAKAL.TXT
IDENTIFICATION
--------------
PRODUCT CODE: MAINDEC-10-DAKAL-B-D
PRODUCT NAME: DECSYSTEM10 PDP-10 KA10 BASIC
INSTRUCTION DIAGNOSTIC (12)
FUNCTION: MULTIPY & DIVIDE
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-DAKAL.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 DATA SWITCH FUNCTIONS
5.0 ERRORS
6.0 ITERATION COUNTER
7.0 CYCLE TIME
8.0 OPERATIONAL VARIATIONS
9.0 MISCELLANEOUS
10.0 LISTING
MAINDEC-10-DAKAL.TXT
PAGE 3
1.0 ABSTRACT
THIS PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC IS THE
TWELVTH IN A SERIES OF PDP-10 KA10 PROCESSOR DIAGNOSTICS.
THE DIAGNOSTIC TESTS THE MULTIPY, INTERGER MULIPLY,
DIVIDE AND INTERGER DIVIDE INSTRUCTIONS.
2.0 REQUIREMENTS
2.1 EQUIPMENT
A PDP-10 KA10 EQUIPPED WITH A MINIMUM OF 32K OF MEMORY
PAPER TAPE READER
CONSOLE TELETYPE
DECTAPE
LINE PRINTER (OPTIONAL)
2.2 STORAGE
THE PROGRAM RUNS WITHIN 32K OF MEMORY.
2.3 PRELIMINARY PROGRAMS
PREVIOUS PROCESSOR DIAGNOSTICS
3.0 PROGRAM PROCEDURES
3.1 LOADING PROCEDURE
THIS DIAGNOSTIC REQUIRES THAT THE DECSYSTEM10 SUBROUTINE
PROGRAM BE RESIDENT IN THE PDP-10.
PAPER TAPE - HARDWARE READ-IN (READER DEVICE CODE 104)
DECTAPE - LOAD WITH DIAMON (DECTAPE DEVICE CODE 320)
TIME SHARING - RUN UNDER DIAMON.
MAINDEC-10-DAKAL.TXT
PAGE 4
3.2 STARTING PROCEDURE
A. SELECT OPERATIONAL CONSOLE DATA SWITCH SETTINGS (REFER TO
4.0 DATA SWITCH FUNCTIONS).
B. EXEC MODE
STAND-ALONE STARTING ADDRESS IS 30000.
C. USER MODE
RUN UNDER "DIAMON".
IN USER MODE THE FOLLOWING QUESTIONS WILL BE ASKED TO
SELECT THE OPERATIONAL SWITCHES:
TELETYPE SWITCH CONTROL ? 0,S,Y OR N (CR) -
IF THE OPERATOR TYPES "N", THE ACTUAL CONSOLE
SWITCHES ARE USED.
IF THE OPERATOR TYPES "Y", THE FOLLOWING QUESTIONS
ARE ASKED AND THE OPERATOR RESPONDS BY TYPING
THE ANSWER AS SIX OCTAL DIGITS REPRESENTING
THE DESIRED SWITCH SETTINGS.
SPECIFY LH SWITCHES IN OCTAL-
SPECIFY RH SWITCHES IN OCTAL-
IF THE OPERATOR TYPES "0", ZERO'S ARE USED FOR
THE SWITCH SETTINGS.
IF THE OPERATOR TYPES "S", PREVIOUSLY SET SWITCHES
ARE USED. THIS IS ONLY VALID UPON RESTARTING
OF AN INTERRUPTED PROGRAM.
MAINDEC-10-DAKAL.TXT
PAGE 5
3.3 OPERATING PROCEDURE
A. TO THROUGHLY TEST ALL HARDWARE, ALL TEST CONTROL DATA
SWITCHES SHOULD BE SET TO 0.
B. WHEN DEBUGGING HARDWARE, SET SWITCHES TO 0. ALLOW THE
TELETYPE TO PRINT THE ERROR MESSAGES. THIS ALLOWS THE
PROGRAM TO RUN A COMPLETE PASS AND THEN THE ERROR MESSAGES
MAY BE CORRELATED TO QUICKLY DIAGNOSE THE FAILURE. IF A
HARDWARE PROBLEM IS SUCH THAT THE ERROR MESSAGES, AFTER THE
FIRST ONE, HAVE NO MEANING (FIRST ERROR CAUSES ALL FOLLOWING
TESTS TO FAIL) SET THE LOOP ON ERROR SWITCH AND RESTART THE
TEST FROM THE BEGINNING. THE FIRST FAILURE WILL THEN CAUSE
THE PROGRAM TO ENTER A LOOP SUITABLE FOR SCOPING.
THE ERROR MESSAGE USED IN CONJUNCTION WITH THE LISTING AND
SCOPING IF NECESSARY SHOULD ALLOW THE FAILING CONPONENT
TO BE ISOLATED AND REPLACED AND/OR REPAIRED.
C. WHEN TAKING MARGINS, SET DATA SWITCHES 'NOPNT' AND 'DING'.
THIS WILL INHIBIT PRINTOUT BUT WILL ALLOW THE TELETYPE
BELL TO BE RUNG WHEN A ERROR OCCURS. IF THE MARGIN OBTAINED
IS UNACCEPTABLE, THE OPERATOR MAY REVERT TO STANDARD SWITCH
SETTINGS FOR DEBUGGING PURPOSES.
D. ERROR INFORMATION MAY BE OBTAINED QUICKLY BY PRINTING
ERRORS ON THE LINE PRINTER.
E. IN THE EVENT OF A PRINT ROUTINE FAILURE THE 'NOPNT' SWITCH
AND THE 'ERSTOP' SWITCH MAY BE SET TO INHIBIT PRINTOUT
BUT HALT THE PROGRAM POINTING TO THE ERROR.
MAINDEC-10-DAKAL.TXT
PAGE 6
4.0 DATA SWITCH FUNCTIONS
SWITCH STATE FUNCTION
------ ----- --------
0 ABORT 0 NORMAL OPERATION
1 ABORT AT END OF PASS
1 RSTART NOT USED
2 TOTALS NOT USED
3 NOPNT 0 NORMAL TYPEOUT
1 INHIBIT ALL PRINT/TYPEOUT
(EXCEPT FORCED)
4 PNTLPT 0 NORMAL OUTPUT TO TTY
1 PRINT ALL DATA ON LPT
(LOGICAL DEVICE, USER MODE)
5 DING 0 NO FUNCTION
1 RING TTY BELL ON ERROR
6 LOOPER 0 PROCEED TO NEXT TEST
1 ENTER SCOPE LOOP ON TEST ERROR
7 ERSTOP 0 NO FUNCTION
1 HALT ON TEST ERROR
8 PALERS 0 PRINT ONLY FIRST ERROR WHEN LOOPING
1 PRINT ALL ERRORS, EVEN IF SAME ERROR
9 RELIAB NOT USED
10 TXTINH 0 PRINT FULL ERROR MESSAGES.
1 INHIBIT COMMENT PORTION OF
ERROR MESSAGES.
11 INHPAG 0 ALLOW PAGING AND TRAP ENABLE
1 INHIBIT PAGING AND TRAPPING
12 MODDVC NOT USED
13 INHCSH NOT USED
MAINDEC-10-DAKAL.TXT
PAGE 7
5.0 ERRORS
ERRORS ARE PRINTED ON THE TTY OR LINE PRINTER. THE ERROR
PRINTOUT CONTAINS THE TEST TITLE, THE PC OF THE FAILURE, ERROR
NUMBER AND THE CONTENTS OF AN APPLICABLE AC.
THE PC VALUE IS USEFUL IN RELATING THE FAILURE TO THE LISTING.
THE ERROR NUMBER IS PROVIDED SUCH THAT AN ERROR DICTIONARY MAY
BE MADE AT SOME FUTURE DATE.
WHEN THE SCOPE LOOP MODE IS USED THE MI REGISTER WILL COUNT
FOR EACH OCCURANCE OF AN ERROR. IF AN AUDIO INDICATION OF
A CONTINUING ERROR IS DESIRED THE 'DING' SWITCH MAY BE SET.
6.0 ITERATION COUNTER
THE ITERATION COUNT OF THE PROGRAM IS DISPLAYED IN THE MEMORY
INDICATORS (MI). THIS COUNT IS A DECREMENTING COUNT AND
INITIALLY STARTS AT -1 IN STAND-ALONE OPERATION.
7.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-DAKAL.TXT
PAGE 8
8.0 OPERATIONAL VARIATIONS
A. DIAGNOSTIC MONITOR
THE PROGRAM IS USABLE WITH THE DIAGNOSTIC MONITOR TO PROVIDE
RELIABILITY TESTS, ACCEPTANCE TESTS, AND/OR TO PROVIDE 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 PROGRAM
AND STARTS IT AT LOCATION 30002.
2. MONCTL - LOCATION 30043 IS USED AS THE DIAGNOSTIC MONITOR
CONTROL WORD.
LH = 0, STAND-ALONE OPERATION
-1, RUNNING UNDER DIAGNOSTIC MONITOR
RH = RIGHT HALF OF CONSOLE SWITCHES IF UNDER
DIAGNOSTIC MONITOR CONTROL.
B. USER MODE
TO OUTPUT THE PRINTED ERROR MESSAGES TO A USER SPECIFIED
DEVICE IN USER MODE, ASSIGN THE DESIRED OUTPUT DEVICE TO
DEVICE NAME 'DEV' AND SET SWITCH 'PNTLPT'. THE PHYSICAL
DEVICE USED CAN BE ANY DEVICE THAT CAN ACCEPT ASCII OUTPUT
FORMAT SUCH AS LPT, DSK, DTA, ETC. THE CORRESPONDING
OUTPUT FILE IS 'DAKAL.TMP'
EXAMPLE DEVICE ASSIGNMENT:
.ASSIGN DSK DEV
IN USER MODE THE PROGRAM WILL MAKE 1000(8) PASSES AND THEN
RETURN TO DIAMON COMMAND MODE.
MAINDEC-10-DAKAL.TXT
PAGE 9
8.0 OPERATIONAL VARIATIONS (CON'T)
THE OUTPUT FILE (IF USED) MAY THEN BE LISTED BY USING THE
NORMAL MONITOR COMMANDS (PRINT, LIST, TYPE, PIP, ETC.).
IF THE PROGRAM IS ABORTED BEFORE COMPLETION (BY ^C, ETC.) THE
OUTPUT FILE MAY BE CLOSED BY USING THE MONITOR 'REENTER'
COMMAND.
C. SYSTEM EXERCISER
START ADDRESS IS 30003. DATA SWITCHES ARE PRESTORED IN
'SWTEXR' LOC 30023.
9.0 MISCELLANEOUS
THE NON-EX-MEMORY AND PARITY STOP SWITCHES SHOULD BE RESET
(0). THESE ERRORS, ILLEGAL UUO'S AND OTHER ERRORS OF THIS
TYPE ARE HANDLED BY PRINTOUT ON THE TELETYPE.
10.0 LISTING
DAKAL.HST
THIS IS A HISTORY OF THE DEVELOPMENT OF MAINDEC-10-DAKAL
************************************************************************
PRODUCT CODE: MAINDEC-10-DAKAL
PRODUCT NAME: BASIC INSTRUCTION DIAGNOSTIC #12
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
************************************************************************
DAKAL.MAC
[Download]
{% highlight text %} {% include_relative DAKAL.MAC.txt %} {% endhighlight %}