*DECK,DFU 
***  EXTERNAL REFERENCE SPECIFICATION 
**
* 
*    DFU - DISK FORMAT UTILITY FOR 895, 834 AND 836 DISK DRIVES.
* 
* 
*           BAHRAM DANESHVAR      12/15/84
* 
*    AUTHORS OF MODIFICATIONS - 
* 
*           R.D. SCHNEIDER        04/21/86
* 
*                - ADDED MODULES DFU21, DFU21A, DFU21B TO 
*                  WRITE MA464 CONTROLWARE TO THE 895 DISK
* 
* 
*    CONTAINED HEREIN ARE SOFTWARE PRODUCTS COPYRIGHTED 
*    BY CONTROL DATA CORPORATION.  REPRODUCTION WITHOUT 
*    PERMISSION IS PROHIBITED.  THE COPYRIGHT NOTICE MUST 
*    APPEAR ON ALL AUTHORIZED COMPLETE OR PARTIAL COPIES. 
* 
***  1.0   INTRODUCTION 
**   1.0   INTRODUCTION 
*    1.0   INTRODUCTION 
*          ------------ 
* 
*          DFU IS A GENERIC UTILITY FOR THE INTELLIGENT PERIPHERAL
*          FAMILY OF DISK PRODUCTS.  ITS PRIMARY PURPOSE IS TO RESTORE
*          THE DISK TO ITS ORIGINAL, FACTORY, ERROR FREE, CONDITIONS. 
*          DFU IS NOT A MEDIA MANAGEMENT PROGRAM.  IT DOES NOT PROVIDE
*          FEATURES FOR FLAWING DATA FIELDS OR UPDATING FLAW TABLES.
* 
*          DFU SUPPORTS THE FOLLOWING EQUIPMENTS: 
* 
*          1.0    7165/895 DISK SUBSYSTEM 
* 
*          2.0    834 INTELLIGENT SMALL DISK(ISDI) SUBSYSTEM
* 
*          3.0    836 INTELLIGENT SMALL DISK(ISDII) SUBSYSTEM 
* 
*    1.1   RESTRICTIONS 
* 
* 
*          1.0    DFU REQUIRES THAT THE FOLLOWING PERIPHERAL MICROCODES 
*                 TO BE LOADED PRIOR TO EXECUTION:  
* 
*                 FOR 895   : MA464-D01 
*                 FOR 834   : MA462-D02 FOR ADAPTER AND 
*                             COS-6 FOR CONTROL MODULE
* 
*                 FOR 836   : MA462-D03 FOR ADAPTER AND 
*                             COS2A FOR CONTROL MODULE
* 
*          2.0    DFU IS NOT INTENDED FOR INITIAL FORMATTING OF 
*                 THE DISK. 
* 
*          3.0    DFU REQUIRES THAT THE DISK SUBSYSTEM BE FULLY 
*                 OPERATIONAL.
* 
*          4.0    FORMATTING REINITIALIZES THE ENTIRE PACK BY 
*                 WRITING NEW ADDRESS FIELDS. THEREFORE ALL 
*                 EXISTING DATA WILL BE DESTROYED.
* 
*    1.3   CLARIFICATION
* 
*          DFU PERFORMS ITS FORMATTING OPERATION BY ISSUING FUNCTIONS 
*          TO THE SUBSYSTEM PERIPHERAL MICROCODE.  THESE FUNCTIONS
*          CODES REACH THE SUBSYSTEM VIA THE CHANNEL INSTRUCTIONS 
*          IN THE LOW LEVEL PRODUCT OVERLAY.  THE ACTUAL FORMATTING IS
*          PERFORMED BY THE MICROCODE WITHIN THE SUBSYSTEM. 
*          AS THE RESULT,  DFU IS NOT CAPABLE OF STOPPING AN
*          OPERATION ONCE IT IS STARTED.
* 
*    1.5   CHARACTERISTICS
* 
* 
*          1.  PROGRAM NAME                              DFU
* 
* 
*          2.  TEST/DIAG/UTILITY/SYSTEM                  UTILITY
* 
* 
*          3.  SIZE (SOURCE LINE).                       TBD
* 
* 
*          4.  SIZE (MEMORY REQUIRED FOR EXECUTION)      TBD
* 
* 
*          5.  SIZE (TOTAL BINARY INCL. OVERLAYS)        TBD
* 
* 
*          6.  OFF-LINE SYSTEM                           CMSE 
* 
* 
*          7.  ON-LINE SYSTEM                            NONE 
* 
* 
*          8.  TEST CONTROL RESIDES IN:                  PPU
* 
* 
*          9.  LANGUAGES:                                MALET
* 
* 
*         10.  SOURCE CODE MAINTENANCE                   UPDATE 
* 
*         11.  MODULE RUN TIMES:  
* 
*                  1         1  ACCESS 1  DEVICE 1  RUN      1
*          MODULE  1  DISK   1  LEVEL  1   CODE  1           1
*                  1         1         1         1  TIMES    1
*          --------1---------1---------1---------1-----------1
*           DFU01  1 895     1   10    1 115     1 5 MIN     1
*                  1         1         1         1           1
*          --------1---------1---------1---------1-----------1
*           DFU03  1 895     1   10    1 115     1 3 SEC     1
*                  1         1         1         1           1
*          --------1---------1---------1---------1-----------1
*           DFU11  1 834/836 1   10    1 110/111 1 13/20 SEC 1
*                  1         1         1         1           1
*          --------1---------1---------1---------1-----------1
*           DFU13  1 834/836 1   10    1 110/111 1 34/150 MN 1
*                  1         1         1         1           1
*          --------1---------1---------1---------1-----------1
*           DFU14  1 834/836 1    4    1 110/111 1 1.4/2.5MN 1
*                  1         1         1         1           1
*          --------1---------1---------1---------1-----------1
*           DFU15  1 834/836 1   10    1 110/111 1 8/16 HRS  1
*                  1         1         1         1           1
*          --------1---------1---------1---------1-----------1
*           DFU17  1 834/836 1   10    1 110/111 1 35/80 SEC 1
*                  1         1         1         1           1
*          --------1---------1---------1---------1-----------1
*           DFU21  1 895     1   10    1 115     1 1 MIN     1
*                  1         1         1         1           1
*          --------1---------1---------1---------1-----------1
* 
***  2.0   APPLICABLE DOCUMENTS 
**   2.0   APPLICABLE DOCUMENTS 
*    2.0   APPLICABLE DOCUMENTS 
*          -------------------- 
* 
*          1. MALET REFERENCE MANUAL                     60456020 
* 
*          2. EQUIPMENT SPECIFICATION FOR 895            64080000 
* 
*          3. CYBER CHANNEL COUPLER                      53371093 
*             EXTERNAL REFERENCE SPECIFICATION
* 
*          4. CML 3.2 REFERENCE MANUAL                   60455980 
* 
*          5. 834 INTELLIGENT SMALL DISK(ISD)            60455580 
*             SUBSYSTEM HARDWARE REFERENCE MANUAL 
* 
*          6. MSL-150 OFF-LINE MAINTENANCE               60456530 
*             SOFTWARE LIBRARY REFERENCE
*             MANUAL
* 
*          7. HARDWARE REFERENCE MANUAL FOR              60467070 
*             CYBER CHANNEL COUPLER 
* 
*          8. FA161/163 STORAGE CONTROLLER               83324420 
*             TROUBLE SHOOTING GUIDE
* 
***  3.0   FEATURE DESCRIPTION
**   3.0   FEATURE DESCRIPTION
*    3.0   FEATURE DESCRIPTION
*          -------------------
* 
*    3.1   DFU ABSTRACT 
* 
*          THIS PRODUCT IS A DISK UTILITY, WRITTEN IN MALET AND 
*          DESIGNED TO RESTORE THE DISK MEDIA TO ITS ORIGINAL,
*          FACTORY, ERROR FREE CONDITIONS.
* 
*    3.2   895 DISK ABSTRACT
* 
*          THE MODULES SUPPORTING THE 7165/895 DISK SUBSYSTEM 
*          PROVIDE THE CUSTOMER ENGINEER WITH THE CAPABILITY
*          TO REWRITE HOME ADDRESSES AND TO WRITE THE NOS 
*          RECORD SIZE. 
* 
*    3.3   834/836 DISKS ABSTRACT 
* 
*          THIS SECTION IS A SUBSYSTEM MAINTENANCE PACKAGE DESIGNED 
*          TO AID THE USER IN FORMATTING THE INTELLIGENT
*          SMALL DISK SUBSYSTEM.
* 
***  4.0   DFU DETAILED DESCRIPTION 
**   4.0   DFU DETAILED DESCRIPTION 
*    4.0   DFU DETAILED DESCRIPTION 
*          ------------------------ 
* 
*    4.1   OPERATIONAL PROCEDURE
* 
*    4.1.1 CODE COMPILATION PROCEDURE 
* 
*          DFU IS WRITTEN IN THE MALET LOW LEVEL LANGUAGE. REFER TO THE 
*          CML REFERENCE MANUAL FOR A COMPLETE DESCRIPTION OF THE 
*          COMPILATION PROCEDURE. 
* 
*    4.1.2 LOADING PROCEDURE
* 
*          DFU IS WRITTEN IN THE MALET LOW LEVEL LANGUAGE. REFER TO THE 
*          MSL REFERENCE MANUAL FOR A COMPLETE DESCRIPTION OF THE 
*          LOADING PROCEDURE. 
* 
*    4.1.3 RUNNING PROCEDURE
* 
*          DFU FOLLOWS THE STANDARD DEMOT TEST EXECUTION PROCEDURE OF 
*          *RUN,DFUXX*, WHERE XX= MODULE NUMBER.
* 
*          DFU IS ORGANIZED INTO MODULES. EACH MODULE PERFORMS
*          A  SINGLE TASK, AND CALLS ANY SUB-MODULES AS THEY ARE
*          REQUIRED.  EACH MODULE IS A COMPLETE AND SEPARATE FUNCTION.
*          EXECUTION DOES NOT CONTINUE FROM ONE MAIN MODULE TO
*          THE NEXT, AS NOT ALL THE MODULES SUPPORT THE SAME EQUIPMENT. 
* 
*    4.2   PARAMETERS 
*          ---------- 
* 
*    4.2.1 895 PARAMETERS 
* 
*          P0  0000(OCT)    FORMAT 895 CYL 0-884 IN LARGE RECORD SIZE 
*                           OF 15390 8 BIT BYTES. MODULE (DFU01). 
*          P0  XXX1(OCT)    FORMAT 895 CYL 0-884 IN LARGE RECORD SIZE 
*                           OF 4128 8 BIT BYTES. MODULE (DFU01).
* 
*    4.2.2 834/836 PARAMETERS 
* 
*          P7  CCCC(OCT)    CYLINDER NUMBER FOR THE 834/836 REALLOCATE
*                           SECTOR MODULE(DFU11) AND REFORMAT A 
*                           SINGLE CYLINDER MODULE(DFU17).
*                           P7=4000B TO FORMAT THE RESERVED CYLINDER
*                           (SYSTEM CYLINDER 0). THE RESERVED CYLINDER
*                           CONTAINS COS, LEVEL II DIAGNOSTICS AND THE
*                           ERROR LOG. THE CM RESTORES COS, BUT LEVEL II
*                           DIAGNOSTICS AND THE ERROR LOG ARE DESTROYED.
*                           P7=4400B UPDATES THE ETF LOG. ALL PREVIOUS
*                           DEFECTS IN THE LOG ARE LOST.
* 
*          P8  00TT(OCT)    TRACK NUMBER FOR THE REALLOCATE SECTOR
*                           MODULE(DFU11).
* 
*          P9  00SS(OCT)    SECTOR NUMBER FOR THE REALLOCATE SECTOR 
*                           MODULE(DFU11).
* 
*    4.3   MESSAGES 
* 
* 
*    4.3.1 NORMAL MESSAGES
* 
* 
*          DFUNN - MODULE NAME
* 
*                  THIS MESSAGE INDICATES THAT MODULE NN IS 
*                  NOW RUNNING. 
* 
*          DFU01 - FORMAT 895 PACK
* 
*                  THIS MESSAGE IS THE INITIAL RUNNING MESSAGE
*                  FOR DFU01. 
* 
*          DFU01 - FORMATTING TO BEGIN
* 
*                  THIS MESSAGE IS DISPLAYED BEFORE PAUSE AND INDICATES 
*                  FORMATTING WILL START AFTER THE OPERATOR 
*                  ENTERS *GO*. 
* 
*          DFU01 - PAUSE - FORMAT PACK CH=CH, EQ=EQ, UN=UN
* 
*          ---------------------------------------------- 
*          THIS MODULE WILL WRITE CYLINDER 0-884D IN LARGE
*          RECORDS 15390D 8 BIT BYTES AND CYLINDER 885D IN
*                         OR
*          RECORDS 4128D 8 BIT BYTES AND CYLINDER 885D IN 
*          SMALL RECORDS 483D 8 BIT BYTES. ALL EXISTING 
*          DATA WILL BE DESTROYED.
* 
*                  THIS MESSAGE IS A WARNING TO THE OPERATOR. 
* 
*          DFU01 -FORMATTING 895-XX MIN 
* 
*                  THIS MESSAGE INDICATES 895 PACK IS BEING FORMATTED,
*                  AND THE ELAPSED MINUTES. 
* 
*          DFU01 - 895 PACK FORMATTING COMPLETE 
* 
*                  THIS MESSAGE INDICATES THAT  THE FORMAT OPERATION
*                  IS COMPLETE. 
* 
*          DFU03 - FORMAT 895 PACK CYLINDER 885D ONLY 
* 
*                  THIS MESSAGE IS THE INITIAL RUNNING MESSAGE
*                  FOR DFU03. 
* 
*          DFU03 - FORMATTING TO BEGIN
* 
*                  THIS MESSAGE IS DISPLAYED BEFORE PAUSE AND INDICATES 
*                  FORMATTING WILL START AFTER THE OPERATOR 
*                  ENTERS *GO*. 
* 
*          DFU03 - PAUSE - FORMAT CYLINDER 885D CH=CH, EQ=EQ, UN=UN 
* 
*          ---------------------------------------------- 
*          THIS MODULE WILL WRITE CYLINDER 885D IN SMALL
*          RECORDS ALL EXISTING DATA ON CYLINDER 885D 
*          WILL BE DESTROYED. 
* 
*                  THIS MESSAGE IS A WARNING TO THE OPERATOR. 
* 
*          DFU03 -FORMATTING CYLINDER 885D-XX SEC 
* 
*                  THIS MESSAGE INDICATES 895 PACK CYLINDER 885D IS 
*                  BEING FORMATTED, AND THE ELAPSED SECONDS.
* 
*          DFU03 - CYLINDER 885D FORMATTING COMPLETE
* 
*                  THIS MESSAGE INDICATES THAT THE FORMAT OPERATION 
*                  IS COMPLETE. 
* 
*          DFU11 - REALLOCATE SECTOR
* 
*                  THIS IS THE DFU11 RUNNING MESSAGE. 
* 
*          DFU11- REALLOCATING TO BEGIN 
* 
*                  THIS MESSAGE IS DISPLAYED BEFORE PAUSE AND INDICATES 
*                  REALLOCATING WILL START AFTER THE OPERATOR 
*                  ENTERS *GO*. 
* 
*          DFU11 - PAUSE - UN = UN
*          REALLOCATE   CYL=*OCTB, TRK=*OB, SEC=*OB 
* 
*                  THIS MESSAGE INDICATES THAT 834/836 SECTOR 
*                  REALLOCATION WILL OCCUR USING THE ADDRESSES
*                  CONTAINED IN PARAMETER WORDS P7 THROUGH P9.
* 
*          SECTOR REALLOCATION COMPLETE 
* 
*                  THIS MESSAGE INDICATES SECTOR REALLOCATION IS
*                  COMPLETE.
* 
*          DFU13 -  SHORT FORMAT XXX
* 
*                  THIS MESSAGE IS THE INITIAL RUNNING MESSAGE
*                  FOR 834/836.  XXX IS THE DISK TYPE.
* 
*          PAUSE - FORMAT PACK - CH=CH, EQ=EQ, UN=UN
* 
*                  THIS MESSAGE INDICATES  THAT 834/836 FORMATTING
*                  WILL BEGIN USING THE ABOVE CHANNEL AND 
*                  EQUIPMENT AND UNIT.  THIS MESSAGE IS DISPLAYED 
*                  WHEN RUNNING DFU13 OR DFU15. 
* 
*          DFUXX FORMATTING XXX- YY MIN 
* 
*                  THIS MESSAGE IS THE RUNNING MESSAGE. 
*                  IT MEANS FORMATTING IS IN PROGRESS AND UNIT IS BUSY. 
*                  IT DISPLAYS THE ELAPSED MINUTES. THIS MESSAGE IS 
*                  DISPLAYED FOR DFU13 AND DFU15.  XXX IS THE DISK TYPE 
*                  WHICH IS 834 OR 835.  YY IS THE NUMBER OF MINUTES. 
* 
*          FORMATTING REINITIALIZES THE ENTIRE PACK BY
*          WRITING NEW ADDRESS FIELDS ACCORDING TO ETF LOG
*          ALREADY AVAILABLE.  THEREFORE ALL EXISTING DATA
*          WILL BE DESTROYED.   THE REFORMATTING PROCESS
*          REQUIRES A DEDICATED CONTROL MODULE AND
*          DRIVE FOR APPROXIMATELY YY MINUTES.
* 
*                  THIS MESSAGE IS A WARNING TO THE OPERATOR BEFORE 
*                  EXECUTING DFU13.  YY IS THE NUMBER OF MINUTES. 
* 
*          DFU14 - ISD WRITE/READ LAST THREE CYLINDERS
* 
*                  THIS MESSAGE IS THE INITIAL RUNNING MESSAGE
*                  FOR MODULE 14. 
* 
*          DFU14 -  WRITE CYL = CCCC   TRK = TT   SEC = SS
*          DFU14 -  READ  CYL = CCCC   TRK = TT   SEC = SS
* 
*                  THESE MESSAGES ARE THE RUNNING MESSAGES. 
*                  IT  MEANS  WRITING  OR  READING  IS  IN
*                  PROGRESS. CCCC IS THE CURRENT CYLINDER.
*                  TT IS THE CURRENT TRACK AND SS IS THE
*                  CURRENT SECTOR.
* 
*          WRITING AND READING THE  LAST  THREE  CYLINDERS
*          AFTER A SHORT FORMAT ENSURES THAT  CTI  CAN  BE
*          LOADED WITHOUT ERROR.
* 
*          DFU15 - LONG FORMAT XXX
* 
*                  THIS IS THE INITIAL RUNNING MESSAGE FOR
*                  DFU15.  XXX IS THE DISK TYPE.
* 
*          FORMATTING REINITIALIZES THE ENTIRE PACK BY
*          WRITING NEW ADDRESS FIELDS AND PERFORMING A MEDIA
*          SURFACE ANALYZES.  THEREFORE ALL EXISTING DATA 
*          WILL BE DESTROYED.   THE REFORMATTING PROCESS
*          REQUIRES A DEDICATED CONTROL MODULE AND DRIVE FOR
*          APPROXIMATELY YY HOURS.
* 
*                  THIS MESSAGE IS A WARNING TO THE OPERATOR BEFORE 
*                  EXECUTING DFU15.  YY IS THE NUMBER OF HOURS. 
* 
*          REFORMAT OF ENTIRE PACK COMPLETE 
* 
*                  THIS MESSAGE INDICATES THAT THE
*                  REFORMATTING PROCESS IS COMPLETE.
*                  THIS MESSAGE IS DISPLAYED WHEN RUNNING 
*                  DFU13 OR DFU15.
* 
*          DFU17 - FORMAT CYL=CYL 
* 
*                  THIS MESSAGE IS THE INITIAL RUNNING MESSAGE
*                  AND SPECIFIES THE CYLINDER TO BE FORMATTED.
* 
*          DFU17 - FORMAT CYL GS=0002B
* 
*                  THIS MESSAGE INDICATES FORMATTING CYLINDER 
*                  IS IN PROCESS AND SYSTEM IS BUSY.
* 
*          REFORMAT OF ENTIRE CYLINDER COMPLETE 
* 
*                  THIS MESSAGE INDICATES THAT THE
*                  REFORMATTING PROCESS OF THE ENTIRE 
*                  CYLINDER SPECIFIED BY PARAMETER P7 
*                  IS COMPLETE. 
* 
*          DFU17- FORMATTING TO BEGIN 
* 
*                  THIS MESSAGE IS DISPLAYED BEFORE PAUSE AND INDICATES 
*                  REFORMATTING WILL START AFTER THE OPERATOR 
*                  ENTERS *GO*. 
* 
* 
*          DFU17 - PAUSE - FORMAT CYL - CH=CH, EQ=EQ, UN=UN 
*                                       CYLINDER=CYL
* 
*                  THIS MESSAGE INDICATES THAT THE 834/836 CYLINDER 
*                  SPECIFIED IN PARAMETER P7 WILL BE FORMATTED. 
* 
*          DFU17 - FORMAT THE RESERVED CYLINDER (P7=4000B)
*                  LEVEL II AND ERROR LOGS WILL BE DESTROYED
* 
*                  THIS MESSAGE INDICATES THE OPERATOR HAS SET P7=4000B 
*                  FORMAT THE RESERVED CYLINDER (SYSTEM CYLINDER 0).
* 
*          DFU17 - FORMAT THE UPDATE ETF LOG (P7=4400B) 
*                          ALL PREVIOUS DEFECTS IN THE LOG ARE LOST 
* 
*                  THIS MESSAGE INDICATES THE OPERATOR HAS SET P7=4400B 
*                  FORMAT THE UPDATE ETF LOG. 
* 
*          FORMATTING REINITIALIZES THE ENTIRE CYL.  THE CM 
*          ANALYZES THE CYLINDER WITH WORST CASE DATA PATTERN 
*          AND USES DEFECT SKIPPING AND SECTOR REALLOCATION 
*          TECHNIQUES TO HIDE ANY MEDIA ERRORS. THEREFORE 
*          ALL DATA IN CYLINDER WILL BE DESTROYED.
* 
*                  THIS IS A WARNING TO THE OPERATOR BEFORE 
*                  EXECUTING DFU17. 
* 
*    4.3.2 ERROR MESSAGES 
* 
*          CHECK P7 - CYL ADDR TOO LARGE, MAX CYL = 1460B/1274B 
* 
*          CHECK P8 - TRK ADDR TOO LARGE, MAX TRK = 11B/27B 
* 
*          CHECK P9 - SEC ADDR TOO LARGE, MAX SEC = 37B/56B 
* 
*                  THESE ERROR MESSAGES ARE GENERATED FOR 834/836 
*                  WHEN AN ILLEGAL PARAMETER IS ENCOUNTERED.
* 
*          ERROR - GENERAL STATUS NOT RETURNED
* 
*                  THIS ERROR IS GENERATED WHEN AN ATTEMPT IS MADE TO 
*                  READ GENERAL STATUS AND THE FUNCTION ABORTED.  THE 
*                  FUNCTIONS  THAT ARE ABORTED, ARE REPORTED  BY
*                  PRODUCT OVERLAY ARE ALSO INCLUDED IN THE ERROR 
*                  MESSAGE.  SECTION 4.3.3 ILLUSTRATES THE FORMAT 
*                  OF THIS TYPE ERRORS. 
* 
*          ERROR - DETAIL STATUS NOT RETURNED 
* 
*                  THIS ERROR IS GENERATED WHEN AN ATTEMPT IS MADE TO 
*                  READ DETAIL STATUS AND THE FUNCTION ABORTED.  THE
*                  FUNCTIONS  THAT ARE ABORTED, ARE REPORTED  BY
*                  PRODUCT OVERLAY ARE ALSO INCLUDED IN THE ERROR 
*                  MESSAGE.  SECTION 4.3.3 ILLUSTRATES THE FORMAT 
*                  OF THIS TYPE ERRORS. 
* 
*          DFUXX -       TIME EXPIRED 
*          FORMATTING DID NOT COMPLETE  WITHIN
*                        YYY (TIME UNIT)
* 
*                  THIS MESSAGE INDICATES THAT A FORMAT OPERATION WAS 
*                  INITIATED AND THE OPERATION TOOK MORE THAN ENOUGH
*                  TIME TO EXECUTE.  IF THIS ERROR OCCURS THE STATE 
*                  OF THE DISK IS UNKNOWN.  XX IS THE MODULE NUMBER 
*                  YYY IS THE NUMBER OF TIME UNITS. 
* 
*          REALLOCATION ABORT - SPARE SECTOR ALREADY USED 
* 
*                  THIS MESSAGE IS GENERATED WHEN ATTEMPTING TO 
*                  REALLOCATE A SECTOR AND THE SPARE SECTOR HAS 
*                  ALREADY BEEN USED. 
* 
* 
*    4.3.3    ERROR FORMAT
* 
*    4.3.3.1  895 DISK ERROR FORMAT 
* 
*     LINE MESSAGE
*     ---- -------
* 
*      01  DFU01 - FORMAT 895 PACK
*      02  PAUSE - FORMAT PACK - CH=CH  EQ=EQ UN=UN 
*      03 
*      04  PRODUCT OVERLAY MESSAGE
*      05  ERROR CODE = EC AT LINE EA, LAST FCN =LF 
*      06  GENERAL STATUS IN OCTAL = XXXX 
*      07  SENSE BYTES IN HEX = 
*      08   0=YY   1=YY  2=YY  3=YY   4=YY   5=YY 
*      09   6=YY   7=YY  8=YY  9=YY  10=YY  11=YY 
*      10  12=YY  13=YY 14=YY 15=YY  16=YY  17=YY 
*      11  18=YY  19=YY 20=YY 21=YY  22=YY  23=YY 
*      12  DETAIL STATUS IN OCTAL = 
*      13  17=XXXX  18=XXXX  19=XXXX  20=XXXX 
* 
*          WHERE: 
* 
*          XXXX IS IN OCTAL AND YY IN HEX 
* 
*          EC = ERROR CODE
*          EA = ERROR ADDRESS 
*          LF = LAST FUNCTION 
* 
* 
*      IF THERE IS NO GENERAL STATUS RETURNED THE 
*      FOLLOWING ERROR FORMAT WILL BE DISPLAYED:  
* 
*     LINE MESSAGE
*     ---- -------
* 
*      01  DFU01 - FORMAT 895 PACK
*      02  PAUSE - FORMAT PACK - CH=CH  EQ=EQ UN=UN 
*      03 
*      04  PRODUCT OVERLAY MESSAGE
*      05  ERROR CODE = EC AT LINE EA, LAST FCN =LF 
*      06 
*      07 
*      08 
*      09 
*      10  ERROR - GENERAL STATUS NOT RETURNED
* 
*      01  DFU03 - FORMAT 895 PACK CYLINDER 885D ONLY 
*      02  PAUSE - FORMAT CYLINDER 885D - CH=CH  EQ=EQ UN=UN
*      03 
*      04  PRODUCT OVERLAY MESSAGE
*      05  ERROR CODE = EC AT LINE EA, LAST FCN =LF 
*      06  GENERAL STATUS IN OCTAL = XXXX 
*      07  SENSE BYTES IN HEX = 
*      08   0=YY   1=YY  2=YY  3=YY   4=YY   5=YY 
*      09   6=YY   7=YY  8=YY  9=YY  10=YY  11=YY 
*      10  12=YY  13=YY 14=YY 15=YY  16=YY  17=YY 
*      11  18=YY  19=YY 20=YY 21=YY  22=YY  23=YY 
*      12  DETAIL STATUS IN OCTAL = 
*      13  17=XXXX  18=XXXX  19=XXXX  20=XXXX 
* 
*          WHERE: 
* 
*          XXXX IS IN OCTAL AND YY IN HEX 
* 
*          EC = ERROR CODE
*          EA = ERROR ADDRESS 
*          LF = LAST FUNCTION 
* 
* 
*      IF THERE IS NO GENERAL STATUS RETURNED THE 
*      FOLLOWING ERROR FORMAT WILL BE DISPLAYED:  
* 
*     LINE MESSAGE
*     ---- -------
* 
*      01  DFU03 - FORMAT 895 PACK CYLINDER 885D ONLY 
*      02  PAUSE - FORMAT CYLINDER 885D - CH=CH  EQ=EQ UN=UN
*      03 
*      04  PRODUCT OVERLAY MESSAGE
*      05  ERROR CODE = EC AT LINE EA, LAST FCN =LF 
*      06 
*      07 
*      08 
*      09 
*      10  ERROR - GENERAL STATUS NOT RETURNED
* 
* 
* 
* 
*    4.3.3.2   834/836 ERROR FORMAT 
* 
*          THE FOLLOWING IS THE FORMAT OF DETAIL STATUS 
*          FOR 834/836 DISK DRIVE WHEN RUNNING DFU11 OR DFU17.
* 
*     01   DFU - ISD SUBSYSTEM MONITOR/UTILITY
*     02   RUNNING MESSAGE
*     03
*     04   PAUSE MESSAGE
*     05   PAUSE MESSAGE
*     06
*     07   WT= WT  WC=WC LF=LF
*     08   B0-B7 = B0 B1 B2 B3 B4 B5 B6 B7
*     09   B8-B15= B8 B9 B10 B11 B12 B13 B14 B15
*     10   LAST GENERAL STATUS = XXXX(OCT)
*     11        DETAIL STATUS IN OCTAL
*     12    1=NNNN    2=NNNN   3=NNNN   4=NNNN   5=NNNN 
*     13    6=NNNN    7=NNNN   8=NNNN   9=NNNN  10=NNNN 
*     14   11=NNNN   12=NNNN  13=NNNN  14=NNNN  15=NNNN 
*     15   16=NNNN   17=NNNN  18=NNNN  19=NNNN  20=NNNN 
* 
*          NNNN IS AN OCTAL VALUE 
*          B0 THROUGH B15 ARE REGISTER VALUES 
* 
* 
*         THE FOLLOWING IS THE ERROR FORMAT WHEN STATUS IS NOT
*         RETURNED FOR DFU11 OR DFU17.
* 
*     01   DFU - ISD SUBSYSTEM MONITOR/UTILITY
*     02   RUNNING MESSAGE
*     03
*     04   PAUSE MESSAGE
*     05   PAUSE MESSAGE
*     06
*     07   WT= WT  WC=WC LF=LF
*     08   B0-B7 = B0 B1 B2 B3 B4 B5 B6 B7
*     09   B8-B15= B8 B9 B10 B11 B12 B13 B14 B15
*     10
*     11
*     12
*     13
*     14   - ERROR - GENERAL STATUS  NOT RETURNED 
* 
* 
* 
* 
*          THE FOLLOWING IS THE FORMAT OF DETAIL STATUS 
*          FOR 834/836 DISK DRIVE WHEN RUNNING DFU13 OR DFU15.
* 
*     01   DFU - ISD SUBSYSTEM MONITOR/UTILITY
*     02   RUNNING MESSAGE
*     03
*     04   PAUSE MESSAGE
*     05   WT= WT  WC=WC LF=LF
*     06   B0-B7 = B0 B1 B2 B3 B4 B5 B6 B7
*     07   B8-B15= B8 B9 B10 B11 B12 B13 B14 B15
*     08   LAST GENERAL STATUS = XXXX(OCT)
*     09        DETAIL STATUS IN OCTAL
*     10    1=NNNN    2=NNNN   3=NNNN   4=NNNN   5=NNNN 
*     11    6=NNNN    7=NNNN   8=NNNN   9=NNNN  10=NNNN 
*     12   11=NNNN   12=NNNN  13=NNNN  14=NNNN  15=NNNN 
*     13   16=NNNN   17=NNNN  18=NNNN  19=NNNN  20=NNNN 
* 
*          NNNN IS AN OCTAL VALUE 
*          B0 THROUGH B15 ARE REGISTER VALUES 
* 
* 
*          THE FOLLOWING IS THE FORMAT OF DETAIL STATUS 
*          FOR 834/836 DISK DRIVE WHEN RUNNING DFU14. 
* 
*     01   DFU14 - ISD WRITE/READ LAST THREE CYLINDERS
*     02
*     03   EC=EC     EA=EA     LF=LF     WT=WT
*     06   B0-B7 = B0 B1 B2 B3 B4 B5 B6 B7
*     07   B8-B15= B8 B9 B10 B11 B12 B13 B14 B15
*     04   IB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA
*     05   OB (0-7)  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB
*     06   B0-B7  =  B0   B1   B2   B3   B4   B5   B6   B7
*     07   B8-B15 =  B8   B9   B10  B11  B12  B13  B14  B15 
*     08                 GENERAL STATUS = XXXX(OCT) 
*     09                DETAILED STATUS  (OCTAL)
*     10    1D = NNNN   6D = NNNN   11D = NNNN   16D = NNNN 
*     11    2D = NNNN   7D = NNNN   12D = NNNN   17D = NNNN 
*     12    3D = NNNN   8D = NNNN   13D = NNNN   18D = NNNN 
*     13    4D = NNNN   9D = NNNN   14D = NNNN   19D = NNNN 
*     14    5D = NNNN  10D = NNNN   15D = NNNN   20D = NNNN 
*     15  --------------------------------------------------- 
* 
*          AAAA IS AN OCTAL VALUE 
*          BBBB IS AN OCTAL VALUE 
*          NNNN IS AN OCTAL VALUE 
*          B0 THROUGH B15 ARE REGISTER VALUES 
* 
* 
*         THE FOLLOWING IS THE ERROR FORMAT WHEN STATUS IS NOT
*         RETURNED FOR DFU13 OR DFU15.
* 
*     01   DFU - ISD SUBSYSTEM MONITOR/UTILITY
*     02   RUNNING MESSAGE
*     03
*     04   PAUSE MESSAGE
*     05   WT= WT  WC=WC LF=LF
*     06   B0-B7 = B0 B1 B2 B3 B4 B5 B6 B7
*     07   B8-B15= B8 B9 B10 B11 B12 B13 B14 B15
*     08
*     09
*     10
*     11
*     12   - ERROR - GENEAL STATUS  NOT RETURNED
* 
*          NNNN IS IN OCTAL 
*          B0 THROUGH B15 ARE REGISTER VALUES 
* 
*    4.3.4 ERROR CODES
* 
*          ALL OF THE ERROR CODES USED BY DFU ARE DOCUMENTED
*          IN THE MALET REFERENCE MANUAL IN THE SECTION 
*          ENTITLED - QUICK REFERENCE -.
* 
* 
* 
* 
***  5.0   MODULE DESCRIPTIONS
**   5.0   MODULE DESCRIPTIONS
*    5.0   MODULE DESCRIPTIONS
*          -------------------
* 
*          DFU00              - THIS MODULE IS INTENDED TO PREVENT
*                               THE OPERATOR FROM EXECUTING DFU01, IF 
*                               HE ENTERS -R,DFU-.  IT WILL DISPLAY 
*                               THE FOLLOWING MESSAGE: "DFU MODULES 
*                               HAVE TO BE RUN INDIVIDUALLY AND 
*                               INDEPENDENTLY BY ENTERING -R,DFU(XX)- 
*                               IN WHICH XX IS A MODULE NUMBER".
* 
*          DFU01              - THIS MODULE INITIALIZES THE 895 DISK
*                               FOR USAGE BY THE OPERATING SYSTEM.
*                               THE RECORD SIZE FOR  CYLINDER 
*                               0 THROUGH 884D IS WRITTEN FOR 
*                               A RECORD LENGTH OF EITHER 10260D
*                               12-BIT WORDS(15390D 8-BIT-BYTES) OR 
*                               2752D 12-BIT WORDS(4128D 8-BIT-BYTES) 
*                               DEPENDING ON PARAMETER P0. RECORD 
*                               SIZE FOR CYLINDER 885D IS WRITTEN 
*                               FOR A RECORD LENGTH OF 322D 12-BIT
*                               WORDS(483 8-BIT BYTES). ALL DATA ON 
*                               THE PACK IS DESTROYED.
* 
*          DFU03              - THIS MODULE INITIALIZES THE 895 DISK
*                               CYLINDER 885D ONLY FOR USAGE BY 
*                               MAINTENANCE SOFTWARE. RECORD SIZE FOR 
*                               CYLINDER 885D IS WRITTEN FOR A RECORD 
*                               LENGTH OF 322D 12-BIT WORDS(483 8-BIT 
*                               BYTES). ALL DATA ON CYLINDER 885D IS
*                               DESTROYED.
* 
* 
*          DFU11              - THIS MODULE CAUSES THE SPECIFIED
*                               SECTOR OF 834/836 TO BE SPECIFIED 
*                               AS BAD  AND HEADER ADDRESSES TO BE
*                               AUTOMATICALLY SHIFTED ACCORDINGLY.  THE 
*                               LAST LOGICAL SECTOR OF EACH TRACK IS
*                               DESIGNED AS A SPARE SECTOR.  THE CM 
*                               MEMORY ALLOWS MULTIPLE DEFECTIVE
*                               SECTORS IN A TRACK AS LONG AS THE 
*                               NUMBER OF DEFECTIVE SECTORS DOES NOT
*                               EXCEED THE AVAILABLE SPARE SECTORS IN 
*                               THE CYLINDER AND NO DEFECTIVE SECTORS 
*                               ARE ADJACENT. 
* 
*          DFU13              - THIS MODULE WILL FORMAT THE ENTIRE
*                               834/836 PACK.  THE UPDATE ETF LOG 
*                               IS READ TO DETERMINE CYLINDERS HAVING 
*                               MEDIA DEFECTS.  ONLY HEADERS ARE
*                               WRITTEN ON CYLINDERS NOT HAVING MEDIA 
*                               DEFECTS.  HEADERS AND DATA FIELDS ARE 
*                               WRITTEN ON CYLINDERS HAVING MEDIA 
*                               DEFECTS. THEREFORE ALL EXISTING DATA
*                               WILL BE DESTROYED.
* 
*          DFU14              - THIS MODULE WILL WRITE AND READ THE 
*                               LAST  THREE  CYLINDERS  ON THE DISK 
*                               AND ALLOWS CTI TO BE LOADED WITHOUT 
*                               UNRECOVERED ERRORS. 
* 
*          DFU15              - THIS MODULE WILL FORMAT THE 
*                               ENTIRE 834/ 836 PACK.  A SURFACE
*                               ANALYSIS WILL WILL BE DONE TO FIND
*                               MEDIA DEFECTS.  AN UPDATED ETF LOG
*                               WILL BE GENERATED AND WRITTEN.
*                               THEREFORE ALL EXISTING DATA WILL
*                               BE DESTROYED. 
* 
*          DFU17              - THIS MODULE CAUSES THE CM TO FORMAT 
*                               THE SPECIFIED CYLINDER IN 834/836.
*                               THE CM ANALYZES THE CYLINDER WITH 
*                               WORST CASE DATA PATTERNS AND USES 
*                               DEFECT SKIPPING AND SECTOR
*                               REALLOCATION TECHNIQUES TO HIDE ANY 
*                               MEDIA ERRORS. 
* 
*                               THIS MODULE CAN BE USED TO FORMAT 
*                               THE RESERVED CYLINDER BY SETTING THE
*                               CYLINDER NUMBER TO 4000 (OCTAL).
*                               THE RESERVED CYLINDER CONTAINS COS, 
*                               LEVEL II DIAGNOSTICS AND THE ERROR LOG. 
*                               THE CM RESTORES COS, BUT LEVEL II 
*                               DIAGNOSTICS AND THE ERROR LOG ARE 
*                               DESTROYED.
* 
*                               THIS MODULE CAN ALSO BE USED TO 
*                               FORMAT THE UPDATE ETF LOG BY
*                               SETTING THE CYLINDER NUMBER TO
*                               4400 OCTAL.  ALL PREVIOUS DEFECTS 
*                               IN THE LOG ARE LOST.
* 
*          DFU21              - THIS MODULE WRITES THE CONTROLWARE
*                               CONTAINED IN THE MALET SCRATCH FILE TO
*                               CYLINDER 885, TRACK 1 OF THE 895 DISK.
*                               MODULE DFU21B IS USED TO DETERMINE THE
*                               LENGTH OF THE CONTROLWARE, AND MODULE 
*                               DFU21A IS USED TO WRITE EACH SECTOR.
* 
***  6.0   APPLICATIONS 
**   6.0   APPLICATIONS 
*    6.0   APPLICATIONS 
*          ------------ 
* 
*            IF THE OPERATOR STARTS ANY OF THE MODULES, EXECUTION WILL
*            CONTINUE UNTIL COMPLETION OF THE FUNCTION REGARDLESS OF
*            OPERATOR INTERVENTION SUCH AS STOPPING THE TEST. 
* 
*            DFU IS ONLY TO BE USED FOLLOWING A MAINTENANCE ACTION
*            BY THE CUSTOMER ENGINEERS, AS A RESULT DFU IS ONLY 
*            MEANT FOR OFF-LINE.
* 
*            IF ANY ERROR OCCURS WHILE RUNNING DFU THE OPERATOR IS
*            URGED TO REFER TO TROUBLE SHOOTING GUIDES DOCUMENTED 
*            UNDER APPLICABLE DOCUMENTS, IN SECTION 2.0 AND RUN 
*            SOME OTHER DIAGNOSTICS TO FIX THE PROBLEM BEFORE 
*            RUNNING DFU AGAIN. 
* 
*            THE ALTERNATIVE TO AN 8/16 HOURS FORMATTING FOR THE
*            834/836 DRIVES IS TO RUN DFU17 WITH P7 SET TO 4400;
*            THIS WILL CLEAR THE ETF LOG, THEN RUN DFU13.  THIS 
*            WILL RESTORE THE DISK TO IT-S ORIGINAL STATE.
* 
*            DFU ASSUMES THAT THE SYSTEM IS FULLY OPERATIONAL.
* 
***  7.0   INTERFACES 
**   7.0   INTERFACES 
*    7.0   INTERFACES 
*          ---------- 
* 
*    7.1   ABORT AND RECOVERY 
* 
* 
*    7.1.1 TEST ABORTS
* 
*          THIS SECTION IS INTENDED TO DESCRIBE  ALL INSTANCES
*          WHERE DFU MIGHT ABORT AND WHAT  EFFECT THE ABORT WOULD HAVE
*          ON THE SYSTEM.  FOR EASE OF REFERENCE, THOSE CONDITIONS AND
*          RESPONSES ARE GROUPED WITH THE ERROR MESSAGES AND CODE 
*          IN SECTION 4.3.
* 
*    7.1.2 SYSTEM ABORTS
* 
*          DFU EXECUTES UNDER DEMOT AND IS PROTECTED AGAINST SYSTEM 
*          ABORTS BY THE EXECUTIVE AND DRIVER.  THE ONLY INSTANCE 
*          WHERE A SYSTEM ABORT MIGHT OCCUR IS IF THE USER ABORTS 
*          DEMOT.  IF THIS WERE TO OCCUR, DFU WOULD BE ABORTED, 
*          LEAVING THE SUBSYSTEM IN AN UNKNOWN STATE. 
* 
*    7.2   ERRORS 
* 
*          THIS SECTION IS INTENDED TO DESCRIBE THOSE ERROR MESSAGES
*          NOT ASSOCIATED WITH THE ACTUAL HARDWARE TESTING FUNCTION OF
*          THE TEST.  FOR EASE OF REFERENCE, THESE MESSAGES ARE 
*          GROUPED WITH THE ERROR MESSAGES IN SECTION 4.3.
* 
*    7.3   PERFORMANCE
* 
*    7.3.1 DFU PERFORMANCE
* 
*          THE ONLY PERFORMANCE CHARACTERISTIC OF THIS UTILITY IS 
*          THE RUN TIME WHICH IS DOCUMENTED UNDER CHARACTERISTICS.
* 
*    7.3.2 IMPACT ON SYSTEM PERFORMANCE 
* 
*          SINCE DFU IS ONLY FOR OFF-LINE, IT DOES NOT HAVE 
*          ANY IMPACT ON SYSTEM PERFORMANCE.
* 
*    7.4   INSTALLATION PARAMETERS
* 
*          THERE ARE NO INSTALLATION PARAMETERS FOR THIS PRODUCT. 
* 
***  8.0   LOGICAL DATA STRUCTURE 
**   8.0   LOGICAL DATA STRUCTURE 
*    8.0   LOGICAL DATA STRUCTURE 
*          ---------------------- 
* 
*          NONE 
* 
***  9.0   SOFTWARE SYSTEM DESCRIPTION
**   9.0   SOFTWARE SYSTEM DESCRIPTION
*    9.0   SOFTWARE SYSTEM DESCRIPTION
*          ---------------------------
* 
*    9.1   PUBLICATIONS AFFECTED
* 
* 
*          MALET REFERENCE MANUAL                     60456020
* 
*          DIAGNOSTIC DOCUMENTATION                   12361055
* 
*          MSL-150 OFF-LINE MAINTENANCE               60456530
*          SOFTWARE LIBRARY REFERENCE 
*          MANUAL 
* 
* 
*    9.2   EQUIPMENT CONFIGURATION
* 
* 
*    9.2.1 TARGET CONFIGURATION 
* 
*          1 CYBER 180 MODEL 810, 815, 825, 830, 835, 845, OR 855 
*          1 IOU WITH 10 PP-S AND 12 CHANNELS 
*          1 DISPLAY
*          1 7165/895 DISK SUBSYSTEM
*            OR 
*          1 834/836 INTELLIGENT SMALL DISK(ISD) SUBSYSTEM. 
* 
*    9.3   SOFTWARE PRODUCTS AND SYSTEM 
* 
* 
*          1. CMSE
*          2. DEMOT 
* 
* 
*    9.4   EFFECT ON PERFORMANCE
* 
*          PERFORMANCE IS NOT EFFECTED BY ADDING OR SUBTRACTING 
*          EQUIPMENT. 
* 
*    9.5   UNSUPPORTED CAPABILITIES 
* 
* 
*          NONE-
* 
*    9.6   HARDWARE NOT FULLY UTILIZED
* 
*          NONE-
* 
* 
*    9.7   INTERFACES TO OTHER SOFTWARE PRODUCTS
* 
*    9.7.1 OFF-LINE INTERFACES TO/FROM DFU
* 
*          A.  DFU INTERFACES TO/FROM CMSE
* 
*              DFU NEVER INTERFACES TO CMSE.  DFU RUNS UNDER DEMOT
*              WHO INTERFACES TO CMSE.
* 
*    9.8   RESTRICTIONS AND LIMITATIONS 
* 
*          "RESTRICTIONS AND LIMITATIONS HAVE BEEN DEFINED
*          IN SECTION 1.1". 
* 
* 
***        APPENDIX A 
**         APPENDIX A 
*          APPENDIX A 
*          ---------- 
* 
*          GLOSSARY 
* 
*          DEFINITION OF TERMS
* 
*          REALLOCATE A SECTOR - THIS IS ONE OF THE FUNCTIONS 
*          OF CONTROLWARE MICROCODE,  WHEN IT FLAGS THE SPECIFIED 
*          SECTOR AS BAD AND ASSIGNS A SPARE SECTOR.
* 
*          ETF LOG - THIS IS THE UTILITY MAP FOR 834 OR 836.
* 
*          ABBREVIATIONS
* 
*         CYL          CYLINDER 
*         TRK          TRACK
*         SEC          SECTOR 
*         AL           ACCESS LEVEL 
*         CH           CHANNEL
*         EQ           EQUIPMENT
*         UN           UNIT 
*         FCN          FUNCTION 
*         EC           ERROR CODE 
*         EA           ERROR ADDRESS
*         WT           WORDS TRANSMITTED
*         WC           WORD COUNT 
*         LF           LAST FUNCTION
*         CM           CONTROL MODULE 
   MODULE DFU00, 6000, (110,111,115), LOCK
***  DFU00 - MESSAGE TO OPERATOR
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         DFU00 DISPLAY THE INFORMATION ABOUT RUNNING DFU.
* 
*   1.2   METHOD
* 
*         1.  DISPLAY RUNNING INFORMATION 
*         2.  END MODULE
* 
*   1.3   ERRORS REPORTED 
*         NONE
  
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
*   2.1   ENTRY CONDITIONS
*         NONE
* 
*   2.2   REGISTERS AND BUFFERS USED
*         NONE
* 
*   2.3   SUBMODULES USED 
*         NONE
* 
* 
* -----------------DATA DIVISION----------------------------
* 
00 FORMAT  DFU00 - MESSAGE TO OPERATOR
01 FORMAT  DFU MODULES HAVE TO BE RUN INDIVIDUALLY
02 FORMAT  AND INDEPENDENTLY BY ENTERING
03 FORMAT  -R,DFU(XX)- IN WHICH XX IS THE MODULE
04 FORMAT  NUMBER.
* 
* -----------------DISPLAY MESSAGE--------------------------
* 
20 MSG 0 TO DISPLAY, PRINT
   MSG 1 TO LINE 5
   MSG 2 TO LINE 6
   MSG 3 TO LINE 7
   MSG 4 TO LINE 10 
   END 20 
COMPILE                      *DFU00 - MESSAGE TO OPERATOR 
   MODULE DFU01, 6000, (115), LOCK
***  DFU01 - FORMAT 895 PACK
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DFU01 FORMATS THE ENTIRE DISK PACK EXCEPT CYL 885D IN 
*         NOS LARGE  RECORD SIZE. CYLINDER 885D WILL BE FORMATTED 
*         IN SMALL RECORD SIZE. 
*         ONLY THE RECORD SIZE IS WRITTEN.  LARGE RECORD SIZE IS
*         15390D 8-BIT-BYTES/10260 12-BIT BYTES OR 4128D
*         8-BIT-BYTES/2752 12-BIT BYTES DEPENDING ON P0 AND 
*         SMALL RECORD SIZE IS 483 8-BIT-BYTES OR 322D 12-BIT 
*         BYTES.
* 
*    1.2  METHOD- 
* 
*         1.  SETUP FORMAT PARAMETERS FOR FULL PACK FORMATTING
*             DEPENDING ON PARAMETER P0. IF P0 IS EQUAL TO 0000 
*             SET RECORD SIZE TO 15390D 8 BIT BYTES. IF P0 IS 
*             NON-ZERO SET RECORD SIZE TO 4127D 8 BIT BYTES.
*         2.  GO TO STEP 10 
*         3.  SETUP FORMAT PARAMETERS FOR FORMATTING CYLINDER 
*             885D
*         4.  GO TO STEP 10 
*         5.  SET UP PARAMETERS FOR FORMATTING TRACK ZERO OF
*             CYLINDER 885D 
*         6.  GO TO STEP 10 
*         7.  SET UP PARAMETERS FOR FORMATTING TRACK ONE OF 
*             CYLINDER 885D 
*         8.  GO TO STEP 10 
*         9.  END MODULE
*        10.  ISSUE FORMAT FUNCTION 
*        11.  OUTPUT FORMAT PARAMETERS
*        12.  WAIT FOR ONE SECOND 
*        13.  TAKE GENERAL STATUS 
*        14.  IF DEVICE IS BUSY DO FOLLOWING
*        15.  INCREMENT WAIT COUNT
*        16.  IF TIME IS EXPIRED (MORE THAN 400 SEC) DO FOLLOWING 
*        17.  DISCONNECT CHANNEL
*        18.  DISPLAY NO RESPONSE STATUS
*        19.  IF DEVICE IS NOT BUSY, RETURN TO STEP 3, 5, 7, OR 9.
* 
*    1.3  ERRORS REPORTED 
* 
*         DFU01 - TIME EXPIRED
*         FORMATTING DID NOT COMPLETE WITHIN
*                 400 SEC 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         DFU01 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE
*         EXECUTION. HOWEVER IF 4128D 8 BIT BYTE RECORD SIZE
*         IS WANTED P0 MUST BE MADE NON-ZERO. 
* 
*    2.2  REGISTERS AND BUFFER USAGE
* 
*         B1   = ITERATION INDEX
*         B2   = OUTPUT BUFFER INDEX
*         B3   = WAIT COUNT FOR FORMAT FUNCTION 
*         B4   = MODULE NUMBER
*         B5   = DISPLAY LINE NUMBER
*         B6   = SECOND COUNTER 
*         B7   = MINUTE COUNTER 
* 
*         BUFFERS USED- 
* 
*         OB(0) THROUGH OB(18D)  =  FORMAT PARAMETERS 
*         SB(0) = GENERAL STATUS IS STORED HERE 
* 
*    2.3  SUBMODULES USED 
* 
*         DFU98A     - DISPLAY STATUS 
*         DFU96A     - PARAMETER VERIFICATION MODULE
* 
* -----------------DATA DIVISION----------------------------
* 
0  FORMAT - DFU01- FORMAT 895 PACK
2  FORMAT 895 PACK FORMATTING COMPLETE
3  FORMAT ------------------------------------- 
5  FORMAT PAUSE - FORMAT PACK - CH=*O, EQ=*O, UN=*O 
6  FORMAT THIS MODULE WILL WRITE CYLINDER 0-884D IN LARGE 
7  FORMAT RECORDS 15390D 8 BIT BYTES AND CYLINDER 885D IN 
10 FORMAT SMALL RECORDS 483D 8 BIT BYTES. ALL EXISTING
11 FORMAT DATA WILL BE DESTROYED. 
12 FORMAT DFU01 - FORMATTING TO BEGIN 
13 FORMAT DFU01 -    TIME EXPIRED 
14 FORMAT FORMATTING DID NOT COMPLETE WITHIN
15 FORMAT            400 SECONDS. 
16 FORMAT DFU01-FORMATTING 895- *D MIN  *D SEC
17 FORMAT RECORDS 4128D 8 BIT BYTES AND CYLINDER 885D IN
* 
* -----------------INITIALIZATION---------------------------
* 
20 B5=14                                *SET DISPLAY LINE 
   B6=0 
   B4=01D                               *MODULE NUMBER
   B8 = 7                    *PRESET MESSAGE NUMBER 
   IF (P0.NE.0) B8 = 17      *SET MESSAGE NUMBER FOR CORRECT PARAM
   MSG 0 TO LINE 1
   MSG 0 TO DISPLAY, PRINT
   MSG 5 (SB(70),SB(71),SB(72)) TO LINE 2 
   MSG 6 TO LINE 6
   MSG B8 TO LINE 7 
   MSG 10 TO LINE 10
   MSG 11 TO LINE 11
   MSG 12 TO DISPLAY, PRINT             *REASON FOR PAUSE 
   PAUSE
   MSG 16 (B7,B6) TO DISPLAY, PRINT       *INITIAL MINUTE RUNNING MSG 
   B1=0                                *INIT. FORMAT REP. 
   OB(0)=0                             *SET FORMAT PARAM. 
   OB(1)=SB(72) AND 0077 XOR 4300      *SET DEVICE IN P2
   IF (P0.EQ.0) OB(2)=1000   *LARGE RECORD FORMAT 15390 BYTES 
   IF (P0.NE.0) OB(2)=4000   *LARGE RECORD FORMAT 4128 BYTES
   B2=3                                *BUFFER INDEX
24 OB(B2)=0 
   GOTO 24 WHILE (B2+1.NE.18D)    *CLEAR REST OF PARAMETERS 
* 
* -----------------TEST-------------------------------------
* 
   GOSUB 50 
* 
30 OB(0)=885D                          *SET LAST CYL
   OB(1)=SB(72) AND 77 XOR 2300        *FORMAT ONE CYL
   OB(2)=0000                          *SMALL RECORD FORMAT.
   GOSUB 50                            *GO FORMAT 
* 
32 OB(1)=SB(72) AND 77 XOR 300         *FORMAT TRACK 0
   GOSUB 50 
* 
   OB(2)=0001                          *FORMAT TRACK 1
   GOSUB 50 
* 
* -----------------EXIT-------------------------------------
* 
   MSG 2 TO LINE 15                    *FORMATTING COMPLETE 
   PICTURE
   GOTO 77                             *END 
* 
* -----------------SUBROUTINES------------------------------
* 
50 RES, ABT 74                         *RESERVE THE CHANNEL 
   FUNC 16, ABT 74                     *ISSUE FORMAT FUNC.
   OUTB 18D WORDS FROM OB(0), ABT 74     *OUTPUT PARAMETERS 
52 RES,ABT 74 
   DELAY 990D MSEC
   FUNC 12,ABT 74                      *GET GENERAL STATUS
   STATUS 1 WORDS TO SB, ABT 74 
   IF(SB.AND.2.EQ.0) GOTO 56           *IF NOT BUSY, JUMP 
   B3=B3+1                             *INCREMENT WAIT COUNT
   MSG 16 (B7,B6) TO LINE 13              *UPDATE RUNNING MESSAGE 
   B6=B6+1                             *INCREMENT SECOND
   IF(B6.EQ.60D) GOSUB 54              *IF ONE MIN
* 
   IF(B3.LT.400D) GOTO 52              *DISPLAY ERR. MESSAGE
* 
   MSG 13 TO LINE B5
   B5=B5+1
   MSG 14 TO LINE B5
   B5=B5+1
   MSG 15 TO LINE B5
   PICTURE
   MSG 3 TO PRINT 
   GOTO 77                             *END MODULE
* 
54 B7=B7+1                             *INCREMENT MINUTE
   B6=0                                *RESET SECOND COUNTER
   MSG 16 (B7,B6) TO DISPLAY, PRINT       *UPDATE MINUTE RUNNING MSG
   RETURN                              *RETURN
* 
56 IF(SB.NE.0) GOTO 74
   RES, ABT 74
   FUNC 10,ABT 74                      *OPERATION COMPLETE
   RETURN 
* 
* -----------------ABORT PROCESSOR--------------------------
* 
74 B5=03
   CALL 98A 
   PICTURE
   HALT 
   MSG 3 TO PRINT 
   BLANK
77 END 20 
COMPILE                      *DFU01 - FORMAT 895 PACK 
   MODULE DFU03, 6000, (115), LOCK
***  DFU03 - FORMAT 895 PACK CYLINDER 885D ONLY 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DFU03 FORMATS CYLINDER 885D IN SMALL RECORD SIZE. 
*         SMALL RECORD SIZE IS 483 8-BIT-BYTES OR 322D 12-BIT 
*         BYTES.
* 
*    1.2  METHOD- 
* 
*         1.  SETUP FORMAT PARAMETERS FOR FORMATTING CYLINDER 
*             885D
*         2.  GO TO STEP 8
*         3.  SET UP PARAMETERS FOR FORMATTING TRACK ZERO OF
*             CYLINDER 885D 
*         4.  GO TO STEP 8
*         5.  SET UP PARAMETERS FOR FORMATTING TRACK ONE OF 
*             CYLINDER 885D 
*         6.  GO TO STEP 8
*         7.  END MODULE
*         8.  ISSUE FORMAT FUNCTION 
*         9.  OUTPUT FORMAT PARAMETERS
*        10.  WAIT FOR ONE SECOND 
*        11.  TAKE GENERAL STATUS 
*        12.  IF DEVICE IS BUSY DO FOLLOWING
*        13.  INCREMENT WAIT COUNT
*        14.  IF TIME IS EXPIRED (MORE THAN 10 SEC) DO FOLLOWING
*        15.  DISCONNECT CHANNEL
*        16.  DISPLAY NO RESPONSE STATUS
*        17.  IF DEVICE IS NOT BUSY, INCREMENT A SECOND TIMER 
*        18.  POST THE TIME IN SECONDS, THEN RETURN TO STEP 3, OR 5.
* 
*    1.3  ERRORS REPORTED 
* 
*         DFU03 - TIME EXPIRED
*         FORMATTING DID NOT COMPLETE WITHIN
*                 10 SEC
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         DFU03 DOES NOT REQUIRE SETTING ANY PARAMETERS BEFORE
*         EXECUTION.
* 
*    2.2  REGISTERS AND BUFFER USAGE
* 
*         B1   = ITERATION INDEX
*         B2   = OUTPUT BUFFER INDEX
*         B3   = WAIT COUNT FOR FORMAT FUNCTION 
*         B4   = MODULE NUMBER
*         B5   = DISPLAY LINE NUMBER
*         B6   = SECOND COUNTER 
*         B7   = SECOND COUNTER 
* 
*         BUFFERS USED- 
* 
*         OB(0) THROUGH OB(18D)  =  FORMAT PARAMETERS 
*         SB(0) = GENERAL STATUS IS STORED HERE 
* 
*    2.3  SUBMODULES USED 
* 
*         DFU98A     - DISPLAY STATUS 
* 
* -----------------DATA DIVISION----------------------------
* 
0  FORMAT - DFU03- FORMAT 895 PACK CYLINDER 885D ONLY 
2  FORMAT CYLINDER 885D FORMATTING COMPLETE 
3  FORMAT ------------------------------------- 
5  FORMAT PAUSE - FORMAT CYLINDER 885D - CH=*O, EQ=*O, UN=*O
6  FORMAT THIS MODULE WILL WRITE CYLINDER 885D IN SMALL 
10 FORMAT RECORDS ALL EXISTING DATA ON CYLINDER 885D
11 FORMAT WILL BE DESTROYED.
12 FORMAT DFU03 - FORMATTING TO BEGIN 
13 FORMAT DFU03 -    TIME EXPIRED 
14 FORMAT FORMATTING DID NOT COMPLETE WITHIN
15 FORMAT            10 SECONDS.
16 FORMAT DFU03-FORMATTING CYLINDER 885D - *D SEC 
* 
* -----------------INITIALIZATION---------------------------
* 
20 B5=14                                *SET DISPLAY LINE 
   B6=0 
   B4=01D                               *MODULE NUMBER
   MSG 0 TO LINE 1
   MSG 0 TO DISPLAY, PRINT
   MSG 5 (SB(70),SB(71),SB(72)) TO LINE 2 
   MSG 6 TO LINE 6
   MSG 10 TO LINE 7 
   MSG 11 TO LINE 10
   MSG 12 TO DISPLAY, PRINT             *REASON FOR PAUSE 
   PAUSE
   MSG 16 (B7) TO DISPLAY, PRINT
   B1=0                                *INIT. FORMAT REP. 
   OB(0)=885D                          *SET LAST CYL
   OB(1)=SB(72) AND 77 XOR 2300        *FORMAT ONE CYL
   OB(2)=0000                          *SMALL RECORD FORMAT.
   B2=3                                *BUFFER INDEX
24 OB(B2)=0 
   GOTO 24 WHILE (B2+1.NE.18D)    *CLEAR REST OF PARAMETERS 
* 
* -----------------TEST-------------------------------------
* 
   GOSUB 50                            *GO FORMAT 
* 
32 OB(1)=SB(72) AND 77 XOR 300         *FORMAT TRACK 0
   GOSUB 50 
* 
   OB(2)=0001                          *FORMAT TRACK 1
   GOSUB 50 
* 
* -----------------EXIT-------------------------------------
* 
   MSG 2 TO LINE 15                    *FORMATTING COMPLETE 
   PICTURE
   GOTO 77                             *END 
* 
* -----------------SUBROUTINES------------------------------
* 
50 RES, ABT 74                         *RESERVE THE CHANNEL 
   FUNC 16, ABT 74                     *ISSUE FORMAT FUNC.
   OUTB 18D WORDS FROM OB(0), ABT 74     *OUTPUT PARAMETERS 
52 RES,ABT 74 
   DELAY 1000D MSEC 
   FUNC 12, ABT 74                     *GET GENERAL STATUS
   STATUS 1 WORDS TO SB, ABT 74 
   IF(SB.AND.2.EQ.0) GOTO 56           *IF NOT BUSY, JUMP 
   B3=B3+1                             *INCREMENT WAIT COUNT
   B6=B6+1                             *INCREMENT SECOND
   IF(B6.EQ.1D) GOSUB 54               *IF 1 SECOND 
* 
   IF(B3.LT.10D) GOTO 52               *DISPLAY ERR. MESSAGE
* 
   MSG 13 TO LINE B5
   B5=B5+1
   MSG 14 TO LINE B5
   B5=B5+1
   MSG 15 TO LINE B5
   PICTURE
   MSG 3 TO PRINT 
   GOTO 77                             *END MODULE
* 
54 B7=B7+1D                            *INCREMENT SECONDS 
   MSG 16 (B7) TO DISPLAY, PRINT       *UPDATE RUNNING MSG. 
   B6=0                                *RESET SECOND COUNTER
   RETURN                              *RETURN
* 
56 IF(SB.NE.0) GOTO 74
   GOSUB 54                            *UPDATE RUNNING COUNTER
   RES, ABT 74
   FUNC 10,ABT 74                      *OPERATION COMPLETE
   RETURN 
* 
* -----------------ABORT PROCESSOR--------------------------
* 
74 B5=03
   CALL 98A 
   PICTURE
   HALT 
   MSG 3 TO PRINT 
   BLANK
77 END 20 
COMPILE                      *DFU03 - FORMAT 895 PACK 
   MODULE DFU11,6000(110,111)LOCK 
***       DFU11 - REALLOCATE SECTOR 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE - 
*         DFU11 REALLOCATES THE SPECIFIED SECTOR TO THE SPARE SECTOR IN 
*         THE ASSOCIATED TRACK. DATA REALLOCATION DOES NOT OCCUR. 
* 
* 
*    1.2  METHOD -
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
* 
*         2.  CALL 96A TO VALIDATE PARAMETERS.
* 
* 
*         3.  USE REGISTERS B7, B8, AND B9 TO HOLD THE CYLINDER, TRACK, 
*             AND SECTOR PARAMETERS.
* 
*         4.  ISSUE  A  MESSAGE SPECIFYING THE SECTOR THAT WILL BE REAL-
*             LOCATED, AND PAUSE AWAITING A GO DIRECTIVE. 
* 
*         5.  RESERVE THE CONTROL MODULE. 
* 
*         6.  ISSUE THE REALLOCATE FUNCTION USING THE ADDRESSES PER REG-
*             ISTERS B7, B8, AND B9.
* 
*         7.  WAIT UNTIL BUSY DROPS.
* 
*         8.  CHECK  FOR ABNORMAL GENERAL STATUS. IF ZERO, SECTOR REAL- 
*             LOCATION OCCURED. IF 5000, CHECK FOR THE SPARE SECTOR AL- 
*             READY BEING USED. 
* 
*         9.  RELEASE THE CONTROL MODULE. 
* 
*    1.3  ERRORS REPORTED 
* 
*         REALLOCATION ABORT - SPARE SECTOR ALREADY USED
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         DFU11 REQUIRES PARAMETERS P7, P8 AND P9 TO BE SET TO INDICATE 
*         THE SECTOR TO BE REALLOCATED. PARAMETER USAGE AND THE ALLOWED 
*         OCTAL VALUES ARE SHOWN BELOW--
*           P7 - CYLINDER (0 - 1460B) 
*           P8 - TRACK    (0 - 11B) 
*           P9 - SECTOR   (0 - 37B) 
*         AN ERROR MESSAGE IS DISPLAYED IF ANY OF THE PARAMETERS IS OUT 
*         OF RANGE. 
* 
*         EXIT -
*         DFU11 ERROR EXITS TO DFU97E TO REPORT STATUS. 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B2  - MODULE ERROR COUNT
*         B3  - DISPLAY LINE NUMBER 
*         B7  - CYLINDER ADDRESS
*         B8  - TRACK ADDRESS 
*         B9  - SECTOR ADDRESS
*         B10 - TEMPORARY STORAGE 
* 
*         BUFFERS USED -
* 
*         OB(0) THROUGH OB(3) = FORMAT PARAMETERS 
*         OB(4)               = UNIT NUMBER 
* 
*    2.3  SUBMODULES USED 
* 
*         DFU96A - VALIDATE PARAMETERS
*         DFU98A - POST COMMAND ABORT ERROR DISPLAY 
* 
* 
* -----------------DATA DIVISION----------------------------
* 
0  FORMAT DFU11 - REALLOCATE SECTOR 
1  FORMAT DFU - ISD SUBSYSTEM MONITOR/UTILITY 
2  FORMAT DFU11 - PAUSE -  UN = *OB 
3  FORMAT REALLOCATE CYL=*OCTB, TRK=*OB, SEC=*OB
4  FORMAT SECTOR REALLOCATION COMPLETED 
5  FORMAT REALLOCATION ABORT - SPARE SECTOR ALREADY USED
6  FORMAT DFU11- REALLOCATING TO BEGIN
7  FORMAT DFU11 ERROR(S) = *DECD
* 
* -----------------INITIALIZATION---------------------------
* 
20 MSG 0 TO DISPLAY, PRINT   *DISPLAY MODULE RUNNING MESSAGE
   B3 = 3                    *DISPLAY LINE NUMBER 
   MSG 1 TO LINE 1
   MSG 0 TO LINE 2
* 
*                  VALIDATE AL AND PARAMETERS 
* 
   IF(DC.EQ.111) GOTO 22
* 
   CALL 96A                  *VALIDATE PARAMETERS 
* 
   GOTO 24
* 
22 CALL 96C 
* 
24 B7 = P7                   *CYLINDER ADDRESS
   B8 = P8                   *TRACK ADDRESS 
   B9 = P9                   *SECTOR ADDRESS
   OB(0) = 0                 *OPERATION CODE
   OB(1) = B7                *CYLINDER
   OB(2) = B8                *TRACK 
   OB(3) = B9                *SECTOR
   OB(4) = SB(72)            *UNIT
   MSG 1 TO LINE 1
   MSG 0 TO LINE 2
   B3=B3+1
   MSG 2 (SB(72)) TO LINE B3
   B3=B3+1
   MSG 3 (B7,B8,B9) TO LINE B3
   PICTURE
   MSG 6 TO DISPLAY, PRINT
   B3 = B3+1
   PAUSE                     *WAITING GO DIRECTIVE
* 
* -----------------TEST-------------------------------------
* 
*                  REALLOCATE A SECTOR
* 
   MSG 0 TO DISPLAY 
30 RES,ABT 70                *RESERVE CHANNEL 
   FUNC 0000, ABT 70        *CONNECT CONTROL MODULE 
   OUTB 1 WORDS FROM OB(4), ABT 70
32 FUNC 12, ABT 70           *GET GENERAL STATUS
   STATUS 1 WORDS TO SB, ABT 70 
   IF(SB.AND.2.NE.0) GOTO 32          *LOOP IF BUSY 
* 
   IF(SB.NE.0) GOTO 70       *ERROR 
   FUNC 16, ABT 70           *REALLOCATE
   OUTB 4 WORDS FROM OB(0), ABT 70
34 RES, ABT 70               *RESERVE CHANNEL 
   FUNC 12, ABT 70           *GET GENERAL STATUS
   STATUS 1 WORDS TO SB, ABT 70 
   IF(SB.AND.2.NE.0) GOTO 34
* 
   IF(SB.EQ.0) GOTO 40       *IF REALLOC COMPLETED
* 
   FUNC 23, ABT 70           *GET DETAIL STATUS 
   STATUS 20D WORDS TO SB(1), ABT 70
   B10 = SB(9D).RS.4D        *POSITION FOR SPARE SEC
   IF(B10.AND.144B.NE.144B) GOTO 70  *IF SPARE NOT USED 
   B3=B3+1
   MSG 5 TO LINE B3          *SECTOR USED MSG 
   B3 = B3+1
   GOTO 77
* 
* -----------------EXIT-------------------------------------
* 
40 B3=B3+1
   MSG 4 TO LINE B3 
   MSG 4 TO PRINT 
   RES, ABT 70
   FUNC 10, ABT 70
   GOTO 77
* 
* -----------------ABORT PROCESSOR--------------------------
* 
* 
*                  PROCESS MODULE ERRORS
* 
*                  PROCESS COMMAND ABORTS 
* 
70 B2 = B2+1                 *INCREMENT ERROR COUNT 
   MSG 1 TO LINE 1           *DISPLAY MODULE TITLE
   MSG 0 TO LINE 2
   CALL 97E                  *DISPLAY STATUS
* 
77 IF(B2.NE.0) MSG 7 (B2) TO DAYFILE  *REPORT ERRORS
   END 20                    *END THE MODULE
COMPILE                      *DFU11 - REALLOCATE SECTOR 
   MODULE DFU13,6000(110,111)LOCK 
***       DFU13 - FORMAT THE ENTIRE PACK
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE 
* 
*         DFU13 INITIALIZES AN ENTIRE DISK PACK FOR SUBSEQUENT DATA 
*         TRANSFERS BY WRITING NEW ADDRESS FIELDS.  THE UPDATED ETF 
*         LOG IS READ TO DETERMINE MEDIA DEFECT.  ONLY HEADERS ARE
*         WRITTEN ON CYLINDERS NOT HAVING MEDIA DEFECTS.  HEADERS AND 
*         DATA FIELDS ARE WRITTEN ON CYLINDERS HAVING MEDIA DEFECTS.
*         ALL EXISTING DATA WILL BE DESTROYED.  THE FORMATTING PROCESS
*         REQUIRES A DEDICATED CONTROL MODULE AND DRIVE FOR 
*         APPROXIMATELY 40 MIN, THEREFORE, THIS MODULE IS NOT 
*         EXECUTABLE IN AN ON-LINE ENVIRONMENT. 
* 
*    1.2  METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
* 
*         2.  RESERVE THE CONTROL MODULE. 
* 
*         3.  ISSUE THE FORMAT FUNCTION COMMAND.
* 
*         4.  RESERVE  THE ADAPTER, CHECK GENERAL STATUS, AND LOOP UNTIL
*             UNIT NOT BUSY.
* 
*         5.  RELEASE THE ADAPTER AND CONTROL MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS- NONE
* 
*    2.2  REGISTERS AND BUFFER USAGE
* 
*         B2 - MODULE ERROR COUNT 
*         B3 - DISPLAY LINE NUMBER
*         B4 - MODULE NUMBER
*         B5 - MSG INDEX
*         B6 - DISK TYPE
*         B7 - EXPIRATION TIME
*         B8 - MODULE EXECUTION TIME
*         B10- SECOND COUNTER 
*         B11- MINUTE COUNTER 
* 
*         BUFFERS USED
* 
*         OB(0) THROUGH OB(3) - FORMAT PARAMETERS 
*         SB(72)              - UNIT NUMBER 
* 
*    2.3  SUBMODULES USED 
* 
*         DFU97E - DISPLAY STATUS 
* 
* -----------------DATA DIVISION----------------------------
* 
0  FORMAT DFU13 - SHORT FORMAT *DE
1  FORMAT DFU - ISD SUBSYSTEM MONITOR/UTILITY 
2  FORMAT                    X NOTE X 
3  FORMAT FORMATTING REINITIALIZES THE ENTIRE PACK BY 
4  FORMAT WRITING NEW ADDRESS FIELDS ACCORDING TO ETF LOG 
5  FORMAT ALREADY AVAILABLE.  THEREFORE ALL EXISTING DATA 
6  FORMAT WILL  BE  DESTROYED.  THE REFORMATTING PROCESS
7  FORMAT REQUIRES  A  DEDICATED CONTROL MODULE AND 
10 FORMAT DRIVE FOR APPROXIMATELY *DE MINUTES.
11 FORMAT 
12 FORMAT A -GO- DIRECTIVE WILL BEGIN DISK REFORMATTING.
15 FORMAT DFU13 FORMATTING *DE- *D MIN
16 FORMAT REFORMAT OF ENTIRE PACK COMPLETE
17 FORMAT DFU13 ERROR(S) = *DECD
20 FORMAT DFU13 - FORMATTING TO BEGIN 
21 FORMAT PAUSE - FORMAT PACK - CH=*O, EQ=*O, UN=*O 
22 FORMAT         TIME EXPIRED
23 FORMAT FORMATTING DID NOT COMPLETE WITHIN
24 FORMAT          *DE MINUTES
25 FORMAT 
* 
* 
* -----------------INITIALIZATION---------------------------
* 
30 B4 = 13D                  *MODULE NUMBER 
   B10=0                     *SECOND COUNTER
   B11=0                     *MINUTE COUNTER
   IF(DC.EQ.111) GOTO 32     *IF 836 DISK 
* 
   B6=834D                   *834 DISK
   B7=50D                    *TIME LIMIT
   B8=34D 
   GOTO 34
* 
32 B6=836D                   *836 DISK
   B7=180D
   B8=150D
34 MSG 0 (B6) TO DISPLAY, PRINT   *DISPLAY MODULE RUN. MSG
   OB(0) = 2                 *OPERATION CODE, SHORT FORMAT
   OB(1) = 0                 *CYLINDER
   OB(2) = 0                 *TRACK 
   OB(3) = 0                 *SECTOR
   OB(4) = SB(72)            *UNIT NUMBER 
   B3 = 5                    *DISPLAY LINE NUMBER 
   B5 = 2                    *MSG INDEX 
   MSG 1 TO LINE 1           *DISPLAY MODULE TITLE
   MSG 0 (B6) TO LINE 2 
   MSG 21 (SB(70),SB(71),SB(72)) TO LINE 4
* 
*                  DISPLAY *NOTE* MESSAGE 
* 
36 MSG B5 TO LINE B3
   B3 = B3+1
   GOTO 36 WHILE(B5+1.LE.7B)
* 
   PICTURE
   MSG 10 (B8) TO LINE B3 
   B3=B3+1
   MSG 11 TO LINE B3
   B3=B3+1
   MSG 12 TO LINE B3
   B3 = B3+1
   MSG 20 TO DISPLAY, PRINT 
   PAUSE
* 
* -----------------TEST-------------------------------------
* 
* 
*                  REFORMAT THE ENTIRE PACK 
* 
   MSG 0 (B6) TO DISPLAY, PRINT 
   RES, ABT 70
   FUNC 0000, ABT 70         *CONNECT THE CONT. MODULE
   OUTB 1 WORDS FROM OB(4), ABT 70
40 FUNC 12, ABT 70           *GET GENERAL STATUS
   STATUS 1 WORDS TO SB, ABT 70 
   IF(SB.AND.2.NE.0) GOTO 40
* 
   IF(SB.NE.0) GOTO 70
* 
   FUNC 16, ABT 70           *ISSUE FORMAT FUNCTION 
   OUTB 4 WORDS FROM OB(0), ABT 70
   MSG 15 (B6,B11) TO DISPLAY 
42 RES, ABT 70
   FUNC 12, ABT 70           *ISSUE GENERAL STATUS FUNCTION 
   STATUS 1 WORDS TO SB, ABT 70 
   IF(SB.EQ.0) GOTO 50       *PROCESS MODULE ERROR
* 
   IF(SB.NE.2) GOTO 70       *PROCESS MODULE ERROR
* 
   DELAY 1000D MSEC 
   B10=B10+1
   IF(B10.EQ.60D) GOTO 44    *COUNT SECONDS 
* 
   GOTO 42
* 
44 B10=0
   B11=B11+1                 *COUNT MINUTES 
   MSG 15 (B6,B11) TO DISPLAY       *DISPLAY TIME ELAPSED 
   IF(B11.LT.B7) GOTO 42
   B3=5 
   MSG 25 TO LINE B3
   B3=B3+1
   MSG 22 TO LINE B3         *DISPLAY TIME EXPIRED
   B3=B3+1
   MSG 23 TO LINE B3
   B3=B3+1
   MSG 24 (B7) TO LINE B3 
   B3=B3+1
46 MSG 25 TO LINE B3
   GOTO 46 WHILE(B3+1.NE.17B) 
   PICTURE
   GOTO 77
* 
* 
* -----------------EXIT-------------------------------------
* 
* 
50 FUNC 10, ABT 70
   B3=B3+1
   MSG 16 TO LINE B3
   MSG 16 TO PRINT
   GOTO 77
* 
* -----------------ABORT PROCESSOR--------------------------
* 
*                  PROCESS MODULE ERRORS
* 
70 B2 = B2+1                 *INCREMENT ERROR COUNT 
   MSG 1 TO LINE 1
   MSG 0 (B6) TO LINE 2 
   B3=4 
   CALL 97E                  *CALL STATUS DISPLAY 
* 
77 IF(B2.NE.0) MSG 17 (B2) TO DAYFILE  *REPORT ERRORS 
   IF(B2.EQ.0) EXIT 
   END 30                    *END THE MODULE
COMPILE                      *DFU13 - FORMAT THE ENTIRE PACK
   MODULE DFU14,FSD2(110,111)LOCK 
***       DFU14 - WRITE/READ ZEROS UPPER THREE CYLINDERS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         WRITE/READ THE UPPER THREE CYLINDERS AFTER A SHORT FORMAT 
*         USING DATA PATTERNS OF ALL ZEROS PLUS CODED DATA. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL BE 0000  OCTAL 
*             EXCEPT FOR WORDS 0-2 WHICH WILL CONTAIN CURRENT  CYLINDER 
*             TRACK AND SECTOR (CODED DATA).
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE BUFFER (502B WORDS) TO THE DISK.
*         5.  GOTO STEP 4 UNTIL ALL SECTORS ARE WRITTEN IN THIS TRACK.
*         6.  RESERVE THE ASSIGNED DRIVE. 
*         7.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         8.  CHECK THE DATA READ FROM THE DISK.
*         9.  GOTO STEP 7 UNTIL ALL SECTORS ARE READ IN THIS TRACK. 
*         10. REPEAT STEPS 2 THROUGH 9  UNTIL THE THREE UPPER CYLINDERS 
*             ARE WRITTEN AND READ. 
*         11. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 11.
*         12. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DISPLAY, PRINT, AND DAYFILE.
*         13. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         DFU14 ERROR(S) = *DECD
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         B15 REGISTER CONTAINS THE MODULE NUMBER 
* 
*    2.2  REGISTERS USED
* 
*         B0  - CONDITION NUMBER
*         B1  - LOOP COUNTER
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN SECTOR (502B) 
*         B6  - MAX CYLINDER NUMBER 
*         B7  - MAX TRACK NUMBER
*         B8  - MAX SECTOR NUMBER 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         B15 - MODULE NUMBER 
*         BA  - DATA BUFFER INDEX 
*         ES  - STANDARD USAGE
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(501) - INPUT DATA BUFFER
*         OB(000) TO OB(501) - OUTPUT DATA BUFFER 
*         OB(502) TO OB(503) - DATA PATTERNS
* 
*    2.3  SUBMODULES USED 
* 
*         DFU98B - PROCESS PRODUCT OVERLAY ERRORS.
*         DFU98C - PROCESS DATA COMPARE ERRORS. 
* 
* --------DATA DIVISION 
* 
0  FORMAT DFU14 - ISD WRITE/READ LAST THREE CYLINDERS 
1  FORMAT DFU14 - WRITE CYL = *OCT  TRK = *OCT   SEC = *OCT 
2  FORMAT DFU14 - READ  CYL = *OCT  TRK = *OCT   SEC = *OCT 
3  FORMAT DFU14  ERROR(S) = *DECD 
* 
   DATA (OB(502),CON) 0000         *DATA PATTERNS 
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRES=3, CSTATUS=4,
   EQUATE CWRITE=5, STRCYL=1456, STRCYL2=1272 
   EQUATE MAXCYL=1460, MAXCYL2=1274 
   EQUATE MAXTRK=11, MAXTRK2=27, MAXSEC=37, MAXSEC2=56
* 
* --------INITIALIZATION
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B0=0                       *CONDITION NUMBER 
   B2=STRCYL                  *STARTING CYL, ISD
   B3=0                       *STARTING TRACK 
   B4=0                       *STARTING SECTOR
   B6=MAXCYL                  *MAX CYLINDER ISD 
   B7=MAXTRK                  *MAX TRACK ISD
   B8=MAXSEC                  *MAX SECTOR ISD 
   IF (DC.EQ.111) B2=STRCYL2  *STARTING CYL, ISD II 
   IF (DC.EQ.111) B6=MAXCYL2  *MAX CYL, ISD II
   IF (DC.EQ.111) B7=MAXTRK2  *MAX TRACK, ISD II
   IF (DC.EQ.111) B8=MAXSEC2  *MAX SECTOR, ISD II 
   B5=502B                    *SECTOR SIZE
   B13=0                      *ERROR COUNT
   B15=14D                    *MODULE NUMBER
* 
* --------TEST
* 
30 B1=0                       *INITIALIZE LOOP COUNTER
   GOSUB 60                   *WRITE SUBROUTINE 
   GOSUB 50                   *READ SUBROUTINE
* 
   GOTO 30 WHILE (B3+1.LE.B7)  *NEXT TRACK
   B3=0                       *SET TRACK TO 0 
   GOTO 30 WHILE (B2+1.LE.B6)  *NEXT CYLINDER 
* 
   GOTO 77                    *EXIT MODULE
* 
* --------READ DATA SUBROUTINE
* 
50 DUP OB(B0+502B) TO OB(0) FOR B5    *GENERATE PATTERN 
   B14=CRES                   *COMMAND NUMBER 
   RES DRIVE, ABT 74          *RESERVE DRIVE
54 MSG 2 (B2,B3,B4) TO DISPLAY  *RUNNING MESSAGE
   B14=CREAD
   OB(0) = B2                 *CODE CURRENT CYLINDER
   OB(1) = B3                 *CODE CURRENT TRACK 
   OB(2) = B4                 *CODE CURRENT SECTOR
   READ SECTOR AT CYL B2 TRK B3 SEC B4, ABT 74      *READ SECTOR
* 
* --------CHECK DATA READ 
* 
   WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
56 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 70     *COMPARE DATA
   B4=B4+1                    *INCREMENT TO NEXT SECTOR 
   IF (B4.LT.B8) GOTO 54      *READ UP THROUGH NEXT TO LAST SECTOR
* 
* --------THE UNIT HAS TO BE RERESERVED FOR THE LAST SECTOR SO A
* --------RECOVERABLE ERROR WILL NOT BE DETECTED FOR THE NEXT TRACK 
* --------DUE TO THE LOOK AHEAD FEATURE ON READS IN THE CM
* 
   IF (B4.EQ.B8) GOTO 50      *RESERVE AND READ LAST SECTOR 
   B4=0                       *SET SECTOR TO 0
   RETURN 
* 
* --------WRITE DATA SUBROUTINE 
* 
60 DUP OB(B0+502B) TO OB(0) FOR B5    *GENERATE PATTERN 
   B14=CRES                   *COMMAND NUMBER 
   RES DRIVE, ABT 74          *RESERVE DRIVE
64 MSG 1 (B2,B3,B4) TO DISPLAY  *RUNNING MESSAGE
   B14=CWRITE 
   OB(0) = B2                 *CODE CURRENT CYLINDER
   OB(1) = B3                 *CODE CURRENT TRACK 
   OB(2) = B4                 *CODE CURRENT SECTOR
   WRITE SECTOR AT CYL B2 TRK B3 SEC B4, ABT 74     *WRITE SECTOR 
   GOTO 64 WHILE (B4+1.LE.B8)  *NEXT SECTOR 
   B4=0                       *SET SECTOR TO 0
   RETURN 
* 
* --------PROCESS COMPARE ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *INCREMENT ERROR COUNT
   BA=BA+WC                   *DATA ERROR INDEX 
   CALL 98C                   *POST COMPARE ERROR DISPLAY 
* 
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   GOTO 56                    *CONTINUE COMPARE 
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98B                   *POST COMMAND ABORT DISPLAY 
* 
* --------EXIT THE MODULE 
* 
77 IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   B14=CREL                   *COMMAND NUMBER 
   REL, ABT 74                *RELEASE DRIVE
   IF (B13.NE.0) MSG 3 (B13) TO DISPLAY, PRINT, DAYFILE 
* 
   END 20 
COMPILE                       *DFU14 - WRITE ZEROS LAST THREE CYLINDERS 
   MODULE DFU15,6000(110,111)LOCK 
***       DFU15 - FORMAT THE ENTIRE PACK
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE 
* 
*         DFU15 INITIALIZES AN ENTIRE DISK PACK FOR SUBSEQUENT DATA 
*         TRANSFERS BY WRITING NEW ADDRESS FIELDS.  ALL EXISTING DATA 
*         WILL BE DESTROYED.  SURFACE ANALYSIS WILL BE DONE TO FIND 
*         MEDIA DEFECT.  AN UPDATED ETF LOG WILL BE GENERATED AND 
*         WRITTEN.  THE FORMATTING PROCESS REQUIRES A DEDICATED 
*         CONTROL MODULE AND DRIVE FOR APPROXIMATELY 8 HRS, THEREFORE,
*         THIS MODULE IS NOT EXECUTABLE IN AN ON-LINE ENVIRONMENT.
* 
*    1.2  METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
* 
*         2.  RESERVE THE CONTROL MODULE. 
* 
*         3.  ISSUE THE FORMAT FUNCTION COMMAND.
* 
*         4.  RESERVE  THE ADAPTER, CHECK GENERAL STATUS, AND LOOP UNTIL
*             UNIT NOT BUSY.
* 
*         5.  RELEASE THE ADAPTER AND CONTROL MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS- NONE
* 
*    2.2  REGISTERS AND BUFFER USAGE
* 
*         B2 - MODULE ERROR COUNT 
*         B3 - DISPLAY LINE NUMBER
*         B4 - MODULE NUMBER
*         B5 - MSG INDEX
*         B6 - DISK TYPE
*         B10- SECOND COUNTER 
*         B11- MINUTE COUNTER 
*         B12- HOURS COUNTER
* 
*         BUFFERS USED
* 
*         OB(0) THROUGH OB(3) - FORMAT PARAMETERS 
*         SB(72)              - UNIT NUMBER 
* 
*    2.3  SUBMODULES USED 
* 
*         DFU97E - DISPLAY STATUS 
* 
* -----------------DATA DIVISION----------------------------
* 
0  FORMAT DFU15 - LONG FORMAT *DE 
1  FORMAT DFU - ISD SUBSYSTEM MONITOR/UTILITY 
2  FORMAT                    X NOTE X 
3  FORMAT FORMATTING REINITIALIZES THE ENTIRE PACK BY 
4  FORMAT WRITING NEW ADDRESS FIELDS AND PERFORMING A MEDIA 
5  FORMAT SURFACE  ANALYSIS.  THEREFORE ALL EXISTING DATA 
6  FORMAT WILL BE DESTROYED.  THE REFORMATTING PROCESS
7  FORMAT REQUIRES A DEDICATED CONTROL MODULE AND DRIVE FOR 
10 FORMAT APPROXIMATELY *D HOURS. 
11 FORMAT 
12 FORMAT A -GO- DIRECTIVE WILL BEGIN DISK REFORMATTING.
15 FORMAT DFU15 FORMATTING *DE- *DEC MIN
16 FORMAT REFORMAT OF ENTIRE PACK COMPLETE
17 FORMAT DFU15 ERROR(S) = *DECD
20 FORMAT DFU15 - FORMATTING TO BEGIN 
21 FORMAT PAUSE - FORMAT PACK - CH=*O, EQ=*O, UN=*O 
22 FORMAT         TIME EXPIRED
23 FORMAT  FORMATTING DID NOT COMPLETE WITHIN 
24 FORMAT         *DEC MINUTES
25 FORMAT 
* 
* 
* -----------------INITIALIZATION---------------------------
* 
30 B10=0                    *SECOND COUNTER 
   B11=0                     *MINUTE COUNTER
   B12=0                     *HOURS COUNTER 
   IF(DC.EQ.111) GOTO 32     *IF 836 DISK 
* 
   B6=834D                   *834 DISK
   B7=540D                   *EXPIRATION TIME 
   B8=8D                     *MODULE EXECUTION TIME 
   GOTO 34
* 
32 B6=836D                   *836 DISK
   B7=1020D                  *EXPIRATION TIME 
   B8=16D                    *MODULE EXECUTION TIME 
34 OB(0) = 3                 *OPERATION CODE, LONG FORMAT 
   OB(1) = 0                 *CYLINDER
   OB(2) = 0                 *TRACK 
   OB(3) = 0                 *SECTOR
   OB(4) = SB(72)            *UNIT NUMBER 
   B3 = 5                    *DISPLAY LINE NUMBER 
   B5 = 2                    *MSG INDEX 
   MSG 0 (B6) TO DISPLAY, PRINT 
   MSG 1 TO LINE 1           *DISPLAY MODULE TITLE
   MSG 0 (B6) TO LINE 2 
   MSG 21 (SB(70),SB(71),SB(72)) TO LINE 4
* 
*                  DISPLAY *NOTE* MESSAGE 
* 
36 MSG B5 TO LINE B3
   B3 = B3+1
   GOTO 36 WHILE(B5+1.LE.7B)
   MSG 10 (B8) TO LINE B3 
   B3=B3+1
   MSG 11 TO LINE B3
   B3=B3+1
   MSG 12 TO LINE B3
   PICTURE
* 
   B3 = B3+1
   MSG 20 TO DISPLAY, PRINT 
   PAUSE
* 
* -----------------TEST-------------------------------------
* 
* 
*                  REFORMAT THE ENTIRE PACK 
* 
   MSG 15 (B6,B11) TO DISPLAY 
   RES, ABT 70
   FUNC 0000, ABT 70         *ISSUE CONNECT FUNCTION
   OUTB 1 WORDS FROM OB(4), ABT 70
40 FUNC 12, ABT 70           *ISSUE GENERAL STATUS FUNCTION 
   STATUS 1 WORDS TO SB, ABT 70 
   IF(SB.AND.2.NE.0) GOTO 40
* 
   IF(SB.NE.0) GOTO 70
   FUNC 16, ABT 70           *ISSUE FORMAT FUNCTION 
   OUTB 4 WORDS FROM OB(0), ABT 70
* 
42 RES, ABT 70
   FUNC 12, ABT 70           *ISSUE GENERAL STATUS
   STATUS 1 WORDS TO SB, ABT 70 
   IF(SB.EQ.0) GOTO 50       *PROCESS MODULE ERROR
* 
   IF(SB.NE.2) GOTO 70       *PROCESS MODULE ERROR
* 
   DELAY 1000D MSEC 
   B10=B10+1                 *INCREMENT SECONDS 
   IF(B10.EQ.60D) GOTO 44 
* 
   GOTO 42
* 
44 B10=0
   B11=B11+1                 *INCREMENT MINUTES 
   MSG 15 (B6,B11) TO DISPLAY     *DISPLAY ELAPSED TIME 
   IF(B11.LT.B7) GOTO 42
* 
   B3=5 
   MSG 25 TO LINE B3
   B3=B3+1
   MSG 22 TO LINE B3         *DISPLAY TIME EXPIRED
   B3=B3+1
   MSG 23 TO LINE B3
   B3=B3+1
   MSG 24 (B7) TO LINE B3 
   B3=B3+1
46 MSG 25 TO LINE B3
   GOTO 46 WHILE(B3+1.NE.17B) 
* 
   PICTURE
   GOTO 77
* 
* -----------------EXIT-------------------------------------
* 
* 
50 FUNC 10, ABT 70
   B3=B3+1
   MSG 16 TO LINE B3
   MSG 16 TO PRINT
   GOTO 77
* 
* -----------------ABORT PROCESSOR--------------------------
* 
*                  PROCESS MODULE ERRORS
* 
70 B2 = B2+1                 *INCREMENT ERROR COUNT 
   MSG 1 TO LINE 1
   MSG 0 (B6) TO LINE 2 
   B3=4 
   CALL 97E                  *CALL STATUS DISPLAY 
* 
77 IF(B2.NE.0) MSG 17 (B2) TO DAYFILE  *REPORT ERRORS 
   END 30                    *END THE MODULE
COMPILE                      *DFU15 - FORMAT THE ENTIRE PACK
   MODULE DFU17,6000(110,111)LOCK 
***       DFU17 - FORMAT CYLINDER 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE 
* 
*         DFU17 FORMATS THE CYLINDER SPECIFIED BY PARAMETER WORD 7. 
*         ALL EXISTING DATA WILL BE DESTROYED.  SURFACE ANALYSIS WILL 
*         BE DONE TO FIND MEDIA DEFECT.  THIS MODULE CAN BE USED TO 
*         FORMAT THE RESERVED CYLINDER BY SETTING P7 TO 4000(OCTAL).
*         THIS MODULE CAN ALSO BE USED TO TO FORMAT THE UPDATE ETF LOG
*         BY SETTING P7 TO 4400(OCTAL). 
* 
*    1.2  METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
* 
*         2.  CALL 96A TO VALIDATE PARAMETERS.
* 
*         3.  RESERVE THE CONTROL MODULE. 
* 
*         4.  ISSUE THE FORMAT FUNCTION COMMAND.
* 
*         5.  RESERVE  THE ADAPTER, CHECK GENERAL STATUS, AND LOOP UNTIL
*             UNIT NOT BUSY.
* 
*         6.  RELEASE THE ADAPTER AND CONTROL MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         ACCESS LEVEL MUST BE GREATER THAN 10
*         P7 MUST BE LESS 1461B FOR 834, AND LESS THAN 1275 FOR 836.
*         P7 CAN BE EQUAL TO 4000B OR 4400B, REFER TO PURPOSE.
* 
*    2.2  REGISTERS AND BUFFER USAGE
* 
*         B2 - MODULE ERROR COUNT 
*         B3 - DISPLAY LINE NUMBER
*         B4 - MODULE NUMBER
*         B5 - MSG INDEX
*         B7 - CYLINDER NUMBER
* 
*         BUFFERS USED
* 
*         OB(0) THROUGH OB(3) - FORMAT PARAMETERS 
*         SB(72)              - UNIT NUMBER 
* 
*    2.3  SUBMODULES USED 
* 
*         DFU97E - DISPLAY STATUS 
* 
* -----------------DATA DIVISION----------------------------
* 
0  FORMAT DFU17 - FORMAT CYL=*OCT 
1  FORMAT DFU - ISD SUBSYSTEM MONITOR/UTILITY 
2  FORMAT                    X NOTE X 
3  FORMAT FORMATTING REINITIALIZES THE ENTIRE CYL. THE CM 
4  FORMAT ANALYZES THE CYLINDER WITH WORST CASE DATA PATTERN
5  FORMAT AND USES DEFECT SKIPPING AND SECTOR REALLCATION 
6  FORMAT TECHNIQUES TO HIDE ANY MEDIA ERRORS. THEREFORE
7  FORMAT ALL DATA ON THE CYLINDER WILL BE DESTROYED. 
10 FORMAT 
11 FORMAT A -GO- DIRECTIVE WILL BEGIN CYL. REFORMATTING.
15 FORMAT DFU17 FORMAT CYL GS=*OCTB 
16 FORMAT REFORMAT OF ENTIRE CYLINDER COMPLETE
17 FORMAT DFU17 ERROR(S) = *DECD
20 FORMAT DFU17 - FORMATTING TO BEGIN 
21 FORMAT PAUSE - FORMAT CYL - CH=*O, EQ=*O, UN=*O
22 FORMAT                       CYLINDER=*OCT 
23 FORMAT DFU17 - FORMAT THE RESERVED CYLINDER (P7=4000B) 
24 FORMAT         LEVEL II AND ERROR LOGS WILL BE DESTROYED 
25 FORMAT DFU17 - FORMAT THE UPDATE ETF LOGS (P7=4400B) 
26 FORMAT         ALL PREVIOUS DEFECTS IN THE LOG ARE LOST
* 
* 
* -----------------INITIALIZATION---------------------------
* 
30 MSG 1 TO LINE 1           *DISPLAY MODULE TITLE
   B4 = 17D 
   B7 = P7                   *CYLINDER TO BE REFORMATTED
   MSG 0 (B7) TO LINE 2 
   MSG 0 (B7) TO DISPLAY, PRINT   *DIS. MODULE RUNNING MSG. 
   OB(0) = 1                 *OPERATION CODE, FORMAT ONE CYL
   OB(1) = B7                *CYLINDER
   OB(2) = 0                 *TRACK 
   OB(3) = 0                 *SECTOR
   OB(4) = SB(72)            *UNIT NUMBER 
   B3 = 7                    *DISPLAY LINE NUMBER 
   B5 = 2                    *MSG INDEX 
   IF(DC.EQ.111) GOTO 32
* 
   CALL 96A 
* 
   GOTO 34
* 
32 CALL 96C 
* 
34 MSG 1 TO LINE 1           *DISPLAY MODULE TITLE
   MSG 0 (B7) TO LINE 2 
   IF (P7.AND.4400B.EQ.4000B) MSG 23 TO LINE 2
   IF (P7.AND.4400B.EQ.4000B) MSG 24 TO LINE 3
   IF (P7.AND.4400B.EQ.4400B) MSG 25 TO LINE 2
   IF (P7.AND.4400B.EQ.4400B) MSG 26 TO LINE 3
   IF (P7.AND.4000B.NE.4000B) MSG 0 (B7) TO LINE 2
   MSG 21 (SB(70),SB(71),SB(72)) TO LINE 4
   MSG 22 (P7) TO LINE 5
* 
*                  DISPLAY *NOTE* MESSAGE 
* 
36 MSG B5 TO LINE B3
   B3 = B3+1
   GOTO 36 WHILE(B5+1.LE.11B) 
   PICTURE
   B3 = B3+1
   MSG 20 TO DISPLAY, PRINT 
   PAUSE
* 
* -----------------TEST-------------------------------------
* 
* 
*                  REFORMAT THE CYLINDER
* 
   MSG 0 (B7) TO DISPLAY, PRINT 
   RES, ABT 70
   FUNC 0000, ABT 70         CONNECT FUNCTION 
   OUTB 1 WORDS FROM OB(4), ABT 70
40 FUNC 12, ABT 70           GENERAL STATUS FUNCTION
   STATUS 1 WORDS TO SB, ABT 70 
   IF(SB.AND.2.NE.0) GOTO 40
   IF(SB.NE.0) GOTO 70
   FUNC 16, ABT 70           *FORMAT FUNCTION 
   OUTB 4 WORDS FROM OB(0), ABT 70
42 RES, ABT 70
   FUNC 12, ABT 70           *GENERAL STATUS FUNCTION 
   STATUS 1 WORDS TO SB, ABT 70 
   IF(SB.EQ.0) GOTO 50       *PROCESS MODULE ERROR
* 
   IF(SB.NE.2) GOTO 70       *PROCESS MODULE ERROR
* 
   MSG 15 (SB) TO DISPLAY     *DISPLAY REFORMATTING MSG 
   GOTO 42                   *LOOP UNTIL REFORMATTING 
*                            *COMPLETED.
* 
* -----------------EXIT-------------------------------------
* 
* 
50 FUNC 10, ABT 70
   MSG 16 TO LINE B3
   MSG 16 TO PRINT
   GOTO 77
* 
* -----------------ABORT PROCESSOR--------------------------
* 
*                  PROCESS MODULE ERRORS
* 
70 B2 = B2+1                 *INCREMENT ERROR COUNT 
   MSG 1 TO LINE 1
   MSG 0 (B7) TO LINE 2 
   B3=6 
   CALL 97E                  *CALL STATUS DISPLAY 
77 IF(B2.NE.0) MSG 17 (B2) TO DAYFILE  *REPORT ERRORS 
   END 30                    *END THE MODULE
COMPILE                      *DFU17 - FORMAT THE ENTIRE PACK
   MODULE DFU21,6000(115)LOCK 
***       DFU21 - COPY CONTROLWARE TO DISK DRIVE
**
*          PURPOSE- 
*          DFU21 COPIES MA464 CONTROLWARE FROM THE SYSTEM SCRATCH FILE
*          TO THE 895 DISK. 
* 
*          METHOD-
*          DFU21 USES A SUBROUTINE TO READ ONE RECORD FROM THE SYSTEM 
*          SCRATCH FILE AND PACK IT IN THE INPUT BUFFER.  WHEN THE
*          FIRST RECORD FROM THE SYSTEM FILE IS READ DFU21 CALLS
*          SUBMODULE DFU21B TO CALCULATE THE LENGTH OF THE CONTROLWARE
*          DECK.  THE PACKED INPUT BUFFER IS THEN COPIED TO THE OUTPUT
*          BUFFER ONE WORD AT A TIME.  WHEN THE OUTPUT BUFFER IS FULL 
*          DFU21 CALLS SUBMODULE DFU21A TO WRITE ONE SECTOR TO THE
*          DISK.  WHEN THE LAST WORD OF THE INPUT BUFFER HAS BEEN MOVED 
*          TO THE OUTPUT BUFFER DFU21 READS ANOTHER RECORD FROM THE 
*          SYSTEM SCRATCH FILE, PACKS IT, AND THE ABOVE PROCESS 
*          CONTINUES UNTIL ALL OF THE CONTROLWARE HAS BEEN COPIED TO
*          THE DISK.
  
*          ENTRY- 
*          DFU21 ASSUMES THAT THE SCRATCH FILE CONTAINS THE CONTROLWARE 
*          TO BE COPIED TO THE DISK.  THE FORMAT OF THE CONTROLWARE 
*          BINARY MUST BE IDENTICAL TO ITS RELEASED FORMAT.  (WITH OR 
*          WITHOUT A LABEL AND DATA IN THE RIGHT-MOST 8 OF A 12-BIT 
*          WORD)
* 
*          EXIT-
*          DFU21 TERMINATES WITH AN END STATEMENT.  REGISTER CONTENTS 
*          ARE NOT USED BY OTHER MODULES. 
* 
*          SUBMODULES REFERENCED- 
*          DFU21 CALLS DFU98A TO DISPLAY DETAILED STATUS IF AN
*          ERROR IS ENCOUNTERED.  DFU21 CALLS DFU21A TO WRITE EACH
*          SECTOR OF CONTROLWARE TO THE DISK.  DFU21 CALLS DFU21B TO
*          CALCULATE THE LENGTH OF THE CONTROLWARE DECK.
* 
*          REGISTERS USED-
*          DFU21 USES REGISTERS B0 TO B13.  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 - K DISPLAY LINE NUMBER 
*            B6 - SYSRD COUNTER 
*            B7 - INPUT BUFFER PACKING METHOD 
*            B8 - LENGTH OF PACKED INPUT BUFFER 
*            B9 - POINTER TO PACKED INPUT BUFFER DATA 
*           B10 - POINTER TO UNPACKED BUFFER DATA 
*           B11 - TOTAL NUMBER OF RECORDS ON SCRATCH FILE 
*           B12 - LENGTH OF LAST RECORD ON SCRATCH FILE 
*           B13 - SUBMODULE ERROR FLAG
*           B14 - LAST SECTOR FLAG
* 
*          BUFFERS USED-
*          DFU21 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 CONTROLWARE TO DISK - 
* 
1  FORMAT COPY CONTROLWARE TO DISK - CH=*O, EQ=*O, UN=*O
3  FORMAT ERROR - CONTROLWARE DECK WRONG LENGTH 
4  FORMAT EXPECTED *DE RECORDS WITH *DE BYTES IN LAST RECORD
5  FORMAT ACTUAL   *DE RECORDS WITH *DE BYTES IN LAST RECORD
6  FORMAT WARNING - CONTROLWARE TRUNCATED TO 32 SECTORS 
7  FORMAT CONTROLWARE COPIED TO DISK
15 FORMAT MODULE DFU21
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 BLANK
   MSG 15 TO DISPLAY
   MSG 1 (SB(70),SB(71),SB(72)) TO LINE 2 
   B5=5                           * SET DISPLAY LINE
   B0=885D                        * SET CYLINDER
   B1=1                           * STARTING TRACK
   B2=0                           * STARTING SECTOR 
   B4=0                           * COUNTER(0-501) FOR OB DATA
   B6=0                           * SYSRD COUNTER 
   B11=2                          * SET LENGTH TO ALLOW READ
   B7=0                           * PACKING IB METHOD 0,1, OR 2 
   SYSREW 
   GOSUB 40                       * SYSRD AND PACK IT 
   CALL 21B                       * DETERMINE LENGTH OF CONTROLWARE 
   B14=0                          * RESET LAST SECTOR FLAG
22 COPY IB(B3) TO OB(B4) FOR 1
   IF (B4 NE 501) GOTO 24         * IF OB NOT FULL
   CALL 21A                       * WRITE ONE SECTOR
   IF (B13 NE 0) GOTO 74          * IF ERROR
   IF (B3 EQ 325) GOTO 25         * IF IB FULL
   IF (B7 EQ 0) GOTO 31           * IF IB ON WORD BOUNDARY
   GOTO 32
24 IF (B3 NE B8) GOTO 31          * IF IB NOT FULL
25 IF (B6 LT B11) GOTO 30         * IF MORE RECORDS TO READ 
26 B4=B4+1
   OB(B4)=0                       * CLEAR END OF BUFFER 
   IF (B4 LT 501) GOTO 26         * IF MORE TO CLEAR
   B14=1                          * SET LAST SECTOR FLAG
   CALL 21A                       * WRITE LAST SECTOR 
   IF (B13 NE 0) GOTO 74          * IF ERROR
   IF (B2 LE 32D) GOTO 27         * IF ALL CONTROLWARE WRITTEN
   MSG 6 TO LINE B5               * TRUNCATED 
   B5=B5+2
27 MSG 7 TO LINE B5               * COPY COMPLETE 
   B5=B5+2
   GOTO 76                        * END OF MODULE 
30 GOSUB 40                       * SYSRD AND PACK IT 
   IF (B7 NE 1) GOTO 22           * IF OB(B4) NOT FILLED
   GOTO 32
31 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 BA
   B6=B6+1                        * INCREMENT COUNTER 
   IF (B6 NE B11) GOTO 42         * IF NOT LAST SYSRD 
   IB(WT)=0 
   IF (WT LT B12) GOTO 41         * IF DECK TOO SHORT 
   IF (WT-B12 LE 4) GOTO 44       * IF LAST SYSRD OK
41 MSG 3 TO LINE 5                * WRONG LENGTH
   MSG 4 (B11,B12) TO LINE 6
   MSG 5 (B6,WT) TO LINE 7
   B5=9 
   GOTO 76                        * ERROR EXIT
42 IF (BA NE 0) GOTO 41           * IF DECK IS WRONG LENGTH 
44 B10=0                          * PACKED POINTER
   B9=0                           * UNPACKED IB POINTER 
   IB(500)=0
   B8=325                         * SET NORMAL LENGTH 
   IF (B6 NE 1) GOTO 45           * IF NOT FIRST READ 
   IF (IB(0) NE 7700) GOTO 45     * IF NO 77 TABLE
   B9=120                         * SKIP TABLE
   B8=237                         * SET SHORT LENGTH
45 IF (B7 NE 0) GOTO 50           * IF PACK AND SHIFT 4 OR 8
* 
* --------PACK THE INPUT BUFFER. (NO SHIFTING)
* 
46 IB(501)=IB(B9+1) RS 4          * PACK 24 BITS
   IB(B10)=IB(B9) LS 4 XOR IB(501)
   IB(501)=IB(B9+1) AND 17 LS 10
   IB(B10+1)=IB(501) XOR IB(B9+2) 
   B9=B9+3                        * INCREMENT UNPACKED POINTER
   B10=B10+2                      * INCREMENT PACKED POINTER
   IF (B9 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(B9)
52 IB(B10)=IB(B10) XOR IB(B9)     * PACK 24 BITS
   IB(B10+1)=IB(B9+1) LS 4
   IB(B10+1)=IB(B9+2) RS 4 XOR IB(B10+1)
   IB(B10+2)=IB(B9+2) AND 17 LS 10
   B9=B9+3                        * INCREMENT UNPACKED POINTER
   B10=B10+2                      * INCREMENT PACKED POINTER
   IF (B9 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(B9) AND 17 LS 10
   IB(B10)=IB(B9) RS 4 XOR IB(B10)
   IB(B10+1)=IB(501) XOR IB(B9+1) 
   IB(B10+2)=IB(B9+2) LS 4
   B9=B9+3                        * INCREMENT UNPACKED POINTER
   B10=B10+2                      * INCREMENT PACKED POINTER
   IF (B9 NE 501) GOTO 56         * IF MORE BITS TO PACK
   B7=0                           * UPDATE PACKING METHOD 
60 IB(0)=IB(502)
64 RETURN 
74 CALL 98A                       * DISPLAY DETAILED STATUS 
   B5=B5+1
76 MSG 16 TO LINE B5
   PICTURE
77 END 20 
COMPILE 
   MODULE DFU21A,6000(115)LOCK
***        DFU21A - WRITE CONTROLWARE TO 895 DISK (SUBROUTINE)
**
*          PURPOSE- 
*          DFU21A IS CALLED BY DFU21 TO WRITE ONE SECTOR OF CONTROLWARE 
*          TO THE DISK. 
* 
*          METHOD-
*          DFU21A THEN WRITES ONE SECTOR USING THE WRITE PROTECTED
*          SECTOR FUNCTION, AND INCREMENTS THE SECTOR ADDRESS BY 1. 
*          A CHECK IS MADE TO SEE IF THE SECTOR WRITTEN WAS THE LAST
*          SECTOR.  IF SO, AN OPERATION COMPLETE FUNCTION IS ISSUED 
*          TO THE DEVICE.  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 DFU21A RETURNS TO DFU21.
  
*          ENTRY- 
*          DFU21A IS CALLED BY DFU21.  INITIALLY THE CYLINDER, TRACK, 
*          AND SECTOR ARE IN REGISTERS B0, B1, AND B2.  REGISTER B7 
*          INITIALLY CONTAINS THE PACKING METHOD. 
* 
*          EXIT-
*          DFU21A TERMINATES BY RETURNING TO THE CALLING MODULE.
*          REGISTER B2 CONTAINS THE NUMBER FOR THE NEXT SECTOR TO 
*          BE WRITTEN.  REGISTER B7 CONTAINS THE PACKING METHOD.
* 
*          SUBMODULES REFERENCED- 
*          DFU21A DOES NOT CALL ANY SUBMODULES. 
* 
*          REGISTERS USED-
*          DFU21A USES REGISTERS B0, B1, B2, B7, B9, B10, BA, AND WC. 
*          REGISTERS ARE USED AS FOLLOWS--
*            B0 - CYLINDER
*            B1 - TRACK 
*            B2 - SECTOR
*            B7 - INPUT BUFFER PACKING METHOD 
*            B9 - NONZERO IF CONTROLWARE IS LONGER LENGTH 
*            B10- POINTER TO UNPACKED INPUT DATA
*            B14- LAST SECTOR FLAG
*            B15- HOLDING REGISTER FOR OB(501)
*            BA - POINTER TO PACKED INPUT BUFFER DATA 
* 
*          BUFFERS USED-
*          DFU21A 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) - 
* 
10 FORMAT DFU21A ABORT - ABNORMAL GENERAL STATUS
15 FORMAT DFU21A WROTE SECTOR *O
* 
20 IF (B2 LE 31D) GOTO 21 
   GOTO 24
21 RES, ABT 74
   B15 = OB(501)
   OB(501)=SB(72)                 * DRIVE NUMBER
   OB(502)=B0                     * CYLINDER
   OB(503)=B1                     * TRACK 
   OB(504)=B2                     * SECTOR
   WC=4 
   BA=501 
22 FOUT 1, ABT 72                 * SEEK FUNCTION 
   FUNC 12, ABT 72                * GENERAL STATUS
   STATUS 1 WORDS TO SB(0), ABT 72
   IF (SB(0) EQ 2) GOTO 22        * IF HEADS IN MOTION
   IF (SB(0) NE 0) GOTO 70        * IF ERROR
   OB(501) = B15
   FUNC 37, ABT 72                * WRITE PROTECTED SECTOR
   OUTB 502 WORDS FROM OB(0), ABT 72
   FUNC 12, ABT 72                * GENERAL STATUS
   STATUS 1 WORDS TO SB(0), ABT 72
   IF (SB(0) NE 0) GOTO 70        * IF ERROR
   IF (B14 EQ 0) GOTO 23          * IF NOT LAST SECTOR
   FUNC 10, ABT 74                * OPERATION COMPLETE
23 MSG 15 (B2) TO DISPLAY 
24 B2=B2+1                        * UPDATE SECTOR ADDRESS 
25 IB(326)=0
   B10=0
   IF (B7 EQ 1) GOTO 40           * TO RIGHT SHIFT IB 8 BITS
* 
* --------LEFT SHIFT INPUT BUFFER BY 4 BITS 
* 
26 IB(B10)=IB(B10) AND 377 LS 4 
   IB(B10)=IB(B10+1) RS 10 XOR IB(B10)
   IF (B10 EQ 325) GOTO 30        * IF DONE SHIFTING
   B10=B10+1                      * INCREMENT POINTER 
   GOTO 26
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 B10=324
46 IB(501)=IB(B10) AND 377 LS 4 
   IB(B10+1)=IB(B10+1) RS 10 XOR IB(501)
   IF (B10 EQ 0) GOTO 30           * IF DONE SHIFTING 
   B10=B10-1
   GOTO 46
70 ERROR 1/0                      * MODULE DETECTED ERROR 
   MSG 10 TO LINE B5
72 FUNC 10                         * OPERATION COMPLETE 
74 B13=1                           * SET ERROR FLAG 
   EXIT 
   END 20 
COMPILE 
   MODULE DFU21B,6000(115)LOCK
***       DFU21B - DETERMINE LENGTH OF CONTROLWARE (SUBROUTINE) 
**
*          PURPOSE- 
*          DFU21B DETERMINES THE LENGTH OF THE CONTROLWARE DECK AND 
*          DISPLAYS THE CONTROLWARE NUMBER AND REVISION LEVEL.
* 
*          METHOD-
*          DFU21B ASSUMES THAT THE FIRST RECORD OF THE SCRATCH FILE 
*          CONTAINING THE CONTROLWARE DECK HAS BEEN READ TO THE INPUT 
*          BUFFER AND PACKED.  HEXADECIMAL MEMORY ADDRESS 3B OF THE 
*          CONTROLWARE CONTAINS THE LAST MEMORY ADDRESS TO CHECKSUM.
*          THE CONTROLWARE DECK STARTS WITH MEMORY ADDRESS 30.  THE 
*          FOLLOWING ALGORITHM IS USED TO CALCULATE THE LENGTH OF THE 
*          CONTROLWARE DECK-- 
*           1. SUBTRACT 2F FROM THE LAST LOCATION TO CHECKSUM.
*              NOTE THAT 16 BIT ARITHMETIC IS REQUIRED.  THE RESULT IS
*              THE NUMBER OF MEMORY LOCATIONS TO BE LOADED BY AN
*              AUTOLOAD FUNCTION. 
*           2. IF THE CONTROLWARE DECK IS PRECEDED BY A 77 TABLE ADD
*              40 DECIMAL. (HALF THE LENGTH OF THE 77 TABLE)
*           3. DIVIDE BY 160 DECIMAL (NUMBER OF WORDS PER RECORD ON 
*              THE SCRATCH FILE)
*           4. QUOTIENT + 1  IS THE NUMBER OF RECORDS ON THE SCRATCH
*              FILE.
*           5. REMAINDER X 2  IS THE NUMBER OF BYTES IN THE LAST RECORD.
* 
*          DFU21B ALSO EXTRACTS THE LAST 4 DIGITS OF THE CONTROLWARE
*          NUMBER FROM MEMORY ADDRESS 3C AND THE REVISION FROM
*          ADDRESS 3D.  THE CONTROLWARE NUMBER AND REVISION ARE 
*          DISPLAYED. 
  
*          ENTRY- 
*          DFU21B IS CALLED BY DFU21.  REGISTER B8 IS ASSUMED TO
*          CONTAIN VALID INFORMATION.  THE INPUT BUFFER IS ASSUMED TO 
*          CONTAIN THE FIRST RECORD OF THE CONTROLWARE FILE.
* 
*          EXIT-
*          DFU21B TERMINATES BY RETURNING TO DFU21.  REGISTERS B11, 
*          B12, AND B13 ARE USED BY DFU21.
* 
*          SUBMODULES REFERENCED- 
*          DFU21B DOES NOT CALL ANY SUBMODULES. 
* 
*          REGISTERS USED-
*          DFU21B USES REGISTERS B8 AND B11 TO B15.  REGISTERS ARE USED 
*          AS FOLLOWS-- 
*            B8 - LENGTH OF PACKED INPUT BUFFER 
*           B11 - TOTAL NUMBER OF RECORDS ON SCRATCH FILE 
*           B12 - LENGTH OF LAST RECORD ON SCRATCH FILE 
*           B13 - CONTROLWARE REVISION, ERROR FLAG
*           B14 - UPPER DIGITS OF CONTROLWARE NUMBER
*           B15 - LOWER DIGITS OF CONTROLWARE NUMBER
* 
*          BUFFERS USED-
*          DFU21B ASSUMES THAT THE INPUT BUFFER CONTAINS THE FIRST
*          RECORD OF THE CONTROLWARE DECK.
* 
* 
*  - DETERMINE LENGTH OF CONTROLWARE -
* 
1  FORMAT M*H*H  REV *D  CONTROLWARE
6  FORMAT ERROR - CONTROLWARE LESS THAN 256 WORDS 
15 FORMAT MODULE DFU21B 
16 FORMAT - - - - - - - - - - - - - - - - - - - - 
20 MSG 15 TO DISPLAY
22 B13=IB(16) LS 4 AND 0360       * UPPER 8 BITS
   B13=IB(17) RS 8 XOR B13
   B14=IB(17) AND 0377            * LOWER 8 BITS
   IF (B13 NE 0) GOTO 24          * IF MORE THAN 256 WORDS
   MSG 6 TO LINE 5                * TOO SHORT 
   MSG 16 TO LINE 7 
   PICTURE
   GOTO 77                        * ERROR EXIT
24 IF (B14 GE 57) GOTO 26         * IF LOWER GE 2F
   B13=B13-1                      * BORROW
   B14=B14+400
26 B14=B14-57                     * SUBTRACT 2F 
   IF (B8 NE 237) GOTO 30         * IF NO 77 TABLE
   B14=B14+50                     * ADD LENGTH OF 77 TABLE (WORDS)
   IF (B14 LT 400) GOTO 30        * IF NO CARRY 
   B14=B14-400
   B13=B13+1
30 B11=1                          * SET QUOTIENT
32 IF (B14 GE 240) GOTO 34        * IF NO BORROW NEEDED 
   IF (B13 EQ 0) GOTO 36          * IF DIVISION COMPLETE
   B13=B13-1                      * BORROW
   B14=B14+400
34 B14=B14-240                    * SUBTRACT 240
   B11=B11+1                      * INCREMENT QUOTIENT
   GOTO 32                        * CONTINUE DIVIDE 
36 B12=B14 LS 1                   * SET REMAINDER (BYTES) 
   B14=IB(20) RS 4                * UPPER DIGITS OF CONTROLWARE NUMBER
   B15=IB(20) LS 4 AND 0360 
   B15=IB(21) RS 8 XOR B15        * LOWER DIGITS OF CONTROLWARE NUMBER
   B13=IB(22) RS 4 AND 0017       * REVISION
   MSG 1 (B14,B15,B13) TO LINE 3  * CONTROLWARE NUMBER
   B13=0                          * CLEAR ERROR FLAG
   EXIT                           * RETURN
77 END 20 
COMPILE 
   MODULE DFU96A,6000(110)LOCK
***       DFU96A - PARAMETER VERIFICATION 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE 
* 
*         DFU96A CHECKS PARAMETERS FOR CORRECTNESS
*         AND DISPLAYS APPROPRIATE MESSAGE, IF THEY ARE NOT IN RANGE. 
* 
* 
*    1.2  METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  CHECK PARAMETERS P7, P8, AND P9;  DISPLAY APPROPRIATE 
*             MESSAGES IF ANY OF THESE PARAMETERS ARE OUT OF RANGE. 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         ACCESS LEVEL IS ENTERED BY THE OPERATOR 
* 
* -----------------DATA DIVISION----------------------------
* 
0  FORMAT DFU96A - VALIDATE PARAMETERS
6  FORMAT CHECK P7 - CYL ADD TOO LARGE, MAX CYL = 1460B 
7  FORMAT CHECK P8 - TRK ADD TOO LARGE, MAX TRK = 11B 
10 FORMAT CHECK P9 - SEC ADD TOO LARGE, MAX SEC = 37B 
11 FORMAT---------------------------------------------------- 
* 
* -----------------TEST-------------------------------------
* 
20 MSG 0 TO LINE 2
* 
   IF(B4.NE.17D) GOTO 42
* 
   IF(P7.EQ.4000) GOTO 66 
* 
   IF(P7.EQ.4400) GOTO 66 
* 
42 IF(P7.LT.1461B) GOTO 46   *JUMP IF CYLINDER IN RANGE 
* 
44 B3=B3+1
   MSG 6 TO LINE B3 
   MSG 6 TO PRINT 
   GOTO 77
* 
46 IF(P8.LT.12B) GOTO 50     *JUMP IF TRACK IN RANGE
  
   B3=B3+1
   MSG 7 TO LINE B3 
   MSG 7 TO PRINT 
   GOTO 77
* 
50 IF(P9.LT.40B) GOTO 66     *JUMP IF SECTOR IN RANGE 
* 
   B3=B3+1
   MSG 10 TO LINE B3
   MSG 10 TO PRINT
   GOTO 77
* 
66 EXIT 
* 
77 B3=B3+1
   PICTURE
   HALT 
   MSG 11 TO PRINT
   END 20 
COMPILE                      *DFU96A - PARAMETER VERIFICATION 
   MODULE DFU96C,6000(111)LOCK
***       DFU96C - PARAMETER VERIFICATION 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE 
* 
*         DFU96C CHECKS PARAMETERS FOR CORRECTNESS
*         AND DISPLAYS APPROPRIATE MESSAGE, IF THEY ARE NOT IN RANGE. 
* 
* 
*    1.2  METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  CHECK PARAMETERS P7, P8, AND P9;  DISPLAY APPROPRIATE 
*             MESSAGES IF ANY OF THESE PARAMETERS ARE OUT OF RANGE. 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         ACCESS LEVEL IS ENTERED BY THE OPERATOR 
* 
* -----------------DATA DIVISION----------------------------
* 
0  FORMAT DFU96C - VALIDATE PARAMETERS
6  FORMAT CHECK P7 - CYL ADD TOO LARGE, MAX CYL = 1274B 
7  FORMAT CHECK P8 - TRK ADD TOO LARGE, MAX TRK = 27B 
10 FORMAT CHECK P9 - SEC ADD TOO LARGE, MAX SEC = 56B 
11 FORMAT---------------------------------------------------- 
* 
* -----------------TEST-------------------------------------
* 
20 MSG 0 TO LINE 2
* 
   IF(B4.NE.17D) GOTO 42
* 
   IF(P7.EQ.4000) GOTO 66 
* 
   IF(P7.EQ.4400) GOTO 66 
* 
42 IF(P7.LT.1275B) GOTO 46   *JUMP IF CYLINDER IN RANGE 
* 
44 B3=B3+1
   MSG 6 TO LINE B3 
   MSG 6 TO PRINT 
   GOTO 77
* 
46 IF(P8.LT.30B) GOTO 50     *JUMP IF TRACK IN RANGE
  
   B3=B3+1
   MSG 7 TO LINE B3 
   MSG 7 TO PRINT 
   GOTO 77
* 
50 IF(P9.LT.57B) GOTO 66     *JUMP IF SECTOR IN RANGE 
* 
   B3=B3+1
   MSG 10 TO LINE B3
   MSG 10 TO PRINT
   GOTO 77
* 
66 EXIT 
* 
77 B3=B3+1
   PICTURE
   HALT 
   MSG 11 TO PRINT
   END 20 
COMPILE                      *DFU96C - PARAMETER VERIFICATION 
   MODULE DFU97E,6000(110,111)LOCK
***       DFU97E - STATUS DISPLAY 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE 
* 
*         DISPLAY THE GENERAL STATUS, DETAIL STATUS, AND OTHER USEFUL 
*         INFORMATION RELATED TO THE CURRENT FAILURE. 
* 
*    1.2  METHOD
* 
*         1.  POST FORMAT MESSAGE 1 TO LINE B3 (WT, WC, LF).
* 
*         2.  POST FORMAT MESSAGE 23 TO LINE B3 (EC, EA, LF). 
* 
*         3.  POST FORMAT MESSAGE 2, 3 TO LINE B3 (ALL B REGISTERS).
* 
*         4.  POST FORMAT MESSAGE 4 TO LINE B3 (LAST GENERAL STATUS). 
* 
*         5.  POST FORMAT MESSAGE 5, 6, 7, 8, 9, TO LINE B3 (DETAIL 
*             STATUS).
* 
*         6.  PICTURE, HALT, AND BLANK THE DISPLAY. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         WT - NUMBER OF WORDS TRANSMITTED
*         WC - WORD COUNT 
*         LF - LAST FUNCTION
*         SB - GENERAL STATUS 
* 
* 
*         EXIT -
*         A HALT IS EXECUTED BY THIS MODULE AND A GO IS NECESSARY TO
*         RESUME THE MODULE WHICH ERRORED.
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B3 - DISPLAY LINE NUMBER
*         B12- ERROR INDEX
* 
* 
*    2.3  SUBMODULES USED 
* 
*         NONE
* 
* 
* -----------------DATA DIVISION----------------------------
* 
1  FORMAT WT = *OCT  WC = *OCT
2  FORMAT B0 - B7 = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
3  FORMAT B8 - B15 = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
4  FORMAT LAST GENERAL STATUS = *OCT(OCTAL) 
5  FORMAT    DETAIL STATUS IN OCTAL 
6  FORMAT  1=*OCT   2=*OCT   3=*OCT   4=*OCT   5=*OCT 
7  FORMAT  6=*OCT   7=*OCT   8=*OCT   9=*OCT  10=*OCT 
10 FORMAT 11=*OCT  12=*OCT  13=*OCT  14=*OCT  15=*OCT 
11 FORMAT 16=*OCT  17=*OCT  18=*OCT  19=*OCT  20=*OCT 
20 FORMAT---------------------------------------------------- 
21 FORMAT - ERROR - GENERAL STATUS NOT RETURNED 
22 FORMAT - ERROR - DETAIL STATUS  NOT RETURNED 
23 FORMAT ERROR CODE = *OCT AT LINE *OCT, LAST FCN = *OCT 
24 FORMAT 
* 
* -----------------DISPLAY USEFUL INFORMATION---------------- 
* 
30 B3=B3+1
   MSG 1 (WT,WC) TO LINE B3 
   B3 = B3+1
   MSG 23 (EC,EA,LF) TO LINE B3 
   B3=B3+1
   MSG 2 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE B3 
   B3 = B3+1
   MSG 3 (B8,B9,B10,B11,B12,B13,B14,B15) TO LINE B3 
40 B12= 1 
   RES, ABT 74
   FUNC 12, ABT 74
   STATUS 1 WORDS TO SB, ABT 74 
   B12= 2 
   FUNC 23, ABT 74
   STATUS 20D WORDS TO SB(1), ABT 74
   B3 = B3+1
   MSG 4 (SB) TO LINE B3
   B3 = B3+1
   MSG 5 TO LINE B3 
   B3 = B3+1
* 
* -----------------DISPLAY STATUS-------------------------- 
* 
50 MSG 6, 5 WORDS FROM SB(1) TO LINE B3 
   B3=B3+1
   MSG 7, 5 WORDS FROM SB(6) TO LINE B3 
   B3 = B3+1
   MSG 10, 5 WORDS FROM SB(11D) TO LINE B3
   B3 = B3+1
   MSG 11, 5 WORDS FROM SB(16D) TO LINE B3
   B3 = B3+1
70 PICTURE
   HALT 
   MSG 20 TO PRINT
   BLANK
   EXIT                      *RETURN TO MODULE WHICH ERRORED
74 B3 = B3+1
   MSG 24 TO LINE B3
   B3=B3+1
   MSG 24 TO LINE B3
   B3=B3+1
   MSG 24 TO LINE B3
   B3=B3+1
   MSG 24 TO LINE B3
   B3=B3+1
   IF(B12.EQ.1) MSG 21 TO LINE B3 
   IF(B12.EQ.2) MSG 22 TO LINE B3 
   B3=B3+1
   PICTURE
   HALT 
   MSG 20 TO PRINT
   BLANK
   EXIT 
   END 30 
COMPILE                      *DFU97E - STATUS DISPLAY 
   MODULE DFU98A, 6000, (115), LOCK 
***  DFU98A - DISPLAY ERROR MESSAGES
**
* 
*    1.0   EXTERNAL MODULE DOCUMENTATION
* 
*    1.1   PURPOSE- 
* 
*          DFU98A DISPLAYS THE ERROR CODE, LINE NUMBER, LAST FUNCTION,
*          GENERAL STATUS, AND DETAILED STATUS.  THIS MODULE IS CALLED
*          WHEN AN I/O COMMAND IS ABORTED.
* 
*    1.2   METHOD-
* 
*          DFU98A DISPLAYS THE STATUS RESULTING FROM THE LAST I/O 
*          COMMAND.  THE DETAILED STATUS DISPLAYED IS THAT CONTAINED IN 
*          THE STATUS BUFFER.  THE FIRST 16 WORDS OF DETAILED STATUS
*          ARE DISPLAYED AS 24 SENSE BYTES IN HEXADECIMAL FORMAT. 
*          DFU98A DOES NOT REQUEST STATUS FROM THE CYBER CHANNEL
*          COUPLER. 
  
* 
*    2.0   INTERNAL MODULE DOCUMENTATION
* 
*    2.1   ENTRY CONDITIONS 
* 
*          DFU98A ASSUMES THAT REGISTER B5 CONTAINS THE LINE NUMBER FOR 
*          THE DISPLAY.  THE STATUS BUFFER IS ASSUMED TO CONTAIN
*          GENERAL AND DETAILED STATUS. 
* 
*          EXIT-
*          DFU98A TERMINATES BY RETURNING TO THE CALLING MODULE.
*          REGISTER B5 CONTAINS THE DISPLAY LINE NUMBER.
* 
*    2.2   REGISTERS AND BUFFER USAGE 
* 
*          DFU98A USES REGISTER B5 FOR THE DISPLAY LINE NUMBER
* 
*          BUFFERS USED-
* 
*          DFU98A 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 
* 
* 
*    2.3   SUBMODULES USED
* 
*          DFU98A DOES NOT CALL ANY SUBMODULES. 
* 
* 
* 
* 
* -----------------DATA DIVISION----------------------------
* 
1  FORMAT 
2  FORMAT ERROR CODE = *OCT AT LINE *OCT, LAST FCN = *OCT 
3  FORMAT GENERAL STATUS IN OCTAL = *OCT
4  FORMAT SENSE BYTES IN HEX =
5  FORMAT  0=*H   1=*H   2=*H   3=*H   4=*H   5=*H
6  FORMAT  6=*H   7=*H   8=*H   9=*H  10=*H  11=*H
7  FORMAT 12=*H  13=*H  14=*H  15=*H  16=*H  17=*H
10 FORMAT 18=*H  19=*H  20=*H  21=*H  22=*H  23=*H
11 FORMAT DETAILED STATUS IN OCTAL =
12 FORMAT 17=*OCT  18=*OCT  19=*OCT  20=*OCT
13 FORMAT ERROR - GENERAL STATUS NOT RETURNED 
14 FORMAT ERROR - DETAIL STATUS NOT RETURNED
* 
* -----------------INITIALIZATION---------------------------
* 
20 B5=B5+1
   MSG 1 TO LINE B5 
   B5=B5+1
   MSG EM TO LINE B5
   B5=B5+1
   MSG 2 (EC,EA,LF) TO LINE B5
   B8=1 
   RES,ABT 74 
   FUNC 12, ABT 74
   STATUS 1 WORDS TO SB, ABT 74 
   B8=2 
   RES, ABT 74
   FUNC 23, ABT 74
   STATUS 24 WORDS TO SB(1), ABT 74 
   B5=B5+1
* 
* -----------------DISPLAY STATUS---------------------------
* 
   MSG 3 (SB) TO LINE B5
   B5=B5+1
   B9=1                           * SET INDEX 
   MSG 4 TO LINE B5 
   B5=B5+1
   GOSUB 60                       *CONV. STAT. TO SEN. BYTES
   MSG 5 (B10,B11,SB(2),B12,B13,SB(4)) TO LINE B5 
   B5=B5+1
   GOSUB 60                       *CONV. STAT. TO SEN. BYTES
   MSG 6 (B10,B11,SB(6),B12,B13,SB(8)) TO LINE B5 
   B5=B5+1
   GOSUB 60                       *CONV. STAT. TO SEN. BYTES
   MSG 7 (B10,B11,SB(10D),B12,B13,SB(12D)) TO LINE B5 
   B5=B5+1
   GOSUB 60                       *CONV. STAT. TO SEN. BYTES
   MSG 10 (B10,B11,SB(14D),B12,B13,SB(16D)) TO LINE B5
   B5=B5+1
   MSG 11 TO LINE B5
   B5=B5+1
   MSG 12, 4 WORDS FROM SB(17D) TO LINE B5
   B5=B5+1
   EXIT 
* 
* -----------------SUBROUTINES------------------------------
* 
60 B10=SB(B9) RS 4
   B11=SB(B9) LS 4 AND 0360 
   B9=B9+1
   B11=SB(B9) RS 8 XOR B11
   B9=B9+1
   B12=SB(B9) RS 4
   B13=SB(B9) LS 4 AND 0360 
   B9=B9+1
   B13=SB(B9) RS 8 XOR B13
   B9=B9+1
   RETURN 
* 
* -----------------EXIT-------------------------------------
* 
74 B5=B5+1
   MSG 1 TO LINE B5 
   B5=B5+1
   MSG 1 TO LINE B5 
   B5=B5+1
   MSG 1 TO LINE B5 
   B5=B5+1
   MSG 1 TO LINE B5 
   B5=B5+1
   IF(B8.EQ.1) MSG 13 TO LINE B5
   IF(B8.EQ.2) MSG 14 TO LINE B5
   EXIT 
   END 20 
COMPILE                      *DFU98A - DISPLAY ERROR MESSAGES 
   MODULE DFU98B,FSD2(110,111)LOCK
***       DFU98B - POST COMMAND ABORTED DISPLAY 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         START BUILDING THE ERROR DISPLAY FOR PRODUCT OVERLAY  COMMAND 
*         ABORT ERRORS BY PLACING THE NAME OF THE COMMAND  ABORTED  AND 
*         THE ERROR DESCRIPTION IN THE ERROR DISPLAY. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE COMMAND ABORTED AND THE ERROR DESCRIPTION.
*         2.  EXIT TO MODULE DFU98E TO COMPLETE ERROR DISPLAY.
* 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS THE NUMBER OF COMMAND ABORTED.
* 
*    2.2  SUBMODULES USED 
* 
*         DFU98E - ERROR DISPLAY
* 
* --------DATA DIVISION 
* 
1  FORMAT    ABORTED ON .READ. COMMAND
2  FORMAT    ABORTED ON .REL. COMMAND 
3  FORMAT    ABORTED ON .RES. COMMAND 
4  FORMAT    ABORTED ON .STATUS. COMMAND
5  FORMAT    ABORTED ON .WRITE. COMMAND 
* 
* --------POST COMMAND ABORTED
* 
20 MSG B14 TO LINE 2          *COMMAND ABORTED MSG
   MSG EM TO LINE 3           *ERROR DESCRIPTION
   B6=4                       *DISPLAY LINE 
   EXIT TO 98E                *COMPLETE ERROR DISPLAY 
* 
   END 20 
COMPILE                       *DFU98B - POST COMMAND ABORTED DISPLAY
   MODULE DFU98C,FSD2(110,111)LOCK
***       DFU98C - POST COMPARE ERROR DISPLAY 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         DISPLAY THE DATA COMPARE ERROR MESSAGE AND THE NUMBER OF  THE 
*         WORD THAT CAUSED THE ERROR. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY DATA COMPARE ERROR MESSAGE. 
*         2.  DISPLAY NUMBER OF WORD CAUSING THE ERROR. 
*         3.  EXIT TO MODULE DFU98E TO COMPLETE ERROR DISPLAY.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS ZERO INDICATING DATA COMPARE ERROR. 
*         REGISTER BA  CONTAINS THE NUMBER OF THE WORD WHICH CAUSED 
*                      THE ERROR. 
* 
*    2.2  SUBMODULES USED 
* 
*         NONE
* 
* --------DATA DIVISION 
* 
1  FORMAT ABORTED ON DATA COMPARE ERROR 
2  FORMAT         WORD  *OCTB 
* 
* --------POST ERROR MESSAGES 
* 
20 MSG 1 TO LINE 3            *DATA COMPARE ERROR MESSAGE 
   MSG 2 (BA) TO LINE 4       *NUMBER OF WORD IN ERROR
   B6=6                       *DISPLAY LINE 
   EXIT TO 98E                *COMPLETE ERROR DISPLAY 
* 
   END 20 
COMPILE                       *DFU98C - POST COMPARE ERROR DISPLAY
   MODULE DFU98E,FSD2(110,111)LOCK
***       DFU98E - ERROR DISPLAY
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         COMPLETE THE ERROR DISPLAY IN THE CASE OF  EITHER  A  PRODUCT 
*         OVERLAY COMMAND ABORT OR A DATA COMPARE ERROR 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY TEST TITLE. 
*         2.  DISPLAY CONTENTS OF EC, EA, LF, AND WT REGISTERS. 
*         3.  DISPLAY CONTENTS OF B REGISTERS.
*         4.  IF A DATA COMPARE ERROR,  DISPLAY EIGHT  WORDS  OF  INPUT 
*             BUFFER AND OUTPUT BUFFER, BEGINNING WITH WORD THAT CAUSED 
*             THE ERROR.
*         5.  IF A PRODUCT OVERLAY COMMAND ABORT, DISPLAY  GENERAL  AND 
*             DETAILED STATUS.
*         6.  EXIT THE MODULE.
* 
/    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS THE NUMBER OF COMMAND ABORTED 
*         REGISTER BA CONTAINS THE NUMBER OF WORD AT WHICH DATA COMPARE 
*                     ERROR OCCURRED
* 
*    2.2  REGISTERS USED
* 
*         B6  - DISPLAY LINE COUNTER
* 
*    2.3  SUBMODULES USED 
* 
*         NONE
* 
* --------DATA DIVISION 
* 
0  FORMAT DFU14 - ISD WRITE/READ LAST THREE CYLINDERS 
2  FORMAT EC=*OCTB  EA=*OCTB  LF=*OCTB  WT=*OCTB
4  FORMAT IB (0-7)  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
5  FORMAT OB (0-7)  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
6  FORMAT B0-B7  =  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
7  FORMAT B8-B15 =  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
10 FORMAT               GENERAL STATUS = *OCTB
11 FORMAT              DETAILED STATUS  (OCTAL) 
12 FORMAT  1D = *OCT    6D = *OCT   11D = *OCT   16D = *OCT 
13 FORMAT  2D = *OCT    7D = *OCT   12D = *OCT   17D = *OCT 
14 FORMAT  3D = *OCT    8D = *OCT   13D = *OCT   18D = *OCT 
15 FORMAT  4D = *OCT    9D = *OCT   14D = *OCT   19D = *OCT 
16 FORMAT  5D = *OCT   10D = *OCT   15D = *OCT   20D = *OCT 
17 FORMAT---------------------------------------------------
* 
* --------POST MESSAGES 
* 
20 MSG 0 TO LINE 0            *TEST TITLE 
   MSG 2 (EC,EA,LF,WT) TO LINE B6 
   B6=B6+2
   IF (B14.EQ.0) B6=13        *IF DATA COMPARE ERROR
* 
* --------DISPLAY B REGISTERS 
* 
   MSG 6 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE B6 
   MSG 7 (B8,B9,B10,B11.B12,B13,B14,B15) TO LINE B6+1 
   IF (B14.NE.0) GOTO 50      *IF PRODUCT OVERLAY ERROR 
* 
* --------DISPLAY BUFFERS 
* 
   MSG 4 10B WORDS FROM IB(BA) TO LINE 10 
   MSG 5 10B WORDS FROM OB(BA) TO LINE 11 
   GOTO 70                    *IF DATA COMPARE ERROR, DONE
* 
* --------DISPLAY STATUS
* 
50 MSG 10 (SB) TO LINE 11          *STATUS TITLES 
   MSG 11 TO LINE 13
   MSG 12 (SB(1),SB(6),SB(11D),SB(16D)) TO LINE 14
   MSG 13 (SB(2),SB(7),SB(12D),SB(17D)) TO LINE 15
   MSG 14 (SB(3),SB(8D),SB(13D),SB(18D)) TO LINE 16 
   MSG 15 (SB(4),SB(9D),SB(14D),SB(19D)) TO LINE 17 
   MSG 16 (SB(5),SB(10D),SB(15D),SB(20D)) TO LINE 20
* 
* --------EXIT THE MODULE 
* 
70 MSG 17 TO LINE 23
   PICTURE
   HALT 
   BLANK
   EXIT 
* 
   END 20 
COMPILE                       *DFU98E - ERROR DISPLAY 
   MODULE DFU99,6000(110,111,115), LOCK 
***  DFU99 - TABLE OF CONTENTS AND PARAMETERS 
**
* 
/------------------TABLE OF CONTENTS------------------------
/ 
/   DFU99A - 895 MODULES - DFU01, DFU03 
/   DFU99B - 834/836 MODULES - DFU11, DFU13, DFU14, DFU15 
/                              DFU17
/ 
/------------------RESTRICTIONS AND LIMITATION--------------
/ 
/   DFU REQUIRES THAT A MINUMUM MICROCODE LEVEL OF
/   MA464-D01 BE LOADED IN THE CCC AND RUNNING IF 895 
/   MODULES ARE BEING USED. 
/ 
/   DFU REQUIRES THAT MINUMUM MICROCODE LEVELS OF 
/   MA462-D02 AND COS-6 BE LOADED IN THE ADAPTER AND
/   CONTROL MODULE RESPECTIVELY IF 834 MODULES ARE
/   BEING USED. 
/ 
/   DFU REQUIRES THAT MINUMUM MICROCODE LEVELS OF 
/   MA462-D03 AND COS-2A BE LOADED IN THE ADAPTER AND 
/   CONTROL MODULE RESPECTIVELY IF 836 MODULES ARE
/   BEING USED. 
/ 
/   DFU REQUIRES THAT THE SUBSYSTEM BE FULLY
/   OPERATIONAL.
/ 
/ 
/------------------PARAMETER DESCRIPTION--------------------
/ 
/   NOTE: MODULES DFU03, DFU13, DFU14, DFU15 DO NOT USE 
/         PARAMETERS. 
/ 
/   P0 = 0000- FORMAT 895 CYL 0-884 IN LARGE RECORD SIZE
/              OF 15390 8 BIT BYTES. MODULE (DFU01).
/        XXX1- FORMAT 895 CYL 0-884 IN LARGE RECORD SIZE
/              OF 4128 8 BIT BYTES. MODULE (DFU01). 
/ 
/   P7 = CCCC- CYLINDER NUMBER (RIGHT JUSTIFIED ZERO FILLED)
/ 
/   P7 = 4000B- FORMAT RESERVED CYLINDER (SYSTEM CYLINDER 0)
/ 
/   P7 = 4400B- FORMAT THE UPDATE ETF LOG.
/ 
/   P8 = TTTT- TRACK NUMBER (RIGHT JUSTIFIED ZERO FILLED) 
/ 
/   P9 = SSSS- SECTOR NUMBER (RIGHT JUSTIFIED ZERO FILLED)
/ 
1  END 1
COMPILE,SOURCE               *DFU99 - TABLE OF CONTENTS 
   MODULE DFU99A,6000(115), LOCK
*** DFU99A - LIST OF 895 MODULES - 01 
**
* 
/ 
/------------------895 MODULES------------------------------
/ 
/    MODULE      MODULE               ACCESS   RUN    DC
/    NUMBER      DESCRIPTION          LEVEL   TIME
/ 
/     DFU01      WRITE RECORD SIZE     10   5  MIN    115 
/                FOR 895 DEVICE 
/ 
/     DFU03      WRITE RECORD SIZE     10   3  SEC    115 
/                FOR 895 DEVICE 
/                CYLINDER 885D ONLY 
/ 
/     DFU21      WRITE CONTROLWARE     10   1  MIN    115 
/                TO 895 DISK
/ 
1  END 1
COMPILE,SOURCE               *DFU99A - LIST OF MODULES
   MODULE DFU99B,6000(110,111), LOCK
*** DFU99B - LIST OF 834/836 MODULES - 11-17
**
* 
/ 
/----------834/836 MODULES WITHOUT PARAMETERS---------------
/ 
/    MODULE      MODULE            ACCESS   RUN      DC 
/    NUMBER      DESCRIPTION       LEVEL    TIME
/ 
/     DFU13      SHORT FORMAT XXX   10   34/150 MIN  110/111
/     DFU14      WRT/RD LAST 3 CYL   4  1.4/2.5 MIN  110/111
/     DFU15      LONG FORMAT  XXX   10   8/16   HRS  110/111
/ 
/                XXX IS 834 OR 836 DEPENDING ON THE 
/                TYPE OF DISK BEING USED. 
/ 
/----------834/836 PARAMETER DRIVEN MODULES-----------------
/ 
/    MODULE      MODULE             ACCESS   RUN      DC
/    NUMBER      DESCRIPTION        LEVEL   TIME
/ 
/     DFU11      REALLOCATE SECTOR   10   13/20 SEC  110/111
/     DFU17      FORMAT CYLINDER     10   35/80 SEC  110/111
/ 
1  END 1
COMPILE,SOURCE               *DFU99B - LIST OF MODULES
