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