*DECK,MY8 
* 
*** MY8 - BUFFER CONTROLLER MEMORY TEST - 
*** MY8 OVERVIEW
**
*   AUTHOR   - J.E. SIPPER
*              MAINTENANCE SOFTWARE ENGINEERING 
*              ENGINEERING SERVICES 
* 
*   DATE     - 78/02/20 
* 
*   OVERVIEW -
* 
*         MY8  IS  A  MALET VERSION OF THE OFF-LINE MY8 TEST
*         THAT NORMALLY EXECUTES UNDER SMM OR FROM THE  BCMC
*         TESTER.   MY8  IS  DESIGNED  TO EXECUTE ON THE 66X
*         TAPE CONTROLLERS (7021) AND 844  DISK  CONTROLLERS
*         (7054/7154).   ITS  PRIMARY  FUNCTION IS TO VERIFY
*         THAT THE BC MEMORY IS OPERATIONAL.
* 
*         MALET MY8 IS COMPOSED OF TWO PARTS  -  THE  MODULE
*         CODE EXECUTED BY THE PPU AND THE BUFFER CONTROLLER
*         CODE EXECUTED BY THE BC.  PRIOR TO EXECUTING  MY8,
*         THE USER MUST INSURE THAT THE TWO PARTS OF MY8 ARE
*         ON LOCAL FILES SO THEY MAY BE READ  BY  THE  MALET
*         EXECUTIVE.  NORMALLY BOTH PARTS OF MY8 WOULD BE ON
*         SEPERATE PERMANENT FILES, INITIALLY OBTAINED  FROM
*         THE  CML  (CONCURRENT  MAINTENANCE  LIBRARY) TAPE.
*         (MODULE CODE IS WITHIN FILE 1 UNDER THE DECK  NAME
*         OF MY8 AND THE BC CODE IS ALL OF FILE 2 ON THE CML
*         TAPE). ASSUMING THAT THE PPU CODES  RESIDES  ON  A
*         PERMANENT  FILE,  MY8,  AND THE BC CODE RESIDES ON
*         MY8BC, THE FOLLOWING CONTROL CARDS WOULD  BE  USED
*         TO EXECUTE MY8. 
* 
*            ATTACH(MY8)            RFILE WITH MY8
*            ATTACH(MY8BC)          BC PORTION OF MY8 
*            ATTACH,CWFILE.         CONTROLWARE FILE
*            MALET(R=MY8,S=MY8BC) 
* 
*         NOTE-  SINCE THE I/O CHANNEL REMAINS ACTIVE DURING
*                THE TOTAL DOWN-LOAD OPERATION  WITH  INTER-
*                MIXED   READS  OF  THE  SCRATCH  FILE,  THE
*                SCRATCH FILE CANNOT  BE  ON  THE  SAME  I/O
*                CHANNEL  AS  THE  BC  UNDER  TEST. ONCE MY8
*                COMPLETES EXECUTION, THE USER MUST  INSTALL
*                THE PROPER OPERATING CONTROLWARE BEFORE THE
*                DEVICE CAN BE USED BY THE SYSTEM.
* 
*                MY803 CAN BE USED  TO  DOWNLOAD CONTROLWARE
*                AFTER RUNNING MY802. 
* 
*         THE MALET VERSION OF MY8 HAS NOT CHANGED THE  CODE
*         THAT EXECUTES IN THE BUFFER CONTROLLER, NOR HAS IT
*         CHANGED  THE  COMMUNICATIONS  TECHNIQUE   USED  TO
*         CONTROL  THE  DIAGNOSTIC WHILE IT IS IN EXECUTION.
*         IF THE USER REQUIRES THE SOURCE  CODE  OF  THE  BC
*         CODE,  HE CAN USE THE OFF-LINE VERSION WHICH IS ON
*         MICROFICHE,  PART  NUMBER   12340365C.   FRONT-END
*         CHANGES  HAVE  BEEN  MADE.   THIS INCLUDES A SHORT
*         LOOP-BACK PROGRAM THAT ATTEMPTS TO VERIFY THAT THE
*         COUPLER  PATH  TO  THE  BC  IS FUNCTIONAL PRIOR TO
*         USING IT TO DOWNLOAD THE MY8 CODE.
*** MY8 MODULES 
* 
**
*   1.0   MODULES 
* 
*         MY8 IS COMPOSED OF FOUR MODULES. MY800 PERFORMS  A
*         LOOP-BACK  TEST  ON  THE  COUPLER  IN  WORD MODE -
*         SINGLE WORD TRANSFERS BY THE PPU WITH FULL CHANNEL
*         PROTECTION  FROM  HANGS  (ALL I/O PERFORMED BY MY8
*         USES THIS TECHNIQUE). 
* 
*         MY801 THEN READS THE BUFFER  CONTROLLER  MY8  CODE
*         FROM  THE  SCRATCH  FILE  ASSIGNED BY THE USER AND
*         DOWNLOADS IT TO THE BUFFER CONTROLLER.  CHECKS ARE
*         MADE  TO  INSURE  THAT  THE  DATA CONTAINED ON THE
*         SCRATCH FILE IS OF  THE  PROPER  LENGTH  PRIOR  TO
*         DOWNLOADING IT. 
* 
*         MY802 THEN COMMUNICATES WITH THE BUFFER CONTROLLER
*         AND PRESENTS A DISPLAY OF CURRENT INFORMATION FROM
*         THE  BC  ON  THE  PPU  DISPLAY IN HEXIDECIMAL.  10
*         DECIMAL PASSES OF MY8  ARE  EXECUTED.   SHOULD  AN
*         ERROR  BE  DETECTED, STATUS CONCERNING THE FAILURE
*         IS DISPLAYED AND A PICTURE TAKEN. 
* 
*         MY803 READS THE CONTROLWARE FILE FROM THE  SCRATCH
*         FILE ASSIGNED BY THE USER.  IF  A  CORRECT SCRATCH
*         FILE HAS BEEN ASSIGNED,  THE CONTROLWARE  IS  THEN
*         DOWNLOADED TO  THE  BUFFER CONTROLLER.  CHECKS ARE
*         MADE TO  INSURE THAT THE  DATA  CONTAINED  IN  THE
*         SCRATCH FILE  IS  THE  CORRECT LENGTH BEFORE IT IS
*         DOWNLOADED. 
* 
*         MY899 IS A DOCUMENTATION MODULE THAT  IS  PROVIDED
*         TO  ASSIST  THE USER IN USING MY8.  THE MODULE MAY
*         BE DISPLAYED ON THE SYSTEM CONSOLE K OR L  DISPLAY
*         AND/OR A PICTURE OF IT SENT TO THE OUTPUT FILE. 
* 
*** MY8 PARAMETERS AND MESSAGES 
* 
**
*   2.0   PARAMETERS
* 
*         MY8 IS NOT PARAMETER DRIVEN AND DOES NOT USE ANY OF 
*         THE MALET PARAMETER REGISTERS P0 - P9.
* 
*   3.0   MESSAGES
* 
*         THE FOLLOWING ERROR MESSAGES ARE REPORTED BY MY8. 
* 
*           MY800 - ABORT ON .FUNC 414. COMMAND - 
* 
*           MY800 - ABORT ON .OUT. COMMAND -
* 
*           MY800 - ABORT ON .FUNC 1. COMMAND - 
* 
*           MY800 - ABORT ON .IN. COMMAND - 
* 
*           MY800 - DATA COMPARE ERROR
*                   WORD=*OCT  EXP=*OCT  ACT=*OCT DIFF=*OCT 
* 
*           MY800 - ALL WORDS NOT OUTPUT. EXP=0040 ACT=*OCT 
* 
*           MY800 - ALL WORDS NOT INPUT.  EXP=0040 ACT=*OCT 
* 
*           MY801 - ABORT ON .FUNC. COMMAND - 
* 
*           MY801 - ABORT ON .OUT CHAIN. COMMAND -
* 
*           MY801 - ABORT ON .OUT. COMMAND -
* 
*           MY801 - ABORT ON .DCN. COMMAND -
* 
*           ABORT - SCRATCH FILE EMPTY - EOR/EOI FIRST READ 
* 
*           ABORT - SCRATCH FILE IS NOT MY8 - TOO BIG 
* 
*           ABORT - SCRATCH FILE IS NOT MY8 - TOO SMALL 
* 
*           ABORT - SCRATCH FILE IS NOT MY8 - BAD DATA
* 
*           MY802 - ABORT ON .IN. COMMAND - 
* 
*           MY802 - ABORT ON .OUT. COMMAND -
* 
*           MY803 - ABORT ON .FUNC. COMMAND - 
* 
*           MY803 - ABORT ON .OUT CHAIN. COMMAND -
* 
*           MY803 - ABORT ON .OUT. COMMAND -
* 
*           MY803 - ABORT ON .DCN. COMMAND -
* 
*           ABORT - SCRATCH FILE EMPTY - EOR/EOI FIRST READ 
* 
*           ABORT - SCRATCH FILE IS NOT CONTROLWARE - TOO BIG 
* 
*           ABORT - SCRATCH FILE IS NOT CONTROLWARE - TOO SMALL 
* 
*           ABORT - SCRATCH FILE IS NOT CONTROLWARE - BAD DATA
* 
*** 
**
* 
*         THE FOLLOWING DISPLAY IS PRESENTED BY MY802 WHILE 
*         IT IS IN EXECUTION. 
* 
*                   MY8 FUNCTION TABLE
* 
*            0-3 =  *H*H  *H*H  *H*H  *H*H
*            4-7 =  *H*H  *H*H  *H*H  *H*H
*            8-B =  *H*H  *H*H  *H*H  *H*H
*            C-F =  *H*H  *H*H  *H*H  *H*H
*              MY8 PASS=*DEC SECTION=*DEC 
* 
*         IF AN ERROR IS DETECTED, THE DISPLAY IS UPDATED AS
*         FOLLOWS AND A PICTURE OF THE ERROR IS SENT TO THE 
*         OUTPUT FILE.
* 
*                   MY8 FUNCTION TABLE
* 
*            0-3 =  *H*H  *H*H  *H*H  *H*H
*            4-7 =  *H*H  *H*H  *H*H  *H*H
*            8-B =  *H*H  *H*H  *H*H  *H*H
*            C-F =  *H*H  *H*H  *H*H  *H*H
*              MY8 PASS=*DEC SECTION=*DEC 
*              ADDRESS OF ERROR (A) = *H*H
*              ACTUAL DATA     (B1) = *H*H
*              EXPECTED DATA   (B2) = *H*H
*              ERROR STOP CODE      = *H*H
*              ERROR COUNT = *DEC 
* 
* 
*         THE FOLLOWING ERROR MESSAGES MAY  BE  REPORTED  BY
*         THE  LOW  LEVEL  PRODUCT  OVERLAY  IF I/O FAILURES
*         OCCUR.
* 
*             ER4020  CH ACTIVE ON ENTRY
* 
*             ER4021  CH INACTIVE AFTER ACN 
* 
*             ER4022  CH ACTIVE AFTER DCN 
* 
*             ER4024  NO INACTIVE ON EQUIP FUNC 
* 
*             ER4026  NO EMPTY ON LAST BYTE OUTPUT
* 
*             ER4027  CH INACTIVE ON CHAINING 
* 
*             ER4030  CH ACTIVE AND EMPTY ON INPUT
* 
*             ER4032  CH ACTIVE AND FULL ON OUTPUT
* 
*** MY8 ABBREVIATIONS 
* 
**
* 
*     4.0   ABBREVIATIONS 
* 
*           THE FOLLOWING ABBREVIATIONS ARE USED WITHIN MY8 
*           DOCUMENTATION.
* 
*             ACT    - ACTUAL 
*             BC     - BUFFER CONTROLLER
*             BCMC   - BUFFER CONTROLLER MAINTENANCE CONSOLE
*             CH     - CHANNEL
*             CML    - CONCURRENT MAINTENANCE LIBRARY 
*             COND   - CONDITION
*             DIFF   - DIFFERENCE 
*             EOR/EOI- END OF RECORD/END OF INFORMATION 
*             FCN    - FUNCTION 
*             EXP    - EXPECTED 
*             I/O    - INPUT/OUTPUT 
*             PPU    - PERIPHERAL PROCESSING UNIT 
*             SMM    - SYSTEM MAINTENANCE MONITOR 
*             WC     - WORD COUNT 
*             *DEC   - DECIMAL DISPLAY OF DATA
*             *H     - HEXIDECIMAL DISPLAY OF DATA
* 
* 
   MODULE MY800,BC(02,03,04,05,42,52)   - VERIFY COUPLER
*** MY800 - VERIFY COUPLER DATA PATH - WORD MODE
* 
**  MY800 - EXTERNAL DOCUMENTATION
*   OVERVIEW -
* 
*         MY800  VERIFIES  THAT  THE COUPLER AND BC ARE BOTH
*         OPERATIONAL TO A POINT WHERE A  SHORT  BC  PROGRAM
*         CAN  BE DOWNLOADED INTO THE BC AND EXECUTED BY THE
*         BC.   THE  BC  PROGRAM  DOWNLOADED   MONITORS  THE
*         COUPLER  FOR  A  FUNCTION  FROM  THE PPU.  WHEN IT
*         DETECTS ANY FUNCTION, IT  SENDS  AN  INACTIVE  AND
*         WAITS FOR *COUPLER READY*, INDICATING THAT THE PPU
*         HAS INITIATED  AN  INPUT.   THE  BC  PROGRAM  THEN
*         OUTPUTS  ITSELF  TO  THE  PPU  WHERE  THE  DATA IS
*         COMPARED WITH THE DATA DOWNLOADED TO  INSURE  THAT
*         THE COUPLER/BC ARE NOT PICKING OR DROPPING BITS.
* 
*         THE FOLLOWING PROGRAM IS SENT TO THE BC.
* 
*            0000 - 
*            0900 - WAIT CH0 BIT 0 (FUNCTION)                            MY8001J
*            EF01 - 
*            1801 - 
*            0F00 -  OUTPUT 01 FORMAT ON CH0
*            0A00 -  SEND FUNCTION REPLY BIT 0 ON CH0 
*            0B00 - 
*            0906 -  WAIT BIT 6 OF CH0 (COUPLER READY)
*            EF01 - 
*            1610 -  A= COMPLEMENT OF WORD COUNT
*            F800 -  OUTPUT THIS PROGRAM TO PPU 
*            BB00 -  HANG 
*            FF00 -  DATA TEST PATTERNS 
*            FFFF - 
*            AA55 - 
*            AA55 - 
* 
*         DATA TRANSFERS PERFORMED BY THE  PPU  TO/FROM  THE
*         BUFFER  CONTROLLER  ARE DONE ONE WORD AT A TIME TO
*         INSURE FULL CHANNEL PROTECTION FROM A HANG AND  TO
*         VERIFY  THAT SLOW-SPEED TRANSFERS CAN BE COMPLETED
*         SUCCESSFULLY. 
* 
*         IF MY800 CANNOT SUCCESSFULLY COMPLETE THE AUTOLOAD
*         FUNCTION  OR  THE  OUTPUT  OF  THE  BC  PROGRAM, A
*         SCOPING LOOP CAN BE CREATED BY CLEARING THE  MALET
*         STOP-ON-ERROR   SWITCH   AND  SETTING  THE  REPEAT
*         CONDITION OR REPEAT MODULE  SWITCH.   THIS  ALLOWS
*         THE  USER TO SCOPE THE PROBLEM TO DETERMINE WHY IT
*         IS FAILING. 
* 
*         IF THE AUTOLOAD AND OUTPUT COMPLETE  SUCCESSFULLY,
*         BUT  MY800  FAILS ON THE FUNCTION 1 ,INPUT OR DATA
*         COMPARE, THE USER SHOULD USE THE BCMC TO  LOOK  AT
*         THE  CONTENTS  OF  BC  MEMORY  TO DETERMINE IF THE
*         PROGRAM THAT WAS DOWNLOADED ACTUALLY GOT TO MEMORY
*         WITHOUT DROPPING OR PICKING BITS. 
* 
*** 
**
* 
* 
*   DESCRIPTION - 
* 
*         1. RESERVE CHANNEL. 
*         2. ISSUE AUTOLOAD FUNCTION. 
*         3. OUTPUT BC PROGRAM TO BUFFER CONTROLLER.
*         4. VERIFY THAT ALL WORDS WERE OUTPUT. 
*         5. WAIT 1 MSEC TO LET BC PROGRAM START RUNNING. 
*         6. ISSUE A FUNCTION OF 1 TO REQUEST THE BC TO 
*            SEND THE PROGRAM DOWNLOADED BACK TO THE PPU. 
*         7. INPUT THE BC PROGRAM FROM THE BC.
*         8. VERIFY THAT ALL WORDS WERE INPUT.
*         9. COMPARE THE DATA READ WITH DATA DOWNLOADED.
*        10. REPEAT STEPS 1-9 INDEFINITELY IF IN A SCOPING
*            LOOP SITUATION.  OTHERWISE REPEAT STEPS 1-9
*            FOR 1000B TIMES AND EXIT.
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. MY800 - ABORT ON .FUNC 414. COMMAND -
*         3. MY800 - ABORT ON .OUT. COMMAND - 
*         4. MY800 - ABORT ON .FUNC 1. COMMAND -
*         5. MY800 - ABORT ON .IN. COMMAND -
* 
*         6. MY800 - DATA COMPARE ERROR 
*                    WORD=*OCT  EXP=*OCT  ACT=*OCT DIFF=*OCT
* 
*         7. MY800 - ALL WORDS NOT OUTPUT. EXP=0040 ACT=*OCT
*         8. MY800 - ALL WORDS NOT INPUT.  EXP=0040 ACT=*OCT
* 
*** MY800 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B1 = PASS COUNT 
*         B2 = LOGICAL DIFFERENCE ON DATA COMPARE 
*         B3 = BUFFER INDEX ON DATA COMPARE 
*         B4 = LINE NUMBER FOR DATA COMPARE DISPLAY 
*         B5 = MSG NUMBER TO REPORT IN CASE OF ERROR
*         B6 = PASS COUNT FOR SCOPING LOOPS 
*         B7 = ERROR COUNTER
*         WC = NUMBER OF WORDS TO COMPARE 
* 
 1 FORMAT MY800 - VERIFY COUPLER PATH - WORD MODE 
 2 FORMAT MY800 - DATA COMPARE ERROR
 3 FORMAT         WORD= *OCT  EXP= *OCT  ACT=*OCT  DIFF=*OCT
 4 FORMAT MY800 - ERRS=*DEC LOOPS=*DEC
 5 FORMAT MY800 - ALL WORDS NOT OUTPUT. EXP=0040 ACT=*OCT 
 6 FORMAT MY800 - ALL WORDS NOT INPUT.  EXP=0040 ACT=*OCT 
 7 FORMAT MY800 ERROR(S) IN MODULE = *DEC 
10 FORMAT MY800 - ABORT ON .FUNC 414. COMMAND - 
11 FORMAT MY800 - ABORT ON .OUT. COMMAND -
12 FORMAT MY800 - ABORT ON .FUNC 1. COMMAND - 
13 FORMAT MY800 - ABORT ON .IN. COMMAND - 
   DATA (OB,H) 0000,0900,EF01,1801,0F00,0A00,0B00,0906                   MY8001J
  ,EF01,1610,F800,BB00,FF00,FFFF,AA55,AA55
20 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   TIMEOUT TYPEB=500D USEC
21 B1 = 0 
   WC = 40
22 RES                       *GET CHANNEL 
   B5 = 10
   FUNC 414, ABT 70          *AUTOLOAD BC 
   B5 = 11
   OUT 40 WORDS FROM OB, ABT 70   *OUTPUT BC PROGRAM TO BC
   B5 = 5 
   IF(WT.NE.40) GOTO 40      *IF ALL WORDS NOT TRANSMITTED
   DELAY 1 MSEC 
   B5 = 12
   FUNC 1, ABT 70            *REQUEST BC TO RETURN PROGRAM
   B5 = 13
   IN 40 WORDS TO IB, ABT 70   *READ PROGRAM FROM BC
   B5 = 6 
   IF(WT.NE.40) GOTO 40      *IF ALL WORDS NOT TRANSMITTED
   B5 = 2 
   COMPARE IB TO OB FOR WC, ABT 40  *COMPARE DATA 
23 B6 = B6+1                        *BUMP PASS COUNT
   IF(ES.AND.SL.EQ.0) GOTO 24       *IF NOT SCOPING 
   MSG 4 (B7,B6) TO DISPLAY 
   GOTO 22                          *EXECUTE SCOPING LOOP 
24 GOTO 22 WHILE (B1+1.NE.1000B)    *REPEAT 1000B TIMES 
   IF(ES.AND.CM.NE.0) GOTO 21  *IF REPEAT COND. OR MODULE 
   IF(B7.NE.0) GOTO 72         *IF MODULE ERRORS
   EXIT 
/ 
/---------IN, OUT AND DATA COMPARE ERROR PROCESSOR
/ 
40 B7 = B7 + 1                *BUMP ERROR COUNTER 
   B3 = 0 
   B4 = 2 
   MSG B5(WT) TO LINE 0       *REPORT  ERROR MSG
41 B2 = OB(B3).XOR.IB(B3) 
   MSG 3(B3, OB(B3), IB(B3), B2) TO LINE B4 
   B4 = B4 + 1                *BUMP DISPLAY LINE NUMBER 
   GOTO 41 WHILE (B3+1.NE.40) 
   WC = 40                    *RESET NUMBER OF WORDS TO TEST
   IF(ES.AND.SL.NE.0)GOTO 23  *IF SCOPING 
   GOTO 71                    *REPORT ERRORS
/ 
/--------ABORT PROCESSOR------------------------- 
/ 
70 B7 = B7 + 1                  *BUMP ERROR COUNTER 
   MSG B5 TO LINE 0             *REPORT ABORT CONDITION 
   MSG EM TO LINE 1             *PRODUCT OVERLAY ERROR MSG
   IF(ES.AND.SL.NE.0) GOTO 23   *IF SCOPING 
71 PICTURE
   HALT 
   BLANK
   MSG 1 TO DISPLAY             *REPOST RUNNING MESSAGE 
   IF(ES.AND.CM.NE.0) GOTO 21 
72 MSG 7(B7) TO DAYFILE 
   END 20 
COMPILE   - MY800 - 
   MODULE MY801,BC(02,03,04,05,42,52)   - DOWNLOAD MY8
*** MY801 - DOWNLOAD MY8
* 
**  MY801 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         THIS  MODULE  REWINDS THE *SCRATCH* FILE, READS IT
*         AND VERIFIES THAT IT CONTAINS MY8.  ERROR MESSAGES
*         ARE  REPORTED AND TESTING TEMINATED IF THE FILE IS
*         EMPTY, TOO BIG, TOO SMALL OR  CONTAINS  THE  WRONG
*         DATA. 
* 
*         THE  MODULE  REWINDS  THE *SCRATCH* FILE, READS IT
*         500 PPU WORDS AT A TIME AND DOWNLOADS  IT  TO  THE
*         BUFFER  CONTROLLER UNDER TEST USING CHAINING WRITE
*         OPERATIONS.  AN ERROR MESSAGE  IS  POSTED  IF  THE
*         *SCRATCH*  FILE  IS EMPTY (EOR/EOI ON FIRST READ).
*         DOWNLOADING IS COMPLETED WHEN A SHORT BLOCK OR END
*         OF  RECORD/INFORMATION IS REACHED ON THE *SCRATCH*
*         FILE. 
* 
*   DESCRIPTION - 
* 
*         1. REWIND SCRATCH.
*         2. READ SCRATCH. ABORT IF EOR/EOI ON FIRST READ.
*         3. READ SCRATCH FILE UNTIL A SHORT BLOCK IS  READ.
*            ABORT  IF  THE  SCRATCH  FILE IS TOO BIG OR TOO
*            SMALL TO BE MY8, OR IF A SPECIFIC DATA WORD  IS
*            IN ERROR.
*         4. REWIND SCRATCH.
*         5. READ SCRATCH.
*         6. POST ERROR MESSAGE AND TERMINATE IF EOR/EOI. 
*         7. RESERVE. 
*         8. FUNCTION 414 (AUTOLOAD). 
*         9. SET WC = WORDS READ FROM SCRATCH.
*        10. COPY INPUT BUFFER TO OUTPUT BUFFER.
*        11. OUTPUT TO BUFFER CONTROLLER WITH CHAINING. 
*        12. READ SCRATCH.
*        13. GO  TO  STEP  9  IF NOT EOR/EOI AND NOT A SHORT
*            BLOCK (LAST OF THE DATA).
*        14. DISCONNECT  THE  CHANNEL  IF  EOR/EOI  OR IF NO
*            WORDS WERE READ FROM SCRATCH.  OTHERWISE,  COPY
*            INPUT  BUFFER  TO  OUTPUT BUFFER AND OUTPUT THE
*            LAST BLOCK TO  THE  BUFFER  CONTROLLER  WITHOUT
*            CHAINING.
*        15. RELEASE. 
*        16. REPEAT MODULE OR EXIT. 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. ABORT - SCRATCH FILE EMPTY - EOR/EOI FIRST READ
*         3. ABORT - SCRATCH FILE IS NOT MY8 - TOO BIG
*         4. ABORT - SCRATCH FILE IS NOT MY8 - TOO SMALL
*         5. ABORT - SCRATCH FILE IS NOT MY8 - BAD DATA 
*         6. MY801 - ABORT ON .FUNC. COMMAND -
*         7. MY801 - ABORT ON .OUT CHAIN. COMMAND - 
*         8. MY801 - ABORT ON .OUT. COMMAND - 
*         9. MY801 - ABORT ON .DCN. COMMAND - 
*** MY801 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = COUNT OF BLOCKS READ FROM SCRATCH FILE 
*         B1 = STATUS ON SYSRD COMMANDS 
*         B5 = ERROR MESSAGE INDEX IN CASE OF ABORT 
*         B6 = PASS COUNT 
*         B7 = ERROR COUNT
* 
  
 1 FORMAT MY801 - DOWNLOAD MY8
 2 FORMAT ABORT - SCRATCH FILE EMPTY - EOR/EOI FIRST READ 
 3 FORMAT MY801 - LOOPS=*DEC  ERRS=*DEC 
 4 FORMAT MY801 ERROR(S) IN MODULE = *DEC 
 5 FORMAT ABORT - SCRATCH FILE IS NOT MY8 - TOO BIG 
 6 FORMAT ABORT - SCRATCH FILE IS NOT MY8 - TOO SMALL 
 7 FORMAT ABORT - SCRATCH FILE IS NOT MY8 - BAD DATA
10 FORMAT MY801 - ABORT ON .FUNC. COMMAND - 
11 FORMAT MY801 - ABORT ON .OUT CHAIN. COMMAND -
12 FORMAT MY801 - ABORT ON .OUT. COMMAND -
13 FORMAT MY801 - ABORT ON .DCN. COMMAND -
20 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
/ 
/--------READ AND VERIFY THAT SCRATCH FILE CONTAINS MY8.
/ 
   SYSREW 
   SYSRD, STATUS TO B1
   IF(B1.EQ.0) GOTO 21       *IF NOT EOR/EOI ON FIRST READ
   MSG 2 TO DISPLAY,PRINT    *POST EOR/EOI ERROR MESSAGE
   GOTO 72                   *TERMINATE TESTING 
21 IF(WT.NE.500) GOTO 24     *IF NOT A FULL BUFFER
   B0 = B0 + 1               *BUMP BUFFERS READ 
   IF(B0.LT.32) GOTO 23      *IF NOT TOO BIG YET
22 MSG 5 TO DISPLAY,PRINT    *POST TOO BIG ERROR MESSAGE
   GOTO 72                   *TERMINATE TESTING 
23 SYSRD, STATUS TO B1
   GOTO 21
/ 
/         A SHORT RECORD HAS BEEN READ.  VERIFY WORD COUNT. 
/ 
24 IF(B0.EQ.31) GOTO 26      *IF NOT TOO SMALL
25 MSG 6 TO DISPLAY,PRINT    *POST TOO SMALL ERROR MESSAGE
   GOTO 72                   *TERMINATE TESTING 
26 IF(WT.EQ.276) GOTO 27     *IF LAST BLOCK CORRECT LENGTH
   IF(WT.LT.276) GOTO 25     *POST TOO SMALL ERROR MESSAGE
   GOTO 22                   *POST TOO BIG ERROR MESSAGE
27 IF(IB(273).EQ.274) GOTO 30  *IF DATA WORD CORRECT
   MSG 7 TO DISPLAY,PRINT    *POST BAD DATA ERROR MESSAGE 
   GOTO 72                   *TERMINATE TESTING 
* 
/--------DOWNLOAD SCRATCH FILE TO BC
* 
30 SYSREW                    *REWIND SCRATCH FILE 
   SYSRD, STATUS TO B1       *READ FIRST RECORD FROM SCRATCH
   IF(B1.EQ.0) GOTO 31       *IF NOT EOR/EOI
   MSG 2 TO DISPLAY,PRINT    *POST EOR/EOI ERROR MESSAGE
   GOTO 72                   *TERMINATE TESTING 
31 RES                       *GET CHANNEL 
   B5 = 10
   WC=WT                                                                 MY8002G
   FUNC 414, ABT 70          *AUTOLOAD BC 
   GOTO 40                                                               MY8002G
32 WC = WT                   *WORDS TO WRITE = WORDS READ 
40 COPY IB TO OB FOR WC      *MOVE INPUT BUFFER TO OUTPUT                MY8002G
   B5 = 11
   OUT CHAIN, ABT 70         *PERFORM CHAINING WRITE TO BC
   SYSRD, STATUS TO B1       *GET NEXT BLOCK FROM SCRATCH 
   IF(B1.EQ.2) GOTO 33       *IF EOI - NO WORDS READ
   IF(WT.EQ.500) GOTO 32     *IF NOT A SHORT BLOCK
   IF(WT.EQ.0) GOTO 33       *IF NO WORDS REMAINING 
   WC = WT
   COPY IB TO OB FOR WC      *MOVE INPUT BUFFER TO OUTPUT 
   B5 = 12
   OUT, ABT 70               *SEND SHORT BLOCK TO BC
   GOTO 34
33 B5 = 13
   DCN, ABT 70               *TERMINATE OUTPUT IF NO WORDS
34 REL                       *RELEASE CHANNEL 
   B6 = B6 + 1               *BUMP SUCCESSFUL PASS COUNT
   IF(ES.AND.SL.EQ.0) GOTO 35  *IF NOT SCOPING
   MSG 3 (B6,B7) TO DISPLAY    *POST SCOPING MESSAGE
   GOTO 30                     *RESTART 
35 IF(ES.AND.CM.NE.0) GOTO 30  *IF REPEAT CONDITION/MODULE
   IF(B7.EQ.0) GOTO 36         *IF NO ERRORS
   MSG 4 (B7) TO DAYFILE       *REPORT ERRORS TO DAYFILE
36 EXIT 
/ 
/--------ABORT PROCESSOR------------------------- 
/ 
70 B7 = B7 + 1                 *BUMP ERROR COUNTER
   IF(ES.AND.SL.EQ.0) GOTO 71  *SCOPE LOOP NOT SELECTED 
   MSG 3 (B6,B7) TO DISPLAY    *ERROR MESSAGE 
   GOTO 30                     *RESTART 
71 MSG B5 TO LINE 0            *REPORT ABORT CONDITION
   MSG EM TO LINE 1            *PRODUCT OVERLAY ERROR MSG 
   PICTURE
   HALT 
   MSG 1 TO DISPLAY            *REPLACE RUNNING MESSAGE 
   GOTO 35                     *REPEAT MODULE OR EXIT 
72 END 20 
COMPILE   - MY801 - 
   MODULE MY802,BC(02,03,04,05,42,52)  - RUN MY8
*** MY802 - RUN MY8 
* 
**  MY802 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         THIS MODULE RUNS MY8 AFTER IT HAS BEEN  DOWNLOADED
*         INTO  THE  BC  BY  MODULE  MY801.  A 60 OCTAL WORD
*         FUNCTION TABLE IS  USED  TO  EXCHANGE  INFORMATION
*         BETWEEN  THE PPU AND THE BC.  A FUNCTION CODE OF 1
*         ISSUED BY THE PPU TO THE BC CAUSES THE BC TO  SEND
*         THE  FUNCTION  TABLE TO THE PPU SO THAT PASS COUNT
*         AND ERROR STATUS CAN BE MONITORED. A FUNCTION CODE
*         OF  0 TO THE BC CAUSES THE BC TO READ THE FUNCTION
*         TABLE FROM THE PPU SO THAT THE BC CAN PERFORM  THE
*         REQUESTED  ACTION (THE ONLY ACTION THAT IS REQUES-
*         TED BY THE PPU IS TO RUN A PASS OF MY8).
* 
*         WHILE MY8 IS IN EXECUTION, 20 OCTAL WORDS  OF  THE
*         FUNCTION  TABLE  IS  DISPLAYED  AS  WELL AS A PASS
*         COUNT.  IF AN ERROR IS DETECTED  IN  THE  FUNCTION
*         TABLE, ERROR STATUS FROM THE BC IS ALSO DISPLAYED.
*         10 DECIMAL PASSES OF MY8 ARE EXECUTED.
* 
* 
*   DESCRIPTION - 
* 
*         1. GET CHANNEL. 
*         2. ISSUE FUNCTION OF 1.  IF IT  IS  NOT  ACCEPTED,
*            CONTINUE  TO  RETRY IT FOR 2 SECONDS.  IF STILL
*            UNSUCCESSFUL, REPORT BC  NOT  RESPONDING  ERROR
*            MESSAGE. 
*         3. INPUT FUNCTION TABLE FROM BC.
*         4. RELEASE CHANNEL. 
*         5. COPY FUNCTION TABLE FROM IB TO OB. 
*         6. DISPLAY 20 OCTAL WORDS OF THE TABLE. 
*         7. DISPLAY CURRENT PASS AND SECTION NUMBERS.
*         8. SET THE GO BIT IN THE TABLE. 
*         9. IF THE FUNCTION TABLE INDICATES AN ERROR HAS 
*            OCCURRED, DISPLAY ERROR INFORMATION AND HALT.
*        10. GET CHANNEL. 
*        11. ISSUE FUNCTION OF 0. 
*        12. OUTPUT FUNCTION TABLE TO BC. 
*        13. RELEASE CHANNEL. 
*        14. UPDATE PASS COUNT IF SECTION 10 JUST COMPLETED.
*            IF NOT, GO TO STEP 1.
*        15. REPEAT STEPS 1-14 FOR 10 DECIMAL PASSES. 
*        16. REPEAT MODULE OR EXIT. 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. MY802 - ABORT ON .IN. COMMAND. 
*         3. MY802 - ABORT ON .OUT. COMMAND.
* 
*** MY802 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B1 = PASS COUNT 
*         B5 = MESSAGE INDEX IN CASE OF AN ABORT
*         B7 = ERROR COUNTER
* 
 1 FORMAT MY802 - MY8 IS EXECUTING
 2 FORMAT         MY8 FUNCTION TABLE
 3 FORMAT  0-3 =  *H*H  *H*H  *H*H  *H*H
 4 FORMAT  4-7 =  *H*H  *H*H  *H*H  *H*H
 5 FORMAT  8-B =  *H*H  *H*H  *H*H  *H*H
 6 FORMAT  C-F =  *H*H  *H*H  *H*H  *H*H
 7 FORMAT  MY8 PASS=*DEC SECTION=*DEC 
10 FORMAT    ADDRESS OF ERROR (A) = *H*H
11 FORMAT    ACTUAL DATA     (B1) = *H*H
12 FORMAT    EXPECTED DATA   (B2) = *H*H
13 FORMAT    ERROR STOP CODE      = *H*H
14 FORMAT    ERROR COUNT = *DEC 
16 FORMAT MY802 - ABORT ON .IN. COMMAND.
17 FORMAT MY802 - ABORT ON .OUT. COMMAND. 
20 FORMAT MY802 ERROR(S) IN MODULE = *DEC 
21 FORMAT MY802 - NO BC RESPONSE TO A FCN IN 30 SEC 
  
30 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   TIMEOUT TYPEB=1777777B USEC           *RESET TIMEOUT FOR LONG DELAY
   B1 = 0                    *CLEAR PASS COUNT
   WC = 60
31 MSG 2 TO LINE 1
   B0 = 0                    *CLEAR FUNCTION RETRY COUNT
32 RES                       *GET CHANNEL 
   FUNC 1, ABT 40            *REQUEST FUNCTION TABLE FROM BC
   B0 = 0                    *CLEAR FUNCTION RETRY COUNT
   B5 = 16
   IN, ABT 70                *READ FUNCTION TABLE FROM BC 
   REL
   COPY IB TO OB FOR 60 
   MSG 3, 8D WORDS FROM IB TO LINE 3
   MSG 4, 8D WORDS FROM IB(10) TO LINE 4
   MSG 5, 8D WORDS FROM IB(20) TO LINE 5
   MSG 6, 8D WORDS FROM IB(30) TO LINE 6
   MSG 7 (B1, IB(23)) TO LINE 7  *PASS AND SECTION COUNTS 
   OB = 0                    *UPDATE FUNCTION TABLE 
   OB(1) = 100               *SET GO BIT
   IF(IB.EQ.4) GOTO 50       *IF MY8 ERROR
33 RES                       *GET CHANNEL 
   B5 = 15
   FUNC 0, ABT 70            *REQUEST BC TO READ TABLE
   B5 = 17
   OUT, ABT 70               *SEND TABLE TO BC
   REL                       *DROP CHANNEL
34 MSG 7 (B1,IB(23)) TO DISPLAY  *PASS AND SECTION COUNTS 
   IF(IB.NE.20B)GOTO 32      *IF NOT END OF SECTION 
   IF(IB(23).NE.10) GOTO 32  *IF NOT SECTION 10 (1 PASS)
   GOTO 32 WHILE (B1+1.NE.10D)  *EXECUTE 10 DECIMAL PASSES
   IF(ES.AND.CM.NE.0) GOTO 31  *IF REPEAT CONDITION/MODULE
   IF(B7.EQ.0) GOTO 35       *IF NO ERRORS
   MSG 20 (B7) TO DAYFILE    *REPORT ERRORS TO DAYFILE
35 GOTO 77                   *END TEST SERIES 
/ 
/---------FUNCTION ABORT - WAIT FOR BC TO EXECUTE A SECTION 
/ 
40 REL
   DELAY 5 MSEC 
   GOTO 32 WHILE (B0+1.NE.200D)        *LOOP FOR 30 SECONDS 
   B5 = 21
   GOTO 70                    *REPORT BC NOT RESPONDING 
/ 
/---------MY8 DIAGNOSTIC ERROR DETECTED-----------
/ 
50 MSG 10 (IB(2),IB(3)) TO LINE 11    *ADDRESS
   MSG 11 (IB(4),IB(5)) TO LINE 12    *ACTUAL 
   MSG 12 (IB(6),IB(7)) TO LINE 13    *EXPECTED 
   MSG 13 (IB(10),IB(11)) TO LINE 14  *STOP CODE
   B7 = B7 + 1                        *BUMP ERROR COUNT 
   MSG 14 (B7) TO LINE 16             *POST ERROR COUNT 
   PICTURE
   HALT 
   BLANK
   MSG 2 TO LINE 1
   GOTO 33
/ 
/--------ABORT PROCESSOR------------------------- 
/ 
70 B7 = B7 + 1                  *BUMP ERROR COUNTER 
   MSG 7 (B1,IB(23)) TO LINE 10  *PASS AND SECTION COUNTS 
   MSG B5 TO LINE 11            *REPORT ABORT CONDITION 
   MSG EM TO LINE 12            *PRODUCT OVERLAY ERROR MSG
   PICTURE
   HALT 
   BLANK
   GOTO 31
77 END 30 
COMPILE   - MY802 - 
   MODULE MY803,BC(02,03,04,05,42,52)   - DOWNLOAD CONTROLWARE
*** MY803 - DOWNLOAD CONTROLWARE
* 
**  MY803 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         THIS  MODULE  REWINDS THE *SCRATCH* FILE, READS IT
*         AND VERIFIES THAT IT CONTAINS CONTROLWARE.   ERROR
*         MESSAGES ARE REPORTED AND TESTING TEMINATED IF THE
*         FILE IS EMPTY, TOO BIG, TOO SMALL OR CONTAINS  THE
*         WRONG DATA. 
* 
*         THE  MODULE  REWINDS  THE *SCRATCH* FILE, READS IT
*         500 PPU WORDS AT A TIME AND  DOWNLOADS  IT  TO THE
*         BUFFER  CONTROLLER UNDER TEST USING CHAINING WRITE
*         OPERATIONS.  AN  ERROR MESSAGE  IS  POSTED  IF THE
*         *SCRATCH*  FILE  IS EMPTY (EOR/EOI ON FIRST READ).
*         DOWNLOADING IS COMPLETED WHEN A SHORT BLOCK OR END
*         OF RECORD/INFORMATION  IS REACHED ON THE *SCRATCH*
*         FILE. 
* 
*   DESCRIPTION - 
* 
*         1. REWIND SCRATCH.
*         2. READ SCRATCH. ABORT IF EOR/EOI ON FIRST READ.
*         3. READ SCRATCH FILE UNTIL A SHORT BLOCK  IS READ.
*            ABORT  IF  THE SCRATCH  FILE  IS TOO BIG OR TOO
*            SMALL TO BE CONTROLWARE, OR IF A SPECIFIC  DATA
*            WORD IS IN ERROR.
*         4. REWIND SCRATCH.
*         5. READ SCRATCH.
*         6. POST ERROR MESSAGE AND TERMINATE IF EOR/EOI. 
*         7. STRIP OFF 77 TABLE IF ONE. 
*         8. RESERVE. 
*         9. FUNCTION 414 (AUTOLOAD). 
*        10. SET WC = WORDS READ FROM SCRATCH.
*        11. COPY INPUT BUFFER TO OUTPUT BUFFER.
*        12. OUTPUT TO BUFFER CONTROLLER WITH CHAINING. 
*        13. READ SCRATCH.
*        14. GO  TO  STEP 10  IF NOT EOR/EOI AND NOT A SHORT
*            BLOCK (LAST OF THE DATA).
*        15. DISCONNECT  THE  CHANNEL  IF  EOR/EOI  OR IF NO
*            WORDS WERE READ FROM SCRATCH.  OTHERWISE,  COPY
*            INPUT  BUFFER  TO  OUTPUT BUFFER AND OUTPUT THE
*            LAST BLOCK TO  THE  BUFFER  CONTROLLER  WITHOUT
*            CHAINING.
*        15. RELEASE. 
*        16. REPEAT MODULE OR EXIT. 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. ABORT - SCRATCH FILE EMPTY - EOR/EOI FIRST READ
*         3. ABORT - SCRATCH FILE IS NOT CONTROLWARE - TOO BIG
*         4. ABORT - SCRATCH FILE IS NOT CONTROLWARE - TOO SMALL
*         5. ABORT - SCRATCH FILE IS NOT CONTROLWARE - BAD DATA 
*         6. MY803 - ABORT ON .FUNC. COMMAND -
*         7. MY803 - ABORT ON .OUT CHAIN. COMMAND - 
*         8. MY803 - ABORT ON .OUT. COMMAND - 
*         9. MY803 - ABORT ON .DCN. COMMAND - 
*** MY803 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = COUNT OF BLOCKS READ FROM SCRATCH FILE 
*         B1 = STATUS ON SYSRD COMMANDS 
*         B2 = FLAG TO DENOTE 77 TABLE
*         B4 = MESSAGE NUMBER FOR CONTROLWARE TYPE
*         B5 = ERROR MESSAGE INDEX IN CASE OF ABORT 
*         B6 = PASS COUNT 
*         B7 = ERROR COUNT
* 
  
 1 FORMAT MY803 - DOWNLOAD CONTROLWARE
 2 FORMAT ABORT - SCRATCH FILE EMPTY - EOR/EOI FIRST READ 
 3 FORMAT MY803 - LOOPS=*DEC  ERRS=*DEC 
 4 FORMAT MY803 ERROR(S) IN MODULE = *DEC 
 5 FORMAT ABORT - SCRATCH FILE IS NOT CONTROLWARE - TOO BIG 
 6 FORMAT ABORT - SCRATCH FILE IS NOT CONTROLWARE - TOO SMALL 
 7 FORMAT ABORT - SCRATCH FILE IS NOT CONTROLWARE - BAD DATA
10 FORMAT MY803 - ABORT ON .FUNC. COMMAND - 
11 FORMAT MY803 - ABORT ON .OUT CHAIN. COMMAND -
12 FORMAT MY803 - ABORT ON .OUT. COMMAND -
13 FORMAT MY803 - ABORT ON .DCN. COMMAND -
14 FORMAT MA710 A13 LOADED
15 FORMAT MA401 A07 LOADED
16 FORMAT MB434 A14 LOADED
20 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
/ 
/--------READ AND VERIFY THAT SCRATCH FILE CONTAINS CONTROLWARE.
/ 
   SYSREW 
   SYSRD, STATUS TO B1
   IF(B1.EQ.0) GOTO 21       *IF NOT EOR/EOI ON FIRST READ
   MSG 2 TO DISPLAY,PRINT    *POST EOR/EOI ERROR MESSAGE
   GOTO 72                   *TERMINATE TESTING 
21 IF(WT.NE.500) GOTO 24     *IF NOT A FULL BUFFER
   B0 = B0 + 1               *BUMP BUFFERS READ 
   IF(IB.EQ.7700B) B2=77B    *SET FLAG IF 77 TABLE
   IF(B0.LT.32) GOTO 23      *IF NOT TOO BIG YET
22 MSG 5 TO DISPLAY,PRINT    *POST TOO BIG ERROR MESSAGE
   GOTO 72                   *TERMINATE TESTING 
23 SYSRD, STATUS TO B1
   GOTO 21
/ 
/         A SHORT RECORD HAS BEEN READ.  VERIFY WORD COUNT. 
/ 
24 IF(B0.EQ.31) GOTO 26      *IF NOT TOO SMALL
25 MSG 6 TO DISPLAY,PRINT    *POST TOO SMALL ERROR MESSAGE
   GOTO 72                   *TERMINATE TESTING 
26 IF(B2.EQ.77B) GOTO 54     *IF 77 TABLE 
   IF(WT.EQ.276) GOTO 27     *IF LAST BLOCK CORRECT LENGTH
   IF(WT.LT.276) GOTO 25     *POST TOO SMALL ERROR MESSAGE
   GOTO 22                   *POST TOO BIG ERROR MESSAGE
27 IF(IB(273).EQ.12) B4=14   *MA710 
   IF(IB(273).EQ.32) B4=15   *MA401 
   IF(IB(273).EQ.112) B4=16  *MB434 
   IF(B2.EQ.77) GOTO 60      *IF 77 TABLE CHECK NEXT LENGTH 
   IF(B4.NE.0) GOTO 30       *IF CORRECT DATA FOUND 
   MSG 7 TO DISPLAY,PRINT    *POST BAD DATA ERROR MESSAGE 
   GOTO 72                   *TERMINATE TESTING 
* 
/--------DOWNLOAD SCRATCH FILE TO BC
* 
30 SYSREW                    *REWIND SCRATCH FILE 
   SYSRD, STATUS TO B1       *READ FIRST RECORD FROM SCRATCH
   IF(B1.EQ.0) GOTO 31       *IF NOT EOR/EOI
   MSG 2 TO DISPLAY,PRINT    *POST EOR/EOI ERROR MESSAGE
   GOTO 72                   *TERMINATE TESTING 
31 IF(IB.EQ.7700B) GOTO 50   *IF 77 TABLE 
   RES                       *GET CHANNEL 
   B5 = 10
   WC=WT
   FUNC 414, ABT 70          *AUTOLOAD BC 
   GOTO 40
32 WC = WT                   *WORDS TO WRITE = WORDS READ 
40 COPY IB TO OB FOR WC      *MOVE INPUT BUFFER TO OUTPUT 
41 B5 = 11
   OUT CHAIN, ABT 70         *PERFORM CHAINING WRITE TO BC
   SYSRD, STATUS TO B1       *GET NEXT BLOCK FROM SCRATCH 
   IF(B1.EQ.2) GOTO 33       *IF EOI - NO WORDS READ
   IF(WT.EQ.500) GOTO 32     *IF NOT A SHORT BLOCK
   IF(WT.EQ.0) GOTO 33       *IF NO WORDS REMAINING 
   WC = WT
   COPY IB TO OB FOR WC      *MOVE INPUT BUFFER TO OUTPUT 
   B5 = 12
   OUT, ABT 70               *SEND SHORT BLOCK TO BC
   GOTO 34
33 B5 = 13
   DCN, ABT 70               *TERMINATE OUTPUT IF NO WORDS
34 REL                       *RELEASE CHANNEL 
   B6 = B6 + 1               *BUMP SUCCESSFUL PASS COUNT
   IF(ES.AND.SL.EQ.0) GOTO 35  *IF NOT SCOPING
   MSG 3 (B6,B7) TO DISPLAY    *POST SCOPING MESSAGE
   GOTO 30                     *RESTART 
35 IF(ES.AND.CM.NE.0) GOTO 30  *IF REPEAT CONDITION/MODULE
   IF(B7.EQ.0) GOTO 36         *IF NO ERRORS
   MSG 4 (B7) TO DAYFILE       *REPORT ERRORS TO DAYFILE
   GOTO 72
36 MSG B4 TO LINE 5          *CONTROLWARE LOADED
   PICTURE
   GOTO 72
* 
50 WC = 360B
   COPY IB(120) TO OB FOR WC   *STRIP OFF 77 TABLE
   RES
   B5 = 10
   FUNC 414, ABT 70          *AUTOLOAD BC 
   GOTO 41                   *CONTINUE
* 
54 IF(WT.EQ.416) GOTO 27     *IF LAST BLOCK CORRECT LENGTH
   IF(WT.LT.416) GOTO 25     *POST TOO SMALL ERROR MESSAGE
   GOTO 22                   *POST TOO BIG ERROR MESSAGE
60 IF(IB(413).EQ.12) B4=14   *MA710 
   IF(IB(413).EQ.32) B4=15   *MA401 
   IF(IB(413).EQ.112) B4=16  *MB434 
   IF(B4.NE.0) GOTO 30       *IF CORRECT DATA FOUND 
   MSG 7 TO DISPLAY, PRINT   *POST BAD DATA ERROR MESSAGE 
   GOTO 72
/ 
/--------ABORT PROCESSOR------------------------- 
/ 
70 B7 = B7 + 1                 *BUMP ERROR COUNTER
   IF(ES.AND.SL.EQ.0) GOTO 71  *SCOPE LOOP NOT SELECTED 
   MSG 3 (B6,B7) TO DISPLAY    *ERROR MESSAGE 
   GOTO 30                     *RESTART 
71 MSG B5 TO LINE 0            *REPORT ABORT CONDITION
   MSG EM TO LINE 1            *PRODUCT OVERLAY ERROR MSG 
   PICTURE
   HALT 
   MSG 1 TO DISPLAY            *REPLACE RUNNING MESSAGE 
   GOTO 35                     *REPEAT MODULE OR EXIT 
72 END 20 
COMPILE   - MY803 - 
   MODULE MY899,BC(02,03,04,05,42,52)  - DOCUMENTATION
*** MY899 - DOCUMENTATION 
* 
**  MY899 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         MY899 IS PROVIDED TO GIVE THE USER  A  DESCRIPTION
*         OF  MY8  THAT  CAN BE LOADED TO THE SYSTEM CONSOLE
*         DISPLAY AND/OR A PICTURE OF IT SENT TO THE  OUTPUT
*         FILE. 
/         MY8 IS A MALET VERSION OF THE  OFF-LINE  MY8  TEST
/         THAT  NORMALLY EXECUTES UNDER SMM OR FROM THE BCMC
/         TESTER.  MY8 IS DESIGNED TO  EXECUTE  ON  THE  66X
/         TAPE  CONTROLLER  (7021)  AND 844 DISK CONTROLLERS
/         (7054/7154).  ITS FRIMARY FUNCTION  IS  TO  VERIFY
/         THAT THE BC MEMORY IS OPERATIONAL.
/ 
/         MALET  MY8  IS  COMPOSED OF TWO PARTS - THE MODULE
/         CODE EXECUTED BY THE PPU AND THE BUFFER CONTROLLER
/         CODE  EXECUTED BY THE BC.  PRIOR TO EXECUTING MY8,
/         THE USER MUST INSURE THAT THE TWO PARTS OF MY8 ARE
/         ON  LOCAL  FILES  SO THEY MAY BE READ BY THE MALET
/         EXECUTIVE.  NORMALLY BOTH PARTS OF MY8 WOULD BE ON
/         SEPERATE  PERMANENT FILES, INITIALLY OBTAINED FROM
/         THE CML  (CONCURRENT  MAINTENANCE  LIBRARY)  TAPE.
/         (MODULE  CODE IS WITHIN FILE 1 UNDER THE DECK NAME
/         OF MY8 AND THE BC CODE IS ALL OF FILE 2). ASSUMING
/         THAT  THE  PPU  CODE  RESIDES ON A PERMANENT FILE,
/         MY8, AND THE BC CODE RESIDES ON  MY8BC,  THE  FOL-
/         LOWING CONTROL CARDS WOULD BE USED TO EXECUTE MY8.
/ 
/ 
/         ATTACH(MY8)             RFILE OF MY8
/         ATTACH(MY8BC)           BC PORTION OF MY8 
/         ATTACH,CWFILE.          CONTROLWARE FILE
/         MALET(R=MY8,S=MY8BC)
/ 
/         NOTE- SINCE THE I/O CHANNEL REMAINS ACTIVE  DURING
/               THE  TOTAL  DOWN-LOAD  OPERATION WITH INTER-
/               MIXED READS OF THE SCRATCH FILE, THE SCRATCH
/               FILE  CANNOT  BE  ON THE SAME I/O CHANNEL AS
/               THE BC UNDER TEST.  ONCE MY8  COMPLETES  ITS
/               EXECUTION, THE USER MUST REINSTATE OPERATING
/               SYSTEM CONTROLWARE INTO THE BC BEFORE IT CAN
/               BE  UTILIZED  BY  THE  SYSTEM.  MY8 DOES NOT
/               PERFORM THIS TASK.
/ 
/               MY803 CAN BE USED  TO  DOWNLOAD  CONTROLWARE
/               AFTER RUNNING MY802.
/ 
/         MY8 IS COMPOSED OF FOUR MODULES.  MY800 PERFORMS A
/         LOOP-BACK  TEST  ON  THE  COUPLER  IN  WORD MODE -
/         SINGLE WORD TRANSFERS BY THE PPU WITH FULL CHANNEL
/         PROTECTION  FROM  HANGS  (ALL I/O PERFORMED BY MY8
/         USES THIS TECHNIQUE). 
/ 
/         MY801 THEN READS THE BUFFER CONTROLLER PORTION  OF
/         MY8  CODE  FROM  THE  SCRATCH FILE ASSIGNED BY THE
/         USER AND DOWNLOADS IT TO  THE  BUFFER  CONTROLLER.
/         CHECKS  ARE MADE TO INSURE THAT THE DATA CONTAINED
/         ON THE SCRATCH FILE IS OF THE PROPER LENGTH  PRIOR
/         TO DOWNLOADING IT.
/ 
/         MY802 THEN COMMUNICATES WITH THE BUFFER CONTROLLER
/         AND PRESENTS A DISPLAY OF CURRENT INFORMATION FROM
/         THE  BC  ON  THE  PPU  DISPLAY IN HEXIDECIMAL.  10
/         PASSES OF MY8 ARE EXECUTED.  SHOULD  AN  ERROR  BE
/         DETECTED,  STATUS  CONCERNING THE FAILURE IS ADDED
/         TO THE DISPLAY AND A PICTURE OF IT TAKEN. 
/ 
/         MY803 READS THE CONTROLWARE FILE FROM THE  SCRATCH
/         FILE ASSIGNED BY THE USER.  IF  A  CORRECT SCRATCH
/         FILE HAS BEEN ASSIGNED,  THE CONTROLWARE  IS  THEN
/         DOWNLOADED TO  THE  BUFFER CONTROLLER.  CHECKS ARE
/         MADE TO  INSURE THAT THE  DATA  CONTAINED  IN  THE
/         SCRATCH FILE  IS  THE  CORRECT LENGTH BEFORE IT IS
/         DOWNLOADED. 
/ 
/         MY899 IS THE FOURTH MODULE  AND  IS  DOCUMENTATION
/         THAT YOU ARE READING TO ASSIST THE USER IN RUNNING
/         AND UNDERSTANDING MY8.
/ 
/         MY8 IS NOT PARAMETER DRIVEN - IT DOES NOT USE  ANY
/         OF THE MALET PARAMETER REGISTERS P0 - P9. NORMALLY
/         THE USER WILL RUN MODULES 00 THRU 02  IN  SEQUENCE
/         WITH A RUN DIRECTIVE AS FOLLOWS- RUN MY8
/ 
/         IF MY800 CANNOT SUCCESSFULLY COMPLETE THE AUTOLOAD
/         FUNCTION OR THE OUTPUT OF THE BC PROGRAM, A  SCOPE
/         LOOP CAN BE CREATED BY CLEARING THE MALET STOP-ON-
/         ERROR SWITCH AND SETTING THE REPEAT  CONDITION  OR
/         REPEAT  MODULE  SWITCH.   THIS  ALLOWS THE USER TO
/         SCOPE THE PROBLEM TO DETERMINE WHY IT IS FAILING. 
/ 
/         IF THE AUTOLOAD AND OUTPUT COMPLETE  SUCCESSFULLY,
/         BUT  MY800  FAILS  ON THE FUNCTION 1 OR INPUT, THE
/         USER SHOULD USE THE BCMC TO LOOK AT  THE  CONTENTS
/         OF  BC MEMORY TO DETERMINE IF THE PROGRAM THAT WAS
/         DOWNLOADED ACTUALLY GOT TO MEMORY WITHOUT DROPPING
/         OR PICKING BITS.
20 PAUSE
   END 20 
COMPILE,SOURCE   - MY899 -
