ibm:vm370-lib:cp:dmkmsw.assemble_src
Table of Contents
DMKMSW Source
References
- Fixes Applied : 5
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC202DK]
Source Listing
- DMKMSW.ASSEMBLE.txt
- 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
ibm/vm370-lib/cp/dmkmsw.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator