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