ibm:vm370-lib:cp:dmksst.assemble_src
Table of Contents
DMKSST Source
References
- Fixes Applied : 0
- This Source Date : Wednesday, October 1, 1980
- Last Fix ID : [Unmodified]
Source Listing
- DMKSST.ASSEMBLE.txt
- SST TITLE 'DMKSST (CP) VM/370 - RELEASE 6' 00010000
- ISEQ 73,80 00020000
- MACRO 00030000
- &LABEL INCR &COUNT 00040000
- &LABEL LA R0,1 00050000
- AL R0,&COUNT 00060000
- ST R0,&COUNT 00070000
- MEND 00080000
- *********************************************************************** 00090000
- * * 00100000
- *MODULE NAME = DMKSST * 00110000
- * * 00120000
- *DESCRIPTIVE NAME = DMKSST (CP) SDG TABLE BUILD, VUA SELECTION * 00130000
- * * 00140000
- *COPYRIGHT = NONE * 00150000
- * * 00160000
- *STATUS = VM/370 - RELEASE 6, LEVEL 0 * 00170000
- * * 00180000
- *FUNCTION = * 00190000
- * DMKSSTBL = BUILD SDG TABLES OF CP'S VUAS * 00200000
- * * 00210000
- * DMKSSTFV = FIND AN AVAILABLE VUA TO MOUNT A VOLUME ON * 00220000
- * * 00230000
- *NOTES = SEE BELOW * 00240000
- * * 00250000
- * DEPENDENCIES = NONE * 00260000
- * * 00270000
- * RESTRICTIONS = NONE * 00280000
- * * 00290000
- * REGISTER CONVENTIONS = R0 = SCRATCH * 00300000
- * R1 = SCRATCH * 00310000
- * R2 = SCRATCH * 00320000
- * R3 = SCRATCH * 00330000
- * R4 = SCRATCH * 00340000
- * R5 = SCRATCH * 00350000
- * R6 = SCRATCH * 00360000
- * R7 = SDG TABLE BASE * 00370000
- * R8 = RDEVBLOK BASE * 00380000
- * R9 = VUA TABLE BASE * 00390000
- * R10 = SCRATCH * 00400000
- * R11 = VMBLOK BASE * 00410000
- * R12 = DMKIOT BASE * 00420000
- * R13 = SAVEAREA BASE * 00430000
- * R14 = SUBROUTINE LINKAGE * 00440000
- * R15 = SUBROUTINE LINKAGE * 00450000
- * * 00460000
- * PATCH LABEL = N/A * 00470000
- * * 00480000
- *MODULE TYPE = CSECT * 00490000
- * * 00500000
- * PROCESSOR = ASSEMBLER XF * 00510000
- * * 00520000
- * MODULE SIZE = 4K BYTES (1 BASE REGISTER DESIGN POINT) * 00530000
- * * 00540000
- * ATTRIBUTES = REENTRANT, PAGEABLE. * 00550000
- * * 00560000
- *ENTRY POINT = DMKSSTBL * 00570000
- * * 00580000
- * PURPOSE = BUILD SDG TABLES OF VUA'S IN CP CONFIGURATION * 00590000
- * * 00600000
- * LINKAGE = CALL * 00610000
- * * 00620000
- *ENTRY POINT = DMKSSTFV * 00630000
- * * 00640000
- * PURPOSE = FIND AN AVAILABLE VUA ON WHICH TO MOUNT A VIRTUAL VOLUME * 00650000
- * * 00660000
- * LINKAGE = CALL * 00670000
- * * 00680000
- *INPUT = * 00690000
- * DMKSSTBL * 00700000
- * R5 = VUATABLE BASE * 00710000
- * R11 = VMBLOK BASE * 00720000
- * * 00730000
- * DMKSSTFV * 00740000
- * R4 = SPECIFIC/NON-SPECIFIC SDG REQUESTED * 00750000
- * R5 = SHARED/NON-SHARED/BOTH VUA REQUESTED * 00760000
- * R11 = VMBLOK BASE * 00770000
- * * 00780000
- *OUTPUT = * 00790000
- * DMKSSTBL * 00800000
- * R2 = CCPD ANCHOR OF NON-SHARED SDG TABLE * 00810000
- * R3 = CCPD ANCHOR OF SHARED SDG TABLE * 00820000
- * R6 = RETURN CODE * 00830000
- * * 00840000
- * DMKSSTFV * 00850000
- * R5 = VUA ADDRESS (CUU) * 00860000
- * R6 = RETURN CODE * 00870000
- * * 00880000
- *EXIT-NORMAL = * 00890000
- * DMKSSTBL * 00900000
- * R2 = CCPD OF NON-SHARED SDG TABLE * 00910000
- * R3 = CCPD OF SHARED SDG TABLE * 00920000
- * R6 = REASON CODE * 00930000
- * * 00940000
- * DMKSSTFV * 00950000
- * R5 = VUA ADDRESS * 00960000
- * R6 = REASON CODE * 00970000
- * * 00980000
- *EXIT-ERROR = * 00990000
- * DMKSSTBL * 01000000
- * R6 = 1 - MSS NOT INSTALLED * 01010000
- * R6 = 13 - ERROR ON TRANS MACRO * 01020000
- * * 01030000
- * DMKSSTFV * 01040000
- * R6 = 4 - DEMOUNT IS REQUIRED * 01050000
- * R6 = 8 - VUA OF PROPER TYPE NOT FOUND * 01060000
- * * 01070000
- *EXTERNAL REFERENCES = SEE BELOW * 01080000
- * * 01090000
- * ROUTINES = DMKERMSG - TO LOCATE THE REQUESTED MESSAGE AND INSERT * 01100000
- * THE MODULE ID, MESSAGE NUMBER, AND DATA IF * 01110000
- * ANY, AND PRINT THE MESSAGE * 01120000
- * DMKPGTPG - TO ALLOCATE A PAGE OF DASD SPACE THAT IS TO * 01130000
- * BE USED FOR EITHER VIRTUAL MEMORY PAGING OR * 01140000
- * FOR SPOOL FILE PAGE BUFFERS * 01150000
- * DMKPGUVG - TO ALLOCATE A PAGE OF VIRTUAL STORAGE SPACE * 01160000
- * BELONGING TO THE CP PAGING VMBLOK * 01170000
- * DMKPGUVR - TO RELEASE A PAGE OF VIRTUAL MEMORY SPACE * 01180000
- * DMKRPAGT - MOVE THE SPECIFIED DASD PAGE FROM DASD TO * 01190000
- * TO THE SPECIFIED PAGE IN THE USER'S VIRTUAL * 01200000
- * MEMORY SPACE * 01210000
- * DMKRPAPT - MOVE THE PAGE FROM VIRTUAL MEMORY TO DASD * 01220000
- * DMKSCNRU - TO LOCATE RCHBLOK, RCUBLOK, AND RDEVBLOK FOR * 01230000
- * THE UNIT CAUSING THE INTERRUPT * 01240000
- * DATA AREAS = * 01250000
- * DEVTYPES - DEVICE TYPE EQUATES * 01260000
- * EQU - SYSTEM EQUATES * 01270000
- * * 01280000
- * CONTROL BLOCKS = * 01290000
- * CPEXBLOK - CP EXECUTE BLOCK * 01300000
- * PSA - PREFIX STORAGE AREA * 01310000
- * RDEVBLOK - REAL DEVICE BLOCK * 01320000
- * SAVEAREA - SAVE AREA SVC CALL * 01330000
- * VMBLOK - VIRTUAL MACHINE CONTROL BLOCK * 01340000
- * * 01350000
- *TABLES = * 01360000
- * VUATABLE - TABLE OF VUA'S IN CP CONFIGURATION * 01370000
- * SDGTABLE - TABLE OF SHARED/NONSHARED VUA'S IN CP * 01380000
- * CONFIGURATION, SORTED INTO SDG NUMBERS * 01390000
- * * 01400000
- *MACROS = * 01410000
- * PSA * 01420000
- * TRANS * 01430000
- * * 01440000
- *CHANGE ACTIVITY = AS FOLLOWS: * 01450000
- * * 01460000
- * * 01470000
- *********************************************************************** 01480000
- EJECT 01490000
- COPY OPTIONS 01500000
- COPY LOCAL OPTIONS 01510000
- SPACE 2 01520000
- DMKSST CSECT 01530000
- DC CL8'DMKSST' 01540000
- SPACE 1 01550000
- USING PSA,R0 01560000
- USING VMBLOK,R11 01570000
- USING SAVEAREA,R13 01580000
- SPACE 1 01590000
- EXTRN DMKERMSG 01600000
- EXTRN DMKPGTPG 01610000
- EXTRN DMKPGUVG 01620000
- EXTRN DMKPGUVR 01630000
- EXTRN DMKRIODV 01640000
- EXTRN DMKRPAGT 01650000
- EXTRN DMKRPAPT 01660000
- EXTRN DMKSCNRU 01670000
- EXTRN DMKSSSNS 01680000
- EXTRN DMKSSSHR 01690000
- EXTRN DMKSSSNV 01700000
- EJECT 01710000
- DMKSSTBL RELOC CALL FROM DMKSSS 01720000
- *. 01730000
- * REGISTER USAGE: 01740000
- * R0 = WORK REG 01750000
- * R1 = CCPD OF SHARED/NON-SHARED TABLES 01760000
- * R2 = WORK REG 01770000
- * R3 = WORK REG 01780000
- * R4 = SDG NUMBER 01790000
- * R5 = VUA 01800000
- * R6 = WORK REG/RETURN CODE 01810000
- * R7 = SDGTABLE BASE 01820000
- * R8 = COUNT OF VUA'S THIS ENTRY 01830000
- * R9 = MSSVUA BASE (VUA TABLE FROM DMKMSS) 01840000
- * R10 = COUNT OF VUA'S IN MSSVUA TABLE (VUA TABLE) 01850000
- * R11 = VMBLOK BASE 01860000
- * R12 = DMKSST BASE 01870000
- * R13 = SAVE AREA BASE 01880000
- * R14 = LINKAGE 01890000
- * R15 = LINKAGE 01900000
- * 01910000
- * OPERATION: 01920000
- * 01930000
- * 1. BRING IN VUATABLE FROM DMKMSS CENTRAL SERVER. IF ERROR 01940000
- * OCCURS, SET REASON CODE = 13 AND RETURN TO CALLER. 01950000
- * 01960000
- * 2. OBTAIN BUFFERS FOR TWO SDG TABLES (SHARED AND NON-SHARED). 01970000
- * IF ERROR OCCURS, SET REASON CODE = 13 AND RETURN TO CALLER. 01980000
- * 01990000
- * 3. LOOP THROUGH VUATABLE, BUILDING ENTRIES IN SDGTABLES: 02000000
- * 3A. GET VUA, SDG NUMBER, SHARED STATUS FROM VUA TABLE. 02010000
- * 3B. USE SHARED STATUS TO DETERMINE WHICH TABLE TO PUT INFO. 02020000
- * 3C. USE SDG NUMBER TO DETERMINE CORRECT ENTRY IN TABLE. 02030000
- * 3D. PUT INFORMATION IN NEXT AVAILABLE POSITION IN ENTRY. 02040000
- * 3E. UPDATE COUNT OF VUA'S IN THIS ENTRY. 02050000
- * 02060000
- * 4. GET CCPD OF PREVIOUS NON-SHARED TABLE. IF NO NON-SHARED 02070000
- * VUA'S, RELEASE SLOT. IF NON-SHARED VUA'S PRESENT BUT NO 02080000
- * SLOT, GET A SLOT. WRITE NON-SHARED SDG TABLE TO DASD. 02090000
- * 02100000
- * 5. GET CCPD OF PREVIOUS SHARED SDG TABLE. IF NO SHARED VUA'S. 02110000
- * RELEASE SLOT. IF SHARED VUA'S PRESENT BUT NO SLOT, GET 02120000
- * A SLOT. WRITE SHARED SDG TABLE TO DASD. 02130000
- * 02140000
- * 6. SET PROPER RETURN CODE AND EXIT. 02150000
- *. 02160000
- SPACE 1 02170000
- TM PSAMSS,MSSPRES IS MSS INSTALLED? 02180000
- BNO SSTERR01 NO - THEN DIAGNOSE X'78' IS INVALID 02190000
- XC SAVEWRK9,SAVEWRK9 CLEAR OUT TEMP FLAG AREA 02200000
- SPACE 1 02210000
- * 02220000
- * AT THIS POINT WE KNOW THE ISSUER IS THE AUTHORIZED CENTRAL 02230000
- * SERVER. MSS HAS PASSED TO DMKSSS A TABLE OF ALL THE VUA'S 02240000
- * IN OUR CONFIGURATION. WE NEED TO SEPARATE THESE VUA'S INTO 02250000
- * SHARED AND NON-SHARED VUA'S, SORTED INTO THEIR PROPER SDG 02260000
- * GROUP NUMBERS. 02270000
- * 02280000
- SPACE 1 02290000
- L R1,0(,R5) GET ADDRESS OF PTR TO MSS BUFFER 02300000
- TRANS 2,1,OPT=(BRING,DEFER),IOER=SSTERR02 02310000
- ST R1,SAVEWRK2 SAVE VIRTUAL ADDR OF USER' BUFF 02320000
- LR R9,R2 SAVE ADDRESS FOR LATER USE 02330000
- CALL DMKPGUVG GET VIRTUAL PAGE FOR TEMP BUFFER 02340000
- ST R1,SAVEWRK6 SAVE VIRT ADDRESS FOR CLEANUP 02350000
- TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM),IOER=SSTRELNS 02360000
- ST R2,SAVEWRK3 SAVE PTR TO NON-SHARED SDG TABLE 02370000
- L R3,=F'4096' SIZE OF BUFFER TO BE CLEARED 02380000
- L R5,F0 NO PAD CHARACTER, NO 2ND LENGTH 02390000
- MVCL R2,R4 CLEAR THE BUFFER BEFORE USING 02400000
- CALL DMKPGUVG GET VIRT PAGE FOR TEMP BUFFER 02410000
- ST R1,SAVEWRK7 SAVE VIRT ADDRESS FOR CLEANUP 02420000
- TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM),IOER=SSTRELBO 02430000
- ST R2,SAVEWRK4 SAVE PTR TO SHARED SDG TABLE 02440000
- L R3,=F'4096' SIZE OF BUFFER TO BE CLEARED 02450000
- L R5,F0 NO PAD CHARACTER, NO 2ND LENGTH 02460000
- MVCL R2,R4 CLEAR THE BUFFER BEFORE USING 02470000
- SPACE 1 02480000
- L R10,0(,R9) GET COUNT OF VUA'S FROM MSS TABLE 02490000
- L R1,SAVEWRK2 RE-LOAD VIRT. ADDR OF USER'S BUFF 02500000
- LA R1,4(,R1) POINT TO FIRST VUA IN TABLE 02510000
- TRANS 9,1,OPT=(BRING+DEFER),IOER=SSTRELBO BRING INTO REAL 02520000
- EJECT 02530000
- USING MSSVUA,R9 02540000
- SPACE 1 02550000
- SSTLOOP1 DS 0H 02560000
- LH R5,VUA GET THE VUA 02570000
- SLR R7,R7 ZERO OUT A WORK REG 02580000
- ICM R7,B'0001',SDG GET SDG NUMBER FOR THIS VUA 02590000
- LR R4,R7 SAVE SDG NUMBER 02600000
- MH R7,H130 GET THE INCREMENT TO CORRECT VUA 02610000
- TM STAT,SHRD IS THIS A SHARED VUA? 02620000
- BO SSTTBLSH YES - THEN PUT IN SHARED SDG TABLE 02630000
- OI SAVEWRK9,NSHRPRES NON-SHARED VUA IS PRESENT 02640000
- L R6,SAVEWRK3 GET START OF NON-SHARED TABLE 02650000
- B SSTTBLNS CONSTRUCT NON-SHARED SDG TABLE 02660000
- SPACE 1 02670000
- SSTTBLSH DS 0H 02680000
- OI SAVEWRK9,SHRDPRES SHARED VUA IS PRESENT 02690000
- L R6,SAVEWRK4 GET START OF SHARED SDG TABLE 02700000
- SPACE 1 02710000
- SSTTBLNS DS 0H 02720000
- AR R7,R6 ADD DISPLACEMENT TO CORRECT ENTRY 02730000
- SPACE 1 02740000
- USING SDGTABLE,R7 02750000
- SPACE 1 02760000
- LH R8,CNT GET COUNT OF VUA'S IN THIS SDG 02770000
- LA R8,1(,R8) INCREMENT COUNT BY ONE 02780000
- STH R8,CNT SAVE THE UPDATED COUNT 02790000
- AR R8,R8 GET TBL DISPL TO THIS INDEX 02800000
- STH R5,0(R8,R7) SAVE VUA ADDRESS (CUU) 02810000
- LA R1,4(,R1) POINT TO NEXT TABLE ENTRY 02820000
- TRANS 9,1,OPT=(BRING+DEFER),IOER=SSTRELBO GET REAL 02830000
- BCT R10,SSTLOOP1 BUILD SDG TABLES USING ALL OF THE 02840000
- * MSS-SUPPLIED VUA'S 02850000
- SPACE 1 02860000
- DROP R7,R9 02870000
- EJECT 02880000
- L R1,=A(DMKSSSNS) GET ADDR OF PTR TO N/S TABLE 02890000
- L R1,0(,R1) GET CCPD OF NON-SHRD TABLE 02900000
- TM SAVEWRK9,NSHRPRES HAVE ANY NON-SHARED VUA'S? 02910000
- BNO SSTPURGA NO - THEN CHECK FOR SLOT CLEANUP 02920000
- C R1,F0 IS PTR TO VUA TABLE ZEROS? 02930000
- BNE SSTSLOTA NO - THEN RE-USE OLD SLOT 02940000
- CALL DMKPGTPG GET SLOT OF DASD FOR VUA TABLE 02950000
- SSTSLOTA DS 0H 02960000
- LR R0,R1 DMKRPAPT WANTS CCPD IN R0 02970000
- ST R1,SAVEWRK1 SAVE CCPD IN CASE OF ERROR 02980000
- L R1,SAVEWRK6 GET VIRTUAL ADDRESS OF TABLE 02990000
- CALL DMKRPAPT,PARM=SYSTEM WRITE NON-SHRD TABLE 03000000
- BNZ SSTRELBO BRANCH ON ERROR WRITING TABLE 03010000
- MVC SAVER2(4),SAVEWRK1 ELSE SAVE CCPD OF N/S TABLE 03020000
- B SSTCHKB RELEASE BUFFER, CHECK SHARED VUA'S 03030000
- SSTPURGA DS 0H 03040000
- MVC SAVER2(4),F0 SAY NO NON-SHARED VUA'S PRESENT 03050000
- C R1,F0 IS PTR TO NON-SHRD TABLE ZEROS? 03060000
- BE SSTCHKB YES - NO NEED TO RELEASE OLD SLOT 03070000
- SLR R0,R0 ZERO OUT FOR SLOT BLANKING 03080000
- L R1,SAVEWRK6 GET VIRT ADDR OF NSHRD TABLE 03090000
- CALL DMKRPAGT BLANK OUT VIRTUAL BUFFER 03100000
- SSTCHKB DS 0H 03110000
- L R1,SAVEWRK6 GET VIRT ADDR OF NSHRD TABLE 03120000
- CALL DMKPGUVR RELEASE VIRTUAL BUFFER 03130000
- L R1,=A(DMKSSSHR) GET ADDR OF PTR TO SHRD TABLE 03140000
- L R1,0(,R1) GET PTR TO SHRD TABLE 03150000
- TM SAVEWRK9,SHRDPRES DO WE HAVE ANY SHARED VUA'S? 03160000
- BNO SSTPURGB NO - THEN CHECK FOR SLOT CLEANUP 03170000
- C R1,F0 IS THE PTR ZEROS? 03180000
- BNE SSTSLOTB NO - THEN RE-USE OLD SLOT 03190000
- CALL DMKPGTPG GET DASD SLOT FOR NON-SHRD TABLE 03200000
- SSTSLOTB DS 0H 03210000
- LR R0,R1 DMKRPAPT WANTS CCPD IN R0 03220000
- ST R1,SAVEWRK1 SAVE CCPD IN CASE OF ERROR 03230000
- L R1,SAVEWRK7 GET VIRT ADDR OF TABLE 03240000
- CALL DMKRPAPT,PARM=SYSTEM WRITE SHARED TABLE 03250000
- BNZ SSTRELSH BRANCH ON ERROR WRITING TABLE 03260000
- MVC SAVER3(4),SAVEWRK1 SAVE CCPD OF NON-SHRD TABLE 03270000
- B SSTRELVB AND RETURN TO CALLER 03280000
- SSTPURGB DS 0H 03290000
- MVC SAVER3(4),F0 SAY NO SHARED VUA'S PRESENT 03300000
- C R1,F0 IS SHARED-TABLE POINTER ZEROS? 03310000
- BE SSTRELVB YES - THEN NO NEED TO RELEASE OLD SLOT 03320000
- SLR R0,R0 ELSE ZERO OUT FOR SLOT BLANKING 03330000
- L R1,SAVEWRK7 GET VIRT ADDR OF SHRD TABLE 03340000
- CALL DMKRPAGT BLANK OUT VIRTUAL BUFFER 03350000
- SSTRELVB DS 0H 03360000
- L R1,SAVEWRK7 GET VIRTUAL BUFFER ADDRESS 03370000
- CALL DMKPGUVR RELREASE VIRTUAL BUFFER 03380000
- SSTEXIT0 DS 0H 03390000
- SLR R6,R6 SET RETURN CODE = 0 03400000
- SSTEXIT DS 0H 03410000
- ST R6,SAVER6 SAVE RETURN CODE FOR EXIT 03420000
- EXIT 03430000
- EJECT 03440000
- SSTERR01 DS 0H 03450000
- L R6,F1 SET RETURN CODE = 1 03460000
- B SSTEXIT 03470000
- SPACE 2 03480000
- SSTERR02 DS 0H 03490000
- L R6,F13 SET RETURN CODE = 13 03500000
- B SSTEXIT 03510000
- SPACE 1 03520000
- SSTRELNS DS 0H 03530000
- L R1,SAVEWRK6 GET VIRT ADDR OF NSHRD TABLE 03540000
- CALL DMKPGUVR RELEASE VIRTUAL BUFFER 03550000
- B SSTERR02 SET THE CORRECT RET CODE & RETURN 03560000
- SPACE 1 03570000
- SSTRELBO DS 0H 03580000
- L R1,SAVEWRK6 GET VIRT ADDR OF NSHRD TABLE 03590000
- CALL DMKPGUVR RELEASE VIRTUAL BUFFER 03600000
- SSTRELSH DS 0H 03610000
- L R1,SAVEWRK7 GET VIRT ADDR OF SHRD TABLE 03620000
- CALL DMKPGUVR RELEASE VIRTUAL BUFFER 03630000
- B SSTERR02 SET CORRECT RET CODE & RETURN 03640000
- EJECT 03650000
- DMKSSTFV RELOC 03660000
- *. 03670000
- * REGISTER USAGE: 03680000
- * R0 = WORK REG 03690000
- * R1 = VUA 03700000
- * R2 = INDEX TO THIS VUA IN SDG ENTRY 03710000
- * R3 = COUNT OF VUA'S THIS SDG ENTRY 03720000
- * R4 = SDG REQUESTED OR X'FF' 03730000
- * R5 = SHARED STATUS REQUESTED/WORK REG 03740000
- * R6 = SDG NUMBER BEING SCANNED NOW/RETURN CODE 03750000
- * R7 = WORK REG 03760000
- * R8 = RDEVBLOK BASE 03770000
- * R9 = CCPD OF SDG TABLE BEING SCANNED 03780000
- * R10 = SDGTABLE BASE 03790000
- * R11 = VMBLOK BASE 03800000
- * R12 = DMKSST BASE 03810000
- * R13 = SAVE AREA BASE 03820000
- * R14 = LINKAGE 03830000
- * R15 = LINKAGE 03840000
- * 03850000
- * OPERATION: 03860000
- * 03870000
- * 1. GET SHARED/NON-SHARED/BOTH REQUEST, SPECIFIC/NON-SPECIFIC 03880000
- * SDG REQUEST. 03890000
- * 03900000
- * 2. DETERMINE WHICH TABLE TO START SCAN WITH (NORMALLY SHARED 03910000
- * TABLE). TRANS THE TABLE IN. 03920000
- * 03930000
- * 3. PICK UP LAST SDG USED TO MOUNT A VOLUME IN. 03940000
- * 03950000
- * 4. MOVE TO NEXT SDG. POINT TO COUNT OF VUA'S IN THIS ENTRY. 03960000
- * IF NO MORE SDG'S AVAILABLE AND NONE TO DEMOUNT THEN SET 03970000
- * REASON CODE 8 AND RETURN TO CALLER. IF NO MORE SDG'S 03980000
- * AVAILABLE BUT CAN DEMOUNT, GO TO STEP 9. 03990000
- * 04000000
- * 5. POINT TO NEXT VUA. IF NONE GO TO STEP 4. 04010000
- * 04020000
- * 6. CALL DMKSCNRU TO LOCATE RDEVBLOK OF THIS VUA. IF NOT FOUND 04030000
- * GO TO STEP 5. 04040000
- * 04050000
- * 7. MAKE SURE IT'S: 04060000
- * - 3330 04070000
- * - SYSVIRT 04080000
- * - NOT OFFLINE, NOT DEDICATED 04090000
- * - NOT OWNED BY SYSTEM 04100000
- * IF THESE ARE NOT ALL MET, GO TO STEP 5. 04110000
- * 04120000
- * 8. IF NO VOLUMES MOUNTED TO IT, SELECT THIS VUA, RELEASE BUFFER, 04130000
- * RETURN TO CALLER. ELSE FLAG AS ABLE TO DEMOUNT. GO TO STEP 5. 04140000
- * 04150000
- * 9. IF DEMOUNT REQUIRED, SET DEMOUNT FLAG, SAVE VUA, RETURN TO 04160000
- * CALLER. 04170000
- *. 04180000
- ST R5,SAVEWRK5 SAVE FLAGS 04190000
- SLR R9,R9 ... 04200000
- ST R9,SAVEWRK1 ... 04210000
- TM SAVEWRK5+3,SHARD SHARED VUA REQUESTED? 04220000
- BNO FINDNS NO - THEN MUST BE NON-SHARED 04230000
- L R9,=A(DMKSSSHR) ELSE GET ADDR OF CCPD FOR SHRD TBL 04240000
- L R9,0(,R9) GET THAT CCPD 04250000
- XC SAVEWRK1,SAVEWRK1 RESET VIRT PAGE ADDR AREA 04260000
- XC SAVEWRK3,SAVEWRK3 CLEAR A FLAG AREA 04270000
- OI SAVEWRK3,SHARED FLAG AS LOOPING ON SHARED 04280000
- LTR R9,R9 ANYTHING THERE? 04290000
- BNZ GETPAGE YES - THEN BRING IT IN 04300000
- NOSHRD DS 0H 04310000
- TM SAVEWRK5+3,SHARD+NONSHRD EITHER SHARED OR NON- 04320000
- * SHARED ALLOWED? 04330000
- BNO FINDERR1 NO - THEN NO SHARED VUA'S PRESENT 04340000
- FINDNS DS 0H 04350000
- L R9,=A(DMKSSSNS) GET ADDR OF CCPD FOR NSHR TBL 04360000
- L R9,0(,R9) ... AND GET THAT CCPD 04370000
- XC SAVEWRK3,SAVEWRK3 RESET FLAG AREA 04380000
- OI SAVEWRK3,NONSHRD FLAG AS LOOKING FOR NON-SHRD 04390000
- LTR R9,R9 ANYTHING THERE? 04400000
- BZ FINDERR3 NO - THEN NO NON-SHARED VUA'S 04410000
- * PRESENT 04420000
- GETPAGE DS 0H 04430000
- LR R0,R9 CCPD TO R0 04440000
- L R1,SAVEWRK1 VIRTUAL BUFFER ADDRESS 04450000
- LTR R1,R1 IS THERE ONE ALREADY ? 04460000
- BNZ BYPASS YES, DON'T NEED ANOTHER ONE 04470000
- CALL DMKPGUVG GET A VIRTUAL PAGE FOR THIS TABLE 04480000
- TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM),IOER=FINDERR4 04490000
- ST R1,SAVEWRK1 SAVE VIRTUAL ADDRESS OF BUFF 04500000
- ST R2,SAVEWRK8 SAVE REAL ADDRESS OF BUFF 04510000
- BYPASS CALL DMKRPAGT,PARM=(BRING+SYSTEM) BRING INTO STORAGE 04520000
- BNZ FINDERR4 PAGE READ ERROR 04530000
- C R4,FFS REQUEST ANY OLD SDG? 04540000
- BNE SPECSDG NO - USER WANTS A SPECIFIC ONE 04550000
- FRSTSCAN EQU * LOOK FOR TOTALLY FREE RDEVBLOK 04560000
- L R5,=A(DMKSSSNV) ADDRESS OF SDG INDEX 04570000
- L R6,0(R5) SDG INDEX 04580000
- ST R6,SAVEWRK6 SAVE FOR LATER REFERENCE 04590000
- NXTSCAN DS 0H 04600000
- L R6,SAVEWRK6 GET LAST SDG LOOKED AT 04610000
- A R6,F1 INCREMENT COUNT BY ONE 04620000
- CL R6,F27 LOOK AT HIGHEST SDG YET? 04630000
- BNH CONTSCAN NO - THEN THIS SDG NUMBER IS OKAY 04640000
- SLR R6,R6 ELSE GET FIRST SDG NUMBER 04650000
- CONTSCAN DS 0H 04660000
- ST R6,SAVEWRK6 SAVE NMBR OF SDG TO BE LOOKED AT 04670000
- MH R6,H130 GET DISPLACEMENT TO THIS SDG 04680000
- L R10,SAVEWRK8 GET START OF TABLE 04690000
- AR R10,R6 ADD IN DISPLACEMENT TO THIS SDG 04700000
- USING SDGTABLE,R10 04710000
- LH R3,CNT COUNT OF VUA IN SDG 04720000
- LTR R3,R3 ANY ? 04730000
- BNZ STRTSCAN LOOK FOR AVAILABLE ONE 04740000
- C R4,FFS REQUEST ANY OLD SDG? 04750000
- BNE FINDERR5 NO - THEN NO VUA'S IN THIS SDG 04760000
- CLC SAVEWRK6,0(R5) WRAPPED AROUND SDGS YET ? 04770000
- BE NONSHARE YES, SEE IF PROCESSED NONSHARED 04780000
- B NXTSCAN ELSE SET UP TO LOOK AT NEXT SDG 04790000
- STRTSCAN DS 0H 04800000
- SLR R2,R2 RESET AN INDEX REG 04810000
- FINDLOOP DS 0H 04820000
- LA R2,2(,R2) GET NEXT VUA IN SDG ENTRY 04830000
- LH R1,0(R2,R10) GET VUA NUMBER 04840000
- CALL DMKSCNRU GO FIND RDEVBLOK FOR THIS VUA 04850000
- BNZ NXTVUA IF RDEVBLOK NOT FOUND GET NEXT 04860000
- USING RDEVBLOK,R8 SET ASSEMBLER ADDRESSABILITY 04870000
- CLC RDEVTYPC(2),=AL1(CLASDASD,TYP3330) IS IT 3330 04880000
- BNE NXTVUA NO, GO BUMP INDEX COUNT 04890000
- TM RDEVFTR,SYSVIRT THIS A SYSVIRT VUA? 04900000
- BNO NXTVUA NO - THEN DON'T USE IT 04910000
- TM RDEVSTAT,RDEVDISA+RDEVDED OFFLINE OR DEDICATED 04920000
- BNZ NXTVUA CAN'T BE AVAILABLE 04930000
- TM RDEVFLAG,RDEVSYS+RDEVOWN+RDEVSEL BELONG TO 04940000
- * SYSTEM 04950000
- BNZ NXTVUA YES, CAN'T BE AVAILABLE 04960000
- CLI RDEVSER,X'40' IS A VOLUME MOUNTED 04970000
- BE GOTFREE FOUND A FREE RDEVBLOK 04980000
- OI SAVEWRK3,AVAILVOL VOL AVAILABLE FOR DEMOUNT 04990000
- TM SAVEWRK3,DEMNT LOOKING FOR VOL TO DEMOUNT? 05000000
- BO GOTONE YES - THEN DEMOUNT AND USE IT! 05010000
- NXTVUA EQU * 05020000
- BCT R3,FINDLOOP KEEP LOOKING TILL WE EXHAUST 05030000
- * THIS SDG 05040000
- TM SAVEWRK3,DEMNT WE TRY TO DEMOUNT YET? 05050000
- BNO DMOUNT NO - THEN TRY TO DEMOUNT 05060000
- TRYNOSHR CL R4,FFS THIS A REQUEST FOR 'ANY' SDG? 05070000
- BNE FINDERR5 NO - THEN NONE AVAILABLE THIS SDG 05080000
- CLC SAVEWRK6,0(R5) CYCLE THRU ALL THE SDG'S? 05090000
- BNE NXTSCAN NO - THEN LOOK AT NEXT ONE 05100000
- NONSHARE TM SAVEWRK3,NONSHRD WE LOOK FOR A NON-SHRD VUA? 05110000
- BO FINDERR7 YES - THEN ABSOLUTELY NONE 05120000
- * AVAILABLE 05130000
- B NOSHRD ELSE (MAYBE) LOOK FOR A 05140000
- * NON-SHARED VUA 05150000
- DMOUNT DS 0H 05160000
- TM SAVEWRK3,AVAILVOL VOL AVAILABLE THRU DEMOUNT? 05170000
- BNO TRYNOSHR NO - SEE IF CAN TRY NONSHARED 05180000
- OI SAVEWRK3,DEMNT SAY WANT TO TRY TO DEMOUNT 05190000
- LH R3,CNT COUNT OF VUAS IN SDG 05200000
- B STRTSCAN START SCANNING THIS SDG ALL OVER 05210000
- GOTFREE EQU * WE HAVE A TOTALLY FREE RDEVBLOK 05220000
- ST R1,SAVER5 SAVE VUA ADDRESS (CUU) 05230000
- OI RDEVFLAG,RDEVSEL DEVICE IS SELECTED 05240000
- MVC RDEVSER(6),BLANKS CLEAR THE VOL SER 05250000
- L R1,SAVEWRK1 ADDRESS OF VIRTUAL BUFFER 05260000
- CALL DMKPGUVR RELEASE VIRTUAL BUFFER 05270000
- SLR R0,R0 ... 05280000
- CALL DMKRPAGT,PARM=(SYSTEM) 05290000
- C R4,FFS SPECIFIC SDG REQUEST ? 05300000
- BNE SSTEXIT0 DON'T CHANGE THE INDEX 05310000
- MVC 0(4,R5),SAVEWRK6 SAVE THIS SDG NUMBER 05320000
- B SSTEXIT0 EXIT RC = 0 05330000
- GOTONE EQU * GET CURRENT VOLUME DEMOUNTED 05340000
- ST R1,SAVER5 SAVE VUA ADDRESS (CUU) 05350000
- L R1,SAVEWRK1 ADDRESS OF VIRTUAL BUFFER 05360000
- CALL DMKPGUVR RELEASE VIRTUAL BUFFER 05370000
- SLR R0,R0 ... 05380000
- CALL DMKRPAGT,PARM=(SYSTEM) 05390000
- L R6,F4 RC = 4 IF DEMOUNT REQUIRED 05400000
- C R4,FFS SPECIFIC SDG REQUEST 05410000
- BNE SSTEXIT DON'T CHANGE SDG INDEX 05420000
- MVC 0(4,R5),SAVEWRK6 SAVE THIS SDG NUMBER 05430000
- B SSTEXIT RETURN TO CALLER 05440000
- SPECSDG DS 0H 05450000
- LR R6,R4 GET SDG NUMBER REQUESTED 05460000
- LTR R6,R6 REQUEST FOR SDG 0? 05470000
- BNZ SPECSDG1 NO - THEN JUST DECREMENT BY ONE 05480000
- L R6,F28 ELSE SAY IT'S THE HIGHEST SDG 05490000
- SPECSDG1 DS 0H 05500000
- S R6,F1 DECREMENT BY ONE 05510000
- ST R6,SAVEWRK6 SAVE IN SAVEWRK6 05520000
- B NXTSCAN GO SEARCH THIS SDG ONLY FOR AN 05530000
- * AVAILABLE VUA 05540000
- DROP R8,R10 05550000
- FINDERR1 DS 0H 05560000
- MVC SAVEWRK2(16),=CL16'SHARED' SET SUBSTITUTION INFO 05570000
- B ERREXIT GO PUT OUT MESSAGE 05580000
- FINDERR3 DS 0H 05590000
- TM SAVEWRK5+3,SHRD+NONSHRD EITHER STATUS REQUESTED? 05600000
- BO FINDERR7 YES - THEN USE THAT ERR MSG 05610000
- MVC SAVEWRK2(16),=CL16'NONSHARED' SET SUBST. INFO 05620000
- B ERREXIT 05630000
- FINDERR7 DS 0H 05640000
- MVC SAVEWRK2(16),=CL16'SHARED/NONSHARED' SUBST. INFO 05650000
- B ERREXIT 05660000
- FINDERR5 DS 0H 05670000
- CVD R4,SAVEWRK2 CONVERT SDG NUMBER TO DECIMAL 05680000
- UNPK SAVEWRK6(2),SAVEWRK3+2(2) UNPK SDG FOR PRINT 05690000
- OI SAVEWRK6+1,X'F0' CORRECT EBCDIC CHARACTER 05700000
- MVC SAVEWRK2(16),=CL16'SHARED (SDG XX)' 05710000
- MVC SAVEWRK5(2),SAVEWRK6 05720000
- ERREXIT DS 0H 05730000
- L R0,F16 SIZE OF SUBSTITUTION DATA 05740000
- LA R1,SAVEWRK2 START OF SUBSTITUTION DATA 05750000
- LA R2,EMSG70 MESSAGE 070E 05760000
- ICM R2,B'1000',=X'80' RETURN TO DMKSST AFTER MSG 05770000
- ICM R0,B'1110',DMKSST+3 05780000
- CALL DMKERMSG GO ISSUE THE ERROR MESSAGE 05790000
- L R1,SAVEWRK1 ADDRESS OF VIRTUAL BUFFER 05800000
- CALL DMKPGUVR RELEASE BUFFER 05810000
- SLR R0,R0 ... 05820000
- CALL DMKRPAGT,PARM=(SYSTEM) 05830000
- B EXITRC8 EXIT WITH RC = 8 05840000
- FINDERR4 DS 0H 05850000
- L R1,SAVEWRK1 ADDRESS OF VIRTUAL BUFFER 05860000
- CALL DMKPGUVR RELEASE VIRTUAL BUFFER 05870000
- EXITRC8 L R6,F8 SET RETURN CODE = 8 05880000
- B SSTEXIT RETURN TO CALLER 05890000
- EJECT 05900000
- F13 DC F'13' 05910000
- F27 DC F'27' 05920000
- F28 DC F'28' 05930000
- H130 DC H'130' 05940000
- NSHRPRES EQU X'80' NON-SHARED VUA'S PRESENT 05950000
- SHRDPRES EQU X'40' SHARED VUA'S PRESENT 05960000
- SHARD EQU X'80' 05970000
- NONSHRD EQU X'40' 05980000
- SHARED EQU X'20' 05990000
- DEMNT EQU X'08' 06000000
- AVAILVOL EQU X'04' 06010000
- EMSG70 EQU 70 06020000
- EJECT 06030000
- COPY EQU 06040000
- COPY DEVTYPES 06050000
- PSA 06060000
- COPY RBLOKS 06070000
- COPY SAVE 06080000
- COPY VMBLOK 06090000
- * COPY VUATABLE 06100000
- SPACE 1 06110000
- MSSVUA DSECT 06120000
- SPACE 1 06130000
- VUA DS H 06140000
- STAT DS X 06150000
- SPACE 1 06160000
- * BITS DEFINED IN STAT: 06170000
- SHRD EQU X'80' THIS IS A SHARED VUA 06180000
- SPACE 1 06190000
- SDG DS X 06200000
- SPACE 3 06210000
- SDGTABLE DSECT 06220000
- SPACE 1 06230000
- CNT DS H COUNT OF VUA'S IN THIS SDG 06240000
- SDGINDX DS 64H INDEX TO RDEVBLOK FOR EACH VUA 06250000
- * IN THIS SDG 06260000
- END DMKSST 06270000
ibm/vm370-lib/cp/dmksst.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator