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