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