ibm:vm370-lib:cms:dmsgnd.assemble_src
Table of Contents
DMSGND Source
References
- Fixes Applied : 1
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [HRC002DS]
Source Listing
- DMSGND.ASSEMBLE.txt
- GND TITLE 'DMSGND (CMS) VM/370 - RELEASE 6' 00001000
- SPACE 2 00002000
- * MODULE NAME - 00003000
- * 00004000
- * DMSGND (GENDIRT) 00005000
- * 00006000
- * FUNCTION - 00007000
- * 00008000
- * TO GENERATE AN AUXILLARY SYSTEM STATUS TABLE 00009000
- * 00010000
- * ATTRIBUTES - 00011000
- * 00012000
- * TRANSIENT, CALLED VIA SVC 00013000
- * NOTE: GENDIRT MUST BE GENMOD'D WITH THE SYSTEM OPTION 00013100
- * 00014000
- * ENTRY POINTS - 00015000
- * 00016000
- *| DMSGND - GENERATE AN AUXILLARY DIRECTORY 00017000
- * 00018000
- * ENTRY CONDITIONS - 00019000
- * 00020000
- *| GPR 1 = ADDRESS OF A PARAMETER LIST WITH THE FOLLOWING FORMAT 00021000
- *| 00022000
- *| DC CL8'GENDIRT' 00023000
- *| DC CL8'DIRTNAME' 00024000
- * DC CL8'TARGET MODE' OPTIONAL PARAMETER 00024500
- *| DC 8X'FF' 00025000
- *| 00026000
- *| THE TEXT FOR DIRTNAME MUST HAVE BEEN PREVIOUSLY LOADED 00027000
- * 00028000
- * EXIT CONDITIONS - 00029000
- * 00030000
- *| NORMAL - 00031000
- *| GPR 15 = 0 - THE AUXILLARY DIRECTORY IS COMPLETE 00032000
- *| 00033000
- *| ERROR - 00034000
- *| GPR 15 = 4 - ONE OR MORE MODULES COULD NOT BE FOUND 00035000
- *| GPR 15 = 24 - THE INPUT PARAMETER LIST IS INVALID 00036000
- *| GPR 15 = 40 - DIRECTORY NAME NOT FOUND IN LOADER TABLES 00037000
- * 00038000
- * CALLS TO OTHER ROUTINES - 00039000
- * 00040000
- *| DMSSTT - TO FIND THE FST ENTRY FOR A FILE 00041000
- *| DMSERR - TO SEND AN ERROR MESSAGE 00042000
- * 00043000
- * EXTERNAL REFERENCES - 00044000
- * 00045000
- *| NONE 00046000
- * 00047000
- * TABLES / WORKAREAS - 00048000
- * 00049000
- *| NONE 00050000
- * 00051000
- * REGISTER USAGE - 00052000
- * 00053000
- *| GPR 0 = PARAMETER REGISTER 00054000
- *| GPR 1 = PARAMETER LIST BASE REGISTER 00055000
- *| GPR 2 = LOADER TABLE ENTRY BASE REGISTER AND 00056000
- *| FST BASE REGISTER 00057000
- *| GPR 3 = COUNT OF LOADER TABLE ENTRIES AND 00058000
- *| CURRENT DIRECTORY ENTRY POINTER 00059000
- *| GPR 4 = LOADER TABLE ENTRY SIZE AND 00060000
- *| FST ENTRY SIZE 00061000
- *| GPR 5 = ADDRESS OF LAST ENTRY IN AUXILLARY DIRECTORY 00062000
- *| GPR 6 - GPR 10 = NOT USED 00063000
- *| GPR 11 = RETURN CODE 00064000
- *| GPR 12 = PROGRAM BASE REGISTER 00065000
- *| GPR 13 = NOT USED 00066000
- *| GPR 14 = RETURN ADDRESS 00067000
- *| GPR 15 = RETURN CODE 00068000
- * 00069000
- * NOTES - 00070000
- * 00071000
- * NONE 00072000
- * 00073000
- * OPERATION - 00074000
- * 00075000
- *| DMSGND FIRST VERIFIES THAT THE INPUT PARAMETER LIST IS VALID. 00076000
- *| IT THEN SERACHES THE LOADER TABLES FOR THE SPECIFIED DIRECTORY 00077000
- *| NAME. AFTER LOCATING THE DIRECTORY, DMSGND CALLS 'STATE' TO 00078000
- *| LOCATE THE FST ENTRY FOR EACH NAME IN THE DIRECTORY. EACH 00079000
- *| ENTRY IS COMPLETED BY MOVING THE LAST 24 BYTES OF THE FST DATA 00080000
- * TO THE DIRECTORY ENTRY. IF THE TARGET MODE WAS SPECIFIED 00081000
- * ON THE COMMAND, THAT MODE IS PUT INTO THE FSTMODE FIELD. 00081500
- * OTHERWISE THE FSTMODE FIELD IS SET TO 'S' TO INDICATE THE 00082000
- * SYSTEM DISK. 00082500
- * IF ONE OR MORE FST ENTRIES IS NOT FOUND, THE DATA AREA 00083000
- * IS ZEROED AND THE RETURN CODE SET TO 4. 00083500
- * WHEN ALL THE ENTRIES IN THE DIRECTORY HAVE BEEN PROCESSED 00084000
- * DMSGND RETURNS TO THE CALLER. 00084500
- *. 00085000
- EJECT 00086000
- DMSGND START X'E000' GENERATE AN AUXILIARY DIRECTORY 00087000
- ENTRY GENDIRT 00088000
- GENDIRT EQU * 00089000
- USING NUCON,R0 00090000
- USING PSECT,R9 V0742 00091000
- USING DMSGND,R12 00092000
- LR R9,R1 SAVE INPUT PLIST V0742 00092100
- SR R11,R11 ZERO THE RETURN CODE 00093000
- CLI DIRNAME,X'FF' IS THE DIRECTORY NAME SPECIFIED ? 00094000
- BE GNDERR1 NO, CANNOT CONTINUE WITHOUT A NAME 00095000
- CLI DIRMODE,X'FF' TARGET MODE SPECIFIED? V0742 00095100
- BE DIRT2 NO V0742 00095200
- LA R2,DIRMODE LOAD ERROR 2 REGISTER @VA00981 00095240
- CLI DIRMODE+1,X'40' MODE MORE THAN 1 CHARA.? @VA00981 00095280
- BNE GENERR2A YES, ERROR @VA00981 00095320
- CLI DIRMODE,C'A' MODE MUST BE A-Z HRC002DS 00095380
- BL GENERR2A HRC002DS 00095400
- CLI DIRMODE,C'I' HRC002DS 00095420
- BNH CKEND HRC002DS 00095440
- CLI DIRMODE,C'J' MODE MUST BE A-Z HRC002DS 00095460
- BL GENERR2A HRC002DS 00095480
- CLI DIRMODE,C'R' HRC002DS 00095500
- BNH CKEND HRC002DS 00095520
- CLI DIRMODE,C'S' MODE MUST BE A-Z HRC002DS 00095540
- BL GENERR2A HRC002DS 00095560
- CLI DIRMODE,C'Z' HRC002DS 00095580
- BH GENERR2A HRC002DS 00095600
- CKEND EQU * @VA00981 00095800
- CLI PARMEND,X'FF' IS THIS THE END OF THE PARAMETER LIST ? 00096000
- BNE GNDERR2 NO, THE PARAMETER LIST IS INVALID 00097000
- DIRT2 EQU * V0742 00097100
- LH R3,TBENT LOAD THE NUMBER OF LOADER TABLE ENTRIES 00098000
- LTR R3,R3 HAVE ANY MODULES BEEN LOADED ? 00099000
- BZ GNDERR3 NO, ERROR IF DIRECTORY CANNOT BE FOUND 00100000
- L R2,ALDRTBLS POINT TO THE TOP OF THE LOADER TABLES 00101000
- LA R2,0(,R2) ZERO THE HIGH ORDER BYTE OF THE ADDRESS 00102000
- USING LDRTSECT,R2 00103000
- LA R4,LDRTSIZE GET THE SIZE OF EACH LOADER TABLE ENTRY 00104000
- DIRLOOP SR R2,R4 POINT TO THE NEXT LOADER TABLE ENTRY 00105000
- CLC LDRTNAME,DIRNAME IS THIS THE ENTRY FOR THE DIRECTORY 00106000
- BE GNDNAME YES, FILL IN THE FST ENTRIES 00107000
- BCT R3,DIRLOOP NO, TRY THE NEXT ENTRY IN THE TABLE 00108000
- B GNDERR3 ERROR IF DIRECTORY HAS NOT BEEN LOADED 00109000
- SPACE 00110000
- GNDNAME L R3,LDRTADDR LOAD THE AUXILIARY DIRECTORY ADDRESS 00111000
- L R4,0(,R3) LOAD THE FST ENTRY SIZE 00112000
- L R5,4(,R3) LOAD THE AUXILIARY DIRECTORY SIZE 00113000
- LA R5,0(R5,R3) POINT TO THE LAST DIRECTORY ENTRY 00114000
- SR R5,R4 ... 00115000
- LA R3,8(,R3) POINT TO THE FIRST DIRECTORY ENTRY 00116000
- USING FSTSECT,R3 00117000
- FSTLOOP MVC STATENME,FSTDATA MOVE FILE NAME & TYPE TO STATE PLIST 00118000
- LA R1,STATELST POINT TO THE PLIST FOR THE STATE FUNCTION 00119000
- L R15,ASTATE LOCATE FIRST ENTRY FOR FILE @V305066 00120000
- LR R6,R14 SAVE RETURN REGISTER FOR NOW.. @VM03059 00120050
- BALR R14,R15 ... @V305066 00120100
- LR R14,R6 RESTORE RETURN REGISTER AND @VM03059 00120150
- BNZ GNDERR4 SEND WARNING IF FILE NOT FOUND @V305066 00120200
- L R2,STATEFST LOAD THE POINTER TO THE FST ENTRY 00122000
- USING FSTD,R2 00123000
- MVC FSTDATA,FSTDATEW COPY THE DATA TO THE DIRECTORY ENTRY 00124000
- MVI FSTMODE,C'S' SET MODE TO 'S' V0742 00124100
- CLI DIRMODE,X'FF' WAS A TARGET MODE SPECIFIED? V0742 00124200
- BE FSTNEXT NO, BRANCH AROUND V0742 00124300
- MVC FSTMODE(1),DIRMODE YES, USE THAT MODE V0742 00124400
- FSTNEXT BXLE R3,R4,FSTLOOP POINT TO NEXT DIRECTORY ENTRY AND BRANCH 00125000
- LR R15,R11 LOAD THE RETURN CODE 00126000
- BR R14 RETURN TO THE CALLER 00127000
- EJECT 00128000
- GNDERR1 DMSERR NUM=22,LET=E,TEXT='NO DIRECTORY NAME SPECIFIED' 00129000
- LA R15,24 LOAD THE RETURN CODE 00130000
- BR R14 RETURN TO THE CALLER 00131000
- SPACE 00132000
- GNDERR2 LA R2,PARMEND POINT TO THE INVALID PARAMETER 00133000
- GENERR2A EQU * @VA00981 00133500
- DMSERR NUM=70,LET=E,TEXT='INVALID PARAMETER ''........''',SUB=X00134000
- (CHARA,(2)) 00135000
- LA R15,24 LOAD THE RETURN CODE 00136000
- BR R14 RETURN TO THE CALLER 00137000
- SPACE 00138000
- GNDERR3 LA R2,DIRNAME POINT TO THE DIRECTORY NAME 00139000
- DMSERR NUM=21,LET=E,TEXT='ENTRY POINT ''........'' NOT FOUND 'X00140000
- ,SUB=(CHARA,(2)) 00141000
- LA R15,40 LOAD THE RETURN CODE 00142000
- BR R14 RETURN TO THE CALLER 00143000
- SPACE 00144000
- GNDERR4 LA R2,FSTDATA POINT TO THE FILE NAME 00145000
- DMSERR NUM=2,LET=W,TEXT='FILE ''.................'' NOT FOUND'X00146000
- ,SUB=(CHAR8A,(2)) 00147000
- XC FSTDATA,FSTDATA ZERO THE DIRECTORY DATA 00148000
- LA R11,4 LOAD THE RETURN CODE 00149000
- B FSTNEXT CONTINUE BUILDING THE DIRECTORY 00150000
- EJECT 00151000
- STATELST DS 0D 00152000
- DC CL8'STATE' 00153000
- STATENME DC CL16' ' 00154000
- DC CL4'A1' 00155000
- STATEFST DC AL4(0) 00156000
- SPACE 00157000
- LTORG 00158000
- SPACE 3 00159000
- PSECT DSECT 00160000
- DS CL8 00161000
- DIRNAME DS CL8 00162000
- DIRMODE DS CL8 V0742 00162100
- PARMEND DS CL8 00163000
- SPACE 2 00164000
- LDRTSECT DSECT 00165000
- LDRTNAME DS CL8 00166000
- DS AL4 00167000
- LDRTADDR DS AL4 00168000
- DS XL4 00169000
- LDRTSIZE EQU *-LDRTSECT 00170000
- SPACE 2 00171000
- FSTSECT DSECT 00172000
- DS CL16 00173000
- FSTDATA DS CL24 00174000
- ORG FSTSECT+X'18' V0742 00174100
- FSTMODE DS CL2 V0742 00174200
- EJECT 00175000
- FSTD 00176000
- NUCON 00177000
- REGEQU 00178000
- END 00179000
ibm/vm370-lib/cms/dmsgnd.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator