* SUBROUTINE TO CHECK FOR DMA IN CONFIGURATION * TEST 15 * CHCON NOP ENTRY POINT LDA CPTO GET CONFIGURATION WORD AND .4 MASK TO DMA BIT SZA IS DMA PRESENT? JMP CHCON,I YES JSB NONO NO, ISSUE MESSAGE OF NO DMA SPC 1 * SUBROUTINE TO CHECK DMA RESIDUE * TEST 15 * CHRES NOP ENTRY POINT CLC 6,C DISABLE DMA STC 2 LIA 2 READ RESIDUE AND DMAMA MASK IN CASE 2116, 2114 CPA DMA50 EQUUAL TO -50? JMP CHRES,I YES, EXIT * STA RESID SAVE FOR ERROR MESSAGE LDA .5 ERROR CODE = 5 ISZ CHRES JMP CHRES,I ERROR EXIT * DMAMA OCT 17777 DMA50 OCT 17716 RESID NOP SKP * * SUBROUTINE TO FIND OUT WHAT KIND OF ERROR IT IS * ERRS NOP ENTRY POINT * SSA WAS IT A FLAG NOT SET JMP TETX2 YES * CPA .10 IS IT A STATUS WORD FLAG? JMP TETX4 YES * CPB .1 TIME TO EXIT? JMP ERRS,I YES * SZA,RSS WAS IT A RCVR ABORT? JMP TETX1 YES * CPB .2 TIME TO EXIT? JMP ERRS,I YES * CPA .1 IT IS A COMPARE ERROR? JMP TETX5 YES * JMP ERRS,I EXIT SPC 4 CRLF NOP ENTRY POINT JSB MS,I OUTPUT CARRIAGE RETURN DEF *+3 AND LINE FEED DEF *+1 ASC 1,/ JMP CRLF,I EXIT SPC 4 DMAS JMP *+1,I INDIR JMP INSTR TO BE STORED IN TRAP CELL DEF DMAIN WITH LINK TO DMA INTP ROUTINE SKP * CONFIGURATION SECTION * ORG 1760B * CONF LIA 1 GET SELECT CODE STA USSC SAVE IT AND .77 MASK OFF THE SC ENTERED LDB A AND CHECK IF IT IS CMB,INB > 7. ADB .7 SSB JMP *+4 YES, VALID SC ENTERED JSB STOP HLT 73B NO, INVALID SC ENTERED JMP CONF RETURN FOR NEW CONFIGURATION STA SC SAVE SC CLA CLEAR S-REG OTA 1 JSB STOP HLT 74B OPERATOR ENTERS OPTIONS CLC 0,C TURN EVERYTHING OFF LDA IODL GET USER DEF LIST STA TMP SAVE IT AS A POINTER IOL LDB TMP,I GET ADDRESS OF LOCATION CPB .M1 IS IT -1 ? JMP TSHLT PUT HALTS IN TRAP CELLS LDA B,I NO - GET CONTENTS AND MSKSC MASK OFF SELECT CODE IOR SC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ TMP MOVE TO NEXT ADDRESS JMP IOL DO IT SPC 4 * PUT HALTS IN ALL TRAP CELLS * TSHLT LDA TSH4 GET STARTING TRAP CELL HALT LDB .4 GET FIRST TRAPCELL ADDRESS TSHL STA B,I PUT IT IN PLACE INA MOVE TO INB NEXT ADDRESS CPB SC IS IT THE TBG? STA HLTSC YES - SAVE FOR LATER CPB .100 AM I FINISHED? JMP EXEC YES - GO TO EXEC CONTROL JMP TSHL NO * MSKSC OCT 177700 TSH4 OCT 106004 SKP * * EXECUTIVE CONTROL * EXEC CLA CLEAR PASS STA EOLC COUNT CCA SET TEST NO = -1 STA TST# JSB CRLF DO CARRIAGE RETURN, LINE FEED LDB SW9 CHECK FOR USER SELECTION REQUEST JSB SWR,I JMP USR IT'S USERS CHOICE NUSR LDA .M1 GET STANDART TEST RUN LDB .M1 * JMP EXC USR LIA 1 CLEAR S-REG BIT 9 AND NBIT9 OTA 1 LDA SUINA LOAD A-REG WITH TEST SELETION CLB JSB STOP HLT 75B WAIT FOR USER INPUT REST SZA,RSS INPUT? JMP NUSR NO - DO ALL OF THEM * * EXC STA UINA SAVE STB UINB USER STA SUINA INPUT STB SUINB PROGRAM LDB SW9 CHECK IF SW9 IS DOWN JSB SWR,I RSS RETURN IF SWITCH IS SET JMP *+4 OK GO ON (RETURN IF SWITCH IS CLEARED USR1 LDA SUINA RESTORE ORIGINAL PROGRAM LDB SUINB * JMP USR NOW GO BACK AND WAIT CCA SET TEST NUMBER STA TST# =-1 SKP EXCL LDA UINA RESTORE A REG. LDB UINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA UINA SAVE POSITIONS STB UINB ISZ TST# MOVE TEST UP ONE NOP LDA TST# CPA .10 FINISHED WITH BASIC? JSB EXBC YES - TELL OPERATOR EXCL1 LDA TST# ADA DFPA GET IT'S LDA A,I ADDRESS CPA .M1 IS IT END OF LIST JMP EOL YES LDB UINB SSB,RSS SHOULD IT BE RUN? JMP EXCL NO STA TMP SAVE FOR CALL JSB INIT INITIALIZE LDA EXECR STA TSTX SKP JSB TMP,I YES EXCR CLC 0,C TURN OFF INTERRUPT SYSTEM LDA HLTSC RESTORE TRAP CELL STA SC,I HALT LDB SW15 CHECK FOR HALT AT END OF TEST JSB SWR,I RSS JMP *+4 NO - CONTINUE LDA TST# YES - DISPLAY TEST NUMBER JSB STOP HLT 76B WHEN HALTED LDB SW9 CHECK FOR ABORT JSB SWR,I JMP USR1 YES LDB SW13 CHECK FOR LOOP ON ROUTINE JSB SWR,I JMP EXCL1 YES - LOOP JMP EXCL CONTINUE * * EOL ISZ EOLC COUNT THIS TEST STA TST# DON'T PRINT TEST # LDB SW12 CHECK FOR LOOP ON ALL TESTS JSB SWR,I JMP EXCNT CONTINUE WITH ANOTHER LOOP CLE CONVERT THE PRESENT PASS LDA EOLC COUNT TO ASCII AND STORE LDB PSCP IT INTO THE MESSAGE. JSB O2ASC,I JSB MSG OUTPUT "TEST COMPLETE" DEF .EOL DEF *+1 PSCT ASC 14,DIAG COMPLETE, PASS XXXXXX/ .EOL LDB SUINB RESTORE ORIGINAL PROGRAM JSB STOP LDA EOLC LOAD DIAGNOSTIC LOOP COUNT HLT 77B WAIT FOR ANY CHANGES LDA SUINA RESTORE ORIGINAL PROGRAM JMP REST GO TO IT EXCNT JSB CRLF DO CARRIAGE RETURN, LINE FEED CCE LDA EOLC LDB EOLCP JSB O2ASC,I JSB MSG OUTPUT "PASS #" DEF ..EOL DEF *+2 EOLC NOP DIAG LOOP COUNT ASC 6,PASS XXXXXX/ ..EOL JSB CRLF DO CARRIAGE RETURN, LINE FEED LDA SUINA RESTORE ORIGINAL LDB SUINB PROGRAM JMP EXC DO IT ALL AGAIN SKP * BASIC I/O COMPLETE * EXBC NOP ENTRY POINT CLA STA TST# DON'T PRINT TEST NUMBER LDA SUINA CHECK IF ANY AND EXBCM BASIC TESTS DONE SZA,RSS ? JMP EX.BC NO - SKIP IT JSB MS,I YES - PRINT COMPLETE MESSAGE DEF EXBC. DEF *+1 ASC 14,BASIC I-O (TESTS 1-7) COMP/ EXBC. LDA USSC CHECK FOR 2 CPU AND BIT8 CONFIGURATION SZA,RSS SKIP IF TRUE JMP EX.BC NOT TRUE, NO HALT * JSB MS,I OUTPUT MESSAGE DEF E.XBC RETURN DEF *+1 ASC 17,START RCVR AND XMTR AT SAME TIME/ * E.XBC JSB STOP OCT 106000 WAIT FOR OPERATOR RESPONSE * EX.BC LDA .10 STA TST# RESTORE TEST NUMBER JMP EXBC,I EXIT * EXBCM OCT 376 * SUINA NOP SUINB NOP UINA NOP UINB NOP EXECR DEF EXCR SKP * * ERROR REPORTING * * CALLING SEQUENCE: * * JSB ERR * DEF RTN * DEF * NOP * NOP * NOP * . * . * RTN EQU * * * NOTE IF THE FORMAT STARTING ADDRESS IS * MISSING THE MESSAGE WILL BE OMITED * * ERR NOP CLC 0,C TURN OFF I/O SYSTEM LDB SW11 CHECK IF SUPRESS ERROR MESSAGES JSB SWR,I JMP CKEH YES LDA ERR NO JSB OPMSG OUTPUT MESSAGE * CKEH LDB SW14 CHECK IF HALT ON ERRORS JSB SWR,I RSS JMP *+3 ERREX LDA ERR,I GET RETURN ADDRESS JMP A,I RETURN TO CALLER LDA TST# SET HALT NUMBER AND .77 INSURE NOT GREATER THAN 77 IOR EHLT STA EHLT0 PUT IT IN PLACE LDB ERR GET A REG ADB .2 AND LDA B,I BREG. INB FOR DISPLAY WHEN LDB B,I JSB STOP EHLT0 NOP JMP ERREX CONTINUE * EHLT HLT 0 SKP * NON-ERROR MESSAGES REPORTING * * CALLING SEQUENCE: * * JSB MSG * DEF RTN * DEF * NOP * . * . * RTN EQU * * * MSG NOP CLC 0,C TURN OFF I/O SYSTEM LDA TST# IS IT CR-LF CALL? INA,SZA,RSS TEST IF TST# WAS -1 STA TST# YES, CLEAR TST# LDB SW10 NO, CHECK IF SUPRESSED JSB SWR,I JMP MSGEX YES, EXIT MSG2 LDA MSG NO - OUTPUT MESSAGE JSB OPMSG OUTPUT MESSAGE MSGEX LDA MSG,I GET RETURN ADDRESS JMP A,I RETURN TO CALLER SKP OPMSG NOP ENTRY TO OUTPUT A MESSAGE INA LDB A,I GET FORMAT ADDRESS INA STA NUA SAVE NUMBER ADDRESS STB FPTA SAVE FORMAT STARTING ADDRESS SZB,RSS IS THERE A MESSAGE JMP OPMSG,I NO LDB BIT8 CHECK IF FAST DEVICE JSB SWR,I WAS REQUESTED CLA,CCE,RSS YES CLA,CLE LDB TST# DO WE WANT TEST # SZB,RSS YES JMP MSGA NO, DON'T PRINT IT LDB TSTF JSB FMTR,I OUTPUT "TST" LDB TST# JSB FMTR,I OUTPUT NUMBER LDB BIT8 JSB SWR,I CLA,CCE,RSS CLA,CLE MSGA LDB FPTA RETRIEVE MESSAGE JSB FMTR,I START FORMAT MSGL0 CPA .43 IS THERE ANY NUMBER REQUESTED RSS JMP OPMSG,I NO LDB NUA,I YES GET NUMBER CCA JSB FMTR,I OUTPUT IT ISZ NUA MOVE TO NEXT NUMBER JMP MSGL0 NUA NOP FPTA NOP TSTF DEF *+1 ASC 4,TEST #/ * .43 OCT 43 SKP SDS EQU * SUB DEF START DEF TST0 DEF TST1 DEF TST2 DEF TST3 DEF TST4 DEF TST5 DEF TST6 DEF TST7 DEF TST8 DEF TST9 DEF TST10 DEF TST11 DEF TST12 DEF TST13 DEF TST14 DEF TST15 DEC -1 SPC 5 * IODS EQU * I/O DEF START DEF T2SC1 DEF T2SC2 DEF T2SC3 DEF T3SC1 DEF T3SC2 DEF T3SC3 DEF T3SC4 DEF T3SC5 DEF T3SC6 DEF T3SC7 DEF T4SC1 DEF T4SC2 DEF T5SC1 DEF T5SC2 DEF T5SC3 DEF T6SC1 DEF T6SC2 DEF T6SC3 DEF T6SC4 DEF T6SC5 DEF T6SC6 DEF T7SC1 DEF T7SC2 SKP * HWSIC UNIQUE SETTINGS * DEF ISC1 DEF ISC2 DEF ISC3 DEF ISC4 DEF ISC7 DEF XSC1 DEF RSC1 DEF LSC1 DEF FSC1 DEF FSC2 DEF ESC1 DEF ESC2 DEF ESC3 DEF ESC4 DEF ESC5 DEF ESC6 DEF ESC7 DEF WSC1 DEF WSC2 DEF WSC3 DEF CXSC1 DEF CXSC2 DEF CRSC1 DEF CHSC1 DEF CHSC2 DEF CWSC1 DEF CWSC2 DEF SSC1 DEF SSC2 DEF SSC3 DEF ESC8 DEF ESC9 DEF ESC10 DEF ESC11 DEF ESC12 DEF ESC14 DEF FXSC1 DEF FXSC2 DEF T13C1 DEF T13C2 DEF T13C3 DEF T13C4 DEF T13C5 DEF T13C6 DEF T13C7 DEF T13C8 DEF T13C9 SKP DEF CW1 DEF DSCX1 DEF DSCR1 DEF ISC5 DEF ISC6 DEF ISC8 DEF HXSC1 DEF HXSC3 DEF HXSC4 DEF HXSC5 DEF XSTA3 DEF RSTA1 DEF TXMI1 DEF TXMI2 DEF TRCV1 DEC -1 SKP * * TEST 0 HEADING * TST0 NOP CLE ADD DSN TO HEADER MESSAGE LDA DSN BY GETTING DSN LDB DSNP SPECIFY STORAGE POINTER JSB O2ASC,I & CONVERT STRING TO ASCII JSB MS,I DEF TST0,I DEF *+1 ASC 20,HARDWIRED SERIAL INTERFACE DIAGNOSTIC, DSNB ASC 6,DSN XXXXXX/ DSNP DEF DSNB+2 * SKP * * TEST 1 STF 0 - CLF 0 - SFS 0 - SFC 0 * TST1 NOP PĚ LDA LPCNT SET LOOP STA CNTR COUNTER LDA HLT0 PUT HALT TRAP IN AREG. TLT1 CLB STF 0 * RSS SAFTY FOR BAD SKP LINE JMP TET1 REPORT ITS BAD CLF 0 * LDB .1 .1 SFC 0 *? JMP TET1 *BAD LDB .2 .2 SFS 0 *? RSS * JMP TET1 *BAD STF 0 * LDB .3 .3 SFC 0 *? RSS * JMP TET1 *BAD LDB .4 .4 SFS 0 *? JMP TET1 *BAD ISZ CNTR NO LOOP AGAIN? JMP TLT1 YES JMP TST1,I NO - RETURN TO EXEC * TET1 STB TBT1 INDICATE ERROR JSB ER,I REPORT ERROR DEF TST1,I DEF *+3 TBT1 NOP NOP ASC 19,STF 0 - CLF 0 - SFS 0 - SFC 0 FAILURE ASC 4,(A = #)/ SKP * TEST 2 CHECK FOR NO INTERRUPT AFTER CLF 0 * TST2 NOP LDA LPCNT SET LOOP STA CNTR COUNTER TLT2 JSB TCJMP PUT JMP IN TRAP CELL DEF TIT2 RETURN LOCATION IF INTERRUPT LDA HLT0 LDB HLT1 T2SC2 STF TSC SET THE FLAG FF T2SC1 STC TSC SET THE CONTROL FF CLF 0 TURN OFF INTERRUPT SYSTEM NOP GIVE IT A CHANCE NOP NOP T2SC3 CLF TSC RESET TSC FLAG ISZ CNTR LOOP DONE? JMP TLT2 NO JMP TST2,I * TIT2 JSB ER,I REPORT ERROR DEF TST2,I DEF *+1 ASC 8,INT AFTER CLF 0/ SKP