* * * LOAD 2100 MICROCODE ROUTINE * * * * LOADS 2100 MICROPROGRAM BUFFER INTO CURRENT WCS. * * CALLING SEQUENCE : * * JSB L2100 * L2100 NOP LDA ABUF1 PUT 2100 POINTER STA PBUF1 INTO PBUF1 JSB WBUFF WRITE ON WCS LDA BBUF1 RESTORE PBUF1 POINTER STA PBUF1 TO POINT TO 21XX BUFFER JMP L2100,I * * * LOAD 21XX MICROCODE ROUTINE * * * * LOADS 21XX MICROPROGRAM BUFFER INTO CURRENT WCS. * * CALLING SEQUENCE : * * JSB L21XX * L21XX NOP LDA BBUF1 PUT 21XX POINTER STA PBUF1 INTO PBUF1 JSB WBUFF WRITE ON WCS LDA ABUF1 RESTORE PBUF1 POINTER STA PBUF1 TO POINT TO 2100 BUFFER JMP L21XX,I HED REMOD * * * RESTORE 2100 MICROCODE FOR MODULE #1 ROUTINE * * * * RESTORES MICROCODE FOR 2100 FOR USE IN MODULE #1 * * CALLING SEQUENCE : * * JSB REMOD * REMOD NOP LDA PMOD1 SET STA TEMP7 POINTER LDB MOD.1 RM.1 LDA TEMP7,I DO FIRST STA B,I 16(DECIMAL) ISZ TEMP7 LOCATIONS INB CPB MOD.5 DONE? RSS JMP RM.1 NO ADB B140 YES,BUMP POINTER RM.2 LDA TEMP7,I DO SECONDARY STA B,I JMP TABLE ISZ TEMP7 INB CPB MODE2 DONE? RSS JMP RM.2 NO ADB B532 RM.3 LDA TEMP7,I DO ROUTINE STA B,I FORM ISZ TEMP7 INB CPB MOD.6 DONE? JMP REMOD,I YES,RETURN JMP RM.3 NO HED CMOD3 * * * CHANGE 2100 MICROCODE FOR MODULE #3 ROUTINE * * * * MODIFIES MICROCODE FOR 2100 FOR USE IN MODULE #3 * * CALLING SEQUENCE : * * JSB CMOD3 * CMOD3 NOP LDA PMOD2 SET STA TEMP7 POINTERS LDA MODE3 STA TEMP4 LDB MOD.3 CM3.1 LDA TEMP7,I GET MICRO FROM AND MASK2 TABLE & STORE STA TEMP9 LEFT 8 BITS LDA JMP16 PUT NEW MICRO-JUMP STA B,I IN MICROCODE LDA TEMP4,I FORM NEW JUMPS AND MASK3 IN MICROCODE IOR TEMP9 STA TEMP4,I ISZ TEMP4 ISZ TEMP7 INB CPB MOD.2 DONE? JMP CM3.2 YES ISZ TEMP4 NO,BUMP ISZ TEMP7 POINTERS INB JMP CM3.1 CM3.2 LDA B,I PLACE ADDITIONAL IOR B2 NEW JUMPS FOR MOD #3 STA B,I INB LDA JMP16 STA B,I INB CPB MODE4 DONE? RSS JMP CM3.2 NO LDA TEMP7 YES,BUMP ADA B25 POINTERS STA TEMP7 ADB B153 CM3.3 LDA TEMP7,I GET MICRO FROM ADA BIT12 TABLE AND CHANGE STA B,I REMAINING 16 BITS ISZ TEMP7 INB CPB MODE2 DONE? JMP CM3.4 YES ISZ TEMP7 NO,BUMP INB POINTERS JMP CM3.3 CM3.4 ADB B535 BUMP POINTER LDA MSJMP FORM NEW MICRO STA B,I JMP CMOD3,I HED CMOD2 * * * CHANGE 2100 MICROCODE FOR MODULE #2 ROUTINE * * * * MODIFIES MICROCODE FOR 2100 FOR USE IN MODULE #2 * * CALLING SEQUENCE : * * JSB CMOD2 * CMOD2 NOP LDA MODE1 SET STA TEMP4 POINTERS LDA PMOD1 STA TEMP7 LDB MOD.1 CM2.1 LDA TEMP7,I GET MICRO FROM ADA M2 TABLE & CHANGE STA B,I LEFT 8 BITS ISZ TEMP7 INB LDA TEMP7,I GET MICRO FROM AND MASK2 TABLE & STORE STA TEMP9 LAST 8 BITS LDA JMP16 GET NEW MICRO STA B,I AND PUT IT IN MICROPROGRAM LDA TEMP4,I GET NEXT FIVE JMPS AND MASK3 IN MICROCODE AND IOR TEMP9 FORM NEW JUMPS STA TEMP4,I ISZ TEMP7 INCREMENT ISZ TEMP4 POINTERS ISZ TEMP4 INB CPB MOD.2 DONE? RSS JMP CM2.1 NO LDA TEMP7 YES,RESET ADA B24 POINTERS STA TEMP7 ADB B164 CM2.2 LDA TEMP7,I GET MICRO FROM ADA M2 TABLE & CHANGE STA B,I LEFT 8 ISZ TEMP7 INB LDA TEMP7,I GET MICRO FROM ADA BIT12 TABLE & CHANGE STA B,I REMAINING 16 BITS ISZ TEMP7 INB CPB MODE2 DONE? RSS JMP CM2.2 NO ISZ TEMP7 YES,BUMP ADB B533 POINTERS LDA TEMP7,I GET MICRO AND ADA M400 CHANGE LAST 16 STA B,I ISZ TEMP7 INB LDA TEMP7,I GET MICRO AND ADA M2 CHANGE LEFT 8 STA B,I ISZ TEMP7 INB LDA TEMP7,I GET MICRO AND ADA BIT12 CHANGE LAST 16 STA B,I JMP CMOD2,I HED START * * * PROGRAM ENTRY * * * * SETS UP TRAP CELLS,INITIALIZES VARIABLES * AND CONTROLS TEST EXECUTION * ORG 2000B START NOP CLF 0 TURN OFF INTERRUPT SYSTEM CLA JSB PRINT "12908 WCS DIAGNOSTIC" LDA THLT SET UP LDB B2 TRAP CELL RTRAP STA B,I HALTS IN CPB ETRAP ADDRESS JMP STVAR LOCATIONS INB 2 THRU 77 JMP RTRAP STVAR EQU * INITIALIZE VARIABLES CLA STA TEMPA STA TEMPB STA SPASS STA MMFLG CLA,INA START WITH STA PASS PASS 1 LDA SAVE4 CONFIGURE ALF,ALF PROGRAM FOR ALF LOW ORDER WCS IOR SAVE5 MODULE JSB PCNF1,I JSB REMOD RESTORE 2100 MICROCODE JSB REMX RESTORE 21XX MICROCODE LDA MASK5 RESTORE STANDARD STA TESTS TEST RUN(ALL TESTS) RSTRT EQU * CLA START WITH STA TEST TEST SECTION 0 STA STEP START WITH STEP 1 LDA TESTS RESET TEST STA SECT SELECTION TLOOP EQU * LDB BIT6 PERFORM JSB SWRG TSTLL? JMP PTSTL,I YES LDB BIT1 PERFORM JSB SWRG TSTSS? JMP PTSTS,I YES LDB BIT9 USER SELECTION JSB SWRG OF TESTS? JSB USELT YES,GO GET TESTS DESIRED LDA SECT NO,USE CURRENT OR DEFAULT SET RAR PERFORM STA SECT THIS TEST SSA,RSS SECTION? JMP SKIP NO LDA TEST EXECUTE ADA SECTN CURRENT LDA A,I TEST JSB A,I SECTION CLA CLEAR ERROR STA ERCNT COUNTER LDB BIT2 HALT ON LAST STEP JSB SWRG IN TEST SECTION? RSS JMP HL50+1 NO LDA STEP YES,GET STEP # CLB IN A REGISTER HL50 HLT 50B LDA MACH1 IS THIS SZA A 2100? JMP *+3 YES LDA LDA1D NO. ONLY ONE STA T.LDA MACRO IN STEP 22 LDB BIT3 LOOP ON LAST JSB SWRG STEP IN TEST SECTION? JMP SAVES,I YES JMP CONT NO,CONTINUE SKIP EQU * LDA TEST GET ADA PTEST CURRENT LDB A,I STEP # STB STEP AND STORE IT CONT EQU * LDB BIT15 HALT AT JSB SWRG END OF TEST? RSS JMP NOHLT NO LDA TEST YES,GET TEST # CLB IN A REG AND CLEAR B REG HLT76 HLT 76B NOHLT EQU * LDB BIT13 LOOP JSB SWRG TEST? RSS JMP NOLP NO LDA SECT YES,POSITION RAL FOR TEST STA SECT SELECTION JMP TLOOP NOLP EQU * LDA TEST FINISHED CPA LTEST PASS? JMP CPASS YES INA NO,CONTINUE STA TEST TEST JMP TLOOP SEQUENCE CPASS EQU * LDB BIT0 PERFORM JSB SWRG TSTMM? JMP PTSTM,I YES CLA NO,CLEAR TSTMM STA MMFLG CONFIGURATION FLAG LDA PP8,I RESTORE AND MASK2 NORMAL IOR SPACE PASS STA PP8,I MESSAGE LDA SAVE4 FORM UP LOW ORDER ALF,ALF WCS MODULE SELECT ALF CODE AND CONTROL IOR SAVE5 STORE MODULE # JSB PCNF1,I GO CONFIGURE PROGRAM LDA JBACI SET PROGRAM STA JBAC1 OPTION BIT12 STA JBAC2 TO NORMAL TESTING MRTRN EQU * CLE FINISHED A LDA PASS PASS. SET UP LDB PPASS PARAMETERS FOR JSB C.124,I PASS COUNT LDA .8 JSB PRINT "PASS XXXXXX" ISZ PASS BUMP PASS COUNTER LDB BIT12 LOOP ON JSB SWRG DIAGNOSTIC? JBAC1 BSS 1 YES,DO ANOTHER PASS LDA PASS NO ADA M1 GET PASS # IN CLB A REG AND CLEAR B REG HLT77 HLT 77B JBAC2 BSS 1 DO ANOTHER PASS HED TEST SECTION 0 * * * TEST SECTION 0 * * * * CHECKS I/O BUS. * * TESTS DMA FLAG AND INTERRUPT CIRCUITRY,IF PRESENT, * (DMA CHANNEL 1 ONLY) BY ATTEMPTING 2 WORD TRANSFERS. * * TST00 EQU * TEST0 NOP LDA TEST ARM MESSAGE JSB TMSG H030 LDA CW1 INITIALIZE AND MASK4 VARIABLES IOR SC STA CW1 STP01 JSB SSTEP STEP 1 LIA 0 I/O BUS SZA CLEAR? E001 JSB ERROR NO,"IO BUS NOT CLEAR" LDA DMAFG DMA SZA,RSS PRESENT? JMP T.105 YES,DO NEXT STEPS JSB CSTEP NO,SKIP DMA CHECK JSB CSTEP AND UPDATE SKIP # JMP TEST0,I T.105 EQU * STP02 JSB CSTEP STEP 2 LDA .M5 SET STA TEMP1 COUNTER LDA CW1 INITIALIZE DMA OTA 6B FOR WCS CLC 2B SELECT CODE, LDA CW2 STC TO WCS EACH DMA CYCLE, OTA 2B CLC TO WCS AT END OF BLOCK. STC 2B 2 WORD TRANSFER LDA CW3 CONTAINING OTA 2B ALL 0'S STC 6B,C START DMA TRANSFER STF4 STF WCS WRITE ON CLF1 CLF WCS WCS T.103 SFS 6B DMA FLAG? JMP T.101 NO,DELAY & TRY AGAIN,THEN ERROR JMP T.102 T.101 CLA,INA DELAY A JSB C.121,I MILLISECOND ISZ TEMP1 TRIED 5 TIMES? JMP T.103 NO,TRY AGAIN E002 JSB ERROR YES,"NO DMA FLAG" T.102 EQU * STP03 JSB CSTEP STEP 3 CLF 6B DISABLE DMA INTERRUPT SIGNAL LDA JMP.1 SET UP JMP INSTRUCTION IN STA DMA TRAP CELL FOR INTERRUPT STF 0 TURN ON INTERRUPT SYSTEM LDA CW1 RE-INITIALIZE OTA 6B DMA FOR CLC 2B 2 WORD TRANSFER LDA CW2 TO WCS OTA 2B STC 2B LDA CW3 OTA 2B STC 6B,C START DMA TRANSFER STF5 STF WCS WRITE ON CLF2 CLF WCS WCS LDA .5 DELAY ABOUT JSB C.121,I 5 MILLISECONDS CLF 0 TURN OFF INTERRUPT FOR E003 E003 JSB ERROR "NO DMA INT" T.104 EQU * DMA INTERRUPT RETURN POINT CLC 0,C TURN EVERYTHING BACK OFF LDA 5B RESTORE TRAP STA 6B CELL HALT JMP TEST0,I HED TEST SECTION 1 * * * TEST SECTION 1 * * * * ADDRESS TEST - WRITES AND READS EACH ADDRESS IN WCS * MODULE WITH ITS OWN ADDRESS,THEN COMPARES THEM. * TST01 EQU * TEST1 NOP LDA TEST ARM MESSAGE JSB TMSG H030 STP04 JSB SSTEP STEP 4 LDA .M16 SET STA TEMP7 COUNTER JSB SET2 SET BUFFER POINTER CLA BUILD UP DATA CLB BUFFER TO CONTAIN T.200 EQU * ADDRESSES 0 THRU 377 JSB STORE IN THOSE ADDRESSES ADA IADDR EXAMPLE-ADDRESS 174 HAS 174 INB IN THE DATA FIELD CPA EMOD2 DONE BUILDING UP BUFFER? RSS YES JMP T.200 NO,CONTINUE T.203 EQU * JSB WBUFF WRITE BUFFER ONTO WCS JSB COMP READ WCS,COMPARE TO BUFFER VALUE ISZ TEMP7 DONE IT 16 TIMES? JMP T.203 NO,CONTINUE NOP TEMPORARY STP05 JSB CSTEP STEP 5 LDA .M16 SET STA TEMP8 COUNTER T.204 EQU * LDA .M256 SET ADDRESS STA TEMP1 COUNTER AND DATA LDA PBUF2 BUFFER POINTER TO STA TBUFF START AT END OF BUFFER T.201 EQU * LDB TBUFF,I WRITE BUFFER LDA TBUFF ONTO WCS ADA M1 IN DESCENDING STA TBUFF ORDER LDA TBUFF,I JSB WRITE LDB TBUFF ADB M1 STB TBUFF ISZ TEMP1 DONE? JMP T.201 NO,CONTINUE JSB COMP YES,COMPARE DATA ISZ TEMP8 DONE IT 16 TIMES? JMP T.204 NO,CONTINUE STP06 JSB CSTEP STEP 6 LDA .M16 SET STA TEMP9 COUNTER T.205 EQU * JSB SET2 SET BUFFER POINTERS TO THE LDA PBUF3 BEGINNING AND MIDDLE OF THE STA TEMP4 DATA BUFFER LDA .M128 SET ADDRESS STA TEMP1 COUNTER T.202 EQU * LDA TBUFF,I WRITE BUFFER ISZ TBUFF INTO WCS LDB TBUFF,I ALTERNATING ISZ TBUFF ADDRESSES JSB WRITE UP AND DOWN LDA TEMP4,I IN MODULE ISZ TEMP4 LDB TEMP4,I ISZ TEMP4 JSB WRITE ISZ TEMP1 DONE? JMP T.202 NO, CONTINUE JSB COMP YES,COMPARE DATA ISZ TEMP9 DONE IT 16 TIMES? JMP T.205 NO,CONTINUE JMP TEST1,I HED TEST SECTION 2 * * * TEST SECTION 2 * * * * PATTERN TESTS - WRITES A SERIES OF PATTERNS INTO * WCS,THEN READS THEM BACK AND COMPARES THEM. LAST * PATTERN IS REPEATED USING DMA,IF PRESENT. * TST02 EQU * TEST2 NOP LDA TEST ARM MESSAGE JSB TMSG H030 STP07 JSB SSTEP STEP 7 LDA .M96 SET JSB SET3 COUNTERS JSB SET2 CLA BUILD CLB DATA T.300 EQU * BUFFER TO JSB STORE CONTAIN ADA IADDR ALL 0'S CPA EMOD2 RSS JMP T.300 T.301 EQU * JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA ISZ TEMP7 DONE IT 96 TIMES? JMP T.301 NO STP10 JSB CSTEP STEP 10 LDA .M256 YES,SET JSB SET1 NEW COUNTERS LDA .M96 JSB SET3 JSB SET2 LDA MASK2 BUILD CCB DATA T.302 EQU * BUFFER TO JSB STORE CONTAIN ADA IADDR ALL 1'S ISZ TEMP1 JMP T.302 T.303 EQU * JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA ISZ TEMP8 DONE IT 96 TIMES? JMP T.303 NO STP11 JSB CSTEP STEP 11 LDA .M96 YES,SET JSB SET3 NEW COUNTERS LDA .M256 JSB SET1 JSB SET2 LDA MASK2 LDB M2 T.314 EQU * STA SAVE1 BUILD STB SAVE2 DATA T.304 EQU * BUFFER TO JSB STORE CONTAIN ADA IADDR A 0 IN A ISZ TEMP1 FIELD OF 1'S JMP T.304 JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA LDA .M256 RESET JSB SET1 COUNTERS JSB SET2 LDA SAVE1 ROTATE THE LDB SAVE2 0 ONE JSB ROTE TO THE LEFT ISZ TEMP8 DONE IT 96 TIMES? JMP T.314 NO STP12 JSB CSTEP STEP 12 LDA .M256 RESET JSB SET1 COUNTERS LDA .M96 JSB SET3 JSB SET2 CLA LDB B1 T.315 EQU * STA SAVE1 BUILD STB SAVE2 DATA T.305 EQU * BUFFER TO JSB STORE CONTAIN ADA IADDR A 1 IN A ISZ TEMP1 FIELD OF 0'S JMP T.305 JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA LDA .M256 RESET JSB SET1 COUNTER JSB SET2 LDA SAVE1 ROTATE THE LDB SAVE2 1 ONE JSB ROTE TO THE LEFT ISZ TEMP9 DONE IT 96 TIMES? JMP T.315 NO STP13 JSB CSTEP STEP 13 LDA .M256 YES,SET JSB SET1 NEW COUNTERS JSB SET2 CLA BUILD CLB DATA JSB STORE BUFFER TO ISZ TEMP1 CONTAIN LDA ONES1 ALL 0'S IN CCB FIRST WORD, T.306 EQU * ALL 1'S IN JSB STORE REMAINDER ADA IADDR ISZ TEMP1 JMP T.306 LDA PBUF1 SET BUFFER STA SAVE2 POINTER T.307 EQU * JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA JSB ROLL ROLL BUFFER UP ONE MICROWORD JMP T.307 CONTINUE JSB WBUFF WRITE LAST BUFFER JSB COMP READ AND COMPARE DATA STP14 JSB CSTEP STEP 14 LDA .M256 RESET JSB SET1 COUNTERS JSB SET2 SET POINTER LDA ONES0 BUILD CCB DATA JSB STORE BUFFER TO ISZ TEMP4 CONTAIN LDA ZERO1 ALL 1'S IN CLB FIRST WORD T.308 EQU * AND ALL 0'S JSB STORE IN REMAINDER ADA IADDR ISZ TEMP4 JMP T.308 LDA PBUF1 SET BUFFER STA SAVE2 POINTER T.309 EQU * JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA JSB ROLL ROLL BUFFER UP ONE MICROWORD JMP T.309 CONTINUE JSB WBUFF WRITE LAST BUFFER JSB COMP READ AND COMPARE DATA STP15 JSB CSTEP STEP 15 LDA .M256 SET NEW JSB SET3 COUNTERS JSB SET2 LDA PATTA BUILD LDB PATTB DATA T.310 EQU * BUFFER TO JSB STORE CONTAIN ADA IADDR 101010101010101010101010 XOR MASK2 010101010101010101010101 CMB 101010101010101010101010 ISZ TEMP7 ETC. JMP T.310 JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA T.311 EQU * JSB SET2 RESET POINTER JSB ALT COMPLEMENT PATTERNS JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA ISZ TEMP8 DONE IT 256 TIMES? JMP T.311 NO STP16 JSB CSTEP STEP 16 LDA .M256 JSB SET3 SET COUNTER CLA CLEAR FOR POSSIBLE STA TEMP8 USE IN DMA TIME OUT LDA DMAFG DMA SZA PRESENT? JMP T.313 NO T.312 EQU * JSB DRITE YES,WRITE DATA VIA DMA JSB COMP READ AND COMPARE DATA JSB SET2 RESET POINTER JSB ALT COMPLEMENT PATTERNS ISZ TEMP9 DONE IT 256 TIMES? JMP T.312 NO T.313 EQU * JMP TEST2,I YES,RETURN HED TEST SECTION 3