*DECK FMU                                                                FMU
***                     FMU - 7155 FLAW MAINTENANCE UTILITY              FMU
**                                                                       FMU
*                             AUTHOR - A. L. JOHNSON                     FMU
*                             REVISOR - H. N. STAUFFER
*                                                                        FMU
*                             DATE - FEBRUARY, 1982 
*                                                                        FMU
*                       COPYRIGHT CONTROL DATA CORP. 1978                FMU
*                                                                        FMU
*                                                                        FMU
*   1.     INTRODUCTION                                                  FMU
*          ------------                                                  FMU
*                                                                        FMU
*          FMU IS A UTILITY PROGRAM FOR PERFORMING MAINTENANCE           FMU011 
*          FUNCTIONS ON 885-1X/4X AND 844 DISK DRIVES CONNECTED TO THE
*          7155-1/1X/4X/401 DISK CONTROLLER.  THESE FUNCTIONS INCLUDE 
*          FORMATTING THE DISK, UPDATING FLAW TABLES, VERIFYING FLAW
*          TABLES, AND COPYING CONTROLWARE TO DISK.  NOTE THAT
*          THIS DOCUMENT DOES NOT AND IS NOT INTENDED TO ADHERE TO THE
*          CORPORATE ERS STANDARD BECAUSE IT IS MERELY A REVISION OF
*          AN EXISTING DOCUMENT.
*                                                                        FMU
*   2.     REQUIREMENTS                                                  FMU
*          ------------                                                  FMU
*                                                                        FMU
*   2.1    HARDWARE                                                      FMU
*                                                                        FMU
*          THE HARDWARE CONFIGURATION MAY BE ANY LEGAL ONE
*          AS DEFINED IN THE FA211-A/B/C EQUIPMENT SPECIFICATION
*          (PUBLICATION 222938611).  OTHER HARDWARE REQUIREMENTS
*          IMPOSED BY EACH OPERATING SYSTEM ARE INCLUDED IN THEIR 
*          RESPECTIVE REFERENCE MANUALS.
*                                                                        FMU
*   2.2    SOFTWARE                                                      FMU
*                                                                        FMU
*          A COPY OF MALET OR DEMOT MUST RESIDE ON THE
*          OPERATING SYSTEM USED TO EXECUTE THIS DIAGNOSTIC.
*                                                                        FMU
*          A COPY OF THE MOST RECENT VERSION OF THE MA721 OR
*          MA722 CONTROLWARE MUST BE USED AS THE SCRATCH FILE 
*          FOR FMU MODULES THAT COPY CONTROLWARE TO THE DISK
*          MEDIA.  THIS CONTROLWARE MAY BE EITHER 7230D OR 8435D
*          16-BIT WORDS IN LENGTH WITH OR WITHOUT A 77-TABLE. 
* 
*   2.3    ACCESSORIES                                                   FMU
*                                                                        FMU
*          NO  ACCESSORIES ARE REQUIRED.
*                                                                        FMU
*   3.     OPERATIONAL PROCEDURE                                         FMU
*          ----------- ---------                                         FMU
*                                                                        FMU
*   3.1    LOADING PROCEDURE                                             FMU
*                                                                        FMU
*IF -DEF,CMSE17X                                                         FMU011 
*          FMU IS LOADED USING THE STANDARD MALET LOADING                FMU
*ENDIF
*IF DEF,CMSE17X                                                          FMU011 
*          FMU IS LOADED USING THE STANDARD DEMOT LOADING                FMU011 
*ENDIF
*          PROCEDURES.                                                   FMU
*                                                                        FMU
*   3.2    PARAMETERS                                                    FMU
*                                                                        FMU
*          THE FOLLOWING PARAMETERS ARE USED BY FMU--                    FMU
*                                                                        FMU
*            P0 - 000X - FLAW TABLE TO BE DISPLAYED                      FMU
*                                                                        FMU
*                 0000 - DISPLAY BOTH TRACK AND SECTOR FLAWS             FMU
*                 0001 - DISPLAY TRACK FLAWS ONLY                        FMU
*                 0002 - DISPLAY SECTOR FLAWS ONLY                       FMU
*                                                                        FMU
*            P1 - CCCC - CYLINDER                                        FMU
*            P2 - 00TT - TRACK                                           FMU
*            P3 - 00SS - SECTOR                                          FMU
*                                                                        FMU
*            P4 - 000X - ENABLE RE-ORDERING OF UTILITY FLAW MAP DISPLAY  FMU
*                                                                        FMU
*                 0000 - DO NOT RE-ORDER FLAW MAPS                       FMU
*                 0001 - RE-ORDER UTILITY FLAW MAPS                      FMU
*                 0000 - P3 CONTAINS LOGICAL SECTOR NUMBER(FMU09/29)
*                 0001 - P3 CONTAINS PHYSICAL SECTOR NUMBER(FMU09/29) 
*                                                                        FMU
*            P4 - 000X - WRITE 844 UTILITY MAP SECTOR AFTER SCANNING     FMU
*                                                                        FMU
*                 0000 - DO NOT WRITE UTILITY MAP SECTOR                 FMU
*                 0001 - WRITE UTILITY MAP SECTOR                        FMU
*                                                                        FMU
*            P5 - 000X - FLAW MAP ARCHIVE/RESTORATION OPTION
* 
*                 0000 - RESTORE UTILITY MAPS FROM ARCHIVED UTILITY MAPS
*                 0000 - ARCHIVE FACTORY AND UTILITY MAPS TO SYSTEM FILE
*                 0001 - RESTORE UTILITY MAPS FROM ARCHIVED FACTORY MAPS
*                 0001 - ARCHIVE FACTORY MAPS ONLY TO SYSTEM FILE 
*                 0002 - ARCHIVE UTILITY MAPS ONLY TO SYSTEM FILE 
*                                                                        FMU
*            P6 - CCCC - STARTING CYLINDER OR TRACK FOR PARTIAL FORMAT
*                        OR SCAN
*            P7 - CCCC - ENDING CYLINDER OR TRACK FOR PARTIAL FORMAT
*                        OR SCAN
*                                                                        FMU
*            P8 - 00SS - 885 UTILITY TRACK SKIPPED SECTOR 1              FMU
*            P9 - 00SS - 885 UTILITY TRACK SKIPPED SECTOR 2              FMU
*                                                                        FMU
*IF DEF,CMSE17X                                                          FMU013 
*            P8 - 0NNND - 844 PACK SERIAL NUMBER (MOST SIGNIFICANT)      FMU
*            P9 - 0NNND - 844 PACK SERIAL NUMBER (LEAST SIGNIFICANT)     FMU
*                                                                        FMU
*ENDIF
*   3.3    SECTION DESCRIPTION INDEX                                     FMU
*                                                                        FMU
*          NAME     DESCRIPTION                                          FMU
*          ----     -----------                                          FMU
*IF -DEF,MVE
*        885-1X (FMDFT) LANGUAGE MODULES (DC=7) 
*          FMU01    READ 885-1X SERIAL NUMBER 
*          FMU02    READ 885-1X FACTORY MAP 
*          FMU03    READ 885-1X UTILITY MAP 
*          FMU04    SET 885-1X SECTOR FLAW
*          FMU05    CLEAR 885-1X SECTOR FLAW
*          FMU06    FORMAT 885-1X PACK
*          FMU07    FORMAT PARTIAL 885-1X PACK CYLINDRICAL
*          FMU08    FORMAT PARTIAL 885-1X PACK TRACKWISE
*          FMU09    SAVE DATA, FLAW TRACK, RESTORE DATA(885-1X) 
*          FMU10    FORMAT 885-1X UTILITY TRACK 
*          FMU11    SCAN AND DISPLAY 885-1X FLAWS 
*          FMU12    VERIFY 885-1X MAPS
*          FMU13    ARCHIVE 885-1X MAPS 
*          FMU14    RESTORE 885-1X UTILITY MAPS 
*          FMU15    COPY CONTROLWARE TO 885-1X
*          FMU16    READ CONTROLWARE REVISION (DC=7)
*          FMU17    WRITE 885-1X DIAGNOSTIC TRACKS
*        885-4X (DEMA2) LANGUAGE MODULES (DC=14)
*          FMU21    READ 885-4X SERIAL NUMBER 
*          FMU22    READ 885-4X FACTORY MAP 
*          FMU23    READ 885-4X UTILITY MAP 
*          FMU24    SET 885-4X SECTOR FLAW
*          FMU25    CLEAR 885-4X SECTOR FLAW
*          FMU26    FORMAT 885-4X PACK
*          FMU27    FORMAT PARTIAL 885-4X PACK CYLINDRICAL
*          FMU28    FORMAT PARTIAL 885-4X PACK TRACKWISE
*IF,-DEF,CMSE17X,1
*          FMU29    SAVE DATA, FLAW TRACK, RESTORE DATA(885-4X) 
*          FMU30    FORMAT 885-4X UTILITY TRACK 
*          FMU31    SCAN AND DISPLAY 885-4X FLAWS 
*          FMU32    VERIFY 885-4X MAPS
*          FMU33    ARCHIVE 885-4X MAPS 
*          FMU34    RESTORE 885-4X UTILITY MAPS 
*          FMU35    COPY CONTROLWARE TO 885-4X
*          FMU36    READ CONTROLWARE REVISION (DC=14) 
*          FMU37    WRITE 885-4X DIAGNOSTIC TRACKS
*ENDIF
*        844 (6000) LANGUAGE MODULES (DC=03,05) 
*          FMU40    DISPLAY 7155 MEMORY (DC=3,5,7,14) 
*          FMU41    READ 844 SERIAL NUMBER                               FMU
*          FMU42    READ 844 FACTORY MAP                                 FMU
*          FMU43    READ 844 UTILITY MAP                                 FMU
*          FMU45    SET 844 SECTOR FLAW                                  FMU
*          FMU46    CLEAR 844 SECTOR FLAW                                FMU
*          FMU47    SET 844 TRACK FLAW                                   FMU
*          FMU50    CLEAR 844 TRACK FLAW                                 FMU
*          FMU51    FORMAT 844 PACK                                      FMU
*          FMU52    FORMAT PARTIAL 844 PACK                              FMU
*IF DEF,CMSE17X                                                          FMU013 
*          FMU53    FORMAT 844 FACTORY DATA SECTOR                       FMU
*          FMU54    FORMAT 844 UTILITY SECTOR                            FMU
*ENDIF
*          FMU55    SCAN AND DISPLAY 844 FLAWS                           FMU
*          FMU57    ARCHIVE 844 MAPS                                     FMU
*          FMU58    RESTORE 844 MAPS
*          FMU59    COPY CONTROLWARE TO 844 
*                  885-1X (LSFMD) LANGUAGE MODULES (DC=16)
* 
*                     THESE MODULES ARE ONLY FOR TESTING LARGE
*                     SECTOR DRIVER, SECTOR RANGE IS STILL 40;
*                     EXCEPT FMU77 WHICH IS 10. 
* 
*          FMU61    READ 885-1X SERIAL NUMBER 
*          FMU62    READ 885-1X FACTORY MAP 
*          FMU63    READ 885-1X UTILITY MAP 
*          FMU64    SET 885-1X SECTOR FLAW
*          FMU65    CLEAR 885-1X SECTOR FLAW
*          FMU66    FORMAT 885-1X PACK
*          FMU67    FORMAT PARTIAL 885-1X PACK CYLINDRICAL
*          FMU68    FORMAT PARTIAL 885-1X PACK TRACKWISE
*          FMU70    FORMAT 885-1X UTILITY TRACK 
*          FMU71    SCAN AND DISPLAY 885-1X FLAWS 
*          FMU72    VERIFY 885-1X MAPS
*          FMU73    ARCHIVE 885-1X MAPS 
*          FMU74    RESTORE 885-1X UTILITY MAPS 
*          FMU75    COPY CONTROLWARE TO 885-1X
*          FMU76    READ CONTROLWARE REVISION (DC=16) 
*          FMU77    WRITE 885-1X DIAGNOSTIC TRACKS
*          FMU99    PARAMETER DEFINITIONS 
*          FMU99A   LIST OF MODULES 
*                                                                        FMU
*                                                                        FMU
*   4.     OPERATOR COMMUNICATIONS                                       FMU
*          -------- --------------                                       FMU
*                                                                        FMU
*   4.1    MESSAGE FORMATS                                               FMU
*                                                                        FMU
*          MESSAGES TO THE OPERATOR ARE IN PLAIN ENGLISH AND DO NOT      FMU
*          MAKE USE OF ERROR CODES.  (AN EXCEPTION TO THIS WOULD BE      FMU
*          ON ABORTED I/O FUNCTIONS.  AN ERROR CODE IS PROVIDED BY       FMU
*IF -DEF,CMSE17X                                                         FMU011 
*          MALET AND IS DISPLAYED FOR THE OPERATOR TO SEE.  THESE        FMU
*          ERROR CODES ARE DEFINED IN DOCUMENTATION FOR MALET.)          FMU
*ENDIF
*IF DEF,CMSE17X                                                          FMU011 
*          DEMOT AND IS DISPLAYED FOR THE OPERATOR TO SEE.  THESE        FMU011 
*          ERROR CODES ARE DEFINED IN DOCUMENTATION FOR DEMOT.)          FMU011 
*ENDIF
*          THE MESSAGES DO CONTAIN SOME ABBREVIATIONS AND THEY ARE       FMU
*          LISTED BELOW --                                               FMU
*               CH  - 7155 CHANNEL NUMBER                                FMU
*               CY  - CYLINDER                                           FMU
*               CYL - CYLINDRICAL 
*IF -DEF,CMSE17X                                                         FMU011 
*               EC  - ERROR CODE PROVIDED BY MALET                       FMU
*ENDIF
*IF DEF,CMSE17X                                                          FMU011 
*               EC  - ERROR CODE PROVIDED BY DEMOT                       FMU011 
*ENDIF
*               EQ  - 7155 EQUIPMENT NUMBER                              FMU
*               GS  - GENERAL STATUS                                     FMU
*               LF  - LAST FUNCTION                                      FMU
*               REV - REVISION                                           FMU
*               SE  - SECTOR                                             FMU
*               S/N - SERIAL NUMBER                                      FMU
*               TR  - TRACK                                              FMU
*               TRK - TRACKWISE 
*               UN  - 885 OR 844 UNIT NUMBER                             FMU
*                                                                        FMU
*   4.2    MESSAGE DICTIONARY                                            FMU
*                                                                        FMU
*   4.2.1  NORMAL RUNNING MESSAGES                                       FMU
*                                                                        FMU
*          DURING NORMAL OPERATION A MESSAGE IS SENT TO THE SYSTEM       FMU
*          B DISPLAY TO INDICATE WHICH MODULE IS RUNNING.  MODULES       FMU
*          THAT HAVE TYPICAL EXECUTION TIMES GREATER THAN 2 SECONDS      FMU
*          ALSO INCLUDE A COUNTER IN THE B DISPLAY SO THAT PROGRESS OF   FMU
*          THE MODULE MAY BE MONITORED BY THE OPERATOR.  THE SYSTEM      FMU
*          K DISPLAY IS USED FOR INFORMATION DISPLAYED BY THE MODULE.    FMU
*          (E.G. TRACK FLAW TABLE, OR DRIVE SERIAL NUMBER.)              FMU
*          THE K DISPLAY IS ALSO USED TO INFORM THE OPERATOR THAT THE    FMU
*          MODULE COMPLETED SUCCESSFULLY.                                FMU
*                                                                        FMU
*   4.2.2  ERROR MESSAGES                                                FMU
*                                                                        FMU
*          ALL ERROR MESSAGES ARE DISPLAYED ON THE SYSTEM K DISPLAY.     FMU
*          ERRORS DETECTED BY FMU ARE MENTIONED IN THE MODULE            FMU
*          DESCRIPTIONS (SECTION 5.2).  THE ERROR MESSAGES ARE IN        FMU
*          PLAIN ENGLISH AND DO NOT USE ERROR CODES.  ERRORS ON I/O      FMU
*          FUNCTIONS RESULT IN A DISPLAY OF GENERAL AND DETAILED         FMU010 
*          STATUS ALONG WITH THE LAST FUNCTION CODE AND AN ERROR CODE.   FMU
*          DESCRIPTION OF THE STATUS BITS MAY BE FOUND IN THE            FMU
*          DOCUMENTATION FOR THE 7155-1/1X/4X CONTROLLER. 
*                                                                        FMU
*   5.     DESCRIPTIONS                                                  FMU
*                                                                        FMU
*   5.1    GENERAL                                                       FMU
*                                                                        FMU
*          EACH MODULE OF FMU IS RUN AS AN INDIVIDUAL UNIT AND HALTS     FMU
*          UPON COMPLETION.  EXECUTION DOES NOT CONTINUE FROM ONE        FMU
*          MAIN MODULE TO THE NEXT.  ALL MODULES THAT MAKE CHANGES ON    FMU
*          A DISK WILL DISPLAY THE MODULE NAME, A BRIEF STATEMENT        FMU
*          OF WHAT THAT MODULE WILL DO, AND ANY RELEVANT PARAMETERS.
*          THE MODULE WILL THEN PAUSE AND THE OPERATOR SHOULD VERIFY     FMU
*          THAT THE INFORMATION DISPLAYED IS CORRECT BEFORE ISSUING      FMU010 
*          A GO DIRECTIVE TO START EXECUTION.  MODULES THAT DO NOT MAKE  FMU
*          CHANGES ON THE DISK BEGIN EXECUTION WITHOUT A PAUSE.          FMU
*                                                                        FMU
*          UPON COMPLETION OF A MODULE THE OPERATOR MUST CHECK THE       FMU
*          K DISPLAY TO VERIFY THAT NO ERRORS OCCURRED DURING THE        FMU
*          EXECUTION OF THAT MODULE.                                     FMU
*                                                                        FMU
*   5.2    MODULE DESCRIPTIONS                                           FMU
*                                                                        FMU
*IF -DEF,MVE
   MODULE FMU01, FMDFT, (07), LOCK                                       FMU
*** 5.2.1  FMU01 - READ 885-1X SERIAL NUMBER
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU01 DISPLAYS AND PRINTS THE SERIAL NUMBER AND DATE OF       FMU
*          FORMATTING FOR THE ASSIGNED 885-1X DRIVE.
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU01 READS CYLINDER 841, TRACK 0, SECTOR 0 ON THE ASSIGNED   FMU
*          DRIVE.  THE SERIAL NUMBER AND DATE OF FORMATTING ARE          FMU
*          EXTRACTED FROM THE FIRST FOUR WORDS OF THIS SECTOR.           FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU01 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE          FMU
*          EXECUTION.                                                    FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU01 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS    FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU01 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF    FMU
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU01 USES REGISTERS B1, B2, B3, AND B5.  REGISTERS ARE       FMU
*          USED AS FOLLOWS--                                             FMU
*            B1 - DATE OF FORMATTING                                     FMU
*            B2 - DATE OF FORMATTING                                     FMU
*            B3 - DATE OF FORMATTING                                     FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU01 USES THE INPUT BUFFER FOR DATA READ FROM THE DRIVE.     FMU
*                                                                        FMU
*                                                                        FMU
/  - READ 885-1X SERIAL NUMBER -
/                                                                        FMU
1  FORMAT 885-1X SERIAL NUMBER - CH=*O, EQ=*O, UN=*O
2  FORMAT S/N = *HE*HE    DATE OF FORMAT = *H/*H/*H                      FMU
15 FORMAT MODULE FMU01                                                   FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2                                FMU
   B5=3                           * SET DISPLAY LINE                     FMU
   RES DRIVE, ABT 74                                                     FMU
   GET SERIAL, ABT 74             * READ MFG DATA                        FMU
   REL, ABT 74                                                           FMU
   B3=IB(3) AND 0377              * EXTRACT DAY/MO/YR                    FMU
   B2=IB(3) RS 8                                                         FMU
   B1=IB(2) AND 0017                                                     FMU
   B1=B1 LS 4                                                            FMU
   B2=B1 XOR B2                                                          FMU
   B1=IB(2) RS 4                                                         FMU
   MSG 2 (IB(0),IB(1),B1,B2,B3) TO LINE 4                                FMU
44 MSG 16 TO LINE 6                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU02, FMDFT, (07), LOCK                                       FMU
*** 5.2.2  FMU02 - READ 885-1X FACTORY FLAW TABLES
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU02 DISPLAYS AND PRINTS THE FACTORY TRACK FLAW TABLE AND    FMU
*          THE FACTORY SECTOR FLAW TABLE FOR THE ASSIGNED 885-1X
*          DRIVE. 
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU02 READS THE FACTORY FLAW TABLES FROM CYLINDER 841,        FMU
*          TRACK 0, SECTORS 1 TO 18.  SECTOR 1 CONTAINS TRACK FLAWS AND  FMU
*          SECTORS 2 TO 18 CONTAIN SECTOR FLAWS.  EACH SECTOR IN THE     FMU
*          TABLES MAY CONTAIN UP TO 120 ENTRIES.                         FMU
*          AFTER READING ONE SECTOR FMU02 COPIES THE FLAWS TO THE        FMU
*          K DISPLAY AND TO THE PRINTER.  FMU02 CONTINUES READING        FMU
*          AND DISPLAYING THE FLAW TABLES UNTIL THE END OF THE TABLE     FMU
*          IS FOUND.  CYLINDER, TRACK AND SECTOR NUMBERS IN THE TABLES   FMU
*          ARE DISPLAYED AND PRINTED IN OCTAL.                           FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU02 REQUIRES PARAMETER P0 TO BE SET TO INDICATE WHICH       FMU
*          TABLES TO DISPLAY AND PRINT.  PARAMETER USAGE AND ALLOWED     FMU
*          OCTAL VALUES ARE SHOWN BELOW--                                FMU
*            P0 = 0 - DISPLAY AND PRINT TRACK AND SECTOR FLAW TABLES     FMU
*                 1 - DISPLAY AND PRINT TRACK FLAWS ONLY                 FMU
*                 2 - DISPLAY AND PRINT SECTOR FLAWS ONLY                FMU
*          AN ERROR MESSAGE IS DISPLAYED IF P0 IS GREATER THAN 2.        FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU02 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS    FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU02 CALLS SUBMODULE FMU98B TO DISPLAY THE FLAW TABLES AND
*          SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF AN I/O         FMU
*          FUNCTION IS ABORTED.                                          FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU02 USES REGISTERS B5, B6, BA, AND WC.  REGISTERS ARE USED  FMU
*          AS FOLLOWS--                                                  FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - DISPLAY SELECT FLAG FOR SUBMODULE FMU98B
*            WC - SECTOR                                                 FMU
*            BA - FLAW COUNT                                             FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU02 USES THE INPUT BUFFER FOR DATA READ FROM THE DRIVE.     FMU
*          THIS DATA IS COPIED TO THE OUTPUT BUFFER FOR USE BY           FMU
*          SUBMODULE FMU98B.                                             FMU
*                                                                        FMU
*                                                                        FMU
/  - READ 885-1X FACTORY MAP -
/                                                                        FMU
1  FORMAT 885-1X FACTORY MAP - CH=*O, EQ=*O, UN=*O
10 FORMAT ILLEGAL PARAMETER P0                                           FMU
15 FORMAT MODULE FMU02                                                   FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2                                FMU
   B5=5                           * DISPLAY INDEX                        FMU
   BA=1                           * SET FLAW COUNT                       FMU
40 IF (P0 EQ 0) GOTO 46           * IF ALL MAPS                          FMU
   IF (P0 EQ 1) GOTO 46           * IF TRACK MAP ONLY                    FMU
   IF (P0 EQ 2) GOTO 52           * IF SECTOR MAPS ONLY                  FMU
   MSG 10 TO LINE 4               * ERROR IF P0 NOT 0 TO 2               FMU
   MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ERROR STOP                           FMU
46 WC=1                           * SET SECTOR                           FMU
   RES DRIVE, ABT 74                                                     FMU
   GET FACTORY SECTOR WC, ABT 74  * READ TRACK FLAWS                     FMU
   COPY IB TO OB FOR 502                                                 FMU
   B6=1                                                                  FMU
   CALL 98B                       * DISPLAY TRACK FLAWS                  FMU
   BA=1                           * RESET FLAW COUNT                     FMU
   IF (P0 EQ 1) GOTO 77           * IF TRACK MAP ONLY                    FMU
52 WC=2                           * SET SECTOR                           FMU
53 RES DRIVE, ABT 74                                                     FMU
   GET FACTORY SECTOR WC, ABT 74  * READ SECTOR FLAWS                    FMU
   COPY IB TO OB FOR 502                                                 FMU
   B6=2                                                                  FMU
   CALL 98B                       * DISPLAY SECTOR FLAWS                 FMU
   IF (B3 LT 240D) GOTO 77        * IF END OF MAP                        FMU
   WC=WC+1                        * NEXT SECTOR                          FMU
   IF (WC LE 18D) GOTO 53         * IF MORE SECTORS                      FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU03, FMDFT, (07), LOCK                                       FMU
*** 5.2.3  FMU03 - READ 885-1X UTILITY TABLES 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU03 DISPLAYS AND PRINTS THE UTILITY TRACK FLAW TABLE AND    FMU
*          THE UTILITY SECTOR FLAW TABLE FOR THE ASSIGNED 885-1X
*          DRIVE. 
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU03 INITIALLY CHECKS PARAMETER P4.  IF P4 IS EQUAL TO 1     FMU
*          THEN FMU03 IMMEDIATELY EXITS TO FMU031.  IF P4 IS EQUAL       FMU
*          TO ZERO FMU03 READS THE UTILITY FLAW TABLES FROM CYLINDER     FMU
*          841, TRACK 1, SECTORS 1 TO 18.  SECTOR 1 CONTAINS TRACK       FMU
*          FLAWS AND SECTORS 2 TO 18 CONTAIN SECTOR FLAWS.  EACH SECTOR  FMU
*          OF THE TABLES MAY CONTAIN UP TO 120 ENTRIES.                  FMU
*          AFTER READING ONE SECTOR FMU03 COPIES THE FLAWS TO THE        FMU
*          K DISPLAY AND TO THE PRINTER.  FMU03 CONTINUES READING        FMU
*          AND DISPLAYING THE FLAW TABLES UNTIL THE END OF THE TABLE     FMU
*          IS FOUND.  CYLINDER, TRACK, AND SECTOR NUMBERS IN THE         FMU
*          TABLES ARE DISPLAYED AND PRINTED IN OCTAL.                    FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU03 REQUIRES PARAMETER P0 TO BE SET TO INDICATE WHICH       FMU
*          TABLES TO DISPLAY AND PRINT AS SHOWN BELOW--                  FMU
*            P0 = 0 - DISPLAY AND PRINT TRACK AND SECTOR FLAW TABLES     FMU
*                 1 - DISPLAY AND PRINT TRACK FLAWS ONLY                 FMU
*                 2 - DISPLAY AND PRINT SECTOR FLAWS ONLY                FMU
*          AN ERROR MESSAGE IS DISPLAYED IF P0 IS GREATER THAN 2.        FMU
*          FMU03 ALSO REQUIRES PARAMETER P4 TO BE SET TO INDICATE        FMU
*          IF THE TRACK FLAW TABLES ARE TO BE PRINTED WITH OR WITHOUT    FMU
*          REORDERING.  PARAMETER USAGE AND ALLOWED VALUES ARE           FMU
*          SHOWN BELOW--                                                 FMU
*            P4 = 0 - DISPLAY AND PRINT TABLES WITHOUT REORDERING.       FMU
*                 1 - SORT TABLES INTO ASCENDING ORDER BY CYLINDER,      FMU
*                     TRACK, AND SECTOR                                  FMU
*          AN ERROR MESSAGE IS DISPLAYED IF P4 IS GREATER THAN 1.        FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU03 TERMINATES WITH AN END STATEMENT OR BY EXITING          FMU
*          TO MODULE FMU031.  REGISTER B5 CONTAINS THE K DISPLAY         FMU
*          LINE NUMBER FOR FMU031.                                       FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU03 CALLS SUBMODULE FMU98B TO DISPLAY THE FLAW TABLES AND
*          SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF AN I/O         FMU
*          FUNCTION IS ABORTED.                                          FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU03 USES REGISTERS B5, B6, BA, AND WC.  REGISTERS ARE USED  FMU
*          AS FOLLOWS--                                                  FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - DISPLAY SELECT FLAG FOR SUBMODULE FMU98B               FMU
*            WC - SECTOR                                                 FMU
*            BA - FLAW COUNT                                             FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU03 USES THE INPUT BUFFER FOR DATA READ FROM THE DRIVE.     FMU
*          DATA IS COPIED TO THE OUTPUT BUFFER FOR USE BY SUBMODULE      FMU
*          FMU98B.                                                       FMU
*                                                                        FMU
*                                                                        FMU
/  - READ 885-1X UTILITY MAP -
/                                                                        FMU
1  FORMAT 885-1X UTILITY MAP - CH=*O, EQ=*O, UN=*O
10 FORMAT ILLEGAL PARAMETER P0                                           FMU
11 FORMAT ILLEGAL PARAMETER P4                                           FMU
15 FORMAT MODULE FMU03                                                   FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2                                FMU
   B5=5                           * SET DISPLAY LINE                     FMU
   BA=1                           * SET FLAW COUNT                       FMU
40 IF (P0 EQ 0) GOTO 44           * IF ALL MAPS                          FMU
   IF (P0 EQ 1) GOTO 44           * IF TRACK MAP ONLY                    FMU
   IF (P0 EQ 2) GOTO 50           * IF SECTOR MAPS ONLY                  FMU
   MSG 10 TO LINE 4               * ERROR IF P0 NOT 0 TO 2               FMU
42 MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ERROR STOP                           FMU
44 IF (P4 EQ 1) EXIT TO 031       * IF REORDER ENABLED                   FMU
   IF (P4 EQ 0) GOTO 46           * IF REORDER DISABLED                  FMU
   MSG 11 TO LINE 4               * ERROR IF P4 NOT 0 OR 1               FMU
   GOTO 42                                                               FMU
46 WC=1                           * SET SECTOR                           FMU
   RES DRIVE, ABT 74                                                     FMU
   GET UTILITY SECTOR WC, ABT 74  * READ TRACK FLAWS                     FMU
   COPY IB TO OB FOR 502                                                 FMU
   B6=1                                                                  FMU
   CALL 98B                       * DISPLAY TRACK FLAWS                  FMU
   BA=1                           * RESET FLAW COUNT                     FMU
   IF (P0 EQ 1) GOTO 77           * IF TRACK MAP ONLY                    FMU
50 IF (P4 EQ 1) EXIT TO 031       * IF REORDER ENABLED                   FMU
   IF (P4 EQ 0) GOTO 52           * IF REORDER DISABLED                  FMU
   MSG 11 TO LINE 4               * ERROR IF P4 NOT 0 OR 1               FMU
   GOTO 42                                                               FMU
52 WC=2                           * SET SECTOR                           FMU
53 RES DRIVE, ABT 74                                                     FMU
   GET UTILITY SECTOR WC, ABT 74  * READ SECTOR FLAWS                    FMU
   COPY IB TO OB FOR 502                                                 FMU
   B6=2                                                                  FMU
   CALL 98B                       * DISPLAY SECTOR FLAWS                 FMU
   IF (B3 NE 240D) GOTO 77        * IF END OF MAP                        FMU
   WC=WC+1                        * NEXT SECTOR                          FMU
   IF (WC LE 18D) GOTO 53         * IF MORE SECTORS                      FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU031, FMDFT, (07), LOCK                                      FMU
*** 5.2.4  FMU031 - REORDER 885-1X UTILITY FLAW TABLES
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU031 SORTS THE UTILITY TRACK FLAW TABLE AND THE UTILITY     FMU
*          SECTOR FLAW TABLE INTO ASCENDING ORDER BY CYLINDER, TRACK,    FMU
*          AND SECTOR.  THESE TABLES ARE THEN DISPLAYED AND PRINTED.     FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU031 READS THE UTILITY FLAW TABLES FROM CYLINDER 841,       FMU
*          TRACK 1, SECTORS 1 TO 18.  SECTOR 1 CONTAINS TRACK FLAWS      FMU
*          AND SECTORS 2 TO 18 CONTAIN SECTOR FLAWS.  EACH SECTOR        FMU
*          OF THE TABLES MAY CONTAIN UP TO 120 ENTRIES.  AFTER           FMU
*          READING EACH SECTOR THE FLAWS ARE SORTED INTO A DISPLAY       FMU
*          BUFFER.  WHEN THE END OF THE TABLE IS FOUND, THE              FMU
*          BUFFER IS DISPLAYED AND PRINTED.  WHEN THE SECTOR FLAW        FMU
*          TABLE IS READ, THE DISPLAY BUFFER IS NOT LARGE ENOUGH         FMU
*          TO HOLD ALL OF THE FLAWS AT ONE TIME, SO IT IS NECESSARY      FMU
*          TO RE-READ SECTORS 2 TO 18 AND FILL THE BUFFER AGAIN.         FMU
*          THIS PROCESS IS REPEATED UNTIL ALL OF THE SECTOR FLAWS        FMU
*          HAVE BEEN PRINTED AND DISPLAYED.                              FMU
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU031 IS ONLY ENTERED FROM MODULE FMU03, AND THEN ONLY IF    FMU
*          PARAMETER P4 IS EQUAL TO 1.  PARAMETER P0 MUST ALSO BE SET    FMU
*          AS REQUIRED BY MODULE FMU03.                                  FMU
*          FMU031 ASSUMES THAT THE LINE NUMBER FOR THE K DISPLAY         FMU
*          IS IN REGISTER B5.                                            FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU031 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS   FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU031 CALLS SUBMODULE FMU98B TO DISPLAY THE FLAW TABLES AND 
*          SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF AN I/O         FMU
*          FUNCTION IS ABORTED.                                          FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU031 USES REGISTERS B1 TO B7, BA, AND WC.  REGISTERS ARE    FMU
*          USED AS FOLLOWS--                                             FMU
*            B1 - INDEX FOR SHIFTING THE DISPLAY BUFFER                  FMU
*            B2 - INDEX FOR SHIFTING THE DISPLAY BUFFER                  FMU
*            B3 - INPUT BUFFER INDEX                                     FMU
*            B4 - INPUT BUFFER INDEX                                     FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - DISPLAY SELECT FLAG FOR SUBMODULE FMU98B               FMU
*                 ALSO, INDEX TO DISPLAY BUFFER                          FMU
*            B7 - INDEX TO DISPLAY BUFFER                                FMU
*            WC - SECTOR                                                 FMU
*            BA - FLAW COUNT                                             FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU031 USES THE INPUT BUFFER FOR FLAW TABLES READ FROM THE    FMU
*          DRIVE.  THE OUTPUT BUFFER IS USED AS THE DISPLAY BUFFER       FMU
*          AND FOR SORTING THE TABLES INTO SEQUENTIAL ORDER.             FMU
*                                                                        FMU
*                                                                        FMU
/  - READ 885-1X UTILITY MAPS (REORDER) - 
/                                                                        FMU
15 FORMAT MODULE FMU031                                                  FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 MSG 15 TO DISPLAY                                                     FMU
   WC=1                           * SET SECTOR                           FMU
22 OB(500)=0                      * CLEAR LAST FLAW                      FMU
   OB(501)=0                                                             FMU
   BA=1                           * SET FLAW COUNT                       FMU
24 B7=0                                                                  FMU
26 OB(B7)=0                       * CLEAR OB(0-239)                      FMU
   B7=B7+1                                                               FMU
   IF (B7 LT 240D) GOTO 26        * IF NOT DONE CLEARING                 FMU
35 RES DRIVE, ABT 74                                                     FMU
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR                  FMU
   B4=0                           * RESET IB INDEX                       FMU
40 B7=0                           * RESET OB INDEX                       FMU
   B3=B4+1                                                               FMU
   IF (IB(B4) AND 4000 NE 0) GOTO 42   * IF NOT END OF IB                FMU
   IF (WC EQ 1) GOTO 70           * IF END OF TRACK FLAWS                FMU
   GOTO 46                        * END OF SECTOR FLAWS                  FMU
42 IF (IB(B4) GT OB(500)) GOTO 50      * FLAW MAP GT LAST FLAW           FMU
   IF (IB(B4) LT OB(500)) GOTO 44      * FLAW MAP LT LAST FLAW           FMU
   IF (IB(B3) GT OB(501)) GOTO 50      * FLAW MAP GT LAST FLAW           FMU
44 B4=B4+2                        * INCREMENT IB INDEX                   FMU
   IF (B4 LT 240D) GOTO 40        * IF NOT END OF SECTOR                 FMU
   WC=WC+1                        * NEXT SECTOR                          FMU
   IF (WC EQ 2) GOTO 70           * IF END OF TRACK FLAWS                FMU
   IF (WC LE 18D) GOTO 35         * IF MORE SECTORS                      FMU
46 WC=2                           * RESET SECTOR                         FMU
   B6=2                                                                  FMU
   CALL 98B                       * DISPLAY SECTOR FLAWS                 FMU
   OB(500)=OB(238D)               * SAVE LAST FLAW                       FMU
   OB(501)=OB(239D)                                                      FMU
   IF (OB(238D) AND 4000 NE 0) GOTO 24  * IF NOT END OF MAP              FMU
   GOTO 77                        * END OF MODULE                        FMU
50 B6=B7+1                                                               FMU
   IF (OB(B7) EQ 0) GOTO 54       * IF END OF FLAW DISPLAY               FMU
   IF (IB(B4) GT OB(B7)) GOTO 52  * FLAW MAP GT FLAW DISPLAY             FMU
   IF (IB(B4) LT OB(B7)) GOTO 54  * FLAW MAP LT FLAW DISPLAY             FMU
   IF (IB(B3) LT OB(B6)) GOTO 54  * FLAW MAP LT FLAW DISPLAY             FMU
52 B7=B7+2                        * INCREMENT OB INDEX                   FMU
   IF (B7 LT 240D) GOTO 50        * IF NOT END OF OB                     FMU
   GOTO 44                                                               FMU
54 B2=239D                        * MOVE OB DOWN                         FMU
55 B1=B2-2                                                               FMU
   OB(B2)=OB(B1)                                                         FMU
   B2=B2-1                        * MOVE NEXT ENTRY                      FMU
   IF (B2 GT B6) GOTO 55          * IF MORE TO MOVE                      FMU
   OB(B7)=IB(B4)                  * INSERT FLAW                          FMU
   OB(B6)=IB(B3)                                                         FMU
   GOTO 44                                                               FMU
70 WC=2                           * SET SECTOR                           FMU
   IF (P0 GT 1) GOTO 22           * IF SECTOR FLAWS ONLY                 FMU
   B6=1                                                                  FMU
   CALL 98B                       * DISPLAY TRACK FLAWS                  FMU
   IF (P0 EQ 0) GOTO 22           * IF ALL FLAWS                         FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU04, FMDFT, (07), LOCK
*** 5.2.5  FMU04 - SET 885-1X SECTOR FLAW 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU04 ENTERS A SECTOR FLAW AT THE END OF THE SECTOR
*          FLAW TABLE, ENTERS A TRACK FLAW AT THE END OF THE TRACK       FMU
*          FLAW TABLE (IF NECESSARY), AND REFORMATS THE TRACK.           FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU04 READS THE SECTOR FLAW TABLES FROM CYLINDER 841,
*          TRACK 1, SECTOR 2 TO 18.  AS THESE TABLES ARE READ A COUNT    FMU
*          IS MADE OF THE NUMBER OF FLAWS ALREADY SET IN THE TRACK       FMU
*          IN WHICH THE NEW FLAW IS BEING SET.  WHEN THE END OF THE      FMU
*          SECTOR FLAW TABLE IS FOUND THE NEW FLAW IS INSERTED AT        FMU
*          THE END, AND THE LAST SECTOR OF THE TABLE IS REWRITTEN.       FMU
*          IF THE NEW FLAW JUST FILLS THIS LAST SECTOR THEN ONE          FMU
*          ADDITIONAL SECTOR IS WRITTEN WITH ALL ZEROS.  THIS INSURES    FMU
*          THAT THE END OF THE TABLE WILL BE DETECTED FOLLOWING          FMU
*          THE NEW FLAW.  IF THE TOTAL NUMBER OF SECTOR FLAWS IN THE     FMU
*          TRACK IN WHICH THE NEW FLAW IS BEING SET IS GREATER THAN      FMU
*          TWO, FMU04 EXITS TO FMU041 TO SET THE TRACK FLAW AND 
*          REFORMAT THE TRACK.  IF THE TOTAL NUMBER OF SECTOR FLAWS      FMU
*          IS ONE OR TWO, FMU04 EXITS TO FMU042 TO REFORMAT THE 
*          TRACK.                                                        FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU04 REQUIRES PARAMETERS P1, P2, AND P3 TO BE SET TO
*          INDICATE THE SECTOR TO BE FLAWED.  PARAMETER USAGE AND        FMU
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW--                        FMU
*            P1 - CYLINDER (0 TO 1512)                                   FMU
*            P2 - TRACK    (0 TO 47)                                     FMU
*            P3 - SECTOR   (0 TO 41)                                     FMU
*          AN ERROR MESSAGE IS DISPLAYED IF ANY OF THE PARAMETERS        FMU
*          IS OUT OF RANGE.                                              FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU04 EXITS TO EITHER FMU041 OR FMU042.  THE OUTPUT BUFFER 
*          CONTAINS A LIST OF SECTORS TO BE FLAWED DURING REFORMATTING   FMU
*          BY FMU041 OR FMU042.  REGISTER B5 CONTAINS THE K DISPLAY 
*          LINE NUMBER.                                                  FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU04 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU04 USES REGISTERS B0, B1, B4 TO B7, AND WC. 
*          REGISTERS ARE USED AS FOLLOWS--                               FMU
*            B0 - INDEX FOR CLEARING THE END OF THE BUFFER               FMU
*                 ALSO, CYLINDER                                         FMU
*            B1 - TRACK                                                  FMU
*            B4 - SECTOR ERROR INDEX                                     FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - INPUT BUFFER INDEX                                     FMU
*            B7 - INPUT BUFFER INDEX                                     FMU
*            WC - SECTOR                                                 FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU04 USES THE INPUT BUFFER FOR FLAW TABLES READ FROM THE
*          DRIVE.  THE OUTPUT BUFFER IS USED FOR WRITING THE END         FMU
*          OF THE FLAW TABLES BACK TO THE DRIVE, AND FOR SAVING A        FMU
*          LIST OF SECTORS TO BE FLAWED DURING REFORMATTING.             FMU
*                                                                        FMU
*                                                                        FMU
/  - SET 885-1X SECTOR FLAW - 
/                                                                        FMU
1  FORMAT SET 885-1X SECTOR FLAW - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER = *OCT,  TRACK = *O,  SECTOR = *O                     FMU
3  FORMAT ERROR - SECTOR FLAW ALREADY SET                                FMU
4  FORMAT ERROR - SECTOR FLAW MAP FULL                                   FMU
5  FORMAT ERROR - CANNOT SET SECTOR FLAW IN FACTORY TRACK.
6  FORMAT SECTOR FLAW SET                                                FMU
11 FORMAT ACCESS LEVEL TOO LOW (MINIMUM AL=4) 
12 FORMAT ILLEGAL PARAMETER P1 (MAXIMUM CY=1512)                         FMU
13 FORMAT ILLEGAL PARAMETER P2 (MAXIMUM TR=47)                           FMU
14 FORMAT ILLEGAL PARAMETER P3 (MAXIMUM SE=41)                           FMU
15 FORMAT MODULE FMU04
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU04 PAUSE - SET 885-1X SECTOR FLAW
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2                                FMU
   MSG 2 (P1,P2,P3) TO LINE 3                                            FMU
   IF (AL GE 4) GOTO 21           * IF VALID ACCESS LEVEL 
   MSG 11 TO LINE 5               * ACCESS LEVEL TOO LOW
   GOTO 22
21 IF (P1 LE 842D) GOTO 24        * IF VALID CYLINDER 
   MSG 12 TO LINE 5               * ILLEGAL CYLINDER                     FMU
22 MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ILLEGAL PARAMETER                    FMU
24 IF (P2 LE 39D) GOTO 26         * IF VALID TRACK                       FMU
   MSG 13 TO LINE 5               * ILLEGAL TRACK                        FMU
   GOTO 22                                                               FMU
26 IF (P3 LE 33D) GOTO 27         * IF VALID SECTOR                      FMU
   MSG 14 TO LINE 5               * ILLEGAL SECTOR                       FMU
   GOTO 22                                                               FMU
27 IF(P1.NE.1511) GOTO 32    *NOT FACTORY CYLINDER
   IF(P2.NE.0) GOTO 32       *NOT FACTORY TRACK 
   MSG 5 TO LINE 5           *POST FACTORY MESSAGE
   GOTO 22
32 MSG 17 TO DISPLAY, PRINT  *POST PAUSE MESSAGE
   PAUSE
   B5=4                           * SET DISPLAY LINE                     FMU
   OB(0)=P1                       * SAVE SECTORS IN OB                   FMU
   OB(1)=P2                                                              FMU
   OB(2)=P3                                                              FMU
   OB(3)=4000                                                            FMU
   B4=2                           * SECTOR ERROR INDEX                   FMU
   WC=2                           * SET SECTOR                           FMU
30 RES DRIVE, ABT 74                                                     FMU
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR                  FMU
   B7=0                           * INPUT BUFFER INDEX                   FMU
40 B6=B7+1                                                               FMU
   IF (IB(B7) AND 4000 EQ 0) GOTO 54   * IF END OF FLAW MAP              FMU
41 IF (IB(B7) AND 1777 EQ P1) GOTO 50  * FLAW MAP EQ CYLINDER            FMU
42 B7=B7+2                        * TRY NEXT ENTRY                       FMU
   IF (B7 LT 240D) GOTO 40        * IF NOT END OF SECTOR                 FMU
   WC=WC+1                        * NEXT SECTOR                          FMU
   IF (WC LE 18D) GOTO 30         * IF MORE SECTORS                      FMU
   MSG 4 TO LINE 5                * FLAW MAP FULL                        FMU
   GOTO 52                                                               FMU
50 IF (IB(B6) RS 6 NE P2) GOTO 42      * FLAW MAP NE TRACK               FMU
   B4=B4+1                        * INCREMENT COUNT                      FMU
   OB(B4)=IB(B6) AND 0077         * SAVE SECTOR NUMBER                   FMU
   IF (IB(B6) AND 0077 NE P3) GOTO 42  * FLAW MAP NE SECTOR              FMU
   MSG 3 TO LINE 5                * FLAW ALREADY SET                     FMU
52 MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ERROR STOP                           FMU
54 IB(B7)=P1 XOR 4000             * SET SECTOR FLAW                      FMU
   IB(B6)=P2 LS 6                                                        FMU
   IB(B6)=IB(B6) XOR P3                                                  FMU
   B7=B7+2                                                               FMU
60 COPY OB(0) TO IB(400) FOR 36D  * SAVE SECTOR ERRORS                   FMU
   COPY IB TO OB FOR 240D                                                FMU
   B0=B7                                                                 FMU
61 OB(B0)=0                       * CLEAR END OF BUFFER                  FMU
   B0=B0+1                                                               FMU
   IF (B0 LT 502) GOTO 61         * IF NOT DONE CLEARING                 FMU
   B0=841D                        * SET CYLINDER                         FMU
   B1=1                           * SET TRACK                            FMU
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR          FMU
   COPY IB(400) TO OB(0) FOR 36D  * RESET SECTOR ERRORS                  FMU
   IF (B7 LT 240D) GOTO 62        * IF SECTOR NOT FULL                   FMU
   WC=WC+1                        * NEXT SECTOR                          FMU
   IF (WC GT 18D) GOTO 62         * IF NO MORE SECTORS                   FMU
   B7=0                           * RESET BUFFER INDEX                   FMU
   GOTO 60                        * GO WRITE ZEROS SECTOR                FMU
62 MSG 6 TO LINE 5                                                       FMU
   B5=6                           * SET DISPLAY LINE                     FMU
   IF (B4 GE 4) EXIT TO 041       * IF SKIPPED SECTORS GT 2 
   EXIT TO 042                    * SKIPPED SECTORS LE 2
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU041, FMDFT, (07), LOCK 
*** 5.2.6  FMU041 - SET 885-1X SECTOR FLAW (CONTINUED)
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU041 ENTERS A TRACK FLAW AT THE END OF THE TRACK FLAW
*          TABLE (IF NECESSARY), AND REFORMATS THE TRACK.                FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU041 IS ENTERED FROM FMU04 WHEN SETTING A SECTOR FLAW
*          RESULTS IN MORE THAN TWO SECTOR FLAWS IN A TRACK.             FMU
*          FMU041 READS THE TRACK FLAW TABLE FROM CYLINDER 841, 
*          TRACK 1, SECTOR 1.  IF THE TRACK INDICATED BY PARAMETERS      FMU
*          P1 AND P2 IS NOT ALREADY IN THE TABLE, IT IS ADDED AT         FMU
*          THE END AND THE TABLE IS REWRITTEN.                           FMU
*          FMU041 ALSO REFORMATS THE TRACK.  THE LIST OF SECTORS
*          TO BE SKIPPED WAS GENERATED BY FMU04 AND PLACED IN THE 
*          OUTPUT BUFFER.  REFORMATTING IS THEN DONE BY CALLING          FMU
*          SUBMODULE FMU06A.
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU041 MAKES USE OF PARAMETERS P1 AND P2 AS DEFINED FOR
*          MODULE FMU04.  FMU041 ASSSUMES THAT THE LIST OF SECTORS
*          TO BE SKIPPED IS INITIALLY IN THE FIRST 36 LOCATIONS OF       FMU
*          THE OUTPUT BUFFER.  INITIALLY REGISTER B5 CONTAINS THE        FMU
*          K DISPLAY LINE NUMBER.                                        FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU041 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFEREMCED-                                        FMU
*          FMU041 CALLS SUBMODULE FMU06A TO REFORMAT THE TRACK. 
*          FMU041 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU041 USES REGISTERS B0, B1, B5, B6, B7, BA, AND WC.
*          REGISTERS ARE USED AS FOLLOWS--                               FMU
*            B0 - INDEX FOR CLEARING THE END OF THE BUFFER               FMU
*                 ALSO, CYLINDER                                         FMU
*            B1 - TRACK                                                  FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - INPUT BUFFER INDEX                                     FMU
*            B7 - INPUT BUFFER INDEX                                     FMU
*            BA - ERROR FLAG SET BY SUBMODULE FMU06A
*            WC - SECTOR                                                 FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU041 USES THE INPUT BUFFER FOR THE TRACK FLAW TABLE
*          READ FROM THE DRIVE.  THE OUTPUT BUFFER IS USED FOR           FMU
*          WRITING THE TRACK FLAW TABLE BACK TO THE DRIVE, AND FOR       FMU
*          SAVING A LIST OF SECTORS TO BE FLAWED DURING REFORMATTING.    FMU
*                                                                        FMU
*                                                                        FMU
/  - SET 885-1X SECTOR FLAW (CONTINUED) - 
/                                                                        FMU
7  FORMAT TRACK FLAW MAP FULL                                            FMU
10 FORMAT TRACK FLAW ALREADY SET                                         FMU
11 FORMAT TRACK FLAW SET                                                 FMU
15 FORMAT MODULE FMU041 
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 MSG 15 TO DISPLAY                                                     FMU
   WC=1                           * CHECK TRACK FLAW                     FMU
   RES DRIVE, ABT 74                                                     FMU
   GET UTILITY SECTOR WC, ABT 74  * READ TRACK FLAWS                     FMU
   B7=0                           * SET BUFFER INDEX                     FMU
24 B6=B7+1                                                               FMU
   IF (IB(B7) AND 4000 EQ 0) GOTO 40   * IF END OF FLAW MAP              FMU
   IF (IB(B7) AND 1777 EQ P1) GOTO 34  * FLAW MAP EQ CYLINDER            FMU
26 B7=B7+2                        * TRY NEXT ENTRY                       FMU
   IF (B7 LT 240D) GOTO 24        * IF NOT END OF SECTOR                 FMU
   MSG 7 TO LINE 7                                                       FMU
   GOTO 60                                                               FMU
34 IF (IB(B6) RS 6 NE P2) GOTO 26      * FLAW MAP NE TRACK               FMU
   MSG 10 TO LINE 7               * TRACK FLAW ALREADY SET               FMU
   GOTO 60                                                               FMU
40 IB(B7)=P1 XOR 4000             * SET TRACK FLAW                       FMU
   IB(B6)=P2 LS 6                                                        FMU
   B7=B7+2                                                               FMU
   COPY OB(0) TO IB(400) FOR 36D  * SAVE SECTOR ERRORS                   FMU
   COPY IB TO OB FOR 240D                                                FMU
   B0=B7                                                                 FMU
50 OB(B0)=0                       * CLEAR END OF BUFFER                  FMU
   B0=B0+1                                                               FMU
   IF (B0 LT 502) GOTO 50         * IF NOT DONE CLEARING                 FMU
   B0=841D                        * SET CYLINDER                         FMU
   B1=1                           * SET TRACK                            FMU
   RES DRIVE, ABT 74                                                     FMU
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR          FMU
   COPY IB(400) TO OB(0) FOR 36D  * RESET SECTOR ERRORS                  FMU
   MSG 11 TO LINE 7                                                      FMU
60 B5=10                          * SET DISPLAY LINE                     FMU
   CALL 06A                       * FORMAT TRACK FLAW 
   IF (BA EQ 1) GOTO 74           * IF ERROR                             FMU
   MSG 16 TO LINE 11                                                     FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU042, FMDFT, (07), LOCK 
*** 5.2.7  FMU042 - SET 885-1X SECTOR FLAW (CONTINUED)
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU042 IS USED TO REFORMAT A TRACK WITH ONE OR TWO FLAWS.
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU042 IS ENTERED FROM FMU04 WHEN SETTING A SECTOR FLAW
*          RESULTS IN ONE OR TWO SECTOR FLAWS IN A TRACK.  FMU042 
*          REFORMATS THE TRACK.  A TRACK FLAW IS NOT SET.                FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU042 ASSUMES THAT THE LIST OF SECTORS TO BE SKIPPED
*          IS INITIALLY IN THE FIRST 4 LOCATIONS OF THE OUTPUT           FMU
*          BUFFER.  REGISTER B5 IS ASSUMED TO CONTAIN THE K DISPLAY      FMU
*          LINE NUMBER.                                                  FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU042 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU042 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU042 USES REGISTER B5 FOR THE K DISPLAY LINE NUMBER. 
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU042 USES THE OUTPUT BUFFER FOR THE PARAMETERS NEEDED TO 
*          REFORMAT THE TRACK.  OUTPUT BUFFER ADDRESSES 300 TO 306       FMU
*          ARE USED.                                                     FMU
*                                                                        FMU
*                                                                        FMU
/  - SET 885-1X SECTOR FLAW (CONTINUED) - 
/                                                                        FMU
15 FORMAT MODULE FMU042 
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 MSG 15 TO DISPLAY                                                     FMU
   OB(300)=0                      * SET PARAMETERS                       FMU
   OB(301)=SB(63) XOR 0100        * SET SECTOR FLAWS                     FMU
   OB(302)=OB(0)                                                         FMU
   OB(303)=OB(1)                                                         FMU
   OB(304)=0                                                             FMU
   OB(305)=OB(2)                                                         FMU
   OB(306)=OB(3)                                                         FMU
   RES DRIVE, ABT 74                                                     FMU
   REFORM OB(300), ABT 74         * FORMAT TRACK                         FMU
24 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS               FMU
   IF (SB AND 2 NE 0) GOTO 24     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU05, FMDFT, (07), LOCK
*** 5.2.8  FMU05 - CLEAR 885-1X SECTOR FLAW 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU05 CLEARS A SECTOR FLAW FROM THE SECTOR FLAW TABLE, 
*          CLEARS THE CORRESPONDING TRACK FLAW FROM THE TRACK            FMU
*          FLAW TABLE (IF NECESSARY), AND REFORMATS THE TRACK.           FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU05 READS THE SECTOR FLAW TABLES FROM CYLINDER 841,
*          TRACK 1, SECTOR 2 TO 18.  AS THESE TABLES ARE READ A          FMU
*          COUNT IS MADE OF THE NUMBER OF FLAWS REMAINING SET IN         FMU
*          THE TRACK IN WHICH THE FLAW IS BEING CLEARED.  WHEN THE       FMU
*          SECTOR FLAW IS FOUND, IT IS DELETED FROM THE TABLE,           FMU
*          ALL OF THE FOLLOWING TABLE ENTRIES ARE MOVED UP ONE           FMU
*          POSITION, AND THE TABLES ARE REWRITTEN.  FMU05 EXITS TO
*          MODULE FMU051 TO REWRITE THE LAST SECTOR OF THE FLAW 
*          TABLE, DELETE THE TRACK FLAW FROM THE TRACK FLAW TABLE        FMU
*          (IF NECESSARY), AND REFORMAT THE TRACK.                       FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU05 REQUIRES PARAMETERS P1, P2, AND P3 TO BE SET TO
*          INDICATE THE SECTOR FLAW TO BE CLEARED.  PARAMETER USAGE AND  FMU
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW--                        FMU
*            P1 - CYLINDER (0 TO 1512)                                   FMU
*            P2 - TRACK    (0 TO 47)                                     FMU
*            P3 - SECTOR   (0 TO 41)                                     FMU
*          AN ERROR MESSAGE IS DISPLAYED IF ANY OF THE PARAMETERS        FMU
*          IS OUT OF RANGE.                                              FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU05 EXITS TO FMU051.  THE INPUT BUFFER CONTAINS A LIST 
*          OF SECTORS TO BE FLAWED DURING REFORMATTING.  THE OUTPUT      FMU
*          BUFFER CONTAINS THE LAST SECTOR READ FROM THE SECTOR FLAW     FMU
*          TABLE.  THE CONTENTS OF REGISTERS B4, B5, BA, AND WC ARE      FMU
*          USED BY FMU051.
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU05 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU04 USES REGISTERS B0 TO B7, BA, AND WC.  REGISTERS ARE
*          USED AS FOLLOWS--                                             FMU
*            B0 - CYLINDER                                               FMU
*            B1 - TRACK                                                  FMU
*            B2 - SECTOR                                                 FMU
*            B3 - SHIFT UP FLAG                                          FMU
*            B4 - SECTOR ERROR INDEX                                     FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - INPUT BUFFER INDEX                                     FMU
*            B7 - INPUT BUFFER INDEX                                     FMU
*            BA - END FLAG                                               FMU
*            WC - SECTOR                                                 FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU05 USES THE INPUT BUFFER FOR READING FLAW TABLES FROM 
*          THE DRIVE.  THE OUTPUT BUFFER IS USED FOR REWRITTING THE      FMU
*          SECTOR FLAW TABLES, AND FOR SAVING A LIST OF SECTORS TO       FMU
*          BE FLAWED DURING REFORMATTING.  THIS LIST IS SAVED IN THE     FMU
*          INPUT BUFFER WHEN THE OUTPUT BUFFER IS BEING USED FOR         FMU
*          REWRITTING SECTOR FLAW TABLES.  THIS LIST IS IN THE INPUT     FMU
*          BUFFER WHEN FMU05 EXITS TO FMU051. 
*                                                                        FMU
*                                                                        FMU
/  - CLEAR 885-1X SECTOR FLAW - 
/                                                                        FMU
1  FORMAT CLEAR 885-1X SECTOR FLAW - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER = *OCT,  TRACK = *O,  SECTOR = *O                     FMU
3  FORMAT ERROR - SECTOR FLAW ALREADY CLEAR                              FMU
7  FORMAT ACCESS LEVEL TOO LOW (MINIMUM AL=4) 
10 FORMAT ILLEGAL PARAMETER P1 (MAXIMUM CY=1512)                         FMU
11 FORMAT ILLEGAL PARAMETER P2 (MAXIMUM TR=47)                           FMU
12 FORMAT ILLEGAL PARAMETER P3 (MAXIMUM SE=41)                           FMU
15 FORMAT MODULE FMU05
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU05 PAUSE - CLEAR 885-1X SECTOR FLAW
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2                                FMU
   MSG 2 (P1,P2,P3) TO LINE 3                                            FMU
   IF (AL GE 4) GOTO 21           * IF VALID ACCESS LEVEL 
   MSG 7 TO LINE 5                * ACCESS LEVEL TOO LOW
   GOTO 22
21 IF (P1 LE 842D) GOTO 24        * IF VALID CYLINDER 
   MSG 10 TO LINE 5               * ILLEGAL CYLINDER                     FMU
22 MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ILLEGAL PARAMETER                    FMU
24 IF (P2 LE 39D) GOTO 26         * IF VALID TRACK                       FMU
   MSG 11 TO LINE 5               * ILLEGAL TRACK                        FMU
   GOTO 22                                                               FMU
26 IF (P3 LE 33D) GOTO 27         * IF VALID SECTOR                      FMU
   MSG 12 TO LINE 5               * ILLEGAL SECTOR                       FMU
   GOTO 22                                                               FMU
27 MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=4                           * SET DISPLAY LINE                     FMU
   OB(420)=P1                     * SAVE SECTOR FLAWS IN OB              FMU
   OB(421)=P2                                                            FMU
   OB(422)=4000                                                          FMU
   OB(423)=4000                                                          FMU
   B4=421                         * SECTOR FLAW INDEX                    FMU
   BA=0                           * END FLAG                             FMU
   B3=0                           * SHIFT UP FLAG                        FMU
   WC=2                           * SET SECTOR                           FMU
30 RES DRIVE, ABT 74                                                     FMU
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR                  FMU
   B7=0                           * SET BUFFER INDEX                     FMU
40 B6=B7+1                                                               FMU
   IF (IB(B7) AND 4000 NE 0) GOTO 41   * IF NOT END OF FLAW MAP          FMU
   BA=1                           * SET END FLAG                         FMU
   GOTO 43                                                               FMU
41 IF (IB(B7) AND 1777 EQ P1) GOTO 50  * FLAW MAP EQ CYLINDER            FMU
42 B7=B7+2                        * NEXT ENTRY                           FMU
   IF (B7 LT 240D) GOTO 40        * IF NOT END OF SECTOR                 FMU
43 IF (B3 NE 0) GOTO 60           * IF SHIFT FLAG SET                    FMU
   IF (BA NE 0) GOTO 46           * IF END FLAG SET                      FMU
44 WC=WC+1                        * NEXT SECTOR                          FMU
   IF (BA NE 0) EXIT TO 051       * IF END FLAG SET 
   IF (WC LE 18D) GOTO 30         * IF MORE SECTORS                      FMU
   IF (B3 NE 0) EXIT TO 051       * IF SHIFT FLAG SET 
46 MSG 3 TO LINE 5                * ALREADY CLEAR                        FMU
   MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ERROR STOP                           FMU
50 IF (IB(B6) RS 6 NE P2) GOTO 42      * FLAW MAP NE TRACK               FMU
   IF (IB(B6) AND 0077 EQ P3) GOTO 54  * FLAW MAP EQ SECTOR              FMU
   B4=B4+1                        * INCREMENT FLAW INDEX                 FMU
   OB(B4)=IB(B6) AND 0077         * SAVE SECTOR FLAW                     FMU
   GOTO 42                                                               FMU
54 B3=B7+2                                                               FMU
   GOTO 42                                                               FMU
60 COPY OB(420) TO IB(420) FOR 36D     * SAVE SECTOR FLAWS               FMU
   IF (B3 EQ 1) GOTO 61           * IF SHIFT UP FLAG SET                 FMU
   COPY IB TO OB FOR 240D         * NO SHIFT                             FMU
   GOTO 64                        * SHIFT LAST PART                      FMU
61 OB(238D)=IB(0)                 * FINISH PREVIOUS SECTOR               FMU
   OB(239D)=IB(1)                                                        FMU
   B0=841D                        * SET CYLINDER                         FMU
   B1=1                           * SET TRACK                            FMU
   B2=WC-1                        * SET SECTOR                           FMU
   B7=240D                        * ZERO FILL                            FMU
63 OB(B7)=0                                                              FMU
   B7=B7+1                                                               FMU
   IF (B7 NE 502) GOTO 63         * IF NOT DONE CLEARING                 FMU
   RES DRIVE, ABT 74                                                     FMU
   WRPRO CYL B0 TRK B1 SEC B2, ABT 74  * WRITE PROTECTED SECTOR          FMU
   B3=2                           * SET UP MOVE                          FMU
64 B6=240D-B3                                                            FMU
   B7=B3-2                                                               FMU
   COPY IB(B3) TO OB(B7) FOR B6   * SHIFT UP                             FMU
   B3=1                           * SET SHIFT FLAG                       FMU
   COPY IB(420) TO OB(420) FOR 36D     * RESET SECTOR FLAWS              FMU
   GOTO 44                                                               FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU051, FMDFT, (07), LOCK 
*** 5.2.9  FMU051 - CLEAR 885-1X SECTOR FLAW (CONTINUED)
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU051 REWRITES THE LAST SECTOR OF THE SECTOR FLAW TABLE,
*          CLEARS A TRACK FLAW FROM THE TRACK FLAW TABLE (IF NECESSARY), FMU
*          AND REFORMATS THE TRACK.                                      FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU051 IS ENTERED FROM FMU05 AFTER THE SECTOR FLAW HAS BEEN
*          DELETED AND ALL BUT THE LAST SECTOR OF THE TABLE HAS BEEN     FMU
*          REWRITTEN.  FMU051 REWRITES THAT LAST SECTOR AND THEN
*          REFORMATS THE TRACK.  IF THERE ARE STILL MORE THAN TWO        FMU
*          SKIPPED SECTORS IN THE TRACK, THE REFORMATTING INCLUDES       FMU
*          SETTING A TRACK FLAW.  FINALLY, IF THERE ARE ONLY TWO         FMU
*          SKIPPED SECTORS IN THE TRACK, IT IS NECESSARY TO CLEAR THE    FMU
*          TRACK FLAW FROM THE TRACK FLAW TABLE.  THE TABLE IS READ,     FMU
*          THE ENTRY IS DELETED, ALL FOLLOWING ENTRIES ARE MOVED UP,     FMU
*          AND THE TABLE IS REWRITTEN.                                   FMU
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU051 MAKES USE OF PARAMETERS P1 AND P2 AS DEFINED FOR
*          MODULE FMU05.  FMU051 ASSUMES THAT THE LIST OF SECTORS 
*          TO BE SKIPPED IS INITIALLY IN THE FIRST 36 LOCATIONS OF       FMU
*          THE OUTPUT BUFFER.  INITIALLY REGISTER B5 CONTAINS THE        FMU
*          K DISPLAY LINE NUMBER, B4 CONTAINS THE ERROR INDEX,           FMU
*          AND WC CONTAINS THE NUMBER OF THE SECTOR FOLLOWING THE        FMU
*          LAST SECTOR OF THE SECTOR FLAW TABLE.                         FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU051 TERMINATES WITH AN END STATEMENT. REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU051 CALLS SUBMODULE FMU06A TO REFORMAT THE TRACK IF 
*          A TRACK FLAW CONDITION EXISTS.                                FMU
*          FMU051 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS 
*          IF AN I/O FUNCTION IS ABORTED.                                FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU051 USES REGISTERS B0, B1, B3 TO B7, BA, AND WC.
*          REGISTERS ARE USED AS FOLLOWS--                               FMU
*            B0 - CYLINDER                                               FMU
*            B1 - TRACK                                                  FMU
*            B3 - OUTPUT BUFFER INDEX                                    FMU
*            B4 - OUTPUT BUFFER INDEX                                    FMU
*                 ALSO, SECTOR ERROR INDEX                               FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - INPUT BUFFER UNDEX                                     FMU
*            B7 - INPUT BUFFER UNDEX                                     FMU
*                 ALSO, INDEX FOR CLEARING THE OUTPUT BUFFER             FMU
*            BA - ERROR FLAG SET BY SUBMODULE FMU06A
*            WC - SECTOR                                                 FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU051 USES THE INPUT BUFFER FOR READING THE TRACK FLAW
*          TABLE.  INITIALLY THE INPUT BUFFER CONTAINS A LIST OF         FMU
*          SECTORS TO BE SKIPPED.  THE OUTPUT BUFFER IS USED FOR         FMU
*          REWRITING TABLES AND FOR THE PARAMETERS NEEDED TO REFORMAT    FMU
*          THE TRACK.                                                    FMU
*                                                                        FMU
*                                                                        FMU
/  - CLEAR 885-1X SECTOR FLAW (CONTINUED) - 
/                                                                        FMU
5  FORMAT SECTOR FLAW CLEARED                                            FMU
6  FORMAT TRACK FLAW CLEARED                                             FMU
7  FORMAT TRACK FLAW REMAINS SET                                         FMU
13 FORMAT TRACK FLAW ALREADY CLEAR                                       FMU
15 FORMAT MODULE FMU051 
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 MSG 15 TO DISPLAY                                                     FMU
   WC=WC-1                        * SET SECTOR                           FMU
   B1=1                           * SET TRACK                            FMU
   B0=841D                        * SET CYLINDER                         FMU
   B7=238D                        * ZERO FILL                            FMU
22 OB(B7)=0                                                              FMU
   B7=B7+1                                                               FMU
   IF (B7 NE 502) GOTO 22         * IF NOT DONE CLEARING                 FMU
   RES DRIVE, ABT 74                                                     FMU
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR          FMU
   COPY IB(420) TO OB(0) FOR 36D  * RESET SECTOR FLAWS                   FMU
   B4=B4-420                      * ADJUST ERROR INDEX                   FMU
   MSG 5 TO LINE 5                                                       FMU
   MSG 7 TO LINE 7                                                       FMU
   B5=7                           * SET DISPLAY LINE                     FMU
   IF (B4 LE 3) GOTO 23           * IF SKIPPED SECTORS LE 2              FMU
   CALL 06A                       * FORMAT TRACK FLAW 
   IF (BA EQ 1) GOTO 74           * IF ERROR                             FMU
   GOTO 77                        * END OF MODULE                        FMU
23 OB(300)=0                      * SET PARAMETERS                       FMU
   OB(301)=SB(63) XOR 0100        * SECTOR FLAWS                         FMU
   OB(302)=OB(0)                                                         FMU
   OB(303)=OB(1)                                                         FMU
   OB(304)=0                                                             FMU
   OB(305)=OB(2)                                                         FMU
   OB(306)=OB(3)                                                         FMU
   RES DRIVE, ABT 74                                                     FMU
   REFORM OB(300), ABT 74         * FORMAT SECTOR FLAWS                  FMU
   MSG 6 TO LINE 7                                                       FMU
   IF (B4 EQ 3) GOTO 30           * IF SKIPPED SECTORS EQ 2              FMU
   MSG 13 TO LINE 7                                                      FMU
26 MSG 16 TO LINE 11                                                     FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
30 WC=1                           * SET SECTOR                           FMU
   RES DRIVE, ABT 74                                                     FMU
   GET UTILITY SECTOR WC, ABT 74  * READ TRACK FLAWS                     FMU
   B4=0                           * OB INDEX                             FMU
   B3=B4+1                                                               FMU
   B7=0                           * IB INDEX                             FMU
32 B6=B7+1                                                               FMU
   IF (IB(B7) AND 4000 EQ 0) GOTO 40   * IF END OF FLAW MAP              FMU
33 IF (IB(B7) AND 1777 EQ P1) GOTO 50  * FLAW MAP EQ CYLNDER             FMU
34 OB(B4)=IB(B7)                                                         FMU
   OB(B3)=IB(B6)                                                         FMU
   B4=B4+2                        * INCREMENT OB INDEX                   FMU
   B3=B4+1                                                               FMU
36 B7=B7+2                        * INCREMENT IB INDEX                   FMU
   IF (B7 LT 240D) GOTO 32        * IF NOT END OF MAP                    FMU
40 OB(B4)=0                       * CLEAR REMAINDER                      FMU
   B4=B4+1                                                               FMU
   IF (B4 LT 502) GOTO 40         * IF NOT DONE CLEARING                 FMU
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR          FMU
   GOTO 26                                                               FMU
50 IF (IB(B6) RS 6 NE P2) GOTO 34      * FLAW MAP NE TRACK               FMU
   GOTO 36                        * DELETE TRACK FLAW                    FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU06, FMDFT, (07), LOCK
*** 5.2.10 FMU06 - FORMAT 885-1X PACK 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU06 FORMATS THE ENTIRE 885-1X PACK EXCEPT THE FLAW MAP 
*          TRACKS.  AFTER FORMATTING, SKIPPED SECTORS AND TRACK FLAWS    FMU
*          ARE SET.                                                      FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU06 SETS THE STARTING CYLINDER NUMBER AND THE ENDING 
*          CYLINDER NUMBER IN THE OUTPUT BUFFER.  THE STARTING CYLINDER  FMU
*          IS 0000 AND THE ENDING CYLINDER IS 1512 OCTAL.  FMU06 EXITS
*          TO MODULE FMU061 TO PERFORM THE FORMATTING AND SETTING THE 
*          SKIPPED SECTORS AND TRACK FLAWS.                              FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU06 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE 
*          EXECUTION.                                                    FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU06 EXITS TO MODULE FMU061.  OUTPUT BUFFER LOCATIONS 
*          502 AND 503 CONTAIN THE STARTING AND ENDING CYLINDERS         FMU
*          FOR USE BY FMU061. 
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU06 DOES NOT CALL ANY SUBMODULES.
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU06 DOES NOT USE ANY REGISTERS.
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU06 USES TWO LOCATIONS IN THE OUTPUT BUFFER FOR THE
*          STARTING AND ENDING CYLINDERS TO BE FORMATTED.  THEY ARE      FMU
*          SET TO THE VALUES SHOWN BELOW--                               FMU
*            OB(502) = 0000 - STARTING CYLINDER                          FMU
*            OB(503) = 1512 - ENDING CYLINDER                            FMU
*                                                                        FMU
*                                                                        FMU
/  - FORMAT 885-1X PACK - 
/                                                                        FMU
1  FORMAT FORMAT 885-1X PACK - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER 0000 TO 1512                                          FMU
15 FORMAT MODULE FMU06
17 FORMAT FMU06 PAUSE - FORMAT 885-1X PACK
   EQUATE MAXCYL TO 842D                                                 FMU
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2                                FMU
   MSG 2 TO LINE 3                                                       FMU
   MSG 17 TO DISPLAY,PRINT
   PAUSE                                                                 FMU
   OB(502)=0                      * START CYLINDER                       FMU
   OB(503)=MAXCYL                 * END CYLINDER                         FMU
   EXIT TO 061
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU061, FMDFT, (07), LOCK 
*** 5.2.11 FMU061 - FORMAT 885-1X PACK (CONTINUED)
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU061 FORMATS THE 885-1X PACK FROM THE INDICATED STARTING 
*          CYLINDER TO THE INDICATED ENDING CYLINDER.  SKIPPED           FMU
*          SECTORS AND TRACK FLAWS ARE THEN SET.                         FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU061 IS ENTERED FROM EITHER FMU06 OR FMU07.  THESE 
*          MODULES BOTH SET UP THE STARTING AND ENDING CYLINDERS         FMU
*          IN THE OUTPUT BUFFER.  FMU061 STARTS AT THE ENDING 
*          CYLINDER AND REFORMATS IT WITH NO SKIPPED SECTORS OR          FMU
*          TRACK FLAWS.  THE CYLINDER NUMBER IS THEN DECREMENTED         FMU
*          AND THE NEXT CYLINDER IS REFORMATTED.  THIS PROCESS           FMU
*          CONTINUES UNTIL ALL CYLINDERS FROM THE ENDING CYLINDER        FMU
*          TO THE STARTING CYLINDER HAVE BEEN FORMATTED.  AT THIS        FMU
*          POINT ALL CYLINDERS IN THE SPECIFIED RANGE WILL HAVE          FMU
*          BEEN FORMATTED WITH NO SKIPPED SECTORS AND NO TRACK           FMU
*          FLAWS.  FMU061 READS THE SECTOR FLAW TABLES AND FINDS
*          THE HIGHEST TRACK NUMBER IN THE SPECIFIED RANGE OF            FMU
*          CYLINDERS.  THE SECTOR FLAWS IN THIS TRACK ARE SAVED          FMU
*          IN THE OUTPUT BUFFER.  WHEN THE END OF THE SECTOR FLAW        FMU
*          TABLE IS FOUND, THE LIST OF SECTOR FLAWS IS USED TO           FMU
*          REFORMAT THE TRACK.  IF THERE ARE ONLY ONE OR TWO SECTOR      FMU
*          FLAWS, FMU061 REFORMATS THE TRACK WITH THE SECTORS SKIPPED.
*          IF THERE ARE MORE THAN TWO SECTOR FLAWS, FMU061 CALLS
*          SUBMODULE FMU06A TO REFORMAT THE TRACK WITH THE SECTORS
*          SKIPPED AND TRACK FLAW SET.  FMU061 CONTINUES THIS PROCEDURE 
*          UNTIL ALL OF THE TRACKS LISTED IN THE SECTOR FLAW TABLE       FMU
*          IN THE SPECIFIED RANGE OF CYLINDERS HAVE BEEN REFORMATTED.    FMU
*          IF THE RANGE AND SECTOR FLAW TABLE INCLUDE THE UTILITY MAP 
*          (CY 1511B, TR 1) AND ITS FLAWS, THAT TRACK IS NOT REFOR- 
*          MATTED.  USE MODULE FMU10 TO REFORMAT THE UTILITY MAP. 
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU061 ASSUMES THAT THE STARTING AND ENDING CYLINDER NUMBERS 
*          ARE INITIALLY IN OUTPUT BUFFER LOCATIONS 502 AND 503.         FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU061 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU061 CALLS SUBMODULE FMU06A TO REFORMAT TRACKS WITH MORE 
*          THAN TWO SKIPPED SECTORS.                                     FMU
*          FMU061 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS 
*          IF AN I/O FUNCTION IS ABORTED.                                FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU061 USES REGISTERS B4 TO B7, BA, AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--                                             FMU
*            B4 - SECTOR FLAW INDEX                                      FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - INPUT BUFFER INDEX                                     FMU
*            B7 - INPUT BUFFER INDEX                                     FMU
*            BA - ERROR FLAG SET BY SUBMODULE FMU06A
*            WC - SECTOR                                                 FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU061 USES THE INPUT BUFFER FOR FLAW MAPS READ FROM THE 
*          DISK.  OUTPUT BUFFER LOCATIONS 300 TO 306 ARE USED FOR THE    FMU
*          PARAMETERS FOR THE REFORMAT FUNCTION.  OUTPUT BUFFER          FMU
*          LOCATIONS 502 AND 503 CONTAIN THE STARTING AND ENDING         FMU
*          CYLINDER NUMBERS.                                             FMU
*                                                                        FMU
*                                                                        FMU
/  - FORMAT 885-1X PACK (CONTINUED) - 
/                                                                        FMU
1  FORMAT CYLINDER = *OCT                                                FMU
2  FORMAT PACK FORMATTING COMPLETE                                       FMU
10 FORMAT CY1511 TR 0 OR 1 THREE SECTOR FLAWS NOT ALLOWED 
14 FORMAT FMU061 SET FLAWS CY *OCT
15 FORMAT FMU061 FORMAT CY *OCT 
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 MSG 15 (OB(503)) TO DISPLAY                                           FMU
   B5=4                           * SET DISPLAY LINE                     FMU
   OB(300)=0                      * SET PARAMETERS                       FMU
   OB(301)=SB(63)                                                        FMU
   OB(302)=OB(503)                                                       FMU
   OB(303)=0                                                             FMU
   OB(304)=OB(503)                                                       FMU
   OB(305)=0                                                             FMU
   OB(306)=0                                                             FMU
24 RES DRIVE, ABT 74                                                     FMU
   REFORM OB(300), ABT 74         * FORMAT CYLINDER                      FMU
   MSG 1 (OB(302)) TO LINE 5                                             FMU
   MSG 15 (OB(302)) TO DISPLAY                                           FMU
   IF (OB(302) EQ OB(502)) GOTO 30     * CYLINDER, START CY 
   OB(302)=OB(302)-1              * NEXT CYLINDER                        FMU
   OB(304)=OB(302)                                                       FMU
26 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS               FMU
   IF (SB AND 2 NE 0) GOTO 26     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   GOTO 24                        * CONTINUE FORMATTING                  FMU
30 STATUS GENERAL,ABT 74          * REQUEST GENERAL STATUS               FMU
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   OB(500)=OB(503)                * SET LAST FLAW                        FMU
   OB(501)=77                                                            FMU
32 OB(0)=0                        * CLEAR CYLINDER                       FMU
   OB(1)=0                        * CLEAR TRACK                          FMU
   B4=0                           * SET FLAW INDEX                       FMU
   WC=2                           * SET SECTOR                           FMU
34 RES DRIVE, ABT 74                                                     FMU
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR                  FMU
   B7=0                           * RESET IB INDEX                       FMU
40 B6=B7+1                                                               FMU
   IF (IB(B7) AND 4000 EQ 0) GOTO 50   * IF END OF FLAW MAP              FMU
   IF (IB(B7) AND 1777 GT OB(500)) GOTO 44  * FLAW MAP GT LAST FLAW      FMU
   IF (IB(B7) AND 1777 LT OB(500)) GOTO 42  * FLAW MAP LT LAST FLAW      FMU
   IF (IB(B6) RS 6 GE OB(501)) GOTO 44      * FLAW MAP GE LAST FLAW      FMU
42 IF (IB(B7) AND 1777 LT OB(502)) GOTO 44  * FLAW MAP LT START CY
   IF (B4 EQ 0) GOTO 43                   * IF NO FLAWS                  FMU
   IF (IB(B7) AND 1777 LT OB(0)) GOTO 44  * FLAW MAP LT NEXT FLAW        FMU
   IF (IB(B7) AND 1777 GT OB(0)) GOTO 43  * FLAW MAP GT NEXT FLAW        FMU
   IF (IB(B6) RS 6 EQ OB(1)) GOTO 64   * FLAW MAP EQ NEXT FLAW           FMU
   IF (IB(B6) RS 6 LT OB(1)) GOTO 44   * FLAW MAP LT NEXT FLAW           FMU
43 OB(0)=IB(B7) AND 1777          * LOAD PARAMETERS                      FMU
   OB(1)=IB(B6) RS 6                                                     FMU
   OB(2)=IB(B6) AND 0077                                                 FMU
   OB(3)=4000                                                            FMU
   B4=2                           * SET FLAW INDEX                       FMU
44 B7=B7+2                        * INC IB INDEX                         FMU
   IF (B7 LT 240D) GOTO 40        * IF NOT END OF SECTOR                 FMU
   WC=WC+1                        * NEXT SECTOR                          FMU
   IF (WC LE 18D) GOTO 34         * IF MORE SECTORS                      FMU
50 OB(500)=OB(0)                  * SAVE LAST FLAW                       FMU
   OB(501)=OB(1)                                                         FMU
   IF (B4 EQ 0) GOTO 70           * IF NO FLAW                           FMU
   IF(OB(0).NE.1511B)GOTO 52      * IF NOT CY 1511B,
   IF(OB(1).GT.1) GOTO 52         * IF NOT TR 0 OR 1 CONTINUE 
   IF(B4.GT.3) MSG 10 TO LINE 5   * IF TRACK FLAW AND CY 1511 TR 0 OR 1 
   IF(B4.GT.3) GOTO 71            * IF TRACK FLAW AND CY 1511 TR 0 OR 1 EXIT
   GOTO 54                        * IF TR 0 OR 1 SKIP FORMAT
52 IF(B4.GT.3) GOTO 60            * IF TRACK FLAW 
   OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0100        * SECTOR FLAWS                         FMU
   OB(302)=OB(0)                                                         FMU
   OB(303)=OB(1)                                                         FMU
   OB(304)=0                                                             FMU
   OB(305)=OB(2)                                                         FMU
   OB(306)=OB(3)                                                         FMU
   RES DRIVE, ABT 74                                                     FMU
   REFORM OB(300), ABT 74         * FORMAT TRACK                         FMU
   MSG 1 (OB(302)) TO LINE 5                                             FMU
   MSG 14 (OB(302)) TO DISPLAY                                           FMU
54 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS               FMU
   IF (SB AND 2 NE 0) GOTO 54     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   GOTO 32                                                               FMU
60 CALL 06A                       * PROCESS TRACK FLAW
   IF (BA EQ 1) GOTO 74           * IF ERROR                             FMU
   GOTO 32                                                               FMU
64 B4=B4+1                        * INCREMENT COUNTER                    FMU
   OB(B4)=IB(B6) AND 0077         * SAVE ANOTHER SECTOR                  FMU
   GOTO 44                                                               FMU
70 MSG 2 TO LINE 5                                                       FMU
71 MSG 16 TO LINE 7 
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU06A, FMDFT, (07), LOCK 
*** 5.2.12 FMU06A - PROCESS 885-1X TRACK FLAW (SUBROUTINE)
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU06A REFORMATS A TRACK ONE SECTOR AT A TIME.  EACH SECTOR
*          IS REFORMATTED WITH BITS SET TO INDICATE EITHER A TRACK FLAW  FMU
*          OR SKIPPED SECTOR.                                            FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU06A IS CALLED BY MODULES FMU041, FMU051, AND FMU061.
*          FMU06A REFORMATS ONE SECTOR AT A TIME BEGINNING WITH SECTOR
*          ZERO.  THE LIST OF SECTORS TO BE SKIPPED IS CHECKED AND IF    FMU
*          THE CURRENT SECTOR IS FOUND IN THE LIST IT IS REFORMATTED     FMU
*          AS A SKIPPED SECTOR.  OTHERWISE IT IS REFORMATTED WITH TRACK  FMU
*          FLAW SET.  AS FORMATTING PROGRESSES A COUNT IS KEPT OF BOTH   FMU
*          THE PHYSICAL SECTOR AND THE LOGICAL SECTOR.  THE PHYSICAL     FMU
*          SECTOR COUNT IS ADVANCED AS EACH SECTOR IS REFORMATTED.       FMU
*          THE LOGICAL SECTOR COUNT IS ONLY ADVANCED IF THE SECTOR       FMU
*          BEING REFORMATTED IS NOT SKIPPED.  AFTER ALL SECTORS IN THE   FMU
*          TRACK HAVE BEEN REFORMATTED AN ERROR FLAG IS CLEARED AND      FMU
*          FMU06A RETURNS TO THE CALLING MODULE.  IF AN I/O FUNCTION
*          IS ABORTED, FMU06A SETS AN ERROR FLAG AND RETURNS TO THE 
*          CALLING MODULE.  THE CALLING MODULE MUST CHECK THE ERROR      FMU
*          FLAG AND DISPLAY DETAILED STATUS IF AN ERROR OCCURS.          FMU
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU06A ASSUMES THAT REGISTER B4 INITIALLY CONTAINS THE 
*          INDEX FOR THE END OF THE SKIPPED SECTOR LIST.  THE LIST       FMU
*          OF SKIPPED SECTORS IS ASSUMED TO BE IN THE OUTPUT BUFFER.     FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU06A RETURNS TO THE CALLING MODULE.  REGISTER BA IS SET
*          EQUAL TO ZERO IF REFORMATTING HAS BEEN PERFORMED WITHOUT      FMU
*          ERROR.  REGISTER BA IS SET EQUAL TO ONE IF AN I/O ERROR       FMU
*          OCCURS.                                                       FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU06A DOES NOT CALL ANY SUBMODULES. 
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU06A USES REGISTERS B0, B1, B4, B7, AND BA.  REGISTERS 
*          ARE USED AS FOLLOWS--                                         FMU
*            B0 - PHYSICAL SECTOR                                        FMU
*            B1 - LOGICAL SECTOR                                         FMU
*            B4 - INDEX FOR THE END OF THE SKIPPED SECTOR LIST           FMU
*            B7 - INDEX FOR THE SKIPPED SECTOR LIST                      FMU
*            BA - ERROR FLAG                                             FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU06A USES THE OUTPUT BUFFER FOR HOLDING A LIST OF SECTORS
*          TO BE SKIPPED AND FOR THE PARAMETERS NEEDED BY THE REFORMAT   FMU
*          COMMAND.  BUFFER LOCATIONS ARE USED AS FOLLOWS--              FMU
*            OB(0) - CYLINDER                                            FMU
*            OB(1) - TRACK                                               FMU
*            OB(2) TO OB(43) - SECTORS TO BE SKIPPED                     FMU
*            OB(300) TO OB(306) - PARAMETERS FOR REFORMATTING            FMU
*                                                                        FMU
*                                                                        FMU
/  - PROCESS 885-1X TRACK FLAW (SUBROUTINE) - 
/                                                                        FMU
20 B0=0                           * PHYSICAL SECTOR                      FMU
   B1=0                           * LOGICAL SECTOR                       FMU
22 B7=2                           * SET OB INDEX                         FMU
24 IF (OB(B7) EQ B0) GOTO 40      * SKIP SEC, PHYS SEC                   FMU
   B7=B7+1                        * INC LOGICAL SECTOR                   FMU
   IF (B7 LE B4) GOTO 24          * OB INDEX, OB END                     FMU
   OB(300)=0                      * SET PARAMETERS                       FMU
   OB(301)=SB(63) XOR 0600        * TRACK FLAW                           FMU
   OB(302)=OB(0)                                                         FMU
   OB(303)=OB(1)                                                         FMU
   OB(304)=B0                     * PHYSICAL SECTOR                      FMU
   OB(305)=0                                                             FMU
   OB(306)=B1                     * LOGICAL SECTOR                       FMU
   RES DRIVE, ABT 74                                                     FMU
   REFORM OB(300), ABT 74         * FORMAT SECTOR                        FMU
30 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS               FMU
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   B1=B1+1                        * INC LOGICAL SECTOR                   FMU
34 B0=B0+1                        * INC PHYSICAL SEC                     FMU
   IF (B0 LE 33D) GOTO 22         * IF MORE SECTORS                      FMU
   BA=0                           * CLEAR ERROR FLAG                     FMU
   EXIT                           * RETURN                               FMU
40 OB(300)=0                      * SET PARAMETERS                       FMU
   OB(301)=SB(63) XOR 0200        * SECTOR FLAW                          FMU
   OB(302)=OB(0)                                                         FMU
   OB(303)=OB(1)                                                         FMU
   OB(304)=B0                     * PHYSICAL SECTOR                      FMU
   OB(305)=0                                                             FMU
   OB(306)=0                                                             FMU
   RES DRIVE, ABT 74                                                     FMU
   REFORM OB(300), ABT 74         * FORMAT SECTOR                        FMU
44 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS               FMU
   IF (SB AND 2 NE 0) GOTO 44     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   GOTO 34                                                               FMU
74 BA=1                           * SET ERROR FLAG                       FMU
   EXIT                           * RETURN                               FMU
   END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU07, FMDFT, (07), LOCK
*** 5.2.13 FMU07 - FORMAT PARTIAL 885-1X PACK CYLINDRICAL 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU07 FORMATS ALL TRACKS OF THE SPECIFIED CYLINDERS OF THE 
*          885-1X PACK.  AFTER FORMATTING, SKIPPED SECTORS AND TRACK
*          FLAWS ARE SET. 
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU07 TAKES THE STARTING CYLINDER NUMBER FROM PARAMETER P6 
*          AND THE ENDING CYLINDER FROM PARAMETER P7 AND PLACES THEM IN  FMU
*          THE OUTPUT BUFFER.  FMU07 EXITS TO FMU061 TO PERFORM THE 
*          FORMATTING AND SETTING THE SKIPPED SECTORS AND TRACK FLAWS.   FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU07 REQUIRES PARAMETERS P6 AND P7 TO INDICATE STARTING AND 
*          ENDING CYLINDER FOR FORMATTING.  PARAMETER USAGE AND 
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW--                        FMU
*            P6 - STARTING CYLINDER (0 TO 1512)                          FMU
*            P7 - ENDING CYLINDER (0 TO 1512)                            FMU
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER OF THE PARAMETERS IS  FMU
*          OUT OF RANGE OR IF P6 IS GREATER THAN P7.                     FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU07 EXITS TO MODULE FMU061.  OUTPUT BUFFER LOCATIONS 
*          502 AND 503 CONTAIN THE STARTING AND ENDING CYLINDER FOR USE  FMU
*          BY FMU061. 
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU07 DOES NOT CALL ANY SUBMODULES.
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU07 DOES NOT USE ANY REGISTERS.
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU07 USES TWO LOCATIONS IN THE OUTPUT BUFFER FOR THE
*          STARTING AND ENDING CYLINDERS TO BE FORMATTED.  THEY ARE SET  FMU
*          TO THE VALUES SHOWN BELOW--                                   FMU
*            OB(502) = P6 - STARTING CYLINDER                            FMU
*            OB(503) = P7 - ENDING CYLINDER                              FMU
*                                                                        FMU
*                                                                        FMU
/  - FORMAT 885-1X PARTIAL PACK CYLINDRICAL - 
/                                                                        FMU
1  FORMAT FORMAT PARTIAL 885-1X PACK CYL - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER *OCT TO *OCT                                          FMU
3  FORMAT ILLEGAL PARAMETER P6 (MAXIMUM CY = 1512)                       FMU
4  FORMAT ILLEGAL PARAMETER P7 (MAXIMUM CY = 1512)                       FMU
5  FORMAT ILLEGAL PARAMETER P7 (P7 IS LESS THAN P6)                      FMU
15 FORMAT MODULE FMU07
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU07 PAUSE - FORMAT PARTIAL 885-1X PACK
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2                                FMU
   MSG 2 (P6,P7) TO LINE 3                                               FMU
   IF (P6 LE 842D) GOTO 24        * IF START CYLINDER                    FMU
   MSG 3 TO LINE 5                * ILLEGAL START CYLINDER
22 MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ERROR STOP                           FMU
24 IF (P7 LE 842D) GOTO 26        * IF END CYLINDER                      FMU
   MSG 4 TO LINE 5                * ILLEGAL END CYLINDER
   GOTO 22                                                               FMU
26 IF (P7 GE P6) GOTO 30          * END CY, START CYLINDER
   MSG 5 TO LINE 5                * ILLEGAL END CYLINDER
   GOTO 22                                                               FMU
30 MSG 17 TO DISPLAY,PRINT
   PAUSE
   OB(502)=P6                     * START CYLINDER                       FMU
   OB(503)=P7                     * END CYLINDER                         FMU
   EXIT TO 061
77 END 20 
COMPILE 
   MODULE FMU08, FMDFT, (07), LOCK
*** 5.2.13A FMU08 - FORMAT PARTIAL 885-1X PACK TRACKWISE
**
*          PURPOSE- 
*          FMU08 FORMATS THE SPECIFIED TRACKS ON ALL CYLINDERS OF THE 
*          885-1X PACK.  AFTER FORMATTING, SKIPPED SECTORS AND TRACK
*          FLAWS ARE SET. 
* 
*          METHOD-
*          FMU08 TAKES THE STARTING TRACK NUMBER FROM PARAMETER P6 AND
*          THE ENDING TRACK FROM PARAMETER P7 AND PLACES THEM IN THE
*          OUTPUT BUFFER.  FMU08 EXITS TO FMU081 TO PERFORM THE FORMAT- 
*          TING AND SETTING OF THE SKIPPED SECTORS AND TRACK FLAWS. 
* 
*          ENTRY- 
*          FMU08 REQUIRES PARAMETERS P6 AND P7 TO INDICATE STARTING AND 
*          ENDING TRACK FOR FORMATTING.  PARAMETER USAGE AND
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW-- 
*            P6 - STARTING TRACK (0 THRU 47B) 
*            P7 - ENDING TRACK (0 THRU 47B) 
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER OF THE PARAMETERS IS 
*          OUT OF RANGE OR IF P6 IS GREATER THAN P7.
/ 
*          EXIT-
*          FMU08 EXITS TO MODULE FMU081.  OUTPUT BUFFER LOCATIONS 
*          502 AND 503 CONTAIN THE STARTING AND ENDING TRACK FOR USE
*          BY FMU081. 
* 
*          SUBMODULES REFERENCED- 
*          FMU08 DOES NOT CALL ANY SUBMODULES.
* 
*          REGISTERS USED-
*          FMU08 DOES NOT USE ANY REGISTERS.
* 
*          BUFFERS USED-
*          FMU08 USES TWO LOCATIONS IN THE OUTPUT BUFFER FOR THE
*          STARTING AND ENDING TRACKS TO BE FORMATTED.  THEY ARE SET
*          TO THE VALUES SHOWN BELOW--
*            OB(502) = P6 - STARTING TRACK
*            OB(503) = P7 - ENDING TRACK
* 
* 
/  - FORMAT 885-1X PARTIAL PACK TRACKWISE - 
/ 
1  FORMAT FORMAT PARTIAL 885-1X PACK TRK-CH=*O, EQ=*O, UN=*O
2  FORMAT TRACK *OB THRU *OB
3  FORMAT ILLEGAL PARAMETER P6 (MAXIMUM TR = 47B) 
4  FORMAT ILLEGAL PARAMETER P7 (MAXIMUM TR = 47B) 
5  FORMAT ILLEGAL PARAMETER P7 (P7 IS LESS THAN P6) 
15 FORMAT MODULE FMU08
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU08 PAUSE - FORMAT PARTIAL 885-1X PACK TRK
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 2 (P6,P7) TO LINE 3
   IF (P6 LE 47B) GOTO 24         * IF START TRACK
   MSG 3 TO LINE 5                * ILLEGAL START CYLINDER
22 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
24 IF (P7 LE 47B) GOTO 26         * IF END TRACK
   MSG 4 TO LINE 5                * ILLEGAL END CYLINDER
   GOTO 22
26 IF (P7 GE P6) GOTO 30          * END CY, START CYLINDER
   MSG 5 TO LINE 5                * ILLEGAL END CYLINDER
   GOTO 22
30 MSG 17 TO DISPLAY,PRINT
   PAUSE
   OB(502)=P6                     * START CYLINDER
   OB(503)=P7                     * END CYLINDER
   EXIT TO 081
77 END 20 
COMPILE 
   MODULE FMU081, FMDFT, (07), LOCK 
*** 5.2.13B FMU081 - FORMAT 885-1X PACK TRACKWISE (CONTINUED) 
**
*          PURPOSE- 
*          FMU081 FORMATS THE 885-1X PACK TRACKWISE FROM THE INDICATED
*          STARTING TRACK TO THE INDICATED ENDING TRACK.  SKIPPED 
*          SECTORS AND TRACK FLAWS ARE THEN SET.
* 
*          METHOD-
*          FMU081 IS ENTERED FROM FMU08.  THAT MODULE SETS UP THE 
*          STARTING AND ENDING TRACKS IN THE OUTPUT BUFFER.  FMU081 
*          STARTS AT THE CYLINDER 1512B AND REFORMATS ALL SPECIFIED 
*          TRACKS WITH NO SKIPPED SECTORS OR TRACK FLAWS.  THE CYLINDER 
*          NUMBER IS THE DECREMENTED AND ALL SPECIFIED TRACKS OF THE NEXT TRACK 
*          NEXT CYLINDER ARE REFORMATTED.  THIS PROCESS 
*          CONTINUES UNTIL ALL CYLINDERS HAVE BEEN FORMATTED.  AT THIS
*          POINT ALL TRACKS IN THE SPECIFIED RANGE WILL HAVE
*          BEEN FORMATTED WITH NO SKIPPED SECTORS AND NO TRACK
*          FLAWS.  FMU081 READS THE SECTOR FLAW TABLES AND FINDS
*          THE HIGHEST CYLINDER AND TRACK NUMBER IN THE SPECIFIED RANGE 
*          OF TRACKS.  THE SECTOR FLAWS IN THIS TRACK ARE SAVED 
*          IN THE OUTPUT BUFFER.  WHEN THE END OF THE SECTOR FLAW 
*          TABLE IS FOUND, THE LIST OF SECTOR FLAWS IS USED TO
*          REFORMAT THE TRACK.  IF THERE ARE ONLY ONE OR TWO SECTOR 
*          FLAWS, FMU081 REFORMATS THE TRACK WITH THE SECTORS SKIPPED.
*          IF THERE ARE MORE THAN TWO SECTOR FLAWS, FMU081 CALLS
*          SUBMODULE FMU06A TO REFORMAT THE TRACK WITH THE SECTORS
*          SKIPPED AND TRACK FLAW SET.  FMU081 CONTINUES THIS PROCEDURE 
*          UNTIL ALL OF THE TRACKS LISTED IN THE SECTOR FLAW TABLE
*          IN THE SPECIFIED RANGE OF TRACKS HAVE BEEN REFORMATTED.
*          IF THE RANGE AND SECTOR FLAW TABLE INCLUDE THE UTILITY MAP 
*          (CY 1511B, TR 1) AND ITS FLAWS, THAT TRACK IS NOT REFOR- 
*          MATTED.  USE MODULE FMU10 TO REFORMAT THE UTILITY MAP. 
/ 
*          ENTRY- 
*          FMU081 ASSUMES THAT THE STARTING AND ENDING TRACK NUMBERS
*          ARE INITIALLY IN OUTPUT BUFFER LOCATIONS 502 AND 503.
* 
*          EXIT-
*          FMU081 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU081 CALLS SUBMODULE FMU06A TO REFORMAT TRACKS WITH MORE 
*          THAN TWO SKIPPED SECTORS.
*          FMU081 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS 
*          IF AN I/O FUNCTION IS ABORTED. 
* 
*          REGISTERS USED-
*          FMU081 USES REGISTERS B4 TO B7, BA, AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--
*            B4 - SECTOR FLAW INDEX 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
*            BA - ERROR FLAG SET BY SUBMODULE FMU06A
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU081 USES THE INPUT BUFFER FOR FLAW MAPS READ FROM THE 
*          DISK.  OUTPUT BUFFER LOCATIONS 300 TO 306 ARE USED FOR THE 
*          PARAMETERS FOR THE REFORMAT FUNCTION.  OUTPUT BUFFER 
*          LOCATIONS 502 AND 503 CONTAIN THE STARTING AND ENDING
*          TRACK NUMBERS. 
* 
* 
/  - FORMAT 885-1X PACK TRACKWISE (CONTINUED) - 
/ 
1  FORMAT CYLINDER = *OCTB, TRACK = *OB 
2  FORMAT PACK FORMATTING COMPLETE
14 FORMAT FMU081 SET FLAWS CY *OCTB TR *OB
15 FORMAT FMU081 FORMAT CY *OCTB TR *OB 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 MSG 15 (842D,OB(503)) TO DISPLAY 
   B5=4                           * SET DISPLAY LINE
   OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0100B       * FORMAT ONE TRACK
   OB(302)=842D                   * CYLINDER
   OB(303)=OB(503)                * TRACK 
   OB(304)=0                      * NOT USED
   OB(305)=4000B                  * NO DEFECTIVE SECTORS
   OB(306)=0                      * NOT USED
22 RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT TRACK
   MSG 1 (OB(302),OB(303)) TO LINE 5
   MSG 15 (OB(302),OB(303)) TO DISPLAY
   IF (OB(303) EQ OB(502)) GOTO 30  * IF ALL TRACKS DONE, 
24 OB(303)=OB(303)-1              * NEXT TRACK
   IF (OB(302) NE 1511B) GOTO 26  * IF NOT UTILITY TRACK, 
   IF (OB(303) EQ 1) GOTO 24      * IF UTILITY TRACK, 
26 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 26     * IF BUSY 
   IF (SB NE 0) GOTO 74           * IF AN ERROR 
   GOTO 22                        * CONTINUE FORMATTING 
30 OB(303)=OB(503)                * RESET TRACK 
   IF (OB(302) EQ 0) GOTO 32      * IF ALL CYLINDERS DONE,
   OB(302)=OB(302)-1              * NEXT CYLINDER 
   GOTO 26                        * CONTINUE FORMATTING 
32 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 32     * IF BUSY 
   IF (SB NE 0) GOTO 74           * IF AN ERROR 
   OB(500)=1512B                  * SET LAST FLAW CYLINDER
   OB(501)=OB(503)                * SET LAST FLAW TRACK 
34 OB(0)=0                        * CLEAR CYLINDER
   OB(1)=0                        * CLEAR TRACK 
   B4=0                           * SET FLAW INDEX
   WC=2                           * SET SECTOR
36 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR 
   B7=0                           * RESET IB INDEX
40 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 50    * IF END OF FLAW MAP
   IF(IB(B7) AND 1777 GT OB(500))GOTO 44  *FLAW MAP GT LAST 
   IF(IB(B7) AND 1777 LT OB(500))GOTO 42  *FLAW MAP LT LAST 
   IF(IB(B6) RS 6 GE OB(501))GOTO 44  *FLAW MAP GE LAST FLAW
42 IF(IB(B6) RS 6 GT OB(503))GOTO 44  *FLAW MAP GT LAST TR
   IF(IB(B6) RS 6 LT OB(502))GOTO 44  *FLAW MAP LT START TR 
   IF (B4 EQ 0) GOTO 43               * IF NO FLAWS 
   IF (IB(B7) AND 1777 LT OB(0)) GOTO 44  * FLAW MAP LT NEXT
   IF (IB(B7) AND 1777 GT OB(0)) GOTO 43  * FLAW MAP GT NEXT
   IF (IB(B6) RS 6 EQ OB(1)) GOTO 64      * FLAW MAP EQ NEXT
   IF (IB(B6) RS 6 LT OB(1)) GOTO 44      * FLAW MAP LT NEXT
43 OB(0)=IB(B7) AND 1777          *LOAD PARAMETERS, CYLINDER
   OB(1)=IB(B6) RS 6              * TRACK 
   OB(2)=IB(B6) AND 0077          * SECTOR
   OB(3)=4000                     * NO SECOND SECTOR FLAW 
   B4=2                           * SET FLAW INDEX
44 B7=B7+2                        * INC IB INDEX
   IF (B7 LT 240D) GOTO 40        * IF NOT END OF SECTOR
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 36         * IF MORE SECTORS 
50 OB(500)=OB(0)                  * SAVE LAST FLAW, CYLINDER
   OB(501)=OB(1)                  * TRACK 
   IF (B4 EQ 0) GOTO 70           * IF NO FLAW
   IF (B4 GT 3) GOTO 60           * IF TRACK FLAW 
   IF(OB(0).NE.1511B)GOTO 52      * IF NOT CY 1511B,
   IF(OB(1).EQ.1) GOTO 54         * IF TR 1, SKIP FORMAT
52 OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0100        * FORMAT ONE TRACK
   OB(302)=OB(0)                  * CYLINDER
   OB(303)=OB(1)                  * TRACK 
   IF (SB NE 0) GOTO 74           * IF AN ERROR 
   OB(304)=0                      * NOT USED
   OB(305)=OB(2)                  * FIRST DEFECTIVE SECTOR
   OB(306)=OB(3)                  * SECOND DEFECTIVE SECTOR 
   RES DRIVE, ABT 74              * RESERVE DRIVE 
   REFORM OB(300), ABT 74         * FORMAT TRACK
   MSG 1 (OB(302),OB(303)) TO LINE 5
   MSG 14 (OB(302),OB(303)) TO DISPLAY
54 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 54     * IF BUSY 
   GOTO 34
60 CALL 06A                       * PROCESS TRACK FLAW
   IF (BA EQ 1) GOTO 74           * IF ERROR
   GOTO 34
64 B4=B4+1                        * INCREMENT COUNTER 
   OB(B4)=IB(B6) AND 0077         * SAVE ANOTHER SECTOR 
   GOTO 44
70 MSG 2 TO LINE 5
   MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * END OF MODULE 
74 CALL 98A                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU09, FMDFT, (07), LOCK
*** 5.2.13C - SAVE DATA, FLAW SECTOR, RESTORE DATA (885-1X) 
**
*         PURPOSE-
*         THE FMD HAS 34 PHYSICAL SECTORS, BUT ONLY 32 ARE USED BY
*         THE SYSTEM.  FMU09 REQUIRES A MINIMUM ACCESS LEVEL OF THREE 
*         OTHERWISE AN ERROR IS DISPLAYED.  IF NOT IT IS POSSIBLE TO
*         SET THE FLAW WITH AL=4, WITHOUT DESTROYING ANY DATA WITH
*         FMU091.  IF P4.EQ.0, THE LOGICAL FLAW INFORMATION FROM HPA
*         IS CONVERTED TO A PHYSICAL FLAW IF P4=0.
* 
*         METHOD- 
*         FMU09 READS THE SECTOR FLAW TABLE FROM CYLINDER 841, TRACK 1, 
*         SECTOR 2 THRU 18.  A TEST IS MADE TO SEE IF A SECTOR FLAW CAN 
*         BE SET AND THE TABLE IS NOT FULL.  A LOGICAL SECTOR PARAMETER 
*         IS CONVERTED TO A PHYSICAL SECTOR NUMBER.  IF NO ERROR
*         CONDITION IS FOUND, FMU09 EXITS TO FMU091.
* 
*         ENTRY-
*         FMU09 REQUIRES PARAMETERS P1,P2,P3 AND P4 TO BE SET TO
*         INDICATE THE SECTOR TO BE FLAWED AND LOGICAL/PHYSICAL 
*         INDICATION.   PARAMETER USAGE AND ALLOWED OCTAL VALUES ARE
*         SHOWN BELOW-- 
*           P1 - CYLINDER (0 TO 1512) 
*           P2 - TRACK    (0 TO 47) 
*           P3 - SECTOR   (0 TO 41) FOR PHYSICAL SECTOR 
*                         (0 TO 37) FOR LOGICAL SECTOR NUMBER 
*           P4 - LOG/PHY   0 FOR LOGICAL SECTOR NUMBER
*                          1 FOR PHYSICAL SECTOR NUMBER 
*         AN ERROR MESSAGE IS DISPLAYED IF ANY OF THE PARAMETERS ARE
*         OUT OF RANGE. 
/ 
*         EXIT- 
*         FMU09 EXITS TO FMU091. REGISTER B5 CONTAINS THE K-DISPLAY 
*         LINE NUMBER.
* 
*         SUBMODULES REFERENCED-
*         FMU09 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF
*         AN I/O FUNCTION IS ABORTED. 
* 
*         REGISTERS USED- 
*         FMU09 USES REGISTERS B4, B5, B6, B7, B9 TO B14 AND WC.
*           B4   - SECTOR ERROR INDEX 
*           B5   - K-DISPLAY LINE NUMBER
*           B6   - INPUT BUFFER INDEX 
*           B7   - INPUT BUFFER INDEX 
*           B9   - FREE FLAW SPACES IN TABLE
*           B10  - SECTOR TO FLAW 
*           B11  - FLAG 
*           B12  - TRACK/SECTOR ENTRY 
*           B13  - OFFSET IN UTILITY SECTOR 
*           B14  - LAST UTILITY SECTOR USED 
*           WC   - SECTOR 
* 
* 
*         BUFFERS USED- 
*         FMU09 USES THE INPUT BUFFER FOR FLAW TABLES READ FROM THE 
*         DRIVE. THE OUTPUT BUFFER IS USED FOR TEMPORARY STORAGE. 
* 
* 
/  - TEST FOR SPARE SECTOR -
/ 
0  FORMAT FLAW ALREADY SET
1  FORMAT FMU09 PAUSE - GO TO SAVE DATA 
2  FORMAT TEST 885-1X SECTOR FLAW - CH=*O, EQ=*O, UN=*O 
3  FORMAT AT POSITION    CY=*OCT,  TR=*O, SE=*O,P4=*OCT 
4  FORMAT *DEC ADDITIONAL FLAWS CAN BE SET. 
5  FORMAT ACCESS LEVEL TOO LOW. 
6  FORMAT PHYSICAL FLAW CY=*OCT, TR=*O, SE=*O 
7  FORMAT FMU09 PAUSE - GO TO TEST FOR SPARE SECTOR 
10 FORMAT ERROR - 2 - SECTOR FLAWS SET / DUMP REQUIRED
11 FORMAT ERROR - FLAW MAP FULL 
12 FORMAT ILLEGAL PARAMETER P1 (MAXIMUM CY =1512B)
13 FORMAT ILLEGAL PARAMETER P2 (MAXIMUM TR =47B)
14 FORMAT ILLEGAL PARAMETER P3 (MAXIMUM SE =41B)
15 FORMAT ILLEGAL PARAMETER P3 (MAXIMUM SE =37B)
16 FORMAT MODULE FMU09
17 FORMAT - - - - - - - - - - - - - - - - - - - - - 
20 BLANK
   MSG 16 TO LINE 1 
   IF (AL GE 3) GOTO 22           * IF VALID ACCESS LEVEL 
21 MSG 5 TO LINE 6                * ACCESS LEVEL TOO LOW
   GOTO 23
22 IF (P1 LE 1512) GOTO 24        * IF VALID CYLINDER 
   MSG 12 TO LINE 6               * ILLEGAL CYLINDER
23 MSG 17 TO LINE 7 
   GOTO 77
24 IF (P2 LE 47) GOTO 25          * IF VALID TRACK
   MSG 13 TO LINE 6               * ILLEGAL TRACK 
   GOTO 23
25 IF (P4 EQ 0) GOTO 26           * ILLEGAL SECTOR
   IF (P3 LE 41) GOTO 30          * IF LEGAL SECTOR 
   MSG 14 TO LINE 6 
   GOTO 23
26 IF (P3 LE 37) GOTO 30          * IF LEGAL SECTOR 
   MSG 15 TO LINE 6 
   GOTO 23
30 MSG 2 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 3 (P1,P2,P3,P4) TO LINE 3
   MSG 7 TO DISPLAY, PRINT
   PAUSE
   B5=6                           * SET DISPLAY LINE
/   PREPARE UTILITY SECTOR FORMAT 
   OB(2)=P3                       * SET SECTOR
   OB(3)=4000                     * NO DEF SECTOR 
   B4=2                           * BUFFER INDEX
   B9=2040D                       * MAX ENTRIES 
   WC=2                           * STARTING SECTOR 
/   CHECK IF FLAW SETTING IS POSSIBLE 
34 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR 
   REL, ABT 74
   B7=0                           * INPUT BUFFER INDEX
35 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 41   * IF END OF FLAW MAP 
   IF (IB(B7) AND 1777 EQ P1) GOTO 40  * FLAW MAP .EQ. CYL
37 GOTO 35 WHILE (B7 + 2 LT 240D)  * IF NOT END OF SECTOR 
   B9=B9-120D                     * SUBTRACT ENTRIES
   GOTO 34 WHILE(WC + 1 LE 18)    * IF MORE SECTORS 
   GOTO 52                        * FLAW MAP FULL 
40 IF (IB(B6) RS 6 NE P2) GOTO 37  * FLAW MAP .NE. TRACK
   GOTO 53 WHILE(B4 + 1 EQ 4)     * IF 2 SECTOR FLAWS 
   OB(B4)=IB(B6) AND 0077         * SAVE SECTOR 
   GOTO 37                        * TRY NEXT ENTRY
/   CONVERT TO PHYSICAL FLAW AND SAVE VALUES
41 IF (B4 EQ 2) GOTO 42           * NO ADDITIONAL FLAW
   IF (P4 NE 0) GOTO 42           * PHYSICAL FLAW 
   IF (OB(3) GT P3) GOTO 42       * IF PHYSICAL.EQ.LOGICAL, 
   B4=P3+1                        * ELSE, INCREMENT SECTOR
   GOTO 43
42 B4=P3
   IF (OB(3).EQ.P3) GOTO 51       * IF FLAW ALREADY SET,
43 B14=WC                         * SAVE UTILITY SECTOR 
   B13=B7                         * SAVE OFFSET 
   B12=P2 LS 6
   B12=B12 XOR B4                 * SAVE TRACK/SECTOR ENTRY 
   B11=OB(3)                      * SAVE FLAG OR OTHER SECTOR 
   B10=B4                         * SAVE SECTOR TO FLAW 
   B4=B7 RS 1                     * DIVIDE BY 2 
   B9=B9-B4                       * CALCULATE ENTRIES 
   MSG 6(P1,P2,B10) TO LINE 4 
   MSG 4(B9) TO LINE 5
   MSG 1 TO DISPLAY, PRINT
   PAUSE
   IF (AL LT 4) GOTO 21 
   EXIT TO 091
/   ERROR PROCESSING
51 MSG 0 TO LINE 6                * FLAWED ALREADY ERROR
   MSG 3 (P1,P2,P3,P4) TO LINE 7
   MSG 17 TO LINE 10
   GOTO 77
52 MSG 11 TO LINE 6 
   GOTO 23
53 MSG 10 TO LINE 6 
   GOTO 23
74 CALL 98A                       * DISPLAY DETAILED STATUS 
   MSG 17 TO LINE B5
77 PICTURE
   END 20 
COMPILE 
   MODULE FMU091, FMDFT, (07), LOCK 
*** 5.2.13D - SAVE DATA, FLAW SECTOR, RESTORE DATA (CONTINUED)
**
*         PURPOSE-
*         FMU091 SAVES DATA, FORMATS THE TRACK AND REWRITES THE DATA. 
* 
*         METHOD- 
*         FMU091 IS ENTERED FROM FMU09 WHEN IT IS POSSIBLE TO SET 
*         A SECTOR FLAW.
*         FMU091 READS THE DATA IN THE TRACK WHICH SHOULD RECEIVE THE 
*         FLAW AND WRITES THEM TO CYLINDER 1512 TRACK 47 SECTOR 0-37. 
*         THE DEFECTIVE TRACK IS REFORMATED AND THE DATA IS RESTORED AT 
*         THE ORIGINAL TRACK. 
* 
*         ENTRY-
*         FMU091 MAKES USE OF PARAMETERS P1 AND P2 AS DEFINED FOR 
*         MODULE FMU09. 
* 
/ 
*         EXIT- 
*         FMU091 TERMINATES WITH AN END STATMENT. 
* 
*         SUBMODULES REFERENCED-
*         FMU091 CALLS SUBMODULE 98A TO DISPLAY DETAILED STATUS IF
*         AN I/O FUNCTION IS ABORTED. 
* 
*         REGISTERS USED- 
*         FMU091 USES REGISTERS B0, B1, B2, B3, B4, B5, B6, B7, B8, 
*         B10, B11, B12, B13, B14 AND WC. 
*         REGISTERS ARE USED AS FOLLOWS-- 
*           B0  - INDEX FOR CLEARING THE END OF THE BUFFER AND
*                 SECTORS TO READ/WRITE.
*           B1  - CYLINDER
*           B2  - TRACK 
*           B3  - STARTING SECTOR 
*           B4  - ERROR COUNTER 
*           B5  - K-DISPLAY LINE NUMBER 
*           B6  - DEFECTIVE TRACK 
*           B7  - DEFECTIVE CYLINDER
*           B8  - ERROR INDICATOR 
*           B10 - SECTOR TO FLAW
*           B11 - FLAG
*           B12 - TRACK/SECTOR ENTRY
*           B13 - OFFSET IN UTILITY SECTOR
*           B14 - LAST UTILITY SECTOR USED
*           WC  - SECTOR
* 
*         BUFFER USED-
*         FMU091 USES THE INPUT BUFFER AND OUTPUT BUFFER FOR DATA 
*         TRANSFERS TO/FROM SAVE AREA AND TO FORMAT THE TRACK.
* 
* 
/  - SAVE DATA, SET FLAW, RESTORE DATA -
/ 
1  FORMAT UPDATE UTILITY SECTOR *OCT
2  FORMAT UNRECOVERED ERROR DURING SAVING. GO OR DROP 
3  FORMAT DATA SAVING COMPLETE. GO TO SET FLAW
4  FORMAT RESTORING COMPLETE. 
5  FORMAT CHECK P3=*OCT.  TYPE GO OR RERUN FMU09
6  FORMAT RESTORING  CY=*OCT TR=*OCT SE=*OCT
7  FORMAT SAVING     CY=*OCT TR=*OCT SE=*OCT
10 FORMAT FORMATING CY=*OCT TR=*OCT 
11 FORMAT CY=*OCT TR=*OCT SE=*OCT   DEFECTIVE 
16 FORMAT FMU09 PAUSE - GO TO SET SECTOR DATA TO 3333B
17 FORMAT FMU09 PAUSE - GO TO FLAW AND RESTORE DATA 
/   INITIALIZE REGISTERS FOR DATA SAVING
20 B1=1512                        * SET MAINT. REGISTER 
   B2=47                          * SET ALTERNATE TRACK 
   B3=0                           * SET STARTING SECTOR 
   B6=P2                          * SET DEFECTIVE TRACK 
   B7=P1                          * SET DEFECTIVE CYLINDER
   B4=0                           * CLEAR ERROR FLAG
23 MSG 7(B7,B6,B3) TO DISPLAY 
/   MOVE AND VERIFY DATA ON MAINT. CYLINDER 
   RES DRIVE, ABT 65
   B0=1                           * SET NR OF SECTORS 
   READ B0 SECTORS AT CYL B7 TRK B6 SEC B3, ABT 74
24 COPY IB TO OB FOR 502
   GOSUB 60                       * WRITE VERIFY DATA TO MAINT. 
   GOTO 23 WHILE (B3 + 1 LT 40) 
   IF (B4 NE 0) GOTO 25           * IF NOT FIRST PASS 
   MSG 3 TO LINE B5 
   B5=B5+1
   MSG 17 TO DISPLAY, PRINT 
   PAUSE
/   UPDATE UTILITY SECTOR 
25 RES DRIVE, ABT 65
   WC=B14                         * LAST U. MAP SECTOR
   GET UTILITY SECTOR WC, ABT 65
   COPY IB TO OB FOR 502
   OB(B13)=P1 XOR 4000            * ADD CYLINDER ENTRY
   B0=B13+1                       * INCREMENT OFFSET
   OB(B0)=B12                     * ADD TRACK/SECTOR ENTRY
   B0=B0+1                        * INCREMENT INDEX 
40 OB(B0)=0                       * CLEAR END OF BUFFER 
   GOTO 40 WHILE(B0 + 1 LT 502)   * INCREMENT INDEX 
   B1=1511                        * SET UTILITY CYLINDER
   B2=1                           * SET UTILITY TRACK 
   MSG 1(WC) TO DISPLAY 
   WRPRO CYL B1 TRK B2 SEC WC, ABT 65 
   IF (B13 LT 500) GOTO 41        * SECTOR NOT FULL 
   WC=WC+1                        * INCREMENT SECTOR
   IF (WC GT 18) GOTO 41          * NO MORE SECTORS 
   B0=0                           * RESET SECTOR INDEX
   GOTO 40                        * WRITE ZERO SECTOR 
/   FORMAT DEFECTIVE TRACK
41 OB(1)=0                        * PARAMS FOR FORMATING
   OB(2)=SB(63) XOR 0100
   OB(3)=P1 
   OB(4)=P2 
   OB(5)=0
   OB(6)=B10
   OB(7)=B11
   MSG 10(P1,P2) TO LINE B5 
   B5=B5+1
   RES DRIVE, ABT 65
   REFORM OB(1), ABT 65           * FORMAT TRACK
45 STATUS GENERAL, ABT 65 
   IF (SB AND 2 NE 0) GOTO 45     * IF NOT FINISHED 
   B1=P1                          * SET DEFECTIVE CYLINDER
   B2=P2                          * SET DEFECTIVE TRACK 
   B3=0                           * SET STARTING SECTOR 
   B6=1512                        * SET MAINT. CYLINDER 
   B7=47                          * SET ALTERNATE TRACK 
47 MSG 6(B1,B2,B3) TO DISPLAY 
/   RESTORE CUSTOMER DATA 
   RES DRIVE, ABT 65
   B0=1                           * SET NR OF SECTORS 
   READ B0 SECTORS AT CYL B6 TRK B7 SEC B3, ABT 65
   COPY IB TO OB FOR 502
   GOSUB 60                       * WRITE VERIFY DATA TO CUST.
   GOTO 47 WHILE(B3 + 1 LT 40)
   MSG 4 TO LINE B5 
   GOTO 77
/   SUBROUTINES 
60 B0=1                           * SET NR OF SECTORS 
   RES DRIVE, ABT 65
   WRITE B0 SECTORS AT CYL B1 TRK B2 SEC B3, ABT 65 
   B0=1                           * SET NR OF SECTORS 
   READ B0 SECTORS AT CYL B1 TRK B2 SEC B3, ABT 65
   WC=502                         * SET WORD COUNT
   COMPARE IB TO OB FOR WC, ABT 65
   RETURN 
/   ERROR PROCESSING
65 B8=0                           * SET NORMAL ERROR EXIT 
66 CALL 98A 
   IF (B8 EQ 0) GOTO 77 
   IF (B8 LT 33) GOTO 24
   MSG 2 TO LINE B5 
   B5=B5+1
   MSG 16 TO DISPLAY, PRINT 
   PAUSE
   DUP 3333 TO IB(2) FOR 500      * FLAG UNREADABLE SECTOR
   GOTO 24
74 B8=SB(52)                      * SET RETRY COUNT 
   IF (B8 NE 0) GOTO 75           * DATA FIELD ERROR
   B8=33                          * SET UNREADABLE SECTOR 
   DUP 0000 TO IB FOR 2           * FLAG EOI OR ZERO DATA 
75 B4=B4+1                        * COUNT THE ERROR 
   MSG 11(B7,B6,B3) TO LINE B5
   B5=B5+1
   IF (B3 EQ B10) GOTO 66 
   MSG 5(P3) TO LINE B5 
   B5=B5+1
   GOTO 66
77 PICTURE
   END 20 
COMPILE 
   MODULE FMU10, FMDFT, (07), LOCK
*** 5.2.14 FMU10 - FORMAT 885-1X UTILITY TRACK
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU10 FORMATS CYLINDER 1511, TRACK 1 ON THE ASSIGNED DRIVE.
*          UP TO TWO SECTORS ON THIS TRACK MAY BE SKIPPED.               FMU
*          NOTE THAT FORMATTING THIS TRACK DESTROYS THE UTILITY FLAW
*          MAP.  THE UTILITY FLAW MAP MAY BE RESTORED FROM ARCHIVED FLAW
*          MAPS BY RUNNING FMU14. 
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU10 CHECKS PARAMETERS AND THEN REFORMATS THE TRACK ONE 
*          SECTOR AT A TIME BEGINNING WITH SECTOR ZERO.  IF THE CURRENT  FMU
*          SECTOR IS LISTED IN PARAMETER P8 OR P9 IT IS FORMATTED AS A   FMU
*          SKIPPED SECTOR.  OTHERWISE IT IS FORMATTED AS A MAP SECTOR.   FMU
*          AS FORMATTING PROGRESSES A COUNT IS KEPT OF BOTH THE          FMU
*          PHYSICAL SECTOR AND THE LOGICAL SECTOR.  THE PHYSICAL SECTOR  FMU
*          COUNT IS ADVANCED AS EACH SECTOR IS FORMATTED.  THE LOGICAL   FMU
*          SECTOR COUNT IS ONLY ADVANCED IF THE SECTOR BEING FORMATTED   FMU
*          IS NOT SKIPPED.                                               FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU10 REQUIRES PARAMETERS P8 AND P9 TO INDICATE SECTORS TO BE
*          SKIPPED DURING FORMATTING.  UP TO TWO SECTORS MAY BE SKIPPED  FMU
*          BY SETTING THE PARAMETERS AS FOLLOWS--                        FMU
*            NO SKIPPED SECTORS - P8 = 0 AND P9 = 0                      FMU
*            ONE SKIPPED SECTOR - P8 = SECTOR (0 TO 41) AND P9 = 4000    FMU
*            TWO SKIPPED SECTORS - P8 = SECTOR (0 TO 41) AND             FMU
*                                  P9 = SECTOR (0 TO 41)                 FMU
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER PARAMETER IS NOT      FMU
*          VALID OR IF P8 AND P9 ARE EQUAL AND NON-ZERO.                 FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU10 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU10 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU10 USES REGISTERS B0, B1, B2, AND B5.  REGISTERS ARE USED 
*          AS FOLLOWS--                                                  FMU
*            B0 - PHYSICAL SECTOR                                        FMU
*            B1 - LOGICAL SECTOR                                         FMU
*            B2 - SKIP FLAG                                              FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU10 USES THE OUTPUT BUFFER FOR PARAMETERS NEEDED BY THE
*          REFORMAT COMMAND.  BUFFER LOCATIONS USED ARE AS FOLLOWS--     FMU
*            OB(300) TO OB(306) - PARAMETERS FOR FORMATTING              FMU
*                                                                        FMU
*                                                                        FMU
/  - FORMAT 885-1X UTILITY TRACK -
/                                                                        FMU
1  FORMAT ILLEGAL PARAMETER P8 (MAXIMUM SE=41)                           FMU
2  FORMAT ILLEGAL PARAMETER P9 (MAXIMUM SE=41)                           FMU
3  FORMAT ILLEGAL PARAMETER P9 (P9 IS EQUAL TO P8)                       FMU
5  FORMAT FORMAT 885-1X UTILITY TRACK - CH=*O, EQ=*O, UN=*O 
6  FORMAT SKIP SECTOR *O                                                 FMU
7  FORMAT SKIP SECTOR *O AND *O                                          FMU
10 FORMAT NO SKIPPED SECTORS                                             FMU
11 FORMAT UTILITY TRACK FORMATTING COMPLETE                              FMU
12 FORMAT -- WARNING -- WARNING -- WARNING -- 
13 FORMAT  GO -- WILL DESTROY THE UTILITY MAPS
15 FORMAT MODULE FMU10
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU10 PAUSE - FORMAT 885-1X UTILITY TRACK 
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 5 (SB(61),SB(62),SB(63)) TO LINE 2                                FMU
   MSG 10 TO LINE 3                                                      FMU
   B2=0                           * CLEAR SKIP FLAG                      FMU
   IF (P9 NE 0) GOTO 22           * IF 2ND SKIP SECTOR NE 0              FMU
   IF (P8 EQ 0) GOTO 40           * IF NO SKIPPED SECTORS                FMU
22 IF (P9 NE 4000) GOTO 23        * IF 2 SKIPPED SECTORS                 FMU
   IF (P8 EQ 4000) GOTO 40        * IF NO SKIPPED SECTORS                FMU
23 MSG 6 (P8) TO LINE 3           * 1 SKIPPED SECTOR                     FMU
   B2=1                           * SET SKIP FLAG                        FMU
   IF (P9 NE 4000) GOTO 30        * IF 2 SKIPPED SECTORS                 FMU
   IF (P8 LE 33D) GOTO 40         * IF VALID SECTOR                      FMU
25 MSG 1 (P8) TO LINE 5           * ILLEGAL PARAMETER                    FMU
26 MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ERROR STOP                           FMU
30 MSG 7 (P8,P9) TO LINE 3        * 2 SKIPPED SECTORS                    FMU
   IF (P8 GT 33D) GOTO 25         * IF ILLEGAL SECTOR                    FMU
   IF (P9 LE 33D) GOTO 32         * IF VALID SECTOR                      FMU
   MSG 2 TO LINE 5                * ILLEGAL PARAMETER                    FMU
   GOTO 26                                                               FMU
32 IF (P9 NE P8) GOTO 40          * IF SECTORS DIFFER                    FMU
   MSG 3 TO LINE 5                * ILLEGAL PARAMETER                    FMU
   GOTO 26                                                               FMU
40 MSG 12 TO LINE 10         *WARNING MESSAGE 
   MSG 12 TO LINE 11         *WARNING MESSAGE 
   MSG 13 TO LINE 13         *WARNING MESSAGE FOR GO
   MSG 12 TO LINE 15         *WARNING MESSAGE 
   MSG 12 TO LINE 16         *WARNING MESSAGE 
   PICTURE
   MSG 17 TO DISPLAY,PRINT
   PAUSE
   BLANK
   B5=4                           * SET DISPLAY LINE                     FMU
   B0=0                           * PHYSICAL SECTOR                      FMU
   B1=0                           * LOGICAL SECTOR                       FMU
41 IF (B2 EQ 0) GOTO 42           * IF SKIP FLAG NOT SET                 FMU
   IF (B0 EQ P8) GOTO 60          * PHYS SEC EQ 1ST SEC                  FMU
   IF (B0 EQ P9) GOTO 60          * PHYS SEC EQ 2ND SEC                  FMU
42 OB(300)=0                      * SET PARAMETERS                       FMU
   OB(301)=SB(63) XOR 0400        * MAP SECTOR                           FMU
   OB(302)=841D                                                          FMU
   OB(303)=1                                                             FMU
   OB(304)=B0                     * PHYSICAL SECTOR                      FMU
   OB(305)=0                                                             FMU
   OB(306)=B1                     * LOGICAL SECTOR                       FMU
   RES DRIVE, ABT 74                                                     FMU
   REFORM OB(300), ABT 74         * FORMAT UTILITY TRACK                 FMU
44 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS               FMU
   IF (SB AND 2 NE 0) GOTO 44     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   B1=B1+1                        * INC LOGICAL SECTOR                   FMU
50 B0=B0+1                        * INC PHYSICAL SEC                     FMU
   IF (B0 LE 33D) GOTO 41         * IF MORE SECTORS                      FMU
   MSG 11 TO LINE 5               * FORMAT COMPLETE                      FMU
   MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
60 OB(300)=0                      * SET PARAMETERS                       FMU
   OB(301)=SB(63) XOR 0200        * SKIP SECTOR                          FMU
   OB(302)=841D                                                          FMU
   OB(303)=1                                                             FMU
   OB(304)=B0                     * PHYSICAL SECTOR                      FMU
   OB(305)=0                                                             FMU
   OB(306)=0                                                             FMU
   RES DRIVE, ABT 74                                                     FMU
   REFORM OB(300), ABT 74         * FORMAT SECTOR                        FMU
64 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS               FMU
   IF (SB AND 2 NE 0) GOTO 64     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   GOTO 50                                                               FMU
74 CALL 98A                             DISPLAY DETAILED STATUS          FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU11, FMDFT, (07), LOCK
*** 5.2.15 FMU11 - SCAN AND DISPLAY 885-1X FLAWS
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU11 SCANS THE ENTIRE 885-1X DRIVE AND DISPLAYS AND PRINTS A
*          LIST OF ERROR SECTORS, SKIPPED SECTORS, AND FLAWED TRACKS.    FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU11 TAKES THE STARTING CYLINDER NUMBER FROM PARAMETER P6 
*          AND THE ENDING CYLINDER NUMBER FROM PARAMETER P7.  IF BOTH 
*          PARAMETERS ARE ZERO, THE ENDING CYLINDER IS SET TO 1512B TO
*          CAUSE A FULL SCAN OF THE PACK.  THEN, FMU31 STARTS WITH THE
*          CYLINDER GIVEN IN P6 AND DOES A SEEK FOLLOWED BY 
*          A SCAN COMMAND.  AFTER THE SCAN COMPLETES FMU11 READS THE
*          CHANNEL BUFFER TO OBTAIN A LIST OF FLAWS FOR THE CURRENT 
*          CYLINDER.  FMU11 THEN DISPLAYS THIS LIST OF FLAWS. 
*          THE CYLINDER NUMBER IS INCREMENTED AND THE PROCESS IS         FMU
*          CONTINUED UNTIL ALL OF THE CYLINDERS HAVE BEEN SCANNED.       FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU11 USES PARAMETERS P6 AND P7 TO INDICATE STARTING AND 
*          ENDING CYLINDER FOR SCANNING.  IF THEY ARE BOTH ZERO,
*          A FULL SCAN IS EXECUTED.  PARAMETER USAGE AND
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW-- 
*            P6 - STARTING CYLINDER (0 TO 1512) 
*            P7 - ENDING CYLINDER (0 TO 1512) 
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER OF THE PARAMETERS IS 
*          OUT OF RANGE OR IF P6 IS GREATER THAN P7.
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU11 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU11 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU31 USES REGISTERS B0 TO B7 AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--                                             FMU
*            B0 - CYLINDER                                               FMU
*            B1 - TRACK                                                  FMU
*            B2 - SECTOR                                                 FMU
*            B3 - INPUT BUFFER INDEX                                     FMU
*            B4 - TRACK AND SECTOR                                       FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - ENDING CYLINDER 
*            B7 - INPUT BUFFER INDEX                                     FMU
*            WC - CYLINDER                                               FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU11 USES THE INPUT BUFFER FOR READING THE LIST OF FLAWS
*          FROM THE CHANNEL BUFFER.                                      FMU
*                                                                        FMU
*                                                                        FMU
/  - SCAN AND DISPLAY 885-1X FLAWS -
/                                                                        FMU
1  FORMAT 885-1X SECTOR FLAWS - CH=*O, EQ=*O, UN=*O 
2  FORMAT CYLINDER = *OCT                                                FMU
3  FORMAT                                                                FMU
4  FORMAT CY = *OCT   TR = *O   SE = *O                                  FMU
5  FORMAT CY = *OCT   TR = *O   SE = *O   TRACK FLAW                     FMU
6  FORMAT CY = *OCT   TR = *O   SE = *O   ERROR SECTOR                   FMU
7  FORMAT - - - - - - - END OF LIST - - - - - - -                        FMU
10 FORMAT CYLINDER *OCT TO *OCT 
11 FORMAT ILLEGAL PARAMETER P6 (MAXIMUM CY = 1512)
12 FORMAT ILLEGAL PARAMETER P7 (MAXIMUM CY = 1512)
13 FORMAT ILLEGAL PARAMETER P7 (P7 IS LESS THAN P6) 
15 FORMAT FMU11 SCAN CY *OCT
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU11 PAUSE - SCAN AND DISPLAY 885-1X FLAWS 
   EQUATE MAXCYL TO 842D                                                 FMU
20 BLANK                                                                 FMU
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2                                FMU
   IF (P6 LE MAXCYL) GOTO 22      * IF BEG CY LE MAXCYL 
   MSG 11 TO LINE 5               * ELSE, ILLEGAL BEG CY
21 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
22 IF (P7 LE MAXCYL) GOTO 23      * IF END CY LE MAXCYL 
   MSG 12 TO LINE 5               * ELSE, ILLEGAL END CY
   GOTO 21
23 IF (P7 GE P6) GOTO 24          * IF END GE BEG CYLINDER
   MSG 13 TO LINE 5               * ILLEGAL END CYLINDER
   GOTO 21
24 B5=5                           * SET DISPLAY LINE
   WC=P6                          * SET BEG CYLINDER
   B6=P7                          * SET END CYLINDER
   IF (P7 EQ 0) B6 = MAXCYL       * IF P7=0, FULL SCAN
   MSG 10 (WC,B6) TO LINE 3 
   MSG 17 TO DISPLAY,PRINT
   PAUSE
   B4=0                           * SET TRACK AND SECTOR                 FMU
25 RES DRIVE, ABT 74
26 SEEK CYL WC TRK B4 SEC B4, ABT 74   * SEEK 
   SCAN, ABT 74                   * SCAN CYLINDER                        FMU
   MSG 2 (WC) TO LINE B5                                                 FMU
   MSG 15 (WC) TO DISPLAY                                                FMU
30 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS               FMU001A
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY                              FMU
   IF (SB AND 4000 NE 0) GOTO 74  * IF ABNORMAL STATUS
   READCB, ABT 74                 * READ BUFFER                          FMU
   GOSUB 40                       * PROCESS CYLINDER
   WC=WC+1                        * NEXT CYLINDER                        FMU
   IF (WC LE B6) GOTO 25          * IF MORE CYLINDERS 
   GOTO 77                        * END OF MODULE                        FMU
/                                                                        FMU
/  PROCESS AND DISPLAY THE FLAWS IN IB (SUBROUTINE)                      FMU
40 B7=0                           * SET IB INDEX
46 IF (IB(B7) EQ 0) GOTO 64       * IF END OF IB                         FMU
   IF (B5 LE 33D) GOTO 54         * IF DISPLAY NOT FULL                  FMU
   MSG 3 TO LINE B5                                                      FMU
   PICTURE                        * PRINT PAGE                           FMU
50 B5=B5-1                        * CLEAR DISPLAY                        FMU
   MSG 3 TO LINE B5                                                      FMU
   IF (B5 GT 5) GOTO 50           * IF NOT DONE CLEARING
54 B3=B7+1                        * SET IB INDEX                         FMU
   B0=WC                          * SET CYLINDER
   B1=IB(B3) RS 6                 * EXTRACT TRACK                        FMU
   B2=IB(B3) AND 0077             * EXTRACT SECTOR                       FMU
   MSG 4 (B0,B1,B2) TO LINE B5    * ASSUME SECTOR FLAW                   FMU
   IF (IB(B7) EQ 1) GOTO 60       * IF SECTOR FLAW                       FMU
   MSG 5 (B0,B1,B2) TO LINE B5    * ASSUME TRACK FLAW                    FMU
   IF (IB(B7) EQ 2) GOTO 60       * IF TRACK FLAW                        FMU
   MSG 6 (B0,B1,B2) TO LINE B5    * ERROR SECTOR                         FMU
60 B7=B7+2                        * INCREMENT IB INDEX                   FMU
   B5=B5+1                        * NEXT LINE                            FMU
   IF (B7 LT 500) GOTO 46         * IF NOT END OF IB                     FMU
64 IF (WC LT B6) RETURN           * IF MORE CYLINDERS 
   MSG 7 TO LINE B5               * END OF LIST                          FMU
   B5=B5+2                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
   RETURN                                                                FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU12, FMDFT, (07), LOCK
*** 5.2.16 FMU12 - VERIFY 885-1X UTILITY MAPS 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU12 COMPARES THE UTILITY FLAW MAPS WITH ACTUAL SKIPPED 
*          SECTORS AND FLAWED TRACKS ON THE DISK.  ANY DIFFERENCES ARE   FMU
*          DISPLAYED.                                                    FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU12 BEGINS WITH CYLINDER 0.  THE FLAW MAPS ARE READ AND
*          ALL FLAWS IN THIS CYLINDER ARE SAVED ON THE OUTPUT BUFFER.    FMU
*          THE CYLINDER IS THEN SCANNED AND THE LIST OF FLAWS IS READ    FMU
*          FROM THE CHANNEL BUFFER TO THE INPUT BUFFER.  SUBMODULE       FMU
*          FMU12A IS CALLED TO COMPARE THE DATA IN THE INPUT AND OUTPUT 
*          BUFFERS.  THIS PROCESS IS REPEATED FOR EACH CYLINDER.         FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU12 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE 
*          EXEUCTION.                                                    FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU12 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY THE OTHER MODULES.                            FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU12 CALLS SUBMODULE FMU12A TO COMPARE THE LIST OF SKIPPED
*          SECTORS IN THE INPUT BUFFER WITH THE FLAW MAP ENTRIES IN THE  FMU
*          OUTPUT BUFFER.                                                FMU
*          FMU12 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU12 USES REGISTERS B0, B3, B5, B6, B7, AND WC.  REGISTERS
*          ARE USED AS FOLLOWS--                                         FMU
*            B0 - MAP SECTOR NUMBER                                      FMU
*            B3 - OUTPUT BUFFER INDEX                                    FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - INPUT BUFFER INDEX                                     FMU
*            B7 - INPUT BUFFER INDEX                                     FMU
*            WC - CYLINDER                                               FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU12 USES THE INPUT BUFFER FOR HOLDING THE LIST OF SKIPPED
*          SECTORS FOUND BY THE SCAN COMMAND.  THE OUTPUT BUFFER IS      FMU
*          USED FOR HOLDING THE LIST OF SECTORS FROM THE FLAW MAPS.      FMU
*                                                                        FMU
*                                                                        FMU
/  - VERIFY 885-1X UTILITY MAPS - 
/                                                                        FMU
1  FORMAT VERIFY 885-1X UTILITY MAPS - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER = *OCT                                                FMU
3  FORMAT VERIFY COMPLETE                                                FMU
4  FORMAT CY=*OCT,  TR=*O   MAP TRACK NOT IN FLAW MAP                    FMU
5  FORMAT ABORT - CYLINDER FLAW CAPACITY EXCEEDED                        FMU
6  FORMAT                                                                FMU
7  FORMAT THIS MODULE RUNS FOR 32 MINUTES.
15 FORMAT FMU12 VERIFY CY *OCT
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
   EQUATE MAXCYL TO 842D                                                 FMU
20 BLANK                                                                 FMU
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2                                FMU
   MSG 1 (SB(61),SB(62),SB(63)) TO PRINT
   B5=4                           * DISPLAY INDEX                        FMU
   WC=0                           * CYLINDER                             FMU
   MSG 15 (WC) TO DISPLAY                                                FMU
   IF(ES.AND.TM.NE.0) MSG 7 TO PRINT
/                                                                        FMU
/  FIND ALL MAP ENTRIES FOR CYLINDER WC                                  FMU
22 B3=0                           * OB INDEX                             FMU
   B0=1                           * SET SECTOR                           FMU
23 RES DRIVE, ABT 74                                                     FMU
   GET UTILITY SECTOR B0, ABT 74  * READ UTILITY SECTOR                  FMU
   B7=0                           * SET IB INDEX                         FMU
30 B6=B7+1                                                               FMU
   IF (IB(B7) AND 4000 EQ 0) GOTO 60   * IF END OF FLAW MAP              FMU
   IF (IB(B7) AND 1777 EQ WC) GOTO 50  * IF FLAW IN THIS CY 
32 B7=B7+2                        * INCREMENT IB INDEX                   FMU
   IF (B7 LT 240D) GOTO 30        * IF MORE FLAWS                        FMU
34 B0=B0+1                        * NEXT SECTOR                          FMU
   IF (B0 LE 18D) GOTO 23         * IF MORE SECTORS                      FMU
40 OB(B3)=0                       * SET END OF TABLE                     FMU
   B0=0                           * SET TRACK AND SECTOR                 FMU
/                                                                        FMU
/  SCAN CYLINDER AND COMPARE FLAWS                                       FMU
   RES DRIVE, ABT 74                                                     FMU
   SEEK CYL WC TRK B0 SEC B0, ABT 74   * SEEK                            FMU
   SCAN, ABT 74                   * SCAN CYLINDER                        FMU
   MSG 2 (WC) TO LINE B5                                                 FMU
42 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS               FMU001A
   IF (SB AND 2 NE 0) GOTO 42     * IF BUSY                              FMU
   READCB, ABT 74                 * READ BUFFER                          FMU
   MSG 15 (WC) TO DISPLAY                                                FMU
   CALL 12A                       * COMPARE 
   IF (WC EQ 841D) GOTO 62        * IF MAP CYLINDER                      FMU
44 WC=WC+1                        * NEXT CYLINDER                        FMU
   IF (WC LE MAXCYL) GOTO 22      * IF MORE CYLINDERS                    FMU
   MSG 6 TO LINE B5                                                      FMU
   B5=B5+1                                                               FMU
   MSG 3 TO LINE B5               * VERIFY COMPLETE                      FMU
47 B5=B5+2                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
/                                                                        FMU
/  SAVE FLAW FROM MAP IN OB                                              FMU
50 IF (B3 LT 500) GOTO 52         * IF OB NOT FULL                       FMU
   MSG 5 TO LINE B5                                                      FMU
   GOTO 47                        * ABORT IF TOO MANY FLAWS              FMU
52 OB(B3)=1                       * SET SECTOR FLAW                      FMU
   IF (B0 EQ 1) OB(B3)=2          * IF TRACK FLAW                        FMU
   B3=B3+1                                                               FMU
   OB(B3)=IB(B6)                  * SAVE TRACK AND SECTOR                FMU
   B3=B3+1                        * INCREMENT OB INDEX                   FMU
   GOTO 32                        * CONTINUE                             FMU
60 IF (B0 EQ 1) GOTO 34           * IF TRACK FLAW MAP                    FMU
   GOTO 40                                                               FMU
/                                                                        FMU
/  CHECK THAT MAP TRACKS ARE FLAWED                                      FMU
62 B2=0                           * SET TRACK NUMBER                     FMU
63 B3=0                           * RESET OB INDEX                       FMU
64 IF (OB(B3) EQ 0) GOTO 70       * IF NO FLAW IN MAP                    FMU
   IF (OB(B3) NE 2) GOTO 66       * IF NOT TRACK FLAW                    FMU
   B3=B3+1                        * INCREMENT OB INDEX                   FMU
   IF (OB(B3) RS 6 NE B2) GOTO 67      * IF NOT MAP TRACK                FMU
65 B2=B2+1                        * NEXT TRACK                           FMU
   IF (B2 EQ 1) GOTO 63           * IF NOT DONE CHECKING                 FMU
   GOTO 44                        * CHECKING COMPLETE                    FMU
66 B3=B3+1                                                               FMU
67 B3=B3+1                                                               FMU
   IF (B3 LT 500) GOTO 64         * IF MORE TO CHECK                     FMU
70 IF (B5 LE 33D) GOTO 72         * IF DISPLAY NOT FULL                  FMU
   MSG 6 TO LINE B5                                                      FMU
   PICTURE                                                               FMU
71 B5=B5-1                        * CLEAR DISPLAY                        FMU
   MSG 6 TO LINE B5                                                      FMU
   IF (B5 GT 4) GOTO 71           * IF NOT DONE CLEARING                 FMU
72 MSG 4 (WC,B2) TO LINE B5       * MAP TRACK NOT IN FLAW MAP            FMU
   B5=B5+1                        * INCREMENT DISPLAY LINE               FMU
   GOTO 65                        * CONTINUE                             FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU12A, FMDFT, (07), LOCK 
*** 5.2.17 FMU12A - COMPARE AND DISPLAY ERRORS (SUBROUTINE) 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU12A COMPARES THE SKIPPED SECTORS AND FLAWED TRACKS IN ONE 
*          CYLINDER WITH THE FLAW MAPS.                                  FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU12A IS A SUBMODULE CALLED BY MODULE FMU12.
*          FMU12A FIRST CHECKS TO SEE THAT ALL OF THE SKIPPED SECTORS 
*          AND FLAWED TRACKS LISTED IN THE INPUT BUFFER HAVE A           FMU
*          CORRESPONDING ENTRY IN THE UTILITY FLAW MAPS LISTED IN THE    FMU
*          OUTPUT BUFFER.  A CHECK IS MADE TO SEE IF ALL OF THE          FMU
*          FLAW MAP ENTRIES HAVE A CORRESPONDING SKIPPED SECTOR OR       FMU
*          FLAWED TRACK.  FMU12A DISPLAYS ANY DIFFERENCES BETWEEN THE 
*          TWO LISTS.  AFTER COMPARING THE LISTS FOR ONE CYLINDER        FMU
*          FMU12A RETURNS TO FMU12. 
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU12A ASSUMES THAT DATA TO BE COMPARED IS IN THE INPUT AND
*          OUTPUT BUFFERS.                                               FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU12A MODIFIES REGISTER B5 AS DIFFERENCES BETWEEN THE LISTS 
*          ARE ADDED TO THE DISPLAY.  WHEN THE LISTS HAVE BEEN COMPARED  FMU
*          FMU12A RETURNS FMU12.
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU12A DOES NOT CALL ANY SUBMODULES. 
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU12A USES REGISTERS B0, B1, AND B3 TO B7.  REGISTERS ARE 
*          USED AS FOLLOWS--                                             FMU
*            B0 - SECTOR                                                 FMU
*            B1 - TRACK                                                  FMU
*            B3 - OUTPUT BUFFER INDEX                                    FMU
*            B4 - OUTPUT BUFFER INDEX                                    FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - INPUT BUFFER INDEX                                     FMU
*            B7 - INPUT BUFFER INDEX                                     FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU12A ASSUMES THAT THE INPUT BUFFER CONTAINS A LIST OF
*          SKIPPED SECTORS AND FLAWED TRACKS.  THE OUTPUT BUFFER IS      FMU
*          ASSUMED TO CONTAIN A LIST OF THE FLAW MAP ENTRIES FOR THE     FMU
*          CURRENT CYLINDER.                                             FMU
*                                                                        FMU
*                                                                        FMU
/  - COMPARE AND DISPLAY ERRORS (SUBROUTINE) -                           FMU
/                                                                        FMU
1  FORMAT                                                                FMU
2  FORMAT CY=*OCT,  TR=*O,  SE=*O  SKIPPED BUT NOT IN MAP                FMU
3  FORMAT CY=*OCT,  TR=*O,  SE=*O  IN MAP BUT NOT SKIPPED                FMU
4  FORMAT CY=*OCT,  TR=*O   TRACK FLAW SET BUT NOT IN MAP                FMU
5  FORMAT CY=*OCT,  TR=*O   TRACK FLAW IN MAP BUT NOT SET                FMU
/                                                                        FMU
/  CHECK FOR SECTOR SKIPPED (IB) BUT NOT IN MAP (OB)                     FMU
20 B7=0                           * SET IB INDEX                         FMU
22 B6=B7+1                                                               FMU
   B4=0                           * SET OB INDEX                         FMU
24 B3=B4+1                                                               FMU
   IF (IB(B7) EQ 0) GOTO 40       * IF END OF IB                         FMU
   IF (OB(B4) EQ 0) GOTO 30       * IF END OF OB                         FMU
   IF (IB(B6) NE OB(B3)) GOTO 26  * IF IB AND OB DIFFER                  FMU
   IF (IB(B7) EQ OB(B4)) GOTO 37  * IF IB AND OB ARE SAME                FMU
26 B4=B4+2                        * INCREMENT OB INDEX                   FMU
   IF (B4 LT 500) GOTO 24         * IF NOT END OF OB                     FMU
30 IF (B5 LE 33D) GOTO 34         * IF DISPLAY NOT FULL                  FMU
   MSG 1 TO LINE B5                                                      FMU
   PICTURE                                                               FMU
32 B5=B5-1                        * CLEAR DISPLAY                        FMU
   MSG 1 TO LINE B5                                                      FMU
   IF (B5 GT 4) GOTO 32           * IF NOT DONE CLEARING                 FMU
34 B1=IB(B6) RS 6                 * EXTRACT TRACK                        FMU
   B0=IB(B6) AND 0077             * EXTRACT SECTOR                       FMU
   MSG 2 (WC,B1,B0) TO LINE B5                                           FMU
   IF (IB(B7) EQ 1) GOTO 35       * IF SECTOR FLAW                       FMU
   MSG 4 (WC,B1) TO LINE B5                                              FMU
35 B5=B5+1                        * INCREMENT LINE COUNT                 FMU
37 B7=B7+2                        * INCREMENT IB INDEX                   FMU
   IF (B7 LT 500) GOTO 22         * IF NOT END OF IB                     FMU
/                                                                        FMU
/  CHECK FOR SECTOR IN MAP (OB) BUT NOT SKIPPED (IB)                     FMU
40 B4=0                           * RESET OB INDEX                       FMU
42 B3=B4+1                                                               FMU
   B7=0                           * RESET IB INDEX                       FMU
44 B6=B7+1                                                               FMU
   IF (OB(B4) EQ 0) EXIT          * IF END OF OB                         FMU
   IF (IB(B7) EQ 0) GOTO 50       * IF NOT FLAWED                        FMU
   IF (OB(B3) NE IB(B6)) GOTO 46  * IF OB AND IB DIFFER                  FMU
   IF (OB(B4) EQ IB(B7)) GOTO 57  * IF OB AND IB ARE SAME                FMU
46 B7=B7+2                        * INCREMENT IB INDEX                   FMU
   IF (B7 LT 500) GOTO 44                                                FMU
50 IF (WC NE 841D) GOTO 51        * IF NOT MAP TRACK                     FMU
   IF (OB(B4) NE 2) GOTO 51       * IF NOT TRACK FLAW                    FMU
   IF (OB(B3) RS 6 LE 1) GOTO 57  * IF TRACK 0 OR 1                      FMU
51 IF (B5 LE 33D) GOTO 54         * IF DISPLAY NOT FULL                  FMU
   MSG 1 TO LINE B5                                                      FMU
   PICTURE                                                               FMU
52 B5=B5-1                        * CLEAR DISPLAY                        FMU
   MSG 1 TO LINE B5                                                      FMU
   IF (B5 GT 4) GOTO 52           * IF NOT DONE CLEARING                 FMU
54 B1=OB(B3) RS 6                 * EXTRACT TRACK                        FMU
   B0=OB(B3) AND 0077             * EXTRACT SECTOR                       FMU
   MSG 3 (WC,B1,B0) TO LINE B5                                           FMU
   IF (OB(B4) EQ 1) GOTO 55       * IF SECTOR FLAW                       FMU
   MSG 5 (WC,B1) TO LINE B5                                              FMU
55 B5=B5+1                        * INCREMENT DISPLAY LINE               FMU
57 B4=B4+2                        * INCREMENT OB INDEX                   FMU
   IF (B4 LT 500) GOTO 42         * IF NOT END OF OB                     FMU
   EXIT                                                                  FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU13, FMDFT, (07), LOCK
*** 5.2.18 FMU13 - ARCHIVE 885-1X FLAW MAPS 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU13 READS THE FACTORY AND/OR UTILITY FLAW TABLES FROM THE
*          DISK AND WRITES THEM TO THE SYSTEM SCRATCH FILE.              FMU
*                                                                        FMU
*          METHOD                                                        FMU
*          FMU13  STARTS BY READING THE FACTORY  OR  UTILITY FLAW TABLES
*          ONE SECTOR AT A TIME DEPENDING ON  P5.   AFTER EACH SECTOR IS
*          READ  IT IS COPIED TO THE  SYSTEM  SCRATCH  FILE.  THUS, EACH
*          SECTOR OF THE FLAW MAPS  BECOMES  ONE  RECORD  ON THE SCRATCH
*          FILE.  THIS PROCESS CONTINUES UNTIL SECTORS  0  TO  18 OF THE
*          FACTORY OR UTILITY MAP TRACK HAVE BEEN COPIED TO THE  SCRATCH
*          FILE. IF P5 EQUALS  ZERO  FMU13 THEN READS SECTORS 0 TO 18 OF
*          UTILITY MAP TRACK AND COPIES THEM TO THE SCRATCH FILE.  IF P5
*          EQUALS 0001 THE FACTORY MAPS ARE ARCHIVED TWICE. IF P5 EQUALS
*          0002 THE UTILITY MAPS ARE ARCHIVED TWICE. UPON COMPLETION THE
*          SCRATCH FILE WILL HAVE 36 RECORDS CONTAINING ALL THE DATA FOR
*          BOTH THE FACTORY AND/OR UTILITY FLAW TABLES. 
* 
*          ENTRY-                                                        FMU
*          FMU13 USES PARAMETER P5 TO INDICATE WHETHER THE FACTORY
*          AND/OR THE UTILITY MAPS ARE TO BE ARCHIVED. PARAMETER
*          VALUES ARE SHOWN BELOW-- 
*            P5 = 0000 ARCHIVE BOTH FACTORY AND UTILITY MAPS
*            P5 = 0001 ARCHIVE ONLY THE FACTORY MAPS
*            P5 = 0002 ARCHIVE ONLY THE UTILITY MAPS
*IF -DEF,CMSE17X,4
*          IF IT IS DESIRED TO ARCHIVE  THE  FLAW  TABLES TO TAPE THIS
*          MAY BE DONE BY COPYING THE SCRATCH FILE TO TAPE AFTER MALET
*          EXECUTION OR BY REQUESTING  THE  TAPE  AS  THE SCRATCH FILE
*          BEFORE EXECUTING MALET.
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU13 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU13 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF A 
*          FUNCTION TO THE DRIVE IS ABORTED.                             FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU13 USES REGISTERS B4, B5, B6 AND WC. REGISTERS ARE USED AS
*          FOLLOWS--                                                     FMU
*            B4 - COUNTER FOR NUMBER OF ARCHIVES
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - MESSAGE NUMBER FOR DISPLAY
*            WC - SECTOR                                                 FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU13 USES THE INPUT BUFFER FOR FLAW TABLE READ FROM THE 
*          DISK.  THE OUTPUT BUFFER IS USED TO WRITE THE TABLES TO THE   FMU
*          SCRATCH FILE.                                                 FMU
*                                                                        FMU
*                                                                        FMU
/  - ARCHIVE 885-1X FLAW MAPS - 
/                                                                        FMU
1  FORMAT ARCHIVE 885-1X FLAW MAPS - CH=*O, EQ=*O, UN=*O
2  FORMAT FACTORY AND UTILITY MAPS ARCHIVED ON SCRATCH FILE 
3  FORMAT FACTORY MAPS ONLY ARCHIVED ON SCRATCH FILE
4  FORMAT UTILITY MAPS ONLY ARCHIVED ON SCRATCH FILE
15 FORMAT MODULE FMU13
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU13 PAUSE - ARCHIVE 885-1X MAPS 
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2                                FMU
   MSG 17 TO DISPLAY,PRINT
   PAUSE                                                                 FMU
   B5=3                           * SET DISPLAY LINE                     FMU
   SYSREW                         * REWIND SYSTEM FILE                   FMU
30 WC=0                           * SET SECTOR                           FMU
   B6 = P5 + 2
   IF(P5.EQ.2) GOTO 36       *ARCHIVE FROM UTILITY ONLY 
31 RES DRIVE, ABT 74                                                     FMU
   GET FACTORY SECTOR WC, ABT 74  * READ FACTORY MAPS                    FMU
   COPY IB TO OB FOR 502                                                 FMU
   SYSWR                          * WRITE FILE                           FMU
   WC=WC+1                        * NEXT SECTOR                          FMU
   IF (WC LE 18D) GOTO 31         * IF MORE SECTORS                      FMU
   IF(P5.EQ.0) GOTO 34       *ARCHIVE BOTH FACTORY AND UTILITY
   GOTO 30 WHILE(B4+1.LE.1)  *READ FACTORY TWICE
   GOTO 40
34 WC = 0        *RESET SECTOR
36 RES DRIVE, ABT 74                                                     FMU
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY MAPS                    FMU
   COPY IB TO OB FOR 502                                                 FMU
   SYSWR                          * WRITE FILE                           FMU
   WC=WC+1                        * NEXT SECTOR                          FMU
   IF (WC LE 18D) GOTO 36         * IF MORE SECTORS                      FMU
   IF(P5.EQ.0) GOTO 40       *BOTH ARCHIVED EXIT
   GOTO 34 WHILE(B4+1.LE.1)  *READ UTILITY TWICE
40 MSG B6 TO LINE 4          *POST ARCHIVE MESSAGE
   MSG 16 TO LINE 6                                                      FMU
   PICTURE                                                               FMU
   SYSREW                         * REWIND SYSTEM FILE                   FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU14, FMDFT, (07), LOCK
*** 5.2.19 FMU14 - RESTORE 885-1X UTILITY MAPS
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU14 COPIES ARCHIVED FACTORY FLAW MAPS OR UTILITY FLAW MAPS 
*          FROM THE SYSTEM SCRATCH FILE TO THE UTILITY FLAW MAP TRACK.   FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU14 READS EITHER THE FACTORY MAPS OR THE UTILITY MAPS FROM 
*          THE SCRATCH FILE.  EACH RECORD ON THE FILE CONTAINS DATA FOR  FMU
*          ONE SECTOR OF THE MAPS.  AFTER READING EACH RECORD IT IS      FMU
*          COPIED TO THE UTILITY MAP TRACK ON THE DISK.  THIS PROCESS IS FMU
*          CONTINUED UNTIL SECTORS 0 TO 18 OF CYLINDER 841, TRACK 1      FMU
*          HAVE BEEN WRITTEN.                                            FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU14 ASSUMES THAT THE SCRATCH FILE CONTAINS 38 RECORDS
*          CORRESPONDING TO THE 19 SECTORS OF THE FACTORY MAPS AND THE   FMU
*          19 SECTORS OF THE UTILITY MAPS.  IT IS ALSO ASSUMED THAT THE  FMU
*          FIRST 19 RECORDS ARE THE FACTORY MAPS.  PARAMETER P5 MUST BE  FMU
*          SET TO INDICATE WHICH MAPS TO USE.  PARAMETER DEFINITION AND  FMU
*          ALLOWED VALUES ARE AS FOLLOWS--                               FMU
*            P5 = 0 - USE ARCHIVED UTILITY FLAW TABLES                   FMU
*                 1 - USE ARCHIVED FACTORY FLAW TABLES                   FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU14 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU14 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF A 
*          FUNCTION TO THE DRIVE IS ABORTED.                             FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU14 USES REGISTERS B0, B1, B5, B7, AND WC.  REGISTERS ARE
*          USED AS FOLLOWS--                                             FMU
*            B0 - CYLINDER 841                                           FMU
*            B1 - TRACK 1                                                FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B7 - STATUS OF SYSRD                                        FMU
*            WC - SECTOR (0 TO 18)                                       FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU14 USES THE INPUT BUFFER FOR THE DATA READ FROM THE 
*          SCRATCH FILE AND THE OUTPUT BUFFER FOR DATA WRITTEN TO THE    FMU
*          UTILITY FLAW MAP SECTORS.                                     FMU
*                                                                        FMU
*                                                                        FMU
/  - RESTORE 885-1X UTILITY MAPS -
/                                                                        FMU
1  FORMAT RESTORE UTILITY MAPS FROM ARCHIVED                             FMU
2  FORMAT    FACTORY MAPS (SCRATCH FILE)                                 FMU
3  FORMAT    UTILITY MAPS (SCRATCH FILE)                                 FMU
4  FORMAT ILLEGAL PARAMETER P5                                           FMU
6  FORMAT UTILITY MAPS WRITTEN FROM SYSTEM FILE                          FMU
7  FORMAT 885-1X DRIVE - CH=*O, EQ=*O, UN=*O
10 FORMAT    DISK S/N = *HE*HE                                           FMU
11 FORMAT ARCHIVE S/N = *HE*HE                                           FMU
14 FORMAT ABORT - SCRATCH FILE ERROR                                     FMU
15 FORMAT MODULE FMU14
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU14 PAUSE - RESTORE 885-1X UTILITY MAPS 
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   SYSREW                                                                FMU
   MSG 1 TO LINE 2                                                       FMU
   MSG 2 TO LINE 3                                                       FMU
   MSG 7 (SB(61),SB(62),SB(63)) TO LINE 4                                FMU
   B5=5                           * SET DISPLAY LINE                     FMU
   RES DRIVE, ABT 74                                                     FMU
   GET SERIAL, ABT 74             * READ DRIVE S/N                       FMU
   COPY IB TO OB FOR 502                                                 FMU
   SYSRD, STATUS TO B7            * READ ARCHIVE S/N                     FMU
   IF (B7 NE 0) GOTO 70           * IF ERROR                             FMU
   SYSREW                                                                FMU
   MSG 10 (OB(0),OB(1)) TO LINE 5                                        FMU
   MSG 11 (IB(0),IB(1)) TO LINE 6                                        FMU
   IF (P5 EQ 1) GOTO 26           * IF FACTORY MAPS                      FMU
   IF (P5 EQ 0) GOTO 24           * IF UTILITY MAPS                      FMU
   MSG 4 TO LINE 10               * ILLEGAL PARAMETER                    FMU
   MSG 16 TO LINE 12                                                     FMU
   PICTURE                                                               FMU
   GOTO 77                        * ERROR STOP                           FMU
24 MSG 3 TO LINE 3                                                       FMU
   WC=0                           * SET SECTOR                           FMU
25 SYSRD, STATUS TO B7            * SKIP FACTORY MAPS                    FMU
   IF (B7 NE 0) GOTO 70           * IF ERROR                             FMU
   WC=WC+1                        * NEXT SECTOR                          FMU
   IF (WC LE 18D) GOTO 25         * IF MORE SECTORS                      FMU
26 MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=7                           * SET DISPLAY LINE                     FMU
   WC=0                           * SET SECTOR                           FMU
   B0=841D                        * SET CYLINDER                         FMU
   B1=1                           * SET TRACK                            FMU
30 SYSRD, STATUS TO B7            * READ ARCHIVE                         FMU
   IF (B7 NE 0) GOTO 70           * IF ERROR                             FMU
   COPY IB TO OB FOR 500          * SET OUTPUT BUFFER                    FMU
   OB(500)=0                                                             FMU
   OB(501)=0                                                             FMU
   RES DRIVE, ABT 74                                                     FMU
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR          FMU
   WC=WC+1                        * NEXT SECTOR                          FMU
   IF (WC LE 18D) GOTO 30         * IF MORE SECTORS                      FMU
   MSG 6 TO LINE 10                                                      FMU
34 MSG 16 TO LINE 12                                                     FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
70 MSG 14 TO LINE 10              * SYSRD ERROR                          FMU
   GOTO 34                                                               FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU15,FMDFT(07), LOCK 
*** 5.2.20 FMU15 - COPY CONTROLWARE TO 885-1X DRIVE 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU15 COPIES 7155-1/1X CONTROLWARE FROM THE SYSTEM SCRATCH 
*          FILE TO THE 885-1X DISK. 
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU15 USES A SUBROUTINE TO READ ONE SYSTEM FILE AND PACK IT
*          IN THE INPUT BUFFER.  THE PACKED INPUT BUFFER IS THEN COPIED  FMU
*          TO THE OUTPUT BUFFER ONE WORD AT A TIME.  WHEN THE OUTPUT     FMU
*          BUFFER IS FULL, FMU15 CALLS SUBMODULE FMU15A TO WRITE THE
*          SECTOR TO DISK.  THIS SUBMODULE WILL TERMINATE WHEN THE LAST  FMU
*          SECTOR HAS BEEN WRITTEN.  WHEN THE LAST WORD OF THE INPUT     FMU
*          BUFFER HAS BEEN MOVED TO THE OUTPUT BUFFER, FMU15 READS
*          ANOTHER SYSTEM FILE, PACKS IT, AND THE ABOVE PROCESS          FMU
*          CONTINUES UNTIL ALL OF THE CONTROLWARE HAS BEEN COPIED TO     FMU
*          DISK.                                                         FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU15 ASSUMES THAT THE SCRATCH FILE CONTAINS THE CONTROLWARE 
*          TO BE COPIED TO THE DISK.
*          FMU15 ALSO REQUIRES TRACK 2 OF THE MAP CYLINDER TO BE FLAWED.
*          IF IT IS NOT FLAWED, RUN MODULE FMU04 TO SET DEFECTIVE 
*          SECTORS AT CYLINDER 1511 TRACK 2, SECTORS 41, 40, AND 37.     FMU
*IF DEF,CMSE17X,5 
*          THE CMSE SCRATCH FILE CAN BE CREATED AS FOLLOWS--             FMU
*            1. CR,ON.        TO TURN CARD READER ON                     FMU
*            2. LC,10000.     TO READ CONTROLWARE TO CM                  FMU
*            3. *WC,SCRACH,10000,15514 FOR MA721 VERSIONS 1-5 
*               *WC,SCRACH,10000,16456 FOR MA721 VERSIONS 6-X 
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU15 TERMINATES IN SUBMODULE FMU15A WITH AN END STATEMENT.
*          REGISTER CONTENTS ARE NOT USED BY OTHER MODULES.              FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU15 CALLS SUBMODULE FMU15A TO WRITE EACH SECTOR OF 
*          CONTROLWARE TO THE DISK.                                      FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU15 USES REGISTERS B0 TO B8, BA, AND WC.  REGISTERS ARE
*          USED AS FOLLOWS--                                             FMU
*            B0 - CYLINDER                                               FMU
*            B1 - TRACK                                                  FMU
*            B2 - SECTOR                                                 FMU
*            B3 - COUNTER FOR PACKED INPUT BUFFER DATA                   FMU
*            B4 - COUNTER FOR OUTPUT BUFFER DATA                         FMU
*            B5 - SYSRD COUNTER                                          FMU
*            B6 - STATUS OF SYSRD                                        FMU
*            B7 - INPUT BUFFER PACKING METHOD                            FMU
*            B8 - LENGTH OF PACKED INPUT BUFFER 
*            B9 - NONZERO IF CONTROLWARE IS LONGER LENGTH 
*            B11- NONZERO IF CONTROLWARE HAS 77-TABLE 
*            B12- EXPECTED LENGTH OF LAST SYSRD 
*            BA - POINTER TO PACKED INPUT BUFFER DATA                    FMU
*            WC - POINTER TO UNPACKED BUFFER DATA                        FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU15 USES THE INPUT BUFFER FOR CONTROLWARE READ FROM THE
*          SYSTEM SCRATCH FILE.  THE OUTPUT BUFFER IS USED FOR WRITING   FMU
*          CONTROLWARE TO THE DISK SECTOR.  EACH SECTOR CONTAINS 3856    FMU
*          BITS OF DATA FOLLOWED BY 8 UNUSED BITS.                       FMU
*                                                                        FMU
*                                                                        FMU
/  - COPY 7155-1/1X CONTROLWARE TO 885-1X - 
/                                                                        FMU
1  FORMAT FMU15 COPY 7155-1/1X CONTROLWARE TO 885-1X
2  FORMAT       CHANNEL *O    UNIT *O                                    FMU
3  FORMAT CONTROLWARE DECK WRONG LENGTH                                  FMU
4  FORMAT SYSRD EXPECTED IS 45D REM *DED WORDS
5  FORMAT        ACTUAL IS *DEC  REM *DEC                                FMU
6  FORMAT  SYSRD EXPECTED IS 52D REM *DED WORDS 
20 BLANK                                                                 FMU
   MSG 1 TO DISPLAY, PRINT
   MSG 1 TO LINE 5                                                       FMU
   MSG 2 (SB(61),SB(63)) TO LINE 7                                       FMU
   IF(ES.AND.TM.NE.0)MSG 2 (SB(61),SB(63)) TO PRINT 
   B0=1511                        * STARTING CYLINDER                    FMU
   B1=2                           * STARTING TRACK                       FMU
   B2=1                           * STARTING SECTOR                      FMU
   SYSREW                                                                FMU
   GOSUB 40                       * SYSRD AND PACK IT                    FMU
22 COPY IB(B3) TO OB(B4) FOR 1                                           FMU
   IF (B4 NE 501) GOTO 24         * IF OB NOT FULL                       FMU
   CALL 15A                       * WRITE ONE SECTOR
   IF (B3 EQ 325) GOTO 26         * IF IB FULL                           FMU
   IF (B7 EQ 0) GOTO 30           * IF IB ON WORD BOUNDARY               FMU
   GOTO 32                                                               FMU
24 IF (B3 NE B8) GOTO 30          * IF IB NOT FULL
26 GOSUB 40                       * SYSRD AND PACK IT                    FMU
   IF (B7 NE 1) GOTO 22           * IF OB(B4) NOT FILLED                 FMU
   GOTO 32                                                               FMU
30 B3=B3+1                        * INCREMENT IB POINTER                 FMU
32 IF (B4 NE 501) GOTO 34         * TO INCREMENT OB POINTER              FMU
   B4=0                                                                  FMU
   GOTO 22                                                               FMU
34 B4=B4+1                        * INCREMENT OB POINTER                 FMU
   GOTO 22                                                               FMU
*                                                                        FMU
*   DESCRIPTION                                                          FMU
/         SYSRD ONE BLOCK AND PACK IT SUBROUTINE                         FMU
/                                                                        FMU
*         1.  SYSRD ONE BLOCK FROM THE SCRATCH FILE AND INSURE           FMU
*             THE FILE HAS THE CORRECT NUMBER OF WORDS.                  FMU
*         2.  DETERMINE THE PACKING METHOD.                              FMU
*             A.  IF B7 = 0 PACK IB(0) THROUGH IB(500) INTO IB(0)        FMU
*                 THROUGH IB(325).                                       FMU
*             B.  IF B7 = 1 PACK IB(0) THROUGH IB(500) INTO IB(0)        FMU
*                 THROUGH IB(325), RIGHT SHIFT THE PACKED DATA BY        FMU
*                 4 AND RESTORE IB(0) BITS 8-11 FROM THE OUTPUT BUFFER.  FMU
*             C.  IB B7 = 2 PACK IB(0) THROUGH IB(500) INTO IB(0)        FMU
*                 THROUGH IB(325), RIGHT SHIFT THE PACKED DATA BY 8      FMU
*                 AND RESTORE IB(0) BITS 4-11 FROM THE OUTPUT BUFFER.    FMU
*         3.  UPDATE PACKING METHOD (B7 = B7 +1 MODULO 3) AND RETURN.    FMU
*                                                                        FMU
40 B3=0                           * SET COUNTER FOR IB DATA              FMU
   SYSRD, STATUS TO B6                                                   FMU
   IF (B9 EQ 0) GOTO 41           * IF SHORT CONTROLWARE LENGTH 
   IF (B5 NE 52D) GOTO 42         * IF NOT LAST SYSRD 
   IB(WT) = 0 
   B12 = 230D                     * REM W/O 77-TABLE
   IF (B11 NE 0) B12 = 310D       * REM W/77-TABLE
   IF (WT EQ B12) GOTO 43         * IF LAST SYSRD OK
   GOTO 70                        * DECK IS WRONG LENGTH
41 IF (B5 NE 45D) GOTO 42         * IF NOT LAST SYSRD 
   IB(WT) = 0 
   B12 = 60D                      * REM W/O 77-TABLE
   IF (B11 NE 0) B12 = 140D       * REM W/77-TABLE
   IF (WT EQ B12) GOTO 43         * IF LAST SYSRD OK
   GOTO 70                        * DECK IS WRONG LENGTH                 FMU
42 IF (B6 NE 0) GOTO 70           * IF DECK IS WRONG LENGTH              FMU
43 B5 = B5 + 1                    * SYSRD COUNTER 
   WC=0                           * PACKED POINTER                       FMU
   BA=0                           * UNPACKED IB POINTER                  FMU
   IB(500)=0                                                             FMU
   B8=325                         * SET NORMAL LENGTH 
   IF (B5 NE 1) GOTO 45           * IF NOT FIRST READ 
   B11 = 0                        * CLEAR 77-TABLE FLAG 
   IF (IB(0) NE 7700) GOTO 44     * IF NO 77-TABLE
   B11 = 1                        * SET 77-TABLE FLAG 
   BA=120                         * SKIP TABLE
   B8=237                         * SET SHORT LENGTH
44 IF (IB(BA+5) NE 11) GOTO 45    * IF SHORT CONTROLWARE LENGTH 
   B9 = 1 
45 IF (B7 NE 0) GOTO 50           * IF PACK AND SHIFT 4 OR 8
/         PACK THE INPUT BUFFER. (NO SHIFTING)                           FMU
46 IB(501)=IB(BA+1) RS 4          * PACK 24 BITS                         FMU
   IB(WC)=IB(BA) LS 4 XOR IB(501)                                        FMU
   IB(501)=IB(BA+1) AND 17 LS 10                                         FMU
   IB(WC+1)=IB(501) XOR IB(BA+2)                                         FMU
   BA=BA+3                        * INCREMENT UNPACKED POINTER           FMU
   WC=WC+2                        * INCREMENT PACKED POINTER             FMU
   IF (BA LT 500) GOTO 46         * IF MORE BITS TO PACK
   IF (B8 EQ 237) GOTO 64         * IF 77 TABLE SKIPPED 
   B7=B7+1                        * INCREMENT PACKING METHOD             FMU
   GOTO 64                                                               FMU
50 IF (B7 NE 1) GOTO 54           * IF PACK AND SHIFT 8                  FMU
/         PACK AND SHIFT IB RIGHT 4 BITS                                 FMU
   IB(502)=OB(B4) XOR IB(BA)                                             FMU
52 IB(WC)=IB(WC) XOR IB(BA)       * PACK 24 BITS                         FMU
   IB(WC+1)=IB(BA+1) LS 4                                                FMU
   IB(WC+1)=IB(BA+2) RS 4 XOR IB(WC+1)                                   FMU
   IB(WC+2)=IB(BA+2) AND 17 LS 10                                        FMU
   BA=BA+3                        * INCREMENT UNPACKED POINTER           FMU
   WC=WC+2                        * INCREMENT PACKED POINTER             FMU
   IF (BA NE 501) GOTO 52         * IF MORE BITS TO PACK                 FMU
   B7=B7+1                        * INCREMENT PACKING METHOD             FMU
   GOTO 60                                                               FMU
/         PACK AND SHIFT IB RIGHT 8 BITS                                 FMU
54 IB(502)=IB(0) RS 4 XOR OB(B4)                                         FMU
56 IB(501)=IB(BA) AND 17 LS 10                                           FMU
   IB(WC)=IB(BA) RS 4 XOR IB(WC)                                         FMU
   IB(WC+1)=IB(501) XOR IB(BA+1)                                         FMU
   IB(WC+2)=IB(BA+2) LS 4                                                FMU
   BA=BA+3                        * INCREMENT UNPACKED POINTER           FMU
   WC=WC+2                        * INCREMENT PACKED POINTER             FMU
   IF (BA NE 501) GOTO 56         * IF MORE BITS TO PACK                 FMU
   B7=0                           * UPDATE PACKING METHOD                FMU
60 IB(0)=IB(502)                                                         FMU
64 RETURN                                                                FMU
70 MSG 3 TO LINE 11                                                      FMU
   IF (B9 EQ 0) GOTO 74           * IF SHORT CONTROLWARE LENGTH 
   MSG 6 (B12) TO LINE 11 
   GOTO 76
74 MSG 4 (B12) TO LINE 13 
76 MSG 5 (B5,WT) TO LINE 14 
   PICTURE                                                               FMU
   END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU15A,FMDFT(07), LOCK
*** 5.2.21 FMU15A - WRITE CONTROLWARE TO 885-1X DISK (SUBROUTINE) 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU15A IS CALLED BY FMU15 TO WRITE ONE SECTOR OF CONTROLWARE 
*          TO THE DISK.  FMU15A ALSO PROVIDES A DISPLAY OF DETAILED 
*          STATUS IF AN ERROR OCCURS.                                    FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU15A WRITES ONE SECTOR USING THE WRITE PROTECTED SECTOR
*          COMMAND.  FMU15A THEN CHECKS TO SEE IF THE LAST SECTOR WAS 
*          WRITTEN.  THE LAST SECTOR IS SECTOR 36B AND IT CONTAINS 3856  FMU
*          DATA BITS AND 8 UNUSED BITS.  IF THE LAST SECTOR WAS WRITTEN  FMU
*          FMU15A DISPLAYS THE CONTROLWARE NUMBER AND REVISION
*          CONTAINED IN THE CONTROLWARE BINARY.  THE SUBMODULE THEN      FMU
*          TERMINATES WITH AN END STATEMENT.  IF THE SECTOR WRITTEN WAS  FMU
*          NOT THE LAST SECTOR FMU15A INCREMENTS THE SECTOR ADDRESS BY
*          1.  SINCE THE WRITE DOES NOT WRITE A MULTIPLE OF 12-BIT       FMU
*          WORDS THE INPUT BUFFER MUST BE SHIFTED BEFORE MORE WORDS CAN  FMU
*          BE COPIED FROM THE INPUT BUFFER TO THE OUTPUT BUFFER.  IF     FMU
*          THE PACKING METHOD IS 1 THE INPUT BUFFER IS RIGHT SHIFTED BY  FMU
*          8 BITS.  IF THE PACKING METHOD IS 0 OR 2 THE INPUT BUFFER IS  FMU
*          LEFT SHIFTED BY 4 BITS.  AFTER THE BUFFER HAS BEEN SHIFTED    FMU
*          THE PACKING METHOD IS DECREMENTED BY 1 AND FMU15A RETURNS TO 
*          FMU15. 
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU15A IS CALLED BY FMU15.  INITIALLY THE CYLINDER, TRACK, 
*          AND SECTOR ARE IN REGISTERS B0, B1, AND B2.  REGISTER B7      FMU
*          INITIALLY CONTAINS THE PACKING METHOD.                        FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU15A TERMINATES BY RETURNING TO FMU15 OR WITH AN END 
*          STATEMENT.  REGISTER B2 CONTAINS THE NUMBER FOR THE NEXT      FMU
*          SECTOR TO BE WRITTEN.  REGISTER B7 CONTAINS THE PACKING       FMU
*          METHOD.                                                       FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU15A DOES NOT CALL ANY SUBMODULES. 
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU15A USES REGISTERS B0, B1, B2, B7, AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--                                             FMU
*            B0 - CYLINDER TO WRITE CONTROLWARE                          FMU
*            B1 - TRACK                                                  FMU
*            B2 - SECTOR                                                 FMU
*            B7 - INPUT BUFFER PACKING METHOD                            FMU
*            B9 - NONZERO IF CONTROLWARE IS LONGER LENGTH 
*            WC - POINTER TO UNPACKED INPUT BUFFER DATA                  FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU15A USES THE INPUT BUFFER FOR CONTROLWARE READ FROM THE 
*          SYSTEM SCRATCH FILE.  THE OUTPUT BUFFER IS USED FOR WRITING   FMU
*          CONTROLWARE TO THE DISK SECTOR.                               FMU
*                                                                        FMU
*                                                                        FMU
/  - WRITE CONTROLWARE TO DISK (SUBROUTINE) -                            FMU
/                                                                        FMU
1  FORMAT FMU15A ABORT-EC=*OCT AT LINE *OCT,GS=*OCT,LF=*OCT 
2  FORMAT   COPY OF MA*H*H REV *D CONTROLWARE COMPLETE                   FMU
3  FORMAT                  DETAILED STATUS                               FMU
4  FORMAT  1 = *OCT  2 = *OCT  3 = *OCT  4 = *OCT  5 = *OCT              FMU
5  FORMAT  6 = *OCT  7 = *OCT  8 = *OCT  9 = *OCT 10 = *OCT              FMU
6  FORMAT 11 = *OCT 12 = *OCT 13 = *OCT 14 = *OCT 15 = *OCT              FMU
7  FORMAT 16 = *OCT 17 = *OCT 18 = *OCT 19 = *OCT 20 = *OCT              FMU
10 FORMAT ERROR - CYLINDER 1511B TRACK 2 NOT FLAWED                      FMU
15 FORMAT FMU15A WROTE SECTOR *O
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 IF (B9 EQ 0) GOTO 22           * IF SHORT CONTROLWARE LENGTH 
   IF (B2 NE 6) GOTO 22           * IF SECTOR NOT 6 
   B9 = B9 + 1                    * COUNT SECTORS NOT WRITTEN TO DISK 
   IF (B9 EQ 7) GOTO 22           * IF 5 SECTORS HAVE BEEN SKIPPED
   GOTO 23
22 RES DRIVE, ABT 70
   WRPRO CYL B0 TRK B1 SEC B2, ABT 60                                    FMU
   IF (B2 EQ 36) GOTO 50          * IF DONE                              FMU
   MSG 15 (B2) TO DISPLAY                                                FMU
   B2=B2+1                        * UPDATE SECTOR ADDRESS                FMU
23 IB(326) = 0
   WC=0                                                                  FMU
   IF (B7 EQ 1) GOTO 40           * TO RIGHT SHIFT IB 8 BITS             FMU
/         LEFT SHIFT INPUT BUFFER BY 4 BITS                              FMU
25 IB(WC)=IB(WC) AND 377 LS 4                                            FMU
   IB(WC)=IB(WC+1) RS 10 XOR IB(WC)                                      FMU
   IF (WC EQ 325) GOTO 30         * IF DONE SHIFTING                     FMU
   WC=WC+1                        * INCREMENT POINTER                    FMU
   GOTO 25                                                               FMU
30 IF (B7 EQ 0) GOTO 35           * TO DECREMENT PACKING METHOD          FMU
   B7=B7-1                        * DECREMENT PACKING METHOD             FMU
   EXIT                                                                  FMU
35 B7=2                                                                  FMU
   EXIT                                                                  FMU
/         RIGHT SHIFT IB BY 8 BITS                                       FMU
40 WC=324                                                                FMU
46 IB(501)=IB(WC) AND 377 LS 4                                           FMU
   IB(WC+1)=IB(WC+1) RS 10 XOR IB(501)                                   FMU
   IF (WC EQ 0) GOTO 30           * IF DONE SHIFTING                     FMU
   WC=WC-1                                                               FMU
   GOTO 46                                                               FMU
50 IB(0)=OB(500) RS 4                                                    FMU
   IB(1)=OB(500) AND 17 LS 4                                             FMU
   IB(1)=OB(501) RS 10 XOR IB(1)                                         FMU
   IB(2)=OB(475) RS 10                                                   FMU
   MSG 2 (IB(0),IB(1),IB(2)) TO LINE 11                                  FMU
   GOTO 74                                                               FMU
60 IF(SB(0) NE 5000) GOTO 70      * IF TRACK IS FLAWED                   FMU
   IF (SB(1) NE 10) GOTO 70       * IF TRACK IS FLAWED                   FMU
   IF (SB(5) AND 4000 NE 0) GOTO 70    * IF TRACK IS FLAWED              FMU
   MSG 10 TO LINE 11                                                     FMU
70 MSG 3 TO LINE 15                                                      FMU
   MSG 4, 5 WORDS FROM SB(1) TO LINE 16                                  FMU
   MSG 5, 5 WORDS FROM SB(6) TO LINE 17                                  FMU
   MSG 6, 5 WORDS FROM SB(13) TO LINE 20                                 FMU
   MSG 7, 5 WORDS FROM SB(20) TO LINE 21                                 FMU
   MSG 1 (EC,EA,SB,LF) TO LINE 13                                        FMU
   MSG EM TO LINE 23
74 PICTURE                                                               FMU
   END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU16, FMDFT, (07), LOCK
*** 5.2.22 FMU16 - READ 7155 CONTROLWARE REVISION (DC=7)
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU16 DISPLAYS THE REVISION NUMBER OF THE CONTROLWARE
*          CURRENTLY IN THE 7155 DISK CONTROLLER.                        FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU16 OBTAINS DETAILED STATUS AND EXTRACTS THE CONTROLWARE 
*          REVISION NUMBER FROM WORD 4.                                  FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU16 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE 
*          EXECUTION.                                                    FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU16 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU16 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU16 USES REGISTERS B0 AND B5.  REGISTERS ARE USED AS 
*          FOLLOWS--                                                     FMU
*            B0 - CONTROLWARE REVISION NUMBER                            FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU16 USES THE STATUS BUFFER FOR DETAILED STATUS READ FROM 
*          THE CONTROLLER.                                               FMU
*                                                                        FMU
*                                                                        FMU
/  - READ CONTROLWARE REVISION -                                         FMU
/                                                                        FMU
1  FORMAT CURRENT CONTROLWARE REVISION - CH=*O, EQ=*O                    FMU
2  FORMAT REVISION = *D                                                  FMU
15 FORMAT MODULE FMU16
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(61),SB(62)) TO LINE 2                                       FMU
   B5=3                           * SET DISPLAY LINE                     FMU
   RES CONTROLLER, ABT 74                                                FMU
   STATUS DETAIL, ABT 74          * REQUEST DETAILED STATUS              FMU
   REL, ABT 74                                                           FMU
   B0=SB(4) RS 6                  * EXTRACT REVISION                     FMU
   B0=B0 AND 17                                                          FMU
   MSG 2 (B0) TO LINE 4           * DISPLAY REVISION                     FMU
24 MSG 16 TO LINE 6                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU17, FMDFT, (07), LOCK
*** 5.2.23 FMU17 - WRITE 885-1X DIAGNOSTIC TRACKS 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU17 WRITES A PATTERN ON TRACKS 3 THRU 39 OF CYLINDER 841.
*          THIS PATTERN IS FOR USE BY DIAGNOSTIC PROGRAMS.  THE          FMU
*          HEXADECIMAL FORM OF THE PATTERN IS AS FOLLOWS--               FMU
*                         E36A AAAA                                      FMU
*          THIS PATTERN IS REPEATED TO FILL EACH SECTOR.                 FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU17 BUILDS THE REQUIRED PATTERN IN THE OUTPUT BUFFER.
*          THE WRITE CODED SECTOR FUNCTION IS THEN USED TO COPY THE      FMU
*          PATTERN TO THE DISK.                                          FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU17 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE 
*          EXECUTION.                                                    FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU17 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU17 CALLS SUBMODULE FMU98A TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU17 USES REGISTERS B0 TO B2, AND B4 TO B7.  REGISTERS ARE
*          USED AS FOLLOWS--                                             FMU
*            B0 - CYLINDER                                               FMU
*            B1 - TRACK                                                  FMU
*            B2 - SECTOR                                                 FMU
*            B4 - NUMBER OF SECTORS TO WRITE                             FMU
*            B5 - DISPLAY LINE NUMBER                                    FMU
*            B6 - OUTPUT BUFFER INDEX                                    FMU
*            B7 - PATTERN INDEX                                          FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU17 USES THE OUTPUT BUFFERS AS FOLLOWS-- 
*            OB(0) TO OB(7) - PATTERN 
*            OB(0) TO OB(501) - WRITE DATA                               FMU
*                                                                        FMU
*                                                                        FMU
/  - WRITE 885-1X DIAGNOSTIC TRACKS - 
/                                                                        FMU
1  FORMAT WRITE 885-1X DIAGNOSTIC TRACKS
2  FORMAT DIAGNOSTIC TRACKS WRITTEN                                      FMU
3  FORMAT SKIPPED FLAWED TRACK - CY=*OCT, TR=*O                          FMU
15 FORMAT FMU17 TRACK *O
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU17 PAUSE - WRITE DIAGNOSTIC TRACKS 
/  - DIAGNOSTIC DATA PATTERN -
/ 
   DATA (OB,3H) E36A,AAAA,E36A,AAAA,E36A,AAAA 
20 BLANK                                                                 FMU
   B0=841D                        * SET CYLINDER                         FMU
   B1=3                           * SET STARTING TRACK                   FMU
   MSG 15 (B1) TO DISPLAY                                                FMU
   MSG 1 TO LINE 2                                                       FMU
   B5=4                           * SET DISPLAY LINE                     FMU
   MSG 17 TO DISPLAY,PRINT
   PAUSE                                                                 FMU
   B6=10B                         * SET OB INDEX
   B7=0                           * SET PATTERN INDEX                    FMU
24 OB(B6)=OB(B7)                  * LOAD OUTPUT BUFFER
   B7=B7 + 1 AND 7                * NEXT PATTERN                         FMU
   GOTO 24 WHILE (B6+1 LT 502)    * IF BUFFER NOT FULL
/                                                                        FMU
/  WRITE TRACKS                                                          FMU
30 RES DRIVE, ABT 74                                                     FMU
   B4=32D                         * SET NUMBER OF SECTORS                FMU
   B2=0                           * SET STARTING SECTOR                  FMU012 
   WRITE B4 CODED SECTORS AT CYL B0 TRK B1 SEC B2, ABT 60                FMU
34 MSG 15 (B1) TO DISPLAY 
   MSG 15 (B1) TO LINE B5                                                FMU
   B1 = B1 + 1                    * NEXT TRACK
   IF (B1 LE 47) GOTO 30          * IF MORE TRACKS                       FMU
   MSG 2 TO LINE B5                                                      FMU
   B5=B5+2                        * INCREMENT DISPLAY LINE               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
   GOTO 77                                                               FMU
/                                                                        FMU
/  CHECK FOR TRACK FLAW                                                  FMU
60 IF (SB NE 5000) GOTO 74        * IF GENERAL STATUS NE 5000            FMU
   IF (SB(5) AND 4000 EQ 0) GOTO 74    * IF NOT TRACK FLAW               FMU
   MSG 3 (B0,B1) TO LINE B5       * DISPLAY TRACK FLAW MESSAGE           FMU
   B5=B5+2                                                               FMU
   GOTO 34                        * GO ON TO NEXT TRACK                  FMU
/                                                                        FMU
/  DISPLAY DETAILED STATUS                                               FMU
74 CALL 98A                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU21, DEMA2, (14), LOCK
*** 5.2.24 FMU21 - READ 885-4X SERIAL NUMBER
**
*          PURPOSE- 
*          FMU21 DISPLAYS AND PRINTS THE SERIAL NUMBER AND DATE OF
*          FORMATTING FOR THE ASSIGNED 885-4X DRIVE.
* 
*          METHOD-
*          FMU21 READS CYLINDER 841, TRACK 0, SECTOR 0 ON THE ASSIGNED
*          DRIVE.  THE SERIAL NUMBER AND DATE OF FORMATTING ARE 
*          EXTRACTED FROM THE FIRST FOUR WORDS OF THIS SECTOR.
* 
*          ENTRY- 
*          FMU21 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE 
*          EXECUTION. 
/ 
*          EXIT-
*          FMU21 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU21 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU21 USES REGISTERS B1, B2, B3, AND B5.  REGISTERS ARE
*          USED AS FOLLOWS--
*            B1 - DATE OF FORMATTING
*            B2 - DATE OF FORMATTING
*            B3 - DATE OF FORMATTING
*            B5 - K DISPLAY LINE NUMBER 
* 
*          BUFFERS USED-
*          FMU21 USES THE INPUT BUFFER FOR DATA READ FROM THE DRIVE.
* 
* 
/  - READ 885-4X SERIAL NUMBER -
/ 
1  FORMAT 885-4X SERIAL NUMBER - CH=*O, EQ=*O, UN=*O
2  FORMAT S/N = *HE*HE    DATE OF FORMAT = *H/*H/*H 
15 FORMAT MODULE FMU21
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   B5=3                           * SET DISPLAY LINE
   RES DRIVE, ABT 74
   GET SERIAL, ABT 74             * READ MFG DATA 
   REL, ABT 74
   B3=IB(3) AND 0377              * EXTRACT DAY/MO/YR 
   B2=IB(3) RS 8
   B1=IB(2) AND 0017
   B1=B1 LS 4 
   B2=B1 XOR B2 
   B1=IB(2) RS 4
   MSG 2 (IB(0),IB(1),B1,B2,B3) TO LINE 4 
44 MSG 16 TO LINE 6 
   PICTURE
   GOTO 77                        * END OF MODULE 
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU22, DEMA2, (14), LOCK
*** 5.2.25 FMU22 - READ 885-4X FACTORY FLAW TABLES
**
*          PURPOSE- 
*          FMU22 DISPLAYS AND PRINTS THE FACTORY TRACK FLAW TABLE AND 
*          THE FACTORY SECTOR FLAW TABLE FOR THE ASSIGNED 885-4X
*          DRIVE. 
* 
*          METHOD-
*          FMU22 READS THE FACTORY FLAW TABLES FROM CYLINDER 841, 
*          TRACK 0, SECTORS 1 TO 18.  SECTOR 1 CONTAINS TRACK FLAWS AND 
*          SECTORS 2 TO 18 CONTAIN SECTOR FLAWS.  EACH SECTOR IN THE
*          TABLES MAY CONTAIN UP TO 120 ENTRIES.
*          AFTER READING ONE SECTOR FMU22 COPIES THE FLAWS TO THE 
*          K DISPLAY AND TO THE PRINTER.  FMU22 CONTINUES READING 
*          AND DISPLAYING THE FLAW TABLES UNTIL THE END OF THE TABLE
*          IS FOUND.  CYLINDER, TRACK AND SECTOR NUMBERS IN THE TABLES
*          ARE DISPLAYED AND PRINTED IN OCTAL.
* 
*          ENTRY- 
*          FMU22 REQUIRES PARAMETER P0 TO BE SET TO INDICATE WHICH
*          TABLES TO DISPLAY AND PRINT.  PARAMETER USAGE AND ALLOWED
*          OCTAL VALUES ARE SHOWN BELOW-- 
*            P0 = 0 - DISPLAY AND PRINT TRACK AND SECTOR FLAW TABLES
*                 1 - DISPLAY AND PRINT TRACK FLAWS ONLY
*                 2 - DISPLAY AND PRINT SECTOR FLAWS ONLY 
*          AN ERROR MESSAGE IS DISPLAYED IF P0 IS GREATER THAN 2. 
/ 
*          EXIT-
*          FMU22 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU22 CALLS SUBMODULE FMU98F TO DISPLAY THE FLAW TABLES AND
*          SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF AN I/O
*          FUNCTION IS ABORTED. 
* 
*          REGISTERS USED-
*          FMU22 USES REGISTERS B5, B6, BA, AND WC.  REGISTERS ARE USED 
*          AS FOLLOWS-- 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - DISPLAY SELECT FLAG FOR SUBMODULE FMU98F
*            WC - SECTOR
*            BA - FLAW COUNT
* 
*          BUFFERS USED-
*          FMU22 USES THE INPUT BUFFER FOR DATA READ FROM THE DRIVE.
*          THIS DATA IS COPIED TO THE OUTPUT BUFFER FOR USE BY
*          SUBMODULE FMU98F.
* 
* 
/  - READ 885-4X FACTORY MAP -
/ 
1  FORMAT 885-4X FACTORY MAP - CH=*O, EQ=*O, UN=*O
10 FORMAT ILLEGAL PARAMETER P0
15 FORMAT MODULE FMU22
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   B5=5                           * DISPLAY INDEX 
   BA=1                           * SET FLAW COUNT
40 IF (P0 EQ 0) GOTO 46           * IF ALL MAPS 
   IF (P0 EQ 1) GOTO 46           * IF TRACK MAP ONLY 
   IF (P0 EQ 2) GOTO 52           * IF SECTOR MAPS ONLY 
   MSG 10 TO LINE 4               * ERROR IF P0 NOT 0 TO 2
   MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
46 WC=1                           * SET SECTOR
   RES DRIVE, ABT 74
   GET FACTORY SECTOR WC, ABT 74  * READ TRACK FLAWS
   COPY IB TO OB FOR 502
   B6=1 
   CALL 98F                       * DISPLAY TRACK FLAWS 
   BA=1                           * RESET FLAW COUNT
   IF (P0 EQ 1) GOTO 77           * IF TRACK MAP ONLY 
52 WC=2                           * SET SECTOR
53 RES DRIVE, ABT 74
   GET FACTORY SECTOR WC, ABT 74  * READ SECTOR FLAWS 
   COPY IB TO OB FOR 502
   B6=2 
   CALL 98F                       * DISPLAY SECTOR FLAWS
   IF (B3 LT 240D) GOTO 77        * IF END OF MAP 
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 53         * IF MORE SECTORS 
   GOTO 77                        * END OF MODULE 
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU23, DEMA2, (14), LOCK
*** 5.2.26 FMU23 - READ 885-4X UTILITY TABLES 
**
*          PURPOSE- 
*          FMU23 DISPLAYS AND PRINTS THE UTILITY TRACK FLAW TABLE AND 
*          THE UTILITY SECTOR FLAW TABLE FOR THE ASSIGNED 885-4X
*          DRIVE. 
* 
*          METHOD-
*          FMU23 INITIALLY CHECKS PARAMETER P4.  IF P4 IS EQUAL TO 1
*          THEN FMU23 IMMEDIATELY EXITS TO FMU231.  IF P4 IS EQUAL
*          TO ZERO FMU23 READS THE UTILITY FLAW TABLES FROM CYLINDER
*          841, TRACK 1, SECTORS 1 TO 18.  SECTOR 1 CONTAINS TRACK
*          FLAWS AND SECTORS 2 TO 18 CONTAIN SECTOR FLAWS.  EACH SECTOR 
*          OF THE TABLES MAY CONTAIN UP TO 120 ENTRIES. 
*          AFTER READING ONE SECTOR FMU23 COPIES THE FLAWS TO THE 
*          K DISPLAY AND TO THE PRINTER.  FMU23 CONTINUES READING 
*          AND DISPLAYING THE FLAW TABLES UNTIL THE END OF THE TABLE
*          IS FOUND.  CYLINDER, TRACK, AND SECTOR NUMBERS IN THE
*          TABLES ARE DISPLAYED AND PRINTED IN OCTAL. 
* 
*          ENTRY- 
*          FMU23 REQUIRES PARAMETER P0 TO BE SET TO INDICATE WHICH
*          TABLES TO DISPLAY AND PRINT AS SHOWN BELOW-- 
*            P0 = 0 - DISPLAY AND PRINT TRACK AND SECTOR FLAW TABLES
*                 1 - DISPLAY AND PRINT TRACK FLAWS ONLY
*                 2 - DISPLAY AND PRINT SECTOR FLAWS ONLY 
*          AN ERROR MESSAGE IS DISPLAYED IF P0 IS GREATER THAN 2. 
*          FMU23 ALSO REQUIRES PARAMETER P4 TO BE SET TO INDICATE 
*          IF THE TRACK FLAW TABLES ARE TO BE PRINTED WITH OR WITHOUT 
*          REORDERING.  PARAMETER USAGE AND ALLOWED VALUES ARE
*          SHOWN BELOW--
*            P4 = 0 - DISPLAY AND PRINT TABLES WITHOUT REORDERING.
*                 1 - SORT TABLES INTO ASCENDING ORDER BY CYLINDER, 
*                     TRACK, AND SECTOR 
*          AN ERROR MESSAGE IS DISPLAYED IF P4 IS GREATER THAN 1. 
/ 
*          EXIT-
*          FMU23 TERMINATES WITH AN END STATEMENT OR BY EXITING 
*          TO MODULE FMU231.  REGISTER B5 CONTAINS THE K DISPLAY
*          LINE NUMBER FOR FMU231.
* 
*          SUBMODULES REFERENCED- 
*          FMU23 CALLS SUBMODULE FMU98F TO DISPLAY THE FLAW TABLES AND
*          SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF AN I/O
*          FUNCTION IS ABORTED. 
* 
*          REGISTERS USED-
*          FMU23 USES REGISTERS B5, B6, BA, AND WC.  REGISTERS ARE USED 
*          AS FOLLOWS-- 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - DISPLAY SELECT FLAG FOR SUBMODULE FMU98F
*            WC - SECTOR
*            BA - FLAW COUNT
* 
*          BUFFERS USED-
*          FMU23 USES THE INPUT BUFFER FOR DATA READ FROM THE DRIVE.
*          DATA IS COPIED TO THE OUTPUT BUFFER FOR USE BY SUBMODULE 
*          FMU98F.
* 
* 
/  - READ 885-4X UTILITY MAP -
/ 
1  FORMAT 885-4X UTILITY MAP - CH=*O, EQ=*O, UN=*O
10 FORMAT ILLEGAL PARAMETER P0
11 FORMAT ILLEGAL PARAMETER P4
15 FORMAT MODULE FMU23
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   B5=5                           * SET DISPLAY LINE
   BA=1                           * SET FLAW COUNT
40 IF (P0 EQ 0) GOTO 44           * IF ALL MAPS 
   IF (P0 EQ 1) GOTO 44           * IF TRACK MAP ONLY 
   IF (P0 EQ 2) GOTO 50           * IF SECTOR MAPS ONLY 
   MSG 10 TO LINE 4               * ERROR IF P0 NOT 0 TO 2
42 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
44 IF (P4 EQ 1) EXIT TO 231       * IF REORDER ENABLED
   IF (P4 EQ 0) GOTO 46           * IF REORDER DISABLED 
   MSG 11 TO LINE 4               * ERROR IF P4 NOT 0 OR 1
   GOTO 42
46 WC=1                           * SET SECTOR
   RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ TRACK FLAWS
   COPY IB TO OB FOR 502
   B6=1 
   CALL 98F                       * DISPLAY TRACK FLAWS 
   BA=1                           * RESET FLAW COUNT
   IF (P0 EQ 1) GOTO 77           * IF TRACK MAP ONLY 
50 IF (P4 EQ 1) EXIT TO 231       * IF REORDER ENABLED
   IF (P4 EQ 0) GOTO 52           * IF REORDER DISABLED 
   MSG 11 TO LINE 4               * ERROR IF P4 NOT 0 OR 1
   GOTO 42
52 WC=2                           * SET SECTOR
53 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ SECTOR FLAWS 
   COPY IB TO OB FOR 502
   B6=2 
   CALL 98F                       * DISPLAY SECTOR FLAWS
   IF (B3 NE 240D) GOTO 77        * IF END OF MAP 
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 53         * IF MORE SECTORS 
   GOTO 77                        * END OF MODULE 
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU231, DEMA2, (14), LOCK 
*** 5.2.27 FMU231 - REORDER 885-4X UTILITY FLAW TABLES
**
*          PURPOSE- 
*          FMU231 SORTS THE UTILITY TRACK FLAW TABLE AND THE UTILITY
*          SECTOR FLAW TABLE INTO ASCENDING ORDER BY CYLINDER, TRACK, 
*          AND SECTOR.  THESE TABLES ARE THEN DISPLAYED AND PRINTED.
* 
*          METHOD-
*          FMU231 READS THE UTILITY FLAW TABLES FROM CYLINDER 841,
*          TRACK 1, SECTORS 1 TO 18.  SECTOR 1 CONTAINS TRACK FLAWS 
*          AND SECTORS 2 TO 18 CONTAIN SECTOR FLAWS.  EACH SECTOR 
*          OF THE TABLES MAY CONTAIN UP TO 120 ENTRIES.  AFTER
*          READING EACH SECTOR THE FLAWS ARE SORTED INTO A DISPLAY
*          BUFFER.  WHEN THE END OF THE TABLE IS FOUND, THE 
*          BUFFER IS DISPLAYED AND PRINTED.  WHEN THE SECTOR FLAW 
*          TABLE IS READ, THE DISPLAY BUFFER IS NOT LARGE ENOUGH
*          TO HOLD ALL OF THE FLAWS AT ONE TIME, SO IT IS NECESSARY 
*          TO RE-READ SECTORS 2 TO 18 AND FILL THE BUFFER AGAIN.
*          THIS PROCESS IS REPEATED UNTIL ALL OF THE SECTOR FLAWS 
*          HAVE BEEN PRINTED AND DISPLAYED. 
/ 
*          ENTRY- 
*          FMU231 IS ONLY ENTERED FROM MODULE FMU23, AND THEN ONLY IF 
*          PARAMETER P4 IS EQUAL TO 1.  PARAMETER P0 MUST ALSO BE SET 
*          AS REQUIRED BY MODULE FMU23. 
*          FMU231 ASSUMES THAT THE LINE NUMBER FOR THE K DISPLAY
*          IS IN REGISTER B5. 
* 
*          EXIT-
*          FMU231 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU231 CALLS SUBMODULE FMU98F TO DISPLAY THE FLAW TABLES AND 
*          SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF AN I/O
*          FUNCTION IS ABORTED. 
* 
*          REGISTERS USED-
*          FMU231 USES REGISTERS B1 TO B7, BA, AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--
*            B1 - INDEX FOR SHIFTING THE DISPLAY BUFFER 
*            B2 - INDEX FOR SHIFTING THE DISPLAY BUFFER 
*            B3 - INPUT BUFFER INDEX
*            B4 - INPUT BUFFER INDEX
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - DISPLAY SELECT FLAG FOR SUBMODULE FMU98F
*                 ALSO, INDEX TO DISPLAY BUFFER 
*            B7 - INDEX TO DISPLAY BUFFER 
*            WC - SECTOR
*            BA - FLAW COUNT
* 
*          BUFFERS USED-
*          FMU231 USES THE INPUT BUFFER FOR FLAW TABLES READ FROM THE 
*          DRIVE.  THE OUTPUT BUFFER IS USED AS THE DISPLAY BUFFER
*          AND FOR SORTING THE TABLES INTO SEQUENTIAL ORDER.
* 
* 
/  - READ 885-4X UTILITY MAPS (REORDER) - 
/ 
15 FORMAT MODULE FMU231 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 MSG 15 TO DISPLAY
   WC=1                           * SET SECTOR
22 OB(500)=0                      * CLEAR LAST FLAW 
   OB(501)=0
   BA=1                           * SET FLAW COUNT
24 B7=0 
26 OB(B7)=0                       * CLEAR OB(0-239) 
   B7=B7+1
   IF (B7 LT 240D) GOTO 26        * IF NOT DONE CLEARING
35 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR 
   B4=0                           * RESET IB INDEX
40 B7=0                           * RESET OB INDEX
   B3=B4+1
   IF (IB(B4) AND 4000 NE 0) GOTO 42   * IF NOT END OF IB 
   IF (WC EQ 1) GOTO 70           * IF END OF TRACK FLAWS 
   GOTO 46                        * END OF SECTOR FLAWS 
42 IF (IB(B4) GT OB(500)) GOTO 50      * FLAW MAP GT LAST FLAW
   IF (IB(B4) LT OB(500)) GOTO 44      * FLAW MAP LT LAST FLAW
   IF (IB(B3) GT OB(501)) GOTO 50      * FLAW MAP GT LAST FLAW
44 B4=B4+2                        * INCREMENT IB INDEX
   IF (B4 LT 240D) GOTO 40        * IF NOT END OF SECTOR
   WC=WC+1                        * NEXT SECTOR 
   IF (WC EQ 2) GOTO 70           * IF END OF TRACK FLAWS 
   IF (WC LE 18D) GOTO 35         * IF MORE SECTORS 
46 WC=2                           * RESET SECTOR
   B6=2 
   CALL 98F                       * DISPLAY SECTOR FLAWS
   OB(500)=OB(238D)               * SAVE LAST FLAW
   OB(501)=OB(239D) 
   IF (OB(238D) AND 4000 NE 0) GOTO 24  * IF NOT END OF MAP 
   GOTO 77                        * END OF MODULE 
50 B6=B7+1
   IF (OB(B7) EQ 0) GOTO 54       * IF END OF FLAW DISPLAY
   IF (IB(B4) GT OB(B7)) GOTO 52  * FLAW MAP GT FLAW DISPLAY
   IF (IB(B4) LT OB(B7)) GOTO 54  * FLAW MAP LT FLAW DISPLAY
   IF (IB(B3) LT OB(B6)) GOTO 54  * FLAW MAP LT FLAW DISPLAY
52 B7=B7+2                        * INCREMENT OB INDEX
   IF (B7 LT 240D) GOTO 50        * IF NOT END OF OB
   GOTO 44
54 B2=239D                        * MOVE OB DOWN
55 B1=B2-2
   OB(B2)=OB(B1)
   B2=B2-1                        * MOVE NEXT ENTRY 
   IF (B2 GT B6) GOTO 55          * IF MORE TO MOVE 
   OB(B7)=IB(B4)                  * INSERT FLAW 
   OB(B6)=IB(B3)
   GOTO 44
70 WC=2                           * SET SECTOR
   IF (P0 GT 1) GOTO 22           * IF SECTOR FLAWS ONLY
   B6=1 
   CALL 98F                       * DISPLAY TRACK FLAWS 
   IF (P0 EQ 0) GOTO 22           * IF ALL FLAWS
   GOTO 77                        * END OF MODULE 
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU24, DEMA2, (14), LOCK
*** 5.2.28 FMU24 - SET 885-4X SECTOR FLAW 
**
*          PURPOSE- 
*          FMU24 ENTERS A SECTOR FLAW AT THE END OF THE SECTOR
*          FLAW TABLE, ENTERS A TRACK FLAW AT THE END OF THE TRACK
*          FLAW TABLE (IF NECESSARY), AND REFORMATS THE TRACK.
* 
*          METHOD-
*          FMU24 READS THE SECTOR FLAW TABLES FROM CYLINDER 841,
*          TRACK 1, SECTOR 2 TO 18.  AS THESE TABLES ARE READ A COUNT 
*          IS MADE OF THE NUMBER OF FLAWS ALREADY SET IN THE TRACK
*          IN WHICH THE NEW FLAW IS BEING SET.  WHEN THE END OF THE 
*          SECTOR FLAW TABLE IS FOUND THE NEW FLAW IS INSERTED AT 
*          THE END, AND THE LAST SECTOR OF THE TABLE IS REWRITTEN.
*          IF THE NEW FLAW JUST FILLS THIS LAST SECTOR THEN ONE 
*          ADDITIONAL SECTOR IS WRITTEN WITH ALL ZEROS.  THIS INSURES 
*          THAT THE END OF THE TABLE WILL BE DETECTED FOLLOWING 
*          THE NEW FLAW.  IF THE TOTAL NUMBER OF SECTOR FLAWS IN THE
*          TRACK IN WHICH THE NEW FLAW IS BEING SET IS GREATER THAN 
*          TWO, FMU24 EXITS TO FMU241 TO SET THE TRACK FLAW AND 
*          REFORMAT THE TRACK.  IF THE TOTAL NUMBER OF SECTOR FLAWS 
*          IS ONE OR TWO, FMU24 EXITS TO FMU242 TO REFORMAT THE 
*          TRACK. 
* 
*          ENTRY- 
*          FMU24 REQUIRES PARAMETERS P1, P2, AND P3 TO BE SET TO
*          INDICATE THE SECTOR TO BE FLAWED.  PARAMETER USAGE AND 
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW-- 
*            P1 - CYLINDER (0 TO 1512)
*            P2 - TRACK    (0 TO 11)
*            P3 - SECTOR   (0 TO 41)
*          AN ERROR MESSAGE IS DISPLAYED IF ANY OF THE PARAMETERS 
*          IS OUT OF RANGE. 
/ 
*          EXIT-
*          FMU24 EXITS TO EITHER FMU241 OR FMU242.  THE OUTPUT BUFFER 
*          CONTAINS A LIST OF SECTORS TO BE FLAWED DURING REFORMATTING
*          BY FMU241 OR FMU242.  REGISTER B5 CONTAINS THE K DISPLAY 
*          LINE NUMBER. 
* 
*          SUBMODULES REFERENCED- 
*          FMU24 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU24 USES REGISTERS B0, B1, B4 TO B7, AND WC. 
*          REGISTERS ARE USED AS FOLLOWS--
*            B0 - INDEX FOR CLEARING THE END OF THE BUFFER
*                 ALSO, CYLINDER
*            B1 - TRACK 
*            B4 - SECTOR ERROR INDEX
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU24 USES THE INPUT BUFFER FOR FLAW TABLES READ FROM THE
*          DRIVE.  THE OUTPUT BUFFER IS USED FOR WRITING THE END
*          OF THE FLAW TABLES BACK TO THE DRIVE, AND FOR SAVING A 
*          LIST OF SECTORS TO BE FLAWED DURING REFORMATTING.
* 
* 
/  - SET 885-4X SECTOR FLAW - 
/ 
1  FORMAT SET 885-4X SECTOR FLAW - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER = *OCT,  TRACK = *O,  SECTOR = *O
3  FORMAT ERROR - SECTOR FLAW ALREADY SET 
4  FORMAT ERROR - SECTOR FLAW MAP FULL
5  FORMAT ERROR - CANNOT SET SECTOR FLAW IN FACTORY TRACK.
6  FORMAT SECTOR FLAW SET 
11 FORMAT ACCESS LEVEL TOO LOW (MINIMUM AL=4) 
12 FORMAT ILLEGAL PARAMETER P1 (MAXIMUM CY=1512)
13 FORMAT ILLEGAL PARAMETER P2 (MAXIMUM TR=11)
14 FORMAT ILLEGAL PARAMETER P3 (MAXIMUM SE=41)
15 FORMAT MODULE FMU24
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU24 PAUSE - SET 885-4X SECTOR FLAW
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 2 (P1,P2,P3) TO LINE 3 
   IF (AL GE 4) GOTO 21           * IF VALID ACCESS LEVEL 
   MSG 11 TO LINE 5               * ACCESS LEVEL TOO LOW
   GOTO 22
21 IF (P1 LE 842D) GOTO 24        * IF VALID CYLINDER 
   MSG 12 TO LINE 5               * ILLEGAL CYLINDER
22 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ILLEGAL PARAMETER 
24 IF (P2 LE 9D) GOTO 26          * IF VALID TRACK
   MSG 13 TO LINE 5               * ILLEGAL TRACK 
   GOTO 22
26 IF (P3 LE 33D) GOTO 27         * IF VALID SECTOR 
   MSG 14 TO LINE 5               * ILLEGAL SECTOR
   GOTO 22
27 IF(P1.NE.1511) GOTO 32    *NOT FACTORY CY
   IF(P2.NE.0) GOTO 32       *NOT FACTORY TRACK 
   MSG 5 TO LINE 5           *POST FACTORY MESSAGE
   GOTO 22
32 MSG 17 TO DISPLAY, PRINT  *POST PAUSE MESSAGE
   PAUSE
   B5=4                           * SET DISPLAY LINE
   OB(0)=P1                       * SAVE SECTORS IN OB
   OB(1)=P2 
   OB(2)=P3 
   OB(3)=4000 
   B4=2                           * SECTOR ERROR INDEX
   WC=2                           * SET SECTOR
30 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR 
   B7=0                           * INPUT BUFFER INDEX
40 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 54   * IF END OF FLAW MAP 
41 IF (IB(B7) AND 1777 EQ P1) GOTO 50  * FLAW MAP EQ CYLINDER 
42 B7=B7+2                        * TRY NEXT ENTRY
   IF (B7 LT 240D) GOTO 40        * IF NOT END OF SECTOR
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 30         * IF MORE SECTORS 
   MSG 4 TO LINE 5                * FLAW MAP FULL 
   GOTO 52
50 IF (IB(B6) RS 6 NE P2) GOTO 42      * FLAW MAP NE TRACK
   B4=B4+1                        * INCREMENT COUNT 
   OB(B4)=IB(B6) AND 0077         * SAVE SECTOR NUMBER
   IF (IB(B6) AND 0077 NE P3) GOTO 42  * FLAW MAP NE SECTOR 
   MSG 3 TO LINE 5                * FLAW ALREADY SET
52 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
54 IB(B7)=P1 XOR 4000             * SET SECTOR FLAW 
   IB(B6)=P2 LS 6 
   IB(B6)=IB(B6) XOR P3 
   B7=B7+2
60 COPY OB(0) TO IB(400) FOR 36D  * SAVE SECTOR ERRORS
   COPY IB TO OB FOR 240D 
   B0=B7
61 OB(B0)=0                       * CLEAR END OF BUFFER 
   B0=B0+1
   IF (B0 LT 502) GOTO 61         * IF NOT DONE CLEARING
   B0=841D                        * SET CYLINDER
   B1=1                           * SET TRACK 
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR 
   COPY IB(400) TO OB(0) FOR 36D  * RESET SECTOR ERRORS 
   IF (B7 LT 240D) GOTO 62        * IF SECTOR NOT FULL
   WC=WC+1                        * NEXT SECTOR 
   IF (WC GT 18D) GOTO 62         * IF NO MORE SECTORS
   B7=0                           * RESET BUFFER INDEX
   GOTO 60                        * GO WRITE ZEROS SECTOR 
62 MSG 6 TO LINE 5
   B5=6                           * SET DISPLAY LINE
   IF (B4 GE 4) EXIT TO 241       * IF SKIPPED SECTORS GT 2 
   EXIT TO 242                    * SKIPPED SECTORS LE 2
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU241, DEMA2, (14), LOCK 
*** 5.2.29 FMU241 - SET 885-4X SECTOR FLAW (CONTINUED)
**
*          PURPOSE- 
*          FMU241 ENTERS A TRACK FLAW AT THE END OF THE TRACK FLAW
*          TABLE (IF NECESSARY), AND REFORMATS THE TRACK. 
* 
*          METHOD-
*          FMU241 IS ENTERED FROM FMU24 WHEN SETTING A SECTOR FLAW
*          RESULTS IN MORE THAN TWO SECTOR FLAWS IN A TRACK.
*          FMU241 READS THE TRACK FLAW TABLE FROM CYLINDER 841, 
*          TRACK 1, SECTOR 1.  IF THE TRACK INDICATED BY PARAMETERS 
*          P1 AND P2 IS NOT ALREADY IN THE TABLE, IT IS ADDED AT
*          THE END AND THE TABLE IS REWRITTEN.
*          FMU241 ALSO REFORMATS THE TRACK.  THE LIST OF SECTORS
*          TO BE SKIPPED WAS GENERATED BY FMU24 AND PLACED IN THE 
*          OUTPUT BUFFER.  REFORMATTING IS THEN DONE BY CALLING 
*          SUBMODULE FMU26A.
/ 
*          ENTRY- 
*          FMU241 MAKES USE OF PARAMETERS P1 AND P2 AS DEFINED FOR
*          MODULE FMU24.  FMU241 ASSSUMES THAT THE LIST OF SECTORS
*          TO BE SKIPPED IS INITIALLY IN THE FIRST 36 LOCATIONS OF
*          THE OUTPUT BUFFER.  INITIALLY REGISTER B5 CONTAINS THE 
*          K DISPLAY LINE NUMBER. 
* 
*          EXIT-
*          FMU241 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFEREMCED- 
*          FMU241 CALLS SUBMODULE FMU26A TO REFORMAT THE TRACK. 
*          FMU241 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU241 USES REGISTERS B0, B1, B5, B6, B7, BA, AND WC.
*          REGISTERS ARE USED AS FOLLOWS--
*            B0 - INDEX FOR CLEARING THE END OF THE BUFFER
*                 ALSO, CYLINDER
*            B1 - TRACK 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
*            BA - ERROR FLAG SET BY SUBMODULE FMU26A
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU241 USES THE INPUT BUFFER FOR THE TRACK FLAW TABLE
*          READ FROM THE DRIVE.  THE OUTPUT BUFFER IS USED FOR
*          WRITING THE TRACK FLAW TABLE BACK TO THE DRIVE, AND FOR
*          SAVING A LIST OF SECTORS TO BE FLAWED DURING REFORMATTING. 
* 
* 
/  - SET 885-4X SECTOR FLAW (CONTINUED) - 
/ 
7  FORMAT TRACK FLAW MAP FULL 
10 FORMAT TRACK FLAW ALREADY SET
11 FORMAT TRACK FLAW SET
15 FORMAT MODULE FMU241 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 MSG 15 TO DISPLAY
   WC=1                           * CHECK TRACK FLAW
   RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ TRACK FLAWS
   B7=0                           * SET BUFFER INDEX
24 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 40   * IF END OF FLAW MAP 
   IF (IB(B7) AND 1777 EQ P1) GOTO 34  * FLAW MAP EQ CYLINDER 
26 B7=B7+2                        * TRY NEXT ENTRY
   IF (B7 LT 240D) GOTO 24        * IF NOT END OF SECTOR
   MSG 7 TO LINE 7
   GOTO 60
34 IF (IB(B6) RS 6 NE P2) GOTO 26      * FLAW MAP NE TRACK
   MSG 10 TO LINE 7               * TRACK FLAW ALREADY SET
   GOTO 60
40 IB(B7)=P1 XOR 4000             * SET TRACK FLAW
   IB(B6)=P2 LS 6 
   B7=B7+2
   COPY OB(0) TO IB(400) FOR 36D  * SAVE SECTOR ERRORS
   COPY IB TO OB FOR 240D 
   B0=B7
50 OB(B0)=0                       * CLEAR END OF BUFFER 
   B0=B0+1
   IF (B0 LT 502) GOTO 50         * IF NOT DONE CLEARING
   B0=841D                        * SET CYLINDER
   B1=1                           * SET TRACK 
   RES DRIVE, ABT 74
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR 
   COPY IB(400) TO OB(0) FOR 36D  * RESET SECTOR ERRORS 
   MSG 11 TO LINE 7 
60 B5=10                          * SET DISPLAY LINE
   CALL 26A                       * FORMAT TRACK FLAW 
   IF (BA EQ 1) GOTO 74           * IF ERROR
   MSG 16 TO LINE 11
   PICTURE
   GOTO 77                        * END OF MODULE 
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU242, DEMA2, (14), LOCK 
*** 5.2.30 FMU242 - SET 885-4X SECTOR FLAW (CONTINUED)
**
*          PURPOSE- 
*          FMU242 IS USED TO REFORMAT A TRACK WITH ONE OR TWO FLAWS.
* 
*          METHOD-
*          FMU242 IS ENTERED FROM FMU24 WHEN SETTING A SECTOR FLAW
*          RESULTS IN ONE OR TWO SECTOR FLAWS IN A TRACK.  FMU242 
*          REFORMATS THE TRACK.  A TRACK FLAW IS NOT SET. 
* 
*          ENTRY- 
*          FMU242 ASSUMES THAT THE LIST OF SECTORS TO BE SKIPPED
*          IS INITIALLY IN THE FIRST 4 LOCATIONS OF THE OUTPUT
*          BUFFER.  REGISTER B5 IS ASSUMED TO CONTAIN THE K DISPLAY 
*          LINE NUMBER. 
/ 
*          EXIT-
*          FMU242 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU242 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU242 USES REGISTER B5 FOR THE K DISPLAY LINE NUMBER. 
* 
*          BUFFERS USED-
*          FMU242 USES THE OUTPUT BUFFER FOR THE PARAMETERS NEEDED TO 
*          REFORMAT THE TRACK.  OUTPUT BUFFER ADDRESSES 300 TO 306
*          ARE USED.
* 
* 
/  - SET 885-4X SECTOR FLAW (CONTINUED) - 
/ 
15 FORMAT MODULE FMU242 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 MSG 15 TO DISPLAY
   OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0100        * SET SECTOR FLAWS
   OB(302)=OB(0)
   OB(303)=OB(1)
   OB(304)=0
   OB(305)=OB(2)
   OB(306)=OB(3)
   RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT TRACK
24 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 24     * IF BUSY 
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * END OF MODULE 
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU25, DEMA2, (14), LOCK
*** 5.2.31 FMU25 - CLEAR 885-4X SECTOR FLAW 
**
*          PURPOSE- 
*          FMU25 CLEARS A SECTOR FLAW FROM THE SECTOR FLAW TABLE, 
*          CLEARS THE CORRESPONDING TRACK FLAW FROM THE TRACK 
*          FLAW TABLE (IF NECESSARY), AND REFORMATS THE TRACK.
* 
*          METHOD-
*          FMU25 READS THE SECTOR FLAW TABLES FROM CYLINDER 841,
*          TRACK 1, SECTOR 2 TO 18.  AS THESE TABLES ARE READ A 
*          COUNT IS MADE OF THE NUMBER OF FLAWS REMAINING SET IN
*          THE TRACK IN WHICH THE FLAW IS BEING CLEARED.  WHEN THE
*          SECTOR FLAW IS FOUND, IT IS DELETED FROM THE TABLE,
*          ALL OF THE FOLLOWING TABLE ENTRIES ARE MOVED UP ONE
*          POSITION, AND THE TABLES ARE REWRITTEN.  FMU25 EXITS TO
*          MODULE FMU251 TO REWRITE THE LAST SECTOR OF THE FLAW 
*          TABLE, DELETE THE TRACK FLAW FROM THE TRACK FLAW TABLE 
*          (IF NECESSARY), AND REFORMAT THE TRACK.
* 
*          ENTRY- 
*          FMU25 REQUIRES PARAMETERS P1, P2, AND P3 TO BE SET TO
*          INDICATE THE SECTOR FLAW TO BE CLEARED.  PARAMETER USAGE AND 
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW-- 
*            P1 - CYLINDER (0 TO 1512)
*            P2 - TRACK    (0 TO 11)
*            P3 - SECTOR   (0 TO 41)
*          AN ERROR MESSAGE IS DISPLAYED IF ANY OF THE PARAMETERS 
*          IS OUT OF RANGE. 
/ 
*          EXIT-
*          FMU25 EXITS TO FMU251.  THE INPUT BUFFER CONTAINS A LIST 
*          OF SECTORS TO BE FLAWED DURING REFORMATTING.  THE OUTPUT 
*          BUFFER CONTAINS THE LAST SECTOR READ FROM THE SECTOR FLAW
*          TABLE.  THE CONTENTS OF REGISTERS B4, B5, BA, AND WC ARE 
*          USED BY FMU251.
* 
*          SUBMODULES REFERENCED- 
*          FMU25 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU25 USES REGISTERS B0 TO B7, BA, AND WC.  REGISTERS ARE
*          USED AS FOLLOWS--
*            B0 - CYLINDER
*            B1 - TRACK 
*            B2 - SECTOR
*            B3 - SHIFT UP FLAG 
*            B4 - SECTOR ERROR INDEX
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
*            BA - END FLAG
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU25 USES THE INPUT BUFFER FOR READING FLAW TABLES FROM 
*          THE DRIVE.  THE OUTPUT BUFFER IS USED FOR REWRITTING THE 
*          SECTOR FLAW TABLES, AND FOR SAVING A LIST OF SECTORS TO
*          BE FLAWED DURING REFORMATTING.  THIS LIST IS SAVED IN THE
*          INPUT BUFFER WHEN THE OUTPUT BUFFER IS BEING USED FOR
*          REWRITTING SECTOR FLAW TABLES.  THIS LIST IS IN THE INPUT
*          BUFFER WHEN FMU25 EXITS TO FMU251. 
* 
* 
/  - CLEAR 885-4X SECTOR FLAW - 
/ 
1  FORMAT CLEAR 885-4X SECTOR FLAW - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER = *OCT,  TRACK = *O,  SECTOR = *O
3  FORMAT ERROR - SECTOR FLAW ALREADY CLEAR 
7  FORMAT ACCESS LEVEL TOO LOW (MINIMUM AL=4) 
10 FORMAT ILLEGAL PARAMETER P1 (MAXIMUM CY=1512)
11 FORMAT ILLEGAL PARAMETER P2 (MAXIMUM TR=11)
12 FORMAT ILLEGAL PARAMETER P3 (MAXIMUM SE=41)
15 FORMAT MODULE FMU25
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU25 PAUSE - CLEAR 885-4X SECTOR FLAW
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 2 (P1,P2,P3) TO LINE 3 
   IF (AL GE 4) GOTO 21           * IF VALID ACCESS LEVEL 
   MSG 7 TO LINE 5                * ACCESS LEVEL TOO LOW
   GOTO 22
21 IF (P1 LE 842D) GOTO 24        * IF VALID CYLINDER 
   MSG 10 TO LINE 5               * ILLEGAL CYLINDER
22 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ILLEGAL PARAMETER 
24 IF (P2 LE 9D) GOTO 26          * IF VALID TRACK
   MSG 11 TO LINE 5               * ILLEGAL TRACK 
   GOTO 22
26 IF (P3 LE 33D) GOTO 27         * IF VALID SECTOR 
   MSG 12 TO LINE 5               * ILLEGAL SECTOR
   GOTO 22
27 MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=4                           * SET DISPLAY LINE
   OB(420)=P1                     * SAVE SECTOR FLAWS IN OB 
   OB(421)=P2 
   OB(422)=4000 
   OB(423)=4000 
   B4=421                         * SECTOR FLAW INDEX 
   BA=0                           * END FLAG
   B3=0                           * SHIFT UP FLAG 
   WC=2                           * SET SECTOR
30 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR 
   B7=0                           * SET BUFFER INDEX
40 B6=B7+1
   IF (IB(B7) AND 4000 NE 0) GOTO 41   * IF NOT END OF FLAW MAP 
   BA=1                           * SET END FLAG
   GOTO 43
41 IF (IB(B7) AND 1777 EQ P1) GOTO 50  * FLAW MAP EQ CYLINDER 
42 B7=B7+2                        * NEXT ENTRY
   IF (B7 LT 240D) GOTO 40        * IF NOT END OF SECTOR
43 IF (B3 NE 0) GOTO 60           * IF SHIFT FLAG SET 
   IF (BA NE 0) GOTO 46           * IF END FLAG SET 
44 WC=WC+1                        * NEXT SECTOR 
   IF (BA NE 0) EXIT TO 251       * IF END FLAG SET 
   IF (WC LE 18D) GOTO 30         * IF MORE SECTORS 
   IF (B3 NE 0) EXIT TO 251       * IF SHIFT FLAG SET 
46 MSG 3 TO LINE 5                * ALREADY CLEAR 
   MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
50 IF (IB(B6) RS 6 NE P2) GOTO 42      * FLAW MAP NE TRACK
   IF (IB(B6) AND 0077 EQ P3) GOTO 54  * FLAW MAP EQ SECTOR 
   B4=B4+1                        * INCREMENT FLAW INDEX
   OB(B4)=IB(B6) AND 0077         * SAVE SECTOR FLAW
   GOTO 42
54 B3=B7+2
   GOTO 42
60 COPY OB(420) TO IB(420) FOR 36D     * SAVE SECTOR FLAWS
   IF (B3 EQ 1) GOTO 61           * IF SHIFT UP FLAG SET
   COPY IB TO OB FOR 240D         * NO SHIFT
   GOTO 64                        * SHIFT LAST PART 
61 OB(238D)=IB(0)                 * FINISH PREVIOUS SECTOR
   OB(239D)=IB(1) 
   B0=841D                        * SET CYLINDER
   B1=1                           * SET TRACK 
   B2=WC-1                        * SET SECTOR
   B7=240D                        * ZERO FILL 
63 OB(B7)=0 
   B7=B7+1
   IF (B7 NE 502) GOTO 63         * IF NOT DONE CLEARING
   RES DRIVE, ABT 74
   WRPRO CYL B0 TRK B1 SEC B2, ABT 74  * WRITE PROTECTED SECTOR 
   B3=2                           * SET UP MOVE 
64 B6=240D-B3 
   B7=B3-2
   COPY IB(B3) TO OB(B7) FOR B6   * SHIFT UP
   B3=1                           * SET SHIFT FLAG
   COPY IB(420) TO OB(420) FOR 36D     * RESET SECTOR FLAWS 
   GOTO 44
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU251, DEMA2, (14), LOCK 
*** 5.2.32 FMU251 - CLEAR 885-4X SECTOR FLAW (CONTINUED)
**
*          PURPOSE- 
*          FMU251 REWRITES THE LAST SECTOR OF THE SECTOR FLAW TABLE,
*          CLEARS A TRACK FLAW FROM THE TRACK FLAW TABLE (IF NECESSARY),
*          AND REFORMATS THE TRACK. 
* 
*          METHOD-
*          FMU251 IS ENTERED FROM FMU25 AFTER THE SECTOR FLAW HAS BEEN
*          DELETED AND ALL BUT THE LAST SECTOR OF THE TABLE HAS BEEN
*          REWRITTEN.  FMU251 REWRITES THAT LAST SECTOR AND THEN
*          REFORMATS THE TRACK.  IF THERE ARE STILL MORE THAN TWO 
*          SKIPPED SECTORS IN THE TRACK, THE REFORMATTING INCLUDES
*          SETTING A TRACK FLAW.  FINALLY, IF THERE ARE ONLY TWO
*          SKIPPED SECTORS IN THE TRACK, IT IS NECESSARY TO CLEAR THE 
*          TRACK FLAW FROM THE TRACK FLAW TABLE.  THE TABLE IS READ,
*          THE ENTRY IS DELETED, ALL FOLLOWING ENTRIES ARE MOVED UP,
*          AND THE TABLE IS REWRITTEN.
/ 
*          ENTRY- 
*          FMU251 MAKES USE OF PARAMETERS P1 AND P2 AS DEFINED FOR
*          MODULE FMU25.  FMU251 ASSUMES THAT THE LIST OF SECTORS 
*          TO BE SKIPPED IS INITIALLY IN THE FIRST 36 LOCATIONS OF
*          THE OUTPUT BUFFER.  INITIALLY REGISTER B5 CONTAINS THE 
*          K DISPLAY LINE NUMBER, B4 CONTAINS THE ERROR INDEX,
*          AND WC CONTAINS THE NUMBER OF THE SECTOR FOLLOWING THE 
*          LAST SECTOR OF THE SECTOR FLAW TABLE.
* 
*          EXIT-
*          FMU251 TERMINATES WITH AN END STATEMENT. REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU251 CALLS SUBMODULE FMU26A TO REFORMAT THE TRACK IF 
*          A TRACK FLAW CONDITION EXISTS. 
*          FMU251 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS 
*          IF AN I/O FUNCTION IS ABORTED. 
* 
*          REGISTERS USED-
*          FMU251 USES REGISTERS B0, B1, B3 TO B7, BA, AND WC.
*          REGISTERS ARE USED AS FOLLOWS--
*            B0 - CYLINDER
*            B1 - TRACK 
*            B3 - OUTPUT BUFFER INDEX 
*            B4 - OUTPUT BUFFER INDEX 
*                 ALSO, SECTOR ERROR INDEX
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER UNDEX
*            B7 - INPUT BUFFER UNDEX
*                 ALSO, INDEX FOR CLEARING THE OUTPUT BUFFER
*            BA - ERROR FLAG SET BY SUBMODULE FMU26A
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU251 USES THE INPUT BUFFER FOR READING THE TRACK FLAW
*          TABLE.  INITIALLY THE INPUT BUFFER CONTAINS A LIST OF
*          SECTORS TO BE SKIPPED.  THE OUTPUT BUFFER IS USED FOR
*          REWRITING TABLES AND FOR THE PARAMETERS NEEDED TO REFORMAT 
*          THE TRACK. 
* 
* 
/  - CLEAR 885-4X SECTOR FLAW (CONTINUED) - 
/ 
5  FORMAT SECTOR FLAW CLEARED 
6  FORMAT TRACK FLAW CLEARED
7  FORMAT TRACK FLAW REMAINS SET
13 FORMAT TRACK FLAW ALREADY CLEAR
15 FORMAT MODULE FMU251 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 MSG 15 TO DISPLAY
   WC=WC-1                        * SET SECTOR
   B1=1                           * SET TRACK 
   B0=841D                        * SET CYLINDER
   B7=238D                        * ZERO FILL 
22 OB(B7)=0 
   B7=B7+1
   IF (B7 NE 502) GOTO 22         * IF NOT DONE CLEARING
   RES DRIVE, ABT 74
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR 
   COPY IB(420) TO OB(0) FOR 36D  * RESET SECTOR FLAWS
   B4=B4-420                      * ADJUST ERROR INDEX
   MSG 5 TO LINE 5
   MSG 7 TO LINE 7
   B5=7                           * SET DISPLAY LINE
   IF (B4 LE 3) GOTO 23           * IF SKIPPED SECTORS LE 2 
   CALL 26A                       * FORMAT TRACK FLAW 
   IF (BA EQ 1) GOTO 74           * IF ERROR
   GOTO 77                        * END OF MODULE 
23 OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0100        * SECTOR FLAWS
   OB(302)=OB(0)
   OB(303)=OB(1)
   OB(304)=0
   OB(305)=OB(2)
   OB(306)=OB(3)
   RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT SECTOR FLAWS 
   MSG 6 TO LINE 7
   IF (B4 EQ 3) GOTO 30           * IF SKIPPED SECTORS EQ 2 
   MSG 13 TO LINE 7 
26 MSG 16 TO LINE 11
   PICTURE
   GOTO 77                        * END OF MODULE 
30 WC=1                           * SET SECTOR
   RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ TRACK FLAWS
   B4=0                           * OB INDEX
   B3=B4+1
   B7=0                           * IB INDEX
32 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 40   * IF END OF FLAW MAP 
33 IF (IB(B7) AND 1777 EQ P1) GOTO 50  * FLAW MAP EQ CYLNDER
34 OB(B4)=IB(B7)
   OB(B3)=IB(B6)
   B4=B4+2                        * INCREMENT OB INDEX
   B3=B4+1
36 B7=B7+2                        * INCREMENT IB INDEX
   IF (B7 LT 240D) GOTO 32        * IF NOT END OF MAP 
40 OB(B4)=0                       * CLEAR REMAINDER 
   B4=B4+1
   IF (B4 LT 502) GOTO 40         * IF NOT DONE CLEARING
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR 
   GOTO 26
50 IF (IB(B6) RS 6 NE P2) GOTO 34      * FLAW MAP NE TRACK
   GOTO 36                        * DELETE TRACK FLAW 
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU26, DEMA2, (14), LOCK
*** 5.2.33 FMU26 - FORMAT 885-4X PACK 
**
*          PURPOSE- 
*          FMU26 FORMATS THE ENTIRE 885-4X PACK EXCEPT THE FLAW MAP 
*          TRACKS.  AFTER FORMATTING, SKIPPED SECTORS AND TRACK FLAWS 
*          ARE SET. 
* 
*          METHOD-
*          FMU26 SETS THE STARTING CYLINDER NUMBER AND THE ENDING 
*          CYLINDER NUMBER IN THE OUTPUT BUFFER.  THE STARTING CYLINDER 
*          IS 0000 AND THE ENDING CYLINDER IS 1512 OCTAL.  FMU26 EXITS
*          TO MODULE FMU261 TO PERFORM THE FORMATTING AND SETTING THE 
*          SKIPPED SECTORS AND TRACK FLAWS. 
* 
*          ENTRY- 
*          FMU26 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE 
*          EXECUTION. 
/ 
*          EXIT-
*          FMU26 EXITS TO MODULE FMU261.  OUTPUT BUFFER LOCATIONS 
*          502 AND 503 CONTAIN THE STARTING AND ENDING CYLINDERS
*          FOR USE BY FMU261. 
* 
*          SUBMODULES REFERENCED- 
*          FMU26 DOES NOT CALL ANY SUBMODULES.
* 
*          REGISTERS USED-
*          FMU26 DOES NOT USE ANY REGISTERS.
* 
*          BUFFERS USED-
*          FMU26 USES TWO LOCATIONS IN THE OUTPUT BUFFER FOR THE
*          STARTING AND ENDING CYLINDERS TO BE FORMATTED.  THEY ARE 
*          SET TO THE VALUES SHOWN BELOW--
*            OB(502) = 0000 - STARTING CYLINDER 
*            OB(503) = 1512 - ENDING CYLINDER 
* 
* 
/  - FORMAT 885-4X PACK - 
/ 
1  FORMAT FORMAT 885-4X PACK - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER 0000 TO 1512 
15 FORMAT MODULE FMU26
17 FORMAT FMU26 PAUSE - FORMAT 885-4X PACK
   EQUATE MAXCYL TO 842D
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 2 TO LINE 3
   MSG 17 TO DISPLAY,PRINT
   PAUSE
   OB(502)=0                      * START CYLINDER
   OB(503)=MAXCYL                 * END CYLINDER
   EXIT TO 261
77 END 20 
COMPILE 
   MODULE FMU261, DEMA2, (14), LOCK 
*** 5.2.34 FMU261 - FORMAT 885-4X PACK (CONTINUED)
**
*          PURPOSE- 
*          FMU261 FORMATS THE 885-4X PACK FROM THE INDICATED STARTING 
*          CYLINDER TO THE INDICATED ENDING CYLINDER.  SKIPPED
*          SECTORS AND TRACK FLAWS ARE THEN SET.
* 
*          METHOD-
*          FMU261 IS ENTERED FROM EITHER FMU26 OR FMU27.  THESE 
*          MODULES BOTH SET UP THE STARTING AND ENDING CYLINDERS
*          IN THE OUTPUT BUFFER.  FMU261 STARTS AT THE ENDING 
*          CYLINDER AND REFORMATS IT WITH NO SKIPPED SECTORS OR 
*          TRACK FLAWS.  THE CYLINDER NUMBER IS THEN DECREMENTED
*          AND THE NEXT CYLINDER IS REFORMATTED.  THIS PROCESS
*          CONTINUES UNTIL ALL CYLINDERS FROM THE ENDING CYLINDER 
*          TO THE STARTING CYLINDER HAVE BEEN FORMATTED.  AT THIS 
*          POINT ALL CYLINDERS IN THE SPECIFIED RANGE WILL HAVE 
*          BEEN FORMATTED WITH NO SKIPPED SECTORS AND NO TRACK
*          FLAWS.  FMU261 READS THE SECTOR FLAW TABLES AND FINDS
*          THE HIGHEST TRACK NUMBER IN THE SPECIFIED RANGE OF 
*          CYLINDERS.  THE SECTOR FLAWS IN THIS TRACK ARE SAVED 
*          IN THE OUTPUT BUFFER.  WHEN THE END OF THE SECTOR FLAW 
*          TABLE IS FOUND, THE LIST OF SECTOR FLAWS IS USED TO
*          REFORMAT THE TRACK.  IF THERE ARE ONLY ONE OR TWO SECTOR 
*          FLAWS, FMU261 REFORMATS THE TRACK WITH THE SECTORS SKIPPED.
*          IF THERE ARE MORE THAN TWO SECTOR FLAWS, FMU261 CALLS
*          SUBMODULE FMU26A TO REFORMAT THE TRACK WITH THE SECTORS
*          SKIPPED AND TRACK FLAW SET.  FMU261 CONTINUES THIS PROCEDURE 
*          UNTIL ALL OF THE TRACKS LISTED IN THE SECTOR FLAW TABLE
*          IN THE SPECIFIED RANGE OF CYLINDERS HAVE BEEN REFORMATTED. 
*          IF THE RANGE AND SECTOR FLAW TABLE INCLUDE THE UTILITY MAP 
*          (CY 1511B, TR 1) AND ITS FLAWS, THAT TRACK IS NOT REFOR- 
*          MATTED.  USE MODULE FMU30 TO REFORMAT THE UTILITY MAP. 
/ 
*          ENTRY- 
*          FMU261 ASSUMES THAT THE STARTING AND ENDING CYLINDER NUMBERS 
*          ARE INITIALLY IN OUTPUT BUFFER LOCATIONS 502 AND 503.
* 
*          EXIT-
*          FMU261 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU261 CALLS SUBMODULE FMU26A TO REFORMAT TRACKS WITH MORE 
*          THAN TWO SKIPPED SECTORS.
*          FMU261 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS 
*          IF AN I/O FUNCTION IS ABORTED. 
* 
*          REGISTERS USED-
*          FMU261 USES REGISTERS B4 TO B7, BA, AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--
*            B4 - SECTOR FLAW INDEX 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
*            BA - ERROR FLAG SET BY SUBMODULE FMU26A
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU261 USES THE INPUT BUFFER FOR FLAW MAPS READ FROM THE 
*          DISK.  OUTPUT BUFFER LOCATIONS 300 TO 306 ARE USED FOR THE 
*          PARAMETERS FOR THE REFORMAT FUNCTION.  OUTPUT BUFFER 
*          LOCATIONS 502 AND 503 CONTAIN THE STARTING AND ENDING
*          CYLINDER NUMBERS.
* 
* 
/  - FORMAT 885-4X PACK (CONTINUED) - 
/ 
1  FORMAT CYLINDER = *OCT 
2  FORMAT PACK FORMATTING COMPLETE
10 FORMAT CY1511 TR 0 OR 1 THREE SECTOR FLAWS NOT ALLOWED 
14 FORMAT FMU261 SET FLAWS CY *OCT
15 FORMAT FMU261 FORMAT CY *OCT 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 MSG 15 (OB(503)) TO DISPLAY
   B5=4                           * SET DISPLAY LINE
   OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) 
   OB(302)=OB(503)
   OB(303)=0
   OB(304)=OB(503)
   OB(305)=0
   OB(306)=0
24 RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT CYLINDER 
   MSG 1 (OB(302)) TO LINE 5
   MSG 15 (OB(302)) TO DISPLAY
   IF (OB(302) EQ OB(502)) GOTO 30     * CYLINDER, START CY 
   OB(302)=OB(302)-1              * NEXT CYLINDER 
   OB(304)=OB(302)
26 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 26     * IF BUSY 
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   GOTO 24                        * CONTINUE FORMATTING 
30 STATUS GENERAL,ABT 74          * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY 
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   OB(500)=OB(503)                * SET LAST FLAW 
   OB(501)=77 
32 OB(0)=0                        * CLEAR CYLINDER
   OB(1)=0                        * CLEAR TRACK 
   B4=0                           * SET FLAW INDEX
   WC=2                           * SET SECTOR
34 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR 
   B7=0                           * RESET IB INDEX
40 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 50   * IF END OF FLAW MAP 
   IF (IB(B7) AND 1777 GT OB(500)) GOTO 44  * FLAW MAP GT LAST FLAW 
   IF (IB(B7) AND 1777 LT OB(500)) GOTO 42  * FLAW MAP LT LAST FLAW 
   IF (IB(B6) RS 6 GE OB(501)) GOTO 44      * FLAW MAP GE LAST FLAW 
42 IF (IB(B7) AND 1777 LT OB(502)) GOTO 44  * FLAW MAP LT START CY
   IF (B4 EQ 0) GOTO 43                   * IF NO FLAWS 
   IF (IB(B7) AND 1777 LT OB(0)) GOTO 44  * FLAW MAP LT NEXT FLAW 
   IF (IB(B7) AND 1777 GT OB(0)) GOTO 43  * FLAW MAP GT NEXT FLAW 
   IF (IB(B6) RS 6 EQ OB(1)) GOTO 64   * FLAW MAP EQ NEXT FLAW
   IF (IB(B6) RS 6 LT OB(1)) GOTO 44   * FLAW MAP LT NEXT FLAW
43 OB(0)=IB(B7) AND 1777          * LOAD PARAMETERS 
   OB(1)=IB(B6) RS 6
   OB(2)=IB(B6) AND 0077
   OB(3)=4000 
   B4=2                           * SET FLAW INDEX
44 B7=B7+2                        * INC IB INDEX
   IF (B7 LT 240D) GOTO 40        * IF NOT END OF SECTOR
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 34         * IF MORE SECTORS 
50 OB(500)=OB(0)                  * SAVE LAST FLAW
   OB(501)=OB(1)
   IF (B4 EQ 0) GOTO 70           * IF NO FLAW
   IF(OB(0).NE.1511B)GOTO 52      * IF NOT CY 1511B,
   IF(OB(1).GT.1) GOTO 52         * IF NOT TR 0 OR 1 CONTINUE 
   IF(B4.GT.3) MSG 10 TO LINE 5   * IF TRACK FLAW AND CY 1511 TR 0 OR 1 
   IF(B4.GT.3) GOTO 71            * IF TRACK FLAW AND CY 1511 TR 0 OR 1 EXIT
   GOTO 54                        * IF TR 0 OR 1 SKIP FORMAT
52 IF(B4.GT.3) GOTO 60            * IF TRACK FLAW 
   OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0100        * SECTOR FLAWS
   OB(302)=OB(0)
   OB(303)=OB(1)
   OB(304)=0
   OB(305)=OB(2)
   OB(306)=OB(3)
   RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT TRACK
   MSG 1 (OB(302)) TO LINE 5
   MSG 14 (OB(302)) TO DISPLAY
54 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 54     * IF BUSY 
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   GOTO 32
60 CALL 26A                       * PROCESS TRACK FLAW
   IF (BA EQ 1) GOTO 74           * IF ERROR
   GOTO 32
64 B4=B4+1                        * INCREMENT COUNTER 
   OB(B4)=IB(B6) AND 0077         * SAVE ANOTHER SECTOR 
   GOTO 44
70 MSG 2 TO LINE 5
71 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * END OF MODULE 
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU26A, DEMA2, (14), LOCK 
*** 5.2.35 FMU26A - PROCESS 885-4X TRACK FLAW (SUBROUTINE)
**
*          PURPOSE- 
*          FMU26A REFORMATS A TRACK ONE SECTOR AT A TIME.  EACH SECTOR
*          IS REFORMATTED WITH BITS SET TO INDICATE EITHER A TRACK FLAW 
*          OR SKIPPED SECTOR. 
* 
*          METHOD-
*          FMU26A IS CALLED BY MODULES FMU241, FMU251, AND FMU261.
*          FMU26A REFORMATS ONE SECTOR AT A TIME BEGINNING WITH SECTOR
*          ZERO.  THE LIST OF SECTORS TO BE SKIPPED IS CHECKED AND IF 
*          THE CURRENT SECTOR IS FOUND IN THE LIST IT IS REFORMATTED
*          AS A SKIPPED SECTOR.  OTHERWISE IT IS REFORMATTED WITH TRACK 
*          FLAW SET.  AS FORMATTING PROGRESSES A COUNT IS KEPT OF BOTH
*          THE PHYSICAL SECTOR AND THE LOGICAL SECTOR.  THE PHYSICAL
*          SECTOR COUNT IS ADVANCED AS EACH SECTOR IS REFORMATTED.
*          THE LOGICAL SECTOR COUNT IS ONLY ADVANCED IF THE SECTOR
*          BEING REFORMATTED IS NOT SKIPPED.  AFTER ALL SECTORS IN THE
*          TRACK HAVE BEEN REFORMATTED AN ERROR FLAG IS CLEARED AND 
*          FMU26A RETURNS TO THE CALLING MODULE.  IF AN I/O FUNCTION
*          IS ABORTED, FMU26A SETS AN ERROR FLAG AND RETURNS TO THE 
*          CALLING MODULE.  THE CALLING MODULE MUST CHECK THE ERROR 
*          FLAG AND DISPLAY DETAILED STATUS IF AN ERROR OCCURS. 
/ 
*          ENTRY- 
*          FMU26A ASSUMES THAT REGISTER B4 INITIALLY CONTAINS THE 
*          INDEX FOR THE END OF THE SKIPPED SECTOR LIST.  THE LIST
*          OF SKIPPED SECTORS IS ASSUMED TO BE IN THE OUTPUT BUFFER.
* 
*          EXIT-
*          FMU26A RETURNS TO THE CALLING MODULE.  REGISTER BA IS SET
*          EQUAL TO ZERO IF REFORMATTING HAS BEEN PERFORMED WITHOUT 
*          ERROR.  REGISTER BA IS SET EQUAL TO ONE IF AN I/O ERROR
*          OCCURS.
* 
*          SUBMODULES REFERENCED- 
*          FMU26A DOES NOT CALL ANY SUBMODULES. 
* 
*          REGISTERS USED-
*          FMU26A USES REGISTERS B0, B1, B4, B7, AND BA.  REGISTERS 
*          ARE USED AS FOLLOWS--
*            B0 - PHYSICAL SECTOR 
*            B1 - LOGICAL SECTOR
*            B4 - INDEX FOR THE END OF THE SKIPPED SECTOR LIST
*            B7 - INDEX FOR THE SKIPPED SECTOR LIST 
*            BA - ERROR FLAG
* 
*          BUFFERS USED-
*          FMU26A USES THE OUTPUT BUFFER FOR HOLDING A LIST OF SECTORS
*          TO BE SKIPPED AND FOR THE PARAMETERS NEEDED BY THE REFORMAT
*          COMMAND.  BUFFER LOCATIONS ARE USED AS FOLLOWS-- 
*            OB(0) - CYLINDER 
*            OB(1) - TRACK
*            OB(2) TO OB(43) - SECTORS TO BE SKIPPED
*            OB(300) TO OB(306) - PARAMETERS FOR REFORMATTING 
* 
* 
/  - PROCESS 885-4X TRACK FLAW (SUBROUTINE) - 
/ 
20 B0=0                           * PHYSICAL SECTOR 
   B1=0                           * LOGICAL SECTOR
22 B7=2                           * SET OB INDEX
24 IF (OB(B7) EQ B0) GOTO 40      * SKIP SEC, PHYS SEC
   B7=B7+1                        * INC LOGICAL SECTOR
   IF (B7 LE B4) GOTO 24          * OB INDEX, OB END
   OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0600        * TRACK FLAW
   OB(302)=OB(0)
   OB(303)=OB(1)
   OB(304)=B0                     * PHYSICAL SECTOR 
   OB(305)=0
   OB(306)=B1                     * LOGICAL SECTOR
   RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT SECTOR 
30 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY 
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   B1=B1+1                        * INC LOGICAL SECTOR
34 B0=B0+1                        * INC PHYSICAL SEC
   IF (B0 LE 33D) GOTO 22         * IF MORE SECTORS 
   BA=0                           * CLEAR ERROR FLAG
   EXIT                           * RETURN
40 OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0200        * SECTOR FLAW 
   OB(302)=OB(0)
   OB(303)=OB(1)
   OB(304)=B0                     * PHYSICAL SECTOR 
   OB(305)=0
   OB(306)=0
   RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT SECTOR 
44 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 44     * IF BUSY 
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   GOTO 34
74 BA=1                           * SET ERROR FLAG
   EXIT                           * RETURN
   END 20 
COMPILE 
   MODULE FMU27, DEMA2, (14), LOCK
*** 5.2.36 FMU27 - FORMAT PARTIAL 885-4X PACK CYLINDRICAL 
**
*          PURPOSE- 
*          FMU27 FORMATS ALL TRACKS OF THE SPECIFIED CYLINDERS OF THE 
*          885-4X PACK.  AFTER FORMATTING, SKIPPED SECTORS AND TRACK
*          FLAWS ARE SET. 
* 
*          METHOD-
*          FMU27 TAKES THE STARTING CYLINDER NUMBER FROM PARAMETER P6 
*          AND THE ENDING CYLINDER FROM PARAMETER P7 AND PLACES THEM IN 
*          THE OUTPUT BUFFER.  FMU27 EXITS TO FMU261 TO PERFORM THE 
*          FORMATTING AND SETTING THE SKIPPED SECTORS AND TRACK FLAWS.
* 
*          ENTRY- 
*          FMU27 REQUIRES PARAMETERS P6 AND P7 TO INDICATE STARTING AND 
*          ENDING CYLINDER FOR FORMATTING.  PARAMETER USAGE AND 
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW-- 
*            P6 - STARTING CYLINDER (0 TO 1512) 
*            P7 - ENDING CYLINDER (0 TO 1512) 
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER OF THE PARAMETERS IS 
*          OUT OF RANGE OR IF P6 IS GREATER THAN P7.
/ 
*          EXIT-
*          FMU27 EXITS TO MODULE FMU261.  OUTPUT BUFFER LOCATIONS 
*          502 AND 503 CONTAIN THE STARTING AND ENDING CYLINDER FOR USE 
*          BY FMU261. 
* 
*          SUBMODULES REFERENCED- 
*          FMU27 DOES NOT CALL ANY SUBMODULES.
* 
*          REGISTERS USED-
*          FMU27 DOES NOT USE ANY REGISTERS.
* 
*          BUFFERS USED-
*          FMU27 USES TWO LOCATIONS IN THE OUTPUT BUFFER FOR THE
*          STARTING AND ENDING CYLINDERS TO BE FORMATTED.  THEY ARE SET 
*          TO THE VALUES SHOWN BELOW--
*            OB(502) = P6 - STARTING CYLINDER 
*            OB(503) = P7 - ENDING CYLINDER 
* 
* 
/  - FORMAT 885-4X PARTIAL PACK CYLINDRICAL - 
/ 
1  FORMAT FORMAT PARTIAL 885-4X PACK CYL - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER *OCT TO *OCT 
3  FORMAT ILLEGAL PARAMETER P6 (MAXIMUM CY = 1512)
4  FORMAT ILLEGAL PARAMETER P7 (MAXIMUM CY = 1512)
5  FORMAT ILLEGAL PARAMETER P7 (P7 IS LESS THAN P6) 
15 FORMAT MODULE FMU27
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU27 PAUSE - FORMAT PARTIAL 885-4X PACK
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 2 (P6,P7) TO LINE 3
   IF (P6 LE 842D) GOTO 24        * IF START CYLINDER 
   MSG 3 TO LINE 5                * ILLEGAL START CYLINDER
22 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
24 IF (P7 LE 842D) GOTO 26        * IF END CYLINDER 
   MSG 4 TO LINE 5                * ILLEGAL END CYLINDER
   GOTO 22
26 IF (P7 GE P6) GOTO 30          * END CY, START CYLINDER
   MSG 5 TO LINE 5                * ILLEGAL END CYLINDER
   GOTO 22
30 MSG 17 TO DISPLAY,PRINT
   PAUSE
   OB(502)=P6                     * START CYLINDER
   OB(503)=P7                     * END CYLINDER
   EXIT TO 261
77 END 20 
COMPILE 
   MODULE FMU28, DEMA2, (14), LOCK
*** 5.2.36A FMU28 - FORMAT PARTIAL 885-4X PACK TRACKWISE
**
*          PURPOSE- 
*          FMU28 FORMATS THE SPECIFIED TRACKS ON ALL CYLINDERS OF THE 
*          885-4X PACK.  AFTER FORMATTING, SKIPPED SECTORS AND TRACK
*          FLAWS ARE SET. 
* 
*          METHOD-
*          FMU28 TAKES THE STARTING TRACK NUMBER FROM PARAMETER P6 AND
*          THE ENDING TRACK FROM PARAMETER P7 AND PLACES THEM IN THE
*          OUTPUT BUFFER.  FMU28 EXITS TO FMU281 TO PERFORM THE FORMAT- 
*          TING AND SETTING OF THE SKIPPED SECTORS AND TRACK FLAWS. 
* 
*          ENTRY- 
*          FMU28 REQUIRES PARAMETERS P6 AND P7 TO INDICATE STARTING AND 
*          ENDING TRACK FOR FORMATTING.  PARAMETER USAGE AND
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW-- 
*            P6 - STARTING TRACK (0 THRU 11B) 
*            P7 - ENDING TRACK (0 THRU 11B) 
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER OF THE PARAMETERS IS 
*          OUT OF RANGE OR IF P6 IS GREATER THAN P7.
/ 
*          EXIT-
*          FMU28 EXITS TO MODULE FMU281.  OUTPUT BUFFER LOCATIONS 
*          502 AND 503 CONTAIN THE STARTING AND ENDING TRACK FOR USE
*          BY FMU281. 
* 
*          SUBMODULES REFERENCED- 
*          FMU28 DOES NOT CALL ANY SUBMODULES.
* 
*          REGISTERS USED-
*          FMU28 DOES NOT USE ANY REGISTERS.
* 
*          BUFFERS USED-
*          FMU28 USES TWO LOCATIONS IN THE OUTPUT BUFFER FOR THE
*          STARTING AND ENDING TRACKS TO BE FORMATTED.  THEY ARE SET
*          TO THE VALUES SHOWN BELOW--
*            OB(502) = P6 - STARTING TRACK
*            OB(503) = P7 - ENDING TRACK
* 
* 
/  - FORMAT 885-4X PARTIAL PACK TRACKWISE - 
/ 
1  FORMAT FORMAT PARTIAL 885-4X PACK TRK-CH=*O, EQ=*O, UN=*O
2  FORMAT TRACK *OB THRU *OB
3  FORMAT ILLEGAL PARAMETER P6 (MAXIMUM TR = 11B) 
4  FORMAT ILLEGAL PARAMETER P7 (MAXIMUM TR = 11B) 
5  FORMAT ILLEGAL PARAMETER P7 (P7 IS LESS THAN P6) 
15 FORMAT MODULE FMU28
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU28 PAUSE - FORMAT PARTIAL 885-1X PACK TRK
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 2 (P6,P7) TO LINE 3
   IF (P6 LE 11B) GOTO 24         * IF START TRACK
   MSG 3 TO LINE 5                * ILLEGAL START CYLINDER
22 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
24 IF (P7 LE 11B) GOTO 26         * IF END TRACK
   MSG 4 TO LINE 5                * ILLEGAL END CYLINDER
   GOTO 22
26 IF (P7 GE P6) GOTO 30          * END CY, START CYLINDER
   MSG 5 TO LINE 5                * ILLEGAL END CYLINDER
   GOTO 22
30 MSG 17 TO DISPLAY,PRINT
   PAUSE
   OB(502)=P6                     * START CYLINDER
   OB(503)=P7                     * END CYLINDER
   EXIT TO 281
77 END 20 
COMPILE 
   MODULE FMU281, DEMA2, (14), LOCK 
*** 5.2.13B FMU281 - FORMAT 885-4X PACK TRACKWISE (CONTINUED) 
**
*          PURPOSE- 
*          FMU281 FORMATS THE 885-4X PACK TRACKWISE FROM THE INDICATED
*          STARTING TRACK TO THE INDICATED ENDING TRACK.  SKIPPED 
*          SECTORS AND TRACK FLAWS ARE THEN SET.
* 
*          METHOD-
*          FMU281 IS ENTERED FROM FMU28.  THAT MODULE SETS UP THE 
*          STARTING AND ENDING TRACKS IN THE OUTPUT BUFFER.  FMU281 
*          STARTS AT THE CYLINDER 1512B AND REFORMATS ALL SPECIFIED 
*          TRACKS WITH NO SKIPPED SECTORS OR TRACK FLAWS.  THE CYLINDER 
*          NUMBER IS THE DECREMENTED AND ALL SPECIFIED TRACKS OF THE NEXT TRACK 
*          NEXT CYLINDER ARE REFORMATTED.  THIS PROCESS 
*          CONTINUES UNTIL ALL CYLINDERS HAVE BEEN FORMATTED.  AT THIS
*          POINT ALL TRACKS IN THE SPECIFIED RANGE WILL HAVE
*          BEEN FORMATTED WITH NO SKIPPED SECTORS AND NO TRACK
*          FLAWS.  FMU281 READS THE SECTOR FLAW TABLES AND FINDS
*          THE HIGHEST CYLINDER AND TRACK NUMBER IN THE SPECIFIED RANGE 
*          OF TRACKS.  THE SECTOR FLAWS IN THIS TRACK ARE SAVED 
*          IN THE OUTPUT BUFFER.  WHEN THE END OF THE SECTOR FLAW 
*          TABLE IS FOUND, THE LIST OF SECTOR FLAWS IS USED TO
*          REFORMAT THE TRACK.  IF THERE ARE ONLY ONE OR TWO SECTOR 
*          FLAWS, FMU281 REFORMATS THE TRACK WITH THE SECTORS SKIPPED.
*          IF THERE ARE MORE THAN TWO SECTOR FLAWS, FMU281 CALLS
*          SUBMODULE FMU26A TO REFORMAT THE TRACK WITH THE SECTORS
*          SKIPPED AND TRACK FLAW SET.  FMU281 CONTINUES THIS PROCEDURE 
*          UNTIL ALL OF THE TRACKS LISTED IN THE SECTOR FLAW TABLE
*          IN THE SPECIFIED RANGE OF TRACKS HAVE BEEN REFORMATTED.
*          IF THE RANGE AND SECTOR FLAW TABLE INCLUDE THE UTILITY MAP 
*          (CY 1511B, TR 1) AND ITS FLAWS, THAT TRACK IS NOT REFOR- 
*          MATTED.  USE MODULE FMU30 TO REFORMAT THE UTILITY MAP. 
/ 
*          ENTRY- 
*          FMU281 ASSUMES THAT THE STARTING AND ENDING TRACK NUMBERS
*          ARE INITIALLY IN OUTPUT BUFFER LOCATIONS 502 AND 503.
* 
*          EXIT-
*          FMU281 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU281 CALLS SUBMODULE FMU26A TO REFORMAT TRACKS WITH MORE 
*          THAN TWO SKIPPED SECTORS.
*          FMU281 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS 
*          IF AN I/O FUNCTION IS ABORTED. 
* 
*          REGISTERS USED-
*          FMU281 USES REGISTERS B4 TO B7, BA, AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--
*            B4 - SECTOR FLAW INDEX 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
*            BA - ERROR FLAG SET BY SUBMODULE FMU26A
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU281 USES THE INPUT BUFFER FOR FLAW MAPS READ FROM THE 
*          DISK.  OUTPUT BUFFER LOCATIONS 300 TO 306 ARE USED FOR THE 
*          PARAMETERS FOR THE REFORMAT FUNCTION.  OUTPUT BUFFER 
*          LOCATIONS 502 AND 503 CONTAIN THE STARTING AND ENDING
*          TRACK NUMBERS. 
* 
* 
/  - FORMAT 885-4X PACK TRACKWISE (CONTINUED) - 
/ 
1  FORMAT CYLINDER = *OCTB, TRACK = *OB 
2  FORMAT PACK FORMATTING COMPLETE
14 FORMAT FMU281 SET FLAWS CY *OCTB TR *OB
15 FORMAT FMU281 FORMAT CY *OCTB TR *OB 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 MSG 15 (842D,OB(503)) TO DISPLAY 
   B5=4                           * SET DISPLAY LINE
   OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0100B       * FORMAT ONE TRACK
   OB(302)=842D                   * CYLINDER
   OB(303)=OB(503)                * TRACK 
   OB(304)=0                      * NOT USED
   OB(305)=4000B                  * NO DEFECTIVE SECTORS
   OB(306)=0                      * NOT USED
22 RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT TRACK
   MSG 1 (OB(302),OB(303)) TO LINE 5
   MSG 15 (OB(302),OB(303)) TO DISPLAY
   IF (OB(303) EQ OB(502)) GOTO 30  * IF ALL TRACKS DONE, 
24 OB(303)=OB(303)-1              * NEXT TRACK
   IF (OB(302) NE 1511B) GOTO 26  * IF NOT UTILITY TRACK, 
   IF (OB(303) EQ 1) GOTO 24      * IF UTILITY TRACK, 
26 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 26     * IF BUSY 
   IF (SB NE 0) GOTO 74           * IF AN ERROR 
   GOTO 22                        * CONTINUE FORMATTING 
30 OB(303)=OB(503)                * RESET TRACK 
   IF (OB(302) EQ 0) GOTO 32      * IF ALL CYLINDERS DONE,
   OB(302)=OB(302)-1              * NEXT CYLINDER 
   GOTO 26                        * CONTINUE FORMATTING 
32 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 32     * IF BUSY 
   IF (SB NE 0) GOTO 74           * IF AN ERROR 
   OB(500)=1512B                  * SET LAST FLAW CYLINDER
   OB(501)=OB(503)                * SET LAST FLAW TRACK 
34 OB(0)=0                        * CLEAR CYLINDER
   OB(1)=0                        * CLEAR TRACK 
   B4=0                           * SET FLAW INDEX
   WC=2                           * SET SECTOR
36 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR 
   B7=0                           * RESET IB INDEX
40 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 50    * IF END OF FLAW MAP
   IF(IB(B7) AND 1777 GT OB(500))GOTO 44  * FLAW MAP GT LAST
   IF(IB(B7) AND 1777 LT OB(500))GOTO 42  * FLAW MAP LT LAST
   IF(IB(B6) RS 6 GE OB(501))GOTO 44  *FLAW MAP GE LAST FLAW
42 IF(IB(B6) RS 6 GT OB(503))GOTO 44  * FLAW MAP GT LAST TR 
   IF(IB(B6) RS 6 LT OB(502))GOTO 44  * FLAW MAP LT START TR
   IF (B4 EQ 0) GOTO 43               * IF NO FLAWS 
   IF (IB(B7) AND 1777 LT OB(0)) GOTO 44  * FLAW MAP LT NEXT
   IF (IB(B7) AND 1777 GT OB(0)) GOTO 43  * FLAW MAP GT NEXT
   IF (IB(B6) RS 6 EQ OB(1)) GOTO 64      * FLAW MAP EQ NEXT
   IF (IB(B6) RS 6 LT OB(1)) GOTO 44      * FLAW MAP LT NEXT
43 OB(0)=IB(B7) AND 1777          * LOAD PARAMETERS,CYLINDER
   OB(1)=IB(B6) RS 6              * TRACK 
   OB(2)=IB(B6) AND 0077          * SECTOR
   OB(3)=4000                     * NO SECOND SECTOR FLAW 
   B4=2                           * SET FLAW INDEX
44 B7=B7+2                        * INC IB INDEX
   IF (B7 LT 240D) GOTO 40        * IF NOT END OF SECTOR
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 36         * IF MORE SECTORS 
50 OB(500)=OB(0)                  * SAVE LAST FLAW, CYLINDER
   OB(501)=OB(1)                  * TRACK 
   IF (B4 EQ 0) GOTO 70           * IF NO FLAW
   IF (B4 GT 3) GOTO 60           * IF TRACK FLAW 
   IF(OB(0).NE.1511B)GOTO 52      * IF NOT CY 1511B,
   IF(OB(1).EQ.1) GOTO 54         * IF TR 1, SKIP FORMAT
52 OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0100        * FORMAT ONE TRACK
   OB(302)=OB(0)                  * CYLINDER
   OB(303)=OB(1)                  * TRACK 
   OB(304)=0                      * NOT USED
   OB(305)=OB(2)                  * FIRST DEFECTIVE SECTOR
   OB(306)=OB(3)                  * SECOND DEFECTIVE SECTOR 
   RES DRIVE, ABT 74              * RESERVE DRIVE 
   REFORM OB(300), ABT 74         * FORMAT TRACK
   MSG 1 (OB(302),OB(303)) TO LINE 5
   MSG 14 (OB(302),OB(303)) TO DISPLAY
54 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 54     * IF BUSY 
   IF (SB NE 0) GOTO 74           * IF AN ERROR 
   GOTO 34
60 CALL 26A                       * PROCESS TRACK FLAW
   IF (BA EQ 1) GOTO 74           * IF ERROR
   GOTO 34
64 B4=B4+1                        * INCREMENT COUNTER 
   OB(B4)=IB(B6) AND 0077         * SAVE ANOTHER SECTOR 
   GOTO 44
70 MSG 2 TO LINE 5
   MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * END OF MODULE 
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
*IF,-DEF,CMSE17X
   MODULE FMU29, DEMA2, (14), LOCK
*** 5.2.13C - SAVE DATA, FLAW SECTOR, RESTORE DATA (885-4X) 
**
*         PURPOSE-
*         THE FMD HAS 34 PHYSICAL SECTORS, BUT ONLY 32 ARE USED BY
*         THE SYSTEM.  FMU29 REQUIRES A MINIMUM ACCESS LEVEL OF THREE 
*         OTHERWISE AN ERROR IS DISPLAYED.  IF NOT IT IS POSSIBLE TO
*         BE SET AND THE TABLE IS NOT FULL.  A LOGICAL SECTOR PARAMETER 
*         IS CONVERTED TO A PHYSICAL SECTOR NUMBER.  IF NO ERROR
*         CONDITION IS FOUND, FMU29 EXITS TO FMU291.
*         SET THE FLAW WITH AL=4, WITHOUT DESTROYING ANY DATA WITH
*         FMU291.  IF P4.EQ.0, THE LOGICAL FLAW INFORMATION FROM HPA
*         IS CONVERTED TO A PHYSICAL FLAW IF P4=0.
* 
*         METHOD- 
*         FMU29 READS THE SECTOR FLAW TABLE FROM CYLINDER 841, TRACK 1, 
*         SECTOR 2 THRU 18.  A TEST IS MADE TO SEE IF A SECTOR FLAW CAN 
*         BE SET AND THE TABLE IS NOT FULL.  A LOGICAL SECTOR PARAMETER 
*         IS CONVERTED TO A PHYSICAL SECTOR NUMBER.  IF NO ERROR
*         CONDITION IS FOUND, FMU29 EXITS TO FMU291.
* 
*         ENTRY-
*         FMU29 REQUIRES PARAMETERS P1,P2,P3 AND P4 TO BE SET TO
*         INDICATE THE SECTOR TO BE FLAWED AND LOGICAL/PHYSICAL 
*         INDICATION.   PARAMETER USAGE AND ALLOWED OCTAL VALUES ARE
*         SHOWN BELOW-- 
*           P1 - CYLINDER (0 TO 1512) 
*           P2 - TRACK    (0 TO 11) 
*           P3 - SECTOR   (0 TO 41) FOR PHYSICAL SECTOR 
*                         (0 TO 37) FOR LOGICAL SECTOR NUMBER 
*           P4 - LOG/PHY   0 FOR LOGICAL SECTOR NUMBER
*                          1 FOR PHYSICAL SECTOR NUMBER 
*         AN ERROR MESSAGE IS DISPLAYED IF ANY OF THE PARAMETERS ARE
*         OUT OF RANGE. 
/ 
*         EXIT- 
*         FMU29 EXITS TO FMU291. REGISTER B5 CONTAINS THE K-DISPLAY 
*         LINE NUMBER.
* 
*         SUBMODULES REFERENCED-
*         FMU29 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF
*         AN I/O FUNCTION IS ABORTED. 
* 
*         REGISTERS USED- 
*         FMU29 USES REGISTERS B4, B5, B6, B7, B9 TO B14 AND WC.
*           B4   - SECTOR ERROR INDEX 
*           B5   - K-DISPLAY LINE NUMBER
*           B6   - INPUT BUFFER INDEX 
*           B7   - INPUT BUFFER INDEX 
*           B9   - FREE FLAW SPACES IN TABLE
*           B10  - SECTOR TO FLAW 
*           B11  - FLAG 
*           B12  - TRACK/SECTOR ENTRY 
*           B13  - OFFSET IN UTILITY SECTOR 
*           B14  - LAST UTILITY SECTOR USED 
*           WC   - SECTOR 
* 
* 
*         BUFFERS USED- 
*         FMU29 USES THE INPUT BUFFER FOR FLAW TABLES READ FROM THE 
*         DRIVE. THE OUTPUT BUFFER IS USED FOR TEMPORARY STORAGE. 
* 
* 
/  - TEST FOR SPARE SECTOR -
/ 
0  FORMAT FLAW ALREADY SET
1  FORMAT FMU29 PAUSE - GO TO SAVE DATA 
2  FORMAT TEST 885-4X SECTOR FLAW - CH=*O, EQ=*O, UN=*O 
3  FORMAT AT POSITION    CY=*OCT,  TR=*O, SE=*O,P4=*OCT 
4  FORMAT *DEC ADDITIONAL FLAWS CAN BE SET. 
5  FORMAT ACCESS LEVEL TOO LOW. 
6  FORMAT PHYSICAL FLAW CY=*OCT, TR=*O, SE=*O 
7  FORMAT FMU29 PAUSE - GO TO TEST FOR SPARE SECTOR 
10 FORMAT ERROR - 2 - SECTOR FLAWS SET / DUMP REQUIRED
11 FORMAT ERROR - FLAW MAP FULL 
12 FORMAT ILLEGAL PARAMETER P1 (MAXIMUM CY =1512B)
13 FORMAT ILLEGAL PARAMETER P2 (MAXIMUM TR =11B)
14 FORMAT ILLEGAL PARAMETER P3 (MAXIMUM SE =41B)
15 FORMAT ILLEGAL PARAMETER P3 (MAXIMUM SE =37B)
16 FORMAT MODULE FMU29
17 FORMAT - - - - - - - - - - - - - - - - - - - - - 
20 BLANK
   MSG 16 TO LINE 1 
   IF (AL GE 3) GOTO 22           * IF VALID ACCESS LEVEL 
21 MSG 5 TO LINE 6                * ACCESS LEVEL TOO LOW
   GOTO 23
22 IF (P1 LE 1512) GOTO 24        * IF VALID CYLINDER 
   MSG 12 TO LINE 6               * ILLEGAL CYLINDER
23 MSG 17 TO LINE 7 
   GOTO 77
24 IF (P2 LE 11) GOTO 25          * IF VALID TRACK
   MSG 13 TO LINE 6               * ILLEGAL TRACK 
   GOTO 23
25 IF (P4 EQ 0) GOTO 26           * ILLEGAL SECTOR
   IF (P3 LE 41) GOTO 30          * IF LEGAL SECTOR 
   MSG 14 TO LINE 6 
   GOTO 23
26 IF (P3 LE 37) GOTO 30          * IF LEGAL SECTOR 
   MSG 15 TO LINE 6 
   GOTO 23
30 MSG 2 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 3 (P1,P2,P3,P4) TO LINE 3
   MSG 7 TO DISPLAY, PRINT
   PAUSE
   B5=6                           * SET DISPLAY LINE
/   PREPARE UTILITY SECTOR FORMAT 
   OB(2)=P3                       * SET SECTOR
   OB(3)=4000                     * NO DEF SECTOR 
   B4=2                           * BUFFER INDEX
   B9=2040D                       * MAX ENTRIES 
   WC=2                           * STARTING SECTOR 
/   CHECK IF FLAW SETTING IS POSSIBLE 
34 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR 
   REL, ABT 74
   B7=0                           * INPUT BUFFER INDEX
35 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 41   * IF END OF FLAW MAP 
   IF (IB(B7) AND 1777 EQ P1) GOTO 40  * FLAW MAP .EQ. CYL
37 GOTO 35 WHILE (B7 + 2 LT 240D)  * IF NOT END OF SECTOR 
   B9=B9-120D                     * SUBTRACT ENTRIES
   GOTO 34 WHILE(WC + 1 LE 18)    * IF MORE SECTORS 
   GOTO 52                        * FLAW MAP FULL 
40 IF (IB(B6) RS 6 NE P2) GOTO 37  * FLAW MAP .NE. TRACK
   GOTO 53 WHILE(B4 + 1 EQ 4)     * IF 2 SECTOR FLAWS 
   OB(B4)=IB(B6) AND 0077         * SAVE SECTOR 
   GOTO 37                        * TRY NEXT ENTRY
/   CONVERT TO PHYSICAL FLAW AND SAVE VALUES
41 IF (B4 EQ 2) GOTO 42           * NO ADDITIONAL FLAW
   IF (P4 NE 0) GOTO 42           * PHYSICAL FLAW 
   IF (OB(3) GT P3) GOTO 42       * IF PHYSICAL.EQ.LOGICAL, 
   B4=P3+1                        * ELSE, INCREMENT SECTOR
   GOTO 43
42 B4=P3
   IF (OB(3).EQ.P3) GOTO 51       * IF FLAW ALREADY SET,
43 B14=WC                         * SAVE UTILITY SECTOR 
   B13=B7                         * SAVE OFFSET 
   B12=P2 LS 6
   B12=B12 XOR B4                 * SAVE TRACK/SECTOR ENTRY 
   B11=OB(3)                      * SAVE FLAG OR OTHER SECTOR 
   B10=B4                         * SAVE SECTOR TO FLAW 
   B4=B7 RS 1                     * DIVIDE BY 2 
   B9=B9-B4                       * CALCULATE ENTRIES 
   MSG 6(P1,P2,B10) TO LINE 4 
   MSG 4(B9) TO LINE 5
   MSG 1 TO DISPLAY, PRINT
   PAUSE
   IF (AL LT 4) GOTO 21 
   EXIT TO 291
/   ERROR PROCESSING
51 MSG 0 TO LINE 6                * FLAWED ALREADY ERROR
   MSG 3 (P1,P2,P3,P4) TO LINE 7
   MSG 17 TO LINE 10
   GOTO 77
52 MSG 11 TO LINE 6 
   GOTO 23
53 MSG 10 TO LINE 6 
   GOTO 23
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   MSG 17 TO LINE B5
77 PICTURE
   END 20 
COMPILE 
   MODULE FMU291, DEMA3, (14), LOCK 
*** 5.2.13D - SAVE DATA, FLAW SECTOR, RESTORE DATA (CONTINUED)
**
*         PURPOSE-
*         FMU291 SAVES DATA, FORMATS THE TRACK AND REWRITES THE DATA. 
* 
*         METHOD- 
*         FMU291 IS ENTERED FROM FMU29 WHEN IT IS POSSIBLE TO SET 
*         A SECTOR FLAW.
*         FMU291 READS THE DATA IN THE TRACK WHICH SHOULD RECEIVE THE 
*         FLAW AND WRITES THEM TO CYLINDER 1512 TRACK 11 SECTOR 0-37. 
*         THE DEFECTIVE TRACK IS REFORMATED AND THE DATA IS RESTORED AT 
*         THE ORIGINAL TRACK. 
* 
*         ENTRY-
*         FMU291 MAKES USE OF PARAMETERS P1 AND P2 AS DEFINED FOR 
*         MODULE FMU29. 
* 
/ 
*         EXIT- 
*         FMU291 TERMINATES WITH AN END STATMENT. 
* 
*         SUBMODULES REFERENCED-
*         FMU291 CALLS SUBMODULE 98I TO DISPLAY DETAILED STATUS IF
*         AN I/O FUNCTION IS ABORTED. 
* 
*         REGISTERS USED- 
*         FMU291 USES REGISTERS B0, B1, B2, B3, B4, B5, B6, B7, B8, 
*         B10, B11, B12, B13, B14 AND WC. 
*         REGISTERS ARE USED AS FOLLOWS-- 
*           B0  - INDEX FOR CLEARING THE END OF THE BUFFER AND
*                 SECTORS TO READ/WRITE.
*           B1  - CYLINDER
*           B2  - TRACK 
*           B3  - STARTING SECTOR 
*           B4  - ERROR COUNTER 
*           B5  - K-DISPLAY LINE NUMBER 
*           B6  - DEFECTIVE TRACK 
*           B7  - DEFECTIVE CYLINDER
*           B8  - ERROR INDICATOR 
*           B10 - SECTOR TO FLAW
*           B11 - FLAG
*           B12 - TRACK/SECTOR ENTRY
*           B13 - OFFSET IN UTILITY SECTOR
*           B14 - LAST UTILITY SECTOR USED
*           WC  - SECTOR
* 
*         BUFFER USED-
*         FMU291 USES THE INPUT BUFFER AND OUTPUT BUFFER FOR DATA 
*         TRANSFERS TO/FROM SAVE AREA AND TO FORMAT THE TRACK.
* 
* 
/  - SAVE DATA, SET FLAW, RESTORE DATA -
/ 
1  FORMAT UPDATE UTILITY SECTOR *OCT
2  FORMAT UNRECOVERED ERROR DURING SAVING. GO OR DROP 
3  FORMAT DATA SAVING COMPLETE. GO TO SET FLAW
4  FORMAT RESTORING COMPLETE. 
5  FORMAT CHECK P3=*OCT.  TYPE GO OR RERUN FMU29
6  FORMAT RESTORING  CY=*OCT TR=*OCT SE=*OCT
7  FORMAT SAVING     CY=*OCT TR=*OCT SE=*OCT
10 FORMAT FORMATING CY=*OCT TR=*OCT 
11 FORMAT CY=*OCT TR=*OCT SE=*OCT   DEFECTIVE 
16 FORMAT FMU29 PAUSE - GO TO SET SECTOR DATA TO 3333B
17 FORMAT FMU29 PAUSE - GO TO FLAW AND RESTORE DATA 
/   INITIALIZE REGISTERS FOR DATA SAVING
20 B1=1512                        * SET MAINT. REGISTER 
   B2=11                          * SET ALTERNATE TRACK 
   B3=0                           * SET STARTING SECTOR 
   B6=P2                          * SET DEFECTIVE TRACK 
   B7=P1                          * SET DEFECTIVE CYLINDER
   B4=0                           * CLEAR ERROR FLAG
23 MSG 7(B7,B6,B3) TO DISPLAY 
/   MOVE AND VERIFY DATA ON MAINT. CYLINDER 
   RES DRIVE, ABT 65
   B0=1                           * SET NR OF SECTORS 
   READ TO ESM B0 SEC AT CYL B7 TRK B6 SEC B3, ABT 74 
24 B0=1                           * SET NR OF SECTORS 
   RES DRIVE, ABT 65
   WRITE FROM ESM B0 SEC AT CYL B1 TRK B2 SEC B3, ABT 65
   B0=1                           * SET NR OF SECTORS 
   VERIFY FROM ESM B0 SEC AT CYL B1 TRK B2 SEC B3, ABT 65 
   GOTO 23 WHILE (B3 + 1 LT 40) 
   IF (B4 NE 0) GOTO 25           * IF NOT FIRST PASS 
   MSG 3 TO LINE B5 
   B5=B5+1
   MSG 17 TO DISPLAY, PRINT 
   PAUSE
25 EXIT TO 292
/   ERROR PROCESSING
65 B8=0                           * SET NORMAL ERROR EXIT 
66 CALL 98I 
   IF (B8 EQ 0) GOTO 77 
   IF (B8 LT 33) GOTO 24
   MSG 2 TO LINE B5 
   B5=B5+1
   MSG 16 TO DISPLAY, PRINT 
   PAUSE
   DUP 3333 TO OB(2) FOR 500      * FLAG UNREADABLE SECTOR
   B9 = 0 
   SYSREW ESM 
67 SYSWR ESM                      * SEND TO ESM BUFFER
   GOTO 67 WHILE (B9+1.LT.3)      * REPEAT FOR 3 BLOCKS 
   GOTO 24
74 B8=SB(52)                      * SET RETRY COUNT 
   IF (B8 NE 0) GOTO 75           * DATA FIELD ERROR
   B8=33                          * SET UNREADABLE SECTOR 
   DUP 0000 TO OB FOR 2           * FLAG EOI OR ZERO DATA 
75 B4=B4+1                        * COUNT THE ERROR 
   MSG 11(B7,B6,B3) TO LINE B5
   B5=B5+1
   IF (B3 EQ B10) GOTO 66 
   MSG 5(P3) TO LINE B5 
   B5=B5+1
   GOTO 66
77 PICTURE
   END 20 
COMPILE 
   MODULE FMU292, DEMA2, (14), LOCK 
*** 5.2.13E - SAVE DATA, FLAW SECTOR, RESTORE DATA (CONTINUED)
**
*         PURPOSE-
*         FMU292 SAVES DATA, FORMATS THE TRACK AND REWRITES THE DATA. 
* 
*         METHOD- 
/  - SAVE DATA, SET FLAW, RESTORE DATA -
/ 
1  FORMAT UPDATE UTILITY SECTOR *OCT
2  FORMAT UNRECOVERED ERROR DURING SAVING. GO OR DROP 
3  FORMAT DATA SAVING COMPLETE. GO TO SET FLAW
4  FORMAT RESTORING COMPLETE. 
5  FORMAT CHECK P3=*OCT.  TYPE GO OR RERUN FMU29
6  FORMAT RESTORING  CY=*OCT TR=*OCT SE=*OCT
7  FORMAT SAVING     CY=*OCT TR=*OCT SE=*OCT
10 FORMAT FORMATING CY=*OCT TR=*OCT 
11 FORMAT CY=*OCT TR=*OCT SE=*OCT   DEFECTIVE 
16 FORMAT FMU29 PAUSE - GO TO SET SECTOR DATA TO 3333B
17 FORMAT FMU29 PAUSE - GO TO FLAW AND RESTORE DATA 
/   UPDATE UTILITY SECTOR 
25 RES DRIVE, ABT 65
   WC=B14                         * LAST U. MAP SECTOR
   GET UTILITY SECTOR WC, ABT 65
   COPY IB TO OB FOR 502
   OB(B13)=P1 XOR 4000            * ADD CYLINDER ENTRY
   B0=B13+1                       * INCREMENT OFFSET
   OB(B0)=B12                     * ADD TRACK/SECTOR ENTRY
   B0=B0+1                        * INCREMENT INDEX 
40 OB(B0)=0                       * CLEAR END OF BUFFER 
   GOTO 40 WHILE(B0 + 1 LT 502)   * INCREMENT INDEX 
   B1=1511                        * SET UTILITY CYLINDER
   B2=1                           * SET UTILITY TRACK 
   MSG 1(WC) TO DISPLAY 
   WRPRO CYL B1 TRK B2 SEC WC, ABT 65 
   IF (B13 LT 500) GOTO 41        * SECTOR NOT FULL 
   WC=WC+1                        * INCREMENT SECTOR
   IF (WC GT 18) GOTO 41          * NO MORE SECTORS 
   B0=0                           * RESET SECTOR INDEX
   GOTO 40                        * WRITE ZERO SECTOR 
/   FORMAT DEFECTIVE TRACK
41 OB(1)=0                        * PARAMS FOR FORMATING
   OB(2)=SB(63) XOR 0100
   OB(3)=P1 
   OB(4)=P2 
   OB(5)=0
   OB(6)=B10
   OB(7)=B11
   MSG 10(P1,P2) TO LINE B5 
   B5=B5+1
   RES DRIVE, ABT 65
   REFORM OB(1), ABT 65           * FORMAT TRACK
45 STATUS GENERAL, ABT 65 
   IF (SB AND 2 NE 0) GOTO 45     * IF NOT FINISHED 
   EXIT TO 293
/   ERROR PROCESSING
65 B8=0                           * SET NORMAL ERROR EXIT 
66 CALL 98E 
77 PICTURE
   END 25 
COMPILE 
   MODULE FMU293, DEMA3, (14), LOCK 
*** 5.2.13F - SAVE DATA, FLAW SECTOR, RESTORE DATA (CONTINUED)
**
*         PURPOSE-
*         FMU293 SAVES DATA, FORMATS THE TRACK AND REWRITES THE DATA. 
* 
*         METHOD- 
/  - SAVE DATA, SET FLAW, RESTORE DATA -
/ 
1  FORMAT UPDATE UTILITY SECTOR *OCT
2  FORMAT UNRECOVERED ERROR DURING SAVING. GO OR DROP 
3  FORMAT DATA SAVING COMPLETE. GO TO SET FLAW
4  FORMAT RESTORING COMPLETE. 
5  FORMAT CHECK P3=*OCT.  TYPE GO OR RERUN FMU29
6  FORMAT RESTORING  CY=*OCT TR=*OCT SE=*OCT
7  FORMAT SAVING     CY=*OCT TR=*OCT SE=*OCT
10 FORMAT FORMATING CY=*OCT TR=*OCT 
11 FORMAT CY=*OCT TR=*OCT SE=*OCT   DEFECTIVE 
16 FORMAT FMU29 PAUSE - GO TO SET SECTOR DATA TO 3333B
17 FORMAT FMU29 PAUSE - GO TO FLAW AND RESTORE DATA 
46 B1=1512                        * SET MAINT. CYLINDER 
   B2=11                          * SET ALTERNATE TRACK 
   B3=0                           * SET STARTING SECTOR 
47 MSG 6(B7,B6,B3) TO DISPLAY 
/   RESTORE CUSTOMER DATA 
   RES DRIVE, ABT 65
   B0=1                           * SET NR OF SECTORS 
   READ TO ESM B0 SEC AT CYL B1 TRK B2 SEC B3, ABT 65 
   B0=1                           * SET NR OF SECTORS 
   WRITE FROM ESM B0 SEC AT CYL B7 TRK B6 SEC B3, ABT 65
   B0=1                           * SET NR OF SECTORS 
   VERIFY FROM ESM B0 SEC AT CYL B7 TRK B6 SEC B3, ABT 65 
   GOTO 47 WHILE(B3 + 1 LT 40)
   MSG 4 TO LINE B5 
   GOTO 77
/   ERROR PROCESSING
65 B8=0                           * SET NORMAL ERROR EXIT 
66 CALL 98I 
77 PICTURE
   END 46 
COMPILE 
*ENDIF
*IF -DEF,MVE
   MODULE FMU30, DEMA2, (14), LOCK
*** 5.2.37 FMU30 - FORMAT 885-4X UTILITY TRACK
**
*          PURPOSE- 
*          FMU30 FORMATS CYLINDER 1511, TRACK 1 ON THE ASSIGNED DRIVE.
*          UP TO TWO SECTORS ON THIS TRACK MAY BE SKIPPED.
*          NOTE THAT FORMATTING THIS TRACK DESTROYS THE UTILITY FLAW
*          MAP.  THE UTILITY FLAW MAP MAY BE RESTORED FROM ARCHIVED FLAW
*          MAPS BY RUNNING FMU34. 
* 
*          METHOD-
*          FMU30 CHECKS PARAMETERS AND THEN REFORMATS THE TRACK ONE 
*          SECTOR AT A TIME BEGINNING WITH SECTOR ZERO.  IF THE CURRENT 
*          SECTOR IS LISTED IN PARAMETER P8 OR P9 IT IS FORMATTED AS A
*          SKIPPED SECTOR.  OTHERWISE IT IS FORMATTED AS A MAP SECTOR.
*          AS FORMATTING PROGRESSES A COUNT IS KEPT OF BOTH THE 
*          PHYSICAL SECTOR AND THE LOGICAL SECTOR.  THE PHYSICAL SECTOR 
*          COUNT IS ADVANCED AS EACH SECTOR IS FORMATTED.  THE LOGICAL
*          SECTOR COUNT IS ONLY ADVANCED IF THE SECTOR BEING FORMATTED
*          IS NOT SKIPPED.
* 
*          ENTRY- 
*          FMU30 REQUIRES PARAMETERS P8 AND P9 TO INDICATE SECTORS TO BE
*          SKIPPED DURING FORMATTING.  UP TO TWO SECTORS MAY BE SKIPPED 
*          BY SETTING THE PARAMETERS AS FOLLOWS-- 
*            NO SKIPPED SECTORS - P8 = 0 AND P9 = 0 
*            ONE SKIPPED SECTOR - P8 = SECTOR (0 TO 41) AND P9 = 4000 
*            TWO SKIPPED SECTORS - P8 = SECTOR (0 TO 41) AND
*                                  P9 = SECTOR (0 TO 41)
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER PARAMETER IS NOT 
*          VALID OR IF P8 AND P9 ARE EQUAL AND NON-ZERO.
/ 
*          EXIT-
*          FMU30 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU30 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU30 USES REGISTERS B0, B1, B2, AND B5.  REGISTERS ARE USED 
*          AS FOLLOWS-- 
*            B0 - PHYSICAL SECTOR 
*            B1 - LOGICAL SECTOR
*            B2 - SKIP FLAG 
*            B5 - K DISPLAY LINE NUMBER 
* 
*          BUFFERS USED-
*          FMU30 USES THE OUTPUT BUFFER FOR PARAMETERS NEEDED BY THE
*          REFORMAT COMMAND.  BUFFER LOCATIONS USED ARE AS FOLLOWS--
*            OB(300) TO OB(306) - PARAMETERS FOR FORMATTING 
* 
* 
/  - FORMAT 885-4X UTILITY TRACK -
/ 
1  FORMAT ILLEGAL PARAMETER P8 (MAXIMUM SE=41)
2  FORMAT ILLEGAL PARAMETER P9 (MAXIMUM SE=41)
3  FORMAT ILLEGAL PARAMETER P9 (P9 IS EQUAL TO P8)
5  FORMAT FORMAT 885-4X UTILITY TRACK - CH=*O, EQ=*O, UN=*O 
6  FORMAT SKIP SECTOR *O
7  FORMAT SKIP SECTOR *O AND *O 
10 FORMAT NO SKIPPED SECTORS
11 FORMAT UTILITY TRACK FORMATTING COMPLETE 
12 FORMAT -- WARNING -- WARNING -- WARNING -- 
13 FORMAT  GO -- WILL DESTROY THE UTILITY MAPS
15 FORMAT MODULE FMU30
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU30 PAUSE - FORMAT 885-4X UTILITY TRACK 
20 BLANK
   MSG 15 TO DISPLAY
   MSG 5 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 10 TO LINE 3 
   B2=0                           * CLEAR SKIP FLAG 
   IF (P9 NE 0) GOTO 22           * IF 2ND SKIP SECTOR NE 0 
   IF (P8 EQ 0) GOTO 40           * IF NO SKIPPED SECTORS 
22 IF (P9 NE 4000) GOTO 23        * IF 2 SKIPPED SECTORS
   IF (P8 EQ 4000) GOTO 40        * IF NO SKIPPED SECTORS 
23 MSG 6 (P8) TO LINE 3           * 1 SKIPPED SECTOR
   B2=1                           * SET SKIP FLAG 
   IF (P9 NE 4000) GOTO 30        * IF 2 SKIPPED SECTORS
   IF (P8 LE 33D) GOTO 40         * IF VALID SECTOR 
25 MSG 1 (P8) TO LINE 5           * ILLEGAL PARAMETER 
26 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
30 MSG 7 (P8,P9) TO LINE 3        * 2 SKIPPED SECTORS 
   IF (P8 GT 33D) GOTO 25         * IF ILLEGAL SECTOR 
   IF (P9 LE 33D) GOTO 32         * IF VALID SECTOR 
   MSG 2 TO LINE 5                * ILLEGAL PARAMETER 
   GOTO 26
32 IF (P9 NE P8) GOTO 40          * IF SECTORS DIFFER 
   MSG 3 TO LINE 5                * ILLEGAL PARAMETER 
   GOTO 26
40 MSG 12 TO LINE 10         *WARNING MESSAGE 
   MSG 12 TO LINE 11         *WARNING MESSAGE 
   MSG 13 TO LINE 13         *WARNING MESSAGE FOR GO
   MSG 12 TO LINE 15         *WARNING MESSAGE 
   MSG 12 TO LINE 16         *WARNING MESSAGE 
   PICTURE
   MSG 17 TO DISPLAY,PRINT
   PAUSE
   BLANK
   B5=4                           * SET DISPLAY LINE
   B0=0                           * PHYSICAL SECTOR 
   B1=0                           * LOGICAL SECTOR
41 IF (B2 EQ 0) GOTO 42           * IF SKIP FLAG NOT SET
   IF (B0 EQ P8) GOTO 60          * PHYS SEC EQ 1ST SEC 
   IF (B0 EQ P9) GOTO 60          * PHYS SEC EQ 2ND SEC 
42 OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0400        * MAP SECTOR
   OB(302)=841D 
   OB(303)=1
   OB(304)=B0                     * PHYSICAL SECTOR 
   OB(305)=0
   OB(306)=B1                     * LOGICAL SECTOR
   RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT UTILITY TRACK
44 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 44     * IF BUSY 
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   B1=B1+1                        * INC LOGICAL SECTOR
50 B0=B0+1                        * INC PHYSICAL SEC
   IF (B0 LE 33D) GOTO 41         * IF MORE SECTORS 
   MSG 11 TO LINE 5               * FORMAT COMPLETE 
   MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * END OF MODULE 
60 OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0200        * SKIP SECTOR 
   OB(302)=841D 
   OB(303)=1
   OB(304)=B0                     * PHYSICAL SECTOR 
   OB(305)=0
   OB(306)=0
   RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT SECTOR 
64 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 64     * IF BUSY 
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   GOTO 50
74 CALL 98E                             DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU31, DEMA2, (14), LOCK
*** 5.2.38 FMU31 - SCAN AND DISPLAY 885-4X FLAWS
**
*          PURPOSE- 
*          FMU31 SCANS THE ENTIRE 885-4X DRIVE AND DISPLAYS AND PRINTS A
*          LIST OF ERROR SECTORS, SKIPPED SECTORS, AND FLAWED TRACKS. 
* 
*          METHOD-
*          FMU31 TAKES THE STARTING CYLINDER NUMBER FROM PARAMETER P6 
*          AND THE ENDING CYLINDER NUMBER FROM PARAMETER P7.  IF BOTH 
*          PARAMETERS ARE ZERO, THE ENDING CYLINDER IS SET TO 1512B TO
*          CAUSE A FULL SCAN OF THE PACK.  THEN, FMU31 STARTS WITH THE
*          CYLINDER GIVEN IN P6 AND DOES A SEEK FOLLOWED BY 
*          A SCAN COMMAND.  AFTER THE SCAN COMPLETES FMU31 READS THE
*          CHANNEL BUFFER TO OBTAIN A LIST OF FLAWS FOR THE CURRENT 
*          CYLINDER.  FMU31 THEN DISPLAYS THIS LIST OF FLAWS. 
*          THE CYLINDER NUMBER IS INCREMENTED AND THE PROCESS IS
*          CONTINUED UNTIL ALL OF THE CYLINDERS HAVE BEEN SCANNED.
* 
*          ENTRY- 
*          FMU31 USES PARAMETERS P6 AND P7 TO INDICATE STARTING AND 
*          ENDING CYLINDER FOR SCANNING.  IF THEY ARE BOTH ZERO,
*          A FULL SCAN IS EXECUTED.  PARAMETER USAGE AND
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW-- 
*            P6 - STARTING CYLINDER (0 TO 1512) 
*            P7 - ENDING CYLINDER (0 TO 1512) 
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER OF THE PARAMETERS IS 
*          OUT OF RANGE OR IF P6 IS GREATER THAN P7.
/ 
*          EXIT-
*          FMU31 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU31 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU31 USES REGISTERS B0 TO B7 AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--
*            B0 - CYLINDER
*            B1 - TRACK 
*            B2 - SECTOR
*            B3 - INPUT BUFFER INDEX
*            B4 - TRACK AND SECTOR
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - ENDING CYLINDER 
*            B7 - INPUT BUFFER INDEX
*            WC - CYLINDER
* 
*          BUFFERS USED-
*          FMU31 USES THE INPUT BUFFER FOR READING THE LIST OF FLAWS
*          FROM THE CHANNEL BUFFER. 
* 
* 
/  - SCAN AND DISPLAY 885-4X FLAWS -
/ 
1  FORMAT 885-4X SECTOR FLAWS - CH=*O, EQ=*O, UN=*O 
2  FORMAT CYLINDER = *OCT 
3  FORMAT 
4  FORMAT CY = *OCT   TR = *O   SE = *O 
5  FORMAT CY = *OCT   TR = *O   SE = *O   TRACK FLAW
6  FORMAT CY = *OCT   TR = *O   SE = *O   ERROR SECTOR
7  FORMAT - - - - - - - END OF LIST - - - - - - - 
10 FORMAT CYLINDER *OCT TO *OCT 
11 FORMAT ILLEGAL PARAMETER P6 (MAXIMUM CY = 1512)
12 FORMAT ILLEGAL PARAMETER P7 (MAXIMUM CY = 1512)
13 FORMAT ILLEGAL PARAMETER P7 (P7 IS LESS THAN P6) 
15 FORMAT FMU31 SCAN CY *OCT
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU31 PAUSE - SCAN AND DISPLAY 885-4X FLAWS 
   EQUATE MAXCYL TO 842D
20 BLANK
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   IF (P6 LE MAXCYL) GOTO 22      * IF BEG CY LE MAXCYL 
   MSG 11 TO LINE 5               * ELSE, ILLEGAL BEG CY
21 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
22 IF (P7 LE MAXCYL) GOTO 23      * IF END CY LE MAXCYL 
   MSG 12 TO LINE 5               * ELSE, ILLEGAL END CY
   GOTO 21
23 IF (P7 GE P6) GOTO 24          * IF END GE BEG CYLINDER
   MSG 13 TO LINE 5               * ILLEGAL END CYLINDER
   GOTO 21
24 B5=5                           * SET DISPLAY LINE
   WC=P6                          * SET BEG CYLINDER
   B6=P7                          * SET END CYLINDER
   IF (P7 EQ 0) B6 = MAXCYL       * IF P7=0, FULL SCAN
   MSG 10 (WC,B6) TO LINE 3 
   MSG 17 TO DISPLAY,PRINT
   PAUSE
   B4=0                           * SET TRACK AND SECTOR
25 RES DRIVE, ABT 74
26 SEEK CYL WC TRK B4 SEC B4, ABT 74   * SEEK 
   SCAN, ABT 74                   * SCAN CYLINDER 
   MSG 2 (WC) TO LINE B5
   MSG 15 (WC) TO DISPLAY 
30 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY 
   IF (SB AND 4000 NE 0) GOTO 74  * IF ABNORMAL STATUS
   READCB, ABT 74                 * READ BUFFER 
   GOSUB 40                       * PROCESS CYLINDER
   WC=WC+1                        * NEXT CYLINDER 
   IF (WC LE B6) GOTO 25          * IF MORE CYLINDERS 
   GOTO 77                        * END OF MODULE 
/ 
/  PROCESS AND DISPLAY THE FLAWS IN IB (SUBROUTINE) 
40 B7=0                           * SET IB INDEX
46 IF (IB(B7) EQ 0) GOTO 64       * IF END OF IB
   IF (B5 LE 33D) GOTO 54         * IF DISPLAY NOT FULL 
   MSG 3 TO LINE B5 
   PICTURE                        * PRINT PAGE
50 B5=B5-1                        * CLEAR DISPLAY 
   MSG 3 TO LINE B5 
   IF (B5 GT 5) GOTO 50           * IF NOT DONE CLEARING
54 B3=B7+1                        * SET IB INDEX
   B0=WC                          * SET CYLINDER
   B1=IB(B3) RS 6                 * EXTRACT TRACK 
   B2=IB(B3) AND 0077             * EXTRACT SECTOR
   MSG 4 (B0,B1,B2) TO LINE B5    * ASSUME SECTOR FLAW
   IF (IB(B7) EQ 1) GOTO 60       * IF SECTOR FLAW
   MSG 5 (B0,B1,B2) TO LINE B5    * ASSUME TRACK FLAW 
   IF (IB(B7) EQ 2) GOTO 60       * IF TRACK FLAW 
   MSG 6 (B0,B1,B2) TO LINE B5    * ERROR SECTOR
60 B7=B7+2                        * INCREMENT IB INDEX
   B5=B5+1                        * NEXT LINE 
   IF (B7 LT 500) GOTO 46         * IF NOT END OF IB
64 IF (WC LT B6) RETURN           * IF MORE CYLINDERS 
   MSG 7 TO LINE B5               * END OF LIST 
   B5=B5+2
   MSG 16 TO LINE B5
   PICTURE
   RETURN 
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
77 END 20 
COMPILE 
   MODULE FMU32, DEMA2, (14), LOCK
*** 5.2.39 FMU32 - VERIFY 885-4X UTILITY MAPS 
**
*          PURPOSE- 
*          FMU32 COMPARES THE UTILITY FLAW MAPS WITH ACTUAL SKIPPED 
*          SECTORS AND FLAWED TRACKS ON THE DISK.  ANY DIFFERENCES ARE
*          DISPLAYED. 
* 
*          METHOD-
*          FMU32 BEGINS WITH CYLINDER 0.  THE FLAW MAPS ARE READ AND
*          ALL FLAWS IN THIS CYLINDER ARE SAVED ON THE OUTPUT BUFFER. 
*          THE CYLINDER IS THEN SCANNED AND THE LIST OF FLAWS IS READ 
*          FROM THE CHANNEL BUFFER TO THE INPUT BUFFER.  SUBMODULE
*          FMU32A IS CALLED TO COMPARE THE DATA IN THE INPUT AND OUTPUT 
*          BUFFERS.  THIS PROCESS IS REPEATED FOR EACH CYLINDER.
* 
*          ENTRY- 
*          FMU32 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE 
*          EXEUCTION. 
/ 
*          EXIT-
*          FMU32 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY THE OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU32 CALLS SUBMODULE FMU32A TO COMPARE THE LIST OF SKIPPED
*          SECTORS IN THE INPUT BUFFER WITH THE FLAW MAP ENTRIES IN THE 
*          OUTPUT BUFFER. 
*          FMU32 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU32 USES REGISTERS B0, B3, B5, B6, B7, AND WC.  REGISTERS
*          ARE USED AS FOLLOWS--
*            B0 - MAP SECTOR NUMBER 
*            B3 - OUTPUT BUFFER INDEX 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
*            WC - CYLINDER
* 
*          BUFFERS USED-
*          FMU32 USES THE INPUT BUFFER FOR HOLDING THE LIST OF SKIPPED
*          SECTORS FOUND BY THE SCAN COMMAND.  THE OUTPUT BUFFER IS 
*          USED FOR HOLDING THE LIST OF SECTORS FROM THE FLAW MAPS. 
* 
* 
/  - VERIFY 885-4X UTILITY MAPS - 
/ 
1  FORMAT VERIFY 885-4X UTILITY MAPS - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER = *OCT 
3  FORMAT VERIFY COMPLETE 
4  FORMAT CY=*OCT,  TR=*O   MAP TRACK NOT IN FLAW MAP 
5  FORMAT ABORT - CYLINDER FLAW CAPACITY EXCEEDED 
6  FORMAT 
7  FORMAT THIS MODULE RUNS FOR 32 MINUTES.
15 FORMAT FMU32 VERIFY CY *OCT
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
   EQUATE MAXCYL TO 842D
20 BLANK
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 1 (SB(61),SB(62),SB(63)) TO PRINT
   B5=4                           * DISPLAY INDEX 
   WC=0                           * CYLINDER
   MSG 15 (WC) TO DISPLAY 
   IF(ES.AND.TM.NE.0) MSG 7 TO PRINT
/ 
/  FIND ALL MAP ENTRIES FOR CYLINDER WC 
22 B3=0                           * OB INDEX
   B0=1                           * SET SECTOR
23 RES DRIVE, ABT 74
   GET UTILITY SECTOR B0, ABT 74  * READ UTILITY SECTOR 
   B7=0                           * SET IB INDEX
30 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 60   * IF END OF FLAW MAP 
   IF (IB(B7) AND 1777 EQ WC) GOTO 50  * IF FLAW IN THIS CY 
32 B7=B7+2                        * INCREMENT IB INDEX
   IF (B7 LT 240D) GOTO 30        * IF MORE FLAWS 
34 B0=B0+1                        * NEXT SECTOR 
   IF (B0 LE 18D) GOTO 23         * IF MORE SECTORS 
40 OB(B3)=0                       * SET END OF TABLE
   B0=0                           * SET TRACK AND SECTOR
/ 
/  SCAN CYLINDER AND COMPARE FLAWS
   RES DRIVE, ABT 74
   SEEK CYL WC TRK B0 SEC B0, ABT 74   * SEEK 
   SCAN, ABT 74                   * SCAN CYLINDER 
   MSG 2 (WC) TO LINE B5
42 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 42     * IF BUSY 
   READCB, ABT 74                 * READ BUFFER 
   MSG 15 (WC) TO DISPLAY 
   CALL 32A                       * COMPARE 
   IF (WC EQ 841D) GOTO 62        * IF MAP CYLINDER 
44 WC=WC+1                        * NEXT CYLINDER 
   IF (WC LE MAXCYL) GOTO 22      * IF MORE CYLINDERS 
   MSG 6 TO LINE B5 
   B5=B5+1
   MSG 3 TO LINE B5               * VERIFY COMPLETE 
47 B5=B5+2
   MSG 16 TO LINE B5
   PICTURE
   GOTO 77                        * END OF MODULE 
/ 
/  SAVE FLAW FROM MAP IN OB 
50 IF (B3 LT 500) GOTO 52         * IF OB NOT FULL
   MSG 5 TO LINE B5 
   GOTO 47                        * ABORT IF TOO MANY FLAWS 
52 OB(B3)=1                       * SET SECTOR FLAW 
   IF (B0 EQ 1) OB(B3)=2          * IF TRACK FLAW 
   B3=B3+1
   OB(B3)=IB(B6)                  * SAVE TRACK AND SECTOR 
   B3=B3+1                        * INCREMENT OB INDEX
   GOTO 32                        * CONTINUE
60 IF (B0 EQ 1) GOTO 34           * IF TRACK FLAW MAP 
   GOTO 40
/ 
/  CHECK THAT MAP TRACKS ARE FLAWED 
62 B2=0                           * SET TRACK NUMBER
63 B3=0                           * RESET OB INDEX
64 IF (OB(B3) EQ 0) GOTO 70       * IF NO FLAW IN MAP 
   IF (OB(B3) NE 2) GOTO 66       * IF NOT TRACK FLAW 
   B3=B3+1                        * INCREMENT OB INDEX
   IF (OB(B3) RS 6 NE B2) GOTO 67      * IF NOT MAP TRACK 
65 B2=B2+1                        * NEXT TRACK
   IF (B2 EQ 1) GOTO 63           * IF NOT DONE CHECKING
   GOTO 44                        * CHECKING COMPLETE 
66 B3=B3+1
67 B3=B3+1
   IF (B3 LT 500) GOTO 64         * IF MORE TO CHECK
70 IF (B5 LE 33D) GOTO 72         * IF DISPLAY NOT FULL 
   MSG 6 TO LINE B5 
   PICTURE
71 B5=B5-1                        * CLEAR DISPLAY 
   MSG 6 TO LINE B5 
   IF (B5 GT 4) GOTO 71           * IF NOT DONE CLEARING
72 MSG 4 (WC,B2) TO LINE B5       * MAP TRACK NOT IN FLAW MAP 
   B5=B5+1                        * INCREMENT DISPLAY LINE
   GOTO 65                        * CONTINUE
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU32A, DEMA2, (14), LOCK 
*** 5.2.40 FMU32A - COMPARE AND DISPLAY ERRORS (SUBROUTINE) 
**
*          PURPOSE- 
*          FMU32A COMPARES THE SKIPPED SECTORS AND FLAWED TRACKS IN ONE 
*          CYLINDER WITH THE FLAW MAPS. 
* 
*          METHOD-
*          FMU32A IS A SUBMODULE CALLED BY MODULE FMU32.
*          FMU32A FIRST CHECKS TO SEE THAT ALL OF THE SKIPPED SECTORS 
*          AND FLAWED TRACKS LISTED IN THE INPUT BUFFER HAVE A
*          CORRESPONDING ENTRY IN THE UTILITY FLAW MAPS LISTED IN THE 
*          OUTPUT BUFFER.  A CHECK IS MADE TO SEE IF ALL OF THE 
*          FLAW MAP ENTRIES HAVE A CORRESPONDING SKIPPED SECTOR OR
*          FLAWED TRACK.  FMU32A DISPLAYS ANY DIFFERENCES BETWEEN THE 
*          TWO LISTS.  AFTER COMPARING THE LISTS FOR ONE CYLINDER 
*          FMU32A RETURNS TO FMU32. 
/ 
*          ENTRY- 
*          FMU32A ASSUMES THAT DATA TO BE COMPARED IS IN THE INPUT AND
*          OUTPUT BUFFERS.
* 
*          EXIT-
*          FMU32A MODIFIES REGISTER B5 AS DIFFERENCES BETWEEN THE LISTS 
*          ARE ADDED TO THE DISPLAY.  WHEN THE LISTS HAVE BEEN COMPARED 
*          FMU32A RETURNS FMU32.
* 
*          SUBMODULES REFERENCED- 
*          FMU32A DOES NOT CALL ANY SUBMODULES. 
* 
*          REGISTERS USED-
*          FMU32A USES REGISTERS B0, B1, AND B3 TO B7.  REGISTERS ARE 
*          USED AS FOLLOWS--
*            B0 - SECTOR
*            B1 - TRACK 
*            B3 - OUTPUT BUFFER INDEX 
*            B4 - OUTPUT BUFFER INDEX 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
* 
*          BUFFERS USED-
*          FMU32A ASSUMES THAT THE INPUT BUFFER CONTAINS A LIST OF
*          SKIPPED SECTORS AND FLAWED TRACKS.  THE OUTPUT BUFFER IS 
*          ASSUMED TO CONTAIN A LIST OF THE FLAW MAP ENTRIES FOR THE
*          CURRENT CYLINDER.
* 
* 
/  - COMPARE AND DISPLAY ERRORS (SUBROUTINE) -
/ 
1  FORMAT 
2  FORMAT CY=*OCT,  TR=*O,  SE=*O  SKIPPED BUT NOT IN MAP 
3  FORMAT CY=*OCT,  TR=*O,  SE=*O  IN MAP BUT NOT SKIPPED 
4  FORMAT CY=*OCT,  TR=*O   TRACK FLAW SET BUT NOT IN MAP 
5  FORMAT CY=*OCT,  TR=*O   TRACK FLAW IN MAP BUT NOT SET 
/ 
/  CHECK FOR SECTOR SKIPPED (IB) BUT NOT IN MAP (OB)
20 B7=0                           * SET IB INDEX
22 B6=B7+1
   B4=0                           * SET OB INDEX
24 B3=B4+1
   IF (IB(B7) EQ 0) GOTO 40       * IF END OF IB
   IF (OB(B4) EQ 0) GOTO 30       * IF END OF OB
   IF (IB(B6) NE OB(B3)) GOTO 26  * IF IB AND OB DIFFER 
   IF (IB(B7) EQ OB(B4)) GOTO 37  * IF IB AND OB ARE SAME 
26 B4=B4+2                        * INCREMENT OB INDEX
   IF (B4 LT 500) GOTO 24         * IF NOT END OF OB
30 IF (B5 LE 33D) GOTO 34         * IF DISPLAY NOT FULL 
   MSG 1 TO LINE B5 
   PICTURE
32 B5=B5-1                        * CLEAR DISPLAY 
   MSG 1 TO LINE B5 
   IF (B5 GT 4) GOTO 32           * IF NOT DONE CLEARING
34 B1=IB(B6) RS 6                 * EXTRACT TRACK 
   B0=IB(B6) AND 0077             * EXTRACT SECTOR
   MSG 2 (WC,B1,B0) TO LINE B5
   IF (IB(B7) EQ 1) GOTO 35       * IF SECTOR FLAW
   MSG 4 (WC,B1) TO LINE B5 
35 B5=B5+1                        * INCREMENT LINE COUNT
37 B7=B7+2                        * INCREMENT IB INDEX
   IF (B7 LT 500) GOTO 22         * IF NOT END OF IB
/ 
/  CHECK FOR SECTOR IN MAP (OB) BUT NOT SKIPPED (IB)
40 B4=0                           * RESET OB INDEX
42 B3=B4+1
   B7=0                           * RESET IB INDEX
44 B6=B7+1
   IF (OB(B4) EQ 0) EXIT          * IF END OF OB
   IF (IB(B7) EQ 0) GOTO 50       * IF NOT FLAWED 
   IF (OB(B3) NE IB(B6)) GOTO 46  * IF OB AND IB DIFFER 
   IF (OB(B4) EQ IB(B7)) GOTO 57  * IF OB AND IB ARE SAME 
46 B7=B7+2                        * INCREMENT IB INDEX
   IF (B7 LT 500) GOTO 44 
50 IF (WC NE 841D) GOTO 51        * IF NOT MAP TRACK
   IF (OB(B4) NE 2) GOTO 51       * IF NOT TRACK FLAW 
   IF (OB(B3) RS 6 LE 1) GOTO 57  * IF TRACK 0 OR 1 
51 IF (B5 LE 33D) GOTO 54         * IF DISPLAY NOT FULL 
   MSG 1 TO LINE B5 
   PICTURE
52 B5=B5-1                        * CLEAR DISPLAY 
   MSG 1 TO LINE B5 
   IF (B5 GT 4) GOTO 52           * IF NOT DONE CLEARING
54 B1=OB(B3) RS 6                 * EXTRACT TRACK 
   B0=OB(B3) AND 0077             * EXTRACT SECTOR
   MSG 3 (WC,B1,B0) TO LINE B5
   IF (OB(B4) EQ 1) GOTO 55       * IF SECTOR FLAW
   MSG 5 (WC,B1) TO LINE B5 
55 B5=B5+1                        * INCREMENT DISPLAY LINE
57 B4=B4+2                        * INCREMENT OB INDEX
   IF (B4 LT 500) GOTO 42         * IF NOT END OF OB
   EXIT 
77 END 20 
COMPILE 
   MODULE FMU33, DEMA2, (14), LOCK
*** 5.2.41 FMU33 - ARCHIVE 885-4X FLAW MAPS 
**
*          PURPOSE- 
*          FMU33 READS THE FACTORY AND/OR UTILITY FLAW TABLES FROM THE
*          DISK AND WRITES THEM TO THE SYSTEM SCRATCH FILE. 
* 
*          METHOD 
*          FMU33  STARTS BY READING THE FACTORY  OR  UTILITY FLAW TABLES
*          ONE SECTOR AT A TIME DEPENDING ON  P5.   AFTER EACH SECTOR IS
*          READ  IT IS COPIED TO THE  SYSTEM  SCRATCH  FILE.  THUS, EACH
*          SECTOR OF THE FLAW MAPS  BECOMES  ONE  RECORD  ON THE SCRATCH
*          FILE.  THIS PROCESS CONTINUES UNTIL SECTORS  0  TO  18 OF THE
*          FACTORY OR UTILITY MAP TRACK HAVE BEEN COPIED TO THE  SCRATCH
*          FILE. IF P5 EQUALS  ZERO  FMU33 THEN READS SECTORS 0 TO 18 OF
*          UTILITY MAP TRACK AND COPIES THEM TO THE SCRATCH FILE.  IF P5
*          EQUALS 0001 THE FACTORY MAPS ARE ARCHIVED TWICE. IF P5 EQUALS
*          0002 THE UTILITY MAPS ARE ARCHIVED TWICE. UPON COMPLETION THE
*          SCRATCH FILE WILL HAVE 36 RECORDS CONTAINING ALL THE DATA FOR
*          BOTH THE FACTORY AND/OR UTILITY FLAW TABLES. 
* 
*          ENTRY- 
*          FMU33 USES PARAMETER P5 TO INDICATE WHETHER THE FACTORY
*          AND/OR THE UTILITY MAPS ARE TO BE ARCHIVED. PARAMETER
*          VALUES ARE SHOWN BELOW-- 
*            P5 = 0000 ARCHIVE BOTH FACTORY AND UTILITY MAPS
*            P5 = 0001 ARCHIVE ONLY THE FACTORY MAPS
*            P5 = 0002 ARCHIVE ONLY THE UTILITY MAPS
*IF -DEF,CMSE17X,4
*          IF IT IS DESIRED TO ARCHIVE  THE  FLAW  TABLES TO TAPE THIS
*          MAY BE DONE BY COPYING THE SCRATCH FILE TO TAPE AFTER MALET
*          EXECUTION OR BY REQUESTING  THE  TAPE  AS  THE SCRATCH FILE
*          BEFORE EXECUTING MALET.
/ 
*          EXIT-
*          FMU33 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU33 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF A 
*          FUNCTION TO THE DRIVE IS ABORTED.
* 
*          REGISTERS USED-
*          FMU33 USES REGISTERS B4, B5, B6 AND WC. REGISTERS ARE USED AS
*          FOLLOWS--
*            B4 - COUNTER FOR NUMBER OF ARCHIVES
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - MESSAGE NUMBER FOR DISPLAY
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU33 USES THE INPUT BUFFER FOR FLAW TABLE READ FROM THE 
*          DISK.  THE OUTPUT BUFFER IS USED TO WRITE THE TABLES TO THE
*          SCRATCH FILE.
* 
* 
/  - ARCHIVE 885-4X FLAW MAPS - 
/ 
1  FORMAT ARCHIVE 885-4X FLAW MAPS - CH=*O, EQ=*O, UN=*O
2  FORMAT FACTORY AND UTILITY MAPS ARCHIVED ON SYSTEM FILE
3  FORMAT FACTORY MAPS ONLY ARCHIVED ON SYSTEM FILE 
4  FORMAT UTILITY MAPS ONLY ARCHIVED ON SYSTEM FILE 
15 FORMAT MODULE FMU33
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU33 PAUSE - ARCHIVE 885-4X MAPS 
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=3                           * SET DISPLAY LINE
   SYSREW                         * REWIND SYSTEM FILE
30 WC=0                           * SET SECTOR
   B6 = P5 + 2
   IF(P5.EQ.2) GOTO 36       *ARCHIVE FROM UTILITY ONLY 
31 RES DRIVE, ABT 74
   GET FACTORY SECTOR WC, ABT 74  * READ FACTORY MAPS 
   COPY IB TO OB FOR 502
   SYSWR                          * WRITE FILE
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 31         * IF MORE SECTORS 
   IF(P5.EQ.0) GOTO 34       *ARCHIVE BOTH FACTORY AND UTILITY
   GOTO 30 WHILE(B4+1.LE.1)  *READ FACTORY TWICE
   GOTO 40
34 WC = 0        *RESET SECTOR
36 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY MAPS 
   COPY IB TO OB FOR 502
   SYSWR                          * WRITE FILE
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 36         * IF MORE SECTORS 
   IF(P5.EQ.0) GOTO 40       *BOTH ARCHIVED EXIT
   GOTO 34 WHILE(B4+1.LE.1)  *READ UTILITY TWICE
40 MSG B6 TO LINE 4          *POST ARCHIVE MESSAGE
   MSG 16 TO LINE 6 
   PICTURE
   SYSREW                         * REWIND SYSTEM FILE
   GOTO 77                        * END OF MODULE 
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU34, DEMA2, (14), LOCK
*** 5.2.42 FMU34 - RESTORE 885-4X UTILITY MAPS
**
*          PURPOSE- 
*          FMU34 COPIES ARCHIVED FACTORY FLAW MAPS OR UTILITY FLAW MAPS 
*          FROM THE SYSTEM SCRATCH FILE TO THE UTILITY FLAW MAP TRACK.
* 
*          METHOD-
*          FMU34 READS EITHER THE FACTORY MAPS OR THE UTILITY MAPS FROM 
*          THE SCRATCH FILE.  EACH RECORD ON THE FILE CONTAINS DATA FOR 
*          ONE SECTOR OF THE MAPS.  AFTER READING EACH RECORD IT IS 
*          COPIED TO THE UTILITY MAP TRACK ON THE DISK.  THIS PROCESS IS
*          CONTINUED UNTIL SECTORS 0 TO 18 OF CYLINDER 841, TRACK 1 
*          HAVE BEEN WRITTEN. 
* 
*          ENTRY- 
*          FMU34 ASSUMES THAT THE SCRATCH FILE CONTAINS 38 RECORDS
*          CORRESPONDING TO THE 19 SECTORS OF THE FACTORY MAPS AND THE
*          19 SECTORS OF THE UTILITY MAPS.  IT IS ALSO ASSUMED THAT THE 
*          FIRST 19 RECORDS ARE THE FACTORY MAPS.  PARAMETER P5 MUST BE 
*          SET TO INDICATE WHICH MAPS TO USE.  PARAMETER DEFINITION AND 
*          ALLOWED VALUES ARE AS FOLLOWS--
*            P5 = 0 - USE ARCHIVED UTILITY FLAW TABLES
*                 1 - USE ARCHIVED FACTORY FLAW TABLES
/ 
*          EXIT-
*          FMU34 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU34 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF A 
*          FUNCTION TO THE DRIVE IS ABORTED.
* 
*          REGISTERS USED-
*          FMU34 USES REGISTERS B0, B1, B5, B7, AND WC.  REGISTERS ARE
*          USED AS FOLLOWS--
*            B0 - CYLINDER 841
*            B1 - TRACK 1 
*            B5 - K DISPLAY LINE NUMBER 
*            B7 - STATUS OF SYSRD 
*            WC - SECTOR (0 TO 18)
* 
*          BUFFERS USED-
*          FMU34 USES THE INPUT BUFFER FOR THE DATA READ FROM THE 
*          SCRATCH FILE AND THE OUTPUT BUFFER FOR DATA WRITTEN TO THE 
*          UTILITY FLAW MAP SECTORS.
* 
* 
/  - RESTORE 885-4X UTILITY MAPS -
/ 
1  FORMAT RESTORE UTILITY MAPS FROM ARCHIVED
2  FORMAT    FACTORY MAPS (SCRATCH FILE)
3  FORMAT    UTILITY MAPS (SCRATCH FILE)
4  FORMAT ILLEGAL PARAMETER P5
6  FORMAT UTILITY MAPS WRITTEN FROM SYSTEM FILE 
7  FORMAT 885-4X DRIVE - CH=*O, EQ=*O, UN=*O
10 FORMAT    DISK S/N = *HE*HE
11 FORMAT ARCHIVE S/N = *HE*HE
14 FORMAT ABORT - SCRATCH FILE ERROR
15 FORMAT MODULE FMU34
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU34 PAUSE - RESTORE 885-4X UTILITY MAPS 
20 BLANK
   MSG 15 TO DISPLAY
   SYSREW 
   MSG 1 TO LINE 2
   MSG 2 TO LINE 3
   MSG 7 (SB(61),SB(62),SB(63)) TO LINE 4 
   B5=5                           * SET DISPLAY LINE
   RES DRIVE, ABT 74
   GET SERIAL, ABT 74             * READ DRIVE S/N
   COPY IB TO OB FOR 502
   SYSRD, STATUS TO B7            * READ ARCHIVE S/N
   IF (B7 NE 0) GOTO 70           * IF ERROR
   SYSREW 
   MSG 10 (OB(0),OB(1)) TO LINE 5 
   MSG 11 (IB(0),IB(1)) TO LINE 6 
   IF (P5 EQ 1) GOTO 26           * IF FACTORY MAPS 
   IF (P5 EQ 0) GOTO 24           * IF UTILITY MAPS 
   MSG 4 TO LINE 10               * ILLEGAL PARAMETER 
   MSG 16 TO LINE 12
   PICTURE
   GOTO 77                        * ERROR STOP
24 MSG 3 TO LINE 3
   WC=0                           * SET SECTOR
25 SYSRD, STATUS TO B7            * SKIP FACTORY MAPS 
   IF (B7 NE 0) GOTO 70           * IF ERROR
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 25         * IF MORE SECTORS 
26 MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=7                           * SET DISPLAY LINE
   WC=0                           * SET SECTOR
   B0=841D                        * SET CYLINDER
   B1=1                           * SET TRACK 
30 SYSRD, STATUS TO B7            * READ ARCHIVE
   IF (B7 NE 0) GOTO 70           * IF ERROR
   COPY IB TO OB FOR 500          * SET OUTPUT BUFFER 
   OB(500)=0
   OB(501)=0
   RES DRIVE, ABT 74
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR 
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 30         * IF MORE SECTORS 
   MSG 6 TO LINE 10 
34 MSG 16 TO LINE 12
   PICTURE
   GOTO 77                        * END OF MODULE 
70 MSG 14 TO LINE 10              * SYSRD ERROR 
   GOTO 34
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU35,DEMA2(14), LOCK 
*** 5.2.43 FMU35 - COPY CONTROLWARE TO 885-4X DRIVE 
**
*          PURPOSE- 
*          FMU35 COPIES 7155-4X CONTROLWARE FROM THE SYSTEM SCRATCH 
*          FILE TO THE 885-4X DISK. 
* 
*          METHOD-
*          FMU35 USES A SUBROUTINE TO READ ONE SYSTEM FILE AND PACK IT
*          IN THE INPUT BUFFER.  THE PACKED INPUT BUFFER IS THEN COPIED 
*          TO THE OUTPUT BUFFER ONE WORD AT A TIME.  WHEN THE OUTPUT
*          BUFFER IS FULL, FMU35 CALLS SUBMODULE FMU35A TO WRITE THE
*          SECTOR TO DISK.  THIS SUBMODULE WILL TERMINATE WHEN THE LAST 
*          SECTOR HAS BEEN WRITTEN.  WHEN THE LAST WORD OF THE INPUT
*          BUFFER HAS BEEN MOVED TO THE OUTPUT BUFFER, FMU35 READS
*          ANOTHER SYSTEM FILE, PACKS IT, AND THE ABOVE PROCESS 
*          CONTINUES UNTIL ALL OF THE CONTROLWARE HAS BEEN COPIED TO
*          DISK.
* 
*          ENTRY- 
*          FMU35 ASSUMES THAT THE SCRATCH FILE CONTAINS THE CONTROLWARE 
*          TO BE COPIED TO THE DISK.
*          FMU35 ALSO REQUIRES TRACK 2 OF THE MAP CYLINDER TO BE FLAWED.
*          IF IT IS NOT FLAWED, RUN MODULE FMU24 TO SET DEFECTIVE 
*          SECTORS AT CYLINDER 1511 TRACK 2, SECTORS 41, 40, AND 37.
*IF DEF,CMSE17X,5 
*          THE CMSE SCRATCH FILE CAN BE CREATED AS FOLLOWS--
*            1. CR,ON.        TO TURN CARD READER ON
*            2. LC,10000.     TO READ CONTROLWARE TO CM 
*            3. *WC,SCRACH,10000,15514 FOR MA721 VERSIONS 1-5 
*               *WC,SCRACH,10000,16456 FOR MA721 VERSIONS 6-X 
/ 
*          EXIT-
*          FMU35 TERMINATES IN SUBMODULE FMU35A WITH AN END STATEMENT.
*          REGISTER CONTENTS ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU35 CALLS SUBMODULE FMU35A TO WRITE EACH SECTOR OF 
*          CONTROLWARE TO THE DISK. 
* 
*          REGISTERS USED-
*          FMU35 USES REGISTERS B0 TO B8, BA, AND WC.  REGISTERS ARE
*          USED AS FOLLOWS--
*            B0 - CYLINDER
*            B1 - TRACK 
*            B2 - SECTOR
*            B3 - COUNTER FOR PACKED INPUT BUFFER DATA
*            B4 - COUNTER FOR OUTPUT BUFFER DATA
*            B5 - SYSRD COUNTER 
*            B6 - STATUS OF SYSRD 
*            B7 - INPUT BUFFER PACKING METHOD 
*            B8 - LENGTH OF PACKED INPUT BUFFER 
*            B9 - NONZERO IF CONTROLWARE IS LONGER LENGTH 
*            B11- NONZERO IF CONTROLWARE HAS 77-TABLE 
*            B12- EXPECTED LENGTH OF LAST SYSRD 
*            BA - POINTER TO PACKED INPUT BUFFER DATA 
*            WC - POINTER TO UNPACKED BUFFER DATA 
* 
*          BUFFERS USED-
*          FMU35 USES THE INPUT BUFFER FOR CONTROLWARE READ FROM THE
*          SYSTEM SCRATCH FILE.  THE OUTPUT BUFFER IS USED FOR WRITING
*          CONTROLWARE TO THE DISK SECTOR.  EACH SECTOR CONTAINS 3856 
*          BITS OF DATA FOLLOWED BY 8 UNUSED BITS.
* 
* 
/  - COPY 7155-4X CONTROLWARE TO 885-4X - 
/ 
1  FORMAT FMU35 COPY 7155-4X CONTROLWARE TO 885-4X
2  FORMAT       CHANNEL *O    UNIT *O 
3  FORMAT CONTROLWARE DECK WRONG LENGTH 
4  FORMAT SYSRD EXPECTED IS 45D REM *DED WORDS
5  FORMAT        ACTUAL IS *DEC  REM *DEC 
6  FORMAT  SYSRD EXPECTED IS 52D REM *DED WORDS 
20 BLANK
   MSG 1 TO DISPLAY, PRINT
   MSG 1 TO LINE 5
   MSG 2 (SB(61),SB(63)) TO LINE 7
   IF(ES.AND.TM.NE.0)MSG 2 (SB(61),SB(63)) TO PRINT 
   B0=1511                        * STARTING CYLINDER 
   B1=2                           * STARTING TRACK
   B2=1                           * STARTING SECTOR 
   SYSREW 
   GOSUB 40                       * SYSRD AND PACK IT 
22 COPY IB(B3) TO OB(B4) FOR 1
   IF (B4 NE 501) GOTO 24         * IF OB NOT FULL
   CALL 35A                       * WRITE ONE SECTOR
   IF (B3 EQ 325) GOTO 26         * IF IB FULL
   IF (B7 EQ 0) GOTO 30           * IF IB ON WORD BOUNDARY
   GOTO 32
24 IF (B3 NE B8) GOTO 30          * IF IB NOT FULL
26 GOSUB 40                       * SYSRD AND PACK IT 
   IF (B7 NE 1) GOTO 22           * IF OB(B4) NOT FILLED
   GOTO 32
30 B3=B3+1                        * INCREMENT IB POINTER
32 IF (B4 NE 501) GOTO 34         * TO INCREMENT OB POINTER 
   B4=0 
   GOTO 22
34 B4=B4+1                        * INCREMENT OB POINTER
   GOTO 22
* 
*   DESCRIPTION 
/         SYSRD ONE BLOCK AND PACK IT SUBROUTINE
/ 
*         1.  SYSRD ONE BLOCK FROM THE SCRATCH FILE AND INSURE
*             THE FILE HAS THE CORRECT NUMBER OF WORDS. 
*         2.  DETERMINE THE PACKING METHOD. 
*             A.  IF B7 = 0 PACK IB(0) THROUGH IB(500) INTO IB(0) 
*                 THROUGH IB(325).
*             B.  IF B7 = 1 PACK IB(0) THROUGH IB(500) INTO IB(0) 
*                 THROUGH IB(325), RIGHT SHIFT THE PACKED DATA BY 
*                 4 AND RESTORE IB(0) BITS 8-11 FROM THE OUTPUT BUFFER. 
*             C.  IB B7 = 2 PACK IB(0) THROUGH IB(500) INTO IB(0) 
*                 THROUGH IB(325), RIGHT SHIFT THE PACKED DATA BY 8 
*                 AND RESTORE IB(0) BITS 4-11 FROM THE OUTPUT BUFFER. 
*         3.  UPDATE PACKING METHOD (B7 = B7 +1 MODULO 3) AND RETURN. 
* 
40 B3=0                           * SET COUNTER FOR IB DATA 
   SYSRD, STATUS TO B6
   IF (B9 EQ 0) GOTO 41           * IF SHORT CONTROLWARE LENGTH 
   IF (B5 NE 52D) GOTO 42         * IF NOT LAST SYSRD 
   IB(WT) = 0 
   B12 = 230D                     * REM W/O 77-TABLE
   IF (B11 NE 0) B12 = 310D       * REM W/77-TABLE
   IF (WT EQ B12) GOTO 43         * IF LAST SYSRD OK
   GOTO 70                        * DECK IS WRONG LENGTH
41 IF (B5 NE 45D) GOTO 42         * IF NOT LAST SYSRD 
   IB(WT) = 0 
   B12 = 60D                      * REM W/O 77-TABLE
   IF (B11 NE 0) B12 = 140D       * REM W/77-TABLE
   IF (WT EQ B12) GOTO 43         * IF LAST SYSRD OK
   GOTO 70                        * DECK IS WRONG LENGTH
42 IF (B6 NE 0) GOTO 70           * IF DECK IS WRONG LENGTH 
43 B5 = B5 + 1                    * SYSRD COUNTER 
   WC=0                           * PACKED POINTER
   BA=0                           * UNPACKED IB POINTER 
   IB(500)=0
   B8=325                         * SET NORMAL LENGTH 
   IF (B5 NE 1) GOTO 45           * IF NOT FIRST READ 
   B11 = 0                        * CLEAR 77-TABLE FLAG 
   IF (IB(0) NE 7700) GOTO 44     * IF NO 77-TABLE
   B11 = 1                        * SET 77-TABLE FLAG 
   BA=120                         * SKIP TABLE
   B8=237                         * SET SHORT LENGTH
44 IF (IB(BA+5) NE 11) GOTO 45    * IF SHORT CONTROLWARE LENGTH 
   B9 = 1 
45 IF (B7 NE 0) GOTO 50           * IF PACK AND SHIFT 4 OR 8
/         PACK THE INPUT BUFFER. (NO SHIFTING)
46 IB(501)=IB(BA+1) RS 4          * PACK 24 BITS
   IB(WC)=IB(BA) LS 4 XOR IB(501) 
   IB(501)=IB(BA+1) AND 17 LS 10
   IB(WC+1)=IB(501) XOR IB(BA+2)
   BA=BA+3                        * INCREMENT UNPACKED POINTER
   WC=WC+2                        * INCREMENT PACKED POINTER
   IF (BA LT 500) GOTO 46         * IF MORE BITS TO PACK
   IF (B8 EQ 237) GOTO 64         * IF 77 TABLE SKIPPED 
   B7=B7+1                        * INCREMENT PACKING METHOD
   GOTO 64
50 IF (B7 NE 1) GOTO 54           * IF PACK AND SHIFT 8 
/         PACK AND SHIFT IB RIGHT 4 BITS
   IB(502)=OB(B4) XOR IB(BA)
52 IB(WC)=IB(WC) XOR IB(BA)       * PACK 24 BITS
   IB(WC+1)=IB(BA+1) LS 4 
   IB(WC+1)=IB(BA+2) RS 4 XOR IB(WC+1)
   IB(WC+2)=IB(BA+2) AND 17 LS 10 
   BA=BA+3                        * INCREMENT UNPACKED POINTER
   WC=WC+2                        * INCREMENT PACKED POINTER
   IF (BA NE 501) GOTO 52         * IF MORE BITS TO PACK
   B7=B7+1                        * INCREMENT PACKING METHOD
   GOTO 60
/         PACK AND SHIFT IB RIGHT 8 BITS
54 IB(502)=IB(0) RS 4 XOR OB(B4)
56 IB(501)=IB(BA) AND 17 LS 10
   IB(WC)=IB(BA) RS 4 XOR IB(WC)
   IB(WC+1)=IB(501) XOR IB(BA+1)
   IB(WC+2)=IB(BA+2) LS 4 
   BA=BA+3                        * INCREMENT UNPACKED POINTER
   WC=WC+2                        * INCREMENT PACKED POINTER
   IF (BA NE 501) GOTO 56         * IF MORE BITS TO PACK
   B7=0                           * UPDATE PACKING METHOD 
60 IB(0)=IB(502)
64 RETURN 
70 MSG 3 TO LINE 11 
   IF (B9 EQ 0) GOTO 74           * IF SHORT CONTROLWARE LENGTH 
   MSG 6 (B12) TO LINE 11 
   GOTO 76
74 MSG 4 (B12) TO LINE 13 
76 MSG 5 (B5,WT) TO LINE 14 
   PICTURE
   END 20 
COMPILE 
   MODULE FMU35A,DEMA2(14), LOCK
*** 5.2.44 FMU35A - WRITE CONTROLWARE TO 885-4X DISK (SUBROUTINE) 
**
*          PURPOSE- 
*          FMU35A IS CALLED BY FMU35 TO WRITE ONE SECTOR OF CONTROLWARE 
*          TO THE DISK.  FMU35A ALSO PROVIDES A DISPLAY OF DETAILED 
*          STATUS IF AN ERROR OCCURS. 
* 
*          METHOD-
*          FMU35A WRITES ONE SECTOR USING THE WRITE PROTECTED SECTOR
*          COMMAND.  FMU35A THEN CHECKS TO SEE IF THE LAST SECTOR WAS 
*          WRITTEN.  THE LAST SECTOR IS SECTOR 36B AND IT CONTAINS 3856 
*          DATA BITS AND 8 UNUSED BITS.  IF THE LAST SECTOR WAS WRITTEN 
*          FMU35A DISPLAYS THE CONTROLWARE NUMBER AND REVISION
*          CONTAINED IN THE CONTROLWARE BINARY.  THE SUBMODULE THEN 
*          TERMINATES WITH AN END STATEMENT.  IF THE SECTOR WRITTEN WAS 
*          NOT THE LAST SECTOR FMU35A INCREMENTS THE SECTOR ADDRESS BY
*          1.  SINCE THE WRITE DOES NOT WRITE A MULTIPLE OF 12-BIT
*          WORDS THE INPUT BUFFER MUST BE SHIFTED BEFORE MORE WORDS CAN 
*          BE COPIED FROM THE INPUT BUFFER TO THE OUTPUT BUFFER.  IF
*          THE PACKING METHOD IS 1 THE INPUT BUFFER IS RIGHT SHIFTED BY 
*          8 BITS.  IF THE PACKING METHOD IS 0 OR 2 THE INPUT BUFFER IS 
*          LEFT SHIFTED BY 4 BITS.  AFTER THE BUFFER HAS BEEN SHIFTED 
*          THE PACKING METHOD IS DECREMENTED BY 1 AND FMU35A RETURNS TO 
*          FMU35. 
/ 
*          ENTRY- 
*          FMU35A IS CALLED BY FMU35.  INITIALLY THE CYLINDER, TRACK, 
*          AND SECTOR ARE IN REGISTERS B0, B1, AND B2.  REGISTER B7 
*          INITIALLY CONTAINS THE PACKING METHOD. 
* 
*          EXIT-
*          FMU35A TERMINATES BY RETURNING TO FMU35 OR WITH AN END 
*          STATEMENT.  REGISTER B2 CONTAINS THE NUMBER FOR THE NEXT 
*          SECTOR TO BE WRITTEN.  REGISTER B7 CONTAINS THE PACKING
*          METHOD.
* 
*          SUBMODULES REFERENCED- 
*          FMU35A DOES NOT CALL ANY SUBMODULES. 
* 
*          REGISTERS USED-
*          FMU35A USES REGISTERS B0, B1, B2, B7, AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--
*            B0 - CYLINDER TO WRITE CONTROLWARE 
*            B1 - TRACK 
*            B2 - SECTOR
*            B7 - INPUT BUFFER PACKING METHOD 
*            B9 - NONZERO IF CONTROLWARE IS LONGER LENGTH 
*            WC - POINTER TO UNPACKED INPUT BUFFER DATA 
* 
*          BUFFERS USED-
*          FMU35A USES THE INPUT BUFFER FOR CONTROLWARE READ FROM THE 
*          SYSTEM SCRATCH FILE.  THE OUTPUT BUFFER IS USED FOR WRITING
*          CONTROLWARE TO THE DISK SECTOR.
* 
* 
/  - WRITE CONTROLWARE TO DISK (SUBROUTINE) - 
/ 
1  FORMAT FMU35A ABORT-EC=*OCT AT LINE *OCT,GS=*OCT,LF=*OCT 
2  FORMAT   COPY OF MA*H*H REV *D CONTROLWARE COMPLETE
3  FORMAT                  DETAILED STATUS
4  FORMAT  1 = *OCT  2 = *OCT  3 = *OCT  4 = *OCT  5 = *OCT 
5  FORMAT  6 = *OCT  7 = *OCT  8 = *OCT  9 = *OCT 10 = *OCT 
6  FORMAT 11 = *OCT 12 = *OCT 13 = *OCT 14 = *OCT 15 = *OCT 
7  FORMAT 16 = *OCT 17 = *OCT 18 = *OCT 19 = *OCT 20 = *OCT 
10 FORMAT ERROR - CYLINDER 1511B TRACK 2 NOT FLAWED 
15 FORMAT FMU35A WROTE SECTOR *O
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 IF (B9 EQ 0) GOTO 22           * IF SHORT CONTROLWARE LENGTH 
   IF (B2 NE 6) GOTO 22           * IF SECTOR NOT 6 
   B9 = B9 + 1                    * COUNT SECTORS NOT WRITTEN TO DISK 
   IF (B9 EQ 7) GOTO 22           * IF 5 SECTORS HAVE BEEN SKIPPED
   GOTO 23
22 RES DRIVE, ABT 70
   WRPRO CYL B0 TRK B1 SEC B2, ABT 60 
   IF (B2 EQ 36) GOTO 50          * IF DONE 
   MSG 15 (B2) TO DISPLAY 
   B2=B2+1                        * UPDATE SECTOR ADDRESS 
23 IB(326) = 0
   WC=0 
   IF (B7 EQ 1) GOTO 40           * TO RIGHT SHIFT IB 8 BITS
/         LEFT SHIFT INPUT BUFFER BY 4 BITS 
25 IB(WC)=IB(WC) AND 377 LS 4 
   IB(WC)=IB(WC+1) RS 10 XOR IB(WC) 
   IF (WC EQ 325) GOTO 30         * IF DONE SHIFTING
   WC=WC+1                        * INCREMENT POINTER 
   GOTO 25
30 IF (B7 EQ 0) GOTO 35           * TO DECREMENT PACKING METHOD 
   B7=B7-1                        * DECREMENT PACKING METHOD
   EXIT 
35 B7=2 
   EXIT 
/         RIGHT SHIFT IB BY 8 BITS
40 WC=324 
46 IB(501)=IB(WC) AND 377 LS 4
   IB(WC+1)=IB(WC+1) RS 10 XOR IB(501)
   IF (WC EQ 0) GOTO 30           * IF DONE SHIFTING
   WC=WC-1
   GOTO 46
50 IB(0)=OB(500) RS 4 
   IB(1)=OB(500) AND 17 LS 4
   IB(1)=OB(501) RS 10 XOR IB(1)
   IB(2)=OB(475) RS 10
   MSG 2 (IB(0),IB(1),IB(2)) TO LINE 11 
   GOTO 74
60 IF(SB(0) NE 5000) GOTO 70      * IF TRACK IS FLAWED
   IF (SB(1) NE 10) GOTO 70       * IF TRACK IS FLAWED
   IF (SB(5) AND 4000 NE 0) GOTO 70    * IF TRACK IS FLAWED 
   MSG 10 TO LINE 11
70 MSG 3 TO LINE 15 
   MSG 4, 5 WORDS FROM SB(1) TO LINE 16 
   MSG 5, 5 WORDS FROM SB(6) TO LINE 17 
   MSG 6, 5 WORDS FROM SB(13) TO LINE 20
   MSG 7, 5 WORDS FROM SB(20) TO LINE 21
   MSG 1 (EC,EA,SB,LF) TO LINE 13 
   MSG EM TO LINE 23
74 PICTURE
   END 20 
COMPILE 
   MODULE FMU36, DEMA2, (14), LOCK
*** 5.2.45 FMU36 - READ 7155 CONTROLWARE REVISION (DC=14) 
**
*          PURPOSE- 
*          FMU36 DISPLAYS THE REVISION NUMBER OF THE CONTROLWARE
*          CURRENTLY IN THE 7155 DISK CONTROLLER. 
* 
*          METHOD-
*          FMU36 OBTAINS DETAILED STATUS AND EXTRACTS THE CONTROLWARE 
*          REVISION NUMBER FROM WORD 4. 
* 
*          ENTRY- 
*          FMU36 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE 
*          EXECUTION. 
/ 
*          EXIT-
*          FMU36 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU36 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU36 USES REGISTERS B0 AND B5.  REGISTERS ARE USED AS 
*          FOLLOWS--
*            B0 - CONTROLWARE REVISION NUMBER 
*            B5 - K DISPLAY LINE NUMBER 
* 
*          BUFFERS USED-
*          FMU36 USES THE STATUS BUFFER FOR DETAILED STATUS READ FROM 
*          THE CONTROLLER.
* 
* 
/  - READ CONTROLWARE REVISION -
/ 
1  FORMAT CURRENT CONTROLWARE REVISION - CH=*O, EQ=*O 
2  FORMAT REVISION = *D 
15 FORMAT MODULE FMU36
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62)) TO LINE 2
   B5=3                           * SET DISPLAY LINE
   RES CONTROLLER, ABT 74 
   STATUS DETAIL, ABT 74          * REQUEST DETAILED STATUS 
   REL, ABT 74
   B0=SB(4) RS 6                  * EXTRACT REVISION
   B0=B0 AND 17 
   MSG 2 (B0) TO LINE 4           * DISPLAY REVISION
24 MSG 16 TO LINE 6 
   PICTURE
   GOTO 77                        * END OF MODULE 
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
77 END 20 
COMPILE 
   MODULE FMU37, DEMA2, (14), LOCK
*** 5.2.46 FMU37 - WRITE 885-4X DIAGNOSTIC TRACKS 
**
*          PURPOSE- 
*          FMU37 WRITES A PATTERN ON TRACKS 3 THRU 9 OF CYLINDER 841. 
*          THIS PATTERN IS FOR USE BY DIAGNOSTIC PROGRAMS.  THE 
*          HEXADECIMAL FORM OF THE PATTERN IS AS FOLLOWS--
*                         E36A AAAA 
*          THIS PATTERN IS REPEATED TO FILL EACH SECTOR.
* 
*          METHOD-
*          FMU37 BUILDS THE REQUIRED PATTERN IN THE OUTPUT BUFFER.
*          THE WRITE CODED SECTOR FUNCTION IS THEN USED TO COPY THE 
*          PATTERN TO THE DISK. 
* 
*          ENTRY- 
*          FMU37 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE 
*          EXECUTION. 
/ 
*          EXIT-
*          FMU37 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU37 CALLS SUBMODULE FMU98E TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU37 USES REGISTERS B0 TO B2, AND B4 TO B7.  REGISTERS ARE
*          USED AS FOLLOWS--
*            B0 - CYLINDER
*            B1 - TRACK 
*            B2 - SECTOR
*            B3 - EVEN/ODD SECTOR INDEX 
*            B4 - NUMBER OF SECTORS TO WRITE
*            B5 - DISPLAY LINE NUMBER 
*            B6 - OUTPUT BUFFER INDEX 
*            B7 - PATTERN INDEX 
* 
*          BUFFERS USED-
*          FMU37 USES THE OUTPUT BUFFERS AS FOLLOWS-- 
*            OB(0) TO OB(37) - PATTERN
*            OB(0) TO OB(501) - WRITE DATA
* 
* 
/  - WRITE 885-4X DIAGNOSTIC TRACKS - 
/ 
1  FORMAT WRITE 885-4X DIAGNOSTIC TRACKS
2  FORMAT DIAGNOSTIC TRACKS WRITTEN 
3  FORMAT SKIPPED FLAWED TRACK - CY=*OCT, TR=*O 
15 FORMAT FMU37 TRACK *O
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU37 PAUSE - WRITE DIAGNOSTIC TRACKS 
/  - DIAGNOSTIC DATA PATTERN -
/ 
   DATA (OB,3H) E36E,36E3,6E36,AAAA,AAAA,AAAA 
   DATA (OB(10),3H) AAEA,AEAA,EAAE,36A3,6A36,A36A 
   DATA (OB(20),3H) AAAA,AAAA,AAAA,AE3A,E3AE,3AE3 
   DATA (OB(30),3H) 6AA6,AA6A,A6AA,AAAA,AAAA,AAAA 
20 BLANK
   B0=841D                        * SET CYLINDER
   B1=3                           * SET STARTING TRACK
   MSG 15 (B1) TO DISPLAY 
   MSG 1 TO LINE 2
   B5=4                           * SET DISPLAY LINE
   MSG 17 TO DISPLAY,PRINT
   PAUSE
   B6=40B                         * SET OB INDEX
   B7=0                           * SET PATTERN INDEX 
24 OB(B6)=OB(B7)                  * LOAD OUTPUT BUFFER
   B7=B7 + 1 AND 37               * NEXT PATTERN
   GOTO 24 WHILE (B6+1 LT 502)    * IF BUFFER NOT FULL
/ 
/  WRITE TRACKS 
30 RES DRIVE, ABT 74
   B3 = 0                         * SET EVEN/ODD INDEX
32 B4=16D                         * SET NUMBER OF SECTORS 
   B2=B3                          * SET STARTING SECTOR 
   WRITE B4 CODED SECTORS AT CYL B0 TRK B1 SEC B2, ABT 60 
   GOTO 32 WHILE (B3+1.LE.1)      * DO FOR EVEN/ODD SECTORS 
34 MSG 15 (B1) TO DISPLAY 
   MSG 15 (B1) TO LINE B5 
   B1 = B1 + 1                    * NEXT TRACK
   IF (B1 LE 11) GOTO 30          * IF MORE TRACKS
   MSG 2 TO LINE B5 
   B5=B5+2                        * INCREMENT DISPLAY LINE
   MSG 16 TO LINE B5
   PICTURE
   GOTO 77
/ 
/  CHECK FOR TRACK FLAW 
60 IF (SB NE 5000) GOTO 74        * IF GENERAL STATUS NE 5000 
   IF (SB(5) AND 4000 EQ 0) GOTO 74    * IF NOT TRACK FLAW
   MSG 3 (B0,B1) TO LINE B5       * DISPLAY TRACK FLAW MESSAGE
   B5=B5+2
   GOTO 34                        * GO ON TO NEXT TRACK 
/ 
/  DISPLAY DETAILED STATUS
74 CALL 98E                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
*ENDIF
   MODULE FMU40, 6000, (03,05,07,14,16), LOCK 
*IF DEF,CMSE17X 
*** 5.2.67 FMU40 - DISPLAY 7155 MEMORY (DC=3,5,7,14)
*ENDIF
*IF -DEF,CMSE17X
*** 5.2.65 FMU40 - DISPLAY 7155 MEMORY
*ENDIF
**
*          PURPOSE- 
*          FMU40 DISPLAYS 32 WORDS OF 7155 PROGRAM MEMORY AND PROVIDES
*          A MEANS OF CHANGING THE CONTENTS OF MEMORY.  FMU40 MAY ALSO
*          COMMAND THE 7155 PROCESSOR TO BEGIN PROGRAM EXECUTION AT A 
*          SPECIFIED ADDRESS. 
* 
*          METHOD-
*          FMU40 DISPLAYS 32 WORDS BEGINNING AT THE ADDRESS SPECIFIED 
*          BY P0,P1.  FOR EXAMPLE, IF P0=0001 AND P1=2340 FMU40 WILL
*          DISPLAY 32 WORDS BEGINNING AT OCTAL ADDRESS 12340.  AFTER
*          DISPLAYING THE CONTENTS OF MEMORY FMU40 PAUSES.  WHEN A GO 
*          COMMAND IS ENTERED PARAMETERS P2 AND P3 ARE CHECKED.  IF THEY
*          ARE NON-ZERO THEY ARE ASSUMED TO CONTAIN AN EXECUTION
*          ADDRESS.  THE PROCESSOR IS THEN STARTED AT THAT ADDRESS. 
*          NEXT, PARAMETERS P4 AND P5 ARE CHECKED.  IF THEY ARE NON-ZERO
*          THEY ARE ASSUMED TO CONTAIN THE ADDRESS OF A MEMORY
*          LOCATION TO BE CHANGED.  P6 AND P7 ARE ASSUMED TO CONTAIN
*          THE DATA TO BE STORED AT THAT ADDRESS.  PARAMETERS ARE 
*          CHANGED TO AN 8-BITS-PER-WORD FORMAT AND P6,P7 IS WRITTEN
*          AT LOCATION P4,P5.  FINALLY, FMU40 AGAIN DISPLAYS 32 WORDS 
*          OF MEMORY AND PAUSES.
* 
*          ENTRY- 
*          FMU40 REQUIRES PARAMETERS P0 TO P7 SET TO INDICATE MEMORY
*          DISPLAY ADDRESS, EXECUTION ADDRESS, MEMORY WRITE ADDRESS,
*          AND MEMORY WRITE DATA.  PARAMETERS ARE USED AS FOLLOWS-- 
*            P0,P1 - DISPLAY ADDRESS
*            P2,P3 - EXECUTION ADDRESS (IF NON-ZERO)
*            P4,P5 - MEMORY LOCATION TO CHANGE (IF NON-ZERO)
*            P6,P7 - MEMORY WRITE DATA
/ 
*          EXIT-
*          FMU40 TERMINATES WITH A PAUSE STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU40 DOES NOT CALL ANY SUBMODULES.
* 
*          REGISTERS USED-
*          FMU40 USES REGISTERS B0 TO B10, BA, AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--
*            B0 - INPUT BUFFER INDEX
*            B1 - MESSAGE NUMBER
*            B2 - LINE NUMBER 
*            B3 TO B10 - DATA FOR DISPLAY LINE
*            BA - OUTPUT BUFFER STARTING ADDRESS
*            WC - OUTPUT WORD COUNT 
* 
*          BUFFERS USED-
*          FMU40 USES THE INPUT BUFFER FOR DATA READ FROM 7155 MEMORY.
*          THE OUTPUT BUFFER IS USED FOR FUNCTION PARAMETERS SENT TO
*          THE CONTROLLER.
* 
* 
/  - DISPLAY 7155 MEMORY -
/ 
1  FORMAT P0,P1=DISPLAY ADD.  P2,P3=EXEC. ADD. IF NON-ZERO
2  FORMAT P4,P5=ADD. TO CHANGE IF NON-ZERO  P6,P7=VALUE 
3  FORMAT FMU40  7155 MEMORY DISPLAY
4  FORMAT     *OCTX   *OCTX   *OCTX   *OCTX 
5  FORMAT 0  *O*OCT  *O*OCT  *O*OCT  *O*OCT 
6  FORMAT 1  *O*OCT  *O*OCT  *O*OCT  *O*OCT 
7  FORMAT 2  *O*OCT  *O*OCT  *O*OCT  *O*OCT 
10 FORMAT 3  *O*OCT  *O*OCT  *O*OCT  *O*OCT 
11 FORMAT 4  *O*OCT  *O*OCT  *O*OCT  *O*OCT 
12 FORMAT 5  *O*OCT  *O*OCT  *O*OCT  *O*OCT 
13 FORMAT 6  *O*OCT  *O*OCT  *O*OCT  *O*OCT 
14 FORMAT 7  *O*OCT  *O*OCT  *O*OCT  *O*OCT 
15 FORMAT ABORT - EC=*OCT AT LINE *OCT
17 FORMAT FMU40 PAUSE - DISPLAY 7155 MEMORY 
   DATA (OB(0),CON) 0002,0000,0000,0000,0000
20 BLANK
   MSG 3 TO LINE 5
   MSG 3 TO DISPLAY 
   MSG 1 TO LINE 21 
   MSG 2 TO LINE 22 
   IB(500)=P1 RS 10 
   OB(2)=P1 AND 370               * SET DISPLAY ADDRESS 
   OB(1)=P0 LS 4 XOR IB(500)
   GOSUB 40                       * SET DISPLAY ADDRESS 
   GOSUB 44                       * DISPLAY 40B LOCATIONS 
   FUNC 10                        * OPERATION COMPLETE
   MSG 17 TO DISPLAY,PRINT
   PAUSE
   IF (P2 NE 0) GOTO 22           * IF EXECUTE REQUEST
   IF (P3 EQ 0) GOTO 24           * IF NO EXECUTE REQUEST 
22 OB(0)=4                        * SELECT EXECUTE
   IB(500)=P3 RS 10 
   OB(2)=P3 AND 377               * SET EXECUTION ADDRESS 
   OB(1)=P2 LS 4 XOR IB(500)
   GOSUB 40                       * EXECUTE AT P2,P3
24 IF (P4 NE 0) GOTO 26           * IF MEMORY CHANGE
   IF (P5 EQ 0) GOTO 30           * IF NO MEMORY CHANGE 
26 OB(0)=1                        * FOR MEMORY CHANGE 
   IB(500)=P5 RS 10 
   OB(2)=P5 AND 377               * SET ADDRESS TO CHANGE 
   OB(1)=P4 LS 4 XOR IB(500)
   IB(500)=P7 RS 10 
   OB(4)=P7 AND 377 
   OB(3)=P6 LS 4 XOR IB(500)
   GOSUB 40                       * CHANGE 1 MEM. LOCATION
30 OB(0)=2                        * SELECT MEMORY DISPLAY 
   GOTO 20
/         MANIPULATE PROCESSOR SUBROUTINE 
40 WC=5                           * WORD COUNT
   BA=0                           * BUFFER ADDRESS
   RES, ABT 70
   FOUT 62, ABT 70                * MANIPULATE PROCESSOR FUNCTION 
   RETURN 
/         INPUT AND DISPLAY 7155 MEMORY SUBROUTINE. 
44 FUNC 63, ABT 70                * INPUT DISPLAY DATA
   INB 100 WORDS TO IB(0), ABT 70 
   B0=0 
46 IB(500)=IB(B0) AND 17 LS 10
   IB(B0+1)=IB(B0+1) XOR IB(500)
   IB(B0)=IB(B0) RS 4 
   B0=B0+2
   IF (B0 NE 100) GOTO 46         * IF MORE WORDS TO MODIFY 
   B0=0                           * POINTER 
   B1=5                           * MESSAGE NUMBER
   B2=10                          * LINE NUMBER 
50 B3=IB(B0)
   B4=IB(B0+1)
   B5=IB(B0+20) 
   B6=IB(B0+21) 
   B7=IB(B0+40) 
   B8=IB(B0+41) 
   B9=IB(B0+60) 
   B10=IB(B0+61)
   MSG B1 (B3,B4,B5,B6,B7,B8,B9,B10) TO LINE B2 
   B0=B0+2
   B1=B1+1
   B2=B2+1
   IF (B0 NE 20) GOTO 50          * IF MORE LINES TO DISPLAY
   B0=P0 AND 7 LS 11
   B1=P1 RS 3 XOR B0
   B2=B1+1
   B3=B2+1
   B4=B3+1
   MSG 4 (B1,B2,B3,B4) TO LINE 7
   RETURN 
70 MSG 15 (EC,EA) TO LINE 24
   MSG EM TO LINE 26
   FUNC 10                        * OPERATION COMPLETE
   PICTURE
   ENDSUB 
   END 20 
COMPILE 
   MODULE FMU41, 6000, (03,05,16), LOCK 
*** 5.2.47 FMU41 - READ 844 SERIAL NUMBER 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU41 DISPLAYS AND PRINTS THE SERIAL NUMBER AND DATE OF       FMU
*          FORMATTING FOR THE ASSIGNED 844 DRIVE.                        FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU41 READS CYLINDER 1466B, TRACK 0, SECTOR 0 ON THE ASSIGNED FMU
*          DRIVE.  THE SERIAL NUMBER AND DATE OF FORMATTING ARE          FMU
*          EXTRACTED FROM THE FIRST FOUR WORDS OF THIS SECTOR.           FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU41 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE          FMU
*          EXECUTION.                                                    FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU41 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS    FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU41 CALLS SUBMODULE FMU98C TO DISPLAY DETAILED STATUS       FMU
*          IF AN I/O FUNCTION IS ABORTED.                                FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU41 USES REGISTERS B1, B2, B3, AND B5.  REGISTERS ARE       FMU
*          USED AS FOLLOWS--                                             FMU
*            B1 - DATE OF FORMATTING                                     FMU
*            B2 - DATE OF FORMATTING                                     FMU
*            B3 - DATE OF FORMATTING                                     FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU41 USES THE INPUT BUFFER FOR DATA READ FROM THE DRIVE.     FMU
*          FMU41 USES THE OUTPUT BUFFER FOR SEEK PARAMETERS SENT         FMU
*          TO THE CONTROLLER.                                            FMU
*                                                                        FMU
*                                                                        FMU
/  - READ 844 SERIAL NUMBER -                                            FMU
/                                                                        FMU
1  FORMAT 844 SERIAL NUMBER - CH=*O, EQ=*O, UN=*O                        FMU
2  FORMAT S/N = *HE*HE    DATE OF FORMAT = *H/*H/*H                      FMU
15 FORMAT MODULE FMU41                                                   FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(70),SB(71),SB(72)) TO LINE 2                                FMU
   B5=3                           * SET DISPLAY LINE                     FMU
   OB(400)=SB(72)                 * SET SEEK PARAMETERS                  FMU
   OB(401)=1466                                                          FMU
   OB(402)=0                                                             FMU
   OB(403)=0                                                             FMU
   RES, ABT 74                                                           FMU
30 FUNC 0001, ABT 74              * SEEK                                 FMU
   OUTB 4 WORDS FROM OB(400), ABT 74                                     FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0030, ABT 74              * READ MFG DATA                        FMU
   INB 502 WORDS TO IB, ABT 74                                           FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   B3=IB(3) AND 0377              * EXTRACT DAY/MO/YR                    FMU
   B2=IB(3) RS 8                                                         FMU
   B1=IB(2) AND 0017                                                     FMU
   B1=B1 LS 4                                                            FMU
   B2=B1 XOR B2                                                          FMU
   B1=IB(2) RS 4                                                         FMU
   MSG 2 (IB(0),IB(1),B1,B2,B3) TO LINE 4                                FMU
44 MSG 16 TO LINE 6                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU42, 6000, (03,05,16), LOCK 
*** 5.2.48 FMU42 - READ 844 FACTORY FLAW TABLES 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU42 DISPLAYS AND PRINTS THE FACTORY TRACK FLAW TABLE AND    FMU
*          THE FACTORY SECTOR FLAW TABLE FOR THE ASSIGNED 844 DRIVE.     FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU42 READS THE FACTORY FLAW TABLES FROM CYLINDER 1466B,      FMU
*          TRACK 0, SECTOR 1.  THIS SECTOR CONTAINS BOTH TRACK AND       FMU
*          SECTOR FLAWS.  THERE MAY BE UP TO 160 ENTRIES IN THIS TABLE.  FMU
*          AFTER READING THIS SECTOR FMU42 COPIES THE FLAWS TO THE       FMU
*          K DISPLAY AND TO THE PRINTER.  CYLINDER, TRACK, AND SECTOR    FMU
*          NUMBERS IN THE TABLES ARE DISPLAYED AND PRINTED IN OCTAL.     FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU42 REQUIRES PARAMETER P0 TO BE SET TO INDICATE WHICH       FMU
*          TABLES TO DISPLAY AND PRINT.  PARAMETER USAGE AND ALLOWED     FMU
*          OCTAL VALUES ARE SHOWN BELOW--                                FMU
*            P0 = 0 - DISPLAY AND PRINT TRACK AND SECTOR FLAW TABLES     FMU
*                 1 - DISPLAY AND PRINT TRACK FLAWS ONLY                 FMU
*                 2 - DISPLAY AND PRINT SECTOR FLAWS ONLY                FMU
*          AN ERROR MESSAGE IS DISPLAYED IF P0 IS GREATER THAN 2.        FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU42 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS    FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU42 CALLS SUBMODULE FMU98D TO DISPLAY THE FLAW TABLES AND   FMU
*          SUBMODULE FMU98C TO DISPLAY DETAILED STATUS IF AN I/O         FMU
*          FUNCTION IS ABORTED.                                          FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU42 USES REGISTERS B5 AND B6.  REGISTERS ARE USED           FMU
*          AS FOLLOWS--                                                  FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - DISPLAY SELECT FLAG FOR SUBMODULE FMU98D
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU42 USES THE INPUT BUFFER FOR DATA READ FROM THE DRIVE.     FMU
*          THIS DATA IS COPIED TO THE OUTPUT BUFFER FOR USE BY           FMU
*          SUBMODULE FMU98D. THE OUTPUT BUFFER IS ALSO USED FOR SEEK     FMU
*          PARAMETERS SENT TO THE CONTROLLER.                            FMU
*                                                                        FMU
*                                                                        FMU
/  - READ FACTORY MAP -                                                  FMU
/                                                                        FMU
1  FORMAT 844 FACTORY MAP - CH=*O, EQ=*O, UN=*O                          FMU
10 FORMAT ILLEGAL PARAMETER P0                                           FMU
15 FORMAT MODULE FMU42                                                   FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(70),SB(71),SB(72)) TO LINE 2                                FMU
   B5=5                           * DISPLAY INDEX                        FMU
   OB(400)=SB(72)                 * SET SEEK PARAMETERS                  FMU
   OB(401)=1466                                                          FMU
   OB(402)=0                                                             FMU
   OB(403)=1                                                             FMU
   RES, ABT 74                                                           FMU
30 FUNC 0001, ABT 74              * SEEK                                 FMU
   OUTB 4 WORDS FROM OB(400), ABT 74                                     FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0030, ABT 74              * READ FACTORY MAP                     FMU
   INB 502 WORDS TO IB, ABT 74                                           FMU
   COPY IB TO OB FOR 502                                                 FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
40 IF (P0 EQ 0) GOTO 46           * IF ALL MAPS                          FMU
   IF (P0 EQ 1) GOTO 46           * IF TRACK MAP ONLY                    FMU
   IF (P0 EQ 2) GOTO 52           * IF SECTOR MAPS ONLY                  FMU
   MSG 10 TO LINE 4               * ERROR IF P0 NOT 0 TO 2               FMU
   MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ERROR STOP                           FMU
46 B6=1                                                                  FMU
   CALL 98D                       * DISPLAY TRACK FLAWS                  FMU
   IF (P0 EQ 1) GOTO 77           * IF TRACK MAP ONLY                    FMU
52 B6=2                                                                  FMU
   CALL 98D                       * DISPLAY SECTOR FLAWS                 FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU43, 6000, (03,05,16), LOCK 
*** 5.2.49 FMU43 - READ 844 UTILITY TABLES
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU43 DISPLAYS AND PRINTS THE UTILITY TRACK FLAW TABLE AND    FMU
*          THE UTILITY SECTOR FLAW TABLE FOR THE ASSIGNED 844 DRIVE.     FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU43 READS THE UTILITY FLAW TABLES FROM CYLINDER 1466B,      FMU
*          TRACK 0, SECTOR 2.  THIS SECTOR CONTAINS BOTH TRACK AND       FMU
*          SECTOR FLAWS.  THERE MAY BE UP TO 160 ENTRIES IN THIS TABLE.  FMU
*          AFTER READING THE SECTOR FMU43 CHECKS PARAMETER P4.  IF P4    FMU
*          IS EQUAL TO 1, FMU43 EXITS TO FMU431.  IF P4 IS EQUAL TO      FMU
*          ZERO, FMU43 COPIES THE FLAWS TO THE K DISPLAY AND TO THE      FMU
*          PRINTER.  CYLINDER, TRACK, AND SECTOR NUMBERS IN THE TABLES   FMU
*          ARE DISPLAYED AND PRINTED IN OCTAL.                           FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU43 REQUIRES PARAMETER P0 TO BE SET TO INDICATE WHICH       FMU
*          TABLES TO DISPLAY AND PRINT AS SHOWN BELOW--                  FMU
*            P0 = 0 - DISPLAY AND PRINT TRACK AND SECTOR FLAW TABLES     FMU
*                 1 - DISPLAY AND PRINT TRACK FLAWS ONLY                 FMU
*                 2 - DISPLAY AND PRINT SECTOR FLAWS ONLY                FMU
*          AN ERROR MESSAGE IS DISPLAYED IF P0 IS GREATER THAN 2.        FMU
*          FMU43 ALSO REQUIRES PARAMETER P4 TO BE SET TO INDICATE        FMU
*          IF THE TRACK FLAW TABLES ARE TO BE PRINTED WITH OR WITHOUT    FMU
*          REORDERING.  PARAMETER USAGE AND ALLOWED VALUES ARE           FMU
*          SHOWN BELOW--                                                 FMU
*            P4 = 0 - DISPLAY AND PRINT TABLES WITHOUT REORDERING.       FMU
*                 1 - SORT TABLES INTO ASCENDING ORDER BY CYLINDER,      FMU
*                     TRACK, AND SECTOR                                  FMU
*          AN ERROR MESSAGE IS DISPLAYED IF P4 IS GREATER THAN 1.        FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU43 TERMINATES WITH AN END STATEMENT OR BY EXITING          FMU
*          TO MODULE FMU431.  REGISTER B5 CONTAINS THE K DISPLAY         FMU
*          LINE NUMBER FOR FMU431 AND THE INPUT BUFFER CONTAINS THE      FMU
*          UTILITY FLAW MAP.                                             FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU43 CALLS SUBMODULE FMU98D TO DISPLAY THE FLAW TABLES AND   FMU
*          SUBMODULE FMU98C TO DISPLAY DETAILED STATUS IF AN I/O         FMU
*          FUNCTION IS ABORTED.                                          FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU43 USES REGISTERS B5 AND B6.  REGISTERS ARE USED           FMU
*          AS FOLLOWS--                                                  FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - DISPLAY SELECT FLAG FOR SUBMODULE FMU98D               FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU43 USES THE INPUT BUFFER FOR DATA READ FROM THE DRIVE.     FMU
*          DATA IS COPIED TO THE OUTPUT BUFFER FOR USE BY SUBMODULE      FMU
*          FMU98D.  THE OUTPUT BUFFER IS ALSO USED FOR SEEK PARAMETERS   FMU
*          SENT TO THE CONTROLLER.                                       FMU
*                                                                        FMU
*                                                                        FMU
/  - READ UTILITY MAP -                                                  FMU
/                                                                        FMU
1  FORMAT 844 UTILITY MAP - CH=*O, EQ=*O, UN=*O                          FMU
10 FORMAT ILLEGAL PARAMETER P0                                           FMU
11 FORMAT ILLEGAL PARAMETER P4                                           FMU
15 FORMAT MODULE FMU43                                                   FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(70),SB(71),SB(72)) TO LINE 2                                FMU
   B5=5                           * SET DISPLAY LINE                     FMU
   OB(400)=SB(72)                 * SET SEEK PARAMETERS                  FMU
   OB(401)=1466                                                          FMU
   OB(402)=0                                                             FMU
   OB(403)=2                                                             FMU
   RES, ABT 74                                                           FMU
30 FUNC 0001, ABT 74              * SEEK                                 FMU
   OUTB 4 WORDS FROM OB(400), ABT 74                                     FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0031, ABT 74              * READ UTILITY MAP                     FMU
   INB 502 WORDS TO IB, ABT 74                                           FMU
   COPY IB TO OB FOR 502                                                 FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
40 IF (P0 EQ 0) GOTO 44           * IF ALL MAPS                          FMU
   IF (P0 EQ 1) GOTO 44           * IF TRACK MAP ONLY                    FMU
   IF (P0 EQ 2) GOTO 50           * IF SECTOR MAPS ONLY                  FMU
   MSG 10 TO LINE 4               * ERROR IF P0 NOT 0 TO 2               FMU
42 MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ERROR STOP                           FMU
44 IF (P4 EQ 1) EXIT TO 431       * IF REORDER ENABLED                   FMU
   IF (P4 EQ 0) GOTO 46           * IF REORDER DISABLED                  FMU
   MSG 11 TO LINE 4               * ERROR IF P4 NOT 0 OR 1               FMU
   GOTO 42                                                               FMU
46 B6=1                                                                  FMU
   CALL 98D                       * DISPLAY TRACK FLAWS                  FMU
   IF (P0 EQ 1) GOTO 77           * IF TRACK MAP ONLY                    FMU
50 IF (P4 EQ 1) EXIT TO 431       * IF REORDER ENABLED                   FMU
   IF (P4 EQ 0) GOTO 52           * IF REORDER DISABLED                  FMU
   MSG 11 TO LINE 4               * ERROR IF P4 NOT 0 OR 1               FMU
   GOTO 42                                                               FMU
52 B6=2                                                                  FMU
   CALL 98D                       * DISPLAY SECTOR FLAWS                 FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU431, 6000, (03,05,16), LOCK
*** 5.2.50 FMU431 - REORDER 844 UTILITY FLAW TABLES 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU431 SORTS THE UTILITY TRACK FLAW TABLE AND THE UTILTY      FMU
*          SECTOR FLAW TABLE INTO ASCENDING ORDER BY CYLINDER, TRACK,    FMU
*          AND SECTOR.  THESE TABLES ARE THEN DISPLAYED AND PRINTED.     FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU431 ASSUMES THAT THE INPUT BUFFER CONTAINS THE UTILITY     FMU
*          FLAW MAPS.  THIS DATA IS SORTED INTO ASCENDING ORDER AND      FMU
*          PLACED IN THE OUTPUT BUFFER.  THE SORTED FLAW MAPS ARE THEN   FMU
*          DISPLAYED AND PRINTED IN OCTAL.                               FMU
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU431 IS ONLY ENTERED FROM MODULE FMU43, AND THEN ONLY IF    FMU
*          PARAMETER P4 IS EQUAL TO 1.  PARAMETER P0 MUST ALSO BE SET    FMU
*          AS REQUIRED BY MODULE FMU43.                                  FMU
*          FMU431 ASSUMES THAT THE LINE NUMBER FOR THE K DISPLAY         FMU
*          IS IN REGISTER B5.                                            FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU431 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS   FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU431 CALLS SUBMODULE FMU98D TO DISPLAY THE FLAW TABLES AND  FMU
*          SUBMODULE FMU98C TO DISPLAY DETAILED STATUS IF AN I/O         FMU
*          FUNCTION IS ABORTED.                                          FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU431 USES REGISTERS B1 TO B7.  REGISTERS ARE USED           FMU
*          AS FOLLOWS--                                                  FMU
*            B1 - INDEX FOR SHIFTING THE DISPLAY BUFFER                  FMU
*            B2 - INDEX FOR SHIFTING THE DISPLAY BUFFER                  FMU
*            B3 - INPUT BUFFER INDEX                                     FMU
*            B4 - INPUT BUFFER INDEX                                     FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - DISPLAY SELECT FLAG FOR SUBMODULE FMU98D               FMU
*                 ALSO, INDEX TO DISPLAY BUFFER                          FMU
*            B7 - INDEX TO DISPLAY BUFFER                                FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU431 USES THE INPUT BUFFER FOR FLAW TABLES READ FROM THE    FMU
*          DRIVE.  THE OUTPUT BUFFER IS USED AS THE DISPLAY BUFFER       FMU
*          AND FOR SORTING THE TABLES INTO SEQUENTIAL ORDER.             FMU
*                                                                        FMU
*                                                                        FMU
/  - READ UTILITY MAPS (REORDER) -                                       FMU
/                                                                        FMU
15 FORMAT MODULE FMU431                                                  FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 MSG 15 TO DISPLAY                                                     FMU
   OB(500)=0                      * CLEAR LAST FLAW                      FMU
   OB(501)=0                                                             FMU
   B7=0                                                                  FMU
26 OB(B7)=0                       * CLEAR OB(0-319)                      FMU
   B7=B7+1                                                               FMU
   IF (B7 LT 320D) GOTO 26        * IF NOT DONE CLEARING                 FMU
35 B4=0                           * RESET IB INDEX                       FMU
40 B7=0                           * RESET OB INDEX                       FMU
   B3=B4+1                                                               FMU
   IF (IB(B4) AND 6000 EQ 0) GOTO 70   * IF END OF IB                    FMU
   IF (IB(B4) GT OB(500)) GOTO 50      * FLAW MAP GT LAST FLAW           FMU
   IF (IB(B4) LT OB(500)) GOTO 44      * FLAW MAP LT LAST FLAW           FMU
   IF (IB(B3) GT OB(501)) GOTO 50      * FLAW MAP GT LAST FLAW           FMU
44 B4=B4+2                        * INCREMENT IB INDEX                   FMU
   IF (B4 LT 320D) GOTO 40        * IF NOT END OF SECTOR                 FMU
   GOTO 70                        * END OF TABLE                         FMU
50 B6=B7+1                                                               FMU
   IF (OB(B7) EQ 0) GOTO 54       * IF END OF FLAW DISPLAY               FMU
   IF (IB(B4) GT OB(B7)) GOTO 52  * FLAW MAP GT FLAW DISPLAY             FMU
   IF (IB(B4) LT OB(B7)) GOTO 54  * FLAW MAP LT FLAW DISPLAY             FMU
   IF (IB(B3) LT OB(B6)) GOTO 54  * FLAW MAP LT FLAW DISPLAY             FMU
52 B7=B7+2                        * INCREMENT OB INDEX                   FMU
   IF (B7 LT 320D) GOTO 50        * IF NOT END OF OB                     FMU
   GOTO 44                                                               FMU
54 B2=319D                        * MOVE OB DOWN                         FMU
55 B1=B2-2                                                               FMU
   OB(B2)=OB(B1)                                                         FMU
   B2=B2-1                        * MOVE NEXT ENTRY                      FMU
   IF (B2 GT B6) GOTO 55          * IF MORE TO MOVE                      FMU
   OB(B7)=IB(B4)                  * INSERT FLAW                          FMU
   OB(B6)=IB(B3)                                                         FMU
   GOTO 44                                                               FMU
70 IF (P0 GT 1) GOTO 72           * IF SECTOR FLAWS ONLY                 FMU
   B6=1                                                                  FMU
   CALL 98D                       * DISPLAY TRACK FLAWS                  FMU
   IF (P0 EQ 1) GOTO 77           * IF TRACK FLAWS ONLY                  FMU
72 B6=2                                                                  FMU
   CALL 98D                       * DISPLAY SECTOR FLAWS                 FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU45, 6000, (03,05,16), LOCK 
*** 5.2.51 FMU45 - SET 844 SECTOR FLAW
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU45 SETS A SECTOR FLAW AND ENTERS THE FLAW IN THE UTILITY   FMU
*          FLAW MAP.                                                     FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU45 PERFORMS A SEEK TO THE SECTOR INDICATED BY PARAMETERS   FMU
*          P1, P2, AND P3.  A SET FLAW FUNCTION IS THEN ISSUED AND A     FMU
*          PARAMETER WORD IS SENT TO THE CONTROLLER.  A CHECK OF STATUS  FMU
*          IS MADE TO INSURE THAT THE FUNCTION COMPLETES WITHOUT ERROR.  FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU45 REQUIRES PARAMETERS P1, P2, AND P3 TO BE SET TO         FMU
*          INDICATE THE SECTOR TO BE FLAWED.  PARAMETER USAGE AND        FMU
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW--                        FMU
*            P1 - CYLINDER (0 TO 1466)                                   FMU
*            P2 - TRACK    (0 TO 22)                                     FMU
*            P3 - SECTOR   (0 TO 27)                                     FMU
*          AN ERROR MESSAGE IS DISPLAYED IF ANY OF THE PARAMETERS        FMU
*          IS OUT OF RANGE.                                              FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU45 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS    FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU45 CALLS SUBMODULE FMU98C TO DISPLAY DETAILED STATUS IF    FMU
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU45 USES REGISTER B5 FOR THE K DISPLAY LINE NUMBER.         FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU45 USES THE OUTPUT BUFFER FOR PARAMETERS FOR THE SEEK AND  FMU
*          SET FLAW FUNCTIONS.  BUFFER LOCATIONS USED ARE AS FOLLOWS--   FMU
*            OB(400) TO OB(403) - SEEK PARAMETERS                        FMU
*            OB(500) - PARAMETER FOR SET FLAW FUNCTION                   FMU
*                                                                        FMU
*                                                                        FMU
/  - SET SECTOR FLAW -                                                   FMU
/                                                                        FMU
1  FORMAT SET 844 SECTOR FLAW - CH=*O, EQ=*O, UN=*O                      FMU
2  FORMAT CYLINDER = *OCT,  TRACK = *O,  SECTOR = *O                     FMU
3  FORMAT ERROR - SECTOR FLAW ALREADY SET                                FMU
4  FORMAT ERROR - SECTOR FLAW MAP FULL                                   FMU
6  FORMAT SECTOR FLAW SET                                                FMU
12 FORMAT ILLEGAL PARAMETER P1 (MAXIMUM CY=1466)                         FMU
13 FORMAT ILLEGAL PARAMETER P2 (MAXIMUM TR=22)                           FMU
14 FORMAT ILLEGAL PARAMETER P3 (MAXIMUM SE=27)                           FMU
15 FORMAT MODULE FMU45                                                   FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU45 PAUSE - SET 844 SECTOR FLAW 
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(70),SB(71),SB(72)) TO LINE 2                                FMU
   MSG 2 (P1,P2,P3) TO LINE 3                                            FMU
   IF (P1 LE 822D) GOTO 24        * IF VALID CYLINDER                    FMU
   MSG 12 TO LINE 5               * ILLEGAL CYLINDER                     FMU
22 MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ILLEGAL PARAMETER                    FMU
24 IF (P2 LE 18D) GOTO 26         * IF VALID TRACK                       FMU
   MSG 13 TO LINE 5               * ILLEGAL TRACK                        FMU
   GOTO 22                                                               FMU
26 IF (P3 LE 23D) GOTO 27         * IF VALID SECTOR                      FMU
   MSG 14 TO LINE 5               * ILLEGAL SECTOR                       FMU
   GOTO 22                                                               FMU
27 MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=4                           * SET DISPLAY LINE                     FMU
   OB(400)=SB(72)                 * SET SEEK PARAMETERS                  FMU
   OB(401)=P1                                                            FMU
   OB(402)=P2                                                            FMU
   OB(403)=P3                                                            FMU
   RES, ABT 74                                                           FMU
30 FUNC 0001, ABT 74              * SEEK                                 FMU
   OUTB 4 WORDS FROM OB(400), ABT 74                                     FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   OB(500)=0002                   * SET PARAMETER                        FMU
   FUNC 0022, ABT 74              * SET SECTOR FLAW                      FMU
   OUTB 1 WORDS FROM OB(500), ABT 74                                     FMU
32 FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 32     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   MSG 6 TO LINE 5                                                       FMU
   MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU46, 6000, (03,05,16), LOCK 
*** 5.2.52 FMU46 - CLEAR 844 SECTOR FLAW
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU46 CLEARS A SECTOR FLAW AND REMOVES THE FLAW FROM THE      FMU
*          UTILITY FLAW MAP.                                             FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU46 PERFORMS A SEEK TO THE SECTOR INDICATED BY PARAMETERS   FMU
*          P1, P2, AND P3.  A CLEAR FLAW FUNCTION IS THEN ISSUED AND A   FMU
*          PARAMETER WORD IS SENT TO THE CONTROLLER.  A CHECK OF STATUS  FMU
*          IS MADE TO INSURE THAT THE FUNCTION COMPLETES WITHOUT ERROR.  FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU46 REQUIRES PATAMETERS P1, P2, AND P3 TO BE SET TO         FMU
*          INDICATE THE SECTOR FLAW TO BE CLEARED.  PARAMETER USAGE AND  FMU
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW--                        FMU
*            P1 - CYLINDER (0 TO 1466)                                   FMU
*            P2 - TRACK    (0 TO 22)                                     FMU
*            P3 - SECTOR   (0 TO 27)                                     FMU
*          AN ERROR MESSAGE IS DISPLAYED IF ANY OF THE PARAMETERS        FMU
*          IS OUT OF RANGE.                                              FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU46 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS    FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU46 CALLS SUBMODULE FMU98C TO DISPLAY DETAILED STATUS IF    FMU
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU46 USES REGISTER B5 FOR THE K DISPLAY LINE NUMBER.         FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU46 USES THE OUTPUT BUFFER FOR PARAMETERS FOR THE SEEK AND  FMU
*          CLEAR FLAW FUNCTIONS.  BUFFER LOCATIONS USED ARE AS FOLLOWS-- FMU
*            OB(400) TO OB(403) - SEEK PARAMETERS                        FMU
*            OB(500) - PARAMETER FOR CLEAR FLAW FUNCTION                 FMU
*                                                                        FMU
*                                                                        FMU
/  - CLEAR SECTOR FLAW -                                                 FMU
/                                                                        FMU
1  FORMAT CLEAR 844 SECTOR FLAW - CH=*O, EQ=*O, UN=*O                    FMU
2  FORMAT CYLINDER = *OCT,  TRACK = *O,  SECTOR = *O                     FMU
3  FORMAT ERROR - SECTOR FLAW ALREADY CLEAR                              FMU
6  FORMAT SECTOR FLAW CLEARED                                            FMU
10 FORMAT ILLEGAL PARAMETER P1 (MAXIMUM CY=1466)                         FMU
11 FORMAT ILLEGAL PARAMETER P2 (MAXIMUM TR=22)                           FMU
12 FORMAT ILLEGAL PARAMETER P3 (MAXIMUM SE=27)                           FMU
15 FORMAT MODULE FMU46                                                   FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU46 PAUSE - CLEAR 844 SECTOR FLAW 
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(70),SB(71),SB(72)) TO LINE 2                                FMU
   MSG 2 (P1,P2,P3) TO LINE 3                                            FMU
   IF (P1 LE 822D) GOTO 24        * IF VALID CYLINDER                    FMU
   MSG 10 TO LINE 5               * ILLEGAL CYLINDER                     FMU
22 MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ILLEGAL PARAMETER                    FMU
24 IF (P2 LE 18D) GOTO 26         * IF VALID TRACK                       FMU
   MSG 11 TO LINE 5               * ILLEGAL TRACK                        FMU
   GOTO 22                                                               FMU
26 IF (P3 LE 23D) GOTO 27         * IF VALID SECTOR                      FMU
   MSG 12 TO LINE 5               * ILLEGAL SECTOR                       FMU
   GOTO 22                                                               FMU
27 MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=4                           * SET DISPLAY LINE                     FMU
   OB(400)=SB(72)                 * SET SEEK PARAMETERS                  FMU
   OB(401)=P1                                                            FMU
   OB(402)=P2                                                            FMU
   OB(403)=P3                                                            FMU
   RES, ABT 74                                                           FMU
30 FUNC 0001, ABT 74              * SEEK                                 FMU
   OUTB 4 WORDS FROM OB(400), ABT 74                                     FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   OB(500)=0000                   * SET PARAMETER                        FMU
   FUNC 0022, ABT 74              * CLEAR SECTOR FLAW                    FMU
   OUTB 1 WORDS FROM OB(500), ABT 74                                     FMU
32 FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 32     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   MSG 6 TO LINE 5                                                       FMU
   MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU47, 6000, (03,05,16), LOCK 
*** 5.2.53 FMU47 - SET 844 TRACK FLAW 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU47 SETS A TRACK FLAW AND ENTERS THE FLAW IN THE UTILITY    FMU
*          FLAW MAP.                                                     FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU47 PERFORMS A SEEK TO THE TRACK INDICATED BY PARAMETERS    FMU
*          P1 AND P2.  A SET FLAW FUNCTION IS THEN ISSUED AND A          FMU
*          PARAMETER WORD IS SENT TO THE CONTROLLER.  A CHECK OF STATUS  FMU
*          IS MADE TO INSURE THAT THE FUNCTION COMPLETES WITHOUT ERROR.  FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU47 REQUIRES PARAMETERS P1 AND P2 TO BE SET TO              FMU
*          INDICATE THE TRACK TO BE FLAWED.  PARAMETER USAGE AND         FMU
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW--                        FMU
*            P1 - CYLINDER (0 TO 1466)                                   FMU
*            P2 - TRACK    (0 TO 22)                                     FMU
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER OF THE PARAMETERS     FMU
*          IS OUT OF RANGE.                                              FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU47 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS    FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU47 CALLS SUBMODULE FMU98C TO DISPLAY DETAILED STATUS IF    FMU
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU47 USES REGISTER B5 FOR THE K DISPLAY LINE NUMBER.         FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU47 USES THE OUTPUT BUFFER FOR PARAMETERS FOR THE SEEK AND  FMU
*          SET FLAW FUNCTIONS.  BUFFER LOCATIONS USED ARE AS FOLLOWS--   FMU
*            OB(400) TO OB(403) - SEEK PARAMETERS                        FMU
*            OB(500) - PARAMETER FOR SET FLAW FUNCTION                   FMU
*                                                                        FMU
*                                                                        FMU
/  - SET TRACK FLAW -                                                    FMU
/                                                                        FMU
1  FORMAT SET 844 TRACK FLAW - CH=*O, EQ=*O, UN=*O                       FMU
2  FORMAT CYLINDER = *OCT,  TRACK = *O                                   FMU
3  FORMAT ERROR - TRACK FLAW ALREADY SET                                 FMU
4  FORMAT ERROR - TRACK FLAW MAP FULL                                    FMU
6  FORMAT TRACK FLAW SET                                                 FMU
12 FORMAT ILLEGAL PARAMETER P1 (MAXIMUM CY=1466)                         FMU
13 FORMAT ILLEGAL PARAMETER P2 (MAXIMUM TR=22)                           FMU
15 FORMAT MODULE FMU47                                                   FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU47 PAUSE - SET 844 TRACK FLAW
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(70),SB(71),SB(72)) TO LINE 2                                FMU
   MSG 2 (P1,P2) TO LINE 3                                               FMU
   IF (P1 LE 822D) GOTO 24        * IF VALID CYLINDER                    FMU
   MSG 12 TO LINE 5               * ILLEGAL CYLINDER                     FMU
22 MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ILLEGAL PARAMETER                    FMU
   GOTO 77                        * END OF MODULE                        FMU
24 IF (P2 LE 18D) GOTO 27         * IF VALID TRACK                       FMU
   MSG 13 TO LINE 5               * ILLEGAL TRACK                        FMU
   GOTO 22                                                               FMU
27 MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=4                           * SET DISPLAY LINE                     FMU
   OB(400)=SB(72)                 * SET SEEK PARAMETERS                  FMU
   OB(401)=P1                                                            FMU
   OB(402)=P2                                                            FMU
   OB(403)=0                                                             FMU
   RES, ABT 74                                                           FMU
30 FUNC 0001, ABT 74              * SEEK                                 FMU
   OUTB 4 WORDS FROM OB(400), ABT 74                                     FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   OB(500)=0003                   * SET PARAMETER                        FMU
   FUNC 0022, ABT 74              * SET TRACK FLAW                       FMU
   OUTB 1 WORDS FROM OB(500), ABT 74                                     FMU
32 FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 32     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   MSG 6 TO LINE 5                                                       FMU
   MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU50, 6000, (03,05,16), LOCK 
*** 5.2.54 FMU50 - CLEAR 844 TRACK FLAW 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU50 CLEARS A TRACK FLAW AND REMOVES THE FLAW FROM THE       FMU
*          UTILITY FLAW MAP.                                             FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU50 PERFORMS A SEEK TO THE TRACK INDICATED BY PARAMETERS    FMU
*          P1 AND P2.  A CLEAR FLAW FUNCTION IS THEN ISSUED AND A        FMU
*          PARAMETER WORD IS SENT TO THE CONTROLLER.  A CHECK OF STATUS  FMU
*          IS MADE TO INSURE THAT THE FUNCTION COMPLETES WITHOUT ERROR.  FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU50 REQUIRES PATAMETERS P1 AND P2 TO BE SET TO              FMU
*          INDICATE THE TRACK FLAW TO BE CLEARED.  PARAMETER USAGE AND   FMU
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW--                        FMU
*            P1 - CYLINDER (0 TO 1466)                                   FMU
*            P2 - TRACK    (0 TO 22)                                     FMU
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER OF THE PARAMETERS     FMU
*          IS OUT OF RANGE.                                              FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU50 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS    FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU50 CALLS SUBMODULE FMU98C TO DISPLAY DETAILED STATUS IF    FMU
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU50 USES REGISTER B5 FOR THE K DISPLAY LINE NUMBER.         FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU50 USES THE OUTPUT BUFFER FOR PARAMETERS FOR THE SEEK AND  FMU
*          CLEAR FLAW FUNCTIONS.  BUFFER LOCATIONS USED ARE AS FOLLOWS-- FMU
*            OB(400) TO OB(404) - SEEK PARAMETERS                        FMU
*            OB(500) - PARAMETER FOR CLEAR FLAW FUNCTION                 FMU
*                                                                        FMU
*                                                                        FMU
/  - CLEAR TRACK FLAW -                                                  FMU
/                                                                        FMU
1  FORMAT CLEAR 844 TRACK FLAW - CH=*O, EQ=*O, UN=*O                     FMU
2  FORMAT CYLINDER = *OCT,  TRACK = *O                                   FMU
3  FORMAT ERROR - TRACK FLAW ALREADY CLEAR                               FMU
6  FORMAT TRACK FLAW CLEARED                                             FMU
10 FORMAT ILLEGAL PARAMETER P1 (MAXIMUM CY=1466)                         FMU
11 FORMAT ILLEGAL PARAMETER P2 (MAXIMUM TR=22)                           FMU
15 FORMAT MODULE FMU50                                                   FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU50 PAUSE - CLEAR 844 TRACK FLAW
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(70),SB(71),SB(72)) TO LINE 2                                FMU
   MSG 2 (P1,P2) TO LINE 3                                               FMU
   IF (P1 LE 822D) GOTO 24        * IF VALID CYLINDER                    FMU
   MSG 10 TO LINE 5               * ILLEGAL CYLINDER                     FMU
22 MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ILLEGAL PARAMETER                    FMU
24 IF (P2 LE 18D) GOTO 27         * IF VALID TRACK                       FMU
   MSG 11 TO LINE 5               * ILLEGAL TRACK                        FMU
   GOTO 22                                                               FMU
27 MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=4                           * SET DISPLAY LINE                     FMU
   OB(400)=SB(72)                 * SET SEEK PARAMETERS                  FMU
   OB(401)=P1                                                            FMU
   OB(402)=P2                                                            FMU
   OB(403)=0                                                             FMU
   RES, ABT 74                                                           FMU
30 FUNC 0001, ABT 74              * SEEK                                 FMU
   OUTB 4 WORDS FROM OB(400), ABT 74                                     FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   OB(500)=0001                   * SET PARAMETER                        FMU
   FUNC 0022, ABT 74              * CLEAR TRACK FLAW                     FMU
   OUTB 1 WORDS FROM OB(500), ABT 74                                     FMU
32 FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 32     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   MSG 6 TO LINE 5                                                       FMU
   MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU51, 6000, (03,05,16), LOCK 
*** 5.2.55 FMU51 - FORMAT 844 PACK
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU51 FORMATS THE ENTIRE 844 PACK EXCEPT THE FLAW MAP         FMU
*          SECTORS.  TRACK AND SECTOR FLAWS ARE ALSO SET.                FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU51 SETS THE STARTING CYLINDER NUMBER AND THE ENDING        FMU
*          CYLINDER NUMBER IN THE OUTPUT BUFFER.  THE STARTING CYLINDER  FMU
*          IS 0000 AND THE ENDING CYLINDER IS 1466 OCTAL.  FMU51 EXITS   FMU
*          TO MODULE FMU511 TO PERFORM THE FORMATTING AND SETTING THE    FMU
*          TRACK AND SECTOR FLAWS.                                       FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU51 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE          FMU
*          EXECUTION.                                                    FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU51 EXITS TO MODULE FMU511.  OUTPUT BUFFER LOCATIONS        FMU
*          502 AND 503 CONTAIN THE STARTING AND ENDING CYLINDERS         FMU
*          FOR USE BY FMU511.                                            FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU51 DOES NOT CALL ANY SUBMODULES.                           FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU51 DOES NOT USE ANY REGISTERS.                             FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU51 USES TWO LOCATIONS IN THE OUTPUT BUFFER FOR THE         FMU
*          STARTING AND ENDING CYLINDERS TO BE FORMATTED.  THEY ARE      FMU
*          SET TO THE VALUES SHOWN BELOW--                               FMU
*            OB(502) = 0000 - STARTING CYLINDER                          FMU
*            OB(503) = 1466 - ENDING CYLINDER                            FMU
*                                                                        FMU
*                                                                        FMU
/  - FORMAT PACK -                                                       FMU
/                                                                        FMU
1  FORMAT FORMAT 844 PACK - CH=*O, EQ=*O, UN=*O                          FMU
2  FORMAT CYLINDER 0000 TO 1466                                          FMU
15 FORMAT MODULE FMU51                                                   FMU
17 FORMAT FMU51 PAUSE - FORMAT 844 PACK 
   EQUATE MAXCYL TO 822D                                                 FMU
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(70),SB(71),SB(72)) TO LINE 2                                FMU
   MSG 2 TO LINE 3                                                       FMU
   MSG 17 TO DISPLAY,PRINT
   PAUSE                                                                 FMU
   OB(502)=0                      * START CYLINDER                       FMU
   OB(503)=MAXCYL                 * END CYLINDER                         FMU
   EXIT TO 511                                                           FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU511, 6000, (03,05,16), LOCK
*** 5.2.56 FMU511 - FORMAT 844 PACK (CONTINUED) 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU511 FORMATS THE 844 PACK FROM THE INDICATED STARTING       FMU
*          CYLINDER TO THE INDICATED ENDING CYLINDER.  SKIPPED           FMU
*          SECTORS AND TRACK FLAWS ARE THEN SET.                         FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU511 IS ENTERED FROM EITHER FMU51 OR FMU52. THESE MODULES   FMU
*          BOTH PLACE THE STARTING AND ENDING CYLINDERS IN THE OUTPUT    FMU
*          BUFFER. FMU511 STARTS AT THE SPECIFIED STARTING CYLINDER      FMU
*          AND ISSUES A REFORMAT COMMAND AND THE CYLINDER IS REFORMATTED FMU
*          WITH NO TRACK OR SECTOR FLAWS. THE CYLINDER NUMBER IS THEN    FMU
*          INCREMENTED AND THE NEXT CYLINDER IS REFORMATTED. THIS        FMU
*          PROCESS CONTINUES UNTIL ALL OF THE SPECIFIED CYLINDERS HAVE   FMU
*          BEEN FORMATTED. IF CYLINDER 1466 OCTAL IS REFORMATTED ALL     FMU
*          TRACK AND SECTOR FLAWS IN THE UTILITY FLAW MAP WILL BE SET.   FMU
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU511 ASSUMES THAT THE STARTING AND ENDING CYLINDERS ARE     FMU
*          INITIALLY IN OUTPUT BUFFER LOCATIONS 502 AND 503.             FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU511 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS   FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU511 CALLS SUBMODULE FMU98C TO DISPLAY DETAILED STATUS IF   FMU
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU511 USES REGISTER B5 FOR THE K DISPLAY LINE NUMBER.        FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU511 USES THE OUTPUT BUFFER FOR PARAMETERS FOR THE REFORMAT FMU
*          FUNCTION. THE OUTPUT BUFFER IS ALSO USED FOR THE STARTING     FMU
*          AND ENDING CYLINDERS. BUFFER LOCATIONS USED ARE AS FOLLOWS--  FMU
*            OB(300) TO OB(306) - PARAMETERS FOR FORMAT FUNCTION         FMU
*            OB(502) - STARTING CYLINDER                                 FMU
*            OB(503) - ENDING CYLINDER                                   FMU
*                                                                        FMU
*                                                                        FMU
/  - FORMAT PACK (CONTINUED) -                                           FMU
/                                                                        FMU
1  FORMAT CYLINDER = *OCT                                                FMU
2  FORMAT PACK FORMATTING COMPLETE                                       FMU
14 FORMAT FMU511 SET FLAWS CY *OCT
15 FORMAT FMU511 FORMAT CY *OCT 
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 MSG 15 (OB(502)) TO DISPLAY                                           FMU
   B5=4                           * SET DISPLAY LINE                     FMU
   OB(300)=0                      * SET PARAMETERS                       FMU
   OB(301)=SB(72)                                                        FMU
   OB(302)=OB(502)                                                       FMU
   OB(303)=0                                                             FMU
   OB(304)=OB(502)                                                       FMU
   OB(305)=0                                                             FMU
   OB(306)=0                                                             FMU
24 RES, ABT 74                                                           FMU
   FUNC 0016, ABT 74              * REFORMAT CYLINDER                    FMU
   OUTB 7 WORDS FROM OB(300), ABT 74                                     FMU
   MSG 1 (OB(302)) TO LINE 5                                             FMU
   MSG 15 (OB(302)) TO DISPLAY                                           FMU
26 RES, ABT 74
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 26     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   IF (OB(302) EQ OB(503)) GOTO 70     * CYLINDER, END CY 
   OB(302)=OB(302)+1              * NEXT CYLINDER                        FMU
   OB(304)=OB(302)                                                       FMU
   GOTO 24                        * CONTINUE FORMATTING                  FMU
70 MSG 2 TO LINE 5                * FORMATTING COMPLETE                  FMU
   MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU52, 6000, (03,05,16), LOCK 
*** 5.2.57 FMU52 - FORMAT PARTIAL 844 PACK
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU52 FORMATS A SPECIFIED PORTION OF THE 844 PACK.  TRACK AND FMU
*          SECTOR FLAWS ARE SET ONLY IF CYLINDER 822 IS REFORMATTED.     FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU52 TAKES THE STARTING CYLINDER NUMBER FROM PARAMETER P6    FMU
*          AND THE ENDING CYLINDER FROM PARAMETER P7 AND PLACES THEM IN  FMU
*          THE OUTPUT BUFFER.  FMU52 EXITS TO FMU511 TO PERFORM THE      FMU
*          FORMATTING AND SETTING THE TRACK AND SECTOR FLAWS.            FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU52 REQUIRES PARAMETERS P6 AND P7 TO INDICATE STARTING AND  FMU
*          ENDING CYLINDER FOR FORMATTING.  PARAMETER USAGE AND 
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW--                        FMU
*            P6 - STARTING CYLINDER (0 TO 1466)                          FMU
*            P7 - ENDING CYLINDER (0 TO 1466)                            FMU
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER OF THE PARAMETERS IS  FMU
*          OUT OF RANGE OR IF P6 IS GREATER THAN P7.                     FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU52 EXITS TO MODULE FMU511.  OUTPUT BUFFER LOCATIONS        FMU
*          502 AND 503 CONTAIN THE STARTING AND ENDING CYLINDER FOR USE  FMU
*          BY FMU511.                                                    FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU52 DOES NOT CALL ANY SUBMODULES.                           FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU52 DOES NOT USE ANY REGISTERS.                             FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU52 USES TWO LOCATIONS IN THE OUTPUT BUFFER FOR THE         FMU
*          STARTING AND ENDING CYLINDERS TO BE FORMATTED.  THEY ARE SET  FMU
*          TO THE VALUES SHOWN BELOW--                                   FMU
*            OB(502) = P6 - STARTING CYLINDER                            FMU
*            OB(503) = P7 - ENDING CYLINDER                              FMU
*                                                                        FMU
*                                                                        FMU
/  - FORMAT PARTIAL PACK -                                               FMU
/                                                                        FMU
1  FORMAT FORMAT PARTIAL 844 PACK - CH=*O, EQ=*O, UN=*O                  FMU
2  FORMAT CYLINDER *OCT TO *OCT                                          FMU
3  FORMAT ILLEGAL PARAMETER P6 (MAXIMUM CY = 1466)                       FMU
4  FORMAT ILLEGAL PARAMETER P7 (MAXIMUM CY = 1466)                       FMU
5  FORMAT ILLEGAL PARAMETER P7 (P7 IS LESS THAN P6)                      FMU
15 FORMAT MODULE FMU52                                                   FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU52 PAUSE - FORMAT PARTIAL 844 PACK 
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(70),SB(71),SB(72)) TO LINE 2                                FMU
   MSG 2 (P6,P7) TO LINE 3                                               FMU
   IF (P6 LE 822D) GOTO 24        * IF START CYLINDER                    FMU
   MSG 3 TO LINE 5                * ILLEGAL START CY
22 MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * ERROR STOP                           FMU
24 IF (P7 LE 822D) GOTO 26        * IF END CYLINDER                      FMU
   MSG 4 TO LINE 5                * ILLEGAL END CYLINDER
   GOTO 22                                                               FMU
26 IF (P7 GE P6) GOTO 30          * END CY, START CYLINDER
   MSG 5 TO LINE 5                * ILLEGAL END CYLINDER
   GOTO 22                                                               FMU
30 MSG 17 TO DISPLAY,PRINT
   PAUSE
   OB(502)=P6                     * START CYLINDER                       FMU
   OB(503)=P7                     * END CYLINDER                         FMU
   EXIT TO 511                                                           FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
*IF DEF,CMSE17X                                                          FMU013 
   MODULE FMU53, 6000, (03,05,16), LOCK 
*** 5.2.58 FMU53 - FORMAT 844 FACTORY DATA SECTOR 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU53 FORMATS CYLINDER 822, TRACK 0, SECTORS 0 AND 1 ON THE   FMU
*          ASSIGNED DRIVE.                                               FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU53 REFORMATS THE MANUFACTURING DATA SECTOR AND THE FACTORY FMU
*          MAP SECTOR AS MAP SECTORS.  THE WRITE PROTECTED SECTOR        FMU
*          FUNCTION IS THEN USED TO WRITE THE SERIAL NUMBER SPECIFIED    FMU
*          BY PARAMETERS P8 AND P9 TO THE MANUFACTURING DATA SECTOR.     FMU
*          THE DATE OF FORMATTING IS SET TO ZERO.                        FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU53 REQUIRES PARAMETERS P8 AND P9 TO BE SET TO INDICATE     FMU
*          THE SERIAL NUMBER OF THE DISK PACK.  PARAMETER USAGE AND      FMU
*          ALLOWED VALUES ARE INDICATED BELOW--                          FMU
*            P8 - MOST SIGNIFICANT 3 DIGITS OF S/N  (000 TO 999)         FMU
*            P9 - LEAST SIGNIFICANT 3 DIGITS OF S/N (000 TO 999)         FMU
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER OF THE PARAMETERS IS  FMU
*          OUT OF RANGE.                                                 FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU53 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS    FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU53 CALLS SUBMODULE FMU98C TO DISPLAY DETAILED STATUS IF    FMU
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU53 USES REGISTERS B0, B1, B2, B5, AND WC.  REGISTERS ARE   FMU
*          USED AS FOLLOWS--                                             FMU
*            B0 - SERIAL NUMBER FOR CONVERSION TO BCD                    FMU
*            B1 - OUTPUT BUFFER INDEX                                    FMU
*            B2 - BCD CONVERSION ACCUMULATOR                             FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            WC - SECTOR                                                 FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU53 USES THE OUTPUT BUFFER FOR PARAMETERS NEEDED BY THE     FMU
*          REFORMAT AND SEEK COMMANDS, AND FOR THE DATA WRITTEN TO THE   FMU
*          FACTORY DATA SECTOR.  BUFFER LOCATIONS USED ARE AS FOLLOWS--  FMU
*            OB(300) TO OB(306) - PARAMETERS FOR REFORMATTING            FMU
*            OB(400) TO OB(403) - PARAMETERS FOR SEEK FUNCTION           FMU
*            OB(0)   TO OB(501) - FACTORY DATA SECTOR                    FMU
*                                                                        FMU
*                                                                        FMU
/  - FORMAT FACTORY DATA -                                               FMU
/                                                                        FMU
1  FORMAT FORMAT 844 FACTORY DATA - CH=*O, EQ=*O, UN=*O                  FMU
2  FORMAT SERIAL NUMBER = *DE*DE                                         FMU
3  FORMAT ILLEGAL PARAMETER P8                                           FMU
4  FORMAT ILLEGAL PARAMETER P9                                           FMU
5  FORMAT FACTORY DATA SECTOR FORMATTING COMPLETE                        FMU
15 FORMAT MODULE FMU53                                                   FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU53 PAUSE - FORMAT 844 FACTORY DATA 
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(70), SB(71),SB(72)) TO LINE 2                               FMU
   MSG 2 (P8,P9) TO LINE 3                                               FMU
   IF (P8 LE 999D) GOTO 24        * IF P8 IS VALID                       FMU
   MSG 3 TO LINE 5                * ILLEGAL PARAMETER P8                 FMU
22 MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * HALT                                 FMU
24 IF (P9 LE 999D) GOTO 30        * IF P9 IS VALID                       FMU
   MSG 4 TO LINE 5                * ILLEGAL PARAMETER P9                 FMU
   GOTO 22                        * HALT                                 FMU
30 MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=5                           * SET DISPLAY LINE                     FMU
   WC=0                           * SET SECTOR                           FMU
32 OB(300)=0                      * SET PARAMETERS                       FMU
   OB(301)=SB(72) XOR 0400        * MAP SECTOR                           FMU
   OB(302)=822D                                                          FMU
   OB(303)=0                                                             FMU
   OB(304)=WC                                                            FMU
   OB(305)=0                                                             FMU
   OB(306)=WC                                                            FMU
   RES, ABT 74                                                           FMU
   FUNC 0016, ABT 74              * REFORMAT SECTOR                      FMU
   OUTB 7 WORDS FROM OB(300), ABT 74                                     FMU
34 FUNC 0012, ABT 74              * REQUEST GENARAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 34     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   WC=WC+1                        * NEXT SECTOR                          FMU
   IF (WC EQ 1) GOTO 32           * IF SECTOR 1                          FMU
/                                                                        FMU
/  WRITE FACTORY DATA                                                    FMU
   OB(400)=SB(72)                 * SET SEEK PARAMETERS                  FMU
   OB(401)=1466                                                          FMU
   OB(402)=0                                                             FMU
   OB(403)=0                                                             FMU
   RES, ABT 74                                                           FMU
40 FUNC 0001, ABT 74              * SEEK                                 FMU
   OUTB 4 WORDS FROM OB(400), ABT 74                                     FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 40     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   B0=P8                                                                 FMU
   GOSUB 60                       * CONVERT P8 TO BCD                    FMU
   OB(0)=B0                                                              FMU
   B0=P9                                                                 FMU
   GOSUB 60                       * CONVERT P9 TO BCD                    FMU
   OB(1)=B0                                                              FMU
   B1=2                           * SET OB INDEX                         FMU
44 OB(B1)=0                       * CLEAR OUTPUT BUFFER                  FMU
   B1=B1+1                        * INCREMENT OB INDEX                   FMU
   IF (B1 NE 502) GOTO 44         * IF NOT END OF BUFFER                 FMU
   FUNC 0037, ABT 74              * WRITE PROTECTED SECTOR               FMU
   OUTB 502 WORDS FROM OB, ABT 74                                        FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB                                                  FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   MSG 5 TO LINE 5                * FORMAT COMPLETE                      FMU
   MSG 16 TO LINE 7                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                                                               FMU
/                                                                        FMU
/  CONVERT TO BCD (SUBROUTINE)                                           FMU
60 B2=0                           * RESET BCD ACCUMULATOR                FMU
62 IF (B0 LT 100D) GOTO 64        * IF NO MORE HUNDREDS                  FMU
   B0=B0-100D                     * SUBTRACT 100                         FMU
   B2=B2+0400                     * INCREMENT HUNDREDS                   FMU
   GOTO 62                        * CHECK FOR MORE HUNDREDS              FMU
64 IF (B0 LT 10D) GOTO 66         * IF NO MORE TENS                      FMU
   B0=B0-10D                      * SUBTRACT 10                          FMU
   B2=B2+0020                     * INCREMENT TENS                       FMU
   GOTO 64                        * CHECK FOR MORE TENS                  FMU
66 B0=B2+B0                       * COMBINE RESULT                       FMU
   RETURN                                                                FMU
/                                                                        FMU
/  ERROR PROCESSING                                                      FMU
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU54, 6000, (03,05,16), LOCK 
*** 5.2.59 FMU54 - FORMAT 844 UTILITY SECTOR
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU54 FORMATS CYLINDER 822, TRACK 0, SECTOR 2 ON THE ASSIGNED FMU
*          DRIVE.                                                        FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU54 REFORMATS THE UTILITY SECTOR AS A MAP SECTOR.  THE      FMU
*          WRITE PROTECTED SECTOR FUNCTION IS THEN USED TO WRITE THE     FMU
*          UTILITY SECTOR WITH FLAW ENTRIES FOR CYLINDER 822, TRACK 0,   FMU
*          SECTORS 0, 1, AND 2.                                          FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU54 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE          FMU
*          EXECUTION.                                                    FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU54 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS    FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU54 CALLS SUBMODULE FMU98C TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU54 USES REGISTER B0 AS AN INDEX TO THE OUTPUT BUFFER.      FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU54 USES THE OUTPUT BUFFER FOR PARAMETERS NEEDED BY THE     FMU
*          REFORMAT AND SEEK COMMANDS, AND FOR THE DATA WRITTEN TO THE   FMU
*          UTILITY MAP SECTOR.  BUFFER LOCATIONS USED ARE AS FOLLOWS--   FMU
*            OB(300) TO OB(306) - PARAMETERS FOR REFORMATTING            FMU
*            OB(400) TO OB(403) - PARAMETERS FOR SEEK FUNCTION           FMU
*            OB(0)   TO OB(501) - UTILITY FLAW MAP                       FMU
*                                                                        FMU
*                                                                        FMU
/  - FORMAT UTILITY SECTOR -                                             FMU
/                                                                        FMU
5  FORMAT FORMAT 844 UTILITY SECTOR - CH=*O, EQ=*O, UN=*O                FMU
11 FORMAT UTILITY SECTOR FORMATTING COMPLETE                             FMU
15 FORMAT MODULE FMU54                                                   FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU54 PAUSE - FORMAT 844 UTILITY SECTOR 
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 5 (SB(70),SB(71),SB(72)) TO LINE 2                                FMU
40 MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=4                           * SET DISPLAY LINE                     FMU
42 OB(300)=0                      * SET PARAMETERS                       FMU
   OB(301)=SB(72) XOR 0400        * MAP SECTOR                           FMU
   OB(302)=822D                                                          FMU
   OB(303)=0                                                             FMU
   OB(304)=2                      * PHYSICAL SECTOR                      FMU
   OB(305)=0                                                             FMU
   OB(306)=2                      * LOGICAL SECTOR                       FMU
   RES, ABT 74                                                           FMU
   FUNC 0016, ABT 74              * REFORMAT SECTOR                      FMU
   OUTB 7 WORDS FROM OB(300), ABT 74                                     FMU
44 FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 44     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   OB(400)=SB(72)                 * SET SEEK PARAMETERS                  FMU
   OB(401)=1466                                                          FMU
   OB(402)=0                                                             FMU
   OB(403)=2                                                             FMU
   RES, ABT 74                                                           FMU
50 FUNC 0001, ABT 74              * SEEK                                 FMU
   OUTB 4 WORDS FROM OB(400), ABT 74                                     FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 50     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   OB(0)=5466                                                            FMU
   OB(1)=0000                                                            FMU
   OB(2)=5466                                                            FMU
   OB(3)=0001                                                            FMU
   OB(4)=5466                                                            FMU
   OB(5)=0002                                                            FMU
   B0=6                           * SET OB INDEX                         FMU
54 OB(B0)=0                       * CLEAR OUTPUT BUFFER                  FMU
   B0=B0+1                        * INCREMENT OB INDEX                   FMU
   IF (B0 NE 502) GOTO 54         * IF NOT END OF BUFFER                 FMU
   FUNC 0037, ABT 74              * WRITE PROTECTED SECTOR               FMU
   OUTB 502 WORDS FROM OB, ABT 74                                        FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB                                                  FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   MSG 11 TO LINE 4               * FORMAT COMPLETE                      FMU
   MSG 16 TO LINE 6                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
*ENDIF
   MODULE FMU55, 6000, (03,05,16), LOCK 
*IF DEF,CMSE17X 
*** 5.2.60 FMU55 - SCAN AND DISPLAY 844 FLAWS 
*ENDIF
*IF -DEF,CMSE17X
*** 5.2.58 FMU55 - SCAN AND DISPLAY 844 FLAWS 
*ENDIF
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU55 SCANS THE ENTIRE 844 DRIVE AND DISPLAYS AND PRINTS A    FMU
*          LIST OF ERROR SECTORS, FLAWED SECTORS, AND FLAWED TRACKS.     FMU
*          THE LIST OF TRACK AND SECTOR FLAWS MAY OPTIONALLY BE COPIED   FMU
*          TO THE UTILITY MAP SECTOR.                                    FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU55 STARTS WITH CYLINDER ZERO AND DOES A SEEK TO TRACK 0,   FMU
*          SECTOR 0.  A READ CHECKWORD FUNCTION IS ISSUED AND GENERAL    FMU
*          STATUS IS CHECKED FOR EACH EVEN NUMBERED SECTOR.  WHEN THE    FMU
*          CYLINDER IS COMPLETE A SEEK TO TRACK 0, SECTOR 1 IS ISSUED    FMU
*          AND THE ODD SECTORS ARE CHECKED.  WHEN BOTH EVEN AND ODD      FMU
*          SECTORS HAVE BEEN CHECKED FMU55 GOES TO THE NEXT              FMU
*          CYLINDER AND THE PROCEDURE IS REPEATED.  AS FLAWS ARE FOUND   FMU
*          THEY ARE SAVED IN THE INPUT BUFFER.  A SEEK IS THEN ISSUED    FMU
*          FOR THE NEXT SECTOR AND THE SCANNING PROCESS CONTINUES.       FMU
*          WHEN ALL CYLINDERS HAVE BEEN CHECKED FMU55 EXITS TO FMU551    FMU
*          TO WRITE THE UTILITY MAP TO DISK.                             FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU55 REQUIRES SETTING PARAMETER P4 TO SELECT THE OPTION TO   FMU
*          WRITE THE UTILITY MAP SECTOR.  ALLOWED PARAMETER VALUES ARE   FMU
*          AS FOLLOWS--                                                  FMU
*            P4 = 0 - DO NOT WRITE UTILITY MAP SECTOR                    FMU
*                 1 - WRITE UTILITY MAP SECTOR                           FMU
*          AN ERROR MESSAGE IS DISPLAYED IF P4 IS GREATER THAN 1.        FMU
/ 
*          EXIT-                                                         FMU
*          FMU55 EXITS TO MODULE FMU551 TO WRITE THE UTILITY MAP SECTOR. FMU
*          REGISTERS B3, B5, AND B6 ARE USED BY FMU551.  THE INPUT       FMU
*          BUFFER CONTAINS A LIST OF TRACK AND SECTOR FLAWS.             FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU55 CALLS SUBMODULE FMU55A TO ENTER FLAWS AND ERROR         FMU
*          SECTORS IN THE FLAW MAP IN THE INPUT BUFFER.                  FMU
*          FMU55 CALLS SUBMODULE FMU98C TO DISPLAY DETAILED STATUS IF    FMU
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU55 USES REGISTERS B0 TO B7.  REGISTERS ARE USED AS         FMU
*          FOLLOWS--                                                     FMU
*            B0 - CYLINDER                                               FMU
*            B1 - TRACK                                                  FMU
*            B2 - SECTOR                                                 FMU
*            B3 - INPUT BUFFER INDEX                                     FMU
*            B4 - EVEN/ODD SECTORS                                       FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - ERROR SECTOR FLAG                                      FMU
*            B7 - MESSAGE INDEX                                          FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU55 USES THE INPUT BUFFER FOR SAVING THE LIST OF TRACK      FMU
*          AND SECTOR FLAWS.  OUTPUT BUFFER LOCATIONS 400 TO 403 ARE     FMU
*          USED FOR THE SEEK PARAMETERS.  THE STATUS BUFFER IS USED      FMU
*          FOR DETAILED STATUS.                                          FMU
*                                                                        FMU
*                                                                        FMU
/  - SCAN AND DISPLAY FLAWS -                                            FMU
1  FORMAT 844 SECTOR FLAWS - CH=*O, EQ=*O, UN=*O                         FMU
2  FORMAT CYLINDER = *OCT                                                FMU
3  FORMAT                                                                FMU
4  FORMAT CY = *OCT   TR = *O   SE = *O   TRACK FLAW                     FMU
5  FORMAT CY = *OCT   TR = *O   SE = *O                                  FMU
6  FORMAT CY = *OCT   TR = *O   SE = *O   ERROR SECTOR                   FMU
10 FORMAT ABORT - FLAW MAP CAPACITY EXCEEDED                             FMU
13 FORMAT ILLEGAL PARAMETER P4                                           FMU
14 FORMAT SCAN AND WRITE UTILITY MAP SECTOR                              FMU
15 FORMAT FMU55 SCAN CY *OCT
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU55 PAUSE - SCAN AND DISPLAY 844 FLAWS
   EQUATE MAXCYL TO 822D                                                 FMU
20 BLANK                                                                 FMU
   MSG 1 (SB(70),SB(71),SB(72)) TO LINE 2                                FMU
   B5=4                           * SET DISPLAY LINE                     FMU
   B6=0                           * CLEAR ERROR SECTOR FLAG              FMU
   B4=0                           * SELECT EVEN SECTORS                  FMU
   B3=0                           * SET IB INDEX                         FMU
   B0=0                           * SET CYLINDER                         FMU
   B1=0                           * SET TRACK                            FMU
   B2=0                           * SET SECTOR                           FMU
   MSG 15 (B0) TO DISPLAY                                                FMU
   IF (P4 EQ 0) GOTO 22           * IF NOT WRITE MAPS                    FMU
   IF (P4 EQ 1) GOTO 21           * IF WRITE MAPS                        FMU
   MSG 13 TO LINE 4               * ILLEGAL PARAMETER P4                 FMU
   MSG 16 TO LINE 6                                                      FMU
   PICTURE                                                               FMU
   GOTO 77                        * HALT                                 FMU
21 MSG 14 TO LINE 4               * WRITE MAPS                           FMU
   MSG 17 TO DISPLAY,PRINT
   PAUSE                                                                 FMU
22 OB(400)=SB(72)                 * SET SEEK PARAMETERS                  FMU
   OB(401)=B0                                                            FMU
   OB(402)=B1                                                            FMU
   OB(403)=B2                                                            FMU
   MSG 2 (B0) TO LINE B5                                                 FMU
   MSG 15 (B0) TO DISPLAY                                                FMU
   RES, ABT 74                                                           FMU001A
24 FUNC 0002, ABT 74              * SEEK 2 TO 1                          FMU001A
   OUTB 4 WORDS FROM OB(400), ABT 74                                     FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 24     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
30 FUNC 0007, ABT 74              * READ CHECKWORD                       FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB NE 0) GOTO 40           * IF FLAW FOUND                        FMU
   B2=B2+2                        * NEXT SECTOR                          FMU
   IF (B2 LE 27) GOTO 30          * IF MORE SECTORS                      FMU
   B2=B4                          * RESET SECTOR                         FMU
   B1=B1+1                        * NEXT TRACK                           FMU
   IF (B1 LE 22) GOTO 30          * IF MORE TRACKS                       FMU
34 B1=0                           * RESET TRACK                          FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   REL
   IF (B4 EQ 0) GOTO 36           * IF EVEN SECTORS DONE                 FMU
   GOSUB 50                       * DISPLAY FLAWS                        FMU
   B4=0                           * SELECT EVEN SECTORS                  FMU
   B2=B4                          * RESET SECTOR                         FMU
   B1=0                           * RESET TRACK                          FMU
   B0=B0+1                        * NEXT CYLINDER                        FMU
   IF (B0 LE 1466) GOTO 22        * IF MORE CYLINDERS                    FMU
   EXIT TO 551                    * SCAN COMPLETE                        FMU
36 B4=1                           * SELECT ODD SECTORS                   FMU
   B2=B4                          * RESET SECTOR                         FMU
   GOTO 22                        * SCAN ODD SECTORS                     FMU
40 FUNC 0023, ABT 74              * REQUEST DETAILED STATUS              FMU
   STATUS 24 WORDS TO SB(1), ABT 74                                      FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   REL
   IF (SB(21) AND 1 EQ 1) GOTO 44      * IF ADDRESS FIELD ERROR          FMU
41 B2=B2+2                        * NEXT SECTOR                          FMU
   IF (B2 LE 27) GOTO 22          * IF MORE SECTORS                      FMU
42 B2=B4                                                                 FMU
   B1=B1+1                        * NEXT TRACK                           FMU
   IF (B1 LE 22) GOTO 22          * IF MORE TRACKS                       FMU
   GOTO 34                        * NEXT CYLINDER                        FMU
44 IF (B3 EQ 500) GOTO 70         * IF MAP FULL                          FMU
   CALL 55A                       * SET FLAW IN IB                       FMU
   IF (SB(6) AND 0010 EQ 0) GOTO 41    * IF NOT TRACK FLAW               FMU
   GOTO 42                        * NEXT TRACK                           FMU
/  DISPLAY FLAWS (SUBROUTINE)                                            FMU
50 IF (B3 EQ 0) RETURN            * IF NO FLAWS                          FMU
   BA=B3-2                        * SET IB SCAN INDEX                    FMU
51 IF (IB(BA) AND 1777 NE B0) GOTO 53  * IF CY NE IB CY 
   IF (BA EQ 0) GOTO 54           * IF NO MORE FLAWS                     FMU
   BA=BA-2                        * DECREMENT IB SCAN INDEX              FMU
   GOTO 51                        * CHECK NEXT FLAW                      FMU
53 BA=BA+2                        * ADJUST SCAN INDEX                    FMU
54 IF (BA EQ B3) RETURN           * IF NO MORE TO DISPLAY                FMU
   B7=IB(BA) RS 10D + 3           * FORM MESSAGE INDEX                   FMU
   BA=BA+1                        * INCREMENT IB SCAN INDEX              FMU
   B1=IB(BA) RS 6                 * SET TRACK                            FMU
   B2=IB(BA) AND 0077             * SET SECTOR                           FMU
60 IF (B5 LE 33D) GOTO 64         * IF DISPLAY NOT FULL                  FMU
   MSG 3 TO LINE B5                                                      FMU
   PICTURE                        * PRINT PAGE                           FMU
62 B5=B5-1                        * CLEAR DISPLAY                        FMU
   MSG 3 TO LINE B5                                                      FMU
   IF (B5 GT 4) GOTO 62           * IF NOT DONE CLEARING                 FMU
64 MSG B7 (B0,B1,B2) TO LINE B5                                          FMU
   B5=B5+1                                                               FMU
   BA=BA+1                        * INCREMENT SCAN INDEX                 FMU
   GOTO 54                        * DISPLAY NEXT FLAW                    FMU
70 MSG 3 TO LINE B5                                                      FMU
   B5=B5+1                                                               FMU
   MSG 10 TO LINE B5              * FLAW MAP OVERFLOW                    FMU
   B5=B5+2                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   GOTO 77                        * HALT                                 FMU
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU551, 6000, (03,05,16), LOCK
*IF DEF,CMSE17X 
*** 5.2.61 FMU551 - SCAN AND DISPLAY 844 FLAWS (CONTINUED)
*ENDIF
*IF -DEF,CMSE17X
*** 5.2.59 FMU551 - SCAN AND DISPLAY 844 FLAWS (CONTINUED)
*ENDIF
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU551 COPIES THE FLAWS FOUND BY FMU55 TO THE UTILITY SECTOR  FMU
*          IF PARAMETER P4 IS EQUAL TO 1 AND NO ERROR SECTORS WERE       FMU
*          FOUND.                                                        FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU551 CHECKS THE ERROR SECTOR FLAG AND PARAMETER P4 BEFORE   FMU
*          WRITING THE FLAW LIST TO THE UTILITY MAP SECTOR.  IF AN       FMU
*          ERROR SECTOR WAS FOUND BY FMU55 THE ERROR SECTOR FLAG WILL    FMU
*          BE SET AND THE UTILITY MAP SECTOR WILL NOT BE WRITTEN.  ALSO, FMU
*          IF P4 IS EQUAL TO ZERO THE UTILITY MAP SECTOR WILL NOT BE     FMU
*          WRITTEN.                                                      FMU
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU551 IS ENTERED FROM FMU55.  THE CONTENTS OF REGISTERS      FMU
*          B3, B5, AND B6 ARE ASSUMED TO HAVE BEEN SET BY FMU55.  IT IS  FMU
*          ALSO ASSUMED THAT THE INPUT BUFFER CONTAINS A LIST OF TRACK   FMU
*          AND SECTOR FLAWS FOUND BY FMU55.                              FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU551 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS   FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU551 CALLS SUBMODULE FMU98C TO DISPLAY DETAILED STATUS IF   FMU
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU551 USES REGISTERS B3, B5, AND B6.  REGISTERS ARE USED     FMU
*          AS FOLLOWS--                                                  FMU
*            B3 - INPUT BUFFER INDEX                                     FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - ERROR SECTOR FLAG                                      FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU551 USES THE INPUT BUFFER FOR DATA TO BE WRITTEN TO THE    FMU
*          UTILITY MAP SECTOR.  THIS DATA IS COPIED TO THE OUTPUT BUFFER FMU
*          AND THEN WRITTEN.  OUTPUT BUFFER LOCATIONS 400 TO 403 ARE     FMU
*          ALSO USED FOR SEEK PARAMETERS.                                FMU
*                                                                        FMU
*                                                                        FMU
7  FORMAT - - - - - - - END OF LIST - - - - - - -                        FMU
10 FORMAT ERROR SECTOR(S) FOUND                                          FMU
11 FORMAT UTILITY MAPS NOT WRITTEN                                       FMU
12 FORMAT UTILITY MAP SECTOR WRITTEN                                     FMU
15 FORMAT MODULE FMU551                                                  FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 MSG 15 TO DISPLAY                                                     FMU
   MSG 7 TO LINE B5               * END OF LIST                          FMU
   B5=B5+2                                                               FMU
   IF (B6 NE 1) GOTO 64           * IF NO ERROR SECTOR                   FMU
   MSG 10 TO LINE B5              * ERROR SECTORS                        FMU
   B5=B5+2                                                               FMU
62 MSG 11 TO LINE B5              * MAPS NOT WRITTEN                     FMU
   B5=B5+2                                                               FMU
   GOTO 70                        * END OF MODULE                        FMU
64 IF (P4 EQ 0) GOTO 62           * IF NOT WRITE MAPS                    FMU
65 IB(B3)=0                       * CLEAR END OF BUFFER                  FMU
   B3=B3+1                        * INCREMENT IB INDEX                   FMU
   IF (B3 LE 501) GOTO 65         * IF NOT END OF BUFFER                 FMU
   OB(400)=SB(72)                 * SET SEEK PARAMETERS                  FMU
   OB(401)=1466                                                          FMU
   OB(402)=0                                                             FMU
   OB(403)=2                      * UTILITY MAP SECTOR                   FMU
   RES, ABT 74                                                           FMU
66 FUNC 0001, ABT 74              * SEEK                                 FMU
   OUTB 4 WORDS FROM OB(400), ABT 74                                     FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 66     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   COPY IB TO OB FOR 502                                                 FMU
   FUNC 0037, ABT 74              * WRITE PROTECTED SECTOR               FMU
   OUTB 502 WORDS FROM OB, ABT 74                                        FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   MSG 12 TO LINE B5              * UTILITY MAPS WRITTEN                 FMU
   B5=B5+2                                                               FMU
70 MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU55A, 6000, (03,05,16), LOCK
*IF DEF,CMSE17X 
*** 5.2.62 FMU55A - SAVE FLAWS IN INPUT BUFFER (SUBROUTINE) 
*ENDIF
*IF -DEF,CMSE17X
*** 5.2.60 FMU55A - SAVE FLAWS IN INPUT BUFFER (SUBROUTINE) 
*ENDIF
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU55A INSERTS FLAWS FOUND BY FMU55 INTO THE FLAW MAP HELD    FMU
*          IN THE INPUT BUFFER.                                          FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU55A IS CALLED BY FMU55 WHEN A FLAW IS FOUND.  IF THE FLAW  FMU
*          IS A TRACK FLAW FMU55A CHECKS TO SEE IF THE FLAW HAS ALREADY  FMU
*          BEEN ENTERED IN THE MAP.  IF THE FLAW IS FOUND FMU55A RETURNS FMU
*          TO FMU55.  IF THE FLAW IS NOT A TRACK FLAW OR IF IT IS A      FMU
*          TRACK FLAW NOT PREVIOUSLY ENTERED IN THE MAP FMU55A ENTERS    FMU
*          THE FLAW IN THE MAP IN SEQUENTIAL ORDER.  PREVIOUS ENTRIES    FMU
*          ARE SHIFTED DOWN IF NECESSARY TO MAKE ROOM FOR THE NEW ENTRY. FMU
*          THUS THE FLAW MAP IN THE INPUT BUFFER IS ALWAYS KEPT IN       FMU
*          SEQUENTIAL ORDER.  EACH ENTRY CONSISTS OF TWO WORDS.  THE     FMU
*          FIRST WORD IS THE CYLINDER NUMBER AND THE SECOND WORD IS THE  FMU
*          TRACK AND SECTOR NUMBER.  BIT 11 OF THE FIRST WORD IS SET     FMU
*          TO INDICATE A SECTOR FLAW AND BIT 10 IS SET TO INDICATE A     FMU
*          TRACK FLAW.  BOTH BITS 10 AND 11 ARE SET TO INDICATE AN       FMU
*          ERROR SECTOR.                                                 FMU
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU55A ASSUMES THAT THE INPUT BUFFER CONTAINS THE FLAW MAP    FMU
*          AND THAT THE STATUS BUFFER CONTAINS DETAILED STATUS FOR THE   FMU
*          LAST READ CHECKWORD FUNCTION.  FMU55A ALSO ASSUMES THAT       FMU
*          REGISTERS B0 TO B2 CONTAIN THE CYLINDER, TRACK, AND SECTOR    FMU
*          FOR THE FLAW TO BE ENTERED IN THE MAP.  REGISTER B3 IS        FMU
*          ASSUMED TO BE THE INDEX TO THE NEXT AVAILABLE LOCATION IN     FMU
*          THE BUFFER.                                                   FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU55A RETURNS TO FMU55 AFTER ENTERING THE FLAW IN THE MAP    FMU
*          AND INCREMENTING REGISTER B3 BY 2.  IF AN ERROR SECTOR IS     FMU
*          ENTERED IN THE MAP, REGISTER B6 IS SET TO 1.                  FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU55A DOES NOT CALL ANY SUBMODULES.                          FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU55A USES REGISTERS B0 TO B3, B6, B7, AND BA.  REGISTERS    FMU
*          ARE USED AS FOLLOWS--                                         FMU
*            B0 - CYLINDER                                               FMU
*            B1 - TRACK                                                  FMU
*            B2 - SECTOR                                                 FMU
*            B3 - INPUT BUFFER INDEX                                     FMU
*            B6 - ERROR SECTOR FLAG                                      FMU
*            B7 - INPUT BUFFER SHIFT INDEX                               FMU
*            BA - INPUT BUFFER SCAN/INSERT INDEX                         FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU55A USES THE INPUT BUFFER FOR SAVING A LIST OF TRACK AND   FMU
*          SECTOR FLAWS AND ERROR SECTORS.  THE STATUS BUFFER CONTAINS   FMU
*          DETAILED STATUS.                                              FMU
*                                                                        FMU
*                                                                        FMU
/  - SAVE FLAWS IN INPUT BUFFER (SUBROUTINE) -                           FMU
/                                                                        FMU
20 IF (SB(6) AND 0010 EQ 0) GOTO 30    * IF NOT TRACK FLAW               FMU
   IF (B3 EQ 0) GOTO 30           * IF FIRST FLAW                        FMU
/                                                                        FMU
/  CHECK FOR DUPLICATE TRACK FLAW                                        FMU
   BA=B3-2                        * SET IB SCAN INDEX                    FMU
22 IF (IB(BA) AND 1777 LT B0) GOTO 30  * IF CY GT IB CY 
   BA=BA+1                        * CY EQUAL, CHECK TRACK 
   IF (IB(BA) RS 6 EQ B1) GOTO 24      * IF TRK EQ IB TRACK 
   IF (BA EQ 0) GOTO 30           * IF NO MORE TO CHECK                  FMU
   BA=BA-2                        * DECREMENT IB SCAN INDEX              FMU
   GOTO 22                        * CHECK NEXT FLAW                      FMU
/                                                                        FMU
/  CYLINDER AND TRACK FOUND IN TABLE, CHECK FOR TRACK FLAW               FMU
24 BA=BA-1                        * DECREMENT IB SCAN INDEX              FMU
   IF (IB(BA) AND 6000 EQ 2000) EXIT   * IF TRACK FLAW SET, 
/                                                                        FMU
/  SHIFT INPUT BUFFER DOWN AS REQUIRED AND INSERT FLAW                   FMU
30 BA=0                           * SET IB INSERT INDEX                  FMU
   IF (B3 EQ 0) GOTO 42           * IF IB IS EMPTY                       FMU
   BA=B3-2                        * SET IB INSERT INDEX                  FMU
34 IF (IB(BA) AND 1777 LT B0) GOTO 40  * IF CY GT IB CY 
   BA=BA+1                        * CY EQUAL, CHECK TRACK 
   IF (IB(BA) RS 6 LT B1) GOTO 41      * IF TR GT IB TRACK
   IF (IB(BA) RS 6 GT B1) GOTO 36      * IF TR LT IB TRACK
   IF (IB(BA) AND 0077 LT B2) GOTO 41  * IF SEC GT IB SEC                FMU
36 B7=BA+2                        * SET SHIFT INDEX                      FMU
   IB(B7)=IB(BA)                  * SHIFT TRACK/SEC DOWN
   BA=BA-1                        * DECREMENT IB INSERT INDEX            FMU
   B7=BA+2                                                               FMU
   IB(B7)=IB(BA)                  * SHIFT CY DOWN 
   IF (BA EQ 0) GOTO 42           * IF NO MORE TO SHIFT                  FMU
   BA=BA-2                        * DECREMENT IB INSERT INDEX            FMU
   GOTO 34                        * CHECK NEXT ENTRY                     FMU
40 BA=BA+1                        * ADJUST INSERT INDEX                  FMU
41 BA=BA+1                                                               FMU
42 IB(BA)=B0 XOR 4000             * SET SECTOR FLAW                      FMU
   IF (SB(6) AND 0020 NE 0) GOTO 44    * IF SECTOR FLAW                  FMU
   IB(BA)=B0 XOR 2000             * SET TRACK FLAW                       FMU
   IF (SB(6) AND 0010 NE 0) GOTO 44    * IF TRACK FLAW                   FMU
   IB(BA)=B0 XOR 6000             * SET ERROR SECTOR                     FMU
   B6=1                           * SET ERROR SECTOR FLAG                FMU
44 BA=BA+1                                                               FMU
   IB(BA)=B1 LS 6 XOR B2          * SAVE TRACK/SECTOR                    FMU
   B3=B3+2                        * INCREMENT IB INDEX                   FMU
   EXIT                           * RETURN                               FMU
   END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU57, 6000, (03,05,16), LOCK 
*IF DEF,CMSE17X 
*** 5.2.63 FMU57 - ARCHIVE 844 FLAW MAPS
*ENDIF
*IF -DEF,CMSE17X
*** 5.2.61 FMU57 - ARCHIVE 844 FLAW MAPS
*ENDIF
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU57 READS THE FACTORY AND/OR UTILITY FLAW TABLES FROM THE
*          DISK AND WRITES THEM TO THE SYSTEM SCRATCH FILE.              FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU57 READS THE MAP SECTORS ONE SECTOR AT A TIME. AFTER EACH 
*          SECTOR IS READ IT IS COPIED TO THE SYSTEM SCRATCH FILE. THUS 
*          EACH SECTOR OF THE  FLAW  MAPS  BECOMES  ONE  RECORD  ON THE 
*          SCRATCH FILE. IF P5 EQUALS 0000 THIS PROCESS CONTINUES UNTIL 
*          SECTORS 0, 1, AND 2 OF THE MAP TRACK HAVE BEEN COPIED TO THE 
*          SCRATCH FILE.  IF P5 EQUALS 0001 SECTOR 1 WILL BE READ TWICE 
*          AND IF P5 EQUALS 0002 SECTOR 2 WILL BE READ TWICE. 
* 
*          ENTRY-                                                        FMU
*          FMU57 USES PARAMETER P5 TO INDICATE WHETHER THE FACTORY
*          AND/OR THE UTILITY MAPS ARE TO BE ARCHIVED. PARAMETER
*          VALUES ARE SHOWN BELOW-- 
*            P5 = 0000 ARCHIVE BOTH FACTORY AND UTILITY MAPS
*            P5 = 0001 ARCHIVE ONLY THE FACTORY MAPS
*            P5 = 0002 ARCHIVE ONLY THE UTILITY MAPS
*IF -DEF,CMSE17X
*          IF IT IS DESIRED TO ARCHIVE  THE  FLAW  TABLES TO TAPE THIS
*          MAY BE DONE BY COPYING THE SCRATCH FILE TO TAPE AFTER MALET
*          EXECUTION OR BY REQUESTING  THE  TAPE  AS  THE SCRATCH FILE
*          BEFORE EXECUTING MALET.
*ENDIF
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU57 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS    FMU
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU57 CALLS SUBMODULE FMU98C TO DISPLAY DETAILED STATUS IF    FMU
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU57 USES REGISTERS B4, B5, B6 AND WC. REGISTERS ARE USED AS
*          FOLLOWS--                                                     FMU
*            B4 - COUNTER FOR NUMBER OF ARCHIVES
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - MESSAGE NUMBER FOR DISPLAY
*            WC - SECTOR                                                 FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU57 USES THE INPUT BUFFER FOR FLAW TABLE READ FROM THE      FMU
*          DISK.  THE OUTPUT BUFFER IS USED TO WRITE THE TABLES TO THE   FMU
*          SCRATCH FILE.                                                 FMU
*                                                                        FMU
*                                                                        FMU
/  - ARCHIVE MAPS -                                                      FMU
/                                                                        FMU
1  FORMAT ARCHIVE 844 MAPS - CH=*O, EQ=*O, UN=*O                         FMU
2  FORMAT FACTORY AND UTILITY MAPS ARCHIVED ON SYSTEM FILE               FMU
3  FORMAT FACTORY MAPS ONLY ARCHIVED ON SYSTEM FILE 
4  FORMAT UTILITY MAPS ONLY ARCHIVED ON SYSTEM FILE 
15 FORMAT MODULE FMU57                                                   FMU
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU57 PAUSE - ARCHIVE 844 FLAW MAPS 
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   MSG 1 (SB(70),SB(71),SB(72)) TO LINE 2                                FMU
   MSG 17 TO DISPLAY,PRINT
   PAUSE                                                                 FMU
   B5=3                           * SET DISPLAY LINE                     FMU
   SYSREW                         * REWIND SYSTEM FILE                   FMU
   WC=0                           * SET SECTOR                           FMU
30 OB(400)=SB(72)                 * SET SEEK PARAMETERS                  FMU
   OB(401)=1466                                                          FMU
   OB(402)=0                                                             FMU
   OB(403)=WC                                                            FMU
   RES, ABT 74                                                           FMU
31 FUNC 0001, ABT 74              * SEEK                                 FMU
   OUTB 4 WORDS FROM OB(400), ABT 74                                     FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 31     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   IF (WC EQ 2) GOTO 33           * IF UTILITY MAPS                      FMU
   FUNC 0030, ABT 74              * READ FACTORY MAPS                    FMU
   GOTO 34                                                               FMU
33 FUNC 0031, ABT 74              * READ UTILITY MAPS                    FMU
34 INB 502 WORDS TO IB, ABT 74                                           FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   COPY IB TO OB FOR 502                                                 FMU
   SYSWR                          * WRITE FILE                           FMU
   B6 = P5 + 2
   IF(P5.EQ.1) GOTO 50       *ARCHIVE FROM FACTORY ONLY 
   IF(P5.EQ.2) GOTO 60       *ARCHIVE FROM UTILITY ONLY 
   WC=WC+1                        * NEXT SECTOR                          FMU
   IF (WC LE 2) GOTO 30           * IF MORE SECTORS                      FMU
40 MSG B6 TO LINE 4          *POST ARCHIVE MESSAGE
   MSG 16 TO LINE 6                                                      FMU
   PICTURE                                                               FMU
   SYSREW                         * REWIND SYSTEM FILE                   FMU
   GOTO 77                        * END OF MODULE                        FMU
50 WC = 1        *SET SECTOR TO FACTORY 
   GOTO 30 WHILE(B4+1.LE.2)  *READ FACTORY TWICE
   GOTO 40       *EXIT
60 WC = 2        *SET SECTOR TO UTILITY 
   GOTO 30 WHILE(B4+1.LE.2)  *READ UTILITY TWICE
   GOTO 40       *EXIT
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU58, 6000, (03,05,16), LOCK 
*IF DEF,CMSE17X 
*** 5.2.64 FMU58 - RESTORE 844 UTILITY MAPS 
*ENDIF
*IF -DEF,CMSE17X
*** 5.2.62 FMU58 - RESTORE 844 UTILITY MAPS 
*ENDIF
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU58 COPIES ARCHIVED FACTORY FLAW MAPS OR UTILITY FLAW MAPS 
*          FROM THE SYSTEM SCRATCH FILE TO THE UTILITY FLAW MAP SECTOR.  FMU
*          FMU58 ALSO COPIES THE ARCHIVED MANUFACTURING DATA AND FACTORY
*          FLAW MAPS FROM THE SYSTEM SCRATCH FILE TO THE CORRESPONDING   FMU
*          MAP SECTORS.                                                  FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU58 READS EITHER THE FACTORY MAPS OR THE UTILITY MAPS FROM 
*          THE SCRATCH FILE.  EACH RECORD ON THE FILE CONTAINS DATA FOR  FMU
*          ONE MAP SECTOR.  AFTER READING THE RECORD IT IS COPIED TO     FMU
*          THE UTILITY MAP SECTOR ON THE DISK.  THE SCRATCH FILE IS THEN FMU
*          REWOUND AND THE ARCHIVED MANUFACTURING DATA AND FACTORY MAPS  FMU
*          ARE READ AND WRITTEN ON THE DISK.  THUS CYLINDER 822,         FMU
*          TRACK 0, SECTORS 0, 1, AND 2 ARE ALL WRITTEN BY THIS MODULE.  FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU58 ASSUMES THAT THE SCRATCH FILE CONTAINS 3 RECORDS 
*          CORRESPONDING TO THE 3 MAP SECTORS.  IT IS ALSO ASSUMED THAT  FMU
*          THE FIRST RECORD IS THE MANUFACTURING DATA, THE SECOND RECORD FMU
*          IS THE FACTORY MAPS, AND THE THIRD RECORD IS THE UTILITY      FMU
*          MAPS.  PARAMETER P5 MUST BE SET TO INDICATE WHICH MAPS TO     FMU
*          USE WHEN WRITTING THE UTILITY MAP SECTOR.  PARAMETER          FMU
*          DEFINITION AND ALLOWED VALUES ARE AS FOLLOWS--                FMU
*            P5 = 0 - USE ARCHIVED UTILITY FLAW TABLES                   FMU
*                 1 - USE ARCHIVED FACTORY FLAW TABLES                   FMU
*          AN ERROR MESSAGE IS DISPLAYED IF P5 IS GREATER THAN 1.        FMU
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU58 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU58 CALLS SUBMODULE FMU98C TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.                                   FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU58 USES REGISTERS B0, B1, B5, B7, AND WC.  REGISTERS ARE
*          USED AS FOLLOWS--                                             FMU
*            B0 - CYLINDER 822                                           FMU
*            B1 - TRACK 0                                                FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B7 - STATUS OF SYSRD                                        FMU
*            WC - SECTOR (0 TO 2)                                        FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU58 USES THE INPUT BUFFER FOR THE DATA READ FROM THE 
*          SCRATCH FILE AND THE OUTPUT BUFFER FOR DATA WRITTEN TO THE    FMU
*          MAP SECTORS.                                                  FMU
*                                                                        FMU
*                                                                        FMU
/  - RESTORE 844 UTILITY MAPS - 
/                                                                        FMU
1  FORMAT RESTORE UTILITY MAPS FROM ARCHIVED                             FMU
2  FORMAT    FACTORY MAPS (SCRATCH FILE)                                 FMU
3  FORMAT    UTILITY MAPS (SCRATCH FILE)                                 FMU
4  FORMAT ILLEGAL PARAMETER P5                                           FMU
6  FORMAT UTILITY MAPS WRITTEN FROM SYSTEM FILE                          FMU
7  FORMAT 844 DRIVE - CH=*O, EQ=*O, UN=*O                                FMU
10 FORMAT    DISK S/N = *HE*HE                                           FMU
11 FORMAT ARCHIVE S/N = *HE*HE                                           FMU
14 FORMAT ABORT - SCRATCH FILE ERROR                                     FMU
15 FORMAT MODULE FMU58
16 FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
17 FORMAT FMU58 PAUSE - RESTORE 844 UTILITY MAPS
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY                                                     FMU
   SYSREW                                                                FMU
   MSG 1 TO LINE 2                                                       FMU
   MSG 2 TO LINE 3                                                       FMU
   MSG 7 (SB(70),SB(71),SB(72)) TO LINE 4                                FMU
   B5=5                           * SET DISPLAY LINE                     FMU
   OB(400)=SB(72)                 * SET SEEK PARAMETERS                  FMU
   OB(401)=1466                                                          FMU
   OB(402)=0                                                             FMU
   OB(403)=0                                                             FMU
   RES, ABT 74                                                           FMU
22 FUNC 0001, ABT 74              * SEEK                                 FMU
   OUTB 4 WORDS FROM OB(400), ABT 74                                     FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 22     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0030, ABT 74              * READ DRIVE S/N                       FMU
   INB 502 WORDS TO IB, ABT 74                                           FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   COPY IB TO OB FOR 10                                                  FMU
   SYSRD, STATUS TO B7            * READ ARCHIVE S/N                     FMU
   IF (B7 NE 0) GOTO 70           * IF ERROR                             FMU
   MSG 10 (OB(0),OB(1)) TO LINE 5                                        FMU
   MSG 11 (IB(0),IB(1)) TO LINE 6                                        FMU
   IF (P5 EQ 1) GOTO 26           * IF FACTORY MAPS                      FMU
   IF (P5 EQ 0) GOTO 24           * IF UTILITY MAPS                      FMU
   MSG 4 TO LINE 10               * ILLEGAL PARAMETER                    FMU
   MSG 16 TO LINE 12                                                     FMU
   PICTURE                                                               FMU
   GOTO 77                        * ERROR STOP                           FMU
24 MSG 3 TO LINE 3                                                       FMU
   SYSRD, STATUS TO B7            * SKIP FACTORY MAPS                    FMU
   IF (B7 NE 0) GOTO 70           * IF ERROR                             FMU
26 MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=7                           * SET DISPLAY LINE                     FMU
   WC=2                           * SET SECTOR                           FMU
30 OB(400)=SB(72)                 * SET SEEK PARAMETERS                  FMU
   OB(401)=1466                                                          FMU
   OB(402)=0                                                             FMU
   OB(403)=WC                                                            FMU
   SYSRD, STATUS TO B7            * READ ARCHIVE
   IF (B7 NE 0) GOTO 70           * IF ERROR
   RES, ABT 74                                                           FMU
32 FUNC 0001, ABT 74              * SEEK                                 FMU
   OUTB 4 WORDS FROM OB(400), ABT 74                                     FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB AND 2 NE 0) GOTO 32     * IF BUSY                              FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   COPY IB TO OB FOR 500          * SET OUTPUT BUFFER                    FMU
   OB(500)=0                                                             FMU
   OB(501)=0                                                             FMU
   RES, ABT 74                                                           FMU
   FUNC 0037, ABT 74              * WRITE PROTECTED SECTOR               FMU
   OUTB 502 WORDS FROM OB, ABT 74                                        FMU
   FUNC 0012, ABT 74              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 74                                          FMU
   IF (SB NE 0) GOTO 74           * IF ERROR                             FMU
   FUNC 0010, ABT 74              * OPERATION COMPLETE
   IF (WC NE 2) GOTO 40           * IF NOT UTILITY MAP SECTOR            FMU
   WC=0                           * RESET SECTOR                         FMU
   SYSREW                         * RESET TO MFG DATA                    FMU
   GOTO 30                        * WRITE MFG DATA                       FMU
40 IF (WC EQ 1) GOTO 60           * IF DONE                              FMU
   WC=1                           * RESET SECTOR                         FMU
   GOTO 30                        * WRITE FACTORY MAPS                   FMU
60 MSG 6 TO LINE 10                                                      FMU
64 MSG 16 TO LINE 12                                                     FMU
   PICTURE                                                               FMU
   GOTO 77                        * END OF MODULE                        FMU
70 MSG 14 TO LINE 10              * SYSRD ERROR                          FMU
   GOTO 64                                                               FMU
74 CALL 98C                       * DISPLAY DETAILED STATUS              FMU
   B5=B5+1                                                               FMU
   MSG 16 TO LINE B5                                                     FMU
   PICTURE                                                               FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU59,6000(03,05,16), LOCK
*IF DEF,CMSE17X 
*** 5.2.65 FMU59 - COPY CONTROLWARE TO 844 DRIVE
*ENDIF
*IF -DEF,CMSE17X
*** 5.2.63 FMU59 - COPY CONTROLWARE TO 844 DRIVE
*ENDIF
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU59 COPIES 7155 CONTROLWARE FROM THE SYSTEM SCRATCH FILE 
*          TO THE 844 DISK.                                              FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU59 USES A SUBROUTINE TO READ ONE SYSTEM FILE AND PACK IT
*          IN THE INPUT BUFFER.  THE PACKED INPUT BUFFER IS THEN COPIED  FMU
*          TO THE OUTPUT BUFFER ONE WORD AT A TIME.  WHEN THE OUTPUT     FMU
*          BUFFER IS FULL, FMU59 CALLS SUBMODULE FMU59A TO WRITE THE
*          SECTOR TO DISK.  THIS SUBMODULE WILL TERMINATE WHEN THE LAST  FMU
*          SECTOR HAS BEEN WRITTEN.  WHEN THE LAST WORD OF THE INPUT     FMU
*          BUFFER HAS BEEN MOVED TO THE OUTPUT BUFFER, FMU59 READS
*          ANOTHER SYSTEM FILE, PACKS IT, AND THE ABOVE PROCESS          FMU
*          CONTINUES UNTIL ALL OF THE CONTROLWARE HAS BEEN COPIED TO     FMU
*          DISK.                                                         FMU
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU59 ASSUMES THAT THE SCRATCH FILE CONTAINS THE CONTROLWARE 
*          TO BE COPIED TO THE DISK.
*IF DEF,CMSE17X                                                          FMU011 
*          THE CMSE SCRATCH FILE CAN BE CREATED AS FOLLOWS--             FMU
*            1. CR,ON.        TO TURN CARD READER ON                     FMU
*            2. LC,10000.     TO READ CONTROLWARE TO CM                  FMU
*            3. *WC,SCRACH,10000,15514 FOR MA721 VERSIONS 1-5 
*               *WC,SCRACH,10000,16456 FOR MA721 VERSIONS 6-X 
*ENDIF
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU59 TERMINATES IN FMU59A WITH AN END STATEMENT.
*          REGISTER CONTENTS ARE NOT USED BY OTHER MODULES.              FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU59 CALLS SUBMODULE FMU59A TO WRITE EACH SECTOR OF 
*          CONTROLWARE TO THE DISK.                                      FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU59 USES REGISTERS B0 TO B8, BA, AND WC.  REGISTERS ARE
*          USED AS FOLLOWS--                                             FMU
*            B0 - CYLINDER                                               FMU
*            B1 - TRACK                                                  FMU
*            B2 - SECTOR                                                 FMU
*            B3 - COUNTER FOR PACKED INPUT BUFFER DATA                   FMU
*            B4 - COUNTER FOR OUTPUT BUFFER DATA                         FMU
*            B5 - SYSRD COUNTER                                          FMU
*            B6 - STATUS OF SYSRD                                        FMU
*            B7 - INPUT BUFFER PACKING METHOD                            FMU
*            B8 - LENGTH OF PACKED INPUT BUFFER 
*            B9 - NONZERO IF CONTROLWARE IS LONGER LENGTH 
*            B11- NONZERO IF CONTROLWARE HAS 77-TABLE 
*            B12- EXPECTED LENGTH OF LAST SYSRD 
*            BA - POINTER TO PACKED INPUT BUFFER DATA                    FMU
*            WC - POINTER TO UNPACKED INPUT DATA                         FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU59 USES THE INPUT BUFFER FOR CONTROLWARE READ FROM THE
*          SYSTEM SCRATCH FILE.  THE OUTPUT BUFFER IS USED FOR WRITING   FMU
*          CONTROLWARE TO THE DISK SECTOR.  EACH SECTOR CONTAINS 3856    FMU
*          BITS OF DATA FOLLOWED BY 8 UNUSED BITS.                       FMU
*                                                                        FMU
/  - COPY 7155 CONTROLWARE TO 844 -                                      FMU
/                                                                        FMU
1  FORMAT FMU59 COPY 7155 CONTROLWARE TO 844
2  FORMAT       CHANNEL *O    UNIT *O                                    FMU
3  FORMAT CONTROLWARE DECK WRONG LENGTH                                  FMU
4  FORMAT SYSRD EXPECTED IS 45D REM *DED WORDS
5  FORMAT        ACTUAL IS *DEC  REM *DEC                                FMU
6  FORMAT  SYSRD EXPECTED IS 52D REM *DED WORDS 
20 BLANK                                                                 FMU
   MSG 1 TO DISPLAY                                                      FMU
   MSG 1 TO LINE 5                                                       FMU
   MSG 2 (SB(70),SB(72)) TO LINE 7                                       FMU
   B0=1466                        * STARTING CYLINDER                    FMU
   B1=1                           * STARTING TRACK                       FMU
   B2=0                           * STARTING SECTOR                      FMU
   SYSREW                                                                FMU
   GOSUB 40                       * SYSRD AND PACK IT                    FMU
22 COPY IB(B3) TO OB(B4) FOR 1                                           FMU
   IF (B4 NE 501) GOTO 24         * IF OB NOT FULL                       FMU
   CALL 59A                       * WRITE ONE SECTOR
   IF (B3 EQ 325) GOTO 26         * IF IB FULL                           FMU
   IF (B7 EQ 0) GOTO 30           * IF IB ON WORD BOUNDARY               FMU
   GOTO 32                                                               FMU
24 IF (B3 NE B8) GOTO 30          * IF IB NOT FULL
26 GOSUB 40                       * SYSRD AND PACK IT                    FMU
   IF (B7 NE 1) GOTO 22           * IF OB(B4) NOT FILLED                 FMU
   GOTO 32                                                               FMU
30 B3=B3+1                        * INCREMENT IB POINTER                 FMU
32 IF (B4 NE 501) GOTO 34         * TO INCREMENT OB POINTER              FMU
   B4=0                                                                  FMU
   GOTO 22                                                               FMU
34 B4=B4+1                        * INCREMENT OB POINTER                 FMU
   GOTO 22                                                               FMU
*                                                                        FMU
*   DESCRIPTION                                                          FMU
/         SYSRD ONE BLOCK AND PACK IT SUBROUTINE                         FMU
/                                                                        FMU
*         1.  SYSRD ONE BLOCK FROM THE SCRATCH FILE AND INSURE           FMU
*             THE FILE HAS THE CORRECT NUMBER OF WORDS.                  FMU
*         2.  DETERMINE THE PACKING METHOD.                              FMU
*             A.  IF B7 = 0 PACK IB(0) THROUGH IB(500) INTO IB(0)        FMU
*                 THROUGH IB(325).                                       FMU
*             B.  IF B7 = 1 PACK IB(0) THROUGH IB(500) INTO IB(0)        FMU
*                 THROUGH IB(325), RIGHT SHIFT THE PACKED DATA BY        FMU
*                 4 AND RESTORE IB(0) BITS 8-11 FROM THE OUTPUT BUFFER.  FMU
*             C.  IB B7 = 2 PACK IB(0) THROUGH IB(500) INTO IB(0)        FMU
*                 THROUGH IB(325), RIGHT SHIFT THE PACKED DATA BY 8      FMU
*                 AND RESTORE IB(0) BITS 4-11 FROM THE OUTPUT BUFFER.    FMU
*         3.  UPDATE PACKING METHOD (B7 = B7 +1 MODULO 3) AND RETURN.    FMU
*                                                                        FMU
40 B3=0                           * SET COUNTER FOR IB DATA              FMU
   SYSRD, STATUS TO B6                                                   FMU
   IF (B9 EQ 0) GOTO 41           * IF SHORT CONTROLWARE LENGTH 
   IF (B5 NE 52D) GOTO 42         * IF NOT LAST SYSRD 
   IB(WT) = 0 
   B12 = 230D                     * REM W/O 77-TABLE
   IF (B11 NE 0) B12 = 310D       * REM W/77-TABLE
   IF (WT EQ B12) GOTO 43         * IF LAST SYSRD OK
   GOTO 70                        * DECK IS WRONG LENGTH
41 IF (B5 NE 45D) GOTO 42         * IF NOT LAST SYSRD 
   IB(WT) = 0 
   B12 = 60D                      * REM W/O 77-TABLE
   IF (B11 NE 0) B12 = 140D       * REM W/77-TABLE
   IF (WT EQ B12) GOTO 43         * IF LAST SYSRD OK
   GOTO 70                        * DECK IS WRONG LENGTH                 FMU
42 IF (B6 NE 0) GOTO 70           * IF DECK IS WRONG LENGTH              FMU
43 B5 = B5 + 1                    * SYSRD COUNTER 
   WC=0                           * PACKED POINTER                       FMU
   BA=0                           * UNPACKED IB POINTER                  FMU
   IB(500)=0                                                             FMU
   B8=325                         * SET NORMAL LENGTH 
   IF (B5 NE 1) GOTO 45           * IF NOT FIRST READ 
   B11 = 0                        * CLEAR 77-TABLE FLAG 
   IF (IB(0) NE 7700) GOTO 44     * IF NO 77-TABLE
   B11 = 1                        * SET 77-TABLE FLAG 
   BA=120                         * SKIP TABLE
   B8=237                         * SET SHORT LENGTH
44 IF (IB(BA+5) NE 11) GOTO 45    * IF SHORT CONTROLWARE LENGTH 
   B9 = 1 
45 IF (B7 NE 0) GOTO 50           * IF PACK AND SHIFT 4 OR 8
/         PACK THE INPUT BUFFER. (NO SHIFTING)                           FMU
46 IB(501)=IB(BA+1) RS 4          * PACK 24 BITS                         FMU
   IB(WC)=IB(BA) LS 4 XOR IB(501)                                        FMU
   IB(501)=IB(BA+1) AND 17 LS 10                                         FMU
   IB(WC+1)=IB(501) XOR IB(BA+2)                                         FMU
   BA=BA+3                        * INCREMENT UNPACKED POINTER           FMU
   WC=WC+2                        * INCREMENT PACKED POINTER             FMU
   IF (BA LT 500) GOTO 46         * IF MORE BITS TO PACK
   IF (B8 EQ 237) GOTO 64         * IF 77 TABLE SKIPPED 
   B7=B7+1                        * INCREMENT PACKING METHOD             FMU
   GOTO 64                                                               FMU
50 IF (B7 NE 1) GOTO 54           * IF PACK AND SHIFT 8                  FMU
/         PACK AND SHIFT IB RIGHT 4 BITS                                 FMU
   IB(502)=OB(B4) XOR IB(BA)                                             FMU
52 IB(WC)=IB(WC) XOR IB(BA)       * PACK 24 BITS                         FMU
   IB(WC+1)=IB(BA+1) LS 4                                                FMU
   IB(WC+1)=IB(BA+2) RS 4 XOR IB(WC+1)                                   FMU
   IB(WC+2)=IB(BA+2) AND 17 LS 10                                        FMU
   BA=BA+3                        * INCREMENT UNPACKED POINTER           FMU
   WC=WC+2                        * INCREMENT PACKED POINTER             FMU
   IF (BA NE 501) GOTO 52         * IF MORE BITS TO PACK                 FMU
   B7=B7+1                        * INCREMENT PACKING METHOD             FMU
   GOTO 60                                                               FMU
/         PACK AND SHIFT IB RIGHT 8 BITS                                 FMU
54 IB(502)=IB(0) RS 4 XOR OB(B4)                                         FMU
56 IB(501)=IB(BA) AND 17 LS 10                                           FMU
   IB(WC)=IB(BA) RS 4 XOR IB(WC)                                         FMU
   IB(WC+1)=IB(501) XOR IB(BA+1)                                         FMU
   IB(WC+2)=IB(BA+2) LS 4                                                FMU
   BA=BA+3                        * INCREMENT UNPACKED POINTER           FMU
   WC=WC+2                        * INCREMENT PACKED POINTER             FMU
   IF (BA NE 501) GOTO 56         * IF MORE BITS TO PACK                 FMU
   B7=0                           * UPDATE PACKING METHOD                FMU
60 IB(0)=IB(502)                                                         FMU
64 RETURN                                                                FMU
70 MSG 3 TO LINE 11                                                      FMU
   IF (B9 EQ 0) GOTO 74           * IF SHORT CONTROLWARE LENGTH 
   MSG 6 (B12) TO LINE 11 
   GOTO 76
74 MSG 4 (B12) TO LINE 13 
76 MSG 5 (B5,WT) TO LINE 14 
   PICTURE                                                               FMU
   END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU59A,6000(03,05,16), LOCK 
*IF DEF,CMSE17X 
*** 5.2.66 FMU59A - WRITE CONTROLWARE TO 844 DISK (SUBROUTINE)
*ENDIF
*IF -DEF,CMSE17X
*** 5.2.64 FMU59A - WRITE CONTROLWARE TO 844 DISK (SUBROUTINE)
*ENDIF
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU59A IS CALLED BY FMU59 TO WRITE ONE SECTOR OF CONTROLWARE 
*          TO THE DISK.  FMU59A ALSO PROVIDES A DISPLAY OF DETAILED 
*          STATUS IF AN ERROR OCCURS.                                    FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU59A INSURES THAT THE SECTOR IS FLAWED BY ISSUING THE SET
*          FLAW COMMAND.  FMU59A THEN WRITES ONE SECTOR USING THE WRITE 
*          PROTECTED SECTOR COMMAND.  A CHECK IS MADE TO SEE IF THE      FMU
*          LAST SECTOR WAS WRITTEN.  THE LAST SECTOR IS SECTOR 5 OF      FMU
*          TRACK 1 AND CONTAINS 3856 DATA BITS AND 8 UNUSED BITS.  IF    FMU
*          THE LAST SECTOR WAS WRITTEN FMU59A DISPLAYS THE CONTROLWARE
*          NUMBER AND REVISION CONTAINED IN THE CONTROLWARE BINARY.      FMU
*          THE SUBMODULE THEN TERMINATES WITH AN END STATEMENT.  IF THE  FMU
*          SECTOR WRITTEN WAS NOT THE LAST SECTOR FMU59A INCREMENTS THE 
*          SECTOR ADDRESS BY 1.  SINCE THE WRITE DOES NOT WRITE A        FMU
*          MULTIPLE OF 12-BIT WORDS THE INPUT BUFFER MUST BE SHIFTED     FMU
*          BEFORE MORE WORDS CAN BE COPIED FROM THE INPUT BUFFER TO THE  FMU
*          OUTPUT BUFFER.  IF THE PACKING METHOD IS 1 THE INPUT BUFFER   FMU
*          IS RIGHT SHIFTED BY 8 BITS.  IF THE PACKING METHOD IS 0 OR 2  FMU
*          THE INPUT BUFFER IS LEFT SHIFTED BY 4 BITS.  AFTER THE        FMU
*          BUFFER HAS BEEN SHIFTED THE PACKING METHOD IS DECREMENTED     FMU
*          BY 1 AND FMU59A RETURNS TO FMU59.
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU59A IS CALLED BY FMU59.  INITIALLY THE CYLINDER, TRACK, 
*          AND SECTOR ARE IN REGISTERS B0, B1, AND B2.  REGISTER B7      FMU
*          INITIALLY CONTAINS THE PACKING METHOD.                        FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU59A TERMINATES BY RETURNING TO FMU59 OR WITH AN END 
*          STATEMENT.  REGISTER B2 CONTAINS THE NUMBER FOR THE NEXT      FMU
*          SECTOR TO BE WRITTEN.  REGISTER B7 CONTAINS THE PACKING       FMU
*          METHOD.                                                       FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU59A DOES NOT CALL ANY SUBMODULES. 
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU59A USES REGISTERS B0, B1, B2, B7, B9, B10, BA, AND WC. 
*          REGISTERS ARE USED AS FOLLOWS--                               FMU
*            B0 - CYLINDER                                               FMU
*            B1 - TRACK                                                  FMU
*            B2 - SECTOR                                                 FMU
*            B7 - INPUT BUFFER PACKING METHOD                            FMU
*            B9 - NONZERO IF CONTROLWARE IS LONGER LENGTH 
*            B10- HOLDING REGISTER FOR OB(501)
*            BA - POINTER TO PACKED INPUT BUFFER DATA                    FMU
*            WC - POINTER TO UNPACKED INPUT DATA                         FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU59A USES THE INPUT BUFFER FOR CONTROLWARE READ FROM THE 
*          SYSTEM SCRATCH FILE.  THE OUTPUT BUFFER IS USED FOR WRITING   FMU
*          CONTROLWARE TO THE DISK SECTOR.                               FMU
*                                                                        FMU
*                                                                        FMU
/  - WRITE CONTROLWARE TO DISK (SUBROUTINE) -                            FMU
/                                                                        FMU
1  FORMAT FMU59A ABORT - GS=*OCT, LF=*OCT 
2  FORMAT   COPY OF MA*H*H REV *D CONTROLWARE COMPLETE                   FMU
3  FORMAT                  DETAILED STATUS                               FMU
4  FORMAT  1 = *OCT  2 = *OCT  3 = *OCT  4 = *OCT  5 = *OCT              FMU
5  FORMAT  6 = *OCT  7 = *OCT  8 = *OCT  9 = *OCT 10 = *OCT              FMU
6  FORMAT 11 = *OCT 12 = *OCT 13 = *OCT 14 = *OCT 15 = *OCT              FMU
7  FORMAT 16 = *OCT 17 = *OCT 18 = *OCT 19 = *OCT 20 = *OCT              FMU
10 FORMAT FMU59A ABORT - EC=*OCT AT LINE *OCT 
11 FORMAT FMU59A WROTE TRACK *O, SECTOR *O
20 IF (B9 EQ 0) GOTO 62           * IF SHORT CONTROLWARE LENGTH 
   IF (B1 EQ 2) GOTO 62           * IF TRACK 2
   IF (B2 NE 5) GOTO 62           * IF SECTOR NOT 5 
   B9 = B9 + 1                    * COUNT SECTORS NOT WRITTEN TO DISK 
   IF (B9 EQ 7) GOTO 62           * IF 5 SECTORS HAVE BEEN SKIPPED
   GOTO 24
62 RES, ABT 71
   B10 = OB(501)
   OB(501)=SB(72)                 * DRIVE NUMBER                         FMU
   OB(502)=B0                     * CYLINDER                             FMU
   OB(503)=B1                     * TRACK                                FMU
   OB(504)=B2                     * SECTOR                               FMU
   WC=4                                                                  FMU
   BA=501                                                                FMU
21 FOUT 1, ABT 70                 * SEEK FUNCTION                        FMU
   FUNC 12, ABT 70                * GENERAL STATUS                       FMU
   STATUS 1 WORDS TO SB(0), ABT 70                                       FMU
   IF (SB(0) EQ 2) GOTO 21        * IF HEADS IN MOTION                   FMU
   IF (SB(0) NE 0) GOTO 72        * IF ERROR                             FMU
   OB(501)=2                                                             FMU
   WC=1                                                                  FMU
   FOUT 22, ABT 70                * SET FLAW FUNCTION                    FMU
22 FUNC 12, ABT 70                * GENERAL STATUS                       FMU
   STATUS 1 WORDS TO SB(0), ABT 70                                       FMU
   IF (SB(0) EQ 2) GOTO 22        * IF BUSY                              FMU
   OB(501)=SB(72)                 * DRIVE NUMBER                         FMU
   WC=4                                                                  FMU
   FOUT 1, ABT 70                 * SEEK FUNCTION                        FMU
   FUNC 12, ABT 70                * GENERAL STATUS                       FMU
   STATUS 1 WORDS TO SB(0), ABT 70                                       FMU
   IF (SB(0) NE 0) GOTO 72        * IF ERROR                             FMU
   OB(501) = B10
   FUNC 37, ABT 70                * WRITE PROTECTED SECTOR               FMU
   OUTB 502 WORDS FROM OB(0), ABT 70                                     FMU
   FUNC 12, ABT 70                * GENERAL STATUS                       FMU
   STATUS 1 WORDS TO SB(0), ABT 70                                       FMU
   IF (SB(0) NE 0) GOTO 72        * IF ERROR                             FMU
   IF (B1 EQ 1) GOTO 23           * IF MORE SECTORS TO WRITE             FMU
   IF (B2 EQ 5) GOTO 50           * IF DONE                              FMU
23 MSG 11 (B1,B2) TO DISPLAY                                             FMU
   B2=B2+1                        * UPDATE SECTOR ADDRESS                FMU
   IF (B2 NE 30) GOTO 24          * IF SAME TRACK                        FMU
   B2=0                                                                  FMU
   B1=B1+1                                                               FMU
24 IB(326)=0                                                             FMU
   WC=0                                                                  FMU
   IF (B7 EQ 1) GOTO 40           * TO RIGHT SHIFT IB 8 BITS             FMU
/         LEFT SHIFT INPUT BUFFER BY 4 BITS                              FMU
25 IB(WC)=IB(WC) AND 377 LS 4                                            FMU
   IB(WC)=IB(WC+1) RS 10 XOR IB(WC)                                      FMU
   IF (WC EQ 325) GOTO 30         * IF DONE SHIFTING                     FMU
   WC=WC+1                        * INCREMENT POINTER                    FMU
   GOTO 25                                                               FMU
30 IF (B7 EQ 0) GOTO 35           * TO DECREMENT PACKING METHOD          FMU
   B7=B7-1                        * DECREMENT PACKING METHOD             FMU
   EXIT                                                                  FMU
35 B7=2                                                                  FMU
   EXIT                                                                  FMU
/         RIGHT SHIFT IB BY 8 BITS                                       FMU
40 WC=324                                                                FMU
46 IB(501)=IB(WC) AND 377 LS 4                                           FMU
   IB(WC+1)=IB(WC+1) RS 10 XOR IB(501)                                   FMU
   IF (WC EQ 0) GOTO 30           * IF DONE SHIFTING                     FMU
   WC=WC-1                                                               FMU
   GOTO 46                                                               FMU
50 IB(0)=OB(500) RS 4                                                    FMU
   IB(1)=OB(500) AND 17 LS 4                                             FMU
   IB(1)=OB(501) RS 10 XOR IB(1)                                         FMU
   IB(2)=OB(475) RS 10                                                   FMU
   MSG 2 (IB(0),IB(1),IB(2)) TO LINE 11                                  FMU
   FUNC 10                        * OPERATION COMPLETE                   FMU
   GOTO 76                                                               FMU
70 MSG EM TO LINE 23
   MSG 10 (EC,EA) TO LINE 13
   FUNC 10
   GOTO 76
71 MSG EM TO LINE 23
   MSG 10 (EC,EA) TO LINE 13
   GOTO 76                                                               FMU
72 MSG 1 (SB,LF) TO LINE 13                                              FMU
   FUNC 23, ABT 70                * DETAILED STATUS                      FMU
   STATUS 24 WORDS TO SB(1), ABT 70                                      FMU
   MSG 3 TO LINE 15                                                      FMU
   MSG 4, 5 WORDS FROM SB(1) TO LINE 16                                  FMU
   MSG 5, 5 WORDS FROM SB(6) TO LINE 17                                  FMU
   MSG 6, 5 WORDS FROM SB(13) TO LINE 20                                 FMU
   MSG 7, 5 WORDS FROM SB(20) TO LINE 21                                 FMU
   MSG 1 (SB,LF) TO LINE 13                                              FMU
   FUNC 10                        * OPERATION COMPLETE                   FMU
76 PICTURE                                                               FMU
   END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU61, LSFMD2, (16), LOCK 
*** 5.2.1  FMU61 - READ 885-1X SERIAL NUMBER
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU61 DISPLAYS AND PRINTS THE SERIAL NUMBER AND DATE OF
*          FORMATTING FOR THE ASSIGNED 885-1X DRIVE.
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU61 READS CYLINDER 841, TRACK 0, SECTOR 0 ON THE ASSIGNED
*          DRIVE.  THE SERIAL NUMBER AND DATE OF FORMATTING ARE 
*          EXTRACTED FROM THE FIRST FOUR WORDS OF THIS SECTOR.
*                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU61 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE 
*          EXECUTION. 
/                                                                        FMU
*          EXIT-                                                         FMU
*          FMU61 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES.                                FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU61 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU61 USES REGISTERS B1, B2, B3, AND B5.  REGISTERS ARE
*          USED AS FOLLOWS--                                             FMU
*            B1 - DATE OF FORMATTING
*            B2 - DATE OF FORMATTING
*            B3 - DATE OF FORMATTING
*            B5 - K DISPLAY LINE NUMBER 
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU61 USES THE INPUT BUFFER FOR DATA READ FROM THE DRIVE.
* 
* 
/  - READ 885-1X SERIAL NUMBER -
/ 
1  FORMAT 885-1X SERIAL NUMBER - CH=*O, EQ=*O, UN=*O
2  FORMAT S/N = *HE*HE    DATE OF FORMAT = *H/*H/*H 
15 FORMAT MODULE FMU61
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   B5=3                           * SET DISPLAY LINE
   RES DRIVE, ABT 74
   GET SERIAL, ABT 74             * READ MFG DATA 
   REL, ABT 74
   B3=IB(3) AND 0377              * EXTRACT DAY/MO/YR 
   B2=IB(3) RS 8
   B1=IB(2) AND 0017
   B1=B1 LS 4 
   B2=B1 XOR B2 
   B1=IB(2) RS 4
   MSG 2 (IB(0),IB(1),B1,B2,B3) TO LINE 4 
44 MSG 16 TO LINE 6 
   PICTURE
   GOTO 77                        * END OF MODULE 
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU62, LSFMD2, (16), LOCK 
*** 5.2.2  FMU62 - READ 885-1X FACTORY FLAW TABLES
**
*          PURPOSE- 
*          FMU62 DISPLAYS AND PRINTS THE FACTORY TRACK FLAW TABLE AND 
*          THE FACTORY SECTOR FLAW TABLE FOR THE ASSIGNED 885-1X
*          DRIVE. 
* 
*          METHOD-
*          FMU62 READS THE FACTORY FLAW TABLES FROM CYLINDER 841, 
*          TRACK 0, SECTORS 1 TO 18.  SECTOR 1 CONTAINS TRACK FLAWS AND 
*          SECTORS 2 TO 18 CONTAIN SECTOR FLAWS.  EACH SECTOR IN THE
*          TABLES MAY CONTAIN UP TO 120 ENTRIES.
*          AFTER READING ONE SECTOR FMU62 COPIES THE FLAWS TO THE 
*          K DISPLAY AND TO THE PRINTER.  FMU62 CONTINUES READING 
*          AND DISPLAYING THE FLAW TABLES UNTIL THE END OF THE TABLE
*          IS FOUND.  CYLINDER, TRACK AND SECTOR NUMBERS IN THE TABLES
*          ARE DISPLAYED AND PRINTED IN OCTAL.
* 
*          ENTRY- 
*          FMU62 REQUIRES PARAMETER P0 TO BE SET TO INDICATE WHICH
*          TABLES TO DISPLAY AND PRINT.  PARAMETER USAGE AND ALLOWED
*          OCTAL VALUES ARE SHOWN BELOW-- 
*            P0 = 0 - DISPLAY AND PRINT TRACK AND SECTOR FLAW TABLES
*                 1 - DISPLAY AND PRINT TRACK FLAWS ONLY
*                 2 - DISPLAY AND PRINT SECTOR FLAWS ONLY 
*          AN ERROR MESSAGE IS DISPLAYED IF P0 IS GREATER THAN 2. 
/ 
*          EXIT-
*          FMU62 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU62 CALLS SUBMODULE FMU98H TO DISPLAY THE FLAW TABLES AND
*          SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF AN I/O
*          FUNCTION IS ABORTED. 
* 
*          REGISTERS USED-
*          FMU62 USES REGISTERS B5, B6, BA, AND WC.  REGISTERS ARE USED 
*          AS FOLLOWS-- 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - DISPLAY SELECT FLAG FOR SUBMODULE FMU98H
*            WC - SECTOR
*            BA - FLAW COUNT
* 
*          BUFFERS USED-
*          FMU62 USES THE INPUT BUFFER FOR DATA READ FROM THE DRIVE.
*          THIS DATA IS COPIED TO THE OUTPUT BUFFER FOR USE BY
*          SUBMODULE FMU98H.
* 
* 
/  - READ 885-1X FACTORY MAP -
/ 
1  FORMAT 885-1X FACTORY MAP - CH=*O, EQ=*O, UN=*O
10 FORMAT ILLEGAL PARAMETER P0
15 FORMAT MODULE FMU62
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   B5=5                           * DISPLAY INDEX 
   BA=1                           * SET FLAW COUNT
40 IF (P0 EQ 0) GOTO 46           * IF ALL MAPS 
   IF (P0 EQ 1) GOTO 46           * IF TRACK MAP ONLY 
   IF (P0 EQ 2) GOTO 52           * IF SECTOR MAPS ONLY 
   MSG 10 TO LINE 4               * ERROR IF P0 NOT 0 TO 2
   MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
46 WC=1                           * SET SECTOR
   RES DRIVE, ABT 74
   GET FACTORY SECTOR WC, ABT 74  * READ TRACK FLAWS
   COPY IB TO OB FOR 502
   B6=1 
   CALL 98H                       * DISPLAY TRACK FLAWS 
   BA=1                           * RESET FLAW COUNT
   IF (P0 EQ 1) GOTO 77           * IF TRACK MAP ONLY 
52 WC=2                           * SET SECTOR
53 RES DRIVE, ABT 74
   GET FACTORY SECTOR WC, ABT 74  * READ SECTOR FLAWS 
   COPY IB TO OB FOR 502
   B6=2 
   CALL 98H                       * DISPLAY SECTOR FLAWS
   IF (B3 LT 240D) GOTO 77        * IF END OF MAP 
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 53         * IF MORE SECTORS 
   GOTO 77                        * END OF MODULE 
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU63, LSFMD2, (16), LOCK 
*** 5.2.3  FMU63 - READ 885-1X UTILITY TABLES 
**
*          PURPOSE- 
*          FMU63 DISPLAYS AND PRINTS THE UTILITY TRACK FLAW TABLE AND 
*          THE UTILITY SECTOR FLAW TABLE FOR THE ASSIGNED 885-1X
*          DRIVE. 
* 
*          METHOD-
*          FMU63 INITIALLY CHECKS PARAMETER P4.  IF P4 IS EQUAL TO 1
*          THEN FMU63 IMMEDIATELY EXITS TO FMU631.  IF P4 IS EQUAL
*          TO ZERO FMU63 READS THE UTILITY FLAW TABLES FROM CYLINDER
*          841, TRACK 1, SECTORS 1 TO 18.  SECTOR 1 CONTAINS TRACK
*          FLAWS AND SECTORS 2 TO 18 CONTAIN SECTOR FLAWS.  EACH SECTOR 
*          OF THE TABLES MAY CONTAIN UP TO 120 ENTRIES. 
*          AFTER READING ONE SECTOR FMU63 COPIES THE FLAWS TO THE 
*          K DISPLAY AND TO THE PRINTER.  FMU63 CONTINUES READING 
*          AND DISPLAYING THE FLAW TABLES UNTIL THE END OF THE TABLE
*          IS FOUND.  CYLINDER, TRACK, AND SECTOR NUMBERS IN THE
*          TABLES ARE DISPLAYED AND PRINTED IN OCTAL. 
* 
*          ENTRY- 
*          FMU63 REQUIRES PARAMETER P0 TO BE SET TO INDICATE WHICH
*          TABLES TO DISPLAY AND PRINT AS SHOWN BELOW-- 
*            P0 = 0 - DISPLAY AND PRINT TRACK AND SECTOR FLAW TABLES
*                 1 - DISPLAY AND PRINT TRACK FLAWS ONLY
*                 2 - DISPLAY AND PRINT SECTOR FLAWS ONLY 
*          AN ERROR MESSAGE IS DISPLAYED IF P0 IS GREATER THAN 2. 
*          FMU63 ALSO REQUIRES PARAMETER P4 TO BE SET TO INDICATE 
*          IF THE TRACK FLAW TABLES ARE TO BE PRINTED WITH OR WITHOUT 
*          REORDERING.  PARAMETER USAGE AND ALLOWED VALUES ARE
*          SHOWN BELOW--
*            P4 = 0 - DISPLAY AND PRINT TABLES WITHOUT REORDERING.
*                 1 - SORT TABLES INTO ASCENDING ORDER BY CYLINDER, 
*                     TRACK, AND SECTOR 
*          AN ERROR MESSAGE IS DISPLAYED IF P4 IS GREATER THAN 1. 
/ 
*          EXIT-
*          FMU63 TERMINATES WITH AN END STATEMENT OR BY EXITING 
*          TO MODULE FMU631.  REGISTER B5 CONTAINS THE K DISPLAY
*          LINE NUMBER FOR FMU631.
* 
*          SUBMODULES REFERENCED- 
*          FMU63 CALLS SUBMODULE FMU98H TO DISPLAY THE FLAW TABLES AND
*          SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF AN I/O
*          FUNCTION IS ABORTED. 
* 
*          REGISTERS USED-
*          FMU63 USES REGISTERS B5, B6, BA, AND WC.  REGISTERS ARE USED 
*          AS FOLLOWS-- 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - DISPLAY SELECT FLAG FOR SUBMODULE FMU98H
*            WC - SECTOR
*            BA - FLAW COUNT
* 
*          BUFFERS USED-
*          FMU63 USES THE INPUT BUFFER FOR DATA READ FROM THE DRIVE.
*          DATA IS COPIED TO THE OUTPUT BUFFER FOR USE BY SUBMODULE 
*          FMU98H.
* 
* 
/  - READ 885-1X UTILITY MAP -
/ 
1  FORMAT 885-1X UTILITY MAP - CH=*O, EQ=*O, UN=*O
10 FORMAT ILLEGAL PARAMETER P0
11 FORMAT ILLEGAL PARAMETER P4
15 FORMAT MODULE FMU63
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   B5=5                           * SET DISPLAY LINE
   BA=1                           * SET FLAW COUNT
40 IF (P0 EQ 0) GOTO 44           * IF ALL MAPS 
   IF (P0 EQ 1) GOTO 44           * IF TRACK MAP ONLY 
   IF (P0 EQ 2) GOTO 50           * IF SECTOR MAPS ONLY 
   MSG 10 TO LINE 4               * ERROR IF P0 NOT 0 TO 2
42 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
44 IF (P4 EQ 1) EXIT TO 631       * IF REORDER ENABLED
   IF (P4 EQ 0) GOTO 46           * IF REORDER DISABLED 
   MSG 11 TO LINE 4               * ERROR IF P4 NOT 0 OR 1
   GOTO 42
46 WC=1                           * SET SECTOR
   RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ TRACK FLAWS
   COPY IB TO OB FOR 502
   B6=1 
   CALL 98H                       * DISPLAY TRACK FLAWS 
   BA=1                           * RESET FLAW COUNT
   IF (P0 EQ 1) GOTO 77           * IF TRACK MAP ONLY 
50 IF (P4 EQ 1) EXIT TO 631       * IF REORDER ENABLED
   IF (P4 EQ 0) GOTO 52           * IF REORDER DISABLED 
   MSG 11 TO LINE 4               * ERROR IF P4 NOT 0 OR 1
   GOTO 42
52 WC=2                           * SET SECTOR
53 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ SECTOR FLAWS 
   COPY IB TO OB FOR 502
   B6=2 
   CALL 98H                       * DISPLAY SECTOR FLAWS
   IF (B3 NE 240D) GOTO 77        * IF END OF MAP 
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 53         * IF MORE SECTORS 
   GOTO 77                        * END OF MODULE 
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU631, LSFMD2, (16), LOCK
*** 5.2.4  FMU631 - REORDER 885-1X UTILITY FLAW TABLES
**
*          PURPOSE- 
*          FMU631 SORTS THE UTILITY TRACK FLAW TABLE AND THE UTILITY
*          SECTOR FLAW TABLE INTO ASCENDING ORDER BY CYLINDER, TRACK, 
*          AND SECTOR.  THESE TABLES ARE THEN DISPLAYED AND PRINTED.
* 
*          METHOD-
*          FMU631 READS THE UTILITY FLAW TABLES FROM CYLINDER 841,
*          TRACK 1, SECTORS 1 TO 18.  SECTOR 1 CONTAINS TRACK FLAWS 
*          AND SECTORS 2 TO 18 CONTAIN SECTOR FLAWS.  EACH SECTOR 
*          OF THE TABLES MAY CONTAIN UP TO 120 ENTRIES.  AFTER
*          READING EACH SECTOR THE FLAWS ARE SORTED INTO A DISPLAY
*          BUFFER.  WHEN THE END OF THE TABLE IS FOUND, THE 
*          BUFFER IS DISPLAYED AND PRINTED.  WHEN THE SECTOR FLAW 
*          TABLE IS READ, THE DISPLAY BUFFER IS NOT LARGE ENOUGH
*          TO HOLD ALL OF THE FLAWS AT ONE TIME, SO IT IS NECESSARY 
*          TO RE-READ SECTORS 2 TO 18 AND FILL THE BUFFER AGAIN.
*          THIS PROCESS IS REPEATED UNTIL ALL OF THE SECTOR FLAWS 
*          HAVE BEEN PRINTED AND DISPLAYED. 
/ 
*          ENTRY- 
*          FMU631 IS ONLY ENTERED FROM MODULE FMU63, AND THEN ONLY IF 
*          PARAMETER P4 IS EQUAL TO 1.  PARAMETER P0 MUST ALSO BE SET 
*          AS REQUIRED BY MODULE FMU63. 
*          FMU631 ASSUMES THAT THE LINE NUMBER FOR THE K DISPLAY
*          IS IN REGISTER B5. 
* 
*          EXIT-
*          FMU631 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU631 CALLS SUBMODULE FMU98H TO DISPLAY THE FLAW TABLES AND 
*          SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF AN I/O
*          FUNCTION IS ABORTED. 
* 
*          REGISTERS USED-
*          FMU631 USES REGISTERS B1 TO B7, BA, AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--
*            B1 - INDEX FOR SHIFTING THE DISPLAY BUFFER 
*            B2 - INDEX FOR SHIFTING THE DISPLAY BUFFER 
*            B3 - INPUT BUFFER INDEX
*            B4 - INPUT BUFFER INDEX
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - DISPLAY SELECT FLAG FOR SUBMODULE FMU98H
*                 ALSO, INDEX TO DISPLAY BUFFER 
*            B7 - INDEX TO DISPLAY BUFFER 
*            WC - SECTOR
*            BA - FLAW COUNT
* 
*          BUFFERS USED-
*          FMU631 USES THE INPUT BUFFER FOR FLAW TABLES READ FROM THE 
*          DRIVE.  THE OUTPUT BUFFER IS USED AS THE DISPLAY BUFFER
*          AND FOR SORTING THE TABLES INTO SEQUENTIAL ORDER.
* 
* 
/  - READ 885-1X UTILITY MAPS (REORDER) - 
/ 
15 FORMAT MODULE FMU631 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 MSG 15 TO DISPLAY
   WC=1                           * SET SECTOR
22 OB(500)=0                      * CLEAR LAST FLAW 
   OB(501)=0
   BA=1                           * SET FLAW COUNT
24 B7=0 
26 OB(B7)=0                       * CLEAR OB(0-239) 
   B7=B7+1
   IF (B7 LT 240D) GOTO 26        * IF NOT DONE CLEARING
35 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR 
   B4=0                           * RESET IB INDEX
40 B7=0                           * RESET OB INDEX
   B3=B4+1
   IF (IB(B4) AND 4000 NE 0) GOTO 42   * IF NOT END OF IB 
   IF (WC EQ 1) GOTO 70           * IF END OF TRACK FLAWS 
   GOTO 46                        * END OF SECTOR FLAWS 
42 IF (IB(B4) GT OB(500)) GOTO 50      * FLAW MAP GT LAST FLAW
   IF (IB(B4) LT OB(500)) GOTO 44      * FLAW MAP LT LAST FLAW
   IF (IB(B3) GT OB(501)) GOTO 50      * FLAW MAP GT LAST FLAW
44 B4=B4+2                        * INCREMENT IB INDEX
   IF (B4 LT 240D) GOTO 40        * IF NOT END OF SECTOR
   WC=WC+1                        * NEXT SECTOR 
   IF (WC EQ 2) GOTO 70           * IF END OF TRACK FLAWS 
   IF (WC LE 18D) GOTO 35         * IF MORE SECTORS 
46 WC=2                           * RESET SECTOR
   B6=2 
   CALL 98H                       * DISPLAY SECTOR FLAWS
   OB(500)=OB(238D)               * SAVE LAST FLAW
   OB(501)=OB(239D) 
   IF (OB(238D) AND 4000 NE 0) GOTO 24  * IF NOT END OF MAP 
   GOTO 77                        * END OF MODULE 
50 B6=B7+1
   IF (OB(B7) EQ 0) GOTO 54       * IF END OF FLAW DISPLAY
   IF (IB(B4) GT OB(B7)) GOTO 52  * FLAW MAP GT FLAW DISPLAY
   IF (IB(B4) LT OB(B7)) GOTO 54  * FLAW MAP LT FLAW DISPLAY
   IF (IB(B3) LT OB(B6)) GOTO 54  * FLAW MAP LT FLAW DISPLAY
52 B7=B7+2                        * INCREMENT OB INDEX
   IF (B7 LT 240D) GOTO 50        * IF NOT END OF OB
   GOTO 44
54 B2=239D                        * MOVE OB DOWN
55 B1=B2-2
   OB(B2)=OB(B1)
   B2=B2-1                        * MOVE NEXT ENTRY 
   IF (B2 GT B6) GOTO 55          * IF MORE TO MOVE 
   OB(B7)=IB(B4)                  * INSERT FLAW 
   OB(B6)=IB(B3)
   GOTO 44
70 WC=2                           * SET SECTOR
   IF (P0 GT 1) GOTO 22           * IF SECTOR FLAWS ONLY
   B6=1 
   CALL 98H                       * DISPLAY TRACK FLAWS 
   IF (P0 EQ 0) GOTO 22           * IF ALL FLAWS
   GOTO 77                        * END OF MODULE 
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU64, LSFMD2, (16), LOCK 
*** 5.2.5  FMU64 - SET 885-1X SECTOR FLAW 
**
*          PURPOSE- 
*          FMU64 ENTERS A SECTOR FLAW AT THE END OF THE SECTOR
*          FLAW TABLE, ENTERS A TRACK FLAW AT THE END OF THE TRACK
*          FLAW TABLE (IF NECESSARY), AND REFORMATS THE TRACK.
* 
*          METHOD-
*          FMU64 READS THE SECTOR FLAW TABLES FROM CYLINDER 841,
*          TRACK 1, SECTOR 2 TO 18.  AS THESE TABLES ARE READ A COUNT 
*          IS MADE OF THE NUMBER OF FLAWS ALREADY SET IN THE TRACK
*          IN WHICH THE NEW FLAW IS BEING SET.  WHEN THE END OF THE 
*          SECTOR FLAW TABLE IS FOUND THE NEW FLAW IS INSERTED AT 
*          THE END, AND THE LAST SECTOR OF THE TABLE IS REWRITTEN.
*          IF THE NEW FLAW JUST FILLS THIS LAST SECTOR THEN ONE 
*          ADDITIONAL SECTOR IS WRITTEN WITH ALL ZEROS.  THIS INSURES 
*          THAT THE END OF THE TABLE WILL BE DETECTED FOLLOWING 
*          THE NEW FLAW.  IF THE TOTAL NUMBER OF SECTOR FLAWS IN THE
*          TRACK IN WHICH THE NEW FLAW IS BEING SET IS GREATER THAN 
*          TWO, FMU64 EXITS TO FMU641 TO SET THE TRACK FLAW AND 
*          REFORMAT THE TRACK.  IF THE TOTAL NUMBER OF SECTOR FLAWS 
*          IS ONE OR TWO, FMU64 EXITS TO FMU642 TO REFORMAT THE 
*          TRACK. 
* 
*          ENTRY- 
*          FMU64 REQUIRES PARAMETERS P1, P2, AND P3 TO BE SET TO
*          INDICATE THE SECTOR TO BE FLAWED.  PARAMETER USAGE AND 
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW-- 
*            P1 - CYLINDER (0 TO 1512)
*            P2 - TRACK    (0 TO 47)
*            P3 - SECTOR   (0 TO 41)
*          AN ERROR MESSAGE IS DISPLAYED IF ANY OF THE PARAMETERS 
*          IS OUT OF RANGE. 
/ 
*          EXIT-
*          FMU64 EXITS TO EITHER FMU641 OR FMU642.  THE OUTPUT BUFFER 
*          CONTAINS A LIST OF SECTORS TO BE FLAWED DURING REFORMATTING
*          BY FMU641 OR FMU642.  REGISTER B5 CONTAINS THE K DISPLAY 
*          LINE NUMBER. 
* 
*          SUBMODULES REFERENCED- 
*          FMU64 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU64 USES REGISTERS B0, B1, B4 TO B7, AND WC. 
*          REGISTERS ARE USED AS FOLLOWS--
*            B0 - INDEX FOR CLEARING THE END OF THE BUFFER
*                 ALSO, CYLINDER
*            B1 - TRACK 
*            B4 - SECTOR ERROR INDEX
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU64 USES THE INPUT BUFFER FOR FLAW TABLES READ FROM THE
*          DRIVE.  THE OUTPUT BUFFER IS USED FOR WRITING THE END
*          OF THE FLAW TABLES BACK TO THE DRIVE, AND FOR SAVING A 
*          LIST OF SECTORS TO BE FLAWED DURING REFORMATTING.
* 
* 
/  - SET 885-1X SECTOR FLAW - 
/ 
1  FORMAT SET 885-1X SECTOR FLAW - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER = *OCT,  TRACK = *O,  SECTOR = *O
3  FORMAT ERROR - SECTOR FLAW ALREADY SET 
4  FORMAT ERROR - SECTOR FLAW MAP FULL
6  FORMAT SECTOR FLAW SET 
11 FORMAT ACCESS LEVEL TOO LOW (MINIMUM AL=4) 
12 FORMAT ILLEGAL PARAMETER P1 (MAXIMUM CY=1512)
13 FORMAT ILLEGAL PARAMETER P2 (MAXIMUM TR=47)
14 FORMAT ILLEGAL PARAMETER P3 (MAXIMUM SE=41)
15 FORMAT MODULE FMU64
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU64 PAUSE - SET 885-1X SECTOR FLAW
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 2 (P1,P2,P3) TO LINE 3 
   IF (AL GE 4) GOTO 21           * IF VALID ACCESS LEVEL 
   MSG 11 TO LINE 5               * ACCESS LEVEL TOO LOW
   GOTO 22
21 IF (P1 LE 842D) GOTO 24        * IF VALID CYLINDER 
   MSG 12 TO LINE 5               * ILLEGAL CYLINDER
22 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ILLEGAL PARAMETER 
24 IF (P2 LE 39D) GOTO 26         * IF VALID TRACK
   MSG 13 TO LINE 5               * ILLEGAL TRACK 
   GOTO 22
26 IF (P3 LE 33D) GOTO 27         * IF VALID SECTOR 
   MSG 14 TO LINE 5               * ILLEGAL SECTOR
   GOTO 22
27 MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=4                           * SET DISPLAY LINE
   OB(0)=P1                       * SAVE SECTORS IN OB
   OB(1)=P2 
   OB(2)=P3 
   OB(3)=4000 
   B4=2                           * SECTOR ERROR INDEX
   WC=2                           * SET SECTOR
30 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR 
   B7=0                           * INPUT BUFFER INDEX
40 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 54   * IF END OF FLAW MAP 
41 IF (IB(B7) AND 1777 EQ P1) GOTO 50  * FLAW MAP EQ CYLINDER 
42 B7=B7+2                        * TRY NEXT ENTRY
   IF (B7 LT 240D) GOTO 40        * IF NOT END OF SECTOR
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 30         * IF MORE SECTORS 
   MSG 4 TO LINE 5                * FLAW MAP FULL 
   GOTO 52
50 IF (IB(B6) RS 6 NE P2) GOTO 42      * FLAW MAP NE TRACK
   B4=B4+1                        * INCREMENT COUNT 
   OB(B4)=IB(B6) AND 0077         * SAVE SECTOR NUMBER
   IF (IB(B6) AND 0077 NE P3) GOTO 42  * FLAW MAP NE SECTOR 
   MSG 3 TO LINE 5                * FLAW ALREADY SET
52 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
54 IB(B7)=P1 XOR 4000             * SET SECTOR FLAW 
   IB(B6)=P2 LS 6 
   IB(B6)=IB(B6) XOR P3 
   B7=B7+2
60 COPY OB(0) TO IB(400) FOR 36D  * SAVE SECTOR ERRORS
   COPY IB TO OB FOR 240D 
   B0=B7
61 OB(B0)=0                       * CLEAR END OF BUFFER 
   B0=B0+1
   IF (B0 LT 502) GOTO 61         * IF NOT DONE CLEARING
   B0=841D                        * SET CYLINDER
   B1=1                           * SET TRACK 
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR 
   COPY IB(400) TO OB(0) FOR 36D  * RESET SECTOR ERRORS 
   IF (B7 LT 240D) GOTO 62        * IF SECTOR NOT FULL
   WC=WC+1                        * NEXT SECTOR 
   IF (WC GT 18D) GOTO 62         * IF NO MORE SECTORS
   B7=0                           * RESET BUFFER INDEX
   GOTO 60                        * GO WRITE ZEROS SECTOR 
62 MSG 6 TO LINE 5
   B5=6                           * SET DISPLAY LINE
   IF (B4 GE 4) EXIT TO 641       * IF SKIPPED SECTORS GT 2 
   EXIT TO 642                    * SKIPPED SECTORS LE 2
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU641, LSFMD2, (16), LOCK
*** 5.2.6  FMU641 - SET 885-1X SECTOR FLAW (CONTINUED)
**
*          PURPOSE- 
*          FMU641 ENTERS A TRACK FLAW AT THE END OF THE TRACK FLAW
*          TABLE (IF NECESSARY), AND REFORMATS THE TRACK. 
* 
*          METHOD-
*          FMU641 IS ENTERED FROM FMU64 WHEN SETTING A SECTOR FLAW
*          RESULTS IN MORE THAN TWO SECTOR FLAWS IN A TRACK.
*          FMU641 READS THE TRACK FLAW TABLE FROM CYLINDER 841, 
*          TRACK 1, SECTOR 1.  IF THE TRACK INDICATED BY PARAMETERS 
*          P1 AND P2 IS NOT ALREADY IN THE TABLE, IT IS ADDED AT
*          THE END AND THE TABLE IS REWRITTEN.
*          FMU641 ALSO REFORMATS THE TRACK.  THE LIST OF SECTORS
*          TO BE SKIPPED WAS GENERATED BY FMU64 AND PLACED IN THE 
*          OUTPUT BUFFER.  REFORMATTING IS THEN DONE BY CALLING 
*          SUBMODULE FMU66A.
/ 
*          ENTRY- 
*          FMU641 MAKES USE OF PARAMETERS P1 AND P2 AS DEFINED FOR
*          MODULE FMU64.  FMU641 ASSSUMES THAT THE LIST OF SECTORS
*          TO BE SKIPPED IS INITIALLY IN THE FIRST 36 LOCATIONS OF
*          THE OUTPUT BUFFER.  INITIALLY REGISTER B5 CONTAINS THE 
*          K DISPLAY LINE NUMBER. 
* 
*          EXIT-
*          FMU641 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFEREMCED- 
*          FMU641 CALLS SUBMODULE FMU66A TO REFORMAT THE TRACK. 
*          FMU641 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU641 USES REGISTERS B0, B1, B5, B6, B7, BA, AND WC.
*          REGISTERS ARE USED AS FOLLOWS--
*            B0 - INDEX FOR CLEARING THE END OF THE BUFFER
*                 ALSO, CYLINDER
*            B1 - TRACK 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
*            BA - ERROR FLAG SET BY SUBMODULE FMU66A
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU641 USES THE INPUT BUFFER FOR THE TRACK FLAW TABLE
*          READ FROM THE DRIVE.  THE OUTPUT BUFFER IS USED FOR
*          WRITING THE TRACK FLAW TABLE BACK TO THE DRIVE, AND FOR
*          SAVING A LIST OF SECTORS TO BE FLAWED DURING REFORMATTING. 
* 
* 
/  - SET 885-1X SECTOR FLAW (CONTINUED) - 
/ 
7  FORMAT TRACK FLAW MAP FULL 
10 FORMAT TRACK FLAW ALREADY SET
11 FORMAT TRACK FLAW SET
15 FORMAT MODULE FMU641 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 MSG 15 TO DISPLAY
   WC=1                           * CHECK TRACK FLAW
   RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ TRACK FLAWS
   B7=0                           * SET BUFFER INDEX
24 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 40   * IF END OF FLAW MAP 
   IF (IB(B7) AND 1777 EQ P1) GOTO 34  * FLAW MAP EQ CYLINDER 
26 B7=B7+2                        * TRY NEXT ENTRY
   IF (B7 LT 240D) GOTO 24        * IF NOT END OF SECTOR
   MSG 7 TO LINE 7
   GOTO 60
34 IF (IB(B6) RS 6 NE P2) GOTO 26      * FLAW MAP NE TRACK
   MSG 10 TO LINE 7               * TRACK FLAW ALREADY SET
   GOTO 60
40 IB(B7)=P1 XOR 4000             * SET TRACK FLAW
   IB(B6)=P2 LS 6 
   B7=B7+2
   COPY OB(0) TO IB(400) FOR 36D  * SAVE SECTOR ERRORS
   COPY IB TO OB FOR 240D 
   B0=B7
50 OB(B0)=0                       * CLEAR END OF BUFFER 
   B0=B0+1
   IF (B0 LT 502) GOTO 50         * IF NOT DONE CLEARING
   B0=841D                        * SET CYLINDER
   B1=1                           * SET TRACK 
   RES DRIVE, ABT 74
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR 
   COPY IB(400) TO OB(0) FOR 36D  * RESET SECTOR ERRORS 
   MSG 11 TO LINE 7 
60 B5=10                          * SET DISPLAY LINE
   CALL 66A                       * FORMAT TRACK FLAW 
   IF (BA EQ 1) GOTO 74           * IF ERROR
   MSG 16 TO LINE 11
   PICTURE
   GOTO 77                        * END OF MODULE 
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU642, LSFMD2, (16), LOCK
*** 5.2.7  FMU642 - SET 885-1X SECTOR FLAW (CONTINUED)
**
*          PURPOSE- 
*          FMU642 IS USED TO REFORMAT A TRACK WITH ONE OR TWO FLAWS.
* 
*          METHOD-
*          FMU642 IS ENTERED FROM FMU64 WHEN SETTING A SECTOR FLAW
*          RESULTS IN ONE OR TWO SECTOR FLAWS IN A TRACK.  FMU642 
*          REFORMATS THE TRACK.  A TRACK FLAW IS NOT SET. 
* 
*          ENTRY- 
*          FMU642 ASSUMES THAT THE LIST OF SECTORS TO BE SKIPPED
*          IS INITIALLY IN THE FIRST 4 LOCATIONS OF THE OUTPUT
*          BUFFER.  REGISTER B5 IS ASSUMED TO CONTAIN THE K DISPLAY 
*          LINE NUMBER. 
/ 
*          EXIT-
*          FMU642 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU642 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU642 USES REGISTER B5 FOR THE K DISPLAY LINE NUMBER. 
* 
*          BUFFERS USED-
*          FMU642 USES THE OUTPUT BUFFER FOR THE PARAMETERS NEEDED TO 
*          REFORMAT THE TRACK.  OUTPUT BUFFER ADDRESSES 300 TO 306
*          ARE USED.
* 
* 
/  - SET 885-1X SECTOR FLAW (CONTINUED) - 
/ 
15 FORMAT MODULE FMU642 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 MSG 15 TO DISPLAY
   OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0100        * SET SECTOR FLAWS
   OB(302)=OB(0)
   OB(303)=OB(1)
   OB(304)=0
   OB(305)=OB(2)
   OB(306)=OB(3)
   RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT TRACK
24 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 24     * IF BUSY 
   MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * END OF MODULE 
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU65, LSFMD2, (16), LOCK 
*** 5.2.8  FMU65 - CLEAR 885-1X SECTOR FLAW 
**
*          PURPOSE- 
*          FMU65 CLEARS A SECTOR FLAW FROM THE SECTOR FLAW TABLE, 
*          CLEARS THE CORRESPONDING TRACK FLAW FROM THE TRACK 
*          FLAW TABLE (IF NECESSARY), AND REFORMATS THE TRACK.
* 
*          METHOD-
*          FMU65 READS THE SECTOR FLAW TABLES FROM CYLINDER 841,
*          TRACK 1, SECTOR 2 TO 18.  AS THESE TABLES ARE READ A 
*          COUNT IS MADE OF THE NUMBER OF FLAWS REMAINING SET IN
*          THE TRACK IN WHICH THE FLAW IS BEING CLEARED.  WHEN THE
*          SECTOR FLAW IS FOUND, IT IS DELETED FROM THE TABLE,
*          ALL OF THE FOLLOWING TABLE ENTRIES ARE MOVED UP ONE
*          POSITION, AND THE TABLES ARE REWRITTEN.  FMU65 EXITS TO
*          MODULE FMU651 TO REWRITE THE LAST SECTOR OF THE FLAW 
*          TABLE, DELETE THE TRACK FLAW FROM THE TRACK FLAW TABLE 
*          (IF NECESSARY), AND REFORMAT THE TRACK.
* 
*          ENTRY- 
*          FMU65 REQUIRES PARAMETERS P1, P2, AND P3 TO BE SET TO
*          INDICATE THE SECTOR FLAW TO BE CLEARED.  PARAMETER USAGE AND 
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW-- 
*            P1 - CYLINDER (0 TO 1512)
*            P2 - TRACK    (0 TO 47)
*            P3 - SECTOR   (0 TO 41)
*          AN ERROR MESSAGE IS DISPLAYED IF ANY OF THE PARAMETERS 
*          IS OUT OF RANGE. 
/ 
*          EXIT-
*          FMU65 EXITS TO FMU651.  THE INPUT BUFFER CONTAINS A LIST 
*          OF SECTORS TO BE FLAWED DURING REFORMATTING.  THE OUTPUT 
*          BUFFER CONTAINS THE LAST SECTOR READ FROM THE SECTOR FLAW
*          TABLE.  THE CONTENTS OF REGISTERS B4, B5, BA, AND WC ARE 
*          USED BY FMU651.
* 
*          SUBMODULES REFERENCED- 
*          FMU65 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU64 USES REGISTERS B0 TO B7, BA, AND WC.  REGISTERS ARE
*          USED AS FOLLOWS--
*            B0 - CYLINDER
*            B1 - TRACK 
*            B2 - SECTOR
*            B3 - SHIFT UP FLAG 
*            B4 - SECTOR ERROR INDEX
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
*            BA - END FLAG
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU65 USES THE INPUT BUFFER FOR READING FLAW TABLES FROM 
*          THE DRIVE.  THE OUTPUT BUFFER IS USED FOR REWRITTING THE 
*          SECTOR FLAW TABLES, AND FOR SAVING A LIST OF SECTORS TO
*          BE FLAWED DURING REFORMATTING.  THIS LIST IS SAVED IN THE
*          INPUT BUFFER WHEN THE OUTPUT BUFFER IS BEING USED FOR
*          REWRITTING SECTOR FLAW TABLES.  THIS LIST IS IN THE INPUT
*          BUFFER WHEN FMU65 EXITS TO FMU651. 
* 
* 
/  - CLEAR 885-1X SECTOR FLAW - 
/ 
1  FORMAT CLEAR 885-1X SECTOR FLAW - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER = *OCT,  TRACK = *O,  SECTOR = *O
3  FORMAT ERROR - SECTOR FLAW ALREADY CLEAR 
7  FORMAT ACCESS LEVEL TOO LOW (MINIMUM AL=4) 
10 FORMAT ILLEGAL PARAMETER P1 (MAXIMUM CY=1512)
11 FORMAT ILLEGAL PARAMETER P2 (MAXIMUM TR=47)
12 FORMAT ILLEGAL PARAMETER P3 (MAXIMUM SE=41)
15 FORMAT MODULE FMU65
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU65 PAUSE - CLEAR 885-1X SECTOR FLAW
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 2 (P1,P2,P3) TO LINE 3 
   IF (AL GE 4) GOTO 21           * IF VALID ACCESS LEVEL 
   MSG 7 TO LINE 5                * ACCESS LEVEL TOO LOW
   GOTO 22
21 IF (P1 LE 842D) GOTO 24        * IF VALID CYLINDER 
   MSG 10 TO LINE 5               * ILLEGAL CYLINDER
22 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ILLEGAL PARAMETER 
24 IF (P2 LE 39D) GOTO 26         * IF VALID TRACK
   MSG 11 TO LINE 5               * ILLEGAL TRACK 
   GOTO 22
26 IF (P3 LE 33D) GOTO 27         * IF VALID SECTOR 
   MSG 12 TO LINE 5               * ILLEGAL SECTOR
   GOTO 22
27 MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=4                           * SET DISPLAY LINE
   OB(420)=P1                     * SAVE SECTOR FLAWS IN OB 
   OB(421)=P2 
   OB(422)=4000 
   OB(423)=4000 
   B4=421                         * SECTOR FLAW INDEX 
   BA=0                           * END FLAG
   B3=0                           * SHIFT UP FLAG 
   WC=2                           * SET SECTOR
30 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR 
   B7=0                           * SET BUFFER INDEX
40 B6=B7+1
   IF (IB(B7) AND 4000 NE 0) GOTO 41   * IF NOT END OF FLAW MAP 
   BA=1                           * SET END FLAG
   GOTO 43
41 IF (IB(B7) AND 1777 EQ P1) GOTO 50  * FLAW MAP EQ CYLINDER 
42 B7=B7+2                        * NEXT ENTRY
   IF (B7 LT 240D) GOTO 40        * IF NOT END OF SECTOR
43 IF (B3 NE 0) GOTO 60           * IF SHIFT FLAG SET 
   IF (BA NE 0) GOTO 46           * IF END FLAG SET 
44 WC=WC+1                        * NEXT SECTOR 
   IF (BA NE 0) EXIT TO 651       * IF END FLAG SET 
   IF (WC LE 18D) GOTO 30         * IF MORE SECTORS 
   IF (B3 NE 0) EXIT TO 651       * IF SHIFT FLAG SET 
46 MSG 3 TO LINE 5                * ALREADY CLEAR 
   MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
50 IF (IB(B6) RS 6 NE P2) GOTO 42      * FLAW MAP NE TRACK
   IF (IB(B6) AND 0077 EQ P3) GOTO 54  * FLAW MAP EQ SECTOR 
   B4=B4+1                        * INCREMENT FLAW INDEX
   OB(B4)=IB(B6) AND 0077         * SAVE SECTOR FLAW
   GOTO 42
54 B3=B7+2
   GOTO 42
60 COPY OB(420) TO IB(420) FOR 36D     * SAVE SECTOR FLAWS
   IF (B3 EQ 1) GOTO 61           * IF SHIFT UP FLAG SET
   COPY IB TO OB FOR 240D         * NO SHIFT
   GOTO 64                        * SHIFT LAST PART 
61 OB(238D)=IB(0)                 * FINISH PREVIOUS SECTOR
   OB(239D)=IB(1) 
   B0=841D                        * SET CYLINDER
   B1=1                           * SET TRACK 
   B2=WC-1                        * SET SECTOR
   B7=240D                        * ZERO FILL 
63 OB(B7)=0 
   B7=B7+1
   IF (B7 NE 502) GOTO 63         * IF NOT DONE CLEARING
   RES DRIVE, ABT 74
   WRPRO CYL B0 TRK B1 SEC B2, ABT 74  * WRITE PROTECTED SECTOR 
   B3=2                           * SET UP MOVE 
64 B6=240D-B3 
   B7=B3-2
   COPY IB(B3) TO OB(B7) FOR B6   * SHIFT UP
   B3=1                           * SET SHIFT FLAG
   COPY IB(420) TO OB(420) FOR 36D     * RESET SECTOR FLAWS 
   GOTO 44
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU651, LSFMD2, (16), LOCK
*** 5.2.9  FMU651 - CLEAR 885-1X SECTOR FLAW (CONTINUED)
**
*          PURPOSE- 
*          FMU651 REWRITES THE LAST SECTOR OF THE SECTOR FLAW TABLE,
*          CLEARS A TRACK FLAW FROM THE TRACK FLAW TABLE (IF NECESSARY),
*          AND REFORMATS THE TRACK. 
* 
*          METHOD-
*          FMU651 IS ENTERED FROM FMU65 AFTER THE SECTOR FLAW HAS BEEN
*          DELETED AND ALL BUT THE LAST SECTOR OF THE TABLE HAS BEEN
*          REWRITTEN.  FMU651 REWRITES THAT LAST SECTOR AND THEN
*          REFORMATS THE TRACK.  IF THERE ARE STILL MORE THAN TWO 
*          SKIPPED SECTORS IN THE TRACK, THE REFORMATTING INCLUDES
*          SETTING A TRACK FLAW.  FINALLY, IF THERE ARE ONLY TWO
*          SKIPPED SECTORS IN THE TRACK, IT IS NECESSARY TO CLEAR THE 
*          TRACK FLAW FROM THE TRACK FLAW TABLE.  THE TABLE IS READ,
*          THE ENTRY IS DELETED, ALL FOLLOWING ENTRIES ARE MOVED UP,
*          AND THE TABLE IS REWRITTEN.
/ 
*          ENTRY- 
*          FMU651 MAKES USE OF PARAMETERS P1 AND P2 AS DEFINED FOR
*          MODULE FMU65.  FMU651 ASSUMES THAT THE LIST OF SECTORS 
*          TO BE SKIPPED IS INITIALLY IN THE FIRST 36 LOCATIONS OF
*          THE OUTPUT BUFFER.  INITIALLY REGISTER B5 CONTAINS THE 
*          K DISPLAY LINE NUMBER, B4 CONTAINS THE ERROR INDEX,
*          AND WC CONTAINS THE NUMBER OF THE SECTOR FOLLOWING THE 
*          LAST SECTOR OF THE SECTOR FLAW TABLE.
* 
*          EXIT-
*          FMU651 TERMINATES WITH AN END STATEMENT. REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU651 CALLS SUBMODULE FMU66A TO REFORMAT THE TRACK IF 
*          A TRACK FLAW CONDITION EXISTS. 
*          FMU651 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS 
*          IF AN I/O FUNCTION IS ABORTED. 
* 
*          REGISTERS USED-
*          FMU651 USES REGISTERS B0, B1, B3 TO B7, BA, AND WC.
*          REGISTERS ARE USED AS FOLLOWS--
*            B0 - CYLINDER
*            B1 - TRACK 
*            B3 - OUTPUT BUFFER INDEX 
*            B4 - OUTPUT BUFFER INDEX 
*                 ALSO, SECTOR ERROR INDEX
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER UNDEX
*            B7 - INPUT BUFFER UNDEX
*                 ALSO, INDEX FOR CLEARING THE OUTPUT BUFFER
*            BA - ERROR FLAG SET BY SUBMODULE FMU66A
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU651 USES THE INPUT BUFFER FOR READING THE TRACK FLAW
*          TABLE.  INITIALLY THE INPUT BUFFER CONTAINS A LIST OF
*          SECTORS TO BE SKIPPED.  THE OUTPUT BUFFER IS USED FOR
*          REWRITING TABLES AND FOR THE PARAMETERS NEEDED TO REFORMAT 
*          THE TRACK. 
* 
* 
/  - CLEAR 885-1X SECTOR FLAW (CONTINUED) - 
/ 
5  FORMAT SECTOR FLAW CLEARED 
6  FORMAT TRACK FLAW CLEARED
7  FORMAT TRACK FLAW REMAINS SET
13 FORMAT TRACK FLAW ALREADY CLEAR
15 FORMAT MODULE FMU651 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 MSG 15 TO DISPLAY
   WC=WC-1                        * SET SECTOR
   B1=1                           * SET TRACK 
   B0=841D                        * SET CYLINDER
   B7=238D                        * ZERO FILL 
22 OB(B7)=0 
   B7=B7+1
   IF (B7 NE 502) GOTO 22         * IF NOT DONE CLEARING
   RES DRIVE, ABT 74
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR 
   COPY IB(420) TO OB(0) FOR 36D  * RESET SECTOR FLAWS
   B4=B4-420                      * ADJUST ERROR INDEX
   MSG 5 TO LINE 5
   MSG 7 TO LINE 7
   B5=7                           * SET DISPLAY LINE
   IF (B4 LE 3) GOTO 23           * IF SKIPPED SECTORS LE 2 
   CALL 66A                       * FORMAT TRACK FLAW 
   IF (BA EQ 1) GOTO 74           * IF ERROR
   GOTO 77                        * END OF MODULE 
23 OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0100        * SECTOR FLAWS
   OB(302)=OB(0)
   OB(303)=OB(1)
   OB(304)=0
   OB(305)=OB(2)
   OB(306)=OB(3)
   RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT SECTOR FLAWS 
   MSG 6 TO LINE 7
   IF (B4 EQ 3) GOTO 30           * IF SKIPPED SECTORS EQ 2 
   MSG 13 TO LINE 7 
26 MSG 16 TO LINE 11
   PICTURE
   GOTO 77                        * END OF MODULE 
30 WC=1                           * SET SECTOR
   RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ TRACK FLAWS
   B4=0                           * OB INDEX
   B3=B4+1
   B7=0                           * IB INDEX
32 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 40   * IF END OF FLAW MAP 
33 IF (IB(B7) AND 1777 EQ P1) GOTO 50  * FLAW MAP EQ CYLNDER
34 OB(B4)=IB(B7)
   OB(B3)=IB(B6)
   B4=B4+2                        * INCREMENT OB INDEX
   B3=B4+1
36 B7=B7+2                        * INCREMENT IB INDEX
   IF (B7 LT 240D) GOTO 32        * IF NOT END OF MAP 
40 OB(B4)=0                       * CLEAR REMAINDER 
   B4=B4+1
   IF (B4 LT 502) GOTO 40         * IF NOT DONE CLEARING
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR 
   GOTO 26
50 IF (IB(B6) RS 6 NE P2) GOTO 34      * FLAW MAP NE TRACK
   GOTO 36                        * DELETE TRACK FLAW 
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU66, LSFMD2, (16), LOCK 
*** 5.2.10 FMU66 - FORMAT 885-1X PACK 
**
*          PURPOSE- 
*          FMU66 FORMATS THE ENTIRE 885-1X PACK EXCEPT THE FLAW MAP 
*          TRACKS.  AFTER FORMATTING, SKIPPED SECTORS AND TRACK FLAWS 
*          ARE SET. 
* 
*          METHOD-
*          FMU66 SETS THE STARTING CYLINDER NUMBER AND THE ENDING 
*          CYLINDER NUMBER IN THE OUTPUT BUFFER.  THE STARTING CYLINDER 
*          IS 0000 AND THE ENDING CYLINDER IS 1512 OCTAL.  FMU66 EXITS
*          TO MODULE FMU661 TO PERFORM THE FORMATTING AND SETTING THE 
*          SKIPPED SECTORS AND TRACK FLAWS. 
* 
*          ENTRY- 
*          FMU66 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE 
*          EXECUTION. 
/ 
*          EXIT-
*          FMU66 EXITS TO MODULE FMU661.  OUTPUT BUFFER LOCATIONS 
*          502 AND 503 CONTAIN THE STARTING AND ENDING CYLINDERS
*          FOR USE BY FMU661. 
* 
*          SUBMODULES REFERENCED- 
*          FMU66 DOES NOT CALL ANY SUBMODULES.
* 
*          REGISTERS USED-
*          FMU66 DOES NOT USE ANY REGISTERS.
* 
*          BUFFERS USED-
*          FMU66 USES TWO LOCATIONS IN THE OUTPUT BUFFER FOR THE
*          STARTING AND ENDING CYLINDERS TO BE FORMATTED.  THEY ARE 
*          SET TO THE VALUES SHOWN BELOW--
*            OB(502) = 0000 - STARTING CYLINDER 
*            OB(503) = 1512 - ENDING CYLINDER 
* 
* 
/  - FORMAT 885-1X PACK - 
/ 
1  FORMAT FORMAT 885-1X PACK - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER 0000 TO 1512 
15 FORMAT MODULE FMU66
17 FORMAT FMU66 PAUSE - FORMAT 885-1X PACK
   EQUATE MAXCYL TO 842D
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 2 TO LINE 3
   MSG 17 TO DISPLAY,PRINT
   PAUSE
   OB(502)=0                      * START CYLINDER
   OB(503)=MAXCYL                 * END CYLINDER
   EXIT TO 661
77 END 20 
COMPILE 
   MODULE FMU661, LSFMD2, (16), LOCK
*** 5.2.11 FMU661 - FORMAT 885-1X PACK (CONTINUED)
**
*          PURPOSE- 
*          FMU661 FORMATS THE 885-1X PACK FROM THE INDICATED STARTING 
*          CYLINDER TO THE INDICATED ENDING CYLINDER.  SKIPPED
*          SECTORS AND TRACK FLAWS ARE THEN SET.
* 
*          METHOD-
*          FMU661 IS ENTERED FROM EITHER FMU66 OR FMU67.  THESE 
*          MODULES BOTH SET UP THE STARTING AND ENDING CYLINDERS
*          IN THE OUTPUT BUFFER.  FMU661 STARTS AT THE ENDING 
*          CYLINDER AND REFORMATS IT WITH NO SKIPPED SECTORS OR 
*          TRACK FLAWS.  THE CYLINDER NUMBER IS THEN DECREMENTED
*          AND THE NEXT CYLINDER IS REFORMATTED.  THIS PROCESS
*          CONTINUES UNTIL ALL CYLINDERS FROM THE ENDING CYLINDER 
*          TO THE STARTING CYLINDER HAVE BEEN FORMATTED.  AT THIS 
*          POINT ALL CYLINDERS IN THE SPECIFIED RANGE WILL HAVE 
*          BEEN FORMATTED WITH NO SKIPPED SECTORS AND NO TRACK
*          FLAWS.  FMU661 READS THE SECTOR FLAW TABLES AND FINDS
*          THE HIGHEST TRACK NUMBER IN THE SPECIFIED RANGE OF 
*          CYLINDERS.  THE SECTOR FLAWS IN THIS TRACK ARE SAVED 
*          IN THE OUTPUT BUFFER.  WHEN THE END OF THE SECTOR FLAW 
*          TABLE IS FOUND, THE LIST OF SECTOR FLAWS IS USED TO
*          REFORMAT THE TRACK.  IF THERE ARE ONLY ONE OR TWO SECTOR 
*          FLAWS, FMU661 REFORMATS THE TRACK WITH THE SECTORS SKIPPED.
*          IF THERE ARE MORE THAN TWO SECTOR FLAWS, FMU661 CALLS
*          SUBMODULE FMU66A TO REFORMAT THE TRACK WITH THE SECTORS
*          SKIPPED AND TRACK FLAW SET.  FMU661 CONTINUES THIS PROCEDURE 
*          UNTIL ALL OF THE TRACKS LISTED IN THE SECTOR FLAW TABLE
*          IN THE SPECIFIED RANGE OF CYLINDERS HAVE BEEN REFORMATTED. 
*          IF THE RANGE AND SECTOR FLAW TABLE INCLUDE THE UTILITY MAP 
*          (CYL 1511B, TRK 1) AND ITS FLAWS, THAT TRACK IS NOT REFOR- 
*          MATTED.  USE MODULE FMU70 TO REFORMAT THE UTILITY MAP. 
/ 
*          ENTRY- 
*          FMU661 ASSUMES THAT THE STARTING AND ENDING CYLINDER NUMBERS 
*          ARE INITIALLY IN OUTPUT BUFFER LOCATIONS 502 AND 503.
* 
*          EXIT-
*          FMU661 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU661 CALLS SUBMODULE FMU66A TO REFORMAT TRACKS WITH MORE 
*          THAN TWO SKIPPED SECTORS.
*          FMU661 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS 
*          IF AN I/O FUNCTION IS ABORTED. 
* 
*          REGISTERS USED-
*          FMU661 USES REGISTERS B4 TO B7, BA, AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--
*            B4 - SECTOR FLAW INDEX 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
*            BA - ERROR FLAG SET BY SUBMODULE FMU66A
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU661 USES THE INPUT BUFFER FOR FLAW MAPS READ FROM THE 
*          DISK.  OUTPUT BUFFER LOCATIONS 300 TO 306 ARE USED FOR THE 
*          PARAMETERS FOR THE REFORMAT FUNCTION.  OUTPUT BUFFER 
*          LOCATIONS 502 AND 503 CONTAIN THE STARTING AND ENDING
*          CYLINDER NUMBERS.
* 
* 
/  - FORMAT 885-1X PACK (CONTINUED) - 
/ 
1  FORMAT CYLINDER = *OCT 
2  FORMAT PACK FORMATTING COMPLETE
10 FORMAT CY1511 TR 0 OR 1 THREE SECTOR FLAWS NOT ALLOWED 
14 FORMAT FMU661 SET FLAWS CY *OCT
15 FORMAT FMU661 FORMAT CY *OCT 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 MSG 15 (OB(503)) TO DISPLAY
   B5=4                           * SET DISPLAY LINE
   OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) 
   OB(302)=OB(503)
   OB(303)=0
   OB(304)=OB(503)
   OB(305)=0
   OB(306)=0
24 RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT CYLINDER 
   MSG 1 (OB(302)) TO LINE 5
   MSG 15 (OB(302)) TO DISPLAY
   IF (OB(302) EQ OB(502)) GOTO 30     * CYLINDER, START CYL
   OB(302)=OB(302)-1              * NEXT CYLINDER 
   OB(304)=OB(302)
26 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 26     * IF BUSY 
   IF (SB NE 0) GOTO 74           * IF AN ERROR 
   GOTO 24                        * CONTINUE FORMATTING 
30 STATUS GENERAL,ABT 74          * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY 
   IF (SB NE 0) GOTO 74           * IF AN ERROR 
   OB(500)=OB(503)                * SET LAST FLAW 
   OB(501)=77 
32 OB(0)=0                        * CLEAR CYLINDER
   OB(1)=0                        * CLEAR TRACK 
   B4=0                           * SET FLAW INDEX
   WC=2                           * SET SECTOR
34 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR 
   B7=0                           * RESET IB INDEX
40 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 50   * IF END OF FLAW MAP 
   IF (IB(B7) AND 1777 GT OB(500)) GOTO 44  * FLAW MAP GT LAST FLAW 
   IF (IB(B7) AND 1777 LT OB(500)) GOTO 42  * FLAW MAP LT LAST FLAW 
   IF (IB(B6) RS 6 GE OB(501)) GOTO 44      * FLAW MAP GE LAST FLAW 
42 IF (IB(B7) AND 1777 LT OB(502)) GOTO 44  * FLAW MAP LT START CYL 
   IF (B4 EQ 0) GOTO 43                   * IF NO FLAWS 
   IF (IB(B7) AND 1777 LT OB(0)) GOTO 44  * FLAW MAP LT NEXT FLAW 
   IF (IB(B7) AND 1777 GT OB(0)) GOTO 43  * FLAW MAP GT NEXT FLAW 
   IF (IB(B6) RS 6 EQ OB(1)) GOTO 64   * FLAW MAP EQ NEXT FLAW
   IF (IB(B6) RS 6 LT OB(1)) GOTO 44   * FLAW MAP LT NEXT FLAW
43 OB(0)=IB(B7) AND 1777          * LOAD PARAMETERS 
   OB(1)=IB(B6) RS 6
   OB(2)=IB(B6) AND 0077
   OB(3)=4000 
   B4=2                           * SET FLAW INDEX
44 B7=B7+2                        * INC IB INDEX
   IF (B7 LT 240D) GOTO 40        * IF NOT END OF SECTOR
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 34         * IF MORE SECTORS 
50 OB(500)=OB(0)                  * SAVE LAST FLAW
   OB(501)=OB(1)
   IF (B4 EQ 0) GOTO 70           * IF NO FLAW
   IF(OB(0).NE.1511B)GOTO 52      * IF NOT CYL 1511B, 
   IF(OB(1).GT.1) GOTO 52         * IF NOT TR 0 OR 1 CONTINUE 
   IF(B4.GT.3) MSG 10 TO LINE 5   * IF TRACK FLAW AND CY 1511 TR 0 OR 1 
   IF(B4.GT.3) GOTO 71            * IF TRACK FLAW AND CY 1511 TR 0 OR 1 EXIT
   GOTO 54                        * IF TR 0 OR 1 SKIP FORMAT
52 IF(B4.GT.3) GOTO 60            * IF TRACK FLAW 
   OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0100        * SECTOR FLAWS
   OB(302)=OB(0)
   OB(303)=OB(1)
   OB(304)=0
   OB(305)=OB(2)
   OB(306)=OB(3)
   RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT TRACK
   MSG 1 (OB(302)) TO LINE 5
   MSG 14 (OB(302)) TO DISPLAY
54 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 54     * IF BUSY 
   IF (SB NE 0) GOTO 74           * IF AN ERROR 
   GOTO 32
60 CALL 66A                       * PROCESS TRACK FLAW
   IF (BA EQ 1) GOTO 74           * IF ERROR
   GOTO 32
64 B4=B4+1                        * INCREMENT COUNTER 
   OB(B4)=IB(B6) AND 0077         * SAVE ANOTHER SECTOR 
   GOTO 44
70 MSG 2 TO LINE 5
71 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * END OF MODULE 
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU66A, LSFMD2, (16), LOCK
*** 5.2.12 FMU66A - PROCESS 885-1X TRACK FLAW (SUBROUTINE)
**
*          PURPOSE- 
*          FMU66A REFORMATS A TRACK ONE SECTOR AT A TIME.  EACH SECTOR
*          IS REFORMATTED WITH BITS SET TO INDICATE EITHER A TRACK FLAW 
*          OR SKIPPED SECTOR. 
* 
*          METHOD-
*          FMU66A IS CALLED BY MODULES FMU641, FMU651, AND FMU661.
*          FMU66A REFORMATS ONE SECTOR AT A TIME BEGINNING WITH SECTOR
*          ZERO.  THE LIST OF SECTORS TO BE SKIPPED IS CHECKED AND IF 
*          THE CURRENT SECTOR IS FOUND IN THE LIST IT IS REFORMATTED
*          AS A SKIPPED SECTOR.  OTHERWISE IT IS REFORMATTED WITH TRACK 
*          FLAW SET.  AS FORMATTING PROGRESSES A COUNT IS KEPT OF BOTH
*          THE PHYSICAL SECTOR AND THE LOGICAL SECTOR.  THE PHYSICAL
*          SECTOR COUNT IS ADVANCED AS EACH SECTOR IS REFORMATTED.
*          THE LOGICAL SECTOR COUNT IS ONLY ADVANCED IF THE SECTOR
*          BEING REFORMATTED IS NOT SKIPPED.  AFTER ALL SECTORS IN THE
*          TRACK HAVE BEEN REFORMATTED AN ERROR FLAG IS CLEARED AND 
*          FMU66A RETURNS TO THE CALLING MODULE.  IF AN I/O FUNCTION
*          IS ABORTED, FMU66A SETS AN ERROR FLAG AND RETURNS TO THE 
*          CALLING MODULE.  THE CALLING MODULE MUST CHECK THE ERROR 
*          FLAG AND DISPLAY DETAILED STATUS IF AN ERROR OCCURS. 
/ 
*          ENTRY- 
*          FMU66A ASSUMES THAT REGISTER B4 INITIALLY CONTAINS THE 
*          INDEX FOR THE END OF THE SKIPPED SECTOR LIST.  THE LIST
*          OF SKIPPED SECTORS IS ASSUMED TO BE IN THE OUTPUT BUFFER.
* 
*          EXIT-
*          FMU66A RETURNS TO THE CALLING MODULE.  REGISTER BA IS SET
*          EQUAL TO ZERO IF REFORMATTING HAS BEEN PERFORMED WITHOUT 
*          ERROR.  REGISTER BA IS SET EQUAL TO ONE IF AN I/O ERROR
*          OCCURS.
* 
*          SUBMODULES REFERENCED- 
*          FMU66A DOES NOT CALL ANY SUBMODULES. 
* 
*          REGISTERS USED-
*          FMU66A USES REGISTERS B0, B1, B4, B7, AND BA.  REGISTERS 
*          ARE USED AS FOLLOWS--
*            B0 - PHYSICAL SECTOR 
*            B1 - LOGICAL SECTOR
*            B4 - INDEX FOR THE END OF THE SKIPPED SECTOR LIST
*            B7 - INDEX FOR THE SKIPPED SECTOR LIST 
*            BA - ERROR FLAG
* 
*          BUFFERS USED-
*          FMU66A USES THE OUTPUT BUFFER FOR HOLDING A LIST OF SECTORS
*          TO BE SKIPPED AND FOR THE PARAMETERS NEEDED BY THE REFORMAT
*          COMMAND.  BUFFER LOCATIONS ARE USED AS FOLLOWS-- 
*            OB(0) - CYLINDER 
*            OB(1) - TRACK
*            OB(2) TO OB(43) - SECTORS TO BE SKIPPED
*            OB(300) TO OB(306) - PARAMETERS FOR REFORMATTING 
* 
* 
/  - PROCESS 885-1X TRACK FLAW (SUBROUTINE) - 
/ 
20 B0=0                           * PHYSICAL SECTOR 
   B1=0                           * LOGICAL SECTOR
22 B7=2                           * SET OB INDEX
24 IF (OB(B7) EQ B0) GOTO 40      * SKIP SEC, PHYS SEC
   B7=B7+1                        * INC LOGICAL SECTOR
   IF (B7 LE B4) GOTO 24          * OB INDEX, OB END
   OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0600        * TRACK FLAW
   OB(302)=OB(0)
   OB(303)=OB(1)
   OB(304)=B0                     * PHYSICAL SECTOR 
   OB(305)=0
   OB(306)=B1                     * LOGICAL SECTOR
   RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT SECTOR 
30 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY 
   IF (SB NE 0) GOTO 74           *IF AN ERROR
   B1=B1+1                        * INC LOGICAL SECTOR
34 B0=B0+1                        * INC PHYSICAL SEC
   IF (B0 LE 33D) GOTO 22         * IF MORE SECTORS 
   BA=0                           * CLEAR ERROR FLAG
   EXIT                           * RETURN
40 OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0200        * SECTOR FLAW 
   OB(302)=OB(0)
   OB(303)=OB(1)
   OB(304)=B0                     * PHYSICAL SECTOR 
   OB(305)=0
   OB(306)=0
   RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT SECTOR 
44 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 44     * IF BUSY 
   IF (SB NE 0) GOTO 74           * IF AN ERROR 
   GOTO 34
74 BA=1                           * SET ERROR FLAG
   EXIT                           * RETURN
   END 20 
COMPILE 
   MODULE FMU67, LSFMD2, (16), LOCK 
*** 5.2.36 FMU67 - FORMAT PARTIAL 885-1X PACK CYLINDRICAL 
**
*          PURPOSE- 
*          FMU67 FORMATS ALL TRACKS OF THE SPECIFIED CYLINDERS OF THE 
*          885-1X PACK.  AFTER FORMATTING, SKIPPED SECTORS AND TRACK
*          FLAWS ARE SET. 
* 
*          METHOD-
*          FMU67 TAKES THE STARTING CYLINDER NUMBER FROM PARAMETER P6 
*          AND THE ENDING CYLINDER FROM PARAMETER P7 AND PLACES THEM IN 
*          THE OUTPUT BUFFER.  FMU67 EXITS TO FMU661 TO PERFORM THE 
*          FORMATTING AND SETTING THE SKIPPED SECTORS AND TRACK FLAWS.
* 
*          ENTRY- 
*          FMU67 REQUIRES PARAMETERS P6 AND P7 TO INDICATE STARTING AND 
*          ENDING CYLINDER FOR FORMATTING.  PARAMETER USAGE AND 
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW-- 
*            P6 - STARTING CYLINDER (0 TO 1512) 
*            P7 - ENDING CYLINDER (0 TO 1512) 
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER OF THE PARAMETERS IS 
*          OUT OF RANGE OR IF P6 IS GREATER THAN P7.
/ 
*          EXIT-
*          FMU67 EXITS TO MODULE FMU661.  OUTPUT BUFFER LOCATIONS 
*          502 AND 503 CONTAIN THE STARTING AND ENDING CYLINDER FOR USE 
*          BY FMU661. 
* 
*          SUBMODULES REFERENCED- 
*          FMU67 DOES NOT CALL ANY SUBMODULES.
* 
*          REGISTERS USED-
*          FMU67 DOES NOT USE ANY REGISTERS.
* 
*          BUFFERS USED-
*          FMU67 USES TWO LOCATIONS IN THE OUTPUT BUFFER FOR THE
*          STARTING AND ENDING CYLINDERS TO BE FORMATTED.  THEY ARE SET 
*          TO THE VALUES SHOWN BELOW--
*            OB(502) = P6 - STARTING CYLINDER 
*            OB(503) = P7 - ENDING CYLINDER 
* 
* 
/  - FORMAT 885-1X PARTIAL PACK CYLINDRICAL - 
/ 
1  FORMAT FORMAT PARTIAL 885-1X PACK CYL - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER *OCT TO *OCT 
3  FORMAT ILLEGAL PARAMETER P6 (MAXIMUM CY = 1512)
4  FORMAT ILLEGAL PARAMETER P7 (MAXIMUM CY = 1512)
5  FORMAT ILLEGAL PARAMETER P7 (P7 IS LESS THAN P6) 
15 FORMAT MODULE FMU67
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU67 PAUSE - FORMAT PARTIAL 885-1X PACK
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 2 (P6,P7) TO LINE 3
   IF (P6 LE 842D) GOTO 24        * IF START CYLINDER 
   MSG 3 TO LINE 5                * ILLEGAL START CYL 
22 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
24 IF (P7 LE 842D) GOTO 26        * IF END CYLINDER 
   MSG 4 TO LINE 5                * ILLEGAL END CYL 
   GOTO 22
26 IF (P7 GE P6) GOTO 30          * END CYL, START CYL
   MSG 5 TO LINE 5                * ILLEGAL END CYL 
   GOTO 22
30 MSG 17 TO DISPLAY,PRINT
   PAUSE
   OB(502)=P6                     * START CYLINDER
   OB(503)=P7                     * END CYLINDER
   EXIT TO 661
77 END 20 
COMPILE 
   MODULE FMU68, LSFMD2, (16), LOCK 
*** 5.2.36A FMU68 - FORMAT PARTIAL 885-1X PACK TRACKWISE
**
*          PURPOSE- 
*          FMU68 FORMATS THE SPECIFIED TRACKS ON ALL CYLINDERS OF THE 
*          885-1X PACK.  AFTER FORMATTING, SKIPPED SECTORS AND TRACK
*          FLAWS ARE SET. 
* 
*          METHOD-
*          FMU68 TAKES THE STARTING TRACK NUMBER FROM PARAMETER P6 AND
*          THE ENDING TRACK FROM PARAMETER P7 AND PLACES THEM IN THE
*          OUTPUT BUFFER.  FMU68 EXITS TO FMU681 TO PERFORM THE FORMAT- 
*          TING AND SETTING OF THE SKIPPED SECTORS AND TRACK FLAWS. 
* 
*          ENTRY- 
*          FMU68 REQUIRES PARAMETERS P6 AND P7 TO INDICATE STARTING AND 
*          ENDING TRACK FOR FORMATTING.  PARAMETER USAGE AND
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW-- 
*            P6 - STARTING TRACK (0 THRU 47B) 
*            P7 - ENDING TRACK (0 THRU 47B) 
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER OF THE PARAMETERS IS 
*          OUT OF RANGE OR IF P6 IS GREATER THAN P7.
/ 
*          EXIT-
*          FMU68 EXITS TO MODULE FMU681.  OUTPUT BUFFER LOCATIONS 
*          502 AND 503 CONTAIN THE STARTING AND ENDING TRACK FOR USE
*          BY FMU681. 
* 
*          SUBMODULES REFERENCED- 
*          FMU68 DOES NOT CALL ANY SUBMODULES.
* 
*          REGISTERS USED-
*          FMU68 DOES NOT USE ANY REGISTERS.
* 
*          BUFFERS USED-
*          FMU68 USES TWO LOCATIONS IN THE OUTPUT BUFFER FOR THE
*          STARTING AND ENDING TRACKS TO BE FORMATTED.  THEY ARE SET
*          TO THE VALUES SHOWN BELOW--
*            OB(502) = P6 - STARTING TRACK
*            OB(503) = P7 - ENDING TRACK
* 
* 
/  - FORMAT 885-1X PARTIAL PACK TRACKWISE - 
/ 
1  FORMAT FORMAT PARTIAL 885-1X PACK TRK-CH=*O, EQ=*O, UN=*O
2  FORMAT TRACK *OB THRU *OB
3  FORMAT ILLEGAL PARAMETER P6 (MAXIMUM TR = 47B) 
4  FORMAT ILLEGAL PARAMETER P7 (MAXIMUM TR = 47B) 
5  FORMAT ILLEGAL PARAMETER P7 (P7 IS LESS THAN P6) 
15 FORMAT MODULE FMU68
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU68 PAUSE - FORMAT PARTIAL 885-1X PACK TRK
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 2 (P6,P7) TO LINE 3
   IF (P6 LE 47B) GOTO 24         * IF START TRACK
   MSG 3 TO LINE 5                * ILLEGAL START CYLINDER
22 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
24 IF (P7 LE 47B) GOTO 26         * IF END TRACK
   MSG 4 TO LINE 5                * ILLEGAL END CYLINDER
   GOTO 22
26 IF (P7 GE P6) GOTO 30          * END CY, START CYLINDER
   MSG 5 TO LINE 5                * ILLEGAL END CYLINDER
   GOTO 22
30 MSG 17 TO DISPLAY,PRINT
   PAUSE
   OB(502)=P6                     * START CYLINDER
   OB(503)=P7                     * END CYLINDER
   EXIT TO 681
77 END 20 
COMPILE 
   MODULE FMU681, LSFMD2, (16), LOCK
*** 5.2.13B FMU681 - FORMAT 885-1X PACK TRACKWISE (CONTINUED) 
**
*          PURPOSE- 
*          FMU681 FORMATS THE 885-1X PACK TRACKWISE FROM THE INDICATED
*          STARTING TRACK TO THE INDICATED ENDING TRACK.  SKIPPED 
*          SECTORS AND TRACK FLAWS ARE THEN SET.
* 
*          METHOD-
*          FMU681 IS ENTERED FROM FMU68.  THAT MODULE SETS UP THE 
*          STARTING AND ENDING TRACKS IN THE OUTPUT BUFFER.  FMU681 
*          STARTS AT THE CYLINDER 1512B AND REFORMATS ALL SPECIFIED 
*          TRACKS WITH NO SKIPPED SECTORS OR TRACK FLAWS.  THE CYLINDER 
*          NUMBER IS THE DECREMENTED AND ALL SPECIFIED TRACKS OF THE NEXT 
*          NEXT CYLINDER ARE REFORMATTED.  THIS PROCESS 
*          CONTINUES UNTIL ALL CYLINDERS HAVE BEEN FORMATTED.  AT THIS
*          POINT ALL TRACKS IN THE SPECIFIED RANGE WILL HAVE
*          BEEN FORMATTED WITH NO SKIPPED SECTORS AND NO TRACK
*          FLAWS.  FMU681 READS THE SECTOR FLAW TABLES AND FINDS
*          THE HIGHEST CYLINDER AND TRACK NUMBER IN THE SPECIFIED RANGE 
*          OF TRACKS.  THE SECTOR FLAWS IN THIS TRACK ARE SAVED 
*          IN THE OUTPUT BUFFER.  WHEN THE END OF THE SECTOR FLAW 
*          TABLE IS FOUND, THE LIST OF SECTOR FLAWS IS USED TO
*          REFORMAT THE TRACK.  IF THERE ARE ONLY ONE OR TWO SECTOR 
*          FLAWS, FMU681 REFORMATS THE TRACK WITH THE SECTORS SKIPPED.
*          IF THERE ARE MORE THAN TWO SECTOR FLAWS, FMU681 CALLS
*          SUBMODULE FMU66A TO REFORMAT THE TRACK WITH THE SECTORS
*          SKIPPED AND TRACK FLAW SET.  FMU681 CONTINUES THIS PROCEDURE 
*          UNTIL ALL OF THE TRACKS LISTED IN THE SECTOR FLAW TABLE
*          IN THE SPECIFIED RANGE OF TRACKS HAVE BEEN REFORMATTED.
*          IF THE RANGE AND SECTOR FLAW TABLE INCLUDE THE UTILITY MAP 
*          (CY 1511B, TR 1) AND ITS FLAWS, THAT TRACK IS NOT REFOR- 
*          MATTED.  USE MODULE FMU70 TO REFORMAT THE UTILITY MAP. 
/ 
*          ENTRY- 
*          FMU681 ASSUMES THAT THE STARTING AND ENDING TRACK NUMBERS
*          ARE INITIALLY IN OUTPUT BUFFER LOCATIONS 502 AND 503.
* 
*          EXIT-
*          FMU681 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU681 CALLS SUBMODULE FMU66A TO REFORMAT TRACKS WITH MORE 
*          THAN TWO SKIPPED SECTORS.
*          FMU681 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS 
*          IF AN I/O FUNCTION IS ABORTED. 
* 
*          REGISTERS USED-
*          FMU681 USES REGISTERS B4 TO B7, BA, AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--
*            B4 - SECTOR FLAW INDEX 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
*            BA - ERROR FLAG SET BY SUBMODULE FMU66A
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU681 USES THE INPUT BUFFER FOR FLAW MAPS READ FROM THE 
*          DISK.  OUTPUT BUFFER LOCATIONS 300 TO 306 ARE USED FOR THE 
*          PARAMETERS FOR THE REFORMAT FUNCTION.  OUTPUT BUFFER 
*          LOCATIONS 502 AND 503 CONTAIN THE STARTING AND ENDING
*          TRACK NUMBERS. 
* 
* 
/  - FORMAT 885-1X PACK TRACKWISE (CONTINUED) - 
/ 
1  FORMAT CYLINDER = *OCTB, TRACK = *OB 
2  FORMAT PACK FORMATTING COMPLETE
14 FORMAT FMU681 SET FLAWS CY *OCTB TR *OB
15 FORMAT FMU681 FORMAT CY *OCTB TR *OB 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 MSG 15 (842D,OB(503)) TO DISPLAY 
   B5=4                           * SET DISPLAY LINE
   OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0100B       * FORMAT ONE TRACK
   OB(302)=842D                   * CYLINDER
   OB(303)=OB(503)                * TRACK 
   OB(304)=0                      * NOT USED
   OB(305)=4000B                  * NO DEFECTIVE SECTORS
   OB(306)=0                      * NOT USED
22 RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT TRACK
   MSG 1 (OB(302),OB(303)) TO LINE 5
   MSG 15 (OB(302),OB(303)) TO DISPLAY
   IF (OB(303) EQ OB(502)) GOTO 30  * IF ALL TRACKS DONE, 
24 OB(303)=OB(303)-1              * NEXT TRACK
   IF (OB(302) NE 1511B) GOTO 26  * IF NOT UTILITY TRACK, 
   IF (OB(303) EQ 1) GOTO 24      * IF UTILITY TRACK, 
26 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 26     * IF BUSY 
   IF (SB NE 0) GOTO 74           * IF AN ERROR 
   GOTO 22                        * CONTINUE FORMATTING 
30 OB(303)=OB(503)                * RESET TRACK 
   IF (OB(302) EQ 0) GOTO 32      * IF ALL CYLINDERS DONE,
   OB(302)=OB(302)-1              * NEXT CYLINDER 
   GOTO 26                        * CONTINUE FORMATTING 
32 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 32     * IF BUSY 
   IF (SB NE 0) GOTO 74           * IF AN ERROR 
   OB(500)=1512B                  * SET LAST FLAW CYLINDER
   OB(501)=OB(503)                * SET LAST FLAW TRACK 
34 OB(0)=0                        * CLEAR CYLINDER
   OB(1)=0                        * CLEAR TRACK 
   B4=0                           * SET FLAW INDEX
   WC=2                           * SET SECTOR
36 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY SECTOR 
   B7=0                           * RESET IB INDEX
40 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 50    * IF END OF FLAW MAP
   IF(IB(B7) AND 1777 GT OB(500))GOTO 44  * FLAW MAP GT LAST
   IF(IB(B7) AND 1777 LT OB(500))GOTO 42  * FLAW MAP LT LAST
   IF(IB(B6) RS 6 GE OB(501))GOTO 44  *FLAW MAP GE LAST FLAW
42 IF(IB(B6) RS 6 GT OB(503))GOTO 44  * FLAW MAP GT LAST TR 
   IF(IB(B6) RS 6 LT OB(502))GOTO 44  * FLAW MAP LT START TR
   IF (B4 EQ 0) GOTO 43               * IF NO FLAWS 
   IF (IB(B7) AND 1777 LT OB(0)) GOTO 44  * FLAW MAP LT NEXT
   IF (IB(B7) AND 1777 GT OB(0)) GOTO 43  * FLAW MAP GT NEXT
   IF (IB(B6) RS 6 EQ OB(1)) GOTO 64      * FLAW MAP EQ NEXT
   IF (IB(B6) RS 6 LT OB(1)) GOTO 44      * FLAW MAP LT NEXT
43 OB(0)=IB(B7) AND 1777          * LOAD PARAMETERS,CYLINDER
   OB(1)=IB(B6) RS 6              * TRACK 
   OB(2)=IB(B6) AND 0077          * SECTOR
   OB(3)=4000                     * NO SECOND SECTOR FLAW 
   B4=2                           * SET FLAW INDEX
44 B7=B7+2                        * INC IB INDEX
   IF (B7 LT 240D) GOTO 40        * IF NOT END OF SECTOR
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 36         * IF MORE SECTORS 
50 OB(500)=OB(0)                  * SAVE LAST FLAW, CYLINDER
   OB(501)=OB(1)                  * TRACK 
   IF (B4 EQ 0) GOTO 70           * IF NO FLAW
   IF (B4 GT 3) GOTO 60           * IF TRACK FLAW 
   IF(OB(0).NE.1511B)GOTO 52      * IF NOT CY 1511B,
   IF(OB(1).EQ.1) GOTO 54         * IF TR 1, SKIP FORMAT
52 OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0100        * FORMAT ONE TRACK
   OB(302)=OB(0)                  * CYLINDER
   OB(303)=OB(1)                  * TRACK 
   OB(304)=0                      * NOT USED
   OB(305)=OB(2)                  * FIRST DEFECTIVE SECTOR
   OB(306)=OB(3)                  * SECOND DEFECTIVE SECTOR 
   RES DRIVE, ABT 74              * RESERVE DRIVE 
   REFORM OB(300), ABT 74         * FORMAT TRACK
   MSG 1 (OB(302),OB(303)) TO LINE 5
   MSG 14 (OB(302),OB(303)) TO DISPLAY
54 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 54     * IF BUSY 
   IF (SB NE 0) GOTO 74           * IF AN ERROR 
   GOTO 34
60 CALL 66A                       * PROCESS TRACK FLAW
   IF (BA EQ 1) GOTO 74           * IF ERROR
   GOTO 34
64 B4=B4+1                        * INCREMENT COUNTER 
   OB(B4)=IB(B6) AND 0077         * SAVE ANOTHER SECTOR 
   GOTO 44
70 MSG 2 TO LINE 5
   MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * END OF MODULE 
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU70, LSFMD2, (16), LOCK 
*** 5.2.14 FMU70 - FORMAT 885-1X UTILITY TRACK
**
*          PURPOSE- 
*          FMU70 FORMATS CYLINDER 1511, TRACK 1 ON THE ASSIGNED DRIVE.
*          UP TO TWO SECTORS ON THIS TRACK MAY BE SKIPPED.
*          NOTE THAT FORMATTING THIS TRACK DESTROYS THE UTILITY FLAW
*          MAP.  THE UTILITY FLAW MAP MAY BE RESTORED FROM ARCHIVED FLAW
*          MAPS BY RUNNING FMU74. 
* 
*          METHOD-
*          FMU70 CHECKS PARAMETERS AND THEN REFORMATS THE TRACK ONE 
*          SECTOR AT A TIME BEGINNING WITH SECTOR ZERO.  IF THE CURRENT 
*          SECTOR IS LISTED IN PARAMETER P8 OR P9 IT IS FORMATTED AS A
*          SKIPPED SECTOR.  OTHERWISE IT IS FORMATTED AS A MAP SECTOR.
*          AS FORMATTING PROGRESSES A COUNT IS KEPT OF BOTH THE 
*          PHYSICAL SECTOR AND THE LOGICAL SECTOR.  THE PHYSICAL SECTOR 
*          COUNT IS ADVANCED AS EACH SECTOR IS FORMATTED.  THE LOGICAL
*          SECTOR COUNT IS ONLY ADVANCED IF THE SECTOR BEING FORMATTED
*          IS NOT SKIPPED.
* 
*          ENTRY- 
*          FMU70 REQUIRES PARAMETERS P8 AND P9 TO INDICATE SECTORS TO BE
*          SKIPPED DURING FORMATTING.  UP TO TWO SECTORS MAY BE SKIPPED 
*          BY SETTING THE PARAMETERS AS FOLLOWS-- 
*            NO SKIPPED SECTORS - P8 = 0 AND P9 = 0 
*            ONE SKIPPED SECTOR - P8 = SECTOR (0 TO 41) AND P9 = 4000 
*            TWO SKIPPED SECTORS - P8 = SECTOR (0 TO 41) AND
*                                  P9 = SECTOR (0 TO 41)
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER PARAMETER IS NOT 
*          VALID OR IF P8 AND P9 ARE EQUAL AND NON-ZERO.
/ 
*          EXIT-
*          FMU70 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU70 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU70 USES REGISTERS B0, B1, B2, AND B5.  REGISTERS ARE USED 
*          AS FOLLOWS-- 
*            B0 - PHYSICAL SECTOR 
*            B1 - LOGICAL SECTOR
*            B2 - SKIP FLAG 
*            B5 - K DISPLAY LINE NUMBER 
* 
*          BUFFERS USED-
*          FMU70 USES THE OUTPUT BUFFER FOR PARAMETERS NEEDED BY THE
*          REFORMAT COMMAND.  BUFFER LOCATIONS USED ARE AS FOLLOWS--
*            OB(300) TO OB(306) - PARAMETERS FOR FORMATTING 
* 
* 
/  - FORMAT 885-1X UTILITY TRACK -
/ 
1  FORMAT ILLEGAL PARAMETER P8 (MAXIMUM SE=41)
2  FORMAT ILLEGAL PARAMETER P9 (MAXIMUM SE=41)
3  FORMAT ILLEGAL PARAMETER P9 (P9 IS EQUAL TO P8)
5  FORMAT FORMAT 885-1X UTILITY TRACK - CH=*O, EQ=*O, UN=*O 
6  FORMAT SKIP SECTOR *O
7  FORMAT SKIP SECTOR *O AND *O 
10 FORMAT NO SKIPPED SECTORS
11 FORMAT UTILITY TRACK FORMATTING COMPLETE 
12 FORMAT -- WARNING -- WARNING -- WARNING -- 
13 FORMAT  GO -- WILL DESTROY THE UTILITY MAPS
15 FORMAT MODULE FMU70
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU70 PAUSE - FORMAT 885-1X UTILITY TRACK 
20 BLANK
   MSG 15 TO DISPLAY
   MSG 5 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 10 TO LINE 3 
   B2=0                           * CLEAR SKIP FLAG 
   IF (P9 NE 0) GOTO 22           * IF 2ND SKIP SECTOR NE 0 
   IF (P8 EQ 0) GOTO 40           * IF NO SKIPPED SECTORS 
22 IF (P9 NE 4000) GOTO 23        * IF 2 SKIPPED SECTORS
   IF (P8 EQ 4000) GOTO 40        * IF NO SKIPPED SECTORS 
23 MSG 6 (P8) TO LINE 3           * 1 SKIPPED SECTOR
   B2=1                           * SET SKIP FLAG 
   IF (P9 NE 4000) GOTO 30        * IF 2 SKIPPED SECTORS
   IF (P8 LE 33D) GOTO 40         * IF VALID SECTOR 
25 MSG 1 (P8) TO LINE 5           * ILLEGAL PARAMETER 
26 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
30 MSG 7 (P8,P9) TO LINE 3        * 2 SKIPPED SECTORS 
   IF (P8 GT 33D) GOTO 25         * IF ILLEGAL SECTOR 
   IF (P9 LE 33D) GOTO 32         * IF VALID SECTOR 
   MSG 2 TO LINE 5                * ILLEGAL PARAMETER 
   GOTO 26
32 IF (P9 NE P8) GOTO 40          * IF SECTORS DIFFER 
   MSG 3 TO LINE 5                * ILLEGAL PARAMETER 
   GOTO 26
40 MSG 12 TO LINE 10         *WARNING MESSAGE 
   MSG 12 TO LINE 11         *WARNING MESSAGE 
   MSG 13 TO LINE 13         *WARNING MESSAGE FOR GO
   MSG 12 TO LINE 15         *WARNING MESSAGE 
   MSG 12 TO LINE 16         *WARNING MESSAGE 
   PICTURE
   MSG 17 TO DISPLAY,PRINT
   PAUSE
   BLANK
   B5=4                           * SET DISPLAY LINE
   B0=0                           * PHYSICAL SECTOR 
   B1=0                           * LOGICAL SECTOR
41 IF (B2 EQ 0) GOTO 42           * IF SKIP FLAG NOT SET
   IF (B0 EQ P8) GOTO 60          * PHYS SEC EQ 1ST SEC 
   IF (B0 EQ P9) GOTO 60          * PHYS SEC EQ 2ND SEC 
42 OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0400        * MAP SECTOR
   OB(302)=841D 
   OB(303)=1
   OB(304)=B0                     * PHYSICAL SECTOR 
   OB(305)=0
   OB(306)=B1                     * LOGICAL SECTOR
   RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT UTILITY TRACK
44 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 44     * IF BUSY 
   B1=B1+1                        * INC LOGICAL SECTOR
50 B0=B0+1                        * INC PHYSICAL SEC
   IF (B0 LE 33D) GOTO 41         * IF MORE SECTORS 
   MSG 11 TO LINE 5               * FORMAT COMPLETE 
   MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * END OF MODULE 
60 OB(300)=0                      * SET PARAMETERS
   OB(301)=SB(63) XOR 0200        * SKIP SECTOR 
   OB(302)=841D 
   OB(303)=1
   OB(304)=B0                     * PHYSICAL SECTOR 
   OB(305)=0
   OB(306)=0
   RES DRIVE, ABT 74
   REFORM OB(300), ABT 74         * FORMAT SECTOR 
64 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 64     * IF BUSY 
   GOTO 50
74 CALL 98G                             DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU71, LSFMD2, (16), LOCK 
*** 5.2.15 FMU71 - SCAN AND DISPLAY 885-1X FLAWS
**
*          PURPOSE- 
*          FMU71 SCANS THE ENTIRE 885-1X DRIVE AND DISPLAYS AND PRINTS A
*          LIST OF ERROR SECTORS, SKIPPED SECTORS, AND FLAWED TRACKS. 
* 
*          METHOD-
*          FMU71 TAKES THE STARTING CYLINDER NUMBER FROM PARAMETER P6 
*          AND THE ENDING CYLINDER NUMBER FROM PARAMETER P7.  IF BOTH 
*          PARAMETERS ARE ZERO, THE ENDING CYLINDER IS SET TO 1512B TO
*          CAUSE A FULL SCAN OF THE PACK.  THEN, FMU31 STARTS WITH THE
*          CYLINDER GIVEN IN P6 AND DOES A SEEK FOLLOWED BY 
*          A SCAN COMMAND.  AFTER THE SCAN COMPLETES FMU71 READS THE
*          CHANNEL BUFFER TO OBTAIN A LIST OF FLAWS FOR THE CURRENT 
*          CYLINDER.  FMU71 THEN DISPLAYS THIS LIST OF FLAWS. 
*          THE CYLINDER NUMBER IS INCREMENTED AND THE PROCESS IS
*          CONTINUED UNTIL ALL OF THE CYLINDERS HAVE BEEN SCANNED.
* 
*          ENTRY- 
*          FMU71 USES PARAMETERS P6 AND P7 TO INDICATE STARTING AND 
*          ENDING CYLINDER FOR SCANNING.  IF THEY ARE BOTH ZERO,
*          A FULL SCAN IS EXECUTED.  PARAMETER USAGE AND
*          ALLOWED OCTAL VALUES ARE SHOWN BELOW-- 
*            P6 - STARTING CYLINDER (0 TO 1512) 
*            P7 - ENDING CYLINDER (0 TO 1512) 
*          AN ERROR MESSAGE IS DISPLAYED IF EITHER OF THE PARAMETERS IS 
*          OUT OF RANGE OR IF P6 IS GREATER THAN P7.
/ 
*          EXIT-
*          FMU71 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU71 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU31 USES REGISTERS B0 TO B7 AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--
*            B0 - CYLINDER
*            B1 - TRACK 
*            B2 - SECTOR
*            B3 - INPUT BUFFER INDEX
*            B4 - TRACK AND SECTOR
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - ENDING CYLINDER 
*            B7 - INPUT BUFFER INDEX
*            WC - CYLINDER
* 
*          BUFFERS USED-
*          FMU71 USES THE INPUT BUFFER FOR READING THE LIST OF FLAWS
*          FROM THE CHANNEL BUFFER. 
* 
* 
/  - SCAN AND DISPLAY 885-1X FLAWS -
/ 
1  FORMAT 885-1X SECTOR FLAWS - CH=*O, EQ=*O, UN=*O 
2  FORMAT CYLINDER = *OCT 
3  FORMAT 
4  FORMAT CY = *OCT   TR = *O   SE = *O 
5  FORMAT CY = *OCT   TR = *O   SE = *O   TRACK FLAW
6  FORMAT CY = *OCT   TR = *O   SE = *O   ERROR SECTOR
7  FORMAT - - - - - - - END OF LIST - - - - - - - 
10 FORMAT CYLINDER *OCT TO *OCT 
11 FORMAT ILLEGAL PARAMETER P6 (MAXIMUM CY = 1512)
12 FORMAT ILLEGAL PARAMETER P7 (MAXIMUM CY = 1512)
13 FORMAT ILLEGAL PARAMETER P7 (P7 IS LESS THAN P6) 
15 FORMAT FMU71 SCAN CYL *OCT 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU71 PAUSE - SCAN AND DISPLAY 885-1X FLAWS 
   EQUATE MAXCYL TO 842D
20 BLANK
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   IF (P6 LE MAXCYL) GOTO 22      * IF BEG CYL LE MAXCYL
   MSG 11 TO LINE 5               * ELSE, ILLEGAL BEG CYL 
21 MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR STOP
22 IF (P7 LE MAXCYL) GOTO 23      * IF END CYL LE MAXCYL
   MSG 12 TO LINE 5               * ELSE, ILLEGAL END CYL 
   GOTO 21
23 IF (P7 GE P6) GOTO 24          * IF END GE BEG CYL 
   MSG 13 TO LINE 5               * ILLEGAL END CYL 
   GOTO 21
24 B5=5                           * SET DISPLAY LINE
   WC=P6                          * SET BEG CYLINDER
   B6=P7                          * SET END CYLINDER
   IF (P7 EQ 0) B6 = MAXCYL       * IF P7=0, FULL SCAN
   MSG 10 (WC,B6) TO LINE 3 
   MSG 17 TO DISPLAY,PRINT
   PAUSE
   B4=0                           * SET TRACK AND SECTOR
25 RES DRIVE, ABT 74
26 SEEK CYL WC TRK B4 SEC B4, ABT 74   * SEEK 
   SCAN, ABT 74                   * SCAN CYLINDER 
   MSG 2 (WC) TO LINE B5
   MSG 15 (WC) TO DISPLAY 
30 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 30     * IF BUSY 
   IF (SB AND 4000 NE 0) GOTO 74  * IF ABNORMAL STATUS
   READCB, ABT 74                 * READ BUFFER 
   GOSUB 40                       * PROCESS CYLINDER
   WC=WC+1                        * NEXT CYLINDER 
   IF (WC LE B6) GOTO 25          * IF MORE CYLINDERS 
   GOTO 77                        * END OF MODULE 
/ 
/  PROCESS AND DISPLAY THE FLAWS IN IB (SUBROUTINE) 
40 B7=0                           * SET IB INDEX
46 IF (IB(B7) EQ 0) GOTO 64       * IF END OF IB
   IF (B5 LE 33D) GOTO 54         * IF DISPLAY NOT FULL 
   MSG 3 TO LINE B5 
   PICTURE                        * PRINT PAGE
50 B5=B5-1                        * CLEAR DISPLAY 
   MSG 3 TO LINE B5 
   IF (B5 GT 5) GOTO 50           * IF NOT DONE CLEARING
54 B3=B7+1                        * SET IB INDEX
   B0=WC                          * SET CYLINDER
   B1=IB(B3) RS 6                 * EXTRACT TRACK 
   B2=IB(B3) AND 0077             * EXTRACT SECTOR
   MSG 4 (B0,B1,B2) TO LINE B5    * ASSUME SECTOR FLAW
   IF (IB(B7) EQ 1) GOTO 60       * IF SECTOR FLAW
   MSG 5 (B0,B1,B2) TO LINE B5    * ASSUME TRACK FLAW 
   IF (IB(B7) EQ 2) GOTO 60       * IF TRACK FLAW 
   MSG 6 (B0,B1,B2) TO LINE B5    * ERROR SECTOR
60 B7=B7+2                        * INCREMENT IB INDEX
   B5=B5+1                        * NEXT LINE 
   IF (B7 LT 500) GOTO 46         * IF NOT END OF IB
64 IF (WC LT B6) RETURN           * IF MORE CYLINDERS 
   MSG 7 TO LINE B5               * END OF LIST 
   B5=B5+2
   MSG 16 TO LINE B5
   PICTURE
   RETURN 
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
77 END 20 
COMPILE 
   MODULE FMU72, LSFMD2, (16), LOCK 
*** 5.2.16 FMU72 - VERIFY 885-1X UTILITY MAPS 
**
*          PURPOSE- 
*          FMU72 COMPARES THE UTILITY FLAW MAPS WITH ACTUAL SKIPPED 
*          SECTORS AND FLAWED TRACKS ON THE DISK.  ANY DIFFERENCES ARE
*          DISPLAYED. 
* 
*          METHOD-
*          FMU72 BEGINS WITH CYLINDER 0.  THE FLAW MAPS ARE READ AND
*          ALL FLAWS IN THIS CYLINDER ARE SAVED ON THE OUTPUT BUFFER. 
*          THE CYLINDER IS THEN SCANNED AND THE LIST OF FLAWS IS READ 
*          FROM THE CHANNEL BUFFER TO THE INPUT BUFFER.  SUBMODULE
*          FMU72A IS CALLED TO COMPARE THE DATA IN THE INPUT AND OUTPUT 
*          BUFFERS.  THIS PROCESS IS REPEATED FOR EACH CYLINDER.
* 
*          ENTRY- 
*          FMU72 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE 
*          EXEUCTION. 
/ 
*          EXIT-
*          FMU72 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY THE OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU72 CALLS SUBMODULE FMU72A TO COMPARE THE LIST OF SKIPPED
*          SECTORS IN THE INPUT BUFFER WITH THE FLAW MAP ENTRIES IN THE 
*          OUTPUT BUFFER. 
*          FMU72 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU72 USES REGISTERS B0, B3, B5, B6, B7, AND WC.  REGISTERS
*          ARE USED AS FOLLOWS--
*            B0 - MAP SECTOR NUMBER 
*            B3 - OUTPUT BUFFER INDEX 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
*            WC - CYLINDER
* 
*          BUFFERS USED-
*          FMU72 USES THE INPUT BUFFER FOR HOLDING THE LIST OF SKIPPED
*          SECTORS FOUND BY THE SCAN COMMAND.  THE OUTPUT BUFFER IS 
*          USED FOR HOLDING THE LIST OF SECTORS FROM THE FLAW MAPS. 
* 
* 
/  - VERIFY 885-1X UTILITY MAPS - 
/ 
1  FORMAT VERIFY 885-1X UTILITY MAPS - CH=*O, EQ=*O, UN=*O
2  FORMAT CYLINDER = *OCT 
3  FORMAT VERIFY COMPLETE 
4  FORMAT CY=*OCT,  TR=*O   MAP TRACK NOT IN FLAW MAP 
5  FORMAT ABORT - CYLINDER FLAW CAPACITY EXCEEDED 
6  FORMAT 
7  FORMAT THIS MODULE RUNS FOR 32 MINUTES.
15 FORMAT FMU72 VERIFY CYL *OCT 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
   EQUATE MAXCYL TO 842D
20 BLANK
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 1 (SB(61),SB(62),SB(63)) TO PRINT
   B5=4                           * DISPLAY INDEX 
   WC=0                           * CYLINDER
   MSG 15 (WC) TO DISPLAY 
   IF(ES.AND.TM.NE.0) MSG 7 TO PRINT
/ 
/  FIND ALL MAP ENTRIES FOR CYLINDER WC 
22 B3=0                           * OB INDEX
   B0=1                           * SET SECTOR
23 RES DRIVE, ABT 74
   GET UTILITY SECTOR B0, ABT 74  * READ UTILITY SECTOR 
   B7=0                           * SET IB INDEX
30 B6=B7+1
   IF (IB(B7) AND 4000 EQ 0) GOTO 60   * IF END OF FLAW MAP 
   IF (IB(B7) AND 1777 EQ WC) GOTO 50  * IF FLAW IN THIS CYL
32 B7=B7+2                        * INCREMENT IB INDEX
   IF (B7 LT 240D) GOTO 30        * IF MORE FLAWS 
34 B0=B0+1                        * NEXT SECTOR 
   IF (B0 LE 18D) GOTO 23         * IF MORE SECTORS 
40 OB(B3)=0                       * SET END OF TABLE
   B0=0                           * SET TRACK AND SECTOR
/ 
/  SCAN CYLINDER AND COMPARE FLAWS
   RES DRIVE, ABT 74
   SEEK CYL WC TRK B0 SEC B0, ABT 74   * SEEK 
   SCAN, ABT 74                   * SCAN CYLINDER 
   MSG 2 (WC) TO LINE B5
42 STATUS GENERAL, ABT 74         * REQUEST GENERAL STATUS
   IF (SB AND 2 NE 0) GOTO 42     * IF BUSY 
   READCB, ABT 74                 * READ BUFFER 
   MSG 15 (WC) TO DISPLAY 
   CALL 72A                       * COMPARE 
   IF (WC EQ 841D) GOTO 62        * IF MAP CYLINDER 
44 WC=WC+1                        * NEXT CYLINDER 
   IF (WC LE MAXCYL) GOTO 22      * IF MORE CYLINDERS 
   MSG 6 TO LINE B5 
   B5=B5+1
   MSG 3 TO LINE B5               * VERIFY COMPLETE 
47 B5=B5+2
   MSG 16 TO LINE B5
   PICTURE
   GOTO 77                        * END OF MODULE 
/ 
/  SAVE FLAW FROM MAP IN OB 
50 IF (B3 LT 500) GOTO 52         * IF OB NOT FULL
   MSG 5 TO LINE B5 
   GOTO 47                        * ABORT IF TOO MANY FLAWS 
52 OB(B3)=1                       * SET SECTOR FLAW 
   IF (B0 EQ 1) OB(B3)=2          * IF TRACK FLAW 
   B3=B3+1
   OB(B3)=IB(B6)                  * SAVE TRACK AND SECTOR 
   B3=B3+1                        * INCREMENT OB INDEX
   GOTO 32                        * CONTINUE
60 IF (B0 EQ 1) GOTO 34           * IF TRACK FLAW MAP 
   GOTO 40
/ 
/  CHECK THAT MAP TRACKS ARE FLAWED 
62 B2=0                           * SET TRACK NUMBER
63 B3=0                           * RESET OB INDEX
64 IF (OB(B3) EQ 0) GOTO 70       * IF NO FLAW IN MAP 
   IF (OB(B3) NE 2) GOTO 66       * IF NOT TRACK FLAW 
   B3=B3+1                        * INCREMENT OB INDEX
   IF (OB(B3) RS 6 NE B2) GOTO 67      * IF NOT MAP TRACK 
65 B2=B2+1                        * NEXT TRACK
   IF (B2 EQ 1) GOTO 63           * IF NOT DONE CHECKING
   GOTO 44                        * CHECKING COMPLETE 
66 B3=B3+1
67 B3=B3+1
   IF (B3 LT 500) GOTO 64         * IF MORE TO CHECK
70 IF (B5 LE 33D) GOTO 72         * IF DISPLAY NOT FULL 
   MSG 6 TO LINE B5 
   PICTURE
71 B5=B5-1                        * CLEAR DISPLAY 
   MSG 6 TO LINE B5 
   IF (B5 GT 4) GOTO 71           * IF NOT DONE CLEARING
72 MSG 4 (WC,B2) TO LINE B5       * MAP TRACK NOT IN FLAW MAP 
   B5=B5+1                        * INCREMENT DISPLAY LINE
   GOTO 65                        * CONTINUE
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU72A, LSFMD2, (16), LOCK
*** 5.2.17 FMU72A - COMPARE AND DISPLAY ERRORS (SUBROUTINE) 
**
*          PURPOSE- 
*          FMU72A COMPARES THE SKIPPED SECTORS AND FLAWED TRACKS IN ONE 
*          CYLINDER WITH THE FLAW MAPS. 
* 
*          METHOD-
*          FMU72A IS A SUBMODULE CALLED BY MODULE FMU72.
*          FMU72A FIRST CHECKS TO SEE THAT ALL OF THE SKIPPED SECTORS 
*          AND FLAWED TRACKS LISTED IN THE INPUT BUFFER HAVE A
*          CORRESPONDING ENTRY IN THE UTILITY FLAW MAPS LISTED IN THE 
*          OUTPUT BUFFER.  A CHECK IS MADE TO SEE IF ALL OF THE 
*          FLAW MAP ENTRIES HAVE A CORRESPONDING SKIPPED SECTOR OR
*          FLAWED TRACK.  FMU72A DISPLAYS ANY DIFFERENCES BETWEEN THE 
*          TWO LISTS.  AFTER COMPARING THE LISTS FOR ONE CYLINDER 
*          FMU72A RETURNS TO FMU72. 
/ 
*          ENTRY- 
*          FMU72A ASSUMES THAT DATA TO BE COMPARED IS IN THE INPUT AND
*          OUTPUT BUFFERS.
* 
*          EXIT-
*          FMU72A MODIFIES REGISTER B5 AS DIFFERENCES BETWEEN THE LISTS 
*          ARE ADDED TO THE DISPLAY.  WHEN THE LISTS HAVE BEEN COMPARED 
*          FMU72A RETURNS FMU72.
* 
*          SUBMODULES REFERENCED- 
*          FMU72A DOES NOT CALL ANY SUBMODULES. 
* 
*          REGISTERS USED-
*          FMU72A USES REGISTERS B0, B1, AND B3 TO B7.  REGISTERS ARE 
*          USED AS FOLLOWS--
*            B0 - SECTOR
*            B1 - TRACK 
*            B3 - OUTPUT BUFFER INDEX 
*            B4 - OUTPUT BUFFER INDEX 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - INPUT BUFFER INDEX
*            B7 - INPUT BUFFER INDEX
* 
*          BUFFERS USED-
*          FMU72A ASSUMES THAT THE INPUT BUFFER CONTAINS A LIST OF
*          SKIPPED SECTORS AND FLAWED TRACKS.  THE OUTPUT BUFFER IS 
*          ASSUMED TO CONTAIN A LIST OF THE FLAW MAP ENTRIES FOR THE
*          CURRENT CYLINDER.
* 
* 
/  - COMPARE AND DISPLAY ERRORS (SUBROUTINE) -
/ 
1  FORMAT 
2  FORMAT CY=*OCT,  TR=*O,  SE=*O  SKIPPED BUT NOT IN MAP 
3  FORMAT CY=*OCT,  TR=*O,  SE=*O  IN MAP BUT NOT SKIPPED 
4  FORMAT CY=*OCT,  TR=*O   TRACK FLAW SET BUT NOT IN MAP 
5  FORMAT CY=*OCT,  TR=*O   TRACK FLAW IN MAP BUT NOT SET 
/ 
/  CHECK FOR SECTOR SKIPPED (IB) BUT NOT IN MAP (OB)
20 B7=0                           * SET IB INDEX
22 B6=B7+1
   B4=0                           * SET OB INDEX
24 B3=B4+1
   IF (IB(B7) EQ 0) GOTO 40       * IF END OF IB
   IF (OB(B4) EQ 0) GOTO 30       * IF END OF OB
   IF (IB(B6) NE OB(B3)) GOTO 26  * IF IB AND OB DIFFER 
   IF (IB(B7) EQ OB(B4)) GOTO 37  * IF IB AND OB ARE SAME 
26 B4=B4+2                        * INCREMENT OB INDEX
   IF (B4 LT 500) GOTO 24         * IF NOT END OF OB
30 IF (B5 LE 33D) GOTO 34         * IF DISPLAY NOT FULL 
   MSG 1 TO LINE B5 
   PICTURE
32 B5=B5-1                        * CLEAR DISPLAY 
   MSG 1 TO LINE B5 
   IF (B5 GT 4) GOTO 32           * IF NOT DONE CLEARING
34 B1=IB(B6) RS 6                 * EXTRACT TRACK 
   B0=IB(B6) AND 0077             * EXTRACT SECTOR
   MSG 2 (WC,B1,B0) TO LINE B5
   IF (IB(B7) EQ 1) GOTO 35       * IF SECTOR FLAW
   MSG 4 (WC,B1) TO LINE B5 
35 B5=B5+1                        * INCREMENT LINE COUNT
37 B7=B7+2                        * INCREMENT IB INDEX
   IF (B7 LT 500) GOTO 22         * IF NOT END OF IB
/ 
/  CHECK FOR SECTOR IN MAP (OB) BUT NOT SKIPPED (IB)
40 B4=0                           * RESET OB INDEX
42 B3=B4+1
   B7=0                           * RESET IB INDEX
44 B6=B7+1
   IF (OB(B4) EQ 0) EXIT          * IF END OF OB
   IF (IB(B7) EQ 0) GOTO 50       * IF NOT FLAWED 
   IF (OB(B3) NE IB(B6)) GOTO 46  * IF OB AND IB DIFFER 
   IF (OB(B4) EQ IB(B7)) GOTO 57  * IF OB AND IB ARE SAME 
46 B7=B7+2                        * INCREMENT IB INDEX
   IF (B7 LT 500) GOTO 44 
50 IF (WC NE 841D) GOTO 51        * IF NOT MAP TRACK
   IF (OB(B4) NE 2) GOTO 51       * IF NOT TRACK FLAW 
   IF (OB(B3) RS 6 LE 1) GOTO 57  * IF TRACK 0 OR 1 
51 IF (B5 LE 33D) GOTO 54         * IF DISPLAY NOT FULL 
   MSG 1 TO LINE B5 
   PICTURE
52 B5=B5-1                        * CLEAR DISPLAY 
   MSG 1 TO LINE B5 
   IF (B5 GT 4) GOTO 52           * IF NOT DONE CLEARING
54 B1=OB(B3) RS 6                 * EXTRACT TRACK 
   B0=OB(B3) AND 0077             * EXTRACT SECTOR
   MSG 3 (WC,B1,B0) TO LINE B5
   IF (OB(B4) EQ 1) GOTO 55       * IF SECTOR FLAW
   MSG 5 (WC,B1) TO LINE B5 
55 B5=B5+1                        * INCREMENT DISPLAY LINE
57 B4=B4+2                        * INCREMENT OB INDEX
   IF (B4 LT 500) GOTO 42         * IF NOT END OF OB
   EXIT 
77 END 20 
COMPILE 
   MODULE FMU73, LSFMD2, (16), LOCK 
*** 5.2.18 FMU73 - ARCHIVE 885-1X FLAW MAPS 
**
*          PURPOSE- 
*          FMU73 READS THE FACTORY AND UTILITY FLAW TABLES FROM THE 
*          DISK AND WRITES THEM TO THE SYSTEM SCRATCH FILE. 
* 
*          METHOD 
*          FMU73  STARTS BY READING THE FACTORY  OR  UTILITY FLAW TABLES
*          ONE SECTOR AT A TIME DEPENDING ON  P5.   AFTER EACH SECTOR IS
*          READ  IT IS COPIED TO THE  SYSTEM  SCRATCH  FILE.  THUS, EACH
*          SECTOR OF THE FLAW MAPS  BECOMES  ONE  RECORD  ON THE SCRATCH
*          FILE.  THIS PROCESS CONTINUES UNTIL SECTORS  0  TO  18 OF THE
*          FACTORY OR UTILITY MAP TRACK HAVE BEEN COPIED TO THE  SCRATCH
*          FILE. IF P5 EQUALS  ZERO  FMU73 THEN READS SECTORS 0 TO 18 OF
*          UTILITY MAP TRACK AND COPIES THEM TO THE SCRATCH FILE.  IF P5
*          EQUALS 0001 THE FACTORY MAPS ARE ARCHIVED TWICE. IF P5 EQUALS
*          0002 THE UTILITY MAPS ARE ARCHIVED TWICE. UPON COMPLETION THE
*          SCRATCH FILE WILL HAVE 36 RECORDS CONTAINING ALL THE DATA FOR
*          BOTH THE FACTORY AND/OR UTILITY FLAW TABLES. 
* 
*          ENTRY- 
*          FMU73 USES PARAMETER P5 TO INDICATE WHETHER THE FACTORY
*          AND/OR THE UTILITY MAPS ARE TO BE ARCHIVED. PARAMETER
*          VALUES ARE SHOWN BELOW-- 
*            P5 = 0000 ARCHIVE BOTH FACTORY AND UTILITY MAPS
*            P5 = 0001 ARCHIVE ONLY THE FACTORY MAPS
*            P5 = 0002 ARCHIVE ONLY THE UTILITY MAPS
*IF -DEF,CMSE17X
*          IF IT IS DESIRED TO ARCHIVE  THE  FLAW  TABLES TO TAPE THIS
*          MAY BE DONE BY COPYING THE SCRATCH FILE TO TAPE AFTER MALET
*          EXECUTION OR BY REQUESTING  THE  TAPE  AS  THE SCRATCH FILE
*          BEFORE EXECUTING MALET.
*ENDIF
*IF DEF,CMSE17X 
*          EXECUTION. 
*ENDIF
/ 
*          EXIT-
*          FMU73 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU73 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF A 
*          FUNCTION TO THE DRIVE IS ABORTED.
* 
*          REGISTERS USED-
*          FMU73 USES REGISTERS B4, B5, B6 AND WC. REGISTERS ARE USED AS
*          FOLLOWS--
*            B4 - COUNTER FOR NUMBER OF ARCHIVES
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - MESSAGE NUMBER FOR DISPLAY
*            WC - SECTOR
* 
*          BUFFERS USED-
*          FMU73 USES THE INPUT BUFFER FOR FLAW TABLE READ FROM THE 
*          DISK.  THE OUTPUT BUFFER IS USED TO WRITE THE TABLES TO THE
*          SCRATCH FILE.
* 
* 
/  - ARCHIVE 885-1X FLAW MAPS - 
/ 
1  FORMAT ARCHIVE 885-1X FLAW MAPS - CH=*O, EQ=*O, UN=*O
2  FORMAT FACTORY AND UTILITY MAPS ARCHIVED ON SCRATCH FILE 
3  FORMAT FACTORY MAPS ONLY ARCHIVED ON SCRATCH FILE
4  FORMAT UTILITY MAPS ONLY ARCHIVED ON SCRATCH FILE
15 FORMAT MODULE FMU73
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU73 PAUSE - ARCHIVE 885-1X MAPS 
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62),SB(63)) TO LINE 2 
   MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=3                           * SET DISPLAY LINE
   SYSREW                         * REWIND SYSTEM FILE
30 WC=0                           * SET SECTOR
   B6 = P5 + 2
   IF(P5.EQ.2) GOTO 36       *ARCHIVE FROM UTILITY ONLY 
31 RES DRIVE, ABT 74
   GET FACTORY SECTOR WC, ABT 74  * READ FACTORY MAPS 
   COPY IB TO OB FOR 502
   SYSWR                          * WRITE FILE
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 31         * IF MORE SECTORS 
   IF(P5.EQ.0) GOTO 34       *ARCHIVE BOTH FACTORY AND UTILITY
   GOTO 30 WHILE(B4+1.LE.1)  *READ FACTORY TWICE
   GOTO 40
34 WC = 0                    *RESET SECTOR
36 RES DRIVE, ABT 74
   GET UTILITY SECTOR WC, ABT 74  * READ UTILITY MAPS 
   COPY IB TO OB FOR 502
   SYSWR                          * WRITE FILE
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 36         * IF MORE SECTORS 
   IF(P5.EQ.0) GOTO 40       *BOTH ARCHIVED EXIT
   GOTO 34 WHILE(B4+1.LE.1)  *READ UTILITY TWICE
40 MSG B6 TO LINE 4          *POST ARCHIVE MESSAGE
   MSG 16 TO LINE 6 
   PICTURE
   SYSREW                         * REWIND SYSTEM FILE
   GOTO 77                        * END OF MODULE 
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU74, LSFMD2, (16), LOCK 
*** 5.2.19 FMU74 - RESTORE 885-1X UTILITY MAPS
**
*          PURPOSE- 
*          FMU74 COPIES ARCHIVED FACTORY FLAW MAPS OR UTILITY FLAW MAPS 
*          FROM THE SYSTEM SCRATCH FILE TO THE UTILITY FLAW MAP TRACK.
* 
*          METHOD-
*          FMU74 READS EITHER THE FACTORY MAPS OR THE UTILITY MAPS FROM 
*          THE SCRATCH FILE.  EACH RECORD ON THE FILE CONTAINS DATA FOR 
*          ONE SECTOR OF THE MAPS.  AFTER READING EACH RECORD IT IS 
*          COPIED TO THE UTILITY MAP TRACK ON THE DISK.  THIS PROCESS IS
*          CONTINUED UNTIL SECTORS 0 TO 18 OF CYLINDER 841, TRACK 1 
*          HAVE BEEN WRITTEN. 
* 
*          ENTRY- 
*          FMU74 ASSUMES THAT THE SCRATCH FILE CONTAINS 38 RECORDS
*          CORRESPONDING TO THE 19 SECTORS OF THE FACTORY MAPS AND THE
*          19 SECTORS OF THE UTILITY MAPS.  IT IS ALSO ASSUMED THAT THE 
*          FIRST 19 RECORDS ARE THE FACTORY MAPS.  PARAMETER P5 MUST BE 
*          SET TO INDICATE WHICH MAPS TO USE.  PARAMETER DEFINITION AND 
*          ALLOWED VALUES ARE AS FOLLOWS--
*            P5 = 0 - USE ARCHIVED UTILITY FLAW TABLES
*                 1 - USE ARCHIVED FACTORY FLAW TABLES
/ 
*          EXIT-
*          FMU74 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU74 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF A 
*          FUNCTION TO THE DRIVE IS ABORTED.
* 
*          REGISTERS USED-
*          FMU74 USES REGISTERS B0, B1, B5, B7, AND WC.  REGISTERS ARE
*          USED AS FOLLOWS--
*            B0 - CYLINDER 841
*            B1 - TRACK 1 
*            B5 - K DISPLAY LINE NUMBER 
*            B7 - STATUS OF SYSRD 
*            WC - SECTOR (0 TO 18)
* 
*          BUFFERS USED-
*          FMU74 USES THE INPUT BUFFER FOR THE DATA READ FROM THE 
*          SCRATCH FILE AND THE OUTPUT BUFFER FOR DATA WRITTEN TO THE 
*          UTILITY FLAW MAP SECTORS.
* 
* 
/  - RESTORE 885-1X UTILITY MAPS -
/ 
1  FORMAT RESTORE UTILITY MAPS FROM ARCHIVED
2  FORMAT    FACTORY MAPS (SCRATCH FILE)
3  FORMAT    UTILITY MAPS (SCRATCH FILE)
4  FORMAT ILLEGAL PARAMETER P5
6  FORMAT UTILITY MAPS WRITTEN FROM SYSTEM FILE 
7  FORMAT 885-1X DRIVE - CH=*O, EQ=*O, UN=*O
10 FORMAT    DISK S/N = *HE*HE
11 FORMAT ARCHIVE S/N = *HE*HE
14 FORMAT ABORT - SCRATCH FILE ERROR
15 FORMAT MODULE FMU74
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU74 PAUSE - RESTORE 885-1X UTILITY MAPS 
20 BLANK
   MSG 15 TO DISPLAY
   SYSREW 
   MSG 1 TO LINE 2
   MSG 2 TO LINE 3
   MSG 7 (SB(61),SB(62),SB(63)) TO LINE 4 
   B5=5                           * SET DISPLAY LINE
   RES DRIVE, ABT 74
   GET SERIAL, ABT 74             * READ DRIVE S/N
   COPY IB TO OB FOR 502
   SYSRD, STATUS TO B7            * READ ARCHIVE S/N
   IF (B7 NE 0) GOTO 70           * IF ERROR
   SYSREW 
   MSG 10 (OB(0),OB(1)) TO LINE 5 
   MSG 11 (IB(0),IB(1)) TO LINE 6 
   IF (P5 EQ 1) GOTO 26           * IF FACTORY MAPS 
   IF (P5 EQ 0) GOTO 24           * IF UTILITY MAPS 
   MSG 4 TO LINE 10               * ILLEGAL PARAMETER 
   MSG 16 TO LINE 12
   PICTURE
   GOTO 77                        * ERROR STOP
24 MSG 3 TO LINE 3
   WC=0                           * SET SECTOR
25 SYSRD, STATUS TO B7            * SKIP FACTORY MAPS 
   IF (B7 NE 0) GOTO 70           * IF ERROR
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 25         * IF MORE SECTORS 
26 MSG 17 TO DISPLAY,PRINT
   PAUSE
   B5=7                           * SET DISPLAY LINE
   WC=0                           * SET SECTOR
   B0=841D                        * SET CYLINDER
   B1=1                           * SET TRACK 
30 SYSRD, STATUS TO B7            * READ ARCHIVE
   IF (B7 NE 0) GOTO 70           * IF ERROR
   COPY IB TO OB FOR 500          * SET OUTPUT BUFFER 
   OB(500)=0
   OB(501)=0
   RES DRIVE, ABT 74
   WRPRO CYL B0 TRK B1 SEC WC, ABT 74  * WRITE PROTECTED SECTOR 
   WC=WC+1                        * NEXT SECTOR 
   IF (WC LE 18D) GOTO 30         * IF MORE SECTORS 
   MSG 6 TO LINE 10 
34 MSG 16 TO LINE 12
   PICTURE
   GOTO 77                        * END OF MODULE 
70 MSG 14 TO LINE 10              * SYSRD ERROR 
   GOTO 34
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE FMU75,LSFMD2(16), LOCK
*** 5.2.20 FMU75 - COPY CONTROLWARE TO 885-1X DRIVE 
**
*          PURPOSE- 
*          FMU75 COPIES 7155-1/1X CONTROLWARE FROM THE SYSTEM SCRATCH 
*          FILE TO THE 885-1X DISK. 
* 
*          METHOD-
*          FMU75 USES A SUBROUTINE TO READ ONE SYSTEM FILE AND PACK IT
*          IN THE INPUT BUFFER.  THE PACKED INPUT BUFFER IS THEN COPIED 
*          TO THE OUTPUT BUFFER ONE WORD AT A TIME.  WHEN THE OUTPUT
*          BUFFER IS FULL, FMU75 CALLS SUBMODULE FMU75A TO WRITE THE
*          SECTOR TO DISK.  THIS SUBMODULE WILL TERMINATE WHEN THE LAST 
*          SECTOR HAS BEEN WRITTEN.  WHEN THE LAST WORD OF THE INPUT
*          BUFFER HAS BEEN MOVED TO THE OUTPUT BUFFER, FMU75 READS
*          ANOTHER SYSTEM FILE, PACKS IT, AND THE ABOVE PROCESS 
*          CONTINUES UNTIL ALL OF THE CONTROLWARE HAS BEEN COPIED TO
*          DISK.
* 
*          ENTRY- 
*          FMU75 ASSUMES THAT THE SCRATCH FILE CONTAINS THE CONTROLWARE 
*          TO BE COPIED TO THE DISK.
*          FMU75 ALSO REQUIRES TRACK 2 OF THE MAP CYLINDER TO BE FLAWED.
*          IF IT IS NOT FLAWED, RUN MODULE FMU64 TO SET DEFECTIVE 
*          SECTORS AT CYLINDER 1511 TRACK 2, SECTORS 41, 40, AND 37.
*IF DEF,CMSE17X 
*          THE CMSE SCRATCH FILE CAN BE CREATED AS FOLLOWS--
*            1. CR,ON.        TO TURN CARD READER ON
*            2. LC,10000.     TO READ CONTROLWARE TO CM 
*            3. *WC,SCRACH,10000,15514 FOR MA721 VERSIONS 1-5 
*               *WC,SCRACH,10000,16456 FOR MA721 VERSIONS 6-X 
*ENDIF
/ 
*          EXIT-
*          FMU75 TERMINATES IN SUBMODULE FMU75A WITH AN END STATEMENT.
*          REGISTER CONTENTS ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU75 CALLS SUBMODULE FMU75A TO WRITE EACH SECTOR OF 
*          CONTROLWARE TO THE DISK. 
* 
*          REGISTERS USED-
*          FMU75 USES REGISTERS B0 TO B8, BA, AND WC.  REGISTERS ARE
*          USED AS FOLLOWS--
*            B0 - CYLINDER
*            B1 - TRACK 
*            B2 - SECTOR
*            B3 - COUNTER FOR PACKED INPUT BUFFER DATA
*            B4 - COUNTER FOR OUTPUT BUFFER DATA
*            B5 - SYSRD COUNTER 
*            B6 - STATUS OF SYSRD 
*            B7 - INPUT BUFFER PACKING METHOD 
*            B8 - LENGTH OF PACKED INPUT BUFFER 
*            B9 - NONZERO IF CONTROLWARE IS LONGER LENGTH 
*            B11- NONZERO IF CONTROLWARE HAS 77-TABLE 
*            B12- EXPECTED LENGTH OF LAST SYSRD 
*            BA - POINTER TO PACKED INPUT BUFFER DATA 
*            WC - POINTER TO UNPACKED BUFFER DATA 
* 
*          BUFFERS USED-
*          FMU75 USES THE INPUT BUFFER FOR CONTROLWARE READ FROM THE
*          SYSTEM SCRATCH FILE.  THE OUTPUT BUFFER IS USED FOR WRITING
*          CONTROLWARE TO THE DISK SECTOR.  EACH SECTOR CONTAINS 3856 
*          BITS OF DATA FOLLOWED BY 8 UNUSED BITS.
* 
* 
/  - COPY 7155-1/1X CONTROLWARE TO 885-1X - 
/ 
1  FORMAT FMU75 COPY 7155-1/1X CONTROLWARE TO 885-1X
2  FORMAT       CHANNEL *O    UNIT *O 
3  FORMAT CONTROLWARE DECK WRONG LENGTH 
4  FORMAT SYSRD EXPECTED IS 45D REM *DED WORDS
5  FORMAT        ACTUAL IS *DEC  REM *DEC 
6  FORMAT  SYSRD EXPECTED IS 52D REM *DED WORDS 
20 BLANK
   MSG 1 TO DISPLAY, PRINT
   MSG 1 TO LINE 5
   MSG 2 (SB(61),SB(63)) TO LINE 7
   IF(ES.AND.TM.NE.0)MSG 2 (SB(61),SB(63)) TO PRINT 
   B0=1511                        * STARTING CYLINDER 
   B1=2                           * STARTING TRACK
   B2=1                           * STARTING SECTOR 
   SYSREW 
   GOSUB 40                       * SYSRD AND PACK IT 
22 COPY IB(B3) TO OB(B4) FOR 1
   IF (B4 NE 501) GOTO 24         * IF OB NOT FULL
   CALL 75A                       * WRITE ONE SECTOR
   IF (B3 EQ 325) GOTO 26         * IF IB FULL
   IF (B7 EQ 0) GOTO 30           * IF IB ON WORD BOUNDARY
   GOTO 32
24 IF (B3 NE B8) GOTO 30          * IF IB NOT FULL
26 GOSUB 40                       * SYSRD AND PACK IT 
   IF (B7 NE 1) GOTO 22           * IF OB(B4) NOT FILLED
   GOTO 32
30 B3=B3+1                        * INCREMENT IB POINTER
32 IF (B4 NE 501) GOTO 34         * TO INCREMENT OB POINTER 
   B4=0 
   GOTO 22
34 B4=B4+1                        * INCREMENT OB POINTER
   GOTO 22
* 
*   DESCRIPTION 
/         SYSRD ONE BLOCK AND PACK IT SUBROUTINE
/ 
*         1.  SYSRD ONE BLOCK FROM THE SCRATCH FILE AND INSURE
*             THE FILE HAS THE CORRECT NUMBER OF WORDS. 
*         2.  DETERMINE THE PACKING METHOD. 
*             A.  IF B7 = 0 PACK IB(0) THROUGH IB(500) INTO IB(0) 
*                 THROUGH IB(325).
*             B.  IF B7 = 1 PACK IB(0) THROUGH IB(500) INTO IB(0) 
*                 THROUGH IB(325), RIGHT SHIFT THE PACKED DATA BY 
*                 4 AND RESTORE IB(0) BITS 8-11 FROM THE OUTPUT BUFFER. 
*             C.  IB B7 = 2 PACK IB(0) THROUGH IB(500) INTO IB(0) 
*                 THROUGH IB(325), RIGHT SHIFT THE PACKED DATA BY 8 
*                 AND RESTORE IB(0) BITS 4-11 FROM THE OUTPUT BUFFER. 
*         3.  UPDATE PACKING METHOD (B7 = B7 +1 MODULO 3) AND RETURN. 
* 
40 B3=0                           * SET COUNTER FOR IB DATA 
   SYSRD, STATUS TO B6
   IF (B9 EQ 0) GOTO 41           * IF SHORT CONTROLWARE LENGTH 
   IF (B5 NE 52D) GOTO 42         * IF NOT LAST SYSRD 
   IB(WT) = 0 
   B12 = 230D                     * REM W/O 77-TABLE
   IF (B11 NE 0) B12 = 310D       * REM W/77-TABLE
   IF (WT EQ B12) GOTO 43         * IF LAST SYSRD OK
   GOTO 70                        * DECK IS WRONG LENGTH
41 IF (B5 NE 45D) GOTO 42         * IF NOT LAST SYSRD 
   IB(WT) = 0 
   B12 = 60D                      * REM W/O 77-TABLE
   IF (B11 NE 0) B12 = 140D       * REM W/77-TABLE
   IF (WT EQ B12) GOTO 43         * IF LAST SYSRD OK
   GOTO 70                        * DECK IS WRONG LENGTH
42 IF (B6 NE 0) GOTO 70           * IF DECK IS WRONG LENGTH 
43 B5 = B5 + 1                    * SYSRD COUNTER 
   WC=0                           * PACKED POINTER
   BA=0                           * UNPACKED IB POINTER 
   IB(500)=0
   B8=325                         * SET NORMAL LENGTH 
   IF (B5 NE 1) GOTO 45           * IF NOT FIRST READ 
   B11 = 0                        * CLEAR 77-TABLE FLAG 
   IF (IB(0) NE 7700) GOTO 44     * IF NO 77-TABLE
   B11 = 1                        * SET 77-TABLE FLAG 
   BA=120                         * SKIP TABLE
   B8=237                         * SET SHORT LENGTH
44 IF (IB(BA+5) NE 11) GOTO 45    * IF SHORT CONTROLWARE LENGTH 
   B9 = 1 
45 IF (B7 NE 0) GOTO 50           * IF PACK AND SHIFT 4 OR 8
/         PACK THE INPUT BUFFER. (NO SHIFTING)
46 IB(501)=IB(BA+1) RS 4          * PACK 24 BITS
   IB(WC)=IB(BA) LS 4 XOR IB(501) 
   IB(501)=IB(BA+1) AND 17 LS 10
   IB(WC+1)=IB(501) XOR IB(BA+2)
   BA=BA+3                        * INCREMENT UNPACKED POINTER
   WC=WC+2                        * INCREMENT PACKED POINTER
   IF (BA LT 500) GOTO 46         * IF MORE BITS TO PACK
   IF (B8 EQ 237) GOTO 64         * IF 77 TABLE SKIPPED 
   B7=B7+1                        * INCREMENT PACKING METHOD
   GOTO 64
50 IF (B7 NE 1) GOTO 54           * IF PACK AND SHIFT 8 
/         PACK AND SHIFT IB RIGHT 4 BITS
   IB(502)=OB(B4) XOR IB(BA)
52 IB(WC)=IB(WC) XOR IB(BA)       * PACK 24 BITS
   IB(WC+1)=IB(BA+1) LS 4 
   IB(WC+1)=IB(BA+2) RS 4 XOR IB(WC+1)
   IB(WC+2)=IB(BA+2) AND 17 LS 10 
   BA=BA+3                        * INCREMENT UNPACKED POINTER
   WC=WC+2                        * INCREMENT PACKED POINTER
   IF (BA NE 501) GOTO 52         * IF MORE BITS TO PACK
   B7=B7+1                        * INCREMENT PACKING METHOD
   GOTO 60
/         PACK AND SHIFT IB RIGHT 8 BITS
54 IB(502)=IB(0) RS 4 XOR OB(B4)
56 IB(501)=IB(BA) AND 17 LS 10
   IB(WC)=IB(BA) RS 4 XOR IB(WC)
   IB(WC+1)=IB(501) XOR IB(BA+1)
   IB(WC+2)=IB(BA+2) LS 4 
   BA=BA+3                        * INCREMENT UNPACKED POINTER
   WC=WC+2                        * INCREMENT PACKED POINTER
   IF (BA NE 501) GOTO 56         * IF MORE BITS TO PACK
   B7=0                           * UPDATE PACKING METHOD 
60 IB(0)=IB(502)
64 RETURN 
70 MSG 3 TO LINE 11 
   IF (B9 EQ 0) GOTO 74           * IF SHORT CONTROLWARE LENGTH 
   MSG 6 (B12) TO LINE 11 
   GOTO 76
74 MSG 4 (B12) TO LINE 13 
76 MSG 5 (B5,WT) TO LINE 14 
   PICTURE
   END 20 
COMPILE 
   MODULE FMU75A,LSFMD2(16), LOCK 
*** 5.2.21 FMU75A - WRITE CONTROLWARE TO 885-1X DISK (SUBROUTINE) 
**
*          PURPOSE- 
*          FMU75A IS CALLED BY FMU75 TO WRITE ONE SECTOR OF CONTROLWARE 
*          TO THE DISK.  FMU75A ALSO PROVIDES A DISPLAY OF DETAILED 
*          STATUS IF AN ERROR OCCURS. 
* 
*          METHOD-
*          FMU75A WRITES ONE SECTOR USING THE WRITE PROTECTED SECTOR
*          COMMAND.  FMU75A THEN CHECKS TO SEE IF THE LAST SECTOR WAS 
*          WRITTEN.  THE LAST SECTOR IS SECTOR 36B AND IT CONTAINS 3856 
*          DATA BITS AND 8 UNUSED BITS.  IF THE LAST SECTOR WAS WRITTEN 
*          FMU75A DISPLAYS THE CONTROLWARE NUMBER AND REVISION
*          CONTAINED IN THE CONTROLWARE BINARY.  THE SUBMODULE THEN 
*          TERMINATES WITH AN END STATEMENT.  IF THE SECTOR WRITTEN WAS 
*          NOT THE LAST SECTOR FMU75A INCREMENTS THE SECTOR ADDRESS BY
*          1.  SINCE THE WRITE DOES NOT WRITE A MULTIPLE OF 12-BIT
*          WORDS THE INPUT BUFFER MUST BE SHIFTED BEFORE MORE WORDS CAN 
*          BE COPIED FROM THE INPUT BUFFER TO THE OUTPUT BUFFER.  IF
*          THE PACKING METHOD IS 1 THE INPUT BUFFER IS RIGHT SHIFTED BY 
*          8 BITS.  IF THE PACKING METHOD IS 0 OR 2 THE INPUT BUFFER IS 
*          LEFT SHIFTED BY 4 BITS.  AFTER THE BUFFER HAS BEEN SHIFTED 
*          THE PACKING METHOD IS DECREMENTED BY 1 AND FMU75A RETURNS TO 
*          FMU75. 
/ 
*          ENTRY- 
*          FMU75A IS CALLED BY FMU75.  INITIALLY THE CYLINDER, TRACK, 
*          AND SECTOR ARE IN REGISTERS B0, B1, AND B2.  REGISTER B7 
*          INITIALLY CONTAINS THE PACKING METHOD. 
* 
*          EXIT-
*          FMU75A TERMINATES BY RETURNING TO FMU75 OR WITH AN END 
*          STATEMENT.  REGISTER B2 CONTAINS THE NUMBER FOR THE NEXT 
*          SECTOR TO BE WRITTEN.  REGISTER B7 CONTAINS THE PACKING
*          METHOD.
* 
*          SUBMODULES REFERENCED- 
*          FMU75A DOES NOT CALL ANY SUBMODULES. 
* 
*          REGISTERS USED-
*          FMU75A USES REGISTERS B0, B1, B2, B7, AND WC.  REGISTERS ARE 
*          USED AS FOLLOWS--
*            B0 - CYLINDER TO WRITE CONTROLWARE 
*            B1 - TRACK 
*            B2 - SECTOR
*            B7 - INPUT BUFFER PACKING METHOD 
*            B9 - NONZERO IF CONTROLWARE IS LONGER LENGTH 
*            WC - POINTER TO UNPACKED INPUT BUFFER DATA 
* 
*          BUFFERS USED-
*          FMU75A USES THE INPUT BUFFER FOR CONTROLWARE READ FROM THE 
*          SYSTEM SCRATCH FILE.  THE OUTPUT BUFFER IS USED FOR WRITING
*          CONTROLWARE TO THE DISK SECTOR.
* 
* 
/  - WRITE CONTROLWARE TO DISK (SUBROUTINE) - 
/ 
1  FORMAT FMU75A ABORT-EC=*OCT AT LINE *OCT,GS=*OCT,LF=*OCT 
2  FORMAT   COPY OF MA*H*H REV *D CONTROLWARE COMPLETE
3  FORMAT                  DETAILED STATUS
4  FORMAT  1 = *OCT  2 = *OCT  3 = *OCT  4 = *OCT  5 = *OCT 
5  FORMAT  6 = *OCT  7 = *OCT  8 = *OCT  9 = *OCT 10 = *OCT 
6  FORMAT 11 = *OCT 12 = *OCT 13 = *OCT 14 = *OCT 15 = *OCT 
7  FORMAT 16 = *OCT 17 = *OCT 18 = *OCT 19 = *OCT 20 = *OCT 
10 FORMAT ERROR - CYLINDER 1511B TRACK 2 NOT FLAWED 
15 FORMAT FMU75A WROTE SECTOR *O
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 IF (B9 EQ 0) GOTO 22           * IF SHORT CONTROLWARE LENGTH 
   IF (B2 NE 6) GOTO 22           * IF SECTOR NOT 6 
   B9 = B9 + 1                    * COUNT SECTORS NOT WRITTEN TO DISK 
   IF (B9 EQ 7) GOTO 22           * IF 5 SECTORS HAVE BEEN SKIPPED
   GOTO 23
22 RES DRIVE, ABT 70
   WRPRO CYL B0 TRK B1 SEC B2, ABT 60 
   IF (B2 EQ 36) GOTO 50          * IF DONE 
   MSG 15 (B2) TO DISPLAY 
   B2=B2+1                        * UPDATE SECTOR ADDRESS 
23 IB(326) = 0
   WC=0 
   IF (B7 EQ 1) GOTO 40           * TO RIGHT SHIFT IB 8 BITS
/         LEFT SHIFT INPUT BUFFER BY 4 BITS 
25 IB(WC)=IB(WC) AND 377 LS 4 
   IB(WC)=IB(WC+1) RS 10 XOR IB(WC) 
   IF (WC EQ 325) GOTO 30         * IF DONE SHIFTING
   WC=WC+1                        * INCREMENT POINTER 
   GOTO 25
30 IF (B7 EQ 0) GOTO 35           * TO DECREMENT PACKING METHOD 
   B7=B7-1                        * DECREMENT PACKING METHOD
   EXIT 
35 B7=2 
   EXIT 
/         RIGHT SHIFT IB BY 8 BITS
40 WC=324 
46 IB(501)=IB(WC) AND 377 LS 4
   IB(WC+1)=IB(WC+1) RS 10 XOR IB(501)
   IF (WC EQ 0) GOTO 30           * IF DONE SHIFTING
   WC=WC-1
   GOTO 46
50 IB(0)=OB(500) RS 4 
   IB(1)=OB(500) AND 17 LS 4
   IB(1)=OB(501) RS 10 XOR IB(1)
   IB(2)=OB(475) RS 10
   MSG 2 (IB(0),IB(1),IB(2)) TO LINE 11 
   GOTO 74
60 IF(SB(0) NE 5000) GOTO 70      * IF TRACK IS FLAWED
   IF (SB(1) NE 10) GOTO 70       * IF TRACK IS FLAWED
   IF (SB(5) AND 4000 NE 0) GOTO 70    * IF TRACK IS FLAWED 
   MSG 10 TO LINE 11
70 MSG 3 TO LINE 15 
   MSG 4, 5 WORDS FROM SB(1) TO LINE 16 
   MSG 5, 5 WORDS FROM SB(6) TO LINE 17 
   MSG 6, 5 WORDS FROM SB(13) TO LINE 20
   MSG 7, 5 WORDS FROM SB(20) TO LINE 21
   MSG 1 (EC,EA,SB,LF) TO LINE 13 
   MSG EM TO LINE 23
74 PICTURE
   END 20 
COMPILE 
   MODULE FMU76, LSFMD2, (16), LOCK 
*** 5.2.22 FMU76 - READ 7155 CONTROLWARE REVISION (DC=16) 
**
*          PURPOSE- 
*          FMU76 DISPLAYS THE REVISION NUMBER OF THE CONTROLWARE
*          CURRENTLY IN THE 7155 DISK CONTROLLER. 
* 
*          METHOD-
*          FMU76 OBTAINS DETAILED STATUS AND EXTRACTS THE CONTROLWARE 
*          REVISION NUMBER FROM WORD 4. 
* 
*          ENTRY- 
*          FMU76 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE 
*          EXECUTION. 
/ 
*          EXIT-
*          FMU76 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU76 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU76 USES REGISTERS B0 AND B5.  REGISTERS ARE USED AS 
*          FOLLOWS--
*            B0 - CONTROLWARE REVISION NUMBER 
*            B5 - K DISPLAY LINE NUMBER 
* 
*          BUFFERS USED-
*          FMU76 USES THE STATUS BUFFER FOR DETAILED STATUS READ FROM 
*          THE CONTROLLER.                                               FMU
*                                                                        FMU
*                                                                        FMU
/  - READ CONTROLWARE REVISION -
/                                                                        FMU
1  FORMAT CURRENT CONTROLWARE REVISION - CH=*O, EQ=*O 
2  FORMAT REVISION = *D 
15 FORMAT MODULE FMU76
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 BLANK                                                                 FMU
   MSG 15 TO DISPLAY
   MSG 1 (SB(61),SB(62)) TO LINE 2
   B5=3                           * SET DISPLAY LINE
   RES CONTROLLER, ABT 74 
   STATUS DETAIL, ABT 74          * REQUEST DETAILED STATUS 
   REL, ABT 74
   B0=SB(4) RS 6                  * EXTRACT REVISION
   B0=B0 AND 17 
   MSG 2 (B0) TO LINE 4           * DISPLAY REVISION
24 MSG 16 TO LINE 6 
   PICTURE
   GOTO 77                        * END OF MODULE 
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
77 END 20 
COMPILE 
   MODULE FMU77, LSFMD2, (16), LOCK 
*** 5.2.23 FMU77 - WRITE 885-1X DIAGNOSTIC TRACKS 
**
*          PURPOSE- 
*          FMU77 WRITES A PATTERN ON TRACKS 3 THRU 39 OF CYLINDER 841.
*          THIS PATTERN IS FOR USE BY DIAGNOSTIC PROGRAMS.  THE 
*          HEXADECIMAL FORM OF THE PATTERN IS AS FOLLOWS--
*                         E36A AAAA 
*          THIS PATTERN IS REPEATED TO FILL EACH SECTOR.
* 
*          METHOD-
*          FMU77 BUILDS THE REQUIRED PATTERN IN THE OUTPUT BUFFER.
*          THE WRITE CODED SECTOR FUNCTION IS THEN USED TO COPY THE 
*          PATTERN TO THE DISK. 
* 
*          ENTRY- 
*          FMU77 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE 
*          EXECUTION. 
/ 
*          EXIT-
*          FMU77 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          FMU77 CALLS SUBMODULE FMU98G TO DISPLAY DETAILED STATUS IF 
*          AN I/O FUNCTION IS ABORTED.
* 
*          REGISTERS USED-
*          FMU77 USES REGISTERS B0 TO B2, AND B4 TO B7.  REGISTERS ARE
*          USED AS FOLLOWS--
*            B0 - CYLINDER
*            B1 - TRACK 
*            B2 - SECTOR
*            B4 - NUMBER OF SECTORS TO WRITE
*            B5 - DISPLAY LINE NUMBER 
*            B6 - OUTPUT BUFFER INDEX 
*            B7 - PATTERN INDEX 
* 
*          BUFFERS USED-
*          FMU77 USES THE OUTPUT BUFFERS AS FOLLOWS-- 
*            OB(0) TO OB(7) - PATTERN 
*            OB(0) TO OB(501) - WRITE DATA
* 
* 
/  - WRITE 885-1X DIAGNOSTIC TRACKS - 
/ 
1  FORMAT WRITE 885-1X DIAGNOSTIC TRACKS
2  FORMAT DIAGNOSTIC TRACKS WRITTEN 
3  FORMAT SKIPPED FLAWED TRACK - CY=*OCT, TR=*O 
15 FORMAT FMU77 TRACK *O
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
17 FORMAT FMU77 PAUSE - WRITE DIAGNOSTIC TRACKS 
/  - DIAGNOSTIC DATA PATTERN -
/ 
   DATA (OB,3H) E36A,AAAA,E36A,AAAA,E36A,AAAA 
20 BLANK
   B0=841D                        * SET CYLINDER
   B1=3                           * SET STARTING TRACK
   MSG 15 (B1) TO DISPLAY 
   MSG 1 TO LINE 2
   B5=4                           * SET DISPLAY LINE
   MSG 17 TO DISPLAY,PRINT
   PAUSE                                                                 FMU
   B6=10B                         * SET OB INDEX
   B7=0                           * SET PATTERN INDEX 
24 OB(B6)=OB(B7)                  * LOAD OUTPUT BUFFER
   B7=B7 + 1 AND 7                * NEXT PATTERN
   GOTO 24 WHILE (B6+1 LT 504)    * IF BUFFER NOT FULL
/ 
/  WRITE TRACKS 
30 RES DRIVE, ABT 74
   B4=8D                          * SET NUMBER OF SECTORS 
   B2=0                           * SET STARTING SECTOR 
   WRITE B4 CODED SECTORS AT CYL B0 TRK B1 SEC B2, ABT 60 
34 MSG 15 (B1) TO DISPLAY 
   MSG 15 (B1) TO LINE B5 
   B1 = B1 + 1                    * NEXT TRACK
   IF (B1 LE 47) GOTO 30          * IF MORE TRACKS
   MSG 2 TO LINE B5 
   B5=B5+2                        * INCREMENT DISPLAY LINE
   MSG 16 TO LINE B5
   PICTURE                                                               FMU
   GOTO 77
/ 
/  CHECK FOR TRACK FLAW 
60 IF (SB NE 5000) GOTO 74        * IF GENERAL STATUS NE 5000 
   IF (SB(5) AND 4000 EQ 0) GOTO 74    * IF NOT TRACK FLAW
   MSG 3 (B0,B1) TO LINE B5       * DISPLAY TRACK FLAW MESSAGE
   B5=B5+2
   GOTO 34                        * GO ON TO NEXT TRACK 
/ 
/  DISPLAY DETAILED STATUS
74 CALL 98G                       * DISPLAY DETAILED STATUS 
   B5=B5+1
   MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE                                                                  FMU
*IF -DEF,MVE
   MODULE FMU98A, FMDFT, (07), LOCK                                      FMU
*IF DEF,CMSE17X,1 
*** 5.2.68 FMU98A - DISPLAY ERROR MESSAGES (SUBROUTINE) 
*IF -DEF,CMSE17X,1
*** 5.2.66 FMU98A - DISPLAY ERROR MESSAGES (SUBROUTINE) 
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU98A DISPLAYS THE ERROR CODE, LINE NUMBER, LAST FUNCTION,   FMU
*          GENERAL STATUS, AND DETAILED STATUS.  THIS MODULE IS CALLED   FMU
*          WHEN AN I/O COMMAND IS ABORTED.                               FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU98A DISPLAYS THE STATUS RESULTING FROM THE LAST I/O        FMU
*          COMMAND.  THE DETAILED STATUS DISPLAYED IS THAT CONTAINED IN  FMU
*          THE STATUS BUFFER.  FMU98A DOES NOT REQUEST STATUS FROM THE   FMU
*          CONTROLLER.                                                   FMU
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU98A ASSUMES THAT REGISTER B5 CONTAINS THE LINE NUMBER FOR  FMU
*          THE K DISPLAY.  THE STATUS BUFFER IS ASSUMED TO CONTAIN       FMU
*          GENERAL AND DETAILED STATUS.                                  FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU98A TERMINATES BY RETURNING TO THE CALLING MODULE.
*          REGISTER B5 CONTAINS THE K DISPLAY LINE NUMBER.               FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU98A DOES NOT CALL ANY SUBMODULES.                          FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU98A USES REGISTER B5 FOR THE K DISPLAY LINE NUMBER         FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU98A USES THE STATUS BUFFER FOR GENERAL AND DETAILED        FMU
*          STATUS.  BUFFER LOCATIONS ARE AS FOLLOWS--                    FMU
*            SB(0) - GENERAL STATUS                                      FMU
*            SB(1) TO SB(20D) - DETAILED STATUS                          FMU
*                                                                        FMU
*                                                                        FMU
/  - DISPLAY ERROR MESSAGES (SUBROUTINE) -                               FMU
/       ENTER WITH DISPLAY LINE NUMBER IN B5.                            FMU
/                                                                        FMU
1  FORMAT                                                                FMU
2  FORMAT ERROR CODE = *OCT AT LINE *OCT, LAST FCN = *OCT                FMU
3  FORMAT GENERAL STATUS = *OCT                                          FMU
4  FORMAT DETAILED STATUS - -                                            FMU
5  FORMAT  1=*OCT   2=*OCT   3=*OCT   4=*OCT   5=*OCT                    FMU
6  FORMAT  6=*OCT   7=*OCT   8=*OCT   9=*OCT  10=*OCT                    FMU
7  FORMAT 11=*OCT  12=*OCT  13=*OCT  14=*OCT  15=*OCT                    FMU
10 FORMAT 16=*OCT  17=*OCT  18=*OCT  19=*OCT  20=*OCT                    FMU
20 MSG 1 TO LINE B5                                                      FMU
   B5=B5+1
   MSG EM TO LINE B5
   B5=B5+1
   MSG 1 TO LINE B5 
   B5=B5+1                                                               FMU
   MSG 2 (EC,EA,LF) TO LINE B5                                           FMU
   B5=B5+1                                                               FMU
   MSG 3 (SB) TO LINE B5                                                 FMU
   B5=B5+2                                                               FMU
   MSG 4 TO LINE B5                                                      FMU
   B5=B5+1                                                               FMU
   MSG 5, 5 WORDS FROM SB(1) TO LINE B5                                  FMU
   B5=B5+1                                                               FMU
   MSG 6, 5 WORDS FROM SB(6) TO LINE B5                                  FMU
   B5=B5+1                                                               FMU
   MSG 7, 5 WORDS FROM SB(11D) TO LINE B5                                FMU
   B5=B5+1                                                               FMU
   MSG 10, 5 WORDS FROM SB(16D) TO LINE B5                               FMU
   B5=B5+1                                                               FMU
   EXIT                                                                  FMU
   END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU98B, FMDFT, (07), LOCK                                      FMU
*IF DEF,CMSE17X,1 
*** 5.2.69 FMU98B - DISPLAY FLAWS (SUBROUTINE)
*IF -DEF,CMSE17X,1
*** 5.2.67 FMU98B - DISPLAY FLAWS (SUBROUTINE)
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU98B DISPLAYS TRACK AND SECTOR FLAW TABLES FROM DATA        FMU
*          CONTAINED IN THE OUTPUT BUFFER.                               FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU98B INTERPRETS THE DATA CONTAINED IN THE OUTPUT BUFFER     FMU
*          AS EITHER THE TRACK FLAW TABLE OR ONE SECTOR OF               FMU
*          THE SECTOR FLAW TABLE.  REGISTER B6 IS A FLAG TO INDICATE     FMU
*          WHICH DISPLAY HEADING AND FORMAT TO USE.  FLAWS ARE ADDED TO  FMU
*          THE MAP UNTIL THE END OF THE SECTOR OR END OF THE MAP IS      FMU
*          DETECTED.  END OF SECTOR OCCURS AFTER 120D ENTRIES.  WHEN     FMU
*          END OF SECTOR IS FOUND, FMU98B RETURNS TO THE CALLING MODULE. FMU
*          IF THE END OF THE MAP IS FOUND BEFORE REACHING THE END OF     FMU
*          THE SECTOR, A MESSAGE IS DISPLAYED INDICATING THE END OF THE  FMU
*          FLAW MAP, AND FMU98B RETURNS TO THE CALLING MODULE.           FMU
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU98B ASSUMES THAT THE OUTPUT BUFFER CONTAINS ONE SECTOR OF  FMU
*          THE FLAW MAP.  REGISTER B6 IS USED AS A FLAG TO SELECT        FMU
*          EITHER TRACK OR SECTOR FLAW TABLES.  IF B6 IS 1 THEN TRACK    FMU
*          FLAWS ARE DISPLAYED.  IF B6 IS 2 THEN SECTOR FLAWS ARE        FMU
*          DISPLAYED.                                                    FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU98B TERMINATES BY RETURNING TO THE CALLING MODULE.         FMU
*          REGISTER B3 CONTAINS THE INDEX TO THE LAST TABLE ENTRY READ.  FMU
*          THIS IS USED BY THE CALLING MODULE TO DETERMINE IF THE END    FMU
*          OF THE TABLE WAS FOUND.                                       FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU98B DOES NOT CALL ANY SUBMODULES.                          FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU98B USES REGISTERS B0 TO B7, AND BA.  REGISTERS ARE USED   FMU
*          AS FOLLOWS--                                                  FMU
*            B0 - CYLINDER                                               FMU
*            B1 - TRACK                                                  FMU
*            B2 - SECTOR                                                 FMU
*            B3 - OUTPUT BUFFER INDEX                                    FMU
*            B4 - OUTPUT BUFFER INDEX                                    FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - TRACK/SECTOR FLAW MAP                                  FMU
*            B7 - INDEX FOR DISPLAY FORMAT                               FMU
*            BA - FLAW COUNT                                             FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU98B ASSUMES THAT THE OUTPUT BUFFER CONTAINS ONE SECTOR OF  FMU
*          THE FLAW TABLES.                                              FMU
*                                                                        FMU
*                                                                        FMU
/  - DISPLAY FLAWS (SUBROUTINE) -                                        FMU
/       ENTER WITH B6 = 1 FOR TRACK, OR 2 FOR SECTOR                     FMU
/                                                                        FMU
1  FORMAT - - -  TRACK FLAW TABLE   - - -                                FMU
2  FORMAT - - -  SECTOR FLAW TABLE  - - -                                FMU
3  FORMAT - - -     END OF TABLE    - - -                                FMU
4  FORMAT *DE   CY = *OCT   TR = *O                                      FMU
5  FORMAT *DEC   CY = *OCT   TR = *O   SE = *O                           FMU
6  FORMAT                                                                FMU
7  FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 B3=0                           * SET OB INDEX                         FMU
   B7=B6+3                        * SELECT MESSAGE NUMBER                FMU
   MSG B6 TO LINE 4                                                      FMU
26 B5=5                           * SET DISPLAY LINE                     FMU
30 B4=B3+1                                                               FMU
   IF (OB(B3) AND 4000 EQ 0) GOTO 40   * IF END OF MAP                   FMU
31 B0=OB(B3) AND 1777             * EXTRACT CYLINDER                     FMU
   B1=OB(B4) RS 6                 * EXTRACT TRACK                        FMU
   B2=OB(B4) AND 77               * EXTRACT SECTOR                       FMU
   MSG B7 (BA,B0,B1,B2) TO LINE B5                                       FMU
   B3=B3+2                        * INCREMENT INDEX                      FMU
   BA=BA+1                        * INCREMENT FLAW COUNT                 FMU
   IF (B3 EQ 240D) GOTO 42        * IF END OF SECTOR                     FMU
   B5=B5+1                        * INCREMENT LINE COUNT                 FMU
   IF (B5 NE 35D) GOTO 30         * IF DISPLAY NOT FULL                  FMU
   PICTURE                        * PRINT PAGE                           FMU
   GOTO 26                                                               FMU
40 MSG 3 TO LINE B5               * END OF TABLE                         FMU
   B5=B5+1                                                               FMU
   MSG 6 TO LINE B5                                                      FMU
   B5=B5+1                                                               FMU
   MSG 7 TO LINE B5                                                      FMU
42 B5=B5+1                                                               FMU
   IF (B5 GE 35D) GOTO 50         * IF DISPLAY NOT FULL                  FMU
   MSG 6 TO LINE B5                                                      FMU
   GOTO 42                        * CLEAR REMAINING LINES                FMU
50 PICTURE                                                               FMU
   EXIT                                                                  FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
*ENDIF
   MODULE FMU98C, 6000, (03,05,16), LOCK
*IF DEF,CMSE17X 
*** 5.2.70 FMU98C - DISPLAY ERROR MESSAGES (SUBROUTINE) 
*ENDIF
*IF -DEF,CMSE17X
*** 5.2.68 FMU98C - DISPLAY ERROR MESSAGES (SUBROUTINE) 
*ENDIF
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU98C DISPLAYS THE ERROR CODE, LINE NUMBER, LAST FUNCTION,   FMU
*          GENERAL STATUS, AND DETAILED STATUS.  THIS MODULE IS CALLED   FMU
*          WHEN AN I/O COMMAND IS ABORTED.                               FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU98C OBTAINS GENERAL AND DETAILED STATUS FROM THE           FMU
*          CONTROLLER AND DISPLAYS THEM ON THE K DISPLAY.  IF STATUS     FMU
*          CANNOT BE OBTAINED FMU98C DISPLAYS AN ERROR MESSAGE INSTEAD.  FMU
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU98C ASSUMES THAT REGISTER B5 CONTAINS THE LINE NUMBER FOR  FMU
*          THE K DISPLAY.                                                FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU98C TERMINATES BY RETURNING TO THE CALLING MODULE.
*          REGISTER B5 CONTAINS THE K DISPLAY LINE NUMBER.               FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU98C DOES NOT CALL ANY SUBMODULES.                          FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU98C USES REGISTER B5 FOR THE K DISPLAY LINE NUMBER         FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU98C USES THE STATUS BUFFER FOR GENERAL AND DETAILED        FMU
*          STATUS.  BUFFER LOCATIONS ARE AS FOLLOWS--                    FMU
*            SB(0) - GENERAL STATUS                                      FMU
*            SB(1) TO SB(20D) - DETAILED STATUS                          FMU
*                                                                        FMU
*                                                                        FMU
/  - DISPLAY ERROR MESSAGES (SUBROUTINE) -                               FMU
/       ENTER WITH DISPLAY LINE NUMBER IN B5.                            FMU
/                                                                        FMU
1  FORMAT                                                                FMU
2  FORMAT ERROR CODE = *OCT AT LINE *OCT, LAST FCN = *OCT                FMU
3  FORMAT GENERAL STATUS = *OCT                                          FMU
4  FORMAT DETAILED STATUS - -                                            FMU
5  FORMAT  1=*OCT   2=*OCT   3=*OCT   4=*OCT   5=*OCT                    FMU
6  FORMAT  6=*OCT   7=*OCT   8=*OCT   9=*OCT  10=*OCT                    FMU
7  FORMAT 11=*OCT  12=*OCT  13=*OCT  14=*OCT  15=*OCT                    FMU
10 FORMAT 16=*OCT  17=*OCT  18=*OCT  19=*OCT  20=*OCT                    FMU
11 FORMAT ERROR - CANNOT OBTAIN GENERAL STATUS                           FMU
12 FORMAT ERROR - CANNOT OBTAIN DETAILED STATUS                          FMU
20 MSG 1 TO LINE B5                                                      FMU
   B5=B5+1                                                               FMU
   MSG EM TO LINE B5
   B5=B5+1
   MSG 1 TO LINE B5 
   B5=B5+1
   MSG 2 (EC,EA,LF) TO LINE B5                                           FMU
   B5=B5+1                                                               FMU
   RES, ABT 74                                                           FMU
   FUNC 0012, ABT 70              * REQUEST GENERAL STATUS               FMU
   STATUS 1 WORDS TO SB, ABT 70                                          FMU
   MSG 3 (SB) TO LINE B5                                                 FMU
   B5=B5+2                                                               FMU
   FUNC 0023, ABT 74              * REQUEST DETAILED STATUS              FMU
   STATUS 24 WORDS TO SB(1), ABT 74                                      FMU
   FUNC 0010                      * OPERATION COMPLETE
   MSG 4 TO LINE B5                                                      FMU
   B5=B5+1                                                               FMU
   MSG 5, 5 WORDS FROM SB(1) TO LINE B5                                  FMU
   B5=B5+1                                                               FMU
   MSG 6, 5 WORDS FROM SB(6) TO LINE B5                                  FMU
   B5=B5+1                                                               FMU
   MSG 7, 5 WORDS FROM SB(11D) TO LINE B5                                FMU
   B5=B5+1                                                               FMU
   MSG 10, 5 WORDS FROM SB(16D) TO LINE B5                               FMU
   B5=B5+1                                                               FMU
   EXIT                                                                  FMU
70 MSG 11 TO LINE B5                                                     FMU
   B5=B5+1                                                               FMU
   MSG 1 TO LINE B5 
   B5=B5+1
   MSG EM TO LINE B5
   B5=B5+1
   FUNC 0010                      * OPERATION COMPLETE
   EXIT                                                                  FMU
74 MSG 12 TO LINE B5                                                     FMU
   B5=B5+1                                                               FMU
   MSG 1 TO LINE B5 
   B5=B5+1
   MSG EM TO LINE B5
   B5=B5+1
   FUNC 0010                      * OPERATION COMPLETE
   EXIT                                                                  FMU
   END 20                                                                FMU
COMPILE                                                                  FMU
   MODULE FMU98D, 6000, (03,05,16), LOCK
*IF DEF,CMSE17X 
*** 5.2.71 FMU98D - DISPLAY FLAWS (SUBROUTINE)
*ENDIF
*IF -DEF,CMSE17X
*** 5.2.69 FMU98D - DISPLAY FLAWS (SUBROUTINE)
*ENDIF
**                                                                       FMU
*          PURPOSE-                                                      FMU
*          FMU98D DISPLAYS TRACK AND SECTOR FLAW TABLES FROM DATA        FMU
*          CONTAINED IN THE OUTPUT BUFFER.                               FMU
*                                                                        FMU
*          METHOD-                                                       FMU
*          FMU98D USES THE DATA CONTAINED IN THE OUTPUT BUFFER           FMU
*          TO DISPLAY EITHER THE TRACK OR SECTOR FLAW TABLE.             FMU
*          REGISTER B6 IS A FLAG TO INDICATE WHICH TABLE TO DISPLAY.     FMU
*          FMU98D CHECKS EACH ENTRY IN THE MAP AND DISPLAYS THOSE OF     FMU
*          THE SPECIFIED TYPE.  THE MAP MAY CONTAIN UP TO 120 ENTRIES.   FMU
*          WHEN THE ENTIRE MAP HAS BEEN DISPLAYED FMU98D DISPLAYS A      FMU
*          MESSAGE INDICATING THE END OF THE FLAW MAP AND RETURNS TO     FMU
*          THE CALLING MODULE.                                           FMU
/                                                                        FMU
*          ENTRY-                                                        FMU
*          FMU98D ASSUMES THAT THE OUTPUT BUFFER CONTAINS ONE SECTOR OF  FMU
*          THE FLAW MAP.  REGISTER B6 IS USED AS A FLAG TO SELECT        FMU
*          EITHER TRACK OR SECTOR FLAW TABLES.  IF B6 IS 1 THEN TRACK    FMU
*          FLAWS ARE DISPLAYED.  IF B6 IS 2 THEN SECTOR FLAWS ARE        FMU
*          DISPLAYED.                                                    FMU
*                                                                        FMU
*          EXIT-                                                         FMU
*          FMU98D TERMINATES BY RETURNING TO THE CALLING MODULE.         FMU
*                                                                        FMU
*          SUBMODULES REFERENCED-                                        FMU
*          FMU98D DOES NOT CALL ANY SUBMODULES.                          FMU
*                                                                        FMU
*          REGISTERS USED-                                               FMU
*          FMU98D USES REGISTERS B0 TO B7, AND BA.  REGISTERS ARE USED   FMU
*          AS FOLLOWS--                                                  FMU
*            B0 - CYLINDER                                               FMU
*            B1 - TRACK                                                  FMU
*            B2 - SECTOR                                                 FMU
*            B3 - OUTPUT BUFFER INDEX                                    FMU
*            B4 - OUTPUT BUFFER INDEX                                    FMU
*            B5 - K DISPLAY LINE NUMBER                                  FMU
*            B6 - TRACK/SECTOR FLAW MAP                                  FMU
*            B7 - INDEX FOR DISPLAY FORMAT                               FMU
*            BA - FLAW COUNT                                             FMU
*                                                                        FMU
*          BUFFERS USED-                                                 FMU
*          FMU98D ASSUMES THAT THE OUTPUT BUFFER CONTAINS ONE SECTOR OF  FMU
*          THE FLAW TABLES.                                              FMU
*                                                                        FMU
*                                                                        FMU
/  - DISPLAY FLAWS (SUBROUTINE) -                                        FMU
/       ENTER WITH B6 = 1 FOR TRACK, OR 2 FOR SECTOR                     FMU
/                                                                        FMU
1  FORMAT - - -  TRACK FLAW TABLE   - - -                                FMU
2  FORMAT - - -  SECTOR FLAW TABLE  - - -                                FMU
3  FORMAT - - -     END OF TABLE    - - -                                FMU
4  FORMAT *DE   CY = *OCT   TR = *O                                      FMU
5  FORMAT *DE   CY = *OCT   TR = *O   SE = *O                            FMU
6  FORMAT                                                                FMU
7  FORMAT - - - - - - - - - - - - - - - - - - - -                        FMU
20 B3=0                           * SET OB INDEX                         FMU
   BA=1                           * SET FLAW COUNT                       FMU
   B7=B6+3                        * SELECT MESSAGE NUMBER                FMU
   MSG B6 TO LINE 4                                                      FMU
   B6=B6 LS 10D                   * FORM MASK                            FMU
26 B5=5                           * SET DISPLAY LINE                     FMU
30 B4=B3+1                                                               FMU
   IF (OB(B3) AND 6000 EQ 0) GOTO 40   * IF END OF MAP                   FMU
   IF (OB(B3) AND B6 EQ 0) GOTO 34     * IF WRONG FLAW TYPE              FMU
31 B0=OB(B3) AND 1777             * EXTRACT CYLINDER                     FMU
   B1=OB(B4) RS 6                 * EXTRACT TRACK                        FMU
   B2=OB(B4) AND 77               * EXTRACT SECTOR                       FMU
   MSG B7 (BA,B0,B1,B2) TO LINE B5                                       FMU
   B3=B3+2                        * INCREMENT INDEX                      FMU
   BA=BA+1                        * INCREMENT FLAW COUNT                 FMU
   IF (B3 EQ 320D) GOTO 42        * IF END OF SECTOR                     FMU
   B5=B5+1                        * INCREMENT LINE COUNT                 FMU
   IF (B5 NE 35D) GOTO 30         * IF DISPLAY NOT FULL                  FMU
   PICTURE                        * PRINT PAGE                           FMU
   GOTO 26                                                               FMU
34 B3=B3+2                        * INCREMENT INDEX                      FMU
   IF (B3 EQ 320D) GOTO 42        * IF END OF SECTOR                     FMU
   GOTO 30                                                               FMU
40 MSG 3 TO LINE B5               * END OF TABLE                         FMU
   B5=B5+1                                                               FMU
   MSG 6 TO LINE B5                                                      FMU
   B5=B5+1                                                               FMU
   MSG 7 TO LINE B5                                                      FMU
42 B5=B5+1                                                               FMU
   IF (B5 GE 35D) GOTO 50         * IF DISPLAY NOT FULL                  FMU
   MSG 6 TO LINE B5                                                      FMU
   GOTO 42                        * CLEAR REMAINING LINES                FMU
50 PICTURE                                                               FMU
   EXIT                                                                  FMU
77 END 20                                                                FMU
COMPILE                                                                  FMU
*IF -DEF,MVE
   MODULE FMU98E, DEMA2, (14), LOCK 
*IF DEF,CMSE17X,1 
*** 5.2.72 FMU98E - DISPLAY ERROR MESSAGES (SUBROUTINE) 
*IF -DEF,CMSE17X,1
*** 5.2.70 FMU98E - DISPLAY ERROR MESSAGES (SUBROUTINE) 
**
*          PURPOSE- 
*          FMU98E DISPLAYS THE ERROR CODE, LINE NUMBER, LAST FUNCTION,
*          GENERAL STATUS, AND DETAILED STATUS.  THIS MODULE IS CALLED
*          WHEN AN I/O COMMAND IS ABORTED.
* 
*          METHOD-
*          FMU98E DISPLAYS THE STATUS RESULTING FROM THE LAST I/O 
*          COMMAND.  THE DETAILED STATUS DISPLAYED IS THAT CONTAINED IN 
*          THE STATUS BUFFER.  FMU98E DOES NOT REQUEST STATUS FROM THE
*          CONTROLLER.
/ 
*          ENTRY- 
*          FMU98E ASSUMES THAT REGISTER B5 CONTAINS THE LINE NUMBER FOR 
*          THE K DISPLAY.  THE STATUS BUFFER IS ASSUMED TO CONTAIN
*          GENERAL AND DETAILED STATUS. 
* 
*          EXIT-
*          FMU98E TERMINATES BY RETURNING TO THE CALLING MODULE.
*          REGISTER B5 CONTAINS THE K DISPLAY LINE NUMBER.
* 
*          SUBMODULES REFERENCED- 
*          FMU98E DOES NOT CALL ANY SUBMODULES. 
* 
*          REGISTERS USED-
*          FMU98E USES REGISTER B5 FOR THE K DISPLAY LINE NUMBER
* 
*          BUFFERS USED-
*          FMU98E USES THE STATUS BUFFER FOR GENERAL AND DETAILED 
*          STATUS.  BUFFER LOCATIONS ARE AS FOLLOWS-- 
*            SB(0) - GENERAL STATUS 
*            SB(1) TO SB(20D) - DETAILED STATUS 
* 
* 
/  - DISPLAY ERROR MESSAGES (SUBROUTINE) -
/       ENTER WITH DISPLAY LINE NUMBER IN B5. 
/ 
1  FORMAT 
2  FORMAT ERROR CODE = *OCT AT LINE *OCT, LAST FCN = *OCT 
3  FORMAT GENERAL STATUS = *OCT 
4  FORMAT DETAILED STATUS - - 
5  FORMAT  1=*OCT   2=*OCT   3=*OCT   4=*OCT   5=*OCT 
6  FORMAT  6=*OCT   7=*OCT   8=*OCT   9=*OCT  10=*OCT 
7  FORMAT 11=*OCT  12=*OCT  13=*OCT  14=*OCT  15=*OCT 
10 FORMAT 16=*OCT  17=*OCT  18=*OCT  19=*OCT  20=*OCT 
20 MSG 1 TO LINE B5 
   B5=B5+1
   MSG EM TO LINE B5
   B5=B5+1
   MSG 1 TO LINE B5 
   B5=B5+1
   MSG 2 (EC,EA,LF) TO LINE B5
   B5=B5+1
   MSG 3 (SB) TO LINE B5
   B5=B5+2
   MSG 4 TO LINE B5 
   B5=B5+1
   MSG 5, 5 WORDS FROM SB(1) TO LINE B5 
   B5=B5+1
   MSG 6, 5 WORDS FROM SB(6) TO LINE B5 
   B5=B5+1
   MSG 7, 5 WORDS FROM SB(11D) TO LINE B5 
   B5=B5+1
   MSG 10, 5 WORDS FROM SB(16D) TO LINE B5
   B5=B5+1
   EXIT 
   END 20 
COMPILE 
   MODULE FMU98F, DEMA2, (14), LOCK 
*IF DEF,CMSE17X,1 
*** 5.2.73 FMU98F - DISPLAY FLAWS (SUBROUTINE)
*IF -DEF,CMSE17X,1
*** 5.2.71 FMU98F - DISPLAY FLAWS (SUBROUTINE)
**
*          PURPOSE- 
*          FMU98F DISPLAYS TRACK AND SECTOR FLAW TABLES FROM DATA 
*          CONTAINED IN THE OUTPUT BUFFER.
* 
*          METHOD-
*          FMU98F INTERPRETS THE DATA CONTAINED IN THE OUTPUT BUFFER
*          AS EITHER THE TRACK FLAW TABLE OR ONE SECTOR OF
*          THE SECTOR FLAW TABLE.  REGISTER B6 IS A FLAG TO INDICATE
*          WHICH DISPLAY HEADING AND FORMAT TO USE.  FLAWS ARE ADDED TO 
*          THE MAP UNTIL THE END OF THE SECTOR OR END OF THE MAP IS 
*          DETECTED.  END OF SECTOR OCCURS AFTER 120D ENTRIES.  WHEN
*          END OF SECTOR IS FOUND, FMU98F RETURNS TO THE CALLING MODULE.
*          IF THE END OF THE MAP IS FOUND BEFORE REACHING THE END OF
*          THE SECTOR, A MESSAGE IS DISPLAYED INDICATING THE END OF THE 
*          FLAW MAP, AND FMU98F RETURNS TO THE CALLING MODULE.
/ 
*          ENTRY- 
*          FMU98F ASSUMES THAT THE OUTPUT BUFFER CONTAINS ONE SECTOR OF 
*          THE FLAW MAP.  REGISTER B6 IS USED AS A FLAG TO SELECT 
*          EITHER TRACK OR SECTOR FLAW TABLES.  IF B6 IS 1 THEN TRACK 
*          FLAWS ARE DISPLAYED.  IF B6 IS 2 THEN SECTOR FLAWS ARE 
*          DISPLAYED. 
* 
*          EXIT-
*          FMU98F TERMINATES BY RETURNING TO THE CALLING MODULE.
*          REGISTER B3 CONTAINS THE INDEX TO THE LAST TABLE ENTRY READ. 
*          THIS IS USED BY THE CALLING MODULE TO DETERMINE IF THE END 
*          OF THE TABLE WAS FOUND.
* 
*          SUBMODULES REFERENCED- 
*          FMU98F DOES NOT CALL ANY SUBMODULES. 
* 
*          REGISTERS USED-
*          FMU98F USES REGISTERS B0 TO B7, AND BA.  REGISTERS ARE USED
*          AS FOLLOWS-- 
*            B0 - CYLINDER
*            B1 - TRACK 
*            B2 - SECTOR
*            B3 - OUTPUT BUFFER INDEX 
*            B4 - OUTPUT BUFFER INDEX 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - TRACK/SECTOR FLAW MAP 
*            B7 - INDEX FOR DISPLAY FORMAT
*            BA - FLAW COUNT
* 
*          BUFFERS USED-
*          FMU98F ASSUMES THAT THE OUTPUT BUFFER CONTAINS ONE SECTOR OF 
*          THE FLAW TABLES. 
* 
* 
/  - DISPLAY FLAWS (SUBROUTINE) - 
/       ENTER WITH B6 = 1 FOR TRACK, OR 2 FOR SECTOR
/ 
1  FORMAT - - -  TRACK FLAW TABLE   - - - 
2  FORMAT - - -  SECTOR FLAW TABLE  - - - 
3  FORMAT - - -     END OF TABLE    - - - 
4  FORMAT *DE   CY = *OCT   TR = *O 
5  FORMAT *DEC   CY = *OCT   TR = *O   SE = *O
6  FORMAT 
7  FORMAT - - - - - - - - - - - - - - - - - - - - 
20 B3=0                           * SET OB INDEX
   B7=B6+3                        * SELECT MESSAGE NUMBER 
   MSG B6 TO LINE 4 
26 B5=5                           * SET DISPLAY LINE
30 B4=B3+1
   IF (OB(B3) AND 4000 EQ 0) GOTO 40   * IF END OF MAP
31 B0=OB(B3) AND 1777             * EXTRACT CYLINDER
   B1=OB(B4) RS 6                 * EXTRACT TRACK 
   B2=OB(B4) AND 77               * EXTRACT SECTOR
   MSG B7 (BA,B0,B1,B2) TO LINE B5
   B3=B3+2                        * INCREMENT INDEX 
   BA=BA+1                        * INCREMENT FLAW COUNT
   IF (B3 EQ 240D) GOTO 42        * IF END OF SECTOR
   B5=B5+1                        * INCREMENT LINE COUNT
   IF (B5 NE 35D) GOTO 30         * IF DISPLAY NOT FULL 
   PICTURE                        * PRINT PAGE
   GOTO 26
40 MSG 3 TO LINE B5               * END OF TABLE
   B5=B5+1
   MSG 6 TO LINE B5 
   B5=B5+1
   MSG 7 TO LINE B5 
42 B5=B5+1
   IF (B5 GE 35D) GOTO 50         * IF DISPLAY NOT FULL 
   MSG 6 TO LINE B5 
   GOTO 42                        * CLEAR REMAINING LINES 
50 PICTURE
   EXIT 
77 END 20 
COMPILE 
*ENDIF
   MODULE FMU98G, LSFMD2, (16), LOCK
*IF DEF,CMSE17X 
*** 5.2.68 FMU98G - DISPLAY ERROR MESSAGES (SUBROUTINE) 
*ENDIF
*IF -DEF,CMSE17X
*** 5.2.66 FMU98G - DISPLAY ERROR MESSAGES (SUBROUTINE) 
*ENDIF
**
*          PURPOSE- 
*          FMU98G DISPLAYS THE ERROR CODE, LINE NUMBER, LAST FUNCTION,
*          GENERAL STATUS, AND DETAILED STATUS.  THIS MODULE IS CALLED
*          WHEN AN I/O COMMAND IS ABORTED.
* 
*          METHOD-
*          FMU98G DISPLAYS THE STATUS RESULTING FROM THE LAST I/O 
*          COMMAND.  THE DETAILED STATUS DISPLAYED IS THAT CONTAINED IN 
*          THE STATUS BUFFER.  FMU98G DOES NOT REQUEST STATUS FROM THE
*          CONTROLLER.
/ 
*          ENTRY- 
*          FMU98G ASSUMES THAT REGISTER B5 CONTAINS THE LINE NUMBER FOR 
*          THE K DISPLAY.  THE STATUS BUFFER IS ASSUMED TO CONTAIN
*          GENERAL AND DETAILED STATUS. 
* 
*          EXIT-
*          FMU98G TERMINATES BY RETURNING TO THE CALLING MODULE.
*          REGISTER B5 CONTAINS THE K DISPLAY LINE NUMBER.
* 
*          SUBMODULES REFERENCED- 
*          FMU98G DOES NOT CALL ANY SUBMODULES. 
* 
*          REGISTERS USED-
*          FMU98G USES REGISTER B5 FOR THE K DISPLAY LINE NUMBER
* 
*          BUFFERS USED-
*          FMU98G USES THE STATUS BUFFER FOR GENERAL AND DETAILED 
*          STATUS.  BUFFER LOCATIONS ARE AS FOLLOWS-- 
*            SB(0) - GENERAL STATUS 
*            SB(1) TO SB(20D) - DETAILED STATUS 
* 
* 
/  - DISPLAY ERROR MESSAGES (SUBROUTINE) -
/       ENTER WITH DISPLAY LINE NUMBER IN B5. 
/ 
1  FORMAT 
2  FORMAT ERROR CODE = *OCT AT LINE *OCT, LAST FCN = *OCT 
3  FORMAT GENERAL STATUS = *OCT 
4  FORMAT DETAILED STATUS - - 
5  FORMAT  1=*OCT   2=*OCT   3=*OCT   4=*OCT   5=*OCT 
6  FORMAT  6=*OCT   7=*OCT   8=*OCT   9=*OCT  10=*OCT 
7  FORMAT 11=*OCT  12=*OCT  13=*OCT  14=*OCT  15=*OCT 
10 FORMAT 16=*OCT  17=*OCT  18=*OCT  19=*OCT  20=*OCT 
20 MSG 1 TO LINE B5 
   B5=B5+1
   MSG EM TO LINE B5
   B5=B5+1
   MSG 1 TO LINE B5 
   B5=B5+1
   MSG 2 (EC,EA,LF) TO LINE B5
   B5=B5+1
   MSG 3 (SB) TO LINE B5
   B5=B5+2
   MSG 4 TO LINE B5 
   B5=B5+1
   MSG 5, 5 WORDS FROM SB(1) TO LINE B5 
   B5=B5+1
   MSG 6, 5 WORDS FROM SB(6) TO LINE B5 
   B5=B5+1
   MSG 7, 5 WORDS FROM SB(11D) TO LINE B5 
   B5=B5+1
   MSG 10, 5 WORDS FROM SB(16D) TO LINE B5
   B5=B5+1
   EXIT 
   END 20 
COMPILE 
   MODULE FMU98H, LSFMD2, (16), LOCK
*IF DEF,CMSE17X 
*** 5.2.69 FMU98H - DISPLAY FLAWS (SUBROUTINE)
*ENDIF
*IF -DEF,CMSE17X
*** 5.2.67 FMU98H - DISPLAY FLAWS (SUBROUTINE)
*ENDIF
**
*          PURPOSE- 
*          FMU98H DISPLAYS TRACK AND SECTOR FLAW TABLES FROM DATA 
*          CONTAINED IN THE OUTPUT BUFFER.
* 
*          METHOD-
*          FMU98H INTERPRETS THE DATA CONTAINED IN THE OUTPUT BUFFER
*          AS EITHER THE TRACK FLAW TABLE OR ONE SECTOR OF
*          THE SECTOR FLAW TABLE.  REGISTER B6 IS A FLAG TO INDICATE
*          WHICH DISPLAY HEADING AND FORMAT TO USE.  FLAWS ARE ADDED TO 
*          THE MAP UNTIL THE END OF THE SECTOR OR END OF THE MAP IS 
*          DETECTED.  END OF SECTOR OCCURS AFTER 120D ENTRIES.  WHEN
*          END OF SECTOR IS FOUND, FMU98H RETURNS TO THE CALLING MODULE.
*          IF THE END OF THE MAP IS FOUND BEFORE REACHING THE END OF
*          THE SECTOR, A MESSAGE IS DISPLAYED INDICATING THE END OF THE 
*          FLAW MAP, AND FMU98H RETURNS TO THE CALLING MODULE.
/ 
*          ENTRY- 
*          FMU98H ASSUMES THAT THE OUTPUT BUFFER CONTAINS ONE SECTOR OF 
*          THE FLAW MAP.  REGISTER B6 IS USED AS A FLAG TO SELECT 
*          EITHER TRACK OR SECTOR FLAW TABLES.  IF B6 IS 1 THEN TRACK 
*          FLAWS ARE DISPLAYED.  IF B6 IS 2 THEN SECTOR FLAWS ARE 
*          DISPLAYED. 
* 
*          EXIT-
*          FMU98H TERMINATES BY RETURNING TO THE CALLING MODULE.
*          REGISTER B3 CONTAINS THE INDEX TO THE LAST TABLE ENTRY READ. 
*          THIS IS USED BY THE CALLING MODULE TO DETERMINE IF THE END 
*          OF THE TABLE WAS FOUND.
* 
*          SUBMODULES REFERENCED- 
*          FMU98H DOES NOT CALL ANY SUBMODULES. 
* 
*          REGISTERS USED-
*          FMU98H USES REGISTERS B0 TO B7, AND BA.  REGISTERS ARE USED
*          AS FOLLOWS-- 
*            B0 - CYLINDER
*            B1 - TRACK 
*            B2 - SECTOR
*            B3 - OUTPUT BUFFER INDEX 
*            B4 - OUTPUT BUFFER INDEX 
*            B5 - K DISPLAY LINE NUMBER 
*            B6 - TRACK/SECTOR FLAW MAP 
*            B7 - INDEX FOR DISPLAY FORMAT
*            BA - FLAW COUNT
* 
*          BUFFERS USED-
*          FMU98H ASSUMES THAT THE OUTPUT BUFFER CONTAINS ONE SECTOR OF 
*          THE FLAW TABLES. 
* 
* 
/  - DISPLAY FLAWS (SUBROUTINE) - 
/       ENTER WITH B6 = 1 FOR TRACK, OR 2 FOR SECTOR
/ 
1  FORMAT - - -  TRACK FLAW TABLE   - - - 
2  FORMAT - - -  SECTOR FLAW TABLE  - - - 
3  FORMAT - - -     END OF TABLE    - - - 
4  FORMAT *DE   CY = *OCT   TR = *O 
5  FORMAT *DEC   CY = *OCT   TR = *O   SE = *O
6  FORMAT 
7  FORMAT - - - - - - - - - - - - - - - - - - - - 
20 B3=0                           * SET OB INDEX
   B7=B6+3                        * SELECT MESSAGE NUMBER 
   MSG B6 TO LINE 4 
26 B5=5                           * SET DISPLAY LINE
30 B4=B3+1
   IF (OB(B3) AND 4000 EQ 0) GOTO 40   * IF END OF MAP
31 B0=OB(B3) AND 1777             * EXTRACT CYLINDER
   B1=OB(B4) RS 6                 * EXTRACT TRACK 
   B2=OB(B4) AND 77               * EXTRACT SECTOR
   MSG B7 (BA,B0,B1,B2) TO LINE B5
   B3=B3+2                        * INCREMENT INDEX 
   BA=BA+1                        * INCREMENT FLAW COUNT
   IF (B3 EQ 240D) GOTO 42        * IF END OF SECTOR
   B5=B5+1                        * INCREMENT LINE COUNT
   IF (B5 NE 35D) GOTO 30         * IF DISPLAY NOT FULL 
   PICTURE                        * PRINT PAGE
   GOTO 26
40 MSG 3 TO LINE B5               * END OF TABLE
   B5=B5+1
   MSG 6 TO LINE B5 
   B5=B5+1
   MSG 7 TO LINE B5 
42 B5=B5+1
   IF (B5 GE 35D) GOTO 50         * IF DISPLAY NOT FULL 
   MSG 6 TO LINE B5 
   GOTO 42                        * CLEAR REMAINING LINES 
50 PICTURE
   EXIT 
77 END 20 
COMPILE 
*IF -DEF,MVE
*IF -DEF,CMSE17X
   MODULE FMU98I, DEMA3, (14), LOCK 
*** 5.2.71A FMU98I - DISPLAY ERROR MESSAGES (SUBROUTINE)
**
*          PURPOSE- 
*          FMU98I DISPLAYS THE ERROR CODE, LINE NUMBER, LAST FUNCTION,
*          GENERAL STATUS, AND DETAILED STATUS.  THIS MODULE IS CALLED
*          WHEN AN I/O COMMAND IS ABORTED.
* 
*          METHOD-
*          FMU98I DISPLAYS THE STATUS RESULTING FROM THE LAST I/O 
*          COMMAND.  THE DETAILED STATUS DISPLAYED IS THAT CONTAINED IN 
*          THE STATUS BUFFER.  FMU98I DOES NOT REQUEST STATUS FROM THE
*          CONTROLLER.
/ 
*          ENTRY- 
*          FMU98I ASSUMES THAT REGISTER B5 CONTAINS THE LINE NUMBER FOR 
*          THE K DISPLAY.  THE STATUS BUFFER IS ASSUMED TO CONTAIN
*          GENERAL AND DETAILED STATUS. 
* 
*          EXIT-
*          FMU98I TERMINATES BY RETURNING TO THE CALLING MODULE.
*          REGISTER B5 CONTAINS THE K DISPLAY LINE NUMBER.
* 
*          SUBMODULES REFERENCED- 
*          FMU98I DOES NOT CALL ANY SUBMODULES. 
* 
*          REGISTERS USED-
*          FMU98I USES REGISTER B5 FOR THE K DISPLAY LINE NUMBER
* 
*          BUFFERS USED-
*          FMU98I USES THE STATUS BUFFER FOR GENERAL AND DETAILED 
*          STATUS.  BUFFER LOCATIONS ARE AS FOLLOWS-- 
*            SB(0) - GENERAL STATUS 
*            SB(1) TO SB(20D) - DETAILED STATUS 
* 
* 
/  - DISPLAY ERROR MESSAGES (SUBROUTINE) -
/       ENTER WITH DISPLAY LINE NUMBER IN B5. 
/ 
1  FORMAT 
2  FORMAT ERROR CODE = *OCT AT LINE *OCT, LAST FCN = *OCT 
3  FORMAT GENERAL STATUS = *OCT 
4  FORMAT DETAILED STATUS - - 
5  FORMAT  1=*OCT   2=*OCT   3=*OCT   4=*OCT   5=*OCT 
6  FORMAT  6=*OCT   7=*OCT   8=*OCT   9=*OCT  10=*OCT 
7  FORMAT 11=*OCT  12=*OCT  13=*OCT  14=*OCT  15=*OCT 
10 FORMAT 16=*OCT  17=*OCT  18=*OCT  19=*OCT  20=*OCT 
20 MSG 1 TO LINE B5 
   B5=B5+1
   MSG EM TO LINE B5
   B5=B5+1
   MSG 1 TO LINE B5 
   B5=B5+1
   MSG 2 (EC,EA,LF) TO LINE B5
   B5=B5+1
   MSG 3 (SB) TO LINE B5
   B5=B5+2
   MSG 4 TO LINE B5 
   B5=B5+1
   MSG 5, 5 WORDS FROM SB(1) TO LINE B5 
   B5=B5+1
   MSG 6, 5 WORDS FROM SB(6) TO LINE B5 
   B5=B5+1
   MSG 7, 5 WORDS FROM SB(11D) TO LINE B5 
   B5=B5+1
   MSG 10, 5 WORDS FROM SB(16D) TO LINE B5
   B5=B5+1
   EXIT 
   END 20 
COMPILE 
*ENDIF
*ENDIF
   MODULE FMU99, 6000, (03,05,07,14,16), LOCK 
*IF DEF,CMSE17X 
*** 5.2.74 FMU99 - PARAMETERS 
*ENDIF
*IF -DEF,CMSE17X
*** 5.2.72 FMU99 - PARAMETERS 
*ENDIF
**
* 
/ 
/  PARAMETER DESCRIPTION. 
/ 
/  P0 = 000X - FLAW TABLE TO BE DISPLAYED 
/ 
/       0000 - DISPLAY BOTH TRACK AND SECTOR FLAWS
/       0001 - DISPLAY TRACK FLAWS ONLY 
/       0002 - DISPLAY SECTOR FLAWS ONLY
/ 
/  P1 = CCCC - CYLINDER 
/  P2 = 00TT - TRACK
/  P3 = 00SS - SECTOR 
/ 
/  P4 = 000X - ENABLE RE-ORDERING UTILITY FLAW MAP DISPLAY
/ 
/       0000 - DO NOT RE-ORDER FLAW MAPS
/       0001 - RE-ORDER UTILITY FLAW MAPS 
/ 
/  P4 = 000X - WRITE 844 UTILITY MAP SECTOR AFTER SCANNING
/ 
/       0000 - DO NOT WRITE UTILITY MAP SECTOR
/       0001 - WRITE UTILITY MAP SECTOR 
/       0000 - P3 CONTAINS LOGICAL SECTOR NUMBER(FMU09/29)
/       0001 - P3 CONTAINS PHYSICAL SECTOR NUMBER(FMU09/29) 
/ 
/  P5 = 000X - UTILITY FLAW MAP ARCHIVE/RESTORATION OPTION
/ 
/       0000 - RESTORE MAPS FROM ARCHIVED UTILITY MAPS
/       0000 - ARCHIVE FACTORY + UTILITY MAPS TO SYSTEM FILE
/       0001 - RESTORE MAPS FROM ARCHIVED FACTORY MAPS
/       0001 - ARCHIVE FACTORY MAPS ONLY TO SYSTEM FILE 
/       0002 - ARCHIVE UTILITY MAPS ONLY TO SYSTEM FILE 
/ 
/  P6 = CCCC - STARTING CYLINDER OR TRACK FOR PARTIAL FORMAT
/              OR SCAN
/  P7 = CCCC - ENDING CYLINDER OR TRACK FOR PARTIAL FORMAT
/              OR SCAN
/ 
/  P8 = 00SS - 885 UTILITY TRACK SKIPPED SECTOR 1 
/  P9 = 00SS - 885 UTILITY TRACK SKIPPED SECTOR 2 
/ 
*IF DEF,CMSE17X 
/  P8 = 0NNND - 844 PACK SERIAL NUMBER (MOST SIGNIFICANT) 
/  P9 = 0NNND - 844 PACK SERIAL NUMBER (LEAST SIGNIFICANT)
/ 
*ENDIF
1  END 1
COMPILE,SOURCE                    * FMU99 - PARAMETERS
   MODULE FMU99A, 6000, (03,05,07,14,16), LOCK
*IF DEF,CMSE17X 
*** 5.2.75 FMU99A - LIST OF MODULES 
*ENDIF
*IF -DEF,CMSE17X
*** 5.2.73 FMU99A - LIST OF MODULES 
*ENDIF
**
* 
/ 
/  MODULE         MODULE               PARA-   ACCESS  RUN
/  NUMBER         DESCRIPTION          METERS  LEVEL   TIME 
/  ------         -----------          ------  -----   ---- 
/ 
*IF -DEF,MVE
/  885-1X (FMDFT) LANGUAGE MODULES (DC=7) 
/ 
/  FMU01   READ 885-1X SERIAL NUMBER   NONE       3    1 SEC
/  FMU02   READ 885-1X FACTORY MAPS    P0         3    3 SEC
/  FMU03   READ 885-1X UTILITY MAPS    P0,P4      3    3 SEC
/  FMU04   SET 885-1X SECTOR FLAW      P1,P2,P3   4    2 SEC
/  FMU05   CLEAR 885-1X SECTOR FLAW    P1,P2,P3   4    2 SEC
/  FMU06   FORMAT 885-1X PACK          NONE       4   10 MIN
/  FMU07   FORMAT PART 885-1X PACK CYL P6,P7      4  1 S/CYL
/  FMU08   FORMAT PART 885-1X PACK TRK P6,P7      4 33 S/TRK
/  FMU09   SAVE,FLAW,RESTORE 885-1X   P1,P2,P3,P4 4   30 SEC
/  FMU10   FORMAT 885-1X UTILITY TRACK P8,P9      4    2 SEC
/  FMU11   SCAN + DISPLAY 885-1X FLAWS P6,P7      1   10 MIN
/  FMU12   VERIFY 885-1X MAPS          NONE       3   25 MIN
/  FMU13   ARCHIVE 885-1X MAPS         P5         3   10 SEC
/  FMU14   RESTORE 885-1X UTILITY MAPS P5         3    5 SEC
/  FMU15   COPY CONTROLWARE TO 885-1X  NONE       3   30 SEC
/  FMU16   READ 7155 CONTROLWARE REV   NONE       1    1 SEC
/  FMU17   WRITE DIAGNOSTIC TRACKS     NONE       3    2 SEC
/ 
/  885-4X (DEMA2) LANGUAGE MODULES (DC=14)
/ 
/  FMU21   READ 885-4X SERIAL NUMBER   NONE       3    1 SEC
/  FMU22   READ 885-4X FACTORY MAPS    P0         3    3 SEC
/  FMU23   READ 885-4X UTILITY MAPS    P0,P4      3    3 SEC
/  FMU24   SET 885-4X SECTOR FLAW      P1,P2,P3   4    2 SEC
/  FMU25   CLEAR 885-4X SECTOR FLAW    P1,P2,P3   4    2 SEC
/  FMU26   FORMAT 885-4X PACK          NONE       4   10 MIN
/  FMU27   FORMAT PART 885-4X PACK CYL P6,P7      4  1 S/CYL
/  FMU28   FORMAT PART 885-4X PACK TRK P6,P7      4 33 S/TRK
*IF,-DEF,CMSE17X,1
/  FMU29   SAVE,FLAW,RESTORE 885-4X   P1,P2,P3,P4 4   30 SEC
/  FMU30   FORMAT 885-4X UTILITY TRACK P8,P9      4    2 SEC
/  FMU31   SCAN + DISPLAY 885-4X FLAWS P6,P7      1   10 MIN
/  FMU32   VERIFY 885-4X MAPS          NONE       3   32 MIN
/  FMU33   ARCHIVE 885-4X MAPS         P5         3   10 SEC
/  FMU34   RESTORE 885-4X UTILITY MAPS P5         3    5 SEC
/  FMU35   COPY CONTROLWARE TO 885-4X  NONE       3   63 SEC
/  FMU36   READ 7155 CONTROLWARE REV   NONE       1    1 SEC
/  FMU37   WRITE DIAGNOSTIC TRACKS     NONE       3    2 SEC
/ 
*ENDIF
/  844 (6000) LANGUAGE MODULES (DC=03,05) 
/ 
/  FMU40   DISPLAY 7155 MEMORY         P0-P7     10    1 SEC
/  FMU41   READ 844 SERIAL NUMBER      NONE      10    1 SEC
/  FMU42   READ 844 FACTORY MAP        P0        10    3 SEC
/  FMU43   READ 844 UTILITY MAP        P0,P4     10    3 SEC
/  FMU45   SET 844 SECTOR FLAW         P1,P2,P3  10    1 SEC
/  FMU46   CLEAR 844 SECTOR FLAW       P1,P2,P3  10    1 SEC
/  FMU47   SET 844 TRACK FLAW          P1,P2     10    1 SEC
/  FMU50   CLEAR 844 TRACK FLAW        P1,P2     10    1 SEC
/  FMU51   FORMAT 844 PACK             NONE      10    5 MIN
/  FMU52   FORMAT PARTIAL 844 PACK     P6,P7     10 .5 S/CYL
*IF DEF,CMSE17X 
/  FMU53   FORMAT 844 FACTORY DATA     P8,P9     10    2 SEC
/  FMU54   FORMAT 844 UTILITY SECTOR   NONE      10    2 SEC
*ENDIF
/  FMU55   SCAN AND DISPLAY 844 FLAWS  P4        10   10 MIN
/  FMU57   ARCHIVE 844 MAPS            P5        10    2 SEC
/  FMU58   RESTORE 844 MAPS            P5        10    2 SEC
/  FMU59   COPY CONTROLWARE TO 844     NONE      10   30 SEC
/ 
/                  885-1X (LSFMD) LANGUAGE MODULES (DC=16)
/ 
/  FMU61   READ 885-1X SERIAL NUMBER   NONE       3    1 SEC
/  FMU62   READ 885-1X FACTORY MAPS    P0         3    3 SEC
/  FMU63   READ 885-1X UTILITY MAPS    P0,P4      3    3 SEC
/  FMU64   SET 885-1X SECTOR FLAW      P1,P2,P3   4    2 SEC
/  FMU65   CLEAR 885-1X SECTOR FLAW    P1,P2,P3   4    2 SEC
/  FMU66   FORMAT 885-1X PACK          NONE       4   10 MIN
/  FMU67   FORMAT PART 885-1X PACK CYL P6,P7      4  1 S/CYL
/  FMU68   FORMAT PART 885-1X PACK TRK P6,P7      4 33 S/TRK
/  FMU70   FORMAT 885-1X UTILITY TRACK P8,P9      4    2 SEC
/  FMU71   SCAN + DISPLAY 885-1X FLAWS P6,P7      1   10 MIN
/  FMU72   VERIFY 885-1X MAPS          NONE       3   25 MIN
/  FMU73   ARCHIVE 885-1X MAPS         P5         3   10 SEC
/  FMU74   RESTORE 885-1X UTILITY MAPS P5         3    5 SEC
/  FMU75   COPY CONTROLWARE TO 885-1X  NONE       3   30 SEC
/  FMU76   READ 7155 CONTROLWARE REV   NONE       1    1 SEC
/  FMU77   WRITE DIAGNOSTIC TRACKS     NONE       3    2 SEC
/   NOTE - RUN TIMES ARE APPROXIMATE AND ASSUME 
/          ON-LINE OPERATION WITH NO CONFLICTS. 
1  END 1
COMPILE,SOURCE                    * FMU99A - LIST OF MODULES
