--- layout: page title: PDP-10 KA10 Basic Instruction Diagnostic #11 permalink: /apps/pdp10/diags/ka10/dakak/ machines: - id: testka10 type: pdp10 config: /devices/pdp10/machine/ka10/test/debugger/machine.xml debugger: true commands: a DAKAK.MAC --- PDP-10 KA10 Basic Instruction Diagnostic #11 -------------------------------------------- The *PDP-10 KA10 Basic Instruction Diagnostic #11* (MAINDEC-10-DAKAK) test code has been extracted from [DAKAKM.MAC](DAKAKM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakakm.mac.html)] and [DAKAKT.MAC](DAKAKT.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakakt.mac.html)] for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below. This diagnostic "TESTS THE MULTIPLY INSTRUCTION AND THE MULTIPLY ALGORITHM." Information regarding this diagnostic includes: - [Issues](#issues) - [Instructions](#dakaktxt) - [History](#dakakhst) - [Source Code](#dakakmac) - [MACRO-10 Listing](DAKAK.LST.txt) - [Additional Information](https://s3-us-west-2.amazonaws.com/archive.pcjs.org/apps/pdp10/diags/ka10/dakak/DAKAK.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](https://s3-us-west-2.amazonaws.com/archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language. This command: a DAKAK.MAC will automatically read the [DAKAK.MAC](DAKAK.MAC.txt) source file (a slightly modified copy of [DAKAKM.MAC](DAKAKM.MAC.txt)), assemble it, and then load the binary image at the location specified in the file. To assemble the diagnostic using the original DEC source files: a 'DAKAKT.MAC;../PARAM.KLM;../FIXED.KLM;DAKAKM.MAC;../UUOERR.KLM;../STOR.KLM' The quotes (either single or double) are required to prevent the PDPjs Debugger from interpreting the filenames as separate commands, because a semicolon is the Debugger's normal command separator. If you want a machine to automatically assemble and load those files on startup, you can add the following machine configuration setting in the page's Front Matter: commands: a 'DAKAKT.MAC;../PARAM.KLM;../FIXED.KLM;DAKAKM.MAC;../UUOERR.KLM;../STOR.KLM' However, in this case, you *must* use `'` as the quoting sequence, because of the way these settings are encoded into JavaScript parameters; e.g.: embedPDP10(...,'{commands:"a 'DAKAKT.MAC;../PARAM.KLM;../FIXED.KLM;DAKAKM.MAC;../UUOERR.KLM;../STOR.KLM'"}'); Issues ------ As noted in [cpuops.js](/modules/pdp10/lib/cpuops.js), in the *doMUL()* function: > The DAKAK diagnostic contains the following code: 036174: 200240 043643 MOVE 5,43643 ; [43643] = 400000000000 036175: 200300 043603 MOVE 6,43603 ; [43603] = 777777777777 036176: 200140 043604 MOVE 3,43604 ; [43604] = 000000000001 036177: 224240 000003 MUL 5,3 ; Multiply 400000000000 by 000000000001 036200: 312240 043604 CAME 5,43604 ; high order result in AC should be: 000000000001 036201: 003240 033721 UUO 5,33721 ; 036202: 312300 043602 CAME 6,43602 ; low order result in AC+1 should be: 000000000000 > The "natural" result is: 05=777777777777 06=400000000000 > And SIMH seems to agree. So why does the DEC diagnostic expect: 05=000000000001 06=000000000000 > The answer can be found in the [DECSYSTEM-10 and DECSYSTEM-20 Processor Reference Manual (June 1982)](https://s3-us-west-2.amazonaws.com/archive.pcjs.org/pubs/dec/pdp10/kl10/AA-H391A-TK_DECsystem-10_DECSYSTEM-20_Processor_Reference_Jun1982.pdf), in the description of the MUL instruction: CAUTION: In the KA10, an AC operand of 2^35 is treated as though it were +2^35, producing the incorrect sign in the product. > This behavior is now simulated below for MODEL_KA10, at least to the extent that the diagnostic is happy. --- DAKAK.TXT --------- ``` MAINDEC-10-DAKAK.TXT IDENTIFICATION -------------- PRODUCT CODE: MAINDEC-10-DAKAK-B-D PRODUCT NAME: DECSYSTEM10 PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (11) FUNCTION: MULTIPLY TEST 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-DAKAK.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-DAKAK.TXT PAGE 3 1.0 ABSTRACT THIS PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC IS THE ELEVENTH IN A SERIES OF PDP-10 KA10 PROCESSOR DIAGNOSTICS. THE DIAGNOSTIC TESTS THE MULTIPLY INSTRUCTION AND THE MULTIPLY ALGORITHM. 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-DAKAK.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-DAKAK.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-DAKAK.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-DAKAK.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-DAKAK.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 'DAKAK.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-DAKAK.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 ``` DAKAK.HST --------- THIS IS A HISTORY OF THE DEVELOPMENT OF MAINDEC-10-DAKAK ************************************************************************ PRODUCT CODE: MAINDEC-10-DAKAK PRODUCT NAME: BASIC INSTRUCTION DIAGNOSTIC #11 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 ************************************************************************ DAKAK.MAC --------- [[Download](DAKAK.MAC.txt)] {% highlight text %} {% include_relative DAKAK.MAC.txt %} {% endhighlight %}