IMD 1.16: 2/09/2008 13:11:29 84-93715-01 a000 f71501 scout hardware test program common modules  ž ªªž @0‚|†ø)®wÂwЀЀÎtQº®q¦l) ˆ " ž}‚gÿA ¢`œžúž½žä×_l M@’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’IOS4 €MÁÚF182022316412904820223164129 820223164129IF71501 VOLSCOUT HARDWARE TEST PROGRAM COMMON MODULES 84-93715-01 A000   ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’Ižúž½žä×_l M@†i¾øG€ÿìÆy†y ¾õG€ÿæG‚ÿñ‚ÿðGÿÜ`HÂZ@ †b G€ÿÚ`ú^žƒ¾ÿž©ÒY¾ü žáe‡ †IÂQ¾¤¾æ ¾ïÀˆÆBÆBp@€„†;€…†:€††9€ƒ †:Â7P@ G€ÿµÆ:à‰æÙ¾‹N¾Ò ¾ìžùž8‚!¢0ŸÐÆ.ž¶ *•¦ÿ C¦'¾¿Ÿx¢«„C# b# ž}€BŸÒ× @0DAJ÷LÆ ¢w+™ЀЀΖQA1¹" ¦ † †¦†¤¾¥i€„Žœ žŸ} šŸ}ˆªªžö @¬E°E¨F¤F)¤D¾‘ÄE‚Û„Fž8 æÑŸ} ¦ÔŸ} ÆÌŸ} ž* `jUBˆB¾Œ I,Ÿv ¾‡°¾…€B¾ƒ I,žº ž# @ G€ÿ9Æáæ¬HÿÆàÆà@pÆÜ¾³ŸrâèCHùC €ˆC ˜GãTºà€q` †Lg€ÿ"žgÿò‘æEX¾C P¢Žâ‰+ì„s=è„胾Pž¿ÞžÂ+âc fžQ¾žN ‚¦p ž‹¾$R†¡ŸxÆn†j‚Ê ž¢žû Þž‚ÞÞ”žniæâZ悌¾ ތ⊞ì ¦Ÿ} ¦Ÿ}ÿÿŠHŠG¾Âž†§¾¬žÄ¾ë ¦¡ÂŸ@AúœLèSÃ)"$ C ž‰žkžëª2žâŠ0žjŠ.žžh†( ’ªÂ+¢$`îƒæ%ꂜ€\ÿö1 !¦Mž' ²y‚ žˆò%€À'+ò²oŸsæ…¾âƒ)žsžY ‡eÞdŸ|Ÿ{ @ž8 ož½ Ož¶ mž´ Jž² Kž° iž¿ gž½†N ž)V% tž¹ž%ì„sLè„n`" E¾  F.¹¾  F„ Dž>)žÿ ¾=`¾;nrgŸy ¾w"¾GÞ,ž{žK¾q1 ¾AÞ&ž}žE¾*`¾(t¾ž@¾% ²;¾c ¾ Þ7Þ6Þ5žy¦3ž4¾ž2¾ü¾(ž.OS:: SYSž¦ž"ªªiüþŒþ‹Âwþ‹þŠÂvc Bc A@6<# þIc B# ÞgIþjHÀc r‡Ÿ TITL SCOUT MANUFACTURING DIAGNOSTICS TITL PSEUDO OMEGA4 I/O ROUTINES (ROMMABLE) BAR BAR * * SCOUT MANUFACTURING DIAGNOSTICS * * COPYRIGHT 1980, COMPUTER AUTOMATION, INC. * BAR BAR * * I/O SYSTEM PRIMITIVES. LIMITED TO CRT INPUT AND * OUTPUT ONLY. * BAR TITL JUMPTABL REL NAM ENDTABL ENDTABL WORD 0 SIGNAL END OF TABLE SPACE 3 MESSAGE REL NAM ENDMSG BYTE :0D,:0A,:0D,:0A ENDMSG WORD $ SPACE 3 ROM REL NAM O:IO NAM O:MSG NAM O:BY2H TITL EQUATES AND DEFINITONS * * PHYSICAL CONSTRAINTS * IOBUFR EQU :400 BUFRLEN EQU  80 CRT LINE LENGTH CNSLDA EQU :F8 * * EQUATES TO ACCESS REGISTERS SAVED ON THE STACK * LREG EQU 0 SREG EQU 1 AREG EQU 2 QREG EQU 3 XREG EQU 4 YREG EQU 5 PREG EQU 6  (FROM JSK PRECEEDING PUSH) * * LOGICAL UNIT DEFINITIONS * CI SET 0 CO SET 1 TITL STRING OUTPUT PROCESSOR SYSDEF O:MSG,M:LU,MSGLEN,MSGBUFR SAVELU RES 1 NEXTCHAR RES 1 IOSTATUS RES 1 ENDEF O:MSG ENTRY COPY M:LU,SAVELU(Y) COPY MSGLEN(Y),Q SPACE 1 XMITLOOP JEQD Q,ENDOFMSG TEST FOR END OF MESSAGE COPY *MSGBUFR(Y),A GE T THE NEXT TWO BYTES TO OUTPUT ROTATE A,L,8 POSITION BYTE 0 (UPPER) FOR THE O:IO CALL COPY A,NEXTCHAR(Y) CALL O:IO,SAVELU,NEXTCHAR CLSN =0,A TEST FOR I/O ERROR (LOWER BYTE <> 0) JMP CONTINU1 NO ERROR! JMP ENDOFMSG OTHERWISE ABORT MESSAGE OUTPUT CONTINU1 JEQD Q,ENDOFMSG MESSAGE MAY HAVE AN ODD LENGTH COPY *MSGBUFR(Y),A COPY A,NEXTCHAR(Y) CALL O:IO,SAVELU,NEXTCHAR OUTPUT THE SECOND BYTE IMS MSGBUFR(Y) INCREMENT BUFFER POINTER CLSN =0,A TEST FOR I/O ERROR AGAIN JMP XMITLOOP AND CONTINUE IF NO ERROR SPACE 1 ENDOFMSG AND =:FF,A MASK HIGH BYTE COPY A,IOSTATUS(Y) EXIT IOSTATUS TITL CONVERT BINARY BYTE TO HEX CHARACTERS BAR * * SUBROUTINE TO CONVERT THE LOW BYTE OF 'HEXNUM' *  TO TWO ACSII CHARACTERS REPRESENTING ITS VALUE AND RETURN * THEM IN THE A REGISTER (NO ERRORS ARE POSSIBLE). * BAR  SYSDEF O:BY2H,HEXNUM CONVERTD RES 1 ENDEF O:BY2H ENTRY ROTATE A,L,12 GET THE FIRST 4 BITS POSITIONED FOR CONVERSION  COPY A,X AND =:0F,X MASK THE REST OFF ADD =HEXTBL,X GET ADDRESS OF CHAR WITHIN THE TABLE COPY 0(X),Q LOAD CODE FOR FIRST 4 BITS ROTATE A,L,4 POSITION NEXT 4 BITS  ROTATE Q,L,8 POSITION CONVERTED CODE FOR NEXT CHAR. COPY A,X AND =:0F,X MASK ALL BUT THE SECOND 4 BITS ADD =HEXTBL,X OR 0(X),Q MERGE TWO CHARS. TOGETHER IN A-REG COPY Q,CONVERTD(Y) EXIT CONVERTD * HEXTBL WORD '0','1','2','3','4','5','6','7' WORD '8','9','A','B','C','D','E','F' TITL CHARACTER INPUT & OUTPUT - O:IO: BAR * * CONSOLE I/O DRIVER - CALL PER EQUIVALENT OMEGA4 ROUTINE * X REG CONTAINS LU (CI OR CO ONLY) * A CONTAINS BYTE TO OUTPUT (IN LOW BYTE) OR CONTAINS * BYTE INPUT IN LOW BYTE WITH THE HIGH BYTE PRESERVED * CALL VIA JSK - RETURNS VIA RSK * BAR SYSDEF O:IO,IO:LU,OUTCHAR INCHAR RES 1 OUTLU RES 1 ENDEF O:IO ENTRY CSK A,=CI TEST FOR NUMERIC LU DESIGNATOR NOP JMP IO:01 JMP  IO:IN IO:01 CSK A,='CI' TEST FOR ASCII LU DESIGNATOR NOP JMP IO:OUT WASN'T CI SO MUST BE AN OUTPUT LU ! SPACE 1 IO:IN COPY BUFRPTR,X IS THE INPUT BUFFER EMPTY ? JNE X,IO:02 JUMP IF NOT CALL CRTIN,=CI,=IOBUFR*2 IF SO, THEN FILL IT SPACE 1 IO:02 COPY Y,A SAVE SCRATCHPAD POINTER  COPY =IOBUFR,Y GET POINTER TO BEGINNING OF BUFFER SBIT 2,S COPY 0(X,Y),Y GET THE NEXT CHARACTER (IN BYTE MODE) RBIT 2,S EXCH Y,A RESTORE Y-SCRATCH POINTER, SAVE THE CHAR WE READ ADD =1,X INCREMENT BUFFER POINTER CLSN =:0D,A WAS THE CHAR A ? COPY =0,X IF SO, THEN RESET BUFFER POINTER (E.O.L.) COPY X,BUFRPTR SPACE 1 SHIFT A,LO,8 PLACE THE CHAR IN UPPER BYTE, CLEAR LOWER BYTE COPY A,INCHAR(Y) EXIT INCHAR RETURN THE CHAR READ AND AN ERROR CODE 0 IO:OUT COPY A,OUTLU(Y) CALL CRTOUT,OUTLU,OUTCHAR EXIT =0 NO ERROR POSSIBLE TITL SYSDEF CRTIN,IN:LU,BUFPTR JUSTREAD RES 1 ENDEF CRTIN ENTRY  COPY =0,X CRTIN03 EQU $ IN CNSLDA+1,Q TBIT 4,Q JF OV,CRTIN03 WAIT FOR IDLE SPI COPY =IOCRST,A OUT A,CNSLDA+1 RESET THE CRT INTERFACE COPY =CNSLIN,Q COMMAND WORD TO START I/O OUT Q,CNSLDA+1 COMMAND TO START I/O SPACE 1 CRTIN01 IN CNSLDA+1,A READ STATUS  TBIT 3,A TEST DATA READY BIT JF OV,CRTIN01 WAIT 'TILL IT'S SET ! SPACE 1 IN  CNSLDA,Q THEN READ THE BYTE AND =:7F,Q MASK OFF PARITY BIT !!!!!!!!!!!!! COPY Q,JUSTREAD(Y) SAVE THE CHARACTER JUST READ COPY =CNSLIN,A OUT A,CNSLDA+1 RESTART THE SPI AGAIN SPACE 1 CSK Q,=:08 :08 = ASCII BACKSPACE NOP JMP CRTIN02 NOT A BACKSPACE CHARACTER JEQ X,CRTIN03 IF AT BEGINNING OF LINE, THEN GET NEXT CHARACTER SUB =1,X IF NOT, THEN BACK UP CALL  CRTOUT,=CO,JUSTREAD AND ECHO JMP CRTIN03 NOW, GET THE NEXT CHARACTER. SPACE 1 CRTIN02 EQU $ CALL CRTOUT,=CO,JUSTREAD ECHO CHARACTER JUST READ SBIT 2,S ***** ENTER BYTE MODE ***** COPY Q,*BUFPTR(X,Y) STUFF THE BUFFER RBIT 2,S ***** BACK TO WORD MODE *****  CSK X,=BUFRLEN AT END OF LINE ? ADD =1,X NO. THEN INCREMENT POINTER NOP CSK  Q,=:0D WAS CHAR = ? NOP JMP CRTIN03 NO. THEN GET THE NEXT CHAR SPACE 1 EXIT RETURN WITH A NEW BUFFER FULL TITL SYSDEF CRTOUT,UNIT,XMITCHAR ENDEF CRTOUT ENTRY COPY XMITCHAR(Y),A RETREIVE CHAR TO BE SENT CRTOUT01 OUT A,CNSLDA OUTPUT THE CHARACTER CRTOUT02 IN CNSLDA+1,Q READ THE STATUS  TBIT 4,Q TEST XMTTR EMPTY BIT JT OV,CRTOUT02 WAIT 'TILL HE GOES BUSY SPACE 1 CRTOUT03 IN CNSLDA+1,Q CHECK STATUS AGAIN TBIT 4,Q JF OV,CRTOUT03 NOW WAIT FOR NOT BUSY SPACE 1  COPY =IOCRST,Q OUT Q,CNSLDA+1 ISSUE A RESET TO THE SPI EXIT NO. THEN RETURN END E SENT CRTOUT01 OUT A,CNSLDA OUTPUT THE CHARACTER CRTOUT02 IN CNSLDA+1,Q READ THE STATUS  TBIT 4,Q TEST XMTTR EMPTY BIT JT OV,CRTOUT02 WAIT 'TILL HE GOES BUSY SPACE 1 CRTOUT03 I TITL SCOUT MANUFACTURING DIAGNOSTICS TITL MISC. SYSTEM PRIMITIVES BAR BAR * * SCOUT MANUFACTURING DIAGNOSTICS * *  COPYRIGHT 1980, COMPUTER AUTOMATION, INC. * BAR BAR TITL NAM PRTHEX EXTR SYSERR EXTR O:IO,O:BY2H SYSDEF PRTHEX,XX,VALUE LU RES 1 AVALUE RES 1 ENDEF PRTHEX ENTRY  COPY A,LU(Y) CALL O:IO,LU,=':' COPY VALUE(Y),A CALL O:BY2H,VALUE ROTATE A,L,8 POSITION FOR WRITING FIRST BYTE COPY A,AVALUE(Y) CALL O:IO,LU,AVALUE COPY  AVALUE(Y),X ROTATE X,L,8 COPY X,AVALUE(Y) CALL O:IO,LU,AVALUE EXIT =0   NO ERROR POSSIBLE END ROM REL NAM FLUSH EXTR O:IO,SYSERR SYSDEF FLUSH,TRMNL,LU ENDEF FLUSH ENTRY COPY A,Q SAVE TERMINAL CHARACTER SHIFT Q,LO,8 PUT IN THE HIGH BYTE FLUSH:1 CALL O:IO,LU GET NEXT CHARACTER CLSN =0,A I/O ERROR ? JMP  FLUSH:2 NO. JMP FLUSH:E YES. THEN RETURN ANY WAY FLUSH:2 SUB Q,A TEST THE CHARACTER JUST READ JNE A,FLUSH:1 NOT EQUAL TO TERMINAL CHAR - KEEP GOING FLUSH:E EXIT =0 END ROM  REL NAM SYSERR EXTR O:MSG,HFT:EXC ABORT BYTE :0D,:0D,'FATAL PROGRAM ERROR - STACK OVERFLOW - ABORT' BYTE :07,:07 EABORT EQU $-ABORT*2 SPACE 1 SYSERR EXCH L,X SUB =:10,X GIVE THE STACK A BIT MORE ROOM EXCH L,X CALL O:MSG,=CO,=EABORT,=ABORT HLT JMP HFT:EXC END BAR * * STANDARD REAL TIME CLOCK SERVICE ROUTINE * BAR ROM REL NAM RTCSERV RTCSERV SIN 6 RBIT 8,S TURN OFF INTERRUPTS RBIT 5,S RSK END BAR * * SUBROUTINE YES:NO - PROCESSES YES OR NO ANSWERS TO * INTERACTIVE DIALOG. * RETURN CODES: 0 = ESCAPE FROM NORMAL DIALOG * 1 = YES * 2 = NO * 3 = RESPONSE ERROR * BAR NAM YES:NO EXTR SYSERR,O:IO,FLUSH SYSDEF YES:NO YN:RET RES 1 ENDEF YES:NO ENTRY CALL O:IO,=CI COPY =3,Q DEFAULT RETURN CODE - INDICATES ERROR CLSN =0,A I/O ERROR ? JMP YN001  IF NOT THEN CONTINUE JMP YN003A IF SO THEN DEFAULT TO 'NO' RESPONSE SPACE 1 YN001 SHIFT A,RO,8 ALIGN CHARACTER CSK A,='/' DIALOG ESCAPE CHARACTER ? NOP JMP YN002 NO. COPY =0,Q YES. RETURN WITH CODE 0 JMP YN:EXIT1 SPACE 1 YN002 CSK A,='Y'  ANSWER = 'YES' ? NOP JMP YN003 NO. COPY =1,Q YES. RETURN WITH CODE 1  JMP YN:EXIT SPACE 1 YN003 CSK A,='N' ANSWER = 'NO' ? NOP JMP YN004 NO. YN003A COPY =2,Q YES. RETURN WITH CODE 2 JMP YN:EXIT SPACE 1 YN004 CSK A,=:0D HOW ABOUT A CARRIAGE RETURN ? NOP JMP YN:EXIT THEN IT WAS AN ERROR ! COPY =2,Q THEN TREAT AS A 'NO' JMP YN:EXIT1 SKIP OVER THE FLUSH-TO-END-OF-LINE SPACE 1 YN:EXIT CALL FLUSH,=:0D,=CI CLEAR INPUT BUFFER REGARDLESS YN:EXIT1 COPY  Q,YN:RET(Y) EXIT YN:RET END TITL ISOLITE LED RUN INDICATOR ROUTINE BAR * * PRIMITIVE ROUTINE TO PERIODICALLY INVERT STATE * OF CPU'S ISOLITE LED. * BAR NAM BLINKER EXTR SYSERR SYSDEF BLINKER ENDEF SPACE 1 BLINKER ENTRY COPY MODEREG,A CBIT LEDSTATE,A INVERT LED STATE FLAG COPY A,MODEREG SAVE THE NEW LED STATE FLAG TBIT LEDSTATE,A SEE WHAT STATE WE SHOULD BE IN JF OV,OFF SAL 2,0 TURN CPU'S LED ON JMP BLINKED OFF SAL 2,:F TURN AL L LED'S OFF BLINKED EXIT END TITL SCOUT HARDWARE FUNCTIONAL TEST SYSTEM TITL GLOBAL ERROR HANDLER BAR * * ERRACTN - EXAMINES THE MODEREGISTER AND TAKES * APPROPRIATE ACTION * BAR EXTR SYSERR EXTR O:MSG,O:IO EXTR TECHTST,LTECHTST NAM ERRACTN DEFINE ERRACTN,POINTER LMSG RES 1 MSGPTR RES 1 ENDEF ERRACTN ENTRY COPY TECHFLAG,Q CLSN Q,=1  JMP FLG03A ABORT PROCESSING IF ALREADY IN TECH-TEST COPY POINTER,MSGPTR(Y) * FIND THE BOARD NOW BEING TESTED COPY =:21,X FIRST STATUS REGISTER FINDBRD CLSN X,=:2F CHECKED ALL STATUS REGISTERS ? JMP FOUND . . . IF SO, USE :2F ANYWAY COPY 0(X),Q READ A STATUS REGISTER TBIT 15,Q TEST THE CURRENT-TEST-FLAG JT OV,FOUND IJNE X,FINDBRD KEEP TRYING! SPACE 1 FOUND IMS 0(X) INCREMENT FAILURE COUNT FOR THIS BOARD NOP IN CASE OF COUNT OVERFLOW SPACE 1  COPY MODEREG,Q TEST FLAGS FOR ACTION TO TAKE TBIT MODEFLAG,Q IS IT AN INTEREACTIVE TEST ?  JF OV,FLG02 IF NOT THEN BYPASS MSG OUTPUT SPACE 1 TBIT ALRMFLAG,Q JF OV,FLG01 IF FLAG=0, THEN GO ON CALL O:IO,=CO,=:07 OTHERWISE RING BELL SPACE 1 FLG01 COPY MODEREG,Q GET THE FLAG REGISTER BACK TBIT MSGFLAG,Q ARE MESSAGES WANTED ? JF OV,FLG02 SPACE 1 COPY MSGPTR(Y),X COPY 0(X),Q GET MESSAGE LENGTH FROM EXTERNAL BUFFER COPY Q,LMSG(Y) AND SAVE LOCALLLY IMS MSGPTR(Y) INCREMENT POINTER BEYOND LENGTH VALUE CALL O:MSG,=CO,LMSG,MSGPTR FLG02 COPY MODEREG,A TBIT ACTNFLG2,A HALT OR CONTINUE TESTING ? JF OV,FLG03 HLT I'VE BEEN TOLD TO STOP SPACE 1 FLG03 COPY MODEREG,A TBIT ACTNFLG1,A TECH TEST OR CONTINUE ? JF OV,FLG04 COPY =1,A COPY A,TECHFLAG SET GLOBAL TECH-TEST-FLAG COPY MODEREG,A TEST FOR INTERACTIVE TEST AGAIN TBIT MODEFLAG,A JF OV,FLG03A IF NOT INTERACTIVE, THEN NO MSG SENT CALL O:MSG,=CO,LTECHTST,=TECHTST FLG03A EXIT =1 TELL CALLER TO START TECH-TEST LOOP SPACE 1 FLG04 EXIT =0 NORMAL RETURN CODE (NO LOOP) END HLT I'VE BEEN TOLD TO STOP SPACE 1 FLG03 COPY MODEREG,A TBIT ACTNFLG1,A TECH TEST OR CONTINUE ? JF OV,FLG04 COPY =1,A COPY A,TECHFLAG SET GLOBAL TECH-TEST-FLAG COPY MODEREG,A TEST FOR INTERACTIVE TEST AGAIN TBIT MODEFLAG,A JF OV,FLG03A IF NOT INTERACTIVE, T TITL SCOUT MANUFACTURING DIAGNOSTICS - PHASE I TITL MESSAGE BUFFERS BAR BAR * * SCOUT PHASE I MANUFACTURING DIAGNOSTICS * * COPYRIGHT 1980, COMPUTER AUTOMATION, INC. * BAR BAR * * THIS MODULE CONTAINS THE MESSAGE BUFFERS CALLED * THROUGHOUT THE M:DIAG:I DIAGNOSTIC PACKAGE * BAR ROM REL NAM BRDPRMT,LBRDPRMT BRDPRMT WORD :0D0A BYTE 'SELECT BOARD-UNDER-TEST ("BUT") FROM THE ABOVE LIST:' BYTE :0D,:0A,'(RESPOND WITH THE BOARD ASSEMBLY NUMBER.)' BYTE :0D,:0A,'>>>541' LBRDPRMT WORD $-BRDPRMT*2 SPACE 1 NAM CNTPRMT,LCNTPRMT CNTPRMT BYTE :00,:0A,'- SPECIFY # OF "BUT"S (ENTER RETURN TO SIGNIFY 1, OR' BYTE ' ENTER',:0D,:0A,' ACTUAL #) >>>',:00 LCNTPRMT WORD $-CNTPRMT*2 SPACE 1  NAM DSHPRMT,LDSHPRMT DSHPRMT BYTE :00,:0A,'BOARD DASH NUMBER >>>' LDSHPRMT WORD $-DSHPRMT*2 SPACE 1  NAM LSIGNOFF,SIGNOFF SIGNOFF BYTE :0D,:0A,:0A,'*** END OF TEST ***',:0D,:0A LSIGNOFF WORD $-SIGNOFF*2 SPACE 1 NAM AIDS,LAIDS AIDS BYTE :00,:0A,'NON-STANDARD DIAGNOSTIC AIDS (Y N,OR ) ?' LAIDS WORD $-AIDS*2 SPACE 1 NAM ERRHLT,LERRHLT ERRHLT BYTE :00,:0A,'- HALT ON ERROR (Y N) ?' LERRHLT WORD $-ERRHLT*2 SPACE 1 NAM ERRLOOP,LERRLOOP ERRLOOP BYTE :00,:0A,'- LOOP ON ERROR (Y N) ?' LERRLOOP WORD $-ERRLOOP*2 SPACE 1 NAM ALRMBEL,LALRMBEL ALRMBEL BYTE :00,:0A,'- RING BELL ON ERROR (Y N) ?',:00 LALRMBEL WORD $-ALRMBEL*2 SPACE 1 NAM XTEND,LXTEND XTEND BYTE :00,:0A,'- PRINT EXTENDED DIAGNOSTIC MESSAGES (Y N) ?',:00 LXTEND WORD $-XTEND*2 SPACE 1 NAM SINGLE,LSINGLE SINGLE BYTE :00,:0A,'- RESTART TEST FOLLOWING COMPLETION (Y N) ?' LSINGLE WORD $-SINGLE*2 SPACE 1 NAM VERIFY,LVERIFY VERIFY BYTE :0D,:0A,' TYPE A CARRIAGE RETURN TO START TEST >>>' LVERIFY WORD $-VERIFY*2 SPACE 1 NAM TSTRT,LTSTRT TSTRT BYTE :0D,:0A,:0A,'BOARD-UNDER-TEST ("BUT") NO. ' LTSTRT WORD $-TSTRT*2 SPACE 1 NAM TSTRT2,LTSTRT2 TSTRT2 BYTE ' NOW UNDER TEST' BYTE :0D,:0A,'***********************************************' LTSTRT2 WORD $-TSTRT2*2 SPACE 1 NAM TECHTST,LTECHTST TECHTST BYTE :0D,:0A,'*** ENTER TECH TEST ***' LTECHTST WORD $-TECHTST*2 SPACE 1 END 0A,' TYPE A CARRIAGE RETURN TO START TEST >>>' LVERIFY WORD $-VERIFY*2 SPACE 1 NAM TSTRT,LTSTRT TSTRT BYTE :0D,:0A,:0A,'BOARD-U TITL SCOUT HARDWARE FUNCTIONAL TEST SYSTEM TITL TEST EXECUTIVE BAR BAR * * SCOUT HARDWARE FUNCTIONAL TEST (HFT) SYSTEM * * COPYRIGHT 1980, COMPUTER AUTOMATION, INC. * BAR BAR * * THIS IS THE FIRST MODULE OF THE ROMMABLE *  HFT DIAGNOSTIC PACKAGE * BAR SPACE 3 ROM REL 0 NAM HFT:EXC EXTR O:MSG EXTR  O:IO EXTR FLUSH EXTR YES:NO EXTR RTCSERV TITL TEST EXECUTIVE - M:DIAG:I INITIALIZATION BAR * * SET UP THE ENVIRONMENT FOR A SINGLE 'BUT' * INTERACTIVE SYSTEM TEST * BAR EXTR ENDMSG EXTR ENDTABL  EXTR BRDPRMT,LBRDPRMT EXTR CNTPRMT,LCNTPRMT EXTR DSHPRMT,LDSHPRMT EXTR SIGNOFF,LSIGNOFF EXTR AIDS,LAIDS EXTR ERRHLT,LERRHLT EXTR ERRLOOP,LERRLOOP EXTR ALRMBEL,LALRMBEL EXTR XTEND,LXTEND EXTR SINGLE,LSINGLE DEFINE EXCINIT BRDTYPE RES 1 DASHNUM  RES 1 DIALOG RES 1 JMPVCTR RES 1 FNDFLAG RES 1 LSIGNON RES 1 ENDEF * * HFT:EXEC EQUATES JSKINEXT EQU :FF80 JSK *$+1 INSTRUCTION SPACE 1 HFT:EXC EQU $ EXCINIT EQU $ * SET UP SYSTEM RESOURCES COPY =:40,A  COPY A,S INITIALIZE PROCESSOR STATUS COPY =:FFF,A COPY A,K STACK STARTS AT TOP OF RAM (4K) COPY =:440,A COPY A,Y Y-SCRATCHPAD ADD =SCRATCH,A COPY A,L   STACK LIMIT/Y-SCRATCH ABOVE INTR. VECS. & IO BUF SPACE 1 * CLEAR THE 'BUT' STATUS REGISTERS COPY =0,A COPY =:20,X START OF STATUS REGISTER AREA COPY =-16,Q 16 POSSIBLE 'BUT'S EXC1000 COPY A,0(X) CLEAR A LOCATION IJNE X,$+1 IJNE Q,EXC1000 REPEAT UNTIL DONE SPACE 1 * INITIALIZE PROGRAM FLAGS COPY =0,A COPY A,DIALOG(Y) FLAG OPERATOR DIALOG AS NOT COMPLETE * I/O SYSTEM INITIALIZATION COPY A,BUFRPTR CLEAR I/O BUFFER CHARACTER POINTER COPY A,TECHFLAG CLEAR THE GLOBAL TECH TEST FLAG * * SET UP THE STANDARD RTC VECTOR COPY =JSKINEXT,Q COPY Q,:92 COPY =RTCSERV,Q COPY Q,:93 SPACE 1 *  SET UP RAM TO CATCH UNEXPECTED INTERRUPTS ***** TO BE ADDED ****** TITL TEST EXECUTIVE - CONFIGURATION SET UP BAR * * QUERY OPERATOR FOR CONFIGURATION OPTIONS - * ADJUST ENVIRONMENT AS REQUIRED * BAR EXC1010 COPY ENDMSG,A FIND OUT WHERE THE SIGNON MESSAGE ENDS SUB =SIGNON,A COMPUTE THE MESSAGE LENGTH SHIFT A,LO,1 . . . IN BYTES COPY A,LSIGNON(Y) CALL O:MSG,=CO,LSIGNON,=SIGNON JNE A,EXC1010 REPEAT ON I/O ERROR COPY =ENDTABL,A SEE HOW BIG THE TABLE IS SUB =JUMPTABL,A CLSN =3,A ONLY 1 TABLE ENTRY (THREE WORDS LONG) ? JMP EXC1022 YES - THEN DON'T INPUT BOARD # COMMENT OTHERWISE PROMPT OPERATOR FOR A BOARD TO TEST EXC1011 JSK GETBRD NOW GO GET A BOARD TO TEST FROM THE OPERATOR SPACE 1 EXC1020 COPY DIALOG(Y),Q JEQ Q,EXC1021 JMP EXC1100 DIALOG ALREADY COMPLETED - JUMP AROUND IT SPACE 1 EXC1022 COPY =JUMPTABL,X ONLY 1 JUMP ENTRY, SO . . . COPY 2(X),A . . . GET IT'S ENTRY VECTOR COPY A,JMPVCTR(Y) JMP EXC1020 . . . AND GO DIRECTLY TO THE DIALOG SPACE 1 EXC1021 EQU $ TITL * DIAGNOSTIC AID DIALOG * SET FLAGS IN MODE REGISTER - DEFAULT 'BUT' COUNT = 1 EXC1030 COPY =1,A DEFAULT 'BUT' COUNT = 1  COPY A,DIALOG(Y) NOW FLAG DIALOG AS COMPLETE SBIT MODEFLAG,A DEFAULTS TO: INTERACTIVE COMMENT .  NO LOOP ON ERROR COMMENT . NO HALT ON ERROR COMMENT . NO ALARM BELL ON ERROR SBIT MSGFLAG,A . OUTPUT MESSAGES SBIT REPTFLAG,A . SINGLE PASS THROUGH TEST  COPY A,MODEREG CALL O:MSG,=CO,LAIDS,=AIDS CALL YES:NO JNE A,EXC1030A JMP EXC1040 DIALOG ESCAPE EXC1030A CLSN =:03,A JMP EXC1030 RESPONSE INVALID - REPEAT QUESTION  SPACE 1 CLSN =:02,A JMP EXC1100 START TESTING - DIALOG NOT WANTED TITL * CONTINUE DIALOG WITH SPECIFIC QUESTIONS EXC1035 CALL O:MSG,=CO,LCNTPRMT,=CNTPRMT COPY =0,X COPY =0,Q INITIALIZE COUNT ACCUMULATORS SPACE 1 EXC1035L CALL O:IO,=CI CLSN =0,A I/O ERROR ? JMP EXC1035A . NO COPY =1,Q . YES, ASSUME COUNT = 1 JMP EXC1035E SPACE 1 EXC1035A SHIFT A,RO,8 ALIGN CHARACTER CLSN ='/',A JMP EXC1040 ESCAPE FROM DIALOG CLSN  =:0D,A CARRIAGE RETURN ? JMP EXC1035E GOT THE COUNT - GO ON ! SPACE 1 SUB ='0',A  ASCII TO BINARY CONVERSION JLT A,EXC1035R INPUT ERROR - INVALID CHARACTER CSK A,=10 JMP EXC1035B VALID DIGIT ENTERED NOP JMP EXC1035R INPUT ERROR - INVALID CHARACTER SPACE 1 EXC1035B COPY X,Q ADD A,Q ADD NEW DIGIT TO PREVIOUS ACCUMULATOR AND =:F,Q TRUNCATE TO 4 BITS COPY A,X COPY =0,A MULTIPLICATION SET UP MUL C:10,AX MULTIPLY NEW DIGIT BY 10 JMP EXC1035L GET NEXT CHARACTER C:10 WORD 10 DATA CONSTANT SPACE 1 EXC1035R CALL FLUSH,=:0D,=CI FLUSH INPUT BUFFER JMP EXC1035 RE-ISSUE PROMPT SPACE 1 EXC1035E CLSN =0,Q  IS COUNT = 0 ? COPY =1,Q IF SO, THEN DEFAULT TO 1 SBIT MODEFLAG,Q SET INTERACTIVE MODE FLAG SPACE 1 EXC1031 CALL O:MSG,=CO,LERRHLT,=ERRHLT CALL YES:NO JNE A,EXC1031A JMP  EXC1040 DIALOG ESCAPE EXC1031A CLSN =:03,A JMP EXC1031 RESPONSE INVALID SPACE 1 CLSN =:01,A ANSWER = YES ? SBIT ACTNFLG2,Q . SET ACTION-FLAG-2 SPACE 1 EXC1032 CALL O:MSG,=CO,LERRLOOP,=ERRLOOP CALL YES:NO JNE A,EXC1032A JMP EXC1040 DIALOG ESCAPE EXC1032A CLSN =:03,A JMP EXC1032 RESPONSE INVALID SPACE 1 CLSN =:01,A ANSWER = YES ? SBIT ACTNFLG1,Q . SET ACTION-FLAG-1 SPACE 1 EXC1033 CALL O:MSG,=CO,LALRMBEL,=ALRMBEL CALL YES:NO  CLSN =0,A JMP EXC1040 DIALOG ESCAPE CLSN =:03,A JMP EXC1033 RESPONSE INVALID SPACE 1 CLSN =:01,A ANSWER = YES ? SBIT ALRMFLAG,Q . SET ALARM-FLAG SPACE 1 EXC1034 CALL O:MSG,=CO,LXTEND,=XTEND CALL YES:NO JEQ A,EXC1040 DIALOG ESCAPE CLSN =:03,A JMP EXC1034 RESPONSE INVALID SPACE 1 CLSN =:01,A ANSWER = YES ? SBIT MSGFLAG,Q . SET EXTENDED-MESSAGE-FLAG SPACE 1 EXC1036 CALL O:MSG,=CO,LSINGLE,=SINGLE CALL YES:NO JEQ A,EXC1040 DIALOG ESCAPE CLSN =:03,A JMP EXC1036 RESPONSE INVALID SPACE 1 CLSN =:02,A ANSWER = NO ? SBIT REPTFLAG,Q SET THE REPEAT-FLAG SPACE 1 COPY  Q,MODEREG STORE MODE REGISTER SETTINGS * NOW GO ON TO THE ACTUAL TESTING JMP EXC1100 TITL * DIALOG ESCAPE INTERPRETER EXC1040 EQU $ CALL O:IO,=CI SHIFT A,RO,8 ALIGN CHARACTER COPY A,Q SAVE THE ESCAPE CHARACTER CLSN =:0D,A WAS THERE AN ESCAPE CHARACTER JMP EXC1041 NO. FALL THROUGH TO THE DEFAULT CASE THEN CALL FLUSH,=:0D,=CI EXC1041 CLSN ='Q',Q ESCAPE TO DIALOG ? JMP EXC1030 CLSN ='S',Q ESCAPE TO RESTART THE PROGRAM NOP FALL THROUGH TO DEFAUL T SPACE 1 * DEFAULT ESCAPE - IN CASE OF ERRONEOUS ESCAPE CHARACTER COPY =0,Q COPY Q,DIALOG(Y) RESET DIALOG-COMPLETE FLAG JMP EXC1010 RESTART PROGRAM TITL CALL REQUESTED BOARD-LEVEL TEST MODULE * CALL REQUESTED BOARD TEST MONITOR EXC1100 COPY JMPVCTR(Y),X JNE X,EXC1101 CHECK FOR INVALID JUMP ADDRESS ( :0 ) JMP EXC1011 THIS SHOULD TRAP UNEXPECTED PROGRAM SCREWUPS EXC1101 CALL O:IO,=CO,=:0C START WITH A CLEAN SCREEN COPY =0,A CLKDLY 4,1 DELAY FOR THE CRT TO CLEAR SCREEN CALL 0(X) NOW GO DO SOME TESTING * * GENERATE TEST SUMMARY MESSAGE EXC1050 EQU $ * * EXC1060 COPY MODEREG,Q TBIT REPTFLAG,Q TEST THE REPEAT FLAG JT OV,EXC1061 FLAG=1 --> END TEST JMP EXC1100 FLAG=0 --> REPEAT TEST TITL * TERMINATION OF TEST EXC1061 CALL O:MSG,=CO,LSIGNOFF,=SIGNOFF IDLE JT SS,IDLE WAIT FOR HIM TO TOGGLE SENSE SWITCH COPY =0,A INITIALIZE WAIT COUNTERS COPY =-2,Q IDLEMORE JT SS,BREAK TOGGLED BACK ON ? IJNE A,IDLEMORE IJNE Q,IDLEMORE SPACE 1 COPY =1,A OUT A,0 TURN SS BACK ON . . . JMP HFT:EXC . . . AND RESTART TEST SPACE 1 BREAK BRKPT OTHERWISE GO TO DEBUG  TITL TEST EXECUTIVE - INPUT BOARD-TO-TEST # SYSDEF GETBRD ENDEF GETBRD ENTRY COPY =0,A COPY A,FNDFLAG(Y) NOT YET FOPUND A GOOD NUMBER COPY A,JMPVCTR(Y) . . . OR A TEST ENTRY VECTOR SPACE 1 GET1010 CALL O:MSG,=CO,LBRDPRMT,=BRDPRMT  JNE A,GET1010 REPEAT ON I/O ERROR SPACE 1 * READ THE BOARD TYPE GET1012 COPY =0,Q COPY Q,BRDTYPE(Y) COPY Q,DASHNUM(Y) INITIALIZATIONS GET1012A CALL O:IO,=CI READ A CHARACTER CLSN =0,A CHECK FOR INPUT ERROR JMP GET1013 CONTINUE SPACE 1 * ERROR ROUTINE COPY =4,Q  DEFAULT TO CPU TEST COPY Q,BRDTYPE(Y) JMP GET1016 AND A NULL DASH NUMBER SPACE 1 GET1013 SHIFT A,RO,8 ALIGN CHARACTER CLSN ='-',A JMP GET1021 PROCESS DASH NUMBER  CLSN =:0D,A JMP GET1016 GOT BOARD TYPE WITH NULL DASH NUMBER CSK A,='0' IS A<0  JMP GET1015 NOP CSK A,='9' OR A>9 JMP GET1014 GET1015 JMP GET1011A THEN INPUT RANGE ERROR, REPEAT PROMPT GET1014 COPY A,X SAVE THE CHARACTER READ LAST COPY =0,A COPY =10,Q MUL BRDTYPE(Y),AQ MULTIPLY BOARD TYPE CODE BY 10 SUB ='0',X ADD  X,Q ADD THE NEXT DIGIT TO THE CODE COPY Q,BRDTYPE(Y) JMP GET1012A SPACE 1 * INPUT RANGE ERROR GET1011A CALL FLUSH,=:0D,=CI JMP GET1010 FLUSH INPUT BUFFER - RE-ISSUE PROMPT SPACE 1 GET1016 COPY =-1,Q COPY Q,DASHNUM(Y) STUFF A FLAG FOR A NULL DASH NUMBER JMP GET2000 FINISHED HERE ! * PROCESS DASH NUMBER GET1020  CALL FLUSH,=:0D,=CI GET1020A EQU $ ISSUE DASH NUMBER PROMPT CALL O:MSG,=CO,LDSHPRMT,=DSHPRMT  JNE A,GET1020E GO BACK AND GET A PROPER DASH NUMBER SPACE 1 GET1021 EQU $ COPY =0,Q   COPY Q,DASHNUM(Y) MAKE SURE THAT THE DASHNUM IS CLEAR AT FIRST GET1021A CALL O:IO,=CI CLSN =0,A JMP GET1022 SPACE 1 * ERROR ROUTINE GET1020E COPY =0,Q DEFAULT TO '-00' COPY Q,DASHNUM(Y)  JMP GET2000 AND TRY TO CONTINUE GET1022E CALL FLUSH,=:0D,=CI JMP GET1020 SPACE 1 GET1022 SHIFT A,RO,8 ALIGN CHARACTER CLSN ='-',A A DASH PRECEDING THE NUMBER ? JMP GET1021 INTO THE BIT BUCKET - GET ANOTHER CLSN =:0D,A A RETURN ? JMP GET2000 NOW I GOT THE DASH NUMBER  CSK A,='0' JMP GET1024 NOP CSK A,='9' JMP GET1023 GET1024 JMP  GET1022E THEN INPUT RANGE ERROR, RE-ISSUE PROMPT SPACE 1 GET1023 COPY A,X COPY =0,A COPY  =10,Q MUL DASHNUM(Y),AQ SUB ='0',X ADD X,Q COPY Q,DASHNUM(Y) COMPUTED DASH NUMBER SAME AS FOR BRD TYPE JMP GET1021A GET NEXT INPUT CHARACTER SPACE 1 GET2000 COPY =0,Q INITIALIZE FOR USE AS A TABLE INDEX COPY =JUMPTABL,X GET BASE ADDR OF THE TABLE SPACE 1 GET2010 XNX Q COPY 0(X),A GET THE NEXT BOARD NUMBER IN THE TABLE JEQ A,GET2030 AT END OF TABLE ! SUB BRDTYPE(Y),A COMPARE TABLE ENTRY WITH REQUESTED BRD NUMBER JNE A,GET2020 IF NOT EQUAL, THEN GET NEXT ENTRY SPACE 1 COPY =1,A COPY A,FNDFLAG(Y) SET THE FLAG TRUE XNX Q COPY 1(X),A NOW CHECK FOR A DASH NUMBER MATCH CLSN =:FF,A :FF INDICATES NO DASH NUMBER REQUIRED JMP GET2015 SUB DASHNUM(Y),A NOW COMPARE WITH OPERATOR INPUT JNE A,GET2020 IF NOT EQUAL, THEN GET NEXT ENTRY SPACE 1 GET2015 XNX Q COPY 2(X),A FOUND BOARD TYPE, GET THE TEST ENTRY VECTOR COPY A,JMPVCTR(Y) JMP GETEND FINISHED PROCESSING THIS INPUT - GO EXIT SPACE 1 GET2020 ADD =3,Q BUMP INDEX TO NEXT ROW IN TABLE JMP GET2010 AND MAKE ANOTHER PASS THRU LOOP SPACE 1 GET2030 COPY FNDFLAG(Y),A JEQ A,GET2031 JMP GET1020A IF FLAG TRUE, RE-ISSUE DASH-PROMPT GET2031 JMP GET1010 ELSE, REPEAT ENTIRE INPUT PROCESS SPACE 1 GETEND POP RSK TITL SIGN-ON MESSAGE & JUMP TABLE INITIALIZATION JUMPTABL REL JUMPTABL EQU $ SPACE 2 MESSAGE REL SIGNON BYTE :0D,:0C,'SCOUT NM4/04 BYTE :0D,:0A,'HARDWARE FUNCTIONAL TEST SYSTEM' REVISION BYTE '(A300)' BYTE :0D,:0A BYTE '************************************************************' BYTE :0D,:0A,:00,:0A BYTE 'CONFIGURATION APPLICABLE FOR THE FOLLOWING BOARDS:' WORD :0D0A END HFT:EXC E DASH-PROMPT GET2031 JMP GET1010 ELSE, REPEAT ENTIRE INPUT PROCESS SPACE 1 GETEND POP RSK TITL SIGN-ON MESSAGE & JUMP TABLE INITIALIZATION JUMPTABL REL JUMPTABL EQU $ SP1PAGE 0001 MACRO (F100) SCOUT HARDWARE FUNCTIONAL TEST SYSTEM 1981/07/17 11:48:46.50 MACRO DEFINITIONS SI = DM01.HFT.MAC  SO = DM01.HFT.OBJ LO = DM01.HFT.LST 0003 XMACRO BAR 0004 ************************************************************ 0005 ENDM 0006 ************************************************************ 0007 * 0008 * COPYRIGHT 1979, COMPUTER AUTOMATION, INC   0009 * ALL RIGHTS RESERVED 0010 * 0011 ************************************************************ 0012 ************************************************************ 1PAGE 0002 MACRO (F100) SCOUT HARDWARE FUNCTIONAL TEST SYSTEM 1981/07/17 11:48:46.75 MACRO DEFINITIONS 0014 ************************************************************ 0015 * 0016 * MACRO JLPOOL - GENERATE AN LPOOL WITH A JUMP AROUND IT 0017 * 0018 ************************************************************ 0019 XMACRO JLPOOL 0020 JMP !LPL: JUMP AROUND LPOOL 0021 LPOOL 0022 !LPL: EQU $ 0023 ENDM  0025 ************************************************************ 0026 *  0027 * MACRO BRKPT - GENERATE A DEBUG DUMMY BREAKPOINT 0028 * 0029 ************************************************************ 0030 MACRO BRKPT 0031 JST *0 0032 ENDM 0033 ************************************************************ 0034 * 0035 * MACROS DEFINE, RESERVE & ENDEF - 0036 * USED TO DEFINE THE Y-SCRATCHPAD AREA OF A SUBROUTINE 0037 * CALLING SYNTAX: 0038 *  DEFINE LABEL<,LABEL> . . . 0039 * OPERAND #1 - SUBROUTINE BEING DEFINED  0040 * OPERANDS #2 - #8 - OPTIONAL SUBROUTINE PARAMETERS 0041 * 0042 ************************************************************ 0043 MACRO DEFINE 0044  OPTIONS +:4 0045 BRD:: SET FALSE 0046 IFT #(?)>1  0047 #(2) EQU A 0048 ENDC 0049 LPOOL 0050  TESTENTR REL 0051 NAM #(1): 0052 #(1): JSK #1 1PAGE 0003 MACRO (F100) SCOUT HARDWARE FUNCTIONAL TEST SYSTEM 1981/07/17 11:48:48.25 MACRO DEFINITIONS 0053 COPY L,Y 0054 JMP $-2 0055 ABS 0 0056 RES  1 RESERVE A LOCATION FOR CALLER SCRATCH PTR 0057 DEF: SET #(?)-1 0058 IFT DEF:>1 0059 RESERVE #3,#4,#5,#6,#7,#8,#9,#10 RESERVE SPACE FOR PASSED PARMAMETERS 0060 ENDC 0061 ENTRSIZ SET 4 0062 ARGS: SET $-1 0063 OPTIONS -:4 0064 ENDM 0066 MACRO RESERVE 0067 RES: SET $ 0068 #(RES:) RES 1 0069   IFT $1 0090 #(2) EQU A 0091 ENDC 0092 LPOOL 0093 BRDENTR REL 0094 NAM #(1):  0095 #(1): JMP *$+1 0096 WORD #(1)Z 0097 NOP  0098 NOP 0099 ABS 0 0100 RES 1  RESERVE A LOCATION FOR THE CALLER SCRATCH PTR 0101 DEF: SET #(?)-1 0102  IFT DEF:>1 0103 RESERVE #3,#4,#5,#6,#7,#8,#9,#10 RESERVE SPACE FOR PASSED PARAMETERS  0104 ENDC 0105 ARGS: SET $-1 0106 OPTIONS -:4  0107 ENDM 1PAGE 0005 MACRO (F100) SCOUT HARDWARE FUNCTIONAL TEST SYSTEM 1981/07/17 11:48:50.00 MACRO DEFINITIONS 0109 ************************************************************ 0110 *  0111 * MACRO SYSDEF - SUBSTITUTE FOR THE DEFINE MACRO, 0112 * USED TO DEFINE THE SYSTEM ROUTINES 0113 * 0114 ************************************************************  0115 MACRO SYSDEF 0116 OPTIONS +:4 0117 BRD:: SET FALSE 0118 IFT #(?)>1 0119 #(2) EQU A 0120 ENDC 0121 LPOOL 0122 ABS 0 0123 RES 1  RESERVE A LOCATION FOR THH CALLER SCRATCH PTR 0124 DEF: SET #(?)-1 0125  IFT DEF:>1 0126 RESERVE #3,#4,#5,#6,#7,#8,#9,#10 RESERVE SPACE FOR PASSED PARAMETERS  0127 ENDC 0128 ARGS: SET $-1 0129 OPTIONS -:4  0130 ENDM 1PAGE 0006 MACRO (F100) SCOUT HARDWARE FUNCTIONAL TEST SYSTEM 1981/07/17 11:48:50.75 MACR  O DEFINITIONS 0132 ************************************************************ 0133 *  0134 * MACRO ENTRY - GENERATES CODE FOR A SUBROUTINE ENTRY 0135 * CALLING SYNTAX: 0136 *