ibm:vm370-lib:cms:dmssln.assemble_src
Table of Contents
DMSSLN Source
References
- Fixes Applied : 2
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [R14326DS]
Source Listing
- DMSSLN.ASSEMBLE.txt
- SLN TITLE 'DMSSLN (CMS) VM/370 - RELEASE 6' 00001000
- SPACE 2 00002000
- *. 00003000
- * MODULE NAME 00004000
- * 00005000
- * DMSSLN 00006000
- * 00007000
- * FUNCTION 00008000
- * 00009000
- * HANDLE OS CONTENTS MANAGEMENT REQUESTS ISSUED 00010000
- * UNDER CMS. (LINK, LOAD, XCTL, DELETE, ATTACH,EXIT) 00011000
- * 00012000
- * ATTRIBUTES 00013000
- * 00014000
- * REENTRANT, SEGMENT RESIDENT 00015000
- * 00016000
- * ENTRY POINTS 00017000
- * 00018000
- * DMSSLN7 - XCTL - R15 POINTS TO ADDRESS OF REQUESTED 00019000
- * PHASE NAME 00020000
- * DMSSLN6 - LINK - SAME AS DMSSLN7 00021000
- * DMSSLN42 - ATTACH - R15 POINTS TO ATTACH PARAMETER LIS 00022000
- * DMSSLN8 - LOAD - R0 POINTS TO PHASE NAME 00023000
- * DMSSLN9 - DELETE - R0 POINTS TO PHASE NAME 00024000
- * DMSSLN3 - EXIT - NO ENTRY CONDITIONS 00025000
- * DMSSLNAB - ABEND RECOVERY - R14 RETURN ADDRESS 00026000
- * ALL ENTRY POINTS - R15 CONTAINS ADDRESSIBILITY 00027000
- * 00028000
- * ENTRY CONDITIONS 00029000
- * 00030000
- * SEE ENTRY POINTS 00031000
- * 00032000
- * EXIT CONDITIONS 00033000
- * 00034000
- * NORMAL 00035000
- * RETURN TO DMSITS TO: 00036000
- * 1) CONTINUE PROCESSING WITH CALLED PHASE OR END 00037000
- * OF TASK EXIT (LINK, XCTL, ATTACH) 00038000
- * 2) RETURN TO CALLER - EXIT FROM CALLED PHASE 00039000
- * 3) RETURN TO CALLER WITH LOADED PHASE ADDRESS IN 00040000
- * REGISTER ZERO (LOAD) 00041000
- * 4) RETURN TO CALLER WITH ZERO IN REGISTER 15 FOR 00042000
- * SUCCESSFUL DELETE 00043000
- * 00044000
- * ERROR 00045000
- * 1) RETURN TO CALLER WITH 4 IN REGISTER 15 FOR 00046000
- * PHASE NOT FOUND - DELETE 00047000
- * 2) ABEND X'155' LOADMOD ERROR (LINK, LOAD, XCTL, 00048000
- * ATTACH) 00049000
- * 3) ABEND X'15A' - CMS LOADER ERROR (>4) OR ENTRY 00050000
- * LOCATION NOT DETERMINEABLE 00051000
- * 00052000
- * CALLS TO OTHER ROUTINES 00053000
- * 00054000
- * DMSMOD, DMSLDRB 00055000
- * 00056000
- * EXTERNAL REFERENCES 00057000
- * 00058000
- * NUCON, SVCSECT, PGMSECT, DCB, 00059000
- * CALLER'S SAVE AREA + 12 (LINK, LOAD, XCTL, 00060000
- * ATTACH) IF COMPILER SWITCH IS OFF 00061000
- * 00062000
- * TABLES/WORKAREAS 00063000
- * 00064000
- * REQUEST BLOCK 00065000
- * 00066000
- * REGISTER USAGE 00067000
- * 00068000
- * R7 REQUEST BLOCK ADDRESS 00069000
- * R12 BASE REGISTER 00070000
- * R13 CMS SVC SAVE AREA ADDRESS 00071000
- * WORK 0-5,8-11,14,15 00072000
- * UNUSED 6 00073000
- * 00074000
- * OPERATION 00075000
- * 00076000
- * DMSSLN7 - XCTL 00077000
- * 1. IF XCTL IS FROM NON-DYNAMICALLY LOADED 00078000
- * PHASE GO TO DMSSLN6 STEP 2 (BELOW) 00079000
- * 2. RELEASE STORAGE OCCUPIED BY CURRENT PHASE (LATEST 00080000
- * RB ON LINK CHAIN DEFINES STORAGE AREA) 00081000
- * 3. GO TO DYNAMIC (BELOW) 00082000
- * 00083000
- * DMSSLN6 - LINK 00084000
- * 00085000
- * 1. CALL RESIDENT (BELOW) TO CHECK FOR LINK TO CMS 00086000
- * RESIDENT FUNCTION. 00087000
- * 2. ISSUE GETMAIN FOR A NEW REQUEST BLOCK 00088000
- * 3. IF ATTACH REQUEST SAVE ATTACHER'S R13 AND R15 00089000
- * IN THE RB. POINT R13 TO RB SAVE AREA FOR ATTACHEE 00090000
- * 4. IF THIS IS A LOAD REQUEST GO TO STEP 7 00091000
- * 5. CHAIN THIS RB AS LATEST ON LINK CHAIN. SAVE 00092000
- * RESUME PSW IN RB. 00093000
- * 6. IF COMPILER SWITCH IS ON GO TO LODMOD (BELOW), 00094000
- * OTHERWISE, GO TO DYNAMIC (BELOW). 00095000
- * 7. CHAIN THIS RB ON LOAD LIST. SET ZERO USE COUNT 00096000
- * GO TO DYNAMIC STEP 2 (BELOW). 00097000
- * 00098000
- * DMSSLN42 - ATTACH 00099000
- * 00100000
- * 1. ISSUE STAE MACRO IF STAI EXIT IS REQUESTED BY 00101000
- * ATTACHER. 00102000
- * 2. GO TO DMSSLN6 (ABOVE). 00103000
- * 00104000
- * DMSSLN8 - LOAD 00105000
- * 00106000
- * 1. IF REQUESTED PHASE IS ON LOAD RB CHAIN GO TO 00107000
- * DYNAMIC STEP 6 (BELOW). 00108000
- * STEP 2 (ABOVE). 00109000
- * 3. IF COMPILER SWITCH IS ON GO TO LODMOD 00110000
- * STEP 2 (BELOW; OTHERWISE GO TO DMSSLN6 STEP 2 00111000
- * (ABOVE). 00112000
- * 00113000
- * DMSSLN9 - DELETE 00114000
- * 00115000
- * 1. IF COMPILER SWITCH IS ON RETURN TO DMSITS. 00116000
- * 2. IF REQUESTED PHASE IS NOT ON LOAD RB CHAIN SET 00117000
- * RETURN CODE 4 IN R15. AND RETURN TO DMSITS. 00118000
- * 3. DECREMENT USE COUNT BY ONE. IF USE COUNT IS NOT 00119000
- * ZERO RETURN TO DMSITS. 00120000
- * 4. RELEASE PHASE STORAGE AREA, UNCHAIN AND FREEMAIN 00121000
- * LOAD REQUEST BLOCK. ZERO R15 AND RETURN TO DMSITS. 00122000
- * 00123000
- * DMSSLN3 - EXIT FROM CALLED PHASE 00124000
- * 00125000
- * 1. IF NOT RETURN FROM SUBTASK (ATTACH) GO TO STEP 3. 00126000
- * 2. POST ECB, EXECUTE END OF TASK EXIT ROUTINE IF ONE 00127000
- * WAS REQUESTED. 00128000
- * 3. RELEASE PHASE STORAGE, UNCHAIN AND FREE LATEST RB O 00129000
- * LINK RB CHAIN. RESTORE REGISTERS IF RETURN FROM SUBTAS 00130000
- * RETURN TO DMSITS. 00131000
- * 00132000
- * DYNAMIC - CALL CMS LOADER 00133000
- * 00134000
- * 1. IF REQUESTED PHASE IS ON LOAD REQUEST BLOCK CHAIN 00135000
- * GO TO STEP 6. 00136000
- * 2. SET PHASE NAME IN RB. ISSUE CONDITIONAL GETMAIN FOR 00137000
- * AN AREA TO LOAD REQUESTED PHASE INTO. SET LOCATION 00138000
- * COUNTER TO PHASE AREA. CALL DMSLDRB TO INCLUDE PHASE. 00139000
- * 3. IF DMSLDR RETURNS AN ERROR CODE >4 ISSUE ABEND 00140000
- * X'15A'. OTHERWISE RESET LOADER TABLE COUNT TO PRE-INCL 00141000
- * COUNT. 00142000
- * 4. RELEASE EXCESS PHASE STORAGE. 00143000
- * 5. DETERMINE PHASE ENTRY POINT: 00144000
- * A.USE STRTADDR VALUE IN NUCON IF COMPILER SWITCH IS O 00145000
- * B.USE STRTADDR IF PHASE NAME OCCURED AS A MEMBER NAME 00146000
- * IN A CMS TXTLIB (OS FORM - REF. TXTLIB COMMAND). 00147000
- * C.USE ALIASENT IN NUCON IF PHASE NAME OCCURED IN LOAD 00148000
- * CSECTS BUT WAS NOT THE TXTLIB MEMBER NAME (REAL ALI 00149000
- * D.USE STRTADDR FOR ALL OTHER CASES (SYMBOLIC ALIAS). 00150000
- * 00151000
- * 6. RESET DYNAMIC FLAGS. 00152000
- * 7. IF THIS IS A LOAD REQUEST GO TO STEP 9. 00153000
- * 8. SET PHASE ENTRY ADDRESS IN CMS OLD PSW AND R15, SET 00154000
- * THAT CALLED PHASE WILL RETURN TO AN SVC 3 INSTRUCTION. 00155000
- * RETURN TO DMSITS WHICH WILL TRANSFER TO CALLED PHASE. 00156000
- * 9. IF COMPILER SWITCH IS OFF INCREASE USE COUNT IN RB 00157000
- * ONE AND SAVE ENTRY LOCATION IN LOAD RB. 00158000
- * 10. SET R0 TO ENTRY LOCATION. RETURN TO DMSITS. 00159000
- * THE ENTRY ADDR. IS FROM THE LOAD RB IF PHASE WAS ALREA 00160000
- * IN STORAGE. 00161000
- * 00162000
- * LODMOD - LOADMOD A PHASE 00163000
- * 00164000
- * 1. SAVE REQUESTED NAME IN RB. IF REQUESTED NAME IS 00165000
- * ON LOAD RB CHAIN GO TO DYNAMIC STEP 6 (ABOVE). 00166000
- * 2. CALL DMSMOD TO BRING IN REQUESTED PHASE AS A CMS MO 00167000
- * IF DMSMOD RETURNS NON ZERO RETURN CODE ISSUE ABEND X'1 00168000
- * 3. GO TO DYNAMIC STEP 5 (ABOVE). 00169000
- * 00170000
- * RESIDENT 00171000
- * 00172000
- * CHECK REQUESTED PHASE NAME AGAINST CMS RESIDENT LIST 00173000
- * (IECQBFG1 IS ONLY ENTRY). IF EQUAL GO TO RESIDENT ROUT 00174000
- * OTHERWISE RETURN TO INTERNAL CALLER. 00175000
- * 00176000
- * DMSSLNAB - ABEND RECOVERY 00177000
- * 00178000
- * ENTERED WHEN AN ABEND (SVC 13) OCCURS IN CMS. DMSSLNAB 00179000
- * RELEASES THE LOAD AND LINK REQUEST BLOCK CHAINS BY 00180000
- * ZEROING THEIR RESPECTIVE ANCHORS IN NUCON. RETURN 00181000
- * TO DMSABN. 00182000
- *. 00183000
- EJECT 00184000
- DMSSLN7 START , @V305665 00185000
- ENTRY DMSSLN @V305665 00186000
- ENTRY DMSSLN3,DMSSLN6,DMSSLN7,DMSSLN8 @V1D1705 00187000
- ENTRY DMSSLN9,DMSSLN42 @V1D1705 00188000
- USING NUCON,XR0 @V1D1705 00189000
- USING SVCSECT,XRB @V1D1705 00190000
- USING SSAVE,XRD @V1D1705 00191000
- * TRANSFER CONTROL - XCTL, SVC 7 00192000
- SPACE 1 00193000
- DMSSLN EQU * @V305665 00194000
- USING DMSSLN7,XRC @V1D1705 00195000
- BAL XRA,LODREG SET REGS 7 13 @V1D1705 00196000
- LTR XR7,XR7 XCTL FROM DYNAMICALLY LOADED PHAS@V1D1705 00197000
- BZ LINK1 NO, TREAT XCTL AS LINK @V1D1705 00198000
- LA XRA,LINK1A SET LINKAGE @V1D1705 00199000
- B DEL6 FREE OLD PHASE AREA @V1D1705 00200000
- EJECT 00201000
- SPACE 1 00202000
- USING *,12 @V1D1705 00203000
- DMSSLN42 EQU * @V1D1705 00204000
- TM 8(XRF),X'01' WAS STAI EXIT REQUESTED @V1D1705 00205000
- BNO DMSSLN6 NO @V1D1705 00206000
- L XR4,40(XRF) GET STAE PARM ADDR @V1D1705 00207000
- L XR5,44(XRF) GET STAE EXIT ADDR @V1D1705 00208000
- LR XR1,XRD SET PARAM REG @V1D1705 00209000
- STAE (XR5),CT,PARAM=(XR4),MF=(E,(1)) @V1D1705 00210000
- L XRA,APGMSECT SET STAI FLG IN SCB @V1D1705 00211000
- USING PGMSECT,XRA @V1D1705 00212000
- L XRA,SCBPTR PTR TO CURRENT SCB @V1D1705 00213000
- DROP XRA @V1D1705 00214000
- OI 12(XRA),X'20' INDICATE SCB FOR STAI @V1D1705 00215000
- EJECT 00216000
- * LINK - SVC 6 00217000
- SPACE 1 00218000
- DMSSLN6 BALR XRC,0 @V1D1705 00219000
- USING *,XRC @V1D1705 00220000
- L XRC,BASED COMMON CAUSE @V1D1705 00221000
- USING DMSSLN7,XRC @V1D1705 00222000
- BAL 10,RESIDENT CHECK FOR RESIDENT ROUTINE @V1D1705 00223000
- BAL 10,LODREG SET REGS BY CONVENTION @V1D1705 00224000
- USING LINKBLK,XR1 LINKBLK DSECT @V1D1705 00225000
- LINK1 LA XR0,SAVLEN/8 GET LINK BLOCK @V1D1705 00226000
- DMSFREE DWORDS=(0),TYPCALL=BALR @V1D1705 00227000
- CLI OLDPSW+3,42 IS THIS ATTACH @V1D1705 00228000
- BNE LINK11 BRANCH IF NOT @V1D1705 00229000
- MVC SAVR15(4),EGPR15 SAVE PARAMETER REG @V1D1705 00230000
- MVC SAVR13(4),EGPR13 SAVE ATTACHER'S R13 @V1D1705 00231000
- LA XR0,SVAREA POINT TO NEW SAVE AREA FOR ATTACH@V1D1705 00232000
- ST XR0,EGPR13 @V1D1705 00233000
- B LINKA JOIN BELOW @V1D1705 00234000
- LINK11 CLI OLDPSW+3,SLOAD SVC 08 @V1D1705 00235000
- BE LOAD5 BRANCH IF YES @V1D1705 00236000
- LINKA ST XR7,LINKPTR CHAIN NEW AREA AHEAD OF OTHERS @V1D1705 00237000
- LR XR7,XR1 @V1D1705 00238000
- ST XR7,LINKLAST @V1D1705 00239000
- XC LINKBYTE(4),LINKBYTE CLEAR SIZE FIELD @V1D1705 00240000
- DROP XR1 @V1D1705 00241000
- USING LINKBLK,XR7 USE LINKBLK DSECT @V1D1705 00242000
- MVC SAVPSW(8),OLDPSW SAVE OLD SVC PSW @V1D1705 00243000
- LINK1A L XRF,EGPR15 GET A(PHASE NAME) @V1D1705 00244000
- L XRF,0(,XRF) @V1D1705 00245000
- TM OSSFLAGS,COMPSWT MODULES @V1D1705 00246000
- BO LODMOD CMS LOADMOD @V1D1705 00247000
- B DYNAMIC GO DYNAMICALLY LINK @V1D1705 00248000
- LINK2 EQU * RETURN FROM DYNAMIC LOAD OF T@V1D1705 00249000
- ST XR0,OLDPSW+4 SET PSW TO ENTRY POINT @V1D1705 00250000
- ST XR0,EGPR15 SET ENTRY POINT IN R15 @V1D1705 00251000
- LINK3 LA XRE,EXIT SET RETURN ADDRESS @V1D1705 00252000
- CLI OLDPSW+3,07 WAS THIS A TRANSFER CONTROL? @VA05460 00253000
- BE TRANS1 YES, SPECIAL CONSIDERATION @VA05460 00254000
- ST XRE,EGPR14 FOR CALLEE @V1D1705 00255000
- TRANS1 EQU * @VA05460 00256000
- L XRE,OSTEMP RETURN TO SVC HANDLER @V1D1705 00257000
- BR XRE @V1D1705 00258000
- LOAD5 L XRF,EGPR0 GET REQUESTED PHASE NAME @V1D1705 00259000
- LPR XRF,XRF IN CASE DE TYPE @V1D1705 00260000
- L XR7,LINKSTRT CHAIN NEW BLOCK TO LOAD LIST @V1D1705 00261000
- ST XR1,LINKSTRT AT THE TOP OF THE LIST @V1D1705 00262000
- ST XR7,0(XR1) @V1D1705 00263000
- LR XR7,XR1 R7 HAS LINK BLOCK ADDR @V1D1705 00264000
- MVI LINKCNT,X'00' CLEAR USE COUNT @V1D1705 00265000
- XC LINKBYTE,LINKBYTE CLEAR SIZE FIELD @VA04980 00266000
- B DYNAMIC1 FETCH PHASE @V1D1705 00267000
- EJECT 00268000
- * EXIT MACRO EXIT, SVC 3 00269000
- EXIT SVC 3 COME HERE ON RETURN MACRO @V1D1705 00270000
- SPACE 3 00271000
- * RETURN FROM LINKED-TO PHASE - RETURN, SVC 3 00272000
- SPACE 1 00273000
- USING *,12 @V1D1705 00274000
- DMSSLN3 L XRC,BASED COMMON ADDRESSABILITY @V1D1705 00275000
- USING DMSSLN7,XRC @V1D1705 00276000
- BAL 10,LODREG SET REGS BY CONVENTION @V1D1705 00277000
- CLI SAVPSW+3,42 WAS THIS AN ATTACH SVC @V1D1705 00278000
- BNE RETURN3 NO, SKIP ATTACH EXIT CODE @V1D1705 00279000
- L XR1,SAVR15 GET ADDR OF ATTACH PARM LIST @V1D1705 00280000
- LA XR1,0(0,XR1) CLEAR HI BYTE @V1D1705 00281000
- LTR XR1,XR1 IS THIS SECOND TIME THROUGH @V1D1705 00282000
- BZ RETURN3 YES, RETURN @V1D1705 00283000
- XC SAVR15(4),SAVR15 SET SWITCH FOR 2ND TIME THROU@V1D1705 00284000
- L XRA,8(XR1) GET ECB ADDR @V1D1705 00285000
- LA XRA,0(0,XRA) CLEAR HI BYTE @V1D1705 00286000
- LTR XRA,XRA IS IT ZERO @V1D1705 00287000
- BZ CKEXIT YES, CONTINUE @V1D1705 00288000
- MVC 0(4,XRA),EGPR15 FILL IN RETURN CODE @V1D1705 00289000
- MVI 0(XRA),X'40' FILL IN COMPLETION BIT @V1D1705 00290000
- CKEXIT L XRA,20(XR1) GET ADDR OF EXIT ROUTINE @V1D1705 00291000
- LA XRA,0(0,XRA) CLEAR HI BYTE @V1D1705 00292000
- LTR XRA,XRA IS THERE AN EXIT RTN. SPECIFI@V1D1705 00293000
- BZ RETURN3 NO, RETURN @V1D1705 00294000
- XC EGPR1,EGPR1 ZERO REG 1 @V1D1705 00295000
- ST XRA,EGPR15 SET ENTRY POINT IN REG 15 @V1D1705 00296000
- MVC OLDPSW+5(3),21(XR1) SET OLDPSW TO EXIT ROUTINE @V1D1705 00297000
- B LINK3 RETURN TO SVC ROUTINE @V1D1705 00298000
- RETURN3 BAL XRA,DEL6 RELEASE PHASE STORAGE @V1D1705 00299000
- MVC OLDPSW,SAVPSW RESTORE PSW FROM LAST LINK @V1D1705 00300000
- LR XR1,XR7 PREPARE TO FREE LATEST BLOCK ON C@V1D1705 00301000
- L XR7,LINKPTR GET SECOND MEMBER OF CHAIN @V1D1705 00302000
- ST 7,LINKLAST @V1D1705 00303000
- LA XR0,SAVLEN/8 LINK/XCTL LINK BLOCK SIZE @V1D1705 00304000
- CLI OLDPSW+3,42 IS THIS ATTACH @V1D1705 00305000
- BNE RETURN4 NO @V1D1705 00306000
- LA XRF,SVAREA-LINKBLK(XR1) GET ATTACHEE'S SAVE ARE@V1D1705 00307000
- MVC EGPR0(52),20(XRF) RESTORE REGS FOR ATTACHER @V1D1705 00308000
- MVC EGPR13(4),SAVR13-LINKBLK(XR1) RESTORE ATTACHER'S@V1D1705 00309000
- RETURN4 DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @V1D1705 00310000
- B DEL7A @VA03007 00311000
- EJECT 00312000
- * LOAD IN AN OBJECT DECK - LOAD, SVC 8 00313000
- SPACE 1 00314000
- DMSSLN8 EQU * LOAD A MODULE, SVC 8 @V1D1705 00315000
- USING DMSSLN8,12 @V1D1705 00316000
- L XRC,BASED COMMON ADDRESSABILITY @V1D1705 00317000
- USING DMSSLN7,12 @V1D1705 00318000
- BAL 10,LODREG SET REGS BY CONVENTION @V1D1705 00319000
- L 15,EGPR0 GET A(PHASE NAME) @V1D1705 00320000
- LPR XRF,XRF IN CASE OF DE TYPE @V1D1705 00321000
- LA XR8,LOAD2 IN CASE FOUND @V1D1705 00322000
- LA XRA,LODMOD1 IN CASE NOT FOUND @V1D1705 00323000
- TM OSSFLAGS,COMPSWT TEST FOR MODULE FORM @V1D1705 00324000
- BO SCAN MODULES, LOOK FOR LRB @V1D1705 00325000
- LA XRA,LINK1 IN CASE NOT FOUND @V1D1705 00326000
- SCAN L XR0,LINKSTRT GET LRB ANCHOR @V1D1705 00327000
- LDLOOP LTR XR1,XR0 LAST LRB ? @V1D1705 00328000
- DROP XR7 @V1D1705 00329000
- USING LINKBLK,XR1 @V1D1705 00330000
- BCR 8,XRA BRANCH IF LAST @V1D1705 00331000
- CLC LINKNAM(8),0(XRF) IS THIS REQUESTED PHASE @V1D1705 00332000
- L XR0,LINKPTR PTR TO NEXT LRB @V1D1705 00333000
- BNE LDLOOP NO, CHECK NEXT LRB @V1D1705 00334000
- L XR0,LINKENT GET ENTRY LOCATION @V1D1705 00335000
- LR XR7,XR1 SET LINKBLK IN 7 @V1D1705 00336000
- DROP XR1 @V1D1705 00337000
- USING LINKBLK,XR7 @V1D1705 00338000
- BR XR8 RETURN @V1D1705 00339000
- EJECT 00340000
- * 00341000
- * SET UP TO GO TO "LOADER" TO LOAD APPROPRIATE TEXT DECKS 00342000
- * 00343000
- DYNAMIC LA XR8,INCORE2 IN CASE FOUND IN CORE @V1D1705 00344000
- BAL XRA,SCAN LOOK FOR PHASE IN CORE @V1D1705 00345000
- USING DYNALIST,XR9 @V1D1705 00346000
- DYNAMIC1 MVC LINKNAM(8),0(XRF) MOVE PHASE NAME TO LINK BLOC@V1D1705 00347000
- LH XR0,TBENT GET NUMBER OF TABLE ENTRIES @VA04980 00348000
- LTR XR0,XR0 HAS ANYTHING BEEN LOADED? @VA04980 00349000
- BZ DYNAMIC9 BRANCH IF NOT @VA04980 00350000
- L XR4,ALDRTBLS GET LOADER TABLE ADDRESS @VA04980 00351000
- LA XR4,0(,XR4) CLEAR HIGH BYTE @VA04980 00352000
- LA XR3,LDRENT GET LENGTH OF TABLE ENTRY @VA04980 00353000
- USING LDRSECT,XR4 @VA04980 00354000
- DYNAMIC3 EQU * @VA04980 00355000
- SR XR4,XR3 POINT TO NEXT LOADER ENTRY @VA04980 00356000
- CLC LINKNAM(8),LDRNAME IS THIS THE NAME? @VA04980 00357000
- BE DYNAMIC4 BRANCH IF YES @VA04980 00358000
- BCT XR0,DYNAMIC3 GO CHECK NEXT ENTRY @VA04980 00359000
- B DYNAMIC9 NAME IS NOT IN TABLE @VA04980 00360000
- DYNAMIC4 EQU * @VA04980 00361000
- L XR0,LDRADD GET START ADDRESS @VA04980 00362000
- MVC LINKAREA,LDRRELO MOVE IN RELOCATION FACTOR @VA04980 00363000
- B INCORE2 @VA04980 00364000
- DROP XR4 @VA04980 00365000
- DYNAMIC9 EQU * @VA04980 00366000
- L XR9,EGPR13 CALLER'S REG13 @V1D1705 00367000
- MVC LDNAME(8),0(XRF) SET NAME @V1D1705 00368000
- LA XR4,LOADLST+16 GETMAIN PARAM AREA @V305665 00369000
- LA XR3,LINKAREA SET ANSWER AREA @V1D1705 00370000
- GETMAIN VU,LA=GETCONST,A=(XR3),MF=(E,(XR4)) @V1D1705 00371000
- * FOR NEW PHASE 00372000
- L XR1,LINKAREA ADDR OF GOTTEN AREA @V1D1705 00373000
- ST XR1,LOCCNT SET LOCATION COUNTER @V1D1705 00374000
- A XR1,LINKBYTE POINT TO END OF GOTTEN AREA @V1D1705 00375000
- ST XR1,DYNAEND CHECKED BY DMSLDR @V1D1705 00376000
- XC ALIASENT(4),ALIASENT CLEAR ENTRY LOCATION FO@V1D1705 00377000
- MVC LOADLST+16(32),WLIST COMPLETE INCLUDE PLIST @V305665 00378000
- LH XRB,TBENT REMEMBER LOADER TABLE COUNT @V1D1705 00379000
- LA XR1,LOADLST SET PLIST @V305665 00380000
- LR XRA,XR7 SAVE XR7 @V1D1705 00381000
- L XRF,=V(DMSOLD) CALL LOADER @V305665 00382000
- BALR XRE,XRF @V1D1705 00383000
- USING *,XRE @V1D1705 00384000
- L XRC,BASED @V1D1705 00385000
- DROP XRE @V1D1705 00386000
- L XRD,CURRSAVE RESTORE R13 @V1D1705 00387000
- LR XR7,XRA RESTORE XR7 @V1D1705 00388000
- CH XRF,=H'4' CHECK LOADER RETURN CODE @V1D1705 00389000
- BH DYNAERR BRANCH IF YES @V1D1705 00390000
- STH XRB,TBENT RESTORE LOADER TBL COUNT @V1D1705 00391000
- L XR1,LOCCNT ENDING LOAD LOCATION @V1D1705 00392000
- LA XR1,7(0,XR1) ROUND TO DBL WD BDRY. @V1D1705 00393000
- N XR1,GETMASK @V1D1705 00394000
- L XR0,DYNAEND END OF PHASE AREA @V1D1705 00395000
- SR XR0,XR1 REMAING UNUSED STOR. @V1D1705 00396000
- BZ LOAD3A BRANCH IF ZERO @V1D1705 00397000
- FREEMAIN R,LV=(XR0),A=(XR1) RELEASE IT @V1D1705 00398000
- LOAD3A L XRF,LINKBYTE LENGTH OF GOTTEN AREA @V1D1705 00399000
- SR XRF,XR0 MINUS AM'T JUST FREED @V1D1705 00400000
- ST XRF,LINKBYTE AM'T STILL LEFT @V1D1705 00401000
- TM OSSFLAGS,DYMBRNM WAS A MEMBER CALLED BY ITS N@V1D1705 00402000
- BO DEFENT YES, USE DEFAULT ENTRY ADDRESS @V1D1705 00403000
- TM OSSFLAGS,DYLIBO WAS ENTRY POINT FOUND IN PHA@V1D1705 00404000
- BNO DEFENT NO, USE DEFAULT @V1D1705 00405000
- L XR0,ALIASENT GET ENTRY NAME LOCATION @V1D1705 00406000
- B INCORE2 CONTINUE @V1D1705 00407000
- DEFENT L XR0,STRTADDR DEFAULT ENTRY LOCATION @V1D1705 00408000
- LTR XR0,XR0 WAS ENTRY POINT SET @V1D1705 00409000
- BZ DYNAERR NO, ERROR @V1D1705 00410000
- INCORE2 NI OSSFLAGS,255-DYLD-DYLIBO-DYMBRNM @V1D1705 00411000
- * RESET DYNAMIC FLAGS 00412000
- CLI OLDPSW+3,SLOAD SVC 8 ? @V1D1705 00413000
- BE LOAD2 YES. @V1D1705 00414000
- B LINK2 ALL OTHER SVC'S @V1D1705 00415000
- DYNAERR ABEND 346 ERROR FROM DMSLDR @V1D1705 00416000
- LOAD2 TM OSSFLAGS,COMPSWT MODULES @V1D1705 00417000
- BO LOAD3 YES, SKIP USE COUNT CODE @V1D1705 00418000
- IC XRE,LINKCNT GET USE COUNT @V1D1705 00419000
- LA XRE,1(0,XRE) INCREASE IT @V1D1705 00420000
- STC XRE,LINKCNT SAVE IT @V1D1705 00421000
- ST XR0,LINKENT SET ENTRY ADDRESS IN LOAD BLOCK @V1D1705 00422000
- LOAD3 ST XR0,EGPR0 SET ANSWER REG @V1D1705 00423000
- L XRE,OSTEMP @V1D1705 00424000
- BR 14 RETURN TO SVCINT @V1D1705 00425000
- SPACE 1 00426000
- EJECT 00427000
- * RELEASE A LOAD MODULE - DELETE, SVC 9 00428000
- DMSSLN9 EQU * DELETE A PHASE, SVC 9 @V1D1705 00429000
- USING DMSSLN9,12 SET TEMPORARY ADDRESSABLIITY@V1D1705 00430000
- L XRC,BASED @V1D1705 00431000
- USING DMSSLN7,12 @V1D1705 00432000
- BAL XRA,LODREG @V1D1705 00433000
- TM OSSFLAGS,COMPSWT CMS MODULES @V1D1705 00434000
- BO DEL1 YES, DELETE TREATED AS NOP @V1D1705 00435000
- L XRF,EGPR0 SET R15 FOR SCAN @V1D1705 00436000
- LA XRA,DELABEND IN CASE NOT FOUND IN CORE @V1D1705 00437000
- BAL XR8,SCAN LOOK FOR PHASE ON LOAD LIST @V1D1705 00438000
- SR XR8,XR8 CLEAR FOR IC @V1D1705 00439000
- IC XR8,LINKCNT GET USE COUNT @V1D1705 00440000
- BCT XR8,DEL5 DECREMENT, BRANCH IF NOT ZERO @V1D1705 00441000
- LA XRA,DEL2 @V1D1705 00442000
- DEL6 L XR0,LINKBYTE LENGTH OF PHASE AREA @V1D1705 00443000
- LTR XR0,XR0 DOES PHASE OCCUPY STOR. @V1D1705 00444000
- BCR 8,XRA RETURN IF NOT @V1D1705 00445000
- L XR1,LINKAREA ADDR OF PHASE AREA @V1D1705 00446000
- FREEMAIN R,LV=(0),A=(1) RETURN STORAGE @V1D1705 00447000
- BR XRA RETURN TO CALLING SECTION @V1D1705 00448000
- DEL2 LA XR3,LINKSTRT FIND PREVIOUS LRB @V1D1705 00449000
- DEL4 C XR7,0(XR3) THIS LRB POINT TO CURRENT LRB @V1D1705 00450000
- BE DEL3 YES, FOUND IT @V1D1705 00451000
- L XR3,0(XR3) NEXT LRB ON CHAIN @V1D1705 00452000
- B DEL4 @V1D1705 00453000
- DEL3 LR XR1,XR7 @V1D1705 00454000
- L XR7,LINKPTR NEXT LRB @V1D1705 00455000
- LA XR0,SAVLEN/8 FREE LOAD BLOCK @V1D1705 00456000
- DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @V1D1705 00457000
- ST XR7,0(XR3) RECONNECT CHAIN @V1D1705 00458000
- DEL1 EQU * @V1D1705 00459000
- SR XRF,XRF CLEAR ERROR CODE @V1D1705 00460000
- DEL7 ST XRF,EGPR15 SET RETURN CODE FOR USER @VA02371 00461000
- DEL7A DS 0H @VA03007 00462000
- NI OSSFLAGS,255-DYLD-DYLIBO-DYMBRNM CLEAR DYMAMIC @VA02371 00463000
- L XRE,OSTEMP @V1D1705 00464000
- BR 14 RETURN TO SVC @V1D1705 00465000
- DEL5 STC XR8,LINKCNT SET USE COUNT @V1D1705 00466000
- B DEL1 RETURN @V1D1705 00467000
- DELABEND LA XRF,4 SET DELETE RETURN CODE @V1D1705 00468000
- B DEL7 EXIT @V1D1705 00469000
- EJECT 00470000
- * 00471000
- * INITIALIZE PROGRAM REGISTERS 00472000
- * 00473000
- LODREG OI OSSFLAGS,DYLD+OSRESET SET FLAGS @V1D1705 00474000
- L XR7,LINKLAST V(LAST LINKAGE CHAIN BLOCK) @V1D1705 00475000
- L XRD,CURRSAVE POINT TO SYSTEM SAVE ARE@V1D1705 00476000
- ST XRE,OSTEMP SAVE RETURN REG @V1D1705 00477000
- BR 10 @V1D1705 00478000
- SPACE 3 00479000
- SPACE 3 00480000
- EJECT 00481000
- * 00482000
- * EXECUTE CMS LOADMOD OF A MODULE PHASE 00483000
- * 00484000
- LODMOD MVC LINKNAM(8),0(XRF) PHASE NAME TO LINK BLOCK @V1D1705 00485000
- LA XR8,INCORE2 IN CASE FOUND @V1D1705 00486000
- BAL XRA,SCAN LOOK FOR PHASE ON LOAD RB CHAIN @V1D1705 00487000
- LODMOD1 L XRB,ASVCSECT @V1D1705 00488000
- MVC DUMCOM(8),0(XRF) MOVE PHASE NAME TO LOAD PLIST@V1D1705 00489000
- LA XR1,MODLIST @V1D1705 00490000
- L XRD,USAVEPTR SAVE AREA FOR DMSMOD @V1D1705 00491000
- USING FREEST,XRD @V305665 00492000
- L XRA,AFVS ADDR. OF FVSECT @V305665 00493000
- USING FVSECT,XRA @V305665 00494000
- MVC DSKLIN(44),DSKLIS MOVE PARAMETER LIST @V305665 00495000
- MVC DSKLIN+8(8),8(XR1) MOVE MODULE NAME TO PLIST @V305665 00496000
- LA XR1,DSKLIN SET PLIST REGISTER @V305665 00497000
- SR XR9,XR9 AVOID POSSIBLE FRET ERROR @VA06348 00498000
- L XRF,ASTATE CHECK FOR FILE @V305665 00499000
- BALR XRE,XRF @V305665 00500000
- BNZ LMODSTER STATE ERROR @V305665 00501000
- L XR1,28(,XR1) GET A(FST COPY) @V305665 00502000
- MVC DSKLIN+24(2),24(XR1) SET MODE IN PLIST @V305665 00503000
- LA XR0,TEN GET AN INPUT BUFFER @V305066 00504000
- DMSFREE DWORDS=(0),TYPCALL=BALR @V305665 00505000
- LR XR9,XR1 USE R9 AS BUFFER ADDR @V305665 00506000
- ST XR9,DSKLIN+28 SET IN PLIST @V305665 00507000
- LA XR1,DSKLIN ADDR OF READ PLIST @V305665 00508000
- L XRF,ARDBUF READ FIRST RECORD @V305665 00509000
- BALR XRE,XRF @V305665 00510000
- BNZ ERR104S ERROR @V305665 00511000
- L XR6,0(XR9) GET STARTING ADDR OF MOD @V305665 00512000
- LM XR3,XR4,4(XR9) GET 1ST AND LAST LOCATIONS @V305665 00513000
- TM SUBFLAG,SUBACT IS IT ACTIVE? @V305665 00514000
- BZ SUBOK BRANCH IF NOT @V305665 00515000
- C XR3,AUSRAREA COMPARE LOAD LOC WITH USER @V305665 00516000
- BL SUBOK OK IF LOADING BELOW USER @V305665 00517000
- LA XRF,THIRTY2 WOULD OVERLAY VALID TEXT @V305066 00518000
- B EXITA @V305665 00519000
- LMODSTER EQU * @V305665 00520000
- CH XRF,=H'28' FILE NOT FOUND? @V305665 00521000
- BE ERR002E BRANCH IF YES @V305665 00522000
- B EXITA @V305665 00523000
- SUBOK EQU * @V305665 00524000
- CLM XR3,LOW3,ADTRANS PUT MODULE IN TRANS? @V305665 00525000
- BNE STR6 BRANCH IF NOT @V305665 00526000
- MVC LASTTMOD,DSKLIN+8 REMEMBER MODULE @V305665 00527000
- ST XR6,STRTADDR SET STARTING ADDRESS @VA14326 00527500
- B LM34 @V305665 00528000
- STR6 EQU * @V305665 00529000
- C XR4,FREELOWE WILL FREE STOR BE OVERLAID @V305665 00530000
- BH ERR109S BRANCH IF YES @V305665 00531000
- MVC LASTLMOD,DSKLIN+8 REMEMBER MODULE @V305665 00532000
- ST XR6,STRTADDR SET STARTING ADRESS @V305665 00533000
- MVC LOCCNT(4),LOCCNT-STRTADDR(XR9) SET LOCATIONS @V305665 00534000
- LH XR8,TBENT-STRTADDR(XR9) LDR TABLE COUNT @V305665 00535000
- LTR XR8,XR8 IS IT ZERO (NO MAP)? @V305665 00536000
- BZ NOCOUNT BRANCH IF YES @V305665 00537000
- STH XR8,TBENT SET NEW COUNT @V305665 00538000
- SR XR0,XR0 GET NUM OF LDRTBL PAGES @V305665 00539000
- IC XR0,ALDRTBLS FROM LEFT-MOST BYTE @V305665 00540000
- MH XR0,=H'204' X 204 (204 ENTRIES/PAGE) @V305665 00541000
- CR XR8,XR0 @V305665 00542000
- BH ERR116S REFERENCE TABLE OVERFLOW @V305665 00543000
- NOCOUNT EQU * @V305665 00544000
- OI LDRFLAGS,HEX04 SET NOERASE FOR LOAD MAP @V305066 00545000
- LM34 EQU * @V305665 00546000
- MVC FRSTLOC(8),FRSTLOC-STRTADDR(XR9) SET LOCATIONS @V305665 00547000
- L XR5,F65535 MAX SIZE FOR RDBUF @V305665 00548000
- SR XR4,XR3 GET LENGTH OF TEXT @V305665 00549000
- RLOOP EQU * @V305665 00550000
- STM XR3,XR4,DSKLIN+28 ADDR AND LNTH IN PLIST @V305665 00551000
- CR XR4,XR5 TOO BIG FOR RDBUF? @V305665 00552000
- BNH OKR BRANCH IF NOT @V305665 00553000
- ST XR5,DSKLIN+32 IF TOO BIG SUBSTITUTE MAX @V305665 00554000
- OKR EQU * @V305665 00555000
- L XRF,ARDBUF READ IN SOME TEXT @V305665 00556000
- BALR XRE,XRF @V305665 00557000
- BNZ ERR104S BRANCH IF ERROR @V305665 00558000
- AR XR3,XR5 INCREMENT STARTING ADDRESS @V305665 00559000
- SR XR4,XR5 REMAINING COUNT @V305665 00560000
- BP RLOOP LOOP IF MORE @V305665 00561000
- LH XR4,TBENT-STRTADDR(XR9) NUM OF LOADER TBL ENT @V305665 00562000
- MH XR4,=H'20' MULTIPLY BY 20 @V305665 00563000
- LTR XR4,XR4 ANY LOADER TABLES? @V305665 00564000
- BZ CHKSTR BRANCH IF NOT @V305665 00565000
- L XR3,ALDRTBLS TOP OF LOADER TABLES @V305665 00566000
- LA XR3,0(,XR3) CLEAR HIGH BYTE @V305665 00567000
- SR XR3,XR4 GET STORAGE LOADER LOC @V305665 00568000
- STM XR3,XR4,DSKLIN+28 SET PLIST @V305665 00569000
- L XRF,ARDBUF @V305665 00570000
- BALR XRE,XRF READ IN LDR TABLES @V305665 00571000
- N XRF,=A(X'FFFFF7') ALLOW ONLY 0 OR 8 @V305665 00572000
- BNZ ERR104S READ ERROR @V305665 00573000
- CHKSTR EQU * @V305665 00574000
- TM LDRFLAGS+1-STRTADDR(XR9),X'80' STRINIT? @V305665 00575000
- BNO CHKSYS BRANCH IF NOT @V305665 00576000
- L XRF,=V(DMSSMNSB) STORAGE INIT. ROUTINE @V305665 00577000
- BALR XRE,XRF @V305665 00578000
- CHKSYS EQU * @V305665 00579000
- L XR3,4(XR9) GET FIST LOCATION @V305665 00580000
- CLM XR3,LOW3,ADTRANS TRANSIENT AREA? @V305665 00581000
- LA XR1,PRFUSYS XR1 <- USER SYSTEM BIT @V305665 00582000
- BNE CHKSYSA SKIP IF USER ROUTINE @V305665 00583000
- LA XR1,PRFTSYS XR1 <- TRANSIENT SYSTEM BIT @V305665 00584000
- CHKSYSA EQU * @V305665 00585000
- EX XR1,CHKSYSO TURN ON SYSTEM FLAG @V305665 00586000
- TM LDRFLAGS-STRTADDR(XR9),SYSTEM IS IT SYSTEM MOD? @V305665 00587000
- BO FINMOD SKIP IF SO @VA09429 00588000
- EX XR1,CHKSYSX IF NOT, RESET FLAG @VA09429 00589000
- B FINMOD @V305665 00590000
- CHKSYSO OI PROTFLAG,BINZERO BIT FILLED IN BY EX @V305066 00591000
- CHKSYSX XI PROTFLAG,BINZERO BIT FILLED IN BY EX @V305066 00592000
- FINMOD EQU * @V305665 00593000
- LA XR1,DSKLIN PLIST FOR FINIS @V305665 00594000
- L XRF,AFINIS @V305665 00595000
- BALR XRE,XRF FINIS FILE @V305665 00596000
- BNZ ERR105S BRANCH IF ERROR @V305665 00597000
- EXITA EQU * @V305665 00598000
- LTR XR1,XR9 WAS A BUFFER ACQUIRED? @V305665 00599000
- BZ EXIT1 BRANCH IF NOT @V305665 00600000
- LR XR5,XRF PROTECT RETURN CODE @V305665 00601000
- LA XR0,TEN SIZE OF BUFFER @V305066 00602000
- DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @V305665 00603000
- LR XRF,XR5 RESTORE RETURN CODE @V305665 00604000
- EXIT1 EQU * @V305665 00605000
- LR XRE,XRB @V305665 00606000
- LM XR3,XR4,FRSTLOC FIRST AND LAST LOCATIONS @V305665 00607000
- L XR7,LINKLAST RESTORE SOME REGS @V1D1705 00608000
- L XRD,CURRSAVE @V1D1705 00609000
- LTR XRF,XRF ANY ERRORS @V1D1705 00610000
- BZ DEFENT SET ENTRY POINT AND EXIT @V1D1705 00611000
- ABEND 341 TERMINATE @V1D1705 00612000
- EJECT 1 00613000
- ERR002E EQU * @V305665 00614000
- LA XR2,DSKLIN+8 ADDR OF FILE NAME @V305665 00615000
- DMSERR TEXT='FILE ........ MODULE NOT FOUND', @V305665X00616000
- LET=E,NUM=2,SUB=(CHARA,(XR2)) @V305665 00617000
- LA XRF,TWENTY8 SET ERROR CODE @V305066 00618000
- B EXITA AND RETURN @V305665 00619000
- SPACE 1 00620000
- ERR104S EQU * @V305665 00621000
- LR XR3,XRF SAVE RETURN CODE @V305665 00622000
- LA XR2,DSKLIN+8 ADDR OF FILE NAME @V305665 00623000
- DMSERR TEXT=('ERROR ''..'' READING FILE ', @V305665X00624000
- '''....................'' FROM DISK'), @V305665X00625000
- NUM=104,LET=S,MF=(E,MSG), @V305665X00626000
- SUB=(DEC,(XR3),CHAR8A,(XR2)) @V305665 00627000
- LA XRF,HUNDRED SET RETURN CODE @V305066 00628000
- B EXITA AND EXIT @V305665 00629000
- SPACE 1 00630000
- ERR105S EQU * @V305665 00631000
- LR XR3,XRF SAVE RETURN CODE @V305665 00632000
- LA XR2,DSKLIN+8 ADDR OF FILE NAME @V305665 00633000
- DMSERR TEXT=('ERROR ''..'' WRITING FILE ', @V305665X00634000
- '''....................'' ON DISK'), @V305665X00635000
- NUM=105,LET=S,MF=(E,MSG), @V305665X00636000
- SUB=(DEC,(XR3),CHAR8A,(XR2)) @V305665 00637000
- LA XRF,HUNDRED SET RETURN CODE @V305066 00638000
- B EXITA AND RETURN @V305665 00639000
- SPACE 1 00640000
- ERR109S EQU * @V305665 00641000
- DMSERR TEXT='STORAGE EXCEEDED',LET=S,NUM=109 @V305665 00642000
- LA XRF,HUNDRED4 SET ERROR CODE @V305066 00643000
- B EXITA AND RETURN @V305665 00644000
- SPACE 1 00645000
- ERR116S EQU * @V305665 00646000
- DMSERR TEXT='LOADER TABLE OVERFLOW',LET=S,NUM=116 @V305665 00647000
- LA XRF,HUNDRED4 SET ERROR CODE @V305066 00648000
- B EXITA AND RETURN @V305665 00649000
- EJECT 00650000
- XR0 EQU 0 @V1D1705 00651000
- XR1 EQU 1 @V1D1705 00652000
- XR2 EQU 2 @V1D1705 00653000
- XR3 EQU 3 @V1D1705 00654000
- XR4 EQU 4 @V1D1705 00655000
- XR5 EQU 5 @V1D1705 00656000
- XR6 EQU 6 @V1D1705 00657000
- XR7 EQU 7 @V1D1705 00658000
- XR8 EQU 8 @V1D1705 00659000
- XR9 EQU 9 @V1D1705 00660000
- XRA EQU 10 @V1D1705 00661000
- XRB EQU 11 @V1D1705 00662000
- XRC EQU 12 @V1D1705 00663000
- XRD EQU 13 @V1D1705 00664000
- XRE EQU 14 @V1D1705 00665000
- XRF EQU 15 @V1D1705 00666000
- DROP XRA @V305665 00667000
- EJECT 00668000
- *************************************************************** 00669000
- * 00670000
- * 'RESIDENT' 00671000
- * TESTS IF THE CALLED ROUTINE IS ELEMENT OF A 'CORE RESIDENT RO 00672000
- * LIST', IF SO BRANCHES TO IT. 00673000
- * 00674000
- *************************************************************** 00675000
- RESIDENT EQU * @V1D1705 00676000
- USING SSAVE,XRD @V1D1705 00677000
- L XRD,CURRSAVE POINT TO SYSTEM SAVE ARE@V1D1705 00678000
- L XRD,USAVEPTR POINT TO USER SAVE AREA @V1D1705 00679000
- STM XR8,XRB,0(XRD) SAVE SOME REGS @V1D1705 00680000
- L XRD,CURRSAVE POINT TO SYSTEM SAVE ARE@V1D1705 00681000
- LA 9,ROUTABLE ORIGIN OF CORE RESIDENT ROUTINES@V1D1705 00682000
- LA XRA,12 GET TABLE INCREMENT @V1D1705 00683000
- LA 11,ROUTEND END OF THE CORE RESIDENT ROUTINE@V1D1705 00684000
- SR 11,10 @V1D1705 00685000
- L 8,EGPR15 R8 POINTS TO THE NAME @V1D1705 00686000
- L 8,0(,8) OF THE CALLED ROUTINE @V1D1705 00687000
- SUIT01 CLC 0(8,9),0(8) @V1D1705 00688000
- BE SUIT02 THE CALLED ROUTINE IS ON THE LIS@V1D1705 00689000
- BXLE 9,10,SUIT01 @V1D1705 00690000
- L XR8,USAVEPTR POINT TO USER SAVE AREA @V1D1705 00691000
- LM XR8,XRB,0(XR8) RESTORE REGS @V1D1705 00692000
- LA XRD,EGPRS REPOINT TO XRD TO EGPRS @V1D1705 00693000
- BR 10 PROBABLY ON DISK. @V1D1705 00694000
- * 00695000
- SUIT02 LA 9,8(,9) @V1D1705 00696000
- L 12,0(,9) LOAD ROUTINE ADDRESS IN REGISTER @V1D1705 00697000
- LM XR0,XR8,EGPRS @V1D1705 00698000
- LA XRD,EGPRS @V1D1705 00699000
- BR 12 @V1D1705 00700000
- * 00701000
- * TRANSFERT WITH RETURN (TO SVCINT) IN R14,SAVE AREA(USED BY SV 00702000
- * IN R13,BASE IN R12.R15 TO R11, THE CONTENTS THAT EXISTED BEFO 00703000
- * THE OS SVC WAS EXECUTED. 00704000
- * THE ROUTINE IS ENTERED WITH REGISTERS SET AS IF IT HAS BEEN C 00705000
- * DIRECTLY VIA AN OS SVC INSTEAD OF BEING 'LINK-ED'. 00706000
- * 00707000
- EJECT 00708000
- *************************************************************** 00709000
- * 00710000
- * GETPOOL OS MACRO INSTRUCTION 00711000
- * **************************** 00712000
- *GETPOOL ROUTINE IS ENTERED VIA AN LINK SVC WHEN USER ISSUES 00713000
- * A GETPOOL MACRO.THE ROUTINE GETS CORE AND BUILD THE POOL 00714000
- * OF BUFFERS. 00715000
- *ENTRY POINT BY LINK TO IECQBFG1 00716000
- *INPUT REGISTER 13 USER SAVE AREA ADDRESS 00717000
- * REGISTER 14 RETURN ADDRESS 00718000
- * REGISTER 12 IECQBFG1 FIRST LOCATION ADDRESS 00719000
- * REGISTER 1 DCB ADDRESS FOR POOL ASSIGNMENT 00720000
- * +22 NUMBER OF BUFFERS REQUESTED 00721000
- * +24 LENGTH OF BUFFERS REQUESTED 00722000
- *OUTPUT NUMBER AND ADDRESS OF BUILT BUFFERS IN DCB BUFNO AND BU 00723000
- * EXITS NORMAL RETURN ON REGISTER 14 TO CALLER. NUMBER AND ADDR 00724000
- * BUILT BUFFERS IN DCB BUFNO AND BUFCB 00725000
- *EXITS ERRORS RETURN ON REGISTER 14 TO CALLER.NO BUFFERS BUILT. 00726000
- * FORCE OPEN TO BUILD BUFFERS SINCE USER SPECIFIED 0 BUFFER 00727000
- * NUMBER OR LENGTH 00728000
- * 00729000
- *************************************************************** 00730000
- USING IECQBFG1,12 @V1D1705 00731000
- IECQBFG1 EQU * @V1D1705 00732000
- LPR DCBR,BUFPTR (R1 MIGHT BE COMPLEMENTED) @V1D1705 00733000
- LH BUFNOR,22(,DCBR) PLACE NUMBER OF BUFFERS IN R@V1D1705 00734000
- LH LBUFLR,24(,DCBR) PLACE LENGTH OF BUFFERS IN R@V1D1705 00735000
- LTR BUFNOR,BUFNOR Q. ZERO NUMBER REQUESTED. @V1D1705 00736000
- BZ RETURNA YES,RETURN @V1D1705 00737000
- LTR LBUFLR,LBUFLR Q. ZERO LENGTH REQUESTED. @V1D1705 00738000
- BZ RETURNA YES, RETURN @V1D1705 00739000
- LA LBUFLR,7(,LBUFLR) ROUND LENGTH. @V1D1705 00740000
- SRL LBUFLR,3 TO MULTIPLE @V1D1705 00741000
- SLL LBUFLR,3 OF EIGHT. @V1D1705 00742000
- LR BUFPTR,LBUFLR ROUNDED LENGTH TIMES @V1D1705 00743000
- MR BUFPAR,BUFNOR NUMBER FOR TOTAL LENGTH @V1D1705 00744000
- TM 32(DCBR),1 Q.FULL WORD ALIGNMENT SPECIFIED @V1D1705 00745000
- BO POOL1 YES @V1D1705 00746000
- LA BUFPAR,8(,BUFPTR) NO, ADD 8 TO LGN FOR BCB @V1D1705 00747000
- B POOL2 @V1D1705 00748000
- POOL1 LA BUFPAR,16(,BUFPTR) YES, ADD 16 FOR BCB AND ALIG@V1D1705 00749000
- POOL2 GETMAIN R,LV=(0) OBTAIN CORE @V1D1705 00750000
- ST BUFPTR,20(,DCBR) PLACE BUFCB IN DCB @V1D1705 00751000
- STC BUFNOR,20(,DCBR) PLACE BUFNO IN DCB @V1D1705 00752000
- TM 32(DCBR),1 Q. FULL WORD ALIGNMENT SPECIFIED @V1D1705 00753000
- BO POOL3 YES @V1D1705 00754000
- LA BUFPAR,8(,BUFPTR) NO,DETERMINE BCB LINK ADDR @V1D1705 00755000
- B POOL4 @V1D1705 00756000
- POOL3 LA BUFPAR,12(,BUFPTR) YES,LINK ADDR AROUND ALIGN P@V1D1705 00757000
- POOL4 ST BUFPAR,0(,BUFPTR) PLACE LINK ADDR IN BCB @V1D1705 00758000
- STH LBUFLR,6(,BUFPTR) PLACE LENGTH IN BCB @V1D1705 00759000
- STH BUFNOR,4(,BUFPTR) PLACE NUMBER IN BCB @V1D1705 00760000
- POOLLOOP LR BUFPTR,BUFPAR UPDATE BUFFER ADDRESS POINTER @V1D1705 00761000
- BCT BUFNOR,LOOP Q.ALL BUFFERS BUILT @V1D1705 00762000
- XC 0(4,BUFPTR),0(BUFPTR) CLEAR BUFFER LINK ADDRES@V1D1705 00763000
- RETURNA BR 14 RETURN TO CALLER @V1D1705 00764000
- LOOP LA BUFPAR,0(3,BUFPTR) NO,CALCULATE NEXT BUFFER ADD@V1D1705 00765000
- ST BUFPAR,0(,BUFPTR) STORE BUFFER LINK ADDRESS @V1D1705 00766000
- BC 15,POOLLOOP BUILD NEXT BUFFER @V1D1705 00767000
- SPACE 1 00768000
- BUFPAR EQU 0 @V1D1705 00769000
- BUFPTR EQU 1 @V1D1705 00770000
- BUFNOR EQU 2 @V1D1705 00771000
- LBUFLR EQU 3 @V1D1705 00772000
- DCBR EQU 4 @V1D1705 00773000
- * SOME NICE CONSTANTS AND EQUATES 00774000
- * 00775000
- SPACE 1 00776000
- DS 0D @V1D1705 00777000
- BASED DC A(DMSSLN7) @V1D1705 00778000
- * 00779000
- * TABLE OF CORE-RESIDENT ROUNTINES 00780000
- * CL8'*NAME*', A(CORE LOCATION) 00781000
- * 00782000
- ROUTABLE DS 0F BEGGINING OF TABLE @V1D1705 00783000
- DC CL8'IECQBFG1',A(IECQBFG1) @V1D1705 00784000
- ROUTEND DS 0F END OF TABLE @V1D1705 00785000
- * 00786000
- GETMASK DC X'00FFFFF8' @V1D1705 00787000
- * 00788000
- * 00789000
- WLIST DS 0X STOCK VOCABULARY @V1D1705 00790000
- DC CL8'(' @V1D1705 00791000
- DC CL8'RESET' @V1D1705 00792000
- DC CL8'*' @V1D1705 00793000
- DC 8X'FF' @V1D1705 00794000
- GETCONST DC F'16' MINIMUM GETMAIN STOR. @V1D1705 00795000
- DC X'00F00000' MAXIMUM @V1D1705 00796000
- LOW3 EQU 7 MASK FOR 2-4 BYTES @V305665 00797000
- SYSTEM EQU X'01' @V305665 00798000
- TEN EQU 10 @V305066 00799000
- THIRTY2 EQU 32 @V305066 00800000
- HEX04 EQU X'04' @V305066 00801000
- BINZERO EQU X'00' @V305066 00802000
- TWENTY8 EQU 28 @V305066 00803000
- HUNDRED EQU 100 @V305066 00804000
- HUNDRED4 EQU 104 @V305066 00805000
- SPACE 2 00806000
- DSKLIS EQU *-8 @V305665 00807000
- DC X'FF',7X'40' SET FOR DEFAULT FNAME @V305665 00808000
- DC CL8'MODULE' FTYPE @V305665 00809000
- DC CL2'* ' FMODE @V305665 00810000
- DC H'0' ITEM NUMBER @V305665 00811000
- DC F'0' BUFFER ADDRESS @V305665 00812000
- DC A(80) LENGTH OF FIRST RECORD @V305665 00813000
- DC CL2'V ' VARIABLE LENGTH FILE @V305665 00814000
- DC H'1' NO. OF ITEMS @V305665 00815000
- DC F'0' NO. OF BYTES READ @V305665 00816000
- SPACE 2 00817000
- LTORG @V1D1705 00818000
- * 00819000
- * SOME DUMMIES FOLLOW .... 00820000
- * 00821000
- SPACE 1 00822000
- * BASE=XR9=A(12+XRD OF CALLER OS SAVEAREA) 00823000
- DYNALIST DSECT @V1D1705 00824000
- DS 3F @V1D1705 00825000
- LOADLST DS CL8 INCLUDE @V305665 00826000
- LDNAME DS CL8 "*NAME*" @V1D1705 00827000
- DS 8F @V1D1705 00828000
- FREEST DSECT @V305665 00829000
- BUFF DS 2F @V305665 00830000
- DSKLIN DS 11F @V305665 00831000
- MSG DMSERR MF=L,MAXSUBS=2 @V305665 00832000
- EJECT 00833000
- SPACE 3 00834000
- SLOAD EQU 8 @V1D1705 00835000
- LINKBLK DSECT @V1D1705 00836000
- LINKPTR DS 1F POINTER TO NEXT LINK BLOCK @V1D1705 00837000
- LINKAREA DS 1F PHASE STORAGE AREA LOCATION @V1D1705 00838000
- LINKBYTE DS 1F LENGTH (BYTES) OF PHASE AREA @V1D1705 00839000
- LINKNAM DS 2F PHASE NAME @V1D1705 00840000
- SAVPSW DS 2F OLD SVC PSW FOR LINK @V1D1705 00841000
- LINKENT DS 1F ENTRY LOCATION OF PHASE @V1D1705 00842000
- LINKCNT DS 2X USE COUNT - LOAD RB @V1D1705 00843000
- SVAREA DS 19F SAVE AREA FOR ATTACHEE @V1D1705 00844000
- SAVR13 DS 1F @V1D1705 00845000
- SAVR15 DS 1F @V1D1705 00846000
- DS 0D @V1D1705 00847000
- SAVLEN EQU (*-LINKBLK) BLOCK LENGTH @V1D1705 00848000
- SPACE 3 @VA04980 00849000
- LDRSECT DSECT LOADER TABLE ENTRY @VA04980 00850000
- LDRNAME DS 2F LOADED TEXT NAME @VA04980 00851000
- LDRRELO DS F RELOCATION FACTOR @VA04980 00852000
- LDRADD DS F ASSIGNED ADDRESS @VA04980 00853000
- LDRFLG2 DS F @VA04980 00854000
- LDRENT EQU *-LDRNAME @VA04980 00855000
- EJECT 00856000
- PGMSECT @V1D1705 00857000
- SPACE 3 00858000
- NUCON @V1D1705 00859000
- SPACE 3 00860000
- SVCSECT @V1D1705 00861000
- SPACE 3 00862000
- FVS @V305665 00863000
- CMSAVE @V1D1705 00864000
- EJECT 00865000
- END 00866000
ibm/vm370-lib/cms/dmssln.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator