; ; IDENTIFICATION ; -------------- ; Product code: MAINDEC-11-DFKAC-A-D ; Product name: 11/34 EIS Instruction Test ; Date: Dec-1975 ; Maintainer: Diagnostic Group ; Author: Glenn Jonhson ; ; Ccopyright (c) 1975 ; Digital Equipment Corporation, Maynard, Mass. ; ; 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 except ; 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 commit- ; ment by Digital Equipment Corporation, ; ; DEC assumes no responsibility for the use or reliability ; of its software on equipment which is not supplied by ; DEC. ; ; ; CONTENTS ; ; 1. Abstract ; 2. Requirements ; 2.1 Equipment ; 2.2 Storage ; 2.3 Preliminary programs ; 3. Loading procedure ; 4. Starting procedure ; 4.1 Control switch settings ; 4.2 Starting address ; 4.3 Program and/or operator action ; 5. Operating procedure ; 5.1 Switch settings ; 5.2 Subroutine abstracts ; 6. Errors ; 6.1 Error printout ; 6.2 Error recovery ; 7. Restrictions ; 8. Miscellaneous ; 8.1 Execution time ; 8.2 Stack pointer ; 8.3 Pass counter ; 8.4 Test number ; 8.5 Power fail ; 9. Program description ; ; 1. Abstract ; ; This program tests the 11/34 extended instruction set ; (ash, ashc, mul, and div) using registers 0-5 at-least ; once with each instruction. The program should be run for ; at least 2 passes with all switches low, the program is ; designed to run under apt, and act, systems. ; ; This program is a modification of the ls1-11 eis test, ; it has been modified to account for any lsi-11 - 11/34 differences. ; ; ; 2. Requirements ; 2.1 Equipment ; ; 11/34 standard computer and 4kW of memory ; ; 2.2 Storage ; ; Program storage - the routines use memory 0 - 17500 ; ; 2.3 Preliminary programs ; ; none ; ; 3. Loading procedure ; ; Use standard procedure for ABS tapes, ; ; 4. Starting procedure ; 4.1 Control switch settings ; ; See 5.1 (all low for worst case testing) ; ; 4.2 Starting address ; ; After loading the program it should always be started at 200, ; if it is desired to save the pass counter then the program ; should be restarted at location restrt (i.e. 222j otherwise the ; program can be restarted at 200 ; ; 4.3 Program and/or operator action ; 4.3.1 Stand alone ; ; 1) Load program into memory using ABS loader, ; 2) Set switches (see sec 5.1) all low for worst case, ; 3) Start at 200. ; 4) The program will loop and "END PASS" will be typed after ; completion of first pass and every 4th pass, however type ; out will be suppressed if bit 5 of location $envm is high ; 5) A minimum of two passes should always be run, ; ; 4.3.2 Under APT ; ; Load the program and start after setting the desired switches ; (see sec. 5.1). ; ; 5. Operating procedure ; 5.1 Switch settings ; ; If no hardware switch register is available, the program ; automatically uses the contents of loc. 176 as the software ; switch register. the user should set this location before ; starting the program, ; ; bit # octal value function ; ; 15 100000......... halt on error ; 13 020000......... inhibit printout ; ; An 8 bit byte $envm (i.e. location 421) has been used to define ; the operating mode, all typeouts can be suppressed by making ; bit 5 of byte $envm high, in other words by plcing a 20000 in ; location 420 ; ; 5.2 Subroutine abstracts ; 5.2.1 Halt routine ; ; This routine called via jsr instruction i$ used each time ; an error is seen and an error message of the format given ; in sec, 6.1 is typed out unless supressed by the switches ; defined in sec, 5.1 ; ; 5.2.2 Trap catcher ; ; A ".+2" - "halt" sequence is repeated from 0-776 to catch ; any unexpected traps, thus any unexpected traps or ; interrupts will halt at the vector +2. ; ; 6. Errors ; 6.1 Error printout ; ; The format is as follows: ; ; adr errnm ; ; Where: ; adr - address of error ; errnm - error number ; ; In most cases the comment beside the call for halt subroutine ; tells what was being checked and what was expected. all ; printouts will be suppressed when bit 5 of location $envm ; is high, while running under apt the diagnostic will not ; support spooling of console outputs, ; ; ; 6.2 Error recovery ; ; Restart at 200 or 222 (see sec 4.2) ; ; ; 7. Restrictions ; ; None ; ; ; 8. Miscellaneous ; ; ; 8.1 Execution time ; ; Normally first "END PASS" will be typed within 1 second and ; within 10 seconds for every consecutive 400 passes ; ; 8.2 Stack pointer ; ; Stack is initially set to 600 ; ; 8.3 Pass count ; ; A 16 bit location "$pass" (i.e. location 406) is used to keep ; pass count. it can be cleared by restarting the program at 200 ; ; ; 8.4 Test number ; ; A 16 bit location "$testn" (i.e. location 404) is used to keep track ; of the test number, upper byte of this location gives the iteration ; number and the lower byte the test that was being executed ; ;8.5 Power fail ; ; The diagnostic can be power failed with no errors. To use, ; start the test as usual and power down then up at any time, ; The program should restart from test 0 after typing "power" ; with no errors, however if the program is stored in a MOS ; memory that can not hold data with power down then the program ; will not recover from a power fail. ; ;9. Program description ; ; This program tests all the eis instructions of the 11/34 ; for ash and ashc instructions every even pass is executed ; with destination mode 0 for all registers and every odd pass ; with destination mode,of 67, the diagnostic does not make a ; pass with T-bit set, ;_____________________________________________________________________________ ; HOEP = 0 ; halt on end-of-pass NOSCO = 0 ; no scope trap INSWR = 000000 ; 100000 for halt on error, no gtswr SKIP = 0 ; skip final prints ;_____________________________________________________________________________ ; .asect ; . = 0 ; loop on test ; .title dfkaca ; .nlist cnd, mc, md ; .list me ; ;_____________________________________________________________________________ ; $tn = 1 ; $swr = 160000 ; halt on error, loop on test ; inhibit error typout dummy = 0 ; errnm = 1 ; f = 51 ; n = 176 ; ; .if ne NOSCO ; scope = nop ; scope1 = nop ; scope3 = nop ; .iff ; scope = 10701 ; scope1 = 10701 ; scope3 = 10703 ; .endc ; ; sw09 = 1000 ; sw10 = 2000 ; sw11 = 4000 ; sw12 = 10000 ; type = iot ; ;_____________________________________________________________________________ ; .macro vect, offset, adr, val ; . = offset ; .if nb, ; .word adr ; .iff ; .word .+2 ; .endc ; .if nb, ; .word val ; .iff ; .word 0 ; .endc ; .endm ; ;_____________________________________________________________________________ ; ; All unused locations from 4-776 contain a ".+2, halt" ; sequence to catch illegal traps and interrupts ; location 0 contains 0 to catch improperly loaded vectors ; .sbttl "trap catcher" .nlist ; vect 0, 2 ; vect 4, 6 ; vect 10, 12 ; vect 14, 16 ; vect 20, $type ; vect 24, 200 ; for apt start up vect 30, 32 ; vect 34, 36 ; vect 40, 42 ; hooks required by act-11 vect 44, $apthd, $endad ; set loc.46 to address of $endad in .seop .list ; ;_____________________________________________________________________________ ; .sbttl "act11 hooks" .nlist ; vect 50, 52 ; set loc.52 to zero vect 54, 56 ; vect 60, 62 ; vect 64, 66 ; vect 70, 72 ; vect 74, 76 ; vect 100, 102 ; vect 104, 106 ; vect 110, 112 ; vect 114, 116 ; vect 120, 122 ; vect 124, 126 ; vect 130, 132 ; vect 134, 136 ; vect 140, 142 ; vect 144, 146 ; vect 150, 152 ; vect 154, 156 ; vect 160, 162 ; vect 164, 166 ; vect 170, 172 ; .list ; ; . = 174 ; dispreg: .word 0 ; software display register swreg: .word INSWR ; software switch register ; ;_____________________________________________________________________________ ; .sbttl "starting address(es)" . = 200 mov #$pwrdn, @#24 ; prepare to service power down routine mov #$devct, R0 ; prepare to initialize the stack 2$: clr -(R0) ; cmp #$mail, R0 ; bne 2$ ; restrt: jmp begin ; ; .nlist ; vect 230, 232 ; vect 234, 236 ; vect 240, 242 ; vect 244, 246 ; vect 250, 252 ; vect 254, 256 ; vect 260, 262 ; vect 264, 266 ; vect 270, 272 ; vect 274, 276 ; vect 300, 302 ; vect 304, 306 ; vect 310, 312 ; vect 314, 316 ; vect 320, 322 ; vect 324, 326 ; vect 330, 332 ; vect 334, 336 ; vect 340, 342 ; vect 344, 346 ; vect 350, 352 ; vect 354, 356 ; vect 360, 362 ; vect 364, 366 ; vect 370, 372 ; vect 374, 376 ; .list ;_____________________________________________________________________________ ; . = 400 .sbttl "apt mailbox-etable" .even ; $mail: ; apt mailbox $msgty: .word 0 ; amsgty - message type code $fatal: .word 0 ; afatal - fatal error number $testn: .word 0 ; atestn - test number $pass: .word 0 ; apass - pass count $devct: .word 0 ; adevct - device count $unit: .word 0 ; aunit - i/o unit number $msgad: .word 0 ; amsgad - message address $msglg: .word 0 ; amsglg - message length $etable: ; apt environment table $env: .byte 0 ; aenv - environment byte $envm: .byte 0 ; aenvm - environment mode bits $swreg: .word 0 ; aswreg - apt switch register $uswr: .word 0 ; auswr - user switches $cpuop: .word 0 ; acpuop - cpu type, options $etend: ;_____________________________________________________________________________ ; .sbttl "APT PARAMETER BLOCK" ; ; Setup apt parameter block as defined in the apt-pdp11 diagnostic interface spec. ; $apthd: $hibts: .word 0 ; two high bits of 18 bit mailbox addr. $mbadr: .word $mail ; address of apt mailbox (bits 0-15) $tstm: .word 3 ; run time of longest test $pastm: .word 5 ; run time in secs. of 1st pass on 1 unit (quick verify) $unitm: .word ; additional run time (secs) of a pass for each additional unit .word $etend-$mail/2 ; length mailbox-etable(words) ; . = $apthd ; count: .blkw 1 ; psword: .blkw 1 ; temp1: .blkw 1 ; temp2: .blkw 1 ; temp3: .blkw 1 ; temp4: .blkw 1 ; temp5: .word 0 ; temp6: .word 0 ; typcnt: .byte 0 ; $tpcnt: .byte 0 ; ;_____________________________________________________________________________ ; s0: .word 7 ; s1: .word -7 ; s2: .word s1 ; s3: .word -6 ; s4: .word -1 ; s5: .word 40000 ; s6: .word s5 ; s7: .word 40000 ; s8: .word -2 ; s9: .word 2 ; s10: .word s9 ; s11: .word 2 ; swr: .word 177570 ; display: .word 177570 ; ttyout: .word 64 ; $tpb: .word 177566 ; $tps: .word 177564 ; ; $crlf: .asciz <15><12>/ / ; power: .asciz <12><15>/POWER/ ; .even ; ;_____________________________________________________________________________ ; vect 534, 536 ; vect 540, 542 ; vect 544, 546 ; vect 550, 552 ; vect 554, 556 ; vect 560, 562 ; vect 564, 566 ; vect 570, 572 ; vect 574, 576 ; ;_____________________________________________________________________________ ; .macro $err, num, label ; beq .+10 ; .if nb,