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