IDENT ELM,ELM PERIPH BASE MIXED SST *COMMENT ELM - ERROR LOG MESSAGE PROCESSOR. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. TITLE ELM - ERROR LOG MESSAGE PROCESSOR. SPACE 4 *** ELM - ERROR LOG MESSAGE PROCESSOR. * S. L. BETH. 77/03/24. SPACE 4 *** ELM IS CALLED BY USER PROGRAMS TO LOG MESSAGES * IN THE BINARY MAINTENANCE LOG. SPACE 4 *** CALL. * * *T RA+1 18/ *ELM*,6/ R,18/ 0,18/ ADDR * * ECS ERROR INFORMATION HAS THE FOLLOWING FORMAT. * *T ADDR VFD 24/ 0,12/ L, 12/ DC,11/ STATUS,1/ C *T VFD 36/ 0,6/ RW,6/ 0,12/ WC *T VFD 6/, 6/ CD, 6/ RT, 18/ CMA, 24/ EMA *T VFD 60/ BAD DATA *T VFD 60/ GOOD DATA * * L LENGTH OF ERROR BLOCK. * * DC DEVICE CODE *EC* = ECS. * * STATUS * 1 = DAYFILE MESSAGE LIMIT. * * C COMPLETION BIT. * * RW READ / WRITE FLAG. * 1 = READ. * 2 = WRITE. * * WC WORD COUNT OF BLOCK TRANSFER. * * CD RECOVERY CONDITIONS. * 0 = BLOCK REREAD RECOVERED. * 1 = DATA NOT RECOVERED. * * RT RETRY COUNT. * * CMA CM ADDRESS OF TRANSFER. * * EMA EXTENDED MEMORY ADDRESS OF TRANSFER. SPACE 4 *** OPERATOR MESSAGES. * * * * ELM - ARGUMENT ERROR.* PROCESSOR WAS CALLED WITH AN * ILLEGAL DEVICE CODE OR ERROR BLOCK ADDRESS. * * * ELM - EXTENDED MEMORY NOT ASSIGNED.* A CALL WAS MADE TO * REPORT AN EXTENDED MEMORY ERROR AND THE CONTROL POINT * DID NOT HAVE EXTENDED MEMORY ASSIGNED. * * * ELM - DAYFILE MESSAGE LIMIT.* A CALL WAS MADE TO REPORT * AN ERROR AND THE USERS DAYFILE MESSAGE LIMIT HAD BEEN * REACHED. SPACE 4 *CALL COMPMAC *CALL COMSCPS *CALL COMSDFS *CALL COMSMSP *CALL COMSPIM SPACE 4,10 ** EQUATES FOR ERROR BUFFER. BLKL EQU 2 BLOCK LENGTH DVCD EQU 3 DEVICE CODE COMP EQU 4 COMPLETION BIT RWFG EQU 1*5+3 READ/WRITE FLAG WDCT EQU 1*5+3 WORD COUNT COND EQU 2*5 RECOVERY CONDITIONS RTCT EQU 2*5+1 RETRY COUNT CMAD EQU 2*5+1 RELATIVE CM ADDRESS EMAD EQU 2*5+3 RELATIVE EM ADDRESS BDDA EQU 3*5 BAD DATA GDDA EQU 4*5 GOOD DATA BUFL EQU 5*5 BUFFER LENGTH SPACE 4 * EQUATES FOR STATUS REPLIES. LDFM EQU 1 DAYFILE LIMIT REACHED SPACE 4 ** DIRECT LOCATION ASSIGNMENTS. CN EQU 27 RECOVERED/UNRECOVERED FLAG CW EQU 30 - 34 CONTROL WORDS ST EQU 36 STATUS TO RETURN ELM TITLE MAIN PROGRAM. ** ELM - MAIN PROGRAM. ORG PPFW ELM RJM PRS GET ERROR PROCESSOR ADDRESS ZJN ELM1 IF DAYFILE MESSAGE LIMIT STM ELMA RJM * CALL ERROR PROCESSOR ELMA EQU *-1 LDN 1 DECREMENT DAYFILE MESSAGE LIMIT STD CM+1 STD CM+2 LDD MA CWM ELMB,ON MONITOR UADM UPDATE DAYFILE LIMIT ELM1 LDD ST SET STATUS AND COMPLETION BIT SHN 1 ADN 1 RAM BUF+COMP LDD IR+3 LPN 77 SHN 6 ADD RA SHN 6 ADD IR+4 CWM BUF,ON MONITOR DPPM DROP PPU LJM PPR RETURN TO PP RESIDENT * BUFFER FOR *UADM* FUNCTION. ELMB CON CDCS DECREMENT FIELD CON ACLW CON 36D*100+12D CON 0 CON 0 ABT SPACE 4,10 ** ABT - ABORT PROGRAM. * * ENTRY (A) = ERROR MESSAGE ADDRESS. ABT RJM DFM MONITOR ABTM LJM PPR RETURN TO PP RESIDENT TITLE ECS - ERROR PROCESSOR. ** ECS - PROCESS ECS ERROR MESSAGES. * * ENTRY (BUF) = ECS ERROR BUFFER. * * EXIT TO *ABT* IF ECS NOT ASSIGNED. ECS SUBR ENTRY/EXIT LDD CP READ ECS CONTROL WORD ADN ECSW CRD CW LDD CW+4 CHECK FOR ECS ASSIGNED NJN ECS1 IF USER ECS ASSIGNED LDC =C* ELM - EXTENDED MEMORY NOT ASSIGNED.* LJM ABT ABORT JOB ECS1 LDM BUF+RWFG SET READ/WRITE FLAG IN MESSAGE SHN -6 LPN 2 STM MSGA+6 LDN PARE SET ERROR CODE STM MSGA+12 LDC /COMSDFS/HS0040+/COMSDFS/DELM*400 STM MSGA+1 LDM BUF+RTCT ADD RETRY COUNT TO MESSAGE SCN 77 RAM MSGA+6 LDM BUF+COND SET RECOVERED/UNRECOVERED STATUS LPN 1 RAM MSGA+6 LDK MMFL ADD MACHINE ID TO MESSAGE CRD CM LDD CM STM MSGA+10 * THE WORD COUNT SUPPLIED IN THE PARAMETER BLOCK IS THE WORD * COUNT OF THE ENTIRE BLOCK SPECIFIED BY THE USER. THE * EXTENDED MEMORY ADDRESS, HOWEVER, APPLIES TO A PARTICULAR * ADDRESS IN ERROR. THE WORD COUNT REPORTED IN THE BML * MESSAGE IS THEREFORE ALWAYS ONE, TO INDICATE THE EXTENDED * MEMORY ADDRESS IS AN ACTUAL ERROR ADDRESS INSTEAD OF THE * ADDRESS OF A BLOCK CONTAINING AN ERROR. LDN 1 ADD WORD COUNT TO MESSAGE STM MSGA+21 * DETERMINE THE MESSAGE ID WHICH CORRESPONDS TO THIS DEVICE * AND ADD IT TO THE BML MESSAGE HEADER. LDK UEML ADD EST ORDINAL TO MESSAGE CRD CM LDD CM+2 LPC 777 STD T5 STM MSGA+5 ZJN ECS3 IF NO EQUIPMENT 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 ECSBL STD T1 ECS2 LCN 2 SCAN TABLE FOR A MATCH RAD T1 ZJN ECS3 IF DEVICE NOT FOUND IN TABLE LDM ECSB-2,T1 LMD CM+3 LPC 707 NJN ECS2 IF A MATCH HAS NOT YET BEEN FOUND LDM ECSB-1,T1 ECS3 STM MSGA+0 ADD MESSAGE ID TO MESSAGE * CONVERT EM ADDRESS AND ADD IT TO THE BML MESSAGE. LDD CW+2 ADJUST FOR RAE SHN 14 ADD CW+3 ECSA SHN 0 * SHN 17+UESC STD T0 SHN -6 SCN 77 RAM BUF+EMAD+1 STM MSGA+23 SHN -14 ADD T0 RAM BUF+EMAD STM MSGA+22 * CONVERT CM ADDRESS AND ADD IT TO THE BML MESSAGE. LDD RA SHN 6 RAM BUF+CMAD+1 STM MSGA+16 SHN -14 RAM BUF+CMAD LPN 77 STM MSGA+15 * ADD BAD DATA AND GOOD DATA TO MESSAGE. BAD DATA, (DATA * RECEIVED OR SENT ON THE FIRST TRY) IS ALWAYS PROVIDED IN THE * PARAMETER BLOCK. GOOD DATA (DATA RECEIVED ON THE SECOND * ATTEMPT) IS ONLY PROVIDED IN THE CASE OF A RECOVERED READ * EXTENDED MEMORY ERROR IN WHICH THE DATA FROM THE SECOND * READ ATTEMPT IS DIFFERENT FROM THE DATA RECEIVED THE FIRST * TIME. LDN 2 STD T1 LDD MA CWM BUF+BDDA,ON CWM BUF+GDDA,ON SBN 2 CRM MSGA+24,T1 LDM BUF+COND CHECK FOR GOOD DATA LPN 1 NJN ECS4 IF NO GOOD DATA LDM BUF+RWFG SHN -7 LPN 1 NJN ECS4 IF A WRITE PARITY ERROR LDN 3 ECS4 STM MSGA+17 LDN 6*5 SET BML MESSAGE LENGTH STD CM+1 LDC MSGA+BMLN ISSUE BML MESSAGE RJM DFM AOM ELMB+4 BUMP MESSAGE INCREMENT * IF THE ERROR WAS UNRECOVERED, ISSUE AN ERROR 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 BUF+COND LPN 1 STD CN ZJN ECS5 IF THE ERROR WAS RECOVERED LDD T5 SET EQUIPMENT ORDINAL IN MESSAGE LPN 7 SHN 6 RAM ECSG+2 LDD T5 SHN -3 RJM C2D STM ECSG+1 LDC ECSG ISSUE SYSTEM AND DAYFILE MESSAGES RJM DFM LDC ECSG+ERLN ISSUE ERRLOG MESSAGE RJM DFM * INCREMENT THE RECOVERED OR UNRECOVERED ERROR COUNTER IN THE * MST FOR THE CURRENT DEVICE. ECS5 LDD T5 SET EST ORDINAL ZJN ECS6 IF NO EQUIPMENT DEFINED STD CM+1 LDD CN SET BYTE NUMBER ADN 3 STD CM+2 LDK ICTS SET SUBFUNCTION STD CM+3 MONITOR SMDM INCREMENT COUNTER ECS6 LJM ECSX RETURN ECSB 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 ECSBL EQU *-ECSB+2 MESSAGE ID TABLE LENGTH ECSG DATA C*EQ000 PE MASS STORAGE ERROR.* SPACE 4,10 * COMMON DECKS. *CALL COMPC2D USE LITERALS * MESSAGE SKELETONS. MSGA BSSZ 6*5 BML MESSAGE BUFFER PRS SPACE 4,10 ** PRS - PRESET PROGRAM. * * EXIT (BUF) = ERROR DATA BUFFER. * (A) = MESSAGE PROCESSOR ADDRESS. * (A) = 0 IF DAYFILE LIMIT REACHED. * TO *ABT* IF ARGUMENT ERROR DETECTED. * * USES T1, CM - CM+4, ST. PRS SUBR ENTRY/EXIT LDK MEFL CRD CM LDD CM+2 SHN -11 ADC SHNI+17 STM ECSA LDN 0 CLEAR STATUS REPLY STD ST LDD IR+3 CHECK CALL PARAMETERS LPN 77 SHN 14 ADD IR+4 ADN BUFL/5 SHN -6 SBD FL MJN PRS2 IF BUFFER NOT BEYOND FL PRS1 LDC =C* ELM - ARGUMENT ERROR.* LJM ABT ABORT JOB PRS2 LDN BUFL/5 READ ERROR BUFFER STD T1 LDD IR+3 LPN 77 SHN 6 ADD RA SHN 6 ADD IR+4 CRM BUF,T1 LDD CP CHECK FOR DAYFILE LIMIT ADK ACLW CRD CM LDD CM+1 NJN PRS3 IF DAYFILE LIMIT NOT REACHED LDN LDFM SET DAYFILE LIMIT STATUS STD ST LDN 0 LJM PRSX RETURN PRS3 LCN 1 FIND ERROR PROCESSOR STD T1 PRS4 LDN 2 RAD T1 LDM PRSA,T1 ZJN PRS5 IF END OF TABLE LMM BUF+DVCD NJN PRS4 IF NO MATCH LDM PRSA+1,T1 SET PROCESSOR ADDRESS LJM PRSX RETURN PRS5 LJM PRS1 ABORT ** LIST OF ERROR PROCESSORS. * * ENTRY = 2 WORDS. *T, 12/ DEVICE CODE,12/ PROCESSOR PRSA VFD 12/2REC,12/ECS CON 0 BUF EQU * ERROR DATA BUFFER END