LMS1 OCT 0 TEMP STORAGE FOR MSK PTR LMS2 OCT 0 TEMP STORAGE FOR MSK PTR LMSV1 OCT 0 PARITY (T) LMSV2 OCT 0 PARITY (F) LMSV3 OCT 0 AND TERM 1 LMSV4 OCT 0 AND TERM 2 LMSK1 DEF * POINTER TO START OF 1ST MASK TBL OCT 41 2116A OCT 3 2116B OCT 140 2116C OCT 101 2115A OCT 101 2114A OCT 101 2114B OCT 140 2100A OCT 100 210XX OCT 40 OCT 40 OCT 40 OCT 40 OCT 40 OCT 40 OCT 40 LMSK2 DEF * POINTER TO START OF 2ND MASK TBL OCT 100 OCT 200 OCT 0 OCT 0 OCT 0 OCT 0 OCT 0 OCT 0 OCT 0 OCT 0 OCT 0 OCT 0 OCT 0 OCT 0 OCT 0 SPC 3 * * LSACK PERFORMS SECOND PATTERN GENERATION * FROM ADDRESS BITS IN TABLE FOR * VARIOUS CPU/MEMORIES * LSACK NOP LDA LACK STA LSACK FORM NEW EXIT LDA LSDS1,I PICK UP MASK AND LADDR AND ADDRESS BITS SZA TEST FOR "0" ISZ LSACK JMP LSACK,I EXIT LPFG OCT 0 LSDS1 OCT 0 LSDM1 DEF *+1 OCT 1 210X OCT 0 210XX SPC 2 LDACK NOP LDA LADDR LOAD CURRENT ADDRESS AND LMSK3 MASK BITS 0/5 CPA LMSK3 JMP LDACK,I EXIT SZA ISZ LDACK JMP LDACK,I EXIT LMSK3 OCT 101 LJC1 JSB LACK LJC2 JSB LDACK SKP * * LCMP SAVES CURRENT PATTERN,WRITES/READS/TESTS * COMPLIMENT PATTERN AND RESTORES OLD PATTERN * FOR EACH LOCATION TESTED * LCMP NOP LDA LGDS LOAD GOOD DATA CMA COMPLIMENT CURRENT PATTERN STA LHLD2 SAVE STA LADDR,I WRITE IT BACK LDB LADDR,I READ IT BACK CPB LHLD2 IS OK ? RSS JSB LER1 NO LDA LGDS RELOAD DATA STA LADDR,I WRITE IT BACK JMP LCMP,I EXIT LGDS OCT 0 SKP *************** LOW MEMORY RANDOM NUM.TEST ************************* * * LRNT PERFORMS RANDOM PATTERN TESTING OF MEMORY * LRNT NOP LDA LB60 STA LHLTS SAVE HALT TYPE LDA LRN LRN0 STA LRNS INITIALIZE RNDM NO STORAGE STA LRNTS CLO INDICATE WRITING MEMORY LDA LFWA STA LADDR INITIALIZE 1ST ADDR LRN1 JSB LRNG GENERATE RNDM NUMBER STA LADDR,I STORE NUMBER IN TEST ADR LDA LADDR CPA LLWA LAST ADDR ? JMP *+3 ISZ LADDR BUMP ADDR JMP LRN1 NO STO INDICATE READING MEMORY LDA LFWA YES STA LADDR INITIALIZE 1ST ADDR LDA LRNTS STA LRNS INITIALIZE RNDM NO STORAGE LRN2 JSB LRNG GENERATE RNDM NUMBER LDB LADDR,I CPB LRNS TEST (ADR) RSS JSB LER1 BAD LDA LADDR GOOD CPA LLWA LAST ADDR ? JMP *+3 ISZ LADDR JMP LRN2 NO JSB LRST TEST FOR PGM RESTART NOP JMP *+2 JMP LRNT,I EXIT LDA LRNS JMP LRN0 LRN OCT 177777 RNDM NO LRNS OCT 0 RNDM NO STORAGE LRNTS OCT 0 SKP * * LRNG PERFORMS ACTUAL RANDOM NUMBER GENERATION * * ******** RANDOM PATTERN GENERATION ********************************* * * (1) INITIALIZE PATTERN (RPS _ 1'S) * * (2) AND OFF BITS 11,13,14,16 * * (3) FORM EXCLUSIVE OR OF BITS (PARITY SUM) * * (4) LEFT SHIFT RNDM PATTERN SHIFTING IN PARITY SUM * TO BIT O * * (5) TEST FOR ALL O'S AND DO (1) IF T, (6) IF F * * (6) EXIT * LRNG NOP JSB LRST TEST FOR PROGRAM RESTART LDA LRNS AND LRNM MASK NO FOR BITS 11,13,14,16 RAL POSITION BITS STA LRNS1 SAVE JSB LPS FORM PARITY LDA LRNS RAL SHIFT AND LBT0 ADA LMSV1 SZA,RSS TEST FOR "0" LDA LRN STA LRNS SAVE STA LHLD2 JMP LRNG,I LRNM OCT 132000 BIT MASK LBT0 OCT 177776 BIT O MASK SKP * * LPS GENERATES THE PARITY OF THE BITS IN RSN1 * GENERATOR IS A TOGGLING FLOPFLOP INITIALLY * CLEARED * LPS NOP LDA LDM7 STA LRCT INITIALIZE COUNT LDA LRNS1 CLB CLEAR FLOP LPS1 SLA,RSS JMP LPS2 CMB TOGGLE FLIP FLOP LPS2 RAL NEXT BIT ISZ LRCT LAST BIT JMP LPS1 NO SZB TEST FOR PARITY "0" JMP LPS3 "1" STB LMSV1 SAVE T.P. INB JMP LPS4 LPS3 CLB,INB STB LMSV1 SAVE T.P. CLB LPS4 STB LMSV2 SAVE F.P. JMP LPS,I EXIT LRNS1 OCT 0 LDM7 DEC -7 LRCT OCT 0 CTR STORAGE SKP * * LER1 IS THE COMMON ERROR REPORTING SUBROUTINE WHICH * * (1) CHECKS FOR ERROR HALT * * (2) FORMS HALT TYPE * * (3) CHECKS FOR ERROR TO BE PUT IN TABLE * LER1 NOP STB LHLD1 SAVE BAD DATA LDA LHLT IOR LHLTS OR IN HALT TYPE STA LHLT0 INA STA LHLT1 LIA SWR CHECK ALF,ALF BIT 5 RAL,RAL SSA,RSS ON? JMP *+3 NO JSB LETBL YES. GO STORE JMP LE2 ERRORS IN ERROR TABLE JSB LCHK CHECK TO SEE IF HLT REQUESTED LHLT0 HLT 10B LDA LADDR CLB LHLT1 HLT 11B LE2 LDA LSAVA LDB LSAVB JMP LER1,I EXIT LHLD1 OCT 0 TEMP. STORAGE FOR BAD DATA LHLD2 OCT 0 TEMP. STORAGE FOR GOOD DATA SPC 2 * * LCHK CHECKS TO SEE IF ERROR HALT IS BEING REQUESTED * LCHK NOP STO SET OVERFLOW (ERROR) LIA SWR ALL ENTRIES CHECKED RAL,RAL SLA SUPPRESS ERROR HALT ? JMP LNHLT YES LDA LHLD2 LDB LHLD1 JMP LCHK,I NO LNHLT LDA LCHK ADA B4 MODIFY RETURN ADDRESS JMP A,I RETURN SKP * * LETBL PLACES ERROR IN TABLE * LETBL NOP LDA LADDR ERROR ADDRESS ADA M8K IN FIRST 8K SSA OF MEMORY? JMP LHLT0-1 YES.MUST GO HALT LDA LHLTS NO.IS THIS A CPA L10 MOVE COMPARISON? JMP LHLT0-1 YES.MUST GO HALT LDA LECNT NO.CHECK TO STA LCTR1 SEE IF THIS LDB LAT1 ADDRESS HAS ERRORED LDA LADDR BEFORE LCPR EQU * CPA B,I BAD ADDRESS BEEN USED? JMP LCH1 YES ADB B5 NO.CHECK NEXT ERROR ADDRESS ISZ LCTR1 DONE? JMP LCPR NO JMP LCH2 YES.GO ON LCH1 EQU * LDA B4 BUMP # OF ADA B TIMES ERROR ISZ A,I COUNTER JMP LE2 CONTINUE WITHOUT HALT CCB STOP AT STB A,I 32K ERRORS JMP LE2 LAT1 DEF LTBL1 LCTR1 OCT 0 COUNTER STORAGE LCH2 EQU * LDA LAT1 POINT TO STA TEMP START OF TABLE STA LPNT1 LDA LADDR ERROR ADDRESS LDB M30K START WITH MOD 2 LET1 EQU * ADA B IS THE ERROR SSA IN THIS MODULE? JMP LET2 YES LDA TEMP NO.POINT TO ADA B24 NEXT 4K MODULE STA TEMP ERROR TABLE LOCATION STA LPNT1 LDA LADDR GET ERROR ADDRESS ADB M10K BUMP MODULE #(4K) SZB 32K? JMP LET1 NO LET2 EQU * YES LDA MB4 SET STA COUNT COUNTER LDB TEMP LET3 EQU * LDA B,I GET TABLE ADDRESS ENTRY SZA,RSS ANY PREVIOUS ENTRY? JMP LET4 NO.GO AHEAD & ENTER THE ERROR ADB B5 YES.POINT TO NEXT ERROR STB LPNT1 ISZ COUNT DONE 4 ERRORS YET? JMP LET3 NO JMP LE2 YES.TABLE IS FULL FOR THIS MOD. LET4 EQU * LDA LPNT1 MOVE TABLE POINTERS INA STA LPNT2 INA STA LPNT3 INA STA LPNT4 INA STA LPNT5 LDA LADDR STA LPNT1,I SAVE BAD ADDR LDA LHLD2 STA LPNT2,I SAVE GOOD PTRN LDA LHLD1 STA LPNT3,I SAVE BAD PTRN CLA,INA STA LPNT5,I SAVE FIRST TIME THIS ERROR ISZ LCNT BUMP TABLE COUNT LDA LPNT1 CMA,INA ADA L2000 SSA,RSS TEST AREA OVERLAP TABLE ? JMP LETBL,I NO HLT 6 SOMETHING IS WRONG JMP LETBL,I M8K OCT -20000 COUNT BSS 1 COUNTER LCNT OCT 0 LPNT1 DEF LTBL1 POINTER TO TBL 1 LPNT2 DEF LTBL2 POINTER TO TBL 2 LPNT3 DEF LTBL3 POINTER TO TBL 3 LPNT4 DEF LTBL4 POINTER TO TBL 4 LPNT5 DEF LTBL5 POINTER TO TBL 5 SKP * * LRSET RESETS THE ERROR TABLE * LRSET NOP CLA CLEAR LDB LAT1 ERROR LRS1 EQU * TABLE STA B,I INB CPB L2000 DONE? RSS JMP LRS1 NO STA LCNT CLEAR ERROR COUNT JMP LRSET,I EXIT LECNT DEC -24 SKP * * LMPPE PARITY/MEMORY PROTECT INT HANDLER * LMPPE NOP STA LSAVA SAVE A STB LSAVB SAVE B LDA LFRST CMA,INA STA LNFST FORM NEG 1ST LOCATION ADR LIA 5 SSA TEST FOR JMP *+3 MEMORY OCT 106005 PROTECT JMP LMP1+2 INT. AND LMSB READ ERROR ADR AND MASK OUT BT15 ADA LNFST SSA IS PE IN PGM OR TEST AREA JMP LPGM PGM AREA LDA LHLD2 LOAD CURRENT PATTERN CPA LSAVB LOAD PARITY ERROR PATTERN JMP LMP1 ERROR IS BIT LMP0 STF 5 TURN ON PARITY LDA LSAVA RESTORE A LDB LSAVB RESTORE B JMP LMPPE,I EXIT LMP1 LDB LADDR LOAD ADDR HLT 13B PARITY ERROR JMP LMP0 EXIT LPGM LIA 5 AND LMSB LDB A,I HLT 7B A= ADDR B= (ADDR) STB A,I RESTORE (P.E. ADDR) STF 5 JMP LPE2 RESTART LNFST OCT 0 STORAGE FOR FRST LSAVA OCT 0 SAVE AREA LSAVB OCT 0 SAVE AREA LJPE JSB LMPPE SKP * * MOVE ROUTINE * * MOVES A SECTION OF MEMORY UP OR DOWN * * CALLING SEQUENCE: * * CLE(MOVE UP) OR CCE(MOVE DOWN) * LDA UPPER LIMIT OF BLOCK + 1 * LDB LOWER LIMIT OF BLOCK * JSB MOVE * (DESTINATION STARTING ADDRESS MUST BE IN * LOCATION LADDR) * MOVE NOP STA TEMP SAVE UPPER LIMIT LDA L10 SAVE STA LHLTS HALT TYPE SEZ UP? JMP LOOP6 NO LOOP5 EQU * YES LDA B,I TRANSFER STA LADDR,I A WORD LDA LADDR,I COMPARE CPA B,I IT JMP NEXT7 OK.GO ON STA LSAVA SAVE STB LSAVB REGISTERS LDB B,I GET GOOD DATA SWP STA LHLD2 SAVE GOOD DATA JSB LER1 GO TO ERROR ROUTINE NEXT7 EQU * ISZ LADDR BUMP INB POINTERS CPB TEMP DONE? JMP MOVE,I YES JMP LOOP5 NO LOOP6 EQU * LDA B,I TRANSFER STA LADDR,I A WORD LDA LADDR,I COMPARE CPA B,I IT JMP NEXT8 OK.GO ON STA LSAVA SAVE STB LSAVB REGISTERS LDB B,I GET GOOD DATA SWP STA LHLD2 SAVE GOOD DATA JSB LER1 GO TO ERROR ROUTINE NEXT8 EQU * ISZ LADDR BUMP INB POINTERS CPB TEMP DONE? JMP MOVE,I YES JMP LOOP6 NO ORG 1600B LTBL1 OCT 0 BAD ADDR LTBL2 OCT 0 GOOD DATA LTBL3 OCT 0 BAD DATA LTBL4 OCT 0 RESERVED LTBL5 OCT 0 # TIMES ERROR AT THIS ADDRESS SKP * * * MEMORY SIZE & COMPUTER TYPE ROUTINE * OVERLAYED AFTER PROGRAM IS STARTED * MEMRY NOP LDA L10 SAVE STA PHLTS,I HALT TYPE LDA B10K START WITH 8K ADA B3 MOVE TO ADDRESS 3 OF PAGE FOR WRAPAROUND AGAIN EQU * CLB CLEAR WRAPAROUND STB 3B CCB STB A,I TRY TO WRITE ONES THERE CPB 3B DID IT WRAPAROUND? JMP GOTIT YES - NO MORE MEMORY LDB A,I GET RESULTS CPB ONES IS IT ALL ONES? JMP *+4 YES.MEMORY IS THERE SZB NO.IS IT ALL ZEROS? HLT 77B,C NO.SOMETHING IS WRONG JMP GOTIT OK NO MORE MEMORY ADA B10K MOVE UP 4K SSA,RSS DID THE ADDRESS GO MINUS? JMP AGAIN NO.TRY AGAIN GOTIT EQU * YES ADA MB10K DROP BACK ONE 4K AND B70K ELIMINATE 3B STA TEMP SAVE ADDRESS ADA B7700 POINT TO BINARY LOADER LDB A,I TRY TO READ WORD LDA TEMP RESTORE A REG. ADA B7677 SZB DID IT READ? IOR B100 YES THEN CHECK LOADER STA LMAX SET UPPER LIMIT MAX LIA 1 CHECK FOR CONFIGURATOR STA 3B SAVE S-REG ALF,ALF ERA PUT BIT IN E REG LDA 115B PICK UP COMPUTER TYPE FROM CONFIGURATOR ALF AND B17 SEZ,RSS IS CONFIG. LOADED JMP *+4 LDA B7 SET FOR 2100 SZB IS IT INA NO MOVE TO 21MX STA LTYPE SAVE MACHINE TYPE STA PHTYP,I LDA B17 SET TIME FOR DISPLAY OF MEMORY CMA,INA MAKE IT NEGATIVE STA LLDCM LDA LMAX GET MEMORY SIZE OTA 1 PUT IT ON S-REG. CLB INB,SZB JMP *-1 ISZ LLDCM TIME UP JMP *-3 NO LDA 3B GET ORIGINAL S-REG OTA 1 RESTORE IT SKP CLA STA PLPE,I DISABLE CALLS STA PHPE,I TO THIS ROUTINE LDA PHPE,I COMPARE SZA,RSS NOP JMP NEXT5 OK LDB PHPE FORM STB PADDR,I ADDRESS LDB A FORM GOOD DATA CLA STA PHLD2,I SAVE GOOD DATA JSB PHER1,I GO HALT FOR ERROR NEXT5 EQU * LDA PLPE,I COMPARE SZA,RSS OTHER NOP JMP NEXT6 OK LDB PLPE FORM STB PADDR,I ADDRESS LDB A FORM GOOD ADDRESS CLA STA PHLD2,I SAVE GOOD DATA JSB PHER1,I GO HALT FOR ERROR NEXT6 EQU * LDA TEMP FORM START OF ADA B6500 CONFIGURATOR ADDRESS STA LLDCM SAVE IT LDA LTYPE GET COMPUTER TYPE IN A REG JSB LRSET CLEAR ERROR TABLE JMP MEMRY,I MB10K OCT -10000 B3 OCT 3 B7 OCT 7 B17 OCT 17 B100 OCT 100 B7700 OCT 7700 B7677 OCT 7677 B10K OCT 10000 B70K OCT 70000 ONES OCT 177777 PLPE DEF LPE LINK TO LOWER CALLING ADDRESS PHPE DEF HPE LINK TO HIGH CALLING ADDRESS PHLTS DEF HHLTS LINK TO HIGH HALT TYPE PHTYP DEF HTYPE LINK TO HIGH COMPUTER TYPE PHLD2 DEF HHLD2 LINK TO GOOD DATA IN HIGH TEST PHER1 DEF HER1 LINK TO HIGH ERROR ROUTINE PADDR DEF HADDR LINK TO ADDRESS IN HIGH TEST HED 2100 SERIES MEMORY DIAGNOSTIC(HIGH) * * * START OF LOW MEMORY TEST * ORG 2000B JMP HPE HTYPE OCT 0 HSTBL OCT 17 TESTS 0-3 OCT 6 START OF TEST AREA OCT 1777 END OF TEST AREA HWTBL OCT 2 OCT 6 OCT 1777 HFRST EQU HWTBL+1 HFWA EQU HWTBL+1 HLAST EQU HWTBL+2 HLWA EQU HWTBL+2 PMEM DEF MEMRY LINK TO MEMORY ROUTINE HDM16 DEC -16 LOOP COUNT HMMG OCT 10 HMFG OCT 0 HADDR OCT 0 CURRENT WORKING ADDRESS HPTN1 OCT 0 DATA PATTERN 1 HPTN2 OCT 0 DATA PATTERN 2 HLPC OCT 0 LOOP COUNTER HBPT1 OCT 1 BIT PATTERN 1 HBPT2 OCT 177776 BIT PATTERN 2 HBPTS OCT 0 BIT PATTERN SAVE HMSB OCT 77777 BIT 15 MASK HB20 OCT 20 HB30 OCT 30 HB37 OCT 37 HB40 OCT 40 HB50 OCT 50 HB52 OCT 52 HB60 OCT 60 HHLTS OCT 0 HHLT HLT 0 * * * HRST TESTS SWR BIT 10 FOR PROGRAM RESTART * IF IT IS SET THE PROGRAM RESTARTS SKIPPING * HIGH MEMORY MODULE * IF IT IS NOT SET A NORMAL RETURN IS MADE * HRST NOP LIA SWR ALF,RAL SSA TEST FOR RESTART JMP HTS4 JMP HRST,I SKP * * * HPE START OF PROGRAM * HPE EQU * JSB PMEM,I GO FIND MEMORY SIZE & COMP. LDA HTYPE CPA HMMG TEST FOR NEW TYPE RSS CLA STA HMFG LDA HTYPE ADA HMSK1 FORM MASK 1 POINTER STA HMS1 SAVE LDA HTYPE ADA HMSK2 FORM MASK 2 POINTER STA HMS2 SAVE LDA HSDM1 STA HSDS1 NOP NOP NOP NOP NOP LDB HJPE STB 5B YES JSB UPPER SAVE LOWER PROGRAM IN TEST AREA HPE2 JSB HINIT INITIALIZE INT LOC 4,5 SKP * ************** TEST SELECTION CONTROL ***************************** * LIA SWR SAVE PROGRAM STA HWTBL OPTIONS AND HB37 DEFAULT SZA,RSS TESTS? LDA HSTBL YES STA HTSW INITIALIZE TEST SELECT WORD LDA HTSOL STA HTADR SET POINTER TO FIRST TEST ADR HTS2 LDA HTSW SLA,RSS PERFORM TEST ? JMP HTS3 NO HTS JSB HTADR,I YES LIA SWR SSA TEST FOR HALT REQUEST HLT 76B LIA SWR RAL,RAL SSA TEST FOR LOOP ON PGM JMP HTS HTS3 LDA HTSW ARS STA HTSW MODIFY TEST SELECT WD FOR NXT TST ISZ HTADR LDA HTADR CPA HTEOL TEST FOR LAST ADR RSS JMP HTS2 LOOK FOR NEXT TEST HTS4 EQU * JSB LOWER RESTORE LOWER PROGRAM JMP 130B GO DO LOW MEMORY TEST HTADR BSS 1 HTSW BSS 1 HTSOL DEF *+1,I DEF HADRT DEF HSWRD