ibm:vm370-lib:cms:dmsfet.assemble_src
Table of Contents
DMSFET Source
References
- Fixes Applied : 0
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [Unmodified]
Source Listing
- DMSFET.ASSEMBLE.txt
- FET TITLE 'DMSFET (CMS) VM/370 - RELEASE 6' 00001000
- SPACE 2 00002000
- *. 00003000
- * MODULE NAME 00004000
- * 00005000
- * DMSFET ( FETCH ) 00006000
- * 00007000
- * FUNCTION 00008000
- * 00009000
- * PROVIDE THE FACILITY TO BRING INTO STORAGE A 00010000
- * SPECIFIED PHASE FROM THE SYSTEM/PRIVATE CORE 00011000
- * IMAGE LIBRARY OR FROM A CMS 'DOSLIB' LIBRARY. 00012000
- * ALSO, TO START EXECUTION OF THE PHASE, IF THE 00013000
- * START OPTION WAS SPECIFIED. IF 'START' WAS NOT 00014000
- * SPECIFIED, TO INFORM THE USER WHERE THE PHASE 00015000
- * ENTRY POINT IS. 00016000
- * 00017000
- * ATTRIBUTES 00018000
- * 00019000
- * NUCLEUS RESIDENT MODULE 00020000
- * REENTRANT 00021000
- * 00022000
- * ENTRY POINTS 00023000
- * 00024000
- * DMSFET 00025000
- * 00026000
- * ENTRY CONDITIONS 00027000
- * 00028000
- * R1 = PARAMETER LIST 00029000
- * 00030000
- * DC CL8'FETCH' COMMAND 00031000
- * DC CL8'PHASENM' NAME OF PHASE TO FETCH 00032000
- * DC CL8'(' BEGIN OF OPTIONS IF ANY 00033000
- * DC CL8'START' | 'ORIGIN' ADDRESS | 'COMP' | 'INSTAL' 00034000
- * 00035000
- * OPTIONS 00036000
- * 00037000
- * START - START EXECUTING THE PHASE IMMEDIATELY 00038000
- * AFTER LOADED. 00039000
- * 00040000
- * ORIGIN - SPECIFIES WHERE IN THE VIRTUAL PARTITION 00041000
- * THE USER WANTS THE PHASE LOADED. 00042000
- * 00043000
- * COMP - SET A SWITCH IN 'DOSFLAGS' SO THAT WHEN 00044000
- * THE PHASE IS GIVEN CONTROL, REGISTER 1 00045000
- * CONTAINS THE ADDRESS OF ITS ENTRY POINT. 00046000
- * 00047000
- * INSTAL - SET A SWITCH IN 'DOSFLAGS' SO THAT WHEN 00048000
- * THE SPECIFIED VSAM SEGMENT PHASE TABLE 00049000
- * IS LOADED, ALL OF THE REFERENCED PHASES 00050000
- * IN THE SEGMENT TABLE WILL BE LOADED AS 00051000
- * PART OF THE SEGMENT. 00052000
- * 00053000
- * EXIT CONDITIONS 00054000
- * 00055000
- * RETURN TO CALLER WITH RETURN CODE IN R15 00056000
- * 00057000
- * RETURN CODES AND MESSAGES: 00058000
- * 00059000
- * 0 - PHASE ENTRY POINT AT LOCATION XXXXXX 00060000
- * 24 - NO PHASE NAME SPECIFIED 00061000
- * 24 - INVALID OPTION SPECIFIED 00062000
- * 24 - INVALID PARAMETER SPECIFIED 00063000
- * 24 - INVALID PARAMETER IN ORIGIN OPTION 00064000
- * 28 - SPECIFIED PHASE NOT FOUND 00065000
- * 32 - CMS/DOS ENVIRONMENT NOT ACTIVE 00066000
- * 00067000
- * CALLS TO OTHER ROUTINES 00068000
- * 00069000
- * DMSSMN, DMSFCH, DMSFLD, DMSDOS 00070000
- * DMSFRE, DMSLDR, DMSERR 00071000
- * 00072000
- * EXTERNAL REFERENCES 00073000
- * 00074000
- * NUCON, BGCOM 00075000
- * 00076000
- * TABLES/WORK AREAS 00077000
- * 00078000
- * LDRTBLS 00079000
- * 00080000
- * REGISTER USAGE 00081000
- * 00082000
- * R0 NUCON ADDRESSABILITY 00083000
- * R1 COMMAND LINE POINTER & PLIST(S) POINTER 00084000
- * R2 WORK 00085000
- * R3 CONTAINS INTERNAL FLAGS 00086000
- * R4 RETURN REGISTER SAVE 00087000
- * R5 WORK 00088000
- * R6 WORK 00089000
- * R7 CONTAINS ORIGIN ADDRESS 00090000
- * R8 NOT USED 00091000
- * R9 NOT USED 00092000
- * R10 NOT USED 00093000
- * R11 NOT USED 00094000
- * R12 DMSFET ADDRESSABILITY 00095000
- * R13 NOT USED 00096000
- * R14 RETURN REGISTER 00097000
- * R15 RETURN CODE 00098000
- * 00099000
- * OPERATION 00100000
- * 00101000
- * 1. SET UP NECESSARY ADDRESSABILITIES AND SAVE 00102000
- * THE RETURN REGISTER. INITIALIZE THE DOSFLAGS 00103000
- * FIELD, AND VERIFY IF IN CMS/DOS ENVIRONMENT. 00104000
- * 00105000
- * 2. CHECK THE COMMAND LINE FOR VALID ARGUMENTS 00106000
- * AND OPTIONS. ENSURE THAT A PHASE NAME WAS 00107000
- * SPECIFIED. SET INTERNAL FLAG IF THE 'START' 00108000
- * OPTION WAS SPECIFIED. IF THE 'COMP' OPTION 00109000
- * WAS SPECIFIED, SET FLAG 'DOSCOMP' IN FLAG 00110000
- * BYTE 'DOSFLAGS' (DOSFLAGS IS IN NUCON). 00111000
- * IF THE 'ORIGIN' OPTION WAS SPECIFIED, THEN 00112000
- * CONVERT THE ADDRESS IN THE COMMAND LINE TO 00113000
- * A BINARY VALUE. IF THE 'INSTAL' OPTION WAS 00114000
- * SPECIFIED, SET FLAG 'VSMINSTL' IN THE FLAG 00115000
- * BYTE 'DOSFLAGS'. (DOSFLAGS IS IN NUCON). 00116000
- * 00117000
- * 3. INITIALIZE THE CMS'S ( USER AREA ) STORAGE 00118000
- * POINTERS. COMPUTE THE SIZE OF THE VIRTUAL 00119000
- * MACHINE AND ACQUIRE ALL STORAGE ( LESS SIX 00120000
- * PAGES FOR SYSTEM USE ). INITIALIZE LOCATION 00121000
- * 'PPEND' IN 'BGCOM' TO POINT TO THE END OF THE 00122000
- * USER'S VIRTUAL PARTITION. ALSO INITIALIZE THE 00123000
- * THE DATE FIELD IN 'BGCOM'. 00124000
- * 00125000
- * 4. ISSUE FILEDEF FOR THE 'DOSLIB' LIBRARIES, AND 00126000
- * ISSUE AN SVC 4 TO LET DMSFCH LOAD, AND IF NE- 00127000
- * CESSARY RELOCATE THE REQUESTED PHASE. ONCE THE 00128000
- * PHASE HAS BEEN LOADED, DMSFCH RETURNS THE ENTRY 00129000
- * POINT OF THE PHASE IN REGISTER 1. 00130000
- * 00131000
- * 5. A LOADER TABLE ENTRY ( NUMBER 3 ) IS SETUP TO 00132000
- * POINT AT THE PHASE JUST LOADED, SO DMSLDR CAN 00133000
- * NOW WHERE THE PHASE IS IN CORE. IF THE 'START' 00134000
- * WAS SPECIFIED, A PLIST IS BUILT TO CALL 'START' 00135000
- * (DMSLDR) AND BEGIN EXECUTING THE PHASE. 00136000
- * 00137000
- * 6. IF 'START' WAS NOT SPECIFIED, AN INFORMATION 00138000
- * MESSAGE IS ISSUED TO INFORM THE USER WHERE THE 00139000
- * ENTRY POINT OF THE PHASE IS. HE MAY SETUP ADDR. 00140000
- * STOPS OR BREAKPOINTS AND HE CAN START EXECUTING 00141000
- * THE PHASE BY ISSUING THE CMS 'START' COMMAND. 00142000
- * 00143000
- * 7. WHEN ALL PROCESSING HAS BEEN DONE, A RETURN TO 00144000
- * CALLER IS MADE PASSING BACK IN REGISTER 15 THE 00145000
- * RETURN CODE OF THE COMMAND. IF THE PHASE WAS 00146000
- * EXECUTED BY SPECIFYING THE 'START' OPTION, THE 00147000
- * RETURN CODE MAY BE THAT OF THE PHASE JUST RUN. 00148000
- *. 00149000
- EJECT 00150000
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00151000
- * * 00152000
- * IF THE CMS/DOS ENVIRONMENT IS NOT ACTIVE, DMSFET CAN * 00153000
- * NOT CONTINUE. THE PARAMETER LIST IS CHECKED FOR ERRORS. * 00154000
- * OPTIMUM PARAMETER LIST COULD BE: * 00155000
- * FETCH PHASENM ( START COMP ) . * 00156000
- * * 00157000
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00158000
- SPACE 2 00159000
- DMSFET CSECT @V305001 00160000
- USING NUCON,R0 @V305001 00161000
- USING DMSFET,R12 @V305001 00162000
- SR R3,R3 CLEAR FLAG REGISTER @V305001 00163000
- SR R7,R7 INITIALIZE ORIGIN @V305001 00164000
- LR R4,R14 SAVE RETURN REGISTER @V305001 00165000
- LR R12,R15 SET UP ADDRESSABILITY @V305001 00166000
- TM DOSFLAGS,DOSMODE+DOSSVC ARE WE IN DOS MODE ? @V305001 00167000
- BNO ERR99 NO, GIVE ERROR @V305001 00168000
- NI DOSFLAGS,255-(DOSCOMP+VSMINSTL) CLEAR 2 FLAGS @V305101 00169000
- MVI DOSRC,ZERO AND INITIALIZE RETURN CODE. @V305066 00170000
- * 00171000
- LA R1,8(,R1) BUMP PAST COMMAND NAME @V305001 00172000
- CLC 0(8,R1),FENCE ANY PHASE NAME SPECIFIED ? @V305001 00173000
- BE ERR1 NO, GIVE ERROR @V305001 00174000
- LR R2,R1 SAVE R1 TEMPORARILY @V305001 00175000
- LA R1,8(,R1) BUMP PAST PHASE NAME @V305001 00176000
- CLC 0(8,R1),FENCE ANY OPTIONS ? @V305001 00177000
- BE LINEOK NO, ASSUME NOSTART @V305001 00178000
- CLI 0(R1),LPAR BEGIN OPTIONS ? @V305001 00179000
- BNE ERR70 NO, GIVE ERROR @V305001 00180000
- LA R1,8(,R1) BUMP PAST LEFT PAREN @V305001 00181000
- OPTLUP CLC 0(8,R1),COMP COMP OPTION ? @V305001 00182000
- BNE CKINSTL NO, SEE IF INSTAL @V305101 00183000
- OI DOSFLAGS,DOSCOMP SET COMPILER SWITCH ON @V305001 00184000
- B OPTNXT SEE IF MORE OPTIONS @V305001 00185000
- CKINSTL CLC 0(8,R1),INSTAL INSTAL OPTION ? @V305101 00186000
- BNE CKORIG NO, SEE IF ORIGIN @V305101 00187000
- OI DOSFLAGS,VSMINSTL SET VSAM INSTAL SWITCH ON @V305101 00188000
- B OPTNXT SEE IF MORE OPTIONS @V305101 00189000
- CKORIG CLC 0(8,R1),ORIGIN ORIGIN OPTION ? @V305001 00190000
- BE ORGL1 YES, BRANCH @V305001 00191000
- CKSTRT CLC 0(8,R1),START START OPTION ? @V305001 00192000
- BNE ERR3 NO, GIVE ERROR @V305001 00193000
- LA R3,ONE SET START FLAG (ANY NON-ZERO VALUE) @V305066 00194000
- OPTNXT LA R1,8(,R1) BUMP PAST OPTION @V305001 00195000
- CLC 0(8,R1),FENCE THIS MUST BE END @V305001 00196000
- BE LINEOK YES, IT IS END @V305001 00197000
- CLI 0(R1),RPAR MAYBE IT IS RIGHT PARENS? @V305001 00198000
- BNE OPTLUP NO, CHECK NEW OPTION @V305001 00199000
- B LINEOK THIS IS THE END @V305001 00200000
- EJECT 00201000
- ORGL1 CLC 8(8,R1),FENCE ANY SPECIFIED ? @V305001 00202000
- BE ERR3 NO, GIVE ERROR @V305001 00203000
- CLI 8(R1),RPAR DITTO ? @V305001 00204000
- BE ERR3 SAME ERROR IF RIGHT PARENS @V305001 00205000
- LA R1,8(,R1) BUMP TO POSSIBLE ADDRESS @V305001 00206000
- LR R5,R1 POINT REG. 5 TO ADDRESS @V305001 00207000
- LR R6,R5 POINT REG. 6 TO ADDRESS @V305001 00208000
- SR R0,R0 INITIALIZE TO ZERO @V305001 00209000
- SR R7,R7 INITIALIZE TO ZERO @V305001 00210000
- ORGL2 CLI 0(R6),BLANK END OF ADDRESS ? @V305001 00211000
- BE ORGL3 YES, BRANCH @V305001 00212000
- LA R6,1(,R6) POINT TO NEXT CHAR. @V305001 00213000
- SR R6,R5 GET LENGTH SO FAR @V305001 00214000
- CH R6,=H'8' REACHED MAX ALLOWED ? @V305001 00215000
- BE ORGL4 YES, BRANCH THEN @V305001 00216000
- AR R6,R5 RESTORE ADDRESS POINT @V305001 00217000
- B ORGL2 LOOK AT NEXT CHAR. @V305001 00218000
- ORGL3 SR R6,R5 COMPUTE LENGTH FIELD @V305001 00219000
- ORGL4 CLI 0(R5),CHAR0 IS CHAR. ZERO ? @V305066 00220000
- BL ORGL6 IF LESS, CHECK FOR POSS. HEX @V305001 00221000
- CLI 0(R5),CHAR9 IS CHAR. NINE ? @V305066 00222000
- BH ERR4 IF HIGHER, THEN ERROR @V305001 00223000
- IC R7,0(0,R5) ISOLATE CHAR. @V305001 00224000
- SH R7,=X'00F0' CLEAR ZONE @V305001 00225000
- ORGL5 SLL R0,4 ... @V305001 00226000
- AR R0,R7 .. @V305001 00227000
- LA R5,1(,R5) BUMP TO NEXT CHAR. @V305001 00228000
- BCT R6,ORGL4 KEEP LOOKING @V305001 00229000
- LR R7,R0 BINARY ADDRESS IN REG. 7 @V305001 00230000
- LA R7,7(,R7) ROUND ADDRESS TO NEAREST @V305001 00231000
- N R7,=X'FFFFFFF8' DOUBLE WORD BOUNDARY @V305001 00232000
- C R7,AUSRAREA SEE IF ABOVE USER AREA @V305001 00233000
- BL ERR4 ERROR IF BELOW X'20000' @V305001 00234000
- B OPTNXT GO SEE IF MORE OPTIONS @V305001 00235000
- ORGL6 CLI 0(R5),CHARA SEE IF EBCDIC 'A' @V305066 00236000
- BL ERR4 IF LESS, THEN ERROR @V305001 00237000
- CLI 0(R5),CHARF SEE IF EBCDIC 'F' @V305066 00238000
- BH ERR4 IF HIGHER, THEN ERROR @V305001 00239000
- IC R7,0(0,R5) ISOLATE CHAR. @V305001 00240000
- SH R7,=X'00B7' SUBTRACT CONSTANT @V305001 00241000
- B ORGL5 KEEP LOOKING @V305001 00242000
- EJECT 00243000
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00244000
- * * 00245000
- * THE PHASE NAME SPECIFIED IN THE COMMAND LINE IS USED * 00246000
- * AS THE JOB NAME IN THE PARTITION COMM. REGION. A DOS * 00247000
- * SVC 34 (GETIME) IS ISSUED TO INITIALIZE THE DATE IN * 00248000
- * THE PARTITION COMM. REGION. A DOS SVC 4 (LOAD) IS * 00249000
- * ISSUED TO BRING THE REQUESTED PHASE INTO STORAGE. A * 00250000
- * THIRD LOADER TABLE ENTRY IS BUILT SO THAT START CAN * 00251000
- * BEGIN EXECUTION OF THE PHASE JUST LOADED. IF 'START' * 00252000
- * WAS SPECIFIED, AN SVC 202 TO START IS ISSUED, OTHER- * 00253000
- * WISE AN INFORMATION MESSAGE IS ISSUED SPECIFYING THE * 00254000
- * ENTRY ADDRESS OF THE PHASE JUST LOADED, AND A RETURN * 00255000
- * TO THE CALLER IS MADE. * 00256000
- * * 00257000
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00258000
- SPACE 2 00259000
- LINEOK L R1,ABGCOM GET BGCOM ADDRESS @V305001 00260000
- USING BGCOM,R1 @V305001 00261000
- MVC COMNAME,0(R2) SET UP JOB NAME @V305001 00262000
- DROP R1 @V305001 00263000
- * 00264000
- SVC 34 INITIALIZE BGCOM DATE @V305001 00265000
- NOPR 0 ... @V305001 00266000
- SPACE 1 00267000
- LA R1,FDOSL GET DOSLIB FILEDEF PLIST @V305001 00268000
- SVC 202 ISSUE FILEDEF FOR DOSLIBS @V305001 00269000
- L R1,ASYSCOM GET SYSTEM COMMUNICATIONS AREA @V305001 00270000
- USING SYSCOM,R1 @V305001 00271000
- L R1,IJBFTTAB GET FETCH TABLE ADDRESS @V305001 00272000
- DROP R1 @V305001 00273000
- USING FCHTAB,R1 @V305001 00274000
- XC FCHTAB(FCHLENG),FCHTAB ZERO ENTIRE AREA @V305001 00275000
- MVI DIRN,ELEVEN SET UP SHORT LENGTH @V305066 00276000
- MVC DIRNAME,0(R2) SET UP PHASE NAME @V305001 00277000
- LA R5,DIRNAME GET PHASE NAME ADDRESS @V305001 00278000
- ST R5,FCHAPHNM STORE IN LIST @V305001 00279000
- MVI FCHOPT,DACTIVE+NOTEXT SET FOR DE=YES, TXT=NO @V305066 00280000
- DROP R1 @V305001 00281000
- LR R0,R7 SET LOAD ADDRESS @V305001 00282000
- SVC 4 SEE IF PHASE EXISTS @V305001 00283000
- LR R1,R0 R0 TO USABLE REGISTER @V305001 00284000
- TM 16(R1),DACTIVE+PNOTFND PHASE FOUND ? @V305066 00285000
- BO ERR2 NO, ERROR MSG TO USER @V305001 00286000
- LR R0,R7 SET LOAD ADDRESS @V305001 00287000
- LR R1,R2 POINT TO PHASE NAME @V305001 00288000
- SVC 4 NOW LOAD THE REQUESTED PHASE @V305001 00289000
- TM DOSFLAGS,VSMINSTL IS THIS VASMGEND INSTAL ? @V305101 00290000
- BZ NOINSTL NO, CONTINUE BELOW... @V305101 00291000
- EJECT 00292000
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00293000
- * * 00294000
- * SPECIAL ROUTINE TO LOAD ALL PHASES WHICH ARE PART OF A * 00295000
- * VSAM OR AMS SEGMENT. WHEN INSTALLING VSAM OR AMS, THE * 00296000
- * INSTALLATION EXEC REQUEST THE LOADING OF THE FRONT END * 00297000
- * TABLE CONTAINING THE NAMES OF THE PHASES THAT COMPRISE * 00298000
- * THAT SPECIFIED SEGMENT. ONCE THE TABLE HAS BEEN LOADED, * 00299000
- * A SEARCH IS MADE THROUGH THE FRONT END TABLE, AND ALL * 00300000
- * PHASES REFERENCED IN THE TABLE ARE LOADED CONTIGUOUSLY * 00301000
- * BY REPETITIVE CALLS TO DMSFCH (VIA SVC 4). * 00302000
- * * 00303000
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00304000
- SPACE 2 00305000
- L R5,ABGCOM R5 TO ADDRESS BGCOM @V305101 00306000
- USING BGCOM,R5 @V305101 00307000
- L R6,ASYSCOM R6 TO ADDRESS SYSCOM TEMPORARILY @V305101 00308000
- USING SYSCOM,R6 @V305101 00309000
- L R6,IJBFTTAB R6 TO ADDRESS FCHTAB @V305101 00310000
- DROP R6 @V305101 00311000
- USING FCHTAB,R6 @V305101 00312000
- SR R15,R15 INITIALIZE RETURN CODE @V305101 00313000
- LA R2,4(,R1) AND POINT TO FIRST PHASE TO LOAD.@V305101 00314000
- INSTL CLC 0(8,R2),FENCE IS THIS END OF TABLE ? @V305101 00315000
- BE RETURN YES, MUST BE ALL DONE.... @V305101 00316000
- XC FCHTAB(FCHLENG),FCHTAB ZERO OUT ENTIRE TABLE @V305101 00317000
- MVI DIRN,ELEVEN SET UP FOR SHORT LENGTH @V305101 00318000
- MVC DIRNAME,0(R2) SET UP THE PHASE NAME @V305101 00319000
- LA R1,DIRNAME GET PHASE NAME ADDRESS @V305101 00320000
- ST R1,FCHAPHNM STORE IN FETCH LIST @V305101 00321000
- MVI FCHOPT,DACTIVE+NOTEXT SET FOR DE=YES, TXT=NO @V305101 00322000
- L R1,HIPHAS GET END ADDRESS LAST PHASE @V305101 00323000
- LA R1,7(,R1) PREPARE TO ROUND @V305101 00324000
- SRL R1,THREE THE ADDRESS TO THE @V305101 00325000
- SLL R1,THREE NEAREST DOUBLE WORD, @V305101 00326000
- ST R1,8(,R2) AND SAVE AS NEXT PHASE LOAD ADDR @V305101 00327000
- LR R0,R1 NOW SET R0 WITH LOAD ADDRESS @V305101 00328000
- LR R1,R6 AND SET R6 WITH FETCH LIST @V305101 00329000
- SVC 4 AND GO SEE IF PHASE EXISTS. @V305101 00330000
- LR R1,R0 R0 TO USABLE REGISTER. @V305101 00331000
- TM 16(R1),DACTIVE+PNOTFND WAS PHASE FOUND ? @V305101 00332000
- BO ERR2 NO, ERROR MSG TO USER. @V305101 00333000
- L R0,8(,R2) RELOAD PHASE LOAD ADDRESS @V305101 00334000
- LR R1,R2 AND LET R1 POINT TO PHASE NAME @V305101 00335000
- SVC 4 AND NOW LOAD THE PHASE. @V305101 00336000
- LA R2,12(,R2) BUMP TO NEXT PHASE NAME @V305101 00337000
- B INSTL AND SEE IF MORE TO LOAD. @V305101 00338000
- DROP R5,R6 @V305101 00339000
- EJECT 00340000
- NOINSTL L R5,ALDRTBLS GET ADDR LOADER TABLES @V305101 00341000
- LA R5,0(,R5) CLEAR HI ORDER BYTE @V305001 00342000
- SH R5,=H'60' POINT TO THIRD ENTRY @V305001 00343000
- MVC 0(60,R5),DUMLDRT MOVE DUMMY 3 ENTRIES @V305001 00344000
- MVC 0(8,R5),0(R2) MOVE PHASE NAME TO ENTRY @V305001 00345000
- ST R1,8(,R5) SET UP LOAD POINT @V305001 00346000
- ST R1,12(,R5) SET UP ENTRY POINT @V305001 00347000
- LA R5,THREE SET UP A CONSTANT @V305066 00348000
- STH R5,TBENT SET UP 3 LOADER ENTRIES @V305001 00349000
- ST R1,STRTADDR SET UP CMS START ADDR @V305001 00350000
- L R5,ABGCOM GET BGCOM REGION ADDR @V305001 00351000
- USING BGCOM,R5 @V305001 00352000
- L R5,HIPHAS GET PHASE END ADDRESS @V305001 00353000
- ST R5,LASTLOC SET MODULE END ADDRESS @V305001 00354000
- ST R5,LOCCNT SET LOADER LOCATION COUNTER @V305001 00355000
- DROP R5 @V305001 00356000
- LTR R3,R3 START SPECIFIED ? @V305001 00357000
- BNZ EXECUTE YES, INVOKE START @V305001 00358000
- DMSERR LET=I,NUM=710,TYPCALL=BALR, @V305001*00359000
- TEXT='PHASE ''........'' ENTRY POINT AT LOCATION ......'*00360000
- ,SUB=(CHARA,(R2),HEXA,STRTADDR),MF=(E,'SYS') @V305001 00361000
- SR R15,R15 ZERO RETURN CODE @V305001 00362000
- RETURN LR R14,R4 RESTORE RETURN REGISTER @V305001 00363000
- NI DOSFLAGS,255-VSMINSTL RESET VSAM INSTAL FLAG @V305101 00364000
- BR R14 RETURN TO CMS @V305001 00365000
- EJECT 00366000
- EXECUTE EQU * @V305001 00367000
- DMSFREE DWORDS=3,TYPCALL=BALR @V305001 00368000
- LR R5,R1 SAVE LOCATION ADDRESS @V305001 00369000
- MVC 0(8,R1),START SET UP PLIST COMMAND @V305001 00370000
- MVC 8(8,R1),0(R2) SET UP PLIST MODULE NAME @V305001 00371000
- MVC 16(8,R1),FENCE SET UP THE FENCE @V305001 00372000
- SVC 202 CALL START @V305001 00373000
- DC AL4(*+4) NO-OP ERROR EXIT @V305001 00374000
- NI DOSFLAGS,255-DOSCOMP RESET COMPILER SWITCH @V305001 00375000
- LR R1,R5 RESTORE PLIST ADDRESS @V305001 00376000
- LR R5,R15 SAVE RETURN CODE @V305001 00377000
- DMSFRET DWORDS=3,LOC=(1),TYPCALL=BALR @V305001 00378000
- LR R15,R5 RESTORE RETURN CODE @V305001 00379000
- B RETURN RETURN TO CMS @V305001 00380000
- EJECT 00381000
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00382000
- * * 00383000
- * CONSTANTS AND DUMMY LOADER TABLE ENTRIES. * 00384000
- * * 00385000
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00386000
- SPACE 2 00387000
- LPAR EQU C'(' LEFT PARENS @V305001 00388000
- RPAR EQU C')' RIGHT PARENS @V305001 00389000
- BLANK EQU C' ' BLANK CODE @V305001 00390000
- ZERO EQU X'00' CONSTANT @V305066 00391000
- ONE EQU X'01' CONSTANT @V305066 00392000
- THREE EQU X'03' CONSTANT @V305066 00393000
- ELEVEN EQU X'0B' CONSTANT @V305066 00394000
- CHAR0 EQU C'0' CHARACTER ZERO @V305066 00395000
- CHAR9 EQU C'9' CHARACTER NINE @V305066 00396000
- CHARA EQU C'A' CHARACTER 'A' @V305066 00397000
- CHARF EQU C'F' CHARACTER 'F' @V305066 00398000
- RC24 EQU 24 RETURN CODE @V305066 00399000
- RC28 EQU 28 RETURN CODE @V305066 00400000
- RC40 EQU 40 RETURN CODE @V305066 00401000
- DS 0D @V305001 00402000
- FENCE DC 8X'FF' FENCE @V305001 00403000
- START DC CL8'START' OPTION OR COMMAND NAME @V305001 00404000
- ORIGIN DC CL8'ORIGIN' OPTION @V305001 00405000
- COMP DC CL8'COMP' OPTION @V305001 00406000
- INSTAL DC CL8'INSTAL' OPTION @V305101 00407000
- * 00408000
- FDOSL DC CL8'FILEDEF' COMMAND NAME @V305001 00409000
- DC CL8'DOSLIB' DDNAME @V305001 00410000
- DC CL8'DISK' ... @V305001 00411000
- DC CL8'CMS' FNAME @V305001 00412000
- DC CL8'DOSLIB' FTYPE @V305001 00413000
- DC CL8'*' FMODE @V305001 00414000
- DC CL8'(' BEGIN OPTIONS @V305001 00415000
- DC CL8'CONCAT' OPTION @V305001 00416000
- DC 8X'FF' FENCE @V305001 00417000
- * 00418000
- DUMLDRT DS 0F KEEP IN ORDER 'TILL NEXT LABEL @V305001 00419000
- DC CL8' ' PHASE NAME (3RD ENTRY) @V305001 00420000
- DC 2F'0' LOAD POINT / ENTRY POINT ADDRS @V305001 00421000
- DC X'20000000' CONSTANT @V305001 00422000
- DC CL8'SYSREF' SYSREF ENTRY @V305001 00423000
- DC 3F'0' ... @V305001 00424000
- DC CL8'NUCON' NUCON ENTRY @V305001 00425000
- ENDORD DC 3F'0' ... @V305001 00426000
- EJECT 00427000
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00428000
- * * 00429000
- * ERROR MESSAGES * 00430000
- * * 00431000
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00432000
- SPACE 2 00433000
- ERR1 EQU * @V305001 00434000
- DMSERR TEXT='NO PHASE NAME SPECIFIED',LET=E,NUM=98 @V305001 00435000
- LA R15,RC24 RETURN CODE = 24 @V305066 00436000
- B RETURN RETURN TO CALLER @V305001 00437000
- * 00438000
- ERR2 EQU * @V305001 00439000
- DMSERR TEXT='PHASE ''........'' NOT FOUND',LET=E,NUM=4, *00440000
- SUB=(CHARA,(R2)) @V305001 00441000
- LA R15,RC28 RETURN CODE = 28 @V305066 00442000
- B RETURN RETURN TO CALLER @V305001 00443000
- EJECT 00444000
- ERR3 LR R2,R1 SET SUB REGISTER @V305001 00445000
- DMSERR TEXT='INVALID OPTION ''........''',LET=E,NUM=3, *00446000
- SUB=(CHARA,(R2)) @V305001 00447000
- LA R15,RC24 RETURN CODE = 24 @V305066 00448000
- B RETURN RETURN TO CALLER @V305001 00449000
- * 00450000
- ERR4 LR R2,R1 SET SUB REGISTER @V305001 00451000
- DMSERR TEXT='INVALID PARAMETER ''........'' IN THE OPTION ''OR*00452000
- IGIN'' FIELD',NUM=29,LET=E,SUB=(CHARA,(R2)) @V305066 00453000
- LA R15,RC24 RETURN CODE = 24 @V305066 00454000
- B RETURN RETURN TO CALLER @V305001 00455000
- EJECT 00456000
- ERR70 LR R2,R1 SET SUB REGISTER @V305001 00457000
- DMSERR TEXT='INVALID PARAMETER ''........''',LET=E,NUM=70, *00458000
- SUB=(CHARA,(R2)) @V305001 00459000
- LA R15,24 SET RETURN CODE @V305001 00460000
- B RETURN RETURN TO CALLER @V305001 00461000
- * 00462000
- ERR99 EQU * @V305001 00463000
- DMSERR TEXT='CMS/DOS ENVIRONMENT NOT ACTIVE',NUM=99,LET=E 00464000
- LA R15,RC40 RETURN CODE = 40 @V305066 00465000
- B RETURN RETURN TO CALLER @V305001 00466000
- LTORG 00467000
- EJECT 00468000
- NUCON @V305001 00469000
- BGCOM @V305001 00470000
- SYSCOM @V305001 00471000
- FCHTAB @V305001 00472000
- REGEQU @V305001 00473000
- END 00474000
ibm/vm370-lib/cms/dmsfet.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator