1MC 
          IDENT  1MC,MTC
          PERIPH
          BASE   MIXED
          SST 
*COMMENT  1MC - MONITOR PARITY ERROR REPORTING. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  1MC - MONITOR PARITY ERROR REPORTING.
          SPACE  4
***       1MC - MONITOR PARITY ERROR REPORTING. 
*         W. E. GOEBEL       75/08/25.
          SPACE  4
***              *1MC* IS CALLED BY *CPUMTR* TO REPORT ECS PARITY 
*         ERRORS.  *1MC* IS FORCED CM RESIDENT BY *SLL* WHEN ECS
*         IS PRESENT.  THIS IS NEEDED BECAUSE *1MC* CAN BE CALLED 
*         DIRECTLY BY *CPUMTR* MONITOR MODE.  IN THIS CASE *CPUMTR* 
*         IS WAITING FOR *1MC* TO INDICATE IT IS READY TO RECIEVE 
*         DATA.  BECAUSE OF THIS *1MC* MUST NOT DEPEND UPON ISSUING 
*         ANY MONITOR FUNCTION TO LOAD.  THUS THE CM RESIDENCE
*         REQUIREMENT.
*                *1MC* PERFORMS THE BUFFERING IN OF ERROR DATA AND
*         THEN CALLS *2MN* TO FORMAT AND ISSUE THE ACTUAL ERROR 
*         MESSAGES.  THIS IS TO KEEP THE CM REQUIREMENT OF *1MC* AT 
*         A MINIMUM.  IT SHOULD BE NOTED THAT *2MN* SHOULD NEVER
*         BE ECS RESIDENT.
          SPACE  4
***       CALL. 
* 
* 
*T IR     18/ *1MC*,6/ SCP,12/  EST,6/ RW,18/ WC
*         SCP    SYSTEM CONTROL POINT NUMBER. 
*         EST    EXTENDED MEMORY EST ORDINAL. 
*         RW     READ / WRITE FLAG. 
*                1 = READ 
*                2 = WRITE
*         WC     WORD COUNT OF BLOCK TRANSFER.
* 
*T,MB     36/, 24/ CB 
*         CB     COMMUNICATIONS BUFFER ADDRESS. 
* 
*         ECS ERROR INFORMATION IS BUFFERED FROM *CPUMTR* VIA A 
*         COMMUNICATIONS BUFFER.  IT IS *1MC*-S RESPONSIBILITY TO 
*         CLEAR THE BUFFER INTERLOCK AFTER IT READS THE DATA. 
*         THIS BUFFER HAS THE FOLLOWING FORMAT -
* 
*T,CB     1/ C, 47/ ,12/ IL 
*T,CB+1   6/, 6/ CD, 6/ RT, 18/ CMA, 24/ ECA
*T,CB+2   60/ BAD DATA
*T,CB+3   60/ GOOD DATA 
*  .
*  .
*  .
*T,CB+N   60/0
* 
*         C      COMPLETE FLAG (SIGNALS *1MC* TO READ DATA).
*         IL     BUFFER INTERLOCK (NON-ZERO WHEN SET).
*         CD     3/, 1/ RU, 1/ BD, 1/ GD
*           RU = RECOVERED / UNRECOVERED FLAG.
*                0 = RECOVERED
*                1 = UNRECOVERED
*           BD = 1 IF BAD DATA PRESENT. 
*           GD = 1 IF GOOD DATA PRESENT.
*         RT     RETRY COUNT. 
*         CMA    CM ADDRESS OF TRANSFER.
*         ECA    ECS ADDRESS OF TRANSFER. 
* 
*         THE ERROR DATA IS TERMINATED BY A ZERO WORD.
          SPACE  4
***       OPERATOR MESSAGES.
* 
* 
*         * USER ECS DISABLED.* DUE TO UNRECOVERED ECS PARITY 
*                ERRORS SCHEDULING OF USER ECS JOBS HAS 
*                BEEN DISABLED. 
          SPACE  4
*CALL     COMPMAC 
*CALL     COMSCPS 
*CALL     COMSDFS 
*CALL     COMSEVT 
*CALL     COMSMSC 
*CALL     COMSMSP 
*CALL     COMSPIM 
          SPACE  4
**        DIRECT LOCATION ASSIGNMENTS.
  
  
 ZR       EQU    20 - 24     ZERO WORD
 BP       EQU    25          BUFFER POINTER 
 CN       EQU    30          RECOVERED/UNRECOVERED FLAG 
          TITLE  MACRO DEFINITIONS. 
          SPACE  4,10 
**        OVERLAY CONTROL.
  
 .N       SET    0
 OVLB     MICRO  1,, 2M      BASE OVERLAY NAME
 OVERLAY  SPACE  4,10 
**        OVERLAY - GENERATE OVERLAY CONSTANTS. 
* 
* 
*         OVERLAY  (TEXT),LADDR 
* 
*         ENTRY  *TEXT* = TEXT OF SUBTITLES.
*                *LADDR* = LOAD ADDRESS FOR OVERLAY, DEFAULT OVL. 
  
  
          PURGMAC  OVERLAY
  
 OVERLAY  MACRO  TEXT,OVL 
          MACREF OVERLAY
          QUAL
 .N       SET    .N+1 
 .M       MICRO  .N,1, NOPQRSTUVWXYZ
 .O       MICRO  1,3, "OVLB"".M"
          QUAL   ".O" 
          TTL    1MC/".O" - TEXT
          TITLE 
          IDENT  ".O",OVL    TEXT 
*COMMENT  1MC - TEXT
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          ORG    OVL
          ENDM
          SPACE  4
          TITLE  MTC - BUFFER IN ERROR DATA.
 MTC      SPACE  4
**        MTC - MAIN PROGRAM. 
  
  
          ORG    PPFW 
  
 MTC      LDD    MP+3        ASSEMBLE BUFFER ADDRESS
          RAM    MTCA-1 
          STM    MTCB-1 
          LDD    MP+4 
          STM    MTCA 
          STM    MTCB 
          LDN    ZERL        SET ZERO WORD
          CRD    ZR 
          LDN    MCBL        BUFFER LENGTH
          STD    T1 
 MTC1     LDC    **          READ BUFFER
 MTCA     EQU    *-1         COMMUNICATIONS BUFFER ADDRESS
          CRM    BUF,T1 
          LDM    BUF
          SHN    21-13
          PJN    MTC1        IF BUFFER NOT COMPLETE 
          LDC    **          CLEAR BUFFER INTERLOCK 
 MTCB     EQU    *-1         COMMUNICATIONS BUFFER ADDRESS
          CWD    ZR 
          EXECUTE  2MN
          SPACE  4
 OVL      EQU    PPFW 
 BUF      EQU    PPFW-5+500*2  ALLOW TWO SECTORS FOR *2MN*
 BUFL     EQU    MCBL*5      BUFFER LENGTH
 MXBL     EQU    EPFW-5*3+1  MAXIMUM BUFFER LENGTH
          ERRNG  MXBL-BUF-BUFL   CHECK BUFFER OVERFLOW
          TTL    1MC/2MC - PROCESS ERROR DATA.
          TITLE  MAIN ROUTINE.
          OVERLAY (PROCESS ERROR DATA.),OVL 
          SPACE  4
***       2MN - REPORT PARITY ERRORS. 
  
  
  
 PEM      LJM    *           ENTRY
  
*         SET UP THOSE FIELDS IN THE BML MESSAGE WHICH ARE CONSTANT 
*         FOR ALL ERRORS. 
  
          LDN    PARE        SET ERROR CODE 
          STM    MSGA+12
          LDC    /COMSDFS/HS0040+/COMSDFS/D1MC*400
          STM    MSGA+1 
          LDK    MMFL        ADD MACHINE ID TO MESSAGE
          CRD    CM 
          LDD    CM 
          STM    MSGA+10
          LDD    IR+2        ADD EST ORDINAL TO MESSAGE 
          STM    MSGA+5 
  
*         DETERMINE THE MESSAGE ID WHICH CORRESPONDS WITH THIS DEVICE 
*         AND ADD IT TO THE BML MESSAGE HEADER. 
  
          SFA    EST         GET EST ENTRY FOR DEVICE 
          ADK    EQDE 
          CRD    CM 
          LDD    CM+4        GET WORD *DILL* FROM THE MST 
          SHN    3
          ADK    DILL 
          CRD    CM 
          LDN    PEMBL
          STD    T1 
 PEM1     LCN    2           SCAN TABLE FOR A MATCH 
          RAD    T1 
          ZJN    PEM2        IF DEVICE NOT FOUND IN TABLE 
          LDM    PEMB-2,T1
          LMD    CM+3 
          LPC    707
          NJN    PEM1        IF A MATCH HAS NOT YET BEEN FOUND
          LDM    PEMB-1,T1
 PEM2     STM    MSGA+0      ADD MESSAGE ID TO MESSAGE
  
*         FOR EACH ERROR IN THE BUFFER, ISSUE A BML ERROR MESSAGE.
  
          LDC    BUF+5
          STD    BP          SET BUFFER POINTER 
          LDN    ZERL        SET END OF DATA
          CRM    BUF+MCBL*5,ON
 PEM3     LDM    1,BP        CHECK FOR END OF BUFFER
          ZJN    PEM4        IF NO MORE MESSAGES IN BUFFER
          RJM    IBM         ISSUE BML MESSAGE
          LDN    3*5         ADVANCE POINTER TO NEXT ERROR IN BUFFER
          RAD    BP 
          UJN    PEM3        CHECK FOR ANOTHER MESSAGE
  
 PEM4     MONITOR  DPPM 
          LJM    PPR         RETURN TO PP RESIDENT
  
  
 MSGA     BSSZ   6*5         BML MESSAGE BUFFER 
          SPACE  4,10 
 PEMB     BSS    0           TABLE OF MESSAGE IDENTIFERS
  
          CON    112,/COMSDFS/RM0070    (DP)  ECS I  - DC135 DDP
          CON    110,/COMSDFS/RM0071    (DE)  ECS I  - COUPLER
          CON    212,/COMSDFS/RM0072    (DP)  ECS II - DC135 DDP
          CON    210,/COMSDFS/RM0073    (DE)  ECS II - COUPLER
          CON    111,/COMSDFS/RM0074    (DP)  ECS I  - DC145 DDP
          CON    211,/COMSDFS/RM0075    (DP)  ECS II - DC145 DDP
          CON    320,/COMSDFS/RM0076    (DE)  LCME   - COUPLER
          CON    510,/COMSDFS/RM0207    (DE)  ESM    - COUPLER
          CON    511,/COMSDFS/RM0210    (DP)  ESM    - LOW SPEED PORT 
  
 PEMBL    EQU    *-PEMB+2    MESSAGE ID TABLE LENGTH
          TITLE  SUBROUTINES. 
 DUE      SPACE  4,15 
**        DUE - DISABLE USER ECS. 
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 DUE      SUBR               ENTRY/EXIT 
          LDN    ECRL 
          CRD    CM 
          LDD    CM+1 
          SBD    CM+4 
          ZJN    DUEX        IF USER ECS NOT DEFINED
          LDK    UEML 
          CRD    CM 
          LDD    CM+2 
          LMD    IR+2 
          LPC    777
          NJN    DUEX        IF NOT USER ECS EQUIPMENT
          LDN    SSTL 
          CRD    CM 
          LDD    CM 
          SHN    21-5 
          MJN    DUEX        IF ECS ALREADY DISABLED
          LDN    40 
          RAD    CM 
          LDN    SSTL 
          CWD    CM 
          LDN    NCPL        WRITE MESSAGE AT SYSTEM CP 
          CRD    CM 
          AOD    CM+1 
          SHN    7
          ADN    MS2W 
          CWM    DUEA,TR
          LDN    ZERL        ISSUE USER *ECS* DISABLED EVENT
          CRD    CM 
          LDN    UEDE 
          STD    CM+4 
          MONITOR  EATM 
          LJM    DUEX        RETURN 
  
  
 DUEA     DATA   C*  USER ECS DISABLED.  *
 IBM      SPACE  4,10 
**        IBM - ISSUE BML MESSAGE.
* 
*         USES   CM - CM+4, IR+3 - IR+4, BP, CN.
* 
*         CALLS  DFM, DUE.
* 
*         MACROS MONITOR. 
  
  
 IBM      SUBR               ENTRY/EXIT 
          LDD    IR+3        ADD READ/WRITE FLAG TO MESSAGE 
          SHN    -6 
          LPN    2
          STM    MSGA+6 
          LDM    1,BP        ADD RETRY COUNT TO MESSAGE 
          SCN    77 
          RAM    MSGA+6 
          LDM    3,BP        ADD ECS ADDRESS TO MESSAGE 
          STM    MSGA+22
          LDM    4,BP 
          STM    MSGA+23
          LDM    1,BP        ADD CM ADDRESS TO MESSAGE
          LPN    77 
          STM    MSGA+15
          LDM    2,BP 
          STM    MSGA+16
  
*         SET RECOVERED/UNRECOVERED STATUS. 
  
          LDI    BP 
          LPN    4
          ZJN    IBM1        IF ERROR WAS RECOVERED 
          RJM    DUE         DISABLE USER ECS 
          LDN    1           SET ERROR UNRECOVERED
 IBM1     RAM    MSGA+6 
  
*         ADD WORD COUNT TO MESSAGE.  IF GOOD OR BAD DATA WAS PASSED
*         ALONG WITH THE OTHER ERROR DATA, THE WORD COUNT USED IS ONE,
*         BECAUSE THE ERROR REFERS TO AN ACTUAL ADDRESS.  IF NO 
*         GOOD/BAD DATA WAS PASSED, THE GIVEN WORD COUNT IS USED, 
*         INDICATING THAT THE ERROR OCCURRED SOMEWHERE WITHIN THAT
*         WORD COUNT RANGE.  THIS OCCURS WHEN *CPUMTR* RECOVERS AN
*         ERROR BUT IS UNABLE TO DETERMINE THE EXACT ADDRESS WHICH
*         CAUSED THE HALF EXIT. 
  
          LDI    BP 
          LPN    3
          NJN    IBM2        IF GOOD OR BAD DATA WAS PASSED 
          LDD    IR+3 
          LPN    77 
          SHN    14 
          LMD    IR+4 
          UJN    IBM3        ADD WORD COUNT 
  
 IBM2     LDN    1
 IBM3     STM    MSGA+21
          SHN    -14
          STM    MSGA+20
  
*         ADD GOOD AND BAD DATA TO MESSAGE. 
  
          LDC    MSGA+24
          STM    IBMC 
          LDD    BP 
          ADN    5
          STM    IBMA 
          ADN    5
          STM    IBMB 
          LDI    BP          CHECK FOR BAD DATA 
          LPN    2
          SHN    -1 
          STM    MSGA+17
          ZJN    IBM4        IF NO BAD DATA 
          LDD    MA 
          CWM    **,ON
 IBMA     EQU    *-1
          SBN    1
          CRM    MSGA+24,ON 
 IBM4     LDI    BP          CHECK FOR GOOD DATA
          LPN    1
          ZJN    IBM6        IF NO GOOD DATA
          LMI    BP 
          LPN    3
          ZJN    IBM5        IF ONLY GOOD DATA
          LDN    5
          RAM    IBMC 
          LDN    2
 IBM5     LMN    1
          STM    MSGA+17
          LDD    MA 
          CWM    IBMB,ON
 IBMB     EQU    *-1
          SBN    1
          CRM    MSGA+24,ON 
*         CRM    MSGA+31,ON 
 IBMC     EQU    *-1
 IBM6     LDN    6*5         SET BML MESSAGE LENGTH 
          STD    CM+1 
          LDC    MSGA+BMLN   ISSUE BML MESSAGE
          RJM    DFM
  
*         IF THE ERROR IS UNRECOVERED, ISSUE A MESSAGE TO THE ERRLOG
*         AND TO THE SYSTEM AND JOB DAYFILES INDICATING THE TYPE OF 
*         ERROR AND THE DEVICE ON WHICH THE ERROR OCCURRED. 
  
          LDM    MSGA+6 
          LPN    1
          STD    CN 
          ZJN    IBM7        IF RECOVERED ERROR 
          LDD    IR+2 
          SHN    -3 
          RJM    C2D
          STM    IBMG+1 
          LDD    IR+2        SET EST ORDINAL IN DAYFILE MESSAGE 
          LPN    7
          SHN    6
          ADC    2R0
          STM    IBMG+2 
          LDC    IBMG        ISSUE SYSTEM AND DAYFILE MESSAGES
          RJM    DFM
          LDC    IBMG+ERLN   ISSUE ERRLOG MESSAGE 
          RJM    DFM
  
*         INCREMENT THE RECOVERED OR UNRECOVERED ERROR COUNTER IN THE 
*         MST FOR THE CURRENT DEVICE. 
  
 IBM7     LDD    CN          SET BYTE NUMBER
          ADN    3
          STD    CM+2 
          LDD    IR+2        SET EST ORDINAL
          STD    CM+1 
          LDK    ICTS        SET SUBFUNCTION
          STD    CM+3 
          MONITOR  SMDM      INCREMENT ERROR COUNTER
          LJM    IBMX        RETURN 
  
  
 IBMG     DATA   C*EQ000 PE MASS STORAGE ERROR.*
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMPC2D 
  
          ERRPL  *-BUF  OVERLAY OVERFLOWS BUFFER
  
          END 
