h AT : Only U V W X Y Z will be realst : STOPON  : ()  : () :Set up F4 trap , ( "COMBINED SEC-PC DIAGNOSTIC AND EXERCISER Rev A 8/20/85"/2  : INSTALL MACHINE LANGUAGE SUBROUTINEZ<  : SETUP SCREEN, SOME CONSTANTSgFPASS PERRORS  : RATERS Z () ( : () : Trap and terminate on F8 key.d SPSL,0 : "FORWARD" : ( channels together ) n T  LASTT!x COORD  / = COORDE T SPSL,0 : "REVERSE" : ( CHANNELS IN SEQUENCE ) COORD    T LASTT    T COORD,PASS PASS 6 SPSL,@ "######";PASSJ d -EROR ; SPSL,1L "## ";T;g (("X")COORD); T ,,,,&,0,:,D,N,X T b,l,v,,,,,,, T ,,,,,,, ,,   T *,,,HC : Catch unimplemented ones * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * NUMBERED TESTS, LINE NUMBER IS T * 10 + 500 * *' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *hTTYPE$ " RESET " : DST  : U  : T1: reset countersz  : BTTYPE$ "PI & PO " : DST : U  : W  :T2: try PO to PI  PO, : TTYPE$ "PI & PO " : DST  : U  : W  :T3: try PO to PI, PO, PCGST (PO) YEROR DST GSTc LTTYPE$ " SWITCH " : DST  : U  : T4: push switch   PO, : PO, : PO, : B"JUNK (PCOM) : DST  : B@&TTYPE$ " SWITCH " : DST  : U  : T5: push switch, reset flagJ( g* PO, : PO, : PO,,JUNK (PCOM) : B0TTYPE$ "COUNTING" : DST  : U  : :U #t :  : T7: TTYPE$ and DST valid from T6 or T8%DU  :  : T8: one down then one upIF PO,S() : PO,S() : .xNU  :  : T9: one up then one downP PO,S() : PO,S() : .XU  : bU  : lU  : vU  : U #t : U #t : &U #t : <U ` q : RU #t : hU @ : ~U @7 : U  : U  Ip : U  : B S() : ( : T23: Unusual starting PO PO,S() .(U #t : B S() : ( : T247 PO,S()A .uTTYPE$ "COUNTING" : U 90 : DST  : TTYPE$ "MULTICNT" : U  : DST  : MCNT  : TTYPE$ "MULTICNT" :  : B S() : PO,BMCNT  : U  : DST  : B TTYPE$ "LED > PI" : U  : W  :T28XDST ` : fDST ( PCOM,( DST x)GST (PO) xEROR DST GST : L TTYPE$ "LED > PI" : U  : W  :T30"DST `: ?*TTYPE$ "RATE ERR" : U  : DST  : :T31: Try for rate errorU,B S() : (l. PO,S() : .4B S() : (6 PO,S() : .>B S() : (@ PO,S() : .HTTYPE$ "RATE ERR" : U  : DST  : :T34JB S() : (&L PO,S() : .s * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * SHARED CODE FOR THE MOST COMMON COUNTING TEST * *  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *+  : Do normal resetC U PC yG S() : H S() : Set upcount patternCOUNT U : $G S() : H S() : Set downcount patternCOUNT $tU$ SUB!(B,G,H,COUNT,PO). x)B * * END OF EACH PASS * *<L EROR  eV * * TEST HAD AN ERROR * *s` SERL,1j "## ";T;t (("X")COORD);~ SERL,0 : TTYPE$ SERL,1 : "######";U;:" data sent";  SERL,/ : "########";W;:" data recvd.";P  SERL,0 : (DST);"::";(GST);" "h ERRORS ERRORS   SERL, : "######";ERRORS  T  T "  :Not rate error!RATERS RATERS  :Count rate errors separately just in case'! SERL, : "######";RATERSA! STOPON , : G!! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *! * * SUBROUTINE, RESET COUNTERS AND SWITCH FLAG * *+"  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\"B S() : Normal starting value, all low"( PO,B : Put it out to PO port"2 PSC, : Reset counters"<JUNK (PCOM) : Clear switch flag"F#Z * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *h#d * * SUBROUTINE, READ A COUNTER AND CHECK RESULTS * *#n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#x PCOM,#GST (PSC)@ : The status what we got$ PSC, :Make a copy of the counters-$ PCOM,COORDu$W (((((PD) (PD)) (PD)) (PD)) (PD)) (PD)$ SCDL,COORD : Find appropriate place on screen$ "########";W;$ U W EROR EROR % GST DST EROR EROR %Z% * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *% * * THE MULTI-COUNT LOOP FOR T26 AND T27 * *% * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *% &G S() : H S()/&COUNT (MCNT)D& MULTI  a&" SUB!(B,G,H,COUNT,PO)t&, U U MCNT&6 U $t U U $t&@ U  U U $t&J x&T MULTI&^ B"' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n' * * SUBROUTINE, INSTALL MACHINE LANGUAGE SUBROUINE & USER FN * *' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *' FILL MACHINE LANGUAGE SUBROUTINE INTO STRING S$(S$(2,?) (P!(S$)*(P!(P!)(P!)6(SUB!P!@(  4Z( D : D  po(  P!,D : P!P!y(* (4 85,139,236,139,118,6,139,20,139,118,8(> 139,12,139,118,10,138,60,139,118,12(H 138,28,139,118,14,139,4,50,195,134,223#)R 238,226,249,137,4,93,202,10,0,-1T)\ SEE FILE MACH.LST FOR HEX LISTING OF ABOVE~)f Last inst fixed to far jump 8/13/85)k)p S(D) D(COORD) : ** The one user fn employed **)u THE '+1' REPRESENTS THE SWITCH NO CONTACT OPEN*yL*z * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * SUBROUTINE, SETUP OF SCREEN, CONSTANTS, ETC. * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *+SPSL  : SCREEN LINE OF PASS AND SECTION COUNTSI+ SPSL, : (,);( , );(,)y+ SPSL, : "PASSES";(, );"SECTION"+SCDL  : SCREEN LINE OF COUNTER DISPLAYS+ SCDL,+ "X CNTR";(, );"Y CNTR";(, );"Z CNTR" , SCDL, : (,);(, SCDL,% : (,);E, SCDL,: : (,);t,SERL  : SCREEN LINE OF ERROR COUNTER, SERL, : "ERRORS";, SERL,/ : "LAST ERR";, SERL, : (,);, SERL,/ : (,)- LASTT " : The number of testsR-$ PSC 0 : PD PSC : I/O Port set by switches on SEC-PC-. PO PSC  : PROM PSC  : PCOM PSC -V - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#. * * SUBROUTINE, F4 TRAPS HERE TO STOP ON ERROR * *o. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *~. STOPON . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ * * SUBROUTINE, F8 TRAPS HERE TO TERMINATE (NO RETURN) * *h/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *s/( ,y/2