Date Friday Aug 07, 1981 07:17:00 AM
Loaded from MAINT(294)
R13704DK: ./ R 00014000 $ 14000 200 07/01/81 10:49:45
R13704DK: EXTRN DMKACODV,DMKBLDVM,DMKCFPRD,DMKCVTBD @VA13704 00014000
R13704DK: EXTRN DMKCVTBH,DMKCVTHB,DMKERMSG,DMKRIORN @VA13704 00014200
R13704DK: EXTRN DMKRNHND,DMKSCHRT,DMKSCNAU,DMKSCNFD @VA13704 00014400
R13704DK: EXTRN DMKSCNRD,DMKSCNRN,DMKSCNRU,DMKSCNVD @VA13704 00014600
R13704DK: EXTRN DMKSCNVU,DMKSTKCP,DMKSYSND,DMKVCARS @VA13704 00014800
R13704DK: ./ I 00927000 $ 927100 100 07/01/81 10:49:45
R13704DK: * 00927100
R13704DK: * DMKDIB 00927200
R13704DK: * 00927300
R13704DK: * CONTENTS - 00927400
R13704DK: * 00927500
R13704DK: * DMKDIBDR - DROP A DIALED LINE FROM A VIRTUAL MACHINE @VA13704 00927600
R13704DK: * DMKDIBCP - 'COUPLE' VIRTUAL CHANNEL-TO-CHANNEL ADAPTER@VA13704 00927700
R13704DK: ./ R 00962000 $ 962000 1000 07/01/81 10:49:45
R13704DK: * DMKDIBDR - TO DROP A DIALED LINE @VA13704 00962000
R13704DK: ./ R 00995000 $ 995000 1000 07/01/81 10:49:45
R13704DK: * B. IF CCW IS A DISABLE, CALL DMKDIBDR TO DROP LINE 00995000
R13704DK: ./ R 01163000 $ 1163000 1000 07/01/81 10:49:45
R13704DK: CALL DMKDIBDR DROP THE DIALED LINE @VA13704 01163000
R13704DK: ./ R 01179000 01190000 $ 1179000 1000 07/01/81 10:49:45
R13704DK: *. 01179000
R13704DK: * SUBROUTINE NAME - 01180000
R13704DK: * 01181000
R13704DK: * DMKDIBDR - DROP A DIALED LINE FROM A VIRTUAL SYSTEM @VA13704 01182000
R13704DK: * 01183000
R13704DK: * FUNCTION - 01184000
R13704DK: * 01185000
R13704DK: * TO RELEASE A TERMINAL LINE WHICH HAS BEEN IN USE BY A 01186000
R13704DK: * VIRTUAL SYSTEM VIA THE 'DIAL' COMMAND. THE LINE IS 01187000
R13704DK: * DETACHED FROM THE VIRTUAL SYSTEM AND MADE AVAILABLE FOR 01188000
R13704DK: * NORMAL LOGON TO VM/370. 01189000
R13704DK: * 01190000
R13704DK: * ENTRY POINT - 01191000
R13704DK: * 01192000
R13704DK: * DMKDIBDR @VA13704 01193000
R13704DK: * 01194000
R13704DK: * ENTRY CONDITIONS - 01195000
R13704DK: * 01196000
R13704DK: * GPR 8 = ADDRESS OF VDEVBLOK FOR DIALED LINE 01197000
R13704DK: * GPR 11 = VMBLOK ADDRESS OF DIALED SYSTEM 01198000
R13704DK: * GPR 12 = ADDRESS OF DMKDIBDR @VA13704 01199000
R13704DK: * GPR 13 = ADDRESS OF STANDARD SAVE AREA 01200000
R13704DK: * 01201000
R13704DK: * EXIT CONDITIONS - 01202000
R13704DK: * 01203000
R13704DK: * GPRS 0-15 UNCHANGED 01204000
R13704DK: * THE VDEVBLOK HAS BEEN MARKED NOT ENABLED, NOT DIALED, 01205000
R13704DK: * THE OPERATOR AND THE DIALED USER HAVE BEEN INFORMED 01206000
R13704DK: * OF THE LINE DROP, AND THE TERMINAL LINE IS AVAILABLE 01207000
R13704DK: * FOR VM/370 LOGON OR ANOTHER 'DIAL'. 01208000
R13704DK: * 01209000
R13704DK: * CALLS TO OTHER ROUTINES - 01210000
R13704DK: * 01211000
R13704DK: * DMKACODV - FOR ACCOUNTING OF DEDICATED DEVICES 01212000
R13704DK: * DMKBLDVM - TO BUILD A DUMMY VMBLOK FOR MESSAGES 01213000
R13704DK: * DMKQCNWT - TO TYPE MESSAGES TO THE DIALED USER 01214000
R13704DK: * DMKSCNRD - TO GET THE REAL ADDRESS OF THE TERMINAL 01215000
R13704DK: * DMKSCNVD - TO GET THE VIRTUAL ADDRESS OF THE LINE 01216000
R13704DK: * DMKCVTBH - TO CONVERT THE ADDRESSES TO EBCDIC 01217000
R13704DK: * DMKFREE - TO OBTAIN FREE STORAGE FOR MESSAGE BUFFER 01218000
R13704DK: * DMKFRET - TO RETURN DUMMY VMBLOK TO FREE STORAGE 01219000
R13704DK: * DMKDSPCH - TO WAIT FOR MESSAGE COMPLETION 01220000
R13704DK: * 01221000
R13704DK: * EXTERNAL REFERENCES - 01222000
R13704DK: * 01223000
R13704DK: * DMKSYSND - NUMBER OF DIALED USERS 01224000
R13704DK: * DMKSYSVM - SYSTEM VMBLOK CHAIN ANCHOR 01225000
R13704DK: * 01226000
R13704DK: * TABLES / WORK AREAS 01227000
R13704DK: * 01228000
R13704DK: * VDEVBLOK, RDEVBLOK, VMBLOK 01229000
R13704DK: * 01230000
R13704DK: EJECT 01231000
R13704DK: * REGISTER USAGE - 01232000
R13704DK: * 01233000
R13704DK: * GPR 13 = SAVE-AREA ADDRESSABILITY 01234000
R13704DK: * GPR 12 = MODULE BASE ADDRESSABILITY 01235000
R13704DK: * GPR 11 = VMBLOK ADDRESSABILITY 01236000
R13704DK: * GPR 9 = ADDRESS OF MESSAGE BUFFER 01237000
R13704DK: * GPR 8 = VDEVBLOK, RDEVBLOK ADDRESSES 01238000
R13704DK: * GPR 7 = CONSTANT ZERO 01239000
R13704DK: * GPRS 0-6 ARE WORK REGISTERS 01240000
R13704DK: * 01241000
R13704DK: * OPERATION - 01242000
R13704DK: * 01243000
R13704DK: * DMKDIBDR FIRST CALLS DMKACODV TO HANDLE THE TIME ACCOUT- 01244000
R13704DK: * ING FOR THE TIME THAT THE DIALED LINE WAS DEDICATED TO THE 01245000
R13704DK: * VIRTUAL SYSTEM. NEXT, THE VIRTUAL DEVICE IS DISCONNECTED 01246000
R13704DK: * FROM THE REAL DEVICE AND MARKED NON-ENABLED, NON-DIALED. 01247000
R13704DK: * DMKBLDVM IS CALLED TO BUILD A TEMPORARY VMBLOK ASSOC- 01248000
R13704DK: * IATED WITH THE PREVIOUSLY DIALED TERMINAL LINE, SUCH 01249000
R13704DK: * THAT DMKDIBDR CAN SEND THE 'LINE XXX DROP' MESSAGE TO 01250000
R13704DK: * THE DIALED USER. THE SYSTEM OPERATOR IS ALSO INFORMED OF 01251000
R13704DK: * THE LINE DROP AND THE NUMBER OF DIALED USERS, DMKSYSND, 01252000
R13704DK: * IS UPDATED. AFTER THE USER MESSAGE HAS COMPLETED, THE 01253000
R13704DK: * DUMMY VMBLOK IS REMOVED FROM THE VMBLOK CHAIN AND RETURNED 01254000
R13704DK: * TO FREE STORAGE VIA DMKFRET. EXIT. 01255000
R13704DK: *. 01256000
R13704DK: SPACE 4 01257000
R13704DK: DMKDIBDR RELOC , DROP DIALED LINE FROM VIRTUAL SYSTEM @VA13704 01258000
R13704DK: XC SAVEWRK1(4),SAVEWRK1 CLEAR FLAG BYTE AREA @V240820 01259000
R13704DK: EJECT 01260000
R13704DK: USING VDEVBLOK,R8 01261000
R13704DK: L R6,VDEVREAL POINTER TO RDEVBLOK 01262000
R13704DK: SLR R7,R7 GET A ZERO CONSTANT 01263000
R13704DK: CALL DMKACODV DO DEVICE RELEASE ACCOUNTING 01264000
R13704DK: * NOW START TO UN-DIAL THE LINE 01265000
R13704DK: NI VDEVSTAT,X'FF'-VDEVDED NO LONGER DEDICATED DEVICE 01266000
R13704DK: ST R7,VDEVREAL ... 01267000
R13704DK: NI VDEVFLAG,X'FF'-(VDEVENAB+VDEVDIAL) MARK IT FREE 01268000
R13704DK: CLI VDEVTYPC,CLASGRAF GRAF DEVICE ?? @V200730 01269000
R13704DK: BNE NOGRAF NO,DO NOT MAKE IT @VA09186 01270000
R13704DK: OI VDEVSTAT,VDEVNRDY NOT READY @VA09186 01271000
R13704DK: B NRSET SKIP RESET @VA09186 01272000
R13704DK: NOGRAF EQU * @VA09186 01273000
R13704DK: NI VDEVTYPE,X'F0' LEAVE ONLY ADAPTER TYPE @VA09186 01274000
R13704DK: NRSET LR R8,R6 ...WERE FINISHED WITH VDEVBLOK @VA09186 01275000
R13704DK: SWITCH SWITCH TO MAIN PROCESSOR @V407510 01276000
R13704DK: USING RDEVBLOK,R8 01277000
R13704DK: NI RDEVSTAT,X'FF'-RDEVDED REAL DEVICE NOT DEDICATED 01278000
R13704DK: STH R7,RDEVATT NO VIRTUAL ADDRESS 01279000
R13704DK: TM RDEVFLAG,RDEVEPMD SWITCHED-MODE 370X LINE ? @V240820 01280000
R13704DK: BZ SETUSER NO -- NO SPECIAL HANDLING @V240820 01281000
R13704DK: LH R9,RDEVCYL RESOURCE I.D. OF THE NCP LINE @V240820 01282000
R13704DK: L R7,RDEVCUA BACK UP TO THE CONTROL UNIT @V240820 01283000
R13704DK: USING RCUBLOK,R7 . . . @V240820 01284000
R13704DK: LH R1,RDEVADD DEVICE ADDRESS ALONE @V240820 01285000
R13704DK: SLL R1,1(0) SHIFT FOR INDEX TO RCUDVTBL @V240820 01286000
R13704DK: LA R1,RCUDVTBL(R1) POINT TO RDEVBLOK INDEX SLOT@V240820 01287000
R13704DK: MVC 0(2,R1),FFS DISCONNECT RDEVBLOK FROM RCUBLOK @V240820 01288000
R13704DK: DROP R7 @V240820 01289000
R13704DK: LR R4,R8 SAVE THE DYNAMIC RDEVBLOK ADDRESS@V240820 01290000
R13704DK: LH R1,RDEVBASE ADDRESS OF THE NATIVE SUB-CHANNEL@V240820 01291000
R13704DK: CALL DMKSCNRU GET THE 370X NATIVE BLOCKS @V240820 01292000
R13704DK: L R3,RDEVEPDV DYNAMIC RDEVBLOK CHAIN @V240820 01293000
R13704DK: ST R4,RDEVEPDV ADD RELEASED BLOCK TO THE CHAIN @V240820 01294000
R13704DK: ST R3,RDEVEPDV-RDEVBLOK(,R4) . . . @V240820 01295000
R13704DK: L R2,=A(DMKRIORN) TABLE OF 370X RDEVBLOK'S @V240820 01296000
R13704DK: L R3,0(0,R2) COUNT OF TABLE ENTRIES @V240820 01297000
R13704DK: GETCODE EQU * COMPUTE 370X DEVICE CODE @V240820 01298000
R13704DK: CH R1,6(0,R2) IS THIS THE CORRECT ENTRY ? @V240820 01299000
R13704DK: BE SETCODE YES - BUILD RESOURCE REFERENCE @V240820 01300000
R13704DK: LA R2,4(0,R2) NEXT ENTRY IN TABLE @V240820 01301000
R13704DK: BCT R3,GETCODE . . . @V240820 01302000
R13704DK: SETCODE EQU * BUILD TERMINAL RESOURCE REFERENCE@V240820 01303000
R13704DK: S R2,=A(DMKRIORN) COMPUTE TABLE DISPLACEMENT @V240820 01304000
R13704DK: SLL R2,10(0) SHIFT FOR REFERENCE FIELD @V240820 01305000
R13704DK: LA R2,1(R2,R9) ADD ONE TO LINE RESOURCE I.D. @V240820 01306000
R13704DK: STH R2,SAVEWRK3 SAVE THE VALUE FOR MESSAGES @V240820 01307000
R13704DK: EJECT 01308000
R13704DK: TM RDEVSTAT,RDEVNRDY IS THE NCP STILL ALIVE ? @V240820 01309000
R13704DK: BO SETDEAD NO -- DON'T PANIC OVER IT @V240820 01310000
R13704DK: TM RDEVFLAG,RDEVRCVY IS THE NCP STILL DYING ? @V240820 01311000
R13704DK: BO SETDEAD YES - LEAVE IT ALONE @V240820 01312000
R13704DK: TM RDEVFLAG,RDEVLNCP+RDEVLCEP MUST BE A PEP @V240820 01313000
R13704DK: BNO SETDEAD NO -- WE MISSED THE FUNERAL @V240820 01314000
R13704DK: MH R9,=AL2(NICSIZE*8) INDEX INTO THE NICBLOK LIST @V240820 01315000
R13704DK: AL R9,RDEVNICL GR9 = LINE NICBLOK ADDRESS @V240820 01316000
R13704DK: USING NICBLOK,R9 @V240820 01317000
R13704DK: TM NICSTAT,NICSWEP+NICEPMD STILL AS WE LEFT IT ? @V240820 01318000
R13704DK: BNO SETDEAD NO -- DO NOT DISTURB @V240820 01319000
R13704DK: LA R0,CSWLNCP SWITCH LINE MODE TO THE NCP @V240820 01320000
R13704DK: CALL DMKRNHND,PARM=0,AFFINITY SWITCH BACK TO NCP @V407510 01321000
R13704DK: BNZ SETDEAD BAIL OUT IF THE NCP DIES @V240820 01322000
R13704DK: LH R0,0(0,R1) SIZE OF THE RESPONSE BUFFER @V240820 01323000
R13704DK: CALL DMKFRET RETURN THE FREE STORAGE @V240820 01324000
R13704DK: NI NICSTAT,255-(NICDISA+NICEPMD) BACK IN NCP MODE @V240820 01325000
R13704DK: LA R9,NICSIZE*8(0,R9) FORWARD TO THE TERMINAL @V240820 01326000
R13704DK: NI NICSTAT,255-NICDISA TERMINAL IS BACK ONLINE @V240820 01327000
R13704DK: OI NICFLAG,NICSESN+NICENAB ENABLED AGAIN @V240820 01328000
R13704DK: OI SAVEWRK1,NCPTERM REMEMBER THE 370X NCP @V240820 01329000
R13704DK: DROP R9 @V240820 01330000
R13704DK: SPACE 01331000
R13704DK: SETUSER EQU * CREATE A TEMPORARY DUMMY USER @V240820 01332000
R13704DK: CALL DMKBLDVM,AFFINITY BUILD A VMBLOK AROUND RDEVBLOK @V407510 01333000
R13704DK: OI VMOSTAT,VMCF PREVENT ENTERING LOGOFF @VA01827 01334000
R13704DK: SPACE 01335000
R13704DK: CLI RDEVTYPC,CLASGRAF DIAL VIA A 3277 ? @V200820 01336000
R13704DK: BE SETGRAF YES - ADJUST FLAGS @V200820 01337000
R13704DK: CLI RDEVTYPC,CLASSPEC DROP FROM AN NCP LINE ? @V240820 01338000
R13704DK: BE SETMSG YES - FLAGS ARE ALL SET @V240820 01339000
R13704DK: NI RDEVTFLG,255-RDEVCTL TURN OFF CONTROL FLAG @V200820 01340000
R13704DK: NI RDEVFLAG,255-(RDEVACTV+RDEVPREP+RDEVHIO) @V200820 01341000
R13704DK: B SETMSG GO SEND DROP MESSAGES TO USERS @V200820 01342000
R13704DK: EJECT 01343000
R13704DK: SETDEAD EQU * COULD NOT RECOVER THE NCP LINE @V240820 01344000
R13704DK: OI SAVEWRK1,EPABORT REMEMBER THE SITUATION @V240820 01345000
R13704DK: B SETMSG CONTINUE NORMALLY FOR NOW @V240820 01346000
R13704DK: SPACE 01347000
R13704DK: SETGRAF EQU * SETUP FLAGS FOR DMKGRF @V200820 01348000
R13704DK: MVI RDEVTFLG,RDEVRUN SET TO RUNNING STATE @V200730 01349000
R13704DK: MVI RDEVCORD,00 WRITE AT LINE 00 @V200730 01350000
R13704DK: SPACE 01351000
R13704DK: SETMSG EQU * SEND DROP MESSAGES @V200820 01352000
R13704DK: LA R0,MSGSIZE MESSAGE SIZE 01353000
R13704DK: CALL DMKFREE GET CORE FOR MESSAGES 01354000
R13704DK: LR R4,R1 ... 01355000
R13704DK: USING MSGDIAL,R4 USE OUR CONVENIENT DSECT 01356000
R13704DK: MVC MSGDIAL(8),BLANKS CLEAR IT 01357000
R13704DK: MVC MSGDIAL+8((MSGSIZE-1)*8),MSGDIAL 01358000
R13704DK: CLI RDEVTYPC,CLASSPEC DROP FROM A 370X NCP LINE ? @V240820 01359000
R13704DK: BE PEPTEXT YES - DIFFERENT TEXT IN MSG @V240820 01360000
R13704DK: CALL DMKSCNRN GET DEVICE NAME @V200730 01361000
R13704DK: ST R1,MSGDIAL SET DEVICE NAME IN MSG BUFFER @V240820 01362000
R13704DK: CALL DMKSCNRD RDEVBLOK IS STILL IN R8 01363000
R13704DK: CALL DMKCVTBH GET ADDRESS IN EBCDIC 01364000
R13704DK: STCM R1,B'0111',MSGRADD REAL ADDRESS TO MESSAGE 01365000
R13704DK: B GETUSER FINISH BUILDING USER MESSAGE @V240820 01366000
R13704DK: SPACE 01367000
R13704DK: PEPTEXT EQU * SETUP TYPE RADDR FOR PEP LINES @V240820 01368000
R13704DK: LH R1,SAVEWRK3 TERMINAL RESOURCE REFERENCE @V240820 01369000
R13704DK: CALL DMKCVTBH CONVERT FOR OUTPUT @V240820 01370000
R13704DK: L R0,=C'DEV ' 370X RESOURCE IS A 'DEV' @V240820 01371000
R13704DK: STM R0,R1,MSGDIAL SET TYPE AND REFERENCE IN MSG @V240820 01372000
R13704DK: * B GETUSER @V240820 01373000
R13704DK: EJECT 01374000
R13704DK: GETUSER EQU * FILL OUT MESSAGE FIELDS @V240820 01375000
R13704DK: MVC MSGFLD1(10),=C'DROP FROM ' ACTION CUE 01376000
R13704DK: LR R10,R11 SAVE VMBLOK CREATED BY BLDVM 01377000
R13704DK: * CPU TIMER DOES NOT MATCH CURRENT VMBLOK - OK IF CONTROL ISN'T LOST 01378000
R13704DK: L R11,SAVER11 BACK TO VMBLOK OF CALLER 01379000
R13704DK: MVC MSGUSER(8),VMUSER MOVE USERID TO MESSAGE 01380000
R13704DK: L R8,SAVER8 VDEVBLOK ADDRESS 01381000
R13704DK: DROP R8 01382000
R13704DK: CALL DMKSCNVD GET VIRTUAL LINE ADDRESS 01383000
R13704DK: CALL DMKCVTBH CONVERT TO EBCDIC 01384000
R13704DK: STCM R1,B'0111',MSGVADD ...INTO MESSAGE 01385000
R13704DK: LR R11,R10 RESTORE VMBLOK - CPU TIMER MATCHES AGAIN 01386000
R13704DK: TM SAVEWRK1,EPABORT SHOULD WE SEND THE MESSAGE ?@V240820 01387000
R13704DK: BO OPERMSG NO -- JUST TELL THE OPERATOR@V240820 01388000
R13704DK: LA R0,MSGVADD+4-MSGFLD1 SIZE FOR USER 01389000
R13704DK: LA R1,MSGFLD1 START OF MSG TO USER 01390000
R13704DK: CALL DMKQCNWT,PARM=PRIORITY+LOGHOLD WRITE, WAIT 01391000
R13704DK: SPACE 2 01392000
R13704DK: OPERMSG EQU * SEND DROP MESSAGE TO OPERATOR @V240820 01393000
R13704DK: LA R3,MSGSIZE FOR 'DFRET' LATER 01394000
R13704DK: MVC MSGVADD(8),=C'DIALED= ' OPERATOR CUE 01395000
R13704DK: L R2,=A(DMKSYSND) NUMBER OF DIALED USERS 01396000
R13704DK: L R1,0(0,R2) ... 01397000
R13704DK: S R1,F1 DECREMENT... 01398000
R13704DK: BNM *+6 DON'T LET IT GO NEGATIVE 01399000
R13704DK: SLR R1,R1 ... 01400000
R13704DK: ST R1,0(0,R2) RESET DIALED USER COUNT 01401000
R13704DK: CALL DMKCVTBD CONVERT TO DECIMAL FOR MSG 01402000
R13704DK: STCM R1,B'0111',MSGNDIL ... 01403000
R13704DK: LR R1,R4 MESSAGE ADDRESS @V240820 01404000
R13704DK: LA R0,MSGSIZE*8 ...LENGTH 01405000
R13704DK: CALL DMKQCNWT,PARM=NORET+DFRET+OPERATOR 01406000
R13704DK: DROP R4 01407000
R13704DK: EJECT 01408000
R13704DK: TM SAVEWRK1,EPABORT IS THERE A DUMMY VMBLOK ? @V240820 01409000
R13704DK: BO DROPEXT NO -- JUST EXIT GRACEFULLY @V240820 01410000
R13704DK: NI VMOSTAT,255-VMCF LET DSP CALL USO @VA01827 01411000
R13704DK: BAL R9,FRETVMB RELEASE DUMMY VMBLOK 01412000
R13704DK: DROPEXT EQU * @V240820 01413000
R13704DK: L R1,SAVER11 GET CALLER VMBLOK @V407510 01414000
R13704DK: SWTCHVM SWITCH BACK TO CALLER @V407510 01415000
R13704DK: DROPEXIT DS 0H @VA13704 01416000
R13704DK: EXIT ALL DONE 01417000
R13704DK: EJECT 01418000
R13704DK: * 01419000
R13704DK: * REMOVE VMBLOK FROM CHAIN OF ACTIVE VMBLOKS 01420000
R13704DK: * RETURN VMBLOK TO FREE STORAGE 01421000
R13704DK: * 01422000
R13704DK: FRETVMB EQU * REMOVE + FRET VMBLOK 01423000
R13704DK: LA R0,8 LENGTH OF USERID @VA13441 01424000
R13704DK: LA R1,VMUSER POINT TO USERID @VA13441 01425000
R13704DK: CALL DMKSCNAU SEE IF VMBLOK STILL VALID @VA13441 01426000
R13704DK: BMR R9 ALREADY GONE - RETURN @VA13441 01427000
R13704DK: BZ FRETVMB1 STILL THERE - NOW FRET IT @VA13441 01428000
R13704DK: TM VMRSTAT,VMLOGOFF IS LOGOFF IN PROCESS @VA13441 01429000
R13704DK: BOR R9 IF YES - BETTER DO NOTHING HERE @VA13441 01430000
R13704DK: TM VMOSTAT,VMKILL WILL DISPATCHER FORCE HIM OFF @VA13441 01431000
R13704DK: BOR R9 IF YES - STAY CLEAR OF FRETTING @VA13441 01432000
R13704DK: * VMBLOK 01433000
R13704DK: FRETVMB1 DS 0H @VA13441 01434000
R13704DK: L R2,ASYSVM THIS IS THE CHAIN ANCHOR @VA13441 01435000
R13704DK: CL R11,RUNUSER THIS IS EXTREMELY UNLIKELY 01436000
R13704DK: BNE FRETVM0 CHECK LASTUSER @V407510 01437000
R13704DK: ST R2,RUNUSER DON'T POINT AT FRET'ED BLOCK 01438000
R13704DK: B FRETVM1 START FREEING BLOK @V407510 01439000
R13704DK: FRETVM0 DS 0H @V407510 01440000
R13704DK: CL R11,LASTUSER SAME AS LASTUSER? @V407510 01441000
R13704DK: BNE FRETVM1 NO, START FREEING BLOK @V407510 01442000
R13704DK: ST R2,LASTUSER DON'T POINT AT FRET'ED BLOK @V407510 01443000
R13704DK: FRETVM1 EQU * HANDLE CHAIN ANCHOR PROBLEMS 01444000
R13704DK: L R3,VMPNT-VMBLOK(0,R2) FIRST USER AFTER ANCHOR 01445000
R13704DK: L R4,VMPNT USER AFTER OUR VMBLOK 01446000
R13704DK: CLR R4,R11 IF HE POINTS TO HIMSELF... 01447000
R13704DK: BNE FRETVM2 NO - GREAT 01448000
R13704DK: SLR R5,R5 ...ZERO ANCHOR BECAUSE NOBODY IS LEFT 01449000
R13704DK: B FRETVM3 ... 01450000
R13704DK: FRETVM2 EQU * NOW CHASE THE VMBLOK CHAIN 01451000
R13704DK: LR R5,R3 PREVIOUS BLOCK 01452000
R13704DK: L R3,VMPNT-VMBLOK(,R3) NEXT ONE... 01453000
R13704DK: CLR R3,R11 POINTED TO US THIS TIME ? 01454000
R13704DK: BNE FRETVM2 NO - KEEP CHASING 01455000
R13704DK: ST R4,VMPNT-VMBLOK(,R5) TAKE US OUT OF CHAIN 01456000
R13704DK: FRETVM3 EQU * NOW MOVE THE CHAIN ANCHOR JUST IN CASE 01457000
R13704DK: ST R5,VMPNT-VMBLOK(,R2) ...WE DELETED FIRST USER 01458000
R13704DK: XR R2,R11 EXCHANGE R11 & R2 @V4M0204 01459000
R13704DK: XR R11,R2 R11 = SYSTEM VMBLOK @V4M0204 01460000
R13704DK: XR R2,R11 R2 = VMBLOK TO BE FRET'D @V4M0204 01461000
R13704DK: CHARGE START CHARGE SYSTEM VMBLOK @V4M0204 01462000
R13704DK: L R1,VMDELAY-VMBLOK(,R2) @VA11836 01463000
R13704DK: LTR R1,R1 DO WE HAVE ONE? @VA08708 01464000
R13704DK: BZ FRETVM3A NO - DO NOT TRY TO FRET TRQ @VA08708 01465000
R13704DK: CLC TRQBFPNT-TRQBLOK(4,R1),ZEROES HAS THE TRQ BEEN @VA08708 01466000
R13704DK: * QUED? 01467000
R13704DK: BE FRETTRQ NO - GO FRET IT @VA08708 01468000
R13704DK: CALL DMKSCHRT YES - RESET IT THEN FRET IT @VA08708 01469000
R13704DK: FRETTRQ LA R0,TRQBSIZE LOAD TRQ SIZE FOR FRET @VA08708 01470000
R13704DK: CALL DMKFRET NOW GIVE IT BACK @VA08708 01471000
R13704DK: FRETVM3A EQU * @VA08708 01472000
R13704DK: L R1,VMDFTPNT-VMBLOK(,R2) GET DEFERRED POINTER @V4M0204 01473000
R13704DK: LTR R1,R1 DOES ONE EXIST? @V4M0204 01474000
R13704DK: BZ FRETVM4 NO, FRET VMBLOK @V4M0204 01475000
R13704DK: LA R0,CPEXSIZE GET SIZE OF DEFERRED BLOK @V4M0204 01476000
R13704DK: CALL DMKFRET FREE DEFERRED TASK BLOK @V4M0204 01477000
R13704DK: FRETVM4 DS 0H @V4M0204 01478000
R13704DK: LR R1,R2 GET ADDRESS OF VMBLOK @V4M0204 01479000
R13704DK: LA R0,VMBSIZE BLOCK SIZE = HUGE 01480000
R13704DK: MVI VMUSER-VMBLOK+7(R1),X'00' NULLIFY USERID @VA13441 01481000
R13704DK: CALL DMKFRET RELEASE THE VMBLOK 01482000
R13704DK: BR R9 RETURN TO CALLER 01483000
R13704DK: EJECT 01484000
R13704DK: *. 01485000
R13704DK: * SUBROUTINE NAME - 01486000
R13704DK: * 01487000
R13704DK: * DMKDIBCP - 'COUPLE' VIRTUAL CHANNEL-TO-CHANNEL ADAPTER@VA13704 01488000
R13704DK: * 01489000
R13704DK: * FUNCTION - 01490000
R13704DK: * 01491000
R13704DK: * TO ESTABLISH A VIRTUAL CONNECTION BETWEEN TWO VIRTUAL 01492000
R13704DK: * CHANNEL-TO-CHANNEL ADAPTERS, EITHER ON SEPARATE VIRTUAL 01493000
R13704DK: * MACHINES OR TWO ADAPTERS ON A SINGLE VIRTUAL MACHINE. 01494000
R13704DK: * 01495000
R13704DK: * COMMAND LINE FORMAT - 01496000
R13704DK: * 01497000
R13704DK: * +----------+-------------------------------+ 01498000
R13704DK: * | | | 01499000
R13704DK: * | COUPLE | VADDR <TO> USERID VADDR | 01500000
R13704DK: * | ---- | VADDR <TO> * VADDR | 01501000
R13704DK: * | | | 01502000
R13704DK: * +----------+-------------------------------+ 01503000
R13704DK: * 01504000
R13704DK: * ENTRY POINT - 01505000
R13704DK: * 01506000
R13704DK: * DMKDIBCP @VA13704 01507000
R13704DK: * 01508000
R13704DK: * ENTRY CONDITIONS - 01509000
R13704DK: * 01510000
R13704DK: * GPR 13 = ADDRESS OF STANDARD SAVE-AREA 01511000
R13704DK: * GPR 12 = ADDRESS OF DMKDIBCP @VA13704 01512000
R13704DK: * GPR 11 = ADDRESS OF CALLER'S VMBLOK 01513000
R13704DK: * GPR 9 = ADDRESS OF COMMAND BUFFER 01514000
R13704DK: * 01515000
R13704DK: * EXIT CONDITIONS - 01516000
R13704DK: * 01517000
R13704DK: * GPR 2 = ERROR CODE, OR ZERO IF NO ERRORS 01518000
R13704DK: * 01519000
R13704DK: * IF GPR 2 = 0, THE TWO CTCA'S SPECIFIED HAVE BEEN 01520000
R13704DK: * COUPLED TOGETHER AND ARE READY FOR USE BY THE VM. 01521000
R13704DK: * 01522000
R13704DK: * CALLS TO OTHER ROUTINES - 01523000
R13704DK: * 01524000
R13704DK: * DMKSCNFD 01525000
R13704DK: * DMKSCNVU 01526000
R13704DK: * DMKSCNAU 01527000
R13704DK: * DMKQCNWT 01528000
R13704DK: * DMKCVTHB 01529000
R13704DK: * DMKCVTBH 01530000
R13704DK: * DMKFREE 01531000
R13704DK: * DMKERMSG 01532000
R13704DK: * DMKVCARS 01533000
R13704DK: * 01534000
R13704DK: * EXTERNAL REFERENCES - NONE 01535000
R13704DK: * 01536000
R13704DK: * TABLES / WORK AREAS - 01537000
R13704DK: * 01538000
R13704DK: * VDEVBLOK, VCUBLOK, CHXBLOK, CHYBLOK 01539000
R13704DK: * 01540000
R13704DK: * REGISTER USAGE - 01541000
R13704DK: * 01542000
R13704DK: * GPR 13 = SAVE-AREA ADDRESSABILITY 01543000
R13704DK: * GPR 12 = MODULE BASE ADDRESSABILITY 01544000
R13704DK: * GPR 11 = VMBLOK ADDRESS OF X-SIDE USER 01545000
R13704DK: * GPR 10 = VMBLOK ADDRESS OF Y-SIDE USER 01546000
R13704DK: * GPR 9 = COMMAND BUFFER ADDRESS 01547000
R13704DK: * GPR 8 = VDEVBLOK ADDRESS, X-SIDE CTCA 01548000
R13704DK: * GPR 7 = VDEVBLOK ADDRESS, Y-SIDE CTCA 01549000
R13704DK: * GPRS 0-6 ARE WORK REGISTERS 01550000
R13704DK: * 01551000
R13704DK: * NOTES - 01552000
R13704DK: * 01553000
R13704DK: * THE 'CHXBLOK' AND 'CHYBLOK' CREATED BY DMKDIBCP IS IN @VA13704 01554000
R13704DK: * REALITY A SINGLE CONTROL BLOCK, ADDRESSED VIA TWO 01555000
R13704DK: * IDENTICAL DSECT'S FOR SYMMETRY. (SEE ACTUAL DSECTS) 01556000
R13704DK: * 01557000
R13704DK: * OPERATION - 01558000
R13704DK: * 01559000
R13704DK: * 1. THE COMMAND LINE IS SCANNED FOR ALL REQUIRED PARMS 01560000
R13704DK: * AND THE SPECIFIED DEVICES ARE CHECKED TO INSURE THAT 01561000
R13704DK: * THEY ARE CHANNEL-TO-CHANNEL ADAPTERS AND ARE AVAILABLE 01562000
R13704DK: * FOR USE. ERROR MESSAGES ARE TYPED IF ANY CHECKS FAIL. 01563000
R13704DK: * 01564000
R13704DK: * 2. THE INTERMEDIATE CONTROL BLOCKS, CHXBLOK AND CHYBLOK, 01565000
R13704DK: * ARE ALLOCATED FROM FREE STORAGE AND CONNECTED TO THE 01566000
R13704DK: * VDEVBLOKS OF THE X-SIDE AND Y-SIDE ADAPTERS. THE NOT- 01567000
R13704DK: * READY BIT IN THE VDEVBLOKS IS REMOVED AND THE ADAPTERS 01568000
R13704DK: * ARE READY FOR VIRTUAL MACHINE USE. VERIFICATION MESSAGES 01569000
R13704DK: * ARE SENT TO BOTH THE X-SIDE AND Y-SIDE USERS. 01570000
R13704DK: * 01571000
R13704DK: * RESPONSES - 01572000
R13704DK: * 01573000
R13704DK: * 'CTCA VADDR COUPLE TO USERID1 VADDR' (X-SIDE) 01574000
R13704DK: * 01575000
R13704DK: * 'CTCA VADDR COUPLE BY USERID2 VADDR' (Y-SIDE) 01576000
R13704DK: * 01577000
R13704DK: * ERROR MESSAGES - 01578000
R13704DK: * 01579000
R13704DK: * DMKDIB006E INVALID DEVICE TYPE - VADDR @VA13704 01580000
R13704DK: * DMKDIB011E INVALID DEVICE TYPE - $USERID$ VADDR @VA13704 01581000
R13704DK: * DMKDIB020E USERID MISSING OR INVALID @VA13704 01582000
R13704DK: * DMKDIB022E VADDR MISSING OR INVALID @VA13704 01583000
R13704DK: * DMKDIB040E DEV VADDR DOES NOT EXIST @VA13704 01584000
R13704DK: * DMKDIB045E $USERID$ NOT LOGGED ON @VA13704 01585000
R13704DK: * DMKDIB047E $USERID$ VADDR DOES NOT EXIST @VA13704 01586000
R13704DK: * DMKDIB058E CTCA VADDR BUSY ON $USERID$ @VA13704 01587000
R13704DK: *. 01588000
R13704DK: EJECT 01589000
R13704DK: DMKDIBCP RELOC , "COUPLE VADDR TO USERID VADDR" @VA13704 01590000
R13704DK: SPACE 2 01591000
R13704DK: MVI SAVEWRK1,X'00' CLEAR A FLAG BYTE 01592000
R13704DK: LA R6,INVVADD RETURN IF NO OPERAND FOUND @V240820 01593000
R13704DK: BAL R10,SCANCVT SCAN AND CONVERT DEVICE ADDRESS @V240820 01594000
R13704DK: SPACE 01595000
R13704DK: CALL DMKSCNFD SECOND PARM = OPTION 'TO' 01596000
R13704DK: BNZ NOUSRID USERID MISSING OR INVLAID 01597000
R13704DK: LR R2,R0 01598000
R13704DK: BCTR R2,0 DECREMENT COUNT FOR EXECUTED COMPARE 01599000
R13704DK: EX R2,CLCOPTO CLC 0(*-*,R1),=C'TO ' 01600000
R13704DK: BNE DIACPUSR MUST BE A USERID 01601000
R13704DK: CALL DMKSCNFD SCAN FOR USERID 01602000
R13704DK: BNZ NOUSRID 01603000
R13704DK: DIACPUSR EQU * FIND SPECIFIED USER VMBLOK 01604000
R13704DK: CLC 0(2,R1),=C'* ' WRAP CONNECTION TO HIMSELF ? 01605000
R13704DK: BNE DIACPOTH NO 01606000
R13704DK: LR R10,R11 SAME VMBLOK FOR BOTH DEVICES 01607000
R13704DK: OI SAVEWRK1,CTCWRAP REMEMBER SPECIAL COUPLE @VA02003 01608000
R13704DK: B DIACPAD2 GO GET SECOND VADDR 01609000
R13704DK: EJECT 01610000
R13704DK: DIACPOTH EQU * LOCATE VMBLOK OF REMOTE USER 01611000
R13704DK: CALL DMKSCNAU 01612000
R13704DK: BC 2,NOUSRID USERID INVALID 01613000
R13704DK: BC 5,NOTLOGD NOT LOGGED ON, OR WON'T BE SOON 01614000
R13704DK: LR R10,R1 SAVE VMBLOK ADDRESS IN GPR10 01615000
R13704DK: CLR R10,R11 WRAP CONNECTION TO HIMSELF ? 01616000
R13704DK: BNE DIACPAD2 NO - 01617000
R13704DK: OI SAVEWRK1,CTCWRAP INDICATE WRAP TO HIMSELF @VA02003 01618000
R13704DK: DIACPAD2 EQU * SCAN FOR REMOTE VADDR 01619000
R13704DK: ST R10,SAVEWRK5 SAVE ADDRESS OF REMOTE VMBLOK @V240820 01620000
R13704DK: BAL R14,SWPUSER SWITCH TO REMOTE VMBLOK @V240820 01621000
R13704DK: LA R6,INVVADD RETURN IF NO OPERAND @V240820 01622000
R13704DK: BAL R10,SCANCVT SCAN AND CONVERT DEVICE ADDRESS @V240820 01623000
R13704DK: BAL R14,SWPCALL BACK TO THE CALLER'S VMBLOK @V240820 01624000
R13704DK: L R10,SAVEWRK5 RESTORE ADDR OF REMOTE VMBLOK @VM01004 01625000
R13704DK: SPACE 01626000
R13704DK: LH R1,SAVEWRK2 VADDR OF LOCAL CTCA 01627000
R13704DK: CALL DMKSCNVU FIND THE VDEVBLOK 01628000
R13704DK: USING VDEVBLOK,R8 01629000
R13704DK: CLC VDEVTYPC(2),=AL1(CLASSPEC,TYPCTCA) 01630000
R13704DK: BNE BADVADD2 INVALID DEVICE TYPE - VADDR 01631000
R13704DK: TM VDEVSTAT,VDEVDED IS THE DEVICE DEDICATED ? 01632000
R13704DK: BO BADVADD2 YES - WE CAN'T DO THAT 01633000
R13704DK: CALL DMKCFPRD RESET LOCAL CTCA 01634000
R13704DK: CALL DMKVCARS RELEASE ANY PREVIOUS CONNECTION 01635000
R13704DK: LA R0,CPEXSIZE GET FREE STORAGE FOR A CPEXBLOK 01636000
R13704DK: CALL DMKFREE .. 01637000
R13704DK: LA R15,DIACPGO EXECTUION ADDRESS AFTER DELAY 01638000
R13704DK: STM R15,R14,CPEXADD-CPEXBLOK(R1) SET ADDR, REGISTERS 01639000
R13704DK: XC 0(12,R1),0(R1) CLEAR CPEXFPNT, CPEXBPNT, CPEXMISC 01640000
R13704DK: CALL DMKSTKCP STACK BLOCK FOR SEQUENCING DELAY 01641000
R13704DK: GOTO DMKDSPCH WAIT FOR THINGS TO QUIET DOWN 01642000
R13704DK: EJECT 01643000
R13704DK: DIACPGO EQU * RETURN AFTER NECESSARY DELAY 01644000
R13704DK: BAL R14,SWPUSER SWITCH TO REMOTE VMBLOK 01645000
R13704DK: LH R1,SAVEWRK2+2 VADDR OF REMOTE CTCA 01646000
R13704DK: CALL DMKSCNVU FIND THE VDEVBLOK 01647000
R13704DK: CLC VDEVTYPC(2),=AL1(CLASSPEC,TYPCTCA) 01648000
R13704DK: BNE BADVADD INVALID DEVICE TYPE - USERID VADDR 01649000
R13704DK: TM VDEVSTAT,VDEVDED IS IT DEDICATED ? 01650000
R13704DK: BO BADVADD YES - WE CAN'T DO THAT 01651000
R13704DK: TM VDEVSTAT,VDEVNRDY THIS IS SET IF DEVICE IS AVAILABLE 01652000
R13704DK: BZ CTCBUSY CTCA VADDR BUSY ON USERID 01653000
R13704DK: TM SAVEWRK1,CTCWRAP COUPLE TO HIMSELF ? @VA02003 01654000
R13704DK: BZ DIADBLCK NO -- SKIP DOUBLE-CHECK 01655000
R13704DK: CLC SAVEWRK2(2),SAVEWRK2+2 WRAP TO SAME DEVICE ? 01656000
R13704DK: BE CTCBUSY YES - CALL THE DEVICE BUSY 01657000
R13704DK: DIADBLCK EQU * ALL SET TO CONNECT THE ADAPTERS 01658000
R13704DK: BAL R14,SWPCALL GO BACK TO CALLER'S VMBLOK 01659000
R13704DK: LH R1,SAVEWRK2 VADDR OF LOCAL CTCA 01660000
R13704DK: CALL DMKSCNVU GET THE VDEVBLOK AGAIN 01661000
R13704DK: LA R0,CHBSIZE SIZE OF INTERCONNECTOR BLOCK 01662000
R13704DK: CALL DMKFREE GET FREE STORAGE FOR VIRTUAL CABLES 01663000
R13704DK: LR R9,R1 ADDRESS VIA GR9 01664000
R13704DK: USING CHXBLOK,R9 ... 01665000
R13704DK: XC CHXBLOK(CHBSIZE*8),CHXBLOK CLEAR ENTIRE BLOCK 01666000
R13704DK: ST R9,VDEVREAL PLUG IN THE X-SIDE 01667000
R13704DK: ST R10,CHXOTHR CONNECT Y-SIDE VMBLOK 01668000
R13704DK: LH R1,SAVEWRK2+2 Y-SIDE VADDR 01669000
R13704DK: STH R1,CHXYADD ...NEEDED BY X-SIDE ADAPTER 01670000
R13704DK: NI VDEVSTAT,X'FF'-VDEVNRDY THIS SIDE NOW READY 01671000
R13704DK: LA R9,4(0,R9) FLIP TO Y-SIDE BLOCK 01672000
R13704DK: USING CHYBLOK,R9 ... 01673000
R13704DK: L R1,SAVEWRK5 GET REMOTE VMBLOK ADDRESS @V407510 01674000
R13704DK: SWTCHVM SWITCH TO REMOTE USER @V407510 01675000
R13704DK: LH R1,SAVEWRK2+2 GET Y-SIDE VADDR FOR DMKSCNVU @V4M0170 01676000
R13704DK: CALL DMKSCNVU GET REMOTE VDEVBLOK (VADDR IS IN R1) 01677000
R13704DK: ST R9,VDEVREAL PLUG IN THE Y-SIDE 01678000
R13704DK: L R1,SAVER11 ADDRESS OF X-SIDE VMBLOK 01679000
R13704DK: ST R1,CHYOTHR SET FOR USE FROM Y-SIDE 01680000
R13704DK: LH R1,SAVEWRK2 X-SIDE VADDR 01681000
R13704DK: STH R1,CHYXADD ...NEEDED BY Y-SIDE ADAPTER 01682000
R13704DK: NI VDEVSTAT,X'FF'-VDEVNRDY NOW THIS SIDE IS READY 01683000
R13704DK: DROP R9 01684000
R13704DK: EJECT 01685000
R13704DK: MVC SAVEWRK8(8),BLANKS BLANK OUT THESE FIELDS @VA08677 01686000
R13704DK: MVC SAVEWRK9(3),SAVEWRK3+1 MOVE LOCAL VADDR DOWN @V240820 01687000
R13704DK: MVC SAVEWRK3(4),SAVEWRK4 MOVE REMOTE VADDR UP @V240820 01688000
R13704DK: MVC SAVEWRK2(4),=C'CTCA' NOW FILL IT OUT 01689000
R13704DK: MVC SAVEWRK4(12),=C' COUPLE BY ' 01690000
R13704DK: TM SAVEWRK1,CTCWRAP COUPLING TWO LOCAL CTCA'S @VA02003 01691000
R13704DK: BO DIACPLOC YES -- SKIP DOUBLE MESSAGES 01692000
R13704DK: L R11,SAVER11 GET CALLER'S VMBLOK JUST LONG ENOUGH... 01693000
R13704DK: MVC SAVEWRK6+3(8),VMUSER ...TO GET THE X-SIDE USERID 01694000
R13704DK: LR R11,R10 BACK TO REMOTE VMBLOK 01695000
R13704DK: LA R0,SAVEWRK9+3-SAVEWRK2 DATA LENGTH @VM01044 01696000
R13704DK: LA R1,SAVEWRK2 MSG START 01697000
R13704DK: CALL DMKQCNWT,PARM=NORET 01698000
R13704DK: DIACPLOC EQU * SEND MESSAGE ONLY ONCE 01699000
R13704DK: L R1,SAVER11 GET CALLER'S VMBLOK @V407510 01700000
R13704DK: SWTCHVM SWITCH BACK TO CALLER @V407510 01701000
R13704DK: L R1,SAVEWRK3 NOW SWAP THE TWO ADDRESSES 01702000
R13704DK: L R2,SAVEWRK9 ...FOR LOCAL USER MESSAGE 01703000
R13704DK: STCM R1,B'0111',SAVEWRK9 ... 01704000
R13704DK: STCM R2,B'1110',SAVEWRK3+1 01705000
R13704DK: MVC SAVEWRK6(3),=C'TO ' CHANGE THE PARTICIPLE 01706000
R13704DK: MVC SAVEWRK6+3(8),VMUSER-VMBLOK(R10) 01707000
R13704DK: LA R0,SAVEWRK9+3-SAVEWRK2 DATA LENGTH @VM01044 01708000
R13704DK: LA R1,SAVEWRK2 ADDRESS 01709000
R13704DK: CALL DMKQCNWT,PARM=NORET SEND LOCAL USER MESSAGE 01710000
R13704DK: SLR R2,R2 01711000
R13704DK: ST R2,SAVER2 ZERO RETURN CODE 01712000
R13704DK: EXIT , RETURN TO DMKCFM 01713000
R13704DK: SPACE 01714000
R13704DK: CLCOPTO CLC 0(*-*,R1),=C'TO ' OPTIONAL WORD TEST 01715000
R13704DK: EJECT 01716000
R13704DK: SWPUSER EQU * SWITCH TO OBJECTIVE VMBLOK 01717000
R13704DK: ST R14,SAVEWRK6 SAVE R14 ACROSS CHARGE @V4M0116 01718000
R13704DK: CHARGE SWITCH,SAVEWRK5 CHARGE 'OTHER' VMBLOK @V407510 01719000
R13704DK: L R14,SAVEWRK6 RESTORE REG 14 @V4M0116 01720000
R13704DK: BR R14 01721000
R13704DK: SPACE 01722000
R13704DK: SWPCALL EQU * SWITCH TO CALLER'S VMBLOK 01723000
R13704DK: ST R14,SAVEWRK6 SAVE R14 ACROSS CHARGE @V4M0116 01724000
R13704DK: CHARGE SWITCH,SAVER11 CHARGE CALLER @V407510 01725000
R13704DK: L R14,SAVEWRK6 RESTORE REG 14 @V4M0116 01726000
R13704DK: BR R14 01727000
R13704DK: SPACE 2 01728000
R13704DK: SCANCVT EQU * SCAN AND CONVERT DEVICE ADDRESS @V240820 01729000
R13704DK: CALL DMKSCNFD SCAN FOR THE NEXT OPERAND @V240820 01730000
R13704DK: BNZR R6 ERROR EXIT IF NOT FOUND @V240820 01731000
R13704DK: CL R0,F3 THREE CHARACTERS MAXIMUM @V240820 01732000
R13704DK: BH INVVADD INVALID VADDR @V240820 01733000
R13704DK: CALL DMKCVTHB CONVERT ADDRESS TO BINARY @V240820 01734000
R13704DK: BNZ INVVADD CONVERT FAILED - INVALID @V240820 01735000
R13704DK: MAXDV R15 GET MAXIMUM VALID ADDRESS IN GR15@V240820 01736000
R13704DK: CLR R1,R15 IS THE DEVICE ADDRESS POSSIBLE ? @V240820 01737000
R13704DK: BH INVVADD NO -- KICK IT OUT @V240820 01738000
R13704DK: LR R6,R1 REMEMBER ADDRESS FOR DMKSCNVU @V240820 01739000
R13704DK: CALL DMKCVTBH RE-CONVERT IT FOR MESSAGES @V240820 01740000
R13704DK: ICM R1,8,BLANKS GET A HIGH-ORDER BLANK @V240820 01741000
R13704DK: TM SAVEWRK1,FIRSTAD IS THIS THE FIRST PASS ? @V240820 01742000
R13704DK: BO SCANTWO NO -- USE REMOTE SLOTS @V240820 01743000
R13704DK: OI SAVEWRK1,FIRSTAD REMEMBER THE FIRST PASS @V240820 01744000
R13704DK: STH R6,SAVEWRK2 SAVE 'LOCAL' DEVICE ADDRESS @V240820 01745000
R13704DK: ST R1,SAVEWRK3 SAVE EBCDIC EQUIVALENT OF ADDRESS@V240820 01746000
R13704DK: B SCANSCN TRY TO FIND THE VIRTUAL BLOCKS @V240820 01747000
R13704DK: SCANTWO EQU * SAVE VALUES FOR REMOTE DEVICE @V240820 01748000
R13704DK: STH R6,SAVEWRK2+2 SLOT FOR REMOTE VIRTUAL ADDRESS @V240820 01749000
R13704DK: ST R1,SAVEWRK4 SLOT FOR EBCDIC EQUIVALENT @V240820 01750000
R13704DK: SCANSCN EQU * FIND THE VIRTUAL BLOCKS @V240820 01751000
R13704DK: LR R1,R6 ADDRESS BACK TO GR1 @V240820 01752000
R13704DK: CALL DMKSCNVU SCAN FOR THE DEVICE @V240820 01753000
R13704DK: BNZ UNKNOWN DEVICE DOES NOT EXIST @V240820 01754000
R13704DK: BR R10 RETURN INTERNALLY @V240820 01755000
R13704DK: EJECT 01756000
R13704DK: UNKNWN2 EQU * DEV VADDR DOES NOT EXIST 01757000
R13704DK: LA R2,040(,0) MSG= DMKDIB040E @VA13704 01758000
R13704DK: B VADONLY SET UP VARIABLE DATA 01759000
R13704DK: SPACE 01760000
R13704DK: BADVADD2 EQU * INVALID DEVICE TYPE - VADDR 01761000
R13704DK: LA R2,006(,0) MSG= DMKDIB006E @VA13704 01762000
R13704DK: VADONLY EQU * SET VARIABLE 'VADDR' 01763000
R13704DK: CALL DMKCVTBH CONVERT 01764000
R13704DK: STCM R1,B'0111',SAVEWRK2 01765000
R13704DK: LA R0,3 LENGTH 01766000
R13704DK: B MSGSEND 01767000
R13704DK: SPACE 01768000
R13704DK: NOUSRID EQU * USERID MISSING OR INVALID 01769000
R13704DK: LA R2,020(,0) MSG= DMKDIB020E @VA13704 01770000
R13704DK: B MSGONLY NO EXTRA DATA NEEDED 01771000
R13704DK: SPACE 01772000
R13704DK: NOTLOGD EQU * USERID NOT LOGGED ON 01773000
R13704DK: MVC SAVEWRK2(8),BALRSAVE USERID LEFT BY 'SCNAU' 01774000
R13704DK: LA R0,8 DATA LENGTH 01775000
R13704DK: LA R2,045(,0) MSG= DMKDIB045E @VA13704 01776000
R13704DK: B MSGSEND 01777000
R13704DK: SPACE 01778000
R13704DK: INVVADD EQU * VIRTUAL ADDRESS MISSING OR INVALID 01779000
R13704DK: LA R2,022(,0) MSG= DMKDIB022E @VA13704 01780000
R13704DK: B MSGONLY NO EXTRA DATA NEEDED 01781000
R13704DK: SPACE 01782000
R13704DK: CTCBUSY EQU * CTCA VADDR BUSY ON USERID 01783000
R13704DK: LA R2,058(,0) MSG= DMKDIB058E @VA13704 01784000
R13704DK: VADDUSR EQU * SET VARIABLES 'VADDR USERID' 01785000
R13704DK: CALL DMKSCNVD GET DEVICE ADDRESS IN 'CCU' FORM 01786000
R13704DK: CALL DMKCVTBH CONVERT TO HEX 01787000
R13704DK: STCM R1,B'0111',SAVEWRK2 01788000
R13704DK: MVI SAVEWRK2+3,X'00' DELIMITER 01789000
R13704DK: MVC SAVEWRK3(8),VMUSER SECOND FIELD 01790000
R13704DK: LA R0,12 DATA LENGTH 01791000
R13704DK: B MSGSEND SEND ERROR MSG AND EXIT @VA03704 01792000
R13704DK: EJECT 01793000
R13704DK: BADVADD EQU * VIRTUAL DEVICE IS NOT A LINE 01794000
R13704DK: LA R2,011(,0) MSG= DMKDIB011E @VA13704 01795000
R13704DK: B USRVADD SET UP VARIABLE STRING 01796000
R13704DK: SPACE 01797000
R13704DK: UNKNOWN EQU * USERID VADDR DOES NOT EXIST 01798000
R13704DK: CH R1,SAVEWRK2 IS THIS THE LOCAL DEVICE ? @VA02009 01799000
R13704DK: BE UNKNWN2 YES - DIFFERENT MESSAGE @V240820 01800000
R13704DK: LA R2,047(,0) MSG= DMKDIB047E @VA13704 01801000
R13704DK: USRVADD EQU * SET VARIABLES 'USERID VADDR' 01802000
R13704DK: MVC SAVEWRK2(8),VMUSER 01803000
R13704DK: MVI SAVEWRK4,X'00' DELIMITER 01804000
R13704DK: LA R0,12 01805000
R13704DK: B MSGSEND 01806000
R13704DK: SPACE 01807000
R13704DK: MSGONLY EQU * NO DATA TO BE ADDED TO MESSAGE 01808000
R13704DK: SLR R0,R0 01809000
R13704DK: SLR R1,R1 01810000
R13704DK: B MSGSEND+4 01811000
R13704DK: SPACE 01812000
R13704DK: MSGSEND EQU * SEND ERROR MSG TO USER 01813000
R13704DK: LA R1,SAVEWRK2 POINT TO START OF VARIABLE DATA 01814000
R13704DK: BAL R14,SWPCALL BACK TO CALLER'S VMBLOK 01815000
R13704DK: ICM R0,B'1110',DMKDIB+3 MODULE IDENTIFIER @VA13704 01816000
R13704DK: ST R2,SAVER2 PASS RETURN CODE BACK TO DMKCFM @V240820 01817000
R13704DK: LA R14,707(0) @VA09464 01818000
R13704DK: CR R14,R2 DOES R2 CONTAIN 707 MESSAGE ? @VA09464 01819000
R13704DK: BNE MSGBLD NO, DON'T PUT'A' IN MESSAGE @VA09464 01820000
R13704DK: ICM R2,4,=X'C1' DMKDIB707A @VA13704 01821000
R13704DK: MSGBLD ICM R2,8,=X'80' RETURN HERE AFTER ERROR MESSAGE @VA09464 01822000
R13704DK: CALL DMKERMSG BUILD + TYPE ERROR MESSAGE 01823000
R13704DK: B DROPEXIT CHECK FOR CLEAN-UP WORK TO DO @VA13704 01824000
R13704DK: EJECT 01825000
R13704DK: * 01826000
R13704DK: * MESSAGE MODEL FOR USER AND OPERATOR RESPONSES 01827000
R13704DK: * 01828000
R13704DK: SPACE 01829000
R13704DK: MSGDIAL DSECT 01830000
R13704DK: DC C'LINE ' REAL DEVICE TYPE 01831000
R13704DK: MSGRADD DC C'XXX ' " " " ADDRESS 01832000
R13704DK: MSGFLD1 DC C'DIALED TO ' ACTIVITY CUE 01833000
R13704DK: MSGUSER DC C'$USERID$ ' DIAL-ED USER 01834000
R13704DK: MSGVADD DC C'XXX ' DIAL-ED VIRTUAL ADDRESS 01835000
R13704DK: ORG MSGVADD ...OR... 01836000
R13704DK: DC C'DIALED= ' OPERATOR INFO 01837000
R13704DK: MSGNDIL DC C'NNN' NO. OF DIALED USERS 01838000
R13704DK: ORG 01839000
R13704DK: MSGSIZE EQU (*-MSGDIAL+7)/8 BUFFER LENGTH 01840000
R13704DK: SPACE 2 01841000
R13704DK: * EQUATES USED IN 'SAVEWRK1' FLAG BYTE: @V240820 01842000
R13704DK: GRAPHIC EQU X'80' DIAL VIA GRAPHIC TERMINAL @V240820 01843000
R13704DK: STRTSTP EQU X'40' DIAL VIA 270X/EMULATOR TERMINAL @V240820 01844000
R13704DK: NCPTERM EQU X'20' DIAL VIA PEP/NCP TERMINAL @V240820 01845000
R13704DK: FIRSTAD EQU X'10' FIRST ADDRESS HAS BEEN SCANNED @V240820 01846000
R13704DK: DYNABLK EQU X'08' DYNAMIC RDEVBLOK IS RESERVED @V240820 01847000
R13704DK: MSGFRET EQU X'04' MESSAGE BUFFER IS IN USE @V240820 01848000
R13704DK: CTCWRAP EQU X'02' 'COUPLE' FOR TWO LOCAL CTCA'S @VA02003 01849000
R13704DK: EPABORT EQU X'01' SWITCH TO EP-MODE FAILED @V240820 01850000
R13704DK: SPACE 2 01851000
R13704DK: DMKDIB CSECT , RE-ENTER PROGRAM CSECT @VA13704 01852000
R13704DK: EJECT 01853000
R13704DK: LTORG 01854000
R13704DK: EJECT 01855000
R13704DK: COPY VCTCA VIRTUAL CHANNEL-TO-CHANNEL ADAPTER BLOCKS 01856000
R13704DK: COPY TIMER @V200730 01857000
R13704DK: COPY NETWORK @V240820 01858000
R13704DK: COPY BTUCMD @V240820 01859000
R13704DK: COPY EQU 01860000
R13704DK: COPY DEVTYPES 01861000
R13704DK: PSA 01862000
R13704DK: COPY SAVE 01863000
R13704DK: COPY VMBLOK 01864000
R13704DK: COPY RBLOKS 01865000
R13704DK: COPY VBLOKS 01866000
R13704DK: COPY IOBLOKS 01867000
R13704DK: COPY IOER 01868000
R13704DK: END DMKDIB @VA13704 01869000
BEGIN APPLY >>> ./ R 00014000 $ 14000 200 07/01/81 10:49:45
END APPLY >>> ./ R 00014000 $ 14000 200 07/01/81 10:49:45
BEGIN APPLY >>> ./ I 00927000 $ 927100 100 07/01/81 10:49:45
END APPLY >>> ./ I 00927000 $ 927100 100 07/01/81 10:49:45
BEGIN APPLY >>> ./ R 00962000 $ 962000 1000 07/01/81 10:49:45
END APPLY >>> ./ R 00962000 $ 962000 1000 07/01/81 10:49:45
BEGIN APPLY >>> ./ R 00995000 $ 995000 1000 07/01/81 10:49:45
END APPLY >>> ./ R 00995000 $ 995000 1000 07/01/81 10:49:45
BEGIN APPLY >>> ./ R 01163000 $ 1163000 1000 07/01/81 10:49:45
END APPLY >>> ./ R 01163000 $ 1163000 1000 07/01/81 10:49:45
BEGIN APPLY >>> ./ R 01179000 01190000 $ 1179000 1000 07/01/81 10:49:45
END APPLY >>> ./ R 01179000 01190000 $ 1179000 1000 07/01/81 10:49:45
Update Succeeded
Update Execution Time 23 milliseconds.