COMSMSP 
COMMON
          CTEXT  COMSMSP - MASS STORAGE PROCESSING EQUIVALENCES.
 COMSMSP  SPACE  4
          BASE   M
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
***       COMSMSP - MASS STORAGE PROCESSING EQUIVALENCES. 
*         R. E. TATE.        72/02/26.
*         R. J. THIELEN.     75/01/08.
*         W. E. GOEBEL.      77/01/24.
          SPACE  4
**        MSEQ - DEFINES SUPPORTED MASS STORAGE EQUIPMENTS. 
* 
*         MSEQ IS A MICRO CONTAINING ALL THE CURRENTLY SUPPORTED MASS 
*         STORAGE EQUIPMENT MNEMONICS.  THIS MICRO IS GENERATED BY
*         THE *MSDC* MACRO. 
 TBL      SPACE  4,10 
**        TBL - GENERATE TABLE BASED UPON PARAMETER STRING. 
* 
*         ENTRY  TBLM IS A USER SUPPLIED MACRO TO GENERATE EACH 
*                INDIVIDUAL TABLE ENTRY. TBLM HAS ONE PARAMETER THE 
*                EQUIPMENT TYPE TO GENERATE THE TABLE ENTRY FOR.
  
  
          PURGMAC  TBL
 TBL      MACRO  P
          IRP    P
          TBLM   P
          IRP    P
          ENDM
          SPACE  4,10 
**        DRIVER INDEX DEFINITIONS. 
  
  
 BEGIN    BSSN   1
 LA6DI    BSSN   1           *6DI* DRIVER INDEX 
 LA6DJ    BSSN   1           *6DJ* DRIVER INDEX 
 LA6DP    BSSN   1           *6DP* DRIVER INDEX 
 LA6DE    BSSN   1           *6DE* DRIVER INDEX 
 LA6DX    BSSN   1           *6DX* DRIVER INDEX 
 LA6MX    BSSN   0           MAXIMAL DRIVER INDEX + 1 
  
  
 MSDC     SPACE  4,15 
**        MSDC - GENERATE MASS STORAGE DEVICE CHARACTERISTICS.
*         THIS MACRO IS INTENDED TO SUPPLY VIRTUALLY ALL PARAMETERS 
*         ASSOCIATED WITH A MASS STORAGE DEVICE.  IN MOST PROGRAMS NO 
*         WORK SHOULD BE INVOLVED ADDING OR DELETING EQUIPMENT
*         SUPPORT.  THIS IS THE GOAL OF SPECIFYING PARAMETERS 
*         IN THIS COMMON DECK.
* 
* TY      MSDC N,S,C,P,M,T,U,F,A,D,B,F1,F2,F3,F4,F5,F6,O1,T1,O2,T2,F7,F8
*,,F9,BC,RT,RB,NP,CP,MLI,MI,DD
*         PARAM  TAG         MEANING
*         TY                 DEVICE TYPE. 
*         N      NTTY        NUMBER OF TRACKS PER PARTITION/DEVICE. 
*         S      SLTY        SECTOR LIMIT.
*         C      CTTY        DEFAULT NUMBER OF CATALOG TRACKS.
*         P      PKTY        NUMBER OF PACKS ALLOWED PER DEVICE 
*         M      SDTY        SHARED DEVICE ALLOWED FLAG 
*         T      TTTY        FULL / HALF TRACK FLAG.
*         U      NUTY        MAXIMUM UNIT NUMBER+1 ALLOWED. 
*         F      FWTY        DEFAULT FIRMWARE TYPE OF EQUIPMENT.
*         A      LDAMTY      ALGORITHM INDEX CONTROL OR OVERRIDE. 
*                            *LDAM* = DEVICE IS AN *LDAM* DEVICE. 
*                AITY = AIXX *XX* MEANS USE THE SAME ALGORITHM INDEX
*                            PREVIOUSLY DEFINED FOR DEVICE TYPE *XX*. 
*         D      DRNTY       *6XX* DRIVER NAME FOR DEVICE TYPE
*         B      BFTY        BUFFERED DEVICE FLAGS (3 BITS) 
*                            BIT 2 = DEVICE SUPPORTS DIRECT TRANSFER. 
*                            BIT 1 = DEVICE IS BUFFERED RMS.
*                            BIT 0 = DEVICE IS PARITY PROTECTED.
*                AITY        ALGORITHM INDEX GENERATED IF BFTY.NE.4 
*                            AND IF NOT OVERRIDDEN BY PARAMETER *A*.
*         F1     CYUNTY      PHYSICAL CYLINDERS PER UNIT
*         F2     PTCYTY      PHYSICAL TRACKS PER CYLINDER 
*         F3     LSPTTY      LOGICAL SECTORS PER PHYSICAL TRACK.
*         F4     CFSTY       CONVERSION FACTOR SHIFT COUNT; 
*                            USED TO DETERMINE NUMBER OF -
*                LSPSTY      LOGICAL SECTORS PER PHYSICAL SECTOR. 
*                PSBFTY      PHYSICAL SECTORS PER I/O BUFFER. 
*                PSPTTY      PHYSICAL SECTORS PER PHYSICAL TRACK. 
*                LTCYTY      LOGICAL TRACKS PER CYLINDER. 
*                PSLTTY      PHYSICAL SECTORS PER LOGICAL TRACK.
*         F5     GSTY        GAP SECTORS PER LOGICAL TRACK. 
*         F6     MCLTTY      MAINTENANCE CYLINDER LOGICAL TRACK.
*         O1     SOH1TY      SEEK OVERHEAD FOR SEEKS .LE. 30
*                            CYLINDERS (MICROSECONDS) 
*         T1     SC1TY       SEEKS .LE. 30 TIME PER CYLINDER
*                            (MICROSECONDS) 
*         O2     SOH2TY      SEEK OVERHEAD FOR SEEKS .GT. 30
*                            CYLINDERS (MICROSECONDS) 
*         T2     SC2TY       SEEKS .GT. 30 TIME PER CYLINDER
*                            (MICROSECONDS) 
*         F7     LCTY        FIRST SECTOR OF LABEL COPY.
*         F8     SPSCTY      SPARE PHYSICAL SECTORS PER CYLINDER
*         F9     PNUNTY      PARTITIONS PER PHYSICAL UNIT.
*                            USED WITH CYUNTY TO DERIVE - 
*                CYPNTY      CYLINDERS PER PARTITION. 
*         BC     BCTTY       DEFAULT BUFFER COUNT FOR DEVICE. 
*         RT     RATTY       READ-AHEAD THRESHOLD FOR DEVICE. 
*         RB     RBTTY       DEFAULT READ BUFFER THRESHOLD FOR DEVICE.
*         NP     NPPTY       NIO PP DRIVER NAME FOR DEVICE. 
*         CP     CPPTY       CIO PP DRIVER NAME FOR DEVICE. 
*         MLI    MLIDTY      MAINTENANCE LOG IDENTIFIER FOR DEVICE. 
*         MI     MDLTY       MODEL NUMBER IDENTIFIER FOR DEVICE.
*                            (HEXADECIMAL REPRESENTATION) 
*         DD     PDDTY       NUMBER OF PARALLEL DATA DRIVES PER DEVICE. 
  
          PURGMAC MSDC
   MACRO  MSDC,TY,N,S,C,P,M,T,U,F,A,D,B,F1,F2,F3,F4,F5,F6,O1,T1,O2,T2,F7
,,F8,F9,BC,RT,RB,NP,CP,MLI,MI,DD
 MSEQ     MICRO  1,, "MSEQ"".1"TY 
 .1       MICRO  1,,*,* 
          IFC    EQ,*N**
 NT_TY    EQU    TL_TY*4     NUMBER OF TRACKS IS TLTY*4 
          ELSE   1
 NT_TY    EQU    N           NUMBER OF TRACKS 
 .1       SET    N+3
 TL_TY    EQU    .1/4 
 SL_TY    EQU    S           NUMBER OF SECTORS PER TRACK
 CT_TY    EQU    C           NUMBER OF CATALOG TRACKS 
 PK_TY    EQU    P           PACK TYPE DEVICE FLAG
 SD_TY    EQU    M           SHARED DEVICE ALLOWED FLAG 
          IFC    EQ,*T*FT*
 TT_TY    EQU    0           SET FULL TRACK STATUS
          ELSE   1
 TT_TY    EQU    1           SET HALF TRACK STATUS
 .A1      SET    U 0
 NU_TY    EQU    .A1         MAXIMUM UNIT NUMBER ALLOWED
          IFC    EQ,*F**
 FW_TY    MICRO  1,,*NNC* 
          ELSE   1
 FW_TY    MICRO  1,,*F* 
 .A2      SET    0
 .A2      IFC    EQ,*A*LDAM*
 LDAM_TY  EQU    1
 .A2      ELSE
 LDAM_TY  EQU    0
          IFC    NE,*A**,1
 .A2      SET    1
 .A2      ENDIF 
 .A1      SET    B 0         BUFFERED DEVICE FLAGS
 BF_TY    EQU    .A1
          ERRNG  7-BF_TY     DEFINITION EXCEEDS FIELD SIZE
 .A2      IFNE   .A2,0
 AI_TY    EQU    AI_A 
 .A2      ELSE
 .A1      IFEQ   .A1,4
 AI_TY    EQU    0
 .A1      ELSE
 AI_TY    EQU    .AI         SET ALGORITHM INDEX
 .AI      SET    .AI+1
 .A1      ENDIF 
 .A2      ENDIF 
          IFC    EQ,*D**
 DRN_TY   MICRO  1,,*TY*     DRIVER NAME IS DEVICE TYPE 
          ELSE   1
 DRN_TY   MICRO  1,,*D*      DRIVER NAME
 DI_TY    EQU    LA6"DRN_TY"
 .A1      SET    F1 0 
 CYUN_TY  EQU    .A1         CYLINDERS PER UNIT 
 .A1      SET    F2 0 
 PTCY_TY  EQU    .A1         PHYSICAL TRACKS PER CYLINDER 
 .A1      SET    F3 0 
 LSPT_TY  EQU    .A1         LOGICAL SECTORS PER PHYSICAL TRACK 
 .A1      SET    F4 0 
 CFS_TY   EQU    .A1         CONVERSION FACTOR
 .2       DECMIC .A1
 LSPS_TY  EQU    1S".2"      LOGICAL SECTORS PER PHYSICAL SECTOR
          IFNE   BF_TY,0,1
 PSBF_TY  EQU    40/LSPS_TY  PHYSICAL SECTORS PER I/O BUFFER
 .A1      SET    LSPT_TY/LSPS_TY
 PSPT_TY  EQU    .A1         PHYSICAL SECTORS PER PHYSICAL TRACK
 .A1      SET    F5 0 
 GS_TY    EQU    .A1         GAP SECTORS PER LOGICAL TRACK
 .A1      SET    F6 0 
 MCLT_TY  EQU    .A1         LOGICAL TRACK OF TEST MAINTENANCE CYLINDER 
 .A1      SET    O1 0 
 SOH1_TY  EQU    .A1         CYLINDER POSITION OVERHEAD TIME (MICROSEC) 
 .A1      SET    T1 0 
 SC1_TY   EQU    .A1         SEEK TIME PER CYLINDER (MICROSECONDS)
 .A1      SET    O2 0 
 SOH2_TY  EQU    .A1         CYLINDER POSITION OVERHEAD TIME (MICROSEC) 
 .A1      SET    T2 0 
 SC2_TY   EQU    .A1         SEEK TIME PER CYLINDER (MICROSECONDS)
 .A1      SET    F7 0 
 LC_TY    EQU    .A1         FIRST SECTOR OF LABEL COPY 
 .A1      SET    PTCY_TY*LSPT_TY/SL_TY
 LTCY_TY  EQU    .A1         LOGICAL TRACKS/CYLINDER
 .A1      SET    SL_TY+GS_TY
 .A2      SET    TT_TY+1
 .A1      SET    .A1*.A2/LSPS_TY
 PSLT_TY  EQU    .A1         PHYSICAL SECTORS PER LOGICAL TRACK 
 .A1      SET    F8 0 
 SPSC_TY  EQU    .A1         SPARE PHYSICAL SECTORS PER CYLINDER
 .A1      SET    F9 1 
 PNUN_TY  EQU    .A1         PARTITIONS PER PHYSICAL UNIT 
 CYPN_TY  EQU    CYUN_TY/.A1 CYLINDERS PER PARTITION
 .A1      SET    BC 0 
 BCT_TY   EQU    .A1         DEFAULT BUFFER COUNT FOR DEVICE
 .A1      SET    RT 0 
 RAT_TY   EQU    .A1         READ-AHEAD THRESHOLD FOR DEVICE
 .A1      SET    RB 0 
 RBT_TY   EQU    .A1         DEFAULT READ BUFFER THRESHOLD FOR DEVICE 
          IFC    NE,*NP** 
 NPP_TY   MICRO  1,,*NP*     NIO PP DRIVER NAME 
          ELSE   1
 NPP_TY   MICRO  1,,*NIL* 
          IFC    NE,*CP** 
 CPP_TY   MICRO  1,,*CP*     CIO PP DRIVER NAME 
          ELSE   1
 CPP_TY   MICRO  1,,*NIL* 
 .A1      SET    MLI 0
 MLID_TY  EQU    .A1         MAINTENANCE LOG IDENTIFIER FOR DEVICE
 .A1      SET    MI 0 
 MDL_TY   EQU    .A1         MODEL NUMBER IDENTIFIER FOR DEVICE 
 .A1      SET    DD 1 
 PDD_TY   EQU    .A1         PARALLEL DATA DRIVES PER DEVICE
  
 .NT      SET    .NT+1       SET NUMBER OF MASS STORAGE TYPES 
          ENDM
  
  
          IF     DEF,MSP$,1 
          QUAL   MSP
          SPACE  4,15 
**        DEFINE MASS STORAGE DEVICE CHARACTERISTICS. 
  
  
 MSEQ     MICRO  1,, (       INITIALIZE *MSEQ* MICRO
 .1       MICRO  1,,
 .NT      SET    0           INITIALIZE NUMBER OF MASS STORAGE TYPES
  
*         NON-ROTATING MASS STORAGE DEVICES.
*         FOR EXTENDED MEMORY, THE SECTORS PER TRACK IS DETERMINED AT 
*         DEADSTART TIME. 
  
 DE  MSDC  0,0,4,0,1,,,,,,4,,,,,,4001,,,,,0 
 DP  MSDC  0,0,4,0,1,,,,,,4,,,,,,4001,,,,,0 
  
*         STANDARD ROTATING MASS STORAGE DEVICES. 
* 
*         NOTE THAT THESE DEVICES CONSIST OF FULL TRACK AND HALF
*         TRACK VARIANTS.  THEREFORE, THEY MUST BE THE FIRST GROUP
*         OF *LDAM* DEVICES, AND MUST BE ORDERED SO THAT THE ALGORITHM
*         INDEX FOR A HALF-TRACK DEVICE PLUS *AIHT* EQUALS THE
*         ALGORITHM INDEX FOR THE EQUIVALENT FULL TRACK DEVICE. 
  
.AI       SET    1           INITIALIZE ALGORITHM INDEX 
  
 DI  MSDC  3140,153,40,10,1,HT,100,LHT,LDAM,DI,,630,22,30,,1,7144,7333D,
,7,12200D,4,47,,,,,,,,0002
 DJ  MSDC  3150,343,40,10,1,HT,100,LHT,LDAM,DI,,1464,23,30,,1,7152,7333D
,,7,12200D,4,47,,,,,,,,0003 
 DM  MSDC  3222,1200,10,3,1,HT,100,LFM,LDAM,DI,,1511,50,40,,0,7224,4666D
,,7,10200D,4,47,,,,,,,,0007 
  
 AIHT     EQU    .AI-1       END OF HALF TRACK ALGORITHMS 
  
 DK  MSDC  3140,160,40,10,1,FT,100,LFT,LDAM,DI,,630,23,30,,2,7144,7333D,
,7,12200D,4,77,,,,,,,,0004
 DL  MSDC  3150,343,40,10,1,FT,100,LFT,LDAM,DI,,1464,23,30,,1,7152,7333D
,,7,12200D,4,77,,,,,,,,0005 
 DQ  MSDC  3222,1200,10,3,1,FT,100,LFM,LDAM,DI,,1511,50,40,,0,7224,4666D
,,7,10200D,4,67,,,,,,,,0017 
 DR  MSDC  3777,3600,10,1,1,FT,100,,LDAM,DI,,6000,50,40,,0,7777,4666D,7,
,10200D,4,67,,,,,,,,0015
  
 AIIB     EQU    .AI         BEGINNING OF ISMD DEVICES
  
 DD  MSDC  3136,240,40,10,1,FT,74,LID,LDAM,DJ,,1457,12,40,,0,7136,11666D
,,7,19400D,3,43,,,,,,,,0110 
 DG  MSDC  2566,1064,10,3,1,FT,74,LID,LDAM,DJ,,1273,30,57,,0,6566,11666D
,,4,14000D,0,57,,,,,,,,0111 
  
 AIIE     EQU    .AI         END OF ISMD DEVICES
  
*         FEDERAL STANDARD CHANNEL MASS STORAGE DEVICES.
  
 DX  MSDC  3140,142,40,10,1,FT,100,LAD,LDAM,DI,,630,23,25,,2,7144,,,,,35
,,,,,,,,,0010 
 DY  MSDC  3130,306,40,10,1,FT,100,LAD,LDAM,DI,,1454,23,25,,2,7132,,,,,3
,5,,,,,,,,0011
 DZ  MSDC  2134,644,10,4,1,FT,100,LAD,LDAM,DI,,1056,36,34,,0,6134,,,,,35
,,,,,,,,,0012 
 DA  MSDC  2140,1510,10,2,1,FT,100,LAD,LDAM,DI,,2140,36,34,,0,,,,,,35,,,
,,,,,,0013
  
  
*         BUFFERED MASS STORAGE DEVICES.
  
 AIBB     EQU    .AI         BEGINNING OF BUFFERED DEVICES
  
 DB  MSDC  3222,1200,10,3,0,FT,100,LPH,LDAM,DE,6,1511,12,200,2,0,7224,,,
,,,15,,,4,3,3,,1HP,0014 
 DC  MSDC  3346,1300,10,2,0,FT,100,LCC,LDAM,DE,6,1563,17,140,5,0,7350,,,
,,,15,1,,4,3,3,1XM,1XY,0115 
  
 AIDS     EQU    .AI         END OF DEVICES USABLE FOR DEADSTART
  
 DV  MSDC  1456,1440,10,1,0,FT,10,,,DE,6,627,12,240,3,0,,,,,,15,,,4,3,3,
,,,0006 
 DW  MSDC  3144,1440,10,1,0,FT,10,,,DE,6,1462,12,240,3,0,,,,,,15,,,4,3,3
,,,,0006
 DF  MSDC  3344,1140,10,3,0,FT,10,,,DE,6,1562,4,460,3,0,7344,,,,,15,,,6,
,4,5,,1HY,0120
 DH  MSDC  3344,1300,10,2,0,FT,10,,,DE,6,1562,4,540,5,0,7344,,,,,15,,,6,
,4,5,,1HY,0121
 DN  MSDC  3727,2140,10,1,0,FT,10,,,DE,6,2601,23,124,2,0,7730,,,,,15,,,4
,,3,3,,1XD,0124 
  
 AIAB     EQU    .AI         BEGINNING OF DAS ARRAY DEVICES 
  
*         DAS SOLID-STATE DEVICES.
  
 EA  MSDC  3746,240,10,10,1,FT,40,,,DE,6,1514,4,140,5,0,7746,,,,,15,,,4,
,3,3,,1DA,0130,0#3137,1 
 EB  MSDC  3746,500,10,6,1,FT,10,,,DE,6,1514,4,300,5,0,7746,,,,,15,,,4,3
,,3,,1DA,0131,0#3137,2
  
*         DAS SABRE DEVICES 
  
 EC  MSDC  3776,1740,10,2,1,FT,40,,,DE,6,3135,7,300,5,0,7776,,,,,15,2,,4
,,3,3,,1DA,0132,0#4C32,1
 ED  MSDC  3776,1740,10,2,1,FT,10,,EC,DE,7,3135,7,300,5,0,7776,,,,,15,2,
,,4,3,3,,1DA,0133,0#4C32,1
 EE  MSDC  3762,3600,10,1,1,FT,10,,,DE,6,3135,7,540,5,0,7762,,,,,15,2,,4
,,3,3,,1DA,0134,0#4C32,2
 EF  MSDC  3762,3600,10,1,1,FT,10,,EE,DE,7,3135,7,540,5,0,7762,,,,,15,2,
,,4,3,3,,1DA,0137,0#4C32,2
  
*         DAS SABRE MULTI-PARTITION DEVICES.
  
 EM  MSDC  3747,2740,10,1,1,FT,10,,,DE,7,3135,7,1040,5,0,7747,,,,,15,2,2
,,4,3,3,,1DA,0135,0#4C32,3
 EN  MSDC  3751,3640,10,1,1,FT,10,,,DE,6,3135,7,1300,5,0,7751,,,,,15,2,2
,,4,3,3,,1DA,0136,0#4C32,4
  
*         DAS ELITE II DEVICES. 
  
 EG  MSDC  3751,3240,10,1,1,FT,40,,,DE,6,5074,11,240,5,0,7751,,,,,15,4,,
,4,3,3,,1DA,0142,0#4C31,1 
 EH  MSDC  3751,3240,10,1,1,FT,10,,EG,DE,7,5074,11,240,5,0,7751,,,,,15,4
,,,4,3,3,,1DA,0143,0#4C31,1 
  
*         DAS ELITE II MULTI-PARTITION DEVICES. 
  
 EI  MSDC  3737,3100,10,1,1,FT,10,,,DE,6,5074,11,440,5,0,7737,,,,,15,4,2
,,4,3,3,,1DA,0144,0#4C31,2
 EJ  MSDC  3737,3100,10,1,1,FT,10,,EI,DE,7,5074,11,440,5,0,7737,,,,,15,4
,,2,4,3,3,,1DA,0147,0#4C31,2
 EK  MSDC  3727,3240,10,1,1,FT,10,,,DE,7,5074,11,700,5,0,7727,,,,,15,4,3
,,4,3,3,,1DA,0145,0#4C31,3
 EL  MSDC  3752,3140,10,1,1,FT,10,,,DE,6,5074,11,1100,5,0,7752,,,,,15,4,
,4,4,3,3,,1DA,0146,0#4C31,4 
  
*         DAS 3.5IN DEVICES.
  
 EO  MSDC  3755,3240,10,1,1,FT,40,,,DE,6,4362,17,150,3,0,7755,,,,,15,7,,
,4,3,3,,1DA,0162,0#3153,1 
 EP  MSDC  3755,3240,10,1,1,FT,10,,EO,DE,7,4362,17,150,3,0,7755,,,,,15,7
,,,4,3,3,,1DA,0163,0#3153,1 
  
*         DAS 3.5IN MULTI-PARTITION DEVICES.
  
 ES  MSDC  3754,3240,10,1,1,FT,10,,,DE,6,4362,17,320,4,0,7754,,,,,15,7,2
,,4,3,3,,1DA,0164,0#3153,2
 EU  MSDC  3754,3240,10,1,1,FT,10,,ES,DE,7,4362,17,320,4,0,7754,,,,,15,7
,,2,4,3,3,,1DA,0167,0#3153,2
 EV  MSDC  3764,3200,10,1,1,FT,10,,,DE,7,4362,17,460,4,0,7764,,,,,15,7,3
,,4,3,3,,1DA,0165,0#3153,3
 EW  MSDC  3744,3200,10,1,1,FT,10,,,DE,6,4362,17,620,4,0,7744,,,,,15,7,4
,,4,3,3,,1DA,0166,0#3153,4
  
 AIAE     EQU    .AI         END OF DAS ARRAY DEVICES 
 AIBD     EQU    .AI         END OF BUFFERED DEVICES
  
          PURGMAC  MSDC 
  
 MSEQ     MICRO  1,, "MSEQ") TERMINATE *MSEQ* MICRO 
 AIMX     EQU    .AI
  
 MXNT     EQU    .NT+1       MAXIMUM NUMBER OF MASS STORAGE TYPES 
  
  
          IF     DEF,MSP$,1 
          QUAL   *
          SPACE  4
**        DRIVER OPERATION CODES. 
  
 REDP     EQU    0           READ 
 WRIP     EQU    1           WRITE
          SPACE  4,10 
**        *DSWM* TIMEOUT INDICES. 
  
 IXST     EQU    1           SEEK TIMEOUT INDEX 
 IXUR     EQU    2           UNIT RESERVE INDEX 
 IXIW     EQU    3           ISD WRITE TIMEOUT INDEX
 IXCR     EQU    4           CONTROLLER RESERVE TIMEOUT INDEX 
 IXMX     EQU    4           MAXIMUM TIMEOUT INDEX
  
  
**        RETRY COUNTS AND THRESHOLDS.
  
 CRTH     EQU    7           CONTROLWARE RELOAD THRESHOLD 
 CRTO     EQU    10          MAXIMUM TIME (IN SECONDS) FOR C/W RELOAD 
 IWTO     EQU    15D         MAXIMUM 834/836 WRITE WAIT TIME (SECONDS)
 RSTO     EQU    5           MAX UNIT/CONTROLLER WAIT TIME (SECONDS)
 SKTO     EQU    15D         MAXIMUM SEEK WAIT TIME (SECONDS) 
 CHRT     EQU    4           CHANNEL PARITY ERROR RETRY LIMIT 
 CSRT     EQU    2           CONTROLLER STOP RETRY LIMIT
 RART     EQU    2           7155 RAM PARITY ERROR RETRY LIMIT
 FTRT     EQU    4           FUNCTION TIMEOUT RETRY LIMIT 
 SURT     EQU    2           NUMBER OF RETRIES BEFORE SETTING SUSPECT 
  
  
**        MISCELLANEOUS CONSTANTS.
  
 CNAC     EQU    31D         CYLINDER NUMBER OF *LDAM* ALGORITHM CHANGE 
 DBSV     EQU    5           *DSWM* BASE SHIFT VALUE
 ECBL     EQU    102         EXTENDED MEMORY BUFFER LENGTH
 MXSL     EQU    24          MAXIMUM DETAILED STATUS LENGTH 
 SCDT     EQU    10D         SWEEP CYCLING DELAY TIME (IN MINUTES)
          SPACE  4,10 
**        LOCATION SYMBOLS. 
  
 DRSW     EQU    100         DRIVER SCRATCH 
 D1       EQU    HN          INDIRECT REFERENCE TO *DRSW* 
 WDSE     EQU    101         WRITE ERROR PROCESSING BUFFER
 ERXA     EQU    102         EXIT ADDRESS SAVED FOR *7ES* 
 RDCT     EQU    103         DRIVER INTERFACE WORD
 STSA     EQU    104         DEVICE STATUS
 STSB     EQU    105         DEVICE CHANNEL STATUS BYTE 
 UERR     EQU    106         USER ERROR PROCESSING OPTIONS
 SLM      EQU    107         SECTOR LIMIT 
 MSD      EQU    110         MASS STORAGE DESIGNATOR
 CHRV     EQU    111         CHANNEL RESERVATION STATUS 
  
 BEP      EQU    410         MS ERROR PROCESSOR TRAP
 LEP      EQU    413         *7EP* ERROR PROCESSOR CALL 
 LEP1     EQU    414         GENERAL ERROR PROCESSOR LOADER 
  
 SMSX     EQU    473         EXIT FROM DRIVER PRESET
  
 .RDS2    EQU    556         *LDA* EXIT ADDRESS, NEEDED BY *LDAM* 
 .DST1    EQU    625         *DST* ENTRY ADDRESS, NEEDED BY *1MS* 
  
  
**        *RDCT* - ERROR PROCESSING INTERFACE WORD. 
* 
*         CELL *RDCT* IS USED FOR RETURNING STATUS TO THE CALLER OF 
*         *RDS* AND *WDS*.  ITS FORMAT IS AS FOLLOWS -
* 
*         BIT(S)                         MEANING
* 
*          13     SET IF THE OPERATION IS A READ AND THE LINKAGE BYTES
*                 ARE BAD.  SET ALSO FOR A WRITE OPERATION WHEN NO DATA 
*                 WAS WRITTEN TO DISK.
* 
*          12     SET IF THE ERROR IS NON-RECOVERABLE. AN ERROR IS
*                 CONSIDERED TO BE NON-RECOVERABLE IF ONE OF THE
*                 FOLLOWING CONDITIONS IS TRUE -
*                    1. THE CAUSE OF THE ERROR IS NOT SOMETHING THAT
*                       CAN BE REPAIRED.  FOR EXAMPLE, A MEDIA ERROR IS 
*                       NON-RECOVERABLE SINCE NO HARDWARE REPAIR ACTION 
*                       CAN BE PERFORMED TO CORRECT THE BAD SPOT ON THE 
*                       DISK SURFACE. 
*                    2. IT IS IMPOSSIBLE TO RESUME THE I/O SEQUENCE AT
*                       THE POINT OF FAILURE FOLLOWING REPAIR OF THE
*                       HARDWARE.  AN EXAMPLE OF THIS CASE IS AN ERROR
*                       OCCURRING ON AN ISD DISK DURING A MULTI-SECTOR
*                       WRITE OPERATION.  THE DATA BUFFERING IN THE 
*                       ISD DISK SUBSYSTEM ALLOWS THE PP TO SEND DATA 
*                       TO THE 7255 ADAPTER AND UPDATE FET POINTERS 
*                       PRIOR TO TRANSMISSION OF THE DATA TO THE DISK.
*                       IN THIS CASE, EVEN THOUGH THE HARDWARE MAY BE 
*                       REPAIRABLE, THE JOB MUST NOT BE ALLOWED TO
*                       CONTINUE WITH ITS I/O SEQUENCE FOLLOWING THE
*                       REPAIR SINCE DATA THAT WAS IN TRANSIT BETWEEN 
*                       THE PP AND THE DISK WILL HAVE BEEN LOST.
*          11     SET IF A BUFFER TO DISK ERROR OCCURRED AND WAS
*                 RECOVERED BUT NO WRITE ERROR PROCESSING BUFFER WAS
*                 SPECIFIED ON THE *SETMS* CALL.  IN RESPONSE TO THIS 
*                 BIT BEING SET, THE CALLER SHOULD REISSUE THE WRITE
*                 OF THE CURRENT SECTOR.
*          10     SET IF THE DEVICE MAY HAVE MULTIPLE SECTORS IN
*                 TRANSIT TO THE DISK.  THIS BIT IS USED BY PP PROGRAMS 
*                 THAT MUST KNOW HOW MUCH DATA WAS WRITTEN TO DISK
*                 BEFORE AN ERROR OCCURRED.  THIS BIT IS SET FOR ISD
*                 DEVICES AND FOR DEVICES BUFFERED THROUGH EXTENDED 
*                 MEMORY. 
*           7    UNUSED.
*                 FLAG IS FOR INTERNAL USE AND IS NOT RETURNED TO THE 
*                 CALLER. 
*           6    SET IF THE RECOVERY PROCESS IS IN PROGRESS.  THIS
*          5-0   ERROR CODE.
          SPACE  4,10 
**        *CHRV* - DRIVER CONTROL WORD. 
* 
*         CELL *CHRV* IS USED FOR VARIOUS DRIVER CONTROL FUNCTIONS SUCH 
*         AS RESOURCE RESERVATION (CHANNEL/CONTROLLER/BUFFER) AND 
*         CONTROL OF THE OPERATION. 
* 
*         BIT(S)                        MEANING 
* 
*          13    UNUSED.  THIS BIT MUST REMAIN UNUSED UNTIL ROUTINE 
*                *DSW* IN *6DI* IS CHANGED TO DO *LDN 0* BEFORE 
*                JUMPING TO *DSW1* AFTER ISSUING *DSWM*.
*          12    UNUSED.
*          11    SET IF STREAMING DATA ON A PRU READ OPERATION. 
*                (BUFFERED DEVICES ONLY). 
*          10    SET IF DIRECT TRANSFER CONTINUATION CALL.
*                (BUFFERED DEVICES ONLY). 
*           7    SET IF BUFFERED I/O LINK SET.
*                (BUFFERED DEVICES ONLY). 
*           6    SET IF PP IS IN RECALL DUE TO BUFFER FLUSH DURING
*                DEVICE VERIFICATION OPERATION.  (BUFFERED DEVICES
*                ONLY). 
*           5    SET IF SYSTEM FILE READ OPERATION. 
*           4    SET IF CHANNEL SELECTED BY CALLER. 
*           3    SET IF CONTROLLER RESERVED.
*           2    SET IF ACCESS SHOULD BE ALLOWED ON *OFF* OR *SUSPECT*
*                DEVICE.
*           1    SET IF ACCESS SHOULD BE ALLOWED ON *DOWN* DEVICE.
*           0    SET IF CHANNEL RESERVED (NON-BUFFERED DEVICES).
*                SET IF PP BUFFER RESERVED (BUFFERED DEVICES).
  
          ERRNZ  EPAD-2      DRIVERS AND *CPUMTR* ASSUME BIT 1
          ERRNZ  EPNS-4      DRIVERS AND *CPUMTR* ASSUME BIT 2
          SPACE  4,10 
**        DRIVER ERROR PROCESSOR COMMUNICATION AREAS. 
* 
*         DATA USED BY THE ERROR PROCESSOR DURING RECOVERY ATTEMPTS 
*         IS LOCATED IN TWO AREAS.  THE *LONG TERM DATA AREA* 
*         LOCATED IN THE DRIVER PRESET AREA, HOLDS DATA 
*         THAT MUST REMAIN INTACT THROUGHOUT THE RECOVERY PROCESS.
*         THIS DATA MUST NOT BE DESTROYED BY THE ERROR PROCESSOR
*         OVERLAY LOADS.  THE OTHER DATA AREA, CALLED *THE SHORT
*         TERM DATA AREA*, IS LOCATED BEGINNING AT *EPFW*.
*         DATA IN THIS AREA IS REGENERATED DURING EACH RETRY
*         ATTEMPT.  THIS DATA DOES NOT NEED TO BE PRESERVED ACROSS
*         RETRY ATTEMPTS. 
  
  
*         LONG TERM DATA AREA.
  
          IFPP
 BEGIN    BSSB   PPFW-5-3 
 DENR     BSSB   1           *NON-RECOVERABLE ERROR* FLAG 
 DERC     BSSB   1           RETRY COUNT
 DEWR     BSSB   1           *DATA WRITTEN/READ* FLAG 
 DEFW     BSSB   0           FWA OF LONG TERM DATA AREA 
 END      BSSB
          ENDIF 
  
*         LONG TERM DATA AREA FORMAT AND CONTROL. 
* 
*         ALL CELLS IN THE *LONG TERM DATA AREA* ARE INITIALIZED
*         BY THE DRIVER ERROR PROCESSORS (*7DE*, *7BI*, *7DP*, *7DX*).
* 
*         DENR   *NON-RECOVERABLE ERROR* FLAG.
*                = 1 IF THE ERROR IS NON-RECOVERABLE. 
*                ONCE THIS FLAG IS SET DURING A PARTICULAR RETRY
*                ATTEMPT, IT WILL REMAIN SET THROUGH ALL SUBSEQUENT 
*                RETRIES.  *DENR* IS SET BY *7EI*, *7FI*, AND *7EN*.
* 
*         DERC   RETRY COUNT. 
*                *DERC* IS INCREMENTED BY *7EN*.  IT IS ALSO CHANGED BY 
*                *7CI* WHEN AN UNRECOVERED CHANNEL PARITY ERROR OCCURS
*                WHILE INPUTTING STATUS.  *DERC* IS MODIFIED BY *7FI*,
*                *7GI* AND *7EP* ALSO.
* 
*         DEWR   *DATA WRITTEN/READ* FLAG.
*                = 0 IF THE OPERATION IS A READ AND THE DATA IN THE 
*                BUFFER HAS INCORRECT LINKAGE BYTES.  *DEWR* IS 
*                ALSO 0 WHEN ATTEMPTING TO RECOVER A WRITE ERROR
*                AND DATA MAY HAVE BEEN WRITTEN TO DISK, EITHER 
*                BEFORE THE ERROR WAS DETECTED OR DURING THE RECOVERY 
*                ATTEMPT(S).  SUCH INFORMATION IS USEFUL TO PP-S THAT 
*                NEED TO KNOW IF A DATA SECTOR MAY HAVE BEEN CORRUPTED
*                DUE TO AN ERROR.  ONCE THIS FLAG BECOMES SET, IT WILL
*                REMAIN SET THROUGH ALL SUBSEQUENT RETRIES. 
*                *DEWR* IS SET BY *7DI*, *7EI*, *7FI* AND *7EM*.
  
  
*         SHORT TERM DATA AREA. 
  
 BEGIN    BSSN   EPFW 
 DEAI     BSSN   1           ALGORITHM INDEX
 DEDT     BSSN   1           BML MESSAGE CONTROL WORD 
 DEEC     BSSN   1           ERROR CODE 
 DEGS     BSSN   1           LAST GENERAL STATUS TAKEN
 DELF     BSSN   1           LAST FUNCTION ISSUED BEFORE TIMEOUT
 DERW     BSSN   1           READ/WRITE FLAG
 DEST     BSSN   1           ERROR PROCESSING CONTROL WORD
 DEXA     BSSN   1           ERROR PROCESSOR EXIT ADDRESS 
 MSGH     BSSN   1*5         *EMB* MESSAGE HEADER 
 HEDR     BSSN   2*5         BML MESSAGE HEADER 
 DDMD     BSSN   1*5         DRIVER DEPENDENT MESSAGE DATA
 DSFA     BSSN   4*5         BML MESSAGE TEXT (DETAILED STATUS) 
 DEPL     BSSN   1           PARAMETER LIMIT
 END      BSSN
  
*         SHORT TERM DATA AREA FORMAT AND CONTROL.
* 
*         DEAI   ALGORITHM INDEX. 
*                SET BY *7BI*.
* 
*         DEDT   ERROR PROCESSING CONTROL WORD (*DEST* EXTENSION).
*                BIT(S)      MEANING
*                 13-5       UNUSED.
*                  4         = 1 IF RETURN TO ERROR PROCESSOR 
*                              VIA (*ERXA*).  SET BY *7MP*. 
*                 3-0        DRIVER TYPE. 
*                              VALUE     DRIVER     SET BY
*                                0       *6DI*      *7BI* 
*                                0       *6DJ*      *7BI* 
*                                1       *6DP*      *7DP* 
*                                2       *6DE*      *7DE* 
*                                3       *6DX*      *7DX* 
* 
*         DEEC   ERROR CODE.
*                SET BY *7CI*, *7EI*, *7DP*, *7DE*, *7DX*.
* 
*         DEGS   LAST GENERAL STATUS. 
*                SET BY *7CI*.
* 
*         DELF   LAST FUNCTION ISSUED BEFORE TIMEOUT. 
*                SET BY *7CI*.
* 
*         DERW   READ/WRITE FLAG. 
*                   0   IF READ.
*                   1   IF WRITE. 
*                SET BY *7BI*, *7DE*, *7DP*, *7DX*. 
* 
*         DEST   ERROR PROCESSING CONTROL WORD. 
*                BIT(S)      MEANING
*                 13         = 1 IF MST RECOVERED/UNRECOVERED ERROR 
*                              COUNTER SHOULD BE INCREMENTED FOR THIS 
*                              ERROR TYPE AND A BML MESSAGE SHOULD BE 
*                              ISSUED.  SET BY *7EN*. 
*                 12         = 1 IF UNRECOVERED ERROR.  SET BY *7DE*, 
*                              *7EI*, *7GI*, *7EM*, *7EN*, *7EP*
*                              AND *7MP*. 
*                 11         = 1 IF IMMEDIATE RETURN TO CALLER WAS
*                              SELECTED.  SET BY *7EM* AND *7EP*. 
*                 10         = 1 IF DEVICE CAN HAVE MULTIPLE SECTORS
*                              IN TRANSIT DURING A WRITE OPERATION. 
*                              SET BY *7DE* AND *7EI*.
*                  7         = 1 IF ISD DEVICE.  SET BY *7EI*.
*                  6         = 1 IF RAM PARITY ERROR.  SET BY *7FI*.
*                  5         = 1 IF *7EO* SHOULD CALL *7KI* TO EXECUTE
*                              LEVEL 1 CONTROL MODULE DIAGNOSTICS WHEN
*                              AN ISD DRIVE FAULT IS SUSPECTED.  SET BY 
*                              *7DI*. 
*                  4         = 1 IF *7SI* SHOULD BE CALLED IMMEDIATELY
*                              TO CORRECT THE ERROR AND/OR ISSUE A
*                              CONTINUE FUNCTION.  SET BY *7EI* IF BIT
*                              2**8 OF GENERAL STATUS IS SET UNLESS THE 
*                              CONTROLLER IS A 7X54 AND THE BUFFER IS 
*                              OVERLAYED BY THE ERROR PROCESSOR AND THE 
*                              OPERATION IS A READ. 
*                  3         = 1 IF THE BUFFER READBACK FAILED DURING 
*                              THE RECOVERY OF A PREVIOUS SECTOR WRITE
*                              ERROR. 
*                              SET BY *7EI*.
*                 2-1        CONTROLLER TYPE.  SET BY *7FI*.
*                              VALUE     TYPE 
*                                0       7155 MODEL A.
*                                1       7155 MODEL B OR C. 
*                                2       7255 ADAPTER.
*                                3       CONTROL MODULE.
*                  0         = 1 IF BUFFER TO DISK ERROR.  SET BY 
*                              *7DI*. 
*                *DEST* IS INITIALIZED BY *7BI*, *7DE*, *7DP*, *7DX*. 
* 
*         DEXA   ERROR PROCESSOR EXIT ADDRESS.
*                SET BY *7BI*, *7EI*, *7DE*, *7DP*, *7DX*.
          SPACE  4,15 
**        ERROR PROCESSING OPTIONS. 
* 
*         IT IS POSSIBLE TO SELECT RETURN ON ANY TYPE OF ERROR VIA
*         THE ERROR PROCESSING OPTIONS ON THE *SETMS* MACRO.  THE 
*         FOLLOWING IS A DEFINITION OF THESE OPTIONS.  THE PARTICULAR 
*         ERRORS WHICH ARE RETURNED FOR EACH ERROR OPTION ARE DEFINED 
*         BY THE *DMSE* MACRO.  WHEN AN ERROR IS INITIALLY DETECTED 
*         A CHECK IS MADE TO SEE IF THE ERROR PROCESSING OPTION IS
*         SELECTED WHICH CORRESPONDS TO THAT ERROR TYPE.  IF ERROR
*         PROCESSING IS SELECTED FOR THAT ERROR TYPE CONTROL IS 
*         RETURNED TO THE CALLER WITHOUT RETRYING THE ERROR.
  
 EPNR     EQU    1           RETURN WHEN DEVICE NOT READY 
 EPAD     EQU    2           ALLOW ACCESS OF *DOWN* DEVICE
 EPNS     EQU    4           ALLOW ACCESS OF *OFF* OR *SUSPECT* DEVICE
 EPRR     EQU    10          RETURN ON RESERVE STATUS 
 EPSM     EQU    20          SUPPRESS *1DD* LOAD INTO THIS PP 
 EPER     EQU    40          RETURN ON NORMAL ERRORS
 EPRW     EQU    100         REWRITE DATA OPERATION 
 EPNF     EQU    200         NO ESM/LCM/UEM BUFFER FLUSH ON *WLSF*
 EPDE     EQU    400+EPSM    DISABLE *ENDMS*
 EPND     EQU    1000        NO LEVEL 1 DIAGNOSTICS 
 EPDF     EQU    2000        DISABLE FAILURE EVALUATION 
 EPAR     EQU    EPER+EPNR+EPRR  RETURN ON ALL ERRORS 
          SPACE  4
**        CPU MASS STORAGE ERROR CODES. 
* 
*                THE FOLLOWING MASS STORAGE ERROR CODES CAN BE PASSED 
*         TO A CPU PROGRAM BY *1MS* WHEN THE CALLING PROGRAM SETS THE 
*         ERROR PROCESSING BIT IN THE *FET* AND AN UNRECOVERABLE MASS 
*         STORAGE ERROR OCCURS.  MASS STORAGE ERRORS AT THE DRIVER
*         LEVEL ARE MAPPED INTO ONE OF THESE CPU LEVEL ERROR CODES BY 
*         *1MS* IN ORDER TO INSULATE CPU PROGRAMS FROM CHANGES AT THE 
*         DRIVER LEVEL. 
*                BIT 13 OF THE ERROR STATUS IS SET BY *1MS* TO REFLECT
*         BIT 13 OF THE DRIVER REPLY WORD, *RDCT*.  FOR READ OPERATIONS 
*         THIS BIT IS CLEAR IF DATA IS IN THE BUFFER AND THE SECTOR 
*         LINKAGE BYTES ARE VALID.  FOR WRITE OPERATIONS THIS BIT IS
*         CLEAR IF NO DATA IS WRITTEN TO DISK ON THE CURRENT DRIVER 
*         CALL AND A COUPLER TO DISK ERROR DID NOT OCCUR ON THE 
*         PREVIOUS SECTOR (IF ANY).  IN ALL OTHER CASES THE BIT WILL
*         BE SET. 
  
  
 PTYE     EQU    1           PARITY ERROR 
 ADRE     EQU    2           ADDRESS ERROR
 STSE     EQU    3           DEVICE STATUS ERROR
 COME     EQU    4           COMMUNICATION ERROR
 RSVE     EQU    5           DEVICE RESERVED ERROR
 NORE     EQU    6           DEVICE NOT READY ERROR 
 TLME     EQU    4007        TRACK LIMIT ERROR
 DMSE     SPACE  4
**        DMSE - DEFINE MASS STORAGE ERROR. 
* 
*ERRC     DMSE   NM,RT,TY,ER,MN,IC,IM,RC,SS,DC,CR,SY,TX 
*                ERRC = ERROR CODE NAME.
*         NM = TWO CHARACTER NAME DEFINING ERROR TYPE.
*         RT = RETRY COUNT TO DECLARE ERROR UNRECOVERED.
*         TY = ERROR TYPE TO RETURN TO CPU PROGRAMS.
*         ER = ERROR PROCESSING OPTION WHICH RETURNS FOR
*              THIS ERROR TYPE. 
*         MN = ERROR MNEMONIC WHICH APPEARS ON ERROR MESSAGES.
*         IC = INCREMENT MST ERROR COUNT/ISSUE BML MESSAGE INDICATOR. 
*                N = DO NOT INCREMENT MST ERROR COUNT AND DO NOT ISSUE
*                    BML MESSAGE. 
*                Y = INCREMENT MST ERROR COUNT AND ISSUE BML MESSAGE. 
*                M = INCREMENT MST ERROR COUNT AND ISSUE BML MESSAGE IF 
*                    THE ERROR IS UNRECOVERED.
*         IM = ERROR LOG MESSAGE INDICATOR. 
*                N = DO NOT ISSUE ERROR LOG MESSAGE.
*                L = ISSUE ERROR LOG MESSAGE WITH DETAILED STATUS.
*                S = ISSUE ERROR LOG MESSAGE WITHOUT DETAILED STATUS. 
*         RC = RECOVERABILITY TYPE. 
*                N = NON-RECOVERABLE. 
*                R = RECOVERABLE. 
*                C = RECOVERABLE ON A READ REQUEST. 
*         SS = *S* IF THIS ERROR CAN CAUSE THE SUSPECT FLAG TO BE SET.
*         DC = *D* IF THIS ERROR CAN CAUSE A CHANNEL TO BE DOWNED.
*         CR = *R* IF THIS ERROR CAN CAUSE A CONTROLWARE RELOAD.
*         SY = *SYM* THE HARDWARE SYMPTOM CODE FOR THE ERROR. 
*         TX = *TXT* THE TEXTUAL DESCRIPTION OF THE ERROR.
  
  
          PURGMAC DMSE
          MACRO  DMSE,ERRC,NM,RT,TY,ER,MN,IC,IM,RC,SS,DC,CR,SY,TX 
 DREC     MICRO  1,, "DREC"".1"_NM
 .1       MICRO  1,, ,
 ERRC     BSSN   1
 RTC._NM  EQU    RT 
 CEC._NM  EQU    TY 
 EPO._NM  EQU    EP_ER
 EMN._NM  EQU    2R_MN
 IEC._NM  SET    0
          IFC    EQ,*IC*Y*,1
 IEC._NM  SET    1
          IFC    EQ,*IC*M*,1
 IEC._NM  SET    2
 IEM._NM  SET    0
          IFC    EQ,*IM*L*,1
 IEM._NM  SET    1
          IFC    EQ,*IM*S*,1
 IEM._NM  SET    2
 REC._NM  SET    0
          IFC    EQ,*RC*R*,1
 REC._NM  SET    1
          IFC    EQ,*RC*C*,1
 REC._NM  SET    2
 SUS._NM  SET    0
          IFC    NE,*SS**,1 
 SUS._NM  SET    1
 IDC._NM  SET    0
          IFC    NE,*DC**,1 
 IDC._NM  SET    1
 CWR._NM  SET    0
          IFC    NE,*CR**,1 
 CWR._NM  SET    1
 .2       OCTMIC SY,4 
 .2       MICRO  1,, /COMSDFS/HS".2"
          IF     DEF,".2" 
 SYM._NM  EQU    ".2" 
          ELSE   1
 SYM._NM  SET    0
 TXT._NM  MICRO  1,,*TX*
          ENDM
          SPACE  4
**        DRIVER MASS STORAGE ERROR CODES.
* 
*                TWO TYPES OF DRIVER MASS STORAGE ERRORS ARE DEFINED
*         AS FOLLOWS. 
*         1)     NORMAL ERRORS ARE DEFINED AS THOSE LESS THAN *RESE*, 
*         THE RESERVE ERROR THRESHOLD. NORMAL ERRORS ARE RETRIED UP TO
*         THE DEFINED MAXIMUM FOR THE PARTICULAR ERROR AND ARE THEN 
*         CONSIDERED UNRECOVERED.  AN ERROR MESSAGE IS PLACED IN
*         CONTROL POINT AREA WORD *MS2W* IMMEDIATELY UPON DETECTING 
*         THE ERROR.  IT IS CLEARED AFTER RECOVERING FROM THE ERROR 
*         OR UPON DETERMINING THE ERROR IS UNRECOVERED.  AT THIS
*         TIME A BML MESSAGE IS ALSO ISSUED.  ADDITIONALLY, IF THE
*         ERROR IS FOUND TO BE NON-RECOVERABLE, AN ERROR LOG MESSAGE
*         IS ISSUED AND SYSTEM DAYFILE AND JOB DAYFILE MESSAGES ARE 
*         ALSO ISSUED.
*         FOR ERRORS DEFINED LESS THAN *NRVE* NO ATTEMPT IS MADE TO 
*         REVERSE THE ORDER OF DUAL ACCESS CHANNELS.  SUCH ERRORS,
*         WHEN UNRECOVERED, ALSO CAUSE THE ERROR PROCESSOR TO 
*         ATTEMPT TO RELOAD CONTROLWARE OR DOWN THE CHANNEL ON THE
*         DEVICE. 
*         2)     RESERVE ERRORS ARE THOSE GREATER THAN OR EQUAL TO
*         *RESE*.  RESERVE ERRORS APPEAR IN *MS2W* BUT NO DAYFILE 
*         MESSAGES ARE ISSUED UNTIL THE RETRY COUNT LIMIT HAS BEEN
*         REACHED.  THEN THE ERROR IS PROCESSED AS A NORMAL UNRECOVERED 
*         ERROR.
* 
*         THE MICRO *DREC* DEFINES THE TWO CHARACTER NAME 
*         ASSOCIATED WITH ALL DRIVER ERROR CODES.  THIS MICRO 
*         IS USED TO GENERATE TABLES OF DRIVER ERROR CODE 
*         PARAMETERS.  ALL TAGS DEFINING CHARACTERISTICS OF 
*         THE ERROR CODE ARE OF THE FORMAT *TAG.NM* WHERE *NM*
*         IS THE ERROR CODE NAME CONTAINED IN THE MICRO *DREC*. 
*         THIS ALLOWS AUTOMATIC EASY MAINTENANCE OF ERROR CODES 
*         BY ONLY MODIFYING *COMSMSP*.
*         THE FOLLOWING IS A LIST OF TAGS GENERATED AND THEIR MEANING.
*         RTC.NM = RETRY COUNT FOR ERROR TYPE *NM*. 
*         CEC.NM = CPU PROGRAM ERROR CODE.  THIS IS THE CODE RETURNED 
*                  TO CPU PROGRAMS WHEN AN UNRECOVERED ERROR OCCURS.
*         EPO.NM = ERROR PROCESSING OPTION WHICH WHEN SELECTED WILL 
*                  RETURN CONTROL TO THE CALLING PP PROGRAM.  NOTE
*                  THAT NO ERROR MESSAGE IS ISSUED TO THE ERROR LOG 
*                  WHEN RETURN TO CALLER IS EXECUTED.  THE ERROR
*                  PROCESSING OPTIONS ARE THOSE SELECTED ON THE 
*                  *SETMS* MACRO AND DEFINED BY TAGS OF THE FORM
*                  *ERP.XX*.
*         EMN.NM = ERROR MNEMONIC EXPRESSED AS A 12 BIT DISPLAY 
*                  CODE CONSTANT. 
*         IEC.NM = INCREMENT MST ERROR COUNT/ISSUE BML MESSAGE
*                  INDICATOR. 
*                  0    DO NOT INCREMENT MST ERROR COUNT AND DO NOT 
*                       ISSUE BML MESSAGE.
*                  1    INCREMENT MST ERROR COUNT AND ISSUE BML 
*                       MESSAGE.
*                  2    INCREMENT MST ERROR COUNT AND ISSUE BML MESSAGE 
*                       IF THE ERROR IS UNRECOVERED.
*         IEM.NM = ERROR LOG MESSAGE INDICATOR. 
*                  0    DO NOT ISSUE ERROR LOG MESSAGE. 
*                  1    ISSUE ERROR LOG MESSAGE WITH DETAILED STATUS. 
*                  2    ISSUE ERROR LOG MESSAGE WITHOUT DETAILED
*                       STATUS. 
*         REC.NM = RECOVERABILITY INDICATOR.
*                  0    NON-RECOVERABLE.
*                  1    RECOVERABLE.
*                  2    RECOVERABLE IF READ REQUEST.
*         SUS.NM = 1 IF AN EQUIPMENT MAY BE SET SUSPECT FOR THIS ERROR
*                  TYPE.
*         IDC.NM = 1 IF A CHANNEL MAY BE DOWNED AS A RESULT OF THIS 
*                  ERROR TYPE.
*         CWR.NM = 1 IF CONTROLWARE MAY BE RELOADED AS A RESULT OF THIS 
*                  ERROR TYPE.
*         SYM.NM = THE SYMPTOM CODE VALUE FROM *COMSDFS*. 
*         TXT.NM = TEXTUAL DESCRIPTION OF ERROR TYPE. 
  
  
 BEGIN    BSSN   1           INITIALIZE ERROR TYPE
  
 DREC     MICRO  1,,
 .1       MICRO  1,,
  
 CHPE     DMSE   CP,CHRT,COME,ER,CP,Y,S,C,S,D,,24,(CHANNEL PARITY)
 CSTE     DMSE   CS,CSRT,COME,ER,CS,Y,S,C,S,D,,51,(CONTROLLER STOP) 
 RAME     DMSE   RA,RART,COME,ER,RA,Y,S,C,S,D,R,63,(CONTROLLER MEMORY)
 FTOE     DMSE   FT,FTRT,COME,ER,FT,Y,S,C,S,D,R,50,(FUNCTION TIMEOUT) 
 CHFE     DMSE   CF,12,COME,ER,CF,Y,S,C,S,D,R,23,(CHANNEL FAILURE)
 IDTE     DMSE   ID,12,COME,ER,ID,Y,S,C,S,D,R,5,(DATA TRANSFER) 
 DDFE     DMSE   DF,0,STSE,ER,DF,,,N,,,,64,(DIAGNOSTIC FAILURE) 
 NRVE     BSSN   0
 PARE     DMSE   ME,12,PTYE,ER,ME,Y,L,N,S,,,40,(MEDIA)
 ADDE     DMSE   AD,0,ADRE,ER,AD,Y,S,N,S,,,100,(ADDRESS)
 DSTE     DMSE   ST,12,STSE,ER,ST,Y,L,R,S,,,102,(DEVICE STATUS) 
 SKTE     DMSE   SK,FTRT,STSE,ER,SK,Y,S,N,S,,,106,(SEEK TIMEOUT)
 IWTE     DMSE   IW,FTRT,COME,ER,IW,Y,S,N,S,,,107,(ISD WRITE TIMEOUT) 
 LNRE     DMSE   LN,0,NORE,NR,LN,N,N,R,,,,,(LOGICAL NOT READY)
 NRDE     DMSE   NR,12,NORE,NR,NR,M,L,R,S,,,43,(HARDWARE NOT READY) 
 RESE     BSSN   0
 DRVE     DMSE   RS,76,RSVE,RR,RS,M,S,R,,,,56,(DRIVE RESERVE) 
 CRSE     DMSE   CR,76,RSVE,RR,CR,M,S,R,,,,103,(CONTROLLER RESERVE) 
 IRTE     BSSN   0
 RDFE     DMSE   RD,77,0,NR,RD,N,N,R,,,,,(REDEFINE) 
 STAE     DMSE   SA,77,0,ER,SA,Y,N,R,,,,102,(STATISTICAL DATA)
 MXDE     BSSN   0           MAXIMUM ERROR TYPE 
  
          ERRPL  MXDE-1-100B  ERROR CODE EXCEEDS FIELD SIZE 
 END      BSSN
          PURGMAC  DMSE 
 ENTRY    SPACE  4,10 
**        ENTRY - DEFINE OVERLAY ENTRY POINT. 
* 
*         ENTRY IS USED TO DEFINE THE OVERLAY ENTRY POINT FOR MASS
*         STORAGE OVERLAYS. 
* 
* TAG     ENTRY 
* 
*         ENTRY  TAG = OVERLAY ENTRY POINT ADDRESS. 
  
  
          PURGMAC  ENTRY
          MACRO  ENTRY,TAG
          MACREF ENTRY
 TAG      BSS    0           OVERLAY ENTRY POINT
          RJM    BEP
          ENDM
 MSERR    SPACE  4
**        MSERR - LOAD MASS STORAGE ERROR PROCESSOR.
* 
*         MSERR  NAM,C
* 
*         ENTRY  NAM = OVERLAY NAME.
*                C = (*) IF NO JUMP TO *LEP1* IS DESIRED. 
*                C = (=) IF NO CODE SHOULD BE GENERATED.
  
  
          PURGMAC  MSERR
 MSERR    MACRO  NAM,C
          MACREF MSERR
          QUAL
 (NAM)    SET    0
          QUAL   *
          IFC    NE,$C$=$ 
 .1       SET    3R7DQ&3R_NAM 
          IFLT   .1,100B,1
          LDN    .1 
          IFEQ   .1,100B,1
          LDD    HN 
          IFGT   .1,100B,1
          LDC    .1 
          IFC    NE,.C.*.,1 
          LJM    LEP1 
          ENDIF 
 MSERR    ENDM
 MSOVL    SPACE  4,15 
**        MSOVL - GENERATE NEW MASS STORAGE OVERLAY.
* 
* NAME    MSOVL  ORIGIN,LIMIT,MINM,(TEXT) 
* 
*         ENTRY  NAME   = OVERLAY NAME. 
*                ORIGIN = OVERLAY LOAD ADDRESS. 
*                LIMIT  = ADDRESS OF LAST CELL IN THIS OVERLAY. 
*                MINM   = ADDRESS OF THE LAST CELL WHICH MUST NOT BE
*                         DESTROYED WHEN THIS OVERLAY IS LOADED.
*                TEXT   = TEXT FOR SUBTITLE AND COMMENT DIRECTIVES. 
* 
*         NOTE   WHEN THIS MACRO IS USED, AN (ERRNZ  LN-*) INSTRUCTION
*                MUST BE ADDED TO THE END OF THE OVERLAY IN ORDER TO
*                VERIFY THAT THE OVERLAY ENDS AT THE RIGHT LOCATION.
* 
*         NOTE   IF *MSOVL* IS USED TO CREATE A NEW MASS STORAGE ERROR
*                PROCESSOR, AN ENTRY MUST BE ADDED TO THE APPROPRIATE 
*                TABLE IN *SLL* TO ENSURE THAT THE NEW OVERLAY RESIDES
*                IN CENTRAL MEMORY UNDER THE CORRECT CIRCUMSTANCES. 
  
  
          PURGMAC  MSOVL
          MACRO  MSOVL,NAM,ORIGIN,LIMIT,MINM,(TEXT) 
          MACREF MSOVL
          TITLE  "DEC"/NAM - TEXT 
          QUAL   NAM
          IDENT  NAM,ORIGIN  TEXT 
*COMMENT  "DEC" - TEXT
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          ORG    ORIGIN 
 LN       EQU    10001+LIMIT
 LEN      SET    LN-* 
          ERRNZ  LEN-LEN/5*5 *NAM* LENGTH MUST BE DIVISIBLE BY FIVE 
 OFFW     EQU    MINM+1 
          ERRNG  OFFW-EPFW   *NAM* CANNOT BE LOADED BELOW EPFW
          LIST   M
          ERRNG  *-OFFW      *NAM* WILL LOAD ON TOP OF PARAMETERS 
          LIST   *
          ENDM
          SPACE  4
**        NUMBER OF DIRECT ACCESS FILES TO PROCESS BEFORE PAUSING FOR 
*         STORAGE RELOCATION WHEN RECOVERING A PF DEVICE. 
  
  
 NFTP     EQU    20D         NUMBER OF FILES TO PROCESS BEFORE *PAUSE*
  
          BASE   *
          ENDX
