ibm:vm370-lib:cms:dmsros.assemble_src
Table of Contents
DMSROS Source
References
- Fixes Applied : 5
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [HRC004DS]
Source Listing
- DMSROS.ASSEMBLE.txt
- ROS TITLE 'DMSROS (CMS) VM/370 - RELEASE 6' 00001000
- SPACE 2 00002000
- *. 00003000
- * 00004000
- * 00005000
- * 00006000
- * MODULE NAME: 00007000
- * 00008000
- * DMSROS 00009000
- * 00010000
- * FUNCTION: 00011000
- * 00012000
- * TO ALLOW CMS TO ACCESS, STATE, READ, NOTE, POINT AND 00013000
- * BACKSPACE DATA SETS RESIDING ON O/S DISKS. 00014000
- * 00015000
- * ATTRIBUTES: 00016000
- * 00017000
- * SERIALLY REUSABLE, CORE RESIDENT ONLY WHEN AN OS DISK 00018000
- * IS ACCESSED 00019000
- * 00020000
- * ENTRY POINTS: 00021000
- * 00022000
- * DMSROS ROSACC (ACCESS O/S DISKS) 00023000
- * DMSROS+4 ROSSTT (STATE O/S DISKS) 00024000
- * DMSROS+8 ROSRPS (READ O/S DISKS) 00025000
- * DMSROS+12 ROSFIND (FIND MEMBER IN O/S PDS) 00026000
- * DMSROS+16 ROSNTPTB (NOTE, POINT AND BSP FUNCTIONS) 00027000
- * 00028000
- * EXIT CONDITIONS: 00029000
- * 00030000
- * ACCESS R15= 80 I/O ERROR R15= 0 NO ERROR 00031000
- * DMSROS723I FM (CCU) R/O - OS 00032000
- * DMSROS725I CCU ALSO = FM - O/S DISK 00033000
- * STATE R15= 80 I/O ERROR R15= 81 READ PROTECTED 00034000
- * R15= 82 NOT BSAM, BPAM OR QSAM R15= 0 NO ERRORS 00035000
- * R15= 83 DOS DATA SET WITH MORE THAN 16 EXTENTS 00036000
- * R15= 88 DATA SET NOT FOUND 00037000
- * DMSROS227I PROCESSING VOLUME 'NN' IN DATA SET NAME 00038000
- * 'DATA SET NAME' 00039000
- * DMSROS228I USER LABELS BYPASSED ON DATA SET 00040000
- * 'DATA SET NAME' 00041000
- * READ R15= 80 I/O ERROR R15= 12 END OF FILE 00042000
- * R15= 0 NO ERRORS 00043000
- * FIND R15= 8 I/O ERROR R15= 4 MEMBER NOT FOUND 00044000
- * R15= 0 MEMBER FOUND 00045000
- * NOTE NO ABNORMAL RETURN 00046000
- * POINT NO ABNORMAL RETURN 00047000
- * BACKSPACE R15= 80 I/O ERROR R15= 0 NO ERRORS 00048000
- * 00049000
- * EXTERNAL REFERENCES: 00050000
- * 00051000
- * NUCON, OSFST, ADT, CMSCB 00052000
- * 00053000
- * CALLS TO OTHER ROUTINES: 00054000
- * 00055000
- * DMSERR, ADTNXT, DMSFREE, DMSFRET 00056000
- * 00057000
- * TABLES/WORKAREAS: 00058000
- * 00059000
- * REGISTER USAGE: 00060000
- * 00061000
- * R0 NUCON 00062000
- * R1 OPSECT 00063000
- * R4 FST 00064000
- * R5 ADT 00065000
- * R7 FCB 00066000
- * R11 DMSROS 1ST. BASE 00067000
- * R12 DMSROS 2ND. BASE 00068000
- * 00069000
- * OPERATION: 00070000
- * 00071000
- * 00072000
- * ROSACC: FINALIZE ACCESS OF AN O/S DATA SET 00073000
- * 00073500
- * ROSACC GETS CONTROL FROM DMSACM ONCE IT IS DETERMINED THAT 00074000
- * THE LABEL OF THE DISK BELONGS TO AN O/S - DISK. THE ROSACC 00075000
- * ROUTINE WILL READ THE FORMAT 4 DSCB OF THE DISK TO FURTHER 00076000
- * VERIFY THE VALIDITY OF THE O/S DISK. THE ADT IS UPDATED TO 00077000
- * CONTAIN THE ADDRESS OF THE HIGH EXTENT OF THE VTOC (IF THE 00078000
- * DISK IS DOS), OR THE ADDRESS OF THE LAST ACTIVE FORMAT ONE 00079000
- * DSCB (IF THE DISK IS O/S), THE NUMBER OF CYLINDERS IN THE 00080000
- * DISK, AND IF THE DISK IS A DOS FORMATTED DISK, A FLAG IS 00081000
- * SET IN THE ADT. INFORMATION MESSAGES ARE ISSUED TO NOTIFY 00082000
- * THE USER THE DISK HAS BEEN ACCESSED IN READ-ONLY MODE, AND 00083000
- * IF THE DISK IS ALREADY ACCESSED AS ANOTHER DISK, ANOTHER 00084000
- * INFORMATION MESSAGE IS ISSUED TO THAT EFFECT. FINALLY THE 00085000
- * ADTFLG1 FLAG IN THE ADT IS ZEROED, THE ADTFLG2 FLAG IS SET 00086000
- * TO REFLECT THAT AN O/S DISK HAS BEEN ACCESSED, AND CONTROL 00087000
- * RETURNS TO THE CALLER. 00088000
- * 00089000
- * 00090000
- * ROSSTT: VERIFY EXISTENCE OF AN O/S OR DOS DATA SET AND TO 00091500
- * VERIFY THAT THE ATTRIBUTES OF THE DATA SET ARE 00092000
- * SUPPORETED UNDER CMS. 00092500
- * 00093000
- * ROSSTT GETS CONTROL FROM DMSSTT ONCE IT IS DETERMINED THAT 00093500
- * THE STATE OPERATION IS TO AN O/S OR DOS FORMATTED DISK. 00094000
- * THE ROSSTT ROUTINE WILL SEARCH FOR A MATCHING CMSCB OR DOSCB 00094500
- * ASSOCIATED TO THE DATA SET VIA A PREVIOUS FILEDEF OR DLBL. 00095000
- * THEN ROSSTT TRIES TO FIND IF THERE IS AN ACTIVE OSFST ASSO- 00095500
- * CIATED WITH THE DATA SET. IF AN ACTIVE ONE IS FOUND, CONTROL 00096000
- * THEN PASSES TO ROSSTRET, OTHERWISE THE DSNAME BLOCK IS BUILT, 00096500
- * ITS ADDRESS IS PLACED IN THE CMSCB OR DOSCB, AS MAY BE, AND 00097000
- * THE DATA SET NAME IS MOVED TO THE ACQURED BLOCK. THEN AN 00097500
- * OSFST BLOCK IS ACQUIRED AND IS CHAINED TO THE OSFST CHAIN. 00098000
- * THE ADDRESS OF THE OSFST BLOCK IS THEN PLACED IN THE CMSCB 00098500
- * OR DOSCB AS MAY BE THE CASE. SOME FIELDS IN THE OSFST ARE 00099000
- * INITIALIZED (DATA SET NAME, DISK ADDRESS, AND DISK MODE). 00099500
- * NOW, THE FORMAT 1 DSCB FOR THE DATA SET IS READ AND A CHECK 00100000
- * IS MADE FOR UNSUPPORTED OPTIONS ( READ PROTECT, BDAM, AND 00100500
- * ISAM ). ERRORS CAUSE CONTROL TO BE PASSED TO THE CALLING 00101000
- * ROUTINE WITH AN ERROR CODE. ALL EXTENTS OF THE DATA SET ARE 00101500
- * GROUPED TOGETHER (BY READING THE FORMAT 3 DSCB IF NECESSARY) 00102000
- * AND ARE CHECKED FOR VALIDITY. IF ANY USER LABELS EXITS, THEY 00102500
- * ARE BYPASSED AND A MESSAGE IS ISSUED TO THAT EFFECT. 00103000
- * NEXT, IF THE CMS/DOS ENVIRONMENT IS NOT ACTIVE, THE FORMAT 1 00103500
- * LABEL FIELDS BLKSIZE, LRECL AND RECFM ARE MOVED TO THE OSFST 00104000
- * AND CONTROL PASSES TO ROSSTRET. 00104500
- * 00105000
- * ROSSTRET: IF THE DISK IS NOT A DOS 00113000
- * DISK CONTROL IS PASSED BACK TO THE CALLER. IF THE SPECIFIED 00114000
- * DISK IS A DOS DISK, OS FST BLKSIZE, LRECL AND RECFM 00115000
- * FIELDS THAT WERE NOT SPECIFIED IN THE DSCB1 ARE FILLED IN 00116000
- * FROM THE CMSCB OR, IF THE CMSCB FIELDS ARE ZERO, THEY 00117000
- * ARE DEFAULTED TO BLKSIZE= 32760, LRECL= 32760 AND RECFM= U. 00118000
- * CONTROL IS THEN RETURNED TO THE CALLER. 00119000
- * 00120000
- * ROSRPS: READ NEXT RECORD OF OS DATA SET 00121000
- * 00121500
- * UPON ENTRY TO THE ROSRPS ENTRY POINT, THE READ ROUTINE 00122000
- * CALLS CHKXTNT AND, IF THE CURRENT CCHHR IS XERO, SETXTNT 00123000
- * TO INSURE THE CCHHR AND EXTENT BOUNDARIES ARE SET CORRECT. 00124000
- * IT THEN CALLS DISKIO AND IF NECESSARY CHKSENSE AND 00125000
- * GETALT TO READ THE NEXT RECORD. IF THERE ARE NO ERRORS 00126000
- * OR IF AN UNRECOVERABLE ERROR WAS ENCOUNTERED, CONTROL 00127000
- * IS RETURNED TO THE USER WITH EITHER A ZERO (I/O OK) 00128000
- * OR AN EIGHTY (I/O ERROR) IN REG15. IF A RECOVERABLE 00129000
- * ERROR IS ENCOUNTERED, THE CCW'S AND BUFFER POINTERS 00130000
- * ARE UPDATED AS NECESSARY AND CHKXTNT AND DISKIO 00131000
- * ARE RECALLED TO READ THE NEXT RECORD. 00132000
- * 00133000
- * 00134000
- * ROSFIND: SET CCHHR TO POINT TO MEMBER SPECIFIED IN 00135000
- * FCBMEMBR OR, IF FCBMVPDS BIT IS ON, SET CCHHR 00136000
- * TO POINT TO NEXT MEMBER HIGHER THAN FCBMEMBR 00137000
- * AND SET NEW MEMBER NAME IN FCBMEMBR. 00138000
- * 00138500
- * UPON ENTRY, ROSFND SETS UP A CCW TO SEARCH FOR A HIGHER 00139000
- * MEMBER NAME IF THE FCBMVPDS BIT IS ON OR AN EQUAL 00140000
- * MEMBER NAME IF THE FCBMVPDS BIT IS NOT ON. IT 00141000
- * THEN CALLS SETXTNT, DISKIO AND IF NEEDED CHKSENSE, 00142000
- * AND GETALT TO READ IN THE DIRECTORY BLOCK THAT CONTAINS 00143000
- * THE MEMBER NAME REQUESTED. AFTER THE BLOCK HAS BEEN 00144000
- * READ, IT IS SEARCHED FOR THE REQUESTED MEMBER NAME. 00145000
- * IF THE MEMBER NAME IS NOT FOUND, AN ERROR CODE 4 IS 00146000
- * PASSED BACK TO THE CALLER. IF AN I/O ERROR IS EN- 00147000
- * COUNTERED TRYING TO READ THE PDS BLOCK, AN ERROR 00148000
- * CODE 8 IS PASSED BACK TO THE CALLER. IF THE MEMBER 00149000
- * NAME IS FOUND, TTRCNVRT IS CALLED TO CONVERT THE 00150000
- * RELATIVE TRAK ADDRESS TO A CCHH AND THE ADDRESS OF THE 00151000
- * MEMBER ENTRY IS PASSED BACK TO THE CALLER. 00152000
- * 00153000
- * 00154000
- * ROSNTPTB: GET CURRENT TTR, SET CURRENT CCHHR TO TTR, 00155000
- * BACKSPACE TO PREVIOUS RECORD 00156000
- * 00156500
- * UPON ENTRY TO ROSNTPTB, A CHECK IS MADE TO 00157000
- * SEE IF A NOTE, POINT OR BSP FUNCTION HAS BEEN 00158000
- * REQUESTED. IF REG 0 IS ZERO, A NOTE IS ASSUMED. 00159000
- * THE NOTE ROUTINE CALLS CHRCNVRT TO CONVERT THE CCHH 00160000
- * TO A RELATIVE TRACK AND RETURNS CONTROL TO THE 00161000
- * CALLER WITH THE TTR IN REG 0. IF REG 0 WAS 00162000
- * POSITIVE ON ENTRY TO DMSROS, A POINT IS ASSUMED 00163000
- * AND A TTR IS LOADED FROM THE ADDRESS SPECIFIED IN 00164000
- * R0 AND TTRCNVRT AND SETXTNT ARE CALLED TO CONVERT 00165000
- * THE TTR TO A CCHHR AND CONTROL IS RETURNED TO THE 00166000
- * CALLER. IF REG 0 WAS NEGATIVE ON ENTRY TO DMSROS, A 00167000
- * BSP (BACKSPACE) IS ASSUMED. THE BACKSPACE CODE CHECKS 00168000
- * IF THE CURRENT POSITION IS THE BEGINNING OF A TRACK. 00169000
- * IF NOT, THE RECORD NUMBER IS DECREMENTED BY ONE AND 00170000
- * CONTROL IS RETURNED TO THE CALLER. IF THE CURRENT 00171000
- * POSITION IS THE BEGINNING OF A TRACK, CHRCNVRT IS 00172000
- * CALLED TO GET THE CURRENT RELATIVE TRACK, THE RELATIVE 00173000
- * TRACK IS DECREMENTED BY ONE AND TTRCNVRT IS CALLED 00174000
- * TO GET THE CURRENT CCHH. RDCNT IS THEN CALLED TO 00175000
- * GET THE CURRENT RECORD NUMBER OF THE LAST RECORD ON 00176000
- * THE NEW TRACK, SETXTNT IS CALLED TO SET THE NEW EXTENT 00177000
- * BOUNDARIES AND CONTROL IS RETURNED TO THE CALLER. 00178000
- * 00179000
- * 00180000
- * ROUTINES COMMON TO ALL OF DMSROS: 00181000
- * 00182000
- * CHRCNVRT: CONVERTS A CCHH ADDRESS TO A RELATIVE TRACK 00183000
- * ADDRESS. 00184000
- * TTRCNVRT: CONVERTS A RELATIVE TRACK ADDRESS TO AN 00185000
- * ACTUAL ADDRESS (CCHHR). 00186000
- * 00187000
- * CHKSENSE: IF A UNIT CHECK IS ENCOUNTERED, CHECKS 00188000
- * SENSE BITS TO DETERMINE IF THE ERROR IS 00189000
- * RECOVERABLE. 00190000
- * 00191000
- * CHKXTNT: CHECKS TO SEE IF END OF SPLIT CYL OR END OF 00192000
- * ENTENT HAS BEEN REACHED AND IF SO UPDATES TO 00193000
- * THE NEXT SPLIT CYL OR EXTENT. 00194000
- * 00195000
- * DISKIO: STARTS I/O ON CCW STRING VIA A DIAGNOSE X'20' 00196000
- * 00197000
- * GETALT: SWITCHES FROM ALTERNATE TRACK TO PRIME TRACK 00198000
- * AND FROM PRIME TRACK TO ALTERNATE TRACK. 00199000
- * 00200000
- * RDCNT: READS COUNT FIELDS ON TRACK TO DETERMINE 00201000
- * LAST RECORD NUMBER ON TRACK. 00202000
- * 00203000
- * SETXTNT: SET OSFSTEND TO END OF EXTENT AND, IF A NEW 00204000
- * EXTENT IS SPECIFIED, SETS CCHHR TO THE START 00205000
- * OF THE EXTENT. 00206000
- * 00207000
- * 00208000
- *. 00209000
- PRINT NOGEN 00210000
- DMSROS CSECT @V201122 00211000
- SPACE 1 00212000
- USING NUCON,R0 @V201122 00213000
- USING DMSROS,R11,R12 @V201122 00214000
- USING DMSROS,R15 TEMP BASE REG @V201122 00215000
- B ROSACC ACCESS O/S DISK @V201122 00216000
- B ROSSTT STATE O/S DISK @V201122 00217000
- B ROSRPS READ O/S DISK SEQUENTIALLY @V201122 00218000
- B ROSFIND FIND MEMBER IN OS PDS @V201122 00219000
- B ROSNTPTB GO TO NOTE BSP OR POINT ROUTINE @V201122 00220000
- *************************************************************** 00221000
- * 00222000
- * READ VTOC'S FORMAT 4 DSCB TO COMPLETE ACCESS OF O/S DI 00223000
- * 00224000
- *************************************************************** 00225000
- ROSACC STM R0,R14,SAVEREGS SAVE ALL REGISTERS @V201101 00226000
- LR R5,R11 SET UP ADT BASE @V201101 00227000
- LM R11,R12,BASE SET UP ADDRESSABILITY @V201101 00228000
- DROP R15 @V201101 00229000
- USING ADTSECT,R5 @V201101 00230000
- * 00231000
- L R1,ADTDTA GET DEVICE ADDR. POINTER @V201101 00232000
- L R1,DTAD(,R1) GET DEVICE ADDRESS @V201101 00233000
- ST R1,OSADTDSK SAVE DISK ADDRESS IN OSADT @V201101 00234000
- SRL R1,16 CUU TO BOTTOM OF REG1 @V201101 00235000
- * 00236000
- MVC CCHHR(5),OSADTVTA GET VTOC ADDRESS @V201101 00237000
- MVC SEEK+2(4),CCHHR SET SEEK ADDRESS @V201101 00238000
- LA R0,RDDSCB4 GET CHANNEL PROG. @V201101 00239000
- BAL R14,ACCESSIO READ FORMAT 4 DSCB @V201101 00240000
- B ERR80 I/O ERROR EXIT @V201101 00241000
- B ERR80 ILI OR SOMETHING WORSE @V201101 00242000
- * 00243000
- MVC OSADTVTB(5),DS4VTOCE+6 VTOC END EXTENT @VA05420 00243160
- LA R8,RWL POINT TO READ/WRITE LIST @V305101 00243200
- LA R9,OSL AND ASSUME O/S DISK @V305101 00243300
- TM DS4VTOCI,DOSDASD+DS4VTOCX INDEXED VTOC ? @VA13649 00243500
- BO GETCYLS YES, OS DISK @VA13649 00243700
- TM DS4VTOCI,X'80' IS IT DOS FORMATTED DISK ? @V201101 00244000
- BZ GETCYLS NO, IT IS O/S DISK @V305101 00245100
- OI ADTFLG2,ADTFDOS SET DOS FLAG IN ADT @V201101 00246000
- LA R9,DOSL POINT TO DOS DISK SUB. LIST @V305101 00246100
- GETCYLS LH R1,DS4DEVSZ GET NO. CYLS IN DISK @V201101 00250000
- ST R1,ADTCYL SAVE IN ADT FOR LATER USE @V201101 00251000
- OI ADTFLG2,ADTFROS SET 2ND. FLAG TO INDICATE O/S@V201101 00253000
- TM ADTFLG3,ADTFORCE USER WANTS DISK R/O ? @VM03092 00254100
- BO MSG723 YES, LEAVE AS R/O THEN @V305101 00254200
- CLM R7,B'0001',MRW IS DISK LINKED R/O ? @V305101 00254300
- BNL MSG723 YES, LEAVE ADT ALONE @V305101 00254400
- LA R8,1(,R8) ADJUST TO WRITE SUB. LIST @V305101 00254500
- OI ADTFLG3,ADTFRWOS SIGNAL DOS/OS DISK R/W @V305101 00254600
- EJECT 00254700
- MSG723 NI ADTFLG1,ALL CLEAR FIRST FLAG BYTE @V305101 00254800
- DMSERR TEXT='.. (...) R/.. - ...',LET=I,NUM=723,CSECT=ACC, *00254900
- SUB=(CHARA,(ADTM,1),HEXA,OSADTDSK-2,CHARA,((R8),1), *00255000
- CHARA,(R9)),RENT=NO,DOT=NO @V305101 00255100
- EJECT 1 00258000
- SR R1,R1 ... @V201101 00259000
- LH R3,OSADTDSK SAVE DEVICE ADDR @V201101 00260000
- DROP R5 @V201101 00261000
- USING ADTSECT,R1 @V201101 00262000
- * 00263000
- ACCALSO L R15,VCADTNXT GET ADTNXT ADDRESS @VM03093 00264100
- BALR R14,R15 GET NEXT ADT IN CHAIN @V201101 00265000
- BNZ ACCRET NO MORE..RETURN @V201101 00266000
- CR R1,R5 SAME ADT AS BEFORE @V201101 00267000
- BE ACCALSO GET NEXT ONE THEN.. @V201101 00268000
- * 00269000
- CLC OSADTVTA(5),CCHHR SAME VOLUME ? @V201101 00270000
- BNE ACCALSO NO..KEEP LOOKING @V201101 00271000
- CH R3,OSADTDSK SAME DEVICE ADDRESS ? @V201101 00272000
- BNE ACCALSO NO..KEEP LOOKING @V201101 00273000
- LR R14,R1 SAVE REG. 1 @V201101 00274000
- LA R2,ADTM GET FILEMODE ADDRESS @V201101 00275000
- DMSERR TEXT='... ALSO = .. - ... DISK',LET=I,NUM=725,RENT=NO, *00276100
- SUB=(HEX,(R3),CHARA,((R2),1),CHARA,(R9)), @V305101*00276200
- CSECT=ACC,DOT=NO @V305101 00276300
- LR R1,R14 RESTORE REG. 1 @V201101 00278000
- B ACCALSO GET NEXT ADT IN CHAIN @V201101 00279000
- * 00280000
- ACCRET LM R0,R14,SAVEREGS RESTORE ALL REGS. @V201101 00281000
- SR R15,R15 ZERO RETURN CODE @V201101 00282000
- BR R14 RETURN TO CALLER @V201101 00283000
- DROP R1 @V201101 00284000
- USING ADTSECT,R5 @V201101 00285000
- * 00286000
- SPACE 2 00286100
- MRW DC X'80' READ/WRITE INDICATOR @V305101 00286200
- RWL DC CL2'OW' READ/WRITE MESSAGE SUBS. @V305101 00286300
- OSL DC CL3'OS' O/S DISK MESSAGE SUBS. @V305101 00286400
- DOSL DC CL3'DOS' DOS DISK MESSAGE SUBS. @V305101 00286500
- ALL EQU 0 CONSTANT @V305101 00286510
- EJECT 1 00287000
- *************************************************************** 00288000
- * 00289000
- * READ AND VERIFY FORMAT 1 DSCB FOR DATA SET 00290000
- * 00291000
- *************************************************************** 00292000
- USING DMSROS,R15 @V201122 00293000
- ROSSTT STM R0,R14,SAVEREGS SAVE REGS @V201122 00294000
- LM R11,R12,BASE SETUP BASE REGS @V201122 00295000
- DROP R15 @V201122 00296000
- XC INTREG14(4),INTREG14 CLEAR ERROR RETURN REG @V201122 00297000
- NI ROSFLAG,255-DYNAMIC CLEAR DYNAMIC FLAG @VA09241 00297500
- L R5,SAVEREGS+R11*4 SET ADT PTR FROM DMSLFS @V201122 00298000
- LR R1,R2 POINT TO STATE PLIST @V201122 00299000
- USING OPSECT,R1 @V201122 00300000
- USING OSFST,R4 @V201122 00301000
- LA R7,FCBFIRST LOOK FOR MATCHING FCB @V201105 00302000
- USING FCBSECT,R7 @V201105 00303000
- SR R4,R4 CLEAR OSFST REG @VM28889 00303100
- TM DOSFLAGS,DOSSVC CMS/DOS ACTIVE FOR SVC ? @V305001 00303200
- BZ OSLKP NO, USE CMSCB THEN... @V305001 00303300
- LA R7,DOSFIRST IF ACTIVE, USE DOSCB FOR SEARCH @V305001 00303400
- OSLKP CLC FCBNEXT+1(3),ZEROES ANY MORE FCB'S @V201105 00304000
- BNE SRCHON NO, CHECK NEXT FCB @VM28889 00305100
- LTR R4,R4 WAS AN FCB FOUND @VM28889 00305200
- BZ FCBNTFND NO, GIVE ERROR MSG @VM28889 00305300
- B ROSSTRT2 YES, THROUGH WITH STATE @VM28889 00305400
- SRCHON ICM R7,B'0111',FCBNEXT+1 GET PTR TO NEXT FCB @VM28889 00305500
- CLC FCBDSNAM(16),FILENAME FCB FN FT MATCH STATE P@V201105 00307000
- BNE OSLKP NO, LOOK FOR ANOTHER FCB @V201105 00308000
- CLI FCBDSMD,C'*' FCB FOR ALL MODES @V201105 00309000
- BE FCBFND YES, USE IT @V201105 00310000
- CLC FCBDSMD(1),ADTM FCB AND ADT MODES MATCH @V201105 00311000
- BE FCBFND LIKEWISE OK @V201105 00312000
- CLC FCBDSMD(1),ADTM+1 FCB AND ADT XTENTION MATCH@V201105 00313000
- BNE OSLKP NO, LAST CHANCE @V201105 00314000
- FCBFND ST R7,FCBSAVE SAVE FCB ADDRESS @V201122 00315000
- L R4,FCBOSFST GET OS FST POINTER @V201105 00316000
- LTR R4,R4 IS IT THERE @V201105 00317000
- BZ DSKSRCH NO, MUST SEARCH VTOC @V201105 00318000
- CLC OSFSTFM(1),ADTM FST AND ADT MODES MATCH @V201105 00319000
- BE OSFSTFND YES, DATA SET FOUND @V201105 00320000
- CLC OSFSTFM(1),ADTM+1 FST AND ADT XTENTION MATCH@V201105 00321000
- BE OSFSTFND YES, DATA SET FOUND @V201105 00322000
- XC FCBOSFST(4),FCBOSFST FCB HAS WRONG OS FST, TRY T@V201105 00323000
- DSKSRCH CLC FCBOSDSN+1(3),ZEROES DOES OS DSN BLOCK EXIST@V201105 00324000
- BNE FCBSET YES, SKIP DSNAME BUILD @V201105 00325000
- DMSFREE DWORDS=6,TYPCALL=BALR,TYPE=USER GET DSNAME BLO@V201105 00326000
- ST R1,FCBOSDSN POINT FCB TO IT @V201105 00327000
- OI ROSFLAG,DYNAMIC DSN BLOCK CREATED @VA09241 00327500
- MVI 0(R1),X'40' BLANCK DSNAME BLOCK @V201105 00328000
- MVC 1(43,R1),0(R1) @V201105 00329000
- MVC 0(8,R1),FCBDSNAM BUILD OS DSN FROM FN FT @V201105 00330000
- OSNAMLP CLI 0(R1),X'40' BLANK ? @V201105 00331000
- BE PERIOD YES, TIME FOR PERIOD @V201105 00332000
- LA R1,1(0,R1) NEXT CHAR. @V201105 00333000
- B OSNAMLP @V201105 00334000
- PERIOD MVI 0(R1),C'.' INDICATE END OF 1ST QUALIFIER @V201105 00335000
- MVC 1(8,R1),FCBDSTYP USE FTYPE AS 2ND QUALIFIER @V201105 00336000
- FCBSET EQU * @VA08048 00336100
- BLDOSFST DMSFREE DWORDS=OSFSTLTH,TYPE=NUCLEUS,TYPCALL=BALR @V201122 00345000
- LA R4,ROSSTERR GET ADDRESS OF ROSST ERROR ROUTIN@V201122 00346000
- ST R4,INTREG14 SET ERROR RETURN ADDRESS @V201122 00347000
- LR R4,R1 SETUP NEW FST ADDRESS @V201122 00348000
- XC 0(256,R4),0(R4) CLEAR 1ST PART OF FST BLOCK @V201122 00349000
- XC 256(OSFSTLTH*8-256,R4),256(R4) CLEAR REST OF OSF@V201122 00350000
- MVC OSFSTNXT(4),OSADTFST CHAIN NEW FST TO CHAIN @V201122 00351000
- ST R4,OSADTFST RESTORE CHAIN @V201122 00352000
- L R3,FCBOSDSN POINT TO FCB DSNAME BLOCK @V201105 00353000
- MVC OSFSTDSN(44),0(R3) MOVE DSNAME TO OS FST @V201105 00354000
- MVC OSFSTMEM,FCBMEMBR MOVE MEMBER NAMES TO OSFST @VA05385 00354100
- MVC OSFSTDSK(4),OSADTDSK MOVE DISK CUU AND TYPE @V201105 00355000
- MVC OSFSTFM(1),ADTM SET DISK MODE IN OSFST @V201105 00356000
- MVC OSFSTFM+1(1),FCBDSMD+1 SET MODE NUMBER IN OSFS@V201105 00357000
- MVC CCHHR(5),OSADTVTA SET SEEK TO VTOC START @V201105 00358000
- LA R0,OSFSTDSN GET DSNAME ADDRESS @V201105 00359000
- STCM R0,B'0111',ADDSNAME+1 SET DSNAME ADDR IN CCW @V201105 00360000
- MVI OSFSTTRK+3,X'14' ASSUME 20 TRKS PER CYL @V201122 00361000
- CLI OSFSTTYP+1,X'08' IS THIS 2314? @V201122 00362000
- BE GOTDSN YES, CONTINUE @V201122 00363000
- MVI OSFSTTRK+3,X'13' NO, 3330 19 TRKS PER CYL @V201122 00364000
- CLI OSFSTTYP+1,X'09' IS THIS A 3330 ? @V2A2014 00364100
- BE GOTDSN YES....BR @V2A2014 00364200
- MVI OSFSTTRK+3,X'1E' 3350 30 TRACKS PER CYLINDER @V304498 00364240
- CLI OSFSTTYP+1,TYP3350 IS THIS A 3350 ? @V304498 00364250
- BE GOTDSN YES, READ FORMAT 1 DSCB @V304498 00364260
- MVI OSFSTTRK+3,X'0F' 3380 15 TRACKS PER CYLINDER HRC004DS 00364270
- CLI OSFSTTYP+1,X'0E' IS THIS A 3380 ? HRC004DS 00364280
- BE GOTDSN YES, READ FORMAT 1 DSCB HRC004DS 00364290
- MVI OSFSTTRK+3,X'0C' NO, 3340 12 TRKS PER CYL @V2A2014 00364300
- GOTDSN LA R0,RDDSCB1 CHAN PROG TO READ FORMAT 1 DSCB @V201105 00365000
- BAL R14,DISKIO GO GET EXTENTS OF THE DATA SET @V201105 00366000
- B DSCB1UC UNIT CHECK DURING I/O @V201105 00367000
- B CHKSLI CHECK FOR WRONG LENGTH @V201105 00368000
- B GOTDSCB1 DATA SET EXISTS @V201105 00369000
- DSCB1UC BAL R14,CHKSENSE GO CHECK SENSE DATA @V201105 00370000
- TM SNSEBYTE,X'09' NO REC FND, OVERFLOW INC NOT@V201105 00371000
- BNZ ERR80 BUT ONE OR BOTH WAS PRESENT @V201105 00372000
- TM SNSEBYTE,X'20' WAS IT CYLINDER END @V201105 00373000
- BZ DSCB1TRK NO, ASSUME TRACK CONDITION FOR NO@V201105 00374000
- LA R8,ZEROES NEGATE INCRCYL TEST FOR SPLIT CYL@V201105 00375000
- BAL R14,INCRCYL GO INCREMENT CYLINDER ADDRESS @V201105 00376000
- CHKXTNT1 CLC CCHHR(4),OSADTVTB MUST NOT BE HIGHER THAN LAST @VA05574 00377100
- BL GOTDSN GOOD, GO TRY NEXT CYLINDER @V201105 00378000
- B DSNOTFND TOO HIGH, HAVE SCANNED WHOLE VTOC@V201105 00379000
- CHKSLI CH R15,=H'3' WRONG LENGTH ERROR @V201105 00380000
- BE DSNOTFND YES, OFF END OF VTOC - NO DATA SE@V201105 00381000
- B ERR80 RETURN @V201105 00382000
- DSCB1TRK BAL R14,GETALT ASSUME TRACK BAD, GET ALTERNATE @V201105 00383000
- B GOTDSN SWITCHING TO ALTERNATE, CONTINUE @V201105 00384000
- B CHKXTNT1 BACK TO NEXT PRIME TRACK, GO CHEC@V201105 00385000
- GOTDSCB1 CLC NEXTSEEK(4),OSADTVTB WAS RECORD FOUND WITHIN LIM@VA05781 00386000
- BH DSNOTFND NO, ERROR @V201105 00387000
- CLI DS1FMTID,C'1' IS DSCB1 ID PRESENT @V201105 00388000
- BE CHKMULTI YES, CONTINUE @V201105 00389000
- B ERR80 RETURN @V201105 00390000
- SPACE 2 00391000
- *************************************************************** 00392000
- * 00393000
- * VERIFY ALLOWABLE ATTRIBUTES OF THE DATA SET 00394000
- * 00395000
- *************************************************************** 00396000
- CHKMULTI CLC DS1VOLSQ(2),=H'1' IS VOL SEQUENCE ONE @V201105 00397000
- BE CHK4LAST YES, GO COUNT VOLUMES @V201105 00398000
- MULTIVOL OI OSFSTFLG,OSFSTMVL INDICATE MUTIPLE VOL. DATA S@V201105 00399000
- SR R9,R9 CLEAR R9 @V201105 00400000
- IC R9,DS1VOLSQ+1 GET VOL. SEQ. NO. @V201105 00401000
- L R2,FCBOSDSN POINT TO DSN @V201105 00402000
- DMSERR TEXT='PROCESSING VOLUME ''..'' IN DATA SET ''..........X00403000
- ..................................''',CSECT=STT, X00404000
- NUM=227,LET=I,SUB=(HEX,(R9),CHARA,(R2)),RENT=NO @V201105 00405000
- B CHKPASS CONTINUE @V201105 00406000
- CHK4LAST TM DS1DSIND,X'80' IS THIS THE LAST (ONLY) VOLUME @V201105 00407000
- BZ MULTIVOL NO, CANNOT STAND IT ANY LONGER @V201105 00408000
- CHKPASS TM DS1DSIND,X'14' CHECK PASSWORD INDICATORS @V201105 00409000
- BNM CHK4ISBD BOTH ON OR OFF IS OK @V201105 00410000
- LA R15,81 READ, WRITE PROTECTED @V201105 00411000
- B ERRRET ALL DONE @V201105 00412000
- CHK4ISBD TM DS1DSORG,PS+PO SEQUENTIAL OR PARTITIONED @V201105 00413000
- BM CHKMOVBL OKAY IF EITHER @V201105 00414000
- CLC FCBPROC(4),=CL4'DLBL' IS THIS A DOSCB ? @V305001 00414100
- BE CHKMOVBL YES, IGNORE DSORG @V305001 00414200
- ERR82 EQU * @VA11533 00414300
- BADORG LA R15,82 ISAM, BDAM ERROR CODE @V201105 00415000
- B ERRRET @V201105 00416000
- CHKMOVBL TM DS1DSORG,X'01' IS DATA SET UNMOVEABLE @V201105 00417000
- BZ MOVABLE NO, CONTINUE @V201105 00418000
- OI OSFSTFLG,OSFSTUMV INDICATE UNMOVEABLE IN FST @V201105 00419000
- MOVABLE TM ADTFLG2,ADTFDOS DOS FORMATTED DISK ? @V201105 00420000
- BO GETEXTNT YES, BYPASS RECFM CHECK @V201105 00421000
- TM DS1RECFM,UND TEST FOR RECFM F OR V @V201105 00422000
- BZ ERR82 ERROR IF NOT RECFM F, V OR UND @VA11533 00423000
- SPACE 2 00424000
- *************************************************************** 00425000
- * 00426000
- * GET ALL EXTENTS TOGETHER BY READING FORMAT 3 DSCB IF 00427000
- * NECESSARY 00428000
- * 00429000
- *************************************************************** 00430000
- GETEXTNT SR R9,R9 CLEAR @V201105 00431000
- IC R9,DS1NOEPV GET NUMBER OF EXTENTS ON PACK @V201105 00432000
- LTR R9,R9 TEST FOR VALID NUMBER @V201105 00433000
- BNP ERR83 INVALID EXTENTS - ERROR RC83 @VA11533 00434000
- STC R9,OSFSTXNO SET NO. EXTENTS IN FST @V201105 00435000
- CLC DS1NOEPV(1),THREE HOW MANY DATA EXTENTS? @VA06195 00435300
- BL GOTDSCB3 LESS THAN 3 @VA06195 00435600
- BH GETADR3 MORE THAN 3 @VA06195 00435900
- CLI DS1EXT1,USERLBL IF 3 PLUS USER LABEL, GET @VA06195 00436200
- * FORMAT 3 DSCB FOR LAST EXTENT 00436500
- BNE GOTDSCB3 NO FORMAT 3 DSCB NEEDED @VA06195 00436800
- GETADR3 EQU * @VA06195 00437100
- MVC CCHHR(5),DS1PTRDS ADDR OF FORMAT 3 DSCB @V201105 00438000
- NI OSFSTFLG,255-OSFSTALT ALT TRK SW OFF @V201105 00439000
- CLI DS1NOEPV,16 MORE THAN 16 EXTENTS? @V201122 00440000
- BNH GETDSCB3 NO, CONTINUE @V201122 00441000
- ERR83 EQU * @VA11533 00442000
- LA R15,83 INDICATE DOS DISK WITH < 16 EXTEN@V201122 00444000
- B ERRRET RETURN WITH ERROR CODE @V201122 00445000
- GETDSCB3 LA R0,RDDSCB3 CHAN PROG TO READ FORMAT 3 DSCB @V201105 00446000
- LA R14,OSFSTEX4 PLUG CCW TO READ XTRA EXTENTS @V201105 00447000
- STCM R14,B'0111',XTENTS+1 @V201105 00448000
- BAL R14,DISKIO GO GET MORE EXTENTS FROM VTOC @V201105 00449000
- B DSCB3UC UNIT CHECK ON I/O, GO CHECK IT OU@V201105 00450000
- B ERR80 IL OR UE IS ERROR @V201105 00451000
- CLI OSFSTEX4+44,C'3' VALID FORMAT 3 @V201105 00452000
- BE DSCB3OK YES, SO FAR ANYWAY @V201105 00453000
- B ERR80 INVALID FORMAT 3 - ERROR RC80 @VA11533 00454000
- DSCB3UC BAL R14,CHKSENSE GO CHECK FOR BAD SENSE BITS @V201105 00455000
- DSCB3TRK TM SNSEBYTE,X'29' ANY BUT TRACK COND IS A NO-NO @V201105 00456000
- BNZ ERR80 RETURN @V201105 00457000
- BAL R14,GETALT GO SWITCH TO ALTERNATE TRACK @V201105 00458000
- B GETDSCB3 HAVE SWITCHED SATISFACTORILY @V201105 00459000
- B ERR80 THIS INSTRUCTION SHOULD NEVER BE @V201105 00460000
- DSCB3OK MVC OSFSTEX4(40),OSFSTEX4+4 @V201105 00461000
- MVC OSFSTEX4+40(90),OSFSTEX4+45 NEXT 13 XTENTS @V201105 00462000
- SPACE 2 00463000
- *************************************************************** 00464000
- * 00465000
- * CHECK VALIDITY OF FIRST EXTENT 00466000
- * 00467000
- *************************************************************** 00468000
- GOTDSCB3 MVC OSFSTXTN(30),DS1EXT1 ADD 1ST 3 XTENTS TO LI@V201105 00469000
- LA R8,OSFSTXTN POINT TO THEM @V201105 00470000
- CLI 0(R8),0 IS EXTENT VALID @V201105 00471000
- BE ERR80 NO, ERROR @V201105 00472000
- CLI 0(R8),X'40' TEST FOR USER LABELS IN DATA SET @V201105 00473000
- BH BLKSZ NO, OK IF 80 OR 81 @V201105 00474000
- BL XTNTOK2 CONTINUE @V201105 00475000
- MVC OSFSTXTN(159),OSFSTXTN+10 COMPRESS OUT LABEL @V201105 00476000
- L R14,FCBOSDSN POINT TO DSN @V201105 00477000
- DMSERR TEXT='USER LABELS BYPASSED ON DATA SET ''..............X00478000
- ..............................''',CSECT=STT, @V201105X00479000
- NUM=228,LET=I,SUB=(CHARA,(R14)) @V201105 00480000
- CLI DS1NOEPV,16 SIXTEEN EXTENTS ? @V2A3801 00481100
- BL BLKSZ NO, CHECK BLOCK & LRECL @V2A3801 00481200
- LA R15,83 INDICATE OVER 16 EXTENTS @V2A3801 00481300
- B ERRRET RETURN WITH ERROR CODE @V2A3801 00481400
- XTNTOK2 CLI 0(R8),1 IS IT A DATA SET EXTENT @V201105 00482000
- BNE ERR80 NO, BAD NEWS @V201105 00483000
- SPACE 2 00484000
- *************************************************************** 00485000
- * 00486000
- * CHECK BLOCK AND RECORD SIZES OF DATA SET 00487000
- * 00488000
- *************************************************************** 00489000
- BLKSZ MVC OSFSTRFM(1),DS1RECFM SET RECFM IN FST @V201122 00490000
- LH R8,DS1LRECL GET LRECL FROM DSCB @V201122 00491000
- MVC OSFSTBLK(2),DS1BLKL SAVE DSCB BLOCK SIZE @V201122 00492000
- BLKSZ1 CLC FCBPROC(4),=CL4'DLBL' IS THIS A DOSCB ? @V305001 00492500
- BE ROSSTRET YES, NO MORE CHECKING THEN.. @V305001 00493000
- LH R9,OSFSTBLK GET BLOCK SIZE @V305001 00493500
- LTR R9,R9 TEST SIZE @V201122 00494000
- BP BLKSZOK1 OK, LESS THAN 32K BLOCKS @V201122 00495000
- TM ADTFLG2,ADTFDOS DOS FORMATED DISK? @V201122 00496000
- BNO ERR82 INVALID BLKSIZE FOR OS D.S. RC82 @VA11533 00497000
- OI OSFSTFLG,OSFSTDBK DOS DSCB BLKSIZE IS EMPTY @V201122 00498000
- BLKSZOK1 TM ADTFLG2,ADTFDOS DOS DISK? @V201122 00499000
- BNO BLKSZOK2 NO, CONTINUE @V201122 00500000
- MVC OSFSTRFM(1),FCBRECFM SET RECFM IN FST @V201122 00501000
- CLI OSFSTRFM,0 RECFM SPECIFIED? @V201122 00502000
- BNE CKDOSBLK NO, CONTINUE @V201122 00503000
- OI OSFSTRFM,UND INDICATE UNDEFINED @V201122 00504000
- CKDOSBLK TM OSFSTFLG,OSFSTDBK DOS BLKSIZE IN DSCB? @V201122 00505000
- BNO SETLRL YES, CONTINUE @V201122 00506000
- LH R9,FCBBLKSZ GET FCB BLKSIZE @V201122 00507000
- LTR R8,R9 IS IT ZERO @V201122 00508000
- BNZ BLKSZOK2 NO, CONTINUE @V201122 00509000
- LH R9,=H'32760' USE 32,760 FOR DEFAULT @V201122 00510000
- SETLRL LR R8,R9 USE BLKSIZE FOR LRECL @V201122 00511000
- BLKSZOK2 ST R8,OSFSTLRL SET FST LRECL @V201105 00512000
- STH R9,OSFSTBLK SET FST BLKSI @V201105 00513000
- LH R9,FCBLRECL GET USER SPECIFIED LRECL @V2A3801 00514100
- LTR R9,R9 ANYTHING THERE ? @V2A3801 00514200
- BNP CKDOSRFM NO, CONTINUE @V2A3801 00514300
- ST R9,OSFSTLRL SET FST LRECL @V2A3801 00514400
- CKDOSRFM MVI OSFSTFVF,C'V' SET VARIABLE FLAG @V2A3801 00514500
- TM OSFSTRFM,VAR VAR OR UND SPECIFIED @V201105 00515000
- BZ OSFSTFXD NO, ASSUME FIXED @V2A3801 00516100
- TM OSFSTRFM,UND UNDEFINED ? @V2A3801 00516200
- BO ROSSTRET YES, CONTINUE @V2A3801 00516300
- LH R9,FCBLRECL USER SPECIFIED LRECL ? @V2A3801 00516400
- LTR R9,R9 ... @V2A3801 00516500
- BP ROSSTRET YES, CONTINUE @V2A3801 00516600
- SH R8,=H'4' SUBTRACT BDW FROM LRECL @V2A3801 00516700
- ST R8,OSFSTLRL AND SAVE IN OSFST LRECL @V2A3801 00516800
- B ROSSTRET CONTINUE @V2A3801 00516900
- OSFSTFXD MVI OSFSTFVF,C'F' SET FIXED FLAG @V2A3801 00517000
- B ROSSTRET RETURN TO CALLER @V201105 00518000
- OSFSTFND TM ADTFLG2,ADTFDOS DOS DISK? @V201122 00519000
- BO BLKSZ1 YES, SET BLOCKSIZE AND RECFM @V201122 00520000
- ROSSTRET NI OSFSTFLG,255-OSFSTALT CLEAR ALTERNATE FLG @V201122 00521000
- L R7,FCBSAVE RETORE FCB POINTER @V201122 00522000
- ST R4,FCBOSFST PUT OS FST ADDRESS IN FCB @V201122 00523000
- ST R4,SAVEREGS+R5*4 SET OSFST ADDR FOR DMSLFS @V201122 00524000
- LA R9,FCBOP GET FCB PLIST ADDR @VM28889 00525100
- SR R1,R1 CLEAR REG1 FOR INSERT @VM28889 00525200
- ICM R1,B'0111',SAVEREGS+R2*4+1 GET PLIST ADDRESS @VM28889 00525300
- CR R1,R9 PLIST IN THIS FCB? @VM28889 00525400
- BNE OSLKP NO, CHECK FOR MORE MATCHES @VM28889 00525500
- ROSSTRT2 B CLR15RET RETURN TO CALLER @VM28889 00525600
- SPACE 1 00526000
- ROSSTERR LR R1,R4 SETUP TO FREE OSFST @V201122 00527000
- LR R8,R15 SAVE RETURN CODE @V201122 00528000
- MVC OSADTFST(4),OSFSTNXT REMOVE OSFST FROM CHAIN @V201122 00529000
- DMSFRET DWORDS=OSFSTLTH,LOC=(1),TYPCALL=BALR @V201122 00530000
- TM ROSFLAG,DYNAMIC DSN BLOCK CREATED @VA09241 00530100
- BZ ROSSTER1 NO , PROCEED @VA09241 00530200
- L R1,FCBOSDSN ADDRESS OF DSN BLOCK @VA09241 00530300
- DMSFRET DWORDS=6,LOC=(1),TYPCALL=BALR @VA09241 00530400
- XC FCBOSDSN,FCBOSDSN UNCHAIN THE DSN BLOCK @VA09241 00530500
- ROSSTER1 DS 0H @VA09241 00530600
- LR R15,R8 SETUP RETURN CODE @V201122 00531000
- B ROSRET RETURN TO CALLER @V201122 00532000
- EJECT 1 00533000
- *************************************************************** 00534000
- * 00535000
- * SETUP TO READ DATA SET OR PDS DIRECTORY 00536000
- * 00537000
- *************************************************************** 00538000
- USING DMSROS,R15 @V201122 00539000
- ROSRPS STM R0,R14,SAVEREGS SAVE REGS @V201122 00540000
- LM R11,R12,BASE SETUP BASE REGS @V201122 00541000
- USING FCBSECT,R15 @V201122 00542000
- XC INTREG14(4),INTREG14 CLEAR INTERNAL RETURN REG @V201122 00543000
- L R15,SAVEREGS+R11*4 GET FCB DSECT BASE @V201122 00544000
- L R4,FCBOSFST GET POINTER TO OS FST @V201122 00545000
- LTR R4,R4 IS POINTER ZERO @V201122 00546000
- BZ FCBNTFND YES, FCB NOT FOUND - ERROR RC88 @VA11533 00547000
- LA R8,OSFSTXTN 1ST XTENT @V201122 00548000
- SR R9,R9 CLEAR REG FOR INSERT @V201122 00549000
- IC R9,OSFSTXNO GET NO. OF EXTENTS @V201122 00550000
- MVC CCHHR(5),OSFSTCHR SET RECORD PTR @V201122 00551000
- NI OSFSTFLG,255-OSFSTALT TURN ALT TRK FLAG OFF @VM28935 00551100
- XC OSFSTNTE(5),OSFSTNTE SETUP AREA FOR NOTE AFTER O@V201122 00552000
- CLC CCHHR(5),ZEROES DISK ADDR ZEROES @V201122 00553000
- BNE NXTREAD NO, DON'T SET EXTENT @V201122 00554000
- MVC OSFSTEND(5),ZEROES ZERO EXTENT BOUNDARY @V201122 00556000
- NI OSFSTFLG,255-OSFSTRSW TURN OFF POINT+1 SWITCH@V201122 00557000
- BAL R10,SETXTNT SET TO START OF EXTENT @V201122 00558000
- NXTREAD L R1,SAVEREGS+R1*4 GET PLIST BASE REG @V201122 00559000
- L R6,FILEBYTE GET READ COUNT @V201122 00560000
- L R7,FILEBUFF GET BUFFER ADDR @V201122 00561000
- STCM R7,B'0111',READCCW+1 SET BUFFER ADDRESS @V201122 00562000
- STH R6,READCCW+6 PUT LENGTH INTO COUNT FIELD @V201122 00563000
- NXTREAD2 BAL R14,CHKXTNT INSURE VALID SEEK ARG BEFORE I/O @V201122 00564000
- B CKRDSKIP GOOD, RECORD IS WITHIN EXTNET @V201122 00565000
- B CKRDSKIP NEW EXTENT AVAILABLE, GO USE IT @V201122 00566000
- B EOF SIMULATE EOF @V201122 00567000
- CKRDSKIP LA R0,READBLK SETUP FOR NORMAL READ @V201122 00568000
- TM OSFSTFLG,OSFSTRSW POINT+1 SPECIFIED? @V201122 00569000
- BNO DOREAD NO, DO A NORMAL READ @V201122 00570000
- LA R0,READSKIP SETUP TO DO A READ DATA SKIP @V201122 00571000
- B GOREAD BYPASS OSFSTNTE SAVE @V201122 00572000
- * READ A BLOCK AND CONFIRM THAT I/O ENDED SATISFACTORILY 00573000
- DOREAD CLC OSFSTNTE(5),ZEROES IS NOTE FIELD SPECIFIED @V201122 00574000
- BNE GOREAD YES, GO DO READ @V201122 00575000
- MVC OSFSTNTE(5),CCHHR SAVE CCHHR ADDRESS @V201122 00576000
- GOREAD L R15,SAVEREGS+R11*4 GET FCB BASE REG @VM08817 00577000
- MVC MEMBER(8),FCBOP SAVE FCBOP @VM08817 00577040
- MVC FCBOP(5),CCHHR SAVE CCHHR @VM28935 00577060
- LA R1,FCBOP READ NEXT CCHHR INTO FCBOP @VM08817 00577080
- STCM R1,B'0111',READCHR+1 SET CCHHR ADDR IN CCW @VM08817 00577120
- STCM R1,B'0111',READCHR1+1 SET CCHHR ADDR IN CCW @VM28920 00577130
- STCM R1,B'0111',READCHR2+1 SET CCHHR ADDR IN CCW @VM28920 00577140
- BAL R14,DISKIO GO DO I/O @VM08817 00577160
- BAL R1,SETCHR SET CCHHR IN NEXTSEEK @VM08817 00577200
- BAL R1,SETCHR SET CCHHR IN NEXTSEEK @VM08817 00577240
- BAL R1,SETCHR SET CCHHR IN NEXTSEEK @VM08817 00577280
- SETCHR LA R1,0(R1) CLEAR HIGH BYTE @VM08817 00577320
- LA R14,0(R14) CLEAR HIGH ORDER BYTE @VM08817 00577360
- SR R1,R14 GET DISPLACEMENT IN BRANCH TBL @VM08817 00577400
- L R15,SAVEREGS+R11*4 GET FCB BASE REG @VM08817 00577440
- MVC NEXTSEEK(8),FCBOP SAVE NEXTSEEK FIELD @VM08817 00577480
- MVC FCBOP(8),MEMBER RESORE FCBOP FIELD @VM08817 00577520
- BALR R15,R0 GET ADDR OF *+4 @VM08817 00577560
- AR R15,R1 GET BRANCH TBL ADDR @VM08817 00577600
- BR R15 BRANCH IN BRANCH TABLE @VM08817 00577640
- DROP R15 @VM08817 00577680
- B BLKUC UNIT CHECK IN STATUS OF I/O @V201122 00578000
- B CHK4UE NO UC, GO CHECK FOR UNIT EXCEPTIO@V201122 00579000
- B GOTBLK GOOD RETURN @V201122 00580000
- BLKUC MVC RESIDUAL(2),CSW+6 SAVE RESIDUAL COUNT IN CCW @V201122 00581000
- BAL R14,CHKSENSE TIME TO GO LOOK AT THE SENSE INFO@V201122 00582000
- TM SNSEBYTE,X'08' NO RECORD FOUND @V201122 00583000
- BO ERR80 TOO BAD @V201122 00584000
- TM SNSEBYTE,X'02' WAS IT A TRACK CONDITION CHECK @V201122 00585000
- BNZ BLKUC3 YES @V201122 00586000
- TM SNSEBYTE,X'20' WAS IT END OF CYLINDER @V201122 00587000
- BO BLKUC2A YES, INCREMENT CYL @V201122 00588000
- TM SNSEBYTE,X'04' FILE PROTECT ERROR @V201122 00589000
- BZ ERR80 NO, THEN INDICATE ERROR @V201122 00590000
- LA R14,TSTOVRFL-4 SET RETURN ADDR TO RETURN TO TSTO@V201122 00591000
- B UPTRK UP TRACK INDICATOR @V201122 00592000
- BLKUC2A BAL R14,INCRCYL ADJUST SEEK ARG. TO NEXT CYL. @V201122 00593000
- B TSTOVRFL CONTINUE @V201122 00594000
- BLKUC3 BAL R14,GETALT2 TRK COND, GO GET ALTERNATE @V201122 00595000
- BC 0,0(R0) NOP @V201122 00596000
- TSTOVRFL TM SNSEBYTE,X'01' WAS OVERFLOW INCOMPLETE SET @V201122 00597000
- BZ NXTREAD2 NO, ALL SET FOR RESTART @V201122 00598000
- TM OSFSTRFM,X'20' OVERFLOW SPECIFIED @V201122 00599000
- BNO ERR80 NO, THEN ERROR @V201122 00600000
- TM OSFSTFLG,OSFSTRSW CONTINUE POINT+1 @V201122 00601000
- BO NXTREAD2 CONTINUE READ DATA SKIP @V201122 00602000
- LH R15,READCCW+6 GET ATTEMPTED READ SIZE @V201122 00603000
- SH R15,NEXTSEEK+6 GET RESIDUAL COUNT @V201122 00604000
- BZ ERR80 NO RESIDUAL AND INCOMPLETE THEN E@V201122 00605000
- STH R15,READCCW+6 NEW LENGTH FOR CONTINUATION READ @V201122 00606000
- LR R14,R6 BLKSIZE @V201122 00607000
- SR R14,R15 MINUS RESIDUAL IS LENGTH READ SO @V201122 00608000
- AR R14,R7 BUMP UP BUFFER ADDRESS @V201122 00609000
- STCM R14,B'0111',READCCW+1 SET BUFFER ADDRESS @V201122 00610000
- B NXTREAD2 GO START READ FOR NEXT SEGMENT @V201122 00611000
- RDSKIPOK NI OSFSTFLG,255-OSFSTRSW FINISHED WITH READ SKIP@V201122 00612000
- SR R15,R15 CLEAR FOR INSERT @V201122 00613000
- IC R15,NEXTSEEK+4 GET RECORD NO. @V201122 00614000
- BCTR R15,R0 DECREMENT BY ONE @V201122 00615000
- STC R15,NEXTSEEK+4 REPLACE RECORD NO. @V201122 00616000
- MVC CCHHR(5),NEXTSEEK SETUP NEW CCHHR ADDRESS @V201122 00617000
- B NXTREAD2 GO DO READ DATA @V201122 00618000
- CHK4UE TM OSFSTFLG,OSFSTRSW READ SKIP SPECIFIED? @V201122 00619000
- BO RDSKIPOK YES, THEN EOF WAS ON READ SKIP @V201122 00620000
- TM CSW+4,X'01' DID WE GET UNIT EXCEPTION @V201122 00621000
- BO EOF YES @V201122 00622000
- * SAVE POINTER TO NEXT BLOCK 00623000
- GOTBLK TM OSFSTFLG,OSFSTRSW READ SKIP SPECIFIED? @V201122 00624000
- BO RDSKIPOK THEN ONLY READ SKIP COMPLETE @V201122 00625000
- MVC OSFSTCHR(5),NEXTSEEK SAVE DISK BLOCK ADDRES@V201122 00626000
- SH R6,CSW+6 SUB RESIDUAL= LENGTH READ @V201122 00627000
- L R1,SAVEREGS+R1*4 GET PLIST ADDRESS @V201122 00628000
- ST R6,FILEREAD SAVE READ COUNT @V201122 00629000
- * 00630000
- * RETURN TO CALLER 00631000
- * 00632000
- CLR15RET SR R15,R15 CLEAR RETURN CODE @V201122 00633000
- B ROSRET @V201122 00634000
- INTRETRN L R14,INTREG14 GET INTERNAL RETURN REG @V201122 00635000
- XC INTREG14(4),INTREG14 CLEAR INTERNAL RETURN A@V201122 00636000
- LTR R14,R14 DID AN ROS RTN BR TO ANOTHER ROS @V201122 00637000
- BCR 7,R14 YES, RETURN TO 1ST ROS RTN @V201122 00638000
- ROSRET EQU * @V201122 00638500
- NI ROSFLAG,255-DYNAMIC DSN BLOCK NOT CHAINED @VA09241 00639000
- LM R0,R14,SAVEREGS RESTORE REGS @V201122 00639500
- BR R14 RETURN @V201122 00640000
- INTREG14 DS 1F SAVE AREA FOR ROS INTERNAL CALLS @V201122 00641000
- SAVEREGS DS 15F SAVE AREA @V201122 00642000
- BASE DC A(DMSROS) 1ST BASE REG @V201122 00643000
- ADMSROS2 DC A(DMSROS+4096) 2ND BASE REG @V201122 00644000
- SPACE 2 00645000
- *************************************************************** 00646000
- * 00647000
- * I/O SUBROUTINE 00648000
- * 00649000
- *************************************************************** 00650000
- DISKIO TM OSFSTFLG,OSFSTALT I/O TO ALTERNATE TRACK @V201105 00651000
- BO ALTIO YES, SEEK ALREADY SET @V201105 00652000
- L R1,CCHHR GET SEARCH INFO @V201105 00653000
- ST R1,SEEK+2 AND USE IT FOR SEEKING AS WELL @V201105 00654000
- ST R1,NEXTSEEK SAVE TRACK ADDRESS CURRENTLY IN V@V201105 00655000
- ALTIO LH R1,OSFSTDSK GET DISK ADR (CUU) @V201105 00656000
- ACCESSIO XC CSW(8),CSW RESET CSW @V201105 00657000
- DC X'83100020' CALL CP FOR DISK I/O @V201105 00658000
- BC 8,8(R14) NORMAL COMPLETION, RETURN+8 @V201105 00659000
- BC 4,ERR80 DISK NOT ATTACHED @V201105 00660000
- BC 2,4(R14) INCOR. LGTH. OR UNIT EXCEPT. @V201105 00661000
- STH R0,SNSEDATA UNIT CHK, SAVE 1ST 2 SENSE BYTES @V201105 00662000
- B 0(R14) RETURN+0 @V201105 00663000
- SPACE 2 00664000
- * SEARCH DIRECTORY ON DASD FOR PROPER BLOCK 00665000
- USING DMSROS,R15 TEMP BASE REG @V201122 00666000
- ROSFIND STM R0,R14,SAVEREGS SAVE REGS @V201122 00667000
- LM R11,R12,BASE GET BASE REGS @V201122 00668000
- USING FCBSECT,R15 FCB BASE REG @V201122 00669000
- L R15,SAVEREGS+R11*4 GET FCB BASE REG @V201122 00670000
- MVC MEMBER(8),0(R9) GET MEMBER NAME @V201122 00671000
- MVI SRCHMEM,MEMHGHEQ SEARCH HIGH OR EQUAL @V201122 00672000
- TM FCBIOSW2,FCBMVPDS MOVE PDS OPTION SPECIFIED @V201122 00673000
- BNO SETERRET NO, CONTINUE @V201122 00674000
- MVI SRCHMEM,MEMHIGH SEARCH HIGH @V201122 00675000
- SETERRET L R4,FCBOSFST GET OS FST BASE REG @V201122 00676000
- NI OSFSTFLG,255-OSFSTRSW TURN OFF POINT+1 SWITCH@V201122 00677000
- XC OSFSTNTE(5),OSFSTNTE CLEAR NOTE INDICATOR @V201122 00678000
- LA R15,FINDIOER GET ADDRESS OF FIND ERROR RETURN @V201122 00679000
- ST R15,INTREG14 SET ERROR RETURN REG @V201122 00680000
- LTR R4,R4 FST BASE OK @V201122 00681000
- BCR 8,R15 NO, INDICATE ERROR @V201122 00682000
- LA R8,OSFSTXTN SET TO 1ST XTENT @V201122 00683000
- SR R9,R9 CLEAR REG FOR INSERT @V201122 00684000
- IC R9,OSFSTXNO GET NO. OF EXTENTS @V201122 00685000
- BAL R10,SETXTNT CHECK 1ST XTENT FOR ERRORS @V201122 00686000
- GOTMEMBR LA R0,RDPDSD DIRECTORY SEARCHING CHANNEL PROG @V201122 00687000
- BAL R14,DISKIO LET'S READ THE PDS DIRECTORY @V201122 00688000
- B PDSUC UNIT CHECK ON READ @V201122 00689000
- B FINDIOER RETURN WITH ERROR CODE @V201122 00690000
- B GOTMEM1 YES, MEMBER BLOCK FOUND @V201122 00691000
- PDSUC BAL R14,CHKSENSE GO SEE WHAT HAPPENED @V201122 00692000
- TM SNSEBYTE,X'09' NO REC OR OVERFLOW INC NOT ALLOWE@V201122 00693000
- BNZ FINDIOER TOO BAD @V201122 00694000
- TM SNSEBYTE,X'20' WAS IT END OF CYLINDER @V201122 00695000
- BZ PDSERRTK NO, MUST BE A BAD TRACK @V201122 00696000
- BAL R14,INCRCYL GO GET TO NEXT CYLINDER @V201122 00697000
- PDSCHKX BAL R14,CHKXTNT SEE IF NEW CCHHR WITHIN EXTENT @V201122 00698000
- B GOTMEM2 GO TRY AGAIN WITH NEXT CYL, SAME @V201122 00699000
- B GOTMEM2 CONTINUE WITH FIRST CYL OF NEXT E@V201122 00700000
- B NOTFOUND NO MORE EXTENTS @V201122 00701000
- PDSERRTK BAL R14,GETALT GET ALTERNATE TRACK @V201122 00702000
- B GOTMEM2 RETRY I/O ON ALTERNATE @V201122 00703000
- B PDSCHKX RESTART ON NEXT PRIME TRACK IF OK@V201122 00704000
- GOTMEM1 MVC CCHHR(4),NEXTSEEK SETUP WITH FOUND RECORD ADDR@V201122 00705000
- BAL R14,CHKXTNT SEE IF FOUND REC WITHIN EXTENT @V201122 00706000
- B MEMFOUND GOOD NEWS @V201122 00707000
- B GOTMEM2 NO, TRY NEXT EXTENT @V201122 00708000
- B NOTFOUND NO, AND END OF DATA SET FOUND @V201122 00709000
- GOTMEM2 CLI NEXTSEEK+5,8 IS KEY LENGTH STILL 8 @V201122 00710000
- BE GOTMEMBR YES, CONTINUE WITH I/O @V201122 00711000
- B NOTFOUND NO, LABEL TELLS IT ALL @V201122 00712000
- SPACE 2 00713000
- * SEARCH THROUGH PDS DIRECTORY BLOCK FOR CORRECT ENTRY 00714000
- MEMFOUND L R15,SAVEREGS+R11*4 GET FCB BASE REG @V201122 00715000
- L R3,=A(PDSBLK) POINT TO PDS INFO READ IN @V201122 00716000
- LH R2,0(,R3) GET LENGTH USED IN BLOCK @V201122 00717000
- LA R1,2 DUMMY LENGTH @V201122 00718000
- CR R2,R1 TEST LENGTH VALIDITY @V201122 00719000
- BNH FINDIOER NO GOOD @V201122 00720000
- C R2,=F'256' MAXIMUM LENGTH ALLOWED @V201122 00721000
- BNH PDSCONT OK @V201122 00722000
- B ERR80 QUIT RIGHT NOW @V201122 00723000
- PDSCONT AR R1,R3 BUMP TO FIRST VALID BYTE @V201122 00724000
- AR R3,R2 POINT TO END OF THE DIRECTORY BLO@V201122 00725000
- BCTR R3,0 BACK UP ONE BYTE FOR BXLE USE @V201122 00726000
- CLCMEMBR CLC 0(8,R1),MEMBER IS THIS THE ENTRY WE WANT @V201122 00727000
- BH NEWMEM MAYBY, CHECK PDS OPTION @V201122 00728000
- BL CKNXTMEM NO, CHECK NEXT MEMBER @V201122 00729000
- TM FCBIOSW2,FCBMVPDS IS PDS MOVE IN EFFECT @V201122 00730000
- BNO MEMFND NO, THEN WE HAVE MEMBER @V201122 00731000
- CKNXTMEM EQU * @V201122 00732000
- IC R2,11(,R1) NUMBER OF USER HALFWORDS IN USE @V201122 00733000
- N R2,=A(X'1F') ONLY WANT LAST 5 BITS @V201122 00734000
- SLL R2,1 NUMBER OF BYTES IN USER FIELD @V201122 00735000
- LA R2,12(,R2) ADD LENGTH OF NAME AND TTRC FIELD@V201122 00736000
- BXLE R1,R2,CLCMEMBR GO CHECK NEXT ENTRY @V201122 00737000
- B NOTFOUND SORRY, MEMBER ISN'T IN LIBRARY @V201122 00738000
- NEWMEM TM FCBIOSW2,FCBMVPDS @V201122 00739000
- BNO CKNXTMEM @V201122 00740000
- MVC MEMBER(8),0(R1) @V201122 00741000
- CLC MEMBER(8),FENCE LAST ENTRY @V201122 00742000
- BE NOTFOUND YES, THEN MEMBER NOT FOUND @V201122 00743000
- L R9,SAVEREGS+R9*4 GET ADDRESS OF MEMBER NAME @V201122 00744000
- MVC 0(8,R9),MEMBER SET NEW MEMBER NAME @V201122 00745000
- DROP R15 DROP FCB BASE REG @V201122 00746000
- MEMFND EQU * @V201122 00747000
- CLC MEMBER(8),FENCE IS IT DUMMY LAST ENTRY @V201122 00748000
- BE NOTFOUND YES, ALL DONE @V201122 00749000
- * CONVERT TTR OF MEMBER TO ABSOLUTE DASD ADDRESS 00750000
- MEMTHERE IC R14,10(,R1) GET REC NUMBER, RELATIVE @V201122 00751000
- BCTR R14,0 DOWN IT BY ONE FOR SEARCHING @V201122 00752000
- STC R14,CCHHR+4 SAVE IT FOR USE @V201122 00753000
- ST R1,SAVEREGS+R5*4 RETURN ADDRESS OF MEMBER ENT@V201122 00754000
- LH R1,8(,R1) GET TT VALUE (RELATIVE TRACK ADDR@V201122 00755000
- N R1,=A(X'FFFF') CLEAR UNWANTED BITS @V201122 00756000
- LA R14,BPDSDBAD RETURN FOR CONVERSION FAILURE @V201122 00757000
- B TTRCNVRT CONVERT TTR TO ACTUAL ADDRESS @V201122 00758000
- BPDSDBAD B FINDIOER INDICATE BAD PDS @V201122 00759000
- MVC OSFSTCHR(5),CCHHR SAVE DATA ADDRESS @V201122 00760000
- SR R15,R15 CLEAR FOR COMPARE @V201122 00761000
- C R15,SAVEREGS+R6*4 IS THIS A BLDL CALL @V201122 00762000
- BNE FINDRET YES, BYPASS SETXTNT CALL @V201122 00763000
- BAL R10,SETXTNT COMPUTE XTENT BOUNDARY @V201122 00764000
- SR R15,R15 CLEAR ERROR REG @V201122 00765000
- FINDRET B ROSRET RETURN TO CALLER @V201122 00766000
- NOTFOUND LA R15,4 INDICATE NOT FOUND ERROR @V201122 00767000
- B FINDRET RETURN TO CALLER @V201122 00768000
- FINDIOER LA R15,8 INDICATE I/O ERROR @V201122 00769000
- B FINDRET RETURN TO CALLER @V201122 00770000
- SPACE 2 00771000
- * 00772000
- * CONVERT TTR TO CCHHR OR CCHHR TO TTR 00773000
- * 00774000
- CHRCNVRT L R0,=A(X'FFFF') SET R0 AND R1 TO MAX REL TRACK @V201122 00775000
- LR R1,R0 R1= R0 @V201122 00776000
- B GETXTNTS GET EXTENTS @V201122 00777000
- TTRCNVRT XC CCHHR(4),CCHHR CLEAR DISK ADDRESS AREA @V201122 00778000
- GETXTNTS SR R9,R9 CLEAR R9 FOR WORK @V201122 00779000
- IC R9,OSFSTXNO GET NO. OF VALID EXTENTS @V201122 00780000
- LA R8,OSFSTXTN POINT TO THEM @V201122 00781000
- NXTSIZE CLI 0(R8),0 FLAGGED 'NO EXTENT DATA'? @VA08149 00782010
- BE NOXTENTA YES - SKIP OVER THIS EXTENT @VA08149 00782020
- LH R2,2(,R8) GET STARTING CYL THIS EXTENT @VA08149 00782030
- LH R3,6(,R8) GET ENDING CYLINDER @V201122 00783000
- SR R3,R2 NO OF CYLINDERS IN EXTENT @V201122 00784000
- CLC CCHHR(4),2(R8) DISK ADDRESS IN THIS EXTENT @V201122 00785000
- BL TRKNO TTR CONVERT ALWAYS TAKES THIS BRA@V201122 00786000
- * READY FOR FINAL CCHH CONVERT 00787000
- CLC CCHHR(4),6(R8) DISK ADDRESS IN THIS EXTENT @V201122 00788000
- BH TRKNO NO, CONTINUE CHR CONVERT @V201122 00789000
- LH R3,CCHHR GET CYL ADDRESS @V201122 00790000
- SR R3,R2 GET NO. CYLS INTO EXTENT @V201122 00791000
- MH R3,OSFSTTRK+2 CONVERT CYLS TO TRACKS @V201122 00792000
- AH R3,CCHHR+2 GET TRACK ADDRES @V201122 00793000
- SH R3,4(R8) GET RELATIVE TRACK ADDR @V201122 00794000
- SR R1,R3 SUBTRACT FROM CURRENT TT @V201122 00795000
- SR R0,R1 GET CURRENT REL TRACK @V201122 00796000
- BR R14 RETURN TO CALLER @V201122 00797000
- TRKNO MH R3,OSFSTTRK+2 * NO. TRACKS PER CYLINDER @V201122 00798000
- AH R3,8(,R8) ADD ENDING TRK, LAST CYL @V201122 00799000
- SH R3,4(,R8) SUBTRACT STARTING TRACK, FIRST CY@V201122 00800000
- LA R3,1(,R3) ADD ONE DUE TO INCLUSIVENESS @V201122 00801000
- SR R1,R3 SUB EXTENT SIZE FROM TT TOTAL @V201122 00802000
- BM GOTTHEX THIS IS THE CORRECT EXTNET @V201122 00803000
- NOXTENTA EQU * @VA08149 00803010
- LA R8,10(,R8) POINT TO NEXT EXTENT DESCRIPTION @V201122 00804000
- BCT R9,NXTSIZE GO TRY IT @V201122 00805000
- BR R14 FOOLISHNESS ABOUNDS @V201122 00806000
- * READY FOR FINAL TT CONVERT 00807000
- GOTTHEX MVC CCHHR(4),2(R8) ADD CCHH TO ALREADY WAITING R @V201122 00808000
- AR R1,R3 RESTORE OVERFLOW AMOUNT @V201122 00809000
- BZ 4(,R14) ALL SET, TTR IS FIRST OF EXTENT @V201122 00810000
- AH R1,4(,R8) STARTING HH IN EXTENT @V201122 00811000
- SR R0,R0 CLEAR FOR DIVISION @V201122 00812000
- D R0,OSFSTTRK Q(R1)=CYL OFFSET, R(R0)=ABSOLUT@V201122 00813000
- AH R1,2(,R8) ADD CYLINDER START OF EXTENT @V201122 00814000
- STH R1,CCHHR PUT CYLINDER ADDRESS INTO SEEK AR@V201122 00815000
- STH R0,CCHHR+2 ALSO HEAD ADDRESS @V201122 00816000
- B 4(,R14) NORMAL RETURN TO CALLER @V201122 00817000
- SPACE 2 00818000
- * ROUTINE FOR OS DISK NOTES AND POINTS 00819000
- USING DMSROS,R15 TEMP BASE REG @V201122 00820000
- ROSNTPTB STM R0,R14,SAVEREGS SAVE REGS @V201122 00821000
- LM R11,R12,BASE GET BASE REGS @V201122 00822000
- USING FCBSECT,R15 TEMP FCB BASE @V201122 00823000
- L R15,SAVEREGS+R11*4 GET FCB BASE @V201122 00824000
- L R4,FCBOSFST GET OS FST ADDRESS @V201122 00825000
- DROP R15 DROP FCB BASE @V201122 00826000
- XC INTREG14(4),INTREG14 CLEAR RETURN REG @V201122 00827000
- MVC CCHHR(5),OSFSTCHR SETUP CCHHR ADDR @V201122 00828000
- LTR R2,R0 POINT SPECIFIED @V201122 00829000
- BZ ROSNOTE NO, BUT NOTE IS @V201122 00830000
- XC OSFSTNTE(5),OSFSTNTE CLEAR LAST RECORD POINT@V201122 00831000
- NI OSFSTFLG,255-OSFSTRSW TURN OFF POINT+1 SWITCH@V201122 00832000
- LTR R2,R2 POINT SPECIFIED? @V201122 00833000
- BM ROSBSP GO TO BACKSPACE CODE @V201122 00834000
- B ROSPOINT YES, DO A POINT @V201122 00835000
- ROSNOTE C R2,OSFSTCHR IS THIS 1ST READ @V201122 00836000
- BE NOTERET YES, REL TRACK= 0 @V201122 00837000
- CLC OSFSTNTE(5),ZEROES LAST I/O OVRFLW ? @V201122 00838000
- BE NOTECVRT NO, USE OSFSTCHR @V201122 00839000
- CLC OSFSTCHR+2(2),OSFSTNTE+2 DID TRACK CHANGE ? @VA10090 00839300
- BNE NEWTRK YES, TAKE CARE OF IT @VA10090 00839600
- MVC CCHHR(5),OSFSTNTE YES, USE OVRFLW CHR @V201122 00840000
- B NOTECVRT IT'S BEEN SET, CONVERT IT @VA06020 00840400
- NEWTRK MVC CCHHR+4(2),ZEROES ZERO OLD RECORD COUNT @VA06020 00840800
- NOTECVRT BAL R14,CHRCNVRT CONVERT CHR TO REL TRACK @V201122 00841000
- NOTERET STH R0,SAVEREGS RETURN REL TRACK @V201122 00842000
- SR R2,R2 CLEAR R2 FOR INSERT @V201122 00843000
- IC R2,CCHHR+4 GET RECORD NO. @V201122 00844000
- LA R2,1(R2) ADD ONT TO TTR @V201122 00845000
- STC R2,SAVEREGS+2 RETURN RECORD NO. @V201122 00846000
- B ROSRET RETURN TO CALLER @V201122 00847000
- ROSPOINT SR R1,R1 CLEAR REG 1 FOR INSERT @V201122 00848000
- ICM R1,B'0111',0(R2) GET REL TTR @V201122 00849000
- BCTR R1,R0 SUBTRACT ONE FROM RECORD @V201122 00850000
- CLI 3(R2),1 SHOULD R BE UPDATED @V201122 00851000
- BNE CKSTART NO, SETUP FOR TTR CONVERT @V201122 00852000
- OI OSFSTFLG,OSFSTRSW TURN ON POINT+1 SWITCH @V201122 00853000
- CKSTART STC R1,OSFSTCHR+4 SET NEW RECORD NO. @V201122 00854000
- SRL R1,8 GET REL TRACK @V201122 00855000
- BAL R14,TTRCNVRT CONVERT REL TRACK @V201122 00856000
- BC 0,0(0) ANY ERRORS SHOW UP ON NEXT READ @V201122 00857000
- MVC OSFSTCHR(4),CCHHR SET NEW CCHH @V201122 00858000
- BAL R10,SETXTNT SET EXTENT BOUNDARY @V201122 00859000
- B ROSRET RETURN TO CALLER @V201122 00860000
- ROSBSP SR R2,R2 CLEAR REG 2 @V201122 00861000
- IC R2,OSFSTCHR+4 GET RECORD NO. @V201122 00862000
- LTR R2,R2 IS IT ZERO @V201122 00863000
- BZ BSPTRK YES, THEN BACKSPACE TRACK @V201122 00864000
- BCTR R2,R0 BACKUP ONE RECORD @V201122 00865000
- STC R2,OSFSTCHR+4 SET NEW RECORD PTR @V201122 00866000
- B CLR15RET RETURN TO CALLER @V201122 00867000
- BSPTRK CLC OSFSTCHR(5),ZEROES CCHHR = ZERO @V201122 00868000
- BE ERR80 YES, RETURN WITH ERROR @V201122 00869000
- BAL R14,CHRCNVRT CONVERT CCHH @V201122 00870000
- LTR R1,R0 RELATIVE TRACK ZERO @V201122 00871000
- BZ ERR80 YES, THEN RETURN ERROR @V201122 00872000
- BCTR R1,R0 TRACK = TRACK-1 @V201122 00873000
- BAL R14,TTRCNVRT GET ACTUAL ADDRESS @V201122 00874000
- B ERR80 INDICATE ERROR @V201122 00875000
- MVI CCHHR+4,0 RECORD NO.= 0 @V201122 00876000
- CLI 0(R8),X'80' BSP ON SPLIT'S ? @V2A3801 00876100
- BNE BSPTRK2 NO, CONTINUE @V2A3801 00876200
- CLC CCHHR+2(2),8(R8) ALREADY ABOVE HIGH HEAD ? @VM01015 00876300
- BH ERR80 YES, EXIT WITH RC @VM01015 00876400
- CLC CCHHR+2(2),4(R8) ALREADY BELOW LOW HEAD ? @V2A3801 00876500
- BL ERR80 YES, EXIT WITH RC @V2A3801 00876600
- BSPTRK2 LA R0,RDLSTCNT PGM TO READ LAST CNT ON TRK @V2A3801 00876700
- BAL R14,DISKIO GO EXCP @V201122 00878000
- B *+12 UNIT CHECK EXPECTED @V201122 00879000
- B ERR80 NORMAL END IS ABNORMAL @V201122 00880000
- B ERR80 NORMAL END IS 'ABNORMAL' @V201122 00881000
- TM SNSEDATA+1,12 FILE PROTECT OR NO REC FND ? @V2A3801 00882100
- BNZ BSPRET ANY OR ALL ALLOWED @V2A3801 00882200
- TM SNSEDATA,2 TRACK CONDITION ? @V2A3801 00882300
- BZ ERR80 NO, ERROR @V2A3801 00882400
- BSPRET SR R15,R15 CLEAR R15 FOR INSERT @V201122 00886000
- IC R15,NEXTSEEK+4 GET RECORD NUMBER @V201122 00887000
- BCTR R15,R0 DECREMENT IT BY ONE @V201122 00888000
- STC R15,NEXTSEEK+4 RESET RECORD NUMBER @V201122 00889000
- MVC OSFSTCHR(5),NEXTSEEK SAVE ADDRESS POINTER @V201122 00890000
- BAL R10,SETXTNT SET EXTENT BOUNDARY @V201122 00891000
- B CLR15RET RETURN TO CALLER @V201122 00892000
- *************************************************************** 00893000
- * 00894000
- * TEST INFORMATION RETURNED BY SENSE FOR UNEXPECTED STAT 00895000
- * 00896000
- *************************************************************** 00897000
- CHKSENSE TM SNSEDATA,X'FD' ANYTHING BUT TRACK CONDITION @V201122 00898000
- BNZ ERR80 YES, ERROR @V201122 00899000
- TRKBYTE TM SNSEDATA+1,X'D2' ALLOW CYLEND,NOREC,OVERINC,PROT@V201122 00900000
- BNZ ERR80 TOO BAD @V201122 00901000
- MVC SNSEBYTE(1),SNSEDATA MAKE A COMPOUND BYTE @V201122 00902000
- OC SNSEBYTE(1),SNSEDATA+1 OUT FO BOTH FOR EASY IN@V201122 00903000
- BR R14 NOW RETURN TO CALLER @V201122 00904000
- SPACE 2 00905000
- *************************************************************** 00906000
- * 00907000
- * INCREMENT DASD ADDRESS TO TRK 0, REC 0 OF NEXT CYL 00908000
- * 00909000
- *************************************************************** 00910000
- INCRCYL LH R1,CCHHR GET CYLINDER ADDRESS @V201122 00911000
- LA R1,1(,R1) ADD ONE TO IT @V201122 00912000
- SLL R1,16 CREATE CCHH WITH HEAD ZERO @V201122 00913000
- CLI 0(R8),X'80' SPLIT EXTENT @V201122 00914000
- BNE SETCCHHR NO @V201122 00915000
- ICM R1,B'0011',4(R8) SET STARTING HH @V201122 00916000
- SETCCHHR ST R1,CCHHR PUT TO SEARCH ARG. AREA @V201122 00917000
- MVI CCHHR+4,X'00' START WITH RECORD ZERO @V201122 00918000
- BR R14 RETURN TO USER @V201122 00919000
- SPACE 2 00920000
- *************************************************************** 00921000
- * 00922000
- * MAKE SURE DASD ADDRESS IS WITHIN CURRENT EXTENT. OTHE 00923000
- * SUBSTITUTE ADDRESS OF FIRST TRACK OF NEXT EXTENT. 00924000
- * 00925000
- *************************************************************** 00926000
- CHKXTNT TM OSFSTFLG,OSFSTALT CURRENT ON ALTERNATE @V201122 00927000
- BCR 1,R14 YES, IT WILL ALL TAKE CARE OF ITS@V201122 00928000
- SETUP8 CLI 0(R8),0 FLAGGED 'NO EXTENT DATA'? @VA08149 00929010
- BE NOXTENTB YES - SKIP OVER THIS EXTENT @VA08149 00929020
- CLC OSFSTEND(4),6(R8) IS THIS THE RIGHT EXTENT @VA08149 00929030
- BE CHKEND YES, CHECK FOR END OF EXTENT @V201122 00930000
- NOXTENTB EQU * @VA08149 00930010
- LA R8,10(R8) UP TO NEXT EXTENT @V201122 00931000
- BCT R9,SETUP8 CHECK IF THIS IS RIGHT EXTENT @V201122 00932000
- B 8(R14) RAN OUT OF EXTENTS, RETURN @V201122 00933000
- CHKEND CLC CCHHR(4),OSFSTEND IS ADDR OUT OF EXTENT @V201122 00934000
- BH NXTXTNT2 YES, UP TO NEXT EXTENT @V201122 00935000
- BAL R15,SETMASK SET FILE MASK @V201122 00936000
- CLI 0(R8),X'80' SPLIT CYL? @V201122 00937000
- BCR 7,R14 NO, RETURN TO CALLER @V201122 00938000
- CLC OSFSTEND+2(2),CCHHR+2 COMPARE ENDING TRK TO CURR@V201122 00939000
- BCR 11,R14 BNL TO CALLER @V201122 00940000
- LR R10,R14 SAVE REG 14 @V201122 00941000
- BAL R14,INCRCYL YES, UP TO NEXT CYL @V201122 00942000
- BR R10 RETURN TO CALLER @V201122 00943000
- NOXTENTC EQU * @VA08149 00943010
- NXTXTNT2 BCT R9,NXTXTNT GO GET ANOTHER IF ONE EXISTS @V201122 00944000
- B 8(,R14) NO MORE EXTENTS RETURN ADDRESS @V201122 00945000
- NXTXTNT LA R8,10(,R8) BUMP ADDRESS TO NEXT EXTENT DESCR@V201122 00946000
- CLI 0(R8),0 FLAGGED 'NO EXTENT DATA'? @VA08149 00946060
- BE NOXTENTC YES - SKIP OVER THIS EXTENT @VA08149 00946070
- LA R10,4(,R14) SET NEW RETURN ADDRESS @V201122 00947000
- B SETXTNT SET EXTENT BOUNDARY @V201122 00948000
- SETMASK MVC MASK(1),MASK1 SET TO ALLOW OVERFLOW OF TRK @V201122 00949000
- CLC CCHHR(4),OSFSTEND LAST TRK OF ENTENT? @V201122 00950000
- BE NOOVRFLW YES, DON'T ALLOW OVERFLOW @V201122 00951000
- TM OSFSTRFM,X'20' IS THIS AN OVERFLOW DATA SET @V201122 00952000
- BO NOOVRFLW YES, SET MASK TO STOP OVERFLOW @V201122 00953000
- CLI 0(R8),X'80' SPLIT CYL EXTENT @V201122 00954000
- BCR 7,R15 NO, CONTINUE @V201122 00955000
- CLC CCHHR+2(2),OSFSTEND+2 LAST TRACK OF SPLIT CYL@V201122 00956000
- BCR 7,R15 NO, RETURN TO CALLER @V201122 00957000
- NOOVRFLW MVC MASK(1),MASK2 SET TO NOT ALLOW OVERFLOW OF TRK @V201122 00958000
- BR R15 RETURN TO CALLER @V201122 00959000
- SETXTNT MVC CCHHR(4),2(R8) SET TRACK ADDR @V201122 00960000
- MVI CCHHR+4,0 SET RECORD NO. TO ZERO @V201122 00961000
- MVC OSFSTEND(4),6(R8) SET END OF EXTENT ADDR @V201122 00962000
- NI OSFSTFLG,255-OSFSTALT TURN OFF ALT TRK INDICA@V201122 00963000
- BAL R15,SETMASK SET FILE MASK @V201122 00964000
- BR R10 RETURN TO CALLER @V201122 00965000
- SPACE 2 00966000
- *************************************************************** 00967000
- * 00968000
- * SWITCH DASD ADDRESS FROM DEFECTIVE TO ALTERNATE TRACK 00969000
- * OR BACK FROM ALTERNATE TO NEXT PRIMARY TRACK 00970000
- * 00971000
- *************************************************************** 00972000
- GETALT TM SNSEBYTE,X'02' IS TRACK CONDITION PRESENT @V201122 00973000
- BZ ERR80 NO, IMPROPER ENTRANCE @V201122 00974000
- GETALT2 TM OSFSTFLG,OSFSTALT ON ALTERNATE TRACK? @V201122 00975000
- BO NXTPRIME YES, GO RETURN TO NEXT PRIME TRAC@V201122 00976000
- OI OSFSTFLG,OSFSTALT INDICATE ALT TRACK @V201122 00977000
- L R1,CSW GET FAILING CCW ADDRESS @V201122 00978000
- LA R1,0(,R1) CLEAR HIGH ORDER BYTE @V201122 00979000
- S R1,=F'8' BACKUP TO FAILING CCW START ADDRE@V201122 00980000
- TM 0(R1),X'80' IS IT A MULTIPLE TRACK CCW @V201122 00981000
- L R1,NEXTSEEK SEARCH ADDRESS USED PREVIOUSLY @V201122 00982000
- BZ NOTMTCCW NOT MULTIPLE TRACK, LEAVE SEARCH @V201122 00983000
- BUMPCCHH MVI CCHHR+4,0 START ALT TRK ADDR AT RECORD 0 @V201122 00984000
- LA R1,1(,R1) BUMP TO NEXT TRACK ADDRESS @V201122 00985000
- ST R1,CCHHR UPDATE TO TRACK REPRESENTED BY AL@V201122 00986000
- NOTMTCCW ST R1,SEEK+2 ADDRESS WHICH IS BAD TRACK @V201122 00987000
- LR R10,R14 SAVE RETURN ADDRESS FOR A MOMENT @V201122 00988000
- LA R0,READR0 CHAN PROG TO READ R0 TO FIND ALTE@V201122 00989000
- BAL R14,DISKIO GO GET ALTERNATE ADDRESS @V201122 00990000
- B ERR80 BAD NEW BROTHER @V201122 00991000
- BC 0,0(R0) IL OR UE IS OKAY @V201122 00992000
- ALTRET TM R0DATA+11,X'02' BAD TRACK INDICATOR ON @V201122 00993000
- BCR 1,R10 OKAY IF BAD TRK, RETURN @V201122 00994000
- TM OSFSTRFM,X'20' TRACK OVERFLOW SPECIFIED @V201122 00995000
- BCR 14,R10 NO, RETURN @V201122 00996000
- TM SNSEBYTE,X'03' BOTH OVERFLOW AND BAD TRK @V201122 00997000
- BCR 14,R10 NO, RETURN @V201122 00998000
- L R1,R0DATA+12 GET CURRENT CCHH @V201122 00999000
- LR R14,R10 SAVE RETURN ADDR @V201122 01000000
- B BUMPCCHH READ NEXT HOME ADDR @V201122 01001000
- NXTPRIME NI OSFSTFLG,255-OSFSTALT RESET ALT INDICATOR @V201122 01002000
- UPTRK LA R1,1 SETUP TO COMPUTE NEXT GOOD TRACK @V201122 01003000
- A R1,CCHHR DASD ADDR OF DEFECTIVE +1 @V201122 01004000
- CLM R1,B'0001',OSFSTTRK+3 IS HEAD BEYOND CYL BOUNARY@V201122 01005000
- BL NOTBYOND NO, ADDR OK AS IS @V201122 01006000
- LH R1,CCHHR GET CYLINDER ADDRESS @V201122 01007000
- LA R1,1(,R1) BUMP TO NEXT CYLINDER @V201122 01008000
- SLL R1,16 CLEAR HEAD ADDRESS TO ZERO @V201122 01009000
- CLI 0(R8),X'80' SPLIT CYLINDER ? @V2A3801 01009100
- BNE NOTBYOND NO, BRANCH @V2A3801 01009200
- ICM R1,B'0011',4(R8) SET STARTING HH @V2A3801 01009300
- NOTBYOND ST R1,CCHHR PUT BACK UPDATED SEARCH ADDRESS @V201122 01010000
- MVI CCHHR+4,0 SET TO RECORD ZERO @V201122 01011000
- B 4(,R14) RETURN ON NEW TRACK RETURN POINT @V201122 01012000
- SPACE 1 01013000
- SPACE 4 01014000
- *************************************************************** 01015000
- * 01016000
- * CHANNEL PROGRAMS FOR PACK FORMATTED FOR OS 01017000
- * 01018000
- *************************************************************** 01019000
- SPACE 1 01020000
- READR0 CCW 7,SEEK,CC,6 SEEK TO ADDRESS AT SEEK @V201122 01021000
- CCW 31,MASK,CC,1 SET FILE MASK @V201122 01022000
- CCW 26,R0DATA+11,CC,5 READ HOME ADDRESS @V201122 01023000
- CCW 22,R0DATA,CC,8 READ ALTERNATE TRACK ADD@V201122 01024000
- CCW 3,0,SLI,1 NOP @V201122 01025000
- SPACE 1 01026000
- READBLK CCW 7,SEEK,CC,6 SEEK TO ADDRESS AT SEEK @V201122 01027000
- CCW 31,MASK,CC,1 SET FILE MASK @V201122 01028000
- CCW 49,CCHHR,CC,5 SEARCH ID EQUAL @V201122 01029000
- CCW 8,*-8,CC+SLI,1 TIC @V201122 01030000
- READCHR CCW 146,0,CC,8 READ THIS CCHHR @VM08817 01031000
- READCCW CCW 6,0,0,0 READ DATA RECORD @V201122 01032000
- SPACE 1 01033000
- RDDSCB4 CCW 7,SEEK,CC,6 SEEK TO ADDRESS AT SEEK @V201122 01034000
- CCW 31,MASK1,CC,1 SET FILE MASK @V201122 01035000
- CCW 49,CCHHR,CC,5 SEARCH ID EQUAL @V201122 01036000
- CCW 8,*-8,CC+SLI,1 TIC @V201122 01037000
- CCW 6,DSCB4,CC,96 READ DSCB4 INTO TEMP BUF@V201122 01038000
- CCW 3,0,SLI,1 NOP @V201122 01039000
- SPACE 1 01040000
- RDDSCB1 CCW 7,SEEK,CC,6 SEEK TO ADDRESS IN SEEK @V201122 01041000
- CCW 31,MASK1,CC,1 SET FILE MASK @V201122 01042000
- CCW 49,CCHHR,CC,5 SEARCH ID EQUAL @V201122 01043000
- CCW 8,*-8,CC+SLI,1 TIC @V201122 01044000
- CCW 146,NEXTSEEK,CC,8 READ DISK ADDR OF THIS R@V201122 01045000
- ADDSNAME CCW 41,0,CC,44 SEARCH KEY EQUAL FOR DSN@V201122 01046000
- CCW 8,*-16,CC+SLI,1 TIC @V201122 01047000
- CCW 6,DSCB1,CC,96 READ DSCB1 INTO TEMP BUF@V201122 01048000
- CCW 3,0,SLI,1 NOP @V201122 01049000
- SPACE 1 01050000
- RDDSCB3 CCW 7,SEEK,CC,6 SEEK TO ADDRESS IN SEEK @V201122 01051000
- CCW 31,MASK1,CC,1 SET FILE MASK @V201122 01052000
- CCW 49,CCHHR,CC,5 SEARCH ID EQUAL @V201122 01053000
- CCW 8,*-8,CC+SLI,1 TIC @V201122 01054000
- XTENTS CCW 14,*-*,CC,140 READ KEY & DATA (DSCB3 E@V201122 01055000
- CCW 3,0,SLI,1 NOP @V201122 01056000
- SPACE 1 01057000
- RDPDSD CCW 7,SEEK,CC,6 SEEK TO ADDR IN SEEK @V201122 01058000
- CCW 31,MASK,CC,1 SET FILE MASK @V201122 01059000
- CCW 49,CCHHR,CC,5 SEARCH ID EQUAL @V201122 01060000
- CCW 8,*-8,CC+SLI,1 TIC @V201122 01061000
- CCW 146,NEXTSEEK,CC,8 READ DISK ADDR OF THIS R@V201122 01062000
- SRCHMEM CCW 105,MEMBER,CC,8 SEARCH KEY EQUAL OR HIGH@V201122 01063000
- CCW 8,*-16,CC+SLI,1 TIC @V201122 01064000
- CCW 6,PDSBLK,CC,256 READ PDS BLOCK INTO TEMP@V201122 01065000
- CCW 3,0,SLI,1 NOP @V201122 01066000
- SPACE 1 01067000
- READSKIP CCW 7,SEEK,CC,6 SEEK TO ADDR IN SEEK @V201122 01068000
- CCW 31,MASK,CC,1 SET FILE MASK @V201122 01069000
- CCW 49,CCHHR,CC,5 SEARCH ID EQUAL @V201122 01070000
- CCW 8,*-8,CC+SLI,1 TIC @V201122 01071000
- READCHR1 CCW 146,0,CC,8 READ DISK ADDR @VM28920 01072000
- CCW 6,0,CC+SKIP+SLI,8 READ DATA SKIP FOR POINT@V201122 01073000
- READCHR2 CCW 146,0,0,8 READ DISK ADDR @VM28920 01074000
- SPACE 2 01075000
- RDLSTCNT CCW 7,SEEK,CC,6 SEEK TO ADDR IN SEEK @V201122 01076000
- CCW 31,MASK2,CC,1 SET FILE MASK @V201122 01077000
- CCW 49,CCHHR,CC,5 SEARCH ID EQUAL @V201122 01078000
- CCW 8,*-8,CC+SLI,1 TIC @V201122 01079000
- CCW 18,NEXTSEEK,CC+SLI,5 RD COUNT TILL TRK END @V2A3801 01080100
- CCW 8,*-8,SLI,1 TIC @V201122 01081000
- SPACE 4 01082000
- *************************************************************** 01083000
- * 01084000
- * CONSTANTS, STORAGE AREAS, AND MESSAGES OF GREAT UTILIT 01085000
- * 01086000
- *************************************************************** 01087000
- SPACE 1 01088000
- DS 0D @V201122 01089000
- ZEROES DC 2F'0' ZEROES @V201122 01090000
- FCBSAVE DS F FCB ADDRESS SAVED @V201122 01091000
- FENCE DC 8X'FF' DELIMITER FENCE @V201122 01092000
- SNSEDATA DC 2X'00' SAVE SENSE DATA @V201122 01093000
- RESIDUAL DS H'0' @V201122 01094000
- CCHHR DC F'0' NEXT SEARCH ADDRESS @V201122 01095000
- DC H'0' @V201122 01096000
- NEXTSEEK DS 2F ADDRESS OF RECOR JUST RE@V201122 01097000
- DS H @V201122 01098000
- SEEK DC H'0' NEXT SEEK ADDRESS @V201122 01099000
- R0DATA DS 4F @V201122 01100000
- MEMBER DS 8X CURRENT MEMBER NAME @V201122 01101000
- MASK DC B'01010000' MASK TO ALLOW TRK OVERFL@V201122 01102000
- MASK1 DC B'01010000' @V201122 01103000
- MASK2 DC B'01011000' MASK TO RESTRICT TRK OVE@V201122 01104000
- SNSEBYTE DC X'00' SENSE DATA @V201122 01105000
- ROSFLAG DC X'00' CONTROL FLAGS @VA09241 01105300
- DYNAMIC EQU X'80' DSN BLOCK IS CHAINED @VA09241 01105600
- SPACE 2 01106000
- SPACE 2 01107000
- LTORG @V201122 01108000
- SPACE 2 01109000
- DS 0D ALIGN FOR GOOD I/O @V201122 01110000
- DSCB4 DS 0F TEMP 4F DSCB4 ACCESS BUF@V201122 01111000
- DS4HPCHR EQU DSCB4+45-44 HIGHEST DSCB1 ADDRESS @V201122 01112000
- DS4VTOCI EQU DSCB4+58-44 VTOC INDICATORS @V201122 01113000
- DS4DEVSZ EQU DSCB4+62-44 DEVICE SIZE @V201122 01114000
- DS4VTOCE EQU DSCB4+105-44 VTOC EXTENT @V201122 01115000
- DSCB1 DS 0F TEMP 24F DSCB1 STATE BUF@V201122 01116000
- DS1FMTID EQU DSCB1+44-44 FORMAT IDENTIFIER @V201122 01117000
- DS1VOLSQ EQU DSCB1+51-44 VOLUME SEQUENCE NO. @V201122 01118000
- DS1NOEPV EQU DSCB1+59-44 NO. OF EXTENTS @V201122 01119000
- DS1DSORG EQU DSCB1+82-44 DATA SET ORGANIZATION @V201122 01120000
- DS1RECFM EQU DSCB1+84-44 RECORD FORMAT @V201122 01121000
- DS1BLKL EQU DSCB1+86-44 BLOCK SIZE @V201122 01122000
- DS1LRECL EQU DSCB1+88-44 LOGICAL RECORD LENGTH @V201122 01123000
- DS1DSIND EQU DSCB1+93-44 DATA SET INDICATORS @V201122 01124000
- DS1LSTAR EQU DSCB1+98-44 LAST BLOCK POINTER @V201122 01125000
- DS1EXT1 EQU DSCB1+105-44 DATA SET EXTENTS @V201122 01126000
- DS1PTRDS EQU DSCB1+135-44 POINTER TO DSCB3 @V201122 01127000
- PDSBLK DS 64F TEMP 64F OS FIND PDS BLO@V201122 01128000
- SPACE 2 01129000
- EJECT 1 01130000
- CC EQU X'40' CCW COMMAND CHAIN @V201122 01131000
- SLI EQU X'20' SUPPRESS INCORRECT LENGT@V201122 01132000
- SKIP EQU X'10' SUPPRESS DATA TRANSFER @V201122 01133000
- MEMHIGH EQU 73 SEARCH FOR HIGHER MEMBER NAME @V201122 01134000
- MEMHGHEQ EQU 105 SEARCH FOR HIGH OR EQUAL NAME @V201122 01135000
- TYP3350 EQU X'0B' CMS' 3350 DEVICE TYPE @V304498 01135100
- THREE DC X'03' THREE EXTENTS @VA06195 01135200
- USERLBL EQU X'40' USER LABEL FLAG @VA06195 01135300
- DOSDASD EQU X'80' DOS PACK @VA13649 01135500
- DS4VTOCX EQU X'01' DSCB4 INDEXED VTOC @VA13649 01135700
- SPACE 4 01136000
- ERR80 LA R15,80 @V201122 01137000
- ERRRET B INTRETRN @V201122 01138000
- EOF LA R15,12 SET EOF ERROR CODE @V201122 01139000
- B ERRRET @V201122 01140000
- DSNOTFND EQU * @V201122 01141000
- FCBNTFND LA R15,88 @V201122 01142000
- B ERRRET @V201122 01143000
- EJECT 1 01144000
- PRINT GEN 01145000
- NUCON @V201122 01146000
- ADT @V201122 01147000
- OSFST @V201122 01148000
- CMSCB @V201122 01149000
- IO @V201122 01150000
- CMSAVE @V201122 01151000
- REGEQU @V201122 01152000
- END 01153000
ibm/vm370-lib/cms/dmsros.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator