NES TITLE 'DMKNES (CP) VM/370 - RELEASE 6' 00001000 ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000 COPY OPTIONS @V200820 00003000 COPY LOCAL OPTIONS @V306638 00004000 SPACE 2 00005000 *. 00006000 * MODULE NAME - 00007000 * 00008000 * DMKNES 00009000 * 00010000 * CONTENTS - 00011000 * 00012000 * DMKNESHD - PROCESS THE 'NETWORK SHUTDOWN' COMMAND 00013000 * DMKNESTR - PROCESS THE 'NETWORK TRACE' COMMAND 00014000 * DMKNESDS - PROCESS THE 'NETWORK DISPLAY' COMMAND 00015000 * DMKNESEP - PROCESS THE 'NETWORK VARY EP' COMMAND 00016000 * DMKNESWN - PROCESS THE 'NETWORK VARY NCP' COMMAND 00017000 * DMKNESPL - PROCESS THE 'NETWORK POLLDLAY' COMMAND 00018000 *. 00019000 SPACE 2 00020000 DMKNES START 0 @V200820 00021000 SPACE 00022000 USING PSA,0 @V200820 00023000 USING CONTASK,R6 @V250820 00024000 USING NICBLOK,R7 @V250820 00025000 USING RDEVBLOK,R8 @V250820 00026000 USING VMBLOK,R11 @V200820 00027000 USING SAVEAREA,R13 @V200820 00028000 SPACE 2 00029000 EXTRN DMKRNHND,DMKERMSG,DMKRGBEN,DMKCVTDB @V305798 00030000 EXTRN DMKSCNFD,DMKCVTHB,DMKSCNRU,DMKCVTBH @V200820 00031000 EXTRN DMKSCNRD,DMKQCNCL,DMKQCNTO @V200820 00032000 EXTRN DMKRIORN DEVICE TABLE FOR SYSTEM 370X'S @V200820 00033000 EXTRN DMKRNHTR HOLD FIELD FOR TRACE USERID @V200820 00034000 EXTRN DMKIOESR @VA03757 00034100 SPACE 00035000 MODID DC CL8'DMKNES ' PAGEABLE MODULE IDENTIFIER @V200820 00036000 EJECT 00037000 *. 00038000 * SUBROUTINE NAME - 00039000 * 00040000 * DMKNESHD - PROCESS THE 'NETWORK SHUTDOWN' COMMAND 00041000 * 00042000 * ATTRIBUTES - 00043000 * 00044000 * RE-ENTRANT, PAGEABLE, CALLED VIA SVC FROM DMKNETWK 00045000 * 00046000 * ENTRY CONDITIONS - 00047000 * 00048000 * GR13 = STANDARD SAVEAREA ADDRESS 00049000 * GR12 = ADDRESS OF DMKNESHD 00050000 * GR11 = VALID VMBLOK ADDRESS 00051000 * GR 9 = CONSOLE FUNCTION COMMAND BUFFER ADDRESS 00052000 * 00053000 * EXIT CONDITIONS - 00054000 * 00055000 * GR0-1, 3-13 RESTORED 00056000 * GR2 = ZERO --> SUCCESSFULL EXECUTION 00057000 * GR2 ¬= ZERO -> ERROR MESSAGE HAS BEEN ISSUED 00058000 * 00059000 * CALLS TO OTHER ROUTINES - 00060000 * 00061000 * DMKSCNFD - TO LOCATE COMMAND OPERANDS 00062000 * DMKSCNRU - TO LOCATE REAL DEVICE CONTROL BLOCKS 00063000 * DMKCVTHB - TO CONVERT HEXADECIMAL TO BINARY 00064000 * DMKQCNCL - TO RESET ANY ACTIVE CONSOLE TASKS (CONTASK) 00065000 * DMKQCNTO - TO DISCONNECT AN ACTIVE VIRTUAL MACHINE 00066000 * 00067000 * EXTERNAL REFERENCES - 00068000 * 00069000 * DMKRIORN - TABLE OF 370X DEVICES IN DMKRIO 00070000 * 00071000 * TABLES / WORK AREAS - NONE 00072000 * 00073000 * REGISTER USAGE - 00074000 * 00075000 * GR14-15 EXTERNAL LINKAGE REGISTERS 00076000 * GR13 - SAVEAREA ADDRESSABILITY 00077000 * GR12 - MODULE BASE ADDRESSABILITY 00078000 * GR11 - VMBLOK ADDRESSABILITY 00079000 * GR10 - INTERNAL LINKAGE REGISTER 00080000 * GR 9 - COMMAND BUFFER ADDRESSABILITY 00081000 * GR 8 - RDEVBLOK ADDRESSABILITY 00082000 * GR 7 - NICBLOK ADDRESSABILITY 00083000 * GR 0-6 WORK REGISTERS 00084000 * 00085000 * NOTES - NONE 00086000 * 00087000 * OPERATION - 00088000 * 00089000 * 1. VALIDATE THE OPERAND SPECIFIED. IF NONE, ASSUME 'ALL'. 00090000 * 2. FOR EACH 370X WHICH HAS AN ACTIVE NETWORK CONTROL 00091000 * PROGRAM OR PARTITIONED EMULATOR PROGRAM, DISABLE CP 00092000 * USE OF THE NCP INTERFACE BY SETTING APPROPRIATE FLAGS 00093000 * IN THE RDEVBLOK FOR THE 370X. 00094000 * 3. RESET ANY ACTIVE OR QUEUED CONTASK'S FOR EACH NICBLOK 00095000 * VIA CALLS TO DMKQCNCL. 00096000 * 4. DISCONNECT ANY ACTIVE VIRTUAL MACHINES VIA CALLS TO 00097000 * DMKQCNTO. MARK THE 370X AS FREE. 00098000 * 00099000 * RESPONSES - 00100000 * 00101000 * COMMAND COMPLETE 00102000 * 00103000 * ERROR MESSAGES - 00104000 * 00105000 * DMKNES002E INVALID OPERAND - OPERAND 00106000 * DMKNES006E INVALID DEVICE TYPE - XXX 00107000 * DMKNES021E RADDR MISSING OR INVALID 00108000 * DMKNES040E DEV XXX DOES NOT EXIST 00109000 * DMKNES046E CTLR XXX OFFLINE 00110000 * DMKNES140E CTLR XXX ATTACHED TO USERIDXX 00111000 *. 00112000 SPACE 2 00113000 DMKNESHD RELOC , NETWORK SHUTDOWN RADDR @V250820 00114000 SWITCH ENSURE WE ARE ON THE MAIN PROC @V407511 00114500 MVI SAVEWRK1,SHUT INDICATE 3270 REMOTE SUPPORT @V2D3931 00115000 SPACE 00116000 CALL DMKSCNFD WAS AN ADDRESS SPECIFIED ? @V200820 00117000 BNZ NETSHUT NO -- SHUTDOWN EVERYTHING @V200820 00118000 CL R0,F3 MUST BE LESS THAN THREE CHARS @V200820 00119000 BH NET002E INVALID OPERAND @V200820 00120000 CLC 0(3,R1),=C'ALL ' WAS "ALL" TYPED IN ? @V200820 00121000 BE NETSHUT YES - DO JUST THAT @V200820 00122000 BAL R10,GETRDEV FIND AND VALIDATE REAL DEVICE @V240820 00123000 BAL R10,NETDEAD SHUTDOWN NCP COMMUNICATION @V200820 00124000 B CMDCOMP ALL DONE - GET OUT @V200820 00125000 SPACE 00126000 NETSHUT EQU * SHUTDOWN ALL 370X NCP ACTIVITY @V200820 00127000 BAL R10,NETWALL FIND THE FIRST NCP @V200820 00128000 BNZ CMDCOMP IF NONE, OUR JOB IS DONE @V200820 00129000 NETSHUT1 EQU * QUIESCE AND DESIST @V200820 00130000 BAL R10,NETDEAD TURN OFF THIS NCP @V200820 00131000 BAL R10,NETFALL LOOK FOR ANOTHER ONE @V200820 00132000 BZ NETSHUT1 TURN OFF ALL THE LIGHTS @V200820 00133000 B CMDCOMP @V200820 00134000 EJECT 00135000 NETDEAD EQU * QUIESCE HOST COMMUNICATIONS @V200820 00136000 CLI RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS @V2D3931 00137000 BE NETLINE YES, GO DISABLE BISYNC LINE @V2D3931 00138000 TM RDEVFLAG,RDEVRCVY IN RECOVERY PROCESS NOW ? @V200820 00139000 BOR R10 YES - DON'T TOUCH IT @V200820 00140000 NI RDEVSTAT,255-RDEVRSVD TURN OFF DMKRNHIN @V200820 00141000 OI RDEVSTAT,RDEVNRDY . . . @V200820 00142000 OI RDEVFLAG,RDEVRCVY . . . @V200820 00143000 LH R5,RDEVMAX SETUP TO LOOP THRU NICBLOK'S @V200820 00144000 MH R5,=AL2(NICSIZE*8) . . . @V200820 00145000 L R7,RDEVNICL GR7 = START OF NICBLOK LIST @VM08768 00146000 ALR R5,R7 . . . @V200820 00147000 LA R4,NICSIZE*8 . . . @V200820 00148000 CALL DMKQCNCL CLEAR CONTASKS FROM RDEVBLOK @V200820 00149000 SLR R0,R0 CONSTANT @V200820 00150000 NETFLSH EQU * CLEAR ALL ACTIVE CONTASK'S @V200820 00151000 L R1,NICQPNT NICBLOK CHAIN OF CONTASKS @V200820 00152000 LTR R1,R1 ARE THERE ANY ? @V200820 00153000 BNP NETFLSN NO --- @V200820 00154000 ST R1,RDEVCON PUT IT DOWN FOR DMKQCN @V200820 00155000 CALL DMKQCNCL FLUSH ALL THE TASKS @V200820 00156000 ST R0,NICQPNT CLEAR NICBLOK POINTER @V200820 00157000 NETFLSN EQU * @V200820 00158000 BXLE R7,R4,NETFLSH CONTINUE . . . @V200820 00159000 SPACE 00160000 L R7,RDEVNICL RESTART AT THE BEGINNING @V200820 00161000 L R3,ASYSVM SYSTEM VMBLOK FOR CONVENIENCE @V200820 00162000 NETFLSU EQU * DISCONNECT ANY ACTIVE USERS @V200820 00163000 CL R3,NICUSER IS THERE AN ACTIVE USER ? @V200820 00164000 BE NETFLSF NO --- @V200820 00165000 L R1,NICUSER LOAD ADDR OF NEW VMBLOK @V407511 00166100 SWTCHVM OPT=STAY SWITCH VMBLOK LOCKING & CHARGING @V407511 00166300 CALL DMKQCNTO,AFFINITY DISCONNECT THIS GUY @V407511 00169100 ST R3,NICUSER SET NICUSER TO SYSTEM VMBLOK @V200820 00170000 NETFLSF EQU * RESET NICBLOK STATUS, FLAGS @V200820 00171000 NI NICSTAT,NICDISA+NICEPMD+NICSWEP LEAVE THESE @V200820 00172000 MVI NICFLAG,NICPSUP SET ONLY THIS @V200820 00173000 BXLE R7,R4,NETFLSU CONTINUE . . . @V200820 00174000 L R1,SAVER11 LOAD ADDR OF NEW VMBLOK @V407511 00175500 SWTCHVM OPT=STAY SWITCH VMBLOK LOCKING & CHARGING @V407511 00176000 NI RDEVFLAG,255-(RDEVRCVY+RDEVWAIT+RDEVSLOW) @V200820 00178000 BR R10 RETURN INTERNALLY @V200820 00179000 NETLINE EQU * DISABLE THE BISYNC LINE @V2D3931 00180000 TM RDEVFLAG,RDEVENAB IS THIS LINE ENABLED ? @V2D3931 00181000 BZR R10 NO, NOTHING TO DO @V2D3931 00182000 TM RDEVSTAT,RDEVDED+RDEVDISA+RDEVNRDY IS LINE AVAIL@V2D3931 00183000 BNZR R10 NO, RETURN @V2D3931 00184000 OI RDEVFLAG,RDEVDISB SET THE DISABLE FLAG @V2D3931 00185000 L R0,F255 SET PARM REG FOR BISYNC LINE @V2D3931 00186000 CALL DMKRGBEN,PARM=0,AFFINITY @V407511 00187100 BR R10 RETURN @V2D3931 00188000 EJECT 00189000 *. 00190000 * SUBROUTINE NAME - 00191000 * 00192000 * DMKNESEP - SWITCH LINE MODE TO EMULATION MODE 00193000 * 00194000 * ATTRIBUTES - 00195000 * 00196000 * RE-ENTRANT, PAGEABLE, CALLED VIA SVC FROM DMKNETWK 00197000 * 00198000 * ENTRY CONDITIONS - 00199000 * 00200000 * GR13 = STANDARD SAVEAREA ADDRESS 00201000 * GR12 = ADDRESS OF DMKNESEP 00202000 * GR11 = VALID VMBLOK ADDRESS 00203000 * GR 8 = RDEVBLOK ADDRESS OF THE REFERENCED 370X 00204000 * GR 7 = NICBLOK ADDRESS FOR THE SPECIFIED RESOURCE 00205000 * GR 1 = RESOURCE REFERENCE IN EBCDIC (4 CHARS) 00206000 * 00207000 * EXIT CONDITIONS - 00208000 * 00209000 * GR0-1,3-13 RESTORED 00210000 * GR2 = ZERO --> SUCCESSFUL COMPLETION 00211000 * GR2 ¬= ZERO --> ERROR MESSAGE HAS BEEN ISSUED 00212000 * 00213000 * CALLS TO OTHER ROUTINES - 00214000 * 00215000 * DMKRNHND - TO SCHEDULE CONTROL FUNCTIONS FOR THE 370X NCP 00216000 * DMKSCNRU - TO LOCATE REAL DEVICE CONTROL BLOCKS 00217000 * DMKSCNRD - TO DETERMINE DEVICE ADDRESS FROM AN RDEVBLOK 00218000 * DMKERMSG - TO FORMAT AND TYPE ERROR MESSAGES 00219000 * 00220000 * EXTERNAL REFERENCES - NONE 00221000 * 00222000 * TABLES / WORK AREAS - NONE 00223000 * 00224000 * REGISTER USAGE - 00225000 * 00226000 * GR14,15 EXTERNAL LINKAGE REGISTERS 00227000 * GR13 - SAVEAREA ADDRESSABILITY 00228000 * GR12 - MODULE BASE ADDRESSABILITY 00229000 * GR11 - VMBLOK ADDRESSABILITY 00230000 * GR10 - UNUSED 00231000 * GR 9 - PARAMETER REGISTER FOR DMKRNHND 00232000 * GR 8 - RDEVBLOK ADDRESSABILITY 00233000 * GR 7 - RCUBLOK AND NICBLOK ADDRESSABILITY 00234000 * GR 0-6 WORK REGISTERS 00235000 * 00236000 * NOTES - NONE 00237000 * 00238000 EJECT 00239000 * OPERATION - 00240000 * 00241000 * 1. MAKE SURE THAT THE SPECIFIED RESOURCE IS A LINE, AND 00242000 * THAT THE LINE IS CAPABLE OF BEING SWITCHED TO EP-MODE. 00243000 * MAKE SURE THAT THERE ARE NO ACTIVE TERMINALS WHICH 00244000 * DEPEND ON THIS LINE RESOURCE. ERROR MESSAGES ARE 00245000 * ISSUED IF ANY OF THE ABOVE TESTS FAIL. 00246000 * 00247000 * 2. IF THE NCP LINE TRACE IS ACTIVE, TERMINATE THE TRACE 00248000 * VIA A CALL TO DMKRNHND FOR THE 'CTRMLTR' COMMAND. 00249000 * 00250000 * 3. PERFORM A VARY ONLINE FUNCTION FOR THE RDEVBLOK WHICH 00251000 * REFERS TO THE EP-MODE ADDRESS OF THE LINE BEING 00252000 * SWITCHED. THIS MAY INVOLVE USING ONE OF THE DUMMY BLOCKS 00253000 * GENERATED BY THE 'MAXDIAL' OPERAND OF RDEVICE MACRO. 00254000 * 00255000 * 4. INITIALIZE THE LINE RDEVBLOK ACCORDING TO THE TERMINAL 00256000 * TYPE (IBM1 OR TELE2), SETTING UP FOR EP-MODE USE. 00257000 * 00258000 * 5. SWITCH THE LINE TO EP-MODE VIA CALL DMKRNHND. 00259000 * 00260000 * ERROR MESSAGES - 00261000 * 00262000 * DMKNES006E INVALID DEVICE TYPE - XXXX 00263000 * DMKNES049E DEV XXXX IN USE 00264000 * DMKNES098E DEV XXXX MODE SWITCH NOT POSSIBLE 00265000 *. 00266000 EJECT 00267000 DMKNESEP RELOC , NETWORK VARY EP-MODE @V250820 00268000 ST R1,SAVEWRK9 SAVE RESOURCE I.D. IN EBCDIC @VA01918 00269000 SPACE 00270000 TM NICTYPE,NICLINE IS THIS A LINE RESOURCE ? @V240820 00271000 BZ NET006R NO -- INVALID DEVICE TYPE @V240820 00272000 TM NICSTAT,NICEPMD+NICSWEP SWITCHABLE, NCP MODE ? @V240820 00273000 BNM NET098E NO -- CANNOT SWITCH MODE @V240820 00274000 LR R6,R7 SAVE THE LINE NICBLOK ADDRESS @V240820 00275000 LA R7,NICSIZE*8(0,R7) ADVANCE TO NEXT NICBLOK @V240820 00276000 TM NICFLAG,NICSESN+NICENAB RESOURCE IN USE ? @V240820 00277000 BNZ NET049E YES - ERROR @V240820 00278000 OI NICSTAT,NICDISA TEMPORARILY OFFLINE @VA01918 00279000 CHKSWCH EQU * SETUP FOR THE MODE SWITCH @V240820 00280000 LR R7,R6 BACK TO THE LINE NICBLOK @V240820 00281000 TM NICSTAT,NICLTRC IS LINE TRACE ACTIVE ? @V240820 00282000 BZ MODESWT NO -- O.K. TO CONTINUE @V240820 00283000 LR R9,R7 NICBLOK TO GR9 FOR DMKRNHND @V240820 00284000 LA R0,CTRMLTR TERMINATE LINE TRACE @V240820 00285000 CALL DMKRNHND,PARM=NORET . . . @VA01918 00286000 BNZ RETCOMP BAIL OUT IN CASE OF NCP FAILURE @VA01918 00287000 NI NICSTAT,255-NICLTRC . . . @VA01918 00288000 MODESWT EQU * SWITCH LINE MODE TO EMULATION @V240820 00289000 STM R7,R8,SAVEWRK3 SAVE THE NICBLOK AND RDEVBLOK @V240820 00290000 LH R1,NICEPAD ADDRESS WHEN IN EP-MODE @V240820 00291000 CALL DMKSCNRU SEE IF THE BLOCKS EXIST FOR IT @V240820 00292000 BC 4+2,NET098E CHANNEL OR CTL UNIT IS MISSING @V240820 00293000 SWITCH ENSURE WE ARE ON THE MAIN PROC @V407511 00293100 NI RCUSTAT-RCUBLOK(R7),255-RCUDISA VARY ON C.U. @V240820 00294000 LTR R8,R8 IS THERE ALREADY AN RDEVBLOK ? @V240820 00295000 BP SETRDEV YES - USE IT @V240820 00296000 L R8,SAVEWRK4 370X BASE RDEVBLOK AGAIN @V240820 00297000 ICM R15,15,RDEVEPDV TRY FOR A DYNAMIC RDEVBLOK @V240820 00298000 BZ NET098E NOPE -- CAN'T DO IT @V240820 00299000 MVC RDEVEPDV(4),RDEVEPDV-RDEVBLOK(R15) TAKE ONE @V240820 00300000 LR R8,R15 WORK WITH THE DYNAMIC BLOCK NOW @V240820 00301000 LA R5,X'00F8' CONTROL UNIT ADDRESS MASK @V240820 00302000 NR R5,R1 DEVICE ADDRESS IS STILL IN GR1 @V240820 00303000 SRL R5,2(0) SHIFT FOR INDEXING IN RCHCUTBL @V240820 00304000 LH R7,RCHCUTBL-RCHBLOK(R5,R6) TRY THIS ONE @V240820 00305000 LTR R7,R7 IS THIS THE CORRECT SLOT ? @V240820 00306000 BNM *+8 YES - USE IT @V240820 00307000 LH R7,RCHCUTBL-RCHBLOK-2(R5,R6) BACK UP ONE SLOT @V240820 00308000 AL R7,ARIOCU GR7 = PHYSICAL RCUBLOK ADDRESS @V240820 00309000 LA R5,X'000F' DEVICE ADDRESS MASK @V240820 00310000 NR R5,R1 EXTRACT THE DEVICE ADDRESS @V240820 00311000 STH R5,RDEVADD SET ADDRESS IN THE RDEVBLOK @V240820 00312000 SLL R5,1(0) SHIFT FOR RCUDVTBL INDEX @V240820 00313000 SL R15,ARIODV COMPUTE RDEVBLOK DISPLACEMENT @V240820 00314000 SRL R15,3(0) . . .IN DOUBLE-WORDS @V240820 00315000 STH R15,RCUDVTBL-RCUBLOK(R5,R7) CONNECT RDEVBLOK @V240820 00316000 ST R7,RDEVCUA . . . @V240820 00317000 SETRDEV EQU * INITIALIZE RDEVBLOK FIELDS @V240820 00318000 MVI RDEVSTAT,X'00' COMPLETELY FREE NOW @V240820 00319000 MVI RDEVFLAG,RDEVEPMD SWITCHED INTO EP-MODE @V240820 00320000 MVI RDEVTYPC,CLASTERM TERMINAL-CLASS DEVICE @V240820 00321000 XC RDEVTCTL(8),RDEVTCTL RESET CONTROL BYTES @V240820 00322000 MVI RDEVSADN,4 DO NOT USE 'SAD' COMMANDS @V240820 00323000 L R7,SAVEWRK3 LINE NICBLOK ADDRESS @V240820 00324000 MVI RDEVTYPE,TYP2700 MAYBE IT'S A BISYNCH LINE @V240820 00325000 TM NICTYPE,NICLBSC IS THAT CORRECT ? @V240820 00326000 BO SWCHMOD YES - SWITCH THE LINE MODE @V240820 00327000 LA R6,NICSIZE*8(0,R7) TRY THE NEXT NICBLOK @V240820 00328000 MVI RDEVTYPE,TYPUNDEF ASSUME IBM1 ADAPTER TYPE @V240820 00329000 MVI RDEVTMCD,RDEVPTTC . . . @V240820 00330000 TM NICTYPE-NICBLOK(R6),NICCIBM CORRECT ? @V240820 00331000 BO SWCHMOD YES -- @V240820 00332000 MVI RDEVTYPE,TYPTTY MUST BE TELEGRAPH TERMINAL @V240820 00333000 MVI RDEVTMCD,RDEVUSC8 USASCII-8 @V240820 00334000 SWCHMOD EQU * PERFORM THE MODE SWITCH @V240820 00335000 OI NICSTAT,NICEPMD LINE WILL BE IN EP-MODE @V240820 00336000 LR R9,R8 SAVE THE DYNAMIC RDEVBLOK @V240820 00337000 L R8,SAVEWRK4 370X BASE RDEVBLOK FOR DMKRNH @V240820 00338000 CALL DMKSCNRD GET THE BASE ADDRESS IN GR1 @V240820 00339000 STH R1,RDEVBASE-RDEVBLOK(,R9) SET RDEVBASE @V240820 00340000 OI RDEVFLAG,RDEVEPLN 370X HAS EP-MODE LINE ACTIVE@V240820 00341000 LA R0,CSWLMEP SWITCH LINE MODE TO EMULATION @V240820 00342000 LR R9,R7 NICBLOK TO GR9 FOR DMKRNH @VA01918 00343000 CALL DMKRNHND,PARM=NORET SWITCH THE LINE MODE @VA01918 00344000 B RETCOMP RETURN TO DMKNET @VA01918 00345000 EJECT 00346000 *. 00347000 * SUBROUTINE NAME - 00348000 * 00349000 * DMKNESWN - SWITCH LINE MODE TO NCP-MODE 00350000 * 00351000 * ATTRIBUTES - 00352000 * 00353000 * RE-ENTRANT, PAGEABLE, CALLED VIA SVC FROM DMKNETWK 00354000 * 00355000 * ENTRY CONDITIONS - 00356000 * 00357000 * GR13 = STANDARD SAVEAREA ADDRESS 00358000 * GR12 = ADDRESS OF DMKNESWN 00359000 * GR11 = VALID VMBLOK ADDRESS 00360000 * GR 8 = ADDRESS OF THE 370X RDEVBLOK 00361000 * GR 7 = ADDRESS OF THE SPECIFIED NICBLOK 00362000 * GR 1 = RESOURCE REFERENCE IN EBCDIC (4 CHARS) 00363000 * 00364000 * EXIT CONDITIONS - 00365000 * 00366000 * GR 0-1,3-13 RESTORED 00367000 * GR2 = ZERO --> SUCCESSFUL COMPLETION 00368000 * GR2 ¬= ZERO --> ERROR MESSAGE HAS BEEN ISSUED 00369000 * 00370000 * CALLS TO OTHER ROUTINES - 00371000 * 00372000 * DMKRNHND - TO SCHEDULE CONTROL FUNCTIONS FOR THE 370X NCP 00373000 * DMKSCNRU - TO LOCATE REAL DEVICE CONTROL BLOCKS 00374000 * DMKERMSG - TO FORMAT AND TYPE ERROR MESSAGES 00375000 * 00376000 * EXTERNAL REFERENCES - NONE 00377000 * 00378000 * TABLES / WORK AREAS - NONE 00379000 * 00380000 * REGISTER USAGE - 00381000 * 00382000 * GR14,15 EXTERNAL LINKAGE REGISTERS 00383000 * GR13 - SAVEAREA ADDRESSABILITY 00384000 * GR12 - MODULE BASE ADDRESSABILITY 00385000 * GR11 - VMBLOK ADDRESSABILITY 00386000 * GR 8 - RDEVBLOK ADDRESSABILITY 00387000 * GR 7 - NICBLOK AND RCUBLOK ADDRESSABILITY 00388000 * GR0-6,9 WORK REGISTERS 00389000 * 00390000 * NOTES - NONE 00391000 * 00392000 EJECT 00393000 * OPERATION - 00394000 * 00395000 * 1. MAKE SURE THAT THE SPECIFIED RESOURCE IS A LINE, AND 00396000 * THAT IT IS SWITCHABLE, AND IN EP-MODE AT THE MOMENT. 00397000 * MAKE SURE THAT THE EP-MODE LINE IS NOT IN USE. 00398000 * 00399000 * 2. SWITCH THE LINE BACK TO NCP-MODE VIA CALL DMKRNHND. 00400000 * 00401000 * 3. IF THE RDEVBLOK IN EP-MODE WAS DYNAMICALLY ASSIGNED, 00402000 * RETURN THE RDEVBLOK TO THE CHAIN OF DUMMY BLOCKS. 00403000 * 00404000 * ERROR MESSAGES - 00405000 * 00406000 * DMKNES006E INVALID DEVICE TYPE - XXXX 00407000 * DMKNES049E DEV XXXX IN USE 00408000 * DMKNES098E DEV XXXX MODE SWITCH NOT POSSIBLE 00409000 *. 00410000 EJECT 00411000 DMKNESWN RELOC , NETWORK VARY NCP-MODE @V250820 00412000 ST R1,SAVEWRK9 SAVE RESOURCE I.D. IN EBCDIC @VA01918 00413000 SPACE 00414000 TM NICTYPE,NICLINE IS THIS A LINE RESOURCE ? @V240820 00415000 BZ NET006R NO -- CANNOT SWITCH IT @V240820 00416000 TM NICSTAT,NICEPMD+NICSWEP SWITCHABLE, EP-MODE ? @V240820 00417000 BNO NET098E NO -- ERROR @V240820 00418000 STM R7,R8,SAVEWRK3 SAVE NICBLOK AND BASE RDEVBLOK @V240820 00419000 LH R1,NICEPAD EMULATION SUB-CHANNEL ADDRESS @V240820 00420000 CALL DMKSCNRU FIND THE REAL DEVICE BLOCKS @V240820 00421000 BNZ NET098E NOT THERE - CANNOT SWITCH IT @V240820 00422000 SWITCH ENSURE WE ARE ON THE MAIN PROC @V407511 00422100 TM RDEVFLAG,RDEVENAB IS THE EP-MODE LINE ENABLED @V240820 00423000 BO NET049E YES - LINE IS IN USE @V240820 00424000 TM RDEVSTAT,RDEVDED+RDEVIRM CHECK AGAIN @V240820 00425000 BNZ NET049E YUP - IN USE @V240820 00426000 OI RDEVSTAT,RDEVDISA VARY IT OFFLINE @V240820 00427000 L R9,SAVEWRK3 NICBLOK TO GR9 FOR DMKRNHND @V240820 00428000 ST R8,SAVEWRK3 SAVE THE RDEVBLOK ADDRESS @V240820 00429000 L R8,SAVEWRK4 BASE RDEVBLOK TO GR8 @V240820 00430000 LA R0,CSWLNCP SWITCH LINE MODE TO THE NCP @V240820 00431000 CALL DMKRNHND,PARM=NORET,AFFINITY ... @V407511 00432100 LR R7,R9 NICBLOK TO GR7 AGAIN @V240820 00433000 NI NICSTAT,255-NICEPMD NO LONGER IN EP-MODE @V240820 00434000 LA R7,NICSIZE*8(0,R7) POINT TO TERMINAL NICBLOK @VA01918 00435000 NI NICSTAT,255-NICDISA VARY IT BACK ONLINE @VA01918 00436000 L R8,SAVEWRK3 LINE RDEVBLOK AGAIN @V240820 00437000 TM RDEVFLAG,RDEVEPMD WAS THE RDEVBLOK SWITCHED ? @V240820 00438000 BZ RETCOMP NO -- JUST RETURN @VA01918 00439000 L R7,RDEVCUA PHYSICAL CONTROL UNIT ADDRESS @V240820 00440000 LH R1,RDEVADD DEVICE ADDRESS BY ITSELF @V240820 00441000 SLL R1,1(0) SHIFT FOR RCUDVTBL INDEX @V240820 00442000 L R2,FFS X'FFFFFFFF' @V240820 00443000 STH R2,RCUDVTBL-RCUBLOK(R1,R7) DETACH RDEVBLOK @V240820 00444000 STH R2,RDEVADD . . . @V240820 00445000 L R7,SAVEWRK4 BASE RDEVBLOK TO GR7 @V240820 00446000 L R6,RDEVEPDV-RDEVBLOK(,R7) START OF CHAIN @V240820 00447000 ST R8,RDEVEPDV-RDEVBLOK(,R7) ADD THIS ONE @V240820 00448000 ST R6,RDEVEPDV . . . @V240820 00449000 B RETCOMP CONTINUE VARY IN DMKNET @VA01918 00450000 EJECT 00451000 *. 00452000 * SUBROUTINE NAME - 00453000 * 00454000 * DMKNESDS - PROCESS NETWORK DISPLAY COMMAND OPTION 00455000 * 00456000 * ATTRIBUTES - 00457000 * 00458000 * RE-ENTRANT, PAGEABLE, CALLED VIA SVC FROM DMKNETWK 00459000 * 00460000 * ENTRY CONDITIONS - 00461000 * 00462000 * GR13 = STANDARD SAVEAREA ADDRESS 00463000 * GR12 = ADDRESS OF DMKNESDS 00464000 * GR11 = VALID VMBLOK ADDRESS 00465000 * GR 9 = CONSOLE FUNCTION COMMAND BUFFER ADDRESS 00466000 * 00467000 * EXIT CONDITIONS - 00468000 * 00469000 * GR0-1,3-13 RESTORED 00470000 * GR2 = ZERO --> COMPLETED SUCCESSFULLY 00471000 * GR2 ¬= ZERO --> ERROR MESSAGE HAS BEEN ISSUED 00472000 * 00473000 * CALLS TO OTHER ROUTINES - 00474000 * 00475000 * DMKSCNFD - TO LOCATE COMMAND-LINE OPERANDS 00476000 * DMKSCNRU - TO LOCATE REAL DEVICE CONTROL BLOCKS 00477000 * DMKCVTHB - TO CONVERT HEXADECIMAL TO BINARY VALUES 00478000 * DMKCVTBH - TO CONVERT BINARY DATA FOR OUTPUT 00479000 * DMKRNHND - TO READ 370X STORAGE VIA CONTROL COMMAND 00480000 * DMKQCNWT - TO TYPE OUT 370X STORAGE CONTENTS 00481000 * 00482000 * EXTERNAL REFERENCES - NONE 00483000 * 00484000 * TABLES / WORK AREAS - NONE 00485000 * 00486000 * REGISTER USAGE - 00487000 * 00488000 * GR14-15 EXTERNAL LINKAGE REGISTERS 00489000 * GR13 - SAVEAREA ADDRESSABILITY 00490000 * GR12 - MODULE BASE ADDRESSABILITY 00491000 * GR11 - VMBLOK ADDRESSABILITY 00492000 * GR10 - BUFFER INDEX FOR BINARY DATA TO BE TYPED 00493000 * GR 9 - PARM REG FOR DMKRNHND, OUTPUT BUFFER ADDRESS 00494000 * GR 8 - RDEVBLOK ADDRESSABILITY 00495000 * GR 7 - BUFFER INDEX FOR OUTPUT BUFFER FORMATTING 00496000 * GR 6 - ADDRESSABILITY TO BUFFER FROM DMKRNHND 00497000 * GR 4-5 DISPLAY ADDRESS CONTROL REGISTERS 00498000 * GR 0-3 WORK REGISTERS 00499000 * 00500000 * NOTES - NONE 00501000 * 00502000 EJECT 00503000 * OPERATION - 00504000 * 00505000 * 1. SCAN AND INTERPRET THE COMMAND LINE TO DETERMINE 00506000 * WHICH 370X IS TO BE REFERENCED, AND WHICH ADDRESSES 00507000 * ARE TO BE DISPLAYED. MAKE SURE THAT THE SPECIFIED 370X 00508000 * HAS AN ACTIVE NETWORK CONTROL PROGRAM (OR PEP). 00509000 * 00510000 * 2. RETRIEVE THE REQUESTED DATA 32 BYTES AT A TIME VIA 00511000 * CALLS TO DMKRNHND WITH THE 'DISPLAY STORAGE' COMMAND. 00512000 * 00513000 * 3. FORMAT THE DATA IN HEXADECIMAL FOR TYPING VIA CALLS 00514000 * TO DMKQCNWT. STOP PROCESSING IF THE USER HITS THE 00515000 * 'ATTN' KEY, OR IF AN ERROR IS RECEIVED FROM THE NCP. 00516000 * 00517000 * RESPONSES - 00518000 * 00519000 * ADDRES DATADATA DATADATA DATADATA DATADATA 00520000 * 00521000 * ERROR MESSAGES - 00522000 * 00523000 * DMKNES021E RADDR MISSING OR INVALID 00524000 * DMKNES004E HEXLOC MISSING OR INVALID 00525000 * DMKNES040E DEV XXX DOES NOT EXIST 00526000 * DMKNES006E INVALID DEVICE TYPE - XXX 00527000 * DMKNES046E CTLR XXX OFFLINE 00528000 * DMKNES140E CTLR XXX ATTACHED TO USERIDXX 00529000 * DMKNES009E INVALID RANGE - RANGE 00530000 * DMKNES160E HEXLOC XXXXXX EXCEEDS STORAGE 00531000 *. 00532000 EJECT 00533000 DMKNESDS RELOC , NETWORK DISPLAY - 370X STORAGE @V250820 00534000 MVI SAVEWRK1,X'00' CLEAR FLAG FIELD @V2D3931 00535000 SPACE 00536000 CALL DMKSCNFD LOCATE THE RADDR OPERAND @V200820 00537000 BNZ NET021E MISSING OR INVALID @V200820 00538000 BAL R10,GETRDEV FIND AND VALIDATE THE RDEVBLOK @V240820 00539000 SLR R1,R1 COMPUTE STORAGE SIZE OF THIS 370X@V200820 00540000 IC R1,RDEVMDL MODEL NUMBER 1 - 8 @V200820 00541000 SLL R1,14(0) MODEL TIMES 16K = STORAGE SIZE @V240820 00542000 ST R1,SAVEWRK9 PUT IT DOWN FOR LATER @V200820 00543000 CALL DMKSCNFD FIND THE STORAGE ADDRESS @V200820 00544000 BNZ NET033E HEXLOC MISSING @V200820 00545000 STM R0,R1,SAVEWRK2 SAVE THE FIRST SCAN RESULTS @V200820 00546000 LR R3,R1 @V200820 00547000 LR R2,R0 @V200820 00548000 HEXSCAN EQU * SCAN FOR IMBEDDED DELIMITER @V200820 00549000 MVI SAVEWRK1,DSPRANG ASSUME A RANGE FORMAT @V200820 00550000 CLI 0(R1),C'-' CHECK FOR VALID DELIMITERS @V200820 00551000 BE HEXDASH @V200820 00552000 CLI 0(R1),C':' . . . @V200820 00553000 BE HEXDASH @V200820 00554000 MVI SAVEWRK1,DSPLNTH SHOW LENGTH SPECIFICATION @V200820 00555000 CLI 0(R1),C'.' . . . @V200820 00556000 BE HEXDASH @V200820 00557000 LA R1,1(0,R1) NEXT CHARACTER @V200820 00558000 BCT R0,HEXSCAN . . . @V200820 00559000 MVI SAVEWRK1,DSPSCAN CALL TO DMKSCNFD NEEDED @V200820 00560000 HEXDASH EQU * @V200820 00561000 STH R0,SAVEWRK1+2 SAVE RESIDUAL LENGTH @V200820 00562000 ST R1,SAVEWRK4 AND THE RESIDUAL ADDRESS @V200820 00563000 SR R1,R3 R1 = LENGTH OF FIRST HEXLOC @V200820 00564000 BNP NET004E INVALID IF NOT SOMETHING @V200820 00565000 LR R0,R1 LENGTH TO GR0 @V200820 00566000 LR R1,R3 START ADDRESS TO GR1 @V200820 00567000 CALL DMKCVTHB ATTEMPT CONVERSION @V200820 00568000 BNZ NET004E @V200820 00569000 LR R4,R1 SAVE STARTING ADDRESS @V200820 00570000 N R4,=F'-4' ROUND DOWN TO A FULL-WORD @V200820 00571000 CL R4,SAVEWRK9 WITHIN BOUNDS OF 370X STORAGE ? @V200820 00572000 BL HEXLOC1 YES -- @V200820 00573000 L R2,SAVEWRK4 RESIDUAL ADDRESS FROM SCAN @V200820 00574000 SR R2,R3 GR2 = LENGTH OF INVALID FIELD @V200820 00575000 B NET160E @V200820 00576000 SPACE 2 00577000 HEXLOC1 EQU * CHECK FOR NEXT HALF OF RANGE @V200820 00578000 LR R5,R4 DEFAULT ENDING = START ADDRESS @V200820 00579000 LH R0,SAVEWRK1+2 RESIDUAL SCAN COUNT @V200820 00580000 L R1,SAVEWRK4 ...AND ADDRESS @V200820 00581000 CLI SAVEWRK1,DSPSCAN NEED TO CALL DMKSCNFD ? @V200820 00582000 BNE HEXLOC2 NO -- @V200820 00583000 CALL DMKSCNFD TRY TO FIND THE DELIMITER @V200820 00584000 BNZ HEXLOCK NOPE - SINGLE ADDRESS @V200820 00585000 MVI SAVEWRK1,DSPRANG ASSUME RANGE FORMAT @V200820 00586000 CLI 0(R1),C'-' @V200820 00587000 BE HEXLOC2 @V200820 00588000 CLI 0(R1),C':' @V200820 00589000 BE HEXLOC2 @V200820 00590000 MVI SAVEWRK1,DSPLNTH MUST BE LENGTH FORMAT @V200820 00591000 CLI 0(R1),C'.' @V200820 00592000 BNE NET002E NOPE - INVALID OPERAND @V200820 00593000 HEXLOC2 EQU * @V200820 00594000 LA R1,1(0,R1) SKIP OVER THE DELIMITER @V200820 00595000 LR R7,R1 SAVE LAST UN-SCANNED ADDRESS@V200820 00596000 AR R7,R0 . . . @V200820 00597000 ST R7,SAVEWRK4 . . . @V200820 00598000 BCT R0,HEXLOC3 DECREMENT AND TEST COUNT @V200820 00599000 CALL DMKSCNFD LOOK FOR SECOND RANGE OPERAND @V200820 00600000 BNZ HEXLOC4 NOPE - DEFAULT TO END OF STORAGE @V200820 00601000 HEXLOC3 EQU * @V200820 00602000 CL R0,F3 MIGHT IT BE 'END' OPTION ? @V200820 00603000 BNE HEXLOC5 NO -- TRY TO CONVERT IT @V200820 00604000 CLC 0(3,R1),=C'END ' . . . @V200820 00605000 BNE HEXLOC5 NO -- @V200820 00606000 HEXLOC4 EQU * DEFAULT TO END OF 370X STORAGE @V200820 00607000 L R5,SAVEWRK9 END OF STORAGE ADDRESS @V200820 00608000 B HEXLOCD GO START THE DISPLAY @V200820 00609000 SPACE 2 00610000 * BITS DEFINED IN SAVEWRK1 FOR NETWORK DISPLAY: 00611000 DSPRANG EQU X'80' DISPLAY - RANGE SPECIFIED @V200820 00612000 DSPLNTH EQU X'40' DISPLAY - LENGTH SPECIFIED @V200820 00613000 DSPSCAN EQU X'20' DISPLAY - CALL DMKSCNFD NEEDED @V200820 00614000 DSPFRET EQU X'10' BTU BUFFER TO BE RELEASED @VA01893 00615000 SPACE 1 00616000 * BITS DEFINED IN SAVEWRK1 FOR 3270 REMOTE SUPPORT 00617000 SHUT EQU X'01' PROCESS 3270 REMOTE SUPPORT @V2D3931 00618000 POLLDLY EQU X'03' PROCESS POLLDLAY SUB-COMMAND @VM01029 00619000 EJECT 00620000 HEXLOC5 EQU * SETUP FOR SECOND PART OF RANGE @V200820 00621000 LR R2,R0 SAVE THE LENGTH @V200820 00622000 LR R3,R1 ...AND ADDRESS @V200820 00623000 LA R7,0(R2,R3) GR7 = LAST UNSCANNED BYTE @V200820 00624000 ST R7,SAVEWRK4 @V200820 00625000 CALL DMKCVTHB TRY TO CONVERT @V200820 00626000 BNZ NET004E NO GOOD @V200820 00627000 S R1,F1 SUBTRACT 1 FROM LENGTH @VA02255 00628000 BM NET004E MUST HAVE BEEN LENGTH OF ZERO!! @VA02255 00629000 A R1,F1 RESTORE IT. @VA02255 00630000 LR R5,R1 ENDING ADDRESS TO GR5 @V200820 00631000 CL R5,SAVEWRK9 VALID ADDRESS ? @V200820 00632000 BH NET160E NO -- @V200820 00633000 TM SAVEWRK1,DSPLNTH IS IT REALLY A LENGTH ? @V200820 00634000 BZ HEXLOCK NO -- ALL SET AS IS @V200820 00635000 LA R5,0(R4,R5) ADD TO STARTING ADDRESS @V200820 00636000 CL R5,SAVEWRK9 MAKE SURE THE LENGTH WAS O.K. @V200820 00637000 BNH HEXLOCD YES -- START DISPLAY @VM01080 00638000 LA R4,8(0,R5) FORCE AN INVALID RANGE @VM01080 00639000 SPACE 00640000 HEXLOCK EQU * VALIDATE THE SPECIFIED RANGE @V200820 00641000 L R0,SAVEWRK4 SETUP IN CASE OF ERROR @V200820 00642000 L R1,SAVEWRK3 @V200820 00643000 SR R0,R1 LENGTH OF RANGE, INCLUDING BLANKS@V200820 00644000 CLR R5,R4 IS THIS A VALID RANGE ? @V200820 00645000 BL NET009E NO -- @V200820 00646000 HEXLOCD EQU * START OF DISPLAY ROUTINE @V200820 00647000 BCTR R5,0 DECREMENT END FOR TESTING @V200820 00648000 LA R0,6 GET A DISPLAY BUFFER @V200820 00649000 CALL DMKFREE @V200820 00650000 LR R9,R1 ADDRESS VIA GR9 @V200820 00651000 ST R9,SAVEWRK8 SAVE BUFFER ADDRESS HERE, ALSO @V240820 00652000 HEXLOCW EQU * DISPLAY 16 BYTES OF 370X STORAGE @V200820 00653000 L R9,RDEVNICL GR9 = ADDRESS OF BASE NICBLOK @V240820 00654000 ST R4,SAVEWRK4 DISPLAY ADDRESS INTO SAVEAREA @V240820 00655000 L R1,SAVEWRK9 END OF STORAGE TO GR1 @VA02195 00656000 SR R1,R4 SEE IF WE ARE CLOSE TO THE END @VA02195 00657000 CH R1,=H'32' WITHIN 32 BYTES OF THE END ? @VA02195 00658000 BNL *+8 NO -- EVERYTHING'S O.K. @VA02195 00659000 NI SAVEWRK4+3,X'E0' FORCE DOWN TO 32-BYTE BND @VA02195 00660000 LA R1,SAVEWRK4 GR1 = ADDRESS OF BTU DATA FIELD @V240820 00661000 LA R0,CDISPLY GR0 = DISPLAY STORAGE COMMAND @V240820 00662000 CALL DMKRNHND,PARM=4(0) GR2 = DATA FIELD LENGTH @V240820 00663000 LR R6,R1 SAVE RETURNED BTU ADDRESS @V200820 00664000 CH R2,=H'12' 370X FAILURE ? @V200820 00665000 BE HEXFRTX YES - QUIT RAPIDLY @V200820 00666000 USING CONCCW3,R6 @V200820 00667000 OI SAVEWRK1,DSPFRET BUFFER MUST BE RELEASED @VA01893 00668000 CLI CONSYSR,X'60' COMPLETE WITHOUT ERROR ? @V200820 00669000 BNE HEXFRTX NO -- BAIL OUT RIGHT AWAY @VA01893 00670000 SPACE 00671000 LR R10,R4 NEXT DISPLAY ADDRESS TO GR10 @VA02195 00672000 SL R10,SAVEWRK4 COMPUTE BUFFER INDEX @VA02195 00673000 HEXLOCT EQU * EDIT DATA FOR OUTPUT @V200820 00674000 L R9,SAVEWRK8 POINTER TO THE DISPLAY BUFFER @VM01080 00675000 MVC 0(8,R9),BLANKS CLEAR THE BUFFER @VM01080 00676000 MVC 8(5*8,R9),0(R9) . . . @VM01080 00677000 LR R1,R4 GR4 = START ADDR FOR THIS LINE @VA02195 00678000 CALL DMKCVTBH CONVERT ADDRESS TO EBCDIC @V200820 00679000 STH R0,0(0,R9) USE SIX BYTES FOR ADDRESS @V200820 00680000 STCM R1,15,2(R9) @V200820 00681000 LA R7,10(0,R9) FIRST DATA WORD SLOT @V200820 00682000 LA R3,4(0,0) NUMBER OF TIMES THROUGH LOOP @V200820 00683000 HEXLOCE EQU * @V200820 00684000 L R1,CONDATA+4(R10) NEXT DATA WORD @V200820 00685000 CALL DMKCVTBH @V200820 00686000 STCM R0,15,0(R7) @V200820 00687000 STCM R1,15,4(R7) @V200820 00688000 LA R4,4(0,R4) NEXT STORAGE ADDRESS @V200820 00689000 LA R7,10(0,R7) NEXT OUTPUT SLOT @V200820 00690000 CR R4,R5 HAVE WE HIT THE END YET ? @V200820 00691000 BH HEXLOCC YES - CLEAN UP AND GET OUT @V200820 00692000 LA R10,4(0,R10) NEXT RETURNED DATA WORD @V200820 00693000 BCT R3,HEXLOCE @V200820 00694000 SPACE 00695000 HEXLOCC EQU * WRITE ONE CONSOLE LINE @V200820 00696000 LA R0,6*8 LENGTH FOR WRITE @V200820 00697000 LR R1,R9 START ADDRESS @V200820 00698000 CALL DMKQCNWT,PARM=0 WAIT FOR THE RESPONSE @V200820 00699000 BNZ HEXFRTX SOMETHING WRONG - QUIT NOW @V200820 00700000 CR R4,R5 WAS THAT THE LAST ONE ? @V200820 00701000 BNL HEXFRTX YES -- RELEASE BUFFERS + EXIT @VA01893 00702000 CH R10,=H'32' ANY MORE IN THIS BUFFER ? @VA02195 00703000 BL HEXLOCT YES -- FORMAT ANOTHER LINE @VA02195 00704000 LH R0,CONCCW3 SIZE OF THE BTU BUFFER @VA01893 00705000 LR R1,R6 . . . @VA01893 00706000 CALL DMKFRET RELEASE THIS BTU @VA01893 00707000 NI SAVEWRK1,255-DSPFRET . . . @VA01893 00708000 B HEXLOCW GO GET SOME MORE DATA @VA01893 00709000 EJECT 00710000 HEXFRTX EQU * CLEAN UP AND EXIT TO DMKCFM @V200820 00711000 L R1,SAVEWRK8 ADDRESS OF THE DISPLAY BUFFER @V240820 00712000 LA R0,6 @V200820 00713000 CALL DMKFRET RELEASE THE DISPLAY BUFFER @V200820 00714000 SPACE 00715000 TM SAVEWRK1,DSPFRET BTU BUFFER TO BE RELEASED ? @VA01893 00716000 BZ RETCOMP NOPE - ALL FINISHED @VA01893 00717000 LH R0,CONCCW3 SIZE OF THE BUFFER @VA01893 00718000 LR R1,R6 . . . @VA01893 00719000 CALL DMKFRET RETURN IT TO FREE STORAGE @VA01893 00720000 B RETCOMP COMMAND IS COMPLETE - NO MSG @V200820 00721000 DROP R6 @VA01893 00722000 EJECT 00723000 *. 00724000 * SUBROUTINE NAME - 00725000 * 00726000 * DMKNESTR - PROCESS THE 'NETWORK TRACE' COMMAND OPTIONS 00727000 * 00728000 * ATTRIBUTES - 00729000 * 00730000 * SERIALLY REUSEABLE, PAGEABLE, CALLED VIA SVC FROM DMKNET 00731000 * 00732000 * ENTRY CONDITIONS - 00733000 * 00734000 * GR13 = STANDARD SAVEAREA ADDRESS 00735000 * GR12 = ADDRESS OF DMKNESTR 00736000 * GR11 = VALID VMBLOK ADDRESS 00737000 * GR 9 = CONSOLE FUNCTION COMMAND BUFFER ADDRESS 00738000 * 00739000 * EXIT CONDITIONS - 00740000 * 00741000 * GR0-1,3-13 RESTORED 00742000 * GR2 = ZERO --> SUCCESSFUL COMPLETION 00743000 * GR2 ¬= ZERO --> ERROR MESSAGE HAS BEEN ISSUED 00744000 * 00745000 * CALLS TO OTHER ROUTINES - 00746000 * 00747000 * DMKSCNFD - TO LOCATE COMMAND-LINE OPERANDS 00748000 * DMKSCNRU - TO LOCATE REAL DEVICE CONTROL BLOCKS 00749000 * DMKCVTHB - TO CONVERT HEXADECIMAL FIELDS TO BINARY 00750000 * DMKERMSG - TO FORMAT AND TYPE ERROR MESSAGES 00751000 * DMKQCNWT - TO WRITE COMPLETION RESPONSE 00752000 * 00753000 * EXTERNAL REFERENCES - 00754000 * 00755000 * DMKRIORN - TABLE OF 370X INTERFACES IN DMKRIO 00756000 * DMKRNHTR - HOLD FIELD FOR TRACE USERID IN DMKRNH 00757000 * 00758000 * TABLES / WORK AREAS - NONE 00759000 * 00760000 * REGISTER USAGE - 00761000 * 00762000 * GR14-15 EXTERNAL LINKAGE REGISTERS 00763000 * GR13 - SAVEAREA ADDRESSABILITY 00764000 * GR12 - MODULE BASE ADDRESSABILITY 00765000 * GR11 - VMBLOK ADDRESSABILITY 00766000 * GR10 - INTERNAL LINKAGE REGISTER 00767000 * GR 9 - CONSOLE FUNCTION COMMAND BUFFER ADDRESS 00768000 * GR 8 - RDEVBLOK ADDRESSABILITY 00769000 * GR 7 - NICBLOK ADDRESSABILITY 00770000 * GR 0-6 WORK REGISTERS 00771000 * 00772000 * NOTES - NONE 00773000 * 00774000 EJECT 00775000 * OPERATION - 00776000 * 00777000 * 1. VALIDATE THE SPECIFIED OPTION. IF TRACE IS ALREADY 00778000 * ACTIVE, MAKE SURE THIS IS THE SAME USER WHO PREVIOUSLY 00779000 * ISSUED THE NETWORK TRACE COMMAND(S). 00780000 * 00781000 * 2. IF 'END' SPECIFIED, TERMINATE TRACING BY MOVING 00782000 * BLANKS INTO 'DMKRNHTR' - DMKRNH WILL STOP TRACING LATER 00783000 * 00784000 * 3. IF 'BTU' TRACE REQUESTED, TURN ON 'RDEVTBTU' IN THE 00785000 * 370X RDEVBLOK, MOVE THE USERID INTO DMKRNHTR. 00786000 * 00787000 * 4. IF LINE TRACE REQUESTED, FILL IN DMKRNHTR, THEN START 00788000 * THE TRACE VIA A CALL TO DMKRNHND FOR 'CACTLTR' COMMAND. 00789000 * 00790000 * RESPONSES - 00791000 * 00792000 * TRACE STARTED - FOR NETWORK TRACE BTU OR RESOURCE 00793000 * COMMAND COMPLETE - FOR NETWORK TRACE END 00794000 * 00795000 * ERROR MESSAGES - 00796000 * 00797000 * DMKNES006E INVALID DEVICE TYPE - XXX 00798000 * DMKNES026E OPERAND MISSING OR INVALID 00799000 * DMKNES021E RADDR MISSING OR INVALID 00800000 * DMKNES040E DEV XXX DOES NOT EXIST 00801000 * DMKNES046E DEV XXX OFFLINE 00802000 * DMKNES140E CTLR XXX ATTACHED TO USERIDXX 00803000 * DMKNES002E INVALID OPERAND - OPERAND 00804000 * DMKNES049E DEV XXXX IN USE 00805000 * DMKNES175E NETWORK TRACE ALREADY IN USE BY USERIDXX 00806000 *. 00807000 EJECT 00808000 DMKNESTR RELOC , NETWORK TRACE BTU RADDR @V250820 00809000 MVI SAVEWRK1,X'00' CLEAR FLAG FIELD @V2D3931 00810000 SPACE 00811000 CALL DMKSCNFD LOCATE THE SECOND PARM @V200820 00812000 BNZ NET026E IT IS A REQUIRED OPERAND @V200820 00813000 L R4,=A(DMKRNHTR) HOLD FIELD FOR TRACE USERID @V200820 00814000 CLC 0(8,R4),BLANKS IN USE AT ALL ? @V200820 00815000 BE NETRA01A NO -- O.K. @V200820 00816000 CLC 0(8,R4),VMUSER IN USE BY SOMEONE ELSE ? @V200820 00817000 BNE NET175E YES -- ERROR @V200820 00818000 NETRA01A EQU * @V200820 00819000 CL R0,F3 PARM LONGER THAN 'BTU' ? @V200820 00820000 BNE NETRA02 YES -- CHECK FOR RESOURCE I.D. @V200820 00821000 CLC 0(3,R1),=C'BTU ' BTU TRACE REQUEST ? @V200820 00822000 BNE NETRA01 NO -- CHECK FOR TRACE END @VM01006 00823000 CALL DMKSCNFD SCAN FOR THE DEVICE ADDRESS @V200820 00824000 BNZ NET021E RADDR MISSING OR INVALID @V200820 00825000 BAL R10,GETRDEV FIND AND VALIDATE THE RDEVBLOK @V240820 00826000 L R4,=A(DMKRNHTR) HOLD FIELD FOR TRACE USERID @V200820 00827000 MVC 0(8,R4),VMUSER TRACE FOR THIS USER @V200820 00828000 SWITCH ENSURE WE ARE ON THE MAIN PROC @V407511 00828100 OI RDEVFLAG,RDEVTBTU TURN ON BTU TRACING @V200820 00829000 B NETRAST GIVE VERIFICATION MESSAGE @V200820 00830000 SPACE 00831000 NETRA01 EQU * CHECK FOR TRACE TERMINATION @VM01006 00832000 CLC 0(3,R1),=C'END ' TERMINATION REQUEST ? @VM01006 00833000 BNE NET002E NO -- INVALID OPERAND @VM01006 00834000 MVC 0(8,R4),BLANKS CLEAR OUT USERID (DMKRNHTR) @VM01006 00835000 B CMDCOMP COMMAND IS COMPLETE @VM01006 00836000 EJECT 00837000 NETRA02 EQU * MAYBE 'TRACE RESOURCE' FORM @V200820 00838000 BAL R10,SCANCVT VALIDATE R.I.D. AND GET NICBLOK @V200820 00839000 TM NICTYPE,NICLINE IS THIS A LINE ? @V200820 00840000 BZ NET006R NO -- NOT VALID FOR TERMINAL@V200820 00841000 TM NICSTAT,NICEPMD IN EMULATOR MODE ? @V200820 00842000 BO NET049E YES - CALL IT IN USE @V200820 00843000 TM NICSTAT,NICDISA IS THE LINE ACTIVE ? @VM01011 00844000 BO NET046R NO -- CAN'T USE LINE TRACE @VM01011 00845000 TM NICSTAT,NICLTRC IS TRACE ALREADY ACTIVE ? @V200820 00846000 BO RETCOMP YES - JUST EXIT @V200820 00847000 OI NICSTAT,NICLTRC LINE TRACE IS ACTIVE @V200820 00848000 L R4,=A(DMKRNHTR) HOLD FIELD FOR TRACE USERID @V200820 00849000 MVC 0(8,R4),VMUSER TRACE FOR THIS USER @V200820 00850000 LA R0,CACTLTR ACTIVATE LINE TRACE @V200820 00851000 LA R1,F4+3 TIME INTERVAL = 0.4 SECONDS @VM01016 00852000 LR R9,R7 NICBLOK TO GR9 FOR DMKRNHND @VM01016 00853000 CALL DMKRNHND,PARM=NORET+1 DATA LENGTH = ONE BYTE @VM01016 00854000 NETRAST EQU * MESSAGE AT END OF COMMAND @V200820 00855000 MSG 'TRACE STARTED' @V200820 00856000 CALL DMKQCNWT,PARM=NORET @V200820 00857000 B RETCOMP RETURN TO DMKCFM @V200820 00858000 EJECT 00859000 *. 00860000 * SUBROUTINE NAME - 00861000 * 00862000 * DMKNESPL - PROCESS THE 'NETWORK POLLDLAY' COMMAND 00863000 * 00864000 * ATTRIBUTES - 00865000 * 00866000 * RE-ENTRANT, PAGEABLE, CALLED VIA SVC FROM DMKNETWK 00867000 * 00868000 * ENTRY CONDITIONS - 00869000 * 00870000 * GR13 = STANDARD SAVEAREA ADDRESS 00871000 * GR12 = ADDRESS OF DMKNESHD 00872000 * GR11 = VALID VMBLOK ADDRESS 00873000 * GR 9 = CONSOLE FUNCTION COMMAND BUFFER ADDRESS 00874000 * 00875000 * EXIT CONDITIONS - 00876000 * 00877000 * GR0-1, 3-13 RESTORED 00878000 * GR2 = ZERO --> SUCCESSFULL EXECUTION 00879000 * GR2 ¬= ZERO -> ERROR MESSAGE HAS BEEN ISSUED 00880000 * 00881000 * CALLS TO OTHER ROUTINES - 00882000 * 00883000 * DMKSCNFD - TO LOCATE COMMAND OPERANDS 00884000 * DMKSCNRU - TO LOCATE REAL DEVICE CONTROL BLOCKS 00885000 * DMKCVTDB - TO CONVERT DECIMAL TO BINARY 00886000 * 00887000 * EXTERNAL REFERENCES - 00888000 * 00889000 * DMKRIORN - TABLE OF 3270 REMOTE BISYNC LINES IN DMKRIO 00890000 * 00891000 * TABLES / WORK AREAS - NONE 00892000 * 00893000 * REGISTER USAGE - 00894000 * 00895000 * GR14-15 EXTERNAL LINKAGE REGISTERS 00896000 * GR13 - SAVEAREA ADDRESSABILITY 00897000 * GR12 - MODULE BASE ADDRESSABILITY 00898000 * GR11 - VMBLOK ADDRESSABILITY 00899000 * GR10 - INTERNAL LINKAGE REGISTER 00900000 * GR 9 - COMMAND BUFFER ADDRESSABILITY 00901000 * GR 8 - RDEVBLOK ADDRESSABILITY 00902000 * GR 7 - NICBLOK ADDRESSABILITY 00903000 * GR 0-6 WORK REGISTERS 00904000 * 00905000 * NOTES - NONE 00906000 * 00907000 * OPERATION - 00908000 * 00909000 * 1. VALIDATE THE OPERAND SPECIFIED. IF NONE, ASSUME 'ALL'. 00910000 * DMKQCNTO. MARK THE 370X AS FREE. 00911000 * 00912000 * RESPONSES - 00913000 * 00914000 * COMMAND COMPLETE 00915000 * 00916000 * ERROR MESSAGES - 00917000 * 00918000 * DMKNES002E INVALID OPERAND - OPERAND 00919000 * DMKNES006E INVALID DEVICE TYPE - XXX 00920000 * DMKNES021E RADDR MISSING OR INVALID 00921000 * DMKNES040E DEV XXX DOES NOT EXIST 00922000 * DMKNES046E LINE XXX OFFLINE 00923000 * DMKNES706E LINE XXX NOT ENABLED 00924000 *. 00925000 SPACE 2 00926000 DMKNESPL RELOC , NETWORK POLLDLAY NNNN RADDR @V2D3931 00927000 MVI SAVEWRK1,POLLDLY SET INDICATOR FOR POLL DELAY @VM01029 00928000 CALL DMKSCNFD WAS AN INTERVAL TIME SPECIFIED @V2D3931 00929000 BNZ NET026E IT IS A REQUIRED OPERAND @V2D3931 00930000 CL R0,F4 MUST BE LESS THAN FIVE CHARS @V2D3931 00931000 BH NET002E NO, INVALID OPERAND @V2D3931 00932000 STM R0,R1,SAVEWRK2 SAVE PARAMETER REGISTERS @V2D3931 00933000 CALL DMKCVTDB CONVERT DECIMAL TO BINARY @V2D3931 00934000 BNZ NET026E INVALID OPERAND @V2D3931 00935000 LTR R5,R1 TIME INTERVAL (IN TENTHS OF A @VA13093 00936100 * SECOND) GREATER THAN ZERO? 00936200 LM R0,R1,SAVEWRK2 GET PARAMETER REGISTERS @V2D3931 00938000 BNP NET002E NO - ISSUE ERROR MESSAGE @VA13093 00938100 CALL DMKSCNFD WAS AN ADDRESS SPECIFIED @V2D3931 00939000 BNZ NESPOLL NO, DEFAULT IS -ALL- @V2D3931 00940000 CL R0,F3 MUST BE LESS THAN FOUR CHARS @V2D3931 00941000 BH NET002E NO, INVALID OPERAND @V2D3931 00942000 CLC 0(3,R1),=C'ALL ' WAS ALL SPECIFIED ? @V2D3931 00943000 BE NESPOLL YES, GO SET TIME FOR ALL LINES @V2D3931 00944000 BAL R10,GETRDEV FIND AND VALIDATE REAL DEVICE @V2D3931 00945000 TM RDEVFLAG,RDEVDISB IS THE LINE DISABLED @VM01024 00946000 BO NES706E YES, SEND DISABLED LINE MESSAGE @VM01024 00947000 ST R5,RDEVPDLY SAVE THE INTERVAL TIME (SECONDS) @V2D3931 00948000 B CMDCOMP ALL DONE - GET OUT @V2D3931 00949000 NESPOLL EQU * PROCESS ALL BISYNC LINES @V2D3931 00950000 BAL R10,NETWALL FIND THE FIRST BISYNC LINE @V2D3931 00951000 BNZ CMDCOMP IF NONE, GET OUT @V2D3931 00952000 NESPOLL1 EQU * SET TIME VALUE IN RDEVBLOK @V2D3931 00953000 CLI RDEVTYPC,CLASTERM IS THIS A BISYNC LINE ? @V2D3931 00954000 BNE *+16 NO, BYPASS SETTING INTERVAL @VM01024 00955000 TM RDEVFLAG,RDEVDISB IS THE LINE DISABLED @VM01024 00956000 BO *+8 YES, BYPASS SAVING INTERVAL @VM01024 00957000 ST R5,RDEVPDLY SAVE INTERVAL TIME IN RDEVBLOK @V2D3931 00958000 BAL R10,NETFALL LOOK FOR ANOTHER BISYNC LINE @V2D3931 00959000 BZ NESPOLL1 SET INTERVAL TIME FOR THIS DEVICE@V2D3931 00960000 B CMDCOMP ALL DONE @V2D3931 00961000 EJECT 00962000 NETWALL EQU * SETUP TO LOOP THROUGH 370X DEVICE@V2D3931 00963000 L R8,=A(DMKRIORN) DEVICE TABLE FOR 3705'S @V200820 00964000 L R7,0(0,R8) COUNT OF 370X DEVICE ENTRIES @V200820 00965000 LTR R7,R7 ARE THERE ANY AT ALL ? @V200820 00966000 BNP NETMALL NO -- ALL HAVE BEEN PROCESSED @V200820 00967000 SLL R7,2(0) CONVERT TO MAXIMUM INDEX @V200820 00968000 LA R7,0(R7,R8) POINT TO LAST ENTRY @V200820 00969000 STM R7,R8,SAVEWRK7 SAVE POINTERS IN SAVE-AREA @V200820 00970000 MVI SAVEWRK1+1,X'FF' SET DEVICE CODE TO X'-1' @V200820 00971000 SPACE 2 00972000 NETFALL EQU * LOOP THRU ALL DEVICES, ALL LINES @V200820 00973000 LM R7,R8,SAVEWRK7 PICK UP DMKRIO POINTERS @V200820 00974000 LA R8,4(0,R8) NEXT ENTRY IN DEVICE TABLE @V200820 00975000 CLR R8,R7 HAVE WE HIT THE END ? @V200820 00976000 BH NETMALL YES - ALL HAVE BEEN PROCESSED @V200820 00977000 STM R7,R8,SAVEWRK7 RESET POINTERS FOR NEXT PASS @V200820 00978000 SLR R7,R7 @V200820 00979000 IC R7,SAVEWRK1+1 PICK UP PREVIOUS DEVICE CODE @V200820 00980000 LA R7,1(0,R7) THIS IS THE NEXT 370X @V200820 00981000 STC R7,SAVEWRK1+1 RESET FOR FORMATTING USE @V200820 00982000 OI SAVEWRK1+1,X'F0' BINARY TO DECIMAL (CHEATING)@V200820 00983000 LH R8,0(0,R8) PICK UP DISPLACEMENT TO RDEVBLOK @V200820 00984000 SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 00985000 AL R8,ARIODV INDEX TO THE RDEVBLOK @V200820 00986000 TM RDEVSTAT,RDEVDED+RDEVDISA+RDEVNRDY O.K. ? @V200820 00987000 BNZ NETFALL NO -- @V200820 00988000 ICM R7,15,RDEVCTRS DO WE HAVE SDR COUNTERS ?? @VA03757 00988050 BNP CONTINLP NO @VA03757 00988100 CALL DMKIOESR,AFFINITY YES, GO BUILD AND RECORD OBR @V407511 00988160 * SYNCHRONOUSLY 00988200 CONTINLP EQU * @VA03757 00988250 CLI RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS ? @V2D3931 00989000 BE *+12 YES, BYPASS TEST @V2D3931 00990000 TM RDEVFLAG,RDEVLNCP IS THERE AN NCP ACTIVE ? @V200820 00991000 BZ NETFALL NO -- NO RESOURCES @V200820 00992000 L R7,RDEVNICL FIRST NICBLOK = RESOURCE ZERO @V200820 00993000 CR R7,R7 SET CONDITION CODE ZERO @V200820 00994000 BR R10 RETURN TO CALLER @V200820 00995000 SPACE 00996000 NETMALL EQU * ALL 370X DEVICES HAVE BEEN DONE @V200820 00997000 SLR R8,R8 SET CONDITION CODE TWO (LOGICAL) @V200820 00998000 BR R10 RETURN @V200820 00999000 EJECT 01000000 SCANRID EQU * SCAN FOR RID - LOCATE NICBLOK @V200820 01001000 L R9,SAVER9 MAKE SURE WE HAVE THE BUFFER @V240820 01002000 CALL DMKSCNFD SCAN FOR NEXT PARAMETER @V200820 01003000 BCR 7,R10 IF NO MORE - RETURN @V200820 01004000 SCANCVT EQU * ENTRY AFTER CALL TO DMKSCNFD @V200820 01005000 LR R2,R0 SAVE LENGTH AND ADDRESS FOR MSGS @V200820 01006000 LR R3,R1 ... @V200820 01007000 CL R0,F4 FIELD MUST BE FOUR CHARACTERS @V240820 01008000 BNE NET002R NOPE - ERROR @V240820 01009000 MVC SAVEWRK9(4),0(R1) SAVE THE RESOURCE I.D. @V240820 01010000 CALL DMKCVTHB CONVERT ENTIRE FIELD TO BINARY @V200820 01011000 BNZ NET002R INVALID OPERAND @V200820 01012000 LR R7,R1 @V200820 01013000 N R7,F4095 ISOLATE RESOURCE ID PORTION @V200820 01014000 SRL R1,12(0) ...AND DEVICE CODE INDICATOR @V200820 01015000 STC R1,SAVEWRK1+1 SAVE DEVICE CODE FOR LATER @V200820 01016000 OI SAVEWRK1+1,X'F0' FAST BINARY TO DECIMAL @V200820 01017000 LA R1,1(0,R1) ADD ONE FOR INDEXING @V200820 01018000 L R4,=A(DMKRIORN) TABLE OF 3705 RDEVBLOK'S @V200820 01019000 CL R1,0(0,R4) IS THIS A VALID CODE ? @V200820 01020000 BH NET040E NO -- DEVICE DOES NOT EXIST @V200820 01021000 SLL R1,2(0) CONVERT TO FULL-WORD INDEX @V200820 01022000 LH R8,0(R1,R4) PICK UP DISPLACEMENT TO RDEVBLOK @V200820 01023000 SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 01024000 AL R8,ARIODV ...COMPUTE RDEVBLOK ADDRESS @V200820 01025000 TM RDEVSTAT,RDEVDISA IS THE 3705 OFFLINE ? @V200820 01026000 BO NET046E YES -- DMKNES046E @V200820 01027000 TM RDEVSTAT,RDEVDED IS 3705 ATTACHED TO A USER ?@V200820 01028000 BO NET140E YES -- DMKNES140E @V200820 01029000 TM RDEVFLAG,RDEVLNCP IS THERE AN NCP ACTIVE ? @V200820 01030000 BZ NET040E NO -- DEV DOES NOT EXIST @V200820 01031000 CH R7,RDEVMAX WITHIN DEFINED RANGE ? @V200820 01032000 BH NET040E NO -- @V200820 01033000 MH R7,=AL2(NICSIZE*8) COMPUTE INDEX TO NICBLOK @V200820 01034000 AL R7,RDEVNICL ...AND ADDRESS @V200820 01035000 SR R0,R0 SET CC = 0 @V200820 01036000 BR R10 RETURN TO CALLER @V200820 01037000 EJECT 01038000 CMDCOMP EQU * COMMAND IS COMPLETE @V200820 01039000 TM VMOSTAT,VMVIRCF DIAGNOSE CONSOLE FUNCTION ? @V200820 01040000 BO RETCOMP YES - SUPPRESS THE MESSAGE @V200820 01041000 MSG 'COMMAND COMPLETE' VERIFICATION MESSAGE @V200820 01042000 CALL DMKQCNWT,PARM=NORET @V200820 01043000 RETCOMP EQU * SET RETURN CODE, EXIT @V200820 01044000 SLR R2,R2 RETURN CODE = ZERO @V200820 01045000 ST R2,SAVER2 @V200820 01046000 EXIT , RETURN TO DMKCFM @V200820 01047000 SPACE 2 01048000 GETRDEV EQU * CHECK VALIDITY OF 370X ADDRESS @V240820 01049000 CL R0,F3 THREE CHARACTERS MAX FOR ADDRESS @V240820 01050000 BH NET021E INVALID DEVICE ADDRESS @V240820 01051000 LR R2,R0 SAVE LENGTH AND ADDRESS FOR MSGS @V240820 01052000 LR R3,R1 . . . @V240820 01053000 CALL DMKCVTHB ATTEMPT BINARY CONVERSION @V240820 01054000 BNZ NET021E NOPE - ERROR @V240820 01055000 CALL DMKSCNRU FIND THE REAL DEVICE BLOCKS @V240820 01056000 BNZ NET040E DEVICE DOES NOT EXIST @V240820 01057000 SPACE 01058000 USING RDEVBLOK,R8 @V200820 01059000 TM SAVEWRK1,SHUT IS THIS FOR 3270 REMOTE SUPPORT @V2D3931 01060000 BZ CONTIN NO, CONTINUE @V2D3931 01061000 CLI RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS ? @V2D3931 01062000 BNE CONTIN NO, CONTINUE PROCESSING @V2D3931 01063000 TM RDEVTYPE,TYPBSC IS THIS A BISYNC LINE ? @V2D3931 01064000 BO BYPAS YES, BYPASS TEST FOR 370X @V2D3931 01065000 CONTIN EQU * @V2D3931 01066000 TM SAVEWRK1,POLLDLY IS THIS A POLL DELAY FUNCTION @VM01029 01067000 BO NET006E YES, SEND INVALID DEVICE TYPE @VM01029 01068000 LA R0,CLASSPEC*256+TYP3705 @V200820 01069000 CH R0,RDEVTYPC IS THIS REALLY A 370X ? @V200820 01070000 BNE NET006E NO -- @V200820 01071000 BYPAS EQU * @V2D3931 01072000 TM RDEVSTAT,RDEVDISA OFFLINE ? @V200820 01073000 BO NET046E YES -- @V200820 01074000 TM RDEVSTAT,RDEVDED DEDICATED ? @V200820 01075000 BO NET140E YES -- @V200820 01076000 TM RDEVSTAT,RDEVNRDY IS THE FUNCTION AVAILABLE ? @V200820 01077000 BO NET006E NO -- FOR NOW, INVALID TYPE @V200820 01078000 CLI RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS @V2D3931 01079000 BER R10 YES, RETURN TO IN LINE CODE @V2D3931 01080000 TM RDEVFLAG,RDEVLNCP SAME TEST @V200820 01081000 BZ NET006E SAME ERROR @V200820 01082000 BR R10 @V240820 01083000 EJECT 01084000 NET002R EQU * @V200820 01085000 LR R0,R2 RECOVER ORIGINAL LENGTH @V200820 01086000 LR R1,R3 ...AND DATA ADDRESS @V200820 01087000 NET002E EQU * DMKNES002E INVALID OPERAND - OPERAND @V200820 01088000 LA R2,002(0) MESSAGE NUMBER @V200820 01089000 B MSGSEND R0, R1 ALREADY SETUP @V200820 01090000 SPACE 01091000 NET004E EQU * DMKNES004E INVALID HEXLOC - HEXLOC @V200820 01092000 LR R0,R2 PARM LENGTH @V200820 01093000 LR R1,R3 PARM ADDRESS @V200820 01094000 LA R2,004(0) MESSAGE NUMBER @V200820 01095000 B MSGSEND @V200820 01096000 SPACE 01097000 NET006E EQU * DMKNES006E INVALID DEVICE TYPE - RADDR @V200820 01098000 BAL R9,CVTRADD GET DEVICE ADDRESS IN EBCDIC @V200820 01099000 LA R2,006(0) MESSAGE NUMBER @V200820 01100000 B MSGSEND @V200820 01101000 SPACE 01102000 NET006R EQU * DMKNES006E INVALID DEVICE TYPE - RID @V200820 01103000 LA R1,SAVEWRK9 POINT TO THE OPERAND @V240820 01104000 LA R0,4(0) LENGTH OF FOUR BYTES @V240820 01105000 LA R2,006(0) MESSAGE= DMKNES006E @V200820 01106000 B MSGSEND GO TYPE THE MESSAGE @V200820 01107000 SPACE 01108000 NET009E EQU * DMKNES009E INVALID RANGE - RANGE @V200820 01109000 LA R2,009(0) MESSAGE NUMBER @V200820 01110000 B MSGSEND @V200820 01111000 SPACE 01112000 NET021E EQU * DMKNES021E RADDR MISSING OR INVALID @V200820 01113000 LA R2,021(0) MESSAGE NUMBER @V200820 01114000 B MSGONLY NO VARIABLE DATA @V200820 01115000 SPACE 01116000 NET026E EQU * DMKNES026E OPERAND MISSING OR INVALID @V200820 01117000 LA R2,026(0) MESSAGE NUMBER @V200820 01118000 B MSGONLY NO VARIABLE DATA @V200820 01119000 SPACE 01120000 NET033E EQU * DMKNES033E HEXLOC MISSING OR INVALID @V200820 01121000 LA R2,033(0) MESSAGE NUMBER @V200820 01122000 B MSGONLY NO VARIABLE DATA @V200820 01123000 SPACE 01124000 NET040E EQU * DMKNES040E DEV ADDR DOES NOT EXIST @V200820 01125000 LR R0,R2 PARAMETER LENGTH @V200820 01126000 LR R1,R3 ...AND START ADDRESS @V200820 01127000 LA R2,040(0) MESSAGE NUMBER @V200820 01128000 B MSGSEND @V200820 01129000 EJECT 01130000 NET046R EQU * DMKNES046E DEV RID OFFLINE @VM01011 01131000 BAL R10,CVTRESD BUILD 'DEV RID' IN THE SAVEAREA @VM01011 01132000 B NET046 SETUP TO TYPE ERROR MESSAGE @VM01011 01133000 SPACE 01134000 NET046E EQU * DMKNES046E CTLR RADDR OFFLINE @V200820 01135000 BAL R10,TYPRADD BUILD PARMS FOR DMKERMSG @VM01011 01136000 NET046 EQU * @VM01011 01137000 LA R0,8 @V200820 01138000 LA R2,046(0) MESSAGE NUMBER @V200820 01139000 B MSGSEND @V200820 01140000 SPACE 01141000 NET049E EQU * DMKNES049E LINE RID IN USE @V200820 01142000 BAL R10,CVTRESD BUILD PARM STRING FOR DMKERM @VM01011 01143000 LA R2,049(0) MESSAGE NUMBER @V200820 01144000 B MSGSEND @V200820 01145000 SPACE 01146000 NET098E EQU * DMKNES098E MODE SWITCH NOT POSSIBLE @V240820 01147000 LA R1,SAVEWRK9 POINT TO THE RESOURCE I.D. @V240820 01148000 LA R0,4(0) FOR FOUR BYTES @V240820 01149000 LA R2,098(0) MSG= DMKNES098E @V240820 01150000 B MSGSEND @V240820 01151000 SPACE 01152000 NET140E EQU * DMKNES140E CTLR XXX ATTACHED TO USERID @V200820 01153000 BAL R10,TYPRADD BUILD PARM STRING FOR DMKERM @VM01011 01154000 L R2,RDEVUSER-RDEVBLOK(,R8) GET USER'S VMBLOK @V200820 01155000 MVC SAVEWRK4+1(8),VMUSER-VMBLOK(R2) MOVE IN USERID @V200820 01156000 MVI SAVEWRK4,X'00' FIELD DELIMITER @V200820 01157000 LA R0,17 VARIABLE DATA LENGTH @V200820 01158000 LA R2,140(0) MESSAGE NUMBER @V200820 01159000 B MSGSEND @V200820 01160000 SPACE 01161000 NET160E EQU * DMKNES160E HEXLOC XXXXX EXCEEDS STORAGE @V200820 01162000 LR R0,R2 PARM LENGTH @V200820 01163000 LR R1,R3 PARM ADDRESS @V200820 01164000 LA R2,160(0) MESSAGE NUMBER @V200820 01165000 B MSGSEND R0, R1 ALREADY SETUP @V200820 01166000 SPACE 01167000 NET175E EQU * DMKNES175E NETWORK TRACE ALREADY IN USE @V200820 01168000 MVC SAVEWRK5+2(8),0(R4) MOVE IN USERID FROM DMKRNH @V200820 01169000 MVC SAVEWRK2(14),=C'NETWORK TRACE ' @V200820 01170000 MVI SAVEWRK5+1,X'00' FIELD DELIMITER @V200820 01171000 LA R1,SAVEWRK2 POINT TO VARIABLE DATA @V200820 01172000 LA R0,22 DATA LENGTH @V200820 01173000 LA R2,175(0) MSG= DMKRNH175E @V200820 01174000 B MSGSEND GO FORMAT THE MESSAGE @V200820 01175000 NES706E EQU * DMKNES706E LINE XXX NOT ENABLED @VM01024 01176000 BAL R9,CVTRADD GET DEVICE ADDRESS IN SAVEWRK3 @VM01024 01177000 LA R2,706(0) MESSAGE NUMBER @VM01024 01178000 B MSGSEND ... @VM01024 01179000 EJECT 01180000 TYPRADD EQU * BUILD PARMS FOR 'TYPE RADDR' @VM01011 01181000 BAL R9,CVTRADD GET DEVICE ADDRESS IN SAVEWRK3 @VM01011 01182000 MVC SAVEWRK2(4),=C'CTLR' DEVICE TYPE NAME @VM01011 01183000 LA R1,SAVEWRK2 POINT TO STRING START @VM01011 01184000 LA R0,8(0) LENGTH @VM01011 01185000 CLI RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS ? @V2D3931 01186000 BNER R10 NO, RETURN TO IN LINE CODE @V2D3931 01187000 MVC SAVEWRK2(4),=C'LINE' LINE TYPE NAME @V2D3931 01188000 BR R10 . . . @VM01011 01189000 SPACE 01190000 CVTRADD EQU * CONVERT RADDR TO EBCDIC @V200820 01191000 CALL DMKSCNRD GET ADDRESS IN BINARY @V200820 01192000 CALL DMKCVTBH CONVERT IT TO EBCDIC HEX @V200820 01193000 ST R1,SAVEWRK3 PUT IT IN THE SAVE-AREA @VM01011 01194000 MVI SAVEWRK3,X'00' INSERT A DELIMITER @VM01011 01195000 LA R1,SAVEWRK3+1 START OF THE ACTUAL ADDRESS @VM01011 01196000 LA R0,3(0) GIVE IT'S LENGTH... @V200820 01197000 BR R9 RETURN TO CALLER @V200820 01198000 SPACE 01199000 CVTRESD EQU * BUILD PARMS FOR 'DEV RESOURCE' @VM01011 01200000 MVC SAVEWRK8(3),=C'DEV ' RID IS A 'DEV' @VM01011 01201000 MVI SAVEWRK8+3,X'00' RESOURCE IS IN SAVEWRK9 @VM01011 01202000 LA R1,SAVEWRK8 POINT TO THE DATA STRING @VM01011 01203000 LA R0,8(0) EIGHT BYTES LONG @VM01011 01204000 BR R10 @VM01011 01205000 SPACE 01206000 MSGONLY EQU * ERROR MSG WITH NO VARIABLE DATA @V200820 01207000 SLR R1,R1 NO VARIABLE DATA @V200820 01208000 SPACE 01209000 MSGSEND EQU * TYPE AN ERROR MESSAGE @V200820 01210000 ICM R0,B'1110',MODID+3 PICK UP MODULE IDENTIFIER @V200820 01211000 CALL DMKERMSG GO TO ERROR MESSAGE ROUTINE @V200820 01212000 * HE WILL RETURN DIRECTLY TO DMKNET 01213000 EJECT 01214000 LTORG @V200820 01215000 EJECT 01216000 COPY NETWORK @V200820 01217000 COPY IOBLOKS @V200820 01218000 COPY RBLOKS @V200820 01219000 COPY VMBLOK @V200820 01220000 COPY BTUCMD @V200820 01221000 COPY EQU @V200820 01222000 COPY DEVTYPES @V200820 01223000 COPY SAVE @V200820 01224000 PSA @V200820 01225000 END DMKNES 01226000