ibm:vm370-lib:cms:dmslad.assemble_src
Table of Contents
DMSLAD Source
References
- Fixes Applied : 0
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [Unmodified]
Source Listing
- DMSLAD.ASSEMBLE.txt
- LAD TITLE 'DMSLAD (CMS) VM/370 - RELEASE 6' 00001000
- SPACE 2 00002000
- *. 00003000
- * MODULE NAME: 00004000
- * 00005000
- * DMSLAD 00006000
- * 00007000
- * CONTENTS: 00008000
- * 00009000
- * DMSLADP 00010000
- * DMSLADN 00011000
- * DMSLADW 00012000
- * 00013000
- * SUBROUTINE NAME: 00014000
- * 00015000
- * DMSLADP (ADTLKP) 00016000
- * 00017000
- * FUNCTION: 00018000
- * 00019000
- * FIND THE ACTIVE DISK TABLE BLOCK WHOSE MODE MATCHES 00020000
- * THE ONE SUPPLIED BY THE CALLER. 00021000
- * 00022000
- * ATTRIBUTES: 00023000
- * 00024000
- * NUCLEUS RESIDENT, REENTRANT 00025000
- * 00026000
- * ENTRY POINTS: 00027000
- * 00028000
- * DMSLAD 00029000
- * 00030000
- * L R15,AADTLKP WHERE AADTLKP=V(DMSLAD) 00031000
- * BALR R14,15 00032000
- * 00033000
- * R1 MUST POINT TO PARAMETER LIST AS USUAL: 00034000
- * DS OF 00035000
- * PLIST DC CL24' ' IMMATERIAL 00036000
- * DC CL2' ' MODE LETTER 00037000
- * 00038000
- * EXIT CONDITIONS: 00039000
- * 00040000
- * ______ ____ _____ _____ _____ 00041000
- * ACTIVE_DISK_TABLE_BLOCK_FOUND 00042000
- * R1 =ADDRESS OF MATCHIN ACTIVE DISK TABLE BLOCK 00043000
- * R15=0 (AND CONDITION-CODE = 0) 00044000
- * ______ ____ _____ _____ ___ _____ 00045000
- * ACTIVE_DISK_TABLE_BLOCK_NOT_FOUND 00046000
- * R1 SAME AS AT ENTRY 00047000
- * R15=1 (AND CONDITION-CODE =2) 00048000
- * 00049000
- * CALLS TO OTHER ROUTINES: 00050000
- * 00051000
- * NONE 00052000
- * 00053000
- * EXTERNAL REFERENCES: 00054000
- * 00055000
- * ADTSECT 00056000
- * 00057000
- * TABLES/WORKAREAS 00058000
- * 00059000
- * ADTFVS WORK STORAGE 00060000
- * ADTSECT 00061000
- * 00062000
- * REGISTER USAGE: 00063000
- * 00064000
- * R15 ADTFVS AREA 00065000
- * R9 BASE 00066000
- * R10 ADTSECT 00067000
- * R1,14 WORK 00068000
- * 00069000
- * OPERATION: 00070000
- * 00071000
- * DMSLAD SEARCHES THROUGH THE ACTIVE DISK TABLE 00072000
- * STARTING AT IADT TO FIND 00073000
- * AN ADT BLOCK WHOSE MODE-LETTER, IS GIVEN BY ADTM, 00074000
- * MATCHES THAT OF THE CALLER. IF A MATCHING ADT BLOCK 00075000
- * IS FOUND, ITS ADDRESS IS RETURNED IN R1 AS INDICATED 00076000
- * ABOVE. IF NOT, AN ERROR-RETURN IS GIVEN. IN EITHER 00077000
- * EVENT, THE CONDITION-CODE IS SET PER R15, FOR 00078000
- * CONVENIENCE OF THE CALLER (WHO CAN OMIT THE USUAL LTR 00079000
- * INSTRUCTION BEFORE CHECKING THE RETURN-CODE). 00080000
- * 00081000
- * DMSLAD IS CALLED BY MANY PROGRAMS AND FUNCTIONS TO 00082000
- * DETERMINE THE 00083000
- * ADDRESS OF THE ACTIVE DISK TABLE PERTAINING TO A 00084000
- * GIVEN DISK. 00085000
- * 00086000
- * SUBROUTINE NAME: 00087000
- * 00088000
- * DMSLADNX (ADTNXT) 00089000
- * 00090000
- * FUNCTION: 00091000
- * 00092000
- * FIND THE NEXT (OR FIRST) ADT BLOCK IN THE ACTIVE DISK 00093000
- * TABLE. 00094000
- * 00095000
- * ATTRIBUTES: 00096000
- * 00097000
- * NUCLEUS RESIDENT, REENTRANT 00098000
- * 00099000
- * ENTRY POINTS: 00100000
- * 00101000
- * DMSLADN 00102000
- * 00103000
- * ENTRY CONDITIONS: 00104000
- * 00105000
- * L R15,AADTNXT WHERE AADTNXT = V(ADTNXT) 00106000
- * BALR R14,R15 00107000
- * 00108000
- * R1=0: FIND FIRST ACTIVE DISK TABLE BLOCK 00109000
- * OR 00110000
- * R1=NONZERO: GIVEN PRESENT ACTIVE DISK TABLE BLOCK, 00111000
- * FIND NEXT ADT BLOCK (IF ANY) 00112000
- * 00113000
- * EXIT CONDITIONS: 00114000
- * 00115000
- * ______ ____ _____ _____ _____ 00116000
- * ACTIVE_DISK_TABLE_BLOCK_FOUND 00117000
- * R1 =ADDRESS OF MATCHING ACTIVE DISK TABLE BLOCK 00118000
- * R15=0 (AND CONDITION-CODE=0) 00119000
- * 00120000
- * ______ ____ _____ _____ ___ _____ (____ ____) 00121000
- * ACTIVE DISK TABLE BLOCK NOT FOUND _NONE_LEFT_ 00122000
- * R1 =0 00123000
- * R15=1 (AND CONDITION-CODE=2) 00124000
- * 00125000
- * CALLS TO OTHER ROUTINES: 00126000
- * 00127000
- * NONE 00128000
- * 00129000
- * EXTERNAL REFERENCES: 00130000
- * 00131000
- * ADTSECT, FVSECT 00132000
- * 00133000
- * TABLES/WORKAREAS 00134000
- * 00135000
- * NONE 00136000
- * 00137000
- * REGISTER USAGE: 00138000
- * 00139000
- * R12 BASE 00140000
- * R13 FVSECT 00141000
- * R1 ADTSECT 00142000
- * REST WORK 00143000
- * 00144000
- * OPERATION: 00145000
- * 00146000
- * IF R1=0 AT ENTRY, THE ADDRESS OF THE FIRST ACTIVE 00147000
- * DISK TABLE BLOCK AT IADT IS RETURNED. 00148000
- * 00149000
- * IF R1=NONZERO AT ENTRY, THE GIVEN VALUE IN R1 IS 00150000
- * TAKEN AS THE ADDRESS OF THE PRESENT ADT BLOCK, AND 00151000
- * THE POINTER TO THE NEXT ADT BLOCK (IF ANY) IS LOADED 00152000
- * INTO R1. IF THERE IS NO ADT BLOCK LEFT, ERROR CODE 1 00153000
- * IS GIVEN IN R15 AS SHOWN UNDER EXIT CONDTIONS ABOVE. 00154000
- * 00155000
- * IN ANY EVENT, NO CHECK IS MADE WHETHER ANY DISK IS 00156000
- * CURRENTLY LOGGED IN FOR THE DISK TABLE RETURNED 00157000
- * (THESE CHECKS BEING PERFORMED BY THE CALLER). 00158000
- * 00159000
- * DMSLADN IS USED BY VARIOUS ROUTINES AND COMMANDS FOR 00160000
- * SCANNING THROUGH 00161000
- * THE CHAIN OF ACTIVE DISKS FOR CONDITIONS TO BE 00162000
- * SATISFIED, FOR EXAMPLE 00163000
- * DMSLST AND DMSSTT. DMSLADN IS ALSO USED BY DMSLFS TO 00164000
- * CHECK FOR A DISK 00165000
- * WHICH MAY B EREAD-ONLY EXTENSION OF ANOTHER. 00166000
- * 00167000
- * ____: DMSLADN IS AN ENTRY-POINT IN THE DMSLAD 00168000
- * NOTE 00169000
- * ROUTINE. 00170000
- * 00171000
- * SUBROUTINE NAME: 00172000
- * 00173000
- * DMSLADW (ADTLKW) 00174000
- * 00175000
- * FUNCTION: 00176000
- * 00177000
- * FIND READ/WRITE DISK ACCORDING TO INPUT PARAMETER. 00178000
- * 00179000
- * ENTRY POINT: 00180000
- * 00181000
- * DMSLADW (ADTLKW) 00182000
- * 00183000
- * ENTRY CONDITIONS: 00184000
- * 00185000
- * 24(GPR1) = MODE LETTER 00186000
- * 00187000
- * 24(GPR1) = X 00188000
- * GPR0 = 0: START SEARCH A FIRST R/W DISK (A(ADT): 00189000
- * RESUME SEARCH AT NEXT ADT BLOCK 00190000
- * 00191000
- * 24(GPR1) = ? 00192000
- * GPR0 = NUMBER OF 800 BYTE DATA BLOCKS TO BE WRITTEN 00193000
- * 00194000
- * 24(GPR1) = ??: SEARCH FOR R/W DISK WITH THE MOST ROOM 00195000
- * 00196000
- * EXIT CONDITIONS: 00197000
- * 00198000
- * NORMAL - 00199000
- * GPR15 = 0 00200000
- * GPR0 = NUMBER OF 800 BYTE RECORDS LEFT ON DISK 00201000
- * GPR1 = A(ADT BLOCK FOR THIS DISK) 00202000
- * 00203000
- * ERROR - 00204000
- * GPR15 = 1 AND CONDITION CODE = 2: 00205000
- * ENTRY CONDITIONS NOT MET 00206000
- * 00207000
- * CALLS TO OTHER ROUTINES: 00208000
- * 00209000
- * NONE 00210000
- * 00211000
- * EXTERNAL REFERENCES: 00212000
- * 00213000
- * ADTSECT 00214000
- * FVSECT 00215000
- * 00216000
- * TABLES/WORKAREAS: 00217000
- * 00218000
- * SEE EXTERNAL REFERENCES 00219000
- * 00220000
- * REGISTER USAGE: 00221000
- * 00222000
- * GPR12 = BASE REGISTER 00223000
- * GPR13 = A(FVS) 00224000
- * GPR1 = A(ADT BLOCK FOUND) 00225000
- * 00226000
- * NOTES: 00227000
- * 00228000
- * NONE 00229000
- * 00230000
- * OPERATION: 00231000
- * 00232000
- * 1. CHECK TO MAKE SURE THE MODE LETTER IS VALID, I.E. 00233000
- * A-Z, *, ?, ?? 00234000
- * 00235000
- * 2. IF THE MODE LETTER = *, GO TO 10. IF IT EQUALS ?, 00236000
- * GO TO 20. IF IT'S ??, GO TO 30. 00237000
- * 00238000
- * 3. BRANCH TO DMSLAD TO FIND THE DESIRED DISK. 00239000
- * 00240000
- * 4. UPON RETURN, IF CONDITION CODE = 7, EXIT WITH 00241000
- * RETURN CODE = 1 AND CONDITION CODE = 2. 00242000
- * 00243000
- * 5. ELSE REFERENCE THE ADT BLOCK FOUND AND CHECK 00244000
- * ADTFLG1 FOR THE WRITE BIT ON. 00245000
- * 00246000
- * 00247000
- * 00248000
- * 00249000
- * 00250000
- * 00251000
- * 00252000
- * 00253000
- * 00254000
- * 00255000
- * 00256000
- * 00257000
- * 00258000
- * 6. IF IT'S NOT ON, EXIT AS IN #3. 00259000
- * 00260000
- * 7. ELSE COMPUTE THE NUMBER OF 800 BYTE RECORDS LEFT 00261000
- * AND PUT IT IN GPR0. 00262000
- * 00263000
- * 8. RESTORE THE REGISTERS, SET THE RETURN CODE TO 0, 00264000
- * AND EXIT. 00265000
- * 00266000
- * 10. CALL DMSLADNX AND CHECK THE R/W FLAG. IF IT'S ON, 00267000
- * GO TO 7. IF NOT, CONTINUE WITH 10. 00268000
- * 00269000
- * 20. CALL DMSLADNX AND COMPUTE THE NUMBER OF 800 BYTE 00270000
- * RECORDS AVAILABLE. IF THERE ARE ENOUGH, SAVE THE 00271000
- * VALUE IN GPR) AND GO TO 8. IF NOT, CONTINUE WITH 00272000
- * 20. 00273000
- * 00274000
- * 30. CALL DMSLADNX AND COMPUTE THE NUMBER OF 800 BYTE 00275000
- * RECORDS AVAILABLE. COMPARE THIS VALUE AGAINST 00276000
- * THAT COMPUTED THE LAST TIME THROUGH. IF IT IS 00277000
- * GREATER, SAVE IT, AND THE DISK IT BELONGED TO. 00278000
- * CONTINE WITH 30 UNTIL CHECKED EVER DSIK IN THE ADT 00279000
- * CHAIN. WHEN FINISHED, CHECK THE SAVED VALUES, IF 00280000
- * NOTHING EXIT AS IN #3. ELSE LOAD GPR0, GPR1 WITH 00281000
- * THE SAVED VALUES AND GO TO 8. 00282000
- * 00283000
- * SUBROUTINE NAME: V0742 00284000
- * V0742 00285000
- * DMSLADAD V0742 00286000
- * V0742 00287000
- * FUNCTION: V0742 00288000
- * V0742 00289000
- * TO MODIFY THE FILE STATUS TABLE CHAIN TO INCLUDE AN V0742 00290000
- * AUXILIARY DIRECTORY, OR TO CLEAR THE AUXILIARY DIRECTORY V0742 00291000
- * FROM THE CHAIN. V0742 00292000
- * V0742 00293000
- * ATTRIBUTES: V0742 00294000
- * V0742 00295000
- * NUCLEUS RESIDENT, REENTRANT V0742 00296000
- * V0742 00297000
- * ENTRY POINT: V0742 00298000
- * V0742 00299000
- * DMSLADAD V0742 00300000
- * V0742 00301000
- * ENTRY CONDITIONS: V0742 00302000
- * V0742 00303000
- * L R1,PLIST SET PLIST ADDRESS V0742 00304000
- * SVC 202 V0742 00305000
- * V0742 00306000
- * R1 POINTS TO A PARAMETER LIST OF THE FOLLOWING FORMAT: V0742 00307000
- * V0742 00308000
- * DS 0F V0742 00309000
- * PLIST DC CL8'DMSLADAD' V0742 00310000
- * AUXDIRT DC A(AUXILIARY DIRECTORY) V0742 00311000
- * DC F'0' V0742 00312000
- * OR V0742 00313000
- * DC X'80',AL3(AUX. DIRT. NUCLEUS COPY ADDR.) V0742 00314000
- * V0742 00315000
- * EXIT CONDITIONS: V0742 00316000
- * V0742 00317000
- * R15 = 0 ADT FOR DISK CONTAINING THE AUXILIARY DIRECTORY V0742 00318000
- * AS SPECIFIED AT DIRECTORY GENERATION TIME VIA V0742 00319000
- * GENDIRT, WAS FOUND AND THE FILE STATUS TABLE V0742 00320000
- * CHAIN WAS MODIFIED TO INCLUDE THE AUXILIARY V0742 00321000
- * DIRECTORY; OR THE FILE STATUS TABLE CHAIN V0742 00322000
- * PREVIOUSLY MODIFIED HAS BEEN RESTORED BY V0742 00323000
- * REMOVING THE AUXILIARY DIRECTORY. V0742 00324000
- * V0742 00325000
- * R15 = 1 AUXILIARY DIRECTORY ADDRESS NOT SPECIFIED IN V0742 00326000
- * THE PLIST, OR NO DISK HAS BEEN ACCESSED AS THE V0742 00327000
- * MODE SPECIFIED AT DIRECTORY GENERATION TIME. V0742 00328000
- * CONDITION CODE = 2. V0742 00329000
- * V0742 00330000
- * R15 = 2 CALL TO RESET THE FILE STATUS TABLE CHAIN (LAST V0742 00331000
- * WORD OF PLIST HAS HIGH ORDER BYTE = X'80') DID V0742 00332000
- * NOT SPECIFY THE ADDRESS OF THE NUCLEUS COPY OF V0742 00333000
- * THE AUXILIARY DIRECTORY. THE HIGH ORDER BYTE V0742 00334000
- * IS SET TO X'80' AND THE ADDRESS OF THE NUCLEUS V0742 00335000
- * COPY ARE STORED INTO THE LAST WORD OF THE PLIST V0742 00336000
- * WHEN DMSLADAD IS CALLED TO SET THE AUXILIARY V0742 00337000
- * DIRECTORY INTO THE FILE STATUS TABLE CHAIN. V0742 00338000
- * CONDITION CODE = 2. V0742 00339000
- * V0742 00340000
- * CALLS TO OTHER ROUTINES: V0742 00341000
- * V0742 00342000
- * DMSFREE, DMSFRET V0742 00343000
- * V0742 00344000
- * EXTERNAL REFERENCES: V0742 00345000
- * V0742 00346000
- * FSTD, ADTSECT, NUCON V0742 00347000
- * V0742 00348000
- * TABLES/WORKARES: V0742 00349000
- * V0742 00350000
- * NONE V0742 00351000
- * V0742 00352000
- * REGISTER USAGE: V0742 00353000
- * V0742 00354000
- * R0 NUCON BASE V0742 00355000
- * R1 INPUT PLIST AND ADTSECT BASE V0742 00356000
- * R2 INPUT PLIST V0742 00357000
- * R3 FSTD BASE V0742 00358000
- * R4-R9 WORK REGISTERS V0742 00359000
- * R10 LINKAGE V0742 00360000
- * R11 WORK REGISTERS V0742 00361000
- * R12 BASE V0742 00362000
- * R13 WORK REGISTERS V0742 00363000
- * R14 LINKAGE V0742 00364000
- * R15 RETURN CODE V0742 00365000
- * V0742 00366000
- * OPERATION: V0742 00367000
- * V0742 00368000
- * TO SET AUXILIARY DIRECTORY INTO FILE STATUES CHAIN, V0742 00369000
- * (LAST WORD OF PLIST ZERO): V0742 00370000
- * V0742 00371000
- * THE PLIST IS CHECKED TO VERIFY THAT AN AUX. DIRT. ADDR. V0742 00372000
- * WAS SPECIFIED, IF NOT, RETURN WITH R15 = 1 AND CONDITION V0742 00373000
- * CODE = 2. V0742 00374000
- * V0742 00375000
- * THE SIZE OF THE AUX. DIRT. IS DETERMAINED AND DMSFREE IS V0742 00376000
- * CALLED TO GET THAT AMOUNT OF NUCLEUS FREE STORAGE. V0742 00377000
- * V0742 00378000
- * THE AUX. DIRT. IS THEN COPIED TO THE GOTTON STORAGE. V0742 00379000
- * V0742 00380000
- * THE INPUT PLIST IS THEN MODIFIED BY SETTING THE HIGH V0742 00381000
- * ORDER BYTE TO X'80', AND STORING THE ADDRESS OF THE V0742 00382000
- * NUCLEUS COPY INTO THE LOW ORDER THREE BYTES. V0742 00383000
- * V0742 00384000
- * ADTLKP IS THEN CALLED TO CHECK IF THE DISK MODE V0742 00385000
- * SPECIFIED AT DIRECTORY GENERATION TIME IS ACCESSED. V0742 00386000
- * IF NOT RETURN WITH REGISTER 15 = 1 AND CONDITION V0742 00387000
- * CODE = 2. V0742 00388000
- * V0742 00389000
- * THE FILE STATUS TABLE CHAIN IS THEN MODIFIED SO THAT V0742 00390000
- * THE AUXILIARY DIRECTORY IS SEARCHED BEFORE THE MAIN V0742 00391000
- * DIRECTORY FOR THE DISK. V0742 00392000
- * V0742 00393000
- * V0742 00394000
- * TO RESET THE FILE STATUS TABLE CHAIN, V0742 00395000
- * (LAST WORD OF THE PLIST HIGH ORDER BYTE = X'80' V0742 00396000
- * AND THE LOW ORDER THREE BYTES = ADDR. NUCLEUS COPY): V0742 00397000
- * V0742 00398000
- * IF THE LAST WORD OF THE PLIST DOES NOT CONTAIN AN ADDRESSV0742 00399000
- * RETURN WITH REGISTER 15 = 2 AND CONDITION CODE = 2. V0742 00400000
- * V0742 00401000
- * ADTLKP IS CALLED TO CHECK THAT A DISK IS ACCESSED AS THE V0742 00402000
- * MODE SPECIFIED IN THE AUX. DIRT. V0742 00403000
- * IF NOT, CALL DMSFRET TO FREE THE NUCLEUS COPY AND RETURN V0742 00404000
- * WITH REGISTER 15 = 1 AND CONDITION CODE = 2. V0742 00405000
- * V0742 00406000
- * A CHECK IS MADE TO SEE IF THE FILE STATUS TABLE HAS BEEN V0742 00407000
- * MODIFIED, IF NOT, RETURN WITH REGISTER 15 = 2 AND V0742 00408000
- * CONDITION CODE = 2. V0742 00409000
- * V0742 00410000
- * THE FILE STATUS TABLE CHAIN IS THEN RESTORED BY REMOVING V0742 00411000
- * FROM THE CHAIN THE AUX. DIRT. V0742 00412000
- * V0742 00413000
- * DMSFRET IS THEN CALLED TO FREE THE NUCLEUS COPY OF THE V0742 00414000
- * AUX. DIRT. V0742 00415000
- * V0742 00416000
- * AND CONTROL IS RETURNED TO THE CALLING ROUTINE WITH V0742 00417000
- * REGISTER 15 = 0 V0742 00418000
- * V0742 00419000
- * V0742 00420000
- *. 00421000
- EJECT 00422000
- * 00423000
- * 00424000
- * SEARCH ADT FOR BLOCK WITH MATCHING MODE 00425000
- * 00426000
- * R1 PLM(R1) IS ADDRESS OF FILE MODE CHARACTER 00427000
- * R14 RETURN ADDRESS 00428000
- * 00429000
- * R1 POINTS TO ADT BLOCK IF FOUND, IS UNCHANGED OTHERWISE 00430000
- * R15 = 0 (AND C.C. = 0) IF ADT BLOCK WAS FOUND 00431000
- * R15 = 1 (AND C.C. = 2) IF ADT BLOCK WAS NOT FOUND 00432000
- * 00433000
- DMSLAD CSECT 00434000
- ENTRY ADTLKP,ADTLKW,ADTNXT ***** REMOVE ***** 00435000
- ENTRY DMSLADN,DMSLADW,DMSLADAD V0742 00436000
- USING *,R15 00437000
- B LKP 00438000
- SPACE 3 00439000
- DMSLADO EQU * 00440000
- ADTLKP EQU * 00441000
- SVCENT LKP,SVLAD 00442000
- SPACE 3 00443000
- DMSLADON EQU * 00444000
- ADTNXT EQU * 00445000
- SVCENT DMSLADN,SVLAD 00446000
- SPACE 3 00447000
- DMSLADOW EQU * 00448000
- ADTLKW EQU * 00449000
- SVCENT DMSLADW,SVLADW 00450000
- SPACE 00451000
- LKP EQU * 00452000
- BALR R15,0 00453000
- * 00454000
- * ENTER 'ADTLKP' HERE ... 00455000
- USING *,R15 00456000
- L R15,AADTFVS LOAD POINTER TO FIXED VARIABLE STORAGE 00457000
- USING ADLSECT,R15 00458000
- STM R9,R10,ADLREGS SAVE REGISTERS 00459000
- BALR R9,0 LOAD R9 FOR ADDRESSABILITY 00460000
- USING *,R9 00461000
- L R10,ADLPTR LOAD POINTER TO THE ACTIVE DISK TABLE 00462000
- L R10,0(,R10) NOW LET R10 POINT TO FIRST ADT-BLOCK JS 00463000
- USING ADTSECT,R10 00464000
- * 00465000
- * LOOP TO FIND ADT BLOCK WITH MATCHING MODE LETTER 00466000
- * 00467000
- ADTLKP1 EQU * 00468000
- CLC ADTM,PLM(R1) BRANCH IF MATCHING MODE 00469000
- BE ADTLKP2 ... 00470000
- L R10,ADTPTR ADVANCE POINTER TO NEXT BLOCK IN CHAIN 00471000
- LTR R10,R10 TEST FOR END OF CHAIN 00472000
- BNZ ADTLKP1 BRANCH IF NOT END OF CHAIN 00473000
- * 00474000
- * ERROR 1 MEANS NO ADT BLOCK FOUND FOR GIVEN MODE LETTER 00475000
- * 00476000
- B ERROR1 ... 00477000
- * 00478000
- * MATCHING MODE FOUND 00479000
- * 00480000
- ADTLKP2 EQU * 00481000
- LR R1,R10 ADDRESS OF ADT BLOCK INTO R1 00482000
- LM R9,R10,ADLREGS RESTORE NECESSARY REGISTERS 00483000
- SR R15,R15 CLEAR GPR 15 FOR STANDARD RETURN 00484000
- BR R14 00485000
- DROP R9 00486000
- DROP R10 00487000
- EJECT 00488000
- * 00489000
- * FIND NEXT ACTIVE DISK TABLE BLOCK IN CHAIN 00490000
- * 00491000
- * R1 NONZERO - POINTS TO ACTIVE DISK TABLE BLOCK 00492000
- * R1 ZERO - POINTER TO FIRST ADT BLOCK IN CHAIN RETURNED 00493000
- * 00494000
- DMSLADN EQU * 00495000
- * 00496000
- USING *,R15 00497000
- LTR R1,R1 TEST FOR ZERO ADT POINTER 00498000
- BNZ ADTNXT1 BRANCH IF POINTER NONZERO 00499000
- L R1,ADLPTR LOAD POINTER TO FIRST ADT BLOCK IN CHAIN 00500000
- L R1,0(,R1) NOW LET R1 POINT TO FIRST ADT-BLOCK JS 00501000
- SR R15,R15 SUCCESSFUL RETURN CODE 00502000
- BR R14 AND RETURN TO CALLER. 00503000
- * 00504000
- * LOAD POINTER TO NEXT ACTIVE DISK TABLE BLOCK IN CHAIN 00505000
- * 00506000
- USING ADTSECT,R1 00507000
- ADTNXT1 L R1,ADTPTR LOAD POINTER TO NEXT ADT BLOCK IN CHAIN 00508000
- LTR R1,R1 CHECK TO MAKE SURE TABLE EXISTS 00509000
- BZ ADTNXT2 ERROR IF NO TABLE(S) ARE LEFT 00510000
- SR R15,R15 SUCCESSFUL RETURN CODE 00511000
- BR R14 AND RETURN TO CALLER. 00512000
- * 00513000
- DROP R1 00514000
- USING ADLSECT,R15 ... 00515000
- ERROR1 LM R9,R10,ADLREGS RESTORE REGISTERS (FOR ADTLKP ONLY) 00516000
- * 00517000
- ADTNXT2 LA R15,1 ERROR 1 = NOT FOUND OR TABLES EXHAUSTED 00518000
- LTR R15,R15 SET CONDITION-CODE FOR CONVENIENCE OF CALLER 00519000
- BR R14 AND RETURN TO CALLER. 00520000
- * 00521000
- DROP R15 00522000
- EJECT 00523000
- DMSLADAD EQU * V0742 00524000
- BALR R15,0 V0742 00525000
- USING *,R15 V0742 00526000
- STM R0,R15,0(R13) SAVE REGS. V0742 00527000
- L R12,ALAD SET BASE V0742 00528000
- USING DMSLAD,R12 V0742 00529000
- DROP R15 V0742 00530000
- LR R2,R1 SAVE PLIST ADDR. V0742 00531000
- L R5,8(,R1) GET AUX. DIRECTORY ADDR. V0742 00532000
- LTR R5,R5 AUX. DIRECTORY SPECIFIED? V0742 00533000
- BZ ADERR1 NO, ERROR V0742 00534000
- BM ABNCLR IF NEGATIVE, CALLED FROM ABN @VA00985 00535000
- CLI 12(R2),X'80' IS THIS A CLEAR REQUEST? V0742 00536000
- BE LADADCLR YES, GO TO CLEAR CODE V0742 00537000
- LA R1,8(,R5) FIRST FST IN AUX. @VM03224 00538000
- BAL R14,LKP GO GET ADT @VM03224 00539000
- BC 2,ADERR1 ERROR RETURN @VM03224 00540000
- LR R7,R1 @VM03224 00541000
- USING ADTSECT,R7 @VM03224 00542000
- TM ADTFLG1,ADTFRO+ADTFRW IS DISK ACCESSED? @VM03224 00543000
- BZ ADERR1 NO, ERROR @VM03224 00544000
- TM ADTFLG2,ADTFROS SHOLUD NOT BE ACC. AS SUCH @VM03224 00545000
- BO ADERR1 ERROR IF SO @VM03224 00546000
- TM ADTFLG1,ADTFFSTV IS THIS A VAR. FST @VM03224 00547000
- BO SETVAR YES @VM03224 00548000
- LA R0,101 DMSFREE SIZE @VM03224 00549000
- DMSFREE DWORDS=(0),TYPE=NUCLEUS,TYPCALL=BALR V0742 00550000
- ST R1,12(,R2) MODIFY USER PLIST FOR CLEAR @VM03224 00551000
- MVI 12(R2),X'80' @VM03224 00552000
- L R6,4(,R5) GET AUX. LENGTH @VM03224 00553000
- S R6,=F'08' SUBSTRACT HEADER @VM03224 00554000
- LA R5,8(R5) GET PAST AUX HEADER @VM03224 00555000
- MOVE EQU * @VM03224 00556000
- LR R3,R1 GOTTON CORE IN R3 @VM03224 00557000
- LA R4,20 NO. OF FST PER BLOCK @VM03224 00558000
- MOVELOOP EQU * @VM03224 00559000
- LTR R6,R6 END OF AUX.? @VM03224 00560000
- BZ PADZERO YES, GO PAD REST @VM03224 00561000
- MVC 0(40,R1),0(R5) MOVE FIRST/NEXT FST @VM03224 00562000
- LA R1,40(R1) INCREMENT COPY ADDR. @VM03224 00563000
- LA R5,40(R5) AND AUX ADDR. @VM03224 00564000
- S R6,=F'40' DECREMENT AUX LENGTH @VM03224 00565000
- BCT R4,MOVELOOP LOOP @VM03224 00566000
- B CHAIN DONE WITH BLOCK @VM03224 00567000
- PADZERO EQU * @VM03224 00568000
- MVI 0(R1),X'00' PAD REST OF BLOCK WITH 0 @VM03224 00569000
- MVC 1(39,R1),0(R1) @VM03224 00570000
- LA R1,40(R1) INCREMENT COPY ADDR @VM03224 00571000
- BCT R4,PADZERO @VM03224 00572000
- CHAIN EQU * @VM03224 00573000
- L R8,ADTFDA GET FIRST FST BLOCK ADDR @VM03224 00574000
- LA R8,8(R8) PLUS HEADER @VM03224 00575000
- CKNEXT EQU * @VM03224 00576000
- LR R10,R8 PUT ADDR IN R10 @VM03224 00577000
- LA R8,800(R8) DOWN TO NEXT POINTER @VM03224 00578000
- L R9,0(,R8) LOAD NEXT POINTER @VM03224 00579000
- LTR R9,R9 IS THERE ONE @VM03224 00580000
- BZ ENDOFCH NO, END OF CHAIN @VM03224 00581000
- LR R8,R9 YES, NEXT IN R8 @VM03224 00582000
- B CKNEXT @VM03224 00583000
- ENDOFCH EQU * @VM03224 00584000
- ST R3,0(,R8) SET NEXT POINTER @VM03224 00585000
- ST R10,4(,R1) SET PREVIOUS POINTER IN COPY @VM03224 00586000
- SR R10,R10 ZERO R10 @VM03224 00587000
- ST R10,0(,R1) ZERO NEXT POINTER IN COPY @VM03224 00588000
- LTR R6,R6 AUX DONE? @VM03224 00589000
- BZ FINI YES @VM03224 00590000
- LA R0,101 NEXT DMSFREE LENGTH @VM03224 00591000
- DMSFREE DWORDS=(0),TYPE=NUCLEUS,TYPCALL=BALR @VM03224 00592000
- B MOVE GO MOVE NEXT BLOCK @VM03224 00593000
- SETVAR EQU * @VM03224 00594000
- L R3,4(,R5) GET AUX LENGTH @VM03224 00595000
- LA R3,8(R3) PLUS HEADER @VM03224 00596000
- LR R4,R3 SAVE REAL LENGTH IN R4 @VM03224 00597000
- LA R3,7(R3) ROUND TO DOUBLE WORD @VM03224 00598000
- SRL R3,3 MAKE DOUBLE WORDS @VM03224 00599000
- LR R0,R3 @VM03224 00600000
- DMSFREE DWORDS=(0),TYPE=NUCLEUS,TYPCALL=BALR @VM03224 00601000
- ST R1,12(,R2) @VM03224 00602000
- MVI 12(R2),X'80' INDICATE NEXT CALL CLEAR @VM03224 00603000
- LR R3,R1 GOTTON CORE IN R3 @VM03224 00604000
- LA R6,255 MOVE LENGTH @VM03224 00605000
- ADLOOP EQU * @VM03224 00606000
- CR R4,R6 AUX < 255 @VM03224 00607000
- BH ADLOOP2 NO @VM03224 00608000
- LR R6,R4 YES, REAL LENGTH IN R6 @VM03224 00609000
- BCTR R6,0 @VM03224 00610000
- ADLOOP2 EQU * @VM03224 00611000
- EX R6,DIRTMOVE @VM03224 00612000
- LA R3,1(R6,R3) INCREMENT COPY ADDR. @VM03224 00613000
- LA R5,1(R6,R5) AND COPY ADDR. @VM03224 00614000
- SR R4,R6 DECREMENT LENGTH @VM03224 00615000
- BCTR R4,0 @VM03224 00616000
- LTR R4,R4 ANY LEFT? @VM03224 00617000
- BNZ ADLOOP @VM03224 00618000
- ST R1,12(,R2) SET COPY ADDR IN USER PLIST @VM03224 00619000
- MVI 12(R2),X'80' @VM03224 00620000
- L R8,ADTFDA GET FST BLOCK ADDR @VM03224 00621000
- L R9,4(,R8) GET LENGTH @VM03224 00622000
- LA R9,0(R9) ZERO HIGH ORDER BYTE @VM03224 00623000
- LA R8,8(R8) SKIP HEADER @VM03224 00624000
- AR R8,R9 POINT TO EXT. POINTER @VM03224 00625000
- ST R1,0(,R8) SET EXT. POINTER @VM03224 00626000
- FINI EQU * @VM03224 00627000
- OI ADTFLG2,ADTPSTM SET PSTAT CHAIN MODIFIED @VM03224 00628000
- DROP R7 @VM03224 00629000
- LADADRET EQU * V0742 00630000
- SR R15,R15 V0742 00631000
- LADADERT EQU * V0742 00632000
- LM R0,R14,0(R13) RESTORE REGS. V0742 00633000
- BR R14 RETURN V0742 00634000
- SPACE 2 V0742 00635000
- LADADCLR EQU * @VM03224 00636000
- ABNCLR EQU * @VM03224 00637000
- SR R1,R1 @VM03224 00638000
- CLEAR2 EQU * @VM03224 00639000
- LA R15,DMSLADN GET FIRST OR NEXT ADT @VM03224 00640000
- BALR R14,R15 @VM03224 00641000
- BC 2,LADADRET @VM03224 00642000
- USING ADTSECT,R1 @VM03224 00643000
- TM ADTFLG2,ADTPSTM HAS FST CHAIN BEEN MODIFIED? @VM03224 00644000
- BNO CLEAR2 NOT THIS ONE, CHECK NEXT @VM03224 00645000
- DROP R1 @VM03224 00646000
- LR R7,R1 MAKE R7 ADT BASE @VM03224 00647000
- USING ADTSECT,R7 @VM03224 00648000
- TM ADTFLG1,ADTFFSTV IS THIS VAR. FST @VM03224 00649000
- BO CLEARVAR YES @VM03224 00650000
- SR R4,R4 @VM03224 00651000
- L R5,ADTHBCT GET HYPER BLOCK COUNT @VM03224 00652000
- L R3,ADTFDA LOAD FIRST FST ADDR @VM03224 00653000
- LA R3,8(R3) PLUS HEADER @VM03224 00654000
- CLOOP EQU * @VM03224 00655000
- BCT R5,CLOOP2 LOOP THROUGH MAIN FSTS @VM03224 00656000
- L R4,800(,R3) LOAD ADDR FIRST AUX FST @VM03224 00657000
- LTR R4,R4 IS THERE ONE? @VM03224 00658000
- BZ ADERR2 NO, ERROR NO AUX FST @VM03224 00659000
- B FNDAUX FOUND AUX, GO FRET IT @VM03224 00660000
- CLOOP2 EQU * @VM03224 00661000
- L R4,800(,R3) LOAD NEXT FST ADDR @VM03224 00662000
- LR R3,R4 PUT IT IN R3 @VM03224 00663000
- B CLOOP AND LOOP @VM03224 00664000
- FNDAUX EQU * @VM03224 00665000
- LA R5,800(,R3) SAVE ADDR. LAST NON-AUX FST @VM03224 00666000
- FNDAUX2 EQU * @VM03224 00667000
- L R3,800(,R4) LOAD NEXT AUX POINTER @VM03224 00668000
- LR R1,R4 FRET ADDR IN R1 @VM03224 00669000
- LA R0,101 LENGTH IN R0 @VM03224 00670000
- DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @VM03224 00671000
- LTR R3,R3 ANY MORE AUX FSTS? @VM03224 00672000
- BZ AUXFREED NO @VM03224 00673000
- LR R4,R3 NEXT FST ADDR IN R4 @VM03224 00674000
- B FNDAUX2 YES, FRET NEXT @VM03224 00675000
- AUXFREED EQU * @VM03224 00676000
- ST R3,0(,R5) ZERO NEXT POINTER IN LAST @VM03224 00677000
- NI ADTFLG2,255-ADTPSTM TURN OFF FST MOD. BIT @VM03224 00678000
- B LADADRET RETURN @VM03224 00679000
- CLEARVAR EQU * @VM03224 00680000
- L R3,ADTFDA LOAD FST POINTER @VM03224 00681000
- L R4,4(,R3) LOAD LENGTH @VM03224 00682000
- LA R4,0(R4) CLEAR HIGH ORDER BYTE @VM03224 00683000
- LA R5,8(R4,R3) SAVE NEXT POINTER IN MAIN FST@VM03224 00684000
- L R3,8(R4,R3) LOAD NEXT POINTER @VM03224 00685000
- LTR R3,R3 THIS SHOULD BE AUX FST @VM03224 00686000
- BZ ADERR2 IF ZERO, AUX NOT SET @VM03224 00687000
- L R1,4(,R3) LOAD AUX FST LENGTH @VA02287 00688300
- LA R0,15(R1) PLUS HEADER & ROUND TO DBLWD. @VA02287 00688600
- SRL R0,3 DOWN TO DOUBLE WORDS @VM03224 00689000
- LR R1,R3 ADDR IN R1 @VM03224 00690000
- DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @VM03224 00691000
- SR R3,R3 ZERO R3 @VM03224 00692000
- ST R3,0(,R5) ZERO NEXT POINTER IN FST @VM03224 00693000
- NI ADTFLG2,255-ADTPSTM TURN OFF FST MOD. BIT @VM03224 00694000
- B LADADRET RETURN @VM03224 00695000
- DROP R7 @VM03224 00696000
- SPACE 2 @VA00985 00697000
- ADERR1 EQU * @VA00985 00698000
- LA R15,1 SET RETURN CODE V0742 00699000
- LTR R15,R15 SET CONDITION CODE V0742 00700000
- B LADADERT GO TO RETURN V0742 00701000
- SPACE 1 V0742 00702000
- ADERR2 EQU * V0742 00703000
- LA R15,2 SET RETURN CODE V0742 00704000
- LTR R15,R15 SET CONDITION CODE V0742 00705000
- B LADADERT RETURN V0742 00706000
- SPACE 3 V0742 00707000
- DIRTMOVE MVC 0(0,R3),0(R5) USED TO COPY AUX. DIRT. V0742 00708000
- EJECT V0742 00709000
- *********************************************************************** 00710000
- * 00711000
- * "ADTLKW" 00712000
- * 00713000
- * 24(R1) MUST IN EACH ENTRY CASE POINT TO DISK MODE LETTER(S) 00714000
- * 00715000
- * ENTRY OPTIONS ARE AS FOLLOWS: 00716000
- * 00717000
- * 1. 24(R1) ALPHABETIC (A TO Z): 00718000
- * 00719000
- * SEARCHES FOR LOGGED-IN READ-WRITE DISK 00720000
- * CORRESPONDING TO GIVEN MODE-LETTER. 00721000
- * 00722000
- * ENTRY CONDITIONS: 00723000
- * R0 IMMATERIAL 00724000
- * R1 SUCH THAT 24(R1) IS MODE LETTER (A TO Z) 00725000
- * 00726000
- * CALLING SEQUENCE: 00727000
- * L R15,AADTLKW WHERE AADTLKW = V(ADTLKW) 00728000
- * BALR R14,R15 ... 00729000
- * 00730000
- * COMMON EXIT CONDITIONS (FOR ALL ENTRY OPTIONS): 00731000
- * 00732000
- * DESIRED CONDITION(S) MET = "NORMAL RETURN": 00733000
- * 00734000
- * R15 = 0 (AND CONDITION-CODE = 0) 00735000
- * R0 = NUMBER OF 800-BYTE RECORDS LEFT ON DISK 00736000
- * ("ADTLEFT" LESS "ADTRES" RESERVE-COUNT) 00737000
- * R1 = POINTER TO (ADDRESS OF) ADT BLOCK FOR THIS DISK. 00738000
- * R2-R14 SAME AS AT ENTRY. 00739000
- * 00740000
- * DESIRED CONDITION(S) NOT MET (OR INVALID CALL): 00741000
- * 00742000
- * R15 = 1 (AND CONDTION-CODE = 2) 00743000
- * R0-R14 SAME AS AT ENTRY. 00744000
- * 00745000
- * 00746000
- * 2. 24(R1) = '*' 00747000
- * 00748000
- * SEARCHES FOR "FIRST" OR "NEXT" LOGGED-IN READ/WRITE DISK 00749000
- * 00750000
- * ENTRY CONDITIONS: 00751000
- * R0 = 0 TO START SEARCH AT "FIRST" R/W DISK. 00752000
- * R0 = NONZERO ADDRESS - RESUME SEARCH AT "NEXT" ADT BLOCK 00753000
- * R1 SUCH THAT 24(R1) = '*' 00754000
- * 00755000
- * (USING CALLING SEQUENCE & RETURN CODES, AS ABOVE). 00756000
- * 00757000
- * 00758000
- EJECT 00759000
- * 00760000
- * 00761000
- * 3. 24(R1) = '?' 00762000
- * 00763000
- * SEARCHES FOR FIRST READ-WRITE DISK WITH "ENOUGH ROOM" 00764000
- * TO WRITE A FILE CONSISTING OF NUMBER OF DATA-BLOCKS 00765000
- * SPECIFIED BY CALLER. 00766000
- * 00767000
- * ENTRY CONDITIONS: 00768000
- * R0 = NUMBER OF 800-BYTE DATA BLOCKS 00769000
- * DESIRED TO BE WRITTEN. 00770000
- * R1 SUCH THAT 24(R1) = '?' 00771000
- * 00772000
- * (USING CALLING SEQUENCE & RETURN CODES, AS ABOVE). 00773000
- * 00774000
- * 4. 24-25(R1) = '??' 00775000
- * 00776000
- * SEARCHES FOR READ-WRITE DISK WITH THE MOST ROOM 00777000
- * 00778000
- * ENTRY CONDITIONS: 00779000
- * R0 IMMATERIAL 00780000
- * R1 SUCH THAT 24-25(R1) = '??' 00781000
- * 00782000
- * (USING CALLING SEQUENCE & RETURN CODES, AS ABOVE). 00783000
- * 00784000
- *********************************************************************** 00785000
- * 00786000
- * 00787000
- DMSLADW FSENTR REGSAV0 "ADTLKW" -- USE LOW-LEVEL SAVE AREA 00788000
- LA R4,ADTW04 SET FOR MANY BCR'S - TO SAVE SPACE 00789000
- LA R5,ADTW06 SET R5-SWITCH TO TRF TO ADTW06. 00790000
- LA R6,ADTW02 SET R6-SWITCH TO TRF TO ADTW02 00791000
- CLI 24(R1),C'A' IS IT A-Z ? 00792000
- BL ADTW03 TRF IF LESS THAN A. 00793000
- CLI 24(R1),C'Z' ... 00794000
- BCR 2,R6 "BH ADTW02" (ERROR) IF GREATER THAN Z. 00795000
- L R15,=A(DMSLAD) CALL 'ADTLKP' 00796000
- BALR R14,R15 LET HIM FIND THE DISK 00797000
- BCR 7,R6 "BNZ ADTW02" (ERROR) IF NOT FOUND. 00798000
- USING ADTSECT,R1 REFERENCE ADT-BLOCK FOUND 00799000
- TM ADTFLG1,ADTFRW LOGGED IN R/W DISK THERE ? 00800000
- BO ADTW05 TRF IF YES (GOOD SHOW). 00801000
- DROP R1 00802000
- ADTW02 LA R15,1 ERROR 1 FOR CONDITION(S) NOT MET. 00803000
- LM R0,R14,REGSAV0 RESTORE R0 THRU R14, 00804000
- LTR R15,R15 SET CONDITION-CODE FOR CONVENIENCE OF CALLER 00805000
- BR R14 AND EXIT. 00806000
- * 00807000
- ADTW03 CLI 24(R1),C'*' IS IT AN ASTERISK ? 00808000
- BNE ADTW07 IF NOT, TRY QUESTION-MARK. 00809000
- LR R1,R0 SET UP R1 FOR USE BY ADTNXT, 00810000
- * 00811000
- ADTW04 L R15,=A(DMSLADN) CALL 'ADTNXT' TO FIND NEXT ADT 00812000
- BALR R14,R15 ... 00813000
- BCR 7,R6 "BNZ" IF NO ADT BLOCK(S) ARE LEFT. 00814000
- USING ADTSECT,R1 REFERENCE BLOCK FOUND 00815000
- TM ADTFLG1,ADTFRW LOGGED-IN R/W DISK THERE ? 00816000
- BCR 8,R4 "BZ ADTW04" IF NOT, KEEP LOOKING. 00817000
- ADTW05 L R0,ADTLEFT GET NUMBER OF 800-BYTE BLOCKS LEFT 00818000
- SH R0,ADTRES LESS THE RESERVE-COUNT 00819000
- DROP R1 00820000
- BR R5 BRANCH TO ADTW06, ADTW08, OR ADTW10. 00821000
- * 00822000
- ADTW08 CR R0,R3 FOR '?' ENTRY, ARE THERE ENOUGH RECORDS ? 00823000
- BCR 4,R4 "BL ADTW04" IF NOT; IF YES, DROP THRU. 00824000
- * 00825000
- ADTW06 LM R2,R14,REGSAV0+8 RESTORE R2 THRU R14 00826000
- SR R15,R15 CLEAR R15 (AND C.C. = 0) 00827000
- BR R14 RETURN TO CALLER 00828000
- * 00829000
- ADTW07 CLI 24(R1),C'?' MUST BE A QUESTION-MARK, THEN. 00830000
- BCR 7,R6 "BNE" IF IT ISN'T (AN ERROR). 00831000
- SR R2,R2 CLEAR R2, 00832000
- CLI 25(R1),C'?' IS IT DOUBLE QUESTION-MARK ?? 00833000
- BE ADTW09 TRF IF YES. 00834000
- LTR R3,R0 GET NO. OF RECORDS WANTED, 00835000
- BCR 13,R6 "BNP ADTW02" (AN ERROR) IF NOT > 0. 00836000
- LA R3,739(,R3) ADD SPECIAL ADJUSTER ("JUST RIGHT") JS 00837000
- D R2,F400 COMPUTE HOW MANY CHAIN-LINKS NEEDED 00838000
- AR R3,R0 ADD ORIGINAL BLOCK COUNT 00839000
- LA R5,ADTW08 SET R5-SWITCH FOR '?' HANDLING 00840000
- SR R1,R1 SET TO START WITH FIRST BLOCK 00841000
- BR R4 "B ADTW04" TO CHECK AVAILABLE ADT-BLOCKS 00842000
- * 00843000
- ADTW09 LA R5,ADTW10 SET R5-SWITCH AND 00844000
- LA R6,ADTW11 R6-SWITCH 00845000
- SR R1,R1 SET TO START WITH FIRST BLOCK, 00846000
- BR R4 "B ADTW04" TO SEARCH ADT BLOCKS. 00847000
- * 00848000
- ADTW10 CR R0,R2 BIGGER THAN PREVIOUS BIGGEST ONE ? 00849000
- BCR 13,R4 "BNH ADTW04" IF NOT, KEEP LOOKING. 00850000
- LR R2,R0 REMEMBER NEW SIZE, 00851000
- LR R3,R1 REMEMBER DISK IT BELONGS TO, 00852000
- BR R4 KEEP LOOKING FOR A BIGGER ONE AT ADTW04. 00853000
- ADTW11 LTR R0,R2 DID WE HAVE ANYTHING AT ALL ? 00854000
- BNP ADTW02 ERROR IF NOT (BAD NEWS). 00855000
- LR R1,R3 SIZE & DISK IN R0-R1, 00856000
- B ADTW06 AND GO EXIT (WE'VE GOT IT). 00857000
- EJECT 00858000
- * 00859000
- * CONSTANTS: 00860000
- * 00861000
- AADTFVS DC V(ADTFVS) POINTER TO ADTLKP FIXED VARIABLE STORAGE 00862000
- ADLPTR DC V(IADT) POINTS TO ACTIVE DISK TABLE 00863000
- F400 DC F'400' 00864000
- ALAD DC A(DMSLAD) V0742 00865000
- * 00866000
- * 00867000
- * PARAMETER LIST DEFINITION 00868000
- * 00869000
- PLM EQU 24 FILE MODE 00870000
- * 00871000
- * FIXED VARIABLE STORAGE 00872000
- * 00873000
- ADLSECT DSECT 00874000
- ADLREGS DS 2F SAVE AREA FOR TWO REGISTERS 00875000
- EJECT 00876000
- FSTD V0742 00877000
- ADT 00878000
- EJECT 00879000
- FVS 00880000
- NUCON 00881000
- SVCSECT 00882000
- * 00883000
- REGEQU 00884000
- * 00885000
- END 00886000
ibm/vm370-lib/cms/dmslad.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator