ibm:vm370-lib:cp:dmkdsb.assemble_src
Table of Contents
DMKDSB Source
References
- Fixes Applied : 8
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC015DK]
Source Listing
- DMKDSB.ASSEMBLE.txt
- DSB TITLE 'DMKDSB (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE INPUT SERIALIZATION @V200820 00002000
- *. 00003000
- * 00004000
- * MODULE NAME : DMKDSB 00005000
- * 00006000
- * 00007000
- * 00008000
- * FUNCTION: 00009000
- * 00010000
- * 00011000
- * DMKDSBSD: ISSUES BUFFER UNLOAD CCW FOR 3330/3340/3350/2305. 00012000
- * 00013000
- * DMKDSBRD: READS VOLUME LABEL WHEN AN UNSOLICITED DEVICE-END 00014000
- * INTERRUPT OCCURS. IF THE PACK HAS BEEN CHANGED (3330/3340/ 00015000
- * 3350/2305) A BUFFER UNLOAD IS ALSO PERFORMED. 00016000
- * 00017000
- * 00018000
- * ATTRIBUTES : REENTRANT,RESIDENT,CALLED VIA SVC. 00019000
- * 00020000
- * 00021000
- * ENTRY POINT: DMKDSBRD - ENTRY FOR UNSOLICATED D.E. INTERRUPTS 00022000
- * DMKDSBSD - COLLECT DASD ENVIRONMENTAL SENSE DATA 00023000
- * 00024000
- * 00025000
- * ENTRY CONDITIONS : GPR8=ADDRESS OF RDEVBLOK 00026000
- * GPR10=ADDRESS OF IOBLOK 00027000
- * GPR12=BASE ADDRESS 00028000
- * GPR13=ADDRESS OF SAVE AREA 00029000
- * 00030000
- * 00031000
- * EXIT CONDITIONS : 1. RETURN TO CALLER WHEN ENTRY POINT 00032000
- * WAS DMKDSBSD. 00033000
- * 2. EXIT TO DMKDSPCH WHEN ENTRY POINT 00034000
- * WAS DMKDSBRD. 00035000
- * 00036000
- * 00037000
- * CALLS TO OTHER ROUTINES : 00038000
- * 1. DMKIOSQR - PERFORM REAL I/O. 00039000
- * 2. DMKFREE - OBTAIN STORAGE FOR DASD 00040000
- * IOERBLOK, WORK BUFFER AND MSG 00041000
- * BUFFER. 00042000
- * 3. DMKFRET - TO RET. STORAGE OBTAINED BY DMKFRE 00043000
- * 4. DMKIOESD - RECORD DASD STATISTICAL DATA 00044000
- * 5. DMKQCNWT - TO WRITE MSG DSB956A TO OPERATOR 00045000
- * 6. DMKSCNRU - TO FIND THE R-BLOCK'S 00046000
- * 7. DMKCVTBH - TO CONVERT REAL DEVICE ADDRESS 00047000
- * 8. DMKDSPCH - EXIT AFTER DMKDSBRD PROCESSING 00048000
- * OR TO WAIT FOR I/O TO COMPLETE. 00049000
- * 00050000
- * 00051000
- * EXTERNAL REFERENCES : 00052000
- * DMKIOESD 00053000
- * 00054000
- * 00055000
- * TABLES AND WORKAREAS : BUFFER TO CONTAIN CHANNEL PROGRAM 00056000
- * AND LABEL READ FROM DASD VOLUME. 00057000
- * 00058000
- * 00059000
- * REGISTER USAGE : 00060000
- * GPR 0=PSA ADDRESSABILITY 00061000
- * GPR 1=SCRATCH 00062000
- * GPR 2=SCRATCH 00063000
- * GPR 3=SCRATCH 00064000
- * GPR 4=SCRATCH 00065000
- * GPR 5=GENERAL USAGE IS FOR BAL REGISTER 00066000
- * GPR 6=SCRATCH 00067000
- * GPR 7=IOERBLOK ADDRESS 00068000
- * GPR 8=RDEVBLOK ADDRESS. 00069000
- * GPR 9=SCRATCH 00070000
- * GPR 10=IOBLOK ADDRESS. 00071000
- * GPR 11=VMBLOK ADDRESS. 00072000
- * GPR 12=BASE ADDRESS. 00073000
- * GPR 13=SAVE AREA ADDRESS. 00074000
- * GPR 14=EXTERNAL LINKAGE REGISTER. 00075000
- * GPR 15=EXTERNAL LINKAGE REGISTER. 00076000
- * 00077000
- * 00078000
- * NOTES : NONE. 00079000
- * 00080000
- * 00081000
- * 00082000
- * OPERATION : 00083000
- * 00084000
- * 00085000
- * DMKDSBSD: IS CALLED FROM DMKCPS WHEN A 'SHUTDOWN' COMMAND IS ISSUED 00086000
- * OR FROM DMKCCW WHEN THE VIRTUAL MACHINE ISSUES A BUFFER UNLOAD 00087000
- * CCW. IT DETERMINES WHAT TYPES OF DASDI DEVICES ARE 00088000
- * ON THE SYSTEM AND ISSUES BUFFER UNLOAD TO 3330/3340/3350/2305 00089000
- * DEVICES. IF NO ERROR'S ARE ENCOUNTED A CALL IS MADE TO 00090000
- * DMKIOESD TO RECORD THE RECORD FOR FIELD ENGINEERING USE. 00091000
- * 00092000
- * 00093000
- * DMKDSBRD: IS CALLED FROM DMKIOS WHEN AN UNSOLICITED DEVICE END 00094000
- * INTERRUPT OCCURS. THIS ROUTINE WILL READ THE VOLUME LABEL VIA 00095000
- * A CALL TO DMKIOS. IF THE PACK HAS BEEN CHANGED AND THE 00096000
- * DEVICE IS A 3330/3340/3350, A BUFFER UNLOAD COMMAND WILL BE 00097000
- * EXECUTED. A CALL IS THEN MADE TO DMKIOESD TO RECORD THE 00098000
- * RECORD. THE NEW VOLUME LABEL IS THEN MOVED INTO THE RDEVBLOK. 00099000
- * THIS ENABLES DYNAMIC VOLUME RECOGNITION 00100000
- * DMKVDD (DETACH) ALSO STACKS AN UNSOLICITED DEVICE-END 00101000
- * INTERRUPT TO DMKDSBRD TO SEE IF THE PACK WAS CHANGED. 00102000
- * DMKCPS STACKS AN UNSOLICITED DEVICE-END INTERRUPT TO 00103000
- * DMKDSBRD TO SEE IF 2/4 CHANSW FEATURE ON HARDWARE WHEN 00104000
- * PERFORM A LABEL READ. 00105000
- * 00106000
- * 00107000
- * 00108000
- * 00109000
- * ERROR MESSAGES: 00110000
- * 00111000
- * DMKDSB956A DASD CCU VOLID VOLID NOT MOUNTED; NOW OFFLINE 00112000
- *. 00113000
- EJECT 00143000
- COPY OPTIONS 00144000
- DMKDSB CSECT 00145000
- ENTRY DMKDSBSD DO BUFFER UNLOAD FOR SHUTDOWN OR DMKCCW 00146000
- ENTRY DMKDSBRD ENTRY TO READ VOLUME LABEL ETC. 00147000
- SPACE 00149000
- EXTRN DMKIOESD,DMKIOSQR 00151000
- EXTRN DMKCVTBH 00152000
- EXTRN DMKSCNRU 00153000
- EXTRN DMKSTKCP,DMKSSSMQ @V60B6B8 00153010
- USING SAVEAREA,R13 00154000
- USING PSA,R0 00155000
- * USING IOERBLOK,R7 ADDRESSABILITY FOR IOERBLOK 00156000
- USING STATDASD,R4 ADDRESSABILITY FOR STATISICAL DATA 00157000
- USING RDEVBLOK,R8 00158000
- USING IOBLOK,R10 00159000
- USING DMKDSB,R12 COMMON ADDRESSABILITY 00160000
- * DMKDSBSD = 1ST ENTRY POINT; R12 = A(DMKDSBSD) = A(DMKDSB) ... 00181000
- SPACE 00182000
- DMKDSBSD ENTER DO BUFFER UNLOAD FOR SHUTDOWN OR DMKCCW: 00183000
- BAL R5,GETSTBUF GET BUFFER TO READ THE VOL1 LABEL 00184000
- MVI STATCALL,X'FF' INDICATE DMKDSBSD ENTRY @VA02264 00185000
- ST R13,STATGR13 STORE POINTER TO SAVE AREA 00186000
- B STATMAIN CONTINUE 00187000
- SPACE 00188000
- DMKDSBRD DS 0H ENTRY FROM UNSOLICITED DE INTERRUPT 00189000
- USING *,R12 00190000
- L R12,=A(DMKDSB) COMMON ADDRESSABILITY 00191000
- USING DMKDSB,R12 00192000
- TM IOBCSW+4,DE DOES THE UNSOL. INT INCLUDE DE? @V407438 00192250
- BZ NOLABEL NOPE, THEN DON'T READ THE LABEL @V407438 00192500
- TM IOBCSW+4,UC ENTRY WITH UC STATUS 00193000
- BZ NOUCK NO 00194000
- NOLABEL BAL R5,CKIOB FRET ANY IOERBLOK @V407438 00195000
- B FRETIOB 00196000
- NOUCK LH R1,IOBRADD GET THE REAL DEVICE ADDRESS 00197000
- CALL DMKSCNRU AND FIND THE R-BLOCK'S 00198000
- BAL R5,GETSTBUF GET A BUFFER TO READ THE VOL1 LABEL 00199000
- STATMAIN L R1,ASYSVM LOAD THE ADDRESS OF SYSTEM VMBLOK 00200000
- CLI STATCALL,X'FF' ENTERED AT DMKDSBSD ? @VA02264 00201000
- BNE *+6 NO -- CHARGE SYSTEM @VA02264 00202000
- LR R1,R11 YES -- CHARGE USER @VA02264 00203000
- ST R1,IOBUSER ..... INTO IOBLOK @VA02264 00204000
- LA R0,IOERSIZE SIZE OF 1 IOERBLOK 00205000
- SR R7,R7 R7=0: NO EXTRA WORDS IN IOERBLOK 00206000
- CLI RDEVTYPE,TYP2305 IS IT A 2305 ? 00207000
- BNE CALLFREE NOPE - REGULAR-SIZE IOERBLOK IS FINE 00208000
- *********************************************************************** 00209010
- * FOR CLARITY... SIZE OF THE EXTENSION HAS TO BE CALCULATED AS WHATS 00209020
- * LEFT OF THE BUFFERED DATA SIZE (E.G. 128 FOR THIS 2305) AFTER TAKING 00209030
- * OUT THAT PORTION PLACED FROM IOERDATA TO THE END OF THE IOERBLOK. 00209040
- * AS THIS IS VARIABLE IT SHOULD BE CALCULATED AS THE OVERALL SIZE LESS 00209050
- * THE AREA PRECEDING IOERDATA... ALL OF COURSE IN NUMBER OF DOUBLEWORDS 00209060
- *********************************************************************** 00209070
- LA R0,IOERSIZE+(128/8-(IOERSIZE-(IOERDATA-IOERBLOK)/8)) 973 00209080
- LA R7,128/8-(IOERSIZE-(IOERDATA-IOERBLOK)/8) 12 @VA09736 00209090
- CALLFREE CALL DMKFREE NOW GET REGULAR OR EXTRA-SIZE IOERBLOK 00211000
- USING IOERBLOK,R1 (VERY BRIEFLY) 00212000
- LR R0,R7 SAVE THIS EXTENSION LENGTH @VA09736 00213010
- LA R7,IOERSIZE(R7) INDICATE OVERALL LENGTH @VA09736 00213020
- SLL R7,3 MULT BY EIGHT @VA09736 00213030
- BCTR R7,R0 DECRIMENT BY UNO FOR EX @VA09736 00213040
- BCTR R7,R0 DECRIMENT BY UNO FOR CLEAR @VA09736 00213050
- MVI IOERBLOK,X'00' INIT BLOK TO ZERO @VA09736 00213060
- EX R7,IOECLR AND CLEAR THE BEAUTY OUT @VA09736 00213070
- STH R0,IOEREXT INDICATE THE EXTENSION @VA09736 00213080
- B SKIPCLR @VA09736 00213090
- SPACE 00213100
- IOECLR MVC IOERBLOK+1(0),IOERBLOK EXEC TO CLEAR @VA09736 00213110
- SPACE 00213120
- SKIPCLR DS 0H @VA09736 00213130
- DROP R1 00215000
- LR R7,R1 NOW NORMAL IOERBLOK ADDRESSABILITY 00216000
- USING IOERBLOK,R7 ... 00217000
- LA R0,STATSIZE SIZE OF WORKING STORAGE IS 00218000
- STH R0,IOERDW STORED IN THE IOERBLOK. 00219000
- ST R4,IOERLOC SAVE ADDRESS OF WORKING STORAGE. 00220000
- ST R4,IOBCAW SET CAW ADDRESS IN IOBLOK 00221000
- STM R7,R8,STATREGS SAVE PTRS TO IOERBLOK AND RDEVBLOK 00222000
- CLI RDEVTYPE,TYP2314 IS IT 2314 ?? @VA05779 00222100
- BE SNS2314 YES @VA05779 00222200
- LA R1,SNSRTN GET INTERRUPT RETURN ADDRESS AND 00223000
- ST R1,IOBIRA STORE IT IN THE IOBLOK 00224000
- OI IOBSPEC,IOBTIO TELL IOS TO DO A 'TIO' 00225000
- CALL DMKIOSQR CALL IOS TO SCHEDULE SENSE 00226000
- GOTO DMKDSPCH WAIT FOR I/O TO COMPLETE 00227000
- SPACE 00228000
- SNSRTN DS 0H CONNECTOR 00229000
- USING *,R12 00230000
- L R12,=A(DMKDSB) 00231000
- USING DMKDSB,R12 00232000
- L R4,IOBCAW RESTORE ADDRESS OF WORKING STORAGE 00233000
- LM R7,R8,STATREGS RESTORE ADDRESS OF IOERBLOK AND RDEVBLOK 00234000
- NI IOBSPEC,X'FF'-IOBTIO RESET 'TIO' FLAG 00235000
- TM IOBSTAT,IOBFATAL WAS THERE AN ERROR CONDALTPATH @VA11416 00236100
- BNZ FRETIOER IF YES, EXIT 00237000
- TM IOBSTAT,IOBCC3 WAS THERE AN ERROR CONDITION @VA11416 00237060
- BZ SNS2314 NO, ALL OK @VA11416 00237120
- BO FRETIOER DEVICE GONE IN THE MEANWHILE @VA11416 00237180
- CLC IOBCSW+4(2),=AL1(DE,0) CLEAN DEVICE END? @VA11416 00237240
- BNE FRETIOER NO. @VA11416 00237300
- SNS2314 EQU * @VA05779 00237500
- XC IOERDATA(IOERSNSZ),IOERDATA CLEAR SENSE AREA @V407438 00238000
- CLI STATCALL,X'FF' ENTERED AT DMKDSBSD ? @VA02264 00243000
- BE SKIPVOL1 IF YES, NO NEED TO READ VOLUME LABEL. 00244000
- CLI RDEVTYPE,TYP3380 DO WE HAVE A 3380 ? HRC011DK 00244300
- BE RDVOL80 HRC011DK 00244600
- CLI RDEVTYPE,TYP2305 DO WE HAVE A 2305? @VA07801 00245000
- BNE RDVOLLA NOPE - GO READ VOL LABEL @VA07801 00245100
- LA R6,STATREL LOOKING FOR RELEASE @VA07801 00245200
- ST R6,IOBCAW STORE IT @VA07801 00245300
- LA R1,RELRET LOAD R1 WITH IRA @VA07801 00245400
- ST R1,IOBIRA STORE INTO IOBLOK @VA07801 00245500
- OI IOBSPEC2,IOBREL IND. CH. PGM CONTAINS CP REL. @VA07801 00245600
- B DSBIOS CALL IOSQR @VA07801 00245700
- RDVOL80 LA R1,STATSEN-STATDASD HRC011DK 00245730
- OI 4(R1),CC TURN ON COMMAND CHAINING HRC011DK 00245760
- RDVOLLA OI IOBSPEC2,IOBREL IND. CH. PGM CONTAINS CP REL. @VA07801 00245800
- RDVOLLB LA R1,VOL1RTN RETURN ADDR AFTER LABEL READ @VA07801 00245900
- ST R1,IOBIRA STORE ADDRESS IN IOBLOK @VA07801 00246000
- ST R4,IOBCAW ADDRESS OF CHANNEL PROGRAM @VA07801 00246100
- DSBIOS CALL DMKIOSQR CALL IOS TO READ VOL LABEL @VA07801 00246200
- GOTO DMKDSPCH WAIT FOR I/O TO COMPLETE 00247000
- SPACE 00248000
- RELRET DS 0H @VA07801 00248025
- USING *,R12 @VA07801 00248050
- L R12,=A(DMKDSB) @VA07801 00248075
- USING DMKDSB,R12 @VA07801 00248100
- NI IOBSPEC2,255-IOBREL TURN OFF SPECIAL REL. FLG @VA07801 00248125
- CL R10,IOBLINK VERIFY IF THIS IS COPIED IOBLOK @VA07801 00248150
- BNE FRETIOB YES, GET RID OF IT @VA07801 00248175
- L R6,IOBCAW POINT TO IT @VA07801 00248200
- LA R1,STATREL-STATDASD DISP OF REL IN CHANNEL PGM @VA07801 00248225
- LR R4,R6 ADDRESS OF RELEASE TO R4 @VA07801 00248250
- SR R4,R1 R4 - BEGINNING OF WORK STORAGE @VA07801 00248275
- LM R7,R8,STATREGS GET IOERBLOK/RDEVBLOK ADDRESSES @VA07801 00248300
- LA R6,8(,R6) POINT PAST RELEASE CCW @VA07801 00248325
- L R1,IOBCSW GET ENDING CSW ADDR @VA07801 00248350
- LA R1,0(R1) CLEAN ANY GARBAGE @VA07801 00248375
- CR R1,R6 @VA07801 00248400
- BNH SKIPFEAT 2/4 CHANSW NOT PRESENT @VA07801 00248425
- OI RDEVFTR,FTRRSRL ONLY 1 CCW LEFT @VA07801 00248450
- SKIPFEAT TM IOBSTAT,IOBFATAL+IOBCC3 FATAL I/O? @VA07801 00248475
- BZ *+8 NO @VA07801 00248500
- BAL R5,CKIOB FRET POSSIBLE IOERBLOK @VA07801 00248525
- NI STATSCCW+4,X'FF'-CC NO MORE CMD CHAINING @VA07801 00248550
- B RDVOLLB CALL IOS @VA07801 00248575
- VOL1RTN DS 0H CONNECTOR 00249000
- USING *,R12 00250000
- L R12,=A(DMKDSB) 00251000
- USING DMKDSB,R12 00252000
- CL R10,IOBLINK IS THIS DEVICE END @VA01965 00253000
- BNE FRETIOB IF NOT, GO FRET IOB @VA01940 00254000
- L R4,IOBCAW RESTORE ADDRESS OF WORKING STORAGE. 00255000
- LM R7,R8,STATREGS RESTORE ADDRESS OF IOERBLOK AND RDEVBLOK 00256000
- TM STATSCCW+4,CC NO CMD CHAINING HERE @VA07801 00257000
- BZ LABRED DON'T BOTHER WITH RELEASE @VA07801 00257100
- NI IOBSPEC2,255-IOBREL TURN OFF SPECIAL REL. FLG @VA07801 00257200
- LA R0,STATREL+8 GET END OF RELEASE CCW ADDRESS @VA07801 00257300
- L R1,IOBCSW GET ENDING CSW ADDRESS @V407438 00258200
- LA R1,0(R1) CLEAR ANY GARBAGE @V407438 00258300
- CLR R1,R0 DID WE GET THE LABEL READ? @V407438 00258400
- BNH LABRED ENDED BEFORE REL CCW @VA07875 00258500
- L R5,RDEVCUB GET ADDRESS OF ALTCU @VA07875 00258520
- LTR R5,R5 IS THERE ALTCU ? @VA07875 00258540
- BNZ LABRED YES, CAN NOT ALLOW RES/REL @VA07875 00258560
- OI RDEVFTR,FTRRSRL ONLY 1 CCW LEFT, R/R MUSTBE GOOD@V407438 00258600
- LABRED TM IOBSTAT,IOBFATAL+IOBCC3 FATAL I/O @VA07801 00259100
- BNZ FRETIOER POSSIBLY FRET IOERBLOK @VA07801 00259200
- CLI RDEVTYPE,TYP3380 IS THIS A 3380 DASD ? HRC011DK 00259220
- BNE LABCOMP NO, CONTINUE HRC011DK 00259240
- MVC RDEVMDL,STATSDE4 YES, STORE MODEL TYPE HRC011DK 00259260
- LABCOMP DS 0H HRC011DK 00259280
- BAL R5,COMPVOL1 COMP THE LABEL READ WITH VOLID @VA07801 00259300
- BE FRETIOER IF NOT CHANGED SKIP THE BUFFER UNLOAD 00260000
- SPACE 00261000
- SKIPVOL1 CL R10,IOBLINK DO WE HAVE A COPIED IOBLOK ? @VA07015 00262100
- BNE FRETIOB YES, GO FRET IOBLOK AND OUT @VA07015 00262200
- TM RDEVFTR,FTREXTSN DOES DEVICE HAVE BUFFERS ? @VA07015 00262300
- BZ FRETIOER IF NOT, DO NOT ISSUE BUFFER UNLOAD 00263000
- LM R0,R1,PACKCHG RESOLVE ADDRESS OF BUFFER UNLOAD CCW 00264000
- CLI RDEVTYPE,TYP2305 HOLD IT - DO WE HAVE THE RIGHT CCW ? 00265000
- BNE *+8 YES - DON'T BE A WORRY-WART. 00266000
- LM R0,R1,UNLD2305 NOPE - GET THE RIGHT ONE LIKE I SAID 00267000
- ALR R0,R7 00268000
- STM R0,R1,STATSNS 00269000
- STH R1,IOERLEN SAVE SENSE LENGTH FOR ERROR RECORDING 00270000
- LA R1,READBUF LOAD R1 W/ INTERRUPT RETURN ADDRESS AND 00271000
- ST R1,IOBIRA STORE IT IN THE IOBLOK. 00272000
- ST R4,IOBCAW SET CAW ADDR IN IOBLOK @VA01727 00273000
- STM R7,R8,STATREGS SAVE PTR TO IOERBLOK AND RDEVBLOK@VA01727 00274000
- CALL DMKIOSQR CALL IOS FOR BUFFER UNLOAD OPERATION. 00275000
- GOTO DMKDSPCH WAIT FOR I/O TO COMPLETE. 00276000
- SPACE 00277000
- READBUF DS 0H CONNECTOR 00278000
- USING *,R12 00279000
- L R12,=A(DMKDSB) 00280000
- USING DMKDSB,R12 00281000
- L R4,IOBCAW RESTORE ADDRESS OF WORKING STORAGE 00282000
- LM R7,R8,STATREGS RESTORE ADDRESS OF IOERBLOK AND RDEVBLOK. 00283000
- TM IOBSTAT,IOBFATAL+IOBCC3 WAS THERE AN ERROR CONDITION 00284000
- BNZ FRETIOER IF YES, EXIT 00285000
- LH R3,IOERDW SAVE NUMBER OF DW IN WORKING STORAGE. 00286000
- ST R7,IOBIOER STORE ADDRESS OF IOERBLOK FOR RECORDER. 00287000
- MVC IOERVSER(6),RDEVSER MOVE IN OLD VOLID @VA01727 00288000
- CALL DMKIOESD RECORD THIS RECORD. 00289000
- B FRETSTAT RELEASE WORKING STORAGE 00290000
- SPACE 00291000
- FRETIOER LA R0,IOERSIZE SIZE OF 1 IOERBLOK 00292000
- AH R0,IOEREXT INCLUDE EXTRA SIZE (IF ANY) 00293000
- LR R1,R7 LOCATION OF IOERBLOK. 00294000
- CALL DMKFRET FRET THIS STORAGE 00295000
- SPACE 00296000
- FRETSTAT BAL R5,TESTVOL CHECK VOLUME STATUS @VA03772 00297000
- ICM R2,B'1000',STATCALL RESTORE CALLING IND.. @VA03772 00298000
- L R13,STATGR13 AND SAVEAREA REG @VA03772 00299000
- LR R1,R4 ADDRESS OF STAT DSECT 00300000
- LA R0,STATSIZE ALSO ITS SIZE 00301000
- CALL DMKFRET FRET IT 00302000
- BAL R5,CKIOB FRET POSSIBLE IOERBLOK 00303000
- LTR R2,R2 ENTERED AT DMKDSBSD ? @VA02264 00304000
- BM RETNSHUT IF YES, EXIT TO CALLER , OTHERWISE 00305000
- FRETIOB LR R1,R10 R1 IS ADDR OF IOB @VA01940 00306000
- LA R0,IOBSIZE GET IT'S SIZE @VA01965 00307000
- CALL DMKFRET AND RELEASE IT @VA01965 00308000
- GOTO DMKDSPCH GOTO THE DISPATCHER. 00309000
- SPACE 00310000
- RETNSHUT EXIT EXIT TO CALLER. 00311000
- SPACE 3 00312000
- * BUILD A BUFFER TO READ THE VOLID OF PACK 00313000
- SPACE 00314000
- GETSTBUF LA R0,STATSIZE GET A BUFFER TO READ THE VOL1 LABEL 00315000
- CALL DMKFREE 00316000
- LR R4,R1 SAVE THE POINTER TO THE BUFFER 00317000
- XC STATDASD(STATSIZE*8),STATDASD ZERO OUT THE BUFFER 00318000
- MVC STATVOL1(6),BLANKS INITIALIZE LABL AND VOL1 @VA04062 00318500
- MVC STATDASD(RDVOLEND-RDVOLID),RDVOLID MOVE MDL CCWS@V407438 00319000
- LA R14,((RDVOLEND-8)-RDVOLID)/8 GET LOOP COUNT @V4M0003 00320100
- LA R1,STATSEEK ADDR OF THE FIRST TO DO @V407438 00321000
- RESOLVAD L R15,0(R1) GET THE CURRENT ADDRESS @V407438 00322000
- ALR R15,R4 ADJUST BY BEGINNING OF GOTTEN STG@V407438 00323000
- ST R15,0(R1) AND RESTORE @V407438 00324000
- LA R1,8(R1) BUMP TO NEXT CCW @V407438 00325000
- BCT R14,RESOLVAD CONTINUE UNTIL ALL CCW'S ARE DONE@V4M0003 00326100
- BR R5 RETURN TO THE CALLING ROUTINE 00335000
- SPACE 3 00336000
- * COMPARE THE VOLID READ TO THE VOLID IN THE REAL DEVICE BLOCK 00337000
- SPACE 00338000
- COMPVOL1 CLC STATVOL1,=C'VOL1' STANDARD VOL 1 LABEL 00339000
- BE STANDLBL YES - 00340000
- CLC STATVOL1(3),=C'CMS' ANY CMS TYPE LABEL? HRC015DK 00341000
- BE STANDLBL YES - 00342000
- MVC STATLABL+4(2),STATLABL MOVE LABEL IN PIECES @VA04062 00343500
- MVC STATLABL(4),STATVOL1 PREVENT OVERLAP @VA04062 00344500
- STANDLBL EQU * HERE FOR STANDARD LABEL 00345000
- CLC STATLABL,RDEVSER WAS THE PACK CHANGED ? 00346000
- BCR 8,R5 RETURN WITH THE CONDITION CODE SET 00347000
- MVI STATPACK,X'FF' INDICATE PACK WAS CHANGED 00348000
- BR R5 RETURN WITH THE CONDITION CODE SET 00349000
- SPACE 3 00350000
- * TEST IF PACK WAS CHANGED AND IN USE BY THE SYSTEM 00351000
- SPACE 00352000
- TESTVOL CLI STATPACK,X'FF' WAS THE PACK CHANGE 00353000
- BCR 7,R5 NO- RETURN TO THE CALLER 00354000
- SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @V4075A0 00354100
- CLI RDEVTYPE,TYP3330 IS IT A 3330 @V60B6B8 00354110
- BNE TESTSYS NO, NO SPECIAL 3330V CHECK @V60B6B8 00354120
- TM RDEVFTR,SYSVIRT+VIRTUAL IS IT A VUA @V60B6B8 00354130
- BNZ MNT3330V YES, CHECK FOR WAITING USER @V60B6B8 00354140
- TESTSYS EQU * CONTINUE STANDARD DASD CHECKS @V60B6B8 00354150
- TM RDEVFLAG,RDEVSYS+RDEVOWN WAS PACK IN USE BY SYSTEM 00355000
- BNZ ERROR956 DO NOT MOVE IN NEW VOLID; VARY OFFLINE 00356000
- MVC RDEVSER,STATLABL MOVE IN THE NEW VOLID 00357000
- TM RDEVSTAT,RDEVDED DEVICE DEDICATED ? 00358000
- BO *+8 YES -- 00359000
- OI RDEVFLAG,RDEVMOUT INDICATE VOLUME MOUNTED; NOT ATTACHED 00360000
- CLI RDEVTYPE,TYP3340 3340 TYPE ? @V2A2029 00361000
- BCR 7,R5 NO - RETURN TO CALLER @V2A2029 00362000
- NI RDEVFTR,X'FF'-(FTRRPS+FTR70MB+FTR35MB) RESET @V2A2029 00363000
- TM STATSDAT+2,X'80' RPS FEATURE PRESENT ? @V2A2029 00364000
- BZ *+8 NO - @V2A2029 00365000
- OI RDEVFTR,FTRRPS INDICATE RPS FEATURE @V2A2029 00366000
- TM STATSDAT+2,X'02' 3340 70MB PACK MOUNTED ? @V2A2029 00367000
- BZ SET35MB NO -- MUST BE 35MB PACK @V2A2029 00368000
- OI RDEVFTR,FTR70MB INDICATE 70MB PACK MOUNTED @V2A2029 00369000
- BR R5 RETURN TO CALLER @V2A2029 00370000
- SET35MB OI RDEVFTR,FTR35MB INDICATE 35MB PACK MOUNTED @V2A2029 00371000
- BR R5 RETURN TO CALLER IF NOT IN USE BY SYSTEM 00372000
- SPACE 1 00372100
- ERROR956 OI RDEVSTAT,RDEVDISA MARK THE DEVICE OFFLINE 00373000
- LH R1,IOBRADD GET THE REAL DEVICE ADDRESS 00374000
- CALL DMKCVTBH AND CONVERT IT 00375000
- LR R3,R1 SAVE CONVERTED ADDRESS 00376000
- LA R0,(L'DSB956+7)/8 GET A MSG BUFFER 00377000
- CALL DMKFREE 00378000
- MVC 0(L'DSB956,R1),DSB956 MOVE IN THE MSG 00379000
- STCM R3,7,DSB956AD(R1) FILL IN THE CONVERTED ADDRESS 00380000
- MVC DSB956VS(6,R1),STATLABL THE VOLID ALSO 00381000
- LR R3,R0 SAVE THE BUFFER LENGTH (DW) 00382000
- LA R0,L'DSB956 SET UP THE MSG LENGTH 00383000
- LA R2,DFRET+NORET+OPERATOR+ALARM PARM REG 00384000
- CALL DMKQCNWT TELL THE OPERATOR 00385000
- BR R5 RETURN TO THE CALLER 00386000
- EJECT 00386100
- MNT3330V EQU * PROCESS 3330V MOUNT @V60B6B8 00386200
- * 00386300
- * THIS ROUTINE IS ENTERED WHEN A 3330V VOLUME 00386400
- * HAS BEEN MOUNTED ON A NON-DEDICATED VUA. 00386500
- * THIS CODE WILL SCAN THE QUEUE OF MSSCOM 00386600
- * BLOCKS WHICH DESCRIBE MACHINES WAITING FOR 00386700
- * 3330V'S. THIS QUEUE IS CREATED BY DMKSSS 00386800
- * WHEN A MOUNT ORDER FOR A SYSTEM VOLUME IS 00386900
- * ISSUED TO THE MSC. THE UNSOLICITED DEVICE 00387000
- * END, INDICATING MOUNT COMPLETE, IS GENERATED 00387100
- * BY THE STAGING ADAPTER WHEN THE FIRST CYLINDER 00387200
- * OF THE REQUESTED VOLUME HAS BEEN STAGED. 00387300
- * 00387400
- * WHEN THE CORRECT MSSCOM BLOCK IS FOUND, THE 00387500
- * ADDRESS OF A CPEXBLOK IS EXTRACTED. THIS 00387600
- * CPEXBLOK IS CREATED BY DMKSSS WHEN THE MSSCOM 00387700
- * BLOCK IS QUEUED. THE DISPATCH ADDRESS IN THE 00387800
- * CPEXBLOK POINTS TO AN ENTRY IN DMKSSS AT WHICH 00387900
- * A LINK TO A SYSTEM 3330V IS TO CONTINUE. 00388000
- * 00388100
- MVC RDEVSER,STATLABL MOVE LABEL INTO RDEVBLOK @V60B6B8 00388200
- NI RDEVFLAG,X'FF'-RDEVSEL-RDEVMOUT @VA09303 00388210
- * HOLLY 00388300
- L R1,MOUNTQ ANCHOR FOR QUEUE OF MSSCOM BLOCKS@V60B6B8 00388400
- L R6,0(R1) FIRST MSSCOM BLOCK @V60B6B8 00388500
- LTR R6,R6 IS THERE A Q @V60B6B8 00388600
- BZ NOWAIT NO, NO ONE WAITING @V60B6B8 00388700
- USING VSCOMM,R6 ADDRESSABILITY FOR ASSEMBLER @V60B6B8 00388800
- COMPVOL EQU * LOOP TO FIND BLOCK FOR THIS @V60B6B8 00388900
- * VOLUME 00389000
- CLC RDEVSER,MSSSER COMPARE VOLSER JUST MOUNTED @V60B6B8 00389100
- * TO VOLSER THIS BLOCK DESCRIBES 00389200
- BE COMMFOUN THIS IS THE ONE @V60B6B8 00389300
- DEVADBAD EQU * @VMI2016 00389310
- LA R1,MSSNEXT RESET R1 FOR FUTURE RECHAINING @V60B6B8 00389400
- L R6,MSSNEXT GET NEXT BLOCK POINTER @V60B6B8 00389500
- LTR R6,R6 IS THERE ANOTHER BLOCK @V60B6B8 00389600
- BNZ COMPVOL YES, CHECK IT @V60B6B8 00389700
- NOWAIT EQU * NO ONE WAITING ON THIS MOUNT @V60B6B8 00389800
- OI RDEVFLAG,RDEVMOUT SET FLAG: VOLUME MOUNTED @V60B6B8 00389900
- BR R5 RETURN: NO ONE WAITING @V60B6B8 00390000
- COMMFOUN EQU * SOMEONE NEEDS THIS VOLUME @V60B6B8 00390100
- LH R1,RDEVADD DEVICE ADDR @VMI2016 00390103
- L R15,RDEVCUA RCUBLOK ADDR @VMI2016 00390106
- LH R0,RCUADD-RCUBLOK(R15) CU ADDR @VMI2016 00390109
- OR R1,R0 CU-DEV ADDR @VMI2016 00390112
- TM RCUTYPE-RCUBLOK(R15),RCUSUB SUBORD CUBLOK? @VMI2016 00390115
- BZ GOTPRIME NO, PRIME, POINTS TO RCHBLOK @VMI2016 00390118
- L R15,RCUPRIME-RCUBLOK(R15) GET PRIME RCUBLOK @VMI2016 00390121
- GOTPRIME EQU * THIS RCUBLOK POINTS TO RCHBLOK @VMI2016 00390124
- L R15,RCUCHA-RCUBLOK(R15) RCHBLOK ADDR @VMI2016 00390127
- LH R0,RCHADD-RCHBLOK(R15) CHAN ADDR @VMI2016 00390130
- OR R1,R0 CH - CU - DEV ADDR @VMI2016 00390133
- CH R1,MSSVUA IS MSS P.C.I. ON CORRECT ADDR @VMI2016 00390136
- BNE DEVADBAD NO, MUST BE ALT PATH @VMI2016 00390139
- * 00390147
- * CHECK TO SEE IF THIS MSS VOLUME IS BEING MOUNTED BY VM/370. 00390155
- * IF SO, THEN FLAG AS SO IN ORDER TO RECOGNIZE ANY NEED TO 00390163
- * ISSUE A RELINQUISH REQUEST FOR THIS VOLUME. 00390171
- * 00390179
- OI RDEVFLAG,RDEVVMNT FLAG AS MOUNTED BY CP @VA11344 00390187
- L R2,MSSTASK1 ADDR OF CPEXBLOK FOR DMKSSS @V60B6B8 00390200
- LA R0,CPEXSIZE SIZE OF CPEXBLOK FOR DMKFREE @V60B6B8 00390300
- * HOLLY 00390400
- CALL DMKFREE HOLLY @V60B6B8 00390500
- USING CPEXBLOK,R1 HOLLY @V60B6B8 00390600
- STM R0,R15,CPEXREGS SAVE REGS IN CPEXBLOK @V60B6B8 00390700
- * HOLLY 00390800
- L R15,=V(DMKSSSEN) STACK A CPEXBLOK @V60B6B8 00390900
- * HOLLY 00391000
- ST R15,CPEXADD FOR DMKSSEN @V60B6B8 00391100
- * HOLLY 00391200
- CALL DMKSTKCP PUT THE CPEXBLOK ON DISPATCH Q @V60B6B8 00391300
- BR R5 BACK TO THE MAINLINE @V60B6B8 00391400
- DROP R6 THROUGH WITH MSSCOM @V60B6B8 00391500
- USING STATDASD,R4 @V60B6B8 00391600
- * THIS ROUTINE WILL CHECK FOR A SECOND IOERBLOK . IF ONE WAS 00777000
- * OBTAINED STORAGE WILL BE GIVEN BACK TO THE SYSTEM. 00778000
- * 00779000
- CKIOB L R1,IOBIOER GET ADDR OF 2'ND IOERBLOK @VA07801 00780000
- LA R1,0(R1) CLEAR HI BYTE 00781000
- LTR R1,R1 WAS BLOCK REALY OBTAINED ? 00782000
- BZ NOTUSED BRANCH IF NO. 00783000
- TM IOERCSW+5-IOERBLOK(R1),IFCC+CCC+CDC IS CHANNEL @VA01254 00784000
- * ERROR 00785000
- * INDICATED ? 00786000
- BZ CKEND NO, GO FRET IOERBLOK @VA01254 00787000
- LR R3,R1 SAVE THE IOERBLOK POINTER @VA01254 00788000
- L R1,IOERCCRA-IOERBLOK(R3) CHANNEL REC ADDR @V508690 00789500
- L R0,IOERCCRL-IOERBLOK(R3) CHANNEL REC LENGTH @V508690 00790500
- CALL DMKFRET RELEASE STORAGE @VA01254 00793000
- LR R1,R3 GET IOERBLOK POINTER @VA01254 00794000
- CKEND EQU * @VA01254 00795000
- LA R0,IOERSIZE LOAD IOERBLOK SIZE. 00796000
- AH R0,IOEREXT-IOERBLOK(,R1) INCLUDE EXTRA SIZE (IF ANY) 00797000
- CALL DMKFRET 00798000
- NOTUSED MVC IOBIOER,ZEROES CLEAR ADDRESS IN IOBLOK IN CASE 00799000
- BR R5 RETURN TO CALLER. 00800000
- SPACE 1 00801000
- DSB956 DC C'DMKDSB956A DASD XXX VOLID XXXXXX NOT MOUNTED; NOW OFFL*01217000
- INE' 01218000
- DSB956AD EQU 16 DISP OF THE UNIT ADDRESS 01219000
- DSB956VS EQU 26 DISP OF THE VOL SER NO 01220000
- SPACE 01221000
- RDVOLID CCW X'07',STATCCHH-STATDASD,CC+SILI,6 SEEK 01222000
- CCW X'08',STATSRCH-STATDASD,CC+SILI,1 @V407438 01222250
- CCW X'03',0,SILI,1 TIC/NOP FOR 3330V'S @V407438 01222500
- CCW X'31',STATCCHH+2-STATDASD,CC+SILI,5 SRCHID 01223000
- CCW X'08',STATSRCH-STATDASD,CC+SILI,1 TIC 01224000
- CCW X'06',STATVOL1-STATDASD,CC+SILI,10 READ DATA @V2A2029 01225000
- CCW X'04',STATSDAT-STATDASD,SILI+CC,IOERSNSZ SENSE @VA07801 01225500
- CCW X'94',STATSDAT-STATDASD,SILI+CC,IOERSNSZ RELSE @VA07801 01226000
- CCW X'04',STATSDAT-STATDASD,SILI,IOERSNSZ SENSE @VA07801 01226500
- SENSE4 CCW X'E4',STATSE4-STATDASD,SILI,7 SENSE ID HRC011DK 01226700
- VOL1CCHH DC X'0000000000000300' SEARCH AURGUMENT 01227000
- RDVOLEND EQU * END OF CH PGMS + SEEK/SRCH ARG @V407438 01227250
- SPACE 01227500
- PACKCHG CCW X'A4',IOERDATA-IOERBLOK,SILI,24 BUFFER UNLOAD COMMAND 01228000
- UNLD2305 CCW X'24',IOERDATA-IOERBLOK,SILI,128 DITTO FOR 2305 ONLY 01229000
- SPACE 01230000
- MOUNTQ DC V(DMKSSSMQ) ANCHOR FOR QUEUE OF MSSCOM BLOCKS@V60B6B8 01230010
- * DESCRIBING 3330V'S BEING MOUNTED 01230020
- LTORG @V407438 01270750
- EJECT 01271000
- COPY IOER GET IOERSNSZ DEFINED @V407438 01271250
- EJECT 01271500
- STATDASD DSECT 01273000
- STATSEEK DS D SEEK CCW 01274000
- STATTIC1 DS D TIC TO "STATSRCH" @V407438 01274250
- STATNOP DS D NOP, END HERE FOR 3330V CYL FAULT@V407438 01274500
- STATSRCH DS D SEARCH ID EQUAL CCW 01275000
- STATTIC DS D TIC CCW 01276000
- STATREAD DS D READ DATA CCW 01277000
- STATSCCW DS D SENSE CCW (3340) @VA07801 01277500
- STATREL DS D RELEASE CCW @VA07801 01278000
- STATSEN DS D SENSE FOR DETECTING RELEASE @VA07801 01278500
- STATSE4 DS D SENSE ID FOR 3380S HRC011DK 01278700
- STATCCHH DS D SEARCH AURGUMENT (BBCCHHR) 01279000
- STATVOL1 DS CL4 (VOL1) 01280000
- STATLABL DS CL6 VOLUME SERIAL NUMBER. 01281000
- DS CL4 01282000
- STATPACK DS CL1 PACK CHANGE SWITCH 01283000
- STATCALL DS CL1 CALLED FROM SHUTDOWN 01284000
- STATSDAT DS CL(IOERSNSZ) SENSE INFORMATION @V407438 01285000
- STATSDE4 DS CL7 SENSE ID INFORMATION HRC011DK 01285300
- DS CL1 HRC011DK 01285600
- STATREGS DS D GPR7-8 SAVE AREA 01286000
- STATGR13 DS F USED TO SAVE GPR-13 01287000
- DS F 01288000
- ORG STATSEEK 01289000
- STATSNS DS D BUFFER UNLOAD CCW 01290000
- ORG 01291000
- STATSIZE EQU (*-STATDASD)/8 SIZE OF DSECT IN DOUBLE WORDS 01293000
- EJECT 01318000
- VSCOMM MSSCOM @V60B6B8 01318010
- EJECT 01318020
- COPY RBLOKS @V200820 01319000
- COPY VMBLOK @VA04231 01319800
- COPY IOBLOKS @V200820 01320000
- COPY DEVTYPES @V200820 01321000
- COPY EQU @V200820 01322000
- COPY SAVE @V200820 01324000
- PSA @V200820 01325000
- END DMKDSB @V200820 01326000
ibm/vm370-lib/cp/dmkdsb.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator