693 lines
31 KiB
Markdown
693 lines
31 KiB
Markdown
---
|
|
layout: page
|
|
title: PDP-10 KA10 Basic Instruction Diagnostic #12
|
|
permalink: /apps/pdp10/diags/ka10/dakal/
|
|
machines:
|
|
- id: testka10
|
|
type: pdp10
|
|
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
|
debugger: true
|
|
commands: a DAKAL.MAC
|
|
---
|
|
|
|
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](DAKALM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakalm.mac.html)] and
|
|
[DAKALT.MAC](DAKALT.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakalt.mac.html)]
|
|
for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/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:
|
|
|
|
- [Issues](#issues)
|
|
- [Instructions](#dakaltxt)
|
|
- [History](#dakalhst)
|
|
- [Source Code](#dakalmac)
|
|
- [MACRO-10 Listing](DAKAL.LST.txt)
|
|
- [Additional Information](http://archive.pcjs.org/apps/pdp10/diags/ka10/dakal/DAKAL.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 DAKAL.MAC
|
|
|
|
will automatically read the [DAKAL.MAC](DAKAL.MAC.txt) source file (a slightly modified copy of [DAKALM.MAC](DAKALM.MAC.txt)),
|
|
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](DAKAL.LST.txt), 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,000000000010) PDP-10: 652525252520 JavaScript: 252525252520 @030667
|
|
MUL(525252525252,000000000010) PDP-10: 652525252520 JavaScript: 252525252520 @030667
|
|
MUL(525252525252,000000000040) PDP-10: 652525252500 JavaScript: 252525252500 @030715
|
|
MUL(525252525252,000000000040) PDP-10: 652525252500 JavaScript: 252525252500 @030715
|
|
MUL(525252525252,000000000200) PDP-10: 652525252400 JavaScript: 252525252400 @030743
|
|
MUL(525252525252,000000000200) PDP-10: 652525252400 JavaScript: 252525252400 @030743
|
|
MUL(525252525252,000000001000) PDP-10: 652525252000 JavaScript: 252525252000 @030771
|
|
MUL(525252525252,000000001000) PDP-10: 652525252000 JavaScript: 252525252000 @030771
|
|
MUL(525252525252,000000004000) PDP-10: 652525250000 JavaScript: 252525250000 @031017
|
|
MUL(525252525252,000000004000) PDP-10: 652525250000 JavaScript: 252525250000 @031017
|
|
MUL(525252525252,000000020000) PDP-10: 652525240000 JavaScript: 252525240000 @031045
|
|
MUL(525252525252,000000020000) PDP-10: 652525240000 JavaScript: 252525240000 @031045
|
|
MUL(525252525252,000000100000) PDP-10: 652525200000 JavaScript: 252525200000 @031073
|
|
MUL(525252525252,000000100000) PDP-10: 652525200000 JavaScript: 252525200000 @031073
|
|
MUL(525252525252,000000400000) PDP-10: 652525000000 JavaScript: 252525000000 @031121
|
|
MUL(525252525252,000000400000) PDP-10: 652525000000 JavaScript: 252525000000 @031121
|
|
MUL(525252525252,000002000000) PDP-10: 652524000000 JavaScript: 252524000000 @031147
|
|
MUL(525252525252,000002000000) PDP-10: 652524000000 JavaScript: 252524000000 @031147
|
|
MUL(525252525252,000010000000) PDP-10: 652520000000 JavaScript: 252520000000 @031175
|
|
MUL(525252525252,000010000000) PDP-10: 652520000000 JavaScript: 252520000000 @031175
|
|
MUL(525252525252,000040000000) PDP-10: 652500000000 JavaScript: 252500000000 @031223
|
|
MUL(525252525252,000040000000) PDP-10: 652500000000 JavaScript: 252500000000 @031223
|
|
MUL(525252525252,000200000000) PDP-10: 652400000000 JavaScript: 252400000000 @031251
|
|
MUL(525252525252,000200000000) PDP-10: 652400000000 JavaScript: 252400000000 @031251
|
|
MUL(525252525252,001000000000) PDP-10: 652000000000 JavaScript: 252000000000 @031277
|
|
MUL(525252525252,001000000000) PDP-10: 652000000000 JavaScript: 252000000000 @031277
|
|
MUL(525252525252,004000000000) PDP-10: 650000000000 JavaScript: 250000000000 @031325
|
|
MUL(525252525252,004000000000) PDP-10: 650000000000 JavaScript: 250000000000 @031325
|
|
MUL(525252525252,020000000000) PDP-10: 640000000000 JavaScript: 240000000000 @031353
|
|
MUL(525252525252,020000000000) PDP-10: 640000000000 JavaScript: 240000000000 @031353
|
|
MUL(525252525252,100000000000) PDP-10: 600000000000 JavaScript: 200000000000 @031401
|
|
MUL(525252525252,100000000000) PDP-10: 600000000000 JavaScript: 200000000000 @031401
|
|
MUL(252525252525,000000000002) PDP-10: 125252525252 JavaScript: 525252525252 @031461
|
|
MUL(252525252525,000000000010) PDP-10: 125252525250 JavaScript: 525252525250 @031507
|
|
MUL(252525252525,000000000040) PDP-10: 125252525240 JavaScript: 525252525240 @031535
|
|
MUL(252525252525,000000000200) PDP-10: 125252525200 JavaScript: 525252525200 @031563
|
|
MUL(252525252525,000000001000) PDP-10: 125252525000 JavaScript: 525252525000 @031611
|
|
MUL(252525252525,000000004000) PDP-10: 125252524000 JavaScript: 525252524000 @031637
|
|
MUL(252525252525,000000020000) PDP-10: 125252520000 JavaScript: 525252520000 @031665
|
|
MUL(252525252525,000000100000) PDP-10: 125252500000 JavaScript: 525252500000 @031713
|
|
MUL(252525252525,000000400000) PDP-10: 125252400000 JavaScript: 525252400000 @031741
|
|
MUL(252525252525,000002000000) PDP-10: 125252000000 JavaScript: 525252000000 @031767
|
|
MUL(252525252525,000010000000) PDP-10: 125250000000 JavaScript: 525250000000 @032015
|
|
MUL(252525252525,000040000000) PDP-10: 125240000000 JavaScript: 525240000000 @032043
|
|
MUL(252525252525,000200000000) PDP-10: 125200000000 JavaScript: 525200000000 @032071
|
|
MUL(252525252525,001000000000) PDP-10: 125000000000 JavaScript: 525000000000 @032117
|
|
MUL(252525252525,004000000000) PDP-10: 124000000000 JavaScript: 524000000000 @032145
|
|
MUL(252525252525,020000000000) PDP-10: 120000000000 JavaScript: 520000000000 @032173
|
|
MUL(252525252525,100000000000) PDP-10: 100000000000 JavaScript: 500000000000 @032221
|
|
MUL(252525252525,000000000002) PDP-10: 125252525252 JavaScript: 525252525252 @032301
|
|
MUL(252525252525,000000000010) PDP-10: 125252525250 JavaScript: 525252525250 @032327
|
|
MUL(252525252525,000000000040) PDP-10: 125252525240 JavaScript: 525252525240 @032355
|
|
MUL(252525252525,000000000200) PDP-10: 125252525200 JavaScript: 525252525200 @032403
|
|
MUL(252525252525,000000001000) PDP-10: 125252525000 JavaScript: 525252525000 @032431
|
|
MUL(252525252525,000000004000) PDP-10: 125252524000 JavaScript: 525252524000 @032457
|
|
MUL(252525252525,000000020000) PDP-10: 125252520000 JavaScript: 525252520000 @032505
|
|
MUL(252525252525,000000100000) PDP-10: 125252500000 JavaScript: 525252500000 @032533
|
|
MUL(252525252525,000000400000) PDP-10: 125252400000 JavaScript: 525252400000 @032561
|
|
MUL(252525252525,000002000000) PDP-10: 125252000000 JavaScript: 525252000000 @032607
|
|
MUL(252525252525,000010000000) PDP-10: 125250000000 JavaScript: 525250000000 @032635
|
|
MUL(252525252525,000040000000) PDP-10: 125240000000 JavaScript: 525240000000 @032663
|
|
MUL(252525252525,000200000000) PDP-10: 125200000000 JavaScript: 525200000000 @032711
|
|
MUL(252525252525,001000000000) PDP-10: 125000000000 JavaScript: 525000000000 @032737
|
|
MUL(252525252525,004000000000) PDP-10: 124000000000 JavaScript: 524000000000 @032765
|
|
MUL(252525252525,020000000000) PDP-10: 120000000000 JavaScript: 520000000000 @033013
|
|
MUL(252525252525,100000000000) PDP-10: 100000000000 JavaScript: 500000000000 @033041
|
|
MUL(400000000000,400000000000) PDP-10: 400000000000 JavaScript: 000000000000 @033707 VERIFIED
|
|
MUL(400000000000,400000000000) PDP-10: 400000000000 JavaScript: 000000000000 @033707 VERIFIED
|
|
MUL(400000000000,400000000000) PDP-10: 400000000000 JavaScript: 000000000000 @033707 VERIFIED
|
|
MUL(400000000000,400000000000) PDP-10: 400000000000 JavaScript: 000000000000 @033707 VERIFIED
|
|
MUL(777777777776,777777777776) PDP-10: 000000000004 JavaScript: 000000000000 @033726
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033726
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033726
|
|
MUL(777777777775,777777777775) PDP-10: 000000000011 JavaScript: 000000000000 @033741
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033741
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033741
|
|
MUL(777777777773,777777777773) PDP-10: 000000000031 JavaScript: 000000000000 @033754
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033754
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033754
|
|
MUL(777777777767,777777777767) PDP-10: 000000000121 JavaScript: 000000000000 @033767
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033767
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @033767
|
|
MUL(777777777757,777777777757) PDP-10: 000000000441 JavaScript: 000000000000 @034002
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034002
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034002
|
|
MUL(777777777737,777777777737) PDP-10: 000000002101 JavaScript: 000000000000 @034015
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034015
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034015
|
|
MUL(777777777677,777777777677) PDP-10: 000000010201 JavaScript: 000000000000 @034030
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034030
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034030
|
|
MUL(777777777577,777777777577) PDP-10: 000000040401 JavaScript: 000000000000 @034043
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034043
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034043
|
|
MUL(777777777377,777777777377) PDP-10: 000000201001 JavaScript: 000000000000 @034056
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034056
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034056
|
|
MUL(777777776777,777777776777) PDP-10: 000001002001 JavaScript: 000002000000 @034071
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034071
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034071
|
|
MUL(777777775777,777777775777) PDP-10: 000004004001 JavaScript: 000004000000 @034104
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034104
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034104
|
|
MUL(777777773777,777777773777) PDP-10: 000020010001 JavaScript: 000020000000 @034117
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034117
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034117
|
|
MUL(777777767777,777777767777) PDP-10: 000100020001 JavaScript: 000100000000 @034132
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034132
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034132
|
|
MUL(777777757777,777777757777) PDP-10: 000400040001 JavaScript: 000400000000 @034145
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034145
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034145
|
|
MUL(777777737777,777777737777) PDP-10: 002000100001 JavaScript: 002000000000 @034160
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034160
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034160
|
|
MUL(777777677777,777777677777) PDP-10: 010000200001 JavaScript: 010000000000 @034173
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034173
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034173
|
|
MUL(777777577777,777777577777) PDP-10: 040000400001 JavaScript: 040000000000 @034206
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034206
|
|
MUL(000000777777,000000777777) PDP-10: 377776000001 JavaScript: 777776000001 @034206
|
|
MUL(777777377777,777777377777) PDP-10: 200001000001 JavaScript: 200002000000 @034221
|
|
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: 000002000000 @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: 000004000000 @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: 000010000000 @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: 000020000000 @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: 000040000000 @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: 000100000000 @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: 000200000000 @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: 000400000000 @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: 001000000000 @034364
|
|
MUL(000000777400,000000777400) PDP-10: 377000200000 JavaScript: 777000200000 @034364
|
|
MUL(000000777400,000000777400) PDP-10: 377000200000 JavaScript: 777000200000 @034364
|
|
MUL(776777777777,776777777777) PDP-10: 002000000001 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: 004000000001 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: 010000000001 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: 020000000001 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: 040000000001 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: 100000000001 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: 200000000001 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: 000000000001 JavaScript: 400000000000 @034514
|
|
MUL(000000600000,000000600000) PDP-10: 040000000000 JavaScript: 440000000000 @034514
|
|
MUL(377777777777,377777777777) PDP-10: 000000000001 JavaScript: 000000000000 @034527
|
|
MUL(777777377777,000001000000) PDP-10: 777777000000 JavaScript: 377777000000 @035347
|
|
MUL(777777377777,000001000000) PDP-10: 777777000000 JavaScript: 377777000000 @035347
|
|
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](DAKAL.MAC.txt)]
|
|
|
|
{% highlight text %}
|
|
{% include_relative DAKAL.MAC.txt %}
|
|
{% endhighlight %}
|