/PDP-8, 8I, 8S EXTENDED MEMORY CONTROL TEST. / /COPYRIGHT 1969-1970, DIGITAL EQUIPMENT CORP.,MAYNARD,MASS. / /PLACE NUMBER OF EXTENDED 4K FIELDS AVAILABLE IN SR9 TO 11, (UP TO 7) /IF USING AN 8I, PLACE SR8 ON A-1, OTHERWISE LEAVE 0. /START PROGRAM AT 0200 / /CONSTANTS / CDF=6201 CIF=6202 RDF=6214 RIF=6224 RMF=6244 RIB=6234 *1 / JMP 1 0002 0003 / *20 / JMPI0, JMP I 0 ISZ0, ISZ 0 XTFLG, TFLG XSTKS, NSTKS XRMF, TRMF XRANS, TRANS XAUTO, TAUTO LOOP, 0 NDF, 0 STKS, 0 DAT, 0 NOSTAK, 0 NOFLD, 0 KE40M, E40-1 KE40, E40 KHLT, HLT KCDF, 6201 KCIF, 6202 XFD, EXFD K1, 1 K7, 7 K10, 10 K7777, 7777 K7000, 7000 K7707, 7707 K7767, 7767 K7757, 7757 K7747, 7747 K7737, 7737 K7727, 7727 K7717, 7717 K7776, 7776 K7775, 7775 K7774, 7774 K7773, 7773 K7772, 7772 K7771, 7771 K7770, 7770 POINT, .+2 K7S, .+1 K7766, 7766 7755 K7744, 7744 7733 7722 7711 7700 XTDF, STDF XTDF1, STDF+1 KXFLD, EXFLD KJMP, JMP I 2 KNTR, ENTER K20, 20 JMP2, JMP I KFLD0 KFLD0, RTRN KRTN, E45A+2 XFIB, SFIB /TEST CDF AND RDF / *200 / BEGIN, CLA DCA LOOP /LOOP COUNTER / DF0, CDF 00 /DF 0 RDF SNA /SHOULD NOT SKIP JMP DF7 E1, HLT /ERROR. CDF OR RDF FAILED CLA JMP DF0 /REPEAT / DF7, TAD K7707 /7707 CDF 70 /DF 7 RDF CMA /AC = 0 SNA /SHOULD NOT SKIP JMP OK1 F2, HLT /CDF OR RDF FAILED CLA JMP DF7 / OK1, ISZ LOOP /CHECK DONE JMP DF0 / CLA DCA LOOP /LOOP GOUNVER / DF1, TAD K7767 /7767 CDF 10 /DF 10 RDF CMA /AC=0 SNA JMP DF2 E3, HLT /CDF1 OR RDF FAILED CLA JMP DF1 / DF2, TAD K7757 /7757 CDF 20 /DF2 RDF CMA /AC=0 SNA JMP OK2 E4, HLT /CDF2 OR RDF FAILED CLA JMP DF2 / OK2, ISZ LOOP /DONE IF SKIP JMP DF1 CLA DCA LOOP / DF3, TAD K7747 /7747 CDF 30 /DF 3 RDF CMA /AC=0 SNA JMP DF4 E5, HLT /CDF 3 OR RDF FAILED CLA JMP DF3 / DF4, TAD K7737 /7737 CDF 40 /DF 4 RDF CMA /AC=0 SNA JMP OK3 E6, HLT /CDF 4 OR RDF FAILED CLA JMP DF4 / OK3, ISZ LOOP /DONE IF SKIP JMP DF3 / CLA DCA LOOP / DF5, TAD K7727 /7727 CDF 50 /DF5 RDF CMA /AC=0 SNA JMP DF6 E7, HLT /CDF 5 OR RDF FAILED, CLA JMP DF5 / DF6, TAD K7717 /7717 CDF 60 /DF 6 RDF CMA /AC=0 SNA JMP OK4 E8, HLT /CDF 6 OR RDF FAILED CLA JMP DF6 / OK4, ISZ LOOP /DONE WHEN SKIP JMP DF5 / /NOW TEST INTERRUPT BUFFER (IB) BITS 9-11 WITH /RIB, PI IS ENABLED, TELEPRINTER FLAG IS /USED FOR INTERRUPT, / CDF 00 /DF0 TAD JMPI0 /JMP I0=JMP I 0 DCA 1 /C(1)=JMP I 0 DCA LOOP TSF /TEST TTY FLAG JMS I XTFLG /SET FLAG / IB0, ION /ENABLE PI CLA RIB /READ SF SNA JMP IB1 E9, HLT /RIB FAILED JMP IB0 / IB1, CDF 10 /DF 1 ION CLA RDF /DF SHOULD BE AFTER A PI SNA JMP .+3 E10, HLT JMP IB1 /DF NOT CLEARED, OR NO PI / TAD K7776 RIB /READ SF CMA /AC=0 SNA JMP OK5 E11, HLT /RIB OR SF FAILED JMP IB1 OK5, ISZ LOOP /DONE WHEN SKIP JMP IB0 JMP I .+1 IB2-2 *400 CLA DCA LOOP / IB2, CDF 20 /DF 2 ION CLA RDF /SHOULD BE 0 AFTER PI SNA JMP .+3 E12, HLT /DF NOT CLEARED, OR NO PI JMP IB2 / TAD K7775 RIB /AC=7777 CMA /=0 SNA JMP IB3 E13, HLT /RIB OR SF FAILED JMP IB2 / IB3, CDF 30 /DF3 ION CLA RDF /DF SHOULD BE CLEARED SNA JMP .+3 E14, HLT /DF NOT CLEARED JMP IB3 / TAD K7774 RIB /AC=7777 CMA /AC=0 SNA JMP OK6 HLT /RIB OR SF FAILED JMP IB3 / OK6, ISZ LOOP /DONE IF SKIP JMP IB2 / CLA DCA LOOP / IB4, CDF 40 /DF 3 ION CLA RDF /DF MUST BE 000 AFTER A PI SNA /ERROR IF SKIP JMP .+3 E16, HLT /DF NOT 0 AFTER PI JMP IB4 / TAD K7773 /AC=7773 RIB /AC=7777 CMA /AC:0/AC=0 SNA JMP IB5 E17, HLT /RIB OR SF FAILED JMP IB4 / IB5, CDF 50 /DF5 ION CLA RDF /DF SHOULD=000 SNA JMP .+3 E18, HLT /DF NOT 0 AFTER PI JMP IB5 / TAD K7772 /AC= 7772 RIB / = 7777 CMA / = 0 SNA JMP OK7 E19, HLT /RIB OR SF FAILED JMP IB5 / OK7, ISZ LOOP /DONE IF 0 AND SKIP JMP IB4 / CLA DCA LOOP / IB6, CDF 60 /DF6 ION CLA RDF /DF MUST=0 AFTER PI SNA JMP .+3 E20, HLT /DF NOT 0 AFTER PI JMP IB6 / TAD K7771 /,7771 RIB /AC=7777 CMA SNA JMP IB7 E21, HLT /RIB OR SF FAILED JMP IB6 / IB7, CDF 70 /DF 7 ION CLA RDF /DF MUST = 0 AFTER PI SNA JMP .+3 E22, HLT /DF NOT 0 JMP IB7 / TAD K7770 RIB /AC=7777 CMA SNA JMP OK8 E23, HLT /RIB OR SF FAILED JMP IB7 / OK8, ISZ LOOP /DONE IF 0 JMP IB6 JMP I .+1 /NEW PAGE 600 *600 /NOW TEST DCA I AND TAD I TO ALL STACKS, NUMBER OF /EXTENDED STACKS SHOULD BE IN SR9 TO 11, EACH STACK WILL /CONTAIN ITS DF# IN LOCATION 7000. DCA LOOP DCAI, JMS I XSTKS /READ SR 9-11 IAC DCA NDF /DF NUMBER = 1 TO START TAD KCDF /6201 TAD K10 DCA .+1 /DF 001 TO START WITH DFLD, CDF 00 /WILL BE INCREMENTED TAD NDF /DF# DCA I K7000 /PUT IN 7000 OF STACK ISZ STKS /ALL STACKS WHEN 0 SKP JMP TADI /TEST TAD I TAD K10 TAD DFLD /INCR, CDF IOT DCA DFLD ISZ NDF JMP DFLD /- / TADI, JMS I XSTKS /SR9=11 AGAIN IAC DCA NDF /DF#=1 AGAIN TAD KCDF /6201 TAD K10 DCA .+1 TFLD, CDF 00 TAD I K7000 /AC=DF CONTENTS NOW DCA DAT /SAVE TEMP TAD DAT CIA /2'S COMP TAD NDF /BETTER BE EQUAL SZA CLA JMP E24-1 /ERROR PATH ISZ STKS /ALL WHEN 0 JMP .+4 ISZ LOOP /DONE WHEN 0 JMP DCAI JMP IBSF /NEXT TEST TAD K10 TAD TFLD /CDF IOT + 10 DCA TFLD ISZ NDF JMP TFLD / TAD DAT /DATA AS READ E24, HLT /AC=DATA READ. DF INDICATORS /EQUAL FIELD WHERE GOT DATA, /BOTH SHOULD BE EQUAL CLA JMP TFLD /CIF TEST, CHECKS THE ABILITY OF A CIF-ION-NOP-JMP OR /CIF-ION-NOP-JMS SEQUENCE TO DO THE FOLLOWING: /1. CIF ENABLE MB TO IB TRANSFER. /2. INHIBIT INTERRUPT TIL JMP OR JMS EXECUTED. /3. INTERRUPT AFTER JMP OR JMS EXECUTED. /4. JMP OR JMS ENABLES IB TO IF TRANSFER. /5. INTERRUPT ENABLES IF TO SF TRANSFER. /SET UP FOR CIF-ION-NOP-JMP CHECK. IBSF, CDF 00 /SET LOCS 1-2 TO ISZ 0, TAD ISZ0 /JMP I 0 RESPECTIVELY. DCA 1 TAD KNOP DCA 2 TAD JMPI0 DCA 3 / /NOW STORE HALTS IN LOC1, CIFJMP+1, /AND CIFJMS+1 OF ALL EXTENDED FIELDS, / JMS I XSTKS TAD KCDF TAD K10 DCA .+1 HLTS, CDF 10 TAD KHLT DCA I K1 TAD KHLT DCA I E31 TAD KHLT DCA I E32 ISZ STKS SKP JMP .+3 TAD HLTS JMP HLTS-2 CDF 00 TSF /ENSURE TTO FLAG SET. JMS I XTFLG DCA LOOP /SET COUNTER FOR 4096 PASSES. AGAIN1, TAD KCIF /INITIALIZE TO CIF 00. DCA CIFJMP DCA CIFCK /INITIALIZE I.F. CHECK TO 0. JMS I XSTKS /READ SR 9-11. CIFJPL, TAD CIFJMP TAD K10 DCA CIFJMP TAD CIFCK TAD K10 DCA CIFCK CIFJMP, CIF 00 /MODIFIED TO CURRENT FIELD /UNDER TEST. ION NOP JMP .+1 E25, HLT /ERROR, NO PI OR INHIBIT PI. RIB CIA TAD CIFCK SNA CLA JMP E26+3 TAD CIFCK CLL RAR RTR RIB E26, HLT /ERROR, I.B. TO I.F. TRANSFER CLA /FAILED AFTER CIF-JMP. BAD JMP CIFJMP /I.F. IN AC6-8, GOOD I.F. IN /AC9-11. REPEAT UPON CONTINUE. ISZ STKS /DONE? JMP CIFJPL /NO, DO NEXT FIELD ISZ LOOP /4096 TIMES? JMP AGAIN1 /NO, DO IT ALL AGAIN. JMP I .+1 /YES, GO TEST CIF-JMS. IBSF1 KNOP, NOP CIFCK, 0 E31, CIFJMP+1 E32, CIFJMS+1 *1000 IBSF1, CLA CDF 00 TSF /ENSURE TTO FLAG SET. JMS I XTFLG DCA LOOP /SET UP FOR 4096 PASSES. AGAIN2, TAD KCIF /INIT. TO CIF 00. DCA CIFJMS DCA CIFCK1 /INIT. I.F. CHECK TO 0. JMS I XSTKS /READ SR9-11. CIFJSL, TAD CIFJMS TAD K10 DCA CIFJMS TAD CIFCK1 TAD K10 DCA CIFCK1 CIFJMS, CIF 00 /MODIFIED TO CURRENT FIELD /UNDER TEST. ION NOP JMS .+1 0 E27, HLT /ERROR. NO PI OR INHIBIT PI RIB CIA TAD CIFCK1 SNA CLA JMP E30+3 TAD CIFCK1 CLL RAR RTR RIB E30, HLT /ERROR. I.B. TO I.F. TRANSFER CLA /FAILED AFTER CIF-JMS. BAD JMP CIFJMS /I.F. IN AC6-8, GOOD I.F. /IN AC9-11. REPEAT UPON CONTINUE ISZ STKS /DONE? JMP CIFJSL /NO. DO NEXT FIELD. ISZ LOOP /4096 TIMES? JMP AGAIN2 /NO, DO IT ALL AGAIN. JMP TRMF /YES. GO IN TO NEXT TEST CIFCK1, 0 / /TEST INTERRUPT INHIBIT /FROM EACH FIELD, REFER TO HEADING TITLED "EXTENDED /FIELD TEST RDUTINE", THIS ROUTINE IS PLACED IN /EACH TESTED FIELD AT THE ADDRESSES SPECIFIED, THE /INDICATED ERROR HALTS WILL BE IN THE EXTENDED /FIELD, PRESS CONT, TO RECOVER, ONLY 1 FIELD WILL /CONTAIN THE ROUTINE AT ANY ONE TIME, OTHER FIELDS /HILL CONTAIN ALLO'S, THE ROUTINE IS REPLACED WITH /HALTS AFTER COMPLETION, THE PORTIONS OF THE FIELD /WHICH DO NOT CONTAIN THE ROUTINE ARE SET TO 0000 /BEFOREHAND. / / /SETUP FIELDS TO TEST, POINTERS, ETC,, / TRMF, JMS I XSTKS /READ SR9-11 TAD KCDF /6201 DCA .+6 TAD .+5 TAD K10 DCA .+3 CMA DCA 10 CDF 00 DCA I 10 /PLACE 0'S IN EACH FIELD FROM TAD 10 /LOC, 0 TO 7777, CMA SZA CLA JMP .-4 ISZ STKS JMP TRMF+3 / /NOW PUT A HLT IN EACH FIELD THE SAME /LOCATION AS E40, BELOW. / JMS I XSTKS /READ SR 9-11 TAD KCDF TAD K10 DCA .+1 CHDF, CDF 00 TAD KE40 /KE40 = ADDRESS OF E40. DCA LOOP /SAVE TEMPORARILY TAD KHLT /KHLT = 7402 (HLT) DCA I LOOP ISZ STKS /DONE ALL STACKS WHEN SKIP SKP JMP .+3 TAD CHDF JMP CHDF-2 / CDF 00 STRMF, TSF /CHECK TTY FNAG JMS I XTFLG /GO SET IT TAD K7707 DCA LOOP TAD POINT DCA K7S /POINTER FOR K7700 TO K7766 JMS I XSTKS /READ SR 9-11 TAD KCDF /6201 TAD K10 /10 DCA STDF TAD KCIF /6202 TAD K10 /10 DCA STDF+1 TAD STDF+1 DCA I XFD JMS I XRANS /PUT TEST ROUTINE INTO FIELD X / STDF, CDF 10 /FIELD 1 TO START WITH CIF 10 JMP .+1 /SHOULD ENTER EXTENDED FIELD /AFTER THIS JMP, HLT IF NOT NOP E40, HLT /ERROR, PI FAILED /C(AC) = C(I.B.) JMP STDF /REPEAT SAME TEST. / /ENTER HERE AFTER P1 FROM EXTENDED BANK *1200 / ENTER, RDF /DF SHOULD BE 000 SNA /ERROR IF SKIP JMP .+4 /CHECK C(SF) E41, HLT /AC=C(DF) CLA JMP I XTDF /REPEAT TEST CIF 10 /SET I.B. TO FIELD 1 RMF /I.B. NOW EQUAL TO SF RIB /READ IB CIF 00 CDF 00 TAD I K7S CMA SNA CLA /ERROR IF SKIP JMP CKPC RMF RIB E42, HLT /ERROR RMF AND PI WORKED, BUT CLA /I,B, NOT CORRECT AFTER RMF, /AC=C(IB) CDF 00 CIF 00 JMP I XTDF /BACKUP A PAGE AND REPEAT / CKPC, TAD KE40 /KE40=ADDRESS OF E40 IAC /MAKE E40+1 CIA TAD 0 /COMPARE TO C(0) SNA CLA /SHOULD NOT SKIP JMP .+5 /ALL OK SETUP FOR NEXT FIELD TAD 0 E43, HLT /ERROR, ALL WORKED, BUT /C(PC) WAS NOT=TO E40+1 /AFTER PI IN EXTENDED /FIELD, C(AC)=C(0),F0, /CHECK FOR P1 NOT INHIBITED, /OR AUTO-INDEX REG, /12 FAILING IN THE EXTENDED FIELD. CLA JMP I XTDF /BACKUP AND REPEAT / /SETUP FOR NEXT FIELD / ISZ STKS /DONE ALL IF SKIP JMP .+5 ISZ LOOP /DONE LOOPING IF SKIP JMP I .+2 /REPEAT ALL AGAIN JMP I XFIB /EXIT TO NEXT TEST STRMF+4 /BACK TO LAST PAGE / /SET LAST TESTED FIELD TO ALL 0'S AND PUT A /HLT IN RESPECTIVE ADDRESS OF E40 / CLA CMA DCA 10 TAD I XTDF /CODF X/DF SIDE DCA .+1 CDF 10 /F1 TO START WITH DCA I 10 TAD 10 CMA SZA CLA /CLEARD IF SKIP JMP .-4 CDF 00 TAD I XTDF /CDF X0 AT STDF DCA .+1 CDF 10 TAD KHLT /=7402 (HLT) DCA I KE40 /KF40=ADDRESS OF E40 CDF 00 /RESTORE DF / /INCREMENT CDF AND CIF IOT'S AT STDF, STDF+1 /TO NEXT FIELD. / TAD I XTDF /TDF X0 AT STDF TAD K10 DCA I XTDF TAD I XTDF1 /CIF XP AT STDF TAD K10 DCA I XTDF1 TAD I XTDF1 DCA EXFD ISZ K7S JMS TRANS /PUT ROUTINE IN NEW FIELD JMP I XTDF /TEST NEW FIELD /EXTENDED FIELD TEST ROUTINE / /THE FOLLOWING INSTRUCTIONS ARE PLACED IN /EACH EXTENDED FIELD TESTED, THE NUMBERS IN THE /COMMENTS FIELD CORRESPOND TO THE /MEMORY LOCATIONS IN THE TESTED FIELLD, LOCATIONS /0 THRU 11 ARE USED FOR AN ERROR ROUTINE /IN CASE FIELD 0 IS NOT ENTERED AFTER AN /INTERRUPT, THE EXTENDED FIELD SHOULD BE /ENTERED AT LOCATION E40-1 WHICH CORRESPONDS /TO F40-1 IN FIELD 0. / /EXTENDED FIELD INSTRUCTIONS: / EXFLD, 0 /0 TAD 0 /1 SNA /IF LOC. 0 NOT :0 PI DIDN'T /ENTER FIELD 0 JMP .+5 /3 E44, HLT /4, INTERRUPTED TO THIS FIELD /INSTEAD OF FIELD 0,C(AC)=C(0)0,C(AC)=C(0) /WHICH SHOULD BE E40+1 /IF NOT, CHECK LOC, 7777,IT /MUST =: 5412 (JMP I12). CLA /5 DCA 0 /6 JMP I 20 /7, C(20) :E40 E45, HLT /10, THE JMP I 12 AT LOC, /7777 WAS NOT EXECUTED, /OR INTERRUPT FAILED, IF /NO INTERRUPT, LOCATION 12 /NOW CONTAINS 0 INSTEAD /OF ADDRESS E40, JMP .-4 /11, REPEAT IN THIS FIELD E40 /12, AUTO-INDEXS TAUTO-INDEXS /IN F 0 IF THE JMP I 12 /WORKS, /LOCS. 13 TO 17 ARE ALL 0'S / E40 /20, EQUALS E40 IN F0, / /LOCS, 21 TO E40-2 ARE ALL 0'S / EXFD, CIF 10 /FIELD 1 TO START WITH ION /LOC, E40, SEE SYMBOL TABLE /FOR E40. /L0CS, E40+1 TO 7776 ARE ALL 0'S / JMP I 12 /7777, PI SHOULD OCCUR, /AFTER THIS INSTRUCTION, /TO FIELD 0, / /ROUTINE TO TRANSFER TEST ROUTINE TO PROPER FIELD / TRANS, 0 TAD KJMP /KJMP=JMP I 2 DCA 1 /IN FIELD 0 TAD KNTR /KNTR = LOC, ENTER DCA 2 /OF FIELD 0 TAD KXFLD /KXFLD = LOC, EXFLD DCA 10 DCA 11 TAD K7766 /1-10 DECIMAL DCA 0 /SAVE TAD I XTDF /CDF X0 IN STDF DCA .+3 CDF 00 TAD I 10 TRFLD, CDF 10 /F1 TO START WITH DCA I 11 /PUT IN EXTENDED FIELD ISZ 0 /DONE LOCS 1 TO 12 IF SKIP JMP .-5 TAD TRFLD DCA .+3 CDF 00 TAD I 10 CDF 10 DCA I K20 /PUT E40 IN LOC. 20 CDF 00 TAD TRFLD DCA .+2 TAD I 10 CDF 10 DCA I KE40M /PUT CIF X0 IN E40-1 CDF 00 TAD TRFLD DCA .+2 TAD I 10 CDF 10 DCA I KE40 /ION TO LOC, E40 CDF 00 TAD TRFLD DCA .+2 TAD I 10 CDF 10 DCA I K7777 /PUT JMP 112 IN 7777 CDF 00 JMP I TRANS /EXIT *1400 / /TEST SF WITH AN RMF TOT, AN INTERRUPT IN FIELD 0 IS CREATED, AFTER /WHICH, THE DF AND IB REGISTERS ARE SET TO FIELD 1. /THE SF SHOULD CONTAIN FIELD 0, THE TEST /THEN MAKES SURE THE IB TS CLEARED, THEN SET BY ISSUTNG AN RMF, /FOLLOWED BY A JMP I K7000. IF THE IB TS CLEARED, THE JMP GOES TO 7000 IN FIELD 0 /IF THE IB AND SF ARE INCLUSIVE OR'D, THE JMP GOTS TO 7000 IN FIELD 1, AND /A HALT OCCURS THERE. RESTART FROM 1400 AFTER AN ERROR, THE TEST IS LOOPED /512 TIMES. / SFIB, TSF /SEE IF FLAG IS SET, JMS I XTFLG /SET IT TAD K7000 /7000 DCA LOOP CDF 10 /DF=FIFLD 1 TAD KHLT /HLT DCA I K7000 /7000, FIELD 1=HLT CDF 00 /DF=0 TAD JMP2 /JMP2=JMP I KFLD0 DCA I K7000 /7000, FIELD 0=JMP I KFLD0 /KFLDO=LOC, RTRN TAD KJMP /KJMP=JMP 12 DCA 1 TAD KRTN /KRTN=LOC, E45A+2 DCA 2 / /BEGIN TEST / ION /ENABLE PI NOP E45A, HLT /ERROR NO PI JMP SFIB /REPEAT TEST / /RETURNS HERE AFTER PI / CLA CDF 10 /DF=FIELD1 CIF 10 /IB=FIELD1 RMF /IB SHOULD=FIELD0 JMP I K7000 /IF SHOULD=FIELD0 / RTRN, ISZ LOOP /WORKED OK JMP E45A-2 /LOOP JMP TAUTO /DONE, GO TO NEXT TEST / / /TEST ALL AUTO-INDEX REGISTERS IN EACH EXTENDED FIELD, /IDENTICAL TEST ROUTINES ARE PERFORMED FROM EACH FIELD, /AND ERROR HALTS OCCUR IN THE FIELD CURRENTLY RUNNING /THE ROUTINE. PRESS CONT, TO RESUME TESTING. EACH /FIELD CONTAINS ALL 2'S EXCEPT FOR THE AREA OCCUPIED /BY THE TEST ROUTINE. FIELD 0 IS RE-ENTERED /EACH TEST, AND THE NEXT SEQUENTIAL FIELD /THEN ENTERED, REFER TO THE HEADING "AUTO- /INDEX TEST" FOR THE SEQUENCE OF OPERATIONS. / TAUTO, CDF 00 TAD K7707 DCA LOOP /LOOP COUNTER JMS I XSTKS /READ SR 9-11 TAD KCDF /6201 DCA DFN NEWDF, TAD DFN TAD K10 /INCREMENT DF DCA DFN / / CLEAR ONE FIELD TO 0 / CMA DCA 10 DCA 0 /USE LOC, 0 FOR A COUNTER DFN, CDF 10 /FTELD 1 TO START WITH DCA I 10 ISZ 0 JMP .-2 CDF 00 / /NOW PUT TEST ROUTINE IN THE EXTENDED FIELD / TAD DOAUTO /1ST LOC. OF ROUTINE MINUS 1 DCA 10 /SOURCE TAD K7744 /=28 DECIMAL DCA 0 /USE. LOC. 0 AS COUNTER TAD DOAUTO DCA 11 /DESTINATION TAD DFN /CDF X0 DCA .+3 MOVE, CDF 00 TAD I 10 CDF 10 /FIELD 1 TO START DCA I 11 ISZ 0 /MOVE WHEN SKIP JMP MOVE / /NOW SET AUTO-I REGS 10 TO 17 TO 7777, / TAD K7770 /-8 DECIMAL DCA 0 TAD K7 /7 DCA 10 CMA /7777 DCA I 10 ISZ 0 /10 TO 17 = 7777 WHEN SKIP JMP .-3 CMA DCA I K7777 /PUT 7777 IN LOC, 7777 OF EXTENDED RDF /READ D.F. TAD KCIF /6202 DCA .+1 CIF 10 /FIELD 1 TO START JMS I FILDX /ENTER EXTENDED FIELD /515 OCTAL LOCS, BEFORE THE /TAD I 10 INSTRUCTION. /THIS IS A TEST OF THE /DEFER BIT, 500 US DELAY / /ENTER FIELD 0 FROM EXTENDED FIELD HERE, / GOTO0, ISZ STKS /DONE ALL WHEN SKIP JMP NEWDF /SETUP FOR NEXT ISZ LOOP /ALL DONE IF SKIP JMP NEWDF-3 /REPEAT ALL JMP I LBTP LBTP, RMFTST / FILDX, DOAUTO-515 / / AUTO-INDEXED TEST / /THE ROUTINE WILL PE PLACED IN THE SAME RESPECTIVE /LOCATIONS IN EACH EXTENDED FIELD, ANY ERROR //HALTS WILL OCCUR IN THE EXTENDED FIELD, PRESS /CONTINUE TO PROCEED WITH TESTING. THE INDEX /REGISTERS 10 TO 17 INITIALLY CONTAIN 7777, AND /ARE AUTO-INDEXED TO 0000 BY A TAD I INSTRUCTION, /A HALT OCCURS IF THE REG. IS NOT INCREMENTED TO 0. /THE TAD I WOULD HAVE THEN REFERENCED LOC, 7777, /CONTAINS 7777. / DOAUTO, . /THIS LOC. IS NOT MOVED TO /THE EXTENDED FIELD, CLA TAD I 10 SZA F46, HLT /ERROR, INDEX REG, 10 FAILED TAD I 11 SZA F47, HLT /INDEX REG, 11 FAILED TAD I 12 SZA E48, HLT /12 FAILED TAD I 13 SZA F49, HLT /13 FAILED TAD I 14 SZA E50, HLT /14 FAILED TAD I 15 SZA E51, HLT /15 FAILED TAD I 16 SZA E52, HLT /16 FAILED TAD I 17 SZA E53, HLT /17 FAILED CDF 00 /SET DF TO FIELD 0 CIF 00 /SET I.B., TO FIELD 0 JMP GOTO0 /EXIT TO FIELD 0 /END OF TEST ROUTINE / / /CHECK SR 8. IF AN 8I IS BEING USED SR 8 MUST BE /ON A 1, OTHERWISE 0. CSR8, LAS AND K10 SZA CLA JMP I XMEM /NEXT TEST AND 7 BELL, TAD .-1 TLS /RING BELL TSF JMP .-1 JMP I XBGN /START OVER AT 200 / XBGN, BEGIN XMEM, NOMEM /DYNAMIC RMF TEST. /TESTS ALL SF TO DF TRANSFERS AND THOSE SF TO IB TRANSFERS /AS APPLICABLE TO THE NUMBER OF EXTENDED FIELDS PRESENT. /THE GENERAL METHOD IS TO INTERRUPT FROM EACH EXTENDED FIELD /WITH THE DF=FROM 0 THROUGH 7. AN RMF INSTRUCTION IS THEN ISSUED /AND CONTROL TRANSFERRED TO AN EXTENDED FIELD. THE RMFDY ROUTINE /IN THAT FIELD THEN CHECKS THAT THE IF AND DF ARE CORRECT. IF NOT, /THE FAILING IF OR DF IS IN THE IF OR DF REG. AND THE CORRECT FIELD /NUMBER IS IN THE AC BITS 6 THRU 8. / / / *1600 / / RMFTST, LAS /CHECK HOW MANY EXTENDED FIELDS AND K7 /ARE PRESENT CIA /NEGATE AND SAVE. DCA IFCN JMS I XFERP /TRANSFER RMFDY ROUTINE TO ALL IFCN, 0 /EXTENDED FIELDS. -34 RMFDY-1 DCA LBTSTC /SET RMFTST COUNTER FOR 4096 PASSES TAD JMPI4 /SET INTERRUPT LINK. DCA 1 TAD INTEP DCA 4 RMFL3, CDF 00 /INITIALIZE IF TO 0. DCA KIFSHB TAD IFCN /INTIALIZE TEST COUNTER DCA RMFCN1 RMFL2, TAD KIFSHB /UPDATE CURRENT IF. TAD K10 DCA KIFSHB TAD KIFSHB CIA DCA MIFSHB TAD K7770 /INITIALIZE DF COUNTER TO -10. DCA DFCN TAD K7770 /INITIALIZE DF TO -10. DCA KDFSHB RMFL1, TAD KDFSHB /UPDATE DF. TAD K10 DCA KDFSHB TAD KDFSHB CIA DCA MDFSHB TAD IFCN /TRANSFER DF AND IF INFORMATION DCA .+2 /TO EXTENDED FIELDS. JMS I XFERP 0 -4 KDFSHB-1 CDF 00 TAD KCDF /UPDATE CDF INST. TAD KDFSHB DCA RMFI1 TAD KCIF /UPDATE CIF INST. TAD KIFSHB DCA RMFI2 RMFE2, TSF /ENSURE TTO FLAG SET. JMS I XTFLG RMFI1, CDF /SET DF AND IF TO CURRENT FIELD. RMFI2, CIF JMP RMFDY /GO TO RMFDY IN CURRENT IF. INTE, RMF /ENTER FROM INTERRUPT FROM EX. FLD. JMP RMFDY1 /NO, DO NEXT DF. RMFE1, ISZ DFCN /ALL DF'S USED WITH CURRENT IF? JMP RMFL1 /NO, DO NEXT DF. ISZ RMFCN1 /ONE PASS OF RMFTST COMPLETE? JMP RMFL2 /NO, DO NEXT IF. ISZ LBTSTC /RMFTST DONE? JMP RMFL3 /NO. DO AGAIN. JMP I CSR8P /YES. INTEP, INTE LBTSTC, 0 RMFCN1, 0 DFCN, 0 XFERP, XFER CSR8P, CSR8 JMPI4, JMP I 4 / / / / / /ROUTINE TO CHECK CORRECT TRANSFERS FOR SAVE FIELD TO DATA FIELD AND /SAVE FIELD TO INST. BUFFER TO INSTRUCTION FIELD AFTER /RMF. /STORED IN ALL EXTENDED FIELDS. RMFDY, ION /THIS IS NOT TRANSFERRED. NOP IOF E60, HLT /INTERRUPT FAILURE. JMP REPEAT RMFDY1, CLA RDF /CHECK FOR CORRECT DATA FIELD TAD MDFSHB SNA CLA JMP .+4 TAD KDFSHB /DATA FIELD INCORRECT E61, HLT /SF TO DF TRANSFER FAILED AFTER RMF. JMP REPEAT /REPEAT THIS TEST. RIF /CHECK FOR CORRECT INSTRUCTION FIELD. TAD MIFSHB SNA CLA JMP .+4 TAD KIFSHB /INSTRUCTION FIELD INCORRECT E62, HLT /SF TO IB TRANSFER FAILED AFTER RMF. JMP REPEAT /REPEAT THIS TEST. CDF 00 /GO BACK AND RUN NEXT TEST. CIF 00 JMP I .+1 RMFE1 REPEAT, CDF 00 /GO BACK AND REPEAT FAILING CIF 00 /TEST. JMP I .+1 RMFE2 KDFSHB, 0 /DATA FIELD SHOULD BE MDFSHB, 0 /TWO'S COMPLEMENT OF ABOVE. KIFSHB, 0 /INSTRUCTION FIELD SHOULD BE MIFSHB, 0 /TWO'S COMPLEMENT OF ABOVE. / / / / / / /ROUTINE TO TRANSFER N1 WORDS STARTING AT P IN FIELD 0 TO P IN THE /NEXT N2 EXTENDED FIELDS. /THE CALLING SEQUENCE IS: /JMS I XFERP /-N2 /-N1 /P-1 / *2000 / XFER, 0 CLA TAD I XFER /GET -N2 DCA N2 ISZ XFER TAD I XFER /GET -N1 DCA N1 ISZ XFER TAD I XFER /GET P-1 DCA P ISZ XFER /UPDATE TO RETURN ADDRESS. TAD KCDF /INITIALIZE CDF INST. DCA XFERIN TAD N2 DCA XFERC2 XFERL2, TAD P /PUT POINTER INTO AUTO 10 AND 11. DCA 10 TAD P DCA 11 TAD N1 /SET COUNTER 1 TO -N1. DCA XFERC1 TAD XFERIN /UPDATE CDF INST. TAD K10 DCA XFERIN XFERL1, CDF 00 /TRANSFER TAD I 10 XFERIN, CDF DCA I 11 ISZ XFERC1 /DONE WITH CURRENT FIELD? JMP XFERL1 /NO, CONTINUE. ISZ XFERC2 /DONE WITH ALL FIELDS? JMP XFERL2 /NO, DO NEXT FIELD. CDF 00 /ALL DONE. SET DF=0. JMP I XFER /EXIT. N2, 0 N1, 0 P, 0 XFERC2, 0 XFERC1, 0 / *2200 / /REFERENCE ALL 4K FIELDS NOT PRESENT, IF 32K /IS PRESENT, THE TEST IS BY-PASSED, AND PROGRAM IS /RESTARTED AT 200, EACH EACBD NOT PRESENT IS /REFFERENCED BY THE PROGRAM WITH JMP, DCA AND TAD. //THE PROGRAM MUST CONTINUE IN SEQUENCE/ THE TTY /BE0LL WLL SIGNAL A SUCCESSFUL TEST, AND THE PRO- /GRAM IS THEN RESTARTED AT 200, NOMEM, CLA TAD K7770 DCA LOOP /TEST LOOP COUNTER LAS /READ SR9-11 AND K7 CIA TAD K7 /SUBTRACT MAX, POSSIPOSSIBLE SNA JMP I XBELL /32K PRESENT, CAN'T DCA NOSTAK /SAVE NO, MISSING DCA I XELL /CLEAR THE TLS IOT AT /BELL+1 ELL+1RTOIBIT /FALSE INDICATION, TLS /IS RESTORED LATER WRONG /ENTRY FROM NON-EXISTENT /MEMORY MAY CAUSE A /HANG-UP AT BELL+2 AND +3. LAS /# OF FIELDS PRESENT AND K7 IAC /+1 TO GET 1ST MISSING CLL RTL /POSITION TO AC 6-8, RAL DCA NOFLD /1ST MISSING TAD NOSTAK /# STACKS NOT HERE CIA DCA NOSTAK /USED AS COUNTER / / TAD KCDF TAD NOFLD /MISSING STACK DCA CDF0S TAD KCDF TAD NOFLD DCA CDF1S / /NOW SEE IF AN ODD OR EVEN NUMBER IS MISSING / TAD NOSTAK CIA RAR SNL CLA /L=1, FIRST READ 0.S, THEN ALWAYS /ALL I'S JMP POS+3 /0-1, ALWAYS READ ALL 1'S JMS ALL0 /READ ALL 0 FROM 1ST CNSTK, ISZ NOSTAK /DONE ALL MISSING IF SKIP JMP POS /READ ALL 1'S FROM HERE ON ISZ LOOP /DONE LOOPING IF SKIP JMP I XNOM /REPEAT TAD TTB DCA I XELL /RESTORE TLS JMP I XBELL /RING BELL XNOM, NOMEM+3 XELL, BELL+1 XBELL, BELL TTB, TLS / POS, TAD CDF1S TAD K10 /DF PLUS 1 DCA CDF1S JMS ALL1 /READ ALL 1'S JMP CNSTK /CHECK DONE / /ROUTINE TO READ ALL 0'S. / ALL0, 0 CDF0S, CDF 00 /SET DF TO 1ST MISSING CLA CMA DCA 10 /10 AND 11 USE!' FOR ADDRESS CMA DCA 11 DCA 2 /USE AS COUNTER CMA DCA I 10 /WRITE 1'S INTO NON-EXIS- ISZ 2 /TENT FIELD, JMP .-3 TAD I 11 /READ NDN-EXIST. FIELD SNA CLA /SHOULD = 0000 JMP .+3 TAD 11 E54, HLT /ERROR, AN EXISTING FIELD /WAS REFERENCED. C(AC)= /ADDRESS REFERENCED ISZ 2 JMP E54-4 /READ NEXT / CDF 00 CIF 00 JMP I ALL0 /EXIT / /ROUTINE TO READ ALL 1'S / ALL1, 0 CDF1S, CDF 00 /SET DF TD MISSING FIELD CLA CMA DCA 10 /10 AND 11 USED FOR. ADDRESSING CMA DCA 11 DCA 2 /USED AS COUNTER DCA I 10 /WRITE 0'S ISZ 2 JMP .-2 TAD I 11 /READ 1'S FROM NO MEMORY CMA SNA JMP .+4 CMA E57, HLT /7777 NOT READ, C(AC)= DATA CLA /READ, C(11)- ADORESS, ISZ 2 JMP E57-5 CDF 00 CIF 00 JMP I ALL1 /EXIT / /READ SR9-11 / NSTKS, 0 LAS AND K7 CIA DCA STKS JMP I NSTKS / /SET TTY FLAG / TFLG, 0 CLA AND 15 TAD .-1 TLS TSF JMP .-1 CLA JMP I TFLG /EXIT / $