*DECK,FHC 
***                  FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC
**                   FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC
* 
*                             AUTHOR - H.N. STAUFFER
*                             REVISOR - B. DANESHVAR
* 
*                            DATE - AUGUST, 1981
* 
*                      COPYRIGHT CONTROL DATA CORP. 1981
* 
* 
*   1.    INTRODUCTION
*         ------------
* 
*         FHC IS A DIAGNOSTIC WHICH DETECTS AND 
*         ISOLATES FAILURES IN THE 7155-401 DISK CONTROLLER.
* 
*         THE 7155-401 IS THE CONTROLLER WHICH IS USED TO DRIVE 
*         885-1X, 885-4X, AND 844-4X DISK DRIVES. 
* 
*IF -DEF,CMSE17X
*    1.1  RESTRICTIONS AND CAUTIONS 
*         ------------ --- -------- 
* 
*         FULL AUTOLOADS USING FHC02 MAY INTERMITTANTLY PRODUCE RAM/ROM 
*         PARITY ERRORS DURING  "HIGH"  CHANNEL ACTIVITY  (MASS STORAGE 
*         CHANNELS).   LEDS ON THE  7155  INDICATE RAM/ROM PE,  DEADMAN 
*         TIMER, INPUT FULL AND ACCESS CONNECTED.  IF THIS OCCURS RERUN 
*         TEST SEQUENCE OR IF THIS FAILURE  OCCURS DURING "LOW" CHANNEL 
*         ACTIVITY (MASS STORAGE CHANNELS) OR EACH TIME FHC02  IS RUN A 
*         LEGITIMATE FAILURE CAN BE ASSUMED.
* 
*         THIS IS NOT  A  MALET  PROBLEM  BUT  A PROBLEM IN GETTING THE 
*         CONTROLWARE FILE FROM THE OPERATING SYSTEM. 
*ENDIF
* 
*   2.    REQUIREMENTS
*         ------------
* 
*   2.1   HARDWARE
* 
*         THIS DIAGNOSTIC MUST ADDRESS CONTROLLER AND ONE DRIVE.  THE 
*         CONFIGURATION MAY BE ANY LEGAL ONE AS DEFINED IN THE FA211ABC 
*         EQUIPMENT SPECIFICATION (PUBLICATION 22938611).  OTHER
*         HARDWARE REQUIREMENTS IMPOSED BY EACH OPERATING SYSTEM ARE
*         INCLUDED IN ITS REFERENCE MANUAL. 
* 
*IF DEF,CMSE17X,2 
*         THE PARITY TESTS REQUIRE A CYBER 17X SINCE THEY USE THE STATUS
*         AND CONTROL REGISTER. 
* 
*   2.2   SOFTWARE
* 
*         A COPY OF THE MOST RECENT VERSION OF THE MA722
*         CONTROLWARE MUST EXIST ON THE SCRATCH FILE IN 
*         ORDER TO RUN THE AUTOLOAD FROM PP TEST. 
*         THIS CONTROLWARE MAY BE EITHER 7230D OR 8435D 
*         16-BIT WORDS IN LENGTH WITH OR WITHOUT A
*         77-TABLE. 
* 
*         A COPY OF MALET OR DEMOT MUST RESIDE ON THE 
*         OPERATING SYSTEM USED TO EXECUTE THIS DIAGNOSTIC. 
* 
*   2.3   ACCESSORIES 
* 
*         NO ACCESSORIES ARE REQUIRED.
* 
*   3.    OPERATIONAL PROCEDURE 
*         ----------- --------- 
* 
*   3.1   LOADING PROCEDURE 
* 
*         FHC IS LOADED USING THE STANDARD LOADING
*         PROCEDURES. 
* 
* 
*   3.2   PARAMETERS
* 
*         ALL UNUSED PARAMETERS MUST BE SET TO ZERO.  THIS ALLOWS THE 
*         PARAMETER CHECKING MODULE TO SOMETIMES DETERMINE IF THE WRONG 
*         PARAMETER WAS ACCIDENTALLY SET. THE FOLLOWING PARAMETERS ARE
*         USED BY FHC-- 
* 
*         P0 - NOT USED 
* 
*         P1 - NOT USED 
* 
*         P2 - NOT USED 
* 
*         P3 - NOT USED 
* 
*         P4 - XXXX - ENABLES 
* 
*              XXX1 - AUTOLOAD FROM DISK
*              4XXX - ISOLATION 
* 
*         P5 - XXXX - DISABLES
* 
*              XXX1 - DRIVE MODULES 
*                     DISABLING THE MODULES THAT USE THE DRIVE
*                     WILL DEGRADE THE DETECTION/ISOLATION CAPABILITY 
*                     OF FHC BY APPROXIMATELY 20 PERCENT. 
*              XX1X - OPERATOR INTERVENTION 
*              XX4X - CHANNEL STATUS DISPLAY
*              1XXX - FULL CONTROLWARE DOWNLOADS
* 
*         P6 - XXXX - NOT USED
* 
*         P7 - NOT USED 
* 
*         P8 - HARDWARE DESCRIPTION 
* 
*              XXX1 - CHANNEL ACCESS A
*              XXX2 - CHANNEL ACCESS B (OPTIONAL) 
*              XXX4 - CHANNEL ACCESS C (OPTIONAL) 
*              XX1X - CHANNEL ACCESS D (OPTIONAL) 
*              XX2X - 844-4X INTERFACE (FV670-A/B)(OPTIONAL)
*              XX4X - OPTIONAL 885 INTERFACES (FV671-A/B) 
*              XAXX - ACCESS USED BY THIS TEST
* 
*                       A = 0 FOR ACCESS A
*                       A = 1 FOR ACCESS B
*                       A = 2 FOR ACCESS C
*                       A = 3 FOR ACCESS D
* 
*IF DEF,CMSE17X,3 
*              1XXX - 815 OR 825 TYPE MAINFRAME. USED FOR PARITY
*                     MODULES.
* 
*         P9 - 0Y0Z  Y = THIS TEST COPY NUMBER
*                        (0, 1, 2, OR 3)
*                    Z = THE NUMBER OF OTHER
*                        ACCESSES BEING TESTED
*                        (1, 2, OR 3) 
* 
*   3.3   SECTION DESCRIPTION INDEX 
* 
*                                               RUN  MIN. 
*         NAME     DESCRIPTION                  TIME AL  DC 
*         ----     -----------                  ---- --- ---
*       CONTROLLER (6000) LANGUAGE MODULES (DC=5/7/14/16) 
*         FHC00    PARAMETER VERIFICATION         1  10  5/7/14/16
*         FHC01    ECHO FUNCTION TEST             1  10  5/7/14/16
*         FHC02    AUTOLOAD TEST                  9  10  5/7/14/16
*         FHC03    NORMAL CHANNEL LOOP TEST       3  10  5/7/14/16
*         FHC04    DEAD MAN TIMER TEST           12  21  5/7/14/16
*         FHC07    CYBER SPECIAL CHANNEL TEST     5  10  5/7/14/16
*IF DEF,CMSE17X,2 
*         FHC08    PARITY TEST I  (MSL ONLY)      *  10  5/7/14/16
*         FHC09    PARITY TEST II (MSL ONLY)      *  10  5/7/14/16
*         FHC11    UP/DOWN COUNTER TEST           1  10  5/7/14/16
*         FHC13    BUFFER MEM ADRS TEST           1  10  5/7/14/16
*         FHC15    DATA PATH TEST                 7  10  5/7/14/16
*         FHC18    CONTROL WORD REGISTER TEST     1  10  5/7/14/16
*         FHC19    BIT COUNTER REGISTER TEST      1  10  5/7/14/16
*         FHC20    MAINTENANCE LOOP TEST          6  10  5/7/14/16
*         FHC21    LOOP 885 DECODE TEST           8  10  5/7/14/16
*         FHC22    LOOP 885 BUS TEST              7  10  5/7/14/16
*         FHC23    LOOP 885 WRT/RD/TAG GATE TEST  1  10  5/7/14/16
*         FHC24    SYNC BYTE SEARCH TEST          1  10  5/7/14/16
*         FHC25    ECC REGISTER TEST              2  10  5/7/14/16
*         FHC26    ECC REGISTER CLEAR TEST        2  10  5/7/14/16
*         FHC27    ECC FUNCTIONAL TEST            1  10  5/7/14/16
*         FHC28    AUTOLOAD FROM DISK TEST        2  10  5/7/14/16
*         FHC29    WRITE VERIFY TEST              1  10  5/7/14/16
*       844-4X (844HT/844FT) LANGUAGE MODULES (DC=5)
*         FHC30    LOOP 885 DECODE TEST (DC5)     9   4  5
*         FHC31    LOOP 885 BUS TEST (DC5)        9   4  5
*         FHC32    LOOP 844 WRT/RD/TAG GATE (DC5) 1   4  5
*         FHC35    ECC REGISTER TEST (DC5)        2   3  5
*         FHC36    ECC REGISTER CLEAR TEST (DC5)  3   3  5
*         FHC37    ECC FUNCTIONAL TEST (DC5)      1   3  5
*         FHC39    WRITE VERIFY TEST (DC5)        8   3  5
*IF -DEF,MVE
*       885-1X (FMDHT/FMDFT) LANGUAGE MODULES (DC=7)
*         FHC40    LOOP 885 DECODE TEST (DC7)     9   4  7
*         FHC41    LOOP 885 BUS TEST (DC7)       10   4  7
*         FHC42    LOOP 885 WRT/RD/TAG GATE (DC7) 1   4  7
*         FHC43    SYNC BYTE SEARCH TEST I (DC7)  3   4  7
*         FHC44    SYNC BYTE SEARCH TEST II (DC7) 3   4  7
*         FHC45    ECC REGISTER TEST (DC7)        2   3  7
*         FHC46    ECC REGISTER CLEAR TEST (DC7)  2   3  7
*         FHC47    ECC FUNCTIONAL TEST (DC7)      1   3  7
*         FHC49    WRITE VERIFY TEST (DC7)        8   3  7
*       885-4X (DEMA1/DEMA2) LANGUAGE MODULES (DC=14) 
*         FHC50    LOOP 885 DECODE TEST (DC14)    9   4  14 
*         FHC51    LOOP 885 BUS TEST (DC14)       9   4  14 
*         FHC52    LOOP 885 WRT/RD/TAG GATE(DC14) 1   4  14 
*         FHC53    SYNC BYTE SEARCH TEST I (DC14) 2   4  14 
*         FHC54    SYNC BYTE SEARCH TEST II(DC14) 3   4  14 
*         FHC55    ECC REGISTER TEST (DC14)       2   3  14 
*         FHC56    ECC REGISTER CLEAR TEST (DC14) 2   3  14 
*         FHC57    ECC FUNCTIONAL TEST (DC14)     1   3  14 
*         FHC59    WRITE VERIFY TEST (DC14)       8   3  14 
*ENDIF
*       885-1X (LSFMD1/LSFMD2) LANGUAGE MODULES (DC=16) 
*         FHC60    LOOP 885 DECODE TEST (DC14)    9   4  16 
*         FHC61    LOOP 885 BUS TEST (DC16)       9   4  16 
*         FHC62    LOOP 885 WRT/RD/TAG GATE(DC16) 1   4  16 
*         FHC63    SYNC BYTE SEARCH TEST I (DC16) 2   4  16 
*         FHC64    SYNC BYTE SEARCH TEST II(DC16) 3   4  16 
*         FHC65    ECC REGISTER TEST (DC16)       2   3  16 
*         FHC66    ECC REGISTER CLEAR TEST (DC16) 2   3  16 
*         FHC67    ECC FUNCTIONAL TEST (DC16)     1   3  16 
*         FHC69    WRITE VERIFY TEST (DC16)       8   3  16 
*       UTILITY MODULES 
*         FHC75    MULTI-CHANNEL CONNECT TEST     *  10  5/7/14/16
*         FHC76    LED TEST                       *  10  5/7/14/16
*         ABOVE RUN TIMES ARE IN SECONDS AND WERE MEASURED
*         UNDER THE NOS K-DISPLAY.  THEY SHALL BE CONSIDERED
*         MINIMUMS AND WILL VARY WHEN RUN IN OTHER MODES. 
* 
* 
*   4.    OPERATOR COMMUNICATION
*          -------- ------------- 
* 
*   4.1   MESSAGE FORMATS 
* 
*         THE MESSAGE FORMATS USED BY FHC TO REPORT ERRORS
*         AND INSTRUCT THE OPERATOR ARE-- 
* 
*         00
*         01  FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
*         02  FHCNN - MODULE TITLE
*         03  PRESERVICE FORECAST GROUP XXXXXXXX
*         04
*         05  FHCNN - LINE YYYY - ERROR NUMBER TTEEE
*         06  DATA ERROR   WAAAA  EBBBB  ACCCC  DFFFF 
*         06  STATUS ERROR WAAAA  EBBBB  ACCCC  DFFFF 
*         07  MISCELLANEOUS MEANINGFUL VALUES 
*         07  DATA ERROR STSGGGG  EBBBB  ACCCC  DFFFF 
*         07  DATA ERROR    EBBBB  ACCCC  DFFFF 
*         10  MISCELLANEOUS MEANINGFUL VALUES 
*         11
*         12  ERROR DESCRIPTION 
*         13
*         14  DIRECTIONS TO CE
*         15  DIRECTIONS TO CE
*         16  DIRECTIONS TO CE
* 
*         NN IS THE MODULE NUMBER.
*         XXXXXXXX IS THE PRESERVICE FORECAST GROUP NUMBER. 
*         YYYY IS THE ADDRESS THE ERROR OCCURRED IN THE 
*           PRIMARY MODULE. 
*         TT IS THE TEST NUMBER (IN HEX). 
*         EEE IS THE ERROR NUMBER (IN HEX). 
*         AAAA IS THE WORD NUMBER IN THE BUFFER.
*         BBBB IS THE EXPECTED VALUE. 
*         CCCC IS THE ACTUAL VALUE. 
*         FFFF IS THE LOGICAL DIFFERENCE OF BBBB AND CCCC.
*         GGGG IS THE NIC 1 CONTROLLER STATUS (IN HEX). 
*         THE MISCELLANEOUS MEANINGFUL VALUES WILL VARY 
*           FROM MODULE TO MODULE.
*         IF THE DIRECTIONS TO THE CE REQUIRE MORE THAN 3 
*           THREE LINES, THEY WILL BE INCLUDED IN THE 
*           TROUBLESHOOTING GUIDE RATHER THAN ON THE SCREEN.
* 
*   4.2   MESSAGE DICTIONARY
* 
*   4.2.1 ERROR MESSAGES
* 
*   4.2.1.1  PP DISPLAY BUFFER MESSAGES 
* 
*         THE ERROR MESSAGES WHICH ARE POSTED BY FHC IN THE PP DISPLAY
*         BUFFER AND DO NOT FOLLOW THE FORMAT DESCRIBED IN 4.1 ARE--
* 
* 
*           AN ATTEMPT WAS MADE TO RUN A MODULE WHICH 
*           REQUIRES OPERATOR INTERVENTION WITH THE DISABLE 
*           OPERATOR INTERVENTION BIT SET (P5 = XX1X) AND 
*           REPEAT MODULE SET (SETSW RM). 
* 
*           CLEAR ONE OF THESE CONDITIONS BEFORE ATTEMPTING TO
*           RUN THE MODULE AGAIN. 
* 
* 
* 
*           FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
*           FHCNN - DESCRIPTION 
*           FHCNN - LINE YYYY - ERROR NUMBER TTEEE
* 
* 
*         UNEXPECTED ERROR - LF = DDB 
*         DD = LAST FUNCTION (IN OCTAL) 
* 
*           THIS FAILURE CANNOT BE ISOLATED BY THE
*           DIAGNOSTIC SOFTWARE.  SET RC AND USE
*           STANDARD TROUBLESHOOTING TECHNIQUES.
* 
*   4.2.1.2  B DISPLAY MESSAGES 
* 
*           REPEAT MODULE CONFLICT
* 
*   5.    DESCRIPTIONS
*         ------------
* 
*   5.1   GENERAL 
* 
*         FHC IS PRIMARILY AN ISOLATION DIAGNOSTIC.  THEREFORE, IT
*         CONSIDERS TWO TYPES OF ERRORS, EXPECTED AND UNEXPECTED.  AN 
*         EXPECTED ERROR IS ONE WHICH CAN BE EXPLAINED IN THE CONTEXT 
*         OF THE ISOLATION TREE AND MEANS THAT MEANINGFUL CORRECTIVE
*         ACTION CAN BE RECOMMENDED TO THE OPERATOR.  THE UNEXPECTED
*         ERRORS DO NOT FIT INTO THE ISOLATION TREE AND MEAN THAT 
*         HARDWARE WHICH WAS PREVIOUSLY VERIFIED AS GOOD HAS FAILED OR
*         SOME OTHER ANOMALOUS SITUATION HAS OCCURRED.
* 
*   5.2   DIAGNOSTIC MODULE DESCRIPTIONS
* 
   MODULE FHC00,6000(03,05,07,14,16),LOCK 
**  5.2.1 FHC00 - PARAMETER VERIFICATION
* 
*         PURPOSE-
*         FHC00 CHECKS EACH OF THE 10D PARAMETERS BEFORE
*         EXECUTING THE REST OF THE DIAGNOSTIC.  IF 
*         PARAMETER ENTRY ERRORS ARE DETECTED, THE MODULE 
*         PAUSES SO THE OPERATOR CAN CORRECT THE PROBLEMS 
*         OR OVERRIDE AND CONTINUE EXECUTION. 
* 
*         METHOD- 
*         PARAMETERS ARE CHECKED FOR 3 TYPES OF ERRORS--
*         1.  UNUSED BITS BEING SET,
*         2.  DRIVE-ORIENTED BITS BEING SET (SINCE FHC
*               DOES NOT ACCESS THE DRIVES), AND
*         3.  CONTRADICTIONS IN THE BITS WHICH ARE SET. 
/ 
*         ENTRY-
*         PARAMETERS P0 TO P9 ARE DESCRIBED IN MODULE 
*           FHC99A. 
* 
*         EXIT- 
*         NO SPECIAL EXIT CONDITIONS. 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - MESSAGE LINE INDEX 
*         B2 - MESSAGE FORMAT INDEX 
*         B3 - TEMPORARY STORAGE
*         EC, EA, EM, AND ES - STANDARD USAGE.
* 
*         BUFFERS USED-NONE.
* 
* 
* 
* 
1  FORMAT CHECK P0 - NOT USED, SHOULD BE ZERO 
2  FORMAT CHECK P1 - NOT USED, SHOULD BE ZERO 
3  FORMAT CHECK P2 - NOT USED, SHOULD BE ZERO 
4  FORMAT CHECK P3 - NOT USED, SHOULD BE ZERO 
5  FORMAT CHECK P4 - UNUSED BITS ARE SET
6  FORMAT CHECK P5 - UNUSED BITS ARE SET
7  FORMAT CHECK P8 - 844 OPTION NOT SET 
10 FORMAT CHECK P7 - NOT USED, SHOULD BE ZERO 
11 FORMAT RM IS ILLEGALLY SET FOR FHC00 
13 FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
14 FORMAT FHC00 - PARAMETER VERIFICATION
15 FORMAT DC-UN MISMATCH
16 FORMAT SUSPECTED PARAMETER/DC/UN ENTRY ERROR 
17 FORMAT CHECK P8 - 885 OPTION NOT SET 
20 FORMAT FHC00 - *DEC WARNINGS POSTED
22 FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT 
23 FORMAT P5 - P9  *OCT *OCT *OCT *OCT *OCT 
24 FORMAT PARAMETERS DESCRIBED IN MODULE FHC99A 
25 FORMAT CHECK P8 - UNUSED BITS ARE SET
26 FORMAT CHECK P9 - UNUSED BITS ARE SET
* 
   EQUATE ENAFD TO 0001      *ENABLE AUTOLOAD FROM DISK 
   EQUATE ENISO TO 4000      *ISOLATION 
   EQUATE DDM TO 0001        *DISABLE DRIVE MODULES 
   EQUATE DOPIN TO 0010      *OPERATOR INTERVENTION 
   EQUATE OPT844 TO 0020     *844 INTERFACE OPTION
   EQUATE OPT885 TO 0040     *885 INTERFACE OPTION
   EQUATE DCSD TO 0040       *DISABLE CH STS DISPLAY
   EQUATE DFCWDL TO 1000     *FULL CONTROLWARE DOWNLOAD 
/ 
30 MSG 14 TO PRINT
31 MSG 14 TO DISPLAY
   B0=140                    *TEST NUMBER 60 HEX
   B1=14                     *LINE INDEX
   MSG 13 TO LINE 1 
   MSG 14 TO LINE 2 
   MSG 22(P0,P1,P2,P3,P4) TO LINE 7 
   MSG 23(P5,P6,P7,P8,P9) TO LINE 10
/ 
   B2 = 1 
   IF (P0.NE.0) GOSUB 70
/ 
   B2 = 2 
   IF (P1.NE.0) GOSUB 70
/ 
   B2 = 3 
   IF (P2.NE.0) GOSUB 70
/ 
   B2 = 4 
   IF (P3.NE.0) GOSUB 70
/ 
   B3 = ENAFD .OR. ENISO .XOR. 7777B
   B2 = 5 
   IF (P4.AND.B3.NE.0) GOSUB 70 
/ 
   B3 = DDM .OR. DOPIN .OR. DFCWDL
   B3=B3.OR.DCSD.XOR.7777 
   B2 = 6 
   IF (P5.AND.B3.NE.0) GOSUB 70 
/ 
   B2 = 10
   IF (P7.NE.0) GOSUB 70
/ 
   B2 = 25
*IF -DEF,CMSE17X,1
   IF (P8.AND.7400B.NE.0) GOSUB 70
*IF DEF,CMSE17X,1 
   IF (P8.AND.6400B.NE.0) GOSUB 70
/ 
   B2 = 26
   IF (P9.AND.7070B.NE.0) GOSUB 70
/ 
   B2 = 17
   IF (DC.LE.5) GOTO 47 
   IF (SB(72).AND.10.EQ.0) GOTO 47
   IF (P8.AND.OPT885.EQ.0) GOSUB 70 
/ 
47 IF (DC.GT.5) GOTO 51 
   B2 = 7 
   IF (P8.AND.OPT844.EQ.0) GOSUB 70 
/ 
50 IF (SB(72).AND.77B.GT.7B) GOTO 52
   GOTO 76
51 IF (SB(72).AND.77B.LT.40B) GOTO 52 
   IF (SB(72).AND.77B.LE.57B) GOTO 76 
52 B2 = 15
   GOSUB 70 
   GOTO 76
/ 
70 MSG B2 TO LINE B1
   B1 = B1 + 1
   RETURN 
/ 
76 IF (B1.EQ.14) GOTO 77      *IF NO ERRORS 
   B1=B1+1
   MSG 24 TO LINE B1
   MSG 16 TO LINE 12
   B1=B1-15 
   MSG 20(B1) TO DISPLAY, PRINT, DAYFILE
   PICTURE
   PAUSE
77 BLANK
   IF (ES.AND.RM.EQ.0) EXIT 
   MSG 11 TO DISPLAY,PRINT
   PAUSE
   GOTO 31
   END 30 
COMPILE 
   MODULE FHC01,6000(05,07,14,16),LOCK
**  5.2.2 FHC01 - ECHO FUNCTION TEST
* 
*         PURPOSE-
*         FHC01 ESTABLISHES CONFIDENCE, BEFORE ATTEMPTING AN AUTOLOAD,
*         THAT A FUNCTION CODE CAN BE SUCCESSFULLY SENT TO THE
*         MICROPROCESSOR AND BACK TO THE PP.
* 
*         METHOD- 
*         DO FOR ALL DATA PATTERNS
*           ISSUE POSITIVE ECHO FUNCTION
*           OUTPUT DATA PATTERN 
*           INPUT FROM CHANNEL
*           IF MISCOMPARE, THEN 
*             ANALYZE DATA FAILURE
*           ENDIF 
*           ISSUE NEGATIVE ECHO FUNCTION
*           OUTPUT DATA PATTERN 
*           INPUT FROM CHANNEL
*           IF MISCOMPARE, THEN 
*             ANALYZE DATA FAILURE
*           ENDIF 
*           ANALYZE REJECT CONDITIONS 
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS.
* 
*         SUBMODULES REFERENCED-
*         FHC01A - REPORT EXPECTED ERRORS 
*         FHC010 - REPORT UNEXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - TEMPORARY STORAGE (SHIFT COUNTER, ETC.)
*         B6 - TEMPORARY STORAGE (INTERNAL MASK, ETC.)
*         B7 - TEMPORARY STORAGE (NUMBER OF BAD BITS, ETC.) 
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB - HOLDS DATA PATTERNS TO BE LOOPED 
*         IB(0) - RESULT
*         OB(504) - FLAG BITS 
*           FLAG1 - SET IF ERROR IS EXPECTED
*           FLAG2 - SET IF POSITIVE ECHO FUNCTION FAILS 
*           FLAG3 - SET IF NEGATIVE ECHO FUNCTION FAILS 
* 
*         REMARKS-
*         FHC01 USES ONLY FUNCTIONS IMPLEMENTED IN THE PART 
*         OF THE CONTROLWARE WHICH RESIDES IN ROM SO THAT 
*         CONTROLWARE DOES NOT HAVE TO BE LOADED BEFORE 
*         RUNNING THIS MODULE.
* 
* 
1  FORMAT FHC01 - ECHO FUNCTION TEST
2  FORMAT FHC01 - LC=*DECD, EC=*DECD
4  FORMAT FHC01 ERROR(S) = *DECD
* 
/         DATA PATTERNS 
* 
   DATA (OB(0),CON) 0000,7777,2525,5252,0001,0002,0004,0010 
   DATA (OB(10),CON) 0020,0040,0100,0200,0400,1000,2000,4000
* 
/         FLAG EQUATES
* 
   EQUATE FLAG TO 504 
   EQUATE FLAG0S TO 0001, FLAG0C TO 7776
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
   EQUATE FLAG2S TO 0004, FLAG2C TO 7773
   EQUATE FLAG3S TO 0010, FLAG3C TO 7767
* 
/         FUNCTION CODE EQUATES 
* 
   EQUATE ECHO TO 0057, ECHONEG TO 0720 
   EQUATE OPCOM TO 0010      *CLEAR COUPLER CONNECT 
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 20         *NUMBER OF DATA PATTERNS 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/        INITIALIZE.
* 
21 B0=141                    *TEST NUMBER 61 HEX
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B9 = 01D                  *MODULE NUMBER 01D 
* 
24 PASS                      *BEGINNING OF PATTERN LOOP 
* 
/        RESERVE, CONNECT, ETC. 
* 
30 B1 = B1 + 1               *INCREMENT LOOP COUNTER
   RES, ABT 70
* 
   ACN, ABT 32
   DCN, ABT 34
   GOTO 40
* 
32 MSG EM TO LINE 12
   ERROR 3/6, GOTO 67 
34 MSG EM TO LINE 12
   ERROR 3/7, GOTO 67 
* 
/        PERFORM ECHO FUNCTION TEST.
* 
40 RES, ABT 70               *RESERVE CHANNEL 
* 
   FUNC, ECHO, ABT 41 
   OB(FLAG)=OB(FLAG).AND.FLAG2C  *CLEAR FLAG 2
   GOTO 42
* 
41 MSG EM TO LINE 7 
   OB(FLAG)=OB(FLAG).OR.FLAG2S   *SET FLAG 2
   GOTO 43
* 
42 OUT CHAIN 1 WORDS FROM OB(B2), ABT 55
   IN 1 WORDS TO IB(0), ABT 70
   IF (OB(B2).NE.IB(0)) GOTO 64 
* 
43 FUNC, ECHONEG, ABT 44
   OB(FLAG)=OB(FLAG).AND.FLAG3C  *CLEAR FLAG 3
   GOTO 45
* 
44 MSG EM TO LINE 10
   OB(FLAG)=OB(FLAG).OR.FLAG3S   *SET FLAG 3
   GOTO 50
* 
45 OUT CHAIN 1 WORDS FROM OB(B2), ABT 70
   IN 1 WORDS TO IB(0), ABT 70
   IF (OB(B2).NE.IB(0)) GOTO 64 
   IF (OB(FLAG).AND.FLAG2S.NE.0) GOTO 50
   GOTO 60
* 
/        ANALYZE FUNCTION REJECT ERRORS 
* 
50 IF (OB(FLAG).AND FLAG2S.EQ.0) GOTO 52
   IF (OB(FLAG).AND FLAG3S.EQ.0) GOTO 51
   ERROR 3/1, GOTO 67 
* 
51 ERROR 3/2, GOTO 67 
* 
52 ERROR 3/5, GOTO 67 
* 
/         ANALYZE OUTPUT REJECT ERRORS. 
* 
55 MSG EM TO LINE 12
   IF(EC.EQ.4021B) ERROR 3/6, GOTO 67 
   GOTO 70
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/        ANALYZE DATA ERRORS
* 
64 B4=OB(B2).XOR.IB(0)
   B5=0 
   B7=0                      *NUMBER OF BAD BITS
65 B6=1.LS.B5 
   IF (B4.AND.B6.EQ.0) GOTO 66
   B7=B7+1
66 GOTO 65 WHILE (B5+1.LT.12D)
   IF (B7.LE.6) ERROR 3/3, GOTO 67  *IF .LT. 6 BAD BITS 
   ERROR 3/4, GOTO 67               *IF .GT. 6 BAD BITS 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 OB(FLAG)=OB(FLAG).OR.FLAG1S  *SET FLAG 1 
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 OB(FLAG)=OB(FLAG).AND.FLAG1C  *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 30                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 01A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 30
   RES, ABT 77
* 
/        TERMINATE. 
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC010,6000(05,07,14,16),LOCK 
*   5.2.2.1 FHC010 - REPORT UNEXPECTED ERRORS 
* 
*         PURPOSE-
*         FHC010 DISPLAYS INFORMATION EXPANDING ON ALL
*         ERRORS OTHER THAN THOSE WHICH CAN BE INTERPRETED
*         FOR ISOLATION.
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC01.
* 
*         BUFFERS USED- 
*         SAME AS FHC01.
* 
* 
1  FORMAT FHC01 - ECHO FUNCTION TEST
2  FORMAT FHC02 - AUTOLOAD TEST 
3  FORMAT FHC03 - NORMAL CHANNEL LOOP TEST
4  FORMAT FHC04 - DEAD MAN TIMER TEST 
5  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
6  FORMAT FHC*D - LINE *OCT - ERROR NUMBER *H*HE
7  FORMAT FHC07 - SPECIAL CHANNEL TEST
10 FORMAT FHC08 - PARITY CHECKER TEST I 
11 FORMAT FHC09 - PARITY CHECKER TEST II
12 FORMAT FHC982 - LINE *OCTB - ERROR NUMBER *H*HEH 
13 FORMAT FHC11 - UP/DOWN COUNTER TEST
14 FORMAT UNEXPECTED ERROR - LF = *OCTB 
15 FORMAT FHC13 - BUFFER MEM ADRS REGISTER TEST 
16 FORMAT THIS FAILURE CANNOT BE ISOLATED BY THE
17 FORMAT FHC15 - DATA PATH TEST
20 FORMAT DIAGNOSTIC SOFTWARE.  USE STANDARD
21 FORMAT TROUBLESHOOTING TECHNIQUES. 
22 FORMAT FHC18 - CONTROL WORD REGISTER TEST
23 FORMAT FHC19 - BIT COUNTER REGISTER TEST 
24 FORMAT FHC20 - MAINTENANCE LOOP TEST 
25 FORMAT FHC21 - LOOP 885 DECODE TEST
26 FORMAT FHC22 - LOOP 885 BUS TEST 
27 FORMAT FHC23 - LOOP 885 WRT/READ/TAG GATE TEST 
30 FORMAT FHC24 - SYNC BYTE SEARCH TEST 
/         HEADER
31 MSG 5 TO LINE 1           *DIAGNOSTIC TITLE
   IF(B9.GT.37B) GOTO 34     *IF MODULE 982,
   MSG B9 TO LINE 2          *MODULE TITLE
   MSG 6 (B9,EA,B0,EC) TO LINE 5  *LINE, ERROR NUMBER 
   GOTO 40
34 B9 = B9 .AND. 37B         *FORM FORMAT NUMBER
   MSG B9 TO LINE 2          *MODULE TITLE
   MSG 12 (EA,B0,EC) TO LINE 5  *LINE, ERROR NUMBER 
/         ERROR MESSAGE 
40 MSG 14 (LF) TO LINE 12    *UNEXPECTED, LAST FUNCTION 
/         CE INFORMATION
   MSG 16 TO LINE 14
   MSG 20 TO LINE 15
   MSG 21 TO LINE 16
/         PRODUCT OVERLAY MESSAGE 
   IF(EC.AND.4000.NE.0) MSG EM TO LINE 10 
/         DISPLAY MESSAGE 
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC01A,6000(05,07,14,16),LOCK 
*   5.2.2.2 FHC01A - REPORT EXPECTED ERRORS 
* 
*         PURPOSE-
*         FHC01A DISPLAYS INFORMATION EXPANDING ON
*         ERROR NUMBERS 61001 THROUGH 61005.
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC01B - PROCESS HIGHER ERROR NUMBERS.
* 
*         REGISTERS USED- 
*         SAME AS FHC01.
* 
*         BUFFERS USED- 
*         SAME AS FHC01.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC01 - ECHO FUNCTION TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC01 - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT DATA ERROR   W*OCT  E*OCT  A*OCT  D*OCT 
* 
/        ERROR NUMBER 61001 HEX 
* 
10 FORMAT POSITIVE AND NEGATIVE ECHO-S FAILED.
11 FORMAT CHECK 7155 POWER,PP CHANNEL ENABLE/DISABLE SWITCH,
12 FORMAT AND CH. CABLES.  VERIFY 7155 PROCESSOR RUNNING BY 
13 FORMAT LOOKING AT THE NOC-0 LED-S OR BY RUNNING FHC02. 
* 
/        ERROR NUMBER 61002 HEX 
* 
14 FORMAT POS. ECHO FAILED, BUT NOT NEG.
15 FORMAT SUSPECT BAD CHANNEL ACCESS.  REPLACE CARD A01 IF
16 FORMAT ACCESS A IS BEING TESTED, A02 IF B, A03 IF C, OR
17 FORMAT A04 IF D. 
* 
/        ERROR NUMBER 61003 HEX 
* 
20 FORMAT ECHO DATA ERROR, LESS THAN 6 BITS BAD.
21 FORMAT REPLACE CARD A01 IF ACCESS A IS BEING 
22 FORMAT USED, A02 IF B, A03 IF C, AND A04 IF D. 
23 FORMAT SUCCESSIVELY REPLACE A08 AND A16. 
* 
/        ERROR NUMBER 61004 HEX 
* 
24 FORMAT ECHO DATA ERROR, MORE THAN 6 BAD BITS.
* 
/        ERROR NUMBER 61005 HEX 
* 
26 FORMAT NEG. ECHO FAILED, BUT NOT POS.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC01A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4 (EA,B0,EC) TO LINE 5 
   IF (B0.NE.141) GOTO 45    *IF CALLED BY WRONG MODULE 
   IF (EC.LT.1) GOTO 45      *IF A ZERO ERROR NUMBER
   IF (EC.GT.5) EXIT TO 01B 
* 
/        ERROR NUMBER 61001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 61002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 61003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   MSG 5 (B2,OB(B2),IB(0),B4) TO LINE 6 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 61004 HEX 
* 
43 IF (EC.NE.4) GOTO 44 
   MSG 5 (B2,OB(B2),IB(0),B4) TO LINE 6 
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 61005 HEX 
* 
44 IF (EC.NE.5) GOTO 45 
   MSG 26 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/         REPORT SOFTWARE ERROR 
* 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/         FINALIZE
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC01B,6000(05,07,14,16),LOCK 
*   5.2.2.3 FHC01B - REPORT EXPECTED ERRORS 
* 
*         PURPOSE-
*         FHC01B DISPLAYS INFORMATION EXPANDING ON
*         ERROR NUMBERS 61006 THROUGH 61007.
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC01.
* 
*         BUFFERS USED- 
*         SAME AS FHC01.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC01 - ECHO FUNCTION TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC01 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBERS 61006 AND 61007 HEX
* 
11 FORMAT THE FAILURE COULD BE IN THE CHANNEL, SOFTWARE, OR 
12 FORMAT IN THE 7155.  IF IT IS IN THE 7155, SUCCESSIVELY
13 FORMAT REPLACE CARDS A15,A16,A08, AND R/T CARD (A01
14 FORMAT FOR ACCESS A, A02 FOR B, A03 FOR C, OR A04 FOR D).
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC01B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4 (EA,B0,EC) TO LINE 5 
   IF (B0.NE.141) GOTO 45    *IF CALLED BY WRONG MODULE 
   IF (EC.LT.6) GOTO 45      *IF A WRONG ERROR NUMBER 
   IF (EC.GT.7) GOTO 45      *IF EC IS TOO LARGE
* 
/        ERROR NUMBERS 61006 AND 61007 HEX
* 
40 IF (EC.GT.7) GOTO 45 
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   MSG 14 TO LINE 17
   GOTO 77
* 
/         REPORT SOFTWARE ERROR 
* 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/         FINALIZE
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC02,6000(05,07,14,16),LOCK
**  5.2.3 FHC02 - AUTOLOAD TEST 
* 
*         PURPOSE-
*         FHC02 CHECKS OUT THE AUTOLOAD FROM PP FUNCTION AND THE LOAD 
*         PATH FROM THE PP-S TO RAM.  IN THE PROCESS, THE MICROPROCESSOR
*         AND ITS MEMORY ARE TESTED BY THE PROCESSOR/MEMORY DIAGNOSTICS 
*         WHICH ARE PART OF THE CONTROLWARE.
* 
*         METHOD- 
*         VERIFY THAT THE SCRATCH FILE IS THE RIGHT LENGTH TO BE
*           CONTROLWARE.
*         VERIFY THAT FIRST WORD BELONGS TO CONTROLWARE.
*         CHECK FOR CWARE LENGTH CODE IN THIRD WORD.
*         PERFORM A FULL AUTOLOAD 
*         CHECK GENERAL STATUS
*         PERFORM A ZERO WORD AUTOLOAD
*         CHECK GENERAL STATUS
*         INTERPRET FAILURES
*         READ CHANNEL STATUS.
*         READ DETAILED STATUS. 
*         DISPLAY VERSION OF CONTROLWARE LOADED.
*         CHECK THAT DIAGNOSTIC AND CONTROLLER CORRESPOND.
*         CHECK THAT CORRECT CONTROLWARE WAS LOADED.
* 
*IF -DEF,CMSE17X
*         CAUTIONS- 
*         FULL AUTOLOADS USING FHC02 MAY INTERMITTANTLY PRODUCE RAM/ROM 
*         PARITY ERRORS DURING  "HIGH"  CHANNEL ACTIVITY  (MASS STORAGE 
*         CHANNELS).   LEDS ON THE  7155  INDICATE RAM/ROM PE,  DEADMAN 
*         TIMER, INPUT FULL AND ACCESS CONNECTED.  IF THIS OCCURS RERUN 
*         TEST SEQUENCE OR IF THIS FAILURE  OCCURS DURING "LOW" CHANNEL 
*         ACTIVITY (MASS STORAGE CHANNELS) OR EACH TIME FHC02  IS RUN A 
*         LEGITIMATE FAILURE CAN BE ASSUMED.
* 
*         THIS IS NOT  A  MALET  PROBLEM  BUT  A PROBLEM IN GETTING THE 
*         CONTROLWARE FILE FROM THE OPERATING SYSTEM. 
*ENDIF
* 
/ 
*         ENTRY-
*         THE CONTROLWARE MUST BE ON THE SCRATCH FILE 
*         UNLESS THE DISABLE FULL CONTROLWARE DOWNLOAD
*         BIT OF P5 IS SET. 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS.
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC02A - REPORT EXPECTED ERRORS 
*         FHC989 - CHECK CONTROLWARE LENGTH AND DATA. 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - SYSRD STATUS 
*         B3 - ERROR COUNT
*         B4 - BLOCK COUNTER
*         B5 - RESIDUE
*         B6 - TEMPORARY STORAGE
*         B7 - TEMPORARY STORAGE
*         B8 - EXPECTED LENGTH OF CONTROLWARE 
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         B10- SHORT/LONG FAILURE FLAG
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         IB(0) - GENERAL STATUS
*         IB(504) - FLAG BITS 
*           FLAG1 - EXPECTED (SET)/UNEXPECTED (CLEAR) 
*                   ERROR FLAG BIT
* 
* 
1  FORMAT FHC02 - AUTOLOAD TEST 
2  FORMAT FHC02 - LC=*DECD, EC=*DECD
4  FORMAT FHC02 ERROR(S) = *DECD
6  FORMAT DOWNLOADING C-WARE--*DECD BLOCKS REMAINING
7  FORMAT // FHC02 FULL AUTOLOAD DISABLED, P5=1XXX // 
10 FORMAT // MA7*D-REV-*D CONTROLWARE LOADED // 
11 FORMAT // CONTROLLER INITIALLY HUNG // 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG TO 504, FLAG1S TO 2, FLAG1C TO 7775
* 
/         FUNCTION CODE EQUATES 
* 
   EQUATE ALOAD TO 414,CGS TO 12,DSTAT20 TO 23,OPCOM TO 10
   EQUATE IPCS TO 52
* 
/         PARAMETER EQUATES 
* 
   EQUATE DFCWDL TO 1000     *DISABLE FULL C/W DOWNLOAD 
* 
/        MISCELLANEOUS EQUATES
* 
   EQUATE GENSTAT TO 504, TEMP TO 503 
* 
/         DISPLAY *AUTOLOAD TEST* AND *DISABLED* MESSAGES.
* 
20 MSG 1 TO DISPLAY, PRINT
   IF (P5.AND.DFCWDL.NE.0) MSG 7 TO DISPLAY, PRINT
* 
*        INITIALIZE.
* 
21 B0=142                    *TEST NUMBER 62 HEX
   B1 = B1 + 1               *INCREMENT LOOP COUNTER
   B9 = 02D                  *MODULE NUMBER 02D 
* 
/        CHECK CONTROLWARE ON SCRATCH FILE
* 
   IF (P5.AND.DFCWDL.NE.0) GOTO 40
*IF DEF,CMSE17X,1 
   RES, ABT 70               *RES TO CLEAR EA EC FOR OFFLINE
   CALL 989                  *CHECK CONTROLWARE 
   IF (EC.NE.0) GOTO 70      *CONTROLWARE ERROR 
* 
/        PERFORM FULL AUTOLOAD/FULL INLINE TEST.
* 
40 B10 = 0                   *INIT. FAILURE FLAG
   RES, ABT 70
   GOSUB 63                  *GENERAL STATUS
   IF(EC.EQ.4020B) DCN       *IF CH ACTIVE, DCN 
   IF(EC.AND.7773.EQ.4020)MSG 11 TO DISPLAY,PRINT,DAYFILE 
   IF(EC.AND.7773.EQ.4020)GOTO 41  *IF CONTROLLER HUNG, 
   IF(EC.NE.0) GOTO 70       *IF SUBR ABORT,
   IF (IB(GENSTAT).NE.0) ERROR 3/5, GOTO 70 
41 IF (P5.AND.DFCWDL.NE.0) GOTO 42
   GOSUB 60                  *PERFORM FULL AUTOLOAD 
   IF (IB(GENSTAT).EQ.0) GOTO 42  *IF AUTOLOAD OK,
   B10 = B10 + 2             *SET FULL FAILED BIT 
   ERROR 3/2, GOTO 70 
* 
/         PERFORM SHORT AUTOLOAD/ROM-INLINE TEST. 
42 B4 = 0                    *SET WORD COUNT TO ZERO
   GOSUB 60                  *PERFORM SHORT AUTOLOAD
   IF (IB(GENSTAT).EQ.0) GOTO 46
   B10 = B10 + 1             *SET SHORT FAILED BIT
   IF (P5.AND.DFCWDL.EQ.0) ERROR 3/3, GOTO 70 
44 ERROR 3/4, GOTO 70        *REPORT SHORT AUTOLOAD FAILURE 
* 
/         READ CHANNEL STATUS, SAVE 4HP OPTION STATUS.
* 
46 FUNC IPCS, ABT 70         *CHANNEL STATUS
   STATUS 32D WORDS TO SB(1), ABT 70
   B8 = SB(24)               *4HP OPTION STATUS 
* 
/         READ STATUS, DISPLAY CONTROLWARE VERSION LOADED.
* 
   FUNC DSTAT20, ABT 70 
   STATUS 20D WORDS TO SB(1), ABT 70
   B6 = SB(22) .AND. 340 .RS. 5 
   B6 = B6 + 21D
   B7 = SB(4).AND.1700.RS.6 
   IF(P5.AND.DFCWDL.NE.0) GOTO 47  *IF NO FULL LOAD,
   IF(ES.AND.RC.NE.0) GOTO 47  *IF REPEAT CONDITION,BYPASS
   MSG 10 (B6,B7) TO DISPLAY,PRINT,DAYFILE
   MSG 10 (B6,B7) TO LINE 1 
47 IF(B8.AND.10.EQ.0)ERROR 3/10, GOTO 70       *WRONG CTRLR 
   IF(SB(22).AND.340.NE.40)ERROR 3/11,GOTO 70  *WRONG CWARE 
* 
/        FINALIZE.
* 
57 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 76                       *TERMINATE 
* 
/          AUTOLOAD SUBROUTINE (B4 = LENGTH)
* 
60 IB(GENSTAT) = 7777 
   SYSREW 
   RES, ABT 64               *RESERVE CHANNEL 
   FUNC ALOAD, ABT 64 
   ACN, ABT 64
   IF (B4.EQ.0) GOTO 62      *IF SHORT AUTOLOAD,
   B4=B4-1
61 SYSRD, STATUS TO B2
   MSG 6(B4) TO DISPLAY 
   COPY IB TO OB FOR 500
   B6 = 0                    *SET NORMAL BLOCK PARAMS 
   WC = 500 
   IF (OB.NE.7700) GOTO 51   *IF NOT 77-TABLE,
   B6 = 120                  *SET PARAMS FOR 77-TABLE 
   WC = 360                  *STRIP 77-TABLE
51 OUTB CHAIN WC WORDS FROM OB(B6), ABT 64
52 GOTO 61 WHILE (B4-1.NE.0)
* 
   IF (B5.EQ.500) GOTO 62 
   SYSRD, STATUS TO B2
   B5=WT
   COPY IB TO OB FOR B5 
   OUTB B5 WORDS FROM OB(0), ABT 64 
   GOTO 63
* 
62 DCN, ABT 64
* 
63 FUNC CGS, ABT 64 
   STATUS 1 WORDS TO SB, ABT 64 
   IB(GENSTAT) = SB 
64 RETURN 
* 
/         PROCESS ERRORS. 
* 
70 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 21                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 02A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
   IF (EC.EQ.2) GOTO 42      *RESTART CONTROLLER
* 
75 IF (ES.AND.RC.NE.0) GOTO 21
* 
/        TERMINATE. 
* 
76 RES, ABT 77               *RESERVE CONTROLLER
   FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC02A,6000(05,07,14,16),LOCK 
*   5.2.3.2 FHC02A - REPORT EXPECTED ERRORS 
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC02B - PROCESS HIGHER ERROR NUMBERS.
* 
*         REGISTERS USED- 
*         SAME AS FHC02.
* 
*         BUFFERS USED- 
*         SAME AS FHC02.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC02 -  AUTOLOAD TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC02 - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT 
6  FORMAT STATUS ERROR W*OCT  E*OCT  A*OCT  D*OCT 
* 
/        ERROR NUMBER 62001 HEX 
* 
7  FORMAT SCRATCH FILE TOO LONG FOR CONTROLWARE.
10 FORMAT SCRATCH FILE TOO SHORT FOR CONTROLWARE. 
11 FORMAT GET A CARD DECK CONTAINING THE
12 FORMAT CONTROLWARE, READ IT INTO THE SCRATCH 
13 FORMAT FILE, AND RERUN MODULE. 
* 
/        ERROR NUMBER 62002 HEX 
* 
14 FORMAT FULL AUTOLOAD FAILED
15 FORMAT ADDITIONAL ERROR INFORMATION IS 
16 FORMAT PRESENTED ON THE 7155-S LED-S.
17 FORMAT GENERAL STATUS = *OCTB
* 
/        ERROR NUMBER 62003 HEX 
* 
20 FORMAT SHORT AUTOLOAD FAILED AND FULL WORKED 
21 FORMAT UNEXPECTED ERROR, REVERT TO STANDARD
22 FORMAT TROUBLESHOOTING PRACTICES.
23 FORMAT BOTH AUTOLOAD-S FAILED
* 
/        ERROR NUMBER 62004 HEX 
* 
24 FORMAT SHORT AUTOLOAD FAILED, FULL NOT RUN 
25 FORMAT PUT A COPY OF THE CONTROLWARE IN THE
26 FORMAT SCRATCH FILE, CLEAR BIT 1XXX OF P5, AND 
27 FORMAT RERUN THIS MODULE.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC02A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/         EQUATES 
* 
   EQUATE GENSTAT TO 504
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4 (EA,B0,EC) TO LINE 5 
/ 
   IF (IB(GENSTAT).EQ.0) GOTO 34
   MSG 6(0,0,IB(GENSTAT),IB(GENSTAT)) TO LINE 6 
/ 
34 IF (B0.NE.142) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.LE.4) GOTO 40 
   EXIT TO 02B               *PROCESS HIGHER ERROR NUMBERS
* 
/        ERROR NUMBER 62001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   B0 = EM
   MSG B0 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 62002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 (IB(GENSTAT)) TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 62003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   IF (B10.EQ.1) MSG 20 TO LINE 12
   IF (B10.GT.1) MSG 23 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 5 TO LINE 16 
   GOTO 77
* 
/        ERROR NUMBER 62004 HEX 
* 
43 IF (EC.NE.4) GOTO 45 
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 25 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   GOTO 77
* 
/         REPORT SOFTWARE ERROR 
* 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/         FINALIZE
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC02B,6000(05,07,14,16),LOCK 
*   5.2.3.3 FHC02B - REPORT EXPECTED ERRORS 
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
/         FHC985 - DISPLAY GENERAL AND DETAILED STATUS
* 
*         REGISTERS USED- 
*         SAME AS FHC02.
* 
*         BUFFERS USED- 
*         SAME AS FHC02.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC02 -  AUTOLOAD TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC02 - LINE *OCT - ERROR NUMBER *H*HE
6  FORMAT STATUS ERROR W*OCT  E*OCT  A*OCT  D*OCT 
* 
/        ERROR NUMBER 62005 HEX 
* 
10 FORMAT WRONG GENERAL STATUS AFTER FIRST CONNECT
11 FORMAT MAKE SURE THAT THE 7155 CONTROLLER IS 
12 FORMAT NOT RESERVED BY ANOTHER ACCESS. 
13 FORMAT 
* 
/         ERROR NUMBER 62006 HEX
* 
14 FORMAT SCRATCH FILE MISSING OR EMPTY.
15 FORMAT GET A CARD DECK CONTAINING CONTROLWARE, 
16 FORMAT READ IT INTO SCRATCH FILE, ATTACH FILE, 
17 FORMAT RERUN THIS MODULE.
* 
/         ERROR NUMBER 62007 HEX
* 
20 FORMAT SCRATCH FILE/CONTROLWARE DATA MISCOMPARE. 
* 
/         ERROR NUMBER 62008 HEX
* 
21 FORMAT WRONG CONTROLLER ERROR
22 FORMAT FHC RUNS ON THE 7155-401 CONTROLLER ONLY. 
23 FORMAT RUN FMC ON THIS CONTROLLER (7155-1,1X). 
* 
/        ERROR NUMBER 62009 HEX 
* 
24 FORMAT WRONG CONTROLWARE LOADED ERROR. 
25 FORMAT  MA7*D-REV-*D CONTROLWARE LOADED. 
26 FORMAT 7155-401 CONTROLLER REQUIRES MA722 CONTROLWARE. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC02B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4 (EA,B0,EC) TO LINE 5 
/ 
   IF (EC.LT.5) GOTO 45 
   IF (EC.GT.11) GOTO 45
* 
/        ERROR NUMBER 62005 HEX 
* 
40 IF (EC.NE.5) GOTO 41 
   MSG 6(0,0,SB(0),SB(0)) TO LINE 6 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
/         ERROR NUMBER 62006 HEX
* 
41 IF (EC.NE.6) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/         ERROR NUMBER 62007 HEX
* 
42 IF (EC.NE.7) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/         ERROR NUMBER 62008 HEX
* 
43 IF (EC.NE.10) GOTO 44
   MSG 21 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 985
   MSG 22 TO LINE 14
   MSG 23 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 985
* 
/         ERROR NUMBER 62009 HEX
* 
44 IF (EC.NE.11) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 985
   MSG 25 (B6,B7) TO LINE 14
   MSG 26 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 985
* 
/         REPORT SOFTWARE ERROR 
* 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/         FINALIZE
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC03,6000(05,07,14,16),LOCK
**  5.2.4 FHC03 - NORMAL CHANNEL LOOP TEST
* 
*         PURPOSE-
*         FHC03 VERIFIES THAT THE CHANNEL ACCESS LOGIC AND THE NORMAL 
*         CHANNEL LOGIC, BOTH OF WHICH HAVE ALREADY BEEN CHECKED, CAN 
*         WORK TOGETHER TO GIVE THE PP ACCESS TO THE NORMAL CHANNELS. 
* 
*         METHOD- 
*         DO FOR ALL NORMAL CHANNELS
*           DO FOR ALL DATA PATTERNS
*             READ THE CONTENTS OF THE NOC
*             ELIMINATE THE UNUSED AND ILLEGAL BITS FROM THE DATA 
*               PATTERN 
*             OUTPUT DATA PATTERN ON THE NOC
*             ECHO NOC-S AND READ 
*             COMPARE THE ECHOED VALUE WITH THE DATA PATTERN
*           ENDO
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC03A - REPORT EXPECTED ERRORS 
*         FHC03G - GENERATE DATA
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B5 - CHANNEL INDEX
*         B6 - TEMPORARY STORAGE
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         B10- DIFFERENCE BETWEEN ACTUAL AND EXPECTED(UPPER)
*         B11- DIFFERENCE BETWEEN ACTUAL AND EXPECTED(LOWER)
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(504) - FLAG BITS 
*           FLAG1 - EXPECTED (SET)/UNEXPECTED (CLEAR) 
*                   ERROR FLAG BIT
* 
* 
1  FORMAT FHC03 - NORMAL CHANNEL LOOP TEST
2  FORMAT FHC03 - LC=*DECD, EC=*DECD
4  FORMAT FHC03 ERROR(S) = *DECD
7  FORMAT EXP *OCTB (UPPER 8)/*OCTB (LOWER 8) 
10 FORMAT ACT *OCTB (UPPER 8)/*OCTB (LOWER 8) 
11 FORMAT DIF *OCTB (UPPER 8)/*OCTB (LOWER 8) 
* 
*         FLAG EQUATES
* 
   EQUATE FLAG TO 504 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
*         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 0010      *CLEAR COUPLER CONNECT 
   EQUATE OPNC TO 0050, IPCS TO 0052
   EQUATE ENOC TO 0053, IPFP TO 0054
* 
*         INPUT BUFFER INDEX EQUATES
* 
   EQUATE EXP TO 0, ACT TO 32D, MSK TO 64D
* 
*         OUPTUT BUFFER INDEX EQUATES 
* 
   EQUATE IBMSK TO 0, UBMSK TO 32D
   EQUATE OPNCPRM TO 64D
   EQUATE DATPAT TO 67D 
   EQUATE TEMP TO 503 
* 
*         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 25         *NUMBER OF DATA PATTERNS 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/        INITIALIZE.
* 
21 B0=143                    *TEST NUMBER 63 HEX
   B1=0                      *LOOP COUNT
   B3=0                      *ERROR COUNT 
   B5=0                      *CHANNEL INDEX 
   B9 = 03D                  *MODULE NUMBER 03D 
   CALL 03G 
* 
24 B2 = 0                    *BEGINNING OF CHANNEL LOOP 
* 
/        RESERVE, CONNECT, AND ECHO NORMAL OUTPUT CHANNELS. 
* 
30 B1 = B1 + 1               *INCREMENT LOOP COUNT
   RES, ABT 70               *RESERVE CONTROLLER CHANNEL
   FUNC ENOC, ABT 70
   STATUS 32D WORDS TO IB(EXP), ABT 70
* 
/         BUILD PARAMETER WORDS AND EXPECTED TABLE
* 
40 OB(OPNCPRM) = B5          *CHANNEL NUMBER
   B2=B2.LS.1                *DATA PATTERN INDEX
   B5=B5.LS.1                *EXPECTED TABLE INDEX
   B6=OPNCPRM+1              *PARAMETER WORD INDEX
* 
/         UPPER 8 BITS
* 
   OB(B6)=OB(B2+DATPAT)      *PARAMETER WORD
   OB(B6)=OB(B6).AND.OB(B5+UBMSK)  *UNUSED BIT MASK 
   OB(B6)=OB(B6).AND.OB(B5+IBMSK)  *ILLEGAL BIT MASK
   IB(B5+EXP)=OB(B6)         *EXPECTED TABLE
* 
/         LOWER 8 BITS
* 
   B2=B2+1
   B5=B5+1
   B6=B6+1
* 
   OB(B6)=OB(B2+DATPAT)      *PARAMETER WORD
   OB(B6)=OB(B6).AND.OB(B5+UBMSK) 
   OB(B6)=OB(B6).AND.OB(B5+IBMSK) 
   IB(B5+EXP)=OB(B6)         *EXPECTED TABLE
* 
   B2=B2-1.RS.1 
* 
/         SEND DATA TO NORMAL CHANNEL 
* 
47 FUNC OPNC, ABT 70
   ACN, ABT 70
   OUT 3 WORDS FROM OB(OPNCPRM), ABT 70 
* 
/         READ CONTENTS OF OUTPUT CHANNELS
* 
   FUNC ENOC, ABT 70
   STATUS 32D WORDS TO IB(ACT), ABT 70
   B6=B5-1                   *INDEX TO UPPER BITS 
* 
   IB(B5+MSK)=IB(B5+ACT).AND.OB(B5+UBMSK).AND.OB(B5+IBMSK)
   IB(B6+MSK)=IB(B6+ACT).AND.OB(B6+UBMSK).AND.OB(B6+IBMSK)
* 
/         COMPARE LOWER 
* 
   IF (IB(B5+EXP).NE.IB(B5+MSK)) GOTO 64
* 
/         COMPARE UPPER 
* 
   IF (IB(B6+EXP).NE.IB(B6+MSK)) GOTO 64
57 B5=B5-1.RS.1 
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 30 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 24 WHILE (B5+1.LE.15D)   *END OF CHANNEL LOOP 
   GOTO 76                       *TERMINATE 
* 
/        DISPLAY AND ANALYZE DATA ERRORS
* 
64 OB(501)=IB(B6+EXP) 
   OB(503)=IB(B5+EXP) 
   MSG 7(OB(501),OB(503)) TO LINE 6 
* 
   OB(501)=IB(B6+ACT) 
   OB(503)=IB(B5+ACT) 
   MSG 10(OB(501),OB(503)) TO LINE 7
* 
   B10 = IB(B6+EXP).XOR.IB(B6+MSK)
   B11 = IB(B5+EXP).XOR.IB(B5+MSK)
   MSG 11 (B10,B11) TO LINE 10
   B5 = B5 - 1 .RS. 1 
   IF (OB(501)+OB(503).EQ.0) GOTO 65
   IF (B10.XOR.B11.NE.0) GOTO 66
65 ERROR 3/5, GOTO 67 
* 
66 IF (B5.LE.03) ERROR 3/1, GOTO 67 
   IF (B5.LE.07) ERROR 3/2, GOTO 67 
   IF (B5.LE.13) ERROR 3/3, GOTO 67 
   IF (B5.LE.16) ERROR 3/4, GOTO 67 
   ERROR 3/6
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 OB(FLAG)=OB(FLAG).OR.FLAG1S  *SET FLAG 1 
   GOTO 71
* 
*        PROCESS UNEXPECTED ERRORS. 
* 
70 B5 = B5 - 1 .RS. 1 
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 30                   *GO TO REPEAT CONDITION
* 
*        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 03A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
   IF (ES.AND.RC.NE.0) GOTO 30  *IF RC SET, 
   RES, ABT 77
* 
/        TERMINATE. 
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC03A,6000(05,07,14,16),LOCK 
*   5.2.4.2 FHC03A - REPORT EXPECTED ERRORS 
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
* 
*         REGISTERS USED- 
*         SAME AS FHC03.
* 
*         BUFFERS USED- 
*         SAME AS FHC03.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC03 - NORMAL CHANNEL LOOP TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC03 - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT 
* 
/        ERROR NUMBER 63001 HEX 
* 
10 FORMAT NORMAL CHANNEL *DECD FAILURE
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT A20, A21, A16, AND A08. 
13 FORMAT A20, A21, B04, B13, B21, AND A22. 
14 FORMAT A20, A21, B26, B27, AND B21.
15 FORMAT A20, A21, A12, A11, A10, AND A09. 
* 
/        ERROR NUMBER 63002 HEX 
* 
/ 10      NORMAL CHANNEL *DECD FAILURE
/ 11      SUCCESSIVELY REPLACE CARDS
16 FORMAT A19, A21, B19, B20, B26, AND B27. 
17 FORMAT A19, A21, A15, B21, B22, B23, B24, B25, AND A27.
* 
/        ERROR NUMBER 63003 HEX 
* 
/ 10      NORMAL CHANNEL *DECD FAILURE
/ 11      SUCCESSIVELY REPLACE CARDS
22 FORMAT A18, A21, AND B04.
23 FORMAT A18, A21, B13, AND B05 THRU B12.
24 FORMAT A18, A21, A12, A11, A10, AND A09. 
* 
/        ERROR NUMBER 63004 HEX 
* 
/ 10      NORMAL CHANNEL *DECD FAILURE
/ 11      SUCCESSIVELY REPLACE CARDS
26 FORMAT A17, A21, A12, A11, A10, AND A09. 
* 
/         ERROR NUMBER 63005 HEX
* 
/ 10       NORMAL CHANNEL *DECD FAILURE 
/ 11       SUCCESSIVELY REPLACE CARDS 
27 FORMAT R/T CARD(A01/A02/A03/A04), A08 AND A16. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC03A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
/ 
   IF (B0.NE.143) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.5) GOTO 45 
* 
/        ERROR NUMBER 63001 HEX 
* 
   MSG 10(B5) TO LINE 12
/ 
   IF (EC.NE.1) GOTO 41 
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   IF(B5.EQ.0) MSG 12 TO LINE 15
   IF(B5.EQ.1) MSG 13 TO LINE 15
   IF(B5.EQ.2) MSG 14 TO LINE 15
   IF(B5.EQ.3) MSG 15 TO LINE 15
   MSG 5 TO LINE 16 
   GOTO 77
* 
/        ERROR NUMBER 63002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   IF(B5.LE.5) MSG 16 TO LINE 15
   IF(B5.GT.5) MSG 17 TO LINE 15
   MSG 5 TO LINE 16 
   GOTO 77
* 
/        ERROR NUMBER 63003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   IF(B5.EQ.10B) MSG 22 TO LINE 15
   IF(B5.EQ.11B) MSG 23 TO LINE 15
   IF(B5.EQ.12B) MSG 23 TO LINE 15
   IF(B5.EQ.13B) MSG 24 TO LINE 15
   MSG 5 TO LINE 16 
   GOTO 77
* 
/        ERROR NUMBER 63004 HEX 
* 
43 IF (EC.NE.4) GOTO 44 
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 26 TO LINE 15
   MSG 5 TO LINE 16 
   GOTO 77
* 
/         ERROR NUMBER 63005 HEX
* 
44 IF(EC.NE.5) GOTO 45
   IF(P4.AND.4000.EQ.0) GOTO 77 
   MSG 11 TO LINE 14
   MSG 27 TO LINE 15
   MSG 5 TO LINE 16 
   GOTO 77
/ 
45 MSG 30 (EA,B0,EC,EM) TO LINE 12
/ 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC03G,6000(05,07,14,16),LOCK 
*   5.2.4.3 FHC03G - GENERATE DATA
* 
*         PURPOSE-
*         FHC03G FILLS THE OUTPUT BUFFER TABLES FOR ILLEGAL AND UNUSED
*         BITS FOR EACH NORMAL CHANNEL AND WITH THE DATA PATTERNS.
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT- 
*         OUTPUT BUFFER CHANGED.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(37)     ILLEGAL BIT TABLE
*         OB(40) - OB(77)    UNUSED BIT TABLE 
*         OB(100) - OB(154)  DATA PATTERNS
* 
*         REMARKS-
*         NONE OF THE BITS ON NOC 0 ARE CONSIDERED LEGAL
*         BECAUSE THEY ARE ALL ALTERED IN THE CONTROLWARE-S 
*         IDLE LOOP AND, THEREFORE CANNOT BE PREDICTED. 
* 
*         THE LAST PATTERN USED MUST BE ZEROES FOR THE SAKE 
*         OF NOC 4 AND 5. 
* 
* 
/ 
/        NOC LEGAL BIT MASK TABLE 
/ 
   DATA (OB(00),CON) 000,000  *NOC 0
   DATA (OB(02),CON) 316,257  *NOC 1
   DATA (OB(04),CON) 377,377  *NOC 2
   DATA (OB(06),CON) 377,377  *NOC 3
   DATA (OB(10),CON) 377,377  *NOC 4
   DATA (OB(12),CON) 377,377  *NOC 5
   DATA (OB(14),CON) 377,377  *NOC 6
   DATA (OB(16),CON) 377,377  *NOC 7
   DATA (OB(20),CON) 377,377  *NOC 8
   DATA (OB(22),CON) 377,157  *NOC 9
   DATA (OB(24),CON) 377,377  *NOC 10 
   DATA (OB(26),CON) 377,377  *NOC 11 
   DATA (OB(30),CON) 377,377  *NOC 12 
   DATA (OB(32),CON) 377,377  *NOC 13 
   DATA (OB(34),CON) 377,377  *NOC 14 
   DATA (OB(36),CON) 377,377  *NOC 15 
/ 
/        NOC USED BIT MASK TABLE
/ 
   DATA (OB(40),CON) 003,377  *NOC 0
   DATA (OB(42),CON) 377,377  *NOC 1
   DATA (OB(44),CON) 000,377  *NOC 2
   DATA (OB(46),CON) 000,077  *NOC 3
   DATA (OB(50),CON) 000,000  *NOC 4
   DATA (OB(52),CON) 000,000  *NOC 5
   DATA (OB(54),CON) 347,377  *NOC 6
   DATA (OB(56),CON) 347,377  *NOC 7
   DATA (OB(60),CON) 377,377  *NOC 8
   DATA (OB(62),CON) 000,377  *NOC 9
   DATA (OB(64),CON) 377,377  *NOC 10 
   DATA (OB(66),CON) 377,377  *NOC 11 
   DATA (OB(70),CON) 377,377  *NOC 12 
   DATA (OB(72),CON) 377,377  *NOC 13 
   DATA (OB(74),CON) 377,377  *NOC 14 
   DATA (OB(76),CON) 000,000  *NOC 15 
/ 
/         PARAMETER WORDS FOR OUTPUT ON PROCESSOR 
/         NORMAL CHANNEL
/ 
   DATA (OB(100),CON) 0000,0000,0000
/ 
/         DATA PATTERNS 
/ 
   DATA (OB(103),CON) 000,000  *ALL ZEROES
   DATA (OB(105),CON) 377,377  *ALL ONES
/ 
   DATA (OB(107),CON) 252,252  *2525
   DATA (OB(111),CON) 525,525  *5252
/ 
   DATA (OB(113),CON) 001,001  *SLIDING ONES
   DATA (OB(115),CON) 002,002 
   DATA (OB(117),CON) 004,004 
   DATA (OB(121),CON) 010,010 
   DATA (OB(123),CON) 020,020 
   DATA (OB(125),CON) 040,040 
   DATA (OB(127),CON) 100,100 
   DATA (OB(131),CON) 200,200 
/ 
   DATA (OB(133),CON) 177,177  *SLIDING ZEROES
   DATA (OB(135),CON) 277,277 
   DATA (OB(137),CON) 337,337 
   DATA (OB(141),CON) 357,357 
   DATA (OB(143),CON) 367,367 
   DATA (OB(145),CON) 373,373 
   DATA (OB(147),CON) 375,375 
   DATA (OB(151),CON) 376,376 
   DATA (OB(153),CON) 000,000  *THE LAST PATTERN MUST BE 0
/ 
10 IF (P8.AND.20.NE.0) GOTO 20
   OB(63)=17                 *NOC 9 LOWER 
   OB(64)=0                  *NOC 10 UPPER
   OB(65)=0                  *NOC 10 LOWER
20 EXIT 
   END 10 
COMPILE 
   MODULE FHC04,6000(05,07,14,16),LOCK
**  5.2.5 FHC04 - DEAD MAN TIMER TEST 
* 
*         PURPOSE-
*         FHC04 VERIFIES THAT THE DEAD MAN TIMER
*         DEACTIVATES THE CHANNEL AFTER THE SPECIFIED 
*         AMOUNT OF TIME (FROM 3 TO 6 SECONDS). 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION.
* 
*         METHOD- 
*         ISSUE THE BLOCK TRANSFER BUFFER WRITE FUNCTION
*         ACTIVATE THE CHANNEL
*         TIME HOW LONG IT TAKES FOR THE 7155 TO DEACTIVATE THE CHANNEL 
*         REPORT ERROR IF IT WAS TOO LONG OR TOO SHORT
*         VERIFY THAT THE DEAD MAN TIMER BIT IS SET IN THE DETAILED 
*           STATUS
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC04A - REPORT EXPECTED ERRORS 
*         FHC04G - INTEGER DIVISION BY 1000D
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - TEMPORARY STORAGE
*         B3 - ERROR COUNT
*         B4 - TEMPORARY STORAGE
*         B5 - TEMPORARY STORAGE
*         B6 - UPPER 12 BITS OF TIMER 
*         B7 - LOWER 12 BITS OF TIMER 
*         B8 - INITIAL TIME DELAY 
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         B10 - MAX. TIME LIMIT (UPPER 12)
*         B11 - MAX. TIME LIMIT (LOWER 12)
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) AND OB(1) - TIME IN MICROSECONDS
*         OB(2) AND OB(3) - TIME IN MILLISECONDS
*         OB(4) AND OB(5) - TIME IN SECONDS 
*         OB(504) - FLAG BITS 
*           FLAG1 - EXPECTED (SET)/UNEXPECTED (CLEAR) 
*                   ERROR FLAG BIT
* 
*         REMARKS-
*         3,000,000D = 13343300B  3.0 SECONDS 
*         6,000,000D = 26706600B  6.0 SECONDS 
* 
*         THE INITIAL DELAY USES A 4000D USEC DELAY 
*         TO ASSURE THAT THE REAL TIME CLOCK WRAPS AROUND.
*         THIS IS THE ONLY TECHNIQUE THAT WILL OVERRIDE 
*         THE 2.0 SECOND MAXIMUM TIME BETWEEN RELEASES
*         WHICH THE OPERATING SYSTEMS REQUIRE.
* 
*         THE DMT BIT IN NIC 0 IS NOT CHECKED.  IF IT FAILS,
*         THE DMT BIT IN THE DETAILED STATUS WILL ALSO FAIL.
* 
* 
1  FORMAT FHC04 - DEAD MAN TIMER TEST 
4  FORMAT FHC04 ERROR(S) = *DECD
5  FORMAT TIME = *DD SECONDS + *DED MILLISECONDS
6  FORMAT LESS THAN 3.0 SECONDS 
7  FORMAT // FHC04 NOT EXECUTED, NEEDS AL=0021,AL=*OCT // 
10 FORMAT -PAUSE- // FHC04 RM SELECTED // 
* 
*         FUNCTION CODE EQUATES 
* 
   EQUATE DSTAT20 TO 0023 
   EQUATE OPCOM TO 0010      *CLEAR COUPLER CONNECT 
   EQUATE IPCS TO 0052
   EQUATE BTBMW TO 0033 
* 
*         FLAG EQUATES
* 
   EQUATE FLAG TO 504 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
*         STATUS BIT EQUATES
* 
   EQUATE DMT TO 0010 
* 
*         TIME LIMIT EQUATES
* 
   EQUATE T3S TO 750D, T4S TO 1125D     *3.0 OR 4.5 SEC 
   EQUATE TD3SU TO 1334, TD3SL TO 3300  *DELAY TIME(3.0 SEC)
   EQUATE TD4SU TO 2112, TD4SL TO 5040  *DELAY TIME(4.5 SEC)
   EQUATE TMAXU TO 2670, TMAXL TO 6600  *UPPER TIME LIMIT 
   EQUATE TMINU TO 1334, TMINL TO 3300  *LOWER TIME LIMIT 
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF (AL.GE.21) GOTO 22
   MSG 7 (AL) TO DISPLAY, PRINT 
21 IF(ES.AND.RM.EQ.0) EXIT
   MSG 10 TO LINE 1 
   MSG 10 TO DISPLAY, PRINT 
   PAUSE
   GOTO 20
* 
*        INITIALIZE.
* 
22 B0=144                    *TEST NUMBER 64 HEX
   B1=0                      *LOOP COUNT
   B3=0                      *ERROR COUNT 
   B9 = 04D                  *MODULE NUMBER 04D 
   WC=1 
   BA=0 
   OB(BA)=0 
* 
*        RESERVE, CONNECT, ETC. 
* 
* 
*        PERFORM DEAD MAN TIMER TEST. 
* 
30 B1 = B1 + 1               *INCREMENT LOOP COUNT
   B6 = TD3SU                *ACCUMULATED TIME
   B7 = TD3SL 
   B8 = T3S                  *SET 3.0 SEC. DELAY
   B10 = TD4SU               *SET MAX. TIME LIMIT 
   B11 = TD4SL
* 
40 RES, ABT 70               *RESERVE CHANNEL 
   FUNC BTBMW, ABT 70 
   ACN, ABT 70
   OUT CHAIN, ABT 70
   B2=0 
* 
*         DELAY 3.0 SECONDS 
* 
41 DELAY 4000D USEC 
   GOTO 41 WHILE (B2+1.LT.B8) 
   B5=RT                     *START CLOCK 
* 
42 B4=B5                     *SAVE OLD TIME 
   B5=RT                     *SAVE NEW TIME 
* 
*         CALCULATE ELAPSED TIME
* 
   B2=B5-B4.RS.17D           *BORROW BIT
   B2=B5-B4+B2               *ELAPSED TIME
* 
*         ADD ELAPSED TIME TO ACCUMULATED TIME
* 
   B4=B7+B2.RS.12D           *CARRY BIT 
   B6=B6+B4                  *UPPER 12 BITS 
   B7=B7+B2                  *LOWER 12 BITS 
* 
   IF (B6.GT.B10) GOTO 50 
   IF (B6.LT.B10) GOTO 44 
   IF (B7.GT.B11) GOTO 50    *IF ETL.GT.LOWER MAX TIME, 
* 
44 ACN, ABT 42               *BOTTOM OF WAIT LOOP 
* 
   DCN, ABT 70
* 
   IF (B6.LT.TMINU) GOTO 54 
   IF (B6.GT.TMINU) GOTO 46 
   IF (B7.LT.TMINL) GOTO 54 
* 
46 RES,ABT 70 
   FUNC DSTAT20, ABT 70 
   STATUS 20D WORDS TO SB(1), ABT 70
   IF (SB(17D).AND.DMT.EQ.0) ERROR 3/3, GOTO 67 
   GOSUB 56 
   GOTO 76                   *TERMINATE 
* 
*         REPORT TOO LONG ERROR 
* 
50 DCN, ABT 51
51 REL, ABT 70
   IF (B8.EQ.T4S) GOTO 53 
   B6 = TD4SU                *ACCUMULATED TIME
   B7 = TD4SL 
   B8 = T4S                  *SET 4.5 SEC DELAY 
   B10 = TMAXU               *SET MAX. TIME LIMIT 
   B11 = TMAXL
   GOTO 40                   *REPEAT DEADMAN TIMER TEST 
53 ERROR 3/1, GOTO 67 
* 
*         REPORT TOO SHORT ERROR
* 
54 GOSUB 56 
   ERROR 3/2, GOTO 67 
* 
*         CONVERT USEC TO MSEC AND SEC
* 
56 OB(0)=B6                  *SAVE USEC 
   OB(1)=B7 
   CALL 04G                  *DIVIDE BY 1000D 
   OB(2)=B6                  *SAVE MSEC 
   OB(3)=B7 
   CALL 04G                  *DIVIDE BY 1000D 
   OB(4)=B6                  *SAVE SEC
   OB(5)=B7 
* 
*         CALCULATE RESIDUAL MSEC 
* 
57 B2=OB(3)-1000D.RS.17D     *BORROW BIT
   OB(2)=OB(2)-B2 
   OB(3)=OB(3)-1000D
   GOTO 57 WHILE (B7-1.NE.0)
* 
   MSG 5(OB(5),OB(3)) TO LINE 7 
   IF (OB(5).LT.4) MSG 6 TO LINE 7
   PICTURE
   RETURN 
* 
*        PROCESS EXPECTED ERRORS. 
* 
67 OB(FLAG)=OB(FLAG).OR.FLAG1S  *SET FLAG 1 
   GOTO 71
* 
*        PROCESS UNEXPECTED ERRORS. 
* 
70 OB(FLAG)=OB(FLAG).AND.FLAG1C  *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
* 
*        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 04A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 RES, ABT 77
* 
/        TERMINATE. 
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 22
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC04A,6000(05,07,14,16),LOCK 
*   5.2.5.1 FHC04A - REPORT EXPECTED ERRORS 
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC985 - DISPLAY GENERAL AND DETAILED STATUS. 
* 
*         REGISTERS USED- 
*         SAME AS FHC04.
* 
*         BUFFERS USED- 
*         SAME AS FHC04.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC04 - DEAD MAN TIMER TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC04 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 64001 HEX 
* 
10 FORMAT DEAD MAN TIMER WAS TOO LONG (GREATER THAN 6 SEC.) 
11 FORMAT RERUN MODULE FHC04 WITH A DEDICATED 
12 FORMAT CHANNEL.  IF THE SAME FAILURE OCCURS, 
13 FORMAT REPLACE CARD A08. 
* 
/        ERROR NUMBER 64002 HEX 
* 
14 FORMAT DEAD MAN TIMER DELAY WAS TOO SHORT. 
15 FORMAT REPLACE CARD A08. 
16 FORMAT 
17 FORMAT 
* 
/        ERROR NUMBER 64003 HEX 
* 
20 FORMAT DEAD MAN TIMER BIT NOT SET IN WORD 17D OF 
21 FORMAT DETAILED STATUS.
22 FORMAT REPLACE CARD A08. 
23 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC04A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
/ 
   IF (B0.NE.144) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.4) GOTO 45 
* 
/        ERROR NUMBER 64001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 64002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 64003 HEX 
* 
42 IF (EC.NE.3) GOTO 45 
   MSG 20 TO LINE 12
   MSG 21 TO LINE 13
   IF (P4.AND.4000.EQ.0) EXIT TO 985
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 985
/ 
45 MSG 30 (EA,B0,EC,EM) TO LINE 12
/ 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC04G,6000(05,07,14,16),LOCK 
*   5.2.5.2 FHC04G - INTEGER DIVIDE BY 1000D
* 
*         PURPOSE-
*         FHC04G DIVIDES THE 24-BIT NUMBER CONTAINED IN 
*         REGISTERS B6/B7 BY 1000D AND REPLACES IT WITH 
*         THE QUOTIENT. 
* 
*         METHOD- 
*         1000D IS SUBTRACTED FROM THE 24 BIT DIVIDEND
*         UNTIL IT GOES NEGATIVE.  THE NUMBER OF SUBTRACTS
*         MINUS ONE IS THEN THE QUOTIENT. 
/ 
*         ENTRY-
*         B6 - UPPER 12 BITS OF THE 24 BIT DIVIDEND 
*         B7 - LOWER 12 BITS OF THE 24 BIT DIVIDEND 
* 
*         EXIT- 
*         B6 - UPPER 12 BITS OF THE 24 BIT QUOTIENT 
*         B7 - LOWER 12 BITS OF THE 24 BIT QUOTIENT 
*         OB(502) THROUGH OB(504) ARE DESTROYED 
*         IB(502) THROUGH IB(504) ARE DESTROYED 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         B2 - BORROW/CARRY BIT 2**12 
*         B3 - BORROW BIT 2**24 
*         B4 - UPPER 12 BITS OF QUOTIENT
*         B5 - LOWER 12 BITS OF QUOTIENT
* 
*         BUFFERS USED- 
*         OB(502) THROUGH OB(504) AND IB(502) THROUGH 
*           IB(504) ARE USED TO SAVE THE REGISTERS. 
* 
*         REMARKS-
*         BY CHANGING THE EQUATE FOR DIVISOR, THIS MODULE 
*         CAN BE MODIFIED TO DIVIDE BY ANY NUMBER LESS
*         THAN 4096D. 
* 
*         KNOWN LIMITATIONS-
* 
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE DIVISOR TO 1000D
* 
/         SAVE THE REGISTERS
* 
20 OB(503)=B0 
   OB(502)=B1 
   OB(501)=B2 
   IB(503)=B3 
   IB(502)=B4 
   IB(501)=B5 
   B4=0 
   B5=0 
* 
/         SUBTRACT DIVISOR FROM DIVIDEND (B6/B7)
* 
30 B2=B7-DIVISOR.RS.17D      *BORROW BIT 2**12
   B3=B6-B2.RS.17D           *BORROW BIT 2**24
/ 
   B7=B7-DIVISOR+B3          *LOWER 12 BITS 
   B6=B6-B2                  *UPPER 12 BITS 
   IF (B3.NE.0) GOTO 34      *EXIT IF NEGATIVE
* 
/         INCREMENT QUOTIENT (B4/B5)
* 
   B2=B5+1.RS.12D            *CARRY BIT 2**12 
   B4=B4+B2                  *UPPER 12 BITS 
   B5=B5+1                   *LOWER 12-BITS 
   GOTO 30
* 
/         REPLACE DIVIDEND WITH QUOTIENT
* 
34 B6=B4                     *UPPER 12 BITS 
   B7=B5                     *LOWER 12 BITS 
* 
/         RESTORE REGISTERS 
* 
   B0=OB(503) 
   B1=OB(502) 
   B2=OB(501) 
   B3=IB(503) 
   B4=IB(502) 
   B5=IB(501) 
* 
/ 
* 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC07,6000(05,07,14,16),LOCK
**  5.2.6 FHC07 - SPECIAL CHANNEL TEST
* 
*         PURPOSE-
*         FHC07 USES THE BLOCK TRANSFER WRITE AND READ TO TEST THE
*         LOGIC ON THE SPECIAL CYBER CHANNEL BOARD. 
* 
*         METHOD- 
*         DO FOR PATTERNS 0 THROUGH 5.
*           FILL THE OUTPUT BUFFER
*           WRITE TO BUFFER MEMORY
*           READ FROM BUFFER MEMORY 
*           COMPARE DATA
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS.
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC07A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  ONE SECTOR OF OUTPUT BUFFER
*         IB(0) - IB(501)  ONE SECTOR OF INPUT BUFFER 
*         OB(504) - FLAG BITS 
*           FLAG1 - EXPECTED (SET)/UNEXPECTED (CLEAR) 
*                   ERROR FLAG BIT
* 
* 
1  FORMAT FHC07 - SPECIAL CHANNEL TEST
2  FORMAT FHC07 - LC=*DECD, EC=*DECD
4  FORMAT FHC07 ERROR(S) = *DECD
* 
/         FLAG EQUATES
* 
   EQUATE FLAG TO 504 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 0010      *CLEAR COUPLER CONNECT 
   EQUATE BTBMW TO 0033 
   EQUATE BTBMR TO 0032 
   EQUATE CGS TO 0012 
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 6          *NUMBER OF DATA PATTERNS 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/        INITIALIZE.
* 
21 B0=147                    *TEST NUMBER 67 HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B9 = 07D                  *MODULE NUMBER 07D 
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 502B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 502B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 502B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 502B   5252 PATTERN 
/ 
/         4.  SLIDING ONE 
/ 
30 IF (B2.NE.4) GOTO 34 
   OB(BA)=B15 
   OB(BA+1)=2 
   B15=BA+1 
32 OB(B15+1)=OB(B15).LS.1 
   IF (OB(B15+1).EQ.0) OB(B15+1)=1
   GOTO 32 WHILE (B15+1.LT.WC)
   B15=OB(BA) 
   OB(BA)=1 
   GOTO 50
/ 
/         5.  SLIDING ZERO
* 
34 IF (B2.NE.5) GOTO 40 
   OB(BA)=B15 
   OB(BA+1)=7775
   B15=BA+1 
36 OB(B15+1)=OB(B15).XOR.7777.LS.1
   IF (OB(B15+1).EQ.0) OB(B15+1)=1
   OB(B15+1)=OB(B15+1).XOR.7777 
   GOTO 36 WHILE (B15+1.LT.WC)
   B15=OB(BA) 
   OB(BA)=7776
   GOTO 50
/ 
/         6.  SLIDING PAIR OF ONES
*                   B2=6
40 OB(BA)=B15 
   OB(BA+1)=6 
   B15=BA+1 
42 OB(B15+1)=OB(B15).LS.1 
   IF (OB(B15+1).EQ.4000) OB(B15+1)=4001
   IF (OB(B15+1).EQ.2) OB(B15+1)=3
   GOTO 42 WHILE (B15+1.LT.WC)
   B15=OB(BA) 
   OB(BA)=3 
   GOTO 50
* 
/        PERFORM SPECIAL CHANNEL TEST.
* 
50 B1=B1+1
   WC = 502B                 *SET WORD COUNT
   RES, ABT 70
   FUNC BTBMW, ABT 70 
   ACN, ABT 70
   OUTB, ABT 70 
   FUNC CGS, ABT 70 
   STATUS 1 WORDS TO SB(0), ABT 70
   IF (SB(0).NE.0) ERROR 3/1, GOTO 67 
* 
/ 
* 
   FUNC BTBMR, ABT 70 
   ACN, ABT 70
   INB, ABT 70
   FUNC CGS, ABT 70 
   STATUS 1 WORDS TO SB(0), ABT 70
   IF (SB(0).NE.0) ERROR 3/2, GOTO 67 
* 
/ 
* 
   COMPARE OB TO IB FOR WC, ABT 64
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/        ANALYZE DATA ERRORS
* 
64 B4=OB(WC).XOR.IB(WC) 
   ERROR 3/3, GOTO 67 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 OB(FLAG)=OB(FLAG).OR.FLAG1S  *SET FLAG 1 
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 OB(FLAG)=OB(FLAG).AND.FLAG1C  *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 50                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 07A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 77
* 
/        TERMINATE. 
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC07A,6000(05,07,14,16),LOCK 
*   5.2.6.1 FHC07A - REPORT EXPECTED ERRORS 
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC07.
* 
*         BUFFERS USED- 
*         SAME AS FHC07.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC07 - SPECIAL CHANNEL TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC07 - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT DATA ERROR   W*OCT  E*OCT  A*OCT  D*OCT 
6  FORMAT STATUS ERROR W*OCT  E*OCT  A*OCT  D*OCT 
* 
/        ERROR NUMBER 67001 HEX 
* 
10 FORMAT WRONG GENERAL STATUS AFTER BUFFER MEMORY WRITE
11 FORMAT REPLACE BOARD A21.
12 FORMAT 
13 FORMAT 
* 
/        ERROR NUMBER 67002 HEX 
* 
14 FORMAT WRONG GENERAL STATUS AFTER BUFFER MEMORY READ 
15 FORMAT REPLACE BOARD A21.
16 FORMAT 
17 FORMAT 
* 
/        ERROR NUMBER 67003 HEX 
* 
20 FORMAT DATA MISCOMPARE AFTER A BUFFER MEMORY WRITE/READ
21 FORMAT SUCCESSIVELY REPLACE CARDS A16, A21, A08, AND THE 
22 FORMAT RECEIVER/TRANSMITTER BOARD FOR THIS ACCESS. 
23 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC07A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
/ 
   IF (B0.NE.147) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.3) GOTO 45 
* 
/        ERROR NUMBER 67001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 6(0,0,SB(0),SB(0)) TO LINE 7 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 67002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 6(0,0,SB(0),SB(0)) TO LINE 7 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 67003 HEX 
* 
42 IF (EC.NE.3) GOTO 45 
   MSG 5(WC,OB(WC),IB(WC),B4) TO LINE 7 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   GOTO 77
/ 
45 MSG 30 (EA,B0,EC,EM) TO LINE 12
/ 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
*IF DEF,CMSE17X 
   MODULE FHC08,6000(05,07,14,16),LOCK
**  5.2.7 FHC08 - PARITY CHECKER TEST I 
* 
*         PURPOSE-
*         FHC08 USES A BUFFER WRITE TO VERIFY THE OPERATION OF THE
*         *P.E. ON CURRENT WORD* PARITY CHECKER ON THE CYBER MUX BOARD. 
* 
*         METHOD- 
*         IF 815 OR 825  SELECTED (P8=1XXX), THEN 
*           EXIT TO FHC08B
*         ENDIF 
*         IF OPERATOR INTERVENTION IS DISABLED, THEN
*           EXIT
*         ENDIF 
*         IF THE MAINFRAME BEING USED IS NOT A CYBER 17X, THEN
*           REPORT ERROR
*         ENDIF 
*         DO FOR ALL DATA PATTERNS
*           FILL THE DATA BUFFER
*           IF ANY OF THE WORDS IN THE BUFFER HAVE AN EVEN NUMBER OF
*             BITS, THEN SET FLAG 2 
*           ENDIF 
*           IF ANY OF THE WORDS IN THE BUFFER HAVE AN ODD NUMBER OF 
*             BITS, THEN SET FLAG 3 
*           ENDIF 
*           ISSUE A BUFFER WRITE FUNCTION 
*           TURN ON FORCE ZERO PARITY 
*           OUTPUT
*           TURN OFF FORCE ZERO PARITY
*           GET GENERAL STATUS
*           IF GENERAL STATUS IS NON ZERO, THEN 
*             REPORT ERROR
*           ENDIF 
*           GET CHANNEL STATUS
*           IF FLAG 3 IS SET, THEN
*             IF PARITY ERROR BIT IS SET, THEN
*               REPORT ERROR
*             ENDIF 
*           ELSE
*             IF PARITY ERROR BIT IS CLEAR, THEN
*               REPORT ERROR
*             ENDIF 
*           ENDIF 
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS.
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC08A - REPORT EXPECTED ERRORS 
*         FHC08B - PARITY CHECKER I FOR 800 SERIES
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - BIT INDEX
*         B6 - TEMPORARY STORAGE
*         B7 - BIT COUNTER
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  ONE SECTOR OUTPUT BUFFER 
*         OB(504) - FLAG BITS 
*           FLAG1 - EXPECTED (SET)/UNEXPECTED (CLEAR) 
*                   ERROR FLAG BIT
*           FLAG2 - SET FOR ODD NUMBER OF BITS IN WORD
*           FLAG3 - SET FOR EVEN NUMBER OF BITS IN WORD 
* 
* 
1  FORMAT FHC08 - PARITY CHECKER TEST I 
2  FORMAT FHC08 - LC=*DECD, EC=*DECD
4  FORMAT FHC08 ERROR(S) = *DECD
5  FORMAT -PAUSE- OPERATOR INTERVENTION INSTRUCTION.
6  FORMAT VERIFY THAT 17X AND 7155 PARITY SWITCHES ARE ON,
7  FORMAT STOP PROGRAMS USING CHANNELS, AND TYPE GO.
11 FORMAT RESTORE 17X AND 7155 CHANNEL PARITY SWITCHES TO 
12 FORMAT THEIR DESIRED POSITIONS, START THE PROGRAMS WHICH 
13 FORMAT WERE PREVIOUSLY STOPPED, AND TYPE GO. 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG TO 504 
   EQUATE FLAG0S TO 0001, FLAG0C TO 7776
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
   EQUATE FLAG2S TO 0004, FLAG2C TO 7773
   EQUATE FLAG3S TO 0010, FLAG3C TO 7767
* 
*         FUNCTION CODE EQUATES 
* 
   EQUATE DSTAT20 TO 0023 
   EQUATE OPCOM TO 0010      *CLEAR COUPLER CONNECT 
   EQUATE BMR TO 0043 
   EQUATE BMW TO 0044 
   EQUATE CGS TO 0012 
   EQUATE IPCS TO 0052
* 
*         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 6          *NUMBER OF DATA PATTERNS 
   EQUATE DOPIN TO 0010      *DISABLE OPERATOR INTERVENTION 
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
   B0=150                          *TEST NUMBER 68 HEX
   B9 = 08D                  *MODULE NUMBER 08D 
   IF (P8.AND.1000B.NE.0) EXIT TO 08B 
   IF (P5.AND.DOPIN.EQ.0) GOTO 21 
   IF (ES.AND.RM.EQ.0) EXIT 
   EXIT TO 981
* 
*         VERIFY THAT TEST IS RUNNING ON A CYBER 17X
* 
21 CHANNEL PE STATUS TO B1, ABT 22
   GOTO 23
22 ERROR 3/3, GOTO 70 
* 
*        INITIALIZE.
* 
23 B1 = 0                    *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
* 
*         ISSUE OPERATOR INTERVENTION INSTRUCTION.
* 
   MSG 6 TO LINE 14 
   MSG 7 TO LINE 15 
   PICTURE
   MSG 5 TO DISPLAY, PRINT
   PAUSE
   BLANK
   MSG 1 TO DISPLAY, PRINT
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 502B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 502B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 502B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 502B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 502B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 502B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 502B   4444 PATTERN 
* 
*         DETERMINE IF EVEN AND/OR ODD PARITY BYTES ARE IN
*         THE BUFFER. 
* 
   B4=0 
25 B5=0 
   B7=0                      *CLEAR BIT COUNTER 
   OB(FLAG)=0                *CLEAR EXPECTED STATUS FLAG
26 B6=1.LS.B5.AND.OB(B4)
   B7=B6.RS.B5+B7 
   GOTO 26 WHILE (B5+1.LT.12D)
   IF (B7.AND.1.EQ.0) GOTO 27 
   OB(FLAG)=OB(FLAG).OR.FLAG3S  *ODD PARITY 
   GOTO 40
27 OB(FLAG)=OB(FLAG).OR.FLAG2S  *EVEN PARITY
* 
*        PERFORM PARITY CHECKER TEST I. 
* 
40 B1=B1+1
   RES, ABT 70
   FUNC BMW, ABT 70 
   FZCP, ON, ABT 70 
   OUTB 502 WORDS FROM OB, ABT 65 
   FZCP, OFF, ABT 70
   FUNC CGS, ABT 70 
   STATUS 1 WORDS TO SB(0), ABT 70
* 
*         CHECK PARITY ERROR BIT
* 
   FUNC DSTAT20, ABT 70      *READ DETAILED STATUS
   STATUS 20D WORDS TO SB(1), ABT 70
   IF (OB(FLAG).AND.FLAG3S.NE.0) GOTO 51
   IF (SB(0).EQ.0) GOTO 50   *NO P.E. MSG 
   IF (SB(20).AND.100.EQ.0) GOTO 50   *NO P.E. MSG
   GOTO 52
50 ERROR 3/1 GOTO 70         *NO P.E. MSG 
51 IF (SB(0).EQ.0) GOTO 52
   IF (SB(20).AND.100.NE.0) ERROR 3/2 GOTO 70  *P.E. MSG
* 
*         PERFORM INPUT DATA PARITY CHECK 
* 
52 FUNC BMR, ABT 70          *BUFFER MEMORY READ FUNCTION 
   IN 502 WORDS TO IB, ABT 70 
   CHANNEL PE STATUS TO B10, ABT 22 
   IF (B10.NE.0) ERROR 3/4, GOTO 70  *INPUT P.E. MSG
* 
*        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
63 FUNC OPCOM, ABT 64        *CLEAR COUPLER CONNECT 
64 MSG 11 TO LINE 14         *ISSUE OPERATOR INSTRUCTIONS 
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   PICTURE
   MSG 5 TO DISPLAY, PRINT
   PAUSE
   BLANK
* 
   IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT                             *TERMINATE
65 FZCP, OFF, ABT 70         *CLEAR ZERO PARITY 
* 
*        PROCESS UNEXPECTED ERRORS. 
* 
70 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
*        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 08A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 63
   GOTO 63                   *GOTO INTERVENTION MSG 
* 
/        TERMINATE. 
* 
   END 20 
COMPILE 
   MODULE FHC08A,6000(05,07,14,16),LOCK 
*   5.2.7.1 FHC08A - REPORT EXPECTED ERRORS 
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC985 - DISPLAY GENERAL AND DETAILED STATUS. 
* 
*         REGISTERS USED- 
*         SAME AS FHC08.
* 
*         BUFFERS USED- 
*         SAME AS FHC08.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC08 - PARITY CHECKER TEST I 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC*D - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT FHC09 - PARITY CHECKER TEST II
7  FORMAT AND A16 
* 
/        ERROR NUMBER 68001/68005 HEX 
* 
10 FORMAT PARITY ERROR ON CURRENT WORD NOT DETECTED.
11 FORMAT REPLACE CARD A08. 
12 FORMAT 
13 FORMAT 
* 
/        ERROR NUMBER 68002/68006 HEX 
* 
14 FORMAT PARITY ERROR ON CURRENT WORD DETECTED.
15 FORMAT REPLACE CARD A08. 
16 FORMAT 
17 FORMAT 
* 
/        ERROR NUMBER 68003/68007 HEX 
* 
20 FORMAT CHANNEL PARITY ERROR STATUS RETRIEVAL FAILED. 
21 FORMAT DO NOT ATTEMPT TO RUN THIS MODULE ON ANY MACHINES 
22 FORMAT OTHER THAN A CYBER 17X, SINCE A STATUS AND
23 FORMAT CONTROL REGISTER IS REQUIRED. 
* 
/         ERROR NUMBER 68004/68008 HEX
* 
24 FORMAT INPUT CHANNEL PARITY ERROR OCCURRED.
25 FORMAT SUCCESSIVELY REPLACE THE R/T CARD (A01 FOR ACCESS 
26 FORMAT A, A02 FOR B, A03 FOR C, OR A04 FOR D), 
27 FORMAT B20,AND A27.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC*DA - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   IF (B9.EQ.8D) MSG 2 TO LINE 2
   IF (B9.EQ.9D) MSG 5 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(B9,EA,B0,EC) TO LINE 5 
/ 
   IF (B0.NE.150) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF(EC.GT.8) GOTO 45
* 
/        ERROR NUMBER 68001/68005 HEX 
* 
40 IF (EC.EQ.1) GOTO 50 
   IF (EC.NE.5) GOTO 41 
50 MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 985
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 985
* 
/        ERROR NUMBER 68002/68006 HEX 
* 
41 IF (EC.EQ.2) GOTO 51 
   IF (EC.NE.6) GOTO 42 
51 MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 985
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 985
* 
/        ERROR NUMBER 68003/68007 HEX 
* 
42 IF (EC.EQ.3) GOTO 52 
   IF (EC.NE.7) GOTO 43 
52 MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   GOTO 77
* 
/         ERROR NUMBER 68004/68008 HEX
* 
43 IF (EC.EQ.4) GOTO 53 
   IF (EC.NE.8) GOTO 45 
53 MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 25 TO LINE 14
   MSG 26 TO LINE 15
   IF (EC.EQ.4) MSG 27 TO LINE 16 
   IF (EC.EQ.8) MSG 7 TO LINE 16
   GOTO 77
/ 
45 MSG 30 (B9,EA,B0,EC,EM) TO LINE 12 
/ 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC08B,6000(05,07,16),LOCK
*   5.2.7.2 FHC08B - PARITY CHECKER TEST I FOR 800 SERIES 
* 
*         PURPOSE-
*         FHC08B USES A  BUFFER WRITE TO VERIFY  THE  OPERATION OF THE
*         *P.E.ON CURRENT WORD* PARITY CHECKER ON THE CYBER MUX BOARD.
* 
*         METHOD- 
*         IF 815 OR 825 NOT SELECTED (P8.NE.1XXX), THEN 
*           EXIT
*         ENDIF 
*         IF OPERATOR INTERVENTION IS DISABLED, THEN
*           EXIT
*         ENDIF 
*         IF THE MAINFRAME BEING USED IS NOT A CYBER 17X, THEN
*           REPORT ERROR
*         ENDIF 
*         DO FOR ALL DATA PATTERNS
*           FILL THE DATA BUFFER
*           ISSUE A BUFFER WRITE FUNCTION 
*           TURN ON FORCE ZERO PARITY 
*           OUTPUT
*           TURN OFF FORCE ZERO PARITY
*           GET GENERAL STATUS
*           IF GENERAL STATUS IS ZERO, THEN 
*             REPORT ERROR
*           ENDIF 
*           IF DETAIL STATUS WORD 16D BIT 6 IS ZERO, THEN 
*             REPORT ERROR
*           ENDIF 
*           GET CHANNEL STATUS
*           ISSUE A BUFFER WRITE FUNCTION 
*           OUTPUT
*           GET GENERAL STATUS
*           IF GENERAL STATUS IS NON ZERO, THEN 
*             REPORT ERROR
*           ENDIF 
*           GET CHANNEL STATUS
*         ENDO
* 
/ 
*         ENTRY-800 SERIES MUST BE SELECTED (P8=1XXX).
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS.
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC08A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - BIT INDEX
*         B6 - TEMPORARY STORAGE
*         B7 - BIT COUNTER
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  ONE SECTOR OF OUTPUT BUFFER
*         OB(504) - FLAG EXPECT PARITY ERROR (ZERO) NOT 
*                   EXPECT PARITY ERROR (NON-ZERO)
* 
*         KNOWN LIMITATIONS-
*           ADD A SECTION TO SEND FUNCTIONS WITH ZERO 
*           FORCED. 
* 
* 
1  FORMAT FHC08 - PARITY CHECKER TEST I 
2  FORMAT FHC08 - LC=*DECD, EC=*DECD
4  FORMAT FHC08 ERROR(S) = *DECD
5  FORMAT -PAUSE- OPERATOR INTERVENTION INSTRUCTION.
6  FORMAT VERIFY THAT 17X AND 7155 PARITY SWITCHES ARE ON,
7  FORMAT STOP PROGRAMS USING CHANNELS, AND TYPE GO.
11 FORMAT RESTORE 17X AND 7155 CHANNEL PARITY SWITCHES TO 
12 FORMAT THEIR DESIRED POSITIONS, START THE PROGRAMS WHICH 
13 FORMAT WERE PREVIOUSLY STOPPED, AND TYPE GO. 
* 
*         FLAG EQUATES
* 
   EQUATE FLAG TO 504 
* 
*         FUNCTION CODE EQUATES 
* 
   EQUATE DSTAT20 TO 23, IPCS TO 52, CGS TO 12
   EQUATE BMR TO 43, BMW TO 44, OPCOM TO 10 
* 
*         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 6          *NUMBER OF DATA PATTERNS 
   EQUATE DOPIN TO 0010      *DISABLE OPERATOR INTERVENTION 
* 
* 
* 
20 IF (P8.AND.1000B.EQ.0) EXIT
   IF (P5.AND.DOPIN.EQ.0) GOTO 21 
   IF (ES.AND.RM.EQ.0) EXIT 
   EXIT TO 981
* 
*         VERIFY THAT TEST IS RUNNING ON A CYBER 17X
* 
21 CHANNEL PE STATUS TO B1, ABT 22
   GOTO 23
22 ERROR 3/3, GOTO 70 
* 
*        INITIALIZE.
* 
23 B1 = 0                    *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
* 
*         ISSUE OPERATOR INTERVENTION INSTRUCTION.
* 
   MSG 6 TO LINE 14 
   MSG 7 TO LINE 15 
   PICTURE
   MSG 5 TO DISPLAY, PRINT
   PAUSE
   BLANK
   MSG 1 TO DISPLAY, PRINT
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 502B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 502B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 502B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 502B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 502B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 502B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 502B   4444 PATTERN 
* 
*         SET EXPECT PARITY ERROR FLAG. 
* 
   B4=0 
25 B5=0 
   B7=0                      *CLEAR BIT COUNTER 
27 OB(FLAG)=0                *PARITY ERROR EXPECTED 
* 
*        PERFORM PARITY CHECKER TEST I. 
* 
40 B1=B1+1
   RES, ABT 70
   FUNC BMW, ABT 70 
   IF (OB(FLAG).NE.0) GOTO 42        *DO NOT INVERT PARITY
   FZCP, ON, ABT 70 
42 OUT 502 WORDS FROM OB, ABT 65    *DATA 
   FZCP, OFF, ABT 70
   FUNC CGS, ABT 70 
   STATUS 1 WORDS TO SB(0), ABT 70
* 
*         CHECK PARITY ERROR BIT
* 
   FUNC DSTAT20, ABT 70      *READ DETAILED STATUS
   STATUS 20D WORDS TO SB(1), ABT 70
   IF (OB(FLAG).NE.0) GOTO 51 
   IF (SB(0).EQ.0) ERROR 3/1 GOTO 70  *NO P.E. MSG
   IF (SB(20).AND.100.EQ.0) ERROR 3/1 GOTO 70  *NO P.E. MSG 
   GOTO 52
51 IF (SB(0).EQ.0) GOTO 52
   IF (SB(20).AND.100.NE.0) ERROR 3/2 GOTO 70  *P.E. MSG
* 
*         PERFORM INPUT DATA PARITY CHECK 
* 
52 FUNC BMR, ABT 70        *BUFFER MEMORY READ FUNCTION 
   IN 502 WORDS TO IB, ABT 70 
   CHANNEL PE STATUS TO B10, ABT 22 
   IF (B10.NE.0) ERROR 3/4, GOTO 70  *INPUT P.E. MSG
* 
*        FINALIZE.
* 
   IF (OB(FLAG).NE.0) GOTO 60    *IF NOT SECOND PASS
   OB(FLAG)=1                    *SET SECOND PASS 
   GOTO 40
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
63 FUNC OPCOM, ABT 64        *CLEAR COUPLER CONNECT 
64 MSG 11 TO LINE 14         *ISSUE OPERATOR INSTRUCTIONS 
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   PICTURE
   MSG 5 TO DISPLAY, PRINT
   PAUSE
   BLANK
* 
   GOTO 77                   *TERMINATE 
65 FZCP, OFF, ABT 70         *CLEAR ZERO PARITY 
* 
*        PROCESS UNEXPECTED ERRORS. 
* 
70 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
*        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 08A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 63
   GOTO 63                   *GOTO INTERVENTION MSG 
* 
*        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC09,6000(05,07,14,16),LOCK
**  5.2.8 FHC09 - PARITY CHECKER TEST II
* 
*         PURPOSE-
*         FHC09 USES A BLOCK TRANSFER BUFFER WRITE TO VERIFY THE
*         OPERATION OF THE *DATA P.E.* PARITY CHECKER.
* 
*         METHOD- 
*         IF 815 OR 825  SELECTED (P8=1XXX), THEN 
*           EXIT TO FHC09A
*         ENDIF 
*         IF OPERATOR INTERVENTION IS DISABLED, THEN
*           EXIT
*         ENDIF 
*         IF THE MAINFRAME BEING USED IS NOT A CYBER 17X, THEN
*           REPORT ERROR
*         ENDIF 
*         DO FOR ALL DATA PATTERNS
*           FILL THE DATA BUFFER
*           IF ANY OF THE WORDS IN THE BUFFER HAVE AN EVEN NUMBER OF
*             BITS, THEN SET FLAG 2 
*           ENDIF 
*           IF ANY OF THE WORDS IN THE BUFFER HAVE AN ODD NUMBER OF 
*             BITS, THEN SET FLAG 3 
*           ENDIF 
*           ISSUE A BUFFER WRITE FUNCTION 
*           TURN ON FORCE ZERO PARITY 
*           OUTPUT
*           TURN OFF FORCE ZERO PARITY
*           GET GENERAL STATUS
*           IF GENERAL STATUS IS NON ZERO, THEN 
*             REPORT ERROR
*           ENDIF 
*           GET CHANNEL STATUS
*           IF FLAG 3 IS SET, THEN
*             IF PARITY ERROR BIT IS SET, THEN
*               REPORT ERROR
*             ENDIF 
*           ELSE
*             IF PARITY ERROR BIT IS CLEAR, THEN
*               REPORT ERROR
*             ENDIF 
*           ENDIF 
*         ENDO
* 
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS.
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC08A - REPORT EXPECTED ERRORS 
*         FHC09A - PARITY CHECKER II FOR 800 SERIES 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - BIT INDEX
*         B6 - TEMPORARY STORAGE
*         B7 - BIT COUNTER
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  ONE SECTOR OF OUTPUT BUFFER
*         OB(504) - FLAG BITS 
*           FLAG1 - EXPECTED (SET)/UNEXPECTED (CLEAR) 
*                   ERROR FLAG BIT
*           FLAG2 - SET FOR ODD NUMBER OF BITS IN WORD
*           FLAG3 - SET FOR EVEN NUMBER OF BITS IN WORD 
* 
*         KNOWN LIMITATIONS-
*           ADD A SECTION TO SEND FUNCTIONS WITH ZERO 
*           FORCED. 
* 
* 
1  FORMAT FHC09 - PARITY CHECKER TEST II
2  FORMAT FHC09 - LC=*DECD, EC=*DECD
4  FORMAT FHC09 ERROR(S) = *DECD
5  FORMAT -PAUSE- OPERATOR INTERVENTION INSTRUCTION.
6  FORMAT VERIFY THAT 17X AND 7155 PARITY SWITCHES ARE ON,
7  FORMAT STOP PROGRAMS USING CHANNELS, AND TYPE GO.
11 FORMAT RESTORE 17X AND 7155 CHANNEL PARITY SWITCHES TO 
12 FORMAT THEIR DESIRED POSITIONS, START THE PROGRAMS WHICH 
13 FORMAT WERE PREVIOUSLY STOPPED, AND TYPE GO. 
* 
*         FLAG EQUATES
* 
   EQUATE FLAG TO 504 
   EQUATE FLAG0S TO 0001, FLAG0C TO 7776
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
   EQUATE FLAG2S TO 0004, FLAG2C TO 7773
   EQUATE FLAG3S TO 0010, FLAG3C TO 7767
* 
*         FUNCTION CODE EQUATES 
* 
   EQUATE DSTAT20 TO 23, IPCS TO 52, CGS TO 12
   EQUATE BTBMR TO 32, BTBMW TO 33, OPCOM TO 10 
* 
*         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 6          *NUMBER OF DATA PATTERNS 
   EQUATE DOPIN TO 0010      *DISABLE OPERATOR INTERVENTION 
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
   B0=150                          *TEST NUMBER 68 HEX
   B9 = 09D                  *MODULE NUMBER 09D 
   IF (P8.AND.1000B.NE.0) EXIT TO 09A 
   IF (P5.AND.DOPIN.EQ.0) GOTO 21 
   IF (ES.AND.RM.EQ.0) EXIT 
   EXIT TO 981
* 
*         VERIFY THAT TEST IS RUNNING ON A CYBER 17X
* 
21 CHANNEL PE STATUS TO B1, ABT 22
   GOTO 23
22 ERROR 3/7, GOTO 70 
* 
*        INITIALIZE.
* 
23 B1 = 0                    *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
* 
*         ISSUE OPERATOR INTERVENTION INSTRUCTION.
* 
   MSG 6 TO LINE 14 
   MSG 7 TO LINE 15 
   PICTURE
   MSG 5 TO DISPLAY, PRINT
   PAUSE
   BLANK
   MSG 1 TO DISPLAY, PRINT
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 502B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 502B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 502B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 502B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 502B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 502B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 502B   4444 PATTERN 
* 
*         DETERMINE IF EVEN AND/OR ODD PARITY BYTES ARE IN
*         THE BUFFER. 
* 
   B4=0 
25 B5=0 
   B7=0                      *CLEAR BIT COUNTER 
   OB(FLAG)=0                *CLEAR EXPECTED STATUS FLAG
26 B6=1.LS.B5.AND.OB(B4)
   B7=B6.RS.B5+B7 
   GOTO 26 WHILE (B5+1.LT.12D)
   IF (B7.AND.1.EQ.0) GOTO 27 
   OB(FLAG)=OB(FLAG).OR.FLAG3S  *ODD PARITY 
   GOTO 40
27 OB(FLAG)=OB(FLAG).OR.FLAG2S  *EVEN PARITY
* 
*        PERFORM PARITY CHECKER TEST II.
* 
40 B1=B1+1
   RES, ABT 70
   FUNC BTBMW, ABT 70 
   FZCP, ON, ABT 70 
   OUTB 502 WORDS FROM OB, ABT 65    DATA WITH ZERO PARITY
   FZCP, OFF, ABT 70
   FUNC CGS, ABT 70 
   STATUS 1 WORDS TO SB(0), ABT 70
* 
*         CHECK PARITY ERROR BIT
* 
   FUNC DSTAT20, ABT 70      *READ DETAILED STATUS
   STATUS 20D WORDS TO SB(1), ABT 70
   IF (OB(FLAG).AND.FLAG3S.NE.0) GOTO 51
   IF (SB(0).EQ.0) GOTO 50   *NO P.E. MSG 
   IF (SB(20).AND.100.EQ.0) GOTO 50   *NO P.E. MSG
   GOTO 52
50 ERROR 3/1 GOTO 70         *NO P.E. MSG 
51 IF (SB(0).EQ.0) GOTO 52
   IF (SB(20).AND.100.NE.0) ERROR 3/6 GOTO 70  *P.E. MSG
* 
*         PERFORM INPUT DATA PARITY CHECK 
* 
52 FUNC BTBMR, ABT 70        *BUFFER MEMORY READ FUNCTION 
   IN 502 WORDS TO IB, ABT 70 
   CHANNEL PE STATUS TO B10, ABT 22 
   IF (B10.NE.0) ERROR 3/8, GOTO 70  *INPUT P.E. MSG
* 
*        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
63 FUNC OPCOM, ABT 64        *CLEAR COUPLER CONNECT 
64 MSG 11 TO LINE 14         *ISSUE OPERATOR INSTRUCTIONS 
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   PICTURE
   MSG 5 TO DISPLAY, PRINT
   PAUSE
   BLANK
* 
   IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT                             *TERMINATE
65 FZCP, OFF, ABT 70         *CLEAR ZERO PARITY 
* 
*        PROCESS UNEXPECTED ERRORS. 
* 
70 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
*        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 08A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 63
   GOTO 63                   *GOTO INTERVENTION MSG 
* 
*        TERMINATE. 
* 
   END 20 
COMPILE 
   MODULE FHC09A,6000(05,07,16),LOCK
*   5.2.8.1 FHC09A - PARITY CHECKER TEST II FOR 800 SERIES
* 
*         PURPOSE-
*         FHC09A USES A BLOCK TRANSFER BUFFER WRITE TO VERIFY THE 
*         OPERATION OF THE *DATA P.E.* PARITY CHECKER.
* 
*         METHOD- 
*         IF 815 OR 825 NOT SELECTED (P8.NE.1XXX), THEN 
*           EXIT
*         ENDIF 
*         IF OPERATOR INTERVENTION IS DISABLED, THEN
*           EXIT
*         ENDIF 
*         IF THE MAINFRAME BEING USED IS NOT A CYBER 17X, THEN
*           REPORT ERROR
*         ENDIF 
*         DO FOR ALL DATA PATTERNS
*           FILL THE DATA BUFFER
*           ISSUE A BUFFER WRITE FUNCTION 
*           TURN ON FORCE ZERO PARITY 
*           OUTPUT
*           TURN OFF FORCE ZERO PARITY
*           GET GENERAL STATUS
*           IF GENERAL STATUS IS ZERO, THEN 
*             REPORT ERROR
*           ENDIF 
*           IF DETAIL STATUS WORD 16D BIT 6 IS ZERO, THEN 
*             REPORT ERROR
*           ENDIF 
*           GET CHANNEL STATUS
*           ISSUE A BUFFER WRITE FUNCTION 
*           OUTPUT
*           GET GENERAL STATUS
*           IF GENERAL STATUS IS NON ZERO, THEN 
*             REPORT ERROR
*           ENDIF 
*           GET CHANNEL STATUS
*         ENDO
* 
/ 
*         ENTRY-800 SERIES MUST BE SELECTED (P8=1XXX).
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS.
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC08A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - BIT INDEX
*         B6 - TEMPORARY STORAGE
*         B7 - BIT COUNTER
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  ONE SECTOR OF OUTPUT BUFFER
*         OB(504) - FLAG EXPECT PARITY ERROR (ZERO) NOT 
*                   EXPECT PARITY ERROR (NON-ZERO)
* 
*         KNOWN LIMITATIONS-
*           ADD A SECTION TO SEND FUNCTIONS WITH ZERO 
*           FORCED. 
* 
* 
1  FORMAT FHC09 - PARITY CHECKER TEST II
2  FORMAT FHC09 - LC=*DECD, EC=*DECD
4  FORMAT FHC09 ERROR(S) = *DECD
5  FORMAT -PAUSE- OPERATOR INTERVENTION INSTRUCTION.
6  FORMAT VERIFY THAT 17X AND 7155 PARITY SWITCHES ARE ON,
7  FORMAT STOP PROGRAMS USING CHANNELS, AND TYPE GO.
11 FORMAT RESTORE 17X AND 7155 CHANNEL PARITY SWITCHES TO 
12 FORMAT THEIR DESIRED POSITIONS, START THE PROGRAMS WHICH 
13 FORMAT WERE PREVIOUSLY STOPPED, AND TYPE GO. 
* 
*         FLAG EQUATES
* 
   EQUATE FLAG TO 504 
* 
*         FUNCTION CODE EQUATES 
* 
   EQUATE DSTAT20 TO 23, IPCS TO 52, CGS TO 12
   EQUATE BTBMR TO 32, BTBMW TO 33, OPCOM TO 10 
* 
*         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 6          *NUMBER OF DATA PATTERNS 
   EQUATE DOPIN TO 0010      *DISABLE OPERATOR INTERVENTION 
* 
* 
* 
20 IF (P8.AND.1000B.EQ.0) EXIT
   IF (P5.AND.DOPIN.EQ.0) GOTO 21 
   IF (ES.AND.RM.EQ.0) EXIT 
   EXIT TO 981
* 
*         VERIFY THAT TEST IS RUNNING ON A CYBER 17X
* 
21 CHANNEL PE STATUS TO B1, ABT 22
   GOTO 23
22 ERROR 3/7, GOTO 70 
* 
*        INITIALIZE.
* 
23 B1 = 0                    *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
* 
*         ISSUE OPERATOR INTERVENTION INSTRUCTION.
* 
   MSG 6 TO LINE 14 
   MSG 7 TO LINE 15 
   PICTURE
   MSG 5 TO DISPLAY, PRINT
   PAUSE
   BLANK
   MSG 1 TO DISPLAY, PRINT
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 502B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 502B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 502B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 502B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 502B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 502B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 502B   4444 PATTERN 
* 
*         SET PARITY ERROR EXPECTED FLAG. 
* 
   B4=0 
25 B5=0 
   B7=0                      *CLEAR BIT COUNTER 
27 OB(FLAG)=0                *PARITY ERROR EXPECTED 
* 
*        PERFORM PARITY CHECKER TEST II.
* 
40 B1=B1+1
   RES, ABT 70
   FUNC BTBMW, ABT 70 
   IF (OB(FLAG).NE.0) GOTO 42        *DO NOT INVERT PARITY
   FZCP, ON, ABT 70 
42 OUT 502 WORDS FROM OB, ABT 65    *DATA 
   FZCP, OFF, ABT 70
   FUNC CGS, ABT 70 
   STATUS 1 WORDS TO SB(0), ABT 70
* 
*         CHECK PARITY ERROR BIT
* 
   FUNC DSTAT20, ABT 70      *READ DETAILED STATUS
   STATUS 20D WORDS TO SB(1), ABT 70
   IF (OB(FLAG).NE.0) GOTO 51 
   IF (SB(0).EQ.0) ERROR 3/5 GOTO 70  *NO P.E. MSG
   IF (SB(20).AND.100.EQ.0) ERROR 3/5 GOTO 70  *NO P.E. MSG 
   GOTO 52
51 IF (SB(0).EQ.0) GOTO 52
   IF (SB(20).AND.100.NE.0) ERROR 3/6 GOTO 70  *P.E. MSG
* 
*         PERFORM INPUT DATA PARITY CHECK 
* 
52 FUNC BTBMR, ABT 70        *BUFFER MEMORY READ FUNCTION 
   IN 502 WORDS TO IB, ABT 70 
   CHANNEL PE STATUS TO B10, ABT 22 
   IF (B10.NE.0) ERROR 3/8, GOTO 70  *INPUT P.E. MSG
* 
*        FINALIZE.
* 
   IF (OB(FLAG).NE.0) GOTO 60    *IF NOT SECOND PASS
   OB(FLAG)=1                    *SET SECOND PASS 
   GOTO 40
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
63 FUNC OPCOM, ABT 64        *CLEAR COUPLER CONNECT 
64 MSG 11 TO LINE 14         *ISSUE OPERATOR INSTRUCTIONS 
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   PICTURE
   MSG 5 TO DISPLAY, PRINT
   PAUSE
   BLANK
* 
   GOTO 77                   *TERMINATE 
65 FZCP, OFF, ABT 70         *CLEAR ZERO PARITY 
* 
*        PROCESS UNEXPECTED ERRORS. 
* 
70 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
*        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 08A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 63
   GOTO 63                   *GOTO INTERVENTION MSG 
* 
*        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
*ENDIF
   MODULE FHC11,6000(05,07,14,16),LOCK
** 5.2.9  FHC11 - UP/DOWN COUNTER TEST
* 
*         PURPOSE-
*         FHC11 VERIFIES THE ABILITY OF THE UP/DOWN COUNTER TO
*         RECEIVE, RETAIN, AND RETURN ASSORTED DATA PATTERNS. 
* 
*         METHOD- 
*         DO FOR ALL DATA PATTERNS
*           OUTPUT DATA PATTERN TO NOC 7
*           VERIFY THAT NOC 7 = DATA PATTERN
*           VERIFY THAT NIC 7 = DATA PATTERN
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC11A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(4)  DATA PATTERN OUTPUT BUFFER 
*         OB(6)...       DATA PATTERNS
* 
* 
1  FORMAT FHC11 - UP/DOWN COUNTER TEST
2  FORMAT FHC11 - LC=*DECD, EC=*DECD
4  FORMAT FHC11 ERROR(S) = *DECD
5  FORMAT UPPER 8 BITS - E*OC A*OC D*OC 
6  FORMAT LOWER 8 BITS - E*OC A*OC D*OC 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 0010      *CLEAR COUPLER CONNECT 
   EQUATE OPNC TO 0050
   EQUATE IPCS TO 0052
   EQUATE ENOC TO 0053
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 10         *NUMBER OF DATA PATTERNS 
* 
/ 
* 
   DATA (OB(06),CON) 000,000
   DATA (OB(10),CON) 017,377
   DATA (OB(12),CON) 012,252
   DATA (OB(14),CON) 005,125
   DATA (OB(16),CON) 6,200,0
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/        INITIALIZE.
* 
21 B0=151                    *TEST NUMBER 69 HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B9 = 11D                  *MODULE NUMBER 11D 
   OB(0) = 7                 *UP/DOWN NOC NUMBER
* 
/        PERFORM UP/DOWN COUNTER TEST 
* 
40 B1=B1+1
   OB(1)=OB(B2+6)            *UPPER 8 BITS OF BIT COUNTER 
   OB(2)=OB(B2+7)            *LOWER 8 BITS OF BIT COUNTER 
   RES, ABT 70
   FUNC OPNC, ABT 70         *SET LOAD BIT (NOC 6/15) 
   ACN, ABT 70
   OUT 3 WORDS FROM OB(16), ABT 70
   FUNC OPNC, ABT 70         *WRITE UP/DOWN COUNTER 
   ACN, ABT 70
   OUT 3 WORDS FROM OB, ABT 70
46 FUNC ENOC, ABT 70         *ECHO NOC(S) 
   STATUS 32D WORDS TO SB(1), ABT 70
   B4=SB(17).XOR.OB(1).AND.17 
   B5=SB(20).XOR.OB(2).AND.377
   IF (B4.NE.0) GOTO 50 
   IF (B5.NE.0) ERROR 3/50, GOTO 67 
   GOTO 52
50 IF (B5.NE.0) ERROR 3/51, GOTO 67 
   ERROR 3/52, GOTO 67
52 FUNC IPCS, ABT 70         *STATUS INPUT CHANNELS 
   STATUS 32D WORDS TO SB(1), ABT 70
   B4=SB(17).XOR.OB(1).AND.17 
   B5=SB(20).XOR.OB(2).AND.377
   IF (B4.NE.0) GOTO 54 
   IF (B5.NE.0) ERROR 3/45, GOTO 67 
   GOTO 60
54 IF (B5.NE.0) ERROR 3/46, GOTO 67 
   ERROR 3/47, GOTO 67
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 40 WHILE (B2+2.LT.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 MSG 5 (OB(1),SB(17),B4) TO LINE 7
   MSG 6 (OB(2),SB(20),B5) TO LINE 10 
   B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 11A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 77
* 
/        TERMINATE. 
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC11A,6000(05,07,14,16),LOCK 
*   5.2.9.1 FHC11A - REPORT EXPECTED ERRORS 
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC11B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC11.
* 
*         BUFFERS USED- 
*         SAME AS FHC11.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC11 - UP/DOWN COUNTER TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC11 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 69025 HEX 
* 
10 FORMAT MISCOMPARE ON LOWER 8 BITS OF NIC 7.
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT A15 AND A19.
13 FORMAT 
* 
/        ERROR NUMBER 69026 HEX 
* 
14 FORMAT MISCOMPARE ON UPPER AND LOWER 8 BITS OF NIC 7.
15 FORMAT SUCCESSIVELY REPLACE CARDS
16 FORMAT R/T CARD(A01/A02/A03/A04),A16,A08,A15,AND A19.
17 FORMAT 
* 
/        ERROR NUMBER 69027 HEX 
* 
20 FORMAT MISCOMPARE ON UPPER 8 BITS OF NIC 7.
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT A15 AND A19.
23 FORMAT 
* 
/        ERROR NUMBER 69028 HEX 
* 
24 FORMAT MISCOMPARE ON LOWER 8 BITS OF ECHOED NOC 7. 
25 FORMAT SUCCESSIVELY REPLACE CARDS
26 FORMAT A19 AND A15.
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC11A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.151) GOTO 45 
   IF (EC.LT.45) GOTO 45
   IF (EC.GT.50) EXIT TO 11B
* 
/        ERROR NUMBER 69025 HEX 
* 
40 IF (EC.NE.45) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 69026 HEX 
* 
41 IF (EC.NE.46) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 69027 HEX 
* 
42 IF (EC.NE.47) GOTO 43
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 69028 HEX 
* 
43 IF (EC.NE.50) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 25 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC11B,6000(05,07,14,16),LOCK 
*   5.2.9.2 FHC11B - REPORT EXPECTED ERRORS 
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC11.
* 
*         BUFFERS USED- 
*         SAME AS FHC11.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC11 - UP/DOWN COUNTER TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC11 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 69029 HEX 
* 
10 FORMAT MISCOMPARE ON BOTH UPPER AND LOWER 8 BITS OF
11 FORMAT ECHOED NOC 7. 
12 FORMAT SUCCESSIVELY REPLACE CARDS
13 FORMAT R/T CARD(A01/A02/A03/A04),A16,A08,A19,AND A15.
* 
/        ERROR NUMBER 6902A HEX 
* 
14 FORMAT MISCOMPARE ON UPPER 8 BITS OF ECHOED NOC 7. 
15 FORMAT SUCCESSIVELY REPLACE CARDS
16 FORMAT A19 AND A15.
17 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC11B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.151) GOTO 45 
   IF (EC.LT.51) GOTO 45
   IF (EC.GT.52) GOTO 45
* 
/        ERROR NUMBER 69029 HEX 
* 
40 IF (EC.NE.51) GOTO 41
   MSG 10 TO LINE 12
   MSG 11 TO LINE 13
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6902A HEX 
* 
41 IF (EC.NE.52) GOTO 45
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC13,6000(05,07,14,16),LOCK
** 5.2.10 FHC13 - BUFFER MEM ADRS REGISTER TEST 
* 
*         PURPOSE-
*         FHC13 VERIFIES THE ABILITY OF THE BUFFER MEM ADRS REGISTER TO 
*         RECEIVE, RETAIN, AND RETURN ASSORTED DATA PATTERNS. 
* 
*         METHOD- 
*         DO FOR ALL DATA PATTERNS
*           DO FOR BOTH READ AND WRITE REGISTERS
*             OUTPUT DATA PATTERN TO NOC 6
*             VERIFY THAT NOC 6 = DATA PATTERN
*             VERIFY THAT NIC 6 = DATA PATTERN
*           ENDO
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC13A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B6 - WRITE/READ BUFF MEM ADRS REG INDEX 
*         B7 - TEMPORARY STORAGE
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(4)  DATA PATTERN OUTPUT BUFFER 
*         OB(6)...       DATA PATTERNS
* 
* 
1  FORMAT FHC13 - BUFFER MEM ADRS REGISTER TEST 
2  FORMAT FHC13 - LC=*DECD, EC=*DECD
4  FORMAT FHC13 ERROR(S) = *DECD
5  FORMAT UPPER 8 BITS - E*OC A*OC D*OC 
6  FORMAT LOWER 8 BITS - E*OC A*OC D*OC 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 0010      *CLEAR COUPLER CONNECT 
   EQUATE OPNC TO 0050
   EQUATE IPCS TO 0052
   EQUATE ENOC TO 0053
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 10         *NUMBER OF DATA PATTERNS 
* 
/ 
* 
   DATA (OB(06),CON) 000,000
   DATA (OB(10),CON) 017,377
   DATA (OB(12),CON) 012,252
   DATA (OB(14),CON) 005,125
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/        INITIALIZE.
* 
21 B0=151                    *TEST NUMBER 69 HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B9 = 13D                  *MODULE NUMBER 13D 
   OB(0) = 6                 *BUFF MEM ADRS REG NOC NO. 
30 B6 = 5                    *INIT. REGISTER SELECT 
* 
/        PERFORM BUFFER MEM ADRS REGISTER TEST
* 
40 B1=B1+1
   B7=B6.LS.5 
   OB(1)=OB(B2+6)+B7         *UPPER 8 BITS OF BIT COUNTER 
   OB(2)=OB(B2+7)            *LOWER 8 BITS OF BIT COUNTER 
   RES, ABT 70
   FUNC OPNC, ABT 70         *WRITE BUFF MEM ADRS REG 
   ACN, ABT 70
   OUT 3 WORDS FROM OB, ABT 70
46 FUNC ENOC, ABT 70         *ECHO NOC(S) 
   STATUS 32D WORDS TO SB(1), ABT 70
   B4=SB(15).XOR.OB(1).AND.357
   B5=SB(16).XOR.OB(2).AND.377
   IF (B4.NE.0) GOTO 50 
   IF (B5.NE.0) ERROR 3/64, GOTO 67 
   GOTO 52
50 IF (B5.NE.0) ERROR 3/65, GOTO 67 
   ERROR 3/66, GOTO 67
52 FUNC IPCS, ABT 70         *STATUS INPUT CHANNELS 
   STATUS 32D WORDS TO SB(1), ABT 70
   OB(1)=OB(1)+20 
   B4=SB(15).XOR.OB(1).AND.37 
   B5=SB(16).XOR.OB(2).AND.377
   IF (B4.NE.0) GOTO 54 
   IF (B5.NE.0) ERROR 3/61, GOTO 67 
   GOTO 60
54 IF (B5.NE.0) ERROR 3/62, GOTO 67 
   ERROR 3/63, GOTO 67
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 40 WHILE (B6+1.LE.6)     *END OF REG. SEL. LOOP 
   GOTO 30 WHILE (B2+2.LT.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 MSG 5 (OB(1),SB(15),B4) TO LINE 7
   MSG 6 (OB(2),SB(16),B5) TO LINE 10 
   B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 13A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 77
* 
/        TERMINATE. 
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC13A,6000(05,07,14,16),LOCK 
*   5.2.10.1 FHC13A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC13B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC13.
* 
*         BUFFERS USED- 
*         SAME AS FHC13.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC13 - BUFFER MEM ADRS REGISTER TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC13 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 69031 HEX 
* 
10 FORMAT MISCOMPARE ON LOWER 8 BITS OF NIC 6.
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT A15, A19, AND A21.
13 FORMAT 
* 
/        ERROR NUMBER 69032 HEX 
* 
14 FORMAT MISCOMPARE ON UPPER AND LOWER 8 BITS OF NIC 6.
15 FORMAT SUCCESSIVELY REPLACE CARDS
16 FORMAT R/T CARD(A01/A02/A03/A04),A16,A15,A19,AND A21.
17 FORMAT 
* 
/        ERROR NUMBER 69033 HEX 
* 
20 FORMAT MISCOMPARE ON UPPER 8 BITS OF NIC 6.
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT A15, A19, AND A21.
23 FORMAT 
* 
/        ERROR NUMBER 69034 HEX 
* 
24 FORMAT MISCOMPARE ON LOWER 8 BITS OF ECHOED NOC 6. 
25 FORMAT SUCCESSIVELY REPLACE CARDS
26 FORMAT A19 AND A15.
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC13A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.151) GOTO 45 
   IF (EC.LT.61) GOTO 45
   IF (EC.GT.64) EXIT TO 13B
* 
/        ERROR NUMBER 69031 HEX 
* 
40 IF (EC.NE.61) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 69032 HEX 
* 
41 IF (EC.NE.62) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 69033 HEX 
* 
42 IF (EC.NE.63) GOTO 43
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 69034 HEX 
* 
43 IF (EC.NE.64) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 25 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC13B,6000(05,07,14,16),LOCK 
*   5.2.10.2 FHC13B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC13.
* 
*         BUFFERS USED- 
*         SAME AS FHC13.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC13 - BUFFER MEM ADRS REGISTER TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC13 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 69035 HEX 
* 
10 FORMAT MISCOMPARE ON BOTH UPPER AND LOWER 8 BITS OF
11 FORMAT ECHOED NOC 6. 
12 FORMAT SUCCESSIVELY REPLACE CARDS
13 FORMAT R/T CARD(A01/A02/A03/A04),A16,A08,A19,AND A15.
* 
/        ERROR NUMBER 69036 HEX 
* 
14 FORMAT MISCOMPARE ON UPPER 8 BITS OF ECHOED NOC 6. 
15 FORMAT SUCCESSIVELY REPLACE CARDS
16 FORMAT A19 AND A15.
17 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC13B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.151) GOTO 45 
   IF (EC.LT.65) GOTO 45
   IF (EC.GT.66) GOTO 45
* 
/        ERROR NUMBER 69035 HEX 
* 
40 IF (EC.NE.65) GOTO 41
   MSG 10 TO LINE 12
   MSG 11 TO LINE 13
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 69036 HEX 
* 
41 IF (EC.NE.66) GOTO 45
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC15,6000(05,07,14,16),LOCK
** 5.2.11 FHC15 - DATA PATH TEST
* 
*         PURPOSE-
*         FHC15 EXERCISES AND ISOLATES FAILURES IN THE BUFFER CONTROL 
*         BOARD, DATA PATH BOARDS, DATA PATH CONTROL BOARDS, AND THE
*         BUFFER-TO-DATA PATH BOARD.
* 
*         METHOD- 
*         DO FOR ALL DATA PATTERNS
*           FILL BUFFER 
*           DO A BLOCK TRANSFER BUFFER WRITE
*           CHECK CHANNEL STATUS
*           DO A BLOCK TRANSFER BUFFER READ 
*           CHECK CHANNEL STATUS
*           COMPARE DATA
*           DO A BUFFER READ
*           CHECK CHANNEL STATUS
*           COMPARE DATA
*           DO A BUFFER MEMORY WRITE
*           CHECK CHANNEL STATUS
*           DO A BLOCK TRANSFER BUFFER READ 
*           CHECK CHANNEL STATUS
*           COMPARE DATA
*           DO A BUFFER MEMORY READ 
*           CHECK CHANNEL STATUS
*           COMPARE DATA
*         ENDO
*         INTERPRET DATA FAILURES 
/ 
* 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC15A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED (BMW/BTBMR) 
*         B5 - DATA ERROR LINE NUMBER 
*         B6 - LAST FUNCTION
*         B7 - EXPECTED NIC0 STATUS 
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         B10- DIFFERENCE BETWEEN ACTUAL AND EXPECTED (BMW/BMR) 
*         B11- DIFFERENCE BETWEEN ACTUAL AND EXPECTED (BTBMW/BTBMR) 
*         B12- DIFFERENCE BETWEEN ACTUAL AND EXPECTED (BTBMW/BMR) 
*         B13- INCLUSIVE OR OF ALL DIFFERENCES (SEE SUBMODULES) 
*         B14- XFER ERROR STATUS
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  ONE SECTOR OF OUTPUT BUFFER
*         IB(0) - IB(501)  ONE SECTOR OF INPUT BUFFER 
* 
* 
1  FORMAT FHC15 - DATA PATH TEST
2  FORMAT FHC15 - LC=*DECD, EC=*DECD
4  FORMAT FHC15 ERROR(S) = *DECD
5  FORMAT DATA ERROR   W*OCT  E*OCT  A*OCT  D*OCT 
* 
*         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
*         FUNCTION CODE EQUATES 
* 
   EQUATE BTBMR TO 32,BTBMW TO 33,NPAT TO 6 
   EQUATE OPCOM TO 10, BMR TO 43, BMW TO 44, IPCS TO 52 
* 
* 
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/        INITIALIZE.
* 
21 B0=151                    *TEST NUMBER 69 HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B9 = 15D                  *MODULE NUMBER 15D 
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 502B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 502B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 502B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 502B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 502B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 502B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 502B   4444 PATTERN 
* 
*        RESERVE, CONNECT, ETC. 
* 
* 
/        PERFORM DATA PATH TEST 
* 
40 B1=B1+1
   WC = 502 
   RES, ABT 70
   FUNC BTBMW, ABT 70 
   ACN, ABT 70
   OUTB, ABT 70 
   B7 = 10                   *EXPECTED NIC0 STATUS
   GOSUB 65                  *CHECK STATUS
   B5 = 6                    *PUT DATA ERRORS ON LINE 6 + 7 
   B14 = 0                   *INTIALIZE ERROR STATUS
   GOSUB 60                  *EXECUTE BOTH READS
   B11 = B4                  *SAVE CURRENT ERRORS 
   B12 = B10
   B14 = B14.LS.2            *SAVE XFER ERROR STATUS
   WC = 502 
   FUNC BMW, ABT 70          *FUNCTION BUFFER MEMORY WRITE
   ACN, ABT 70
   OUTB, ABT 70 
   B7 = 210                  *EXPECTED NIC0 STATUS
   GOSUB 65                  *CHECK STATUS
   B5 = 10                   *PUT DATA ERRORS ON LINE 10+11 
   GOSUB 60                  *EXECUTE BOTH READS
   IF (B14.NE.0) ERROR 3/0,GOTO 70
* 
/        FINALIZE.
* 
   IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/         EXECUTE BOTH READS
* 
60 FUNC BTBMR, ABT 70        *FUNCTION BLOCK XFER READ
   ACN, ABT 70               *ACTIVATE CHANNEL
   INB, ABT 70               *INPUT BUFFER
   B7 = 10                   *EXPECTED NIC0 STATUS
   GOSUB 65                  *CHECK STATUS
   COMPARE OB TO IB FOR WC, ABT 61
   GOTO 62
* 
61 B14 = B14.OR.2            *SET BLOCK XFER ERR STATUS 
   B4 = OB(WC).XOR.IB(WC)    *CALCULATE DIFFERENCE
   MSG 5 (WC,OB(WC),IB(WC),B4) TO LINE B5  *DATA ERROR
* 
62 WC = 502 
   B5 = B5 + 1               *INCREMENT DATA ERROR LINE NO. 
   FUNC BMR, ABT 70          *FUNCTION BUFFER MEM. READ 
   ACN, ABT 70               *ACTIVATE CHANNEL
   INB, ABT 70               *INPUT BUFFER
   B7 = 10                   *EXPECTED NIC0 STATUS
   GOSUB 65                  *CHECK STATUS
   COMPARE OB TO IB FOR WC, ABT 63
   RETURN 
* 
63 B14 = B14.OR.1            *SET BUFFER XFER ERR STATUS
   B10 = OB(WC).XOR.IB(WC)   *CALCULATE DIFFERENCE
   MSG 5 (WC,OB(WC),IB(WC),B10) TO LINE B5  *DATA ERROR 
   RETURN 
* 
/         CHECK STATUS
* 
65 B6 = LF                   *SAVE LAST FUNCTOION 
   FUNC IPCS, ABT 70
   STATUS 32D WORDS TO SB(1), ABT 70
   IF (SB(2).AND.370.NE.B7) GOTO 66 
   IF (SB(3).AND.4.NE.0) GOTO 66
   IF (SB(4).AND.344.EQ.0) RETURN 
66 IF (B6.EQ.BTBMW) ERROR 3/7 
   IF (B6.EQ.BTBMR) ERROR 3/10
   IF (B6.EQ.BMW) ERROR 3/35
   IF (B6.EQ.BMR) ERROR 3/36
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 15A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 77
* 
/        TERMINATE
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC15A,6000(05,07,14,16),LOCK 
*   5.2.11.1 FHC15A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC15B - PROCESS HIGHER ERROR NUMBERS.
*         FHC010 - REPORT UNEXPECTED ERRORS.
* 
*         REGISTERS USED- 
*         SAME AS FHC15.
* 
*         BUFFERS USED- 
*         SAME AS FHC15.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC15 - DATA PATH TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC15 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 69001 HEX 
* 
10 FORMAT ALL TRANSFERS TO AND FROM MEMORY FAILED.
11 FORMAT REPLACE THE APPROPRIATE RECEIVER/TRANSMITTER
12 FORMAT CARDS (A01 FOR ACCESS A, A02 FOR B, A03 FOR C,
13 FORMAT AND A04 FOR D) OR A08.
* 
/        ERROR NUMBER 69002 HEX 
* 
14 FORMAT BLOCK TRANSFER BUFFER MEMORY WRITE FAILED.
15 FORMAT 
16 FORMAT SUCCESSIVELY REPLACE CARDS A08 AND A16. 
17 FORMAT 
* 
/        ERROR NUMBER 69003 HEX 
* 
20 FORMAT BLOCK TRANSFER BUFFER MEMORY READ FAILED. 
21 FORMAT 
22 FORMAT SUCCESSIVELY REPLACE CARDS A16 AND ACCESS CARD
23 FORMAT (A01 FOR A, A02 FOR B, A03 FOR C, AND A04 FOR D). 
* 
/        ERROR NUMBER 69004 HEX 
* 
24 FORMAT DATA PATH FAILURE, B14 = *OCT 
25 FORMAT SUCCESSIVELY REPLACE CARDS A15, A08, B21, A16,
26 FORMAT R/T CARD(A01/A02/A03/A04), A24, A26,
27 FORMAT B27, B26, B20, AND B19. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC15A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
   EQUATE FLAG1S TO 0002
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.151) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.4) EXIT TO 15B 
* 
/        ERROR NUMBER 69001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 69002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   MSG 15 TO LINE 13
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 69003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   MSG 20 TO LINE 12
   MSG 21 TO LINE 13
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 69004 HEX 
* 
43 IF (EC.NE.4) GOTO 45 
   MSG 24 (B14) TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 25 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   GOTO 77
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC15B,6000(05,07,14,16),LOCK 
*   5.2.11.2 FHC15B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC15C - PROCESS HIGHER ERROR NUMBERS.
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC15.
* 
*         BUFFERS USED- 
*         SAME AS FHC15.
* 
* 
* 
/        COMMON MESSAGES
* 
0  FORMAT SUCCESSIVELY REPLACE CARDS
1  FORMAT A15 AND A20.
2  FORMAT R/T CARD (A01/A02/A03/A04),A08,A20,AND A*D. 
3  FORMAT B21, A15, AND A20.
4  FORMAT R/T (A01/A02/A03/A04),A08,A15,A20,AND A21.
5  FORMAT B03, B16, B21, B12, B13, AND A20. 
6  FORMAT B27,B26,B20,B19,B21,A20,A24,A26,AND A27 
7  FORMAT B21,B02,B15,B27,B22,B13,A20,AND B11.
* 
/        ERROR NUMBER 69005 HEX 
* 
10 FORMAT BUFFER MEMORY READ FAILED.
11 FORMAT SUCCESSIVELY REPLACE CARDS B*D, 
12 FORMAT A*D, (A01/A02/A03/A04), B21, AND A27. 
13 FORMAT 
* 
/        ERROR NUMBER 69006 HEX 
* 
14 FORMAT BUFFER MEMORY WRITE FAILED. 
15 FORMAT SUCCESSIVELY REPLACE CARDS A15, A08,
16 FORMAT A24, A26, AND A27.
17 FORMAT 
* 
/        ERROR NUMBER 69007 HEX 
* 
20 FORMAT CHANNEL STATUS NON-ZERO AFTER BLOCK TRANSFER
21 FORMAT BUFFER WRITE. 
* 
/        ERROR NUMBER 69008 HEX 
* 
24 FORMAT CHANNEL STATUS NON-ZERO AFTER BLOCK TRANSFER
25 FORMAT BUFFER READ.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC15B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
* 
/ 
* 
31 IF (B0.NE.151) GOTO 45 
   IF (EC.LT.5) GOTO 45 
   IF (EC.GT.10) EXIT TO 15C
* 
/        ERROR NUMBER 69005 HEX 
* 
40 IF (EC.NE.5) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   B13 = B4.OR.B10
   B13 = B13.OR.B11 
   B13 = B13.OR.B12 
   IF(B13.AND.17B.NE.0)MSG 11(27D)TO LINE 14    *BITS 0-3 
   IF(B13.AND.360B.NE.0)MSG 11(26D)TO LINE 14   *BITS 4-7 
   IF(B13.AND.7400B.NE.0)MSG 11(20D)TO LINE 14  *BITS 8-11
   IF(B13.AND.377B.NE.0)MSG 12(26D)TO LINE 15   *BITS 0-7 
   IF(B13.AND.7400B.NE.0)MSG 12(24D)TO LINE 15  *BITS 8-11
   MSG 13 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 69006 HEX 
* 
41 IF (EC.NE.6) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 69007 HEX 
* 
42 IF (EC.NE.7) GOTO 43 
   MSG 20 TO LINE 12
   MSG 21 TO LINE 13
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   GOTO 50
* 
/        ERROR NUMBER 69008 HEX 
* 
43 IF (EC.NE.10) GOTO 45
   MSG 24 TO LINE 12
   MSG 25 TO LINE 13
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   GOTO 50
* 
/         CHANNEL STATUS ISOLATION ROUTINE. 
* 
50 MSG 0 TO LINE 15 
   IF (SB(2).AND.370.EQ.B7) GOTO 51 
   IF(SB(2).AND.200.NE.0)MSG 3 TO LINE 16     *NIC 0/7
   IF(SB(2).AND.100.NE.0)MSG 3 TO LINE 16     *NIC 0/6
   IF(SB(2).AND.40.NE.0)MSG 4 TO LINE 16      *NIC 0/5
   IF(SB(2).AND.20.NE.0)MSG 2(21D)TO LINE 16  *NIC 0/4
   IF(SB(2).AND.10.EQ.0)MSG 2(16D)TO LINE 16  *NIC 0/3
   GOTO 53
51 IF (SB(3).AND.4.EQ.0) GOTO 52              *NIC 1/10 
   MSG 4 TO LINE 16 
   GOTO 53
52 IF (SB(4).AND.344.EQ.0) GOTO 53
   IF(SB(4).AND.200.NE.0)MSG 1 TO LINE 16     *NIC 1/7
   IF(SB(4).AND.100.NE.0)MSG 5 TO LINE 16     *NIC 1/6
   IF(SB(4).AND.4.NE.0)MSG 7 TO LINE 16       *NIC 1/2
   IF(SB(4).AND.40.NE.0)MSG 6 TO LINE 16      *NIC 1/5
53 EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC15C,6000(05,07,14,16),LOCK 
*   5.2.11.3 FHC15C - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC15.
* 
*         BUFFERS USED- 
*         SAME AS FHC15.
* 
* 
* 
/        COMMON MESSAGES
* 
0  FORMAT SUCCESSIVELY REPLACE CARDS
1  FORMAT A15 AND A20.
2  FORMAT R/T CARD (A01/A02/A03/A04),A08,A20,AND A*D. 
3  FORMAT B21, A15, AND A20.
4  FORMAT R/T (A01/A02/A03/A04),A08,A15,A20,AND A21.
5  FORMAT B03, B16, B21, B12, B13, AND A20. 
6  FORMAT B27,B26,B20,B19,B21,A20,A24,A26,AND A27 
7  FORMAT B21,B02,B15,B27,B22,B13,A20,AND B11.
15 FORMAT B21,A15,A20, AND R/T CARD (A01/A02/A03/A04/). 
* 
/        ERROR NUMBER 6901D HEX 
* 
10 FORMAT CHANNEL STATUS NON-ZERO AFTER BUFFER WRITE. 
13 FORMAT 
* 
/        ERROR NUMBER 6901E HEX 
* 
14 FORMAT CHANNEL STATUS NON-ZERO AFTER BUFFER READ.
* 
/        ERROR NUMBER 6901F HEX 
* 
20 FORMAT BLOCK TRANSFER BUFFER MEMORY READ/WRITE FAILED. 
21 FORMAT SUCCESSIVELY REPLACE CARDS A16 AND A*D. 
22 FORMAT 
23 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC15C - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
* 
/ 
* 
31 IF (B0.NE.151) GOTO 45 
   IF (EC.LT.35) GOTO 45
   IF (EC.GT.37B) GOTO 45 
* 
/        ERROR NUMBER 6901D HEX 
* 
40 IF (EC.NE.35) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   GOTO 50
* 
/        ERROR NUMBER 6901E HEX 
* 
41 IF (EC.NE.36) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   GOTO 50
* 
/        ERROR NUMBER 6901F HEX 
* 
42 IF (EC.GT.37) GOTO 45
   MSG 20 TO LINE 12
   IF (P4.AND.4000B.EQ.0) GOTO 77 
   B13 = B4.OR.B10
   B13 = B13.OR.B11 
   B13 = B13.OR.B12 
   IF(B13.AND.377B.NE.0)MSG 21(26D)TO LINE 14   *BITS 0-7 
   IF(B13.AND.7400B.NE.0)MSG 21(24D)TO LINE 14  *BITS 8-11
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   GOTO 77
* 
/         CHANNEL STATUS ISOLATION ROUTINE. 
* 
50 MSG 0 TO LINE 14 
   IF (SB(2).AND.370.EQ.B7) GOTO 51 
   B6 = 0 
   IF (EC.EQ.35) B6 = 200 
   IF(SB(2).AND.200.NE.B6)MSG 3 TO LINE 15    *NIC 0/7
   IF(B6.EQ.200) GOTO 54     *NOT ERROR 6901E 
   IF(SB(2).AND.200.NE.B6)MSG 15 TO LINE 15   *NIC 0/7
54 IF(SB(2).AND.100.NE.0)MSG 3 TO LINE 15     *NIC 0/6
   IF(SB(2).AND.40.NE.0)MSG 4 TO LINE 15      *NIC 0/5
   IF(SB(2).AND.20.NE.0)MSG 2(21D)TO LINE 15  *NIC 0/4
   IF(SB(2).AND.10.EQ.0)MSG 2(16D)TO LINE 15  *NIC 0/3
   GOTO 53
51 IF (SB(3).AND.4.EQ.0) GOTO 52              *NIC 1/10 
   MSG 4 TO LINE 15 
   GOTO 53
52 IF (SB(4).AND.344.EQ.0) GOTO 53
   IF(SB(4).AND.200.NE.0)MSG 1 TO LINE 15     *NIC 1/7
   IF(SB(4).AND.100.NE.0)MSG 5 TO LINE 15     *NIC 1/6
   IF(SB(4).AND.4.NE.0)MSG 7 TO LINE 15       *NIC 1/2
   IF(SB(4).AND.40.NE.0)MSG 6 TO LINE 15      *NIC 1/5
53 MSG 13 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC18,6000(05,07,14,16),LOCK
** 5.2.12 FHC18 - CONTROL WORD REGISTER TEST
* 
*         PURPOSE-
*         FHC18 VERIFIES THE ABILITY OF THE CONTROL WORD REGISTER TO
*         RECEIVE, RETAIN, AND RETURN ASSORTED DATA PATTERNS. 
* 
*         METHOD- 
*         DO FOR ALL DATA PATTERNS
*           MASTER CLEAR THE CONTROL LOGIC
*           EXECUTE CONTROLWORD SEQUENCE WITH THE BIT COUNTER = 0 AND 
*            THE CONTROLWORD = DATA PATTERN 
*           VERIFY THAT NOC 5 = DATA PATTERN
*           DO FOR ALL 4 HEADS
*             SELECT HEAD ON NOC 3
*             VERIFY THAT NIC 5 = DATA PATTERN
*           ENDO
*         ENDO
*         SEND PROCESSOR CLOCK BIT TO NOC 5 
*         VERIFY THAT LOST CONTROL WORD BIT SETS
/ 
*         ENTRY-NO SPECIAL ENTRY CONCITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC18A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B6 - HEAD INDEX 
*         B7 - TEMPORARY STORAGE
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(4)  CONTROLWORD SEQUENCE BUFFER
*         OB(6)...       DATA PATTERNS
* 
* 
1  FORMAT FHC18 - CONTROL WORD REGISTER TEST
2  FORMAT FHC18 - LC=*DECD, EC=*DECD
4  FORMAT FHC18 ERROR(S) = *DECD
5  FORMAT UPPER 8 BITS - E*OC A*OC D*OC 
6  FORMAT LOWER 8 BITS - E*OC A*OC D*OC 
* 
*         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
*         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 0010      *CLEAR COUPLER CONNECT 
   EQUATE OPNC TO 0050
   EQUATE ECWS TO 0051
   EQUATE IPCS TO 0052
   EQUATE ENOC TO 0053
   EQUATE IPFP TO 0054
* 
*         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 10         *NUMBER OF DATA PATTERNS 
* 
* 
* 
   DATA (OB(00),CON) 1,0,0,0,0,0
   DATA (OB(06),CON) 000,000
   DATA (OB(10),CON) 377,377
   DATA (OB(12),CON) 252,252
   DATA (OB(14),CON) 125,125
   DATA (OB(16),CON) 1,1,0   *SELECT HEADS PARALLEL MODE
   DATA (OB(21),CON) 3,0,0   *SELECT HEAD DECODE MAINT
   DATA (OB(24),CON) 4,0,3   *LOST CW BIT COUNT 
   DATA (OB(27),CON) 5,100,0  *LOST CW CONTROLWORD
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
*        INITIALIZE.
* 
21 B0=152                    *TEST NUMBER 6A HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B9 = 18D                  *MODULE NUMBER 18D 
* 
/        PERFORM CONTROL WORD REGISTER TEST 
* 
40 B1=B1+1
   RES, ABT 70
   OB(3)=OB(B2+6)            *UPPER 8 BITS OF CONTROL WORD
   OB(4)=OB(B2+7)            *LOWER 8 BITS OF CONTROL WORD
*         MASTER CLEAR CONTROL LOGIC
   OB(504)=1
   FUNC IPFP, ABT 70
   OUT 1 WORDS FROM OB(504), ABT 70 
   FUNC OPNC, ABT 70         *SELECT 4 HEADS MODE 
   ACN, ABT 70
   OUT 3 WORDS FROM OB(16), ABT 70
   BA = 0                    *SET BEGINNING ADDRESS 
   WC = 49D                  *INITIALIZE WORD COUNT 
   FUNC ECWS, ABT 70         *EXECUTE CONTROL WORD SEQUENCE 
   OUT, ABT 70
46 FUNC ENOC, ABT 70         *ECHO NOC(S) 
   STATUS 32D WORDS TO SB(1), ABT 70
   B4=SB(13).XOR.OB(3).AND.377
   B5=SB(14).XOR.OB(4).AND.377
   IF (B4.NE.0) GOTO 50 
   IF (B5.NE.0) ERROR 3/4, GOTO 67
   GOTO 52
50 IF (B5.NE.0) ERROR 3/5, GOTO 67
   ERROR 3/6, GOTO 67 
52 B6 = 0                    *INITIALIZE HEAD COUNTER 
54 OB(23) = B6.LS.4 
   FUNC OPNC, ABT 70         *SELECT HEAD DECODE MAINT
   ACN, ABT 70
   OUT 3 WORDS FROM OB(21), ABT 70
   FUNC IPCS, ABT 70         *STATUS INPUT CHANNELS 
   STATUS 32D WORDS TO SB(1), ABT 70
   B4=SB(13).XOR.OB(3).AND.377
   B5=SB(14).XOR.OB(4).AND.377
   IF(B5.EQ.0) GOTO 56
   IF(B4.NE.0) ERROR 3/2, GOTO 67           *ALL BAD
   IF(B5.AND.360.EQ.0) ERROR 3/11, GOTO 67  *0-3 BAD
   IF(B5.AND.17.EQ.0) ERROR 3/12, GOTO 67   *4-7 BAD
   ERROR 3/1, GOTO 67                       *LOWER 8 BAD
56 IF(B4.EQ.0) GOTO 57                      *ALL OK 
   IF(B4.AND.360.EQ.0) ERROR 3/13, GOTO 67  *8-11 BAD 
   IF(B4.AND.17.EQ.0) ERROR 3/14, GOTO 67   *12-15 BAD
   ERROR 3/3, GOTO 67                       *UPPER 8 BAD
57 GOTO 54 WHILE (B6+1.LE.3)  *DO FOR EACH HEAD 
* 
/        FINALIZE.
* 
   GOTO 40 WHILE (B2+2.LT.NPAT)  *END OF DATA PATTERN LOOP
   B2 = 0                    *REINITIALIZE PATTERN INDEX
*         VERIFY LOST CONTROL WORD
   FUNC OPNC, ABT 70
   OUT 3 WORDS FROM OB(24), ABT 70
   FUNC OPNC, ABT 70         *SELECT PROCESSOR CLOCK
   OUT 3 WORDS FROM OB(27), ABT 70
   FUNC IPCS, ABT 70
   STATUS 32D WORDS TO SB(1), ABT 70
   IF (SB(3).AND.1.EQ.0) ERROR 3/7, GOTO 66 
   FUNC IPFP, ABT 70
   OUT 1 WORDS FROM OB(504), ABT 70 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 76                       *TERMINATE 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 MSG 5 (OB(3),SB(13),B4) TO LINE 7
   MSG 6 (OB(4),SB(14),B5) TO LINE 10 
66 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C  *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 18A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 77
* 
/        TERMINATE. 
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC18A,6000(05,07,14,16),LOCK 
*   5.2.12.1 FHC18A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC18B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC18.
* 
*         BUFFERS USED- 
*         SAME AS FHC18.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC18 - CONTROL WORD REGISTER TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC18 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6A001 HEX 
* 
10 FORMAT MISCOMPARE ON LOWER 8 BITS OF NIC 5.
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B26, B27, B21, B*D, A19, AND A21. 
13 FORMAT 
* 
/        ERROR NUMBER 6A002 HEX 
* 
14 FORMAT MISCOMPARE ON UPPER AND LOWER 8 BITS OF NIC 5.
15 FORMAT SUCCESSIVELY REPLACE CARDS
16 FORMAT B21, B*D, A19, A21, B27, B26, B20, AND B19. 
17 FORMAT R/T CARD(A01/A02/A03/A04), A08, A16,
* 
/        ERROR NUMBER 6A003 HEX 
* 
20 FORMAT MISCOMPARE ON UPPER 8 BITS OF NIC 5.
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT B20, B19, B21, B*D, A19, AND A21. 
23 FORMAT 
* 
/        ERROR NUMBER 6A004 HEX 
* 
24 FORMAT MISCOMPARE ON LOWER 8 BITS OF ECHOED NOC 5. 
25 FORMAT SUCCESSIVELY REPLACE CARDS
26 FORMAT A19, A21, B27, B26, AND A27.
27 FORMAT A19, A21, B*D, AND A27. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC18A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.152) GOTO 45 
   IF (EC.LT.1) GOTO 45 
   IF (EC.GT.4) EXIT TO 18B 
* 
/        ERROR NUMBER 6A001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   B7 = B6 + 22D
   MSG 12 (B7) TO LINE 15 
   MSG 13 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6A002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 15 TO LINE 14
   B7 = B6 + 22D
   IF(SB(13)+SB(14).NE.0) GOTO 51 
   MSG 16 (B7) TO LINE 15 
   MSG 13 TO LINE 16
   EXIT TO 98L
51 IF(B4.XOR.B5.NE.0) MSG 16 (B7) TO LINE 15
   IF(B4.XOR.B5.EQ.0) MSG 17 TO LINE 15 
   IF(B4.XOR.B5.NE.0) MSG 13 TO LINE 16 
   IF(B4.XOR.B5.EQ.0) MSG 16 (B7) TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6A003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 21 TO LINE 14
   B7 = B6 + 22D
   IF(B4.XOR.B5.NE.0) MSG 22 (B7) TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6A004 HEX 
* 
43 IF (EC.NE.4) GOTO 45 
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 25 TO LINE 14
   B6 = B5.AND.360B 
   B7 = B5.AND.17B
   IF(B6.NE.0) GOTO 53
   MSG 27 (27D) TO LINE 15
   GOTO 55
53 IF (B7.NE.0) GOTO 54 
   MSG 27 (26D) TO LINE 15
   GOTO 55
54 MSG 26 TO LINE 15
55 MSG 13 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC18B,6000(05,07,14,16),LOCK 
*   5.2.12.2 FHC18B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC18C - PROCESS HIGHER ERROR NUMBERS.
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC18.
* 
*         BUFFERS USED- 
*         SAME AS FHC18.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC18 - CONTROL WORD REGISTER TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC18 - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT 
* 
/        ERROR NUMBER 6A005 HEX 
* 
10 FORMAT MISCOMPARE ON BOTH UPPER AND LOWER 8 BITS OF
11 FORMAT ECHOED NOC 5. 
12 FORMAT SUCCESSIVELY REPLACE CARDS
13 FORMAT A19, A21, B27, B26, B20, B19, AND A27.
* 
/        ERROR NUMBER 6A006 HEX 
* 
14 FORMAT MISCOMPARE ON UPPER 8 BITS OF ECHOED NOC 5. 
15 FORMAT SUCCESSIVELY REPLACE CARDS
16 FORMAT A19, A21, B20, B19, AND A27.
17 FORMAT A19, A21, B*D, AND A27. 
* 
/        ERROR NUMBER 6A007 HEX 
* 
20 FORMAT UNABLE TO FORCE LOST CONTROL WORD.
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT B22, B23, B24, B25, B21, B27, B26, B20, B19,
23 FORMAT A19, A20, AND A21.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC18B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.152) GOTO 45 
   IF (EC.LT.5) GOTO 45 
   IF (EC.GT.10) EXIT TO 18C
* 
/        ERROR NUMBER 6A005 HEX 
* 
40 IF (EC.NE.5) GOTO 41 
   MSG 10 TO LINE 12
   MSG 11 TO LINE 13
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6A006 HEX 
* 
41 IF (EC.NE.6) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 15 TO LINE 14
   B6 = B4.AND.360B 
   B7 = B4.AND.17B
   IF(B6.NE.0) GOTO 51
   MSG 17 (20D) TO LINE 15
   GOTO 53
51 IF (B7.NE.0) GOTO 52 
   MSG 17 (19D) TO LINE 15
   GOTO 53
52 MSG 16 TO LINE 15
53 MSG 5 TO LINE 16 
   EXIT TO 98L
* 
/        ERROR NUMBER 6A007 HEX 
* 
42 IF (EC.NE.7) GOTO 45 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC18C,6000(05,07,14,16),LOCK 
*   5.3.12.3 FHC18C - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC18.
* 
*         BUFFERS USED- 
*         SAME AS FHC18.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC18 - CONTROL WORD REGISTER TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC18 - LINE *OCT - ERROR NUMBER *H*HE
* 
/         ERROR NUMBERS 6A009 - 6A00C HEX 
* 
10 FORMAT MISCOMPARE ON BITS *D-*D OF NIC 5, HEAD *O
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B27, B21, B*D, A19, AND A21.
13 FORMAT B26, B21, B*D, A19, AND A21.
14 FORMAT B20, B21, B*D, A19, AND A21.
15 FORMAT B19, B21, B*D, A19, AND A21.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC18C - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.152) GOTO 45 
   IF (EC.LT.11) GOTO 45
   IF (EC.GT.14) GOTO 45
* 
/         ERROR NUMBERS 6A009 - 6A00C HEX 
* 
40 B8 = EC-1.AND.3B 
   IF(B8.EQ.0) MSG 10 (00D,03D,B6) TO LINE 12 
   IF(B8.EQ.1) MSG 10 (04D,07D,B6) TO LINE 12 
   IF(B8.EQ.2) MSG 10 (08D,11D,B6) TO LINE 12 
   IF(B8.EQ.3) MSG 10 (12D,15D,B6) TO LINE 12 
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   B7 = B6 + 22D
   B8 = B8 + 12B
   MSG B8 (B7) TO LINE 15 
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC19,6000(05,07,14,16),LOCK
** 5.2.13 FHC19 - BIT COUNTER REGISTER TEST 
* 
*         PURPOSE-
*         FHC19 VERIFIES THE ABILITY OF THE BIT COUNTER REGISTER TO 
*         RECEIVE, RETAIN, AND RETURN ASSORTED DATA PATTERNS. 
* 
*         METHOD- 
*         DO FOR ALL DATA PATTERNS
*           EXECUTE CONTROLWORD SEQUENCE WITH THE CONTROLWORD = 0 AND 
*            THE BIT COUNTER = DATA PATTERN 
*           VERIFY THAT NOC 4 = DATA PATTERN
*           DO FOR ALL 4 HEADS
*             SELECT HEAD ON NOC 3
*             VERIFY THAT NIC 4 = DATA PATTERN
*           ENDO
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC19A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B7 - TEMPORARY STORAGE
*         B6 - HEAD INDEX 
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(4)  CONTROLWORD SEQUENCE BUFFER
*         OB(6)...       DATA PATTERNS
* 
* 
1  FORMAT FHC19 - BIT COUNTER REGISTER TEST 
2  FORMAT FHC19 - LC=*DECD, EC=*DECD
4  FORMAT FHC19 ERROR(S) = *DECD
5  FORMAT UPPER 8 BITS - E*OC A*OC D*OC 
6  FORMAT LOWER 8 BITS - E*OC A*OC D*OC 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 0010      *CLEAR COUPLER CONNECT 
   EQUATE OPNC TO 0050
   EQUATE ECWS TO 0051
   EQUATE IPCS TO 0052
   EQUATE ENOC TO 0053
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 10         *NUMBER OF DATA PATTERNS 
* 
/ 
* 
   DATA (OB(06),CON) 000,000
   DATA (OB(10),CON) 377,377
   DATA (OB(12),CON) 252,252
   DATA (OB(14),CON) 125,125
   DATA (OB(16),CON) 1,1,0   *SELECT HEADS PARALLEL MODE
   DATA (OB(21),CON) 3,0,0   *SELECT HEAD DECODE MAINT
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/        INITIALIZE.
* 
21 B0=152                    *TEST NUMBER 6A HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B9 = 19D                  *MODULE NUMBER 19D 
   OB(0)=1                   *NUMBER OF CONTROL WORDS 
   OB(3)=0                   *LOWER 8 BITS OF CONTROL WORD
   OB(4)=0                   *UPPER 8 BITS OF CONTROL WORD
* 
/        PERFORM BIT COUNTER REGISTER TEST
* 
40 B1=B1+1
   OB(1)=OB(B2+6)            *UPPER 8 BITS OF BIT COUNTER 
   OB(2)=OB(B2+7)            *LOWER 8 BITS OF BIT COUNTER 
   RES, ABT 70
   FUNC OPNC, ABT 70         *SELECT 4 HEADS MODE 
   ACN, ABT 70
   OUT 3 WORDS FROM OB(16), ABT 70
   BA = 0                    *SET BEGINNING ADDRESS 
   WC = 49D                  *INITIALIZE WORD COUNT 
   FUNC ECWS, ABT 70         *EXECUTE CONTROL WORD SEQUENCE 
   OUT, ABT 70
46 FUNC ENOC, ABT 70         *ECHO NOC(S) 
   STATUS 32D WORDS TO SB(1), ABT 70
   B4=SB(11).XOR.OB(1).AND.377
   B5=SB(12).XOR.OB(2).AND.377
   IF (B4.NE.0) GOTO 50 
   IF (B5.NE.0) ERROR 3/20, GOTO 67 
   GOTO 52
50 IF (B5.NE.0) ERROR 3/21, GOTO 67 
   ERROR 3/22, GOTO 67
52 B6 = 0                    *INITIALIZE HEAD COUNTER 
54 OB(23) = B6.LS.4 
   FUNC OPNC, ABT 70         *SELECT HEAD DECODE MAINT
   ACN, ABT 70
   OUT 3 WORDS FROM OB(21), ABT 70
   FUNC IPCS, ABT 70         *STATUS INPUT CHANNELS 
   STATUS 32D WORDS TO SB(1), ABT 70
   B4=SB(11).XOR.OB(1).AND.377
   B5=SB(12).XOR.OB(2).AND.377
   IF(B5.EQ.0) GOTO 56
   IF(B4.NE.0) ERROR 3/16, GOTO 67          *ALL BAD
   IF(B5.AND.360.EQ.0) ERROR 3/25, GOTO 67  *0-3 BAD
   IF(B5.AND.17.EQ.0) ERROR 3/26, GOTO 67   *4-7 BAD
   ERROR 3/15, GOTO 67                      *LOWER 8 BAD
56 IF(B4.EQ.0) GOTO 57                      *ALL OK 
   IF(B4.AND.360.EQ.0) ERROR 3/27, GOTO 67  *8-11 BAD 
   IF(B4.AND.17.EQ.0) ERROR 3/30, GOTO 67   *12-15 BAD
   ERROR 3/17, GOTO 67                      *UPPER 8 BAD
57 GOTO 54 WHILE (B6+1.LE.3)  *DO FOR EACH HEAD 
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 40 WHILE (B2+2.LT.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 MSG 5 (OB(1),SB(11),B4) TO LINE 7
   MSG 6 (OB(2),SB(12),B5) TO LINE 10 
   B15=B15.OR.FLAG1S  *SET FLAG 1 
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C  *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 19A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 77
* 
/        TERMINATE. 
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC19A,6000(05,07,14,16),LOCK 
*   5.2.13.1 FHC19A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC19B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC19.
* 
*         BUFFERS USED- 
*         SAME AS FHC19.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC19 - BIT COUNTER REGISTER TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC19 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6A00D HEX 
* 
10 FORMAT MISCOMPARE ON LOWER 8 BITS OF NIC 4.
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B26, B27, B21, B*D, A19, AND A21. 
13 FORMAT 
* 
/        ERROR NUMBER 6A00E HEX 
* 
14 FORMAT MISCOMPARE ON UPPER AND LOWER 8 BITS OF NIC 4.
15 FORMAT SUCCESSIVELY REPLACE CARDS
16 FORMAT B21, B*D, A19, A21, B27, B26, B20, AND B19. 
17 FORMAT R/T CARD(A01/A02/A03/A04), A08, A16,
* 
/        ERROR NUMBER 6A00F HEX 
* 
20 FORMAT MISCOMPARE ON UPPER 8 BITS OF NIC 4.
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT B20, B19, B21, B*D, A19, AND A21. 
23 FORMAT 
* 
/        ERROR NUMBER 6A010 HEX 
* 
24 FORMAT MISCOMPARE ON LOWER 8 BITS OF ECHOED NOC 4. 
25 FORMAT SUCCESSIVELY REPLACE CARDS
26 FORMAT A19, A21, B27, B26, AND A27.
27 FORMAT A19, A21, B*D, AND A27. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC19A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.152) GOTO 45 
   IF (EC.LT.15) GOTO 45
   IF (EC.GT.20) EXIT TO 19B
* 
/        ERROR NUMBER 6A00D HEX 
* 
40 IF (EC.NE.15) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   B7 = B6 + 22D
   MSG 12 (B7) TO LINE 15 
   MSG 13 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6A00E HEX 
* 
41 IF (EC.NE.16) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 15 TO LINE 14
   B7 = B6 + 22D
   IF(SB(11)+SB(12).NE.0) GOTO 51 
   MSG 16 (B7) TO LINE 15 
   MSG 13 TO LINE 16
   EXIT TO 98L
51 IF(B4.XOR.B5.NE.0) MSG 16 (B7) TO LINE 15
   IF(B4.XOR.B5.EQ.0) MSG 17 TO LINE 15 
   IF(B4.XOR.B5.NE.0) MSG 13 TO LINE 16 
   IF(B4.XOR.B5.EQ.0) MSG 16 (B7) TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6A00F HEX 
* 
42 IF (EC.NE.17) GOTO 43
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 21 TO LINE 14
   B7 = B6 + 22D
   IF(B4.XOR.B5.NE.0) MSG 22 (B7) TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6A010 HEX 
* 
43 IF (EC.NE.20) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 25 TO LINE 14
   B6 = B5.AND.360B 
   B7 = B5.AND.17B
   IF(B6.NE.0) GOTO 53
   MSG 27 (27D) TO LINE 15
   GOTO 55
53 IF (B7.NE.0) GOTO 54 
   MSG 27 (26D) TO LINE 15
   GOTO 55
54 MSG 26 TO LINE 15
55 MSG 13 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC19B,6000(05,07,14,16),LOCK 
*   5.2.13.2 FHC19B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC19C - PROCESS HIGHER ERROR NUMBERS.
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC19.
* 
*         BUFFERS USED- 
*         SAME AS FHC19.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC19 - BIT COUNTER REGISTER TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC19 - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT 
* 
/        ERROR NUMBER 6A011 HEX 
* 
10 FORMAT MISCOMPARE ON BOTH UPPER AND LOWER 8 BITS OF
11 FORMAT ECHOED NOC 4. 
12 FORMAT SUCCESSIVELY REPLACE CARDS
13 FORMAT A19, A21, B27, B26, B20, B19, AND A27.
* 
/        ERROR NUMBER 6A012 HEX 
* 
14 FORMAT MISCOMPARE ON UPPER 8 BITS OF ECHOED NOC 4. 
15 FORMAT SUCCESSIVELY REPLACE CARDS
16 FORMAT A19, A21, B20, B19, AND A27.
17 FORMAT A19, A21, B*D, AND A27. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC19B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.152) GOTO 45 
   IF (EC.LT.21) GOTO 45
   IF (EC.GT.24) EXIT TO 19C
* 
/        ERROR NUMBER 6A011 HEX 
* 
40 IF (EC.NE.21) GOTO 41
   MSG 10 TO LINE 12
   MSG 11 TO LINE 13
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6A012 HEX 
* 
41 IF (EC.NE.22) GOTO 45
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 15 TO LINE 14
   B6 = B4.AND.360B 
   B7 = B4.AND.17B
   IF(B6.NE.0) GOTO 51
   MSG 17 (20D) TO LINE 15
   GOTO 53
51 IF (B7.NE.0) GOTO 52 
   MSG 17 (19D) TO LINE 15
   GOTO 53
52 MSG 16 TO LINE 15
53 MSG 5 TO LINE 16 
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC19C,6000(05,07,14,16),LOCK 
*   5.3.12.3 FHC19C - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC19.
* 
*         BUFFERS USED- 
*         SAME AS FHC19.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC19 - BIT COUNTER REGISTER TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC19 - LINE *OCT - ERROR NUMBER *H*HE
* 
/         ERROR NUMBERS 6A015 - 6A018 HEX 
* 
10 FORMAT MISCOMPARE ON BITS *D-*D OF NIC 5, HEAD *O
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B27, B21, B*D, A19, AND A21.
13 FORMAT B26, B21, B*D, A19, AND A21.
14 FORMAT B20, B21, B*D, A19, AND A21.
15 FORMAT B19, B21, B*D, A19, AND A21.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC19C - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.152) GOTO 45 
   IF (EC.LT.25) GOTO 45
   IF (EC.GT.30) GOTO 45
* 
/         ERROR NUMBERS 6A015 - 6A018 HEX 
* 
40 B8 = EC-1.AND.3B 
   IF(B8.EQ.0) MSG 10 (00D,03D,B6) TO LINE 12 
   IF(B8.EQ.1) MSG 10 (04D,07D,B6) TO LINE 12 
   IF(B8.EQ.2) MSG 10 (08D,11D,B6) TO LINE 12 
   IF(B8.EQ.3) MSG 10 (12D,15D,B6) TO LINE 12 
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   B7 = B6 + 22D
   B8 = B8 + 12B
   MSG B8 (B7) TO LINE 15 
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC20,6000(05,07,14,16),LOCK
** 5.2.14 FHC20 - MAINTENANCE LOOP TEST 
* 
*         PURPOSE-
*         FHC20 EXERCISES AND ISOLATES FAILURES IN THE BUFFER CONTROL 
*         BOARD, DATA PATH BOARDS, DATA PATH CONTROL BOARDS, AND THE
*         BUFFER-TO-DATA PATH BOARD.
* 
*         METHOD- 
*         DO FOR ALL DATA PATTERNS
*           WRITE FOUR 16-BIT PATTERNS INTO BUFFER. 
*           PERFORM A MAINTENANCE LOOP TO DATA BUFFER.
*           READ 16-BIT DATA FROM BUFFER. 
*           CHECK CHANNEL STATUS FOR LOST DATA. 
*           COMPARE FOUR HEADS DATA.
*           PERFORM A MAINTENANCE LOOP TO NIC 2.
*           CHECK CHANNEL STATUS FOR LOST DATA. 
*           CHECK CHANNEL STATUS FOR NIC 2 MISCOMPARE.
*         ENDO
*         INTERPRET DATA FAILURES 
* 
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC20A - REPORT EXPECTED ERRORS 
*         FHC982 - LOOP DATA THROUGH MAINTENANCE LOOP.
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B6 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B7 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B8 - HEAD INDEX 
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         B10- TEMPORARY STORAGE
*         B11- TEMPORARY STORAGE
*         B12- FOUR HEADS MODE BIT
*         B13- TEMPORARY STORAGE (SEE SUBMODULE 982)
*         B14- ERROR FLAG 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(024)  DATA PATTERNS
*         IB(0) - IB(31D)  32D WORDS OF COUPLER BUFFER
* 
* 
*         REMARKS-
* 
*         KNOWN LIMITATIONS-
* 
1  FORMAT FHC20 - MAINTENANCE LOOP TEST 
2  FORMAT FHC20 - LC=*DECD, EC=*DECD
4  FORMAT FHC20 ERROR(S) = *DECD
6  FORMAT DATA ERROR STS*H*H  E*H*H  A*H*H  D*H*H 
* 
*         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
*         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 10,IPCS TO 52,MDS TO 62
   EQUATE IDD TO 63, LOST TO 2
* 
*         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 10         *NUMBER OF DATA PATTERNS 
* 
*         OUTPUT BUFFER (DATA PATTERNS) 
* 
   DATA(OB(00),CON) 3,026,000,000,000 
   DATA(OB(05),CON) 000,000,377,377,125,125,252,252 
   DATA(OB(15),CON) 000,000,377,377,125,125,252,252 
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
*         INITIALIZE. 
* 
21 B0=152                    *TEST NUMBER 6A HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B9 = 20D                  *MODULE NUMBER 20D 
* 
/        PERFORM MAINTENANCE LOOP TEST
* 
40 B1=B1+1
   RES, ABT 70
* 
   OB = 1 
   B8 = 0                    *INIT. ADDRESS 
42 OB(2) = B8 
   B11 = B8.LS.1
   B11 = B11 + B2 + 5 
   OB(3) = OB(B11)
   OB(4) = OB(B11+1)
   GOSUB 50                  *WRITE 16-BIT PATTERN
   IF(EC.NE.0) GOTO 70
   GOTO 42 WHILE (B8+1.LT.4)
   OB(2) = 0
   B12 = 1
   CALL 982                  *LOOP DATA THRU MAINT, LOOP
   IF(EC.NE.0) GOTO 70
   B14 = 0                   *INITIALIZE ERROR FLAG 
   RES, ABT 70
   OB = 2                    *SET DISPLAY ADRS
   GOSUB 50 
   IF(EC.NE.0) GOTO 70
   FUNC IDD, ABT 70          *INPUT BUFFER DATA 
   ACN, ABT 70
   IN 64D WORDS TO IB, ABT 70 
   GOSUB 52                  *READ CHANNEL STATUS 
   IF (EC.NE.0) GOTO 70 
   IF(SB(4).AND.LOST.NE.0) ERROR 3/41, GOTO 67
   WC = 10                   *FOUR HEADS COMPARE
   COMPARE OB(B2+5) TO IB(40) FOR WC, ABT 43
   GOTO 44
43 B14 = B14 + 2             *SET MAINT LOOP ERR FLAG 
   B11 = WC .AND. 7776B 
   B10 = B11 + B2 + 5 
   B6 = OB(B10) .XOR. IB(B11+40)
   B7 = OB(B10+1) .XOR. IB(B11+41)
* 
/         PERFORM NIC 2 TEST. 
* 
44 B12 = 0                   *CLEAR 4-HEADS MODE
   CALL 982                  *LOOP DATA THRU MAINT. LOOP
   IF (EC.NE.0) GOTO 70 
   RES, ABT 70
* 
   GOSUB 52                  *READ CHANNEL STATUS 
   IF(EC.NE.0) GOTO 70
   IF(SB(4).AND.LOST.EQ.0) ERROR 3/40, GOTO 67
   B4 = OB(B2+5).XOR.SB(5)   *COMPARE PATTERN AND NIC 2 
   B5 = OB(B2+6).XOR.SB(6)
   IF(B4.OR.B5.EQ.0) GOTO 45
   B14 = B14 + 1             *SET NIC 2 ERR FLAG
   B8 = OB(B2+5)
   MSG 6(SB(3),SB(4),B8,OB(B2+6),SB(5),SB(6),B4,B5)TO LINE 7
* 
45 IF (B14.NE.0) ERROR 3/0, GOTO 67  *ANALYZE ERRORS
* 
/        FINALIZE.
* 
   IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 40 WHILE (B2+2.LT.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/         MANIPULATE PROCESSOR SUBROUTINE 
* 
50 FUNC MDS, ABT 54          *MANIPULATE PROC 
   ACN, ABT 54
   OUT 5 WORDS FROM OB, ABT 54
   GOTO 54
* 
/         GET CHANNEL STATUS SUBROUTINE.
* 
52 FUNC IPCS, ABT 54         *CHANNEL STATUS
   STATUS 32D WORDS TO SB(1), ABT 54
54 RETURN 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15 = EA                  *SAVE ERROR ADDRESS
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=0
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(B15.NE.0) CALL 20A     *EXPECTED ERROR DISPLAY
   IF(B15.EQ.0) CALL 010     *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 77
* 
/         TERMINATE.
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC20A,6000(05,07,14,16),LOCK 
*   5.2.14.1 FHC20A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC20B - PROCESS HIGHER ERROR NUMBERS.
* 
*         REGISTERS USED- 
*         SAME AS FHC20.
* 
*         BUFFERS USED- 
*         SAME AS FHC20.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC20 - MAINTENANCE LOOP TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC20 - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT DATA ERROR   W*OCT  E*H*H  A*H*H  D*H*H 
* 
/        ERROR NUMBER 6A019 HEX 
* 
10 FORMAT TRANSFERS TO AND FROM MEMORY FAILED WITH
11 FORMAT MAINTENANCE LOOP SET, UPPER 8 BITS. 
12 FORMAT SUCCESSIVELY REPLACE CARDS
13 FORMAT B19, B20, A15, B*D, B21, AND A24. 
* 
/        ERROR NUMBER 6A01A HEX 
* 
14 FORMAT TRANSFERS TO AND FROM MEMORY FAILED WITH
15 FORMAT MAINTENANCE LOOP SET, LOWER 8 BITS. 
16 FORMAT SUCCESSIVELY REPLACE CARDS
17 FORMAT B26, B27, A15, B*D, B21, AND A26. 
* 
/        ERROR NUMBER 6A01B HEX 
* 
20 FORMAT TRANSFERS TO AND FROM MEMORY FAILED WITH
21 FORMAT MAINTENANCE LOOP SET, UPPER AND LOWER 8 BITS. 
22 FORMAT SUCCESSIVELY REPLACE CARDS A15, B*D, B21, B27,
23 FORMAT B26, B20, B19, A19, A26, AND A24. 
24 FORMAT SUCCESSIVELY REPLACE R/T CARD(A01/A02/A03/A04), 
25 FORMAT A08, A15, AND A16.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC20A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   OB(25) = WC               *MOVE DATA TO OB 
   OB(26) = OB(B10) 
   OB(27) = OB(B10+1) 
   OB(30) = IB(B11+40)
   OB(31) = IB(B11+41)
   OB(32) = B6
   OB(33) = B7
   IF(B14.AND.2.EQ.0) GOTO 32 
   MSG 5, 7 WORDS FROM OB(25) TO LINE 10
   B11 = B11.RS.1            *FORM CARD ADRS
   B11 = B11 + 22D
* 
/        ANALYZE DATA ERRORS
* 
32 IF (B14.EQ.0) GOTO 37
   IF(B14.EQ.1) GOTO 34                     *IF NIC-2 BAD 
   IF(B7.AND.377.EQ.0) GOTO 33              *UPPER 8 BAD
   IF(B6.AND.377.NE.0) ERROR 3/33, GOTO 37  *ALL BAD
   IF(B7.AND.360.EQ.0) ERROR 3/42, GOTO 37  *0-3 BAD
   IF(B7.AND.17.EQ.0) ERROR 3/43, GOTO 37   *4-7 BAD
   ERROR 3/32, GOTO 37                      *LOWER 8 BAD
33 IF(B6.AND.360.EQ.0) ERROR 3/44, GOTO 37  *8-11 BAD 
   IF(B6.AND.17.EQ.0) ERROR 3/45, GOTO 37   *12-15 BAD
   ERROR 3/31, GOTO 37                      *UPPER 8 BAD
34 IF(B5.AND.377.EQ.0) GOTO 35              *UPPER 8 BAD
   IF(B4.AND.377.NE.0) ERROR 3/37, GOTO 37  *ALL BAD
   IF(B5.AND.360.EQ.0) ERROR 3/46, GOTO 37  *0-3 BAD
   IF(B5.AND.17.EQ.0) ERROR 3/47, GOTO 37   *4-7 BAD
   ERROR 3/36, GOTO 37                      *LOWER 8 BAD
35 IF(B4.AND.360.EQ.0) ERROR 3/50, GOTO 37  *8-11 BAD 
   IF(B4.AND.17.EQ.0) ERROR 3/51, GOTO 37   *12-15 BAD
   ERROR 3/35                               *UPPER 8 BAD
* 
/ 
* 
37 MSG 4 (B15,B0,EC) TO LINE 5
   IF (B0.NE.152) GOTO 45 
   IF (EC.LT.31) GOTO 45
   IF (EC.GT.34) EXIT TO 20B
* 
/        ERROR NUMBER 6A019 HEX 
* 
40 IF (EC.NE.31) GOTO 41
   MSG 10 TO LINE 12
   MSG 11 TO LINE 13
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 12 TO LINE 15
   MSG 13 (B11) TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 6A01A HEX 
* 
41 IF (EC.NE.32) GOTO 42
   MSG 14 TO LINE 12
   MSG 15 TO LINE 13
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 16 TO LINE 15
   MSG 17 (B11) TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 6A01B HEX 
* 
42 IF (EC.NE.33) GOTO 45
   MSG 20 TO LINE 12
   MSG 21 TO LINE 13
   IF (P4.AND.4000.EQ.0) GOTO 77
   IF(B6.XOR.B7.EQ.0) GOTO 43 
   MSG 22 (B11) TO LINE 15
   MSG 23 TO LINE 16
   GOTO 77
43 MSG 24 TO LINE 15
   MSG 25 TO LINE 16
   GOTO 77
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC20B,6000(05,07,14,16),LOCK 
*   5.2.14.2 FHC20B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC20C - PROCESS HIGHER ERROR NUMCERS.
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC20.
* 
*         BUFFERS USED- 
*         SAME AS FHC20.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC20 - MAINTENANCE LOOP TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC20 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6A01D HEX 
* 
10 FORMAT NORMAL INPUT CHANNEL TWO FAILED 
11 FORMAT WITH MAINTENANCE LOOP SET, UPPER 8 BITS.
12 FORMAT SUCCESSIVELY REPLACE CARDS B20, B19, AND A20. 
13 FORMAT 
* 
/        ERROR NUMBER 6A01E HEX 
* 
14 FORMAT NORMAL INPUT CHANNEL TWO FAILED 
15 FORMAT WITH MAINTENANCE LOOP SET, LOWER 8 BITS.
16 FORMAT SUCCESSIVELY REPLACE CARDS B26, B27, AND A20. 
17 FORMAT 
* 
/        ERROR NUMBER 6A01F HEX 
* 
20 FORMAT NORMAL INPUT CHANNEL TWO FAILED 
21 FORMAT WITH MAINTENANCE LOOP SET, UPPER AND LOWER 8 BITS.
22 FORMAT SUCCESSIVELY REPLACE CARDS
23 FORMAT A20, B27, B26, B20, AND B19.
* 
/         ERROR NUMBER 6A020 HEX
* 
5  FORMAT LOST DATA STUCK-AT-ZERO.
24 FORMAT SUCCESSIVELY REPLACE CARDS
25 FORMAT B22,B23,B24,B25,A21,A20,B21,B27,B20,A19,AND A15.
* 
/         ERROR NUMBER 6A021 HEX
* 
6  FORMAT LOST DATA STUCK-AT-ONE. 
7  FORMAT B22,B23,B24,B25,A21,A20,B21,B27,B20,A19,AND A15.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC20B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
* 
/ 
* 
   IF (B0.NE.152) GOTO 50 
   IF (EC.LT.35) GOTO 50
   IF (EC.GT.41) EXIT TO 20C
* 
/        ERROR NUMBER 6A01D HEX 
* 
40 IF (EC.NE.35) GOTO 41
   MSG 10 TO LINE 12
   MSG 11 TO LINE 13
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 6A01E HEX 
* 
41 IF (EC.NE.36) GOTO 42
   MSG 14 TO LINE 12
   MSG 15 TO LINE 13
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 6A01F HEX 
* 
42 IF (EC.NE.37) GOTO 45
   MSG 20 TO LINE 12
   MSG 21 TO LINE 13
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   GOTO 77
* 
/         ERROR NUMBER 6A020 HEX
* 
45 IF(EC.NE.40) GOTO 46 
   MSG 5 TO LINE 12 
   IF(P4.AND.4000.EQ.0) EXIT TO 98L 
   MSG 24 TO LINE 14
   MSG 25 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
* 
/         ERROR NUMBER 6A021 HEX
* 
46 IF(EC.NE.41) GOTO 50 
   MSG 6 TO LINE 12 
   IF(P4.AND.4000.EQ.0) EXIT TO 98L 
   MSG 22 TO LINE 14
   MSG 7 TO LINE 15 
   MSG 13 TO LINE 16
   EXIT TO 98L
/ 
50 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC20C,6000(05,07,14,16),LOCK 
*   5.2.14.3 FHC20C - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC20.
* 
*         BUFFERS USED- 
*         SAME AS FHC20.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC20 - MAINTENANCE LOOP TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC20 - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBERS 6A022-6A025 HEX
* 
6  FORMAT TRANSFERS TO AND FROM MEMORY FAILED 
* 
/         ERROR NUMBERS 6A026-6A029 HEX 
* 
7  FORMAT NORMAL INPUT CHANNEL TWO FAILED 
* 
/         ERROR NUMBERS 6A022/6A026 HEX 
* 
10 FORMAT WITH MAINTENANCE LOOP SET, BITS 0-3 
* 
/         ERROR NUMBERS 6A023/6A027 HEX 
* 
11 FORMAT WITH MAINTENANCE LOOP SET, BITS 4-7 
* 
/         ERROR NUMBERS 6A024/6A028 HEX 
* 
12 FORMAT WITH MAINTENANCE LOOP SET, BITS 8-11
* 
/         ERROR NUMBERS 6A025/6A029 HEX 
13 FORMAT WITH MAINTENANCE LOOP SET, BITS 12-15 
* 
/         ISOLATION MESSAGES. 
* 
14 FORMAT B27, A15, B*D, B21, AND A26.
15 FORMAT B26, A15, B*D, B21, AND A26.
16 FORMAT B20, A15, B*D, B21, AND A24.
17 FORMAT B19, A15, B*D, B21, AND A24.
20 FORMAT B27 AND A20.
21 FORMAT B26 AND A20.
22 FORMAT B20 AND A20.
23 FORMAT B19 AND A20.
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC20C - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
* 
/ 
* 
   IF (B0.NE.152) GOTO 50 
   IF (EC.LT.42) GOTO 50
   IF (EC.GT.51) GOTO 50
* 
/          ERROR NUMBER 6A022 - 6A029 HEX 
* 
40 B8 = EC - 2 .AND. 3B 
   B8 = B8 + 10 
   IF(EC.LT.46B) MSG 6 TO LINE 12 
   IF(EC.GT.45B) MSG 7 TO LINE 12 
   MSG B8 TO LINE 13
   IF(P4.AND.4000.EQ.0) GOTO 77 
   MSG 5 TO LINE 15 
   B8 = EC - 2 .AND. 7B 
   B8 = B8 + 14 
   MSG B8 (B11) TO LINE 16
   GOTO 77
/ 
50 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC21,6000(05,07,14,16),LOCK
** 5.2.15 FHC21 - LOOP 885 DECODE TEST
* 
*         PURPOSE-
*         FHC21 VERIFIES THAT DATA PATTERNS CAN BE LOOPED THROUGH EACH
*         885 DEVICE INTERFACE ON THE 885 INTERFACE BOARDS USING
*         THE LOOP 885 DECODE FEATURE.
* 
*         METHOD- 
*         DO FOR ALL DATA PATTERNS
*           FILL BUFFER 
*           DO FOR EACH WORD IN BUFFER
*             DO FOR ALL 885 DEVICE INTERFACES. 
*               SET THE LOOP 885 DECODE BIT 
*               OUTPUT WORD ON NOC 8
*               VERIFY THAT NIC 8 CONTAINS THE CORRECT WORD 
*               CLEAR LOOP 885 DECODE BIT.
*               CHECK STATUS VALID AND BUS IN PARITY. 
*               ISOLATE DATA ERRORS BASED ON BAD BIT POSITION 
*             ENDO
*           ENDO
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC21A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - BUFFER INDEX 
*         B6 - TEMPORARY STORAGE
*         B7 - 885 DRIVE INTERFACE NUMBER 
*         B8 - LAST 885 DRIVE INTERFACE NUMBER PLUS ONE 
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         B10- LENGTH OF BUFFER LOOP
*         B11- CURRENT DATA PATTERN 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  HOLDS GENERATED DATA PATTERNS
*         OB(100) - OB(105) PARAMETERS TO SET NOC 8 AND 1 
* 
* 
1  FORMAT FHC21 - LOOP 885 DECODE TEST
2  FORMAT FHC21 - LC=*DECD, EC=*DECD
4  FORMAT FHC21 ERROR(S) = *DECD
5  FORMAT DATA ERROR    E*OCT  A*OCT  D*OCT 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 0010 
   EQUATE OPNC TO 0050
   EQUATE IPCS TO 0052
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BIPE TO 1          *BUS IN PARITY ERROR 
   EQUATE VALID TO 2         *STATUS VALID (NIC8/9) 
   EQUATE NPAT TO 06         *NUMBER OF DATA PATTERNS 
   EQUATE LOOPDEC TO 100     *LOOP DECODE BIT 
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/         DATA FOR NOC 8 AND NOC 1. 
* 
   DATA (OB(100),CON) 8,377,0,1,0,0 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/         INITIALIZE. 
* 
21 B0=155                    *TEST NUMBER 6D HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
   B9 = 21D                  *MODULE NUMBER 21D 
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 100B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 100B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 100B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 100B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 100B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 100B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 100B   4444 PATTERN 
   B5=0                      *BUFFER INDEX
   IF (B2.LT.4) B10 = 1      *STATIC PATTERNS 
   IF (B2.LT.10B) B10 = 12D  *SLIDING PATTERNS
   IF (B2.GE.10B) B10 = 100  *RANDOM PATTERNS 
25 B7 = 40B                  *FIRST 885 INTERFACE NUMBER
* 
/        PERFORM LOOP 885 DECODE TEST.
* 
40 B1=B1+1
44 RES, ABT 70               *RESERVE CHANNEL 
* 
/         SET LOOP 885 DECODE BIT IN NOC 1. 
* 
   OB(104) = LOOPDEC         *SET LOOPDEC BIT FOR NOC 1 
   OB(105)=B7                *885 INTERFACE NUMBER
   FUNC OPNC, ABT 70         *OUT CH=1,B6,B7,ABT 70 
   OUT 3 WORDS FROM OB(103), ABT 70 
* 
/         LOOP DATA.
* 
   B11=OB(B5).AND.377        *SET DATA PATTERN
   OB(102) = B11
   FUNC OPNC, ABT 70         *OUT CH=8,377,B11,ABT 70 
   OUT 3 WORDS FROM OB(100), ABT 70 
   FUNC IPCS, ABT 70         *STATUS CHANNEL,ABT 70 
   STATUS 32D WORDS TO SB(1), ABT 70
* 
/         CLEAR LOOP 885 DECODE BIT IN NOC 1. 
* 
   OB(104)=0
   FUNC OPNC, ABT 70         *OUT CH=1,0,B7,ABT 70
   OUT 3 WORDS FROM OB(103), ABT 70 
* 
/         COMPARE DATA. 
* 
   IF (SB(21).AND.VALID.EQ.0) ERROR 3/22 GOTO 67
   IF (SB(22).NE.B11) GOTO 64 
   IF (SB(21).AND.BIPE.NE.0) ERROR 3/21 GOTO 67  *PARITY
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 25 WHILE (B5+1.LT.B10)   *END OF BUFFER LOOP
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/        ANALYZE DATA ERRORS
* 
64 B4=SB(22).XOR.B11
   MSG 5 (B11,SB(22),B4) TO LINE 7
* 
*         DATA ERROR ISOLATION ANALYSIS TABLE 
* 
*         2 3 4  B6  B6 2 3 4 
*         ------------------- 
*         - - -   0  0  - - - 
*         - - X   4  2  X - - 
*         - X -   3  3  - X - 
*         - X X   7  4  - - X 
*         X - -   2  5  X X - 
*         X - X   6  6  X - X 
*         X X -   5  7  - X X 
*         X X X   9  9  X X X 
* 
   B6=0 
   IF (B4.AND.7.NE.0) B6=2
   IF (B4.AND.70.NE.0) B6=B6+3
   IF (B4.AND.300.NE.0) B6=B6+4 
   IF (B6.GT.4) ERROR 3/1, GOTO 67
   IF (B6.EQ.2) ERROR 3/2, GOTO 67
   IF (B6.EQ.3) ERROR 3/3, GOTO 67
   ERROR 3/4, GOTO 67 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S  *SET FLAG 1 
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C  *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 21A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 77
* 
/        TERMINATE. 
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC21A,6000(05,07,14,16),LOCK 
*         FHC21A - REPORT EXPECTED ERRORS 
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC21B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC21.
* 
*         BUFFERS USED- 
*         SAME AS FHC21.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC21 - LOOP 885 DECODE TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC21 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D001 HEX 
* 
10 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B04, B13, B01, B02, B03, AND A18. 
13 FORMAT B17,B04,B13,B14,B15,B16,B01,B02,B03,AND A18.
* 
/        ERROR NUMBER 6D002 HEX 
* 
14 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 0, 1, 2).
15 FORMAT B01, B04, B13, AND A18. 
16 FORMAT B14, B01, B04, B17, B13, AND A18. 
17 FORMAT 
* 
/        ERROR NUMBER 6D003 HEX 
* 
20 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 3, 4, 5).
21 FORMAT B02, B04, B13, AND A18. 
22 FORMAT B15, B02, B04, B17, B13, AND A18. 
23 FORMAT 
* 
/        ERROR NUMBER 6D004 HEX 
* 
24 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 6, 7)
25 FORMAT B03, B04, B13, AND A18. 
26 FORMAT B16, B03, B04, B17, B13, AND A18. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC21A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.4) EXIT TO 21B 
* 
/        ERROR NUMBER 6D001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
50 MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6D002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6D003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98L
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6D004 HEX 
* 
43 IF (EC.NE.4) GOTO 45 
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98L
53 MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC21B,6000(05,07,14,16),LOCK 
*   5.2.15.2 FHC21B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC21.
* 
*         BUFFERS USED- 
*         SAME AS FHC21.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC21 - LOOP 885 DECODE TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC21 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D011 HEX 
* 
10 FORMAT DATA PARITY ERROR ON LOOP 885 DECODE. 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B03, B04, B13, AND A18. 
13 FORMAT B16, B03, B04, B13, AND A18.
* 
/         ERROR NUMBER 6D012 HEX
* 
14 FORMAT NO STATUS VALID ON LOOP 885 DECODE. 
15 FORMAT SUCCESSIVELY REPLACE CARD B04.
16 FORMAT 
17 FORMAT 
20 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC21B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.21) GOTO 45
   IF (EC.GT.22) GOTO 45
* 
/        ERROR NUMBER 6D011 HEX 
* 
40 IF (EC.NE.21) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
50 MSG 13 TO LINE 15
   MSG 20 TO LINE 16
   EXIT TO 98L
* 
/         ERROR NUMBER 6D012 HEX
* 
41 IF (EC.NE.22) GOTO 45
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC22,6000(05,07,14,16),LOCK
** 5.2.16 FHC22 - LOOP 885 BUS TEST 
* 
*         PURPOSE-
*         FHC22 VERIFIES THAT DATA PATTERNS CAN BE LOOPED THROUGH THE 
*         885 INTERFACE BOARDS USING THE LOOP 885 BUS FEATURE.
*         THIS MODULE ALSO CHECKS BUS IN/OUT PARITY.
* 
*         METHOD- 
*         DO FOR PATTERNS 0 THROUGH 7.
*           FILL BUFFER 
*           DO FOR EACH WORD IN BUFFER
*             DO FOR ALL PARITY STATES. 
*               DO FOR ALL 885 DEVICE INTERFACES. 
*                 SET THE LOOP 885 BUS BIT AND BUS PARITY.
*                 OUTPUT WORD ON NOC 8
*                 VERIFY THAT NIC 8 CONTAINS THE CORRECT WORD 
*                 CLEAR LOOP 885 BUS BIT. 
*                 CHECK STATUS VALID AND BUS IN PARITY. 
*                 ISOLATE DATA ERRORS BASED ON BAD BIT POSITION 
*               ENDO
*             ENDO
*           ENDO
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC22A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - BUFFER INDEX 
*         B6 - TEMPORARY STORAGE
*         B7 - 885 DRIVE INTERFACE NUMBER 
*         B8 - LAST 885 DRIVE INTERFACE NUMBER PLUS ONE 
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         B10- LENGTH OF BUFFER LOOP
*         B11- FORCE PARITY INDEX 
*         B12- CURRENT DATA PATTERN 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  CONTAINS WORDS TO BE LOOPED
*         OB(100) - OB(105) PARAMETERS TO SET NOC 8 AND 1 
* 
* 
1  FORMAT FHC22 - LOOP 885 BUS TEST 
2  FORMAT FHC22 - LC=*DECD, EC=*DECD
4  FORMAT FHC22 ERROR(S) = *DECD
5  FORMAT DATA ERROR    E*OCT  A*OCT  D*OCT 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 0010 
   EQUATE OPNC TO 0050
   EQUATE IPCS TO 0052
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BIPE TO 1          *BUS IN PARITY ERROR 
   EQUATE VALID TO 2         *STATUS VALID (NIC 8/9)
   EQUATE NPAT TO 6          *NUMBER OF DATA PATTERNS 
   EQUATE FBIP TO 4          *FORCE BUSIN PARITY
   EQUATE FBOP TO 10         *FORCE BUSOUT PARITY 
   EQUATE LOOPBUS TO 200     *LOOP BUS BIT
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/         DATA FOR NOC 8 AND NOC 1. 
* 
   DATA (OB(100),CON) 8,0,377,1,0,0 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/         INITIALIZE. 
* 
21 B0=155                    *TEST NUMBER 6D HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
   B9 = 22D                  *MODULE NUMBER 22D 
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 100B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 100B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 100B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 100B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 100B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 100B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 100B   4444 PATTERN 
   B5=0                      *BUFFER INDEX
   IF (B2.LT.4) B10=1        *STATIC PATTERNS 
   IF (B2.GE.4) B10=12D      *SLIDING PATTERNS
25 B11 = 0                   *INITIALIZE PARITY INDEX 
* 
/         PERFORM LOOP 885 BUS TEST.
* 
40 B1=B1+1
   B7 = 40                   *FIRST 885 INTERFACE NUMBER
44 RES, ABT 70               *RESERVE CHANNEL 
* 
/         DETERMINE PARITY TO FORCE.
* 
   IF(B11.EQ.0) B6=LOOPBUS   *NONE FORCED 
   IF(B11.EQ.1) B6=LOOPBUS+FBIP  *BUSIN PARITY
   IF(B11.EQ.2) B6=LOOPBUS+FBOP  *BUSOUT PARITY 
* 
/         SET LOOP 885 BUS BIT AND BUS PARITY.
* 
   OB(104)=B6                *SET LOOPBUS + PARITY
   OB(105)=B7                *885 INTERFACE NUMBER
   FUNC OPNC, ABT 70         *OUT CH=1,B6,B7,ABT 70 
   OUT 3 WORDS FROM OB(103), ABT 70 
* 
/         LOOP DATA.
* 
   B12=OB(B5).AND.377 
   OB(101) = B12
   FUNC OPNC, ABT 70         *OUT CH=8,B12,377B,ABT 70
   OUT 3 WORDS FROM OB(100), ABT 70 
   FUNC IPCS, ABT 70         *STATUS CHANNEL,ABT 70 
   STATUS 32D WORDS TO SB(1), ABT 70
* 
/         CLEAR LOOP 885 BUS BIT IN NOC 1.
* 
   OB(104)=0
   FUNC OPNC, ABT 70         *OUT CH=1,0,B7,ABT 70
   OUT 3 WORDS FROM OB(103), ABT 70 
* 
/         COMPARE DATA. 
* 
   IF(SB(21).AND.VALID.EQ.0) ERROR 3/26 GOTO 67 
   IF (SB(22).NE.B12) GOTO 64 
   IF(B11.EQ.0) GOTO 50 
   IF(SB(21).AND.BIPE.EQ.0) ERROR 3/27 GOTO 67  *PARITY 
   GOTO 60
50 IF(SB(21).AND.BIPE.NE.0) ERROR 3/25 GOTO 67  *PARITY 
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 40 WHILE (B11+1.LE.2)    *END OF PARITY LOOP
   GOTO 25 WHILE (B5+1.LT.B10)   *END OF BUFFER LOOP
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/        ANALYZE DATA ERRORS
* 
64 B4=SB(22).XOR.B12
   MSG 5 (B12,SB(22),B4) TO LINE 7
* 
*         DATA ERROR ISOLATION ANALYSIS TABLE 
* 
*         2 3 4  B6  B6 2 3 4 
*         ------------------- 
*         - - -   0  0  - - - 
*         - - X   4  2  X - - 
*         - X -   3  3  - X - 
*         - X X   7  4  - - X 
*         X - -   2  5  X X - 
*         X - X   6  6  X - X 
*         X X -   5  7  - X X 
*         X X X   9  9  X X X 
* 
   B6=0 
   IF (B4.AND.7.NE.0) B6=2
   IF (B4.AND.70.NE.0) B6=B6+3
   IF (B4.AND.300.NE.0) B6=B6+4 
   IF (B6.GT.4) ERROR 3/5, GOTO 67
   IF (B6.EQ.2) ERROR 3/6, GOTO 67
   IF (B6.EQ.3) ERROR 3/7, GOTO 67
   ERROR 3/10, GOTO 67
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S  *SET FLAG 1 
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C  *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 22A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 77
* 
/        TERMINATE. 
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC22A,6000(05,07,14,16),LOCK 
*   5.2.16.1 FHC22A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC22B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC22.
* 
*         BUFFERS USED- 
*         SAME AS FHC22.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC22 - LOOP 885 BUS TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC22 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D005 HEX 
* 
10 FORMAT DATA MISCOMPARE ON LOOP 885 BUS 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B04, B13, B01, B02, B03, AND A18. 
13 FORMAT B17,B04,B13,B14,B15,B16,B01,B02,B03,AND A18.
* 
/        ERROR NUMBER 6D006 HEX 
* 
14 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 0, 1, 2). 
15 FORMAT B01, B04, B13, AND A18. 
16 FORMAT B14, B01, B04, B17, B13, AND A18. 
17 FORMAT 
* 
/        ERROR NUMBER 6D007 HEX 
* 
20 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 3, 4, 5). 
21 FORMAT B02, B04, B13, AND A18. 
22 FORMAT B15, B02, B04, B17, B13, AND A18. 
23 FORMAT 
* 
/        ERROR NUMBER 6D008 HEX 
* 
24 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 6, 7) 
25 FORMAT B03, B04, B13, AND A18. 
26 FORMAT B16, B03, B04, B17, B13, AND A18. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC22A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.5) GOTO 45 
   IF (EC.GT.10) EXIT TO 22B
* 
/        ERROR NUMBER 6D005 HEX 
* 
40 IF (EC.NE.5) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
50 MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6D006 HEX 
* 
41 IF (EC.NE.6) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6D007 HEX 
* 
42 IF (EC.NE.7) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98L
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6D008 HEX 
* 
43 IF (EC.NE.10) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98L
53 MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC22B,6000(05,07,14,16),LOCK 
*   5.2.16.2 FHC22B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC22.
* 
*         BUFFERS USED- 
*         SAME AS FHC22.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC22 - LOOP 885 BUS TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC22 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D015 HEX 
* 
10 FORMAT DATA PARITY ERROR ON LOOP 885 BUS 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B03, B04, B13, AND A18. 
13 FORMAT B16, B03, B04, B13, AND A18.
* 
/         ERROR NUMBER 6D016 HEX
* 
14 FORMAT NO STATUS VALID ON LOOP 885 BUS.
15 FORMAT SUCCESSIVELY REPLACE CARD B04.
16 FORMAT 
17 FORMAT 
* 
/         ERROR NUMBER 6D017 HEX
* 
20 FORMAT NO STATUS PARITY ERROR ON LOOP 885 BUS. 
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT B04, B03, A18, AND A20. 
23 FORMAT 
24 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC22B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.25) GOTO 45
   IF (EC.GT.27) GOTO 45
* 
/        ERROR NUMBER 6D015 HEX 
* 
40 IF (EC.NE.25) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
50 MSG 13 TO LINE 15
   MSG 24 TO LINE 16
   EXIT TO 98L
* 
/         ERROR NUMBER 6D016 HEX
* 
41 IF(EC.NE.26) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
* 
/         ERROR NUMBER 6D017 HEX
* 
42 IF (EC.NE.27) GOTO 45
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC23,6000(05,07,14,16),LOCK
** 5.2.17 FHC23 - LOOP 885 WRITE/READ/TAG GATE TEST 
* 
*         PURPOSE-
*         FHC23 VERIFIES THE ABILITY TO LOOP GATING SIGNALS 
*         THROUGH THE 885 INTERFACE BOARDS. 
* 
*         METHOD- 
*         DO FOR ALL 885 DEVICE INTERFACES
*           MASTER CLEAR CONTROLLER 
*           SELECT DEVICE INTERFACE ON NOC 1. 
*           SET SKIP SECTOR MARK. 
*           SEND READ GATE
*           CHECK READ GATE STATUS
*           SEND WRITE GATE AND W/R ECC 
*           CHECK WRITE GATE STATUS 
*           SEND READ GATE AND FAST START 
*           CHECK TAG GATE STATUS 
*           MASTER CLEAR CONTROLLER 
*           CHECK STATUS VALID
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC23A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B3 - ERROR COUNT
*         B4 - NOC 4 DATA 
*         B5 - NOC 5 DATA 
*         B7 - 885 DRIVE INTERFACE NUMBER 
*         B8 - LAST 885 DRIVE INTERFACE NUMBER PLUS ONE 
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(2)  PARAMETERS TO SET NOC 4
*         OB(3) - OB(5)  PARAMETERS TO SET NOC 5
*         OB(10) - OB(12) PARAMETERS TO SET NOC 1 
*         OB(13) - OB(15) PARAMETERS TO SET NOC 2 
* 
* 
1  FORMAT FHC23 - LOOP 885 WRT/READ/TAG GATE TEST 
2  FORMAT FHC23 - LC=*DECD, EC=*DECD
4  FORMAT FHC23 ERROR(S) = *DECD
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 0010 
   EQUATE OPNC TO 0050
   EQUATE ECWS TO 0051
   EQUATE IPCS TO 0052
   EQUATE IPFP TO 0054
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/         NORMAL CHANNEL EQUATES
* 
   EQUATE VALID TO 2         *STATUS VALID (NIC 8/9)
   EQUATE RDG5 TO 4          *READ GATE (NOC 5/2) 
   EQUATE WRG5 TO 10         *WRITE GATE (NOC 5/3)
   EQUATE FST5 TO 20         *FAST START (NOC 5/4)
   EQUATE ECC5 TO 4          *W/R ECC (NOC 5/10)
   EQUATE PCLK TO 100        *PROCESSOR CLOCK (NOC 5/14)
   EQUATE WRG9 TO 4          *WRITE GATE (NIC 9/2)
   EQUATE RDG9 TO 2          *READ GATE (NIC 9/1) 
   EQUATE TAG9 TO 1          *TAG GATE (NIC 9/0)
* 
/         PARAMETER BUFFERS FOR OUTPUTTING ON NOC-S 4 AND 5.
* 
   DATA (OB(0),CON) 1,377,377,0,0,0,0,0 
* 
/         PARAMETER BUFFER FOR XMITING ON NOC-S 1,2,4,AND 5.
* 
   DATA (OB(10),CON) 1,0,40  *NOC 1 INTERFACE SELECT
   DATA (OB(13),CON) 2,0,100  *NOC 2 SKIP SECTOR MARK 
   DATA (OB(16),CON) 4,0,0   *NOC 4 BIT COUNT 
   DATA (OB(21),CON) 5,0,0   *NOC 5 CONTROL WORD
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/        INITIALIZE.
* 
21 B0=155                    *TEST NUMBER 6D HEX
   B1=0                      *LOOP COUNT
   B3=0                      *ERROR COUNT 
   B7=40                     *FIRST 885 INTERFACE NUMBER
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
   B9 = 23D                  *MODULE NUMBER 23D 
* 
/        PERFORM LOOP 885 WRITE/READ/TAG GATE TEST. 
* 
40 B1=B1+1
44 RES, ABT 70               *RESERVE CHANNEL 
   FUNC IPFP, ABT 70         *FLAG PULSE CH=1,ABT 70
   OUT 1 WORDS FROM OB(10), ABT 70  *MASTER CLEAR 
   GOSUB 65                  *STATUS CHANNEL, ABT 70
   OB(12)=B7                 *885 INTERFACE NUMBER
   FUNC OPNC, ABT 70         *OUT CH=1,0,B7,ABT 70
   OUT 3 WORDS FROM OB(10), ABT 70
   FUNC OPNC,ABT 70          *OUT CH=2,0,100B,ABT 70
   OUT 3 WORDS FROM OB(13),ABT 70 
* 
/         PERFORM LOOP 885 READ GATE TEST 
* 
   OB(4)=RDG5                *SEND READ GATE
   OB(3)=PCLK                *SET PROC CLOCK
   GOSUB 62                  *EXECUTE SEQUENCE + STATUS 
   IF (SB(24).AND.RDG9.EQ.0) ERROR 3/11 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.RDG9.NE.0) ERROR 3/14 GOTO 67 
* 
/         PERFORM LOOP 885 WRITE GATE TEST
* 
   OB(4)=WRG5                *SEND WRITE GATE 
   OB(3)=ECC5+PCLK           *SEND W/R ECC + PROC CLOCK 
   GOSUB 62                  *EXECUTE SEQUENCE + STATUS 
   IF (SB(24).AND.WRG9.EQ.0) ERROR 3/12 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.WRG9.NE.0) ERROR 3/15 GOTO 67 
* 
/         PERFORM LOOP 885 TAG GATE TEST
* 
   OB(4)=RDG5+FST5           *SEND READ GATE AND FAST START 
   OB(3)=PCLK                *SET PROCESSOR CLOCK 
   GOSUB 62                  *EXECUTE SEQUENCE + STATUS 
   IF (SB(24).AND.TAG9.EQ.0) ERROR 3/13 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.TAG9.NE.0) ERROR 3/16 GOTO 67 
* 
/         CHECK FOR STATUS VALID STUCK-AT-ONE 
* 
   FUNC IPFP,ABT 70          *FLAG PULSE CH=1,ABT 70
   OUT 1 WORDS FROM OB(10), ABT 70
   GOSUB 65                  *STATUS CHANNEL, ABT 70
   IF (SB(21).AND.VALID.NE.0) ERROR 3/17 GOTO 67
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 76                       *TERMINATE 
* 
/         OUTPUT ON CHANNELS 4, 5 AND READ CHANNEL STATUSES.
* 
62 FUNC ECWS, ABT 64         *CONTROL A,B,C,D,EX,ABT 70 
   OUT 49D WORDS FROM OB(0), ABT 64 
65 FUNC IPCS, ABT 64         *STATUS CHANNEL, ABT 70
   STATUS 32D WORDS TO SB(1), ABT 64
   RETURN 
63 FUNC OPNC, ABT 64         *OUT CH=4,0,0,ABT 64 
   OUT 3 WORDS FROM OB(16), ABT 64
   FUNC IPFP, ABT 64         *FLAG PULSE CH=5,ABT 64
   OUT 1 WORDS FROM OB(21), ABT 64
   FUNC OPNC, ABT 64         *OUT CH=5,0,0,ABT 64 
   OUT 3 WORDS FROM OB(21), ABT 64
   GOTO 65
64 ENDSUB GOTO 70 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S  *SET FLAG 1 
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C  *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 23A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 77
* 
/        TERMINATE. 
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC23A,6000(05,07,14,16),LOCK 
*   5.2.17.1 FHC23A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC23B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC23.
* 
*         BUFFERS USED- 
*         SAME AS FHC23.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC23 - LOOP 885 WRT/READ/TAG GATE TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC23 - LINE *OCT - ERROR NUMBER *H*HE
6  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6D009 HEX 
* 
10 FORMAT LOOP READ GATE A CONSTANT ZERO. 
/         SUCCESSIVELY REPLACE CARDS
11 FORMAT B02, B04, B21, B13, 
12 FORMAT B15,B02,B17,B04,B21,B13,
13 FORMAT B27,B22,B23,B24,B25,A19,AND A21.
* 
/        ERROR NUMBER 6D00A HEX 
* 
14 FORMAT LOOP WRITE GATE A CONSTANT ZERO.
/         SUCCESSIVELY REPLACE CARDS
15 FORMAT B01, B04, B21, B13, 
16 FORMAT B14,B01,B17,B04,B21,B13,
17 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        ERROR NUMBER 6D00B HEX 
* 
20 FORMAT LOOP TAG GATE A CONSTANT ZERO.
/         SUCCESSIVELY REPLACE CARDS
21 FORMAT B03, B04, B13, B27, AND B26.
22 FORMAT B16, B03, B17, B04, B13, B27, AND B26.
23 FORMAT 
* 
/        ERROR NUMBER 6D00C HEX 
* 
24 FORMAT LOOP READ GATE A CONSTANT ONE.
/         SUCCESSIVELY REPLACE CARDS
25 FORMAT B02, B04, B21, B13, 
26 FORMAT B15,B02,B17,B04,B21,B13,
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC23A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.11) GOTO 45
   IF (EC.GT.14) EXIT TO 23B
* 
/        ERROR NUMBER 6D009 HEX 
* 
40 IF (EC.NE.11) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 6 TO LINE 13 
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 11 TO LINE 14
   MSG 13 TO LINE 15
   EXIT TO 98L
50 MSG 12 TO LINE 14
   MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6D00A HEX 
* 
41 IF (EC.NE.12) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
51 MSG 16 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6D00B HEX 
* 
42 IF (EC.NE.13) GOTO 43
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98L
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6D00C HEX 
* 
43 IF (EC.NE.14) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
53 MSG 26 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC23B,6000(05,07,14,16),LOCK 
*   5.2.17.2 FHC23B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC23.
* 
*         BUFFERS USED- 
*         SAME AS FHC23.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC23 - LOOP 885 WRT/READ/TAG GATE TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC23 - LINE *OCT - ERROR NUMBER *H*HE
6  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6D00D HEX 
* 
10 FORMAT LOOP WRITE GATE A CONSTANT ONE. 
/         SUCCESSIVELY REPLACE CARDS
11 FORMAT B01, B04, B21, B13, 
12 FORMAT B14,B01,B17,B04,B21,B13,
13 FORMAT B27,B22,B23,B24,B25,A19,AND A21.
* 
/        ERROR NUMBER 6D00E HEX 
* 
14 FORMAT LOOP TAG GATE A CONSTANT ONE. 
/         SUCCESSIVELY REPLACE CARDS
15 FORMAT B03, B04, B13, B27, AND B26.
16 FORMAT B16, B03, B17, B04, B13, B27, AND B26.
17 FORMAT 
* 
/         ERROR NUMBER 6D00F HEX
* 
20 FORMAT STATUS VALID SET AFTER MASTER CLEAR.
21 FORMAT SUCCESSIVELY REPLACE CARD B04.
22 FORMAT 
23 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC23B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.15) GOTO 45
   IF (EC.GT.17) GOTO 45
* 
/        ERROR NUMBER 6D00D HEX 
* 
40 IF (EC.NE.15) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 11 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
50 MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6D00E HEX 
* 
41 IF (EC.NE.16) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98L
* 
/         ERROR NUMBER 6D00F HEX
* 
42 IF (EC.NE.17) GOTO 45
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC24,6000(05,07,14,16),LOCK
** 5.2.18  FHC24 - SYNC BYTE SEARCH TEST
* 
*         PURPOSE-
*         FHC24 VERIFIES THE OPERATION OF THE SYNC BYTE DETECTOR
*         ON THE LOW ORDER DATA PATH BOARDS.  SYNC BYTE MISCOMPARE, 
*         SYNC BYTE SEARCH, AND LOST CONTROL WORD STATUS ARE TESTED.
* 
*         METHOD- 
*         DO FOR SYNC BYTE = 00 TO 37B
*           TRANSFER SYNC PATTERN TO BUFFER MEMORY
*           SELECT DEVICE INTERFACE AND 4 HEADS MODE ON NOC 1 
*           SET SYNC BYTE PATTER ON NOC 2 
*           SET BUFFER ADDRESS ON NOC 6 
*           SET UP/DOWN COUNT ON NOC 7
*           CLEAR LOAD BIT ON NOC 6 
*           LOOP SYNC PATTERN THRU DEVICE INTERFACE 
*           STATUS NIC(S) 
*           CHECK SYNC BYTE MISCOMPARE STATUS 
*           CHECK SYNC BYTE SEARCH STATUS 
*           CHECK LOST CONTROL WORD STATUS
*           IF ERROR, CHECK HEADS BIT COUNT 
*         ENDO
/ 
*         ENTRY-
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC010 - REPORT UNEXPECTED ERRORS 
*         FHC24A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - TEMPORARY STORAGE
*         B5 - CURRENT SYNC BYTE PATTERN
*         B6 - HEAD INDEX 
*         B7 - UNIT NUMBER
*         B8 - TEMPORARY STORAGE
*         B9 - MODULE NUMBER (IN DECIMAL) 
*         B10- TEMPORARY STORAGE
*         B11- TEMPORARY STORAGE
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         NONE
* 
*         REMARKS-
* 
* 
* 
1  FORMAT FHC24 - SYNC BYTE SEARCH TEST 
2  FORMAT FHC24 - LC=*DECD, EC=*DECD
4  FORMAT FHC24 ERROR(S) = *DECD
* 
*         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
*         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 40         *NUMBER OF DATA PATTERNS 
* 
/         FUNCTION EQUATES
* 
   EQUATE OPNC TO 50, BTBMW TO 33, ECWS TO 51 
   EQUATE IPCS TO 52, OPCOM TO 10 
* 
/         DATA BUFFERS
* 
   DATA(OB(00),CON) 0,0,0 
   DATA(OB(03),CON) 2,1,0,100,56
   DATA(OB(10),CON) 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 
   DATA(OB(30),CON) 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 
   DATA(OB(50),CON) 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 
   DATA(OB(70),CON) 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 
   DATA(OB(110),CON) 1,001,040  *NOC 1, FMD UNIT/4HP
   DATA(OB(113),CON) 2,000,100  *NOC 2, SKIP MARK 
   DATA(OB(116),CON) 3,000,000  *NOC 3, HEAD SELECT 
   DATA(OB(121),CON) 6,000,000  *NOC 6, CLEAR LOAD BIT
   DATA(OB(124),CON) 6,266,000  *NOC 6, BUFFER ADDRESS
   DATA(OB(127),CON) 7,140,004  *NOC 7, UP/DOWN COUNTER 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
*         INITIALIZE. 
* 
22 B0 = 153                  *TEST NUMBER 6B HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B7 = SB(72)               *SET UNIT NUMBER 
   IF(B7.LT.40B) B7 = B7 + 40  *IF 844, ADJUST
   B9 = 24D                  *MODULE NUMBER 24D 
* 
/         PERFORM SYNC BYTE SEARCH TEST.
* 
30 B1 = B1 + 1               *INCREMENT LOOP COUNTER
   RES, ABT 70               *RESERVE CHANNEL 
   B5 = B2 + 100             *SET SYNC BYTE PATTERN 
* 
   OB(14) = B2               *PATTERN TO BUFFER 
   OB(15) = B2
   OB(16) = B2
   OB(17) = B2
   FUNC BTBMW, ABT 70        *TRANSFER PATTERN TO BUFFER
   OUT 466 WORDS FROM OB(14), ABT 70
   BA = 110                  *OB(110) 
   OB(112) = B7              *SELECT FMD INTERFACE
   GOSUB 61                  *OUT CH=1,1,B7 
   IF(EC.NE.0) GOTO 70       *ABT 70
   BA = 113                  *OB(113) 
   OB(115) = B5              *SET SYNC BYTE PATTERN 
   GOSUB 61                  *OUT CH=2,0,B5 
   IF(EC.NE.0) GOTO 70       *ABT 70
   BA = 124                  *SET BUFFER ADDRESS
   GOSUB 61                  *OUT CH=6,266,0
   IF(EC.NE.0) GOTO 70       *ABT 70
   BA = 127                  *SET UP/DOWN COUNT 
   GOSUB 61                  *OUT CH=7,140,4
   IF(EC.NE.0) GOTO 70       *ABT 70
   BA = 121                  *CLEAR LOAD BIT
   GOSUB 61                  *OUT CH=6,0,0
   IF(EC.NE.0) GOTO 70       *ABT 70
   FUNC ECWS, ABT 70         *SEARCH SEQUENCE 
   OUT 49D WORDS FROM OB(3), ABT 70 
/         CHECK SYNC BYTE MISCOMPARE/SEARCH AND LOST CW.
   GOSUB 60                  *STATUS CHANNEL, ABT 70
   IF(B2.GE.20) GOTO 52 
   IF(SB(4).AND.1.EQ.0) ERROR 3/2, GOTO 67
   IF(B2.NE.0) GOTO 50
   IF(SB(4).AND.10.NE.0) ERROR 21/3, GOTO 65
   GOTO 51
50 IF(SB(4).AND.10.EQ.0) ERROR 20/3, GOTO 67
51 IF(SB(3).AND.1.NE.0) ERROR 24/4, GOTO 63 
   GOTO 53
52 IF(SB(4).AND.1.NE.0) ERROR 3/1, GOTO 63
   IF(SB(4).AND.10.EQ.0) ERROR 20/3, GOTO 67
   IF(SB(3).AND.1.EQ.0) ERROR 25/4, GOTO 67 
* 
*         FINALIZE. 
* 
53 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   REL, ABT 70                   *RELEASE SUBSYSTEM TO OS 
   GOTO 30 WHILE (B2+1.LT.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/         INPUT PROCESSOR CHANNEL STATUS
* 
60 FUNC IPCS, ABT 70         *STATUS CHANNEL, ABT 70
   STATUS 32D WORDS TO SB(1), ABT 70
   RETURN 
* 
/         OUTPUT PROCESSOR NORMAL CHANNEL SUBROUTINE
* 
61 WC = 3 
   FUNC OPNC, ABT 62         *OUTPUT ON NOC(S)
   OUT, ABT 62
62 RETURN 
* 
/         PROCESS LOST CW AND SYNC BYTE MISCOMPARE ERRORS 
* 
63 B6 = 0                    *INITIALIZE HEAD INDEX 
64 BA = 116                  *OB(116) 
   OB(120) = B6.LS.4         *JUSTIFY HEAD INDEX
   GOSUB 61                  *OUT CH=3,0,B6 
   GOSUB 60                  *STATUS CHANNEL
   IB(B6) = SB(12)           *SAVE LOWER BIT COUNT
   GOTO 64 WHILE (B6+1.LT.4)
* 
*         PROCESS EXPECTED ERRORS.
* 
65 IF(B2.NE.0) GOTO 63       *NOT FIRST PASS
   IF(B11.NE.0) GOTO 63      *SECOND ERROR
   B11 = 1                   *SET FIRST ERROR FLAG
   OB(125) = 270             *MODIFY BUFFER ADDRESS FOR A02 
   OB(126) = 300             *CONTROLWARE 
   GOTO 22                   *RESTART 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
*         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 30                   *GO TO REPEAT CONDITION
* 
*         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 24A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 010  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 30
* 
*        TERMINATE. 
* 
76 RES, ABT 77               *RESERVE CHANNEL 
   FUNC OPCOM, ABT 77        *OPERATION COMPLETE
77 IF (ES.AND.RM.NE.0) GOTO 22
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC24A,6000(05,07,14,16),LOCK 
*   5.2.18.1 FHC24A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC24.
* 
*         BUFFERS USED- 
*         SAME AS FHC24.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC24 - SYNC BYTE SEARCH TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC24 - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT 
6  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6B001 HEX 
* 
10 FORMAT SYNC BYTE MISCOMPARE ERROR
/         SUCCESSIVELY REPLACE CARDS
11 FORMAT B*D, B26, B21, B*D, B27, B20, B19,
12 FORMAT B*D, B26, B21, B*D, B*D, B27, B20, B19, 
13 FORMAT A20, A19, AND A21.
* 
/        ERROR NUMBER 6B002 HEX 
* 
14 FORMAT NO SYNC BYTE MISCOMPARE WHEN FORCED 
/         SUCCESSIVELY REPLACE CARDS
15 FORMAT B22,B23,B24,B25,B27,B26,B21,
16 FORMAT B22,B23,B24,B25,B27,B26,B21,B14,B15,B16,
17 FORMAT B01,B02,B03,B20,B19,A20,A19,AND A21.
* 
/        ERROR NUMBER 6B003 HEX 
* 
20 FORMAT SYNC BYTE SEARCH STUCK-AT-ZERO
21 FORMAT SYNC BYTE SEARCH STUCK-AT-ONE 
/         SUCCESSIVELY REPLACE CARDS
22 FORMAT B27,B26,B22,B23,B24,B25,B21,B01,B02,B03,B20,
23 FORMAT B27,B26,B*D,B21,B*D,B20,A20,A19,AND A21.
* 
/        ERROR NUMBER 6B004 HEX 
* 
24 FORMAT LOST CONTROL WORD STUCK-AT-ONE
25 FORMAT LOST CONTROL WORD STUCK-AT-ZERO 
/         SUCCESSIVELY REPLACE CARDS
26 FORMAT B*D, B19, B20, B26, B27,
27 FORMAT B22, B23, B24, B25, B19, B20, B26, B27, 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC24A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
* 
* 
   IF (B0.NE.153) GOTO 45 
   IF (EC.LT.1) GOTO 45 
   IF (EC.GT.4) GOTO 45 
* 
/        ERROR NUMBER 6B001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 6 TO LINE 14 
   B6 = 0                    *DEFAULT TO HEAD 0 
   GOSUB 50                  *CHECK NIC 15/0-3
   GOSUB 54                  *COMPUTE BOARD LOCATION
   IF(SB(40).AND.B6.NE.0) GOTO 62 
   GOTO 61
* 
/        ERROR NUMBER 6B002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 6 TO LINE 14 
   GOTO 62
* 
/        ERROR NUMBER 6B003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   MSG EM TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 6 TO LINE 14 
   IF(EM.EQ.20) GOTO 62 
   IF(EM.NE.21) GOTO 45 
   B6 = 0                    *SET DEFAULT VALUE 
   GOSUB 51                  *FIND BAD BIT COUNT
   GOSUB 54                  *COMPUTE BOARD LOCATION
61 IF(B7.LT.50) MSG 11 (B4,B8) TO LINE 15 
   IF(B7.GE.50) MSG 12 (B4,B10,B8) TO LINE 15 
   MSG 13 TO LINE 16
   EXIT TO 98L
62 IF(B7.LT.50) MSG 15 TO LINE 15 
   IF(B7.GE.50) MSG 16 TO LINE 15 
   MSG 17 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6B004 HEX 
* 
43 IF (EC.NE.4) GOTO 45 
   MSG EM TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 6 TO LINE 14 
   IF(EM.EQ.25) GOTO 63 
   IF(EM.NE.24) GOTO 45 
   B6 = 0                    *SET DEFAULT VALUE 
   GOSUB 51                  *FIND BAD BIT COUNT
   GOSUB 54                  *COMPUTE BOARD LOCATION
   MSG 26 (B4) TO LINE 15 
   MSG 13 TO LINE 16
   EXIT TO 98L
63 MSG 27 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
* 
/         CHECK NIC 15/0-3, SYNC BYTE HEAD BITS 
* 
50 IF (SB(40).AND.10.NE.0) B6 = 3  *HEAD 3
   IF (SB(40).AND.4.NE.0) B6 = 2   *HEAD 2
   IF (SB(40).AND.2.NE.0) B6 = 1   *HEAD 1
   IF (SB(40).AND.1.NE.0) B6 = 0   *HEAD 0
   RETURN 
* 
/         CHECK BIT COUNT FOR EACH HEAD (FIND BAD ONE)
* 
51 IF (IB.XOR.IB(1).NE.0) GOTO 52 
   IF (IB.XOR.IB(2).NE.0) B6 = 2
   IF (IB.XOR.IB(3).NE.0) B6 = 3
   GOTO 53
52 IF (IB.XOR.IB(2).EQ.0) B6 = 1
53 RETURN 
* 
/         COMPUTE BOARD LOCATIONS 
* 
54 B4 = B6 + 22D
   IF(B6.LE.1) B8 = 1D
   IF(B6.GE.2) B8 = B6
   B6 = 1.LS.B6.XOR.17B 
   B10 = B8 + 13D 
   RETURN 
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC25,6000(05,07,14,16),LOCK
** 5.2.19 FHC25 - ECC REGISTER TEST 
* 
*         PURPOSE-
*         FHC25 VERIFIES THE ABILITY OF THE ECC REGISTER TO RECEIVE,
*         RETAIN, AND RETURN ASSORTED DATA PATTERNS.
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           CLEAR ECC REGISTER BY SENDING FLAG PULSE 3
*           LOAD DATA PATTERN INTO NOC-S 12, 13, AND 14 
*           DO FOR ALL 4 HEADS
*             SELECT HEAD ON NOC 3. 
*             LOAD ECC REGISTER BY SENDING FLAG PULSE 11
*             READ ECC REGISTER 
*             COMPARE CONTENTS WITH DATA PATTERN
*           ENDO
*         ENDO
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC250 - REPORT UNEXPECTED ERRORS 
*         FHC25A - REPORT EXPECTED ERRORS 
*         FHC983 - GENERATE 48-BIT DATA PATTERNS
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - TEMPORARY STORAGE
*         B6 - TEMPORARY STORAGE
*         B7 - HEAD INDEX 
*         B14- TEMPORARY STORAGE
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(3) - OB(10) = 8-BIT DATA RECIEVED
*         OB(11) - OB(14) = PACKED DATA RECIEVED
*         OB(100) - OB(217) = 48-BIT DATA PATTERNS
* 
1  FORMAT FHC25 - ECC REGISTER TEST 
2  FORMAT FHC25 - LC=*DECD, EC=*DECD
4  FORMAT FHC25 ERROR(S) = *DECD
5  FORMAT EXPECTED  *OCT *OCT *OCT *OCT 
6  FORMAT ACTUAL    *OCT *OCT *OCT *OCT 
* 
*         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
*         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 0010 
   EQUATE OPNC TO 0050
   EQUATE IPFP TO 0054
   EQUATE IPCS TO 0052
* 
*         MISCELLANEOUS EQUATES 
* 
   EQUATE NPOL TO 72D        *NUMBER OF POLY. PATTERNS
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
*        INITIALIZE.
* 
21 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13=25D                   *MODULE NUMBER 25D 
   CALL 983                  *GENERATE 48 BIT DATA PATTERN
* 
*        PERFORM ECC REGISTER TEST. 
* 
40 B1=B1+1
   RES, ABT 70               *RESERVE CHANNEL 
* 
/         CLEAR REGISTER
* 
   OB(0)=3                   *CHANNEL NUMBER
   FUNC IPFP, ABT 70         *FLAG PULSE CH=3,ABT 70
   OUT 1 WORDS FROM OB(0), ABT 70 
* 
/         PACK DATA 
* 
   OB(0)=12D                 *CHANNEL NUMBER
   OB(1)=OB(B2+100).RS.4     *BITS 00 TO 07 
   B14=OB(B2+100).AND.17.LS.4 
   OB(2)=OB(B2+101).RS.8+B14    *BITS 08 TO 15
   FUNC OPNC, ABT 70         *OUT CH=12D,B5,B6,ABT 70 
   OUT 3 WORDS FROM OB(0), ABT 70 
* 
   OB(0)=13D                 *CHANNEL NUMBER
   OB(1)=OB(B2+101).AND.377  *BITS 16 TO 23 
   OB(2)=OB(B2+102).RS.4     *BITS 24 TO 31 
   FUNC OPNC, ABT 70         *OUT CH=13D,B5,B6,ABT 70 
   OUT 3 WORDS FROM OB(0), ABT 70 
* 
   OB(0)=14D                 *CHANNEL NUMBER
   B14=OB(B2+102).AND.17.LS.4 
   OB(1)=OB(B2+103).RS.8+B14  *BITS 32 TO 39
   OB(2)=OB(B2+103).AND.377  *BITS 40 TO 47 
   FUNC OPNC, ABT 70         *OUT CH=14D,B5,B6,ABT 70 
   OUT 3 WORDS FROM OB(0), ABT 70 
* 
/         SELECT HEAD AND LOAD REGISTER 
* 
   B7 = 0                    *INITIALIZE HEAD INDEX 
50 OB = 3                    *CHANNEL NUMBER
   OB(1) = 0
   OB(2) = B7.LS.2           *JUSTIFY HEAD
   FUNC OPNC, ABT 70         *OUT CH=3,0,B8,ABT 70
   OUT 3 WORDS FROM OB(0), ABT 70 
   OB(0)=11D
   FUNC IPFP, ABT 70         *FLAG PULSE CH=11D,ABT 70
   OUT 1 WORDS FROM OB(0), ABT 70 
* 
/         READ REGISTER 
* 
   OB(0)=3
   OB(1)=0
   FUNC OPNC, ABT 70         *OUT CH=3,0,B8,ABT 70
   OUT 3 WORDS FROM OB(0), ABT 70 
   FUNC IPCS, ABT 70         *STATUS CHANNEL,ABT 70 
   STATUS 32D WORDS TO SB(1), ABT 70
   OB(3)=SB(7)
   OB(4)=SB(8)
* 
   OB(2)=OB(2) + 1           *SELECT BITS 16 TO 31
   FUNC OPNC, ABT 70         *OUT CH=3,0,B8,ABT 70
   OUT 3 WORDS FROM OB(0), ABT 70 
   FUNC IPCS, ABT 70         *STATUS CHANNEL,ABT 70 
   STATUS 32D WORDS TO SB(1), ABT 70
   OB(5)=SB(7)
   OB(6)=SB(8)
* 
   OB(2)=OB(2) + 1           *SELECT BITS 32 TO 47
   FUNC OPNC, ABT 70         *OUT CH=3,0,B8,ABT 70
   OUT 3 WORDS FROM OB(0), ABT 70 
   FUNC IPCS, ABT 70         *STATUS CHANNEL,ABT 70 
   STATUS 32D WORDS TO SB(1), ABT 70
   OB(7)=SB(7)
   OB(10)=SB(8) 
* 
/         UNPACK DATA RECEIVED FROM ECC REGISTER
* 
   B14=OB(3).LS.4 
   OB(11)=OB(4).RS.4+B14
   B14=OB(4).AND.17.LS.8
   OB(12)=OB(5)+B14 
   B14=OB(6).LS.4 
   OB(13)=OB(7).RS.4+B14
   B14=OB(7).AND.17.LS.8
   OB(14)=OB(10)+B14
* 
/         COMPARE DATA
* 
   WC = 4                    *INITIALIZE WORD COUNT 
   COMPARE OB(11) TO OB(B2+100) FOR WC, ABT 65
* 
*         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 50 WHILE (B7+1.LT.4)     *END OF HEADS LOOP 
   GOTO 40 WHILE (B2+4.LE.NPOL)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
*         DISPLAY DATA ERRORS 
* 
65 ERROR 3/1
   MSG 5 4 WORDS FROM OB(B2+100) TO LINE 7
   MSG 6 4 WORDS FROM OB(11) TO LINE 10 
*  GOTO 67
* 
*         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
*         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
*         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 25A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 250  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 77
* 
*        TERMINATE. 
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC25A,6000(05,07,14,16),LOCK 
*   5.2.19.1 FHC25A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC25.
* 
*         BUFFERS USED- 
*         SAME AS FHC25.
* 
* 
* 
/         COMMON MESSAGES 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC25 - ECC REGISTER TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC*D - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT FHC26 - ECC REGISTER CLEAR TEST 
* 
/         ERROR NUMBER 6C001/6C005 HEX
* 
10 FORMAT BAD DATA PATTERN READ BACK FROM ECC REGISTER
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT A*D, A17, A20, A21, A*D, A*D, A*D, AND B*D. 
13 FORMAT 
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC*DA - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
* 
* 
31 MSG 1 TO LINE 1
   IF (B13.EQ.25D) MSG 2 TO LINE 2
   IF (B13.EQ.26D) MSG 5 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(B13,EA,B0,EC) TO LINE 5
* 
* 
* 
   IF (B0.NE.154) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.10) GOTO 45
* 
/         ERROR NUMBER 6C001/6C005 HEX
* 
40 IF (EC.EQ.1) GOTO 41 
   IF (EC.NE.5) GOTO 45 
41 MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   IF(B7.EQ.0) MSG 12 (12D,11D,10D,09D,22D) TO LINE 15
   IF(B7.EQ.1) MSG 12 (11D,12D,10D,09D,23D) TO LINE 15
   IF(B7.EQ.2) MSG 12 (10D,12D,11D,09D,24D) TO LINE 15
   IF(B7.EQ.3) MSG 12 (09D,12D,11D,10D,25D) TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
45 MSG 30(B13,EA,B0,EC,EM) TO LINE 12 
* 
* 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC250,6000(05,07,14,16),LOCK 
*   5.2.19.2 FHC250 - REPORT UNEXPECTED ERRORS
* 
*         PURPOSE-
*         FHC250 DISPLAYS INFORMATION EXPANDING ON ALL
*         ERRORS OTHER THAN THOSE WHICH CAN BE INTERPRETED
*         FOR ISOLATION.
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC25.
* 
*         BUFFERS USED- 
*         SAME AS FHC25.
* 
* 
* 
* 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
4  FORMAT FHC*D - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT THIS FAILURE CAN NOT BE ISOLATED BY THE 
6  FORMAT DIAGNOSTIC SOFTWARE.  USE STANDARD
7  FORMAT TROUBLESHOOTING TECHNIQUES. 
10 FORMAT UNEXPECTED ERROR - LF=*OCTB 
31 FORMAT FHC25 - ECC REGISTER TEST 
32 FORMAT FHC26 - ECC REGISTER CLEAR TEST 
33 FORMAT FHC27 - ECC FUNCTIONAL TEST 
34 FORMAT FHC28 - AUTOLOAD FORM DISK TEST 
35 FORMAT FHC29 - WRITE VERIFY TEST 
/             HEADER
40 MSG 1 TO LINE 1                *DIAGNOSTIC TITLE 
   MSG B13 TO LINE 2              *MODULE TITLE 
   MSG 4 (B13,EA,B0,EC) TO LINE 5   *LINE, ERROR NUMBER 
/             ERROR MESSAGE 
   MSG 10 (LF) TO LINE 12         *UNEXPECTED, LAST FUNCTION
/             CE INFORMATION
   MSG 5 TO LINE 14 
   MSG 6 TO LINE 15 
   MSG 7 TO LINE 16 
/             PRODUCT OVERLAY MESSAGE 
   IF(EC.AND.4000.NE.0) MSG EM TO LINE 10 
/             DISPLAY MESSAGE 
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 40 
COMPILE 
   MODULE FHC26,6000(05,07,14,16),LOCK
** 5.2.20 FHC26 - ECC REGISTER CLEAR TEST 
* 
*         PURPOSE-
*         FHC26 VERIFIES THE ABILITY OF THE PROCESSOR TO CLEAR THE
*         CONTENTS OF THE ECC REGISTER. 
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           LOAD DATA PATTERN INTO NOC-S 12, 13, AND 14 
*           DO FOR ALL 4 HEADS
*             SELECT HEAD ON NOC 3. 
*             LOAD ECC REGISTER BY SENDING FLAG PULSE 11
*             CLEAR ECC REGISTER BY SENDING FLAG PULSE 3
*             READ ECC REGISTER 
*             VERIFY THAT CONTENTS ARE ZERO 
*           ENDO
*         ENDO
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC250 - REPORT UNEXPECTED ERRORS 
*         FHC25A - REPORT EXPECTED ERRORS 
*         FHC983 - GENERATE 48-BIT DATA PATTERNS
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - TEMPORARY STORAGE
*         B6 - TEMPORARY STORAGE
*         B7 - HEAD INDEX 
*         B14- TEMPORARY STORAGE
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         IB(0) THROUGH IB(3) ALL CONTAIN ZEROES. 
*         OB(100) - OB(217) = 48-BIT DATA PATTERNS
* 
* 
*         REMARKS-
* 
*         KNOWN LIMITATIONS-
* 
1  FORMAT FHC26 - ECC REGISTER CLEAR TEST 
2  FORMAT FHC26 - LC=*DECD, EC=*DECD
4  FORMAT FHC26 ERROR(S) = *DECD
5  FORMAT EXPECTED  *OCT *OCT *OCT *OCT 
6  FORMAT ACTUAL    *OCT *OCT *OCT *OCT 
* 
*         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
*         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 0010 
   EQUATE OPNC TO 0050
   EQUATE IPFP TO 0054
   EQUATE IPCS TO 0052
* 
*         MISCELLANEOUS EQUATES 
* 
   EQUATE NPOL TO 72D        *NUMBER OF POLY. PATTERNS
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
*         INITIALIZE. 
* 
21 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13=26D                   *MODULE NUMBER 26D 
   CALL 983                  *GENERATE 48 BIT DATA PATTERN
* 
/         PERFORM ECC REGISTER CLEAR TEST.
* 
40 B1=B1+1
   RES, ABT 70               *RESERVE CHANNEL 
   OB(0)=12D                 *CHANNEL NUMBER
   OB(1)=OB(B2+100).RS.4     *BITS 00 TO 07 
   B14=OB(B2+100).AND.17.LS.4 
   OB(2)=OB(B2+101).RS.8+B14  *BITS 08 TO 15
   FUNC OPNC, ABT 70         *OUT CH=12D,B5,B6,ABT 70 
   OUT 3 WORDS FROM OB(0), ABT 70 
* 
   OB(0)=13D                 *CHANNEL NUMBER
   OB(1)=OB(B2+101).AND.377  *BITS 16 TO 23 
   OB(2)=OB(B2+102).RS.4     *BITS 24 TO 31 
   FUNC OPNC, ABT 70         *OUT CH=13D,B5,B6,ABT 70 
   OUT 3 WORDS FROM OB(0), ABT 70 
* 
   OB(0)=14D                 *CHANNEL NUMBER
   B14=OB(B2+102).AND.17.LS.4 
   OB(1)=OB(B2+103).RS.8+B14  *BITS 32 TO 39
   OB(2)=OB(B2+103).AND.377  *BITS 40 TO 47 
   FUNC OPNC, ABT 70         *OUT CH=14D,B5,B6,ABT 70 
   OUT 3 WORDS FROM OB(0), ABT 70 
* 
/         SELECT HEAD AND LOAD REGISTER 
* 
   B7 = 0                    *INITIALIZE HEAD INDEX 
50 OB = 3                    *CHANNEL NUMBER
   OB(1) = 0
   OB(2) = B7.LS.2           *JUSTIFY HEAD
   FUNC OPNC,ABT 70          *OUT CH=3,0,B8,ABT 70
   OUT 3 WORDS FROM OB(0), ABT 70 
   OB(0)=11D
   FUNC IPFP, ABT 70         *FLAG PULSE CH=11D,ABT 70
   OUT 1 WORDS FROM OB(0), ABT 70 
* 
/         CLEAR REGISTER
* 
   OB(0)=3
   FUNC IPFP,ABT 70          *FLAG PULSE CH=3,ABT 70
   OUT 1 WORDS FROM OB(0), ABT 70 
* 
/         READ REGISTER 
* 
   OB(0)=3
   OB(1)=0
   FUNC OPNC, ABT 70         *OUT CH=3,0,B8,ABT 70
   OUT 3 WORDS FROM OB(0), ABT 70 
   FUNC IPCS, ABT 70         *STATUS CHANNEL,ABT 70 
   STATUS 32D WORDS TO SB(1), ABT 70
   OB(3)=SB(7)
   OB(4)=SB(8)
* 
   OB(2)=OB(2) + 1           *SELECT BITS 16 TO 31
   FUNC OPNC, ABT 70         *OUT CH=3,0,B8,ABT 70
   OUT 3 WORDS FROM OB(0), ABT 70 
   FUNC IPCS, ABT 70         *STATUS CHANNEL,ABT 70 
   STATUS 32D WORDS TO SB(1), ABT 70
   OB(5)=SB(7)
   OB(6)=SB(8)
* 
   OB(2)=OB(2) + 1           *SELECT BITS 32 TO 47
   FUNC OPNC, ABT 70         *OUT CH=3,0,B8,ABT 70
   OUT 3 WORDS FROM OB(0), ABT 70 
   FUNC IPCS, ABT 70         *STATUS CHANNEL,ABT 70 
   STATUS 32D WORDS TO SB(1), ABT 70
   OB(7)=SB(7)
   OB(10)=SB(8) 
* 
/         UNPACK DATA RECEIVED FROM ECC REGISTER
* 
   B14=OB(3).LS.4 
   OB(11)=OB(4).RS.4+B14
   B14=OB(4).AND.17.LS.8
   OB(12)=OB(5)+B14 
   B14=OB(6).LS.4 
   OB(13)=OB(7).RS.4+B14
   B14=OB(7).AND.17.LS.8
   OB(14)=OB(10)+B14
* 
/         COMPARE DATA
* 
   WC = 4                    *INITIALIZE WORD COUNT 
   COMPARE OB(11) TO IB(0) FOR WC, ABT 65 
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 50 WHILE (B7+1.LT.4)     *END OF HEADS LOOP 
   GOTO 40 WHILE (B2+4.LE.NPOL)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
*         DISPLAY DATA ERRORS 
* 
65 ERROR 3/5
   MSG 5 4 WORDS FROM IB(0) TO LINE 7 
   MSG 6 4 WORDS FROM OB(11) TO LINE 10 
*  GOTO 67
* 
*         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
*         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
*         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 25A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 250  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
   RES, ABT 77
* 
*         TERMINATE.
* 
76 FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC27,6000(05,07,14,16),LOCK
** 5.2.21 FHC27 - ECC FUNCTIONAL TEST 
* 
*         PURPOSE-
*         FHC27 VERIFIES THAT THE ECC LOGIC FUNCTIONS PROPERLY. 
*         THIS MODULE DOES NOT USE THE DRIVE. 
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           SET DATA PATTERN IN OUTPUT BUFFER 
*           MASTER CLEAR CONTROLLER (NOC 1 FLAG)
*           SELECT DEVICE INTERFACE AND HEADS PARALLEL ON NOC 1.
*           CLEAR ECC REGISTER (NOC 3 FLAG) 
*           SET SKIP SECTOR MARK AND SYNC BYTE PATTERN (NOC 2)
*           SET ECC POLYNOMIALS TO DATA PATTERN (NOC 12-14) 
*           DO FOR ALL 4 ECC REGISTERS
*             SET HEAD DECODE ECC ON NOC 3
*             LOAD ECC REGISTER (NOC 11D FLAG)
*           ENDO
*           CLEAR ECC POLYNOMIALS (NOC 12-14) 
*           EXECUTE WRITE ECC LOOP CONTROLWORD SEQUENCE 
*           CHECK NIC 1 FOR ERRORS
*         ENDO
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC250 - REPORT UNEXPECTED ERRORS 
*         FHC27A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - TEMPORARY STORAGE
*         B6 - TEMPORARY STORAGE
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
* 
*         REMARKS-
* 
*         KNOWN LIMITATIONS-
* 
1  FORMAT FHC27 - ECC FUNCTIONAL TEST 
2  FORMAT FHC27 - LC=*DECD, EC=*DECD
4  FORMAT FHC27 ERROR(S) = *DECD
* 
*         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
*         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 0010      *OPERATION COMPLETE
   EQUATE OPNC TO 0050      *OUTPUT PROCESSOR NORMAL CHANNEL
   EQUATE ECWS TO 0051       *EXECUTE CONTROL WORD SEQUENCE 
   EQUATE IPCS TO 0052       *INPUT PROCESSOR CHANNEL STATUS
   EQUATE IPFP TO 0054       *ISSUE PROCESSOR FLAG PULSE
* 
*         OUTPUT BUFFER AND DATA PATTERNS 
* 
   DATA(OB(00),CON) 164,056,174,056    *NOC 5 PATTERNS
   DATA(OB(04),CON) 2,0,60             *CW (NOC 4)
   DATA(OB(07),CON) 0,0,0,0,0,0,0,0,0,0  *CW (NOC 5)
   DATA(OB(21),CON) 1,1,040B           *NOC 1,FMD UNIT/4HP
   DATA(OB(24),CON) 2,0,125B           *NOC 2, SKIP MARK
   DATA(OB(27),CON) 3,0,0              *NOC 3, HEAD SELECT
   DATA(OB(32),CON) 11D                *NOC 11 FLAG 
   DATA(OB(33),CON) 12D,0,25,13D,0,0,14D,0,0  *ZEROES 
   DATA(OB(44),CON) 12D,377,352,13D,377,377,14D,377,377 
   DATA(OB(55),CON) 12D,0,0,13D,0,0,14D,0,0  *CLEAR POLYS 
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
*         INITIALIZE. 
* 
21 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B2=0                      *PATTERN INDEX 
   B3=0                      *ERROR COUNT 
   B13=27D                   *MODULE NUMBER 27D 
* 
*         BEGIN ECC FUNCTIONAL TEST 
* 
* 
*         SET DATA PATTERN IN BUFFER
* 
40 B1 = B1 + 1               *BEGIN ECC FUNCTIONAL TEST 
   OB(07) = OB(B2)           *SET DATA PATTERN FOR CW 
   OB(10) = OB(B2+1)
   RES, ABT 70               *RESERVE CHANNEL 
* 
/         MASTER CLEAR CONTROLLER (NOC 1 FLAG)
* 
   BA = 21                   *OB(21)
   GOSUB 51                  *FLAG PULSE CH=1, ABT 70 
* 
/         SELECT DEVICE INTERFACE, HEADS PARALLEL (NOC 1).
* 
   BA = 21                   *OB(21)
   GOSUB 50                  *OUT CH=1,1,40,ABT 70
* 
/         CLEAR ECC REGISTER (NOC 3 FLAG) 
* 
   BA = 27                   *OB(27)
   GOSUB 51                  *FLAG PULSE CH=3,ABT 70
* 
/         SET SKIP SECTOR MARK, SYNC BYTE PATTERN (NOC 2).
* 
   BA = 24                   *OB(24)
   GOSUB 50                  *OUT CH=2,0,125,ABT 70 
* 
/         LOAD POLYNOMIALS (NOC 12D THRU 14D) 
* 
   B4 = B2 RS 1              *DIVIDE BY 2 
   B4 = B4 LS 3 + B4         *MULTIPLY BY 9 
   B4 = B4 + 33B             *OB(B4)
   GOSUB 54                  *LOAD POLYNOMIALS
* 
/         LOAD ECC REGISTERS (NOC 11 FLAG)
* 
   BA = 32                   *OB(32)
   GOSUB 51                  *FLAG PULSE CH=11D,ABT 70
   B4 = 4                    *INITIALIZE INDEX
44 OB(31) = B4               *LOAD ALL 4 ECC REGISTERS
   BA = 27                   *OB(27)
   GOSUB 50                  *OUT CH=3,0,B4,ABT 70
   BA = 32                   *OB(32)
   GOSUB 51                  *FLAG PULSE CH=11D,ABT 70
   GOTO 44 WHILE (B4+4.LE.14B)
* 
/         CLEAR ECC POLYNOMIAL (NOC 14) 
* 
   B4 = 55                   *CLEAR ECC POLYNOMIALS 
   GOSUB 54 
* 
/         EXECUTE WRITE ECC LOOP CONTROLWORD SEQUENCE 
* 
   FUNC ECWS, ABT 70         *CONTROL 0,20,C,D,EX,ABT 70
   OUT 49D WORDS FROM OB(04),ABT 70 
* 
/         CHECK NIC 1 FOR ERRORS. 
* 
   GOSUB 53                  *STATUS CHANNEL,ABT 70 
   IF (SB(4).AND.11B.EQ.0) GOTO 46
   IF (B2.EQ.0) ERROR 3/11, GOTO 67 
   ERROR 3/12, GOTO 67
* 
*         FINALIZE. 
* 
46 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 40 WHILE (B2+2.LE.2)
   GOTO 77
* 
/         OUTPUT ON NOC SUBROUTINE
* 
50 WC = 3                    *OUTPUT ON NOC ROUTINE 
   FUNC OPNC, ABT 70
   GOTO 52
51 WC = 1                    *FLAG PULSE ROUTINE
   FUNC IPFP, ABT 70
52 OUT, ABT 70
   RETURN 
* 
/         STATUS CHANNEL SUBROUTINE 
* 
53 FUNC IPCS, ABT 70         *STATUS CHANNEL, ABT 70
   STATUS 32D WORDS TO SB(1), ABT 70
   RETURN 
* 
/         SET ECC POLYNOMIALS SUBROUTINE
* 
54 B5 = 0                    *SET ECC POLYS 
55 BA = B4 + B5              *OB(B4+B5) 
   GOSUB 50                  *OUT CH=12 THRU 14 
   GOTO 55 WHILE (B5+3.LE.6)
   RETURN 
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S  *SET FLAG 1 
   GOTO 71
* 
*         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C  *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
*         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 27A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 250  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
*         TERMINATE.
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC27A,6000(05,07,14,16),LOCK 
*   5.2.21.1 FHC27A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC27.
* 
*         BUFFERS USED- 
*         SAME AS FHC27.
* 
* 
* 
*        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC27 - ECC FUNCTIONAL TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC27 - LINE *OCT - ERROR NUMBER *H*HE
* 
/         ERROR NUMBER 6C009/6C00A HEX
* 
10 FORMAT CONTROLLER STATUS NON-ZERO DURING WRITE ECC 
11 FORMAT WITH ZEROES PATTERN.
12 FORMAT WITH ONES PATTERN.
13 FORMAT SUCCESSIVELY REPLACE CARDS
14 FORMAT B*D, A*D, AND B20.
15 FORMAT A*D, B20, AND B*D.
16 FORMAT B22,B23,B24,B25,A12,A11,A10,A09,AND B20.
17 FORMAT A12,A11,A10,A09,B20,B22,B23,B24,AND B25.
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC27A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
   B6 = 0                    *SET DEFAULT VALUE 
   GOSUB 50                  *CHECK NIC 15/0-3
   GOSUB 54                  *COMPUTE BOARD LOCATION
* 
* 
* 
   IF (B0.NE.154) GOTO 45 
   IF (EC.LT.11) GOTO 45
   IF (EC.GT.12) GOTO 45
* 
/         ERROR NUMBER 6C009 HEX
* 
40 IF (EC.NE.11) GOTO 41
   MSG 10 TO LINE 12
   MSG 11 TO LINE 13
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 13 TO LINE 15
   IF(SB(40).AND.B6.EQ.0)MSG 14 (B4,B8) TO LINE 16
   IF(SB(40).AND.B6.NE.0)MSG 16 TO LINE 16
   EXIT TO 98L
* 
/         ERROR NUMBER 6C00A HEX
* 
41 IF(EC.NE.12) GOTO 45 
   MSG 10 TO LINE 12
   MSG 12 TO LINE 13
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 13 TO LINE 15
   IF(SB(40).AND.B6.EQ.0)MSG 15 (B8,B4) TO LINE 16
   IF(SB(40).AND.B6.NE.0)MSG 17 TO LINE 16
   EXIT TO 98L
* 
/         CHECK NIC 15/0-3, SYNC BYTE HEAD BITS 
* 
50 IF (SB(40).AND.10.NE.0) B6 = 3  *HEAD 3
   IF (SB(40).AND.4.NE.0) B6 = 2   *HEAD 2
   IF (SB(40).AND.2.NE.0) B6 = 1   *HEAD 1
   IF (SB(40).AND.1.NE.0) B6 = 0   *HEAD 0
   RETURN 
* 
/         COMPUTE BOARD LOCATIONS 
* 
54 B4 = B6 + 22D             *COMPUTE DATA PATH CARD ADRS 
   B8 = 12D - B6             *COMPUTE ECC CARD ADRS 
   B6 = 1.LS.B6.XOR.17B      *COMPUTE HEAD BIT MASK 
   RETURN 
* 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC28,6000(05,07,14,16),LOCK
** 5.2.22 FHC28 - AUTOLOAD FROM DISK TEST 
* 
*         PURPOSE-
*         FHC28 VERIFIES THAT THE AUTOLOAD FROM DISK FUNCTION WORKS.
*         THIS MODULE USES THE DRIVE ASSIGNED AND ASSUMES THAT THE
*         MEDIA CONTAINS A WORKING COPY OF CONTROLWARE. 
* 
*         METHOD- 
*         IF AUTOLOAD FROM DISK (P4) NOT ENABLED, EXIT. 
*         IF DRIVE MODULES DISABLED (P5), EXIT. 
*         ADD UNIT NUMBER TO AUTOLOAD FROM DISK FUNCTION CODE 
*         SET DEVICE TYPE INDEX (844/885) 
*         RESERVE CHANNEL 
*         RESERVE DRIVE AND SEEK. 
*         READ CONTROLWARE SECTOR.
*         CHECK CONTROLWARE DATA. 
*         SEND AUTOLOAD FROM DISK FUNCTION CODE 
*         FETCH GENERAL STATUS
*         IF GENERAL STATUS IS NON-ZERO, THEN 
*           REPORT ERROR
*         ENDIF 
*         DISPLAY VERSION OF CONTROLWARE LOADED 
*         CHECK THAT DIAGNOSTIC AND CONTROLLER CORRESPOND.
*         CHECK THAT THE CORRECT CONTROLWARE WAS LOADED.
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC250 - REPORT UNEXPECTED ERRORS 
*         FHC28A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B3 - ERROR COUNT
*         B4 - AUTOLOAD FROM DISK FUNCTION WITH UNIT NUMBER PLUGGED 
*         B5 - DEVICE TYPE INDEX
*         B6 - TEMPORARY STORAGE
*         B7 - TEMPORARY STORAGE
*         B8 - TEMPORARY STORAGE
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
* 
*         REMARKS-
* 
*         KNOWN LIMITATIONS-
* 
1  FORMAT FHC28 - AUTOLOAD FROM DISK TEST 
2  FORMAT FHC28 - LC=*DECD, EC=*DECD
4  FORMAT FHC28 ERROR(S) = *DECD
5  FORMAT // FHC28 NOT ENABLED, NEEDS P4=XXX1,P4=*OCT //
6  FORMAT // FHC28 DRIVES DISABLED, P5=XXX1 //
10 FORMAT // MA7*D-REV-*D CONTROLWARE LOADED // 
11 FORMAT -PAUSE- DC-UN MISMATCH
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         FUNCTION CODE EQUATES 
* 
   EQUATE SK11 TO 0001       *SEEK 1 TO 1 
   EQUATE OPCOM TO 0010      *CLEAR COUPLER CONNECT 
   EQUATE DSTAT20 TO 0023    *20 WORD DETAILED STATUS 
   EQUATE RPS TO 0034        *READ PROTECTED SECTOR 
   EQUATE IPCS TO 0052       *INPUT PROCESSOR CHANNEL STATUS
   EQUATE DISKAL TO 0100
   EQUATE CGS TO 0012 
* 
/         DATA FOR SEEK 
* 
   DATA (OB(0),CON) 0,1511,2,1  *885 CONTROLWARE ADDRESS
   DATA (OB(4),CON) 0,1466,1,0  *844 CONTROLWARE ADDRESS
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF (P4.AND.1.NE.0) GOTO 21 
   MSG 5 (P4) TO DISPLAY, PRINT 
   EXIT 
21 IF (P5.AND.1.EQ.0) GOTO 22 
   MSG 6 TO DISPLAY, PRINT
   EXIT 
22 IF (DC.NE.5) GOTO 24      *IF NOT 844, 
   IF (SB(72).AND.77B.LE.7B) GOTO 25  *IF DC/UN OK, 
23 MSG 11 TO DISPLAY, PRINT 
   PAUSE
   EXIT 
24 IF (DC.LT.7) GOTO 23      *IF NOT 885, 
   IF (SB(72).AND.77B.LT.40B) GOTO 23 
   IF (SB(72).AND.77B.GT.57B) GOTO 23 
* 
/        INITIALIZE.
* 
25 B0 = 156B                 *TEST NUMBER 6E HEX
   B1=0                      *LOOP COUNT
   B3=0                      *ERROR COUNT 
   B13=28D                   *MODULE NUMBER 28D 
   B4=SB(72).AND.77+DISKAL
* 
/         SET TIMER AND DEVICE TYPE INDEX.
* 
30 B1 = B1 + 1               *INCREMENT LOOP COUNTER
   TIMEOUT,TYPEB=2000000D USEC
   OB = SB(72).AND.77        *FORM UNIT NUMBER
   OB(4) = OB 
* 
/         RESERVE AND SEEK. 
* 
   B5 = 0                    *SET DEVICE TYPE INDEX 
   IF(OB.LT.40) B5 = 4       *IF 844, USE OB(4) 
   RES, ABT 70               *RESERVE CHANNEL 
   FUNC SK11, ABT 70         *RESERVE DRIVE, SEEK 1 TO 1
   OUT 4 WORDS FROM OB(B5), ABT 70
   GOSUB 61                  *READ GENERAL/DETAILED STATUS
   IF (SB.AND.7775B.NE.0) ERROR 27/6, GOTO 67 
   DELAY 125D MSEC           *DELAY FOR ON CYLINDER 
   FUNC SK11, ABT 70         *RESERVE DRIVE, SEEK 1 TO 1
   OUT 4 WORDS FROM OB(B5), ABT 70
   GOSUB 61                  *GET STATUS
   IF (SB.AND.7777B.NE.0) ERROR 27/6, GOTO 67 
* 
/         READ CONTROLWARE SECTOR.
* 
   FUNC RPS, ABT 70          *READ PROTECTED SECTOR 
   INB 502 WORDS TO IB, ABT 70
   GOSUB 61                  *READ GENERAL/DETAILED STATUS
   IF (SB.NE.0) ERROR 6/6, GOTO 67
   FUNC OPCOM, ABT 70        *OPERATION COMPLETE
* 
/         CHECK CONTROLWARE DATA. 
* 
   IF (IB.NE.3000) ERROR 3/2, GOTO 67  *BAD CWARE 
* 
/        PERFORM AUTOLOAD FROM DISK TEST
* 
40 RES, ABT 70               *RESERVE CHANNEL 
   FUNC B4, ABT 66           *AUTOLOAD FROM DISK FUNCTION 
   FUNC IPCS, ABT 70         *CHANNEL STATUS
   STATUS 32D WORDS TO SB(1), ABT 70
   B8 = SB(24)               *4HP OPTION STATUS 
   GOSUB 61                  *READ GENERAL/DETAILED STATUS
   B6 = SB(22) .AND. 340 .RS. 5 
   B6 = B6 + 21D
   B7 = SB(4).AND.1700.RS.6 
   IF (SB(0).NE.0) ERROR 3/1, GOTO 67 
* 
/         DISPLAY VERSION OF CONTROLWARE LOADED.
* 
   MSG 10 (B6,B7) TO DISPLAY, DAYFILE, PRINT
   MSG 10 (B6,B7) TO LINE 1 
* 
/         CHECK DIAG/CWARE/HWARE CORRESPONDANCE.
* 
   IF(B8.AND.10.EQ.0) ERROR 3/4, GOTO 67       *WRONG CTRLR 
   IF(SB(22).AND.340.NE.40) ERROR 3/5,GOTO 67  *WRONG CWARE 
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 76                       *TERMINATE 
* 
/         READ GENERAL AND DETAILED STATUS SUBROUTINE 
* 
61 FUNC CGS, ABT 70          *READ GENERAL STATUS 
   STATUS 1 WORDS TO SB, ABT 70 
   FUNC DSTAT20, ABT 70      *READ DETAILED STATUS
   STATUS 20D WORDS TO SB(1), ABT 70
   RETURN 
* 
/        PROCESS ABORT ON AUTOLOAD
* 
66 IF (EC.NE.4024) GOTO 70   *IF CH NOT ACTIVE, 
   ERROR 3/3                 *ELSE, INLINE TEST FAILURE 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 30                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 28A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 250  *UNEXPECTED ERROR DISPLAY
* 
   IF (ES.AND.RC.NE.0) GOTO 30  *IF REPEAT COND. SET, 
* 
/        TERMINATE. 
* 
76 RES, ABT 77               *RESERVE CONTROLLER
   FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC28A,6000(05,07,14,16),LOCK 
*   5.2.22.1 FHC28A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC985 - DISPLAY GENERAL AND DETAILED STATUS. 
* 
*         REGISTERS USED- 
*         SAME AS FHC28.
* 
*         BUFFERS USED- 
*         SAME AS FHC28.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC28 - AUTOLOAD FROM DISK TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FHDD
4  FORMAT FHC28 - LINE *OCT - ERROR NUMBER *H*HE
* 
/         ERROR NUMBER 6E001 HEX
* 
7  FORMAT GENERAL STATUS = *OCTB
* 
10 FORMAT AUTOLOAD FROM DISK FUNCTION FAILED. 
11 FORMAT VERIFY THAT THE SELECTED SPINDLE HAS A COPY OF THE
12 FORMAT CONTROLWARE IN THE PREDETERMINED AREA.
13 FORMAT 
* 
/         ERROR NUMBER 6E002 HEX
* 
14 FORMAT DISK/CONTROLWARE DATA MISCOMPARE. 
* 
/         ERROR NUMBER 6E003 HEX
* 
15 FORMAT AUTOLOAD FROM DISK DIDNT DCN CHANNEL. 
16 FORMAT ADDITIONAL ERROR INFORMATION IS 
17 FORMAT PRESENTED ON 7155-S LED-S.
* 
/         ERROR NUMBER 6E004 HEX
* 
21 FORMAT WRONG CONTROLLER ERROR
22 FORMAT FHC RUNS ON THE 7155-401 CONTROLLER ONLY. 
23 FORMAT RUN FMC ON THIS CONTROLLER (7155-1,1X). 
* 
/        ERROR NUMBER 6E005 HEX 
* 
24 FORMAT WRONG CONTROLWARE LOADED ERROR. 
25 FORMAT  MA7*D-REV-*D CONTROLWARE LOADED. 
26 FORMAT 7155-401 CONTROLLER REQUIRES MA722 CONTROLWARE. 
* 
/         ERROR NUMBER 6E006 HEX
* 
27 FORMAT GENERAL STATUS NON-ZERO AFTER A SEEK. 
6  FORMAT GENERAL STATUS NON-ZERO AFTER READ PROTECTED. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC28A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.156) GOTO 50 
   IF (EC.EQ.0) GOTO 50 
   IF (EC.GT.6) GOTO 50 
* 
/        ERROR NUMBER 6E001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 7 (SB(0)) TO LINE 10 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 985
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 985
* 
/         ERROR NUMBER 6E002 HEX
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 985
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 985
* 
/         ERROR NUMBER 6E003 HEX
* 
42 IF (EC.NE.3) GOTO 43 
   MSG 15 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 16 TO LINE 14
   MSG 17 TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
/         ERROR NUMBER 6E004 HEX
* 
43 IF (EC.NE.4) GOTO 44 
   MSG 21 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 985
   MSG 22 TO LINE 14
   MSG 23 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 985
* 
/         ERROR NUMBER 6E005 HEX
* 
44 IF (EC.NE.5) GOTO 45 
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 985
   MSG 25 (B6,B7) TO LINE 14
   MSG 26 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 985
* 
/         ERROR NUMBER 6E006 HEX
* 
45 IF (EC.NE.6) GOTO 50 
   MSG EM TO LINE 12
   IF (P4.AND.4000B.EQ.0) EXIT TO 985 
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 985
/ 
50 MSG 30 (EA,B0,EC,EM) TO LINE 12
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC29,6000(05,07,14,16),LOCK
** 5.2.23 FHC29 - WRITE VERIFY TEST 
* 
*         PURPOSE-
*         FHC29 VERIFIES THE ABILITY OF THE WRITE VERIFY COMPARE
*         NETWORK TO DETECT A DATA FAILURE DURING A WRITE VERIFY
*         SEQUENCE.  THIS MODULE DOES NOT USE A DRIVE.
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           SET DATA PATTERN IN OUTPUT BUFFER (OB)
*           RESERVE CONTROLLER
*           MASTER CLEAR CONTROLLER LOGIC (NOC 1 FLAG)
*           SEND PATTERN TO CONTROLLER BUFFER 
*           SET FMD UNIT BIT ON NOC 1 
*           SET SKIP SECTOR MARK AND WRITE VERIFY ON NOC 2. 
*           SET READ/WRITE ADDRESS ON NOC 6 
*           SET UP/DOWN COUNT ON NOC 7
*           CLEAR LOAD BIT ON NOC 6 
*           EXECUTE WRITE VERIFY CONTROLWORD SEQUENCE 
*           CHECK FOR WRITE VERIFY MISCOMPARE (NIC 1/4) 
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS.
* 
*         SUBMODULES REFERENCED-
*         FHC250 - REPORT UNEXPECTED ERRORS 
*         FHC29A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
1  FORMAT FHC29 - WRITE VERIFY TEST 
2  FORMAT FHC29 - LC=*DECD, EC=*DECD
4  FORMAT FHC29 ERROR(S) = *DECD
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 0010      *OPERATION COMPLETE
   EQUATE OPNC TO 0050       *OUTPUT PROCESSOR NORMAL CHANNEL 
   EQUATE ECWS TO 0051       *EXECUTE CONTROL WORD SEQUENCE 
   EQUATE IPCS TO 0052       *INPUT PROCESSOR CHANNEL STATUS
   EQUATE IPFP TO 0054       *ISSUE PROCESSOR FLAG PULSE
   EQUATE MDS TO 0062        *MANIPULATE PROCESSOR
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 42B        *NUMBER OF DATA PATTERNS 
* 
/         OUTPUT BUFFER (DATA PATTERNS) 
* 
   DATA(OB(00),CON) 001,026,000,000,000 
   DATA(OB(05),CON) 000,000,000,001,000,002,000,004 
   DATA(OB(15),CON) 000,010,000,020,000,040,000,100 
   DATA(OB(25),CON) 000,200,001,000,002,000,004,000 
   DATA(OB(35),CON) 010,000,020,000,040,000,100,000 
   DATA(OB(45),CON) 200,000 
   DATA(OB(50),CON) 1,0,040  *NOC 1, FMD UNIT 
   DATA(OB(54),CON) 2,0,300  *NOC 2, WRT VERIFY 
   DATA(OB(60),CON) 6,366,0  *NOC 6 
   DATA(OB(64),CON) 6,166,0  *NOC 6 
   DATA(OB(70),CON) 7,140,1  *NOC 7 
   DATA(OB(74),CON) 2,0,20,101,6,0,0,0,0  *CW 
   DATA(OB(105),CON) 0,0,0,0
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/        INITIALIZE.
* 
21 B0=157                    *TEST NUMBER 6F HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13=29D                   *MODULE NUMBER 29D 
* 
/        SET DATA PATTERN IN BUFFER (16-BITS) 
* 
30 B1 = B1 + 1               *INCREMENT LOOP COUNTER
   B4 = B2 + 5               *DATA PATTERN ADDRESS
   OB(3) = OB(B4) 
   OB(4) = OB(B4+1) 
   RES, ABT 70               *RESERVE CHANNEL 
* 
/         MASTER CLEAR (NOC 1 FLAG) 
* 
   FUNC IPFP, ABT 70         *FLAG PULSE CH=1,ABT 70
   OUT 1 WORDS FROM OB(50), ABT 70
* 
/         SEND PATTERN TO CONTROLLER BUFFER 
* 
   FUNC MDS, ABT 70          *MANIPULATE PROCESSOR
   ACN, ABT 70
   OUT 5 WORDS FROM OB, ABT 70
* 
/         SET FMD UNIT BIT (NOC 1/5)
* 
   BA = 50B                  *OB(50)
   GOSUB 60                  *OUT CH=1,0,40,ABT 70
* 
/         SET SKIP SECTOR MARK AND WRITE VERIFY (NOC 2) 
* 
   BA = 54B                  *OB(54)
   GOSUB 60                  *OUT CH=2,0,300,ABT 70 
* 
/         SET READ/WRITE ADDRESS (NOC 6)
* 
   BA = 60B                  *OB(60)
   GOSUB 60                  *OUT CH=6,366,0,ABT 70 
* 
/         SET UP/DOWN COUNT (NOC 7) 
* 
   BA = 70B                  *OB(70)
   GOSUB 60                  *OUT CH=7,140,1,ABT 70 
* 
/         CLEAR LOAD BIT (NOC 6)
* 
   BA = 64B                  *OB(64)
   GOSUB 60                  *OUT CH=6,166,0,ABT 70 
* 
/         EXECUTE WRITE VERIFY LOOP SEQUENCE
* 
   FUNC ECWS, ABT 70         *CONTROL 0,20,101,6,EX,ABT 70
   OUT 49D WORDS FROM OB(74), ABT 70
* 
/         CHECK FOR WRITE VERIFY COMPLETE (NIC 1/4) 
* 
   FUNC IPCS, ABT 70         *STATUS CHANNEL, ABT 70
   STATUS 32D WORDS TO SB(1), ABT 70
   IF (B2.NE.0) GOTO 40      *IF NOT ZEROES PATTERN 
   IF (SB(4).AND.20B.NE.0) ERROR 3/1, GOTO 67 
   GOTO 50
40 IF (SB(4).AND.20B.EQ.0) ERROR 3/2, GOTO 67 
* 
/        FINALIZE.
* 
50 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 30 WHILE (B2+2.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/         OUTPUT ON NOC SUBROUTINE
* 
60 WC = 3 
   FUNC OPNC, ABT 70
   OUT, ABT 70
   RETURN 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 30                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 29A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 250  *UNEXPECTED ERROR DISPLAY
/ 
75 IF (ES.AND.RC.NE.0) GOTO 30
* 
/         TERMINATE.
* 
76 RES, ABT 77
   FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
   IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
77 END 20 
COMPILE 
   MODULE FHC29A,6000,(05,07,14,16),LOCK
*   5.2.23.1 FHC29A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98L - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC29.
* 
*         BUFFERS USED- 
*         SAME AS FHC29.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC29 - WRITE VERIFY TEST 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC29 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6F001 HEX 
* 
10 FORMAT WRITE VERIFY COMPARE ERROR (NIC 1/4). 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B21, B19, B20, B26, B27, AND A20. 
13 FORMAT 
* 
/        ERROR NUMBER 6F002 HEX 
* 
14 FORMAT NO WRITE VERIFY COMPARE ERROR (NIC 1/4).
15 FORMAT B27, A20, AND B21.
16 FORMAT B26, AND B21. 
17 FORMAT B20, AND B21. 
20 FORMAT B19, AND B21. 
21 FORMAT A20, B21, B27, B26, B20, AND B19. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC29A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.157) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.2) GOTO 45 
* 
/        ERROR NUMBER 6F001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98L
* 
/        ERROR NUMBER 6F002 HEX 
* 
41 IF (EC.NE.2) GOTO 45 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98L
   MSG 11 TO LINE 14
   MSG 21 TO LINE 15
   IF (OB(B4+1).AND.17.NE.0) MSG 15 TO LINE 15
   IF (OB(B4+1).AND.360.NE.0) MSG 16 TO LINE 15 
   IF (OB(B4).AND.17.NE.0) MSG 17 TO LINE 15
   IF (OB(B4).AND.360.NE.0) MSG 20 TO LINE 15 
   MSG 13 TO LINE 16
   EXIT TO 98L
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC30,844HT(05),LOCK
** 5.2.24 FHC30 - LOOP 885 DECODE TEST (DC=5) 
* 
*         PURPOSE-
*         FHC30 VERIFIES THAT DATA PATTERNS CAN BE LOOPED THROUGH THE 
*         885 INTERFACE BOARDS USING THE LOOP 885 DECODE FEATURE. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 844 (DEVICE CODE 5) IS ASSIGNED TO 
*         THE DIAGNOSTIC. 
* 
*         METHOD- 
*         VERIFY PARAMETERS.
*         DO FOR ALL DATA PATTERNS
*           FILL BUFFER 
*           DO FOR EACH WORD IN BUFFER
*             DO FOR 885 INTERFACE ASSIGNED 
*               SET THE LOOP 885 DECODE BIT 
*               OUTPUT WORD ON NOC 8
*               VERIFY THAT NIC 8 CONTAINS THE CORRECT WORD 
*               CLEAR LOOP 885 DECODE BIT.
*               CHECK STATUS VALID AND BUS IN PARITY. 
*               ISOLATE DATA ERRORS BASED ON BAD BIT POSITION 
*             ENDO
*           ENDO
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC300 - VERIFY PARAMETERS
*         FHC370 - REPORT UNEXPECTED ERRORS 
*         FHC30A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - BUFFER INDEX 
*         B6 - TEMPORARY STORAGE
*         B7 - TEMPORARY STORAGE
*         B8 - TEMPORARY STARAGE
*         B9 - ABORT TYPE INDEX 
*         B10- LENGTH OF BUFFER LOOP
*         B12- CURRENT DATA PATTERN 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  HOLDS GENERATED DATA PATTERNS
* 
* 
1  FORMAT FHC30 - LOOP 885 DECODE TEST (DC=5) 
2  FORMAT FHC30 - LC=*DECD, EC=*DECD
4  FORMAT FHC30 ERROR(S) = *DECD
5  FORMAT DATA ERROR    E*OCT  A*OCT  D*OCT 
6  FORMAT // FHC30 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BIPE TO 1          *BUS IN PARITY ERROR 
   EQUATE VALID TO 2         *STATUS VALID (NIC 8/9)
   EQUATE NPAT TO 06         *NUMBER OF DATA PATTERNS 
   EQUATE LOOPDEC TO 100     *LOOP DECODE BIT 
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/ 
* 
20 CALL 300                  *VERIFY PARAMETERS 
   MSG 1 TO DISPLAY, PRINT
   IF(AL.GE.4) GOTO 21       *ACCESS LEVEL CHECK
   MSG 6 (AL) TO PRINT, DISPLAY 
   EXIT 
* 
/        INITIALIZE.
* 
21 B0=155                    *TEST NUMBER 6D HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 30D                 *MODULE NUMBER 30D 
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 100B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 100B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 100B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 100B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 100B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 100B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 100B   4444 PATTERN 
   B5=0                      *BUFFER INDEX
   IF (B2.LT.4) B10=1        *STATIC PATTERNS 
   IF (B2.LT.10B) B10=12D    *SLIDING PATTERNS
   IF (B2.GE.10B) B10=100    *RANDOM PATTERNS 
25 B7 = 40B                  *FIRST 885 INTERFACE NUMBER
* 
/        PERFORM LOOP 885 DECODE TEST.
* 
40 B1=B1+1
44 B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
* 
/         SET LOOP 885 DECODE BIT IN NOC 1. 
* 
   B6 = LOOPDEC              *LOOPDEC BIT FOR NOC 1 
   B9 = 21
   OUT CH=1,B6,B7,ABT 70     *SET LOOPDEC + 885 NO. 
* 
/         LOOP DATA.
* 
   B12=OB(B5).AND.377 
   OUT CH=8,377B,B12,ABT 70  *SEND PATTERN
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ PATTERN
* 
/         CLEAR LOOP 885 DECODE BIT IN NOC 1. 
* 
   B9 = 21
   OUT CH=1,0,B7,ABT 70      *CLEAR LOOPDEC 
* 
/         COMPARE DATA. 
* 
   IF(SB(21).AND.VALID.EQ.0) ERROR 3/22 GOTO 67 
   IF (SB(22).NE.B12) GOTO 64 
   IF (SB(21).AND.BIPE.NE.0) ERROR 3/21 GOTO 67  *PARITY
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 25 WHILE (B5+1.LT.B10)   *END OF BUFFER LOOP
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/        ANALYZE DATA ERRORS
* 
64 B4=SB(22).XOR.B12
   MSG 5 (B12,SB(22),B4) TO LINE 7
* 
*         DATA ERROR ISOLATION ANALYSIS TABLE 
* 
*         2 3 4  B6  B6 2 3 4 
*         ------------------- 
*         - - -   0  0  - - - 
*         - - X   4  2  X - - 
*         - X -   3  3  - X - 
*         - X X   7  4  - - X 
*         X - -   2  5  X X - 
*         X - X   6  6  X - X 
*         X X -   5  7  - X X 
*         X X X   9  9  X X X 
* 
   B6=0 
   IF (B4.AND.7.NE.0) B6=2
   IF (B4.AND.70.NE.0) B6=B6+3
   IF (B4.AND.300.NE.0) B6=B6+4 
   IF (B6.GT.4) ERROR 3/1, GOTO 67
   IF (B6.EQ.2) ERROR 3/2, GOTO 67
   IF (B6.EQ.3) ERROR 3/3, GOTO 67
   ERROR 3/4, GOTO 67 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 30A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 370  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC30A,844HT(05),LOCK 
*   5.2.24.1 FHC30A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC30B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98M - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC30.
* 
*         BUFFERS USED- 
*         SAME AS FHC30.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC30 - LOOP 885 DECODE TEST (DC=5) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC30 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D001 HEX 
* 
10 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B04, B13, B01, B02, B03, AND A18. 
13 FORMAT B17,B04,B13,B14,B15,B16,B01,B02,B03,AND A18.
* 
/        ERROR NUMBER 6D002 HEX 
* 
14 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 0, 1, 2).
15 FORMAT B01, B04, B13, AND A18. 
16 FORMAT B14, B01, B04, B17, B13, AND A18. 
17 FORMAT 
* 
/        ERROR NUMBER 6D003 HEX 
* 
20 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 3, 4, 5).
21 FORMAT B02, B04, B13, AND A18. 
22 FORMAT B15, B02, B04, B17, B13, AND A18. 
23 FORMAT 
* 
/        ERROR NUMBER 6D004 HEX 
* 
24 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 6, 7)
25 FORMAT B03, B04, B13, AND A18. 
26 FORMAT B16, B03, B04, B17, B13, AND A18. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC30A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.4) EXIT TO 30B 
* 
/        ERROR NUMBER 6D001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
50 MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
* 
/        ERROR NUMBER 6D002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
* 
/        ERROR NUMBER 6D003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98M
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98M
* 
/        ERROR NUMBER 6D004 HEX 
* 
43 IF (EC.NE.4) GOTO 45 
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98M
53 MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98M
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC30B,844HT(05),LOCK 
*   5.2.24.2 FHC30B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98M - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC30.
* 
*         BUFFERS USED- 
*         SAME AS FHC30.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC30 - LOOP 885 DECODE TEST (DC=5) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC30 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D011 HEX 
* 
10 FORMAT DATA PARITY ERROR ON LOOP 885 DECODE. 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B03, B04, B13, AND A18. 
13 FORMAT B16, B03, B04, B13, AND A18.
* 
/         ERROR NUMBER 6D012 HEX
* 
14 FORMAT NO STATUS VALID ON LOOP 885 DECODE. 
15 FORMAT SUCCESSIVELY REPLACE CARD B04.
16 FORMAT 
17 FORMAT 
20 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC30B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.21) GOTO 45
   IF (EC.GT.22) GOTO 45
* 
/        ERROR NUMBER 6D011 HEX 
* 
40 IF (EC.NE.21) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
50 MSG 13 TO LINE 15
   MSG 20 TO LINE 16
   EXIT TO 98M
* 
/         ERROR NUMBER 6D012 HEX
* 
41 IF (EC.NE.22) GOTO 45
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC300,844HT(05),LOCK 
*   5.3.24.3 FHC300 - PARAMETER VERIFICATION
* 
*         PURPOSE-
*         FHC300 VERIFIES THAT APPROPRIATE PARAMETERS ARE SET 
*         TO RUN THE FHC3X SERIES OF MODULES. 
* 
*         METHOD- 
*         PARAMETERS ARE CHECKED FOR THREE TYPES OF ERRORS--
*         1.  UNUSED BITS BEING SET.
*         2.  DRIVE-ORIENTED PARAMETERS BEING SET (SINCE FHC
*               ONLY ACCESSES THE PRE-ALLOCATED AREA).
* 
*         ENTRY-
*         PARAMETERS P0 TO P9 ARE DESCRIBED IN MODULE FHC99A. 
* 
*         EXIT- 
*         NO SPECIAL EXIT CONDITIONS. 
* 
*         SUBMODULES REFERNCED- 
*         NONE
* 
*         REGISTERS USED- 
*         B1 - MESSAGE LINE INDEX 
*         B2 - MESSAGE FORMAT INDEX 
* 
*         BUFFERS USED- 
*         NONE
* 
*         KNOWN LIMITATIONS-
*         NONE
* 
* 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC300 - PARAMETER VERIFICATION (DC=5)
3  FORMAT CHECK P0 - NOT USED, SHOULD BE ZERO 
4  FORMAT CHECK P1 - NOT USED, SHOULD BE ZERO 
5  FORMAT CHECK P2 - NOT USED, SHOULD BE ZERO 
6  FORMAT CHECK P3 - NOT USED, SHOULD BE ZERO 
7  FORMAT CHECK P4 - UNUSED BITS ARE SET
10 FORMAT CHECK P5 - UNUSED BITS ARE SET
11 FORMAT CHECK P7 - NOT USED, SHOULD BE ZERO 
12 FORMAT CHECK P8 - UNUSED BITS ARE SET
13 FORMAT CHECK P9 - UNUSED BITS ARE SET
14 FORMAT 844 UNIT NUMBER ERROR.  SET UN=00 THRU 07.
15 FORMAT CHECK P8 - 844 OPTION NOT SET.
16 FORMAT CHECK P5 - DRIVE MODULES SHOULD NOT BE DISABLED 
24 FORMAT P0 - P4 *OCT *OCT *OCT *OCT *OCT
25 FORMAT P5 - P9 *OCT *OCT *OCT *OCT *OCT
26 FORMAT SUSPECT PARAMETER/UNIT NUMBER ENTRY ERROR 
27 FORMAT -PAUSE- FHC300 - *DECD WARNINGS POSTED. 
30 FORMAT PARAMETERS DESCRIBED IN MODULE FHC99A.
/ 
   EQUATE OPT844 TO 0020     *844 INTERFACE OPTION
   EQUATE OPT885 TO 0040     *885 INTERFACE OPTION
/ 
31 B1 = 14                   *SET MESSAGE LINE INDEX
   MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 2 TO DISPLAY, PRINT
   MSG 24 (P0,P1,P2,P3,P4) TO LINE 7
   MSG 25 (P5,P6,P7,P8,P9) TO LINE 10 
/ 
   B2 = 3 
   IF (P0.NE.0) GOSUB 70
/ 
   B2 = 4 
   IF (P1.NE.0) GOSUB 70
/ 
   B2 = 5 
   IF (P2.NE.0) GOSUB 70
/ 
   B2 = 6 
   IF (P3.NE.0) GOSUB 70
/ 
   B2 = 7 
   IF (P4.AND.3776B.NE.0) GOSUB 70
/ 
   B2 = 10
   IF (P5.AND.6726B.NE.0) GOSUB 70
/ 
   B2 = 16
   IF (P5.AND.1.NE.0) GOSUB 70
/ 
   B2 = 11
   IF (P7.NE.0) GOSUB 70
/ 
   B2 = 12
   IF (P8.AND.7400B.NE.0) GOSUB 70
/ 
   B2 = 13
   IF (P9.AND.7070B.NE.0) GOSUB 70
/ 
   B2 = 14
   IF (SB(63).AND.77B.GE.10B) GOSUB 70
/ 
   B2 = 15
   IF (P8.AND.OPT844.EQ.0) GOSUB 70 
/ 
   GOTO 76
/ 
70 MSG B2 TO LINE B1
   B1 = B1 + 1
   RETURN 
/ 
76 IF (B1.EQ.14) GOTO 77     *IF NO ERRORS
   B1 = B1 + 1
   MSG 30 TO LINE B1
   MSG 26 TO LINE 12
   B1 = B1 - 15 
   PICTURE
   MSG 27 (B1) TO DISPLAY, PRINT, DAYFILE 
   PAUSE
77 BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC31,844HT(05),LOCK
** 5.2.25 FHC31 - LOOP 885 BUS TEST (DC=5)
* 
*         PURPOSE-
*         FHC31 VERIFIES THAT DATA PATTERNS CAN BE LOOPED THROUGH THE 
*         885 INTERFACE BOARDS USING THE LOOP 885 BUS FEATURE.
*         THIS MODULE ALSO CHECK BUS IN/OUT PARITY. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 844 (DEVICE CODE 5) IS ASSIGNED TO 
*         THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR PATTERNS 0 THROUGH 7.
*           FILL BUFFER 
*           DO FOR EACH WORD IN BUFFER
*             DO FOR ALL PARITY STATES. 
*               DO FOR 885 INTERFACE ASSIGNED 
*                 SET THE LOOP 885 BUS BIT AND BUS PARITY.
*                 OUTPUT WORD ON NOC 8
*                 VERIFY THAT NIC 8 CONTAINS THE CORRECT WORD 
*                 CLEAR LOOP 885 BUS BIT. 
*                 CHECK STATUS VALID AND BUS IN PARITY. 
*                 ISOLATE DATA ERRORS BASED ON BAD BIT POSITION 
*               ENDO
*             ENDO
*           ENDO
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC370 - REPORT UNEXPECTED ERRORS 
*         FHC31A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - BUFFER INDEX 
*         B6 - TEMPORARY STORAGE
*         B7 - TEMPORARY STORAGE
*         B8 - TEMPORARY STARAGE
*         B9 - ABORT TYPE INDEX 
*         B10- LENGTH OF BUFFER LOOP
*         B11- FORCE PARITY INDEX 
*         B12- CURRENT DATA PATTERN 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  CONTAINS WORDS TO BE LOOPED
* 
1  FORMAT FHC31 - LOOP 885 BUS TEST (DC=5)
2  FORMAT FHC31 - LC=*DECD, EC=*DECD
4  FORMAT FHC31 ERROR(S) = *DECD
5  FORMAT DATA ERROR    E*OCT  A*OCT  D*OCT 
6  FORMAT // FHC31 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BIPE TO 1          *BUS IN PARITY ERROR 
   EQUATE VALID TO 2         *STATUS VALID (NIC 8/9)
   EQUATE NPAT TO 6          *NUMBER OF DATA PATTERNS 
   EQUATE FBIP TO 4          *FORCE BUSIN PARITY
   EQUATE FBOP TO 10         *FORCE BUSOUT PARITY 
   EQUATE LOOPBUS TO 200     *LOOP BUS BIT
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF(AL.GE.4) GOTO 21       *ACCESS LEVEL CHECK
   MSG 6 (AL) TO PRINT, DISPLAY 
   EXIT 
* 
/        INITIALIZE.
* 
21 B0=155                    *TEST NUMBER 6D HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 31D                 *MODULE NUMBER 31D 
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 100B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 100B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 100B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 100B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 100B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 100B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 100B   4444 PATTERN 
* 
   B5=0                      *BUFFER INDEX
   IF (B2.LT.4) B10=1        *STATIC PATTERNS 
   IF (B2.LT.10B) B10=12D    *SLIDING PATTERNS
25 B11 = 0                   *INITIALIZE PARITY INDEX 
* 
/        PERFORM LOOP 885 BUS TEST. 
* 
40 B1=B1+1
   B7 = 40                   *FIRST 885 INTERFACE NUMBER
44 B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
* 
/         DETERMINE PARITY TO FORCE.
* 
   IF(B11.EQ.0) B6=LOOPBUS   *NONE FORCED 
   IF(B11.EQ.1) B6=LOOPBUS+FBIP  *BUSIN PARITY
   IF(B11.EQ.2) B6=LOOPBUS+FBOP  *BUSOUT PARITY 
* 
/         SET LOOP 885 BUS BIT AND BUS PARITY.
* 
   B9 = 21
   OUT CH=1,B6,B7,ABT 70     *SET LOOPBUS + 885 NO. 
* 
/         LOOP DATA.
* 
   B12=OB(B5).AND.377 
   OUT CH=8,B12,377B,ABT 70  *SEND PATTERN
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ PATTERN
* 
/         CLEAR LOOP 885 BUS BIT IN NOC 1.
* 
   B9 = 21
   OUT CH=1,0,B7,ABT 70     *CLEAR LOOPBUS + FORCE PARITY 
* 
/         COMPARE DATA. 
* 
   IF(SB(21).AND.VALID.EQ.0) ERROR 3/26 GOTO 67 
   IF (SB(22).NE.B12) GOTO 64 
   IF(B11.EQ.0) GOTO 50 
   IF(SB(21).AND.BIPE.EQ.0) ERROR 3/27 GOTO 67  *PARITY 
   GOTO 60
50 IF(SB(21).AND.BIPE.NE.0) ERROR 3/25 GOTO 67  *PARITY 
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 40 WHILE (B11+1.LE.2)    *END OF PARITY LOOP
   GOTO 25 WHILE (B5+1.LT.B10)   *END OF BUFFER LOOP
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/        ANALYZE DATA ERRORS
* 
64 B4=SB(22).XOR.B12
   MSG 5 (B12,SB(22),B4) TO LINE 7
* 
*         DATA ERROR ISOLATION ANALYSIS TABLE 
* 
*         2 3 4  B6  B6 2 3 4 
*         ------------------- 
*         - - -   0  0  - - - 
*         - - X   4  2  X - - 
*         - X -   3  3  - X - 
*         - X X   7  4  - - X 
*         X - -   2  5  X X - 
*         X - X   6  6  X - X 
*         X X -   5  7  - X X 
*         X X X   9  9  X X X 
* 
   B6=0 
   IF (B4.AND.7.NE.0) B6=2
   IF (B4.AND.70.NE.0) B6=B6+3
   IF (B4.AND.300.NE.0) B6=B6+4 
   IF (B6.GT.4) ERROR 3/5, GOTO 67
   IF (B6.EQ.2) ERROR 3/6, GOTO 67
   IF (B6.EQ.3) ERROR 3/7, GOTO 67
   ERROR 3/10, GOTO 67
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 31A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 370  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC31A,844HT(05),LOCK 
*   5.2.25.1 FHC31A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC31B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98M - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC31.
* 
*         BUFFERS USED- 
*         SAME AS FHC31.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC31 - LOOP 885 BUS TEST (DC=5)
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC31 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D005 HEX 
* 
10 FORMAT DATA MISCOMPARE ON LOOP 885 BUS 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B04, B13, B01, B02, B03, AND A18. 
13 FORMAT B17,B04,B13,B14,B15,B16,B01,B02,B03,AND A18.
* 
/        ERROR NUMBER 6D006 HEX 
* 
14 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 0, 1, 2). 
15 FORMAT B01, B04, B13, AND A18. 
16 FORMAT B14, B01, B04, B17, B13, AND A18. 
17 FORMAT 
* 
/        ERROR NUMBER 6D007 HEX 
* 
20 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 3, 4, 5). 
21 FORMAT B02, B04, B13, AND A18. 
22 FORMAT B15, B02, B04, B17, B13, AND A18. 
23 FORMAT 
* 
/        ERROR NUMBER 6D008 HEX 
* 
24 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 6, 7) 
25 FORMAT B03, B04, B13, AND A18. 
26 FORMAT B16, B03, B04, B17, B13, AND A18. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC31A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.5) GOTO 45 
   IF (EC.GT.10) EXIT TO 31B
* 
/        ERROR NUMBER 6D005 HEX 
* 
40 IF (EC.NE.5) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
50 MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
* 
/        ERROR NUMBER 6D006 HEX 
* 
41 IF (EC.NE.6) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
* 
/        ERROR NUMBER 6D007 HEX 
* 
42 IF (EC.NE.7) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98M
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98M
* 
/        ERROR NUMBER 6D008 HEX 
* 
43 IF (EC.NE.10) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98M
53 MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98M
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC31B,844HT(05),LOCK 
*   5.2.25.2 FHC31B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98M - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC31.
* 
*         BUFFERS USED- 
*         SAME AS FHC31.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC31 - LOOP 885 BUS TEST (DC=5)
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC31 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D015 HEX 
* 
10 FORMAT DATA PARITY ERROR ON LOOP 885 BUS 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B03, B04, B13, AND A18. 
13 FORMAT B16, B03, B04, B13, AND A18.
* 
/         ERROR NUMBER 6D016 HEX
* 
14 FORMAT NO STATUS VALID ON LOOP 885 BUS.
15 FORMAT SUCCESSIVELY REPLACE CARD B04.
16 FORMAT 
17 FORMAT 
* 
/         ERROR NUMBER 6D017 HEX
* 
20 FORMAT NO STATUS PARITY ERROR ON LOOP 885 BUS. 
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT B04, B03, A18, AND A20. 
23 FORMAT 
24 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC31B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.25) GOTO 45
   IF (EC.GT.27) GOTO 45
* 
/        ERROR NUMBER 6D015 HEX 
* 
40 IF (EC.NE.25) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
50 MSG 13 TO LINE 15
   MSG 24 TO LINE 16
   EXIT TO 98M
* 
/         ERROR NUMBER 6D016 HEX
* 
41 IF(EC.NE.26) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
* 
/         ERROR NUMBER 6D017 HEX
* 
42 IF (EC.NE.27B) GOTO 45 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98M
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC32,844HT(05),LOCK
** 5.2.26 FHC32 - LOOP 885 WRITE/READ/TAG GATE (DC=5) 
* 
*         PURPOSE-
*         FHC32 VERIFIES THE ABILITY TO LOOP GATING SIGNALS 
*         THROUGH THE 885 INTERFACE BOARDS. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 844 (DEVICE CODE 5) IS ASSIGNED TO 
*         THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR 885 INTERFACE ASSIGNED 
*           MASTER CLEAR CONTROL LOGIC. 
*           SELECT DEVICE INTERFACE ON NOC 1. 
*           SET SKIP SECTOR MARK. 
*           SEND READ GATE
*           CHECK READ GATE STATUS
*           SEND WRITE GATE AND W/R ECC 
*           CHECK WRITE GATE STATUS 
*           SEND READ GATE AND FAST START 
*           CHECK TAG GATE STATUS 
*           MASTER CLEAR CONTROL LOGIC. 
*           CHECK STATUS VALID. 
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC370 - REPORT UNEXPECTED ERRORS 
*         FHC32A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B3 - ERROR COUNT
*         B4 - NOC 4 DATA 
*         B5 - NOC 5 DATA 
*         B7 - TEMPORARY STORAGE
*         B8 - TEMPORARY STARAGE
*         B9 - ABORT TYPE INDEX 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         NONE
* 
* 
1  FORMAT FHC32 - LOOP 885 WRT/READ/TAG GATE (DC=5) 
2  FORMAT FHC32 - LC=*DECD, EC=*DECD
4  FORMAT FHC32 ERROR(S) = *DECD
6  FORMAT // FHC32 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
7  FORMAT // FHC32 NOT EXECUTED 844 OPTION SELECTED //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE OPT844 TO 20       *844 INTERFACE OPTION
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/         NORMAL CHANNEL EQUATES
* 
   EQUATE VALID TO 2         *STATUS VALID (NIC 8/9)
   EQUATE WRG9 TO 4 
   EQUATE RDG9 TO 2 
   EQUATE TAG9 TO 1 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF(AL.GE.4) GOTO 21       *ACCESS LEVEL CHECK
   MSG 6 (AL) TO PRINT, DISPLAY 
   EXIT 
* 
/        INITIALIZE.
* 
21 IF(P8.AND.OPT844.EQ.0) GOTO 31 
   MSG 7 TO PRINT, DISPLAY   *MODULE NOT EXECUTED IF 844OPT IN
   EXIT 
31 B0=155                    *TEST NUMBER 60 HEX
   B1=0                      *LOOP COUNT
   B3=0                      *ERROR COUNT 
   B13 = 32D                 *MODULE NUMBER 32D 
   B7=40                     *FIRST 885 INTERFACE NUMBER
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
* 
/        PERFORM LOOP 885 WRITE/READ/TAG GATE TEST. 
* 
40 B1=B1+1
44 B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
   B9 = 23
   FLAG PULSE CH=1, ABT 70   *MASTER CLEAR CONTROL LOGIC
   B9 = 21
   OUT CH=1,0,B7,ABT 70      *ENABLE 885 INTERFACE
   OUT CH=2,0,100B,ABT 70    *SKIP SECTOR MARK
* 
/         PERFORM LOOP 885 READ GATE TEST 
* 
   B9 = 22
   CONTROL 377,377,100,4,EXECUTE,ABT 70  *SEND READ GATE
   GOSUB 62                  *READ CHANNEL STATUS 
   IF (SB(24).AND.RDG9.EQ.0) ERROR 3/11 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.RDG9.NE.0) ERROR 3/14 GOTO 67 
* 
/         PERFORM LOOP 885 WRITE GATE TEST
* 
   B9 = 22
   CONTROL 377,377,104,10,EXECUTE,ABT 70  *SEND WRITE GATE
   GOSUB 62                  *READ CHANNEL STATUS 
   IF (SB(24).AND.WRG9.EQ.0) ERROR 3/12 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.WRG9.NE.0) ERROR 3/15 GOTO 67 
* 
/         PERFORM LOOP 885 TAG GATE TEST
* 
   B9 = 22
   CONTROL 377,377,100,24,EXECUTE,ABT 70  *SEND TAG GATE
   GOSUB 62                  *READ CHANNEL STATUS 
   IF (SB(24).AND.TAG9.EQ.0) ERROR 3/13 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.TAG9.NE.0) ERROR 3/16 GOTO 67 
* 
/         CHECK FOR STATUS VALID STUCK-AT-ONE 
* 
   B9 = 23
   FLAG PULSE CH=1,ABT 70    *MASTER CLEAR
   B9 = 20
   STATUS CHANNEL,ABT 70     *READ CHANNEL STATUS 
   IF (SB(21).AND.VALID.NE.0) ERROR 3/17 GOTO 67
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 77                       *TERMINATE MODULE
* 
/         CHANNEL STATUS SUBROUTINE 
* 
62 B9 = 20
   STATUS CHANNEL, ABT 64    *READ CHANNEL STATUS 
   RETURN 
* 
/         TERMINATE CONTROL WORD SEQUENCE 
* 
63 B9 = 21
   OUT CH=4,0,0,ABT 64       *CLEAR NOC 4 
   B9=23
   FLAG PULSE CH=5,ABT 64    *TERMINATE CONTROL 
   B9 = 21
   OUT CH=5,0,0,ABT 64       *CLEAR NOC 5 
   B9 = 20
   STATUS CHANNEL, ABT 64    *READ CHANNEL STATUS 
   RETURN 
64 ENDSUB GOTO 70 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 32A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 370  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC32A,844HT(05),LOCK 
*   5.2.26.1 FHC32A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC32B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98M - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC32.
* 
*         BUFFERS USED- 
*         SAME AS FHC32.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC32 - LOOP 885 WRT/READ/TAG GATE (DC=5) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC32 - LINE *OCT - ERROR NUMBER *H*HE
6  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6D009 HEX 
* 
10 FORMAT LOOP READ GATE A CONSTANT ZERO. 
/         SUCCESSIVELY REPLACE CARDS
11 FORMAT B02, B04, B21, B13, 
12 FORMAT B15,B02,B17,B04,B21,B13,
13 FORMAT B27, B22, A19, AND A21. 
* 
/        ERROR NUMBER 6D00A HEX 
* 
14 FORMAT LOOP WRITE GATE A CONSTANT ZERO.
/         SUCCESSIVELY REPLACE CARDS
15 FORMAT B01, B04, B21, B13, 
16 FORMAT B14,B01,B17,B04,B21,B13,
17 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        ERROR NUMBER 6D00B HEX 
* 
20 FORMAT LOOP TAG GATE A CONSTANT ZERO.
/         SUCCESSIVELY REPLACE CARDS
21 FORMAT B03, B04, B13, B27, AND B26.
22 FORMAT B16, B03, B17, B04, B13, B27, AND B26.
23 FORMAT 
* 
/        ERROR NUMBER 6D00C HEX 
* 
24 FORMAT LOOP READ GATE A CONSTANT ONE.
/         SUCCESSIVELY REPLACE CARDS
25 FORMAT B02, B04, B21, B13, 
26 FORMAT B15,B02,B17,B04,B21,B13,
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC32A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.11) GOTO 45
   IF (EC.GT.14) EXIT TO 32B
* 
/        ERROR NUMBER 6D009 HEX 
* 
40 IF (EC.NE.11) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 6 TO LINE 13 
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 11 TO LINE 14
   MSG 13 TO LINE 15
   EXIT TO 98M
50 MSG 12 TO LINE 14
   MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
* 
/        ERROR NUMBER 6D00A HEX 
* 
41 IF (EC.NE.12) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98M
51 MSG 16 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98M
* 
/        ERROR NUMBER 6D00B HEX 
* 
42 IF (EC.NE.13) GOTO 43
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98M
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98M
* 
/        ERROR NUMBER 6D00C HEX 
* 
43 IF (EC.NE.14) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98M
53 MSG 26 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98M
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC32B,844HT(05),LOCK 
*   5.2.26.2 FHC32B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98M - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC32.
* 
*         BUFFERS USED- 
*         SAME AS FHC32.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC32 - LOOP 885 WRT/READ/TAG GATE (DC=5) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC32 - LINE *OCT - ERROR NUMBER *H*HE
6  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6D00D HEX 
* 
10 FORMAT LOOP WRITE GATE A CONSTANT ONE. 
/         SUCCESSIVELY REPLACE CARDS
11 FORMAT B01, B04, B21, B13, 
12 FORMAT B14,B01,B17,B04,B21,B13,
13 FORMAT B27, B22, A19, AND A21. 
* 
/        ERROR NUMBER 6D00E HEX 
* 
14 FORMAT LOOP TAG GATE A CONSTANT ONE. 
/         SUCCESSIVELY REPLACE CARDS
15 FORMAT B03, B04, B13, B27, AND B26.
16 FORMAT B16, B03, B17, B04, B13, B27, AND B26.
17 FORMAT 
* 
/         ERROR NUMBER 6D00F HEX
* 
20 FORMAT STATUS VALID SET AFTER MASTER CLEAR.
21 FORMAT SUCCESSIVELY REPLACE CARD B04.
22 FORMAT 
23 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC32B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.15) GOTO 45
   IF (EC.GT.17) GOTO 45
* 
/        ERROR NUMBER 6D00D HEX 
* 
40 IF (EC.NE.15) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 11 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98M
50 MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98M
* 
/        ERROR NUMBER 6D00E HEX 
* 
41 IF (EC.NE.16) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
* 
/         ERROR NUMBER 6D00F HEX
* 
42 IF (EC.NE.17B) GOTO 45 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98M
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC35,844HT(05),LOCK
** 5.2.27 FHC35 - ECC REGISTER TEST (DC=5)
* 
*         PURPOSE-
*         FHC35 VERIFIES THE ABILITY OF THE ECC REGISTER TO RECEIVE,
*         RETAIN, AND RETURN ASSORTED DATA PATTERNS.
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 844 (DEVICE CODE 5) IS ASSIGNED TO 
*         THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           CLEAR ECC REGISTER BY SENDING FLAG PULSE 3
*           LOAD DATA PATTERN INTO NOC-S 12, 13, AND 14 
*           DO FOR ALL 4 HEADS
*             SELECT HEAD ON NOC 3. 
*             LOAD ECC REGISTER BY SENDING FLAG PULSE 11
*             READ ECC REGISTER 
*             COMPARE CONTENTS WITH DATA PATTERN
*           ENDO
*         ENDO
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC370 - REPORT UNEXPECTED ERRORS 
*         FHC35A - REPORT EXPECTED ERRORS 
*         FHC98I - GENERATE 48-BIT DATA PATTERNS
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - TEMPORARY STORAGE
*         B6 - TEMPORARY STORAGE
*         B7 - HEAD INDEX 
*         B8 - REGISTER INDEX 
*         B9 - ABORT TYPE INDEX 
*         B14- TEMPORARY STORAGE
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(3) - OB(10) = 8-BIT DATA RECIEVED
*         OB(11) - OB(14) = PACKED DATA RECIEVED
*         OB(100) - OB(217) = 48-BIT DATA PATTERNS
* 
1  FORMAT FHC35 - ECC REGISTER TEST (DC=5)
2  FORMAT FHC35 - LC=*DECD, EC=*DECD
4  FORMAT FHC35 ERROR(S) = *DECD
5  FORMAT EXPECTED  *OCT *OCT *OCT *OCT 
6  FORMAT ACTUAL    *OCT *OCT *OCT *OCT 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPOL TO 72D        *NUMBER OF POLY. PATTERNS
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/        INITIALIZE.
* 
21 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 35D                 *MODULE NUMBER 35D 
   CALL 98I                  *GENERATE 48 BIT DATA PATTERN
* 
/        PERFORM ECC REGISTER TEST. 
* 
40 B1=B1+1
   B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
* 
/         CLEAR REGISTER
* 
   B9 = 23
   FLAG PULSE CH=3, ABT 70   *CLEAR ECC REGISTER
* 
/         PACK DATA 
* 
   B5=OB(B2+100).RS.4        *BITS 00 TO 07 
   B14=OB(B2+100).AND.17.LS.4 
   B6=OB(B2+101).RS.8+B14    *BITS 08 TO 15 
   B9 = 21
   OUT CH=12D,B5,B6,ABT 70   *POLYNOMIAL PARCEL I 
* 
   B5=OB(B2+101).AND.377     *BITS 16 TO 23 
   B6=OB(B2+102).RS.4        *BITS 24 TO 31 
   OUT CH=13D,B5,B6,ABT 70   *POLYNOMIAL PARCEL II
* 
   B14=OB(B2+102).AND.17.LS.4 
   B5=OB(B2+103).RS.8+B14    *BITS 32 TO 39 
   B6=OB(B2+103).AND.377     *BITS 40 TO 47 
   OUT CH=14D,B5,B6,ABT 70   *POLYNOMIAL PARCEL III 
* 
/         LOAD REGISTER 
* 
   B7 = 0                    *INITIALIZE HEAD INDEX 
50 B8 = B7.LS.2              *JUSTIFY HEAD
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT HEAD 
   B9 = 23
   FLAG PULSE CH=11D,ABT 70  *LOAD ECC REGISTER 
* 
/         READ REGISTER 
* 
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 00 TO 15
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(3)=SB(7)
   OB(4)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 16 TO 31
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(5)=SB(7)
   OB(6)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 32 TO 47
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(7)=SB(7)
   OB(10)=SB(8) 
* 
/         UNPACK DATA RECEIVED FROM ECC REGISTER
* 
   B14=OB(3).LS.4 
   OB(11)=OB(4).RS.4+B14
   B14=OB(4).AND.17.LS.8
   OB(12)=OB(5)+B14 
   B14=OB(6).LS.4 
   OB(13)=OB(7).RS.4+B14
   B14=OB(7).AND.17.LS.8
   OB(14)=OB(10)+B14
* 
/         COMPARE DATA
* 
   WC = 4                    *INITIALIZE WORD COUNT 
   COMPARE OB(11) TO OB(B2+100) FOR WC, ABT 65
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 50 WHILE (B7+1.LT.4)
   GOTO 40 WHILE (B2+4.LE.NPOL)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/         DISPLAY DATA ERRORS 
* 
65 ERROR 3/1
   MSG 5 4 WORDS FROM OB(B2+100) TO LINE 7
   MSG 6 4 WORDS FROM OB(11) TO LINE 10 
*  GOTO 67
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 35A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 370  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC35A,844HT(05),LOCK 
*   5.2.27.1 FHC35A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC35.
* 
*         BUFFERS USED- 
*         SAME AS FHC35.
* 
* 
* 
/         COMMON MESSAGES 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC35 - ECC REGISTER TEST (DC=5)
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC*D - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT FHC36 - ECC REGISTER CLEAR TEST (DC=5)
* 
/         ERROR NUMBER 6C001/6C005 HEX
* 
10 FORMAT BAD DATA PATTERN READ BACK FROM ECC REGISTER
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT A*D, A17, A20, A21, A*D, A*D, A*D, AND B*D. 
13 FORMAT 
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC*DA - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
* 
* 
31 MSG 1 TO LINE 1
   IF (B13.EQ.35D) MSG 2 TO LINE 2
   IF (B13.EQ.36D) MSG 5 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(B13,EA,B0,EC) TO LINE 5
* 
* 
* 
   IF (B0.NE.154) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.10) GOTO 45
* 
/         ERROR NUMBER 6C001/6C005 HEX
* 
40 IF (EC.EQ.1) GOTO 41 
   IF (EC.NE.5) GOTO 45 
41 MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   IF(B7.EQ.0) MSG 12 (12D,11D,10D,09D,22D) TO LINE 15
   IF(B7.EQ.1) MSG 12 (11D,12D,10D,09D,23D) TO LINE 15
   IF(B7.EQ.2) MSG 12 (10D,12D,11D,09D,24D) TO LINE 15
   IF(B7.EQ.3) MSG 12 (09D,12D,11D,10D,25D) TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
45 MSG 30(B13,EA,B0,EC,EM) TO LINE 12 
* 
* 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC36,844HT(05),LOCK
** 5.2.28 FHC36 - ECC REGISTER CLEAR TEST (DC=5)
* 
*         PURPOSE-
*         FHC36 VERIFIES THE ABILITY OF THE PROCESSOR TO CLEAR THE
*         CONTENTS OF THE ECC REGISTER. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 844 (DEVICE CODE 5) IS ASSIGNED TO 
*         THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           LOAD DATA PATTERN INTO NOC-S 12, 13, AND 14 
*           DO FOR ALL 4 HEADS
*             SELECT HEAD ON NOC 3. 
*             LOAD ECC REGISTER BY SENDING FLAG PULSE 11
*             CLEAR ECC REGISTER BY SENDING FLAG PULSE 3
*             READ ECC REGISTER 
*             VERIFY THAT CONTENTS ARE ZERO 
*           ENDO
*         ENDO
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC370 - REPORT UNEXPECTED ERRORS 
*         FHC35A - REPORT EXPECTED ERRORS 
*         FHC98I - GENERATE 48-BIT DATA PATTERNS
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - TEMPORARY STORAGE
*         B6 - TEMPORARY STORAGE
*         B7 - HEAD INDEX 
*         B8 - REGISTER INDEX 
*         B9 - ABORT TYPE INDEX 
*         B14- TEMPORARY STORAGE
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         IB(0) THROUGH IB(3) ALL CONTAIN ZEROES. 
*         OB(100) - OB(217) = 48-BIT DATA PATTERNS
* 
* 
*         REMARKS-
* 
*         KNOWN LIMITATIONS-
* 
1  FORMAT FHC36 - ECC REGISTER CLEAR TEST (DC=5)
2  FORMAT FHC36 - LC=*DECD, EC=*DECD
4  FORMAT FHC36 ERROR(S) = *DECD
5  FORMAT EXPECTED  *OCT *OCT *OCT *OCT 
6  FORMAT ACTUAL    *OCT *OCT *OCT *OCT 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPOL TO 72D        *NUMBER OF POLY. PATTERNS
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/         INITIALIZE. 
* 
21 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 36D                 *MODULE NUMBER 36D 
   CALL 98I                  *GENERATE 48 BIT DATA PATTERN
* 
/         PERFORM ECC REGISTER CLEAR TEST.
* 
40 B1=B1+1
   B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
   B5=OB(B2+100).RS.4        *BITS 00 TO 07 
   B14=OB(B2+100).AND.17.LS.4 
   B6=OB(B2+101).RS.8+B14    *BITS 08 TO 15 
   B9 = 21
   OUT CH=12D,B5,B6,ABT 70   *POLYNOMIAL PARCEL I 
* 
   B5=OB(B2+101).AND.377     *BITS 16 TO 23 
   B6=OB(B2+102).RS.4        *BITS 24 TO 31 
   OUT CH=13D,B5,B6,ABT 70   *POLYNOMIAL PARCEL II
* 
   B14=OB(B2+102).AND.17.LS.4 
   B5=OB(B2+103).RS.8+B14    *BITS 32 TO 39 
   B6=OB(B2+103).AND.377     *BITS 40 TO 47 
   OUT CH=14D,B5,B6,ABT 70   *POLYNOMIAL PARCEL III 
* 
/         LOAD REGISTER 
* 
   B7 = 0                    *INITIALIZE HEAD INDEX 
50 B8 = B7.LS.2              *JUSTIFY HEAD
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT HEAD 
   B9 = 23
   FLAG PULSE CH=11D,ABT 70  *LOAD ECC REGISTER 
* 
/         CLEAR REGISTER
* 
   FLAG PULSE CH=3,ABT 70    *CLEAR ECC REGISTER
* 
/         READ REGISTER 
* 
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 00 TO 15
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(3)=SB(7)
   OB(4)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 16 TO 31
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(5)=SB(7)
   OB(6)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 32 TO 47
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(7)=SB(7)
   OB(10)=SB(8) 
* 
/         UNPACK DATA RECEIVED FROM ECC REGISTER
* 
   B14=OB(3).LS.4 
   OB(11)=OB(4).RS.4+B14
   B14=OB(4).AND.17.LS.8
   OB(12)=OB(5)+B14 
   B14=OB(6).LS.4 
   OB(13)=OB(7).RS.4+B14
   B14=OB(7).AND.17.LS.8
   OB(14)=OB(10)+B14
* 
/         COMPARE DATA
* 
   WC = 4                    *INITIALIZE WORD COUNT 
   COMPARE OB(11) TO IB(0) FOR WC, ABT 65 
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 50 WHILE (B7+1.LT.4)
   GOTO 40 WHILE (B2+4.LE.NPOL)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/         DISPLAY DATA ERRORS 
* 
65 ERROR 3/5
   MSG 5 4 WORDS FROM IB(0) TO LINE 7 
   MSG 6 4 WORDS FROM OB(11) TO LINE 10 
*  GOTO 67
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 35A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 370  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/         TERMINATE.
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC37,844HT(05),LOCK
** 5.2.29 FHC37 - ECC FUNCTIONAL TEST (DC=5)
* 
*         PURPOSE-
*         FHC37 VERIFIES THAT THE ECC LOGIC FUNCTIONS PROPERLY. 
*         IT USES THE READ FUNCTION TO CHECK THE CHECKWORD OF ALL 
*         THE SECTORS ON THE CE (PRE-ALLOCATED) CYLINDER (1465B). 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 844 (DEVICE CODE 5) IS ASSIGNED TO 
*         THE DIAGNOSTIC. 
* 
*         METHOD- 
*         RESERVE CONTROLLER
*         CHECK DRIVE SELECTED AND RESERVED STATUS. 
*         RESERVE DRIVE.
*         CHECK GENERAL AND DETAILED STATUS.
*         WRITE 24 SECTORS. 
*         READ 24 SECTORS.
*         IF READ OR WRITE ABORT, CHECK GENERAL AND DETAILED STATUS.
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC370 - REPORT UNEXPECTED ERRORS 
*         FHC37A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - NUMBER OF SECTORS TO READ
*         B6 - CYLINDER ADDRESS (1465B) 
*         B7 - TRACK ADDRESS (0)
*         B8 - SECTOR ADDRESS (0) 
*         B9 - ABORT TYPE INDEX 
*         B10- TEMPORARY STORAGE
*         B11- TEMPORARY STORAGE
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
* 
*         REMARKS-
* 
*         KNOWN LIMITATIONS-
* 
1  FORMAT FHC37 - ECC FUNCTIONAL TEST (DC=5)
2  FORMAT FHC37 - LC=*DECD, EC=*DECD
4  FORMAT FHC37 ERROR(S) = *DECD
5  FORMAT // FHC37 NOT EXECUTED, NEEDS AL.LT.21B // 
6  FORMAT // FHC37 DRIVES DISABLED, P5=XXX1 //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE DSR TO 20B         *DRIVE SELECTED AND RESERVED 
* 
/         CHECK FOR DRIVES DISABLED.
* 
20 MSG 1 TO DISPLAY, PRINT
   IF (P5.AND.1.EQ.0) GOTO 21 
   MSG 6 TO DISPLAY, PRINT
   EXIT 
* 
/         CHECK FOR AL.LT.21
* 
21 IF (AL.LT.21) GOTO 22
   MSG 5 TO DISPLAY, PRINT
   EXIT 
* 
/         INITIALIZE. 
* 
22 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B3=0                      *ERROR COUNT 
   B13 = 37D                 *MODULE NUMBER 37D 
   B6=1465B                  *CYLINDER
* 
/         TEST DRIVE SELECTED AND RESERVED HARDWARE.
* 
40 B1 = B1 + 1               *INCREMENT LOOP COUNTER
   B9 = 13
   RES CONTROLLER, ABT 70 
   B9 = 23
   FLAG PULSE CH=1,ABT 70    *MASTER CLEAR CONTROLLER 
   B9 = 20
   STATUS CHANNEL, ABT 70    *COPY CHANNEL STATUS 
   IF(SB(25).AND.DSR.NE.0) ERROR 3/12, GOTO 67
* 
/         RESERVE DRIVE, CHECK FOR MALFUNCTION. 
* 
   B9 = 5 
   RES DRIVE, ABT 41         *RESERVE DRIVE TEST
   GOTO 43
41 MSG EM TO LINE 7 
   IF(SB(0).EQ.10) ERROR 3/15, GOTO 67
   IF(SB(0).NE.5020B) GOTO 42 
   IF(SB(15).AND.377.EQ.0) GOTO 70
   IF(SB(16).AND.32.EQ.20) ERROR 3/16, GOTO 67
42 IF(SB(0).NE.2) GOTO 70 
   IF(SB(15).AND.1000.NE.0) ERROR 17/17, GOTO 67
   GOTO 70
* 
/         WRITE 24 SECTORS. 
* 
43 B7 = 0                    *TRACK 
   B8=0                      *SECTOR
   B5=24D                    *NUMBER OF SECTORS 
   B9 = 14
   WRITE B5 SECTORS AT CYL B6, TRK B7, SEC B8, ABT 50 
* 
/         READ 24 SECTORS.
* 
   B7=0                      *TRACK 
   B8=0                      *SECTOR
   B5=24D                    *NUMBER OF SECTORS 
   B9 = 15
   READ B5 SECTORS AT CYL B6, TRK B7, SEC B8, ABT 50
* 
/         FINALIZE. 
* 
   IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 77                       *TERMINATE MODULE
* 
/         PROCESS ABORT ON WRITE OR READ COMMAND. 
* 
50 IF (LF.AND.776.NE.4) GOTO 51       *IF ABT AFTER STATUS
   B10 = B9 
   B9 = 16
   STATUS GENERAL, ABT 70             *GENERAL STATUS 
   B9 = 17
   STATUS DETAIL, ABT 70              *DETAILED STATUS
   B9 = B10 
51 B5 = 0 
   IF(SB(25) NE 0) B5=25              *IF RETRY ATTEMPTED 
   MSG EM TO LINE 7 
   IF(SB(B5+2).AND.4000.NE.0) ERROR 7/11, GOTO 67 
   IF(SB(B5+1).AND.10.NE.0) ERROR 3/13, GOTO 67 
   IF(SB(B5+2).AND.1000.NE.0) ERROR 10/11, GOTO 67
   IF(SB(B5+21).AND.4.NE.0) ERROR 3/14, GOTO 67 
   IF(SB(B5).NE.5000B) GOTO 70
   IF(SB(B5+20).AND.4000.NE.0) ERROR 15/20, GOTO 67 
   IF(SB(B5+20).AND.40.NE.0) ERROR 16/17, GOTO 67 
   GOTO 70
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 37A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 370  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC37A,844HT(05),LOCK 
*   5.2.29.1 FHC37A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC37B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98E - DISPLAY DETAILED STATUS. 
*         FHC98M - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC37.
* 
*         BUFFERS USED- 
*         SAME AS FHC37.
* 
* 
* 
*        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC37 - ECC FUNCTIONAL TEST (DC=5)
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR F844
4  FORMAT FHC37 - LINE *OCT - ERROR NUMBER *H*HE
* 
/         ERROR NUMBER 6C009 HEX
* 
7  FORMAT ADDRESS CHECKWORD ERROR 
10 FORMAT DATA CHECKWORD ERROR
11 FORMAT IF THE CE CYLINDER IS KNOWN TO BE WITHOUT FLAW AND
12 FORMAT PROPERLY FORMATTED, SUCCESSIVELY REPLACE CARDS
13 FORMAT A*D, B*D, B20, A17, AND A21.
* 
/         ERROR NUMBER 6C00A HEX
* 
14 FORMAT DRIVE SELECTED AND RESERVED STATUS STUCK-AT-ONE 
15 FORMAT SUCCESSIVELY REPLACE CARDS B06, B13, AND A18. 
16 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
17 FORMAT 
* 
/         ERROR NUMBER 6C00B HEX
* 
20 FORMAT ADDRESS ERROR (DETAILED STATUS WORD 1)
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT B27, B26, B20, B19, AND A20.
23 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/         ERROR NUMBER 6C00C HEX
* 
24 FORMAT CONTROLLER CHANNEL ACTIVE ERROR 
25 FORMAT SUCCESSIVELY REPLACE CARDS
26 FORMAT A15, B22, B19, AND R/T CARD(A01/A02/A03/A04). 
27 FORMAT 
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC37A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
* 
* 
   IF (B0.NE.154) GOTO 45 
   IF (EC.LT.11) GOTO 45
   IF (EC.GT.14) EXIT TO 37B
* 
/         ERROR NUMBER 6C009 HEX
* 
40 IF (EC.NE.11) GOTO 41
   MSG EM TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98E
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 (12D,22D) TO LINE 16
   EXIT TO 98E
* 
/         ERROR NUMBER 6C00A HEX
* 
41 IF(EC.NE.12) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98M
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98M
* 
/         ERROR NUMBER 6C00B HEX
* 
42 IF(EC.NE.13) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98E
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98E
* 
/         ERROR NUMBER 6C00C HEX
* 
43 IF (EC.NE.14B) GOTO 45 
   MSG 24 TO LINE 12
   IF(P4.AND.4000.EQ.0) EXIT TO 98E 
   MSG 25 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98E
* 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC37B,844HT(05),LOCK 
*   5.2.29.2 FHC37B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98E - DISPLAY DETAILED STATUS. 
* 
*         REGISTERS USED- 
*         SAME AS FHC37.
* 
*         BUFFERS USED- 
*         SAME AS FHC37.
* 
* 
* 
*        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC37 - ECC FUNCTIONAL TEST (DC=5)
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR F844
4  FORMAT FHC37 - LINE *OCT - ERROR NUMBER *H*HE
* 
/         ERROR NUMBER 6C00D HEX
* 
5  FORMAT DRIVE RESERVED BY OPPOSITE ACCESS STATUS
6  FORMAT SUCCESSIVELY REPLACE CARDS
7  FORMAT B05 THRU B12, B13, AND A20. 
10 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/         ERROR NUMBER 6C00E HEX
* 
11 FORMAT DRIVE MALFUNCTION/INTERFACE FAULT 
12 FORMAT SUCCESSIVELY REPLACE CARDS B05 THRU B12,
13 FORMAT B13, B22, B26, B27, AND B21.
* 
/         ERROR NUMBER 6C00F/6C010 HEX
* 
15 FORMAT CONTROLLER LOST DRIVE CLOCK ERROR 
16 FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR
17 FORMAT CONTROLLER AND/OR DRIVE BUSY
20 FORMAT B07, B13, AND B22.
21 FORMAT B13, B21, B22, B27, B19, A19, A18, AND A21. 
22 FORMAT B06 AND A18.
23 FORMAT B06 AND B22.
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC37B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
   IF (B0.NE.154) GOTO 45 
   IF (EC.LT.15) GOTO 45
   IF (EC.GT.20) GOTO 45
* 
/         ERROR NUMBER 6C00D HEX
* 
40 IF (EC.NE.15) GOTO 41
   MSG 5 TO LINE 12 
   IF(P4.AND.4000.EQ.0) EXIT TO 98E 
   MSG 6 TO LINE 14 
   MSG 7 TO LINE 15 
   MSG 10 TO LINE 16
   EXIT TO 98E
* 
/         ERROR NUMBER 6C00E HEX
* 
41 IF (EC.NE.16) GOTO 42
   MSG 11 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98E
   MSG 12 TO LINE 14
   MSG 13 TO LINE 15
   MSG 10 TO LINE 16
   EXIT TO 98E
* 
/         ERROR NUMBER 6C00F HEX
* 
42 IF (EC.NE.17) GOTO 43
   MSG EM TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98E
   MSG 6 TO LINE 14 
   B10 = EM + 3 
   MSG B10 TO LINE 15 
   MSG 10 TO LINE 16
   EXIT TO 98E
* 
/         ERROR NUMBER 6C010 HEX
* 
43 IF (EC.NE.20) GOTO 45
   MSG EM TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98E
   MSG 6 TO LINE 14 
   MSG 20 TO LINE 15
   IF (B9.EQ.15) GOTO 44      *IF READ ABORT, 
   IF (SB(21).AND.1.NE.0) GOTO 44   *IF WRITE ADDRESS ERROR,
   MSG 23 TO LINE 15
44 MSG 10 TO LINE 16
   EXIT TO 98E
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC370,844HT(05),LOCK 
*   5.2.29.3 FHC370 - REPORT UNEXPECTED ERRORS
* 
*         PURPOSE-
*         FHC370 DISPLAYS INFORMATION EXPANDING ON ALL
*         ERRORS OTHER THAN THOSE WHICH CAN BE INTERPRETED
*         FOR ISOLATION.
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC37.
* 
*         BUFFERS USED- 
*         SAME AS FHC37.
* 
* 
* 
* 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
4  FORMAT FHC*D - LINE *OCTB - ERROR NUMBER *H*HEH
5  FORMAT ABORT ON .RES DRIVE. COMMAND
/ 
6  FORMAT LF = *OCTB      WORD  DETAILED STATUS (OCTAL) 
7  FORMAT                   1   *OCT *OCT *OCT *OCT *OCT
8  FORMAT    GENERAL        6   *OCT *OCT *OCT *OCT *OCT
9  FORMAT STATUS = *OCTB   11D  *OCT *OCT *OCT *OCT *OCT
12 FORMAT                  16D  *OCT *OCT *OCT *OCT *OCT
13 FORMAT ABORT ON .RES CONTROLLER. COMMAND 
14 FORMAT ABORT ON .WRITE. COMMAND
15 FORMAT ABORT ON .READ. COMMAND 
16 FORMAT ABORT ON .STATUS GENERAL. COMMAND 
17 FORMAT ABORT ON .STATUS DETAIL. COMMAND
20 FORMAT ABORT ON .STATUS CHANNEL. COMMAND 
21 FORMAT ABORT ON .OUT CH. COMMAND 
22 FORMAT ABORT ON .CONTROL. COMMAND
23 FORMAT ABORT ON .FLAG PULSE. COMMAND 
24 FORMAT ABORT ON .SEEK. COMMAND 
25 FORMAT ABORT ON .REL. COMMAND
30 FORMAT UNEXPECTED ERROR
31 MSG 1 TO LINE 1
   MSG 4 (B13,EA,B0,EC) TO LINE 3 
   MSG 30 TO LINE 5 
   MSG B9 TO LINE 6 
   MSG EM TO LINE 7 
   MSG 6 (LF) TO LINE 11
   MSG 7 (SB(1),SB(2),SB(3),SB(4),SB(5)) TO LINE 12 
   MSG 8 (SB(6),SB(7),SB(8),SB(9),SB(12)) TO LINE 13
   MSG 9(SB(0),SB(13),SB(14),SB(15),SB(16),SB(17))TO LINE 14
   MSG 12(SB(20),SB(21),SB(22),SB(23),SB(24)) TO LINE 15
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC39,844FT(05),LOCK
** 5.2.30 FHC39 - WRITE VERIFY TEST (DC=5)
* 
*         PURPOSE-
*         FHC39 USES A WRITE VERIFY OPERATION TO ESTABLISH A FINAL
*         CONFIDENCE IN THE OPERABILITY OF THE CONTROLLER.  IT DOES NOT 
*         RELY ON ANY CONTROLLER LOGIC WHICH HAS NOT BEEN PREVIOUSLY
*         VERIFIED TO SOME EXTENT.  IF FHC39 FAILS, EITHER THE DRIVE OR 
*         CONTROLLER COULD BE AT FAULT. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 844 (DEVICE CODE 5) IS ASSIGNED TO 
*         THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           FILL THE BUFFER 
*           WRITE A SECTOR
*           WRITE VERIFY THE SECTOR 
*           IF GENERAL STATUS IS NOT ZERO, THEN 
*             REPORT ERROR
*           ENDIF 
*           INVERT A BIT
*           WRITE VERIFY THE SECTOR 
*           IF GENERAL STATUS DOES NOT INCLUDE ABNORMAL 
*           TERMINATION BIT, THEN 
*             REPORT ERROR
*           ENDIF 
*           IF DETAILED STATUS DOES NOT INCLUDE WRITE VERIFY
*           ERROR BIT, THEN 
*             REPORT ERROR
*           ENDIF 
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS.
* 
*         SUBMODULES REFERENCED-
*         FHC390 - REPORT UNEXPECTED ERRORS 
*         FHC39A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - NUMBER OF SECTORS
*         B5 - CYLINDER ADDRESS (1465B) 
*         B6 - TRACK ADDRESS (0)
*         B7 - SECTOR ADDRESS (0) 
*         B9 - ABORT TYPE INDEX 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
1  FORMAT FHC39 - WRITE VERIFY TEST (DC=5)
2  FORMAT FHC39 - LC=*DECD, EC=*DECD
4  FORMAT FHC39 ERROR(S) = *DECD
5  FORMAT ID-SWITCH - CONTROLLER = *H HEX, DRIVE = *H HEX 
6  FORMAT // FHC39 DRIVES DISABLED, P5=XXX1 //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 07         *NUMBER OF DATA PATTERNS 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF (P5.AND.1.EQ.0) GOTO 21 
   MSG 6 TO DISPLAY, PRINT
   GOTO 77
* 
/        INITIALIZE.
* 
21 B0=157                    *TEST NUMBER 6F HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   WC=502 
   BA=0 
   B4=1                      *NUMBER OF SECTORS 
   B5=1465B                  *CYLINDER NUMBER 
   B6=0                      *TRACK NUMBER
   B7=0                      *SECTOR NUMBER 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 502B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 502B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 502B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 502B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 502B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 502B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 502B   4444 PATTERN 
   IF(B2.EQ.7)RANDOM TO OB FOR 502B      RANDOM PATERN
* 
/        PERFORM WRITE VERIFY TEST. 
* 
40 B1=B1+1
   B9 = 13
   RES DRIVE, ABT 70
   B9 = 14
   WRITE B4 SECTORS AT CYL B5, TRK B6, SEC B7, ABT 70 
   B4=1 
   B9 = 15
   VERIFY B4 SECTORS AT CYL B5, TRK B6, SEC B7, ABT 55
   IF (SB(0).NE.0) ERROR 3/1, GOTO 67 
   OB(100)=OB(100).XOR.40    *INVERT A BIT IN THE SECTOR
   B4=1 
   B9 = 15
   VERIFY B4 SECTORS AT CYL B5, TRK B6, SEC B7, ABT 50
   B9 = 16
   STATUS GENERAL, ABT 70 
   B9 = 17
   STATUS DETAIL, ABT 70
   ERROR 3/2, GOTO 67 
* 
50 B9 = 16
   STATUS GENERAL, ABT 70 
   B9 = 17
   STATUS DETAIL, ABT 70
   IF (SB(20).AND.1.EQ.0) ERROR 3/3, GOTO 67
   GOTO 60
55 IF (SB(0).EQ.0) GOTO 70
   ERROR 3/1, GOTO 67 
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 39A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 390  *UNEXPECTED ERROR DISPLAY
/ 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/ 
/         TERMINATE.
* 
76 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   IF (SB(4).EQ.0) GOTO 77   *IF NO DETAILED STATUS, EXIT 
   B10=SB(24).AND.377        *MASK FOR CONTROLLER ID-SWITCH 
   B11=SB(7).AND.3.LS.6      *JUSTIFY UPPER 3-BITS DRIVE ID 
   B11=SB(10).RS.6+B11       *MAKE 8-BIT DRIVE ID-SWITCH
   MSG 5 (B10,B11) TO DISPLAY, PRINT, DAYFILE 
77 END 20 
COMPILE 
   MODULE FHC39A,844FT(05),LOCK 
*   5.2.30.1 FHC39A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98F - DISPLAY DETAILED STATUS. 
* 
*         REGISTERS USED- 
*         SAME AS FHC39.
* 
*         BUFFERS USED- 
*         SAME AS FHC39.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC39 - WRITE VERIFY TEST (DC=5)
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR F844
4  FORMAT FHC39 - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6F001 HEX 
* 
10 FORMAT WRITE VERIFY FAILED.
11 FORMAT B27,B26,B20,B19,A20,B22,B13,B08,AND B07.
12 FORMAT FAILURE IN EITHER DRIVE OR CONTROLLER.
13 FORMAT DIAGNOSTIC DTC MAY HELP ISOLATE FAILURE.
* 
/        ERROR NUMBER 6F002 HEX 
* 
14 FORMAT FORCING A WRITE VERIFY ERROR DID NOT CAUSE A
15 FORMAT GENERAL STATUS OF 5000. 
16 FORMAT UNKNOWN FAILURE IN EITHER DRIVE OR CONTROLLER.
17 FORMAT DIAGNOSTIC DTC MAY HELP ISOLATE FAILURE.
* 
/        ERROR NUMBER 6F003 HEX 
* 
20 FORMAT FORCING A WRITE VERIFY ERROR DID NOT SET THE
21 FORMAT WRITE VERIFY ERROR BIT IN DETAILED STATUS.
22 FORMAT UNKNOWN FAILURE IN EITHER DRIVE OR CONTROLLER.
23 FORMAT DIAGNOSTIC DTC MAY HELP ISOLATE FAILURE.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC39A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.157) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.3) GOTO 45 
* 
/        ERROR NUMBER 6F001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98F
   MSG 5 TO LINE 13 
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98F               *DISPLAY STATUS
* 
/        ERROR NUMBER 6F002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 11
   MSG 15 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98F
   MSG 5 TO LINE 13 
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98F               *DISPLAY STATUS
* 
/        ERROR NUMBER 6F003 HEX 
* 
42 IF (EC.NE.3) GOTO 45 
   MSG 20 TO LINE 11
   MSG 21 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98F
   MSG 5 TO LINE 13 
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98F
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC390,844FT(05),LOCK 
*   5.2.30.2 FHC390 - REPORT UNEXPECTED ERRORS
* 
*         PURPOSE-
*         FHC390 DISPLAYS INFORMATION EXPANDING ON ALL
*         ERRORS OTHER THAN THOSE WHICH CAN BE INTERPRETED
*         FOR ISOLATION.
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC39.
* 
*         BUFFERS USED- 
*         SAME AS FHC39.
* 
* 
* 
/ 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC39 - WRITE VERIFY TEST (DC=5)
4  FORMAT FHC39 - LINE *OCT - ERROR NUMBER *H*HE
/ 
6  FORMAT LF=*OCTB        WORD  DETAILED STATUS (OCTAL) 
7  FORMAT                   1   *OCT *OCT *OCT *OCT *OCT
8  FORMAT    GENERAL        6   *OCT *OCT *OCT *OCT *OCT
9  FORMAT STATUS = *OCTB   11D  *OCT *OCT *OCT *OCT *OCT
12 FORMAT                  16D  *OCT *OCT *OCT *OCT *OCT
13 FORMAT ABORT ON .RES DRIVE. COMMAND
14 FORMAT ABORT ON .WRITE. COMMAND
15 FORMAT ABORT ON .VERIFY. COMMAND 
16 FORMAT ABORT ON .STATUS GENERAL. COMMAND 
17 FORMAT ABORT ON .STATUS DETAIL. COMMAND
22 FORMAT UNEXPECTED ERROR
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 4 (EA,B0,EC) TO LINE 3 
   MSG 22 TO LINE 5 
   MSG B9 TO LINE 6 
   MSG EM TO LINE 7 
   MSG 6 (LF) TO LINE 11
   MSG 7 (SB(1),SB(2),SB(3),SB(4),SB(5)) TO LINE 12 
   MSG 8 (SB(6),SB(7),SB(8),SB(9),SB(12)) TO LINE 13
   MSG 9(SB(0),SB(13),SB(14),SB(15),SB(16),SB(17))TO LINE 14
   MSG 12(SB(20),SB(21),SB(22),SB(23),SB(24)) TO LINE 15
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
*IF -DEF,MVE
   MODULE FHC40,FMDHT(07),LOCK
** 5.2.31 FHC40 - LOOP 885 DECODE TEST (DC=7) 
* 
*         PURPOSE-
*         FHC40 VERIFIES THAT DATA PATTERNS CAN BE LOOPED THROUGH THE 
*         885 INTERFACE BOARDS USING THE LOOP 885 DECODE FEATURE. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 7) IS
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         VERIFY PARAMETERS.
*         DO FOR ALL DATA PATTERNS
*           FILL BUFFER 
*           DO FOR EACH WORD IN BUFFER
*             DO FOR 885 INTERFACE ASSIGNED 
*               SET THE LOOP 885 DECODE BIT 
*               OUTPUT WORD ON NOC 8
*               VERIFY THAT NIC 8 CONTAINS THE CORRECT WORD 
*               CLEAR LOOP 885 DECODE BIT.
*               CHECK STATUS VALID AND BUS IN PARITY. 
*               ISOLATE DATA ERRORS BASED ON BAD BIT POSITION 
*             ENDO
*           ENDO
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC400 - VERIFY PARAMETERS
*         FHC470 - REPORT UNEXPECTED ERRORS 
*         FHC40A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - BUFFER INDEX 
*         B6 - TEMPORARY STORAGE
*         B7 - TEMPORARY STORAGE
*         B8 - TEMPORARY STARAGE
*         B9 - ABORT TYPE INDEX 
*         B10- LENGTH OF BUFFER LOOP
*         B12- CURRENT DATA PATTERN 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  HOLDS GENERATED DATA PATTERNS
* 
* 
1  FORMAT FHC40 - LOOP 885 DECODE TEST (DC=7) 
2  FORMAT FHC40 - LC=*DECD, EC=*DECD
4  FORMAT FHC40 ERROR(S) = *DECD
5  FORMAT DATA ERROR    E*OCT  A*OCT  D*OCT 
6  FORMAT // FHC40 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BIPE TO 1          *BUS IN PARITY ERROR 
   EQUATE VALID TO 2         *STATUS VALID (NIC 8/9)
   EQUATE NPAT TO 06         *NUMBER OF DATA PATTERNS 
   EQUATE LOOPDEC TO 100     *LOOP DECODE BIT 
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/ 
* 
20 CALL 400                  *VERIFY PARAMETERS 
   MSG 1 TO DISPLAY, PRINT
   IF(AL.GE.4) GOTO 21       *ACCESS LEVEL CHECK
   MSG 6 (AL) TO PRINT, DISPLAY 
   EXIT 
* 
/        INITIALIZE.
* 
21 B0=155                    *TEST NUMBER 6D HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 40D                 *MODULE NUMBER 40D 
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 100B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 100B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 100B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 100B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 100B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 100B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 100B   4444 PATTERN 
   B5=0                      *BUFFER INDEX
   IF (B2.LT.4) B10=1        *STATIC PATTERNS 
   IF (B2.LT.10B) B10=12D    *SLIDING PATTERNS
   IF (B2.GE.10B) B10=100    *RANDOM PATTERNS 
25 B7 = 40B                  *FIRST 885 INTERFACE NUMBER
* 
/        PERFORM LOOP 885 DECODE TEST.
* 
40 B1=B1+1
44 B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
* 
/         SET LOOP 885 DECODE BIT IN NOC 1. 
* 
   B6 = LOOPDEC              *LOOPDEC BIT FOR NOC 1 
   B9 = 21
   OUT CH=1,B6,B7,ABT 70     *SET LOOPDEC + 885 NO. 
* 
/         LOOP DATA.
* 
   B12=OB(B5).AND.377 
   OUT CH=8,377B,B12,ABT 70  *SEND PATTERN
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ PATTERN
* 
/         CLEAR LOOP 885 DECODE BIT IN NOC 1. 
* 
   B9 = 21
   OUT CH=1,0,B7,ABT 70      *CLEAR LOOPDEC 
* 
/         COMPARE DATA. 
* 
   IF(SB(21).AND.VALID.EQ.0) ERROR 3/22 GOTO 67 
   IF (SB(22).NE.B12) GOTO 64 
   IF (SB(21).AND.BIPE.NE.0) ERROR 3/21 GOTO 67  *PARITY
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 25 WHILE (B5+1.LT.B10)   *END OF BUFFER LOOP
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/        ANALYZE DATA ERRORS
* 
64 B4=SB(22).XOR.B12
   MSG 5 (B12,SB(22),B4) TO LINE 7
* 
*         DATA ERROR ISOLATION ANALYSIS TABLE 
* 
*         2 3 4  B6  B6 2 3 4 
*         ------------------- 
*         - - -   0  0  - - - 
*         - - X   4  2  X - - 
*         - X -   3  3  - X - 
*         - X X   7  4  - - X 
*         X - -   2  5  X X - 
*         X - X   6  6  X - X 
*         X X -   5  7  - X X 
*         X X X   9  9  X X X 
* 
   B6=0 
   IF (B4.AND.7.NE.0) B6=2
   IF (B4.AND.70.NE.0) B6=B6+3
   IF (B4.AND.300.NE.0) B6=B6+4 
   IF (B6.GT.4) ERROR 3/1, GOTO 67
   IF (B6.EQ.2) ERROR 3/2, GOTO 67
   IF (B6.EQ.3) ERROR 3/3, GOTO 67
   ERROR 3/4, GOTO 67 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 40A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 470  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC40A,FMDHT(07),LOCK 
*   5.2.31.1 FHC40A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC40B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98N - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC40.
* 
*         BUFFERS USED- 
*         SAME AS FHC40.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC40 - LOOP 885 DECODE TEST (DC=7) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC40 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D001 HEX 
* 
10 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B04, B13, B01, B02, B03, AND A18. 
13 FORMAT B17,B04,B13,B14,B15,B16,B01,B02,B03,AND A18.
* 
/        ERROR NUMBER 6D002 HEX 
* 
14 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 0, 1, 2).
15 FORMAT B01, B04, B13, AND A18. 
16 FORMAT B14, B01, B04, B17, B13, AND A18. 
17 FORMAT 
* 
/        ERROR NUMBER 6D003 HEX 
* 
20 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 3, 4, 5).
21 FORMAT B02, B04, B13, AND A18. 
22 FORMAT B15, B02, B04, B17, B13, AND A18. 
23 FORMAT 
* 
/        ERROR NUMBER 6D004 HEX 
* 
24 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 6, 7)
25 FORMAT B03, B04, B13, AND A18. 
26 FORMAT B16, B03, B04, B17, B13, AND A18. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC40A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.4) EXIT TO 40B 
* 
/        ERROR NUMBER 6D001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
50 MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
* 
/        ERROR NUMBER 6D002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
* 
/        ERROR NUMBER 6D003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98N
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98N
* 
/        ERROR NUMBER 6D004 HEX 
* 
43 IF (EC.NE.4) GOTO 45 
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98N
53 MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98N
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC40B,FMDHT(07),LOCK 
*   5.2.31.2 FHC40B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98N - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC40.
* 
*         BUFFERS USED- 
*         SAME AS FHC40.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC40 - LOOP 885 DECODE TEST (DC=7) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC40 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D011 HEX 
* 
10 FORMAT DATA PARITY ERROR ON LOOP 885 DECODE. 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B03, B04, B13, AND A18. 
13 FORMAT B16, B03, B04, B13, AND A18.
* 
/         ERROR NUMBER 6D012 HEX
* 
14 FORMAT NO STATUS VALID ON LOOP 885 DECODE. 
15 FORMAT SUCCESSIVELY REPLACE CARD B04.
16 FORMAT 
17 FORMAT 
20 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC40B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.21) GOTO 45
   IF (EC.GT.22) GOTO 45
* 
/        ERROR NUMBER 6D011 HEX 
* 
40 IF (EC.NE.21) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
50 MSG 13 TO LINE 15
   MSG 20 TO LINE 16
   EXIT TO 98N
* 
/         ERROR NUMBER 6D012 HEX
* 
41 IF (EC.NE.22) GOTO 45
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC400,FMDHT(07),LOCK 
*   5.3.31.3 FHC400 - PARAMETER VERIFICATION
* 
*         PURPOSE-
*         FHC400 VERIFIES THAT APPROPRIATE PARAMETERS ARE SET 
*         TO RUN THE FHC4X SERIES OF MODULES. 
* 
*         METHOD- 
*         PARAMETERS ARE CHECKED FOR THREE TYPES OF ERRORS--
*         1.  UNUSED BITS BEING SET.
*         2.  DRIVE-ORIENTED PARAMETERS BEING SET (SINCE FHC
*               ONLY ACCESSES THE PRE-ALLOCATED AREA).
* 
*         ENTRY-
*         PARAMETERS P0 TO P9 ARE DESCRIBED IN MODULE FHC99A. 
* 
*         EXIT- 
*         NO SPECIAL EXIT CONDITIONS. 
* 
*         SUBMODULES REFERNCED- 
*         NONE
* 
*         REGISTERS USED- 
*         B1 - MESSAGE LINE INDEX 
*         B2 - MESSAGE FORMAT INDEX 
* 
*         BUFFERS USED- 
*         NONE
* 
*         KNOWN LIMITATIONS-
*         NONE
* 
* 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC400 - PARAMETER VERIFICATION (DC=7)
3  FORMAT CHECK P0 - NOT USED, SHOULD BE ZERO 
4  FORMAT CHECK P1 - NOT USED, SHOULD BE ZERO 
5  FORMAT CHECK P2 - NOT USED, SHOULD BE ZERO 
6  FORMAT CHECK P3 - NOT USED, SHOULD BE ZERO 
7  FORMAT CHECK P4 - UNUSED BITS ARE SET
10 FORMAT CHECK P5 - UNUSED BITS ARE SET
11 FORMAT CHECK P7 - NOT USED, SHOULD BE ZERO 
12 FORMAT CHECK P8 - UNUSED BITS ARE SET
13 FORMAT CHECK P9 - UNUSED BITS ARE SET
14 FORMAT 885 UNIT NUMBER ERROR.  SET UN=40 THRU 57.
15 FORMAT CHECK P8 - 885 OPTION NOT SET.
16 FORMAT CHECK P5 - DRIVE MODULES SHOULD NOT BE DISABLED 
24 FORMAT P0 - P4 *OCT *OCT *OCT *OCT *OCT
25 FORMAT P5 - P9 *OCT *OCT *OCT *OCT *OCT
26 FORMAT SUSPECT PARAMETER/UNIT NUMBER ENTRY ERROR 
27 FORMAT -PAUSE- FHC400 - *DECD WARNINGS POSTED. 
30 FORMAT PARAMETERS DESCRIBED IN MODULE FHC99A.
/ 
   EQUATE OPT844 TO 0020     *844 INTERFACE OPTION
   EQUATE OPT885 TO 0040     *885 INTERFACE OPTION
/ 
31 B1 = 14                   *SET MESSAGE LINE INDEX
   MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 2 TO DISPLAY, PRINT
   MSG 24 (P0,P1,P2,P3,P4) TO LINE 7
   MSG 25 (P5,P6,P7,P8,P9) TO LINE 10 
/ 
   B2 = 3 
   IF (P0.NE.0) GOSUB 70
/ 
   B2 = 4 
   IF (P1.NE.0) GOSUB 70
/ 
   B2 = 5 
   IF (P2.NE.0) GOSUB 70
/ 
   B2 = 6 
   IF (P3.NE.0) GOSUB 70
/ 
   B2 = 7 
   IF (P4.AND.3776B.NE.0) GOSUB 70
/ 
   B2 = 10
   IF (P5.AND.6726B.NE.0) GOSUB 70
/ 
   B2 = 16
   IF (P5.AND.1.NE.0) GOSUB 70
/ 
   B2 = 11
   IF (P7.NE.0) GOSUB 70
/ 
   B2 = 12
   IF (P8.AND.7400B.NE.0) GOSUB 70
/ 
   B2 = 13
   IF (P9.AND.7070B.NE.0) GOSUB 70
/ 
   B2 = 14
   IF (SB(63).AND.77B.LT.40B) GOSUB 70
   IF (SB(63).AND.77B.GT.57B) GOSUB 70
/ 
   B2 = 15
   IF (SB(63).AND.10B.EQ.0) GOTO 76 
   IF (P8.AND.OPT885.EQ.0) GOSUB 70 
/ 
   GOTO 76
/ 
70 MSG B2 TO LINE B1
   B1 = B1 + 1
   RETURN 
/ 
76 IF (B1.EQ.14) GOTO 77     *IF NO ERRORS
   B1 = B1 + 1
   MSG 30 TO LINE B1
   MSG 26 TO LINE 12
   B1 = B1 - 15 
   PICTURE
   MSG 27 (B1) TO DISPLAY, PRINT, DAYFILE 
   PAUSE
77 BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC41,FMDHT(07),LOCK
** 5.2.32 FHC41 - LOOP 885 BUS TEST (DC=7)
* 
*         PURPOSE-
*         FHC41 VERIFIES THAT DATA PATTERNS CAN BE LOOPED THROUGH THE 
*         885 INTERFACE BOARDS USING THE LOOP 885 BUS FEATURE.
*         THIS MODULE ALSO CHECK BUS IN/OUT PARITY. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 7) IS
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR PATTERNS 0 THROUGH 7.
*           FILL BUFFER 
*           DO FOR EACH WORD IN BUFFER
*             DO FOR ALL PARITY STATES. 
*               DO FOR 885 INTERFACE ASSIGNED 
*                 SET THE LOOP 885 BUS BIT AND BUS PARITY.
*                 OUTPUT WORD ON NOC 8
*                 VERIFY THAT NIC 8 CONTAINS THE CORRECT WORD 
*                 CLEAR LOOP 885 BUS BIT. 
*                 CHECK STATUS VALID AND BUS IN PARITY. 
*                 ISOLATE DATA ERRORS BASED ON BAD BIT POSITION 
*               ENDO
*             ENDO
*           ENDO
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC470 - REPORT UNEXPECTED ERRORS 
*         FHC41A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - BUFFER INDEX 
*         B6 - TEMPORARY STORAGE
*         B7 - 885 DRIVE INTERFACE NUMBER 
*         B7 - TEMPORARY STORAGE
*         B8 - TEMPORARY STARAGE
*         B10- LENGTH OF BUFFER LOOP
*         B11- FORCE PARITY INDEX 
*         B12- CURRENT DATA PATTERN 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  CONTAINS WORDS TO BE LOOPED
* 
1  FORMAT FHC41 - LOOP 885 BUS TEST (DC=7)
2  FORMAT FHC41 - LC=*DECD, EC=*DECD
4  FORMAT FHC41 ERROR(S) = *DECD
5  FORMAT DATA ERROR    E*OCT  A*OCT  D*OCT 
6  FORMAT // FHC41 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BIPE TO 1          *BUS IN PARITY ERROR 
   EQUATE VALID TO 2         *STATUS VALID (NIC 8/9)
   EQUATE NPAT TO 6          *NUMBER OF DATA PATTERNS 
   EQUATE FBIP TO 4          *FORCE BUSIN PARITY
   EQUATE FBOP TO 10         *FORCE BUSOUT PARITY 
   EQUATE LOOPBUS TO 200     *LOOP BUS BIT
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF(AL.GE.4) GOTO 21       *ACCESS LEVEL CHECK
   MSG 6 (AL) TO PRINT, DISPLAY 
   EXIT 
* 
/        INITIALIZE.
* 
21 B0=155                    *TEST NUMBER 6D HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 41D                 *MODULE NUMBER 41D 
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 100B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 100B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 100B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 100B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 100B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 100B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 100B   4444 PATTERN 
   B5=0                      *BUFFER INDEX
   IF (B2.LT.4) B10=1        *STATIC PATTERNS 
   IF (B2.LT.10B) B10=12D    *SLIDING PATTERNS
25 B11 = 0                   *INITIALIZE PARITY INDEX 
* 
/        PERFORM LOOP 885 BUS TEST. 
* 
40 B1=B1+1
   B7 = 40                   *FIRST 885 INTERFACE NUMBER
44 B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
* 
/         DETERMINE PARITY TO FORCE.
* 
   IF(B11.EQ.0) B6=LOOPBUS   *NONE FORCED 
   IF(B11.EQ.1) B6=LOOPBUS+FBIP  *BUSIN PARITY
   IF(B11.EQ.2) B6=LOOPBUS+FBOP  *BUSOUT PARITY 
* 
/         SET LOOP 885 BUS BIT AND BUS PARITY.
* 
   B9 = 21
   OUT CH=1,B6,B7,ABT 70     *SET LOOPBUS + 885 NO. 
* 
/         LOOP DATA.
* 
   B12=OB(B5).AND.377 
   OUT CH=8,B12,377B,ABT 70  *SEND PATTERN
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ PATTERN
* 
/         CLEAR LOOP 885 BUS BIT IN NOC 1.
* 
   B9 = 21
   OUT CH=1,0,B7,ABT 70     *CLEAR LOOPBUS + FORCE PARITY 
* 
/         COMPARE DATA. 
* 
   IF(SB(21).AND.VALID.EQ.0) ERROR 3/26 GOTO 67 
   IF (SB(22).NE.B12) GOTO 64 
   IF(B11.EQ.0) GOTO 50 
   IF(SB(21).AND.BIPE.EQ.0) ERROR 3/27 GOTO 67  *PARITY 
   GOTO 60
50 IF(SB(21).AND.BIPE.NE.0) ERROR 3/25 GOTO 67  *PARITY 
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 40 WHILE (B11+1.LE.2)    *END OF PARITY LOOP
   GOTO 25 WHILE (B5+1.LT.B10)   *END OF BUFFER LOOP
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/        ANALYZE DATA ERRORS
* 
64 B4=SB(22).XOR.B12
   MSG 5 (B12,SB(22),B4) TO LINE 7
* 
*         DATA ERROR ISOLATION ANALYSIS TABLE 
* 
*         2 3 4  B6  B6 2 3 4 
*         ------------------- 
*         - - -   0  0  - - - 
*         - - X   4  2  X - - 
*         - X -   3  3  - X - 
*         - X X   7  4  - - X 
*         X - -   2  5  X X - 
*         X - X   6  6  X - X 
*         X X -   5  7  - X X 
*         X X X   9  9  X X X 
* 
   B6=0 
   IF (B4.AND.7.NE.0) B6=2
   IF (B4.AND.70.NE.0) B6=B6+3
   IF (B4.AND.300.NE.0) B6=B6+4 
   IF (B6.GT.4) ERROR 3/5, GOTO 67
   IF (B6.EQ.2) ERROR 3/6, GOTO 67
   IF (B6.EQ.3) ERROR 3/7, GOTO 67
   ERROR 3/10, GOTO 67
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 41A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 470  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC41A,FMDHT(07),LOCK 
*   5.2.32.1 FHC41A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC41B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98N - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC41.
* 
*         BUFFERS USED- 
*         SAME AS FHC41.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC41 - LOOP 885 BUS TEST (DC=7)
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC41 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D005 HEX 
* 
10 FORMAT DATA MISCOMPARE ON LOOP 885 BUS 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B04, B13, B01, B02, B03, AND A18. 
13 FORMAT B17,B04,B13,B14,B15,B16,B01,B02,B03,AND A18.
* 
/        ERROR NUMBER 6D006 HEX 
* 
14 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 0, 1, 2). 
15 FORMAT B01, B04, B13, AND A18. 
16 FORMAT B14, B01, B04, B17, B13, AND A18. 
17 FORMAT 
* 
/        ERROR NUMBER 6D007 HEX 
* 
20 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 3, 4, 5). 
21 FORMAT B02, B04, B13, AND A18. 
22 FORMAT B15, B02, B04, B17, B13, AND A18. 
23 FORMAT 
* 
/        ERROR NUMBER 6D008 HEX 
* 
24 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 6, 7) 
25 FORMAT B03, B04, B13, AND A18. 
26 FORMAT B16, B03, B04, B17, B13, AND A18. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC41A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.5) GOTO 45 
   IF (EC.GT.10) EXIT TO 41B
* 
/        ERROR NUMBER 6D005 HEX 
* 
40 IF (EC.NE.5) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
50 MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
* 
/        ERROR NUMBER 6D006 HEX 
* 
41 IF (EC.NE.6) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
* 
/        ERROR NUMBER 6D007 HEX 
* 
42 IF (EC.NE.7) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98N
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98N
* 
/        ERROR NUMBER 6D008 HEX 
* 
43 IF (EC.NE.10) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98N
53 MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98N
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC41B,FMDHT(07),LOCK 
*   5.2.32.2 FHC41B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98N - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC41.
* 
*         BUFFERS USED- 
*         SAME AS FHC41.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC41 - LOOP 885 BUS TEST (DC=7)
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC41 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D015 HEX 
* 
10 FORMAT DATA PARITY ERROR ON LOOP 885 BUS 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B03, B04, B13, AND A18. 
13 FORMAT B16, B03, B04, B13, AND A18.
* 
/         ERROR NUMBER 6D016 HEX
* 
14 FORMAT NO STATUS VALID ON LOOP 885 BUS.
15 FORMAT SUCCESSIVELY REPLACE CARD B04.
16 FORMAT 
17 FORMAT 
* 
/         ERROR NUMBER 6D017 HEX
* 
20 FORMAT NO STATUS PARITY ERROR ON LOOP 885 BUS. 
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT B04, B03, A18, AND A20. 
23 FORMAT 
24 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC41B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.25) GOTO 45
   IF (EC.GT.27) GOTO 45
* 
/        ERROR NUMBER 6D015 HEX 
* 
40 IF (EC.NE.25) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
50 MSG 13 TO LINE 15
   MSG 24 TO LINE 16
   EXIT TO 98N
* 
/         ERROR NUMBER 6D016 HEX
* 
41 IF(EC.NE.26) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
* 
/         ERROR NUMBER 6D017 HEX
* 
42 IF (EC.NE.27B) GOTO 45 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98N
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC42,FMDHT(07),LOCK
** 5.2.33 FHC42 - LOOP 885 WRITE/READ/TAG GATE (DC=7) 
* 
*         PURPOSE-
*         FHC42 VERIFIES THE ABILITY TO LOOP GATING SIGNALS 
*         THROUGH THE 885 INTERFACE BOARDS. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 7) IS
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR 885 INTERFACE ASSIGNED 
*           MASTER CLEAR CONTROL LOGIC. 
*           SELECT DEVICE INTERFACE ON NOC 1. 
*           SET SKIP SECTOR MARK. 
*           SEND READ GATE
*           CHECK READ GATE STATUS
*           SEND WRITE GATE AND W/R ECC 
*           CHECK WRITE GATE STATUS 
*           SEND READ GATE AND FAST START 
*           CHECK TAG GATE STATUS 
*           MASTER CLEAR CONTROL LOGIC. 
*           CHECK STATUS VALID. 
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC470 - REPORT UNEXPECTED ERRORS 
*         FHC42A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B3 - ERROR COUNT
*         B4 - NOC 4 DATA 
*         B5 - NOC 5 DATA 
*         B7 - TEMPORARY STORAGE
*         B8 - TEMPORARY STARAGE
*         B9 - ABORT TYPE INDEX 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         NONE
* 
* 
1  FORMAT FHC42 - LOOP 885 WRT/READ/TAG GATE (DC=7) 
2  FORMAT FHC42 - LC=*DECD, EC=*DECD
4  FORMAT FHC42 ERROR(S) = *DECD
6  FORMAT // FHC42 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/         NORMAL CHANNEL EQUATES
* 
   EQUATE VALID TO 2         *STATUS VALID (NIC 8/9)
   EQUATE WRG9 TO 4 
   EQUATE RDG9 TO 2 
   EQUATE TAG9 TO 1 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF(AL.GE.4) GOTO 21       *ACCESS LEVEL CHECK
   MSG 6 (AL) TO PRINT, DISPLAY 
   EXIT 
* 
/        INITIALIZE.
* 
21 B0=155                    *TEST NUMBER 6D HEX
   B1=0                      *LOOP COUNT
   B3=0                      *ERROR COUNT 
   B13 = 42D                 *MODULE NUMBER 42D 
   B7=40                     *FIRST 885 INTERFACE NUMBER
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
* 
/        PERFORM LOOP 885 WRITE/READ/TAG GATE TEST. 
* 
40 B1=B1+1
44 B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
   B9 = 23
   FLAG PULSE CH=1, ABT 70   *MASTER CLEAR CONTROL LOGIC
   B9 = 21
   OUT CH=1,0,B7,ABT 70      *ENABLE 885 INTERFACE
   OUT CH=2,0,100B,ABT 70    *SKIP SECTOR MARK
* 
/         PERFORM LOOP 885 READ GATE TEST 
* 
   B9 = 22
   CONTROL 377,377,100,4,EXECUTE,ABT 70  *SEND READ GATE
   GOSUB 62                  *READ CHANNEL STATUS 
   IF (SB(24).AND.RDG9.EQ.0) ERROR 3/11 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.RDG9.NE.0) ERROR 3/14 GOTO 67 
* 
/         PERFORM LOOP 885 WRITE GATE TEST
* 
   B9 = 22
   CONTROL 377,377,104,10,EXECUTE,ABT 70  *SEND WRITE GATE
   GOSUB 62                  *READ CHANNEL STATUS 
   IF (SB(24).AND.WRG9.EQ.0) ERROR 3/12 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.WRG9.NE.0) ERROR 3/15 GOTO 67 
* 
/         PERFORM LOOP 885 TAG GATE TEST
* 
   B9 = 22
   CONTROL 377,377,100,24,EXECUTE,ABT 70  *SEND TAG GATE
   GOSUB 62                  *READ CHANNEL STATUS 
   IF (SB(24).AND.TAG9.EQ.0) ERROR 3/13 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.TAG9.NE.0) ERROR 3/16 GOTO 67 
* 
/         CHECK FOR STATUS VALID STUCK-AT-ONE 
* 
   B9 = 23
   FLAG PULSE CH=1,ABT 70    *MASTER CLEAR
   B9 = 20
   STATUS CHANNEL,ABT 70     *READ CHANNEL STATUS 
   IF (SB(21).AND.VALID.NE.0) ERROR 3/17 GOTO 67
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 77                       *TERMINATE MODULE
* 
/         CHANNEL STATUS SUBROUTINE 
* 
62 B9 = 20
   STATUS CHANNEL, ABT 64    *READ CHANNEL STATUS 
   RETURN 
* 
/         TERMINATE CONTROL WORD SEQUENCE 
* 
63 B9 = 21
   OUT CH=4,0,0,ABT 64       *CLEAR NOC 4 
   B9 = 23
   FLAG PULSE CH=5,ABT 64    *TERMINATE CONTROL 
   B9 = 21
   OUT CH=5,0,0,ABT 64       *CLEAR NOC 5 
   B9 = 20
   STATUS CHANNEL, ABT 64    *READ CHANNEL STATUS 
   RETURN 
64 ENDSUB GOTO 70 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 42A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 470  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC42A,FMDHT(07),LOCK 
*   5.2.33.1 FHC42A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC42B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98N - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC42.
* 
*         BUFFERS USED- 
*         SAME AS FHC42.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC42 - LOOP 885 WRT/READ/TAG GATE (DC=7) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC42 - LINE *OCT - ERROR NUMBER *H*HE
6  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6D009 HEX 
* 
10 FORMAT LOOP READ GATE A CONSTANT ZERO. 
/         SUCCESSIVELY REPLACE CARDS
11 FORMAT B02, B04, B21, B13, 
12 FORMAT B15,B02,B17,B04,B21,B13,
13 FORMAT B27, B22, A19, AND A21. 
* 
/        ERROR NUMBER 6D00A HEX 
* 
14 FORMAT LOOP WRITE GATE A CONSTANT ZERO.
/         SUCCESSIVELY REPLACE CARDS
15 FORMAT B01, B04, B21, B13, 
16 FORMAT B14,B01,B17,B04,B21,B13,
17 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        ERROR NUMBER 6D00B HEX 
* 
20 FORMAT LOOP TAG GATE A CONSTANT ZERO.
/         SUCCESSIVELY REPLACE CARDS
21 FORMAT B03, B04, B13, B27, AND B26.
22 FORMAT B16, B03, B17, B04, B13, B27, AND B26.
23 FORMAT 
* 
/        ERROR NUMBER 6D00C HEX 
* 
24 FORMAT LOOP READ GATE A CONSTANT ONE.
/         SUCCESSIVELY REPLACE CARDS
25 FORMAT B02, B04, B21, B13, 
26 FORMAT B15,B02,B17,B04,B21,B13,
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC42A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.11) GOTO 45
   IF (EC.GT.14) EXIT TO 42B
* 
/        ERROR NUMBER 6D009 HEX 
* 
40 IF (EC.NE.11) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 6 TO LINE 13 
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 11 TO LINE 14
   MSG 13 TO LINE 15
   EXIT TO 98N
50 MSG 12 TO LINE 14
   MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
* 
/        ERROR NUMBER 6D00A HEX 
* 
41 IF (EC.NE.12) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98N
51 MSG 16 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98N
* 
/        ERROR NUMBER 6D00B HEX 
* 
42 IF (EC.NE.13) GOTO 43
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98N
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98N
* 
/        ERROR NUMBER 6D00C HEX 
* 
43 IF (EC.NE.14) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98N
53 MSG 26 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98N
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC42B,FMDHT(07),LOCK 
*   5.2.33.2 FHC42B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98N - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC42.
* 
*         BUFFERS USED- 
*         SAME AS FHC42.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC42 - LOOP 885 WRT/READ/TAG GATE (DC=7) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC42 - LINE *OCT - ERROR NUMBER *H*HE
6  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6D00D HEX 
* 
10 FORMAT LOOP WRITE GATE A CONSTANT ONE. 
/         SUCCESSIVELY REPLACE CARDS
11 FORMAT B01, B04, B21, B13, 
12 FORMAT B14,B01,B17,B04,B21,B13,
13 FORMAT B27, B22, A19, AND A21. 
* 
/        ERROR NUMBER 6D00E HEX 
* 
14 FORMAT LOOP TAG GATE A CONSTANT ONE. 
/         SUCCESSIVELY REPLACE CARDS
15 FORMAT B03, B04, B13, B27, AND B26.
16 FORMAT B16, B03, B17, B04, B13, B27, AND B26.
17 FORMAT 
* 
/         ERROR NUMBER 6D00F HEX
* 
20 FORMAT STATUS VALID SET AFTER MASTER CLEAR.
21 FORMAT SUCCESSIVELY REPLACE CARD B04.
22 FORMAT 
23 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC42B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.15) GOTO 45
   IF (EC.GT.17) GOTO 45
* 
/        ERROR NUMBER 6D00D HEX 
* 
40 IF (EC.NE.15) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 11 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98N
50 MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98N
* 
/        ERROR NUMBER 6D00E HEX 
* 
41 IF (EC.NE.16) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
* 
/         ERROR NUMBER 6D00F HEX
* 
42 IF (EC.NE.17B) GOTO 45 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98N
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC43,FMDHT(07),LOCK
** 5.2.34  FHC43 - SYNC BYTE SEARCH TEST I (DC=7) 
* 
*         PURPOSE-
*         FHC43 VERIFIES THE OPERATION OF THE SYNC BYTE DETECTOR
*         ON THE LOW ORDER DATA PATH BOARD. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 7) IS
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR SYNC BYTE = 20 TO 37 
*           SEEK TO CYL 842 TRK 0 SCT 0.
*           SET CONTROL SELECT ON NOC 8.
*           PLACE SYNC BYTE IN NOC 2
*           WRITE A SYNC BYTE IN THE MIDDLE OF THE SECTOR 
*           CHECK GENERAL STATUS
*           SEEK TO CYL 842 TRK 0 SCT 0.
*           SET CONTROL SELECT ON NOC 8.
*           PLACE SYNC BYTE IN NOC 2
*           READ THE SYNC BYTE AT THE CORRECT TIME (EXPECT NO ERROR)
*           CHECK GENERAL STATUS. 
*           CHECK SYNC BYTE MISCOMPARE STATUS.
*           MASTER CLEAR CONTROL LOGIC
*         ENDO
/ 
*         ENTRY-
*         SECTOR 0, TRACK 0, CYLINDER 842 MUST CONTAIN ALL ZEROES.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC43A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - (NOT USED) 
*         B5 - CURRENT SYNC BYTE PATTERN
*         B6 - CYLINDER FOR SEEK (842D) 
*         B7 - TRACK FOR SEEK (0) 
*         B8 - SECTOR FOR SEEK (0)
*         B9 - ABORT TYPE INDEX 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         NONE
* 
*         REMARKS-
* 
*         STANDARD SECTOR FORMAT FOR 885-S--
* 
*                      DECIMAL        OCTAL 
*         FIELD      BITS  BYTES   BITS  BYTES  COMMENTS
*         ---------  ----  ----   -----  -----
*         01          400    50     620     62   STARTS AT LEADING EDGE 
*         ADDRESS      40     5      50      5     OF INDEX 
*         ECC          48     6      60      6
*         02          216    27     330     33
*         SYNC BYTE     8     1      10      1
*         DATA       3864   483    7430    743
*         ECC          48     6      60      6
*         PAD          48     6      60      6
*         ---------  ----  ----   -----  -----
*         TOTAL      4672   101   11100   1110
* 
* 
*         WRITE A SYNC BYTE IN THE DATA FIELD-- 
* 
*                              DECIMAL        OCTAL 
*         FIELD              BITS  BYTES   BITS  BYTES  COMMENTS
*         -----------------  ----  -----   ----  -----  --------
*         INDEX MARK START, 
*         PROCESSOR CLOCK.    215     26+   327     32+ 
*         READ GATE AND 
*         PROCESSOR CLOCK.    333     41+   515     51+ 
*         DROP READ GATE, 
*         PROCESSOR CLOCK.   2563    320+  5003    500+ 
*         ECC S.C.,WRT ECC, 
*         WRT GATE, 16-BIT, 
*         WRITE CLOCK.        188     23+   274     27+ 
*         WRT GATE, 16-BIT, 
*         WRT SYNC, WRT CLK.   31      3+    37      3+ 
*         WRT GATE, 16-BIT, 
*         WRT SYNC, WRT CLK.   88     11    130     13
* 
* 
*         READ A SYNC BYTE IN THE DATA FIELD AT CORRECT TIME--
* 
*                              DECIMAL        OCTAL 
*         FIELD              BITS  BYTES   BITS  BYTES  COMMENTS
*         -----------------  ----  -----   ----  -----  --------
*         INDEX MARK START, 
*         PROCESSOR CLOCK.    215     26+   327     32+ 
*         READ GATE AND 
*         PROCESSOR CLOCK.   2939    367+  5573    557+ 
*         FAST START, READ
*         GATE, PROC CLOCK.    57      7+    71      7+ 
*         SYNC BYTE SEARCH, 
*         READ GATE, AND
*         DRIVE CLOCK.        209     26+   321     32+ 
* 
* 
1  FORMAT FHC43 - SYNC BYTE SEARCH TEST I (DC=7)
2  FORMAT FHC43 - LC=*DECD, EC=*DECD
4  FORMAT FHC43 ERROR(S) = *DECD
5  FORMAT // FHC43 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
6  FORMAT // FHC43 DRIVES DISABLED, P5=XXX1 //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BUSY TO 2 
   EQUATE NPAT TO 20         *NUMBER OF DATA PATTERNS 
* 
/         DISPLAY TITLE MESSAGE 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/         CHECK FOR DRIVES DISABLED.
* 
   IF (P5.AND.1.EQ.0) GOTO 21 
   MSG 6 TO DISPLAY, PRINT
   EXIT 
* 
/         CHECK ACCESS LEVEL
* 
21 IF (AL.GE.4) GOTO 22      *ACCESS LEVEL CHECK
   MSG 5 (AL) TO PRINT,DISPLAY
   EXIT 
* 
/         INITIALIZE. 
* 
22 B0=153                    *TEST NUMBER 6B HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 43D                 *MODULE NUMBER 43D 
* 
/         RESERVE, CONNECT, ETC.
* 
30 B1 = B1 + 1               *INCREMENT LOOP COUNTER
   B9 = 5 
   RES, DRIVE, ABT 31 
   GOTO 40
31 IF(SB(0).EQ.10B) ERROR 3/6, GOTO 67
   IF(SB(0).NE.5020B) GOTO 70 
   IF(SB(15).AND.377.EQ.0) GOTO 70
   IF(SB(16).AND.32.EQ.20) ERROR 3/7, GOTO 67 
   GOTO 70
* 
/         PERFORM SYNC BYTE SEARCH TEST.
* 
40 B5 = B2 + 20B             *SYNC BYTE PATTERN 
* 
   GOSUB 62                  *SEEK
/                       *WRITE SYNC BYTE IN MIDDLE OF SECTOR
   B9 = 22
   CONTROL 0,327,100,300,ABT 70  *INDEX MK START + PROC CLK 
   CONTROL 1,115,100,4,ABT 70    *RD GATE + PROC CLK
   CONTROL 12,3,100,0,ABT 70     *DROP RD GATE + PROC CLK 
   CONTROL 0,274,24,12,ABT 70    *ECC, WRT GATE + WRT CLK 
   CONTROL 0,37,0,13,ABT 70      *WRT GATE, SYNC, + CLOCK 
   CONTROL 0,130,24,12,ABT 70    *WRT SYNC + WRT CLK
   CONTROL 0,0,0,0,EXECUTE,ABT 70  *EXEC CTRL WD SEQ
* 
   GOSUB 61                  *CHECK GENERAL STATUS
   IF (SB(0).NE.0) ERROR 3/1, GOTO 67 
* 
   GOSUB 62                  *SEEK
/                            *READ SYNC BYTE AT CORRECT TIME
   B9 = 22
   CONTROL 0,327,100,300,ABT 70  *INDEX MK START + PROC CLK 
   CONTROL 13,173,100,4,ABT 70   *RD GATE + PROC CLK
   CONTROL 0,71,100,24,ABT 70    *FAST START, RD GATE + PCLK
   CONTROL 0,321,40,44,ABT 70    *SYNC BYTE SEARCH,RD GATE
   CONTROL 0,0,0,0,EXECUTE,ABT 70  *EXEC CTRL WD SEQ
* 
   GOSUB 61                  *CHECK GENERAL STATUS
   IF (SB(0).NE.0) ERROR 3/2, GOTO 67 
* 
   B9 = 20
   STATUS CHANNEL,ABT 70     *CHECK FOR MISCOMPARE BIT
   IF (SB(4).AND.1.NE.0) ERROR 3/3, GOTO 67 
* 
   B9 = 23
   FLAG PULSE,CH=1,ABT 70    *MASTER CLEAR CONTROL LOGIC
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   B9 = 25
   REL, ABT 70                   *RELEASE SUBSYSTEM TO OS 
   GOTO 30 WHILE (B2+1.LT.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 77                   *TERMINATE MODULE
* 
/         GENERAL AND DETAILED STATUS SUBROUTINE
* 
61 B9 = 16
   STATUS GENERAL,ABT 70     *GET GENERAL STATUS
   B9 = 17
   STATUS DETAIL,ABT 70      *GET DETAILED STATUS 
   IF(SB(0).NE.5020B) RETURN
   IF(SB(15).AND.377.EQ.0) RETURN 
   IF(SB(16).AND.32.EQ.20) ERROR 3/7, GOTO 67 
   RETURN 
* 
/         SEEK CYLINDER 842D, TRACK 0, SECTOR 0 
* 
62 B6 = 842D                 *CYLINDER
   B7 = 0                    *TRACK 
   B8 = 0                    *SECTOR
   B9 = 24
   SEEK CYL B6 TRK B7 SEC B8,ABT 70 
   B9 = 21
   OUT,CH=8,0,106,ABT 70     *SET CONTROL SELECT
   OUT,CH=2,0,B5,ABT 70      *SET SYNC BYTE PATTERN 
   RETURN 
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 30                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 CALL 43A                  *EXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 30
* 
/         TERMINATE.
* 
77 IF (ES.AND.RM.NE.0) GOTO 22
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC43A,FMDHT(07),LOCK 
*   5.2.34.1 FHC43A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FMC43B - PROCESS HIGHER ERROR NUMBERS.
*         FMC470 - REPORT UNEXPECTED ERRORS 
*         FMC987 - DISPLAY DETAILED STATUS
*         FMC98N - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC43.
* 
*         BUFFERS USED- 
*         SAME AS FHC43.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC*D - SYNC BYTE SEARCH TEST I (DC=7)
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FMDD
4  FORMAT FHC*D - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6B001 HEX 
* 
10 FORMAT GENERAL STATUS NON-ZERO AFTER SYNC BYTE WRITE.
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B26, B27, AND B22.
13 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/        ERROR NUMBER 6B002 HEX 
* 
14 FORMAT GENERAL STATUS NON-ZERO AFTER SYNC BYTE SEARCH. 
15 FORMAT SUCCESSIVELY REPLACE CARDS
16 FORMAT B26, B27, AND B22.
17 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/        ERROR NUMBER 6B003 HEX 
* 
20 FORMAT SYNC BYTE MISCOMPARE ERROR
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT B26, B27, B22, AND A19. 
23 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/        ERROR NUMBER 6B004 HEX 
* 
24 FORMAT GENERAL STATUS NON-ZERO AFTER BAD SYNC BYTE.
25 FORMAT SUCCESSIVELY REPLACE CARDS
26 FORMAT B26, B27, AND B22.
27 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC43A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 (B13) TO LINE 2
   IF (B15.AND.FLAG1S.NE.0) GOTO 32 
   MSG 4 (B13,EA,B0,EC) TO LINE 3 
   EXIT TO 470               *DISPLAY UNEXPECTED ERRORS 
32 MSG 3 TO LINE 3
   MSG 4(B13,EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.153) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.4) EXIT TO 43B 
* 
/        ERROR NUMBER 6B001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 987
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 987
* 
/        ERROR NUMBER 6B002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 987
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 987
* 
/        ERROR NUMBER 6B003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98N
* 
/        ERROR NUMBER 6B004 HEX 
* 
43 IF (EC.NE.4) GOTO 45 
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 987
   MSG 25 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 987
/ 
45 MSG 30(B13,EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC43B,FMDHT(07),LOCK 
*   5.2.34.2 FHC43B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FMC987 - DISPLAY DETAILED STATUS
*         FMC98N - DISPLAY CHANNEL STATUS.
*         SAME AS FHC43.
* 
*         BUFFERS USED- 
*         SAME AS FHC43.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC*D - SYNC BYTE SEARCH TEST I (DC=7)
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FMDD
4  FORMAT FHC*D - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6B005 HEX 
* 
10 FORMAT NO SYNC BYTE MISCOMPARE WHEN FORCED 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B26, B27, B22, AND B21. 
13 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/        ERROR NUMBER 6B006 HEX 
* 
14 FORMAT DRIVE RESERVED BY OPPOSITE ACCESS STATUS
15 FORMAT SUCCESSIVELY REPLACE CARDS B04, B17, B13, AND A20.
16 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
17 FORMAT 
* 
/        ERROR NUMBER 6B007 HEX 
* 
20 FORMAT DRIVE MALFUNCTION/INTERFACE FAULT 
21 FORMAT SUCCESSIVELY REPLACE CARDS B01, B02, B03, B04,
22 FORMAT B14, B15, B16, B17, B22, B26, B27, AND B21. 
23 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
24 FORMAT B22, B26, B27, AND B21. 
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE UNIT TO 63B 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC*DB - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.153) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.7) GOTO 45 
* 
/        ERROR NUMBER 6B005 HEX 
* 
40 IF (EC.NE.5) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98N
* 
/        ERROR NUMBER 6B006 HEX 
* 
41 IF(EC.NE.6) GOTO 42
   MSG 14 TO LINE 12
   IF(P4.AND.4000.EQ.0) EXIT TO 987 
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 987
* 
/        ERROR NUMBER 6B007 HEX 
* 
42 IF (EC.NE.7) GOTO 45 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 987
   MSG 21 TO LINE 14
   IF(SB(UNIT).AND.10.NE.0)MSG 22 TO LINE 15
   IF(SB(UNIT).AND.10.EQ.0)MSG 24 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 987
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC44,FMDHT(07),LOCK
** 5.2.35  FHC44 - SYNC BYTE SEARCH TEST II (DC=7)
* 
*         PURPOSE-
*         FHC44 VERIFIES THE OPERATION OF THE SYNC BYTE DETECTOR
*         ON THE LOW ORDER DATA PATH BOARD. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 7) IS
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR SYNC BYTE = 20 TO 37 
*           SEEK TO CYL 842 TRK 0 SCT 0.
*           SET CONTROL SELECT ON NOC 8.
*           PLACE SYNC BYTE IN NOC 2
*           WRITE A SYNC BYTE IN THE MIDDLE OF THE SECTOR 
*           CHECK GENERAL STATUS
*           SEEK TO CYL 842 TRK 0 SCT 0.
*           SET CONTROL SELECT ON NOC 8.
*           PLACE SYNC BYTE IN NOC 2
*           READ THE SYNC BYTE AT THE WRONG TIME (EXPECT NO ERROR)
*           CHECK GENERAL STATUS. 
*           CHECK SYNC BYTE MISCOMPARE STATUS.
*           MASTER CLEAR CONTROL LOGIC
*         ENDO
/ 
*         ENTRY-
*         SECTOR 0, TRACK 0, CYLINDER 842 MUST CONTAIN ALL ZEROES.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC43A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - (NOT USED) 
*         B5 - CURRENT SYNC BYTE PATTERN
*         B6 - CYLINDER FOR SEEK (842D) 
*         B7 - TRACK FOR SEEK (0) 
*         B8 - SECTOR FOR SEEK (0)
*         B9 - ABORT TYPE INDEX 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         NONE
* 
*         REMARKS-
* 
*         STANDARD SECTOR FORMAT FOR 885-S--
* 
*                      DECIMAL        OCTAL 
*         FIELD      BITS  BYTES   BITS  BYTES  COMMENTS
*         ---------  ----  ----   -----  -----
*         01          400    50     620     62   STARTS AT LEADING EDGE 
*         ADDRESS      40     5      50      5     OF INDEX 
*         ECC          48     6      60      6
*         02          216    27     330     33
*         SYNC BYTE     8     1      10      1
*         DATA       3864   483    7430    743
*         ECC          48     6      60      6
*         PAD          48     6      60      6
*         ---------  ----  ----   -----  -----
*         TOTAL      4672   101   11100   1110
* 
* 
*         WRITE A SYNC BYTE IN THE DATA FIELD-- 
* 
*                              DECIMAL        OCTAL 
*         FIELD              BITS  BYTES   BITS  BYTES  COMMENTS
*         -----------------  ----  -----   ----  -----  --------
*         INDEX MARK START, 
*         PROCESSOR CLOCK.    215     26+   327     32+ 
*         READ GATE AND 
*         PROCESSOR CLOCK.    333     41+   515     51+ 
*         DROP READ GATE, 
*         PROCESSOR CLOCK.   2563    320+  5003    500+ 
*         ECC S.C.,WRT ECC, 
*         WRT GATE, 16-BIT, 
*         WRITE CLOCK.        188     23+   274     27+ 
*         WRT GATE, 16-BIT, 
*         WRT SYNC, WRT CLK.   31      3+    37      3+ 
*         WRT GATE, 16-BIT, 
*         WRT SYNC, WRT CLK.   88     11    130     13
* 
* 
*         READ A SYNC BYTE IN THE DATA FIELD AT INCORRECT TIME--
* 
*                              DECIMAL        OCTAL 
*         FIELD              BITS  BYTES   BITS  BYTES  COMMENTS
*         -----------------  ----  -----   ----  -----  --------
*         INDEX MARK START, 
*         PROCESSOR CLOCK.    215     26+   327     32+ 
*         READ GATE AND 
*         PROCESSOR CLOCK.   3061    382+  5765    576+ 
*         FAST START, READ
*         GATE, PROC CLOCK.   107     13+   153     15+ 
*         SYNC BYTE SEARCH, 
*         READ GATE, AND
*         DRIVE CLOCK.          8      1     10      1
* 
* 
1  FORMAT FHC44 - SYNC BYTE SEARCH TEST II (DC=7) 
2  FORMAT FHC44 - LC=*DECD, EC=*DECD
4  FORMAT FHC44 ERROR(S) = *DECD
5  FORMAT // FHC44 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
6  FORMAT // FHC44 DRIVES DISABLED, P5=XXX1 //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BUSY TO 2 
   EQUATE NPAT TO 20         *NUMBER OF DATA PATTERNS 
* 
/         DISPLAY TITLE MESSAGE 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/         CHECK FOR DRIVES DISABLED.
* 
   IF (P5.AND.1.EQ.0) GOTO 21 
   MSG 6 TO DISPLAY, PRINT
   EXIT 
* 
/         CHECK ACCESS LEVEL
* 
21 IF (AL.GE.4) GOTO 22      *ACCESS LEVEL CHECK
   MSG 5 (AL) TO PRINT,DISPLAY
   EXIT 
* 
/         INITIALIZE. 
* 
22 B0 = 153                  *TEST NUMBER 6B HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 44D                 *MODULE NUMBER 44D 
* 
/         RESERVE, CONNECT, ETC.
* 
30 B1 = B1 + 1               *INCREMENT LOOP COUNTER
   B9 = 5 
   RES, DRIVE, ABT 31 
   GOTO 40
31 IF(SB(0).EQ.10B) ERROR 3/6, GOTO 67
   IF(SB(0).NE.5020B) GOTO 70 
   IF(SB(15).AND.377.EQ.0) GOTO 70
   IF(SB(16).AND.32.EQ.20) ERROR 3/7, GOTO 67 
   GOTO 70
* 
/         PERFORM SYNC BYTE SEARCH TEST.
* 
40 B5 = B2 + 20B             *SYNC BYTE PATTERN 
* 
   GOSUB 62                  *SEEK
/                       *WRITE SYNC BYTE IN MIDDLE OF SECTOR
   B9 = 22
   CONTROL 0,327,100,300,ABT 70  *INDEX MK START + PROC CLK 
   CONTROL 1,115,100,4,ABT 70    *RD GATE + PROC CLK
   CONTROL 12,3,100,0,ABT 70     *DROP RD GATE + PROC CLK 
   CONTROL 0,274,24,12,ABT 70    *ECC, WRT GATE + WRT CLK 
   CONTROL 0,37,0,13,ABT 70      *WRT GATE, SYNC, + CLOCK 
   CONTROL 0,130,24,12,ABT 70    *WRT SYNC + WRT CLK
   CONTROL 0,0,0,0,EXECUTE,ABT 70  *EXEC CTRL WD SEQ
* 
   GOSUB 61                  *CHECK GENERAL STATUS
   IF (SB(0).NE.0) ERROR 3/1, GOTO 67 
   GOSUB 62                  *SEEK
* 
/                            *READ SYNC BYTE AT WRONG TIME
   B9 = 22
   CONTROL 0,327,100,300,ABT 70  *INDEX MK START + PROC CLK 
   CONTROL 13,365,100,4,ABT 70   *RD GATE + PROC CLK
   CONTROL 0,153,100,24,ABT 70   *FAST START,RD GATE,PRC CLK
   CONTROL 0,10,40,44,ABT 70     *SYNC BYTE SEARCH,RD GATE
   CONTROL 0,0,0,0,EXECUTE,ABT 70  *EXEC CTRL WD SEQ
* 
   GOSUB 61                  *CHECK GENERAL STATUS
   IF (SB(0).NE.0) ERROR 3/4, GOTO 67 
* 
   B9 = 20
   STATUS CHANNEL,ABT 70     *CHECK FOR MISCOMPARE BIT
   IF (SB(4).AND.1.EQ.0) ERROR 3/5, GOTO 67 
* 
   B9 = 23
   FLAG PULSE,CH=1,ABT 70    *MASTER CLEAR CONTROL LOGIC
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   B9 = 25
   REL, ABT 70                   *RELEASE SUBSYSTEM TO OS 
   GOTO 30 WHILE (B2+1.LT.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 77                   *TERMINATE MODULE
* 
/         GENERAL AND DETAILED STATUS SUBROUTINE
* 
61 B9 = 16
   STATUS GENERAL,ABT 70     *GET GENERAL STATUS
   B9 = 17
   STATUS DETAIL,ABT 70      *GET DETAILED STATUS 
   IF(SB(0).NE.5020B) RETURN
   IF(SB(15).AND.377.EQ.0) RETURN 
   IF(SB(16).AND.32.EQ.20) ERROR 3/7, GOTO 67 
   RETURN 
* 
/         SEEK CYLINDER 842D, TRACK 0, SECTOR 0 
* 
62 B6 = 842D                 *CYLINDER
   B7 = 0                    *TRACK 
   B8 = 0                    *SECTOR
   B9 = 24
   SEEK CYL B6 TRK B7 SEC B8,ABT 70 
   B9 = 21
   OUT,CH=8,0,106,ABT 70     *SET CONTROL SELECT
   OUT,CH=2,0,B5,ABT 70      *SET SYNC BYTE PATTERN 
   RETURN 
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 30                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 CALL 43A                  *EXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 30
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 22
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC45,FMDHT(07),LOCK
** 5.2.36 FHC45 - ECC REGISTER TEST (DC=7)
* 
*         PURPOSE-
*         FHC45 VERIFIES THE ABILITY OF THE ECC REGISTER TO RECEIVE,
*         RETAIN, AND RETURN ASSORTED DATA PATTERNS.
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 7) IS
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           CLEAR ECC REGISTER BY SENDING FLAG PULSE 3
*           LOAD DATA PATTERN INTO NOC-S 12, 13, AND 14 
*           DO FOR ALL 4 HEADS
*             SELECT HEAD ON NOC 3. 
*             LOAD ECC REGISTER BY SENDING FLAG PULSE 11
*             READ ECC REGISTER 
*             COMPARE CONTENTS WITH DATA PATTERN
*           ENDO
*         ENDO
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC470 - REPORT UNEXPECTED ERRORS 
*         FHC45A - REPORT EXPECTED ERRORS 
*         FHC98K - GENERATE 48-BIT DATA PATTERNS
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - TEMPORARY STORAGE
*         B6 - TEMPORARY STORAGE
*         B7 - HEAD INDEX 
*         B8 - REGISTER INDEX 
*         B9 - ABORT TYPE INDEX 
*         B14- TEMPORARY STORAGE
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(3) - OB(10) = 8-BIT DATA RECIEVED
*         OB(11) - OB(14) = PACKED DATA RECIEVED
*         OB(100) - OB(217) = 48-BIT DATA PATTERNS
* 
1  FORMAT FHC45 - ECC REGISTER TEST (DC=7)
2  FORMAT FHC45 - LC=*DECD, EC=*DECD
4  FORMAT FHC45 ERROR(S) = *DECD
5  FORMAT EXPECTED  *OCT *OCT *OCT *OCT 
6  FORMAT ACTUAL    *OCT *OCT *OCT *OCT 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPOL TO 72D        *NUMBER OF POLY. PATTERNS
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/        INITIALIZE.
* 
21 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 45D                 *MODULE NUMBER 45D 
   CALL 98K                  *GENERATE 48 BIT DATA PATTERN
* 
/        PERFORM ECC REGISTER TEST. 
* 
40 B1=B1+1
   B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
* 
/         CLEAR REGISTER
* 
   B9 = 23
   FLAG PULSE CH=3, ABT 70   *CLEAR ECC REGISTER
* 
/         PACK DATA 
* 
   B5=OB(B2+100).RS.4        *BITS 00 TO 07 
   B14=OB(B2+100).AND.17.LS.4 
   B6=OB(B2+101).RS.8+B14    *BITS 08 TO 15 
   B9 = 21
   OUT CH=12D,B5,B6,ABT 70   *POLYNOMIAL PARCEL I 
* 
   B5=OB(B2+101).AND.377     *BITS 16 TO 23 
   B6=OB(B2+102).RS.4        *BITS 24 TO 31 
   OUT CH=13D,B5,B6,ABT 70   *POLYNOMIAL PARCEL II
* 
   B14=OB(B2+102).AND.17.LS.4 
   B5=OB(B2+103).RS.8+B14    *BITS 32 TO 39 
   B6=OB(B2+103).AND.377     *BITS 40 TO 47 
   OUT CH=14D,B5,B6,ABT 70   *POLYNOMIAL PARCEL III 
* 
/         LOAD REGISTER 
* 
   B7 = 0                    *INITIALIZE HEAD INDEX 
50 B8 = B7.LS.2              *JUSTIFY HEAD
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT HEAD 
   B9 = 23
   FLAG PULSE CH=11D,ABT 70  *LOAD ECC REGISTER 
* 
/         READ REGISTER 
* 
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 00 TO 15
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(3)=SB(7)
   OB(4)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 16 TO 31
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(5)=SB(7)
   OB(6)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 32 TO 47
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(7)=SB(7)
   OB(10)=SB(8) 
* 
/         UNPACK DATA RECEIVED FROM ECC REGISTER
* 
   B14=OB(3).LS.4 
   OB(11)=OB(4).RS.4+B14
   B14=OB(4).AND.17.LS.8
   OB(12)=OB(5)+B14 
   B14=OB(6).LS.4 
   OB(13)=OB(7).RS.4+B14
   B14=OB(7).AND.17.LS.8
   OB(14)=OB(10)+B14
* 
/         COMPARE DATA
* 
   WC = 4                    *INITIALIZE WORD COUNT 
   COMPARE OB(11) TO OB(B2+100) FOR WC, ABT 65
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 50 WHILE (B7+1.LT.4)
   GOTO 40 WHILE (B2+4.LE.NPOL)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/         DISPLAY DATA ERRORS 
* 
65 ERROR 3/1
   MSG 5 4 WORDS FROM OB(B2+100) TO LINE 7
   MSG 6 4 WORDS FROM OB(11) TO LINE 10 
*  GOTO 67
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 45A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 470  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC45A,FMDHT(07),LOCK 
*   5.2.36.1 FHC45A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC45.
* 
*         BUFFERS USED- 
*         SAME AS FHC45.
* 
* 
* 
/         COMMON MESSAGES 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC45 - ECC REGISTER TEST (DC=7)
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC*D - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT FHC46 - ECC REGISTER CLEAR TEST (DC=7)
* 
/         ERROR NUMBER 6C001/6C005 HEX
* 
10 FORMAT BAD DATA PATTERN READ BACK FROM ECC REGISTER
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT A*D, A17, A20, A21, A*D, A*D, A*D, AND B*D. 
13 FORMAT 
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC*DA - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
* 
* 
31 MSG 1 TO LINE 1
   IF (B13.EQ.45D) MSG 2 TO LINE 2
   IF (B13.EQ.46D) MSG 5 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(B13,EA,B0,EC) TO LINE 5
* 
* 
* 
   IF (B0.NE.154) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.10) GOTO 45
* 
/         ERROR NUMBER 6C001/6C005 HEX
* 
40 IF (EC.EQ.1) GOTO 41 
   IF (EC.NE.5) GOTO 45 
41 MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   IF(B7.EQ.0) MSG 12 (12D,11D,10D,09D,22D) TO LINE 15
   IF(B7.EQ.1) MSG 12 (11D,12D,10D,09D,23D) TO LINE 15
   IF(B7.EQ.2) MSG 12 (10D,12D,11D,09D,24D) TO LINE 15
   IF(B7.EQ.3) MSG 12 (09D,12D,11D,10D,25D) TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
45 MSG 30(B13,EA,B0,EC,EM) TO LINE 12 
* 
* 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC46,FMDHT(07),LOCK
** 5.2.37 FHC46 - ECC REGISTER CLEAR TEST (DC=7)
* 
*         PURPOSE-
*         FHC46 VERIFIES THE ABILITY OF THE PROCESSOR TO CLEAR THE
*         CONTENTS OF THE ECC REGISTER. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 7) IS
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           LOAD DATA PATTERN INTO NOC-S 12, 13, AND 14 
*           DO FOR ALL 4 HEADS
*             SELECT HEAD ON NOC 3. 
*             LOAD ECC REGISTER BY SENDING FLAG PULSE 11
*             CLEAR ECC REGISTER BY SENDING FLAG PULSE 3
*             READ ECC REGISTER 
*             VERIFY THAT CONTENTS ARE ZERO 
*           ENDO
*         ENDO
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC470 - REPORT UNEXPECTED ERRORS 
*         FHC45A - REPORT EXPECTED ERRORS 
*         FHC98K - GENERATE 48-BIT DATA PATTERNS
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - TEMPORARY STORAGE
*         B6 - TEMPORARY STORAGE
*         B7 - HEAD INDEX 
*         B8 - REGISTER INDEX 
*         B9 - ABORT TYPE INDEX 
*         B14- TEMPORARY STORAGE
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         IB(0) THROUGH IB(3) ALL CONTAIN ZEROES. 
*         OB(100) - OB(217) = 48-BIT DATA PATTERNS
* 
* 
*         REMARKS-
* 
*         KNOWN LIMITATIONS-
* 
1  FORMAT FHC46 - ECC REGISTER CLEAR TEST (DC=7)
2  FORMAT FHC46 - LC=*DECD, EC=*DECD
4  FORMAT FHC46 ERROR(S) = *DECD
5  FORMAT EXPECTED  *OCT *OCT *OCT *OCT 
6  FORMAT ACTUAL    *OCT *OCT *OCT *OCT 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPOL TO 72D        *NUMBER OF POLY. PATTERNS
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/         INITIALIZE. 
* 
21 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 46D                 *MODULE NUMBER 46D 
   CALL 98K                  *GENERATE 48 BIT DATA PATTERN
* 
/         PERFORM ECC REGISTER CLEAR TEST.
* 
40 B1=B1+1
   B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
   B5=OB(B2+100).RS.4        *BITS 00 TO 07 
   B14=OB(B2+100).AND.17.LS.4 
   B6=OB(B2+101).RS.8+B14    *BITS 08 TO 15 
   B9 = 21
   OUT CH=12D,B5,B6,ABT 70   *POLYNOMIAL PARCEL I 
* 
   B5=OB(B2+101).AND.377     *BITS 16 TO 23 
   B6=OB(B2+102).RS.4        *BITS 24 TO 31 
   OUT CH=13D,B5,B6,ABT 70   *POLYNOMIAL PARCEL II
* 
   B14=OB(B2+102).AND.17.LS.4 
   B5=OB(B2+103).RS.8+B14    *BITS 32 TO 39 
   B6=OB(B2+103).AND.377     *BITS 40 TO 47 
   OUT CH=14D,B5,B6,ABT 70   *POLYNOMIAL PARCEL III 
* 
/         LOAD REGISTER 
* 
   B7 = 0                    *INITIALIZE HEAD INDEX 
50 B8 = B7.LS.2              *JUSTIFY HEAD
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT HEAD 
   B9 = 23
   FLAG PULSE CH=11D,ABT 70  *LOAD ECC REGISTER 
* 
/         CLEAR REGISTER
* 
   FLAG PULSE CH=3,ABT 70    *CLEAR ECC REGISTER
* 
/         READ REGISTER 
* 
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 00 TO 15
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(3)=SB(7)
   OB(4)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 16 TO 31
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(5)=SB(7)
   OB(6)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 32 TO 47
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(7)=SB(7)
   OB(10)=SB(8) 
* 
/         UNPACK DATA RECEIVED FROM ECC REGISTER
* 
   B14=OB(3).LS.4 
   OB(11)=OB(4).RS.4+B14
   B14=OB(4).AND.17.LS.8
   OB(12)=OB(5)+B14 
   B14=OB(6).LS.4 
   OB(13)=OB(7).RS.4+B14
   B14=OB(7).AND.17.LS.8
   OB(14)=OB(10)+B14
* 
/         COMPARE DATA
* 
   WC = 4                    *INITIALIZE WORD COUNT 
   COMPARE OB(11) TO IB(0) FOR WC, ABT 65 
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 50 WHILE (B7+1.LT.4)
   GOTO 40 WHILE (B2+4.LE.NPOL)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/         DISPLAY DATA ERRORS 
* 
65 ERROR 3/5
   MSG 5 4 WORDS FROM IB(0) TO LINE 7 
   MSG 6 4 WORDS FROM OB(11) TO LINE 10 
*  GOTO 67
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 45A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 470  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/         TERMINATE.
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC47,FMDHT(07),LOCK
** 5.2.38 FHC47 - ECC FUNCTIONAL TEST (DC=7)
* 
*         PURPOSE-
*         FHC47 VERIFIES THAT THE ECC LOGIC FUNCTIONS PROPERLY. 
*         IT USES THE READ FUNCTION TO CHECK THE CHECKWORD OF ALL 
*         THE SECTORS ON THE CE (PRE-ALLOCATED) CYLINDER (842D).
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 7) IS
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         RESERVE CONTROLLER
*         CHECK DRIVE SELECTED AND RESERVED STATUS. 
*         RESERVE DRIVE.
*         CHECK GENERAL AND DETAILED STATUS.
*         WRITE 32 SECTORS. 
*         READ 32 SECTORS.
*         IF READ OR WRITE ABORT, CHECK GENERAL AND DETAILED STATUS.
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC470 - REPORT UNEXPECTED ERRORS 
*         FHC47A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - NUMBER OF SECTORS TO READ
*         B6 - CYLINDER ADDRESS (842D)
*         B7 - TRACK ADDRESS (0)
*         B8 - SECTOR ADDRESS (0) 
*         B9 - ABORT TYPE INDEX 
*         B10- TEMPORARY STORAGE
*         B11- TEMPORARY STORAGE
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
* 
*         REMARKS-
* 
*         KNOWN LIMITATIONS-
* 
1  FORMAT FHC47 - ECC FUNCTIONAL TEST (DC=7)
2  FORMAT FHC47 - LC=*DECD, EC=*DECD
4  FORMAT FHC47 ERROR(S) = *DECD
5  FORMAT // FHC47 NOT EXECUTED, NEEDS AL.LT.21B // 
6  FORMAT // FHC47 DRIVES DISABLED, P5=XXX1 //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE DSR TO 20B         *DRIVE SELECTED AND RESERVED 
* 
/         CHECK FOR DRIVES DISABLED.
* 
20 MSG 1 TO DISPLAY, PRINT
   IF (P5.AND.1.EQ.0) GOTO 21 
   MSG 6 TO DISPLAY, PRINT
   EXIT 
* 
/         CHECK FOR AL.LT.21
* 
21 IF (AL.LT.21) GOTO 22
   MSG 5 TO DISPLAY, PRINT
   EXIT 
* 
/         INITIALIZE. 
* 
22 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B3=0                      *ERROR COUNT 
   B13 = 47D                 *MODULE NUMBER 47D 
   B6=842D                   *CYLINDER
* 
/         TEST DRIVE SELECTED AND RESERVED HARDWARE.
* 
40 B1 = B1 + 1               *INCREMENT LOOP COUNTER
   B9 = 13
   RES CONTROLLER, ABT 70 
   B9 = 23
   FLAG PULSE CH=1,ABT 70    *MASTER CLEAR CONTROLLER 
   B9 = 20
   STATUS CHANNEL, ABT 70    *COPY CHANNEL STATUS 
   IF(SB(21).AND.DSR.NE.0) ERROR 3/12, GOTO 67
   B9 = 5 
   RES DRIVE, ABT 41         *RESERVE DRIVE TEST
   GOTO 43
41 MSG EM TO LINE 7 
   IF(SB(0).EQ.10) ERROR 3/15, GOTO 67
   IF(SB(0).NE.5020B) GOTO 42 
   IF(SB(15).AND.377.EQ.0) GOTO 70
   IF(SB(16).AND.32.EQ.20) ERROR 3/16, GOTO 67
42 IF(SB(0).NE.2) GOTO 70 
   IF(SB(15).AND.1000.NE.0) ERROR 17/17, GOTO 67
   GOTO 70
* 
/         WRITE 32 SECTORS. 
* 
43 B7 = 0                    *TRACK 
   B8=0                      *SECTOR
   B5=32D                    *NUMBER OF SECTORS 
   B9 = 14
   WRITE B5 SECTORS AT CYL B6, TRK B7, SEC B8, ABT 50 
* 
/         READ 32 SECTORS.
* 
   B7=0                      *TRACK 
   B8=0                      *SECTOR
   B5=32D                    *NUMBER OF SECTORS 
   B9 = 15
   READ B5 SECTORS AT CYL B6, TRK B7, SEC B8, ABT 50
* 
/         FINALIZE. 
* 
   IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 77                       *TERMINATE MODULE
* 
/         PROCESS ABORT ON WRITE OR READ COMMAND. 
* 
50 IF (LF.AND.776.NE.4) GOTO 51       *IF ABT AFTER STATUS
   B10 = B9 
   B9 = 16
   STATUS GENERAL, ABT 70             *GENERAL STATUS 
   B9 = 17
   STATUS DETAIL, ABT 70              *DETAILED STATUS
   B9 = B10 
51 B5 = 0 
   IF(SB(25) NE 0) B5=25              *IF RETRY ATTEMPTED 
   MSG EM TO LINE 7 
   IF(SB(B5+2).AND.4000.NE.0) ERROR 7/11, GOTO 67 
   IF(SB(B5+1).AND.10.NE.0) ERROR 3/13, GOTO 67 
   IF(SB(B5+2).AND.1000.NE.0) ERROR 10/11, GOTO 67
   IF(SB(B5+21).AND.4.NE.0) ERROR 3/14, GOTO 67 
   IF(SB(B5).NE.5000B) GOTO 70
   IF(SB(B5+20).AND.4000.NE.0) ERROR 15/20, GOTO 67 
   IF(SB(B5+20).AND.40.NE.0) ERROR 16/17, GOTO 67 
   GOTO 70
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 47A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 470  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC47A,FMDHT(07),LOCK 
*   5.2.38.1 FHC47A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC47B - PROCESS HIGHER ERROR NUMBERS.
*         FHC987 - DISPLAY GENERAL AND DETAILED STATUS. 
*         FHC98N - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC47.
* 
*         BUFFERS USED- 
*         SAME AS FHC47.
* 
* 
* 
*        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC47 - ECC FUNCTIONAL TEST (DC=7)
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FMDD
4  FORMAT FHC47 - LINE *OCT - ERROR NUMBER *H*HE
* 
/         ERROR NUMBER 6C009 HEX
* 
7  FORMAT ADDRESS CHECKWORD ERROR 
10 FORMAT DATA CHECKWORD ERROR
11 FORMAT IF THE CE CYLINDER IS KNOWN TO BE WITHOUT FLAW AND
12 FORMAT PROPERLY FORMATTED, SUCCESSIVELY REPLACE CARDS
13 FORMAT A*D, B*D, B20, A17, AND A21.
* 
/         ERROR NUMBER 6C00A HEX
* 
14 FORMAT DRIVE SELECTED AND RESERVED STATUS STUCK-AT-ONE 
15 FORMAT SUCCESSIVELY REPLACE CARDS B01, B14, AND A18. 
16 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
17 FORMAT 
* 
/         ERROR NUMBER 6C00B HEX
* 
20 FORMAT ADDRESS ERROR (DETAILED STATUS WORD 1)
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT B27, B26, B20, B19, AND A20.
23 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/         ERROR NUMBER 6C00C HEX
* 
24 FORMAT CONTROLLER CHANNEL ACTIVE ERROR 
25 FORMAT SUCCESSIVELY REPLACE CARDS
26 FORMAT A15, B22, B19, AND R/T CARD(A01/A02/A03/A04). 
27 FORMAT 
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC47A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
* 
* 
   IF (B0.NE.154) GOTO 45 
   IF (EC.LT.11) GOTO 45
   IF (EC.GT.14) EXIT TO 47B
* 
/         ERROR NUMBER 6C009 HEX
* 
40 IF (EC.NE.11) GOTO 41
   MSG EM TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 987
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 (12D,22D) TO LINE 16
   EXIT TO 987
* 
/         ERROR NUMBER 6C00A HEX
* 
41 IF(EC.NE.12) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98N
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98N
* 
/         ERROR NUMBER 6C00B HEX
* 
42 IF(EC.NE.13) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 987
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 987
* 
/         ERROR NUMBER 6C00C HEX
* 
43 IF (EC.NE.14B) GOTO 45 
   MSG 24 TO LINE 12
   IF(P4.AND.4000.EQ.0) EXIT TO 987 
   MSG 25 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 987
* 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC47B,FMDHT(07),LOCK 
*   5.2.38.2 FHC47B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC987 - DISPLAY GENERAL AND DETAILED STATUS. 
* 
*         REGISTERS USED- 
*         SAME AS FHC47.
* 
*         BUFFERS USED- 
*         SAME AS FHC47.
* 
* 
* 
*        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC47 - ECC FUNCTIONAL TEST (DC=7)
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FMDD
4  FORMAT FHC47 - LINE *OCT - ERROR NUMBER *H*HE
* 
/         ERROR NUMBER 6C00D HEX
* 
5  FORMAT DRIVE RESERVED BY OPPOSITE ACCESS STATUS
6  FORMAT SUCCESSIVELY REPLACE CARDS
7  FORMAT B04, B17, B13, AND A20. 
10 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/         ERROR NUMBER 6C00E HEX
* 
11 FORMAT DRIVE MALFUNCTION/INTERFACE FAULT 
12 FORMAT SUCCESSIVELY REPLACE CARDS B01, B02, B03, B04,
13 FORMAT B14, B15, B16, B17, B22, B26, B27, AND B21. 
14 FORMAT B22, B26, B27, AND B21. 
* 
/         ERROR NUMBER 6C00F/6C010 HEX
* 
15 FORMAT CONTROLLER LOST DRIVE CLOCK ERROR 
16 FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR
17 FORMAT CONTROLLER AND/OR DRIVE BUSY
20 FORMAT B*D AND B*D.
21 FORMAT B02, B21, B22, B27, B19, A19, A18, AND A21. 
22 FORMAT B01 AND A18.
23 FORMAT B*D, B*D, AND B*D.
24 FORMAT B15,B02,B21,B22,B27,B19,A19,A18,AND A21.
25 FORMAT B14, B01, AND A18.
26 FORMAT B*D, B*D, B*D, B*D, AND B*D.
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE UNIT TO 63B 
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC47B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
   IF (B0.NE.154) GOTO 45 
   IF (EC.LT.15) GOTO 45
   IF (EC.GT.20) GOTO 45
* 
/         ERROR NUMBER 6C00D HEX
* 
40 IF (EC.NE.15) GOTO 41
   MSG 5 TO LINE 12 
   IF(P4.AND.4000.EQ.0) EXIT TO 987 
   MSG 6 TO LINE 14 
   MSG 7 TO LINE 15 
   MSG 10 TO LINE 16
   EXIT TO 987
* 
/         ERROR NUMBER 6C00E HEX
* 
41 IF (EC.NE.16) GOTO 42
   MSG 11 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 987
   MSG 12 TO LINE 14
   IF(SB(UNIT).AND.10.NE.0)MSG 13 TO LINE 15
   IF(SB(UNIT).AND.10.EQ.0)MSG 14 TO LINE 15
   MSG 10 TO LINE 16
   EXIT TO 987
* 
/         ERROR NUMBER 6C00F HEX
* 
42 IF (EC.NE.17) GOTO 43
   MSG EM TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 987
   MSG 6 TO LINE 14 
   B10 = EM + 3 
   IF(SB(UNIT).AND.10.NE.0) B10 = B10 + 3 
   MSG B10 TO LINE 15 
   MSG 10 TO LINE 16
   EXIT TO 987
* 
/         ERROR NUMBER 6C010 HEX
* 
43 IF (EC.NE.20) GOTO 45
   MSG EM TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 987
   MSG 6 TO LINE 14 
   B11 = 22D                  *COMPUTE DATA PATH LOC
   IF (SB(24).AND.400B.NE.0) B11 = 22D
   IF (SB(24).AND.1000B.NE.0) B11 = 23D 
   IF (SB(24).AND.2000B.NE.0) B11 = 24D 
   IF (SB(24).AND.4000B.NE.0) B11 = 25D 
   B10 = B11 - 21D            *COMPUTE DRV INTERFACE LOC
   IF (B11.GE.24D) B10 = B10 - 1
   B12 = B10 + 13D            *COMPUTE OPT INTERFACE LOC
   IF(SB(UNIT).AND.10.EQ.0)MSG 20(B10,B11) TO LINE 15 
   IF(SB(UNIT).AND.10.NE.0)MSG 23(B12,B10,B11) TO LINE 15 
   IF (B9.EQ.15) GOTO 44      *IF READ ABORT, 
   IF (SB(21).AND.1.NE.0) GOTO 44   *IF WRITE ADDRESS ERROR,
   IF (B10.EQ.3D) GOTO 44 
   IF(SB(UNIT).AND.10.EQ.0)MSG 23(3D,B10,B11) TO LINE 15
   IF(SB(UNIT).AND.10.EQ.0) GOTO 44 
   MSG 26 (16D,03D,B12,B10,B11) TO LINE 15
44 MSG 10 TO LINE 16
   EXIT TO 987
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC470,FMDHT(07),LOCK 
*   5.2.38.3 FHC470 - REPORT UNEXPECTED ERRORS
* 
*         PURPOSE-
*         FHC470 DISPLAYS INFORMATION EXPANDING ON ALL
*         ERRORS OTHER THAN THOSE WHICH CAN BE INTERPRETED
*         FOR ISOLATION.
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC47.
* 
*         BUFFERS USED- 
*         SAME AS FHC47.
* 
* 
* 
* 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
4  FORMAT FHC*D - LINE *OCTB - ERROR NUMBER *H*HEH
5  FORMAT ABORT ON .RES DRIVE. COMMAND
/ 
6  FORMAT LF = *OCTB      WORD  DETAILED STATUS (OCTAL) 
7  FORMAT                   1   *OCT *OCT *OCT *OCT *OCT
8  FORMAT    GENERAL        6   *OCT *OCT *OCT *OCT *OCT
9  FORMAT STATUS = *OCTB   11D  *OCT *OCT *OCT *OCT *OCT
12 FORMAT                  16D  *OCT *OCT *OCT *OCT *OCT
13 FORMAT ABORT ON .RES CONTROLLER. COMMAND 
14 FORMAT ABORT ON .WRITE. COMMAND
15 FORMAT ABORT ON .READ. COMMAND 
16 FORMAT ABORT ON .STATUS GENERAL. COMMAND 
17 FORMAT ABORT ON .STATUS DETAIL. COMMAND
20 FORMAT ABORT ON .STATUS CHANNEL. COMMAND 
21 FORMAT ABORT ON .OUT CH. COMMAND 
22 FORMAT ABORT ON .CONTROL. COMMAND
23 FORMAT ABORT ON .FLAG PULSE. COMMAND 
24 FORMAT ABORT ON .SEEK. COMMAND 
25 FORMAT ABORT ON .REL. COMMAND
30 FORMAT UNEXPECTED ERROR
31 MSG 1 TO LINE 1
   MSG 4 (B13,EA,B0,EC) TO LINE 3 
   MSG 30 TO LINE 5 
   MSG B9 TO LINE 6 
   MSG EM TO LINE 7 
   MSG 6 (LF) TO LINE 11
   MSG 7 (SB(1),SB(2),SB(3),SB(4),SB(5)) TO LINE 12 
   MSG 8 (SB(6),SB(7),SB(8),SB(9),SB(12)) TO LINE 13
   MSG 9(SB(0),SB(13),SB(14),SB(15),SB(16),SB(17))TO LINE 14
   MSG 12(SB(20),SB(21),SB(22),SB(23),SB(24)) TO LINE 15
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC49,FMDFT(07),LOCK
** 5.2.39 FHC49 - WRITE VERIFY TEST (DC=7)
* 
*         PURPOSE-
*         FHC49 USES A WRITE VERIFY OPERATION TO ESTABLISH A FINAL
*         CONFIDENCE IN THE OPERABILITY OF THE CONTROLLER.  IT DOES NOT 
*         RELY ON ANY CONTROLLER LOGIC WHICH HAS NOT BEEN PREVIOUSLY
*         VERIFIED TO SOME EXTENT.  IF FHC49 FAILS, EITHER THE DRIVE OR 
*         CONTROLLER COULD BE AT FAULT. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 7) IS
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           FILL THE BUFFER 
*           WRITE A SECTOR
*           WRITE VERIFY THE SECTOR 
*           IF GENERAL STATUS IS NOT ZERO, THEN 
*             REPORT ERROR
*           ENDIF 
*           INVERT A BIT
*           WRITE VERIFY THE SECTOR 
*           IF GENERAL STATUS DOES NOT INCLUDE ABNORMAL 
*           TERMINATION BIT, THEN 
*             REPORT ERROR
*           ENDIF 
*           IF DETAILED STATUS DOES NOT INCLUDE WRITE VERIFY
*           ERROR BIT, THEN 
*             REPORT ERROR
*           ENDIF 
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS.
* 
*         SUBMODULES REFERENCED-
*         FHC490 - REPORT UNEXPECTED ERRORS 
*         FHC49A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - NUMBER OF SECTORS
*         B5 - CYLINDER ADDRESS (842D)
*         B6 - TRACK ADDRESS (0)
*         B7 - SECTOR ADDRESS (0) 
*         B9 - ABORT TYPE INDEX 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
1  FORMAT FHC49 - WRITE VERIFY TEST (DC=7)
2  FORMAT FHC49 - LC=*DECD, EC=*DECD
4  FORMAT FHC49 ERROR(S) = *DECD
5  FORMAT ID-SWITCH - CONTROLLER = *H HEX, DRIVE = *H HEX 
6  FORMAT // FHC49 DRIVES DISABLED, P5=XXX1 //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 07         *NUMBER OF DATA PATTERNS 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF (P5.AND.1.EQ.0) GOTO 21 
   MSG 6 TO DISPLAY, PRINT
   GOTO 77
* 
/        INITIALIZE.
* 
21 B0=157                    *TEST NUMBER 6F HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   WC=502 
   BA=0 
   B4=1                      *NUMBER OF SECTORS 
   B5=842D                   *CYLINDER NUMBER 
   B6=0                      *TRACK NUMBER
   B7=0                      *SECTOR NUMBER 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 502B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 502B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 502B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 502B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 502B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 502B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 502B   4444 PATTERN 
   IF(B2.EQ.7)RANDOM TO OB FOR 502B      RANDOM PATERN
* 
/        PERFORM WRITE VERIFY TEST. 
* 
40 B1=B1+1
   B9 = 13
   RES DRIVE, ABT 70
   B9 = 14
   WRITE B4 SECTORS AT CYL B5, TRK B6, SEC B7, ABT 70 
   B4=1 
   B9 = 15
   VERIFY B4 SECTORS AT CYL B5, TRK B6, SEC B7, ABT 55
   IF (SB(0).NE.0) ERROR 3/1, GOTO 67 
   OB(100)=OB(100).XOR.40    *INVERT A BIT IN THE SECTOR
   B4=1 
   B9 = 15
   VERIFY B4 SECTORS AT CYL B5, TRK B6, SEC B7, ABT 50
   B9 = 16
   STATUS GENERAL, ABT 70 
   B9 = 17
   STATUS DETAIL, ABT 70
   ERROR 3/2, GOTO 67 
* 
50 B9 = 16
   STATUS GENERAL, ABT 70 
   B9 = 17
   STATUS DETAIL, ABT 70
   IF (SB(20).AND.1.EQ.0) ERROR 3/3, GOTO 67
   GOTO 60
55 IF (SB(0).EQ.0) GOTO 70
   ERROR 3/1, GOTO 67 
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 49A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 490  *UNEXPECTED ERROR DISPLAY
/ 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/ 
/         TERMINATE.
* 
76 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   IF (SB(4).EQ.0) GOTO 77   *IF NO DETAILED STATUS, EXIT 
   B10=SB(24).AND.377        *MASK FOR CONTROLLER ID-SWITCH 
   B11=SB(7).AND.3.LS.6      *JUSTIFY UPPER 3-BITS DRIVE ID 
   B11=SB(10).RS.6+B11       *MAKE 8-BIT DRIVE ID-SWITCH
   MSG 5 (B10,B11) TO DISPLAY, PRINT, DAYFILE 
77 END 20 
COMPILE 
   MODULE FHC49A,FMDFT(07),LOCK 
*   5.2.39.1 FHC49A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC986 - DISPLAY GENERAL AND DETAILED STATUS. 
* 
*         REGISTERS USED- 
*         SAME AS FHC49.
* 
*         BUFFERS USED- 
*         SAME AS FHC49.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC49 - WRITE VERIFY TEST (DC=7)
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FMDD
4  FORMAT FHC49 - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6F001 HEX 
* 
10 FORMAT WRITE VERIFY FAILED.
11 FORMAT B27, B26, B20, B19, A20, B22, B01, AND B14. 
12 FORMAT FAILURE IN EITHER DRIVE OR CONTROLLER.
13 FORMAT DIAGNOSTIC FMD MAY HELP ISOLATE FAILURE.
* 
/        ERROR NUMBER 6F002 HEX 
* 
14 FORMAT FORCING A WRITE VERIFY ERROR DID NOT CAUSE A
15 FORMAT GENERAL STATUS OF 5000. 
16 FORMAT UNKNOWN FAILURE IN EITHER DRIVE OR CONTROLLER.
17 FORMAT DIAGNOSTIC FMD MAY HELP ISOLATE FAILURE.
* 
/        ERROR NUMBER 6F003 HEX 
* 
20 FORMAT FORCING A WRITE VERIFY ERROR DID NOT SET THE
21 FORMAT WRITE VERIFY ERROR BIT IN DETAILED STATUS.
22 FORMAT UNKNOWN FAILURE IN EITHER DRIVE OR CONTROLLER.
23 FORMAT DIAGNOSTIC FMD MAY HELP ISOLATE FAILURE.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC49A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.157) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.3) GOTO 45 
* 
/        ERROR NUMBER 6F001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 986
   MSG 5 TO LINE 13 
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 986               *DISPLAY STATUS
* 
/        ERROR NUMBER 6F002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 11
   MSG 15 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 986
   MSG 5 TO LINE 13 
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 986               *DISPLAY STATUS
* 
/        ERROR NUMBER 6F003 HEX 
* 
42 IF (EC.NE.3) GOTO 45 
   MSG 20 TO LINE 11
   MSG 21 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 986
   MSG 5 TO LINE 13 
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 986
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC490,FMDFT(07),LOCK 
*   5.2.39.2 FHC490 - REPORT UNEXPECTED ERRORS
* 
*         PURPOSE-
*         FHC490 DISPLAYS INFORMATION EXPANDING ON ALL
*         ERRORS OTHER THAN THOSE WHICH CAN BE INTERPRETED
*         FOR ISOLATION.
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC49.
* 
*         BUFFERS USED- 
*         SAME AS FHC49.
* 
* 
* 
/ 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC49 - WRITE VERIFY TEST (DC=7)
4  FORMAT FHC49 - LINE *OCT - ERROR NUMBER *H*HE
/ 
6  FORMAT LF=*OCTB        WORD  DETAILED STATUS (OCTAL) 
7  FORMAT                   1   *OCT *OCT *OCT *OCT *OCT
8  FORMAT    GENERAL        6   *OCT *OCT *OCT *OCT *OCT
9  FORMAT STATUS = *OCTB   11D  *OCT *OCT *OCT *OCT *OCT
12 FORMAT                  16D  *OCT *OCT *OCT *OCT *OCT
13 FORMAT ABORT ON .RES DRIVE. COMMAND
14 FORMAT ABORT ON .WRITE. COMMAND
15 FORMAT ABORT ON .VERIFY. COMMAND 
16 FORMAT ABORT ON .STATUS GENERAL. COMMAND 
17 FORMAT ABORT ON .STATUS DETAIL. COMMAND
22 FORMAT UNEXPECTED ERROR
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 4 (EA,B0,EC) TO LINE 3 
   MSG 22 TO LINE 5 
   MSG B9 TO LINE 6 
   MSG EM TO LINE 7 
   MSG 6 (LF) TO LINE 11
   MSG 7 (SB(1),SB(2),SB(3),SB(4),SB(5)) TO LINE 12 
   MSG 8 (SB(6),SB(7),SB(8),SB(9),SB(12)) TO LINE 13
   MSG 9(SB(0),SB(13),SB(14),SB(15),SB(16),SB(17))TO LINE 14
   MSG 12(SB(20),SB(21),SB(22),SB(23),SB(24)) TO LINE 15
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC50,DEMA1(14),LOCK
** 5.2.40 FHC50 - LOOP 885 DECODE TEST (DC=14)
* 
*         PURPOSE-
*         FHC50 VERIFIES THAT DATA PATTERNS CAN BE LOOPED THROUGH THE 
*         885 INTERFACE BOARDS USING THE LOOP 885 DECODE FEATURE. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-4X (DEVICE CODE 14) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         VERIFY PARAMETERS.
*         DO FOR ALL DATA PATTERNS
*           FILL BUFFER 
*           DO FOR EACH WORD IN BUFFER
*             DO FOR ALL 885 DEVICE INTERFACES. 
*               SET THE LOOP 885 DECODE BIT 
*               OUTPUT WORD ON NOC 8
*               VERIFY THAT NIC 8 CONTAINS THE CORRECT WORD 
*               CLEAR LOOP 885 DECODE BIT.
*               CHECK STATUS VALID AND BUS IN PARITY. 
*               ISOLATE DATA ERRORS BASED ON BAD BIT POSITION 
*             ENDO
*           ENDO
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC500 - VERIFY PARAMETERS
*         FHC50A - REPORT EXPECTED ERRORS 
*         FHC570 - REPORT UNEXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - BUFFER INDEX 
*         B6 - TEMPORARY STORAGE
*         B7 - 885 DRIVE INTERFACE NUMBER 
*         B8 - LAST 885 DRIVE INTERFACE NUMBER PLUS ONE 
*         B9 - ABORT TYPE INDEX 
*         B10- LENGTH OF BUFFER LOOP
*         B12- CURRENT DATA PATTERN 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  HOLDS GENERATED DATA PATTERNS
* 
* 
1  FORMAT FHC50 - LOOP 885 DECODE TEST (DC=14)
2  FORMAT FHC50 - LC=*DECD, EC=*DECD
4  FORMAT FHC50 ERROR(S) = *DECD
5  FORMAT DATA ERROR    E*OCT  A*OCT  D*OCT 
6  FORMAT // FHC50 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BIPE TO 1          *BUS IN PARITY ERROR 
   EQUATE VALID TO 2         *STATUS VALID (NIC 8/9)
   EQUATE NPAT TO 06         *NUMBER OF DATA PATTERNS 
   EQUATE LOOPDEC TO 100     *LOOP DECODE BIT 
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/ 
* 
20 CALL 500                  *VERIFY PARAMETERS 
   MSG 1 TO DISPLAY, PRINT
   IF(AL.GE.4) GOTO 21       *ACCESS LEVEL CHECK
   MSG 6 (AL) TO PRINT, DISPLAY 
   EXIT 
* 
/        INITIALIZE.
* 
21 B0=155                    *TEST NUMBER 6D HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 50D                 *MODULE NUMBER 50D 
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 100B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 100B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 100B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 100B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 100B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 100B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 100B   4444 PATTERN 
   IF (B2.LT.4) B10=1        *STATIC PATTERNS 
   IF (B2.LT.10B) B10=12D    *SLIDING PATTERNS
   IF (B2.GE.10B) B10=100    *RANDOM PATTERNS 
   B5=0                      *BUFFER INDEX
25 B7 = 40B                  *FIRST 885 INTERFACE NUMBER
* 
/        PERFORM LOOP 885 DECODE TEST.
* 
40 B1=B1+1
44 B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
* 
/         SET LOOP 885 DECODE BIT IN NOC 1. 
* 
   B6 = LOOPDEC              *LOOPDEC BIT FOR NOC 1 
   B9 = 21
   OUT CH=1,B6,B7,ABT 70     *SET LOOPDEC + 885 NO. 
* 
/         LOOP DATA.
* 
   B12=OB(B5).AND.377 
   OUT CH=8,377B,B12,ABT 70  *SEND PATTERN
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ PATTERN
* 
/         CLEAR LOOP 885 DECODE BIT IN NOC 1. 
* 
   B9 = 21
   OUT CH=1,0,B7,ABT 70      *CLEAR LOOPDEC 
* 
/         COMPARE DATA. 
* 
   IF(SB(21).AND.VALID.EQ.0) ERROR 3/22 GOTO 67 
   IF (SB(22).NE.B12) GOTO 64 
   IF (SB(21).AND.BIPE.NE.0) ERROR 3/21 GOTO 67  *PARITY
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 25 WHILE (B5+1.LT.B10)   *END OF BUFFER LOOP
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/        ANALYZE DATA ERRORS
* 
64 B4=SB(22).XOR.B12
   MSG 5 (B12,SB(22),B4) TO LINE 7
* 
*         DATA ERROR ISOLATION ANALYSIS TABLE 
* 
*         2 3 4  B6  B6 2 3 4 
*         ------------------- 
*         - - -   0  0  - - - 
*         - - X   4  2  X - - 
*         - X -   3  3  - X - 
*         - X X   7  4  - - X 
*         X - -   2  5  X X - 
*         X - X   6  6  X - X 
*         X X -   5  7  - X X 
*         X X X   9  9  X X X 
* 
   B6=0 
   IF (B4.AND.7.NE.0) B6=2
   IF (B4.AND.70.NE.0) B6=B6+3
   IF (B4.AND.300.NE.0) B6=B6+4 
   IF (B6.GT.4) ERROR 3/1, GOTO 67
   IF (B6.EQ.2) ERROR 3/2, GOTO 67
   IF (B6.EQ.3) ERROR 3/3, GOTO 67
   ERROR 3/4, GOTO 67 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 50A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 570  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC50A,DEMA1(14),LOCK 
*   5.2.40.1 FHC50A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC50B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98O - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC50.
* 
*         BUFFERS USED- 
*         SAME AS FHC50.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC50 - LOOP 885 DECODE TEST (DC=14)
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC50 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D001 HEX 
* 
10 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B04, B13, B01, B02, B03, AND A18. 
13 FORMAT B17,B04,B13,B14,B15,B16,B01,B02,B03,AND A18.
* 
/        ERROR NUMBER 6D002 HEX 
* 
14 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 0, 1, 2).
15 FORMAT B01, B04, B13, AND A18. 
16 FORMAT B14, B01, B04, B17, B13, AND A18. 
17 FORMAT 
* 
/        ERROR NUMBER 6D003 HEX 
* 
20 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 3, 4, 5).
21 FORMAT B02, B04, B13, AND A18. 
22 FORMAT B15, B02, B04, B17, B13, AND A18. 
23 FORMAT 
* 
/        ERROR NUMBER 6D004 HEX 
* 
24 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 6, 7)
25 FORMAT B03, B04, B13, AND A18. 
26 FORMAT B16, B03, B04, B17, B13, AND A18. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC50A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.4) EXIT TO 50B 
* 
/        ERROR NUMBER 6D001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
50 MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
* 
/        ERROR NUMBER 6D002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
* 
/        ERROR NUMBER 6D003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98O
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98O
* 
/        ERROR NUMBER 6D004 HEX 
* 
43 IF (EC.NE.4) GOTO 45 
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98O
53 MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98O
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC50B,DEMA1(14),LOCK 
*   5.2.40.2 FHC50B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98O - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC50.
* 
*         BUFFERS USED- 
*         SAME AS FHC50.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC50 - LOOP 885 DECODE TEST (DC=14)
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC50 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D011 HEX 
* 
10 FORMAT DATA PARITY ERROR ON LOOP 885 DECODE. 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B03, B04, B13, AND A18. 
13 FORMAT B16, B03, B04, B13, AND A18.
* 
/         ERROR NUMBER 6D012 HEX
* 
14 FORMAT NO STATUS VALID ON LOOP 885 DECODE. 
15 FORMAT SUCCESSIVELY REPLACE CARD B04.
16 FORMAT 
17 FORMAT 
20 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC50B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.21) GOTO 45
   IF (EC.GT.22) GOTO 45
* 
/        ERROR NUMBER 6D011 HEX 
* 
40 IF (EC.NE.21) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
50 MSG 13 TO LINE 15
   MSG 20 TO LINE 16
   EXIT TO 98O
* 
/         ERROR NUMBER 6D012 HEX
* 
41 IF (EC.NE.22) GOTO 45
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC500,DEMA1(14),LOCK 
*   5.3.30.3 FHC500 - PARAMETER VERIFICATION
* 
*         PURPOSE-
*         FHC500 VERIFIES THAT APPROPRIATE PARAMETERS ARE SET 
*         TO RUN THE FHC5X SERIES OF MODULES. 
* 
*         METHOD- 
*         PARAMETERS ARE CHECKED FOR THREE TYPES OF ERRORS--
*         1.  UNUSED BITS BEING SET.
*         2.  DRIVE-ORIENTED PARAMETERS BEING SET (SINCE FHC
*               ONLY ACCESSES THE PRE-ALLOCATED AREA).
* 
*         ENTRY-
*         PARAMETERS P0 TO P9 ARE DESCRIBED IN MODULE FHC99A. 
* 
*         EXIT- 
*         NO SPECIAL EXIT CONDITIONS. 
* 
*         SUBMODULES REFERNCED- 
*         NONE
* 
*         REGISTERS USED- 
*         B1 - MESSAGE LINE INDEX 
*         B2 - MESSAGE FORMAT INDEX 
* 
*         BUFFERS USED- 
*         NONE
* 
*         KNOWN LIMITATIONS-
*         NONE
* 
* 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC500 - PARAMETER VERIFICATION (DC=14) 
3  FORMAT CHECK P0 - NOT USED, SHOULD BE ZERO 
4  FORMAT CHECK P1 - NOT USED, SHOULD BE ZERO 
5  FORMAT CHECK P2 - NOT USED, SHOULD BE ZERO 
6  FORMAT CHECK P3 - NOT USED, SHOULD BE ZERO 
7  FORMAT CHECK P4 - UNUSED BITS ARE SET
10 FORMAT CHECK P5 - UNUSED BITS ARE SET
11 FORMAT CHECK P7 - NOT USED, SHOULD BE ZERO 
12 FORMAT CHECK P8 - UNUSED BITS ARE SET
13 FORMAT CHECK P9 - UNUSED BITS ARE SET
14 FORMAT 885 UNIT NUMBER ERROR.  SET UN=40 THRU 57.
15 FORMAT CHECK P8 - 885 OPTION NOT SET.
16 FORMAT CHECK P5 - DRIVE MODULES SHOULD NOT BE DISABLED 
24 FORMAT P0 - P4 *OCT *OCT *OCT *OCT *OCT
25 FORMAT P5 - P9 *OCT *OCT *OCT *OCT *OCT
26 FORMAT SUSPECT PARAMETER/UNIT NUMBER ENTRY ERROR 
27 FORMAT -PAUSE- FHC500 - *DECD WARNINGS POSTED. 
30 FORMAT PARAMETERS DESCRIBED IN MODULE FHC99A.
/ 
   EQUATE OPT844 TO 0020     *844 INTERFACE OPTION
   EQUATE OPT885 TO 0040     *885 INTERFACE OPTION
/ 
31 B1 = 14                   *SET MESSAGE LINE INDEX
   MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 2 TO DISPLAY, PRINT
   MSG 24 (P0,P1,P2,P3,P4) TO LINE 7
   MSG 25 (P5,P6,P7,P8,P9) TO LINE 10 
/ 
   B2 = 3 
   IF (P0.NE.0) GOSUB 70
/ 
   B2 = 4 
   IF (P1.NE.0) GOSUB 70
/ 
   B2 = 5 
   IF (P2.NE.0) GOSUB 70
/ 
   B2 = 6 
   IF (P3.NE.0) GOSUB 70
/ 
   B2 = 7 
   IF (P4.AND.3776B.NE.0) GOSUB 70
/ 
   B2 = 10
   IF (P5.AND.6726B.NE.0) GOSUB 70
/ 
   B2 = 16
   IF (P5.AND.1.NE.0) GOSUB 70
/ 
   B2 = 11
   IF (P7.NE.0) GOSUB 70
/ 
   B2 = 12
   IF (P8.AND.7400B.NE.0) GOSUB 70
/ 
   B2 = 13
   IF (P9.AND.7070B.NE.0) GOSUB 70
/ 
   B2 = 14
   IF (SB(63).AND.77B.LT.40B) GOSUB 70
   IF (SB(63).AND.77B.GT.57B) GOSUB 70
/ 
   B2 = 15
   IF (SB(63).AND.10B.EQ.0) GOTO 76 
   IF (P8.AND.OPT885.EQ.0) GOSUB 70 
/ 
   GOTO 76
/ 
70 MSG B2 TO LINE B1
   B1 = B1 + 1
   RETURN 
/ 
76 IF (B1.EQ.14) GOTO 77     *IF NO ERRORS
   B1 = B1 + 1
   MSG 30 TO LINE B1
   MSG 26 TO LINE 12
   B1 = B1 - 15 
   PICTURE
   MSG 27 (B1) TO DISPLAY, PRINT, DAYFILE 
   PAUSE
77 BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC51,DEMA1(14),LOCK
** 5.2.41 FHC51 - LOOP 885 BUS TEST (DC=14) 
* 
*         PURPOSE-
*         FHC51 VERIFIES THAT DATA PATTERNS CAN BE LOOPED THROUGH THE 
*         885 INTERFACE BOARDS USING THE LOOP 885 BUS FEATURE.
*         THIS MODULE ALSO CHECK BUS IN/OUT PARITY. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-4X (DEVICE CODE 14) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR PATTERNS 0 THROUGH 7.
*           FILL BUFFER 
*           DO FOR EACH WORD IN BUFFER
*             DO FOR ALL PARITY STATES. 
*               DO FOR ALL 885 DEVICE INTERFACES. 
*                 SET THE LOOP 885 BUS BIT AND BUS PARITY.
*                 OUTPUT WORD ON NOC 8
*                 VERIFY THAT NIC 8 CONTAINS THE CORRECT WORD 
*                 CLEAR LOOP 885 BUS BIT. 
*                 CHECK STATUS VALID AND BUS IN PARITY. 
*                 ISOLATE DATA ERRORS BASED ON BAD BIT POSITION 
*               ENDO
*             ENDO
*           ENDO
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC570 - REPORT UNEXPECTED ERRORS 
*         FHC51A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - BUFFER INDEX 
*         B6 - TEMPORARY STORAGE
*         B7 - 885 DRIVE INTERFACE NUMBER 
*         B8 - LAST 885 DRIVE INTERFACE NUMBER PLUS ONE 
*         B9 - ABORT TYPE INDEX 
*         B10- LENGTH OF BUFFER LOOP
*         B11- FORCE PARITY INDEX 
*         B12- CURRENT DATA PATTERN 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  CONTAINS WORDS TO BE LOOPED
* 
1  FORMAT FHC51 - LOOP 885 BUS TEST (DC=14) 
2  FORMAT FHC51 - LC=*DECD, EC=*DECD
4  FORMAT FHC51 ERROR(S) = *DECD
5  FORMAT DATA ERROR    E*OCT  A*OCT  D*OCT 
6  FORMAT // FHC51 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BIPE TO 1          *BUS IN PARITY ERROR 
   EQUATE VALID TO 2         *STATUS VALID (NIC 8/9)
   EQUATE NPAT TO 6          *NUMBER OF DATA PATTERNS 
   EQUATE FBIP TO 4          *FORCE BUSIN PARITY
   EQUATE FBOP TO 10         *FORCE BUSOUT PARITY 
   EQUATE LOOPBUS TO 200     *LOOP BUS BIT
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF(AL.GE.4) GOTO 21       *ACCESS LEVEL CHECK
   MSG 6 (AL) TO PRINT, DISPLAY 
   EXIT 
* 
/        INITIALIZE.
* 
21 B0=155                    *TEST NUMBER 6D HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 51D                 *MODULE NUMBER 51D 
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 100B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 100B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 100B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 100B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 100B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 100B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 100B   4444 PATTERN 
   B5=0                      *BUFFER INDEX
   IF (B2.LT.4) B10=1        *STATIC PATTERNS 
   IF (B2.LT.10B) B10=12D    *SLIDING PATTERNS
25 B11 = 0                   *INITIALIZE PARITY INDEX 
* 
/        PERFORM LOOP 885 BUS TEST. 
* 
40 B1=B1+1
   B7 = 40                   *FIRST 885 INTERFACE NUMBER
44 B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
* 
/         DETERMINE PARITY TO FORCE.
* 
   IF(B11.EQ.0) B6=LOOPBUS   *NONE FORCED 
   IF(B11.EQ.1) B6=LOOPBUS+FBIP  *BUSIN PARITY
   IF(B11.EQ.2) B6=LOOPBUS+FBOP  *BUSOUT PARITY 
* 
/         SET LOOP 885 BUS BIT AND BUS PARITY.
* 
   B9 = 21
   OUT CH=1,B6,B7,ABT 70     *SET LOOPBUS + 885 NO. 
* 
/         LOOP DATA.
* 
   B12=OB(B5).AND.377 
   OUT CH=8,B12,377B,ABT 70  *SEND PATTERN
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ PATTERN
* 
/         CLEAR LOOP 885 BUS BIT IN NOC 1.
* 
   B9 = 21
   OUT CH=1,0,B7,ABT 70     *CLEAR LOOPBUS + FORCE PARITY 
* 
/         COMPARE DATA. 
* 
   IF(SB(21).AND.VALID.EQ.0) ERROR 3/26 GOTO 67 
   IF (SB(22).NE.B12) GOTO 64 
   IF(B11.EQ.0) GOTO 50 
   IF(SB(21).AND.BIPE.EQ.0) ERROR 3/27 GOTO 67  *PARITY 
   GOTO 60
50 IF(SB(21).AND.BIPE.NE.0) ERROR 3/25 GOTO 67  *PARITY 
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 40 WHILE (B11+1.LE.2)    *END OF PARITY LOOP
   GOTO 25 WHILE (B5+1.LT.B10)   *END OF BUFFER LOOP
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/        ANALYZE DATA ERRORS
* 
64 B4=SB(22).XOR.B12
   MSG 5 (B12,SB(22),B4) TO LINE 7
* 
*         DATA ERROR ISOLATION ANALYSIS TABLE 
* 
*         2 3 4  B6  B6 2 3 4 
*         ------------------- 
*         - - -   0  0  - - - 
*         - - X   4  2  X - - 
*         - X -   3  3  - X - 
*         - X X   7  4  - - X 
*         X - -   2  5  X X - 
*         X - X   6  6  X - X 
*         X X -   5  7  - X X 
*         X X X   9  9  X X X 
* 
   B6=0 
   IF (B4.AND.7.NE.0) B6=2
   IF (B4.AND.70.NE.0) B6=B6+3
   IF (B4.AND.300.NE.0) B6=B6+4 
   IF (B6.GT.4) ERROR 3/5, GOTO 67
   IF (B6.EQ.2) ERROR 3/6, GOTO 67
   IF (B6.EQ.3) ERROR 3/7, GOTO 67
   ERROR 3/10, GOTO 67
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 51A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 570  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC51A,DEMA1(14),LOCK 
*   5.2.41.1 FHC51A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC51B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98O - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC51.
* 
*         BUFFERS USED- 
*         SAME AS FHC51.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC51 - LOOP 885 BUS TEST (DC=14) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC51 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D005 HEX 
* 
10 FORMAT DATA MISCOMPARE ON LOOP 885 BUS 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B04, B13, B01, B02, B03, AND A18. 
13 FORMAT B17,B04,B13,B14,B15,B16,B01,B02,B03,AND A18.
* 
/        ERROR NUMBER 6D006 HEX 
* 
14 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 0, 1, 2). 
15 FORMAT B01, B04, B13, AND A18. 
16 FORMAT B14, B01, B04, B17, B13, AND A18. 
17 FORMAT 
* 
/        ERROR NUMBER 6D007 HEX 
* 
20 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 3, 4, 5). 
21 FORMAT B02, B04, B13, AND A18. 
22 FORMAT B15, B02, B04, B17, B13, AND A18. 
23 FORMAT 
* 
/        ERROR NUMBER 6D008 HEX 
* 
24 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 6, 7) 
25 FORMAT B03, B04, B13, AND A18. 
26 FORMAT B16, B03, B04, B17, B13, AND A18. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC51A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.5) GOTO 45 
   IF (EC.GT.10) EXIT TO 51B
* 
/        ERROR NUMBER 6D005 HEX 
* 
40 IF (EC.NE.5) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
50 MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
* 
/        ERROR NUMBER 6D006 HEX 
* 
41 IF (EC.NE.6) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
* 
/        ERROR NUMBER 6D007 HEX 
* 
42 IF (EC.NE.7) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98O
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98O
* 
/        ERROR NUMBER 6D008 HEX 
* 
43 IF (EC.NE.10) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98O
53 MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98O
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC51B,DEMA1(14),LOCK 
*   5.2.41.2 FHC51B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98O - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC51.
* 
*         BUFFERS USED- 
*         SAME AS FHC51.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC51 - LOOP 885 BUS TEST (DC=14) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC51 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D015 HEX 
* 
10 FORMAT DATA PARITY ERROR ON LOOP 885 BUS 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B03, B04, B13, AND A18. 
13 FORMAT B16, B03, B04, B13, AND A18.
* 
/         ERROR NUMBER 6D016 HEX
* 
14 FORMAT NO STATUS VALID ON LOOP 885 BUS.
15 FORMAT SUCCESSIVELY REPLACE CARD B04.
16 FORMAT 
17 FORMAT 
* 
/         ERROR NUMBER 6D017 HEX
* 
20 FORMAT NO STATUS PARITY ERROR ON LOOP 885 BUS. 
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT B04, B03, A18, AND A20. 
23 FORMAT 
24 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC51B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.25) GOTO 45
   IF (EC.GT.27) GOTO 45
* 
/        ERROR NUMBER 6D015 HEX 
* 
40 IF (EC.NE.25) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
50 MSG 13 TO LINE 15
   MSG 24 TO LINE 16
   EXIT TO 98O
* 
/         ERROR NUMBER 6D016 HEX
* 
41 IF(EC.NE.26) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
* 
/         ERROR NUMBER 6D017 HEX
* 
42 IF (EC.NE.27B) GOTO 45 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98O
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC52,DEMA1(14),LOCK
** 5.2.42 FHC52 - LOOP 885 WRITE/READ/TAG GATE (DC=14)
* 
*         PURPOSE-
*         FHC52 VERIFIES THE ABILITY TO LOOP GATING SIGNALS 
*         THROUGH THE 885 INTERFACE BOARDS. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-4X (DEVICE CODE 14) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR ALL 885 DEVICE INTERFACES
*           MASTER CLEAR CONTROL LOGIC. 
*           SELECT DEVICE INTERFACE ON NOC 1. 
*           SET SKIP SECTOR MARK. 
*           SEND READ GATE
*           CHECK READ GATE STATUS
*           SEND WRITE GATE AND W/R ECC 
*           CHECK WRITE GATE STATUS 
*           SEND READ GATE AND FAST START 
*           CHECK TAG GATE STATUS 
*           MASTER CLEAR CONTROL LOGIC. 
*           CHECK STATUS VALID. 
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC570 - REPORT UNEXPECTED ERRORS 
*         FHC52A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B3 - ERROR COUNT
*         B4 - NOC 4 DATA 
*         B5 - NOC 5 DATA 
*         B7 - 885 DRIVE INTERFACE NUMBER 
*         B8 - LAST 885 DRIVE INTERFACE NUMBER PLUS ONE 
*         B9 - ABORT TYPE INDEX 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         NONE
* 
* 
1  FORMAT FHC52 - LOOP 885 WRT/READ/TAG GATE (DC=14)
2  FORMAT FHC52 - LC=*DECD, EC=*DECD
4  FORMAT FHC52 ERROR(S) = *DECD
6  FORMAT // FHC52 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/         NORMAL CHANNEL EQUATES
* 
   EQUATE VALID TO 2         *STATUS VALID (NIC 8/9)
   EQUATE WRG9 TO 4 
   EQUATE RDG9 TO 2 
   EQUATE TAG9 TO 1 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF(AL.GE.4) GOTO 21       *ACCESS LEVEL CHECK
   MSG 6 (AL) TO PRINT, DISPLAY 
   EXIT 
* 
/        INITIALIZE.
* 
21 B0=155                    *TEST NUMBER 6D HEX
   B1=0                      *LOOP COUNT
   B3=0                      *ERROR COUNT 
   B13 = 52D                 *MODULE NUMBER 52D 
   B7=40                     *FIRST 885 INTERFACE NUMBER
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
* 
/        PERFORM LOOP 885 WRITE/READ/TAG GATE TEST. 
* 
40 B1=B1+1
44 B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
   B9 = 23
   FLAG PULSE CH=1, ABT 70   *MASTER CLEAR CONTROL LOGIC
   B9 = 21
   OUT CH=1,0,B7,ABT 70      *ENABLE 885 INTERFACE
   OUT CH=2,0,100B,ABT 70    *SKIP SECTOR MARK
* 
/         PERFORM LOOP 885 READ GATE TEST 
* 
   B9 = 22
   CONTROL 377,377,100,4,EXECUTE,ABT 70  *SEND READ GATE
   GOSUB 62                  *READ CHANNEL STATUS 
   IF (SB(24).AND.RDG9.EQ.0) ERROR 3/11 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.RDG9.NE.0) ERROR 3/14 GOTO 67 
* 
/         PERFORM LOOP 885 WRITE GATE TEST
* 
   B9 = 22
   CONTROL 377,377,104,10,EXECUTE,ABT 70  *SEND WRITE GATE
   GOSUB 62                  *READ CHANNEL STATUS 
   IF (SB(24).AND.WRG9.EQ.0) ERROR 3/12 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.WRG9.NE.0) ERROR 3/15 GOTO 67 
* 
/         PERFORM LOOP 885 TAG GATE TEST
* 
   B9 = 22
   CONTROL 377,377,100,24,EXECUTE,ABT 70  *SEND TAG GATE
   GOSUB 62                  *READ CHANNEL STATUS 
   IF (SB(24).AND.TAG9.EQ.0) ERROR 3/13 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.TAG9.NE.0) ERROR 3/16 GOTO 67 
* 
/         CHECK FOR STATUS VALID STUCK-AT-ONE 
* 
   B9 = 23
   FLAG PULSE CH=1,ABT 70    *MASTER CLEAR
   B9 = 20
   STATUS CHANNEL,ABT 70     *READ CHANNEL STATUS 
   IF (SB(21).AND.VALID.NE.0) ERROR 3/17 GOTO 67
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 77                       *TERMINATE MODULE
* 
/         CHANNEL STATUS SUBROUTINE 
* 
62 B9 = 20
   STATUS CHANNEL, ABT 64    *READ CHANNEL STATUS 
   RETURN 
* 
/         TERMINATE CONTROL WORD SEQUENCE 
* 
63 B9 = 21
   OUT CH=4,0,0,ABT 64       *CLEAR NOC 4 
   B9 = 23
   FLAG PULSE CH=5,ABT 64    *TERMINATE CONTROL 
   B9 = 21
   OUT CH=5,0,0,ABT 64       *CLEAR NOC 5 
   B9 = 20
   STATUS CHANNEL, ABT 64    *READ CHANNEL STATUS 
   RETURN 
64 ENDSUB GOTO 70 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 52A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 570  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC52A,DEMA1(14),LOCK 
*   5.2.42.1 FHC52A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC52B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98O - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC52.
* 
*         BUFFERS USED- 
*         SAME AS FHC52.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC52 - LOOP 885 WRT/READ/TAG GATE (DC=14)
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC52 - LINE *OCT - ERROR NUMBER *H*HE
6  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6D009 HEX 
* 
10 FORMAT LOOP READ GATE A CONSTANT ZERO. 
/         SUCCESSIVELY REPLACE CARDS
11 FORMAT B02, B04, B21, B13, 
12 FORMAT B15,B02,B17,B04,B21,B13,
13 FORMAT B27,B22,B23,B24,B25,A19,AND A21.
* 
/        ERROR NUMBER 6D00A HEX 
* 
14 FORMAT LOOP WRITE GATE A CONSTANT ZERO.
/         SUCCESSIVELY REPLACE CARDS
15 FORMAT B01, B04, B21, B13, 
16 FORMAT B14,B01,B17,B04,B21,B13,
17 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        ERROR NUMBER 6D00B HEX 
* 
20 FORMAT LOOP TAG GATE A CONSTANT ZERO.
/         SUCCESSIVELY REPLACE CARDS
21 FORMAT B03, B04, B13, B27, AND B26.
22 FORMAT B16, B03, B17, B04, B13, B27, AND B26.
23 FORMAT 
* 
/        ERROR NUMBER 6D00C HEX 
* 
24 FORMAT LOOP READ GATE A CONSTANT ONE.
/         SUCCESSIVELY REPLACE CARDS
25 FORMAT B02, B04, B21, B13, 
26 FORMAT B15,B02,B17,B04,B21,B13,
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC52A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.11) GOTO 45
   IF (EC.GT.14) EXIT TO 52B
* 
/        ERROR NUMBER 6D009 HEX 
* 
40 IF (EC.NE.11) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 6 TO LINE 13 
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 11 TO LINE 14
   MSG 13 TO LINE 15
   EXIT TO 98O
50 MSG 12 TO LINE 14
   MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
* 
/        ERROR NUMBER 6D00A HEX 
* 
41 IF (EC.NE.12) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98O
51 MSG 16 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98O
* 
/        ERROR NUMBER 6D00B HEX 
* 
42 IF (EC.NE.13) GOTO 43
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98O
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98O
* 
/        ERROR NUMBER 6D00C HEX 
* 
43 IF (EC.NE.14) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98O
53 MSG 26 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98O
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC52B,DEMA1(14),LOCK 
*   5.2.42.2 FHC52B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98O - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC52.
* 
*         BUFFERS USED- 
*         SAME AS FHC52.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC52 - LOOP 885 WRT/READ/TAG GATE (DC=14)
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC52 - LINE *OCT - ERROR NUMBER *H*HE
6  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6D00D HEX 
* 
10 FORMAT LOOP WRITE GATE A CONSTANT ONE. 
/         SUCCESSIVELY REPLACE CARDS
11 FORMAT B01, B04, B21, B13, 
12 FORMAT B14,B01,B17,B04,B21,B13,
13 FORMAT B27, B22, A19, AND A21. 
* 
/        ERROR NUMBER 6D00E HEX 
* 
14 FORMAT LOOP TAG GATE A CONSTANT ONE. 
/         SUCCESSIVELY REPLACE CARDS
15 FORMAT B03, B04, B13, B27, AND B26.
16 FORMAT B16, B03, B17, B04, B13, B27, AND B26.
17 FORMAT 
* 
/         ERROR NUMBER 6D00F HEX
* 
20 FORMAT STATUS VALID SET AFTER MASTER CLEAR.
21 FORMAT SUCCESSIVELY REPLACE CARD B04.
22 FORMAT 
23 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC52B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.15) GOTO 45
   IF (EC.GT.17) GOTO 45
* 
/        ERROR NUMBER 6D00D HEX 
* 
40 IF (EC.NE.15) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 11 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98O
50 MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98O
* 
/        ERROR NUMBER 6D00E HEX 
* 
41 IF (EC.NE.16) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
* 
/         ERROR NUMBER 6D00F HEX
* 
42 IF (EC.NE.17B) GOTO 45 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98O
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC53,DEMA1(14),LOCK
** 5.2.43 FHC53 - SYNC BYTE SEARCH TEST I (DC=14) 
* 
*         PURPOSE-
*         FHC53 VERIFIES THE OPERATION OF THE SYNC BYTE DETECTOR
*         ON THE LOW ORDER DATA PATH BOARD. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-4X (DEVICE CODE 14) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR SYNC BYTE = 20 TO 37 
*           SEEK TO CYL 842 TRK 0 SCT 0.
*           SET CONTROL SELECT ON NOC 8.
*           PLACE SYNC BYTE IN NOC 2
*           WRITE A SYNC BYTE IN THE MIDDLE OF THE SECTOR 
*           CHECK GENERAL STATUS
*           SEEK TO CYL 842 TRK 0 SCT 0.
*           SET CONTROL SELECT ON NOC 8.
*           PLACE SYNC BYTE IN NOC 2
*           READ THE SYNC BYTE AT THE CORRECT TIME (EXPECT NO ERROR)
*           CHECK GENERAL STATUS. 
*           CHECK SYNC BYTE MISCOMPARE STATUS.
*           IF ERROR, CHECK HEADS BIT COUNT.
*           MASTER CLEAR CONTROL LOGIC
*         ENDO
/ 
*         ENTRY-
*         SECTOR 0, TRACK 0, CYLINDER 842 MUST CONTAIN ALL ZEROES.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC53A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - (NOT USED) 
*         B5 - CURRENT SYNC BYTE PATTERN
*         B6 - CYLINDER FOR SEEK (842D) 
*         B7 - TRACK FOR SEEK (0) 
*         B8 - SECTOR FOR SEEK (0)
*         B9 - ABORT TYPE INDEX 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         NONE
* 
*         REMARKS-
* 
*         STANDARD SECTOR FORMAT FOR 885-S--
* 
*                      DECIMAL        OCTAL 
*         FIELD      BITS  BYTES   BITS  BYTES  COMMENTS
*         ---------  ----  ----   -----  -----
*         01          400    50     620     62   STARTS AT LEADING EDGE 
*         ADDRESS      40     5      50      5     OF INDEX 
*         ECC          48     6      60      6
*         02          216    27     330     33
*         SYNC BYTE     8     1      10      1
*         DATA       3864   483    7430    743
*         ECC          48     6      60      6
*         PAD          48     6      60      6
*         ---------  ----  ----   -----  -----
*         TOTAL      4672   101   11100   1110
* 
* 
*         WRITE A SYNC BYTE IN THE DATA FIELD-- 
* 
*                              DECIMAL        OCTAL 
*         FIELD              BITS  BYTES   BITS  BYTES  COMMENTS
*         -----------------  ----  -----   ----  -----  --------
*         INDEX MARK START, 
*         PROCESSOR CLOCK.    215     26+   327     32+ 
*         READ GATE AND 
*         PROCESSOR CLOCK.    333     41+   515     51+ 
*         DROP READ GATE, 
*         PROCESSOR CLOCK.   2563    320+  5003    500+ 
*         ECC S.C.,WRT ECC, 
*         WRT GATE, 16-BIT, 
*         WRITE CLOCK.        188     23+   274     27+ 
*         WRT GATE, 16-BIT, 
*         WRT SYNC, WRT CLK.   31      3+    37      3+ 
*         WRT GATE, 16-BIT, 
*         WRT SYNC, WRT CLK.   88     11    130     13
* 
* 
*         READ A SYNC BYTE IN THE DATA FIELD AT CORRECT TIME--
* 
*                              DECIMAL        OCTAL 
*         FIELD              BITS  BYTES   BITS  BYTES  COMMENTS
*         -----------------  ----  -----   ----  -----  --------
*         INDEX MARK START, 
*         PROCESSOR CLOCK.    215     26+   327     32+ 
*         READ GATE AND 
*         PROCESSOR CLOCK.   2939    367+  5573    557+ 
*         FAST START, READ
*         GATE, PROC CLOCK.    57      7+    71      7+ 
*         SYNC BYTE SEARCH, 
*         READ GATE, AND
*         DRIVE CLOCK.        209     26+   321     32+ 
* 
* 
1  FORMAT FHC53 - SYNC BYTE SEARCH TEST I (DC=14) 
2  FORMAT FHC53 - LC=*DECD, EC=*DECD
4  FORMAT FHC53 ERROR(S) = *DECD
5  FORMAT // FHC53 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
6  FORMAT // FHC53 DRIVES DISABLED, P5=XXX1 //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BUSY TO 2 
   EQUATE NPAT TO 20         *NUMBER OF DATA PATTERNS 
* 
/         DISPLAY TITLE MESSAGE 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/         CHECK FOR DRIVES DISABLED.
* 
   IF (P5.AND.1.EQ.0) GOTO 21 
   MSG 6 TO DISPLAY, PRINT
   EXIT 
* 
/         CHECK ACCESS LEVEL
* 
21 IF (AL.GE.4) GOTO 22      *ACCESS LEVEL CHECK
   MSG 5 (AL) TO PRINT,DISPLAY
   EXIT 
* 
/         INITIALIZE. 
* 
22 B0=153                    *TEST NUMBER 6B HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 53D                 *MODULE NUMBER 53D 
* 
/         RESERVE, CONNECT, ETC.
* 
30 B1 = B1 + 1               *INCREMENT LOOP COUNTER
   B9 = 5 
   RES, DRIVE, ABT 31 
   GOTO 40
31 GOSUB 62                  *CHECK STATUS
   GOTO 70
* 
/         PERFORM SYNC BYTE SEARCH TEST.
* 
40 B5 = B2 + 20B             *SYNC BYTE PATTERN 
* 
   GOSUB 63                  *SEEK
/                       *WRITE SYNC BYTE IN MIDDLE OF SECTOR
   CONTROL 1,115,100,4,ABT 70    *RD GATE + PROC CLK
   CONTROL 12,3,100,0,ABT 70     *DROP RD GATE + PROC CLK 
   CONTROL 0,274,24,12,ABT 70    *ECC, WRT GATE + WRT CLK 
   CONTROL 0,37,0,13,ABT 70      *WRT GATE, SYNC, + CLOCK 
   CONTROL 0,130,24,12,ABT 70    *WRT SYNC + WRT CLK
   CONTROL 0,0,0,0,EXECUTE,ABT 70  *EXEC CTRL WD SEQ
* 
   GOSUB 61                  *CHECK GENERAL STATUS
   IF (SB(0).NE.0) ERROR 3/1, GOTO 70 
* 
   GOSUB 63                  *SEEK
/                            *READ SYNC BYTE AT CORRECT TIME
   CONTROL 13,173,100,4,ABT 70   *RD GATE + PROC CLK
   CONTROL 0,71,100,24,ABT 70    *FAST START, RD GATE + PCLK
   CONTROL 0,321,40,44,ABT 70    *SYNC BYTE SEARCH,RD GATE
   CONTROL 0,0,0,0,EXECUTE,ABT 70  *EXEC CTRL WD SEQ
* 
   GOSUB 61                  *CHECK GENERAL STATUS
   IF (SB(0).NE.0) ERROR 3/2, GOTO 70 
* 
   B9 = 20
   STATUS CHANNEL,ABT 70     *CHECK FOR MISCOMPARE BIT
   IF (SB(4).AND.1.NE.0) ERROR 3/3, GOTO 65 
* 
   B9 = 23
   FLAG PULSE,CH=1,ABT 70    *MASTER CLEAR CONTROL LOGIC
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 30 WHILE (B2+1.LT.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 77                   *TERMINATE MODULE
* 
/         GENERAL AND DETAILED STATUS SUBROUTINE
* 
61 B9 = 16
   STATUS GENERAL,ABT 70     *GET GENERAL STATUS
   B9 = 17
   STATUS DETAIL,ABT 70      *GET DETAILED STATUS 
62 IF(SB(0).EQ.10B) ERROR 3/6, GOTO 70
   IF(SB(0).NE.5020B) RETURN
   IF(SB(15).AND.377.EQ.0) RETURN 
   IF(SB(16).AND.32.EQ.20) ERROR 3/7, GOTO 70 
   RETURN 
* 
/         SEEK CYLINDER 842D, TRACK 0, SECTOR 0 
* 
63 B6 = 842D                 *CYLINDER
   B7 = 0                    *TRACK 
   B8 = 0                    *SECTOR
   B9 = 24
   SEEK CYL B6 TRK B7 SEC B8,ABT 70 
   B9 = 21
   OUT,CH=8,0,106,ABT 70     *SET CONTROL SELECT
   OUT,CH=2,0,B5,ABT 70      *SET SYNC BYTE PATTERN 
   OUT,CH=1,1,100,ABT 70     *SET 4HP + FMD SELECT
   B9 = 22
   CONTROL 0,327,100,300,ABT 70  *INDEX MK START + PROC CLK 
   RETURN 
* 
*         PROCESS LOST CW AND SYNC BYTE MISCOMPARE ERRORS.
* 
65 B4 = 0                    *INITIALIZE HEAD INDEX 
66 B9 = 21
   B6 = B4.LS.4              *JUSTIFY HEAD INDEX
   OUT CH=3,0,B6,ABT 70 
   B9 = 20
   STATUS CHANNEL, ABT 70 
   IB(B4) = SB(12)           *SAVE LOWER BIT COUNT
   GOTO 66 WHILE (B4+1.LT.4)
* 
/         PROCESS ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 30                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 CALL 53A                  *EXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 30
* 
/         TERMINATE.
* 
77 IF (ES.AND.RM.NE.0) GOTO 22
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC53A,DEMA1(14),LOCK 
*   5.2.43.1 FHC53A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC570 - REPORT UNEXPECTED ERRORS 
*         FHC53B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98G - DISPLAY GENERAL AND DETAILED STATUS. 
*         FHC98O - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC53.
* 
*         BUFFERS USED- 
*         SAME AS FHC53.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC*D - SYNC BYTE SEARCH TEST I (DC=14) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FHDD
4  FORMAT FHC*D - LINE *OCT - ERROR NUMBER *H*HE
6  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6B001 HEX 
* 
10 FORMAT GENERAL STATUS NON-ZERO AFTER SYNC BYTE WRITE.
/         SUCCESSIVELY REPLACE CARDS
11 FORMAT B26, B27, B22, B23, B24, AND B25. 
12 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/        ERROR NUMBER 6B002 HEX 
* 
13 FORMAT GENERAL STATUS NON-ZERO AFTER SYNC BYTE SEARCH. 
/         SUCCESSIVELY REPLACE CARDS
14 FORMAT B26, B27, B22, B23, B24, AND B25. 
15 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/        ERROR NUMBER 6B003 HEX 
* 
16 FORMAT SYNC BYTE MISCOMPARE ERROR
/         SUCCESSIVELY REPLACE CARDS
17 FORMAT B*D, B26, B21, B*D, B27, B20, B19,
20 FORMAT B*D, B26, B21, B*D, B*D, B27, B20, B19, 
21 FORMAT A20, A19, AND A21.
22 FORMAT B22,B23,B24,B25,B26,B21,
23 FORMAT B22,B23,B24,B25,B26,B21,B14,B15,B16,
24 FORMAT B01,B02,B03,B27,B20,B19,A20,A19,AND A21.
* 
/        ERROR NUMBER 6B004 HEX 
* 
25 FORMAT GENERAL STATUS NON-ZERO AFTER BAD SYNC BYTE.
/         SUCCESSIVELY REPLACE CARDS
26 FORMAT B26, B27, B22, B23, B24, AND B25. 
27 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC*DA - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 (B13) TO LINE 2
   IF (EC.LT.4000B) GOTO 32 
   MSG 4 (B13,EA,B0,EC) TO LINE 3 
   EXIT TO 570               *DISPLAY UNEXPECTED ERRORS 
32 MSG 3 TO LINE 3
   MSG 4(B13,EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.153) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.4) EXIT TO 53B 
* 
/        ERROR NUMBER 6B001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98G
   MSG 6 TO LINE 14 
   MSG 11 TO LINE 15
   MSG 12 TO LINE 16
   EXIT TO 98G
* 
/        ERROR NUMBER 6B002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 13 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98G
   MSG 6 TO LINE 14 
   MSG 14 TO LINE 15
   MSG 15 TO LINE 16
   EXIT TO 98G
* 
/        ERROR NUMBER 6B003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   MSG 16 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 6 TO LINE 14 
   B6 = 0                    *DEFAULT TO HEAD 0 
   GOSUB 50                  *CHECK NIC 15/0-3
   GOSUB 54                  *COMPUTE BOARD LOCATION
   IF(SB(40).AND.B6.NE.0) GOTO 62 
   IF(B7.LT.50) MSG 17 (B4,B8) TO LINE 15 
   IF(B7.GE.50) MSG 20 (B4,B10,B8) TO LINE 15 
   MSG 21 TO LINE 16
   EXIT TO 98O
62 IF(B7.LT.50) MSG 22 TO LINE 15 
   IF(B7.GE.50) MSG 23 TO LINE 15 
   MSG 24 TO LINE 16
   EXIT TO 98O
* 
/        ERROR NUMBER 6B004 HEX 
* 
43 IF (EC.NE.4) GOTO 45 
   MSG 25 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98G
   MSG 6 TO LINE 14 
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98G
* 
/         CHECK NIC 15/0-3, SYNC BYTE HEAD BITS 
* 
50 IF (SB(40).AND.10.NE.0) B6 = 3  *HEAD 3
   IF (SB(40).AND.4.NE.0) B6 = 2   *HEAD 2
   IF (SB(40).AND.2.NE.0) B6 = 1   *HEAD 1
   IF (SB(40).AND.1.NE.0) B6 = 0   *HEAD 0
   RETURN 
* 
/         COMPUTE BOARD LOCATIONS 
* 
54 B4 = B6 + 22D
   IF(B6.LE.1) B8 = 1D
   IF(B6.GE.2) B8 = B6
   B10 = B8 + 13D 
   B6 = 1.LS.B6.XOR.17B      *COMPUTE HEAD BIT MASK 
   RETURN 
/ 
45 MSG 30(B13,EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC53B,DEMA1(14),LOCK 
*   5.2.43.2 FHC53B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98G - DISPLAY GENERAL AND DETAILED STATUS. 
*         FHC98O - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC53.
* 
*         BUFFERS USED- 
*         SAME AS FHC53.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC*D - SYNC BYTE SEARCH TEST I (DC=14) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FHDD
4  FORMAT FHC*D - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6B005 HEX 
* 
10 FORMAT NO SYNC BYTE MISCOMPARE WHEN FORCED 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B26, B27, B22, B23, B24, B25, AND B21.
13 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/        ERROR NUMBER 6B006 HEX 
* 
14 FORMAT DRIVE RESERVED BY OPPOSITE ACCESS STATUS
15 FORMAT SUCCESSIVELY REPLACE CARDS B04, B17, B13, AND A20.
16 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
17 FORMAT 
* 
/        ERROR NUMBER 6B007 HEX 
* 
20 FORMAT DRIVE MALFUNCTION/INTERFACE FAULT 
21 FORMAT SUCCESSIVELY REPLACE CARDS B01, B02, B03, B04,
22 FORMAT B14,B15,B16,B17,B22,B23,B24,B25,B26,B27,AND B21.
23 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
24 FORMAT B22, B23, B24, B25, B26, B27, AND B21.
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE UNIT TO 63B 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC*DB - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 (B13) TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(B13,EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.153) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.7) GOTO 45 
* 
/        ERROR NUMBER 6B005 HEX 
* 
40 IF (EC.NE.5) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98O
* 
/        ERROR NUMBER 6B006 HEX 
* 
41 IF(EC.NE.6) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98G
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98G
* 
/        ERROR NUMBER 6B007 HEX 
* 
42 IF (EC.NE.7) GOTO 45 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98G
   MSG 21 TO LINE 14
   IF(SB(UNIT).AND.10.NE.0)MSG 22 TO LINE 15
   IF(SB(UNIT).AND.10.EQ.0)MSG 24 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98G
/ 
45 MSG 30(B13,EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC54,DEMA1(14),LOCK
** 5.2.44 FHC54 - SYNC BYTE SEARCH TEST II (DC=14)
* 
*         PURPOSE-
*         FHC54 VERIFIES THE OPERATION OF THE SYNC BYTE DETECTOR
*         ON THE LOW ORDER DATA PATH BOARD. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-4X (DEVICE CODE 14) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR SYNC BYTE = 20 TO 37 
*           SEEK TO CYL 842 TRK 0 SCT 0.
*           SET CONTROL SELECT ON NOC 8.
*           PLACE SYNC BYTE IN NOC 2
*           WRITE A SYNC BYTE IN THE MIDDLE OF THE SECTOR 
*           CHECK GENERAL STATUS
*           SEEK TO CYL 842 TRK 0 SCT 0.
*           SET CONTROL SELECT ON NOC 8.
*           PLACE SYNC BYTE IN NOC 2
*           READ THE SYNC BYTE AT THE WRONG TIME (EXPECT NO ERROR)
*           CHECK GENERAL STATUS. 
*           CHECK SYNC BYTE MISCOMPARE STATUS.
*           MASTER CLEAR CONTROL LOGIC
*         ENDO
/ 
*         ENTRY-
*         SECTOR 0, TRACK 0, CYLINDER 842 MUST CONTAIN ALL ZEROES.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC53A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - (NOT USED) 
*         B5 - CURRENT SYNC BYTE PATTERN
*         B6 - CYLINDER FOR SEEK (842D) 
*         B7 - TRACK FOR SEEK (0) 
*         B8 - SECTOR FOR SEEK (0)
*         B9 - ABORT TYPE INDEX 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         NONE
* 
*         REMARKS-
* 
*         STANDARD SECTOR FORMAT FOR 885-S--
* 
*                      DECIMAL        OCTAL 
*         FIELD      BITS  BYTES   BITS  BYTES  COMMENTS
*         ---------  ----  ----   -----  -----
*         01          400    50     620     62   STARTS AT LEADING EDGE 
*         ADDRESS      40     5      50      5     OF INDEX 
*         ECC          48     6      60      6
*         02          216    27     330     33
*         SYNC BYTE     8     1      10      1
*         DATA       3864   483    7430    743
*         ECC          48     6      60      6
*         PAD          48     6      60      6
*         ---------  ----  ----   -----  -----
*         TOTAL      4672   101   11100   1110
* 
* 
*         WRITE A SYNC BYTE IN THE DATA FIELD-- 
* 
*                              DECIMAL        OCTAL 
*         FIELD              BITS  BYTES   BITS  BYTES  COMMENTS
*         -----------------  ----  -----   ----  -----  --------
*         INDEX MARK START, 
*         PROCESSOR CLOCK.    215     26+   327     32+ 
*         READ GATE AND 
*         PROCESSOR CLOCK.    333     41+   515     51+ 
*         DROP READ GATE, 
*         PROCESSOR CLOCK.   2563    320+  5003    500+ 
*         ECC S.C.,WRT ECC, 
*         WRT GATE, 16-BIT, 
*         WRITE CLOCK.        188     23+   274     27+ 
*         WRT GATE, 16-BIT, 
*         WRT SYNC, WRT CLK.   31      3+    37      3+ 
*         WRT GATE, 16-BIT, 
*         WRT SYNC, WRT CLK.   88     11    130     13
* 
* 
*         READ A SYNC BYTE IN THE DATA FIELD AT INCORRECT TIME--
* 
*                              DECIMAL        OCTAL 
*         FIELD              BITS  BYTES   BITS  BYTES  COMMENTS
*         -----------------  ----  -----   ----  -----  --------
*         INDEX MARK START, 
*         PROCESSOR CLOCK.    215     26+   327     32+ 
*         READ GATE AND 
*         PROCESSOR CLOCK.   3061    382+  5765    576+ 
*         FAST START, READ
*         GATE, PROC CLOCK.   107     13+   153     15+ 
*         SYNC BYTE SEARCH, 
*         READ GATE, AND
*         DRIVE CLOCK.          8      1     10      1
* 
* 
1  FORMAT FHC54 - SYNC BYTE SEARCH TEST II (DC=14)
2  FORMAT FHC54 - LC=*DECD, EC=*DECD
4  FORMAT FHC54 ERROR(S) = *DECD
5  FORMAT // FHC54 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
6  FORMAT // FHC54 DRIVES DISABLED, P5=XXX1 //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BUSY TO 2 
   EQUATE NPAT TO 20         *NUMBER OF DATA PATTERNS 
* 
/         DISPLAY TITLE MESSAGE 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/         CHECK FOR DRIVES DISABLED.
* 
   IF (P5.AND.1.EQ.0) GOTO 21 
   MSG 6 TO DISPLAY, PRINT
   EXIT 
* 
/         CHECK ACCESS LEVEL
* 
21 IF (AL.GE.4) GOTO 22      *ACCESS LEVEL CHECK
   MSG 5 (AL) TO PRINT,DISPLAY
   EXIT 
* 
/         INITIALIZE. 
* 
22 B0 = 153                  *TEST NUMBER 6B HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 54D                 *MODULE NUMBER 54D 
* 
/         RESERVE, CONNECT, ETC.
* 
30 B1 = B1 + 1               *INCREMENT LOOP COUNTER
   B9 = 5 
   RES, DRIVE, ABT 31 
   GOTO 40
31 GOSUB 62                  *CHECK STATUS
   GOTO 70
* 
/         PERFORM SYNC BYTE SEARCH TEST.
* 
40 B5 = B2 + 20B             *SYNC BYTE PATTERN 
* 
   GOSUB 63                  *SEEK
/                       *WRITE SYNC BYTE IN MIDDLE OF SECTOR
   CONTROL 1,115,100,4,ABT 70    *RD GATE + PROC CLK
   CONTROL 12,3,100,0,ABT 70     *DROP RD GATE + PROC CLK 
   CONTROL 0,274,24,12,ABT 70    *ECC, WRT GATE + WRT CLK 
   CONTROL 0,37,0,13,ABT 70      *WRT GATE, SYNC, + CLOCK 
   CONTROL 0,130,24,12,ABT 70    *WRT SYNC + WRT CLK
   CONTROL 0,0,0,0,EXECUTE,ABT 70  *EXEC CTRL WD SEQ
* 
   GOSUB 61                  *CHECK GENERAL STATUS
   IF (SB(0).NE.0) ERROR 3/1, GOTO 67 
   GOSUB 63                  *SEEK
/                            *READ SYNC BYTE AT WRONG TIME
   CONTROL 13,365,100,4,ABT 70   *RD GATE + PROC CLK
   CONTROL 0,153,100,24,ABT 70   *FAST START,RD GATE,PRC CLK
   CONTROL 0,10,40,44,ABT 70     *SYNC BYTE SEARCH,RD GATE
   CONTROL 0,0,0,0,EXECUTE,ABT 70  *EXEC CTRL WD SEQ
* 
   GOSUB 61                  *CHECK GENERAL STATUS
   IF (SB(0).NE.0) ERROR 3/4, GOTO 67 
* 
   B9 = 20
   STATUS CHANNEL,ABT 70     *CHECK FOR MISCOMPARE BIT
   IF (SB(4).AND.1.EQ.0) ERROR 3/5, GOTO 67 
* 
   B9 = 23
   FLAG PULSE,CH=1,ABT 70    *MASTER CLEAR CONTROL LOGIC
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   B9 = 25
   REL, ABT 70               *RELEASE CONTROLLER AND DRIVE TO OS
   GOTO 30 WHILE (B2+1.LT.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 77                   *TERMINATE MODULE
* 
/         GENERAL AND DETAILED STATUS SUBROUTINE
* 
61 B9 = 16
   STATUS GENERAL,ABT 70     *GET GENERAL STATUS
   B9 = 17
   STATUS DETAIL,ABT 70      *GET DETAILED STATUS 
62 IF(SB(0).EQ.10B) ERROR 3/6, GOTO 67
   IF(SB(0).NE.5020B) RETURN
   IF(SB(15).AND.377.EQ.0) RETURN 
   IF(SB(16).AND.32.EQ.20) ERROR 3/7, GOTO 67 
   RETURN 
* 
/         SEEK CYLINDER 842D, TRACK 0, SECTOR 0 
* 
63 B6 = 842D                 *CYLINDER
   B7 = 0                    *TRACK 
   B8 = 0                    *SECTOR
   B9 = 24
   SEEK CYL B6 TRK B7 SEC B8,ABT 70 
   B9 = 21
   OUT,CH=8,0,106,ABT 70     *SET CONTROL SELECT
   OUT,CH=2,0,B5,ABT 70      *SET SYNC BYTE PATTERN 
   OUT,CH=1,1,100,ABT 70     *SET 4HP + FMD SELECT
   B9 = 22
   CONTROL 0,327,100,300,ABT 70  *INDEX MK START + PROC CLK 
   RETURN 
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 30                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 CALL 53A                  *EXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 30
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 22
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC55,DEMA1(14),LOCK
** 5.2.45 FHC55 - ECC REGISTER TEST (DC=14) 
* 
*         PURPOSE-
*         FHC55 VERIFIES THE ABILITY OF THE ECC REGISTER TO RECEIVE,
*         RETAIN, AND RETURN ASSORTED DATA PATTERNS.
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-4X (DEVICE CODE 14) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*             SELECT HEAD ON NOC 3. 
*           CLEAR ECC REGISTER BY SENDING FLAG PULSE 3
*           LOAD DATA PATTERN INTO NOC-S 12, 13, AND 14 
*           DO FOR ALL 4 HEADS
*             LOAD ECC REGISTER BY SENDING FLAG PULSE 11
*             READ ECC REGISTER 
*             COMPARE CONTENTS WITH DATA PATTERN
*           ENDO
*         ENDO
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC55A - REPORT EXPECTED ERRORS 
*         FHC570 - REPORT UNEXPECTED ERRORS 
*         FHC98J - GENERATE 48-BIT DATA PATTERNS
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - TEMPORARY STORAGE
*         B6 - TEMPORARY STORAGE
*         B7 - HEAD INDEX 
*         B8 - REGISTER INDEX 
*         B9 - ABORT TYPE INDEX 
*         B14- TEMPORARY STORAGE
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(3) - OB(10) = 8-BIT DATA RECIEVED
*         OB(11) - OB(14) = PACKED DATA RECIEVED
*         OB(100) - OB(217) = 48-BIT DATA PATTERNS
* 
1  FORMAT FHC55 - ECC REGISTER TEST (DC=14) 
2  FORMAT FHC55 - LC=*DECD, EC=*DECD
4  FORMAT FHC55 ERROR(S) = *DECD
5  FORMAT EXPECTED  *OCT *OCT *OCT *OCT 
6  FORMAT ACTUAL    *OCT *OCT *OCT *OCT 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPOL TO 72D        *NUMBER OF POLY. PATTERNS
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/        INITIALIZE.
* 
21 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 55D                 *MODULE NUMBER 55D 
   CALL 98J                  *GENERATE 48 BIT DATA PATTERN
* 
/        PERFORM ECC REGISTER TEST. 
* 
40 B1=B1+1
   B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
* 
/         CLEAR REGISTER
* 
   B9 = 23
   FLAG PULSE CH=3, ABT 70   *CLEAR ECC REGISTER
* 
/         PACK DATA 
* 
   B5=OB(B2+100).RS.4        *BITS 00 TO 07 
   B14=OB(B2+100).AND.17.LS.4 
   B6=OB(B2+101).RS.8+B14    *BITS 08 TO 15 
   B9 = 21
   OUT CH=12D,B5,B6,ABT 70   *POLYNOMIAL PARCEL I 
* 
   B5=OB(B2+101).AND.377     *BITS 16 TO 23 
   B6=OB(B2+102).RS.4        *BITS 24 TO 31 
   OUT CH=13D,B5,B6,ABT 70   *POLYNOMIAL PARCEL II
* 
   B14=OB(B2+102).AND.17.LS.4 
   B5=OB(B2+103).RS.8+B14    *BITS 32 TO 39 
   B6=OB(B2+103).AND.377     *BITS 40 TO 47 
   OUT CH=14D,B5,B6,ABT 70   *POLYNOMIAL PARCEL III 
* 
/         LOAD REGISTER 
* 
   B7 = 0                    *INITIALIZE HEAD INDEX 
50 B8 = B7.LS.2              *JUSTIFY HEAD
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT HEAD 
   B9 = 23
   FLAG PULSE CH=11D,ABT 70  *LOAD ECC REGISTER 
* 
/         READ REGISTER 
* 
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 00 TO 15
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(3)=SB(7)
   OB(4)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 16 TO 31
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(5)=SB(7)
   OB(6)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 32 TO 47
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(7)=SB(7)
   OB(10)=SB(8) 
* 
/         UNPACK DATA RECEIVED FROM ECC REGISTER
* 
   B14=OB(3).LS.4 
   OB(11)=OB(4).RS.4+B14
   B14=OB(4).AND.17.LS.8
   OB(12)=OB(5)+B14 
   B14=OB(6).LS.4 
   OB(13)=OB(7).RS.4+B14
   B14=OB(7).AND.17.LS.8
   OB(14)=OB(10)+B14
* 
/         COMPARE DATA
* 
   WC = 4                    *INITIALIZE WORD COUNT 
   COMPARE OB(11) TO OB(B2+100) FOR WC, ABT 65
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 50 WHILE (B7+1.LT.4)
   GOTO 40 WHILE (B2+4.LE.NPOL)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/         DISPLAY DATA ERRORS 
* 
65 ERROR 3/1
   MSG 5 4 WORDS FROM OB(B2+100) TO LINE 7
   MSG 6 4 WORDS FROM OB(11) TO LINE 10 
*  GOTO 67
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 55A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 570  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC55A,DEMA1(14),LOCK 
*   5.2.45.1 FHC55A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98O - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC55.
* 
*         BUFFERS USED- 
*         SAME AS FHC55.
* 
* 
* 
/         COMMON MESSAGES 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC55 - ECC REGISTER TEST (DC=14) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC*D - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT FHC56 - ECC REGISTER CLEAR TEST (DC=14) 
* 
/         ERROR NUMBER 6C001/6C005 HEX
* 
10 FORMAT BAD DATA PATTERN READ BACK FROM ECC REGISTER
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT A*D, A17, A20, A21, A*D, A*D, A*D, AND B*D. 
13 FORMAT 
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC*DA - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
* 
* 
31 MSG 1 TO LINE 1
   IF (B13.EQ.55D) MSG 2 TO LINE 2
   IF (B13.EQ.56D) MSG 5 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(B13,EA,B0,EC) TO LINE 5
* 
* 
* 
   IF (B0.NE.154) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.10) GOTO 45
* 
/         ERROR NUMBER 6C001/6C005 HEX
* 
40 IF (EC.EQ.1) GOTO 41 
   IF (EC.NE.5) GOTO 45 
41 MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   IF(B7.EQ.0) MSG 12 (12D,11D,10D,09D,22D) TO LINE 15
   IF(B7.EQ.1) MSG 12 (11D,12D,10D,09D,23D) TO LINE 15
   IF(B7.EQ.2) MSG 12 (10D,12D,11D,09D,24D) TO LINE 15
   IF(B7.EQ.3) MSG 12 (09D,12D,11D,10D,25D) TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
45 MSG 30(B13,EA,B0,EC,EM) TO LINE 12 
* 
* 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC56,DEMA1(14),LOCK
** 5.2.46 FHC56 - ECC REGISTER CLEAR TEST (DC=14) 
* 
*         PURPOSE-
*         FHC56 VERIFIES THE ABILITY OF THE PROCESSOR TO CLEAR THE
*         CONTENTS OF THE ECC REGISTER. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-4X (DEVICE CODE 14) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           LOAD DATA PATTERN INTO NOC-S 12, 13, AND 14 
*           DO FOR ALL 4 HEADS
*             SELECT HEAD ON NOC 3. 
*             LOAD ECC REGISTER BY SENDING FLAG PULSE 11
*             CLEAR ECC REGISTER BY SENDING FLAG PULSE 3
*             READ ECC REGISTER 
*             VERIFY THAT CONTENTS ARE ZERO 
*           ENDO
*         ENDO
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC570 - REPORT UNEXPECTED ERRORS 
*         FHC55A - REPORT EXPECTED ERRORS 
*         FHC98J - GENERATE 48-BIT DATA PATTERNS
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - TEMPORARY STORAGE
*         B6 - TEMPORARY STORAGE
*         B7 - HEAD INDEX 
*         B8 - REGISTER INDEX 
*         B9 - ABORT TYPE INDEX 
*         B14- TEMPORARY STORAGE
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         IB(0) THROUGH IB(3) ALL CONTAIN ZEROES. 
*         OB(100) - OB(217) = 48-BIT DATA PATTERNS
* 
* 
*         REMARKS-
* 
*         KNOWN LIMITATIONS-
* 
1  FORMAT FHC56 - ECC REGISTER CLEAR TEST (DC=14) 
2  FORMAT FHC56 - LC=*DECD, EC=*DECD
4  FORMAT FHC56 ERROR(S) = *DECD
5  FORMAT EXPECTED  *OCT *OCT *OCT *OCT 
6  FORMAT ACTUAL    *OCT *OCT *OCT *OCT 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPOL TO 72D        *NUMBER OF POLY. PATTERNS
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/         INITIALIZE. 
* 
21 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 56D                 *MODULE NUMBER 56D 
   CALL 98J                  *GENERATE 48 BIT DATA PATTERN
* 
/         PERFORM ECC REGISTER CLEAR TEST.
* 
40 B1=B1+1
   B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
   B5=OB(B2+100).RS.4        *BITS 00 TO 07 
   B14=OB(B2+100).AND.17.LS.4 
   B6=OB(B2+101).RS.8+B14    *BITS 08 TO 15 
   B9 = 21
   OUT CH=12D,B5,B6,ABT 70   *POLYNOMIAL PARCEL I 
* 
   B5=OB(B2+101).AND.377     *BITS 16 TO 23 
   B6=OB(B2+102).RS.4        *BITS 24 TO 31 
   OUT CH=13D,B5,B6,ABT 70   *POLYNOMIAL PARCEL II
* 
   B14=OB(B2+102).AND.17.LS.4 
   B5=OB(B2+103).RS.8+B14    *BITS 32 TO 39 
   B6=OB(B2+103).AND.377     *BITS 40 TO 47 
   OUT CH=14D,B5,B6,ABT 70   *POLYNOMIAL PARCEL III 
* 
/         LOAD REGISTER 
* 
   B7 = 0                    *INITIALIZE HEAD INDEX 
50 B8 = B7.LS.2              *JUSTIFY HEAD
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT HEAD 
   B9 = 23
   FLAG PULSE CH=11D,ABT 70  *LOAD ECC REGISTER 
* 
/         CLEAR REGISTER
* 
   FLAG PULSE CH=3,ABT 70    *CLEAR ECC REGISTER
* 
/         READ REGISTER 
* 
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 00 TO 15
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(3)=SB(7)
   OB(4)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 16 TO 31
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(5)=SB(7)
   OB(6)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 32 TO 47
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(7)=SB(7)
   OB(10)=SB(8) 
* 
/         UNPACK DATA RECEIVED FROM ECC REGISTER
* 
   B14=OB(3).LS.4 
   OB(11)=OB(4).RS.4+B14
   B14=OB(4).AND.17.LS.8
   OB(12)=OB(5)+B14 
   B14=OB(6).LS.4 
   OB(13)=OB(7).RS.4+B14
   B14=OB(7).AND.17.LS.8
   OB(14)=OB(10)+B14
* 
/         COMPARE DATA
* 
   WC = 4                    *INITIALIZE WORD COUNT 
   COMPARE OB(11) TO IB(0) FOR WC, ABT 65 
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 50 WHILE (B7+1.LT.4)
   GOTO 40 WHILE (B2+4.LE.NPOL)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/         DISPLAY DATA ERRORS 
* 
65 ERROR 3/5
   MSG 5 4 WORDS FROM IB(0) TO LINE 7 
   MSG 6 4 WORDS FROM OB(11) TO LINE 10 
*  GOTO 67
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 55A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 570  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/         TERMINATE.
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC57,DEMA1(14),LOCK
** 5.2.47 FHC57 - ECC FUNCTIONAL TEST (DC=14) 
* 
*         PURPOSE-
*         FHC57 VERIFIES THAT THE ECC LOGIC FUNCTIONS PROPERLY. 
*         IT USES THE READ FUNCTION TO CHECK THE CHECKWORD OF ALL 
*         THE SECTORS ON THE CE (PRE-ALLOCATED) CYLINDER (842D).
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-4X (DEVICE CODE 14) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         RESERVE CONTROLLER
*         CHECK DRIVE SELECTED AND RESERVED STATUS. 
*         RESERVE DRIVE.
*         CHECK GENERAL AND DETAILED STATUS.
*         WRITE 32 SECTORS. 
*         READ 32 SECTORS.
*         IF READ OR WRITE ABORT, CHECK GENERAL AND DETAILED STATUS.
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC570 - REPORT UNEXPECTED ERRORS 
*         FHC57A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - NUMBER OF SECTORS TO READ
*         B6 - CYLINDER ADDRESS (842D)
*         B7 - TRACK ADDRESS (0)
*         B8 - SECTOR ADDRESS (0) 
*         B9 - ABORT TYPE INDEX 
*         B10- TEMPORARY STORAGE
*         B11- TEMPORARY STORAGE
*         B12- TEMPORARY STORAGE
*         B13- TEMPORARY STORAGE
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
* 
*         REMARKS-
* 
*         KNOWN LIMITATIONS-
* 
1  FORMAT FHC57 - ECC FUNCTIONAL TEST (DC=14) 
2  FORMAT FHC57 - LC=*DECD, EC=*DECD
4  FORMAT FHC57 ERROR(S) = *DECD
5  FORMAT // FHC57 NOT EXECUTED, NEEDS AL.LT.21B // 
6  FORMAT // FHC57 DRIVES DISABLED, P5=XXX1 //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE DSR TO 20B         *DRIVE SELECTED AND RESERVED 
* 
/         CHECK FOR DRIVES DISABLED.
* 
20 MSG 1 TO DISPLAY, PRINT
   IF (P5.AND.1.EQ.0) GOTO 21 
   MSG 6 TO DISPLAY, PRINT
   EXIT 
* 
/         CHECK FOR AL.LT.21
* 
21 IF (AL.LT.21) GOTO 22
   MSG 5 TO DISPLAY, PRINT
   EXIT 
* 
/         INITIALIZE. 
* 
22 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B3=0                      *ERROR COUNT 
   B13 = 57D                 *MODULE NUMBER 57D 
   B6=842D                   *CYLINDER
* 
/         TEST DRIVE SELECTED AND RESERVED HARDWARE.
* 
40 B1 = B1 + 1               *INCREMENT LOOP COUNTER
   B9 = 13
   RES CONTROLLER, ABT 70 
   B9 = 23
   FLAG PULSE CH=1,ABT 70    *MASTER CLEAR CONTROLLER 
   B9 = 20
   STATUS CHANNEL, ABT 70    *COPY CHANNEL STATUS 
   IF(SB(21).AND.DSR.NE.0) ERROR 3/12, GOTO 67
* 
/         RESERVE DRIVE, CHECK FOR MALFUNCTION. 
* 
   B9 = 5 
   RES DRIVE, ABT 41         *RESERVE DRIVE TEST
   GOTO 43
41 MSG EM TO LINE 7 
   IF(SB(0).EQ.10) ERROR 3/15, GOTO 67
   IF(SB(0).NE.5020B) GOTO 42 
   IF(SB(15).AND.377.EQ.0) GOTO 70
   IF(SB(16).AND.32.EQ.20) ERROR 3/16, GOTO 67
42 IF(SB(0).NE.2) GOTO 70 
   IF(SB(15).AND.1000.NE.0) ERROR 17/17, GOTO 67
   GOTO 70
* 
/         WRITE 32 SECTORS. 
* 
43 B7 = 0                    *TRACK 
   B8=0                      *SECTOR
   B5=32D                    *NUMBER OF SECTORS 
   B9 = 14
   WRITE B5 SECTORS AT CYL B6, TRK B7, SEC B8, ABT 50 
* 
/         READ 32 SECTORS.
* 
   B7=0                      *TRACK 
   B8=0                      *SECTOR
   B5=32D                    *NUMBER OF SECTORS 
   B9 = 15
   READ B5 SECTORS AT CYL B6, TRK B7, SEC B8, ABT 50
* 
/         FINALIZE. 
* 
   IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 77                       *TERMINATE MODULE
* 
/         PROCESS ABORT ON WRITE OR READ COMMAND. 
* 
50 IF (LF.AND.776.NE.4) GOTO 51       *IF ABT AFTER STATUS
   B10 = B9 
   B9 = 16
   STATUS GENERAL, ABT 70             *GENERAL STATUS 
   B9 = 17
   STATUS DETAIL, ABT 70              *DETAILED STATUS
   B9 = B10 
51 B5 = 0 
   IF(SB(25) NE 0) B5=25              *IF RETRY ATTEMPTED 
   MSG EM TO LINE 7 
   IF(SB(B5+2).AND.4000.NE.0) ERROR 6/11, GOTO 67 
   IF(SB(B5+1).AND.10.NE.0) ERROR 3/13, GOTO 67 
   IF(SB(B5+2).AND.1000.NE.0) ERROR 7/11, GOTO 67 
   IF(SB(B5+21).AND.4.NE.0) ERROR 3/14, GOTO 67 
   IF(SB(B5).NE.5000B) GOTO 70
   IF(SB(B5+20).AND.4000.NE.0) ERROR 15/20, GOTO 67 
   IF(SB(B5+20).AND.40.NE.0) ERROR 16/17, GOTO 67 
   GOTO 70
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 57A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 570  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC57A,DEMA1(14),LOCK 
*   5.2.47.1 FHC57A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC57B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98G - DISPLAY GENERAL AND DETAILED STATUS. 
*         FHC98O - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC57.
* 
*         BUFFERS USED- 
*         SAME AS FHC57.
* 
* 
* 
*        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC57 - ECC FUNCTIONAL TEST (DC=14) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FHDD
4  FORMAT FHC57 - LINE *OCT - ERROR NUMBER *H*HE
* 
/         ERROR NUMBER 6C009 HEX
* 
6  FORMAT ADDRESS CHECKWORD ERROR 
7  FORMAT DATA CHECKWORD ERROR
10 FORMAT IF THE CE CYLINDER IS KNOWN TO BE WITHOUT FLAW AND
11 FORMAT PROPERLY FORMATTED, SUCCESSIVELY REPLACE CARDS
12 FORMAT A*D, B*D, B20, A17, AND A21.
13 FORMAT A12,A11,A10,A09,B22,B23,B24,B25,B20,A17,AND A21.
* 
/         ERROR NUMBER 6C00A HEX
* 
14 FORMAT DRIVE SELECTED AND RESERVED STATUS STUCK-AT-ONE 
15 FORMAT SUCCESSIVELY REPLACE CARDS B01, B14, AND A18. 
16 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
17 FORMAT 
* 
/         ERROR NUMBER 6C00B HEX
* 
20 FORMAT ADDRESS ERROR (DETAILED STATUS WORD 1)
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT B27, B26, B20, B19, AND A20.
23 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/         ERROR NUMBER 6C00C HEX
* 
24 FORMAT CONTROLLER CHANNEL ACTIVE ERROR 
25 FORMAT SUCCESSIVELY REPLACE CARDS
26 FORMAT A15, B22, B23, B24, B25, B19, 
27 FORMAT AND R/T CARD (A01/A02/A03/A04). 
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC57A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
* 
* 
   IF (B0.NE.154) GOTO 45 
   IF (EC.LT.11) GOTO 45
   IF (EC.GT.14) EXIT TO 57B
* 
/         ERROR NUMBER 6C009 HEX
* 
40 IF (EC.NE.11) GOTO 41
   MSG EM TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98G
   MSG 10 TO LINE 14
   MSG 11 TO LINE 15
   B12 = 0                   *SET DEFAULT VALUE 
   GOSUB 50                  *CHECKWORD HEAD BIT
   GOSUB 54                  *COMPUTE BOARD LOCATION
   IF(SB(B5+20).AND.B12.EQ.0) MSG 12 (B10,B11) TO LINE 16 
   IF(SB(B5+20).AND.B12.NE.0) MSG 13 TO LINE 16 
   EXIT TO 98G
* 
/         ERROR NUMBER 6C00A HEX
* 
41 IF(EC.NE.12) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98O
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98O
* 
/         ERROR NUMBER 6C00B HEX
* 
42 IF(EC.NE.13) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98G
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98G
* 
/         ERROR NUMBER 6C00C HEX
* 
43 IF (EC.NE.14B) GOTO 45 
   MSG 24 TO LINE 12
   IF(P4.AND.4000.EQ.0) EXIT TO 98G 
   MSG 25 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98G
* 
/         CHECK CHECKWORD ERROR HEAD BITS 
* 
50 IF (SB(B5+20).AND.2000.NE.0) B12 = 3  *HEAD 3
   IF (SB(B5+20).AND.1000.NE.0) B12 = 2  *HEAD 2
   IF (SB(B5+20).AND.400.NE.0) B12 = 1   *HEAD 1
   IF (SB(B5+20).AND.200.NE.0) B12 = 0   *HEAD 0
   RETURN 
* 
/         COMPUTE BOARD LOCATIONS 
* 
54 B11 = B12 + 22D           *COMPUTE DATA PATH CARD ADRS 
   B10 = 12D - B12           *COMPUTE ECC CARD ADRS 
   B12 = 1.LS.B12.XOR.17B    *COMPUTE HEAD BIT MASK 
   B12 = B12.LS.7            *LEFT JUSTIFY
   RETURN 
* 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC57B,DEMA1(14),LOCK 
*   5.2.47.2 FHC57B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98G - DISPLAY GENERAL AND DETAILED STATUS. 
* 
*         REGISTERS USED- 
*         SAME AS FHC57.
* 
*         BUFFERS USED- 
*         SAME AS FHC57.
* 
* 
* 
*        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC57 - ECC FUNCTIONAL TEST (DC=14) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FHDD
4  FORMAT FHC57 - LINE *OCT - ERROR NUMBER *H*HE
* 
/         ERROR NUMBER 6C00D HEX
* 
5  FORMAT DRIVE RESERVED BY OPPOSITE ACCESS STATUS
6  FORMAT SUCCESSIVELY REPLACE CARDS
7  FORMAT B04, B17, B13, AND A20. 
10 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/         ERROR NUMBER 6C00E HEX
* 
11 FORMAT DRIVE MALFUNCTION/INTERFACE FAULT 
12 FORMAT SUCCESSIVELY REPLACE CARDS B01, B02, B03, B04,
13 FORMAT B14, B15, B16, B17, B22, B26, B27, AND B21. 
14 FORMAT B22, B26, B27, AND B21. 
* 
/         ERROR NUMBER 6C00F/6C010 HEX
* 
15 FORMAT CONTROLLER LOST DRIVE CLOCK ERROR 
16 FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR
17 FORMAT CONTROLLER AND/OR DRIVE BUSY
20 FORMAT B*D AND B*D.
21 FORMAT B02, B21, B22, B27, B19, A19, A18, AND A21. 
22 FORMAT B01 AND A18.
23 FORMAT B*D, B*D, AND B*D.
24 FORMAT B15,B02,B21,B22,B27,B19,A19,A18,AND A21.
25 FORMAT B14, B01, AND A18.
26 FORMAT B*D, B*D, B*D, B*D, AND B*D.
27 FORMAT B*D,B*D,B*D,B*D,B*D,B*D,AND B*D.
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE UNIT TO 63B 
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC57B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
   IF (B0.NE.154) GOTO 45 
   IF (EC.LT.15) GOTO 45
   IF (EC.GT.20) GOTO 45
* 
/         ERROR NUMBER 6C00D HEX
* 
40 IF (EC.NE.15) GOTO 41
   MSG 5 TO LINE 12 
   IF(P4.AND.4000.EQ.0) EXIT TO 98G 
   MSG 6 TO LINE 14 
   MSG 7 TO LINE 15 
   MSG 10 TO LINE 16
   EXIT TO 98G
* 
/         ERROR NUMBER 6C00E HEX
* 
41 IF (EC.NE.16) GOTO 42
   MSG 11 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98G
   MSG 12 TO LINE 14
   IF(SB(UNIT).AND.10.NE.0)MSG 13 TO LINE 15
   IF(SB(UNIT).AND.10.EQ.0)MSG 14 TO LINE 15
   MSG 10 TO LINE 16
   EXIT TO 98G
* 
/         ERROR NUMBER 6C00F HEX
* 
42 IF (EC.NE.17) GOTO 43
   MSG EM TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98G
   MSG 6 TO LINE 14 
   B10 = EM + 3 
   IF(SB(UNIT).AND.10.NE.0) B10 = B10 + 3 
   MSG B10 TO LINE 15 
   MSG 10 TO LINE 16
   EXIT TO 98G
* 
/         ERROR NUMBER 6C010 HEX
* 
43 IF (EC.NE.20) GOTO 45
   MSG EM TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98G
   MSG 6 TO LINE 14 
   IF (SB(24).AND.7400B.EQ.0) GOTO 47 
   IF (SB(24).AND.400B.NE.0) B11 = 22D
   IF (SB(24).AND.1000B.NE.0) B11 = 23D 
   IF (SB(24).AND.2000B.NE.0) B11 = 24D 
   IF (SB(24).AND.4000B.NE.0) B11 = 25D 
   B10 = B11 - 21D            *COMPUTE DRV INTERFACE LOC
   IF (B11.GE.24D) B10 = B10 - 1
   B12 = B10 + 13D            *COMPUTE OPT INTERFACE LOC
   B13 = B11 - 22D
   B13 = 1.LS.B13.XOR.17B     *COMPUTE HEAD BIT MASK
   B13 = B13.LS.8 
   IF(SB(24).AND.B13.EQ.0) GOTO 50
   MSG 27 (1D,2D,3D,22D,23D,24D,25D) TO LINE 15 
   GOTO 51
47 MSG 26 (22D,23D,24D,25D,21D) TO LINE 15
   GOTO 44
50 IF(SB(UNIT).AND.10.EQ.0)MSG 20(B10,B11) TO LINE 15 
   IF(SB(UNIT).AND.10.NE.0)MSG 23(B12,B10,B11) TO LINE 15 
51 IF (B9.EQ.15) GOTO 44      *IF READ ABORT, 
   IF (SB(21).AND.1.NE.0) GOTO 44   *IF WRITE ADDRESS ERROR,
   IF (B10.EQ.3D) GOTO 44 
   IF(SB(UNIT).AND.10.EQ.0)MSG 23(3D,B10,B11) TO LINE 15
   IF(SB(UNIT).AND.10.EQ.0) GOTO 44 
   MSG 26 (16D,03D,B12,B10,B11) TO LINE 15
44 MSG 10 TO LINE 16
   EXIT TO 98G
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC570,DEMA1(14),LOCK 
*   5.2.47.3 FHC570 - REPORT UNEXPECTED ERRORS
* 
*         PURPOSE-
*         FHC570 DISPLAYS INFORMATION EXPANDING ON ALL
*         ERRORS OTHER THAN THOSE WHICH CAN BE INTERPRETED
*         FOR ISOLATION.
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC57.
* 
*         BUFFERS USED- 
*         SAME AS FHC57.
* 
* 
* 
* 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
4  FORMAT FHC*D - LINE *OCTB - ERROR NUMBER *H*HEH
5  FORMAT ABORT ON .RES DRIVE. COMMAND
/ 
6  FORMAT LF = *OCTB      WORD  DETAILED STATUS (OCTAL) 
7  FORMAT                   1   *OCT *OCT *OCT *OCT *OCT
8  FORMAT    GENERAL        6   *OCT *OCT *OCT *OCT *OCT
9  FORMAT STATUS = *OCTB   11D  *OCT *OCT *OCT *OCT *OCT
12 FORMAT                  16D  *OCT *OCT *OCT *OCT *OCT
13 FORMAT ABORT ON .RES CONTROLLER. COMMAND 
14 FORMAT ABORT ON .WRITE. COMMAND
15 FORMAT ABORT ON .READ. COMMAND 
16 FORMAT ABORT ON .STATUS GENERAL. COMMAND 
17 FORMAT ABORT ON .STATUS DETAIL. COMMAND
20 FORMAT ABORT ON .STATUS CHANNEL. COMMAND 
21 FORMAT ABORT ON .OUT CH. COMMAND 
22 FORMAT ABORT ON .CONTROL. COMMAND
23 FORMAT ABORT ON .FLAG PULSE. COMMAND 
24 FORMAT ABORT ON .SEEK. COMMAND 
25 FORMAT ABORT ON .REL. COMMAND
30 FORMAT UNEXPECTED ERROR
31 MSG 1 TO LINE 1
   MSG 4 (B13,EA,B0,EC) TO LINE 3 
   MSG 30 TO LINE 5 
   MSG B9 TO LINE 6 
   MSG EM TO LINE 7 
   MSG 6 (LF) TO LINE 11
   MSG 7 (SB(1),SB(2),SB(3),SB(4),SB(5)) TO LINE 12 
   MSG 8 (SB(6),SB(7),SB(8),SB(9),SB(12)) TO LINE 13
   MSG 9(SB(0),SB(13),SB(14),SB(15),SB(16),SB(17))TO LINE 14
   MSG 12(SB(20),SB(21),SB(22),SB(23),SB(24)) TO LINE 15
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC59,DEMA2(14),LOCK
** 5.2.48 FHC59 - WRITE VERIFY TEST (DC=14) 
* 
*         PURPOSE-
*         FHC59 USES A WRITE VERIFY OPERATION TO ESTABLISH A FINAL
*         CONFIDENCE IN THE OPERABILITY OF THE CONTROLLER.  IT DOES NOT 
*         RELY ON ANY CONTROLLER LOGIC WHICH HAS NOT BEEN PREVIOUSLY
*         VERIFIED TO SOME EXTENT.  IF FHC59 FAILS, EITHER THE DRIVE OR 
*         CONTROLLER COULD BE AT FAULT. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-4X (DEVICE CODE 14) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           FILL THE BUFFER 
*           WRITE A SECTOR
*           WRITE VERIFY THE SECTOR 
*           IF GENERAL STATUS IS NOT ZERO, THEN 
*             REPORT ERROR
*           ENDIF 
*           INVERT A BIT
*           WRITE VERIFY THE SECTOR 
*           IF GENERAL STATUS DOES NOT INCLUDE ABNORMAL 
*           TERMINATION BIT, THEN 
*             REPORT ERROR
*           ENDIF 
*           IF DETAILED STATUS DOES NOT INCLUDE WRITE VERIFY
*           ERROR BIT, THEN 
*             REPORT ERROR
*           ENDIF 
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS.
* 
*         SUBMODULES REFERENCED-
*         FHC590 - REPORT UNEXPECTED ERRORS 
*         FHC59A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - NUMBER OF SECTORS
*         B5 - CYLINDER ADDRESS (842D)
*         B6 - TRACK ADDRESS (0)
*         B7 - SECTOR ADDRESS (0) 
*         B9 - ABORT TYPE INDEX 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
1  FORMAT FHC59 - WRITE VERIFY TEST (DC=14) 
2  FORMAT FHC59 - LC=*DECD, EC=*DECD
5  FORMAT ID-SWITCH - CONTROLLER = *H HEX, DRIVE = *H HEX 
4  FORMAT FHC59 ERROR(S) = *DECD
6  FORMAT // FHC59 DRIVES DISABLED, P5=XXX1 //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 07         *NUMBER OF DATA PATTERNS 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF (P5.AND.1.EQ.0) GOTO 21 
   MSG 6 TO DISPLAY, PRINT
   GOTO 77
* 
/        INITIALIZE.
* 
21 B0=157                    *TEST NUMBER 6F HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   WC=502 
   BA=0 
   B4=1                      *NUMBER OF SECTORS 
   B5=842D                   *CYLINDER NUMBER 
   B6=0                      *TRACK NUMBER
   B7=0                      *SECTOR NUMBER 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 502B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 502B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 502B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 502B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 502B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 502B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 502B   4444 PATTERN 
   IF(B2.EQ.7)RANDOM TO OB FOR 502B      RANDOM PATERN
* 
/        PERFORM WRITE VERIFY TEST. 
* 
40 B1=B1+1
   B9 = 13
   RES DRIVE, ABT 70
   B9 = 14
   WRITE B4 SECTORS AT CYL B5, TRK B6, SEC B7, ABT 70 
   B4=1 
   B9 = 15
   VERIFY B4 SECTORS AT CYL B5, TRK B6, SEC B7, ABT 55
   IF (SB(0).NE.0) ERROR 3/1, GOTO 67 
   OB(100)=OB(100).XOR.40    *INVERT A BIT IN THE SECTOR
   B4=1 
   B9 = 15
   VERIFY B4 SECTORS AT CYL B5, TRK B6, SEC B7, ABT 50
   B9 = 16
   STATUS GENERAL, ABT 70 
   B9 = 17
   STATUS DETAIL, ABT 70
   ERROR 3/2, GOTO 67 
* 
50 B9 = 16
   STATUS GENERAL, ABT 70 
   B9 = 17
   STATUS DETAIL, ABT 70
   IF (SB(20).AND.1.EQ.0) ERROR 3/3, GOTO 67
   GOTO 60
55 IF (SB(0).EQ.0) GOTO 70
   ERROR 3/1, GOTO 67 
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 59A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 590  *UNEXPECTED ERROR DISPLAY
/ 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/ 
/         TERMINATE.
* 
76 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   IF (SB(4).EQ.0) GOTO 77   *IF NO DETAILED STATUS, EXIT 
   B10=SB(24).AND.377        *MASK FOR CONTROLLER ID-SWITCH 
   B11=SB(7).AND.3.LS.6      *JUSTIFY UPPER 3-BITS DRIVE ID 
   B11=SB(10).RS.6+B11       *MAKE 8-BIT DRIVE ID-SWITCH
   MSG 5 (B10,B11) TO DISPLAY, PRINT, DAYFILE 
77 END 20 
COMPILE 
   MODULE FHC59A,DEMA2(14),LOCK 
*   5.2.48.1 FHC59A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98H - DISPLAY GENERAL AND DETAILED STATUS. 
* 
*         REGISTERS USED- 
*         SAME AS FHC59.
* 
*         BUFFERS USED- 
*         SAME AS FHC59.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC59 - WRITE VERIFY TEST (DC=14) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FHDD
4  FORMAT FHC59 - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6F001 HEX 
* 
10 FORMAT WRITE VERIFY FAILED.
11 FORMAT B27,B26,B20,B19,A20,B22-B25,B01-B03,AND B14-B16.
12 FORMAT FAILURE IN EITHER DRIVE OR CONTROLLER.
13 FORMAT DIAGNOSTIC FHD MAY HELP ISOLATE FAILURE.
* 
/        ERROR NUMBER 6F002 HEX 
* 
14 FORMAT FORCING A WRITE VERIFY ERROR DID NOT CAUSE A
15 FORMAT GENERAL STATUS OF 5000. 
16 FORMAT UNKNOWN FAILURE IN EITHER DRIVE OR CONTROLLER.
17 FORMAT DIAGNOSTIC FHD MAY HELP ISOLATE FAILURE.
* 
/        ERROR NUMBER 6F003 HEX 
* 
20 FORMAT FORCING A WRITE VERIFY ERROR DID NOT SET THE
21 FORMAT WRITE VERIFY ERROR BIT IN DETAILED STATUS.
22 FORMAT UNKNOWN FAILURE IN EITHER DRIVE OR CONTROLLER.
23 FORMAT DIAGNOSTIC FHD MAY HELP ISOLATE FAILURE.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC59A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.157) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.3) GOTO 45 
* 
/        ERROR NUMBER 6F001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98H
   MSG 5 TO LINE 13 
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98H               *DISPLAY STATUS
* 
/        ERROR NUMBER 6F002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 11
   MSG 15 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98H
   MSG 5 TO LINE 13 
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98H               *DISPLAY STATUS
* 
/        ERROR NUMBER 6F003 HEX 
* 
42 IF (EC.NE.3) GOTO 45 
   MSG 20 TO LINE 11
   MSG 21 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98H
   MSG 5 TO LINE 13 
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98H
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC590,DEMA2(14),LOCK 
*   5.2.48.2 FHC590 - REPORT UNEXPECTED ERRORS
* 
*         PURPOSE-
*         FHC590 DISPLAYS INFORMATION EXPANDING ON ALL
*         ERRORS OTHER THAN THOSE WHICH CAN BE INTERPRETED
*         FOR ISOLATION.
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC59.
* 
*         BUFFERS USED- 
*         SAME AS FHC59.
* 
* 
* 
/ 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC59 - WRITE VERIFY TEST (DC=14) 
4  FORMAT FHC59 - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT SUCCESSIVELY REPLACE CARDS
/ 
6  FORMAT LF=*OCTB        WORD  DETAILED STATUS (OCTAL) 
7  FORMAT                   1   *OCT *OCT *OCT *OCT *OCT
8  FORMAT    GENERAL        6   *OCT *OCT *OCT *OCT *OCT
9  FORMAT STATUS = *OCTB   11D  *OCT *OCT *OCT *OCT *OCT
12 FORMAT                  16D  *OCT *OCT *OCT *OCT *OCT
13 FORMAT ABORT ON .RES DRIVE. COMMAND
14 FORMAT ABORT ON .WRITE. COMMAND
15 FORMAT ABORT ON .VERIFY. COMMAND 
16 FORMAT ABORT ON .STATUS GENERAL. COMMAND 
17 FORMAT ABORT ON .STATUS DETAIL. COMMAND
22 FORMAT UNEXPECTED ERROR
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 4 (EA,B0,EC) TO LINE 3 
   MSG 22 TO LINE 5 
   MSG B9 TO LINE 6 
   MSG EM TO LINE 7 
   MSG 6 (LF) TO LINE 11
   MSG 7 (SB(1),SB(2),SB(3),SB(4),SB(5)) TO LINE 12 
   MSG 8 (SB(6),SB(7),SB(8),SB(9),SB(12)) TO LINE 13
   MSG 9(SB(0),SB(13),SB(14),SB(15),SB(16),SB(17))TO LINE 14
   MSG 12(SB(20),SB(21),SB(22),SB(23),SB(24)) TO LINE 15
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
*ENDIF
   MODULE FHC60,LSFMD1(16),LOCK 
** 5.2.31 FHC60 - LOOP 885 DECODE TEST (DC=16)
* 
*         PURPOSE-
*         FHC60 VERIFIES THAT DATA PATTERNS CAN BE LOOPED THROUGH THE 
*         885 INTERFACE BOARDS USING THE LOOP 885 DECODE FEATURE. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 16) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         VERIFY PARAMETERS.
*         DO FOR ALL DATA PATTERNS
*           FILL BUFFER 
*           DO FOR EACH WORD IN BUFFER
*             DO FOR ALL 885 DEVICE INTERFACES. 
*               SET THE LOOP 885 DECODE BIT 
*               OUTPUT WORD ON NOC 8
*               VERIFY THAT NIC 8 CONTAINS THE CORRECT WORD 
*               CLEAR LOOP 885 DECODE BIT.
*               CHECK STATUS VALID AND BUS IN PARITY. 
*               ISOLATE DATA ERRORS BASED ON BAD BIT POSITION 
*             ENDO
*           ENDO
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC600 - VERIFY PARAMETERS
*         FHC670 - REPORT UNEXPECTED ERRORS 
*         FHC60A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - BUFFER INDEX 
*         B6 - TEMPORARY STORAGE
*         B7 - 885 DRIVE INTERFACE NUMBER 
*         B8 - LAST 885 DRIVE INTERFACE NUMBER PLUS ONE 
*         B9 - ABORT TYPE INDEX 
*         B10- LENGTH OF BUFFER LOOP
*         B12- CURRENT DATA PATTERN 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  HOLDS GENERATED DATA PATTERNS
* 
* 
1  FORMAT FHC60 - LOOP 885 DECODE TEST (DC=16)
2  FORMAT FHC60 - LC=*DECD, EC=*DECD
4  FORMAT FHC60 ERROR(S) = *DECD
5  FORMAT DATA ERROR    E*OCT  A*OCT  D*OCT 
6  FORMAT // FHC60 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BIPE TO 1          *BUS IN PARITY ERROR 
   EQUATE VALID TO 2         *STATUS VALID (NIC 8/9)
   EQUATE NPAT TO 06         *NUMBER OF DATA PATTERNS 
   EQUATE LOOPDEC TO 100     *LOOP DECODE BIT 
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/ 
* 
20 CALL 600                  *VERIFY PARAMETERS 
   MSG 1 TO DISPLAY, PRINT
   IF(AL.GE.4) GOTO 21       *ACCESS LEVEL CHECK
   MSG 6 (AL) TO PRINT, DISPLAY 
   EXIT 
* 
/        INITIALIZE.
* 
21 B0=155                    *TEST NUMBER 6D HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 60D                 *MODULE NUMBER 60D 
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 100B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 100B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 100B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 100B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 100B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 100B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 100B   4444 PATTERN 
   B5=0                      *BUFFER INDEX
   IF (B2.LT.4) B10=1        *STATIC PATTERNS 
   IF (B2.LT.10B) B10=12D    *SLIDING PATTERNS
   IF (B2.GE.10B) B10=100    *RANDOM PATTERNS 
25 B7 = 40B                  *FIRST 885 INTERFACE NUMBER
* 
/        PERFORM LOOP 885 DECODE TEST.
* 
40 B1=B1+1
44 B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
* 
/         SET LOOP 885 DECODE BIT IN NOC 1. 
* 
   B6 = LOOPDEC              *LOOPDEC BIT FOR NOC 1 
   B9 = 21
   OUT CH=1,B6,B7,ABT 70     *SET LOOPDEC + 885 NO. 
* 
/         LOOP DATA.
* 
   B12=OB(B5).AND.377 
   OUT CH=8,377B,B12,ABT 70  *SEND PATTERN
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ PATTERN
* 
/         CLEAR LOOP 885 DECODE BIT IN NOC 1. 
* 
   B9 = 21
   OUT CH=1,0,B7,ABT 70      *CLEAR LOOPDEC 
* 
/         COMPARE DATA. 
* 
   IF(SB(21).AND.VALID.EQ.0) ERROR 3/22 GOTO 67 
   IF (SB(22).NE.B12) GOTO 64 
   IF (SB(21).AND.BIPE.NE.0) ERROR 3/21 GOTO 67  *PARITY
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 25 WHILE (B5+1.LT.B10)   *END OF BUFFER LOOP
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/        ANALYZE DATA ERRORS
* 
64 B4=SB(22).XOR.B12
   MSG 5 (B12,SB(22),B4) TO LINE 7
* 
*         DATA ERROR ISOLATION ANALYSIS TABLE 
* 
*         2 3 4  B6  B6 2 3 4 
*         ------------------- 
*         - - -   0  0  - - - 
*         - - X   4  2  X - - 
*         - X -   3  3  - X - 
*         - X X   7  4  - - X 
*         X - -   2  5  X X - 
*         X - X   6  6  X - X 
*         X X -   5  7  - X X 
*         X X X   9  9  X X X 
* 
   B6=0 
   IF (B4.AND.7.NE.0) B6=2
   IF (B4.AND.70.NE.0) B6=B6+3
   IF (B4.AND.300.NE.0) B6=B6+4 
   IF (B6.GT.4) ERROR 3/1, GOTO 67
   IF (B6.EQ.2) ERROR 3/2, GOTO 67
   IF (B6.EQ.3) ERROR 3/3, GOTO 67
   ERROR 3/4, GOTO 67 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 60A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 670  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC60A,LSFMD1(16),LOCK
*   5.2.31.1 FHC60A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC60B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98T - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC60.
* 
*         BUFFERS USED- 
*         SAME AS FHC60.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC60 - LOOP 885 DECODE TEST (DC=16)
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC60 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D001 HEX 
* 
10 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B04, B13, B01, B02, B03, AND A18. 
13 FORMAT B17,B04,B13,B14,B15,B16,B01,B02,B03,AND A18.
* 
/        ERROR NUMBER 6D002 HEX 
* 
14 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 0, 1, 2).
15 FORMAT B01, B04, B13, AND A18. 
16 FORMAT B14, B01, B04, B17, B13, AND A18. 
17 FORMAT 
* 
/        ERROR NUMBER 6D003 HEX 
* 
20 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 3, 4, 5).
21 FORMAT B02, B04, B13, AND A18. 
22 FORMAT B15, B02, B04, B17, B13, AND A18. 
23 FORMAT 
* 
/        ERROR NUMBER 6D004 HEX 
* 
24 FORMAT DATA MISCOMPARE ON LOOP 885 DECODE (BITS 6, 7)
25 FORMAT B03, B04, B13, AND A18. 
26 FORMAT B16, B03, B04, B17, B13, AND A18. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC60A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.4) EXIT TO 60B 
* 
/        ERROR NUMBER 6D001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
50 MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
* 
/        ERROR NUMBER 6D002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
* 
/        ERROR NUMBER 6D003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98T
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98T
* 
/        ERROR NUMBER 6D004 HEX 
* 
43 IF (EC.NE.4) GOTO 45 
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98T
53 MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98T
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC60B,LSFMD1(16),LOCK
*   5.2.31.2 FHC60B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98T - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC60.
* 
*         BUFFERS USED- 
*         SAME AS FHC60.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC60 - LOOP 885 DECODE TEST (DC=16)
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC60 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D011 HEX 
* 
10 FORMAT DATA PARITY ERROR ON LOOP 885 DECODE. 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B03, B04, B13, AND A18. 
13 FORMAT B16, B03, B04, B13, AND A18.
* 
/         ERROR NUMBER 6D012 HEX
* 
14 FORMAT NO STATUS VALID ON LOOP 885 DECODE. 
15 FORMAT SUCCESSIVELY REPLACE CARD B04.
16 FORMAT 
17 FORMAT 
20 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC60B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.21) GOTO 45
   IF (EC.GT.22) GOTO 45
* 
/        ERROR NUMBER 6D011 HEX 
* 
40 IF (EC.NE.21) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
50 MSG 13 TO LINE 15
   MSG 20 TO LINE 16
   EXIT TO 98T
* 
/         ERROR NUMBER 6D012 HEX
* 
41 IF (EC.NE.22) GOTO 45
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC600,LSFMD1(16),LOCK
*   5.3.31.3 FHC600 - PARAMETER VERIFICATION
* 
*         PURPOSE-
*         FHC600 VERIFIES THAT APPROPRIATE PARAMETERS ARE SET 
*         TO RUN THE FHC6X SERIES OF MODULES. 
* 
*         METHOD- 
*         PARAMETERS ARE CHECKED FOR THREE TYPES OF ERRORS--
*         1.  UNUSED BITS BEING SET.
*         2.  DRIVE-ORIENTED PARAMETERS BEING SET (SINCE FHC
*               ONLY ACCESSES THE PRE-ALLOCATED AREA).
* 
*         ENTRY-
*         PARAMETERS P0 TO P9 ARE DESCRIBED IN MODULE FHC99A. 
* 
*         EXIT- 
*         NO SPECIAL EXIT CONDITIONS. 
* 
*         SUBMODULES REFERNCED- 
*         NONE
* 
*         REGISTERS USED- 
*         B1 - MESSAGE LINE INDEX 
*         B2 - MESSAGE FORMAT INDEX 
* 
*         BUFFERS USED- 
*         NONE
* 
*         KNOWN LIMITATIONS-
*         NONE
* 
* 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC600 - PARAMETER VERIFICATION (DC=16) 
3  FORMAT CHECK P0 - NOT USED, SHOULD BE ZERO 
4  FORMAT CHECK P1 - NOT USED, SHOULD BE ZERO 
5  FORMAT CHECK P2 - NOT USED, SHOULD BE ZERO 
6  FORMAT CHECK P3 - NOT USED, SHOULD BE ZERO 
7  FORMAT CHECK P4 - UNUSED BITS ARE SET
10 FORMAT CHECK P5 - UNUSED BITS ARE SET
11 FORMAT CHECK P7 - NOT USED, SHOULD BE ZERO 
12 FORMAT CHECK P8 - UNUSED BITS ARE SET
13 FORMAT CHECK P9 - UNUSED BITS ARE SET
14 FORMAT 885 UNIT NUMBER ERROR.  SET UN=40 THRU 57.
15 FORMAT CHECK P8 - 885 OPTION NOT SET.
16 FORMAT CHECK P5 - DRIVE MODULES SHOULD NOT BE DISABLED 
24 FORMAT P0 - P4 *OCT *OCT *OCT *OCT *OCT
25 FORMAT P5 - P9 *OCT *OCT *OCT *OCT *OCT
26 FORMAT SUSPECT PARAMETER/UNIT NUMBER ENTRY ERROR 
27 FORMAT -PAUSE- FHC600 - *DECD WARNINGS POSTED. 
30 FORMAT PARAMETERS DESCRIBED IN MODULE FHC99A.
/ 
   EQUATE OPT844 TO 0020     *844 INTERFACE OPTION
   EQUATE OPT885 TO 0040     *885 INTERFACE OPTION
/ 
31 B1 = 14                   *SET MESSAGE LINE INDEX
   MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 2 TO DISPLAY, PRINT
   MSG 24 (P0,P1,P2,P3,P4) TO LINE 7
   MSG 25 (P5,P6,P7,P8,P9) TO LINE 10 
/ 
   B2 = 3 
   IF (P0.NE.0) GOSUB 70
/ 
   B2 = 4 
   IF (P1.NE.0) GOSUB 70
/ 
   B2 = 5 
   IF (P2.NE.0) GOSUB 70
/ 
   B2 = 6 
   IF (P3.NE.0) GOSUB 70
/ 
   B2 = 7 
   IF (P4.AND.3776B.NE.0) GOSUB 70
/ 
   B2 = 10
   IF (P5.AND.6726B.NE.0) GOSUB 70
/ 
   B2 = 16
   IF (P5.AND.1.NE.0) GOSUB 70
/ 
   B2 = 11
   IF (P7.NE.0) GOSUB 70
/ 
   B2 = 12
   IF (P8.AND.7400B.NE.0) GOSUB 70
/ 
   B2 = 13
   IF (P9.AND.7070B.NE.0) GOSUB 70
/ 
   B2 = 14
   IF (SB(63).AND.77B.LT.40B) GOSUB 70
   IF (SB(63).AND.77B.GT.57B) GOSUB 70
/ 
   B2 = 15
   IF (SB(63).AND.10B.EQ.0) GOTO 76 
   IF (P8.AND.OPT885.EQ.0) GOSUB 70 
/ 
   GOTO 76
/ 
70 MSG B2 TO LINE B1
   B1 = B1 + 1
   RETURN 
/ 
76 IF (B1.EQ.14) GOTO 77     *IF NO ERRORS
   B1 = B1 + 1
   MSG 30 TO LINE B1
   MSG 26 TO LINE 12
   B1 = B1 - 15 
   PICTURE
   MSG 27 (B1) TO DISPLAY, PRINT, DAYFILE 
   PAUSE
77 BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC61,LSFMD1(16),LOCK 
** 5.2.32 FHC61 - LOOP 885 BUS TEST (DC=16) 
* 
*         PURPOSE-
*         FHC61 VERIFIES THAT DATA PATTERNS CAN BE LOOPED THROUGH THE 
*         885 INTERFACE BOARDS USING THE LOOP 885 BUS FEATURE.
*         THIS MODULE ALSO CHECK BUS IN/OUT PARITY. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 16) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR PATTERNS 0 THROUGH 7.
*           FILL BUFFER 
*           DO FOR EACH WORD IN BUFFER
*             DO FOR ALL PARITY STATES. 
*               DO FOR ALL 885 DEVICE INTERFACES. 
*                 SET THE LOOP 885 BUS BIT AND BUS PARITY.
*                 OUTPUT WORD ON NOC 8
*                 VERIFY THAT NIC 8 CONTAINS THE CORRECT WORD 
*                 CLEAR LOOP 885 BUS BIT. 
*                 CHECK STATUS VALID AND BUS IN PARITY. 
*                 ISOLATE DATA ERRORS BASED ON BAD BIT POSITION 
*               ENDO
*             ENDO
*           ENDO
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC670 - REPORT UNEXPECTED ERRORS 
*         FHC61A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - BUFFER INDEX 
*         B6 - TEMPORARY STORAGE
*         B7 - 885 DRIVE INTERFACE NUMBER 
*         B8 - LAST 885 DRIVE INTERFACE NUMBER PLUS ONE 
*         B9 - ABORT TYPE INDEX 
*         B10- LENGTH OF BUFFER LOOP
*         B11- FORCE PARITY INDEX 
*         B12- CURRENT DATA PATTERN 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(0) - OB(501)  CONTAINS WORDS TO BE LOOPED
* 
1  FORMAT FHC61 - LOOP 885 BUS TEST (DC=16) 
2  FORMAT FHC61 - LC=*DECD, EC=*DECD
4  FORMAT FHC61 ERROR(S) = *DECD
5  FORMAT DATA ERROR    E*OCT  A*OCT  D*OCT 
6  FORMAT // FHC61 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BIPE TO 1          *BUS IN PARITY ERROR 
   EQUATE VALID TO 2         *STATUS VALID (NIC 8/9)
   EQUATE NPAT TO 6          *NUMBER OF DATA PATTERNS 
   EQUATE FBIP TO 4          *FORCE BUSIN PARITY
   EQUATE FBOP TO 10         *FORCE BUSOUT PARITY 
   EQUATE LOOPBUS TO 200     *LOOP BUS BIT
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF(AL.GE.4) GOTO 21       *ACCESS LEVEL CHECK
   MSG 6 (AL) TO PRINT, DISPLAY 
   EXIT 
* 
/        INITIALIZE.
* 
21 B0=155                    *TEST NUMBER 6D HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 61D                 *MODULE NUMBER 61D 
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
* 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 100B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 100B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 100B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 100B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 100B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 100B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 100B   4444 PATTERN 
   B5=0                      *BUFFER INDEX
   IF (B2.LT.4) B10=1        *STATIC PATTERNS 
   IF (B2.LT.10B) B10=12D    *SLIDING PATTERNS
25 B11 = 0                   *INITIALIZE PARITY INDEX 
* 
/        PERFORM LOOP 885 BUS TEST. 
* 
40 B1=B1+1
   B7 = 40                   *FIRST 885 INTERFACE NUMBER
44 B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
* 
/         DETERMINE PARITY TO FORCE.
* 
   IF(B11.EQ.0) B6=LOOPBUS   *NONE FORCED 
   IF(B11.EQ.1) B6=LOOPBUS+FBIP  *BUSIN PARITY
   IF(B11.EQ.2) B6=LOOPBUS+FBOP  *BUSOUT PARITY 
* 
/         SET LOOP 885 BUS BIT AND BUS PARITY.
* 
   B9 = 21
   OUT CH=1,B6,B7,ABT 70     *SET LOOPBUS + 885 NO. 
* 
/         LOOP DATA.
* 
   B12=OB(B5).AND.377 
   OUT CH=8,B12,377B,ABT 70  *SEND PATTERN
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ PATTERN
* 
/         CLEAR LOOP 885 BUS BIT IN NOC 1.
* 
   B9 = 21
   OUT CH=1,0,B7,ABT 70     *CLEAR LOOPBUS + FORCE PARITY 
* 
/         COMPARE DATA. 
* 
   IF(SB(21).AND.VALID.EQ.0) ERROR 3/26 GOTO 67 
   IF (SB(22).NE.B12) GOTO 64 
   IF(B11.EQ.0) GOTO 50 
   IF(SB(21).AND.BIPE.EQ.0) ERROR 3/27 GOTO 67  *PARITY 
   GOTO 60
50 IF(SB(21).AND.BIPE.NE.0) ERROR 3/25 GOTO 67  *PARITY 
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 40 WHILE (B11+1.LE.2)    *END OF PARITY LOOP
   GOTO 25 WHILE (B5+1.LT.B10)   *END OF BUFFER LOOP
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/        ANALYZE DATA ERRORS
* 
64 B4=SB(22).XOR.B12
   MSG 5 (B12,SB(22),B4) TO LINE 7
* 
*         DATA ERROR ISOLATION ANALYSIS TABLE 
* 
*         2 3 4  B6  B6 2 3 4 
*         ------------------- 
*         - - -   0  0  - - - 
*         - - X   4  2  X - - 
*         - X -   3  3  - X - 
*         - X X   7  4  - - X 
*         X - -   2  5  X X - 
*         X - X   6  6  X - X 
*         X X -   5  7  - X X 
*         X X X   9  9  X X X 
* 
   B6=0 
   IF (B4.AND.7.NE.0) B6=2
   IF (B4.AND.70.NE.0) B6=B6+3
   IF (B4.AND.300.NE.0) B6=B6+4 
   IF (B6.GT.4) ERROR 3/5, GOTO 67
   IF (B6.EQ.2) ERROR 3/6, GOTO 67
   IF (B6.EQ.3) ERROR 3/7, GOTO 67
   ERROR 3/10, GOTO 67
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 61A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 670  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC61A,LSFMD1(16),LOCK
*   5.2.32.1 FHC61A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC61B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98T - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC61.
* 
*         BUFFERS USED- 
*         SAME AS FHC61.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC61 - LOOP 885 BUS TEST (DC=16) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC61 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D005 HEX 
* 
10 FORMAT DATA MISCOMPARE ON LOOP 885 BUS 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B04, B13, B01, B02, B03, AND A18. 
13 FORMAT B17,B04,B13,B14,B15,B16,B01,B02,B03,AND A18.
* 
/        ERROR NUMBER 6D006 HEX 
* 
14 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 0, 1, 2). 
15 FORMAT B01, B04, B13, AND A18. 
16 FORMAT B14, B01, B04, B17, B13, AND A18. 
17 FORMAT 
* 
/        ERROR NUMBER 6D007 HEX 
* 
20 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 3, 4, 5). 
21 FORMAT B02, B04, B13, AND A18. 
22 FORMAT B15, B02, B04, B17, B13, AND A18. 
23 FORMAT 
* 
/        ERROR NUMBER 6D008 HEX 
* 
24 FORMAT DATA MISCOMPARE ON LOOP 885 BUS (BITS 6, 7) 
25 FORMAT B03, B04, B13, AND A18. 
26 FORMAT B16, B03, B04, B17, B13, AND A18. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC61A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.5) GOTO 45 
   IF (EC.GT.10) EXIT TO 61B
* 
/        ERROR NUMBER 6D005 HEX 
* 
40 IF (EC.NE.5) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
50 MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
* 
/        ERROR NUMBER 6D006 HEX 
* 
41 IF (EC.NE.6) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
* 
/        ERROR NUMBER 6D007 HEX 
* 
42 IF (EC.NE.7) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98T
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98T
* 
/        ERROR NUMBER 6D008 HEX 
* 
43 IF (EC.NE.10) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98T
53 MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98T
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC61B,LSFMD1(16),LOCK
*   5.2.32.2 FHC61B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98T - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC61.
* 
*         BUFFERS USED- 
*         SAME AS FHC61.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC61 - LOOP 885 BUS TEST (DC=16) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC61 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6D015 HEX 
* 
10 FORMAT DATA PARITY ERROR ON LOOP 885 BUS 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B03, B04, B13, AND A18. 
13 FORMAT B16, B03, B04, B13, AND A18.
* 
/         ERROR NUMBER 6D016 HEX
* 
14 FORMAT NO STATUS VALID ON LOOP 885 BUS.
15 FORMAT SUCCESSIVELY REPLACE CARD B04.
16 FORMAT 
17 FORMAT 
* 
/         ERROR NUMBER 6D017 HEX
* 
20 FORMAT NO STATUS PARITY ERROR ON LOOP 885 BUS. 
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT B04, B03, A18, AND A20. 
23 FORMAT 
24 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC61B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.25) GOTO 45
   IF (EC.GT.27) GOTO 45
* 
/        ERROR NUMBER 6D015 HEX 
* 
40 IF (EC.NE.25) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 11 TO LINE 14
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 12 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
50 MSG 13 TO LINE 15
   MSG 24 TO LINE 16
   EXIT TO 98T
* 
/         ERROR NUMBER 6D016 HEX
* 
41 IF(EC.NE.26) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
* 
/         ERROR NUMBER 6D017 HEX
* 
42 IF (EC.NE.27B) GOTO 45 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98T
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC62,LSFMD1(16),LOCK 
** 5.2.33 FHC62 - LOOP 885 WRITE/READ/TAG GATE (DC=16)
* 
*         PURPOSE-
*         FHC62 VERIFIES THE ABILITY TO LOOP GATING SIGNALS 
*         THROUGH THE 885 INTERFACE BOARDS. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 16) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR ALL 885 DEVICE INTERFACES
*           MASTER CLEAR CONTROL LOGIC. 
*           SELECT DEVICE INTERFACE ON NOC 1. 
*           SET SKIP SECTOR MARK. 
*           SEND READ GATE
*           CHECK READ GATE STATUS
*           SEND WRITE GATE AND W/R ECC 
*           CHECK WRITE GATE STATUS 
*           SEND READ GATE AND FAST START 
*           CHECK TAG GATE STATUS 
*           MASTER CLEAR CONTROL LOGIC. 
*           CHECK STATUS VALID. 
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC670 - REPORT UNEXPECTED ERRORS 
*         FHC62A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B3 - ERROR COUNT
*         B4 - NOC 4 DATA 
*         B5 - NOC 5 DATA 
*         B7 - 885 DRIVE INTERFACE NUMBER 
*         B8 - LAST 885 DRIVE INTERFACE NUMBER PLUS ONE 
*         B9 - ABORT TYPE INDEX 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         NONE
* 
* 
1  FORMAT FHC62 - LOOP 885 WRT/READ/TAG GATE (DC=16)
2  FORMAT FHC62 - LC=*DECD, EC=*DECD
4  FORMAT FHC62 ERROR(S) = *DECD
6  FORMAT // FHC62 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE OPT885 TO 40       *OPTIONAL 885 INTERFACES 
* 
/         NORMAL CHANNEL EQUATES
* 
   EQUATE VALID TO 2         *STATUS VALID (NIC 8/9)
   EQUATE WRG9 TO 4 
   EQUATE RDG9 TO 2 
   EQUATE TAG9 TO 1 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF(AL.GE.4) GOTO 21       *ACCESS LEVEL CHECK
   MSG 6 (AL) TO PRINT, DISPLAY 
   EXIT 
* 
/        INITIALIZE.
* 
21 B0=155                    *TEST NUMBER 6D HEX
   B1=0                      *LOOP COUNT
   B3=0                      *ERROR COUNT 
   B13 = 62D                 *MODULE NUMBER 62D 
   B7=40                     *FIRST 885 INTERFACE NUMBER
   B8=50                     *DETERMINE LAST INTERFACE NO.
   IF(P8.AND.OPT885.NE.0)B8=60
* 
/        PERFORM LOOP 885 WRITE/READ/TAG GATE TEST. 
* 
40 B1=B1+1
44 B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
   B9 = 23
   FLAG PULSE CH=1, ABT 70   *MASTER CLEAR CONTROL LOGIC
   B9 = 21
   OUT CH=1,0,B7,ABT 70      *ENABLE 885 INTERFACE
   OUT CH=2,0,100B,ABT 70    *SKIP SECTOR MARK
* 
/         PERFORM LOOP 885 READ GATE TEST 
* 
   B9 = 22
   CONTROL 377,377,100,4,EXECUTE,ABT 70  *SEND READ GATE
   GOSUB 62                  *READ CHANNEL STATUS 
   IF (SB(24).AND.RDG9.EQ.0) ERROR 3/11 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.RDG9.NE.0) ERROR 3/14 GOTO 67 
* 
/         PERFORM LOOP 885 WRITE GATE TEST
* 
   B9 = 22
   CONTROL 377,377,104,10,EXECUTE,ABT 70  *SEND WRITE GATE
   GOSUB 62                  *READ CHANNEL STATUS 
   IF (SB(24).AND.WRG9.EQ.0) ERROR 3/12 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.WRG9.NE.0) ERROR 3/15 GOTO 67 
* 
/         PERFORM LOOP 885 TAG GATE TEST
* 
   B9 = 22
   CONTROL 377,377,100,24,EXECUTE,ABT 70  *SEND TAG GATE
   GOSUB 62                  *READ CHANNEL STATUS 
   IF (SB(24).AND.TAG9.EQ.0) ERROR 3/13 GOTO 67 
* 
   GOSUB 63                  *TERMINATE CONTROL WORD SEQ. 
   IF (SB(24).AND.TAG9.NE.0) ERROR 3/16 GOTO 67 
* 
/         CHECK FOR STATUS VALID STUCK-AT-ONE 
* 
   B9 = 23
   FLAG PULSE CH=1,ABT 70    *MASTER CLEAR
   B9 = 20
   STATUS CHANNEL,ABT 70     *READ CHANNEL STATUS 
   IF (SB(21).AND.VALID.NE.0) ERROR 3/17 GOTO 67
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 44 WHILE (B7+1.NE.B8)    *END OF INTERFACE LOOP 
   GOTO 77                       *TERMINATE MODULE
* 
/         CHANNEL STATUS SUBROUTINE 
* 
62 B9 = 20
   STATUS CHANNEL, ABT 64    *READ CHANNEL STATUS 
   RETURN 
* 
/         TERMINATE CONTROL WORD SEQUENCE 
* 
63 B9 = 21
   OUT CH=4,0,0,ABT 64       *CLEAR NOC 4 
   B9 = 23
   FLAG PULSE CH=5,ABT 64    *TERMINATE CONTROL 
   B9 = 21
   OUT CH=5,0,0,ABT 64       *CLEAR NOC 5 
   B9 = 20
   STATUS CHANNEL, ABT 64    *READ CHANNEL STATUS 
   RETURN 
64 ENDSUB GOTO 70 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 62A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 670  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC62A,LSFMD1(16),LOCK
*   5.2.33.1 FHC62A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC62B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98T - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC62.
* 
*         BUFFERS USED- 
*         SAME AS FHC62.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC62 - LOOP 885 WRT/READ/TAG GATE (DC=16)
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC62 - LINE *OCT - ERROR NUMBER *H*HE
6  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6D009 HEX 
* 
10 FORMAT LOOP READ GATE A CONSTANT ZERO. 
/         SUCCESSIVELY REPLACE CARDS
11 FORMAT B02, B04, B21, B13, 
12 FORMAT B15,B02,B17,B04,B21,B13,
13 FORMAT B27, B22, A19, AND A21. 
* 
/        ERROR NUMBER 6D00A HEX 
* 
14 FORMAT LOOP WRITE GATE A CONSTANT ZERO.
/         SUCCESSIVELY REPLACE CARDS
15 FORMAT B01, B04, B21, B13, 
16 FORMAT B14,B01,B17,B04,B21,B13,
17 FORMAT CHECK P8-885 OPTION INTERFACES PARAMETER. 
* 
/        ERROR NUMBER 6D00B HEX 
* 
20 FORMAT LOOP TAG GATE A CONSTANT ZERO.
/         SUCCESSIVELY REPLACE CARDS
21 FORMAT B03, B04, B13, B27, AND B26.
22 FORMAT B16, B03, B17, B04, B13, B27, AND B26.
23 FORMAT 
* 
/        ERROR NUMBER 6D00C HEX 
* 
24 FORMAT LOOP READ GATE A CONSTANT ONE.
/         SUCCESSIVELY REPLACE CARDS
25 FORMAT B02, B04, B21, B13, 
26 FORMAT B15,B02,B17,B04,B21,B13,
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC62A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.11) GOTO 45
   IF (EC.GT.14) EXIT TO 62B
* 
/        ERROR NUMBER 6D009 HEX 
* 
40 IF (EC.NE.11) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 6 TO LINE 13 
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 11 TO LINE 14
   MSG 13 TO LINE 15
   EXIT TO 98T
50 MSG 12 TO LINE 14
   MSG 13 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
* 
/        ERROR NUMBER 6D00A HEX 
* 
41 IF (EC.NE.12) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98T
51 MSG 16 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98T
* 
/        ERROR NUMBER 6D00B HEX 
* 
42 IF (EC.NE.13) GOTO 43
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 52
   MSG 21 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98T
52 MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98T
* 
/        ERROR NUMBER 6D00C HEX 
* 
43 IF (EC.NE.14) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 53
   MSG 25 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98T
53 MSG 26 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98T
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC62B,LSFMD1(16),LOCK
*   5.2.33.2 FHC62B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98T - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC62.
* 
*         BUFFERS USED- 
*         SAME AS FHC62.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC62 - LOOP 885 WRT/READ/TAG GATE (DC=16)
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC62 - LINE *OCT - ERROR NUMBER *H*HE
6  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6D00D HEX 
* 
10 FORMAT LOOP WRITE GATE A CONSTANT ONE. 
/         SUCCESSIVELY REPLACE CARDS
11 FORMAT B01, B04, B21, B13, 
12 FORMAT B14,B01,B17,B04,B21,B13,
13 FORMAT B27, B22, A19, AND A21. 
* 
/        ERROR NUMBER 6D00E HEX 
* 
14 FORMAT LOOP TAG GATE A CONSTANT ONE. 
/         SUCCESSIVELY REPLACE CARDS
15 FORMAT B03, B04, B13, B27, AND B26.
16 FORMAT B16, B03, B17, B04, B13, B27, AND B26.
17 FORMAT 
* 
/         ERROR NUMBER 6D00F HEX
* 
20 FORMAT STATUS VALID SET AFTER MASTER CLEAR.
21 FORMAT SUCCESSIVELY REPLACE CARD B04.
22 FORMAT 
23 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC62B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   B7 = SB(63B)             *--*REMOVE IN CTRLR LANGUAGE*--*
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.155) GOTO 45 
   IF (EC.LT.15) GOTO 45
   IF (EC.GT.17) GOTO 45
* 
/        ERROR NUMBER 6D00D HEX 
* 
40 IF (EC.NE.15) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 50
   MSG 11 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98T
50 MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98T
* 
/        ERROR NUMBER 6D00E HEX 
* 
41 IF (EC.NE.16) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 6 TO LINE 14 
   IF (B7.AND.10.NE.0) GOTO 51
   MSG 15 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
51 MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
* 
/         ERROR NUMBER 6D00F HEX
* 
42 IF (EC.NE.17B) GOTO 45 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98T
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC63,LSFMD1(16),LOCK 
** 5.2.34  FHC63 - SYNC BYTE SEARCH TEST I (DC=16)
* 
*         PURPOSE-
*         FHC63 VERIFIES THE OPERATION OF THE SYNC BYTE DETECTOR
*         ON THE LOW ORDER DATA PATH BOARD. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 16) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR SYNC BYTE = 20 TO 37 
*           SEEK TO CYL 842 TRK 0 SCT 0.
*           SET CONTROL SELECT ON NOC 8.
*           PLACE SYNC BYTE IN NOC 2
*           WRITE A SYNC BYTE IN THE MIDDLE OF THE SECTOR 
*           CHECK GENERAL STATUS
*           SEEK TO CYL 842 TRK 0 SCT 0.
*           SET CONTROL SELECT ON NOC 8.
*           PLACE SYNC BYTE IN NOC 2
*           READ THE SYNC BYTE AT THE CORRECT TIME (EXPECT NO ERROR)
*           CHECK GENERAL STATUS. 
*           CHECK SYNC BYTE MISCOMPARE STATUS.
*           MASTER CLEAR CONTROL LOGIC
*         ENDO
/ 
*         ENTRY-
*         SECTOR 0, TRACK 0, CYLINDER 842 MUST CONTAIN ALL ZEROES.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC63A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - (NOT USED) 
*         B5 - CURRENT SYNC BYTE PATTERN
*         B6 - CYLINDER FOR SEEK (842D) 
*         B7 - TRACK FOR SEEK (0) 
*         B8 - SECTOR FOR SEEK (0)
*         B9 - ABORT TYPE INDEX 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         NONE
* 
*         REMARKS-
* 
*         STANDARD SECTOR FORMAT FOR 885-S--
* 
*                      DECIMAL        OCTAL 
*         FIELD      BITS  BYTES   BITS  BYTES  COMMENTS
*         ---------  ----  ----   -----  -----
*         01          400    50     620     62   STARTS AT LEADING EDGE 
*         ADDRESS      40     5      50      5     OF INDEX 
*         ECC          48     6      60      6
*         02          216    27     330     33
*         SYNC BYTE     8     1      10      1
*         DATA       3864   483    7430    743
*         ECC          48     6      60      6
*         PAD          48     6      60      6
*         ---------  ----  ----   -----  -----
*         TOTAL      4672   101   11100   1110
* 
* 
*         WRITE A SYNC BYTE IN THE DATA FIELD-- 
* 
*                              DECIMAL        OCTAL 
*         FIELD              BITS  BYTES   BITS  BYTES  COMMENTS
*         -----------------  ----  -----   ----  -----  --------
*         INDEX MARK START, 
*         PROCESSOR CLOCK.    215     26+   327     32+ 
*         READ GATE AND 
*         PROCESSOR CLOCK.    333     41+   515     51+ 
*         DROP READ GATE, 
*         PROCESSOR CLOCK.   2563    320+  5003    500+ 
*         ECC S.C.,WRT ECC, 
*         WRT GATE, 16-BIT, 
*         WRITE CLOCK.        188     23+   274     27+ 
*         WRT GATE, 16-BIT, 
*         WRT SYNC, WRT CLK.   31      3+    37      3+ 
*         WRT GATE, 16-BIT, 
*         WRT SYNC, WRT CLK.   88     11    130     13
* 
* 
*         READ A SYNC BYTE IN THE DATA FIELD AT CORRECT TIME--
* 
*                              DECIMAL        OCTAL 
*         FIELD              BITS  BYTES   BITS  BYTES  COMMENTS
*         -----------------  ----  -----   ----  -----  --------
*         INDEX MARK START, 
*         PROCESSOR CLOCK.    215     26+   327     32+ 
*         READ GATE AND 
*         PROCESSOR CLOCK.   2939    367+  5573    557+ 
*         FAST START, READ
*         GATE, PROC CLOCK.    57      7+    71      7+ 
*         SYNC BYTE SEARCH, 
*         READ GATE, AND
*         DRIVE CLOCK.        209     26+   321     32+ 
* 
* 
1  FORMAT FHC63 - SYNC BYTE SEARCH TEST I (DC=16) 
2  FORMAT FHC63 - LC=*DECD, EC=*DECD
4  FORMAT FHC63 ERROR(S) = *DECD
5  FORMAT // FHC63 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
6  FORMAT // FHC63 DRIVES DISABLED, P5=XXX1 //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BUSY TO 2 
   EQUATE NPAT TO 20         *NUMBER OF DATA PATTERNS 
* 
/         DISPLAY TITLE MESSAGE 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/         CHECK FOR DRIVES DISABLED.
* 
   IF (P5.AND.1.EQ.0) GOTO 21 
   MSG 6 TO DISPLAY, PRINT
   EXIT 
* 
/         CHECK ACCESS LEVEL
* 
21 IF (AL.GE.4) GOTO 22      *ACCESS LEVEL CHECK
   MSG 5 (AL) TO PRINT,DISPLAY
   EXIT 
* 
/         INITIALIZE. 
* 
22 B0=153                    *TEST NUMBER 6B HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 63D                 *MODULE NUMBER 63D 
* 
/         RESERVE, CONNECT, ETC.
* 
30 B1 = B1 + 1               *INCREMENT LOOP COUNTER
   B9 = 5 
   RES, DRIVE, ABT 31 
   GOTO 40
31 IF(SB(0).EQ.10B) ERROR 3/6, GOTO 67
   IF(SB(0).NE.5020B) GOTO 70 
   IF(SB(15).AND.377.EQ.0) GOTO 70
   IF(SB(16).AND.32.EQ.20) ERROR 3/7, GOTO 67 
   GOTO 70
* 
/         PERFORM SYNC BYTE SEARCH TEST.
* 
40 B5 = B2 + 20B             *SYNC BYTE PATTERN 
* 
   GOSUB 62                  *SEEK
/                       *WRITE SYNC BYTE IN MIDDLE OF SECTOR
   B9 = 22
   CONTROL 0,327,100,300,ABT 70  *INDEX MK START + PROC CLK 
   CONTROL 1,115,100,4,ABT 70    *RD GATE + PROC CLK
   CONTROL 12,3,100,0,ABT 70     *DROP RD GATE + PROC CLK 
   CONTROL 0,274,24,12,ABT 70    *ECC, WRT GATE + WRT CLK 
   CONTROL 0,37,0,13,ABT 70      *WRT GATE, SYNC, + CLOCK 
   CONTROL 0,130,24,12,ABT 70    *WRT SYNC + WRT CLK
   CONTROL 0,0,0,0,EXECUTE,ABT 70  *EXEC CTRL WD SEQ
* 
   GOSUB 61                  *CHECK GENERAL STATUS
   IF (SB(0).NE.0) ERROR 3/1, GOTO 67 
* 
   GOSUB 62                  *SEEK
/                            *READ SYNC BYTE AT CORRECT TIME
   B9 = 22
   CONTROL 0,327,100,300,ABT 70  *INDEX MK START + PROC CLK 
   CONTROL 13,173,100,4,ABT 70   *RD GATE + PROC CLK
   CONTROL 0,71,100,24,ABT 70    *FAST START, RD GATE + PCLK
   CONTROL 0,321,40,44,ABT 70    *SYNC BYTE SEARCH,RD GATE
   CONTROL 0,0,0,0,EXECUTE,ABT 70  *EXEC CTRL WD SEQ
* 
   GOSUB 61                  *CHECK GENERAL STATUS
   IF (SB(0).NE.0) ERROR 3/2, GOTO 67 
* 
   B9 = 20
   STATUS CHANNEL,ABT 70     *CHECK FOR MISCOMPARE BIT
   IF (SB(4).AND.1.NE.0) ERROR 3/3, GOTO 67 
* 
   B9 = 23
   FLAG PULSE,CH=1,ABT 70    *MASTER CLEAR CONTROL LOGIC
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   B9 = 25
   REL, ABT 70                   *RELEASE SUBSYSTEM TO OS 
   GOTO 30 WHILE (B2+1.LT.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 77                   *TERMINATE MODULE
* 
/         GENERAL AND DETAILED STATUS SUBROUTINE
* 
61 B9 = 16
   STATUS GENERAL,ABT 70     *GET GENERAL STATUS
   B9 = 17
   STATUS DETAIL,ABT 70      *GET DETAILED STATUS 
   IF(SB(0).NE.5020B) RETURN
   IF(SB(15).AND.377.EQ.0) RETURN 
   IF(SB(16).AND.32.EQ.20) ERROR 3/7, GOTO 67 
   RETURN 
* 
/         SEEK CYLINDER 842D, TRACK 0, SECTOR 0 
* 
62 B6 = 842D                 *CYLINDER
   B7 = 0                    *TRACK 
   B8 = 0                    *SECTOR
   B9 = 24
   SEEK CYL B6 TRK B7 SEC B8,ABT 70 
   B9 = 21
   OUT,CH=8,0,106,ABT 70     *SET CONTROL SELECT
   OUT,CH=2,0,B5,ABT 70      *SET SYNC BYTE PATTERN 
   RETURN 
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 30                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 CALL 63A                  *EXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 30
* 
/         TERMINATE.
* 
77 IF (ES.AND.RM.NE.0) GOTO 22
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC63A,LSFMD1(16),LOCK
*   5.2.34.1 FHC63A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FMC63B - PROCESS HIGHER ERROR NUMBERS.
*         FMC670 - REPORT UNEXPECTED ERRORS 
*         FMC98R - DISPLAY DETAILED STATUS
*         FMC98T - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC63.
* 
*         BUFFERS USED- 
*         SAME AS FHC63.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC*D - SYNC BYTE SEARCH TEST I (DC=16) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FMDD
4  FORMAT FHC*D - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6B001 HEX 
* 
10 FORMAT GENERAL STATUS NON-ZERO AFTER SYNC BYTE WRITE.
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B26, B27, AND B22.
13 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/        ERROR NUMBER 6B002 HEX 
* 
14 FORMAT GENERAL STATUS NON-ZERO AFTER SYNC BYTE SEARCH. 
15 FORMAT SUCCESSIVELY REPLACE CARDS
16 FORMAT B26, B27, AND B22.
17 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/        ERROR NUMBER 6B003 HEX 
* 
20 FORMAT SYNC BYTE MISCOMPARE ERROR
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT B26, B27, B22, AND A19. 
23 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/        ERROR NUMBER 6B004 HEX 
* 
24 FORMAT GENERAL STATUS NON-ZERO AFTER BAD SYNC BYTE.
25 FORMAT SUCCESSIVELY REPLACE CARDS
26 FORMAT B26, B27, AND B22.
27 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC*DA - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 (B13) TO LINE 2
   IF (B15.AND.FLAG1S.NE.0) GOTO 32 
   MSG 4 (B13,EA,B0,EC) TO LINE 3 
   EXIT TO 670               *DISPLAY UNEXPECTED ERRORS 
32 MSG 3 TO LINE 3
   MSG 4(B13,EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.153) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.4) EXIT TO 63B 
* 
/        ERROR NUMBER 6B001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98R
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98R
* 
/        ERROR NUMBER 6B002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98R
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98R
* 
/        ERROR NUMBER 6B003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98T
* 
/        ERROR NUMBER 6B004 HEX 
* 
43 IF (EC.NE.4) GOTO 45 
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98R
   MSG 25 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98R
/ 
45 MSG 30(B13,EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC63B,LSFMD1(16),LOCK
*   5.2.34.2 FHC63B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FMC98R - DISPLAY DETAILED STATUS
*         FMC98T - DISPLAY CHANNEL STATUS.
*         SAME AS FHC63.
* 
*         BUFFERS USED- 
*         SAME AS FHC63.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC*D - SYNC BYTE SEARCH TEST I (DC=16) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FMDD
4  FORMAT FHC*D - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 6B005 HEX 
* 
10 FORMAT NO SYNC BYTE MISCOMPARE WHEN FORCED 
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT B26, B27, B22, AND B21. 
13 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/        ERROR NUMBER 6B006 HEX 
* 
14 FORMAT DRIVE RESERVED BY OPPOSITE ACCESS STATUS
15 FORMAT SUCCESSIVELY REPLACE CARDS B04, B17, B13, AND A20.
16 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
17 FORMAT 
* 
/        ERROR NUMBER 6B007 HEX 
* 
20 FORMAT DRIVE MALFUNCTION/INTERFACE FAULT 
21 FORMAT SUCCESSIVELY REPLACE CARDS B01, B02, B03, B04,
22 FORMAT B14, B15, B16, B17, B22, B26, B27, AND B21. 
23 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
24 FORMAT B22, B26, B27, AND B21. 
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE UNIT TO 63B 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC*DB - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 (B13) TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(B13,EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.153) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.7) GOTO 45 
* 
/        ERROR NUMBER 6B005 HEX 
* 
40 IF (EC.NE.5) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98T
* 
/        ERROR NUMBER 6B006 HEX 
* 
41 IF(EC.NE.6) GOTO 42
   MSG 14 TO LINE 12
   IF(P4.AND.4000.EQ.0) EXIT TO 98R 
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98R
* 
/        ERROR NUMBER 6B007 HEX 
* 
42 IF (EC.NE.7) GOTO 45 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98R
   MSG 21 TO LINE 14
   IF(SB(UNIT).AND.10.NE.0)MSG 22 TO LINE 15
   IF(SB(UNIT).AND.10.EQ.0)MSG 24 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98R
/ 
45 MSG 30(B13,EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC64,LSFMD1(16),LOCK 
** 5.2.35  FHC64 - SYNC BYTE SEARCH TEST II (DC=16) 
* 
*         PURPOSE-
*         FHC64 VERIFIES THE OPERATION OF THE SYNC BYTE DETECTOR
*         ON THE LOW ORDER DATA PATH BOARD. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 16) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR SYNC BYTE = 20 TO 37 
*           SEEK TO CYL 842 TRK 0 SCT 0.
*           SET CONTROL SELECT ON NOC 8.
*           PLACE SYNC BYTE IN NOC 2
*           WRITE A SYNC BYTE IN THE MIDDLE OF THE SECTOR 
*           CHECK GENERAL STATUS
*           SEEK TO CYL 842 TRK 0 SCT 0.
*           SET CONTROL SELECT ON NOC 8.
*           PLACE SYNC BYTE IN NOC 2
*           READ THE SYNC BYTE AT THE WRONG TIME (EXPECT NO ERROR)
*           CHECK GENERAL STATUS. 
*           CHECK SYNC BYTE MISCOMPARE STATUS.
*           MASTER CLEAR CONTROL LOGIC
*         ENDO
/ 
*         ENTRY-
*         SECTOR 0, TRACK 0, CYLINDER 842 MUST CONTAIN ALL ZEROES.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC63A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - (NOT USED) 
*         B5 - CURRENT SYNC BYTE PATTERN
*         B6 - CYLINDER FOR SEEK (842D) 
*         B7 - TRACK FOR SEEK (0) 
*         B8 - SECTOR FOR SEEK (0)
*         B9 - ABORT TYPE INDEX 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         NONE
* 
*         REMARKS-
* 
*         STANDARD SECTOR FORMAT FOR 885-S--
* 
*                      DECIMAL        OCTAL 
*         FIELD      BITS  BYTES   BITS  BYTES  COMMENTS
*         ---------  ----  ----   -----  -----
*         01          400    50     620     62   STARTS AT LEADING EDGE 
*         ADDRESS      40     5      50      5     OF INDEX 
*         ECC          48     6      60      6
*         02          216    27     330     33
*         SYNC BYTE     8     1      10      1
*         DATA       3864   483    7430    743
*         ECC          48     6      60      6
*         PAD          48     6      60      6
*         ---------  ----  ----   -----  -----
*         TOTAL      4672   101   11100   1110
* 
* 
*         WRITE A SYNC BYTE IN THE DATA FIELD-- 
* 
*                              DECIMAL        OCTAL 
*         FIELD              BITS  BYTES   BITS  BYTES  COMMENTS
*         -----------------  ----  -----   ----  -----  --------
*         INDEX MARK START, 
*         PROCESSOR CLOCK.    215     26+   327     32+ 
*         READ GATE AND 
*         PROCESSOR CLOCK.    333     41+   515     51+ 
*         DROP READ GATE, 
*         PROCESSOR CLOCK.   2563    320+  5003    500+ 
*         ECC S.C.,WRT ECC, 
*         WRT GATE, 16-BIT, 
*         WRITE CLOCK.        188     23+   274     27+ 
*         WRT GATE, 16-BIT, 
*         WRT SYNC, WRT CLK.   31      3+    37      3+ 
*         WRT GATE, 16-BIT, 
*         WRT SYNC, WRT CLK.   88     11    130     13
* 
* 
*         READ A SYNC BYTE IN THE DATA FIELD AT INCORRECT TIME--
* 
*                              DECIMAL        OCTAL 
*         FIELD              BITS  BYTES   BITS  BYTES  COMMENTS
*         -----------------  ----  -----   ----  -----  --------
*         INDEX MARK START, 
*         PROCESSOR CLOCK.    215     26+   327     32+ 
*         READ GATE AND 
*         PROCESSOR CLOCK.   3061    382+  5765    576+ 
*         FAST START, READ
*         GATE, PROC CLOCK.   107     13+   153     15+ 
*         SYNC BYTE SEARCH, 
*         READ GATE, AND
*         DRIVE CLOCK.          8      1     10      1
* 
* 
1  FORMAT FHC64 - SYNC BYTE SEARCH TEST II (DC=16)
2  FORMAT FHC64 - LC=*DECD, EC=*DECD
4  FORMAT FHC64 ERROR(S) = *DECD
5  FORMAT // FHC64 NOT EXECUTED, NEEDS AL=0004, AL=*OCTB // 
6  FORMAT // FHC64 DRIVES DISABLED, P5=XXX1 //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE BUSY TO 2 
   EQUATE NPAT TO 20         *NUMBER OF DATA PATTERNS 
* 
/         DISPLAY TITLE MESSAGE 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/         CHECK FOR DRIVES DISABLED.
* 
   IF (P5.AND.1.EQ.0) GOTO 21 
   MSG 6 TO DISPLAY, PRINT
   EXIT 
* 
/         CHECK ACCESS LEVEL
* 
21 IF (AL.GE.4) GOTO 22      *ACCESS LEVEL CHECK
   MSG 5 (AL) TO PRINT,DISPLAY
   EXIT 
* 
/         INITIALIZE. 
* 
22 B0 = 153                  *TEST NUMBER 6B HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 64D                 *MODULE NUMBER 64D 
* 
/         RESERVE, CONNECT, ETC.
* 
30 B1 = B1 + 1               *INCREMENT LOOP COUNTER
   B9 = 5 
   RES, DRIVE, ABT 31 
   GOTO 40
31 IF(SB(0).EQ.10B) ERROR 3/6, GOTO 67
   IF(SB(0).NE.5020B) GOTO 70 
   IF(SB(15).AND.377.EQ.0) GOTO 70
   IF(SB(16).AND.32.EQ.20) ERROR 3/7, GOTO 67 
   GOTO 70
* 
/         PERFORM SYNC BYTE SEARCH TEST.
* 
40 B5 = B2 + 20B             *SYNC BYTE PATTERN 
* 
   GOSUB 62                  *SEEK
/                       *WRITE SYNC BYTE IN MIDDLE OF SECTOR
   B9 = 22
   CONTROL 0,327,100,300,ABT 70  *INDEX MK START + PROC CLK 
   CONTROL 1,115,100,4,ABT 70    *RD GATE + PROC CLK
   CONTROL 12,3,100,0,ABT 70     *DROP RD GATE + PROC CLK 
   CONTROL 0,274,24,12,ABT 70    *ECC, WRT GATE + WRT CLK 
   CONTROL 0,37,0,13,ABT 70      *WRT GATE, SYNC, + CLOCK 
   CONTROL 0,130,24,12,ABT 70    *WRT SYNC + WRT CLK
   CONTROL 0,0,0,0,EXECUTE,ABT 70  *EXEC CTRL WD SEQ
* 
   GOSUB 61                  *CHECK GENERAL STATUS
   IF (SB(0).NE.0) ERROR 3/1, GOTO 67 
   GOSUB 62                  *SEEK
* 
/                            *READ SYNC BYTE AT WRONG TIME
   B9 = 22
   CONTROL 0,327,100,300,ABT 70  *INDEX MK START + PROC CLK 
   CONTROL 13,365,100,4,ABT 70   *RD GATE + PROC CLK
   CONTROL 0,153,100,24,ABT 70   *FAST START,RD GATE,PRC CLK
   CONTROL 0,10,40,44,ABT 70     *SYNC BYTE SEARCH,RD GATE
   CONTROL 0,0,0,0,EXECUTE,ABT 70  *EXEC CTRL WD SEQ
* 
   GOSUB 61                  *CHECK GENERAL STATUS
   IF (SB(0).NE.0) ERROR 3/4, GOTO 67 
* 
   B9 = 20
   STATUS CHANNEL,ABT 70     *CHECK FOR MISCOMPARE BIT
   IF (SB(4).AND.1.EQ.0) ERROR 3/5, GOTO 67 
* 
   B9 = 23
   FLAG PULSE,CH=1,ABT 70    *MASTER CLEAR CONTROL LOGIC
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   B9 = 25
   REL, ABT 70                   *RELEASE SUBSYSTEM TO OS 
   GOTO 30 WHILE (B2+1.LT.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 77                   *TERMINATE MODULE
* 
/         GENERAL AND DETAILED STATUS SUBROUTINE
* 
61 B9 = 16
   STATUS GENERAL,ABT 70     *GET GENERAL STATUS
   B9 = 17
   STATUS DETAIL,ABT 70      *GET DETAILED STATUS 
   IF(SB(0).NE.5020B) RETURN
   IF(SB(15).AND.377.EQ.0) RETURN 
   IF(SB(16).AND.32.EQ.20) ERROR 3/7, GOTO 67 
   RETURN 
* 
/         SEEK CYLINDER 842D, TRACK 0, SECTOR 0 
* 
62 B6 = 842D                 *CYLINDER
   B7 = 0                    *TRACK 
   B8 = 0                    *SECTOR
   B9 = 24
   SEEK CYL B6 TRK B7 SEC B8,ABT 70 
   B9 = 21
   OUT,CH=8,0,106,ABT 70     *SET CONTROL SELECT
   OUT,CH=2,0,B5,ABT 70      *SET SYNC BYTE PATTERN 
   RETURN 
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
   ENDSUB 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 30                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 CALL 63A                  *EXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 30
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 22
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC65,LSFMD1(16),LOCK 
** 5.2.36 FHC65 - ECC REGISTER TEST (DC=16) 
* 
*         PURPOSE-
*         FHC65 VERIFIES THE ABILITY OF THE ECC REGISTER TO RECEIVE,
*         RETAIN, AND RETURN ASSORTED DATA PATTERNS.
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 16) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           CLEAR ECC REGISTER BY SENDING FLAG PULSE 3
*           LOAD DATA PATTERN INTO NOC-S 12, 13, AND 14 
*           DO FOR ALL 4 HEADS
*             SELECT HEAD ON NOC 3. 
*             LOAD ECC REGISTER BY SENDING FLAG PULSE 11
*             READ ECC REGISTER 
*             COMPARE CONTENTS WITH DATA PATTERN
*           ENDO
*         ENDO
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC670 - REPORT UNEXPECTED ERRORS 
*         FHC65A - REPORT EXPECTED ERRORS 
*         FHC98S - GENERATE 48-BIT DATA PATTERNS
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - TEMPORARY STORAGE
*         B6 - TEMPORARY STORAGE
*         B7 - HEAD INDEX 
*         B8 - REGISTER INDEX 
*         B9 - ABORT TYPE INDEX 
*         B14- TEMPORARY STORAGE
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(3) - OB(10) = 8-BIT DATA RECIEVED
*         OB(11) - OB(14) = PACKED DATA RECIEVED
*         OB(100) - OB(217) = 48-BIT DATA PATTERNS
* 
1  FORMAT FHC65 - ECC REGISTER TEST (DC=16) 
2  FORMAT FHC65 - LC=*DECD, EC=*DECD
4  FORMAT FHC65 ERROR(S) = *DECD
5  FORMAT EXPECTED  *OCT *OCT *OCT *OCT 
6  FORMAT ACTUAL    *OCT *OCT *OCT *OCT 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPOL TO 72D        *NUMBER OF POLY. PATTERNS
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/        INITIALIZE.
* 
21 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 65D                 *MODULE NUMBER 65D 
   CALL 98S                  *GENERATE 48 BIT DATA PATTERN
* 
/        PERFORM ECC REGISTER TEST. 
* 
40 B1=B1+1
   B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
* 
/         CLEAR REGISTER
* 
   B9 = 23
   FLAG PULSE CH=3, ABT 70   *CLEAR ECC REGISTER
* 
/         PACK DATA 
* 
   B5=OB(B2+100).RS.4        *BITS 00 TO 07 
   B14=OB(B2+100).AND.17.LS.4 
   B6=OB(B2+101).RS.8+B14    *BITS 08 TO 15 
   B9 = 21
   OUT CH=12D,B5,B6,ABT 70   *POLYNOMIAL PARCEL I 
* 
   B5=OB(B2+101).AND.377     *BITS 16 TO 23 
   B6=OB(B2+102).RS.4        *BITS 24 TO 31 
   OUT CH=13D,B5,B6,ABT 70   *POLYNOMIAL PARCEL II
* 
   B14=OB(B2+102).AND.17.LS.4 
   B5=OB(B2+103).RS.8+B14    *BITS 32 TO 39 
   B6=OB(B2+103).AND.377     *BITS 40 TO 47 
   OUT CH=14D,B5,B6,ABT 70   *POLYNOMIAL PARCEL III 
* 
/         LOAD REGISTER 
* 
   B7 = 0                    *INITIALIZE HEAD INDEX 
50 B8 = B7.LS.2              *JUSTIFY HEAD
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT HEAD 
   B9 = 23
   FLAG PULSE CH=11D,ABT 70  *LOAD ECC REGISTER 
* 
/         READ REGISTER 
* 
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 00 TO 15
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(3)=SB(7)
   OB(4)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 16 TO 31
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(5)=SB(7)
   OB(6)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 32 TO 47
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(7)=SB(7)
   OB(10)=SB(8) 
* 
/         UNPACK DATA RECEIVED FROM ECC REGISTER
* 
   B14=OB(3).LS.4 
   OB(11)=OB(4).RS.4+B14
   B14=OB(4).AND.17.LS.8
   OB(12)=OB(5)+B14 
   B14=OB(6).LS.4 
   OB(13)=OB(7).RS.4+B14
   B14=OB(7).AND.17.LS.8
   OB(14)=OB(10)+B14
* 
/         COMPARE DATA
* 
   WC = 4                    *INITIALIZE WORD COUNT 
   COMPARE OB(11) TO OB(B2+100) FOR WC, ABT 65
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 50 WHILE (B7+1.LT.4)
   GOTO 40 WHILE (B2+4.LE.NPOL)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/         DISPLAY DATA ERRORS 
* 
65 ERROR 3/1
   MSG 5 4 WORDS FROM OB(B2+100) TO LINE 7
   MSG 6 4 WORDS FROM OB(11) TO LINE 10 
*  GOTO 67
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 65A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 670  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC65A,LSFMD1(16),LOCK
*   5.2.36.1 FHC65A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC65.
* 
*         BUFFERS USED- 
*         SAME AS FHC65.
* 
* 
* 
/         COMMON MESSAGES 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC65 - ECC REGISTER TEST (DC=16) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC*D - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT FHC66 - ECC REGISTER CLEAR TEST (DC=16) 
* 
/         ERROR NUMBER 6C001/6C005 HEX
* 
10 FORMAT BAD DATA PATTERN READ BACK FROM ECC REGISTER
11 FORMAT SUCCESSIVELY REPLACE CARDS
12 FORMAT A*D, A17, A20, A21, A*D, A*D, A*D, AND B*D. 
13 FORMAT 
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC*DA - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
* 
* 
31 MSG 1 TO LINE 1
   IF (B13.EQ.65D) MSG 2 TO LINE 2
   IF (B13.EQ.66D) MSG 5 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(B13,EA,B0,EC) TO LINE 5
* 
* 
* 
   IF (B0.NE.154) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.10) GOTO 45
* 
/         ERROR NUMBER 6C001/6C005 HEX
* 
40 IF (EC.EQ.1) GOTO 41 
   IF (EC.NE.5) GOTO 45 
41 MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   IF(B7.EQ.0) MSG 12 (12D,11D,10D,09D,22D) TO LINE 15
   IF(B7.EQ.1) MSG 12 (11D,12D,10D,09D,23D) TO LINE 15
   IF(B7.EQ.2) MSG 12 (10D,12D,11D,09D,24D) TO LINE 15
   IF(B7.EQ.3) MSG 12 (09D,12D,11D,10D,25D) TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
45 MSG 30(B13,EA,B0,EC,EM) TO LINE 12 
* 
* 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC66,LSFMD1(16),LOCK 
** 5.2.37 FHC66 - ECC REGISTER CLEAR TEST (DC=16) 
* 
*         PURPOSE-
*         FHC66 VERIFIES THE ABILITY OF THE PROCESSOR TO CLEAR THE
*         CONTENTS OF THE ECC REGISTER. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 16) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           LOAD DATA PATTERN INTO NOC-S 12, 13, AND 14 
*           DO FOR ALL 4 HEADS
*             SELECT HEAD ON NOC 3. 
*             LOAD ECC REGISTER BY SENDING FLAG PULSE 11
*             CLEAR ECC REGISTER BY SENDING FLAG PULSE 3
*             READ ECC REGISTER 
*             VERIFY THAT CONTENTS ARE ZERO 
*           ENDO
*         ENDO
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC670 - REPORT UNEXPECTED ERRORS 
*         FHC65A - REPORT EXPECTED ERRORS 
*         FHC98S - GENERATE 48-BIT DATA PATTERNS
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - TEMPORARY STORAGE
*         B6 - TEMPORARY STORAGE
*         B7 - HEAD INDEX 
*         B8 - REGISTER INDEX 
*         B9 - ABORT TYPE INDEX 
*         B14- TEMPORARY STORAGE
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         IB(0) THROUGH IB(3) ALL CONTAIN ZEROES. 
*         OB(100) - OB(217) = 48-BIT DATA PATTERNS
* 
* 
*         REMARKS-
* 
*         KNOWN LIMITATIONS-
* 
1  FORMAT FHC66 - ECC REGISTER CLEAR TEST (DC=16) 
2  FORMAT FHC66 - LC=*DECD, EC=*DECD
4  FORMAT FHC66 ERROR(S) = *DECD
5  FORMAT EXPECTED  *OCT *OCT *OCT *OCT 
6  FORMAT ACTUAL    *OCT *OCT *OCT *OCT 
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPOL TO 72D        *NUMBER OF POLY. PATTERNS
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
* 
/         INITIALIZE. 
* 
21 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B13 = 66D                 *MODULE NUMBER 66D 
   CALL 98S                  *GENERATE 48 BIT DATA PATTERN
* 
/         PERFORM ECC REGISTER CLEAR TEST.
* 
40 B1=B1+1
   B9 = 13
   RES CONTROLLER, ABT 70    *RESERVE CONTROLLER
   B5=OB(B2+100).RS.4        *BITS 00 TO 07 
   B14=OB(B2+100).AND.17.LS.4 
   B6=OB(B2+101).RS.8+B14    *BITS 08 TO 15 
   B9 = 21
   OUT CH=12D,B5,B6,ABT 70   *POLYNOMIAL PARCEL I 
* 
   B5=OB(B2+101).AND.377     *BITS 16 TO 23 
   B6=OB(B2+102).RS.4        *BITS 24 TO 31 
   OUT CH=13D,B5,B6,ABT 70   *POLYNOMIAL PARCEL II
* 
   B14=OB(B2+102).AND.17.LS.4 
   B5=OB(B2+103).RS.8+B14    *BITS 32 TO 39 
   B6=OB(B2+103).AND.377     *BITS 40 TO 47 
   OUT CH=14D,B5,B6,ABT 70   *POLYNOMIAL PARCEL III 
* 
/         LOAD REGISTER 
* 
   B7 = 0                    *INITIALIZE HEAD INDEX 
50 B8 = B7.LS.2              *JUSTIFY HEAD
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT HEAD 
   B9 = 23
   FLAG PULSE CH=11D,ABT 70  *LOAD ECC REGISTER 
* 
/         CLEAR REGISTER
* 
   FLAG PULSE CH=3,ABT 70    *CLEAR ECC REGISTER
* 
/         READ REGISTER 
* 
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 00 TO 15
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(3)=SB(7)
   OB(4)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 16 TO 31
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(5)=SB(7)
   OB(6)=SB(8)
* 
   B8 = B8 + 1
   B9 = 21
   OUT CH=3,0,B8,ABT 70      *SELECT BITS 32 TO 47
   B9 = 20
   STATUS CHANNEL, ABT 70    *READ CHANNEL STATUS 
   OB(7)=SB(7)
   OB(10)=SB(8) 
* 
/         UNPACK DATA RECEIVED FROM ECC REGISTER
* 
   B14=OB(3).LS.4 
   OB(11)=OB(4).RS.4+B14
   B14=OB(4).AND.17.LS.8
   OB(12)=OB(5)+B14 
   B14=OB(6).LS.4 
   OB(13)=OB(7).RS.4+B14
   B14=OB(7).AND.17.LS.8
   OB(14)=OB(10)+B14
* 
/         COMPARE DATA
* 
   WC = 4                    *INITIALIZE WORD COUNT 
   COMPARE OB(11) TO IB(0) FOR WC, ABT 65 
* 
/         FINALIZE. 
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 50 WHILE (B7+1.LT.4)
   GOTO 40 WHILE (B2+4.LE.NPOL)  *END OF DATA PATTERN LOOP
   GOTO 77                       *TERMINATE MODULE
* 
/         DISPLAY DATA ERRORS 
* 
65 ERROR 3/5
   MSG 5 4 WORDS FROM IB(0) TO LINE 7 
   MSG 6 4 WORDS FROM OB(11) TO LINE 10 
*  GOTO 67
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 65A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 670  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/         TERMINATE.
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC67,LSFMD1(16),LOCK 
** 5.2.38 FHC67 - ECC FUNCTIONAL TEST (DC=16) 
* 
*         PURPOSE-
*         FHC67 VERIFIES THAT THE ECC LOGIC FUNCTIONS PROPERLY. 
*         IT USES THE READ FUNCTION TO CHECK THE CHECKWORD OF ALL 
*         THE SECTORS ON THE CE (PRE-ALLOCATED) CYLINDER (842D).
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 16) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         RESERVE CONTROLLER
*         CHECK DRIVE SELECTED AND RESERVED STATUS. 
*         RESERVE DRIVE.
*         CHECK GENERAL AND DETAILED STATUS.
*         WRITE 8 SECTORS.
*         READ 8 SECTORS. 
*         IF READ OR WRITE ABORT, CHECK GENERAL AND DETAILED STATUS.
/ 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC670 - REPORT UNEXPECTED ERRORS 
*         FHC67A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - DIFFERENCE BETWEEN ACTUAL AND EXPECTED VALUES
*         B5 - NUMBER OF SECTORS TO READ
*         B6 - CYLINDER ADDRESS (842D)
*         B7 - TRACK ADDRESS (0)
*         B8 - SECTOR ADDRESS (0) 
*         B9 - ABORT TYPE INDEX 
*         B10- TEMPORARY STORAGE
*         B11- TEMPORARY STORAGE
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
* 
*         REMARKS-
* 
*         KNOWN LIMITATIONS-
* 
1  FORMAT FHC67 - ECC FUNCTIONAL TEST (DC=16) 
2  FORMAT FHC67 - LC=*DECD, EC=*DECD
4  FORMAT FHC67 ERROR(S) = *DECD
5  FORMAT // FHC67 NOT EXECUTED, NEEDS AL.LT.21B // 
6  FORMAT // FHC67 DRIVES DISABLED, P5=XXX1 //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE DSR TO 20B         *DRIVE SELECTED AND RESERVED 
* 
/         CHECK FOR DRIVES DISABLED.
* 
20 MSG 1 TO DISPLAY, PRINT
   IF (P5.AND.1.EQ.0) GOTO 21 
   MSG 6 TO DISPLAY, PRINT
   EXIT 
* 
/         CHECK FOR AL.LT.21
* 
21 IF (AL.LT.21) GOTO 22
   MSG 5 TO DISPLAY, PRINT
   EXIT 
* 
/         INITIALIZE. 
* 
22 B0=154                    *TEST NUMBER 6C HEX
   B1=0                      *LOOP COUNT
   B3=0                      *ERROR COUNT 
   B13 = 67D                 *MODULE NUMBER 67D 
   B6=842D                   *CYLINDER
* 
/         TEST DRIVE SELECTED AND RESERVED HARDWARE.
* 
40 B1 = B1 + 1               *INCREMENT LOOP COUNTER
   B9 = 13
   RES CONTROLLER, ABT 70 
   B9 = 23
   FLAG PULSE CH=1,ABT 70    *MASTER CLEAR CONTROLLER 
   B9 = 20
   STATUS CHANNEL, ABT 70    *COPY CHANNEL STATUS 
   IF(SB(21).AND.DSR.NE.0) ERROR 3/12, GOTO 67
   B9 = 5 
   RES DRIVE, ABT 41         *RESERVE DRIVE TEST
   GOTO 43
41 MSG EM TO LINE 7 
   IF(SB(0).EQ.10) ERROR 3/15, GOTO 67
   IF(SB(0).NE.5020B) GOTO 42 
   IF(SB(15).AND.377.EQ.0) GOTO 70
   IF(SB(16).AND.32.EQ.20) ERROR 3/16, GOTO 67
42 IF(SB(0).NE.2) GOTO 70 
   IF(SB(15).AND.1000.NE.0) ERROR 17/17, GOTO 67
   GOTO 70
* 
/         WRITE 8 SECTORS.
* 
43 B7 = 0                    *TRACK 
   B8=0                      *SECTOR
   B5=8D                     *NUMBER OF SECTORS 
   B9 = 14
   WRITE B5 SECTORS AT CYL B6, TRK B7, SEC B8, ABT 50 
* 
/         READ 8 SECTORS. 
* 
   B7=0                      *TRACK 
   B8=0                      *SECTOR
   B5=8D                     *NUMBER OF SECTORS 
   B9 = 15
   READ B5 SECTORS AT CYL B6, TRK B7, SEC B8, ABT 50
* 
/         FINALIZE. 
* 
   IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 77                       *TERMINATE MODULE
* 
/         PROCESS ABORT ON WRITE OR READ COMMAND. 
* 
50 IF (LF.AND.776.NE.4) GOTO 51       *IF ABT AFTER STATUS
   B10 = B9 
   B9 = 16
   STATUS GENERAL, ABT 70             *GENERAL STATUS 
   B9 = 17
   STATUS DETAIL, ABT 70              *DETAILED STATUS
   B9 = B10 
51 B5 = 0 
   IF(SB(25) NE 0) B5=25              *IF RETRY ATTEMPTED 
   MSG EM TO LINE 7 
   IF(SB(B5+2).AND.4000.NE.0) ERROR 7/11, GOTO 67 
   IF(SB(B5+1).AND.10.NE.0) ERROR 3/13, GOTO 67 
   IF(SB(B5+2).AND.1000.NE.0) ERROR 10/11, GOTO 67
   IF(SB(B5+21).AND.4.NE.0) ERROR 3/14, GOTO 67 
   IF(SB(B5).NE.5000B) GOTO 70
   IF(SB(B5+20).AND.4000.NE.0) ERROR 15/20, GOTO 67 
   IF(SB(B5+20).AND.40.NE.0) ERROR 16/17, GOTO 67 
   GOTO 70
* 
/         PROCESS EXPECTED ERRORS.
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/         PROCESS UNEXPECTED ERRORS.
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 67A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) MSG 1 TO LINE 2
   IF(EC.GE.4000B) CALL 670  *UNEXPECTED ERROR DISPLAY
* 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   EXIT 
   END 20 
COMPILE 
   MODULE FHC67A,LSFMD1(16),LOCK
*   5.2.38.1 FHC67A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC67B - PROCESS HIGHER ERROR NUMBERS.
*         FHC98R - DISPLAY GENERAL AND DETAILED STATUS. 
*         FHC98T - DISPLAY CHANNEL STATUS.
* 
*         REGISTERS USED- 
*         SAME AS FHC67.
* 
*         BUFFERS USED- 
*         SAME AS FHC67.
* 
* 
* 
*        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC67 - ECC FUNCTIONAL TEST (DC=16) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FMDD
4  FORMAT FHC67 - LINE *OCT - ERROR NUMBER *H*HE
* 
/         ERROR NUMBER 6C009 HEX
* 
7  FORMAT ADDRESS CHECKWORD ERROR 
10 FORMAT DATA CHECKWORD ERROR
11 FORMAT IF THE CE CYLINDER IS KNOWN TO BE WITHOUT FLAW AND
12 FORMAT PROPERLY FORMATTED, SUCCESSIVELY REPLACE CARDS
13 FORMAT A*D, B*D, B20, A17, AND A21.
* 
/         ERROR NUMBER 6C00A HEX
* 
14 FORMAT DRIVE SELECTED AND RESERVED STATUS STUCK-AT-ONE 
15 FORMAT SUCCESSIVELY REPLACE CARDS B01, B14, AND A18. 
16 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
17 FORMAT 
* 
/         ERROR NUMBER 6C00B HEX
* 
20 FORMAT ADDRESS ERROR (DETAILED STATUS WORD 1)
21 FORMAT SUCCESSIVELY REPLACE CARDS
22 FORMAT B27, B26, B20, B19, AND A20.
23 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/         ERROR NUMBER 6C00C HEX
* 
24 FORMAT CONTROLLER CHANNEL ACTIVE ERROR 
25 FORMAT SUCCESSIVELY REPLACE CARDS
26 FORMAT A15, B22, B19, AND R/T CARD(A01/A02/A03/A04). 
27 FORMAT 
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC67A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
* 
* 
   IF (B0.NE.154) GOTO 45 
   IF (EC.LT.11) GOTO 45
   IF (EC.GT.14) EXIT TO 67B
* 
/         ERROR NUMBER 6C009 HEX
* 
40 IF (EC.NE.11) GOTO 41
   MSG EM TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98R
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 (12D,22D) TO LINE 16
   EXIT TO 98R
* 
/         ERROR NUMBER 6C00A HEX
* 
41 IF(EC.NE.12) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98T
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   EXIT TO 98T
* 
/         ERROR NUMBER 6C00B HEX
* 
42 IF(EC.NE.13) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98R
   MSG 21 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   EXIT TO 98R
* 
/         ERROR NUMBER 6C00C HEX
* 
43 IF (EC.NE.14B) GOTO 45 
   MSG 24 TO LINE 12
   IF(P4.AND.4000.EQ.0) EXIT TO 98R 
   MSG 25 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   EXIT TO 98R
* 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC67B,LSFMD1(16),LOCK
*   5.2.38.2 FHC67B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98R - DISPLAY GENERAL AND DETAILED STATUS. 
* 
*         REGISTERS USED- 
*         SAME AS FHC67.
* 
*         BUFFERS USED- 
*         SAME AS FHC67.
* 
* 
* 
*        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC67 - ECC FUNCTIONAL TEST (DC=16) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FMDD
4  FORMAT FHC67 - LINE *OCT - ERROR NUMBER *H*HE
* 
/         ERROR NUMBER 6C00D HEX
* 
5  FORMAT DRIVE RESERVED BY OPPOSITE ACCESS STATUS
6  FORMAT SUCCESSIVELY REPLACE CARDS
7  FORMAT B04, B17, B13, AND A20. 
10 FORMAT POSSIBLE BAD DRIVE CABLE OR DRIVE FAILURE.
* 
/         ERROR NUMBER 6C00E HEX
* 
11 FORMAT DRIVE MALFUNCTION/INTERFACE FAULT 
12 FORMAT SUCCESSIVELY REPLACE CARDS B01, B02, B03, B04,
13 FORMAT B14, B15, B16, B17, B22, B26, B27, AND B21. 
14 FORMAT B22, B26, B27, AND B21. 
* 
/         ERROR NUMBER 6C00F/6C010 HEX
* 
15 FORMAT CONTROLLER LOST DRIVE CLOCK ERROR 
16 FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR
17 FORMAT CONTROLLER AND/OR DRIVE BUSY
20 FORMAT B*D AND B*D.
21 FORMAT B02, B21, B22, B27, B19, A19, A18, AND A21. 
22 FORMAT B01 AND A18.
23 FORMAT B*D, B*D, AND B*D.
24 FORMAT B15,B02,B21,B22,B27,B19,A19,A18,AND A21.
25 FORMAT B14, B01, AND A18.
26 FORMAT B*D, B*D, B*D, B*D, AND B*D.
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE UNIT TO 63B 
* 
/         SOFTWARE ERROR MESSAGES.
* 
30 FORMAT FHC67B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
   IF (B0.NE.154) GOTO 45 
   IF (EC.LT.15) GOTO 45
   IF (EC.GT.20) GOTO 45
* 
/         ERROR NUMBER 6C00D HEX
* 
40 IF (EC.NE.15) GOTO 41
   MSG 5 TO LINE 12 
   IF(P4.AND.4000.EQ.0) EXIT TO 98R 
   MSG 6 TO LINE 14 
   MSG 7 TO LINE 15 
   MSG 10 TO LINE 16
   EXIT TO 98R
* 
/         ERROR NUMBER 6C00E HEX
* 
41 IF (EC.NE.16) GOTO 42
   MSG 11 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98R
   MSG 12 TO LINE 14
   IF(SB(UNIT).AND.10.NE.0)MSG 13 TO LINE 15
   IF(SB(UNIT).AND.10.EQ.0)MSG 14 TO LINE 15
   MSG 10 TO LINE 16
   EXIT TO 98R
* 
/         ERROR NUMBER 6C00F HEX
* 
42 IF (EC.NE.17) GOTO 43
   MSG EM TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98R
   MSG 6 TO LINE 14 
   B10 = EM + 3 
   IF(SB(UNIT).AND.10.NE.0) B10 = B10 + 3 
   MSG B10 TO LINE 15 
   MSG 10 TO LINE 16
   EXIT TO 98R
* 
/         ERROR NUMBER 6C010 HEX
* 
43 IF (EC.NE.20) GOTO 45
   MSG EM TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98R
   MSG 6 TO LINE 14 
   B11 = 22D                  *COMPUTE DATA PATH LOC
   IF (SB(24).AND.400B.NE.0) B11 = 22D
   IF (SB(24).AND.1000B.NE.0) B11 = 23D 
   IF (SB(24).AND.2000B.NE.0) B11 = 24D 
   IF (SB(24).AND.4000B.NE.0) B11 = 25D 
   B10 = B11 - 21D            *COMPUTE DRV INTERFACE LOC
   IF (B11.GE.24D) B10 = B10 - 1
   B12 = B10 + 13D            *COMPUTE OPT INTERFACE LOC
   IF(SB(UNIT).AND.10.EQ.0)MSG 20(B10,B11) TO LINE 15 
   IF(SB(UNIT).AND.10.NE.0)MSG 23(B12,B10,B11) TO LINE 15 
   IF (B9.EQ.15) GOTO 44      *IF READ ABORT, 
   IF (SB(21).AND.1.NE.0) GOTO 44   *IF WRITE ADDRESS ERROR,
   IF (B10.EQ.3D) GOTO 44 
   IF(SB(UNIT).AND.10.EQ.0)MSG 23(3D,B10,B11) TO LINE 15
   IF(SB(UNIT).AND.10.EQ.0) GOTO 44 
   MSG 26 (16D,03D,B12,B10,B11) TO LINE 15
44 MSG 10 TO LINE 16
   EXIT TO 98R
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC670,LSFMD1(16),LOCK
*   5.2.38.3 FHC670 - REPORT UNEXPECTED ERRORS
* 
*         PURPOSE-
*         FHC670 DISPLAYS INFORMATION EXPANDING ON ALL
*         ERRORS OTHER THAN THOSE WHICH CAN BE INTERPRETED
*         FOR ISOLATION.
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC67.
* 
*         BUFFERS USED- 
*         SAME AS FHC67.
* 
* 
* 
* 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
4  FORMAT FHC*D - LINE *OCTB - ERROR NUMBER *H*HEH
5  FORMAT ABORT ON .RES DRIVE. COMMAND
/ 
6  FORMAT LF = *OCTB      WORD  DETAILED STATUS (OCTAL) 
7  FORMAT                   1   *OCT *OCT *OCT *OCT *OCT
8  FORMAT    GENERAL        6   *OCT *OCT *OCT *OCT *OCT
9  FORMAT STATUS = *OCTB   11D  *OCT *OCT *OCT *OCT *OCT
12 FORMAT                  16D  *OCT *OCT *OCT *OCT *OCT
13 FORMAT ABORT ON .RES CONTROLLER. COMMAND 
14 FORMAT ABORT ON .WRITE. COMMAND
15 FORMAT ABORT ON .READ. COMMAND 
16 FORMAT ABORT ON .STATUS GENERAL. COMMAND 
17 FORMAT ABORT ON .STATUS DETAIL. COMMAND
20 FORMAT ABORT ON .STATUS CHANNEL. COMMAND 
21 FORMAT ABORT ON .OUT CH. COMMAND 
22 FORMAT ABORT ON .CONTROL. COMMAND
23 FORMAT ABORT ON .FLAG PULSE. COMMAND 
24 FORMAT ABORT ON .SEEK. COMMAND 
25 FORMAT ABORT ON .REL. COMMAND
30 FORMAT UNEXPECTED ERROR
31 MSG 1 TO LINE 1
   MSG 4 (B13,EA,B0,EC) TO LINE 3 
   MSG 30 TO LINE 5 
   MSG B9 TO LINE 6 
   MSG EM TO LINE 7 
   MSG 6 (LF) TO LINE 11
   MSG 7 (SB(1),SB(2),SB(3),SB(4),SB(5)) TO LINE 12 
   MSG 8 (SB(6),SB(7),SB(8),SB(9),SB(12)) TO LINE 13
   MSG 9(SB(0),SB(13),SB(14),SB(15),SB(16),SB(17))TO LINE 14
   MSG 12(SB(20),SB(21),SB(22),SB(23),SB(24)) TO LINE 15
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC69,LSFMD2(16),LOCK 
** 5.2.39 FHC69 - WRITE VERIFY TEST (DC=16) 
* 
*         PURPOSE-
*         FHC69 USES A WRITE VERIFY OPERATION TO ESTABLISH A FINAL
*         CONFIDENCE IN THE OPERABILITY OF THE CONTROLLER.  IT DOES NOT 
*         RELY ON ANY CONTROLLER LOGIC WHICH HAS NOT BEEN PREVIOUSLY
*         VERIFIED TO SOME EXTENT.  IF FHC69 FAILS, EITHER THE DRIVE OR 
*         CONTROLLER COULD BE AT FAULT. 
*         THIS MODULE ALLOWS THE CONTROLLER HARDWARE TO BE TESTED AT A
*         LOWER ACCESS LEVEL WHEN AN 885-1X (DEVICE CODE 16) IS 
*         ASSIGNED TO THE DIAGNOSTIC. 
* 
*         METHOD- 
*         DO FOR ALL PATTERNS 
*           FILL THE BUFFER 
*           WRITE A SECTOR
*           WRITE VERIFY THE SECTOR 
*           IF GENERAL STATUS IS NOT ZERO, THEN 
*             REPORT ERROR
*           ENDIF 
*           INVERT A BIT
*           WRITE VERIFY THE SECTOR 
*           IF GENERAL STATUS DOES NOT INCLUDE ABNORMAL 
*           TERMINATION BIT, THEN 
*             REPORT ERROR
*           ENDIF 
*           IF DETAILED STATUS DOES NOT INCLUDE WRITE VERIFY
*           ERROR BIT, THEN 
*             REPORT ERROR
*           ENDIF 
*         ENDO
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS.
* 
*         SUBMODULES REFERENCED-
*         FHC690 - REPORT UNEXPECTED ERRORS 
*         FHC69A - REPORT EXPECTED ERRORS 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - NUMBER OF SECTORS
*         B5 - CYLINDER ADDRESS (842D)
*         B6 - TRACK ADDRESS (0)
*         B7 - SECTOR ADDRESS (0) 
*         B9 - ABORT TYPE INDEX 
*         B15- FLAG WORD
*         ES, EC, EM, EA - STANDARD USAGE 
* 
1  FORMAT FHC69 - WRITE VERIFY TEST (DC=16) 
2  FORMAT FHC69 - LC=*DECD, EC=*DECD
4  FORMAT FHC69 ERROR(S) = *DECD
5  FORMAT ID-SWITCH - CONTROLLER = *H HEX, DRIVE = *H HEX 
6  FORMAT // FHC69 DRIVES DISABLED, P5=XXX1 //
* 
/         FLAG EQUATES
* 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 07         *NUMBER OF DATA PATTERNS 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF (P5.AND.1.EQ.0) GOTO 21 
   MSG 6 TO DISPLAY, PRINT
   GOTO 77
* 
/        INITIALIZE.
* 
21 B0=157                    *TEST NUMBER 6F HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   WC=502 
   BA=0 
   B4=1                      *NUMBER OF SECTORS 
   B5=842D                   *CYLINDER NUMBER 
   B6=0                      *TRACK NUMBER
   B7=0                      *SECTOR NUMBER 
24 IF(B2.EQ.0)DUP 0000B TO OB FOR 502B   0000 PATTERN 
   IF(B2.EQ.1)DUP 7777B TO OB FOR 502B   7777 PATTERN 
   IF(B2.EQ.2)DUP 2525B TO OB FOR 502B   2525 PATTERN 
   IF(B2.EQ.3)DUP 5252B TO OB FOR 502B   5252 PATTERN 
   IF(B2.EQ.4)DUP 1111B TO OB FOR 502B   1111 PATTERN 
   IF(B2.EQ.5)DUP 2222B TO OB FOR 502B   2222 PATTERN 
   IF(B2.EQ.6)DUP 4444B TO OB FOR 502B   4444 PATTERN 
   IF(B2.EQ.7)RANDOM TO OB FOR 502B      RANDOM PATERN
* 
/        PERFORM WRITE VERIFY TEST. 
* 
40 B1=B1+1
   B9 = 13
   RES DRIVE, ABT 70
   B9 = 14
   WRITE B4 SECTORS AT CYL B5, TRK B6, SEC B7, ABT 70 
   B4=1 
   B9 = 15
   VERIFY B4 SECTORS AT CYL B5, TRK B6, SEC B7, ABT 55
   IF (SB(0).NE.0) ERROR 3/1, GOTO 67 
   OB(100)=OB(100).XOR.40    *INVERT A BIT IN THE SECTOR
   B4=1 
   B9 = 15
   VERIFY B4 SECTORS AT CYL B5, TRK B6, SEC B7, ABT 50
   B9 = 16
   STATUS GENERAL, ABT 70 
   B9 = 17
   STATUS DETAIL, ABT 70
   ERROR 3/2, GOTO 67 
* 
50 B9 = 16
   STATUS GENERAL, ABT 70 
   B9 = 17
   STATUS DETAIL, ABT 70
   IF (SB(20).AND.1.EQ.0) ERROR 3/3, GOTO 67
   GOTO 60
55 IF (SB(0).EQ.0) GOTO 70
   ERROR 3/1, GOTO 67 
* 
/        FINALIZE.
* 
60 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 76                       *TERMINATE 
* 
/        PROCESS EXPECTED ERRORS. 
* 
67 B15=B15.OR.FLAG1S         *SET FLAG 1
   GOTO 71
* 
/        PROCESS UNEXPECTED ERRORS. 
* 
70 B15=B15.AND.FLAG1C        *CLEAR FLAG 1
71 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
/        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
74 IF(EC.LT.4000B) CALL 69A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 690  *UNEXPECTED ERROR DISPLAY
/ 
75 IF (ES.AND.RC.NE.0) GOTO 40
* 
/ 
/         TERMINATE.
* 
76 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   IF (SB(4).EQ.0) GOTO 77   *IF NO DETAILED STATUS, EXIT 
   B10=SB(24).AND.377        *MASK FOR CONTROLLER ID-SWITCH 
   B11=SB(7).AND.3.LS.6      *JUSTIFY UPPER 3-BITS DRIVE ID 
   B11=SB(10).RS.6+B11       *MAKE 8-BIT DRIVE ID-SWITCH
   MSG 5 (B10,B11) TO DISPLAY, PRINT, DAYFILE 
77 END 20 
COMPILE 
   MODULE FHC69A,LSFMD2(16),LOCK
*   5.2.39.1 FHC69A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-
*         FHC98Q - DISPLAY GENERAL AND DETAILED STATUS. 
* 
*         REGISTERS USED- 
*         SAME AS FHC69.
* 
*         BUFFERS USED- 
*         SAME AS FHC69.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC69 - WRITE VERIFY TEST (DC=16) 
3  FORMAT PRESERVICE FORECAST GROUP FHDC OR FMDD
4  FORMAT FHC69 - LINE *OCT - ERROR NUMBER *H*HE
5  FORMAT SUCCESSIVELY REPLACE CARDS
* 
/        ERROR NUMBER 6F001 HEX 
* 
10 FORMAT WRITE VERIFY FAILED.
11 FORMAT B27, B26, B20, B19, A20, B22, B01, AND B14. 
12 FORMAT FAILURE IN EITHER DRIVE OR CONTROLLER.
13 FORMAT DIAGNOSTIC FMD MAY HELP ISOLATE FAILURE.
* 
/        ERROR NUMBER 6F002 HEX 
* 
14 FORMAT FORCING A WRITE VERIFY ERROR DID NOT CAUSE A
15 FORMAT GENERAL STATUS OF 5000. 
16 FORMAT UNKNOWN FAILURE IN EITHER DRIVE OR CONTROLLER.
17 FORMAT DIAGNOSTIC FMD MAY HELP ISOLATE FAILURE.
* 
/        ERROR NUMBER 6F003 HEX 
* 
20 FORMAT FORCING A WRITE VERIFY ERROR DID NOT SET THE
21 FORMAT WRITE VERIFY ERROR BIT IN DETAILED STATUS.
22 FORMAT UNKNOWN FAILURE IN EITHER DRIVE OR CONTROLLER.
23 FORMAT DIAGNOSTIC FMD MAY HELP ISOLATE FAILURE.
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC69A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
* 
/ 
* 
   IF (B0.NE.157) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.3) GOTO 45 
* 
/        ERROR NUMBER 6F001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98Q
   MSG 5 TO LINE 13 
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98Q               *DISPLAY STATUS
* 
/        ERROR NUMBER 6F002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 11
   MSG 15 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98Q
   MSG 5 TO LINE 13 
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98Q               *DISPLAY STATUS
* 
/        ERROR NUMBER 6F003 HEX 
* 
42 IF (EC.NE.3) GOTO 45 
   MSG 20 TO LINE 11
   MSG 21 TO LINE 12
   IF (P4.AND.4000.EQ.0) EXIT TO 98Q
   MSG 5 TO LINE 13 
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   EXIT TO 98Q
/ 
45 MSG 30(EA,B0,EC,EM) TO LINE 12 
* 
/ 
* 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC690,LSFMD2(16),LOCK
*   5.2.39.2 FHC690 - REPORT UNEXPECTED ERRORS
* 
*         PURPOSE-
*         FHC690 DISPLAYS INFORMATION EXPANDING ON ALL
*         ERRORS OTHER THAN THOSE WHICH CAN BE INTERPRETED
*         FOR ISOLATION.
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC69.
* 
*         BUFFERS USED- 
*         SAME AS FHC69.
* 
* 
* 
/ 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC69 - WRITE VERIFY TEST (DC=16) 
4  FORMAT FHC69 - LINE *OCT - ERROR NUMBER *H*HE
/ 
6  FORMAT LF=*OCTB        WORD  DETAILED STATUS (OCTAL) 
7  FORMAT                   1   *OCT *OCT *OCT *OCT *OCT
8  FORMAT    GENERAL        6   *OCT *OCT *OCT *OCT *OCT
9  FORMAT STATUS = *OCTB   11D  *OCT *OCT *OCT *OCT *OCT
12 FORMAT                  16D  *OCT *OCT *OCT *OCT *OCT
13 FORMAT ABORT ON .RES DRIVE. COMMAND
14 FORMAT ABORT ON .WRITE. COMMAND
15 FORMAT ABORT ON .VERIFY. COMMAND 
16 FORMAT ABORT ON .STATUS GENERAL. COMMAND 
17 FORMAT ABORT ON .STATUS DETAIL. COMMAND
22 FORMAT UNEXPECTED ERROR
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 4 (EA,B0,EC) TO LINE 3 
   MSG 22 TO LINE 5 
   MSG B9 TO LINE 6 
   MSG EM TO LINE 7 
   MSG 6 (LF) TO LINE 11
   MSG 7 (SB(1),SB(2),SB(3),SB(4),SB(5)) TO LINE 12 
   MSG 8 (SB(6),SB(7),SB(8),SB(9),SB(12)) TO LINE 13
   MSG 9(SB(0),SB(13),SB(14),SB(15),SB(16),SB(17))TO LINE 14
   MSG 12(SB(20),SB(21),SB(22),SB(23),SB(24)) TO LINE 15
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC75,6000(05,07,14,16),LOCK
** 5.2.49 FHC75 - CONNECT TEST
* 
*         PURPOSE-
*         FHC75 VERIFIES THAT EVERY SELECTED CHANNEL ACCESS CAN CONNECT 
*         TO THE 7155 AND THAT EVERY SELECTED CHANNEL ACCESS CAN CLEAR
*         EVERY OTHER ONE-S CONNECT.  IT MAKES NO ATTEMPT TO MAKE 
*         SIMULTANEOUS CONNECTS.
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION.
* 
*         METHOD- 
*         THE SAME NUMBER OF COPIES OF THIS TEST ARE USED AS THERE ARE
*         SELECTED ACCESSES TO BE TESTED.  SUBMODULE FHC75I, J, K, OR L 
*         IS EXECUTED DEPENDING ON WHETHER THIS IS COPY 0, 1, 2, OR 3,
*         RESPECTIVELY.  SEE THE HEADER OF EACH OF THESE SUBMODULES FOR 
*         THE PROCEDURES FOLLOWED.
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-
*         FHC750 - REPORT UNEXPECTED ERRORS 
*         FHC75A - REPORT EXPECTED ERRORS 
*         FHC75G - CHECK PARAMETERS AND BUILD DISPLAY 
*         FHC75I - CONNECT TEST FOR COPY 0
*         FHC75J - CONNECT TEST FOR COPY 1
*         FHC75K - CONNECT TEST FOR COPY 2
*         FHC75L - CONNECT TEST FOR COPY 3
*         FHC981 - REPORT REPEAT MODULE ERROR 
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - NUMBER OF ACCESSES BEING TESTED
*         B3 - ERROR COUNT
*         B4 - THIS ACCESS NUMBER 
*         B5 - THIS TEST COPY NUMBER
*         B6 - NUMBER OF ACCESSES AVAILABLE 
*         B7 - TEMPORARY STORAGE
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED-NONE.
* 
* 
1  FORMAT FHC75 - CONNECT TEST
4  FORMAT FHC75 ERROR(S) = *DECD
* 
/         FLAG EQUATES
* 
   EQUATE FLAG TO 504 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
/         FUNCTION CODE EQUATES 
* 
   EQUATE CLCON TO 0042      *CLEAR COUPLER CONNECT 
* 
/         MISCELLANEOUS EQUATES 
* 
   EQUATE DOPIN TO 0010      *DISABLE OPERATOR INTERVENTION 
* 
/ 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF (P5.AND.DOPIN.EQ.0) GOTO 21 
   IF (ES.AND.RM.EQ.0) GOTO 21
   EXIT TO 981
* 
/        INITIALIZE.
* 
21 B0=160                    *TEST NUMBER 70 HEX
   B1=0                      *LOOP COUNT
   B3=0                      *ERROR COUNT 
* 
/        PERFORM CONNECT TEST.
* 
40 CALL 75G                  *CHECK PARAMETERS AND DISPLAY
/ 
   IF (B5.NE.0) GOTO 45 
   CALL 75I 
   GOTO 60
/ 
45 IF (B5.NE.1) GOTO 50 
   CALL 75J 
   GOTO 60
/ 
50 IF (B5.NE.2) GOTO 55 
   CALL 75K 
   GOTO 60
/ 
55 CALL 75L 
* 
/         PROCESS ERRORS. 
* 
60 IF (EC.EQ.0) GOTO 77      *IF NO ERRORS,TERMINATE
* 
/         CALL APPROPRIATE DISPLAY SUBMODULE. 
* 
74 IF(EC.LT.4000B) CALL 75A  *EXPECTED ERROR DISPLAY
   IF(EC.GE.4000B) CALL 750  *UNEXPECTED ERROR DISPLAY
* 
/        TERMINATE. 
* 
77 IF (ES.AND.RM.NE.0) GOTO 21
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   END 20 
COMPILE 
   MODULE FHC75A,6000(05,07,14,16),LOCK 
*   5.2.49.1 FHC75A - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC75.
* 
*         BUFFERS USED- 
*         SAME AS FHC75.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC75 - CONNECT TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC75 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 70001 HEX 
* 
10 FORMAT COPY 0 UNABLE TO RESERVE CONTROLLER.
11 FORMAT VERIFY THAT NO OTHER ACCESSES ARE USING THE 7155
12 FORMAT AND RERUN FHC75.  IF IT STILL FAILS, REPLACE THE
13 FORMAT R/T CARD FOR THIS ACCESS. 
* 
/        ERROR NUMBER 70002 HEX 
* 
14 FORMAT COPY 0 UNABLE TO SEE COPY 1-S RESERVE.
15 FORMAT SUCCESSIVELY REPLACE R/T CARDS FOR ACCESSES BEING 
16 FORMAT TESTED BY COPIES 1 AND 0. 
17 FORMAT 
* 
/        ERROR NUMBER 70003 HEX 
* 
20 FORMAT COPY 0 UNABLE TO CLEAR COPY 1-S RESERVE.
22 FORMAT TESTED BY COPIES 0 AND 1. 
23 FORMAT 
* 
/        ERROR NUMBER 70004 HEX 
* 
24 FORMAT COPY 0 UNABLE TO SEE COPY 2-S RESERVE.
26 FORMAT TESTED BY COPIES 2 AND 0. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC75A - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
/ 
   IF (B0.NE.160) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.4) EXIT TO 75B 
* 
/        ERROR NUMBER 70001 HEX 
* 
40 IF (EC.NE.1) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 70002 HEX 
* 
41 IF (EC.NE.2) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 15 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 70003 HEX 
* 
42 IF (EC.NE.3) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 15 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 70004 HEX 
* 
43 IF (EC.NE.4) GOTO 45 
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 15 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   GOTO 77
/ 
45 MSG 30 (EA,B0,EC,EM) TO LINE 12
/ 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC75B,6000(05,07,14,16),LOCK 
*   5.2.49.2 FHC75B - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC75.
* 
*         BUFFERS USED- 
*         SAME AS FHC75.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC75 - CONNECT TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC75 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 70005 HEX 
* 
10 FORMAT COPY 0 UNABLE TO CLEAR COPY 2-S RESERVE.
11 FORMAT SUCCESSIVELY REPLACE R/T CARDS FOR ACCESSES BEING 
12 FORMAT TESTED BY COPIES 0 AND 2. 
13 FORMAT 
* 
/        ERROR NUMBER 70006 HEX 
* 
14 FORMAT COPY 0 UNABLE TO SEE COPY 3-S RESERVE.
16 FORMAT TESTED BY COPIES 3 AND 0. 
17 FORMAT 
* 
/        ERROR NUMBER 70007 HEX 
* 
20 FORMAT COPY 0 UNABLE TO CLEAR COPY 3-S RESERVE.
22 FORMAT TESTED BY COPIES 0 AND 3. 
23 FORMAT 
* 
/        ERROR NUMBER 70008 HEX 
* 
24 FORMAT COPY 1 UNABLE TO SEE COPY 0-S RESERVE.
26 FORMAT TESTED BY COPIES 0 AND 1. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC75B - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
/ 
   IF (B0.NE.160) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.10) EXIT TO 75C
* 
/        ERROR NUMBER 70005 HEX 
* 
40 IF (EC.NE.5) GOTO 41 
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 70006 HEX 
* 
41 IF (EC.NE.6) GOTO 42 
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 70007 HEX 
* 
42 IF (EC.NE.7) GOTO 43 
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 70008 HEX 
* 
43 IF (EC.NE.10) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   GOTO 77
/ 
45 MSG 30 (EA,B0,EC,EM) TO LINE 12
/ 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC75C,6000(05,07,14,16),LOCK 
*   5.2.49.3 FHC75C - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC75.
* 
*         BUFFERS USED- 
*         SAME AS FHC75.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC75 - CONNECT TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC75 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 70009 HEX 
* 
10 FORMAT COPY 1 UNABLE TO CLEAR COPY 0-S RESERVE.
11 FORMAT SUCCESSIVELY REPLACE R/T CARDS FOR ACCESSES BEING 
12 FORMAT TESTED BY COPIES 1 AND 0. 
13 FORMAT 
* 
/        ERROR NUMBER 7000A HEX 
* 
14 FORMAT COPY 1 UNABLE TO SEE COPY 2-S RESERVE.
16 FORMAT TESTED BY COPIES 2 AND 1. 
17 FORMAT 
* 
/        ERROR NUMBER 7000B HEX 
* 
20 FORMAT COPY 1 UNABLE TO CLEAR COPY 2-S RESERVE.
22 FORMAT TESTED BY COPIES 1 AND 2. 
23 FORMAT 
* 
/        ERROR NUMBER 7000C HEX 
* 
24 FORMAT COPY 1 UNABLE TO SEE COPY 3-S RESERVE.
26 FORMAT TESTED BY COPIES 3 AND 1. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC75C - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
/ 
   IF (B0.NE.160) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.14) EXIT TO 75D
* 
/        ERROR NUMBER 70009 HEX 
* 
40 IF (EC.NE.11) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 7000A HEX 
* 
41 IF (EC.NE.12) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 7000B HEX 
* 
42 IF (EC.NE.13) GOTO 43
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 7000C HEX 
* 
43 IF (EC.NE.14) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   GOTO 77
/ 
45 MSG 30 (EA,B0,EC,EM) TO LINE 12
/ 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC75D,6000(05,07,14,16),LOCK 
*   5.2.49.4 FHC75D - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC75.
* 
*         BUFFERS USED- 
*         SAME AS FHC75.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC75 - CONNECT TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC75 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 7000D HEX 
* 
10 FORMAT COPY 1 UNABLE TO CLEAR COPY 3-S RESERVE.
11 FORMAT SUCCESSIVELY REPLACE R/T CARDS FOR ACCESSES BEING 
12 FORMAT TESTED BY COPIES 1 AND 3. 
13 FORMAT 
* 
/        ERROR NUMBER 7000E HEX 
* 
14 FORMAT COPY 2 UNABLE TO SEE COPY 0-S RESERVE.
16 FORMAT TESTED BY COPIES 0 AND 2. 
17 FORMAT 
* 
/        ERROR NUMBER 7000F HEX 
* 
20 FORMAT COPY 2 UNABLE TO CLEAR COPY 0-S RESERVE.
22 FORMAT TESTED BY COPIES 2 AND 0. 
23 FORMAT 
* 
/        ERROR NUMBER 70010 HEX 
* 
24 FORMAT COPY 2 UNABLE TO SEE COPY 1-S RESERVE.
26 FORMAT TESTED BY COPIES 1 AND 2. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC75D - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
/ 
   IF (B0.NE.160) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.20) EXIT TO 75E
* 
/        ERROR NUMBER 7000D HEX 
* 
40 IF (EC.NE.15) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 7000E HEX 
* 
41 IF (EC.NE.16) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 7000F HEX 
* 
42 IF (EC.NE.17) GOTO 43
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 70010 HEX 
* 
43 IF (EC.NE.20) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   GOTO 77
/ 
45 MSG 30 (EA,B0,EC,EM) TO LINE 12
/ 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC75E,6000(05,07,14,16),LOCK 
*   5.2.49.5 FHC75E - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC75.
* 
*         BUFFERS USED- 
*         SAME AS FHC75.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC75 - CONNECT TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC75 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 70011 HEX 
* 
10 FORMAT COPY 2 UNABLE TO CLEAR COPY 1-S RESERVE.
11 FORMAT SUCCESSIVELY REPLACE R/T CARDS FOR ACCESSES BEING 
12 FORMAT TESTED BY COPIES 2 AND 1. 
13 FORMAT 
* 
/        ERROR NUMBER 70012 HEX 
* 
14 FORMAT COPY 2 UNABLE TO SEE COPY 3-S RESERVE.
16 FORMAT TESTED BY COPIES 3 AND 2. 
17 FORMAT 
* 
/        ERROR NUMBER 70013 HEX 
* 
20 FORMAT COPY 2 UNABLE TO CLEAR COPY 3-S RESERVE.
22 FORMAT TESTED BY COPIES 2 AND 3. 
23 FORMAT 
* 
/        ERROR NUMBER 70014 HEX 
* 
24 FORMAT COPY 3 UNABLE TO SEE COPY 0-S RESERVE.
26 FORMAT TESTED BY COPIES 0 AND 3. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC75E - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
/ 
   IF (B0.NE.160) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.24) EXIT TO 75F
* 
/        ERROR NUMBER 70011 HEX 
* 
40 IF (EC.NE.21) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 70012 HEX 
* 
41 IF (EC.NE.22) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 70013 HEX 
* 
42 IF (EC.NE.23) GOTO 43
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 70014 HEX 
* 
43 IF (EC.NE.24) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   GOTO 77
/ 
45 MSG 30 (EA,B0,EC,EM) TO LINE 12
/ 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC75F,6000(05,07,14,16),LOCK 
*   5.2.49.6 FHC75F - REPORT EXPECTED ERRORS
* 
*         PURPOSE-
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC75.
* 
*         BUFFERS USED- 
*         SAME AS FHC75.
* 
* 
* 
/        COMMON MESSAGES
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC75 - CONNECT TEST
3  FORMAT PRESERVICE FORECAST GROUP FHDC
4  FORMAT FHC75 - LINE *OCT - ERROR NUMBER *H*HE
* 
/        ERROR NUMBER 70019 HEX 
* 
5  FORMAT COPY 3 UNABLE TO CLEAR COPY 1-S RESERVE.
6  FORMAT SUCCESSIVELY REPLACE R/T CARDS FOR ACCESSES BEING 
7  FORMAT TESTED BY COPIES 3 AND 1. 
* 
/        ERROR NUMBER 70015 HEX 
* 
10 FORMAT COPY 3 UNABLE TO CLEAR COPY 0-S RESERVE.
11 FORMAT SUCCESSIVELY REPLACE R/T CARDS FOR ACCESSES BEING 
12 FORMAT TESTED BY COPIES 3 AND 0. 
13 FORMAT 
* 
/        ERROR NUMBER 70016 HEX 
* 
14 FORMAT COPY 3 UNABLE TO SEE COPY 2-S RESERVE.
16 FORMAT TESTED BY COPIES 2 AND 3. 
17 FORMAT 
* 
/        ERROR NUMBER 70017 HEX 
* 
20 FORMAT COPY 3 UNABLE TO CLEAR COPY 2-S RESERVE.
22 FORMAT TESTED BY COPIES 3 AND 2. 
23 FORMAT 
* 
/        ERROR NUMBER 70018 HEX 
* 
24 FORMAT COPY 3 UNABLE TO SEE COPY 1-S RESERVE.
26 FORMAT TESTED BY COPIES 1 AND 3. 
27 FORMAT 
* 
/        SOFTWARE ERROR MESSAGES. 
* 
30 FORMAT FHC75F - S/W ERROR, EA=*OCT, EN=*H*HE, EM=*OCT
* 
/ 
* 
31 MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4(EA,B0,EC) TO LINE 5
/ 
   IF (B0.NE.160) GOTO 45 
   IF (EC.EQ.0) GOTO 45 
   IF (EC.GT.30) GOTO 44
* 
/        ERROR NUMBER 70015 HEX 
* 
40 IF (EC.NE.25) GOTO 41
   MSG 10 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 70016 HEX 
* 
41 IF (EC.NE.26) GOTO 42
   MSG 14 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 16 TO LINE 15
   MSG 17 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 70017 HEX 
* 
42 IF (EC.NE.27) GOTO 43
   MSG 20 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 22 TO LINE 15
   MSG 23 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 70018 HEX 
* 
43 IF (EC.NE.30) GOTO 45
   MSG 24 TO LINE 12
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 11 TO LINE 14
   MSG 26 TO LINE 15
   MSG 27 TO LINE 16
   GOTO 77
* 
/        ERROR NUMBER 70019 HEX 
* 
44 IF (EC.NE.31) GOTO 45
   MSG 5 TO LINE 12 
   IF (P4.AND.4000.EQ.0) GOTO 77
   MSG 6 TO LINE 14 
   MSG 7 TO LINE 15 
   MSG 13 TO LINE 16
   GOTO 77
/ 
45 MSG 30 (EA,B0,EC,EM) TO LINE 12
/ 
77 PICTURE
   HALT 
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC750,6000(05,07,14,16),LOCK 
*   5.2.49.8 FHC750 - REPORT UNEXPECTED ERRORS
* 
*         PURPOSE-
*         FHC750 DISPLAYS INFORMATION EXPANDING ON ALL
*         ERRORS OTHER THAN THOSE WHICH CAN BE INTERPRETED
*         FOR ISOLATION.
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC75.
* 
*         BUFFERS USED- 
*         SAME AS FHC75.
* 
* 
* 
/ 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC75 - CONNECT TEST
4  FORMAT FHC75 - LINE *OCT - ERROR NUMBER *H*HE
*         THE NEXT CARD IS A *CALL FMCXX0 
*CALL FMCXX0
   MODULE FHC75G,6000(05,07,14,16),LOCK 
*   5.2.49.9 FHC75G/FHC75H - CHECK PARAMETERS AND BUILD DISPLAY 
* 
*         PURPOSE-
*         FHC75G AND FHC75H CHECK THE PARAMETERS P8 AND P9 WHICH ARE
*         SUPPLIED BY THE OPERATOR AND ASSURE THAT THERE ARE NO UNUSED
*         BITS SET OR CONTRADICTIONS IN THE VALUES.  FURTHER, THEY
*         INTERPRET THE SELECTIONS AND DISPLAY THEIR MEANING ON THE K/L 
*         DISPLAY.
/ 
*         ENTRY-
*         P8 AND P9 HAVE THE MEANING DESCRIBED IN SECTION 3.2 AND 
*         MODULE 99B
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC75.
* 
*         BUFFERS USED- 
*         SAME AS FHC75.
* 
* 
1  FORMAT CHECK P9 - UNUSED BITS SET. 
2  FORMAT CHECK P9 - NO OTHER ACCESSES ARE BEING TESTED.
3  FORMAT CHECK P8 - UNUSED BITS SET. 
10 FORMAT THIS IS COPY NUMBER *H OF FHC AND TESTS ACCESS*A. 
11 FORMAT CHANNEL ACCESSES AVAILABLE(FROM P8)--*A*A*A*A 
12 FORMAT TO CHANGE THIS INFORMATION, MODIFY
13 FORMAT PARAMETERS P8 AND P9 AND RERUN FHC75. 
17 FORMAT PARAMETER ENTRY ERROR 
20 FORMAT CHECK P8 - THIS ACCESS IS NOT AVAILABLE.
21 FORMAT CHECK P9 - THIS COPY NUMBER IS GREATER THAN THE 
22 FORMAT            NUMBER OF OTHER ACCESSES BEING TESTED. 
23 FORMAT CHECK P8/P9 - THE NUMBER OF ACCESSES BEING TESTED 
24 FORMAT               IS GREATER THAN THE NUMBER AVAILABLE
/ 
30 BLANK
   B7 = 6                    *INITIALIZE LINE INDEX 
   B4=P8.RS.6.AND.3          *THIS ACCESS NUMBER
   B2=P9.AND.3+1             *NO. OF ACCESSES BEING TESTED
   B5=P9.RS.6.AND.3          *THIS TEST COPY NUMBER 
* 
/         CHECK FOR THIS ACCESS BEING AVAILABLE.
* 
   B6=1.LS.B4 
   IF (P8.AND.B6.EQ.0) ERROR 1/20, GOSUB 70 
* 
/         CHECK FOR THIS COPY NUMBER BEING TOO HIGH.
* 
   IF (B5.LT.B2) GOTO 32
   ERROR 1/21, GOSUB 70 
   ERROR 1/22, GOSUB 70 
* 
/         CHECK THAT THE NUMBER OF ACCESSES BEING TESTED
/         .LE. THE NUMBER OF ACCESSES AVAILABLE.
* 
32 B6 = 0                    *NUMBER OF ACCESSES AVAILABLE
   IF (P8.AND.1.NE.0) B6=B6+1 
   IF (P8.AND.2.NE.0) B6=B6+1 
   IF (P8.AND.4.NE.0) B6=B6+1 
   IF (P8.AND.10.NE.0) B6=B6+1
/ 
   IF (B6.GE.B2) GOTO 34
   ERROR 1/23, GOSUB 70 
   ERROR 1/24, GOSUB 70 
* 
/         CHECK FOR UNUSED BITS IN P9 BEING SET 
* 
34 IF (P9.AND.7474B.NE.0) ERROR 1/1, GOSUB 70 
* 
/         CHECK FOR TOO FEW ACCESSES BEING TESTED 
* 
   IF (P9.AND.3.EQ.0) ERROR 1/2, GOSUB 70 
* 
/         CHECK FOR UNUSED BITS IN P8 BEING SET 
* 
   IF (P8.AND.7460B.NE.0) ERROR 1/3, GOSUB 70 
* 
/         POST ERROR MESSAGES 
* 
40 IF (EC.EQ.0) GOTO 50 
   MSG 17 TO LINE 5 
   ERROR 1/12, GOSUB 70 
   ERROR 1/13, GOSUB 70 
* 
/         POST AVAILABLE ACCESSES 
* 
50 B10 = 0                   *INITIALIZE OB INDEX 
60 OB(B10) = 5555B           *BLANK FILL OB 
   GOTO 60 WHILE (B10+1.LT.4) 
   B10 = 0                   *INITIALIZE OB INDEX 
   B11 = 5501B               *INITIALIZE ACCESS NAME
   IF (P8.AND.1.NE.0) GOSUB 71
   B11 = B11 + 1             *INCREMENT ACCESS NAME 
   IF (P8.AND.2.NE.0) GOSUB 71
   B11 = B11 + 1             *INCREMENT ACCESS NAME 
   IF (P8.AND.4.NE.0) GOSUB 71
   B11 = B11 + 1             *INCREMENT ACCESS NAME 
   IF (P8.AND.10.NE.0) GOSUB 71 
   MSG 11 4 WORDS FROM OB TO LINE 4 
* 
/         POST COPY NUMBER AND ACCESS BEING TESTED. 
* 
   B4 = B4 + 5501B           *FORM ACCESS LETTER
   MSG 10 (B5,B4) TO LINE 3 
/ 
   EXIT TO 75H
/         ERROR MESSAGE SUBROUTINE
70 MSG EC TO LINE B7
   B7 = B7 + 1               *INCREMENT LINE INDEX
   RETURN 
/         AVAILABLE ACCESS SUBROUTINE 
71 OB(B10) = B11             *POST AVAILABLE ACCESS 
   B10 = B10 + 1             *INCREMENT OB INDEX
   RETURN 
   END 30 
COMPILE 
   MODULE FHC75H,6000(05,07,14,16),LOCK 
1  FORMAT P8 = XXX1  ACCESS A IS AVAILABLE
2  FORMAT      XXX2  ACCESS B IS AVAILABLE
3  FORMAT      XXX4  ACCESS C IS AVAILABLE
4  FORMAT      XX10  ACCESS D IS AVAILABLE
5  FORMAT      XAXX  A IS THE ACCESS TESTED BY
6  FORMAT            THIS COPY OF THE TEST. 
7  FORMAT            A = 0 FOR ACCESS A 
10 FORMAT            A = 1 FOR ACCESS B 
11 FORMAT            A = 2 FOR ACCESS C 
12 FORMAT            A = 3 FOR ACCESS D 
13 FORMAT P9 = 0Y0Z  Y = THIS TEST COPY NUMBER
14 FORMAT                (0, 1, 2, OR 3)
15 FORMAT            Z = THE NUMBER OF OTHER
16 FORMAT                ACCESSES BEING TESTED
17 FORMAT                (1, 2, OR 3) 
20 FORMAT -PAUSE-TYPE GO TO BEGIN TEST
21 FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
22 FORMAT FHC75 - CONNECT TEST
23 FORMAT -PAUSE-PARAMETER ENTRY ERROR
/ 
/ 
/ 
/ 
/ 
/         POST UNCHANGING MESSAGES
/ 
30 MSG 21 TO LINE 1 
   MSG 22 TO LINE 2 
   IF (ES.AND.TM.NE.0) GOTO 50  *IF TERMINAL MODE,
   B7 = B7 + 1               *INSERT BLANK LINE 
/ 
   B10 = 1                   *INITIALIZE FORMAT INDEX 
40 MSG B10 TO LINE B7        *DISPLAY PARAMETERS
   B7 = B7 + 1               *INCREMENT LINE INDEX
   GOTO 40 WHILE (B10+1.LT.20B) 
/ 
50 PICTURE                   *POST MESSAGES 
   IF (EC.EQ.0) MSG 20 TO DISPLAY, PRINT
   IF (EC.NE.0) MSG 23 TO DISPLAY, PRINT
   PAUSE
   IF (EC.NE.0) GOTO 77      *IF PARAM ERR, END 
   BLANK
   EXIT 
77 END 30 
COMPILE 
   MODULE FHC75I,6000(05,07,14,16),LOCK 
**  5.2.49.10 FHC75I - CONNECT TEST FOR COPY 0
* 
*         PURPOSE-SEE PURPOSE OF FHC75. 
* 
*         METHOD- 
*         CONNECT (EXPECT NO ERROR) 
*         IF THE NUMBER OF OTHER ACCESSES BEING TESTED .GE. 1, THEN 
*           PAUSE AND TELL THE OPERATOR TO START COPY 1 OF THE TEST 
*           CONNECT (EXPECT AN ERROR) 
*           CLEAR CONNECTS
*           CONNECT (EXPECT NO ERROR) 
*           IF THE NUMBER OF OTHER ACCESSES BEING TESTED .GE. 2, THEN 
*             PAUSE AND TELL THE OPERATOR TO START COPY 2 OF THE TEST 
*             CONNECT (EXPECT AN ERROR) 
*             CLEAR CONNECTS
*             CONNECT (EXPECT NO ERROR) 
*             IF THE NUMBER OF OTHER ACCESSES BEING TESTED .GE. 3, THEN 
*               PAUSE AND TELL THE OPERATOR TO START COPY 3 OF THE TEST 
*               CONNECT (EXPECT AN ERROR) 
*               CLEAR CONNECTS
*               CONNECT (EXPECT NO ERROR) 
*             ENDIF 
*           ENDIF 
*         ENDIF 
*         TELL THE OPERATOR TO DROP ALL OTHER COPIES OF THE TEST
/ 
*         ENTRY-
*         P9 AS DESCRIBED IN SECTION 3.2 OF FHC99B. 
* 
*         EXIT- 
*         CONTROLLER IS CONNECTED.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED-NONE.
* 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC75 - CONNECT TEST
3  FORMAT COPY *H, ACCESS*A 
4  FORMAT START COPY 0 OF THE FHC CONNECT TEST (FHC75). 
5  FORMAT START COPY 1 OF THE FHC CONNECT TEST (FHC75). 
6  FORMAT START COPY 2 OF THE FHC CONNECT TEST (FHC75). 
7  FORMAT START COPY 3 OF THE FHC CONNECT TEST (FHC75). 
10 FORMAT DROP ALL OTHER COPIES OF TEST AND TYPE GO.
11 FORMAT -PAUSE- OPERATOR INSTRUCTIONS 
   EQUATE CGS TO 0012 
   EQUATE CLCON TO 0042 
   EQUATE GENSTAT TO 504
   EQUATE CRSVD TO 2000 
/ 
/ 
20 B7 = B4
   MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 (B5,B7) TO LINE 3
   RES, ABT 70
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND.CRSVD.NE.0) ERROR 3/1, GOTO 67 
/ 
   IF (P9.AND.3.LT.1) GOTO 60 
   MSG 5 TO LINE 5
   PICTURE
   MSG 11 TO DISPLAY, PRINT 
   PAUSE
   RES, ABT 70
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND CRSVD.EQ.0) GOTO 25
   FUNC CLCON, ABT 70 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND.CRSVD.NE.0) GOTO 26
   GOTO 27
/ 
25 ERROR 3/2, GOTO 67 
26 ERROR 3/3, GOTO 67 
/ 
27 IF (P9.AND.3.LT.2) GOTO 60 
   MSG 6 TO LINE 5
   PICTURE
   MSG 11 TO DISPLAY, PRINT 
   PAUSE
   RES, ABT 70
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND CRSVD.EQ.0) GOTO 35
   FUNC CLCON, ABT 70 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND.CRSVD.NE.0) GOTO 36
   GOTO 37
/ 
35 ERROR 3/4, GOTO 67 
36 ERROR 3/5, GOTO 67 
/ 
37 IF (P9.AND.3.LT.3) GOTO 60 
   MSG 7 TO LINE 5
   PICTURE
   MSG 11 TO DISPLAY, PRINT 
   PAUSE
   RES, ABT 70
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND CRSVD.EQ.0) GOTO 45
   FUNC CLCON, ABT 70 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND.CRSVD.NE.0) GOTO 46
   GOTO 60
/ 
45 ERROR 3/6, GOTO 67 
46 ERROR 3/7, GOTO 67 
/ 
60 MSG 10 TO LINE 5 
   PICTURE
   MSG 11 TO DISPLAY, PRINT 
   PAUSE
67 EXIT                      *EXPECTED ERROR
70 EXIT                      *UNEXPECTED ERROR
   END 20 
COMPILE 
   MODULE FHC75J,6000(05,07,14,16),LOCK 
**  5.2.49.11 FHC75J - CONNECT TEST FOR COPY 1
* 
*         PURPOSE-
*         SEE PURPOSE OF FHC75. 
* 
*         METHOD- 
*         CONNECT (EXPECT AN ERROR) 
*         CLEAR CONNECT 
*         CONNECT (EXPECT NO ERROR) 
*         PAUSE AND TELL OPERATOR TO START COPY 0 OF THE TEST 
*         IF THE NUMBER OF OTHER ACCESSES BEING TESTED .GE. 2, THEN 
*           CONNECT (EXPECT AN ERROR) 
*           CLEAR CONNECT 
*           CONNECT (EXPECT NO ERROR) 
*           PAUSE AND TELL OPERATOR TO START COPY 2 OF THE TEST 
*           IF THE NUMBER OF OTHER ACCESSES BEING TESTED .GE. 3, THEN 
*             CONNECT (EXPECT AN ERROR) 
*             CLEAR CONNECT 
*             CONNECT (EXPECT NO ERROR) 
*             PAUSE AND TELL OPERATOR TO START COPY 3 OF THE TEST 
*           ENDIF 
*         ENDIF 
/ 
*         ENTRY-
*         P9 AS DESCRIBED IN SECTION 3.2 OF FHC99B. 
* 
*         EXIT- 
*         CONTROLLER IS CONNECTED.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED-NONE.
* 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC75 - CONNECT TEST
3  FORMAT COPY *H, ACCESS*A 
4  FORMAT START COPY 0 OF THE FHC CONNECT TEST (FHC75). 
5  FORMAT START COPY 1 OF THE FHC CONNECT TEST (FHC75). 
6  FORMAT START COPY 2 OF THE FHC CONNECT TEST (FHC75). 
7  FORMAT START COPY 3 OF THE FHC CONNECT TEST (FHC75). 
11 FORMAT -PAUSE- OPERATOR INSTRUCTIONS 
   EQUATE CGS TO 0012 
   EQUATE CLCON TO 0042 
   EQUATE GENSTAT TO 504
   EQUATE CRSVD TO 2000 
/ 
/ 
/ 
20 B7 = B4
   MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 (B5,B7) TO LINE 3
   RES, ABT 70
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND CRSVD.EQ.0) GOTO 25
   FUNC CLCON, ABT 70 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND.CRSVD.NE.0) GOTO 26
   GOTO 27
/ 
25 ERROR 3/10, GOTO 67
26 ERROR 3/11, GOTO 67
27 MSG 4 TO LINE 5
   PICTURE
   MSG 11 TO DISPLAY, PRINT 
   PAUSE
   RES, ABT 70
/ 
   IF (P9.AND.3.LT.2) GOTO 60 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND CRSVD.EQ.0) GOTO 35
   FUNC CLCON, ABT 70 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND.CRSVD.NE.0) GOTO 36
   GOTO 37
/ 
35 ERROR 3/12, GOTO 67
36 ERROR 3/13, GOTO 67
37 MSG 6 TO LINE 5
   PICTURE
   MSG 11 TO DISPLAY, PRINT 
   PAUSE
   RES, ABT 70
/ 
   IF (P9.AND.3.LT 3) GOTO 60 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND CRSVD.EQ.0) GOTO 45
   FUNC CLCON, ABT 70 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND.CRSVD.NE.0) GOTO 46
   GOTO 47
/ 
45 ERROR 3/14, GOTO 67
46 ERROR 3/15, GOTO 67
47 MSG 7 TO LINE 5
   PICTURE
/ 
60 EXIT 
67 EXIT                      *EXPECTED ERROR
70 EXIT                      *UNEXPECTED ERROR
   END 20 
COMPILE 
   MODULE FHC75K,6000(05,07,14,16),LOCK 
**  5.2.49.12 FHC75K - CONNECT TEST FOR COPY 2
* 
*         PURPOSE-
*         SEE PURPOSE OF FHC75. 
* 
*         METHOD- 
*         CONNECT (EXPECT AN ERROR) 
*         CLEAR CONNECT 
*         CONNECT (EXPECT NO ERROR) 
*         PAUSE AND TELL OPERATOR TO START COPY 1 OF THE TEST 
*         CONNECT (EXPECT AN ERROR) 
*         CLEAR CONNECT 
*         CONNECT (EXPECT NO ERROR) 
*         PAUSE AND TELL OPERATOR TO START COPY 0 OF THE TEST 
*         IF THE NUMBER OF OTHER ACCESSES BEING TESTED .GE. 3, THEN 
*           CONNECT (EXPECT AN ERROR) 
*           CLEAR CONNECT 
*           CONNECT (EXPECT NO ERROR) 
*           PAUSE AND TELL OPERATOR TO START COPY 3 OF THE TEST 
*         ENDIF 
/ 
*         ENTRY-
*         P9 AS DESCRIBED IN SECTION 3.2 OF FHC99B. 
* 
*         EXIT- 
*         CONTROLLER IS CONNECTED.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED-NONE.
* 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC75 - CONNECT TEST
3  FORMAT COPY *H, ACCESS*A 
4  FORMAT START COPY 0 OF THE FHC CONNECT TEST (FHC75). 
5  FORMAT START COPY 1 OF THE FHC CONNECT TEST (FHC75). 
6  FORMAT START COPY 2 OF THE FHC CONNECT TEST (FHC75). 
7  FORMAT START COPY 3 OF THE FHC CONNECT TEST (FHC75). 
11 FORMAT -PAUSE- OPERATOR INSTRUCTIONS 
   EQUATE CGS TO 0012 
   EQUATE CLCON TO 0042 
   EQUATE GENSTAT TO 504
   EQUATE CRSVD TO 2000 
/ 
/ 
/ 
20 B7 = B4
   MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 (B5,B7) TO LINE 3
   RES, ABT 70
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND CRSVD.EQ.0) GOTO 25
   FUNC CLCON, ABT 70 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND.CRSVD.NE.0) GOTO 26
   GOTO 27
/ 
25 ERROR 3/16, GOTO 67
26 ERROR 3/17, GOTO 67
27 MSG 5 TO LINE 5
   PICTURE
   MSG 11 TO DISPLAY, PRINT 
   PAUSE
   RES, ABT 70
/ 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND CRSVD.EQ.0) GOTO 35
   FUNC CLCON, ABT 70 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND.CRSVD.NE.0) GOTO 36
   GOTO 37
/ 
35 ERROR 3/20, GOTO 67
36 ERROR 3/21, GOTO 67
37 MSG 4 TO LINE 5
   PICTURE
   MSG 11 TO DISPLAY, PRINT 
   PAUSE
   RES, ABT 70
   IF (P9.AND.3.LT.3) GOTO 60 
/ 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND CRSVD.EQ.0) GOTO 45
   FUNC CLCON, ABT 70 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND.CRSVD.NE.0) GOTO 46
   GOTO 47
/ 
45 ERROR 3/22, GOTO 67
46 ERROR 3/23, GOTO 67
47 MSG 7 TO LINE 5
   PICTURE
   MSG 11 TO DISPLAY, PRINT 
   PAUSE
   RES, ABT 70
/ 
60 EXIT 
67 EXIT                      *EXPECTED ERROR
70 EXIT                      *UNEXPECTED ERROR
   END 20 
COMPILE 
   MODULE FHC75L,6000(05,07,14,16),LOCK 
**  5.2.49.13 FHC75L - CONNECT TEST FOR COPY 3
* 
*         PURPOSE-
*         SEE PURPOSE OF FHC75. 
* 
*         METHOD- 
*         CONNECT (EXPECT AN ERROR) 
*         CLEAR CONNECT 
*         CONNECT (EXPECT NO ERROR) 
*         PAUSE AND TELL OPERATOR TO START COPY 2 OF THE TEST 
*         CONNECT (EXPECT AN ERROR) 
*         CLEAR CONNECT 
*         CONNECT (EXPECT NO ERROR) 
*         PAUSE AND TELL OPERATOR TO START COPY 1 OF THE TEST 
*         CONNECT (EXPECT AN ERROR) 
*         CLEAR CONNECT 
*         CONNECT (EXPECT NO ERROR) 
*         PAUSE AND TELL OPERATOR TO START COPY 0 OF THE TEST 
/ 
*         ENTRY-
*         P9 AS DESCRIBED IN SECTION 3.2 OF FHC99B. 
* 
*         EXIT- 
*         CONTROLLER IS CONNECTED.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED-NONE.
* 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC75 - CONNECT TEST
3  FORMAT COPY *H, ACCESS*A 
4  FORMAT START COPY 0 OF THE FHC CONNECT TEST (FHC75). 
5  FORMAT START COPY 1 OF THE FHC CONNECT TEST (FHC75). 
6  FORMAT START COPY 2 OF THE FHC CONNECT TEST (FHC75). 
7  FORMAT START COPY 3 OF THE FHC CONNECT TEST (FHC75). 
11 FORMAT -PAUSE- OPERATOR INSTRUCTIONS 
   EQUATE CGS TO 0012 
   EQUATE CLCON TO 0042 
   EQUATE GENSTAT TO 504
   EQUATE CRSVD TO 2000 
/ 
/ 
/ 
20 B7 = B4
   MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 (B5,B7) TO LINE 3
   RES, ABT 70
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND CRSVD.EQ.0) GOTO 25
   FUNC CLCON, ABT 70 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND.CRSVD.NE.0) GOTO 26
   GOTO 27
/ 
25 ERROR 3/24, GOTO 67
26 ERROR 3/25, GOTO 67
27 MSG 6 TO LINE 5
   PICTURE
   MSG 11 TO DISPLAY, PRINT 
   PAUSE
   RES, ABT 70
/ 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND CRSVD.EQ.0) GOTO 35
   FUNC CLCON, ABT 70 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND.CRSVD.NE.0) GOTO 36
   GOTO 37
/ 
35 ERROR 3/26, GOTO 67
36 ERROR 3/27, GOTO 67
37 MSG 5 TO LINE 5
   PICTURE
   MSG 11 TO DISPLAY, PRINT 
   PAUSE
   RES, ABT 70
/ 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND CRSVD.EQ.0) GOTO 45
   FUNC CLCON, ABT 70 
   FUNC CGS, ABT 70 
   IN 1 WORDS TO IB(GENSTAT), ABT 70
   IF (IB(GENSTAT).AND.CRSVD.NE.0) GOTO 46
   GOTO 47
/ 
45 ERROR 3/30, GOTO 67
46 ERROR 3/31, GOTO 67
47 MSG 4 TO LINE 5
   PICTURE
   MSG 11 TO DISPLAY, PRINT 
   PAUSE
   RES, ABT 70
/ 
60 EXIT 
67 EXIT                      *EXPECTED ERROR
70 EXIT                      *UNEXPECTED ERROR
   END 20 
COMPILE 
   MODULE FHC76,6000(05,07,14,16),LOCK
** 5.2.50 FHC76 - NOC 0 LED TEST
* 
*         PURPOSE-
*         FHC76 VERIFIES THAT THE NORMAL OUTPUT CHANNEL 0 LED-S ARE 
*         OPERATIONAL BY SETTING THEM TO A SERIES OF PATTERNS AND HAVING
*         THE OPERATOR VISUALLY VERIFY THEM.
* 
*         METHOD- 
*         A NUMBER OF PATTERNS ARE DISPLAYED IN SEQUENCE FOR ABOUT .25
*         SECONDS EACH ON THE LED-S.  THE .25 SECOND DELAY IS 
*         ACCOMPLISHED BY USING THE CHANNEL TIMING FUNCTION CODE (0055) 
*         TO TIME THE DEAD MAN TIMER BIT WHICH DOES NOT SET WITHIN THE
*         MAXIMUM ALLOWABLE TIME OF ABOUT .25 SECONDS.
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS.
* 
*         EXIT-NO SPECIAL EXIT CONDITIONS.
* 
*         SUBMODULES REFERENCED-
*         FHC760 - REPORT UNEXPECTED ERRORS 
*         FHC981 - REPORT REPEAT MODULE ERRORS
* 
*         REGISTERS USED- 
*         B0 - TEST NUMBER
*         B1 - LOOP COUNT 
*         B2 - DATA PATTERN INDEX 
*         B3 - ERROR COUNT
*         B4 - OPNCPRM INDEX
*         B6 - UPPER 8 BITS OF NOC 0
*         B7 - LOWER 8 BITS OF NOC 0
*         ES, EC, EM, EA - STANDARD USAGE 
* 
*         BUFFERS USED- 
*         OB(103) - CONTAINS THE DATA PATTERNS TO BE
*                     DISPLAYED ON THE LED-S
*         OB(504) - FLAG BITS 
*           FLAG1 - EXPECTED (SET)/UNEXPECTED (CLEAR) 
*                   ERROR FLAG BIT
*         OB(100) - CONTAINS THE PARAMETERS WHICH 
*                     ARE SENT OUT FOLLOWING THE OUTPUT 
*                     ON PROCESSOR NORMAL CHANNEL 
*                     FUNCTION CODE.
* 
*         REMARKS-
*         BECAUSE OF THE OPERATION OF NOC-S 4 AND 5, THE
*         LAST DATA PATTERN USED SHOULD BE ZERO.
* 
* 
1  FORMAT FHC76 - NOC 0 LED TEST
2  FORMAT FHC76 - LC=*DECD, EC=*DECD
4  FORMAT FHC76 ERROR(S) = *DECD
5  FORMAT -PAUSE- SET REPEAT MODULE AND TYPE GO.
6  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
7  FORMAT PRESERVICE FORECAST GROUP FHDC
10 FORMAT OPERATOR INTERVENTION INSTRUCTION 
11 FORMAT VERIFY THAT LED-S ON CARD A16 TURN ON AND OFF.
12 FORMAT IF NOT, SUCCESSIVELY REPLACE CARDS A16 AND A20. 
13 FORMAT CLEAR REPEAT MODULE TO EXIT THIS MODULE.
* 
*         DATA PATTERNS 
* 
   DATA (OB(103),CON) 000,377 
   DATA (OB(105),CON) 001,002,004,010 
   DATA (OB(111),CON) 020,040,100,200 
   DATA (OB(115),CON) 177,277,337,357 
   DATA (OB(121),CON) 367,373,375,376 
   DATA (OB(125),CON) 377,000 
* 
*         FLAG EQUATES
* 
   EQUATE FLAG TO 504 
   EQUATE FLAG1S TO 0002, FLAG1C TO 7775
* 
*         FUNCTION CODE EQUATES 
* 
   EQUATE OPCOM TO 0010      *CLEAR COUPLER CONNECT 
   EQUATE OPNC TO 0050
   EQUATE ENOC TO 0053
   EQUATE ITIME TO 0055 
* 
*         BUFFER EQUATES
* 
   EQUATE SAVEU TO 502, SAVEL TO 503
   EQUATE OPNCPRM TO 100
   EQUATE DATPAT TO 103 
   EQUATE TEMP TO 500 
* 
*         MISCELLANEOUS EQUATES 
* 
   EQUATE NPAT TO 24         *NUMBER OF DATA PATTERNS 
* 
*         PARAMETER EQUATES 
* 
   EQUATE DOPIN TO 0010      *DISABLE OPERATOR INTERVENTION 
* 
* 
* 
20 MSG 1 TO DISPLAY, PRINT
   IF (P5.AND.DOPIN.EQ.0) GOTO 21 
   IF (ES.AND.RM.EQ.0) EXIT 
   EXIT TO 981
* 
21 MSG 5 TO DISPLAY, PRINT
   PAUSE
   MSG 1 TO DISPLAY, PRINT
   GOSUB 50 
* 
*        INITIALIZE.
* 
22 B0=161                    *TEST NUMBER 66 HEX
   B1=0                      *LOOP COUNT
   B2=0                      *DATA PATTERN INDEX
   B3=0                      *ERROR COUNT 
   B4=0                      *OPNCPRM INDEX 
   OB(B4+OPNCPRM)=0          *NOC NUMBER
* 
24 PASS                      *BEGINNING OF PATTERN LOOP 
* 
*        RESERVE, CONNECT, ETC. 
* 
30 RES, ABT 70
   FUNC ENOC, ABT 70
   STATUS 32D WORDS TO SB(0), ABT 70
   OB(SAVEU)=SB(0)
   OB(SAVEL)=SB(1)
   B6=SB(0).AND.374 
   B7=SB(1).AND.3 
* 
*        PERFORM NOC 0 LED TEST.
* 
40 B1=B1+1
   RES, ABT 70
* 
* 
* 
   B6=OB(B2+DATPAT).RS.6+B6 
   B7=OB(B2+DATPAT).LS.2+B7 
   B7=B7.AND.377
* 
*         BUILD PARAMETER WORDS 
* 
   B4=1 
   OB(B4+OPNCPRM)=B6
   B4=2 
   OB(B4+OPNCPRM)=B7
* 
*         INITIATE TIMING (TO CAUSE A .5 SEC CONTROLLER 
*         HANG TO MAKE PATTERNS VISIBLE). 
* 
   OB(TEMP)=0400             *DEAD MAN TIMEOUT BIT
   FUNC ITIME, ABT 70 
   ACN, ABT 70
   OUT 1 WORDS FROM OB(TEMP), ABT 70
* 
*         OUTPUT ON NOC 0 
* 
   FUNC OPNC, ABT 70
   ACN, ABT 70
   OUT 3 WORDS FROM OB(OPNCPRM), ABT 70 
   DELAY 510D MSEC
* 
*        FINALIZE.
* 
46 IF (ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION SET 
   GOTO 24 WHILE (B2+1.LE.NPAT)  *END OF DATA PATTERN LOOP
   GOTO 75                       *TERMINATE 
* 
*         DISPLAY OPERATOR INTERVENTION MESSAGE 
* 
50 MSG 6 TO LINE 1
   MSG 1 TO LINE 2
   MSG 7 TO LINE 3
/ 
52 MSG 10 TO LINE 12
   MSG 11 TO LINE 14
   IF (P4.AND.4000.EQ.0) GOTO 54
   MSG 12 TO LINE 15
   MSG 13 TO LINE 16
54 PICTURE
   RETURN 
/ 
* 
*        PROCESS UNEXPECTED ERRORS. 
* 
70 B3 = B3 + 1               *INCREMENT ERROR COUNT 
72 IF(ES.AND.SL.EQ.0) GOTO 74  *IF SCOPE LOOP IS CLEAR, 
73 MSG 2 (B1,B3) TO DISPLAY  *SCOPE LOOP MESSAGE
   GOTO 40                   *GO TO REPEAT CONDITION
* 
*        CALL APPROPRIATE DISPLAY SUBMODULE.
* 
* 
74 CALL 760                  *UNEXPECTED ERROR DISPLAY
* 
   IF (ES.AND.RC.NE.0) GOTO 40   *IF REPEAT CONDITION SET 
* 
*        TERMINATE. 
* 
75 B4=1 
   OB(B4+OPNCPRM)=OB(SAVEU) 
   B4=2 
   OB(B4+OPNCPRM)=OB(SAVEL) 
   RES, ABT 70
   FUNC OPNC, ABT 70
   ACN, ABT 70
   OUT 3 WORDS FROM OB(OPNCPRM), ABT 70 
* 
* 
* 
   RES, ABT 77
   FUNC OPCOM, ABT 77        *CLEAR COUPLER CONNECT 
77 IF (ES.AND.RM.NE.0) GOTO 22
   BLANK
   IF (B3.NE.0) MSG 4 (B3) TO DISPLAY, PRINT, DAYFILE 
   END 20 
COMPILE 
   MODULE FHC760,6000(05,07,14,16),LOCK 
*   5.2.50.2 FHC760 - REPORT UNEXPECTED ERRORS
* 
*         PURPOSE-
*         FHC760 DISPLAYS INFORMATION EXPANDING ON ALL
*         ERRORS OTHER THAN THOSE WHICH CAN BE INTERPRETED
*         FOR ISOLATION.
* 
*         METHOD- 
* 
*         ENTRY-
* 
*         EXIT- 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         SAME AS FHC76.
* 
*         BUFFERS USED- 
*         SAME AS FHC76.
* 
* 
* 
/ 
* 
1  FORMAT FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
2  FORMAT FHC76 - NOC 0 LED TEST
4  FORMAT FHC76 - LINE *OCT - ERROR NUMBER *H*HE
*         THE NEXT CARD IS A *CALL FMCXX0 
*CALL FMCXX0
   MODULE FHC981,6000(05,07,14,16),LOCK 
**  5.4.2 FHC981 - REPORT REPEAT MODULE ERROR 
* 
*         PURPOSE-
*         FHC981 DISPLAYS INSTRUCTIONS TO THE OPERATOR WHO SELECTED 
*         REPEAT MODULE AND NOT OPERATOR INTERVENTION WHEN RUNNING A
*         MODULE REQUIRING OPERATOR INTERVENTION. 
/ 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS 
* 
*         EXIT- 
*         FHC981 EXECUTES AN END STATEMENT. 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED-NONE.
* 
* 
1  FORMAT AN ATTEMPT WAS MADE TO RUN A MODULE WHICH 
2  FORMAT REQUIRES OPERATOR INTERVENTION WITH THE DISABLE 
3  FORMAT OPERATOR INTERVENTION BIT SET (P5 = XX1X) AND 
4  FORMAT REPEAT MODULE SET (SETSW RM). 
5  FORMAT 
6  FORMAT CLEAR ONE OF THESE CONDITIONS BEFORE ATTEMPTING TO
7  FORMAT RUN THE MODULE AGAIN. 
10 FORMAT -PAUSE- REPEAT MODULE CONFLICT
/ 
/ 
/ 
21 BLANK
   MSG 1 TO LINE 1
   MSG 2 TO LINE 2
   MSG 3 TO LINE 3
   MSG 4 TO LINE 4
   MSG 5 TO LINE 5
   MSG 6 TO LINE 6
   MSG 7 TO LINE 7
   PICTURE
   MSG 10 TO DISPLAY, PRINT 
   PAUSE
   BLANK
   END 21 
COMPILE 
   MODULE FHC982,6000(05,07,14,16),LOCK 
** 5.4.3  FHC982 - LOOP DATA THROUGH MAINTENANCE LOOP 
* 
*         PURPOSE-
*         FHC982 SETS MAINTENANCE LOOP AND LOOPS
*         AN ENTIRE SECTOR OF DATA FROM THE BUFFER, THROUGH 
*         THE LOOP, AND BACK INTO THE BUFFER. 
/ 
*         ENTRY-
*         THE DATA MUST ALREADY BE WRITTEN INTO THE BUFFER MEMORY OF THE
*         CONTROLLER. 
* 
*         EXIT- 
*         THE DATA IS LOOPED TO THE SAME ADDRESS IN THE BUFFER AS IT
*         WAS ORIGINALLY. 
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         B13 - LOOP INDEX (CONTENTS ARE DESTROYED) 
* 
*         BUFFERS USED- 
*         OB(502) - OB(504)  PARAMETERS FOR OUTPUTS ON PROCESSOR NORMAL 
*                            CHANNELS AND CONTROL WORD SEQUENCES. 
* 
* 
   EQUATE OPNC TO 0050
   EQUATE ECWS TO 0051
   EQUATE IPFP TO 0054       *ISSUE PROCESSOR FLAG PULSE
   EQUATE MCCL TO 0001       *MASTER CLEAR CONTROL LOGIC
* 
*         ISSUE MASTER CLEAR TO CLEAR DRIVE SELECT. 
* 
20 OB(502) = MCCL 
   RES, ABT 70
   FUNC IPFP, ABT 70         *ISSUE PROC FLAG PULSE 
   OUT 1 WORDS FROM OB(502), ABT 70 
/         SELECT OR CLEAR 4 HEADS MODE
   OB(502) = 1
   OB(503) = B12
   OB(504) = 0
   FUNC OPNC, ABT 70
   OUT 3 WORDS FROM OB(502), ABT 70 
/ 
/         OUTPUT ON NOC 6 TO SET WRITE, SET READ, 
/         SET LOAD (BUFFER ADDRESS AND UP/DOWN COUNT), AND
/         SET THE BUFFER ADDRESSES TO 13000B (FWA OF BUFFER). 
/ 
   OB(502)=6
   OB(503)=266
   OB(504)=0
   FUNC OPNC, ABT 70
   OUT 3 WORDS FROM OB(502), ABT 70 
   OB(503) = 326
   OB(504) = 20 
   FUNC OPNC, ABT 70
   OUT 3 WORDS FROM OB(502), ABT 70 
/ 
/         OUTPUT ON NOC 7 TO SET MAINTENANCE LOOP, DISABLE
/         PROCESSOR TO BUFFER, AND SET THE UP/DOWN COUNTER
*         TO 11B. 
/ 
   OB(502) = 7
   OB(503) = 340B 
   OB(504) = 11B
   IF(B12.EQ.0) OB(504) = 1 
   FUNC OPNC, ABT 70
   OUT 3 WORDS FROM OB(502), ABT 70 
* 
*         SEND ZEROES TO NOC 6. 
* 
   OB(502) = 6
   OB(503) = 0
   OB(504) = 0
   FUNC OPNC, ABT 70
   OUT 3 WORDS FROM OB(502), ABT 70 
/ 
/         CONTROL WORD SEQUENCE 
/ 
   OB(502) = 3               *NUMBER OF CONTROL WORD PAIRS
/ 
/         BIT COUNT = 0400B 
/ 
   OB(503)=1
   OB(504)=0
   FUNC ECWS, ABT 70
   OUT CHAIN 3 WORDS FROM OB(502), ABT 70 
/ 
/         CONTROLWORD = 40416B (PROCESSOR CLOCK, ENABLE 
/                       DATA TO BUFFER, WRITE GATE, 
/                       READ GATE, AND 16-BIT MODE).
/ 
   OB(502)=101
   IF(B12.EQ.0) OB(502)=100  *FOR NIC 2 TEST
   OB(503)=16 
   OUT CHAIN 2 WORDS FROM OB(502), ABT 70 
* 
*         DELAY CONTROLWORD.
* 
   OB(502) = 0
   OB(503) = 100B 
   OB(504) = 0
   OUT CHAIN 2 WORDS FROM OB(502), ABT 70 
   OUT CHAIN 2 WORDS FROM OB(503), ABT 70 
/ 
/         BIT COUNT = 0, CONTROLWORD = 0. 
/ 
   OB(502)=0
   OB(503)=0
/ 
/         FILL OUT ALL 49D WORDS
/ 
   B13=0
50 OUT CHAIN 2 WORDS FROM OB(502), ABT 70 
   GOTO 50 WHILE (B13+1.LT.19D) 
   OUT 2 WORDS FROM OB(502), ABT 70 
/ 
/         CLEAR DISABLE PROCESSOR TO BUFFER, ET. AL.
/ 
   OB(502) = 7
   OB(503) = 0
   OB(504) = 0
   FUNC OPNC, ABT 70
   OUT 3 WORDS FROM OB(502), ABT 70 
   EXIT                      *RETURN TO MODULE 20 
70 B9 = B9 + 40B             *SET MOD. 982 ERR FLAG 
   EXIT                      *RETURN TO MODULE 20 
   END 20 
COMPILE 
   MODULE FHC983,6000(05,07,14,16),LOCK 
**  5.4.4 FHC983 - GENERATE 48 BIT DATA PATTERNS
* 
*         PURPOSE-
*         FHC983 FILLS THE OUTPUT BUFFER WITH ASSORTED 48 BIT DATA
*         PATTERNS. 
/ 
*         ENTRY-NO SPECIAL CONDITIONS.
* 
*         EXIT- 
*         THE OUTPUT BUFFER CONTAINS THE PATTERNS.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED- 
*         OB(100) - OB(217) 
* 
*         REMARKS-
* 
*         DRIVE         NOC 
*         TYPE  PARCEL  NO.   VALUE 
*         ----- ------  ---  -------
*          844    1     12D  124513B  DIVIDE POLYNOMIAL 
*                 2     13D  001320B  5224 5402 6400 0000 
* 
*          885    1     12D  120405B  DIVIDE POLYNOMIAL 
*                 2     13D  000240B  5020 2400 5000 0030 
*                 3     14D  000030B
* 
*          844    1     12D  013201B  REVERSED DIVIDE POLY. 
*                 2     13D  122452B  0550 0645 1240 0000 
* 
*          885    1     12D  030001B  REVERSED DIVIDE POLY. 
*                 2     13D  005000B  1400 0412 0004 0412 
*                 3     14D  040412B
* 
* 
/ 
/         48 BIT POLYNOMIAL PATTERNS
/ 
   DATA (OB(100),CON) 0000,0000,0000,0000 
   DATA (OB(114),CON) 7777,7777,7777,7777 
   DATA (OB(110),CON) 2525,2525,2525,2525 
   DATA (OB(124),CON) 5252,5252,5252,5252 
   DATA (OB(120),CON) 7760,0377,7760,0377 
   DATA (OB(134),CON) 0017,7400,0017,7400 
   DATA (OB(130),CON) 0020,0401,0020,0401 
   DATA (OB(144),CON) 0040,1002,0040,1002 
   DATA (OB(140),CON) 0100,2004,0100,2004 
   DATA (OB(154),CON) 0200,4010,0200,4010 
   DATA (OB(150),CON) 0401,0020,0401,0020 
   DATA (OB(164),CON) 1002,0040,1002,0040 
   DATA (OB(160),CON) 2004,0100,2004,0100 
   DATA (OB(174),CON) 4010,0200,4010,0200 
/ 
/         DIVIDE AND REVERSED DIVIDE POLYNOMIALS
/ 
   DATA (OB(200),CON) 5224,5402,6400,0000 
   DATA (OB(204),CON) 5020,2400,5000,0030 
   DATA (OB(210),CON) 0550,0645,1240,0000 
   DATA (OB(214),CON) 1400,0412,0004,0412 
20 EXIT 
   END 20 
COMPILE 
   MODULE FHC985,6000(05,07,14,16),LOCK 
** 5.4.6  FHC985 - DISPLAY STATUS 
* 
*         PURPOSE-
*         FHC985 DISPLAYS GENERAL AND DETAILED STATUS IN
*         OCTAL BEGINNING ON LINE 20.  IT IS MEANT TO BE
*         EXITTED TO FROM AN ERROR DISPLAY SUBMODULE. 
* 
* 
/ 
*         THE NEXT CARD IS A *CALL FMCDS
*CALL FMCDS 
*IF -DEF,MVE
   MODULE FHC986,FMDFT(07,16),LOCK
** 5.4.7  FHC986 - DISPLAY STATUS 
* 
*         PURPOSE-
*         FHC986 DISPLAYS GENERAL AND DETAILED STATUS IN
*         OCTAL BEGINNING ON LINE 20.  IT IS MEANT TO BE
*         EXITTED TO FROM AN ERROR DISPLAY SUBMODULE. 
* 
* 
/ 
*         THE NEXT CARD IS A *CALL FMCDS
*CALL FMCDS 
   MODULE FHC987,FMDHT(07,16),LOCK
** 5.4.8  FHC987 - DISPLAY STATUS 
* 
*         PURPOSE-
*         FHC987 DISPLAYS GENERAL AND DETAILED STATUS IN
*         OCTAL BEGINNING ON LINE 20.  IT IS MEANT TO BE
*         EXITTED TO FROM AN ERROR DISPLAY SUBMODULE. 
* 
* 
/ 
*         THE NEXT CARD IS A *CALL FMCDS
*CALL FMCDS 
*ENDIF
   MODULE FHC989,6000(05,07,14,16),LOCK 
**  5.4.10 FHC989 - CHECK SCRATCH FILE
* 
*         PURPOSE-
*         FHC989 CHECKS THAT VALID CONTROLWARE RESIDES ON SCRATCH FILE. 
/ 
*         ENTRY-
*         SCRATCH FILE ASSIGNED TO CONTROLWARE FILE 
* 
*         EXIT- 
*         B4 AND B5 INITIALIZED.
* 
*         SUBMODULES CALLED-NONE. 
* 
* 
*         REGISTERS USED- 
*         B4 - NUMBER OF CONTROLWARE BLOCKS.
*         B5 - RESIDUE (SIZE OF LAST BLOCK) 
* 
* 
/ 
* 
5  FORMAT CHECKING C-WARE LENGTH--*DECD BLOCKS READ 
/ 
   EQUATE MBLOCK TO 65, NBLOCK TO 56
* 
/        CHECK CONTROLWARE ON SCRATCH FILE
* 
20 SYSREW                          *REWIND SCRATCH FILE 
   B4=0 
22 SYSRD, STATUS TO B2
   IF (WT.EQ.0) GOTO 26            *IF NO WORDS XMIT, 
   IF (B4.NE.0) GOTO 25            *IF NOT FIRST BLOCK, 
   B8 = NBLOCK                     *7230D 16-BIT WORDS
   IF (IB.EQ.7700) GOTO 24         *IF 77-TABLE PRESENT,
   IF(IB(5).EQ.11)B8=MBLOCK        *8435D 16-BIT WORDS
   IF (IB.XOR.IB(1).EQ.140) GOTO 25 
23 ERROR 3/7, GOTO 27              *BAD CONTROLWARE 
24 IF(IB(125).EQ.11)B8=MBLOCK      *8435D 16-BIT WORDS
   IF(IB(120).XOR.IB(121).NE.140) GOTO 23 
25 B5 = WT                         *RESIDUE 
   MSG 5(B4) TO DISPLAY            *DISPLAY BLOCK COUNT 
   GOTO 22 WHILE (B4+1.LE.B8)      *B4 = NUMBER OF BLOCKS 
   ERROR 7/1, GOTO 27              *CONTROLWARE TOO LONG
* 
26 IF(B4.EQ.0) ERROR 3/6, GOTO 27  *SCRATCH EMPTY 
   IF(B4.NE.B8) ERROR 10/1, GOTO 27  *CWARE TOO SHORT 
* 
/         EXIT
* 
27 EXIT 
   END 20 
COMPILE 
   MODULE FHC98E,844HT(05),LOCK 
** 5.4.15 FHC98E - DISPLAY STATUS 
* 
*         PURPOSE-
*         FHC98E DISPLAYS GENERAL AND DETAILED STATUS IN
*         OCTAL BEGINNING ON LINE 20.  IT IS MEANT TO BE
*         EXITTED TO FROM AN ERROR DISPLAY SUBMODULE. 
* 
* 
/ 
*         THE NEXT CARD IS A *CALL FMCDS
*CALL FMCDS 
   MODULE FHC98F,844FT(05),LOCK 
** 5.4.16 FHC98F - DISPLAY STATUS 
* 
*         PURPOSE-
*         FHC98F DISPLAYS GENERAL AND DETAILED STATUS IN
*         OCTAL BEGINNING ON LINE 20.  IT IS MEANT TO BE
*         EXITTED TO FROM AN ERROR DISPLAY SUBMODULE. 
* 
* 
/ 
*         THE NEXT CARD IS A *CALL FMCDS
*CALL FMCDS 
*IF -DEF,MVE
   MODULE FHC98G,DEMA1(14),LOCK 
** 5.4.17 FHC98G - DISPLAY STATUS 
* 
*         PURPOSE-
*         FHC98G DISPLAYS GENERAL AND DETAILED STATUS IN
*         OCTAL BEGINNING ON LINE 20.  IT IS MEANT TO BE
*         EXITTED TO FROM AN ERROR DISPLAY SUBMODULE. 
* 
* 
/ 
*         THE NEXT CARD IS A *CALL FMCDS
*CALL FMCDS 
*ENDIF
   MODULE FHC98H,LSFMD2(16),LOCK
** 5.4.18 FHC98H - DISPLAY STATUS 
* 
*         PURPOSE-
*         FHC98H DISPLAYS GENERAL AND DETAILED STATUS IN
*         OCTAL BEGINNING ON LINE 20.  IT IS MEANT TO BE
*         EXITTED TO FROM AN ERROR DISPLAY SUBMODULE. 
* 
* 
/ 
*         THE NEXT CARD IS A *CALL FMCDS
*CALL FMCDS 
   MODULE FHC98I,844HT(05),LOCK 
**  5.4.19 FHC98I - GENERATE 48 BIT DATA PATTERNS 
* 
*         PURPOSE-
*         FHC98I FILLS THE OUTPUT BUFFER WITH ASSORTED 48 BIT DATA
*         PATTERNS. 
/ 
*         ENTRY-NO SPECIAL CONDITIONS.
* 
*         EXIT- 
*         THE OUTPUT BUFFER CONTAINS THE PATTERNS.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED- 
*         OB(100) - OB(217) 
* 
*         REMARKS-
* 
*         DRIVE         NOC 
*         TYPE  PARCEL  NO.   VALUE 
*         ----- ------  ---  -------
*          844    1     12D  124513B  DIVIDE POLYNOMIAL 
*                 2     13D  001320B  5224 5402 6400 0000 
* 
*          885    1     12D  120405B  DIVIDE POLYNOMIAL 
*                 2     13D  000240B  5020 2400 5000 0030 
*                 3     14D  000030B
* 
*          844    1     12D  013201B  REVERSED DIVIDE POLY. 
*                 2     13D  122452B  0550 0645 1240 0000 
* 
*          885    1     12D  030001B  REVERSED DIVIDE POLY. 
*                 2     13D  005000B  1400 0412 0004 0412 
*                 3     14D  040412B
* 
* 
/ 
/         48 BIT POLYNOMIAL PATTERNS
/ 
   DATA (OB(100),CON) 0000,0000,0000,0000 
   DATA (OB(114),CON) 7777,7777,7777,7777 
   DATA (OB(110),CON) 2525,2525,2525,2525 
   DATA (OB(124),CON) 5252,5252,5252,5252 
   DATA (OB(120),CON) 7760,0377,7760,0377 
   DATA (OB(134),CON) 0017,7400,0017,7400 
   DATA (OB(130),CON) 0020,0401,0020,0401 
   DATA (OB(144),CON) 0040,1002,0040,1002 
   DATA (OB(140),CON) 0100,2004,0100,2004 
   DATA (OB(154),CON) 0200,4010,0200,4010 
   DATA (OB(150),CON) 0401,0020,0401,0020 
   DATA (OB(164),CON) 1002,0040,1002,0040 
   DATA (OB(160),CON) 2004,0100,2004,0100 
   DATA (OB(174),CON) 4010,0200,4010,0200 
/ 
/         DIVIDE AND REVERSED DIVIDE POLYNOMIALS
/ 
   DATA (OB(200),CON) 5224,5402,6400,0000 
   DATA (OB(204),CON) 5020,2400,5000,0030 
   DATA (OB(210),CON) 0550,0645,1240,0000 
   DATA (OB(214),CON) 1400,0412,0004,0412 
20 EXIT 
   END 20 
COMPILE 
*IF -DEF,MVE
   MODULE FHC98J,DEMA1(14),LOCK 
**  5.4.20 FHC98J - GENERATE 48 BIT DATA PATTERNS 
* 
*         PURPOSE-
*         FHC98J FILLS THE OUTPUT BUFFER WITH ASSORTED 48 BIT DATA
*         PATTERNS. 
/ 
*         ENTRY-NO SPECIAL CONDITIONS.
* 
*         EXIT- 
*         THE OUTPUT BUFFER CONTAINS THE PATTERNS.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED- 
*         OB(100) - OB(217) 
* 
*         REMARKS-
* 
*         DRIVE         NOC 
*         TYPE  PARCEL  NO.   VALUE 
*         ----- ------  ---  -------
*          844    1     12D  124513B  DIVIDE POLYNOMIAL 
*                 2     13D  001320B  5224 5402 6400 0000 
* 
*          885    1     12D  120405B  DIVIDE POLYNOMIAL 
*                 2     13D  000240B  5020 2400 5000 0030 
*                 3     14D  000030B
* 
*          844    1     12D  013201B  REVERSED DIVIDE POLY. 
*                 2     13D  122452B  0550 0645 1240 0000 
* 
*          885    1     12D  030001B  REVERSED DIVIDE POLY. 
*                 2     13D  005000B  1400 0412 0004 0412 
*                 3     14D  040412B
* 
* 
/ 
/         48 BIT POLYNOMIAL PATTERNS
/ 
   DATA (OB(100),CON) 0000,0000,0000,0000 
   DATA (OB(114),CON) 7777,7777,7777,7777 
   DATA (OB(110),CON) 2525,2525,2525,2525 
   DATA (OB(124),CON) 5252,5252,5252,5252 
   DATA (OB(120),CON) 7760,0377,7760,0377 
   DATA (OB(134),CON) 0017,7400,0017,7400 
   DATA (OB(130),CON) 0020,0401,0020,0401 
   DATA (OB(144),CON) 0040,1002,0040,1002 
   DATA (OB(140),CON) 0100,2004,0100,2004 
   DATA (OB(154),CON) 0200,4010,0200,4010 
   DATA (OB(150),CON) 0401,0020,0401,0020 
   DATA (OB(164),CON) 1002,0040,1002,0040 
   DATA (OB(160),CON) 2004,0100,2004,0100 
   DATA (OB(174),CON) 4010,0200,4010,0200 
/ 
/         DIVIDE AND REVERSED DIVIDE POLYNOMIALS
/ 
   DATA (OB(200),CON) 5224,5402,6400,0000 
   DATA (OB(204),CON) 5020,2400,5000,0030 
   DATA (OB(210),CON) 0550,0645,1240,0000 
   DATA (OB(214),CON) 1400,0412,0004,0412 
20 EXIT 
   END 20 
COMPILE 
   MODULE FHC98K,FMDHT(07),LOCK 
**  5.4.21 FHC98K - GENERATE 48 BIT DATA PATTERNS 
* 
*         PURPOSE-
*         FHC98K FILLS THE OUTPUT BUFFER WITH ASSORTED 48 BIT DATA
*         PATTERNS. 
/ 
*         ENTRY-NO SPECIAL CONDITIONS.
* 
*         EXIT- 
*         THE OUTPUT BUFFER CONTAINS THE PATTERNS.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED- 
*         OB(100) - OB(217) 
* 
*         REMARKS-
* 
*         DRIVE         NOC 
*         TYPE  PARCEL  NO.   VALUE 
*         ----- ------  ---  -------
*          844    1     12D  124513B  DIVIDE POLYNOMIAL 
*                 2     13D  001320B  5224 5402 6400 0000 
* 
*          885    1     12D  120405B  DIVIDE POLYNOMIAL 
*                 2     13D  000240B  5020 2400 5000 0030 
*                 3     14D  000030B
* 
*          844    1     12D  013201B  REVERSED DIVIDE POLY. 
*                 2     13D  122452B  0550 0645 1240 0000 
* 
*          885    1     12D  030001B  REVERSED DIVIDE POLY. 
*                 2     13D  005000B  1400 0412 0004 0412 
*                 3     14D  040412B
* 
* 
/ 
/         48 BIT POLYNOMIAL PATTERNS
/ 
   DATA (OB(100),CON) 0000,0000,0000,0000 
   DATA (OB(114),CON) 7777,7777,7777,7777 
   DATA (OB(110),CON) 2525,2525,2525,2525 
   DATA (OB(124),CON) 5252,5252,5252,5252 
   DATA (OB(120),CON) 7760,0377,7760,0377 
   DATA (OB(134),CON) 0017,7400,0017,7400 
   DATA (OB(130),CON) 0020,0401,0020,0401 
   DATA (OB(144),CON) 0040,1002,0040,1002 
   DATA (OB(140),CON) 0100,2004,0100,2004 
   DATA (OB(154),CON) 0200,4010,0200,4010 
   DATA (OB(150),CON) 0401,0020,0401,0020 
   DATA (OB(164),CON) 1002,0040,1002,0040 
   DATA (OB(160),CON) 2004,0100,2004,0100 
   DATA (OB(174),CON) 4010,0200,4010,0200 
/ 
/         DIVIDE AND REVERSED DIVIDE POLYNOMIALS
/ 
   DATA (OB(200),CON) 5224,5402,6400,0000 
   DATA (OB(204),CON) 5020,2400,5000,0030 
   DATA (OB(210),CON) 0550,0645,1240,0000 
   DATA (OB(214),CON) 1400,0412,0004,0412 
20 EXIT 
   END 20 
COMPILE 
*ENDIF
   MODULE FHC98L,6000(05,07,14,16),LOCK 
** 5.4.22 FHC98L - NORMAL INPUT CHANNEL STATUS DISPLAY
* 
*         PURPOSE-
*         FHC98L DISPLAYS NORMAL INPUT CHANNEL STATUS IN
*         HEXADECIMAL BEGINNING ON LINE 20.  IT IS MEANT
*         TO BE EXITTED TO FROM AN ERROR DISPLAY SUBMODULE. 
/ 
*         ENTRY-
*         SB(1)-SB(40) CONTAINS NORMAL INPUT CHANNEL STATUS 
* 
*         EXIT-NONE.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED-SB.
* 
1  FORMAT NORMAL INPUT CHANNEL STATUS(HEXADECIMAL)
2  FORMAT NIC 00D - 03D    *H*HH *H*HH *H*HH *H*HH
3  FORMAT NIC 04D - 07D    *H*HH *H*HH *H*HH *H*HH
4  FORMAT NIC 08D - 11D    *H*HH *H*HH *H*HH *H*HH
5  FORMAT NIC 12D - 15D    *H*HH *H*HH *H*HH *H*HH
6  FORMAT NORMAL OUTPUT CHANNEL STATUS(HEXADECIMAL) 
/ 
30 IF (ES.AND.TM.EQ.0) GOTO 40
   PICTURE
   HALT 
   IF (P5.AND.4000.NE.0) GOTO 60
   MSG 1 TO LINE 12 
   IF (LF.EQ.53) MSG 6 TO LINE 12 
   MSG 2 10 WORDS FROM SB(1) TO LINE 13 
   MSG 3 10 WORDS FROM SB(11) TO LINE 14
   MSG 4 10 WORDS FROM SB(21) TO LINE 15
   MSG 5 10 WORDS FROM SB(31) TO LINE 16
   GOTO 50
40 IF (P5.AND.4000.NE.0) GOTO 50
   MSG 1 TO LINE 20 
   IF (LF.EQ.53) MSG 6 TO LINE 20 
   MSG 2 10 WORDS FROM SB(1) TO LINE 21 
   MSG 3 10 WORDS FROM SB(11) TO LINE 22
   MSG 4 10 WORDS FROM SB(21) TO LINE 23
   MSG 5 10 WORDS FROM SB(31) TO LINE 24
50 PICTURE
   HALT 
60 BLANK
   EXIT 
   END 30 
COMPILE 
   MODULE FHC98M,844HT(05),LOCK 
** 5.4.23 FHC98M - NORMAL INPUT CHANNEL STATUS DISPLAY
* 
*         PURPOSE-
*         FHC98M DISPLAYS NORMAL INPUT CHANNEL STATUS IN
*         HEXADECIMAL BEGINNING ON LINE 20.  IT IS MEANT
*         TO BE EXITTED TO FROM AN ERROR DISPLAY SUBMODULE. 
/ 
*         ENTRY-
*         SB(1)-SB(40) CONTAINS NORMAL INPUT CHANNEL STATUS 
* 
*         EXIT-NONE.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED-SB.
* 
1  FORMAT NORMAL INPUT CHANNEL STATUS(HEXADECIMAL)
2  FORMAT NIC 00D - 03D    *H*HH *H*HH *H*HH *H*HH
3  FORMAT NIC 04D - 07D    *H*HH *H*HH *H*HH *H*HH
4  FORMAT NIC 08D - 11D    *H*HH *H*HH *H*HH *H*HH
5  FORMAT NIC 12D - 15D    *H*HH *H*HH *H*HH *H*HH
6  FORMAT NORMAL OUTPUT CHANNEL STATUS(HEXADECIMAL) 
/ 
30 IF (ES.AND.TM.EQ.0) GOTO 40
   PICTURE
   HALT 
   IF (P5.AND.4000.NE.0) GOTO 60
   MSG 1 TO LINE 12 
   IF (LF.EQ.53) MSG 6 TO LINE 12 
   MSG 2 10 WORDS FROM SB(1) TO LINE 13 
   MSG 3 10 WORDS FROM SB(11) TO LINE 14
   MSG 4 10 WORDS FROM SB(21) TO LINE 15
   MSG 5 10 WORDS FROM SB(31) TO LINE 16
   GOTO 50
40 IF (P5.AND.4000.NE.0) GOTO 50
   MSG 1 TO LINE 20 
   IF (LF.EQ.53) MSG 6 TO LINE 20 
   MSG 2 10 WORDS FROM SB(1) TO LINE 21 
   MSG 3 10 WORDS FROM SB(11) TO LINE 22
   MSG 4 10 WORDS FROM SB(21) TO LINE 23
   MSG 5 10 WORDS FROM SB(31) TO LINE 24
50 PICTURE
   HALT 
60 BLANK
   EXIT 
   END 30 
COMPILE 
*IF -DEF,MVE
   MODULE FHC98N,FMDHT(07),LOCK 
** 5.4.24 FHC98N - NORMAL INPUT CHANNEL STATUS DISPLAY
* 
*         PURPOSE-
*         FHC98N DISPLAYS NORMAL INPUT CHANNEL STATUS IN
*         HEXADECIMAL BEGINNING ON LINE 20.  IT IS MEANT
*         TO BE EXITTED TO FROM AN ERROR DISPLAY SUBMODULE. 
/ 
*         ENTRY-
*         SB(1)-SB(40) CONTAINS NORMAL INPUT CHANNEL STATUS 
* 
*         EXIT-NONE.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED-SB.
* 
1  FORMAT NORMAL INPUT CHANNEL STATUS(HEXADECIMAL)
2  FORMAT NIC 00D - 03D    *H*HH *H*HH *H*HH *H*HH
3  FORMAT NIC 04D - 07D    *H*HH *H*HH *H*HH *H*HH
4  FORMAT NIC 08D - 11D    *H*HH *H*HH *H*HH *H*HH
5  FORMAT NIC 12D - 15D    *H*HH *H*HH *H*HH *H*HH
6  FORMAT NORMAL OUTPUT CHANNEL STATUS(HEXADECIMAL) 
/ 
30 IF (ES.AND.TM.EQ.0) GOTO 40
   PICTURE
   HALT 
   IF (P5.AND.4000.NE.0) GOTO 60
   MSG 1 TO LINE 12 
   IF (LF.EQ.53) MSG 6 TO LINE 12 
   MSG 2 10 WORDS FROM SB(1) TO LINE 13 
   MSG 3 10 WORDS FROM SB(11) TO LINE 14
   MSG 4 10 WORDS FROM SB(21) TO LINE 15
   MSG 5 10 WORDS FROM SB(31) TO LINE 16
   GOTO 50
40 IF (P5.AND.4000.NE.0) GOTO 50
   MSG 1 TO LINE 20 
   IF (LF.EQ.53) MSG 6 TO LINE 20 
   MSG 2 10 WORDS FROM SB(1) TO LINE 21 
   MSG 3 10 WORDS FROM SB(11) TO LINE 22
   MSG 4 10 WORDS FROM SB(21) TO LINE 23
   MSG 5 10 WORDS FROM SB(31) TO LINE 24
50 PICTURE
   HALT 
60 BLANK
   EXIT 
   END 30 
COMPILE 
   MODULE FHC98O,DEMA1(14),LOCK 
** 5.4.25 FHC98O - NORMAL INPUT CHANNEL STATUS DISPLAY
* 
*         PURPOSE-
*         FHC98O DISPLAYS NORMAL INPUT CHANNEL STATUS IN
*         HEXADECIMAL BEGINNING ON LINE 20.  IT IS MEANT
*         TO BE EXITTED TO FROM AN ERROR DISPLAY SUBMODULE. 
/ 
*         ENTRY-
*         SB(1)-SB(40) CONTAINS NORMAL INPUT CHANNEL STATUS 
* 
*         EXIT-NONE.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED-SB.
* 
1  FORMAT NORMAL INPUT CHANNEL STATUS(HEXADECIMAL)
2  FORMAT NIC 00D - 03D    *H*HH *H*HH *H*HH *H*HH
3  FORMAT NIC 04D - 07D    *H*HH *H*HH *H*HH *H*HH
4  FORMAT NIC 08D - 11D    *H*HH *H*HH *H*HH *H*HH
5  FORMAT NIC 12D - 15D    *H*HH *H*HH *H*HH *H*HH
6  FORMAT NORMAL OUTPUT CHANNEL STATUS(HEXADECIMAL) 
/ 
30 IF (ES.AND.TM.EQ.0) GOTO 40
   PICTURE
   HALT 
   IF (P5.AND.4000.NE.0) GOTO 60
   MSG 1 TO LINE 12 
   IF (LF.EQ.53) MSG 6 TO LINE 12 
   MSG 2 10 WORDS FROM SB(1) TO LINE 13 
   MSG 3 10 WORDS FROM SB(11) TO LINE 14
   MSG 4 10 WORDS FROM SB(21) TO LINE 15
   MSG 5 10 WORDS FROM SB(31) TO LINE 16
   GOTO 50
40 IF (P5.AND.4000.NE.0) GOTO 50
   MSG 1 TO LINE 20 
   IF (LF.EQ.53) MSG 6 TO LINE 20 
   MSG 2 10 WORDS FROM SB(1) TO LINE 21 
   MSG 3 10 WORDS FROM SB(11) TO LINE 22
   MSG 4 10 WORDS FROM SB(21) TO LINE 23
   MSG 5 10 WORDS FROM SB(31) TO LINE 24
50 PICTURE
   HALT 
60 BLANK
   EXIT 
   END 30 
COMPILE 
*ENDIF
   MODULE FHC98Q,LSFMD2(16),LOCK
** 5.4.7  FHC98Q - DISPLAY STATUS 
* 
*         PURPOSE-
*         FHC98Q DISPLAYS GENERAL AND DETAILED STATUS IN
*         OCTAL BEGINNING ON LINE 20.  IT IS MEANT TO BE
*         EXITTED TO FROM AN ERROR DISPLAY SUBMODULE. 
* 
* 
/ 
*         THE NEXT CARD IS A *CALL FMCDS
*CALL FMCDS 
   MODULE FHC98R,LSFMD1(16),LOCK
** 5.4.8  FHC98R - DISPLAY STATUS 
* 
*         PURPOSE-
*         FHC98R DISPLAYS GENERAL AND DETAILED STATUS IN
*         OCTAL BEGINNING ON LINE 20.  IT IS MEANT TO BE
*         EXITTED TO FROM AN ERROR DISPLAY SUBMODULE. 
* 
* 
/ 
*         THE NEXT CARD IS A *CALL FMCDS
*CALL FMCDS 
   MODULE FHC98S,LSFMD1(16),LOCK
**  5.4.21 FHC98S - GENERATE 48 BIT DATA PATTERNS 
* 
*         PURPOSE-
*         FHC98S FILLS THE OUTPUT BUFFER WITH ASSORTED 48 BIT DATA
*         PATTERNS. 
/ 
*         ENTRY-NO SPECIAL CONDITIONS.
* 
*         EXIT- 
*         THE OUTPUT BUFFER CONTAINS THE PATTERNS.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED- 
*         OB(100) - OB(217) 
* 
*         REMARKS-
* 
*         DRIVE         NOC 
*         TYPE  PARCEL  NO.   VALUE 
*         ----- ------  ---  -------
*          844    1     12D  124513B  DIVIDE POLYNOMIAL 
*                 2     13D  001320B  5224 5402 6400 0000 
* 
*          885    1     12D  120405B  DIVIDE POLYNOMIAL 
*                 2     13D  000240B  5020 2400 5000 0030 
*                 3     14D  000030B
* 
*          844    1     12D  013201B  REVERSED DIVIDE POLY. 
*                 2     13D  122452B  0550 0645 1240 0000 
* 
*          885    1     12D  030001B  REVERSED DIVIDE POLY. 
*                 2     13D  005000B  1400 0412 0004 0412 
*                 3     14D  040412B
* 
* 
/ 
/         48 BIT POLYNOMIAL PATTERNS
/ 
   DATA (OB(100),CON) 0000,0000,0000,0000 
   DATA (OB(114),CON) 7777,7777,7777,7777 
   DATA (OB(110),CON) 2525,2525,2525,2525 
   DATA (OB(124),CON) 5252,5252,5252,5252 
   DATA (OB(120),CON) 7760,0377,7760,0377 
   DATA (OB(134),CON) 0017,7400,0017,7400 
   DATA (OB(130),CON) 0020,0401,0020,0401 
   DATA (OB(144),CON) 0040,1002,0040,1002 
   DATA (OB(140),CON) 0100,2004,0100,2004 
   DATA (OB(154),CON) 0200,4010,0200,4010 
   DATA (OB(150),CON) 0401,0020,0401,0020 
   DATA (OB(164),CON) 1002,0040,1002,0040 
   DATA (OB(160),CON) 2004,0100,2004,0100 
   DATA (OB(174),CON) 4010,0200,4010,0200 
/ 
/         DIVIDE AND REVERSED DIVIDE POLYNOMIALS
/ 
   DATA (OB(200),CON) 5224,5402,6400,0000 
   DATA (OB(204),CON) 5020,2400,5000,0030 
   DATA (OB(210),CON) 0550,0645,1240,0000 
   DATA (OB(214),CON) 1400,0412,0004,0412 
20 EXIT 
   END 20 
COMPILE 
   MODULE FHC98T,LSFMD1(16),LOCK
** 5.4.24 FHC98T - NORMAL INPUT CHANNEL STATUS DISPLAY
* 
*         PURPOSE-
*         FHC98T DISPLAYS NORMAL INPUT CHANNEL STATUS IN
*         HEXADECIMAL BEGINNING ON LINE 20.  IT IS MEANT
*         TO BE EXITTED TO FROM AN ERROR DISPLAY SUBMODULE. 
/ 
*         ENTRY-
*         SB(1)-SB(40) CONTAINS NORMAL INPUT CHANNEL STATUS 
* 
*         EXIT-NONE.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED-SB.
* 
1  FORMAT NORMAL INPUT CHANNEL STATUS(HEXADECIMAL)
2  FORMAT NIC 00D - 03D    *H*HH *H*HH *H*HH *H*HH
3  FORMAT NIC 04D - 07D    *H*HH *H*HH *H*HH *H*HH
4  FORMAT NIC 08D - 11D    *H*HH *H*HH *H*HH *H*HH
5  FORMAT NIC 12D - 15D    *H*HH *H*HH *H*HH *H*HH
6  FORMAT NORMAL OUTPUT CHANNEL STATUS(HEXADECIMAL) 
/ 
30 IF (ES.AND.TM.EQ.0) GOTO 40
   PICTURE
   HALT 
   IF (P5.AND.4000.NE.0) GOTO 60
   MSG 1 TO LINE 12 
   IF (LF.EQ.53) MSG 6 TO LINE 12 
   MSG 2 10 WORDS FROM SB(1) TO LINE 13 
   MSG 3 10 WORDS FROM SB(11) TO LINE 14
   MSG 4 10 WORDS FROM SB(21) TO LINE 15
   MSG 5 10 WORDS FROM SB(31) TO LINE 16
   GOTO 50
40 IF (P5.AND.4000.NE.0) GOTO 50
   MSG 1 TO LINE 20 
   IF (LF.EQ.53) MSG 6 TO LINE 20 
   MSG 2 10 WORDS FROM SB(1) TO LINE 21 
   MSG 3 10 WORDS FROM SB(11) TO LINE 22
   MSG 4 10 WORDS FROM SB(21) TO LINE 23
   MSG 5 10 WORDS FROM SB(31) TO LINE 24
50 PICTURE
   HALT 
60 BLANK
   EXIT 
   END 30 
COMPILE 
   MODULE FHC98Y,6000(05,07,14,16),LOCK 
** 5.4.26 FHC98Y - BUFFER DUMP
* 
*         PURPOSE-
*         FHC98Y DUMPS PARAMETERS, REGISTERS, AND BUFFERS 
*         TO THE PRINT FILE.  TO USE, INSERT AN EXIT TO 98Y IN
*         THE MODULE WHOSE REGISTERS AND BUFFERS ARE TO BE DUMPED.
*         BECAUSE OF THE AMOUNT OF DATA PRESENTED BY THIS MODULE, THE 
*         K/L DISPLAY OR HARD-COPY PRINT TERMINAL SHOULD BE USED. 
/ 
*         CALLING SEQUENCE- 
*         EXIT TO 98Y 
* 
*         ENTRY-NO SPECIAL ENTRY CONDITIONS.
* 
*         EXIT- 
*         THE CONTENTS OF B13, B14, AND B15 ARE DESTROYED.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED-ALL. 
* 
* 
1  FORMAT FHC98Y- BUFFER DUMP 
2  FORMAT INPUT BUFFER
3  FORMAT STATUS BUFFER 
6  FORMAT OUTPUT BUFFER 
7  FORMAT B0 - B3  *OCT *OCT *OCT *OCT
10 FORMAT B4 - B7  *OCT *OCT *OCT *OCT
11 FORMAT BA=*OCT   WC=*OCT   LF=*OCT   WT=*OCT 
13 FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT 
14 FORMAT P5 - P9  *OCT *OCT *OCT *OCT *OCT 
15 FORMAT EA=*OCT   EC=*OCT   EM=*OCT   ES=*OCT 
16 FORMAT REGISTERS 
17 FORMAT PARAMETERS
20 FORMAT B8 - B11 *OCT *OCT *OCT *OCT
21 FORMAT B12- B15 *OCT *OCT *OCT *OCT
23 FORMAT *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
24 FORMAT 
* 
/         EQUATES 
* 
30 PICTURE
   BLANK
   MSG 1 TO DISPLAY, PRINT, DAYFILE 
* 
/         DISPLAY REGISTERS 
* 
   MSG 24 TO PRINT
   MSG 16 TO PRINT
   MSG 24 TO PRINT
   MSG 7 (B0,B1,B2,B3) TO PRINT 
   MSG 10 (B4,B5,B6,B7) TO PRINT
   MSG 20 (B8,B9,B10,B11) TO PRINT
   MSG 21 (B12,B13,B14,B15) TO PRINT
   MSG 24 TO PRINT
   MSG 11 (BA,WC,LF,WT) TO PRINT
   MSG 15(EA,EC,EM,ES) TO PRINT 
* 
/         DISPLAY PARAMETERS
* 
   MSG 24 TO PRINT
   MSG 17 TO PRINT
   MSG 24 TO PRINT
   MSG 13(P0,P1,P2,P3,P4) TO PRINT
   MSG 14(P5,P6,P7,P8,P9) TO PRINT
* 
/         DUMP STATUS BUFFER
* 
   B13=0
   MSG 24 TO PRINT
   MSG 3 TO PRINT 
   MSG 24 TO PRINT
35 MSG 23 10 WORDS FROM SB(B13) TO PRINT
   GOTO 35 WHILE (B13+10.LT.70) 
   MSG 23 4 WORDS FROM SB(70) TO PRINT
* 
/         DUMP INPUT BUFFER 
* 
   B14=0
   MSG 24 TO PRINT
   MSG 2 TO PRINT 
37 MSG 24 TO PRINT
   B13=0
40 B15=B14.LS.6.+B13
   MSG 23 10 WORDS FROM IB(B15) TO PRINT
   GOTO 40 WHILE (B13+10.LT 100)
   GOTO 37 WHILE (B14+1.LT.5) 
   MSG 23 5 WORDS FROM IB(500) TO PRINT 
* 
/         DUMP OUTPUT BUFFER
* 
   B14=0
   MSG 24 TO PRINT
   MSG 6 TO PRINT 
47 MSG 24 TO PRINT
   B13=0
50 B15=B14.LS.6.+B13
   MSG 23 10 WORDS FROM OB(B15) TO PRINT
   GOTO 50 WHILE (B13+10.LT 100)
   GOTO 47 WHILE (B14+1.LT.5) 
   MSG 23 5 WORDS FROM OB(500) TO PRINT 
/ 
77 PASS 
   EXIT 
   END 30 
COMPILE 
   MODULE FHC98Z,6000(05,07,14,16),LOCK 
** 5.4.27 FHC98Z - MEMORY/REGISTER DUMP 
* 
*         PURPOSE-
*         FHC98Z DUMPS PARAMETERS, REGISTERS, BUFFERS, AND
*         NORMAL CHANNELS TO THE DISPLAY BUFFER, PRINTS THE 
*         INFORMATION, AND PAUSES.
*         BECAUSE OF THE AMOUNT OF DATA PRESENTED BY THIS MODULE, THE 
*         K/L DISPLAY OR HARD-COPY PRINT TERMINAL SHOULD BE USED.  THE
*         AMOUNT AND KINDS OF DATA DISPLAYED IS CONTROLLED THRU THE 
*         USE OF PASS AND GOTO STATEMENTS.
/ 
*         CALLING SEQUENCE- 
*         EXIT TO 98Z 
* 
*         ENTRY-
*         THE USER MUST DELETE SOME OF THE LINES TO ENABLE
*         NORMAL CHANNEL DISPLAYS.
* 
*         EXIT- 
*         THE CONTENTS OF IB(377) THROUGH IB(440) ARE DESTROYED.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED-NONE.
* 
*         BUFFERS USED- 
*         IB(400) THROUGH IB(436) HOLD THE NORMAL CHANNEL 
*         VALUES IF THEY ARE SELECTED TO BE DISPLAYED.
* 
/         REMARKS-
/ 
/         DATA PACKING- 
/ 
/                                IB(B0+2) 
/ 
/                            AAA ABB BBB BBB
/             IB(B0+1)           /         /
/                               /         / 
/         AAA ABB BBB BBB      /         /
/               \\  \\  \\    /         / 
/        XXX XXB BBB BBB \\  /         /
/                         \\/         / 
/            IB(B0)    XXX BBB BBB BBB
/ 
/                          IB(B0+1) 
/ 
/ 
1  FORMAT FHC98Z- MEMORY/REGISTER DUMP
2  FORMAT INPUT BUFFER  IB(0) - IB(37)
3  FORMAT STATUS BUFFER 
4  FORMAT INPUT CHANNEL STATUS
5  FORMAT OUTPUT CHANNEL STATUS 
6  FORMAT OUTPUT BUFFER  OB(0) - OB(37) 
7  FORMAT B0 - B3  *OCT *OCT *OCT *OCT
10 FORMAT B4 - B7  *OCT *OCT *OCT *OCT
11 FORMAT BA=*OCT   WC=*OCT   LF=*OCT   WT=*OCT 
12 FORMAT CHANNEL    CONTENTS OF NIC (OCTAL)
13 FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT 
14 FORMAT P5 - P9  *OCT *OCT *OCT *OCT *OCT 
15 FORMAT EA=*OCT   EC=*OCT   EM=*OCT   ES=*OCT 
16 FORMAT REGISTERS 
17 FORMAT PARAMETERS
20 FORMAT B8 - B11 *OCT *OCT *OCT *OCT
21 FORMAT B12- B15 *OCT *OCT *OCT *OCT
22 FORMAT CHANNEL    CONTENTS OF NOC (OCTAL)
23 FORMAT *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
*  FORMAT                WORD   DETAILED STATUS (OCTAL) 
*  FORMAT GENERAL STATUS   1   *OCT *OCT *OCT *OCT *OCT 
*  FORMAT    = *OCTB       6   *OCT *OCT *OCT *OCT *OCT 
*  FORMAT                 11D  *OCT *OCT *OCT *OCT *OCT 
*  FORMAT                 16D  *OCT *OCT *OCT *OCT *OCT 
25 FORMAT    0     *OC*OC *OC*OC *OC*OC *OC*OC
26 FORMAT    4     *OC*OC *OC*OC *OC*OC *OC*OC
27 FORMAT    8     *OC*OC *OC*OC *OC*OC *OC*OC
30 FORMAT   12D    *OC*OC *OC*OC *OC*OC *OC*OC
* 
*         EQUATES 
* 
   EQUATE ENOC TO 53
   EQUATE IPCS TO 52
   EQUATE DSTAT20 TO 0023 
* 
31 PICTURE
   BLANK
   MSG 1 TO DISPLAY, PRINT, DAYFILE 
* 
*         DISPLAY REGISTERS 
* 
32 PASS                      *GOTO 33 TO BYPASS REGISTERS 
*  GOTO 33                   *DELETE / TO AVOID REGISTERS 
   MSG 16 TO LINE 1 
   MSG 7 (B0,B1,B2,B3) TO LINE 3
   MSG 10 (B4,B5,B6,B7) TO LINE 4 
   MSG 20 (B8,B9,B10,B11) TO LINE 5 
   MSG 21 (B12,B13,B14,B15) TO LINE 6 
   MSG 11 (BA,WC,LF,WT) TO LINE 10
   MSG 15(EA,EC,EM,ES) TO LINE 11 
* 
*         DISPLAY PARAMETERS
* 
33 PASS                      *GOTO 34 TO BYPASS PARAMETERS
*  GOTO 34                   *DELETE / TO AVOID PARAMETERS
   MSG 17 TO LINE 13
   MSG 13(P0,P1,P2,P3,P4) TO LINE 15
   MSG 14(P5,P6,P7,P8,P9) TO LINE 16
* 
*         DUMP STATUS BUFFER
* 
   GOTO 34                   *PASS TO TAKE DETAILED STATUS
*  GOTO 35                   *DELETE / TO AVOID SB
   RES, ABT 35
   FUNC DSTAT20, ABT 35 
   STATUS 20D WORDS TO SB(1), ABT 35
* 
34 MSG 3 TO LINE 20 
   MSG 23 10 WORDS FROM SB(0) TO LINE 22
   MSG 23 10 WORDS FROM SB(10) TO LINE 23 
   MSG 23 10 WORDS FROM SB(20) TO LINE 24 
   MSG 23 10 WORDS FROM SB(30) TO LINE 25 
   MSG 23 10 WORDS FROM SB(40) TO LINE 26 
* 
*         DUMP INPUT BUFFER IB(0) - IB(37)
* 
35 PASS                      *GOTO 36 TO BYPASS INPUT BFR 
*  GOTO 36                   *DELETE / TO AVOID IB
   MSG 2 TO LINE 30 
   MSG 23 10 WORDS FROM IB(0) TO LINE 32
   MSG 23 10 WORDS FROM IB(10) TO LINE 33 
   MSG 23 10 WORDS FROM IB(20) TO LINE 34 
   MSG 23 10 WORDS FROM IB(30) TO LINE 35 
* 
*         DUMP OUTPUT BUFFER OB(0) - OB(37) 
* 
36 PASS                      *GOTO 37 TO BYPASS OUTPUT BFR
*  GOTO 37                   *DELETE / TO AVOID OB
   MSG 6 TO LINE 37 
   MSG 23 10 WORDS FROM OB(0) TO LINE 41
   MSG 23 10 WORDS FROM OB(10) TO LINE 42 
   MSG 23 10 WORDS FROM OB(20) TO LINE 43 
   MSG 23 10 WORDS FROM OB(30) TO LINE 44 
* 
*         DUMP NIC-S
* 
37 PASS                      *GOTO 40 TO BYPASS NIC DISPLAY 
   RES, ABT 40
   FUNC IPCS, ABT 40
   STATUS 32D WORDS TO IB(400), ABT 40
   GOSUB 60 
   MSG 12 TO LINE 30
   MSG 25 10 WORDS FROM IB(377) TO LINE 32
   MSG 26 10 WORDS FROM IB(407) TO LINE 33
   MSG 27 10 WORDS FROM IB(417) TO LINE 34
   MSG 30 10 WORDS FROM IB(427) TO LINE 35
* 
*         DUMP NOC-S
* 
40 GOTO 41                   *PASS TO DISPLAY NOC-S 
   RES, ABT 41
   FUNC ENOC, ABT 41
   STATUS 32D WORDS TO IB(400), ABT 41
   GOSUB 60 
   MSG 22 TO LINE 37
   MSG 25 10 WORDS FROM IB(377) TO LINE 41
   MSG 26 10 WORDS FROM IB(407) TO LINE 42
   MSG 27 10 WORDS FROM IB(417) TO LINE 43
   MSG 30 10 WORDS FROM IB(427) TO LINE 44
* 
*         END 
* 
41 GOTO 77                   *GO TO PICTURE PAUSE 
* 
* 
* 
60 IB(440)=B0 
   B0=377 
61 IB(B0)=IB(B0+1).RS.1 
   IB(B0+1)=IB(B0+1).AND.1.LS.8 
   IB(B0+1)=IB(B0+2).AND.377.+IB(B0+1)
   GOTO 61 WHILE (B0+2.LT.437)
   B0=IB(440) 
   RETURN 
* 
77 PICTURE
   PAUSE
   BLANK
   EXIT 
   END 31 
COMPILE 
   MODULE FHC99,6000(05,07,14,16),LOCK
1  FORMAT COPYRIGHT CONTROL DATA CORP. 1978 
2  PAUSE
   EXIT TO 99A
/ 
/         FHC IS THE 7155-401 CONTROLLER DIAGNOSTIC.  IT IS USED
/         IN CONJUNCTION WITH DIAGNOSTICS FHD, DH8, AND DTC TO
/         MAINTAIN THE 7155-401/885-4X/885-1X/844-4X SUBSYSTEM. 
/ 
/         FOR ADDITIONAL DOCUMENTATION, SEE THE FOLLOWING 
/         MODULES-- 
/ 
/         FHC99    OVERVIEW 
/         FHC99A   PARAMETER DESCRIPTION
/         FHC99B   SECTION DESCRIPTION INDEX
/         FHC99C   MESSAGE FORMAT 
/ 
   END 2
COMPILE,SOURCE
   MODULE FHC99A,6000(05,07,14,16),LOCK 
1  PAUSE
   EXIT TO 99B
/         P0 - N0T USED 
/ 
/         P1 - NOT USED 
/ 
/         P2 - NOT USED 
/ 
/         P3 - NOT USED 
/ 
/         P4 - XXXX - ENABLES 
/ 
/              XXX1 - AUTOLOAD FROM DISK
/              4XXX - ISOLATION 
/ 
/         P5 - XXXX - DISABLES
/ 
/              XXX1 - DRIVE MODULES 
/              XX1X - OPERATOR INTERVENTION 
/              XX4X - CHANNEL STATUS DISPLAY
/              1XXX - FULL CONTROLWARE DOWNLOADS
/ 
*         P6 - XXXX - NOT USED
/ 
/         P7 - NOT USED 
/ 
/         P8 - HARDWARE DESCRIPTION 
/ 
/              XXX1 - CHANNEL ACCESS A
/              XXX2 - CHANNEL ACCESS B (OPTIONAL) 
/              XXX4 - CHANNEL ACCESS C (OPTIONAL) 
/              XX1X - CHANNEL ACCESS D (OPTIONAL) 
/              XX2X - 844-4X INTERFACE(FV670-A/B)(OPTIONAL) 
/              XX4X - OPTIONAL 885 INTERFACES(FV671-A/B)
/              XAXX - ACCESS USED BY THIS TEST
/ 
/                       A = 0 FOR ACCESS A
/                       A = 1 FOR ACCESS B
/                       A = 2 FOR ACCESS C
/                       A = 3 FOR ACCESS D
/ 
*IF DEF,CMSE17X,3 
/              1XXX - 815 OR 825 TYPE MAINFRAME. USED FOR 
/                     PARITY MODULES. 
/ 
/         P9 - 0Y0Z  Y = THIS TEST COPY NUMBER
/                        (0, 1, 2, OR 3)
/                    Z = THE NUMBER OF OTHER
/                        ACCESSES BEING TESTED
/                        (1, 2, OR 3) 
/ 
   END 1
COMPILE,SOURCE
   MODULE FHC99B,6000(05,07,14,16),LOCK 
1  PAUSE
   EXIT TO 99C
/ 
/                                       RUN  MIN
/ NAME     DESCRIPTION                  TIME AL  DC 
/ ----     -----------                  ---- --- ---
/   CONTROLLER (6000) LANGUAGE MODULES (DC=5/7/14/16) 
/ FHC00    PARAMETER VERIFICATION         1  10  5/7/14/16
/ FHC01    ECHO FUNCTION TEST             1  10  5/7/14/16
/ FHC02    AUTOLOAD TEST                  9  10  5/7/14/16
/ FHC03    NORMAL CHANNEL LOOP TEST       3  10  5/7/14/16
/ FHC04    DEAD MAN TIMER TEST           12  21  5/7/14/16
/ FHC07    CYBER SPECIAL CHANNEL TEST     5  10  5/7/14/16
*IF DEF,CMSE17X,2 
/ FHC08    PARITY TEST I                  *  10  5/7/14/16
/ FHC09    PARITY TEST II                 *  10  5/7/14/16
/ FHC11    UP/DOWN COUNTER TEST           1  10  5/7/14/16
/ FHC13    BUFFER MEM ADRS TEST           1  10  5/7/14/16
/ FHC15    DATA PATH TEST                 7  10  5/7/14/16
/ FHC18    CONTROL WORD REGISTER TEST     1  10  5/7/14/16
/ FHC19    BIT COUNTER REGISTER TEST      1  10  5/7/14/16
/ FHC20    MAINTENANCE LOOP TEST          6  10  5/7/14/16
/ FHC21    LOOP 885 DECODE TEST           8  10  5/7/14/16
/ FHC22    LOOP 885 BUS TEST              7  10  5/7/14/16
/ FHC23    LOOP 885 WRT/RD/TAG GATE TEST  1  10  5/7/14/16
/ FHC24    SYNC BYTE SEARCH TEST          1  10  5/7/14/16
/ FHC25    ECC REGISTER TEST              2  10  5/7/14/16
/ FHC26    ECC REGISTER CLEAR TEST        2  10  5/7/14/16
/ FHC27    ECC FUNCTIONAL TEST            1  10  5/7/14/16
/ FHC28    AUTOLOAD FROM DISK TEST        2  10  5/7/14/16
/ FHC29    WRITE VERIFY TEST              1  10  5/7/14/16
/   844-4X (844HT/844FT) LANGUAGE MODULES (DC=5)
/ FHC30    LOOP 885 DECODE TEST (DC5)     9   4  5
/ FHC31    LOOP 885 BUS TEST (DC5)        9   4  5
/ FHC32    LOOP 885 WRT/RD/TAG GATE (DC5) 1   4  5
/ FHC35    ECC REGISTER TEST (DC5)        2   3  5
/ FHC36    ECC REGISTER CLEAR TEST (DC5)  2   3  5
/ FHC37    ECC FUNCTIONAL TEST (DC5)      1   3  5
/ FHC39    WRITE VERIFY TEST (DC5)        8   3  5
*IF -DEF,MVE
/   885-1X (FMDHT/FMDFT) LANGUAGE MODULES (DC=7)
/ FHC40    LOOP 885 DECODE TEST (DC7)     9   4  7
/ FHC41    LOOP 885 BUS TEST (DC7)       10   4  7
/ FHC42    LOOP 885 WRT/RD/TAG GATE (DC7) 1   4  7
/ FHC43    SYNC BYTE SEARCH TEST I (DC7)  3   4  7
/ FHC44    SYNC BYTE SEARCH TEST II (DC7) 3   4  7
/ FHC45    ECC REGISTER TEST (DC7)        2   3  7
/ FHC46    ECC REGISTER CLEAR TEST (DC7)  2   3  7
/ FHC47    ECC FUNCTIONAL TEST (DC7)      1   3  7
/ FHC49    WRITE VERIFY TEST (DC7)        8   3  7
/   885-4X (DEMA1/DEMA2) LANGUAGE MODULES (DC=14) 
/ FHC50    LOOP 885 DECODE TEST (DC14)    9   4  14 
/ FHC51    LOOP 885 BUS TEST (DC14)       9   4  14 
/ FHC52    LOOP 885 WRT/RD/TAG GATE(DC14) 1   4  14 
/ FHC53    SYNC BYTE SEARCH TEST I (DC14) 2   4  14 
/ FHC54    SYNC BYTE SEARCH TEST II(DC14) 3   4  14 
/ FHC55    ECC REGISTER TEST (DC14)       2   3  14 
/ FHC56    ECC REGISTER CLEAR TEST (DC14) 2   3  14 
/ FHC57    ECC FUNCTIONAL TEST (DC14)     1   3  14 
/ FHC59    WRITE VERIFY TEST (DC14)       8   3  14 
*ENDIF
/   885-1X (LSFMD1/LSFMD2) LANGUAGE MODULES (DC=16) 
/ FHC60    LOOP 885 DECODE TEST (DC16)     9   4  16
/ FHC61    LOOP 885 BUS TEST (DC16)       10   4  16
/ FHC62    LOOP 885 WRT/RD/TAG GATE (DC16) 1   4  16
/ FHC63    SYNC BYTE SEARCH TEST I (DC16)  3   4  16
/ FHC64    SYNC BYTE SEARCH TEST II (DC16) 3   4  16
/ FHC65    ECC REGISTER TEST (DC16)        2   3  16
/ FHC66    ECC REGISTER CLEAR TEST (DC16)  2   3  16
/ FHC67    ECC FUNCTIONAL TEST (DC16)      1   3  16
/ FHC69    WRITE VERIFY TEST (DC16)        8   3  16
/   UTILITY MODULES 
/ FHC75    MULTI-CHANNEL CONNECT TEST     *  10  5/7/14/16
/ FHC76    LED TEST                       *  10  5/7/14/16
/         ABOVE RUN TIMES ARE IN SECONDS AND WERE MEASURED
/         UNDER THE NOS K-DISPLAY.  THEY SHALL BE CONSIDERED
/         MINIMUMS AND WILL VARY WHEN RUN IN OTHER MODES. 
/ 
   END 1
COMPILE,SOURCE
   MODULE FHC99C,6000(05,07,14,16),LOCK 
1  PAUSE
/ 
/         THE MESSAGE FORMATS USED BY FHC TO REPORT ERRORS
/         AND INSTRUCT THE OPERATOR ARE-- 
/ 
/         00
/         01  FHC - 7155-401 DISK CONTROLLER DIAGNOSTIC 
/         02  FHCNN - MODULE TITLE
/         03  PRESERVICE FORECAST GROUP FHDC
/         04
/         05  FHCNN - LINE YYYY - ERROR NUMBER TTEEE
/         06  DATA ERROR   WAAAA  EBBBB  ACCCC  DFFFF 
/         06  STATUS ERROR WAAAA  EBBBB  ACCCC  DFFFF 
/         07  MISCELLANEOUS MEANINGFUL VALUES 
/         07  DATA ERROR STSGGGG  EBBBB  ACCCC  DFFFF 
/         07  DATA ERROR    EBBBB  ACCCC  DFFFF 
/         10  MISCELLANEOUS MEANINGFUL VALUES 
/         11
/         12  ERROR DESCRIPTION 
/         13
/         14  DIRECTIONS TO CE
/         15  DIRECTIONS TO CE
/         16  DIRECTIONS TO CE
/ 
/         NN IS THE MODULE NUMBER.
/         XXXXXXXX IS THE PRESERVICE FORECAST GROUP NUMBER. 
/         YYYY IS THE ADDRESS THE ERROR OCCURRED IN THE 
/           PRIMARY MODULE. 
/         TT IS THE TEST NUMBER (IN HEX). 
/         EEE IS THE ERROR NUMBER (IN HEX). 
/         AAAA IS THE WORD NUMBER IN THE BUFFER.
/         BBBB IS THE EXPECTED VALUE. 
/         CCCC IS THE ACTUAL VALUE. 
/         FFFF IS THE LOGICAL DIFFERENCE OF BBBB AND CCCC.
/         GGGG IS THE NIC 1 CONTROLLER STATUS (IN HEX). 
/         THE MISCELLANEOUS MEANINGFUL VALUES WILL VARY 
/           FROM MODULE TO MODULE.
/         IF THE DIRECTIONS TO THE CE REQUIRE MORE THAN 3 
/           THREE LINES, THEY WILL BE INCLUDED IN THE 
/           TROUBLESHOOTING GUIDE RATHER THAN ON THE SCREEN.
/ 
/ 
   END 1
COMPILE,SOURCE
* 
* 
*   6.    APPLICATIONS
*         ------------
*         NO SPECIAL APPLICATIONS ARE ANTICIPATED.
* 
*   7.    FLOWCHARTS
*         ----------
* 
*         THE FOLLOWING CHART ILLUSTRATES THE SEQUENCE OF OPERATIONS
*         PERFORMED DURING THE EXECUTION OF THE CONNECT TEST AND THE
*         ERROR NUMBERS WHICH MAY BE GENERATED AT EACH STEP-- 
* 
*          COPY   I   I   I   I   I 
*         NUMBER--I 0 I 1 I 2 I 3 I 
*                 I   I   I   I   I 
*        -------------------------- 
*                 I   I   I   I   I 
*         TIME    I1 XI   I   I   I 
*                 -----   I   I   I 
*           I     I    10XI   I   I 
*           I     I    11 I   I   I 
*           V     I       I   I   I 
*                 I2 X    I   I   I 
*                 I3      I   I   I 
*                 ---------   I   I 
*                 I        16XI   I 
*                 I        17 I   I 
*                 I           I   I 
*                 I    12X    I   I 
*                 I    13     I   I 
*                 I           I   I 
*                 I        20XI   I 
*                 I        21 I   I 
*                 I           I   I 
*                 I4 X        I   I 
*                 I5          I   I 
*                 -------------   I 
*                 I            24XI 
*                 I            25 I 
*                 I               I 
*                 I        22X    I 
*                 I        23     I 
*                 I               I 
*                 I            26XI 
*                 I            27 I 
*                 I               I 
*                 I    14X        I 
*                 I    15         I 
*                 I               I 
*                 I            30XI 
*                 I            31 I 
*                 I               I 
*                 I6 X            I 
*                 I7              I 
*                 ----------------- 
* 
*         THE FOLLOWING FLOWCHART ILLUSTRATES THE CONNECTION OF ALL THE 
*         SUBMODULES USED TO INTERPRET DETAILED STATUS--
* 
*                          ENTER
*                            I
*                            V
*                         +-----+ 
*                         I 98X I 
*                         +-----+ 
*                            I               ...............
*                            V
*                         +-----+            GENERAL
*                         I 98M I            STATUS 
*                         +-----+ 
*                            I               ...............
*                            V
*                         +-----+            DETAILED 
*                         I 98N I            STATUS 
*                         +-----+ 
*                            I
*                            V
*                            &               ...............
*                           / \ 
*                     844  /   \  885 
*                   +-----<     >-----+ 
*                   I      \   /      I 
*                   V       \ /       V 
*                +-----+     V     +-----+
*                I 98P I           I 98R I
*                +-----+           +-----+
*                   I                 I      DETAILED 
*                   V                 V      STATUS 
*                +-----+           +-----+
*                I 98Q I           I 98S I
*                +-----+           +-----+
*                   I                 I 
*                   I                 V 
*                   I              +-----+
*                   I              I 98T I
*                   I              +-----+
*                   I                 I 
*                   +-----------------+      ...............
*                            I
*                            V
*                         +-----+ 
*                         I 98U I 
*                         +-----+ 
*                            I
*                            V
*                         +-----+ 
*                         I 98V I            EXTENDED 
*                         +-----+            DETAILED 
*                            I               STATUS 
*                            V
*                         +-----+ 
*                         I 98W I 
*                         +-----+ 
*                            I               ...............
*                            V
*                      TO 98X (EXIT)
* 
* 
* 
* 
*              LOGIC USED BY EACH OPERATION IN THE DATA PATH TEST 
* 
*                                      TEST NO.               A B C D E 
* 
*                                                                     1 
*         OPERATION                    RULE NO.  1 2 3 4 5    6 7 8 9 0 
*         ---------                              ---------    ----------
*         BLOCK TRANSFER BUFFER WRITE (BTBMW)  I X            X X 
*         BLOCK TRANSFER BUFFER READ  (BTBMR)  I   X          X   X 
*         BUFFER WRITE                (BMW)    I     X            X X X 
*         BUFFER READ                 (BMR)    I       X        X   X X 
*         MAINTENANCE LOOP                     I         X            X 
*                                              I
*         -------------------------------------I------------------------
*         LOGIC USED                           I
*         ----------                           I
*         R/T BOARDS (AA AT A01,A02,A03,A04)   I
*         1  RECEIVER, CATCHING, AND HOLDING   I X   X        X X X X X 
*         2  2-TO-1 MUX, TRANSMITTER           I   X   X      X X X X X 
*         CYBER CHANNEL MUX (AB AT A08)        I
*         3  DATA CHANNEL MUX                  I     X            X X X 
*         4  CHANNEL PARITY (NIC 1/10)         I X   X        X X X X X 
*         5  NIC SELECT MUX                    I X            X X 
*         6  NIC PARITY (NIC 0/2)              I X            X X 
*         BUFFER CONTROL (AD AT A15)           I
*         7  CATCHING REGISTER                 I     X   X        X X X 
*         SPECIAL CYBER CHANNEL (AE AT A16)    I
*         8  DATA IN                           I X            X X 
*         9  HOLDING, PARITY, 1-TO-4 DECODER   I   X          X   X 
*         R/W DATA PATH (AR AT B19,B20)        I
*         10 OUTPUT REG, BUFFER PARITY(NIC 1/5)I       X X      X   X X 
*         11 WPI, SHIFT, DESKEW REGISTERS      I         X            X 
*         BUFFER TO DATA PATH CONTROL(AS AT B21I         X            X 
*         DATA PATH CONTROL (AT AT B22)        I         X            X 
* 
* 
* 
* 
* 
* 
* 
*                            DLT FOR DATA PATH TEST 
*                                              RULE NUMBER
*                                                      1 1 1 1 1 1 1
*         FAILING CONDITION        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
*         -----------------        ---------------------------------
*         1 TEST A FAILS(BTBMW/R)  N N N N N N N N Y Y Y Y Y Y Y Y N
*         2 TEST B FAILS(BTBMW/BMR)N N N N Y Y Y Y N N N N Y Y Y Y N
*         3 TEST C FAILS(BMW/BTBMR)N N Y Y N N Y Y N N Y Y N N Y Y N
*         4 TEST D FAILS(BMW/BMR)  N Y N Y N Y N Y N Y N Y N Y N Y N
*         5 TEST E FAILS(BMW/BMR)  - - - - - - - - - - - - - - - - Y
* 
*           ERROR                  N 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 -
*           CODE  (IN OCTAL)       O 4 4 6 4 5 4 4 4 4 3 4 2 4 7 1 -
* 
*         BOARDS TO REPLACE               ORDER OF REPLACEMENT
*         -----------------        ---------------------------------
*         R/T (A01/A02/A03/A04)      5 5   5 3 5 5 5 5 2 5   5   1
*         CHANNEL MUX (A08)          2 2 2 2   2 2 2 2   2 1 2   2
*         SPEC. CYBER CHAN. (A16)    4 4   4   4 4 4 4 1 4 2 4 1
*         BUFFER CONTROL (A15)       1 1 1 1   1 1 1 1   1   1     2
*         BUFFER MEMORY (A23-A26)    6 6 3 6 2 6 6 6 6   6   6 2   5
*         PROGRAM ROM (A27)          7 7 4 7 5 7 7 7 7   7   7 3
*         R/W DATA PATH (B19/B20)    8 8   8 1 8 8 8 8   8   8     1
*         BUFFER TO DATA PATH (B21)  3 3   3 4 3 3 3 3   3   3     4
*         DATA PATH CONTROL (B22)                                  3
* 
* 
* 
* 
*         DATA PACKING IN THE ECC TESTS-- 
* 
*                 OB(B2+100)      OB(B2+101)
*             \/              \/              \/
*              XXX XXX XXX XXX  XXX XXX XXX XXX 
*             /\        /\          /\        /\
*                OB(1)      OB(2)      OB(1)
*                   OB(0)=12           OB(0)=13 
* 
* 
*                 OB(B2+102)      OB(B2+103)
*             \/              \/              \/
*              XXX XXX XXX XXX  XXX XXX XXX XXX 
*             /\        /\          /\        /\
*                OB(2)      OB(1)      OB(2)
*              OB(0)=13          OB(0)=14 
* 
* 
*         DATA UNPACKING--
* 
*             OB(3)            OB(4)            OB(5) 
*        \/              \/               \/              \/
*         000 0XX XXX XXX  000 0XX XXX XXX  000 0XX XXX XXX 
*        /\                         /\                    /\
*                    OB(11)                 OB(12)
* 
* 
*             OB(6)            OB(7)            OB(10)
*        \/              \/               \/              \/
*         000 0XX XXX XXX  000 0XX XXX XXX  000 0XX XXX XXX 
*        /\                         /\                    /\
*                    OB(13)                 OB(14)
* 
* 
* 
