MSW TITLE 'DMKMSW (CP) VM/370 - RELEASE 6' 00001000
ISEQ 73,80 00002000
*. 00003000
* 00004000
* MODULE NAME - DMKMSW 00005000
* 00006000
* 00007000
* 00008000
* FUNCTION - TO PROVIDE A FACILITY WHICH WILL ALLOW THE SYSTEM 00009000
* TO COMMUNICATE WITH THE OPERATOR FOR THE 00010000
* ENHANCEMENT OF ERROR RECOVERY PROCEDURES. 00011000
* 00012000
* 00013000
* ATTRIBUTES - REENTRANT,RESIDENT,CALLED VIA SVC. 00014000
* 00015000
* 00016000
* ENTRY POINTS - DMKMSWR 00017000
* 00018000
* 00019000
* ENTRY CONDITIONS - GPR8 =RDEVBLOK ADDRESS 00020000
* GPR10=IOBLOK ADDRESS 00021000
* GPR11=VMBLOK ADDRESS 00022000
* GPR12=BASE ADDRESS 00023000
* GPR13=SAVE AREA ADDRESS 00024000
* 00025000
* 00026000
* EXIT CONDITIONS - RETURN THE OPERATOR'S RESPONSE TO THE 00027000
* CALLER IN THE IOERBLOK MESSAGE PARM 00028000
* FIELD. 00029000
* 00030000
* 00031000
* 00032000
* CALLS TO OTHER ROUTINES - 00033000
* DMKCVTBH - TO CONVERT BINARY TO UNPACKED DECIMAL. 00034000
* DMKQCNWT - TO ISSUE MESSAGES ON OPERATORS CONSOLE. 00035000
* DMKQCNRD - TO READ OPERATOR'S RESPONSE. 00036000
* DMKFREE - TO OBTAIN STORAGE FOR A MESSAGE BUFFER. 00037000
* DMKFRET - TO RETURN STORAGE OBTAINED BY DMKFREE. 00038000
* DMKSCNRN - TO OBTAIN 'TYPE' DEVICE FOR MSG LINE 00039000
* 00040000
* 00041000
* EXTERNAL REFERENCES - NONE 00042000
* 00043000
* 00044000
* TABLES AND WORK AREAS - IOBLOK,IOERBLOK,RDEVBLOK,VMBLOK, 00045000
* MSGBUF,AND MSGPARM 00046000
* 00047000
* 00048000
* REGISTER USAGE - GPR0-6=SCRATCH 00049000
* GPR 7=IOERBLOK ADDRESS 00050000
* GPR 8=RDEVBLOK ADDRESS 00051000
* GPR 9=MSGPARM ADDRESS 00052000
* GPR 10=IOBLOK ADDRESS 00053000
* GPR 11=VMBLOK ADDRESS 00054000
* GPR 12=BASE ADDRESS 00055000
* GPR 13=SAVE AREA ADDRESS 00056000
* GPR 14=EXTERNAL LINKAGE REGISTER 00057000
* GPR 15=EXTERNAL LINKAGE REGISTER 00058000
* 00059000
* 00060000
* NOTES - A. THE FORMAT OF THE MESSAGES WILL CONTAIN THE 00061000
* FOLLOWING: 00062000
* 1. A UNIQUE MESSAGE NUMBER. 00063000
* 2. THE CHANNEL,CONTROL UNIT AND DEVICE ADDRESS. 00064000
* 3. THE USERID. 00065000
* 4. SENSE INFORMATION. 00066000
* 5. CSW INFORMATION. 00067000
* 6. THE COMMAND CODE OF THE FAILING CCW. 00068000
* 7. THE HOME ADDRESS FOR DASDI DEVICES. 00069000
* B. IF THE DEVICE IS FOUND TO BE NOT READY A SHORT 00070000
* FORM OF THE MESSAGE WILL BE ISSUED WITH THE 00071000
* FOLLOWING INFORMATION. 00072000
* 1. A UNIQUE MESSAGE NUMBER. 00073000
* 2. TEXT (INDICATING INTERVENTION REQUIRED) 00074000
* 3. THE CHANNEL,CONTROL UNIT AND DEVICE ADDRESS. 00075000
* 00076000
* 00077000
* 00078000
* OPERATION - A. THIS MODULE WILL BE CALLED BY ERP ROUTINES 00079000
* WHEN IT IS NECESSARY THAT THE OPERATOR BE 00080000
* INFORMED OF AN ERROR CONDITION. 00081000
* B. THE 'MSGPARM' FIELD WHICH WAS CONSTRUCTED BY 00082000
* THE ERP ROUTINE CONTAINS A 'MESSAGE INDEX 00083000
* POINTER' AND FLAG SETTINGS FOR VALIDATING THE 00084000
* OPERATOR'S RESPONSE. THE INFORMATION TO BE 00085000
* DISPLAYED MAY BE AN ACTION,DECISION,OR 00086000
* INFORMATIONAL MESSAGE WITH OR WITHOUT AN 00087000
* OPERATOR REPLY. 00088000
* C. THE CONTENTS OF THE MESSAGE WILL BE EXTRACTED 00089000
* FROM THE FOLLOWING : 00090000
* IOERBLOK - CSW, SENSE DATA, AND COMMAND CODE. 00091000
* RDEVBLOK - CHANNEL,CONTROL UNIT AND DEVICE 00092000
* VMBLOK - USERID. 00093000
* MSGPARM - INDICATOR BYTE AND VALID RESPONSES. 00094000
* MSGPARM - - INDEX BYTE TO MESSAGE TEXT TABLE. 00095000
* 00096000
*. 00097000
EJECT 00098000
COPY OPTIONS @V200820 00099000
COPY LOCAL @V200820 00100000
SPACE 3 00101000
DMKMSW START 00102000
SPACE 3 00103000
USING PSA,R0 00104000
USING IOERBLOK,R7 00105000
USING RDEVBLOK,R8 00106000
USING MSGAREA,R9 00107000
USING IOBLOK,R10 00108000
USING VMBLOK,R11 00109000
USING SAVEAREA,R13 00110000
SPACE 1 00111000
EXTRN DMKSCNRN,DMKQCNRD,DMKCVTBH 00112000
EJECT 00113000
ENTRY DMKMSWR 00114000
USING *,R12 00115000
DMKMSWR ENTER , 00116000
SPACE 1 00117000
LA R0,MSGSIZE GET STORAGE FOR MSG BUFFER @V2B3729 00118000
CALL DMKFREE 00119000
LR R9,R1 SAVE ADDR. OF BUFFER IN REG.9 00120000
MVI MSGAREA,C' ' BLANK OUT ENTIRE BUFFER @VM01120 00121000
MVC MSGAREA+1(MSGLNG-1),MSGAREA ... @VM01120 00122000
MVC MSGPREX(6),SP3DMK SPACE PAPER AND CP PREFIHRC202DK 00123490
SPACE 1 00124000
L R0,SAVER0 PICK UP NAME OF ROUTINE THAT CALLED US 00125000
STCM R0,14,MSGIDENT STORE IT IN THE LINE TO PRINT. 00126000
CALL DMKSCNRN CALL SCAN FOR TYPE DEV 00127000
STCM R1,15,DEVHDR STORE 4-CHAR IN PRINT LINE 00128000
MVC USERHDR,=C'USERID=' MOVE IN USERID HDR 00129000
MVC SNSHDR,=C'SNS=' * 00130000
MVC CMDHDR,=C'CMD=' * 00131000
MVC CSWHDR,=C'CSW=' * 00132000
MVC HAHDR,=C'BBCCHH=' * 00133000
SPACE 1 00134000
L R7,RDEVIOER LOAD ADDRESS OF THE IOERBLOK. 00135000
SR R5,R5 CLEAR REG.5 00136000
IC R5,IOERNUM INSERT MESSAGE NUMBER FROM IOERBLOK 00137000
MH R5,F10+2 MULTIPLY BY CONSTANT OF 10 00138000
LA R5,MSGTABLE(R5) ADD TO BASE ADDR. OF TABLE 00139000
MVC MSGTEXT,0(R5) MOVE TEXT INTO BUFFER AREA. 00140000
SPACE 1 00141000
LM R0,R1,ZEROES CLEAR REG0 AND REG1 00142000
LA R6,MSGNUM GET ADDRESS OF MESSAGE NUMBER. 00143000
LA R2,L'MSGNUM GET LENGHT OF MESSAGE 00144000
IC R1,IOERNUM INSERT ACTUAL MESSAGE NUMBER. 00145000
CH R1,F9+2 IS MESSAGE > 9 ? 00146000
BNH ADD256 BRANCH NO 00147000
CH R1,F20+2 IS MESSAGE < 20 ? 00148000
BL ADD6 BRANCH IF YES. 00149000
CH R1,F30+2 @VA09494 00149100
BL ADD12 @VA09494 00149500
AH R1,=H'18' @VA09494 00149900
B ADD256 @VA09494 00150300
ADD12 AH R1,=H'12' @VA09494 00150700
B ADD256 00151000
ADD6 A R1,F6 ADD 6 TO MESSAGE NUMBER 00152000
ADD256 AH R1,=H'1280' MAKE MESSAGES START AT X'500'. 00153000
BAL R5,CONVERT BRANCH TO CONVERT ROUTINE. 00154000
SPACE 1 00155000
SLR R0,R0 CLEAR REG0 00156000
LA R6,MSGDEV GET DEVICE ADDRESS. 00157000
LA R2,L'MSGDEV PICK UP LENGTH ATTRIB. 00158000
LH R1,IOBRADD LOAD R1 WITH ADDRESS OF DEVICE. 00159000
BAL R5,CONVERT CONVERT DEVICE ADDR. 00160000
SPACE 1 00161000
SLR R0,R0 CLEAR REG0 00162000
TM IOERCSW+5,CCC+CDC+IFCC IS THIS A CHANNEL ERROR @VA03358 00163000
BNZ BDSNS YES, BYPASS SENSE SUPPORT @VA03358 00164000
ICM R2,B'0011',IOERLEN ACTUAL LENGTH OF SENSE BYTES @V2B3729 00165000
BZ BDSNS BRANCH IF NO SENSE INFORMATION @V2B3729 00166000
LA R3,3(,R2) ROUND LENGTH TO MULTIPLE OF 4 @V2B3729 00167000
SRL R3,2 DIVIDE BY 4 - LOOP COUNTER @V2B3729 00168000
LA R4,IOERDATA ADDRESS OF SENSE DATA @V2B3729 00169000
LA R6,MSGSNS ADDRESS OF MSG SENSE AREA @V2B3729 00170000
SNSLOOP LA R2,8 INDICATE A LEN OF 8 PRINTABLE @V2B3729 00171000
* CHAR'S 00172000
L R1,0(,R4) GET 4 SENSE BYTES @V2B3729 00173000
BAL R5,CONVERT CONVERT TO PRINTABLE CHAR'S @V2B3729 00174000
LA R4,4(,R4) UPDATE TO NEXT 4 SENSE BYTES @V2B3729 00175000
LA R6,9(,R6) UPDATE MSG SENSE OUTPUT ADDRESS @V2B3729 00176000
BCT R3,SNSLOOP BRANCH TILL ALL BYTES DONE @V2B3729 00177000
B MSGCCW SET CCW AREA @V2B3729 00178000
SPACE 00179000
BDSNS MVC MSGSNS(4),=C'XXXX' SENSE NOT PRESENT @V2B3729 00180000
MSGCCW EQU * @V2B3729 00181000
SLR R0,R0 CLEAR REG0 00182000
LA R6,MSGCMD SET ADDR. OF COMMAND POSITION. 00183000
LA R2,L'MSGCMD SET LNG. OF FIELD 00184000
L R4,IOERCSW PICK UP ADDR. OF CCW + 8 00185000
LA R4,0(R4) CLEAR OUT HIGH ORDER BYTE 00186000
LTR R4,R4 CHECK FOR ZERO CSW ADDR. 00187000
BNZ GDCCW BRANCH IF VALID 00188000
L R4,IOBCAW GET CCW ADDRESS @VA10771 00188100
LA R4,0(R4) CLEAR HIGH ORDER BYTE @VA10771 00188200
LTR R4,R4 IS ADDRESS VALID? @VA10771 00188300
BNZ CAWCCW YES, GO GET CCW @VA10771 00188400
MVC 0(2,R6),=C'XXXX' MOVE IN INVALID CCW MESSAGE 00189000
B BDCCW 00190000
SPACE 1 00191000
GDCCW EQU * 00192000
S R4,F8 - 8 00193000
CAWCCW DS 0H @VA10771 00193100
SLR R1,R1 CLEAR FOR IC 00194000
IC R1,0(0,R4) CCW IN ERROR 00195000
BAL R5,CONVERT GO CONVERT THIS DATA 00196000
SPACE 1 00197000
BDCCW EQU * 00198000
LA R6,MSGCSW SET BUFFER ADR. TO CSW 00199000
LA R2,8 SET PRINT LNG. TO 8 00200000
L R1,IOERCSW GET FIRST 4 POSITION OF CSW 00201000
BAL R5,CONVERT AND CONVERT TO PRINTABLE 00202000
SPACE 1 00203000
SLR R0,R0 CLEAR REG0 00204000
LA R6,MSGCSW+9 POINT TO PRINT LINE TARGET 00205000
LA R2,8 SET LNG. TO 8 00206000
L R1,IOERCSW+4 SET REG.1 TO SECOND HALF OF CSW 00207000
BAL R5,CONVERT NOW CONVERT THIS DATA 00208000
SPACE 1 00209000
MVC MSGHA(4),=4C'0' ZERO OUT BBBB OF DASDI ADDRESS. 00210000
SPACE 1 00211000
SLR R0,R0 CLEAR REG0 00212000
LA R6,MSGHA+4 00213000
LA R2,8 SET LEN. TO 8 00214000
L R1,IOERADR GET DASDI SEEK ADDR. 00215000
BAL R5,CONVERT CONVERT SEEK ADDRESS 00216000
SPACE 1 00217000
MVC MSGUSER,VMUSER GET NAME OF USER CHARGED TO THIS ERR 00218000
SPACE 1 00219000
TM IOERIND3,IOERDEC IS THIS A DECISION MESSAGE ? 00220000
BZ ACTMSG BRANCH IF NO. 00221000
MVI MSGIND,X'C4' SET DEC. INDICATOR IN BUFFER POSITION. 00222000
B PRTLINE 00223000
SPACE 1 00224000
ACTMSG TM IOERIND3,IOERACT IS THIS AN ACTION MESSAGE ? 00225000
BZ INFMSG BRANCH IF NO. 00226000
MVI MSGIND,X'C1' SET 'A' INTO MESSAGE TEXT 00227000
B PRTLINE 00228000
SPACE 1 00229000
INFMSG EQU * 00230000
MVI MSGIND,C'I' SET "I" INTO MESSAGE TEXT 00231000
SPACE 1 00232000
PRTLINE CLI IOERDATA,INTREQ INTERVENTION REQUIRED ALONE ? @V2B3729 00233000
BNE WTRBUF NO, USE LONG FORMAT @V2B3729 00234000
TM IOERFLG1,IOERPEND IS THIS AN INT. REQ. MESSAGE ?@V2B3729 00235000
BZ WTRBUF BRANCH IF NO @V2B3729 00236000
CLI RDEVTYPC,CLASDASD IS CLASS DASD @VA05142 00237100
BNE SHORTMSG NO @VA05142 00237200
TM RDEVTYPE,TYP3340+TYP3350 IS DASD 3340, 3344 @VA05142 00237300
* OR 3350? 00237400
BM DASDMSG YES, MAKE TEST FOR PSEUDO EC @VA05142 00237500
TM IOERDATA+2,X'08' TEST 3330 COPMAT. BIT @VA05142 00237600
* (SNS BYTE 2, BIT 4) 00237700
BZ SHORTMSG NO, IT'S A REAL 3330 @VA05142 00237800
DASDMSG EQU * TEST FOR PSEUDO EQU. CHECK @VA05142 00237900
* (SNS BYTE 10, BITS 4 AND/OR 5) 00238000
TM IOERDATA+10,X'18' BITS 4 AND/OR 5 ? @V2B3729 00239000
BNZ WTRBUF BRANCH IF NON-ZERO @V2B3729 00240000
SHORTMSG LR R1,R9 POINT TO PRINT LINE @V2B3729 00241000
LA R0,33 SET MSG LENGTH 00242000
CALL DMKQCNWT,PARM=OPERATOR+ALARM+NORET 00243000
SPACE 1 00244000
USERMSG L R6,ASYSOP GET OPERATOR'S VMBLOK 00245000
CR R11,R6 WAS THIS MESSAGE SENT TO OPERATOR 00246000
BE EXITOUT IF YES, DON'T REPEAT IT 00247000
TM RDEVSTAT,RDEVDED IS DEVICE ATTACHED ? 00248000
BNO EXITOUT EXIT IF NOT ATTACHED 00249000
MVC MSGAREA(42),MSGUSTXT 00250000
LH R1,IOBRADD PICK UP DEV ADDRESS 00251000
LA R6,MSGAREA+7 BUFFER PTR +7 00252000
SR R0,R0 CLEAR PARM REG 00253000
LA R2,3 LENGTH PARM 00254000
BAL R5,CONVERT GO CONVERT THE ADDRESS 00255000
LR R1,R9 POINT TO START OF PRINT LINE. 00256000
LA R0,42 00257000
CALL DMKQCNWT,PARM=NORET WRITE MESSAGE TO VIRTUAL TERM. 00258000
SPACE 1 00259000
EXITOUT LA R0,MSGSIZE SIZE OF MESSAGE BUFFER @V2B3729 00260000
LR R1,R9 LOAD REG.1 OF ADDR. TO FRET 00261000
CALL DMKFRET 00262000
EXIT RETURN WILL BE MADE BACK TO ERP ROUTINE 00263000
SPACE 3 00264000
WTRBUF LR R1,R9 ADDRESS OF FIRST MESSAGE @V2B3729 00265000
SLR R2,R2 CLEAR REGISTER 2 @VA03358 00266000
TM IOERCSW+5,CCC+CDC+IFCC IS THIS A CHANNEL ERROR @VA03358 00267000
BNZ BYPMSG YES, DON'T GET SENSE BYTES @VA03358 00268000
LH R2,IOERLEN ACTUAL LENGTH OF SENSE @V2B3729 00269000
C R2,F6 GREATER THAN 6 SENSE BYTES ? @V2B3729 00270000
BH LONGMSG YES, LONG SENSE MSG @V2B3729 00271000
BYPMSG EQU * @VA03358 00272000
SLL R2,1 SENSE BYTE COUNT TIME 2 @V2B3729 00273000
LA R0,MSG1SNSL(,R2) LENGTH OF MSG WITH SENSE BYTES @V2B3729 00274000
LTR R2,R2 CHECK FOR ZERO SENSE BYTE COUNT @V2B3729 00275000
BNZ *+8 NO, MSG LENGTH COUNT OK @V2B3729 00276000
A R0,F4 ADD COUNT FOR XXXX @V2B3729 00277000
CALL DMKQCNWT,PARM=OPERATOR+NORET+ALARM 00278000
B RTN WRITE NEXT LINE @V2B3729 00279000
SPACE 00280000
LONGMSG LA R0,MSG1L LENGTH OF MESSAGE WITH SENSE @V2B3729 00281000
CALL DMKQCNWT,PARM=OPERATOR+NORET+ALARM @V2B3729 00282000
MVC SNSMSG(11),NXTLINE BLANK 11 POSITIONS @V2B3729 00283000
LA R0,MSG2SNSL LENGTH OF LONG SENSE MESSAGE @V2B3729 00284000
LH R2,IOERLEN GET THE NUMBER OF SENSE BYTES @V2B3729 00285000
SLL R2,1 TIMES 2 FOR PRINT COUNT @V2B3729 00286000
ALR R0,R2 TOTAL MSG LENGTH @V2B3729 00287000
LA R1,SNSMSG ADDRESS OF SENSE MESSAGE @V2B3729 00288000
CALL DMKQCNWT,PARM=OPERATOR+NORET+NOTIME @V2B3729 00289000
RTN TM IOERIND3,IOERDASD IS THIS MSG FOR A DASDI DEVICE 00290000
BZ NOTDASD BRANCH IF NO. 00291000
LA R0,MSG3L LENGTH OF THIRD MESSAGE @V2B3729 00292000
LA R1,NXTLINE POINT TO PRINT LINE 00293000
CALL DMKQCNWT,PARM=OPERATOR+NORET+NOTIME 00294000
SPACE 1 00295000
TM IOERIND3,IOERINFO INFO MSG 00296000
BZ RTNA NO 00297000
LA R0,3 LENGTH 00298000
LA R1,SP3DMK CARRIAGE RET 00299000
CALL DMKQCNWT,PARM=NORET+NOTIME+OPERATOR 00300000
B RTNA 00301000
SPACE 1 00302000
NOTDASD EQU * 00303000
LA R0,HAHDR-NXTLINE-1(R0) SET LNG. OF PRINT LINE 00304000
LA R1,NXTLINE POINT TO PRINT LINE 00305000
CALL DMKQCNWT,PARM=OPERATOR+NORET+NOTIME 00306000
SPACE 1 00307000
TM IOERIND3,IOERINFO INFO MSG 00308000
BZ RTNA NO 00309000
LA R0,3 00310000
LA R1,SP3DMK 00311000
CALL DMKQCNWT,PARM=OPERATOR+NORET+NOTIME 00312000
SPACE 1 00313000
RTNA TM IOERIND3,IOERDEC IS THIS A DECISION MSG ? 00314000
BZ NOTDEC BRANCH IF NO 00315000
SPACE 1 00316000
REISSUE TM IOERIND3,IOERETRY+IOERIGN RETRY OR IGNORE 00317000
BO BOTH YES 00318000
BZ CNLOPT NEITHER ONE 00319000
TM IOERIND3,IOERETRY RETRY ONLY 00320000
BO RTRYONLY YES 00321000
MVC MSGAREA(15),REPLY MOVE IN PROMPTING MSG 00322000
MVC MSGAREA+15(10),OR MOVE IN THE REMAINDER 00323000
LA R0,25 MSG LENGTH 00324000
SNDMSG LR R1,R9 POINT R1 AT MSG BUFFER 00325000
CALL DMKQCNWT,PARM=OPERATOR+ALARM+NORET+NOTIME 00326000
B READRESP 00327000
SPACE 1 00328000
RTRYONLY MVC MSGAREA(15),REPLY MOVE IN PROMPTING MSG 00329000
MVC MSGAREA+15(4),OR CONTINUE MSG MAKEUP 00330000
MVC MSGAREA+19(5),RETRY FINISH UP 00331000
LA R0,24 MSG LENGTH 00332000
B SNDMSG GO SEND MSG 00333000
SPACE 1 00334000
BOTH MVC MSGAREA(34),REPLY MOVE IN PROMPTING MSG 00335000
LA R0,34 MSG LENGTH 00336000
B SNDMSG GO SEND MSG 00337000
SPACE 1 00338000
READRESP EQU * READ OPERATOR RESPONSE @V200820 00339000
L R1,ASYSOP GET SYSTEM OPERATOR VMBLOK @V407510 00340100
TM VMOSTAT-VMBLOK(R1),VMDISC DISCONNECTED? @V407510 00340200
BO CNLOPT YES, ASSUME CANCEL @V407510 00340300
L R3,VMTERM-VMBLOK(,R1) CHECK OPERATOR CONSOLE @V407510 00340400
LTR R3,R3 DOES HE HAVE ONE ? @V200820 00348000
BZ CNLOPT NO, ASSUME CANCEL @V407510 00349100
SWTCHVM SWITCH TO SYSTEM OPERATOR @V407510 00349200
LA R0,MAXINPUT SET MAXIMUM INPUT COUNT @V407510 00349300
LR R1,R9 POINT TO PRINT LINE @V407510 00349400
CALL DMKQCNRD,PARM=EDIT+UCASE 00350000
LR R3,R0 PUT LENGTH OF RESPONSE IN R3 @V407510 00350100
L R1,SAVER11 RESTORE VMBLOK ADDRESS @V407510 00351100
SWTCHVM SWITCH BACK TO CALLER @V407510 00351200
LTR R2,R2 ANY ATTENTION OR LINE FAILURE ? @V200820 00354000
BNZ CNLOPT YES - ASSUME 'CANCEL' @V200820 00355000
BCTR R3,R0 REDUCE IT BY 1 00357000
TM IOERIND3,IOERETRY IS RETRY ALLOWED ? 00358000
BZ OPRIGN BRANCH IF NO . 00359000
EX R3,OPRET IS THIS RESPONSE FOR RETRY ? 00360000
BE RETOPT BRANCH IF YES. 00361000
SPACE 1 00362000
OPRIGN TM IOERIND3,IOERIGN IS IGNORE ALLOWED ? 00363000
BZ OPRCAN BRANCH IF NO. 00364000
EX R3,OPIGN IS RESPONSE FOR IGNORE ? 00365000
BE IGNOPT BRANCHNIF YES 00366000
SPACE 1 00367000
OPRCAN EX R3,OPCNL IS RESPONSE FOR CANCEL ? 00368000
BE CNLOPT BRANCH IF YES. 00369000
MVC MSGAREA(17),=C' Invalid response' HRC202DK 00370490
LA R0,17 SET MSG LEN. TO 17 00371000
LR R1,R9 SET UP BUFFER ADDRESS 00372000
CALL DMKQCNWT,PARM=OPERATOR+NORET 00373000
B REISSUE REISSUE THE READ COMMAND. 00374000
SPACE 1 00375000
RETOPT OI IOERIND4,IOERSTRT INDICATE RETRY 00376000
B EXITOUT 00377000
SPACE 1 00378000
IGNOPT OI IOERIND4,IOERIGNR INDICATE IGNORE 00379000
B EXITOUT 00380000
SPACE 1 00381000
SPACE 00382000
CNLOPT OI IOERIND4,IOERCNCL INDICATE CANCEL 00386000
B EXITOUT 00387000
SPACE 1 00388000
NOTDEC TM IOERIND3,IOERACT IS THIS AN ACTION MESSAGE ? 00389000
BO EXITOUT BRANCH IF YES. 00390000
OI IOERIND4,IOERCNCL IF NOT SET CANCEL BIT FOR ERP 00391000
B EXITOUT 00392000
SPACE 1 00393000
CONVERT AR R6,R2 R2 CONTAINS LEN. AND R6 ADDRESS. 00394000
BCTR R6,R0 DECR. ADDRESS BY 1 00395000
CALL DMKCVTBH REG.0 AND 1 ARE ALREADY SET BY CALLER 00396000
SPACE 1 00397000
NXTCHAR STC R1,0(R6) STORE FIRST CONVERTED CHARACTER 00398000
SRDL R0,8 SHIFT THIS CHAR. OUT OF REG. 00399000
BCTR R6,R0 DECREMENT ADDRESS BY 1 00400000
BCT R2,NXTCHAR STORE NEXT CHAR. OR EXIT BACK 00401000
BR R5 RETURN TO CALLER 00402000
SPACE 1 00403000
OPRET CLC MSGRSP(0),RETRY RETRY RESPONSE ? 00404000
OPIGN CLC MSGRSP(0),IGNORE IGNORE RESPONSE 00405000
OPCNL CLC MSGRSP(0),CANCEL CANCEL RESPONSE ? 00406000
EJECT 00407000
MSGTABLE EQU * 00408000
DC CL10'CMD REJECT' 0 00409000
DC CL10'INT REQ' 1 00410000
DC CL10'BUSOUT CK' 2 00411000
DC CL10'EQUIP CK' 3 00412000
DC CL10'DATA CK' 4 00413000
DC CL10'OVERRUN CK' 5 00414000
DC CL10'TRKCOND CK' 6 00415000
DC CL10'SEEK CK' 7 00416000
DC CL10'PERM ERROR' 8 00417000
DC CL10'TRK OVERUN' 9 00418000
DC CL10'CONVERT CK' 10 00419000
DC CL10'COMPAT CK' 11 00420000
DC CL10'LOAD POINT' 12 00421000
DC CL10'FILE PROT' 13 00422000
DC CL10'ADDMRK CK' 14 00423000
DC CL10'DENSITY CK' 15 00424000
DC CL10'BAD SENSE' 16 00425000
DC CL10'NOT/KNOWN' 17 00426000
DC CL10'RECV ERROR' 18 00427000
DC CL10'PE BURST' 19 00428000
DC CL10'CHAN ERROR' 20 00429000
DC CL10'NO DEVICE' 21 00430000
DC CL10'ERASE CK' 22 00431000
DC CL10'CONTROL CK' 23 00432000
DC CL10'LOAD CK' 24 00433000
DC CL10'FORMAT CK' 25 00434000
DC CL10'CMD SUPP' 26 00435000
DC CL10'LOST DATA' 27 00436000
DC CL10'TIMEOUT' 28 00437000
DC CL10'PARITY CK' 29 00438000
DC CL10'UNIT SPEC' ....30 @VA08135 00438100
DC CL10'CTRL CHECK' ....31 @VA08135 00438200
DC CL10'OP CHECK' ....32 @VA08135 00438300
SPACE 1 00439000
REPLY DC X'15',C'Reply ' HRC202DK 00440490
CANCEL DC C'CANCEL' 00441000
DC C', ' 00442000
RETRY DC C'RETRY' 00443000
DC C', ' 00444000
OR DC C' or ' HRC202DK 00445490
IGNORE DC C'IGNORE' 00446000
SPACE 1 00447000
SP3DMK DC X'000000',C'DMK' HRC202DK 00448490
SPACE 1 00449000
MSGUSTXT DC C'Device XXX not Ready, CP-Operator notified' HRC202DK 00450040
MAXINPUT EQU 132 MAXIMUM INPUT COUNT @V407510 00450100
F30 DC F'30' @VA09494 00450200
EJECT 00451000
LTORG 00452000
EJECT 00453000
MSGAREA DSECT 00454000
MSGRSP DS 0XL1 @V2B3729 00455000
MSGPREX DS XL6 00456000
MSGIDENT DS XL3 00457000
MSGNUM DS XL3 00458000
MSGIND DS 1X 00459000
DS 1X 00460000
DEVHDR DS XL4 00461000
DS 1X 00462000
MSGDEV DS XL3 00463000
DS 1X 00464000
MSGTEXT DS XL10 00465000
DS 2X 00466000
CMDHDR DS XL4 00467000
DS 1X 00468000
MSGCMD DS XL2 00469000
DS 2X 00470000
ORG *-11 @V2B3729 00471000
SNSMSG DS XL11 @V2B3729 00472000
SNSHDR DS XL4 00473000
DS 1X 00474000
MSGSNS DS XL48 AREA FOR SENSE BYTES @V2B3729 00475000
DS 19X 00476000
NXTLINE DS XL11 00477000
CSWHDR DS XL4 00478000
DS 1X 00479000
MSGCSW DS XL17 00480000
DS 1X 00481000
USERHDR DS XL7 00482000
DS 1X 00483000
MSGUSER DS XL8 00484000
DS 1X 00485000
HAHDR DS XL7 00486000
DS 1X 00487000
MSGHA DS XL12 00488000
DS 3X 00489000
MSGSIZE EQU (*-MSGAREA+7)/8 LENGTH OF MESSAGE BUFFER @V2B3729 00490000
MSGLNG EQU (*-MSGAREA) @V2B3729 00491000
MSG1L EQU (SNSHDR-MSGAREA-2) @V2B3729 00492000
MSG1SNSL EQU (SNSHDR+5-MSGAREA) @V2B3729 00493000
MSG2SNSL EQU (SNSHDR+5-SNSMSG) @V2B3729 00494000
MSG3L EQU (*-NXTLINE) @V2B3729 00495000
EJECT 00496000
COPY IOBLOKS 00497000
COPY VMBLOK 00498000
COPY DEVTYPES 00499000
COPY EQU 00500000
COPY IOER 00501000
COPY SAVE 00502000
COPY RBLOKS 00503000
PSA 00504000
END 00505000