ibm:vm370-lib:cp:dmkver.assemble_src
Table of Contents
DMKVER Source
References
- Fixes Applied : 7
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC024DK]
Source Listing
- DMKVER.ASSEMBLE.txt
- VER TITLE 'DMKVER (CP) VM/370 - RELEASE 6' 00001000
- *. 00002000
- * 00003000
- * MODULE NAME - 00004000
- * DMKVER 00005000
- * 00006000
- * FUNCTION - 00007000
- * TO PROCESS ERROR RECORDS PASSED FROM VIRTUAL MACHINES 00008000
- * VIA AN SVC 76. 00009000
- * 00010000
- * ATTRIBUTES - 00011000
- * PAGEABLE,REENTRANT,CALLED VIA SVC 00012000
- * 00013000
- * ENTRY POINTS - 00014000
- * DMKVERO - SVC 76 FROM OS, VS/1, VS/2, OR VM/370. 00015000
- * DMKVERD - SVC 76 FROM DOS OR DOS/VS. 00016000
- * 00017000
- * ENTRY CONDITIONS - 00018000
- * FOR DMKVERO - 00019000
- * GPR0 - 2'S COMPLEMENT OF RECORD LENGTH. 00020000
- * GPR1 - ADDRESS OF THE RECORD. 00021000
- * FOR DMKVERD - 00022000
- * GPR0 - ADDRESS OF THE RECORD. 00023000
- * GPR1 - ADDRESS OF CCB(DOS CONTROL BLOCK) 00024000
- * COMMON TO BOTH ENTRIES - 00025000
- * GPR11 - USERS VMBLOCK ADDRESS. 00026000
- * GPR12 - ADDRESS OF ENTRY POINT. 00027000
- * GPR13 - ADDRESS OF STANDARD SAVE AREA. 00028000
- * 00029000
- * EXIT CONDITIONS - 00030000
- * 00031000
- * NONE 00032000
- * 00033000
- * CALLS TO OTHER ROUTINES - 00034000
- * DMKFREE - TO OBTAIN STORAGE FOR RECORD BUFFER. 00035000
- * DMKFRET - TO RETURN STORAGE TO THE SYSTEM. 00036000
- * DMKQCNWT - TO SEND MESSAGES TO THE OPERATOR. 00037000
- * DMKIOEVR - TO WRITE RECORD TO RECORDING CYLINDER. 00038000
- * DMKSCNVU - TO OBTAIN VIRTUAL CANNEL, CONTROL UNIT, AND 00039000
- * DEVICE BLOK ADDRESSES. 00040000
- * DMKSCNRD - TO OBTAIN REAL DEVICE ADDRESS. 00041000
- * DMKCVTBH - TO CONVERT BINARY ADDRESSES TO HEX. 00042000
- * 00043000
- * EXTERNAL REFERENCES - 00044000
- * NONE 00045000
- * 00046000
- * TABLES / WORKAREAS - 00047000
- * NONE 00048000
- * 00049000
- * REGISTER USAGE - 00050000
- * GPR0 - PARAMETER REGISTER 00051000
- * GPR1 - PARAMETER REGISTER 00052000
- * GPR2 - WORK REGISTER AND PARAMETER REGISTER 00053000
- * GPR3 - WORK REGISTER 00054000
- * GPR4 - WORK REGISTER 00055000
- * GPR5 - WORK REGISTER AND SECONDARY BAL REGISTER 00056000
- * GPR6 - WORK REGISTER 00057000
- * GPR7 - ADDRESS OF VDEVBLOK 00058000
- * GPR8 - ADDRESS OF RDEVBLOK 00059000
- * GPR9 - BASE REGISTER FOR ERROR RECORD 00060000
- * GPR10 - BAL REGISTER 00061000
- * GPR11 - VMBLOK ADDRESS 00062000
- * GPR12 - BASE ADDRESS 00063000
- * GPR13 - SAVE AREA ADDRESS 00064000
- * GPR14 - LINKAGE REGISTER 00065000
- * GPR15 - LINKAGE REGISTER 00066000
- * 00067000
- * NOTES - 00068000
- * NONE 00069000
- * 00070000
- * OPERATION - 00071000
- * 00072000
- * 1. DMKVERO - ENTRY FOR OS,VS,OR VM TYPE SYSTEM RECORDING. SET 00073000
- * A FLAG TO INDICATE AN OS TYPE. CHECK IF THE PASSED RECORD 00074000
- * RESIDES WITHIN THE LIMITS OF THE VIRTUAL MACHINE. IF IT 00075000
- * DOES, GO TO STEP 3, ELSE RETURN TO DMKPSA TO REFLECT THE 00076000
- * SVC BACK TO THE VIRTUAL MACHINE. 00077000
- * 2. DMKVERD - ENTRY FROM A DOS TYPE SYSTEM. THE LENGTH OF 00078000
- * THE RECORD IS NOT KNOWN IN THIS CASE. IF AT LEAST THE 00079000
- * RECORD HEADER RESIDES WITHIN THE LIMITS OF THE VIRTUAL 00080000
- * MACHINES STORAGE, A RECORDING WILL BE ATTEMPTED. A RECORD 00081000
- * SIZE OF 136 BYTES WILL BE USED IF IT WILL FIT IN USER 00082000
- * STORAGE, ELSE A SIZE OF WHATEVER IS LEFT WILL BE USED. 00083000
- * 3. CALL DMKFREE TO OBTAIN STORAGE FOR A RECORD BUFFER. MOVE 00084000
- * THE RECORD FROM USER STORAGE TO THE BUFFER. 00085000
- * 4. IF THE RECORD IS AN OS TYPE, GO TO STEP 5. IF A DOS TYPE, 00086000
- * CHECK IF THE RECORD TYPE IS 'OBR'. IF NOT, WE DON'T HAVE 00087000
- * A VALID RECORDING. IN THIS CASE - CALL DMKFRET TO RETURN 00088000
- * THE BUFFER AND EXIT TO DMKPSA TO REFECT THE SVC TO THE 00089000
- * VIRTUAL MACHINE. IF VALID, GO TO STEP 6. 00090000
- * 5. USE THE RECORD TYPE TO INDEX INTO A BRANCH TABLE WHICH 00091000
- * WILL GIVE CONTROL TO THE APPROPRIATE CONVERSION ROUTINE 00092000
- * OR IF INVALID RETURN TO DMKPSA TO REFLECT THE SVC. 00093000
- * 6. TYPE30 (OBR) - GO TO STEP 11 TO DO THE COMMON CONVERTS. 00094000
- * IF THE DEVICE IS NONDEDICATED DASD, REPLACE THE VOLUME 00095000
- * SERIAL, SEEK ADDRESS, AND H. A. WITH THE REAL DATA. ALSO 00096000
- * UPDATE SENSE DATA FROM VIRTUAL TO REAL AND THEN GO TO 00097000
- * STEP 12. IF THE DEVICE IS DEDICATED, GO RIGHT TO STEP 12. 00098000
- * 7. TYPE40 (ABEND) - GO TO STEP 11 TO DO THE COMMON CONVERTS 00099000
- * AND THEN GO TO STEP 13. 00100000
- * 8. TYPE60 (DDR) - GO TO STEP 11 TO DO THE COMMON CONVERTS. 00101000
- * CONVERT THE FROM AND TO CUA'S FROM VIRTUAL TO REAL 00102000
- * AND GO TO STEP 13. 00103000
- * 9. TYPE70 (MIH) - GO TO STEP 11 FOR COMMON CONVERTS. THEN IF 00104000
- * DEVICE IS NONDEDICATED DASD, UPDATE THE VOLUME SERIAL 00105000
- * WITH THE REAL VOLUME SERIAL AND GO TO STEP 13. IF DEVICE 00106000
- * IS DEDICATED, GO RIGHT TO STEP 13. 00107000
- * 10. TYPE90 (MDR) - GO TO STEP 11 TO DO THE COMMON CONVERTS 00108000
- * AND THEN GO TO STEP 13. 00109000
- * 11. THIS ROUTINE WIIL CONVERT THE FIELDS COMMON TO MORE THAN 00110000
- * ONE RECORD TYPE FROM VIRTUAL TO REAL. FAILING CUA'S WILL 00111000
- * BE CONVERTED FOR TYPE 30,70, AND 90. THE PROGRAM NAME 00112000
- * WILL BE REPLACED WITH THE USERID FOR TYPE 30,40,60,70, 00113000
- * AND 90. THE CPUID WILL BE REPLACED WITH THE REAL CPUID 00114000
- * FOR ALL RECORDS. 00115000
- * 12. SET UP THE DMKVER575I MESSAGE AND CALL DMKQCNWT TO SEND 00116000
- * THE MESSAGE TO THE SYSTEMS OPERATOR. 00117000
- * 13. RESET THE VMEXWAIT FLAG IN VMRSTAT. THEN CALL DMKIOEVR 00118000
- * TO DO THE ACTUAL RECORDING. CALL DMKFRET TO RETURN THE 00119000
- * BUFFER TO FREE STORAGE. ISSUE AN SVC 16 TO RETURN THE 00120000
- * SAVEAREA TO THE SYSTEM AND GOTO DMKDSPCH. 00121000
- *. 00122000
- EJECT 00123000
- COPY OPTIONS @V1D0226 00124000
- COPY LOCAL OPTIONS @V1D0226 00125000
- EJECT 00126000
- DMKVER CSECT @V1D0226 00127000
- SPACE 00128000
- DMKVERID DC CL8'DMKVER' MODULE IDENTIFIER @V1D0226 00129000
- SPACE 00130000
- EXTRN DMKFREE,DMKFRET @V1D0226 00131000
- EXTRN DMKQCNWT @V1D0226 00132000
- EXTRN DMKIOEVR @V1D0226 00133000
- EXTRN DMKSCNVU,DMKSCNRD @V1D0226 00134000
- EXTRN DMKCVTBH @V1D0226 00135000
- EXTRN DMKSYSTZ @VM08585 00136000
- EXTRN DMKVATRN @VM08585 00137000
- SPACE 3 00138000
- * 00139000
- * EQUATES FOR THIS MODULE ONLY 00140000
- * 00141000
- OS EQU X'80' OS TYPE RECORD @V1D0226 00142000
- DOS EQU X'40' DOS TYPE RECORD @V1D0226 00143000
- TWOMOVE EQU X'20' RECORD CROSSES PAGE BOUNDARY @V1D0226 00144000
- VVADR EQU X'10' PROC. V.M. IN TRANSLATE MODE @VM08585 00145000
- * FOLLOWING EQUQTE WILL HAVE TO BE ALTERED FOR ANY NEW RELEASE 00146000
- * OF VM370. 00147000
- VMSYS EQU X'66' SYSTEM AND RELEASE LEVEL @VA09371 00148110
- SPACE 3 00149000
- USING PSA,R0 @V1D0226 00150000
- USING RDEVBLOK,R8 @V1D0226 00151000
- USING VMBLOK,R11 @V1D0226 00152000
- USING SAVEAREA,R13 @V1D0226 00153000
- EJECT 00154000
- DMKVERO RELOC ENTRY FOR OS, VS, OR VM @V1D0226 00155000
- MVI SAVEWRK1,OS FLAG AS OS TYPE RECORD @V1D0226 00156000
- LR R3,R1 POSSIBLE V-V ADR. @VM08585 00157000
- BAL R10,TRNSTEST GO CHECK IT @VM08585 00158000
- TM SAVEWRK1,VVADR TRANSLATE MODE V.M. ?? @VM08585 00159000
- BO VEROTRN YES --- @VM08585 00160000
- LCR R5,R0 BYTE COUNT INTO R5 @VA03323 00161000
- CL R1,VMSTOR IS IT A VALID ADDRESS @VM03010 00162000
- BNL PSARETRN NO @VA03323 00163000
- LA R3,4(R1,R5) ADDRESS + LENGTH + HDR @VA03323 00164000
- CL R3,VMSTOR IS IT A VALID RANGE @V304635 00165000
- BNL PSARETRN NO @VA03323 00166000
- CLR R3,R1 CORE WRAP AROUND? @VA03323 00167000
- BNH PSARETRN YES - SORRY @VA03323 00168000
- B VERFREE WILL ASSUME FRO NOW THAT IS VALID@V1D0226 00169000
- VEROTRN EQU * @VM08585 00170000
- L R5,SAVEWRK4 LOAD ORIG. R0 @VM08585 00171000
- LCR R5,R5 MAKE POS. @VM08585 00172000
- LR R1,R2 REAL ADR TO R1 @VM08585 00173000
- B VERFREE @VM08585 00174000
- SPACE 4 00175000
- DMKVERD RELOC ENTRY FOR DOS, DOS/VS @V1D0226 00176000
- MVI SAVEWRK1,DOS FLAG AS DOS TYPE RECORDING @V1D0226 00177000
- A R0,F8 ADD 8 TO GET ADR. @VM08564 00178000
- LR R3,R0 POSSIBLE V-V ADR. @VM08585 00179000
- BAL R10,TRNSTEST GO CHECK IT @VM08585 00180000
- TM SAVEWRK1,VVADR TRANSLATE MODE MACHINE ?? @VM08585 00181000
- BO DOSTRN YES - - - @VM08585 00182000
- LR R1,R0 PUT THE ADDRESS IN GPR1 @V1D0226 00183000
- * 00184000
- * SINCE THE RECORD SIZE IS NOT KNOWN FOR DOS, WE WILL TRY 00185000
- * TO RECORD AS MUCH AS POSSIBLE. IF WE HAVE ENOUGH FOR A 00186000
- * HEADER WE WILL RECORD THAT. IF NOT, WILL RETURN TO 00187000
- * DMKPSA TO REFLECT THE SVC TO THE VIRTUAL MACHINE. 00188000
- * 00189000
- L R2,VMSTOR GET VM STORAGE SIZE @V304635 00190000
- AH R0,F24+2 BUMP THE ADDRESS PASSED BY 24 @V1D0226 00191000
- CR R0,R2 WILL HEADER FIT IN USER STORAGE @V1D0226 00192000
- * ??? 00193000
- BNL PSARETRN IF NOT, MUST REFLECT THE SVC. @V1D0226 00194000
- AH R0,=H'112' ADD MAX SIZE RECORD TO THE @V1D0226 00195000
- * ADDRESS 00196000
- LTR R0,R0 GO NEGATIVE ??? @VM08500 00197000
- BM PSARETRN YES INDEED - SO GET OUT @VM08500 00198000
- CR R0,R2 ENOUGH ROOM ???? @V1D0226 00199000
- BNL VERSETSM IF NOT - GO SET UP FOR WHAT WE @V1D0226 00200000
- * HAVE 00201000
- SPACE 00202000
- VERSETLG LA R5,136 LOAD MAX RECORD LENGTH @V1D0226 00203000
- B VERFREE AND GO TO IT @V1D0226 00204000
- DOSTRN EQU * @VM08585 00205000
- LR R1,R2 REAL ADDRESS TO R1 @VM08585 00206000
- LA R5,136 TRY MAX OBR COUNT @VM08585 00207000
- B VERFREE ..... @VM08585 00208000
- SPACE 00209000
- VERSETSM LR R5,R2 MOVE MAX ADDRESS TO R5 @V1D0226 00210000
- SR R5,R1 MAX BYTE COUNT CAN HAVE @V1D0226 00211000
- SPACE 00212000
- VERFREE EQU * @V1D0226 00213000
- * 00214000
- * WHEN COME HERE, GPR5 = BYTE COUNT AND GPR1 = RECORD ADDRESS 00215000
- * 00216000
- LR R0,R5 BYTE COUNT TO GPR0 @V1D0226 00217000
- AH R0,F4+2 ADD 4 BYTES FOR SIZE FIELD @V1D0226 00218000
- ST R5,SAVEWRK8 SAVE CALLER BYTE COUNT @VA04327 00218500
- LA R6,4075 MAX SIZE RECORDING CAN HANDLE @VM08500 00219000
- CLR R0,R6 CAN WE DO IT? @VA03679 00220000
- BNL PSARETRN NO - SO FORGET IT @VM08500 00221000
- A R0,F7 ROUND THE BYTE COUNT UP @V1D0226 00222000
- SRL R0,3 DIVIDE BY EIGHT FOR FREE CALL @V1D0226 00223000
- ST R0,SAVEWRK9 SAVE THIS FOR LATER FRET @V1D0226 00224000
- LR R4,R1 RECORD ADR. TO R4 @VM08585 00225000
- CALL DMKFREE GET STORAGE FOR RECORD @V1D0226 00226000
- LR R9,R1 POINT GPR9 TO THIS AREA @V1D0226 00227000
- LA R9,4(,R9) BUMP R9 PAST RECORD SIZE FIELD @V1D0226 00228000
- L R2,F4095 LOAD GPR2 WITH FFF @V1D0226 00229000
- OR R2,R4 GET MAX ADDRESS FOR THIS PAGE @V1D0226 00230000
- LR R3,R5 BYTE COUNT TO GPR3 @V1D0226 00231000
- SL R3,F1 MINUS ONE TO CALC HIGH ADDRESS @V1D0226 00232000
- AR R3,R4 HIGHEST ADDRESS NEEDED @VM08585 00233000
- * NEEDED 00234000
- CR R3,R2 IS IT ALL IN ONE PAGE @V1D0226 00235000
- BNH ONEMOVE BRANCH IF IT DOES @V1D0226 00236000
- OI SAVEWRK1,TWOMOVE FLAG FOR PAGE BOUNDARY XOVER @VA05851 00237000
- LA R2,1(,R2) START ADDRESS OF SECOND PAGE @VA05851 00237750
- TM SAVEWRK1,VVADR PROCESS TRANS. MODE V.M. ?? @VA05851 00238500
- BO TRNS2MOV MUST HANDLE DIFFERENTLY @VA05851 00239250
- ST R2,SAVEWRK3 SAVE FOR LATER @V1D0226 00241000
- SR R3,R2 GET COUNT FOR SECOND PAGE @V1D0226 00242000
- AL R3,F1 ADD ONE BACK IN @V1D0226 00243000
- ST R3,SAVEWRK2 AND SAVE IT FOR LATER @V1D0226 00244000
- SR R5,R3 BYTE COUNT FOR FIRST MOVE @V1D0226 00245000
- SPACE 00246000
- ONEMOVE EQU * @V1D0226 00247000
- LR R6,R9 LOAD GPR6 WITH 'TO' ADDRESS @V1D0226 00248000
- LR R7,R5 BYTE COUNT FOR THE MOVE @V1D0226 00249000
- TM SAVEWRK1,VVADR PROC. TRANSLATE V.M. ?? @VM08585 00250000
- BO RECMOVE YEP -- @VM08585 00251000
- PAGBRING LR R1,R4 VADDR TO R1 @VA05851 00252000
- TRANS 2,1,OPT=(BRING,DEFER) LOAD THE PAGE @VA05851 00252750
- LR R4,R2 LOAD THE REAL ADDRESS IN GPR4 @V1D0226 00254000
- RECMOVE EQU * @VM08585 00255000
- MVCL R6,R4 DO THE MOVE @V1D0226 00256000
- TM SAVEWRK1,TWOMOVE DO WE NEED A SECOND MOVE @V1D0226 00257000
- BZ BUFFUL NO - GO PROCESS RECORD @V1D0226 00258000
- NI SAVEWRK1,X'FF'-TWOMOVE RESET FLAG @V1D0226 00259000
- L R4,SAVEWRK3 LOAD NEXT ADDRESS @VA05851 00260000
- L R5,SAVEWRK2 AND THE BYTE COUNT FOR THE MVCL @V1D0226 00262000
- LR R7,R5 TO GPR7 ALSO @V1D0226 00263000
- TM SAVEWRK1,VVADR TRANS MODE V.M. ?? @VM08585 00264000
- BO RECMOVE DO THE MOVE @VM08585 00265000
- B PAGBRING LOOP BACK FOR NEXT PAGE @V1D0226 00266000
- TRNS2MOV EQU * @VM08585 00267000
- LR R7,R2 UPPER PAGE ADDR. TO R7 @VM08585 00268000
- SR R7,R4 R7 NOW HAS FIRST BYTE COUNT @VM08585 00269000
- SR R5,R7 GET SECOND MOVE COUNT @VM08585 00270000
- ST R5,SAVEWRK2 AND SAVE IT @VM08585 00271000
- LR R5,R7 NOW HAVE COUNT FOR 1ST MOVE @VM08585 00272000
- TM SAVEWRK1,DOS DOS V.M. @VM08585 00273000
- BO LOADDOS YES --- @VM08585 00274000
- L R3,SAVEWRK5 LOAD ORIG OS ADR. @VM08585 00275000
- B NEXTPAG .... @VM08585 00276000
- LOADDOS EQU * @VM08585 00277000
- L R3,SAVEWRK4 LOAD ORIG DOS ADR @VM08585 00278000
- NEXTPAG EQU * @VM08585 00279000
- O R3,F4095 GET TO END THIS PAGE @VM08585 00280000
- A R3,F1 PLUS ONE TO GET NEXT PAGE @VM08585 00281000
- CALL DMKVATRN GET NEXT PAGE @VM08585 00282000
- LTR R0,R0 GOOD RETURN ??? @VM08585 00283000
- BNZ VERERREX NO - CAN'T RECORD @VM08585 00284000
- ST R2,SAVEWRK3 SAVE REAL ADDRESS @VM08585 00285000
- B ONEMOVE GO DO THE MOVES @VM08585 00287000
- SPACE 3 00288000
- BUFFUL EQU * @V1D0226 00289000
- * 00290000
- * COMPLETE RECORD IN FREE STORAGE WITH BYTE COUNT SAVED IN 00291000
- * SAVEWRK8, ADDRESS OF RECORD IN GPR9, AND FREE/FRET SIZE 00292000
- * IN SAVEWRK9. 00293000
- * 00294000
- * NOW CHECK IF RECORD IS VALID. 00295000
- SPACE 00296000
- USING OBRRECN,R9 @V1D0226 00297000
- SPACE 00298000
- MVI OBRKEYN+1,VMSYS SET VM'S SYSTEM AND RELEASE @VM08585 00299000
- SLR R2,R2 ZERO R2 00300000
- * NOW CHECK FOR VALID RECORD TYPE. 00301000
- * 00302000
- SPACE 00303000
- TM SAVEWRK1,OS OS TYPE RECORD ??? @V1D0226 00304000
- BO OSRECD YES - GO FIND THE TYPE @V1D0226 00305000
- CLI OBRKEYN,X'30' DOS CAN HAVE ONLY OBRS' @V1D0226 00306000
- BNE VERERREX SO IF NOT OBR, HAVE ERROR @V1D0226 00307000
- B VER30 IF OBR, GO TO IT @V1D0226 00308000
- SPACE 00309000
- OSRECD EQU * @V1D0226 00310000
- IC R2,OBRKEYN LOAD THE RECORD TYPE @V1D0226 00311000
- SRL R2,4 CLEAN OUT THE LOW BITS @V1D0226 00312000
- SLL R2,2 SHIFT TO GET INDEX VALUE @V1D0226 00313000
- B RECVECT(R2) GO INTO BRANCH VECTORS @V1D0226 00314000
- RECVECT EQU * @V1D0226 00315000
- B VERERREX INVALID @V1D0226 00316000
- B VERERREX DITTO @V1D0226 00317000
- B VERERREX DITTO AGAIN @V1D0226 00318000
- B VER30 OBR RECORDING @V1D0226 00319000
- B VER40 ABEND RECORDING @V1D0226 00320000
- B VERERREX INVALID @V1D0226 00321000
- B VER60 DDR RECORDING @V1D0226 00322000
- B VER70 MIH RECORDING @V1D0226 00323000
- B VERERREX INVALID @V1D0226 00324000
- B VER90 MDR RECORDING @V1D0226 00325000
- B VERERREX INVALID @V1D0226 00326000
- B VERERREX THIS TOO IS INVALID @V1D0226 00327000
- B VERERREX AND THIS ALSO. @V1D0226 00328000
- B VERERREX AND THIS @V1D0226 00329000
- B VERERREX AND ONE FINAL INVALID BRANCH. @V1D0226 00330000
- SPACE 00331000
- VERERREX EQU * @V1D0226 00332000
- L R0,SAVEWRK9 COUNT FOR THE FRET @V1D0226 00333000
- SL R9,F4 BACK UP TO START OF BUFFER @V1D0226 00334000
- LR R1,R9 AND THE BUFFER ADDRESS @V1D0226 00335000
- CALL DMKFRET GET RID OF THE BUFFER @V1D0226 00336000
- SPACE 00337000
- PSARETRN EQU * @V1D0226 00338000
- NI VMRSTAT,X'FF'-VMEXWAIT RESET WAIT FLAG @V1D0226 00339000
- EXIT RETURN TO DMKPSA @V1D0226 00340000
- EJECT 00341000
- VER30 EQU * @V1D0226 00342000
- SPACE 00343000
- USING OBRRECN,R9 @V1D0226 00344000
- SPACE 00345000
- CLI OBRKEYN,X'30' MAKE SURE IS TYPE 30 @VM08500 00346000
- BNE VERERREX IF NOT GET OUT @VM08500 00347000
- BAL R10,CKOBRLEN GO CHECK CALLER LENGTH @VA04327 00347500
- BAL R10,COMCVT30 GO CONVERT COMMON FIELDS @V1D0226 00348000
- L R0,SAVEWRK5 LOAD DEVICE ADDRESS @VM08506 00349000
- TM OBRSWSN+1,X'20' IS THIS A SHORT OBR RECORD @VA03358 00350000
- BZ *+12 NO, BYPASS SHORT OBR SUPPORT @VA03358 00351000
- STCM R0,7,OBRCUA SAVE CUA IN SHORT OBR RECORD @VA03358 00352000
- B VERRSTEX NO MORE CONVERSION FOR SHORT OBR @VA03358 00353000
- STCM R0,7,OBRCUAPR STORE INTO PHYS ADDRESS @VM08506 00354000
- CLI RDEVTYPC,CLASDASD DASD TYPE DEVICE @VM08506 00355000
- BNE VERDEDCK NO - DEV ADDR STORED IS OK @VM08506 00356000
- TM RDEVTYPE,TYP3330 IS DASD A 3330 DEVICE ? @V304498 00357000
- BZ CHK2314 IF NOT, GO CHK FOR 2314 @V2A2029 00358000
- IC R1,OBR33SNS+4 LOAD PHYSICAL ADDR FROM SENSE @VM08506 00359000
- TM OBR33SNS+2,X'08' TEST FOR EMULATED 3330 DEVICE @V304498 00360000
- BZ VERPHA NO, BYPASS EMULATION CODE CONV @VA04586 00361500
- BAL R7,EMULCODE YES, CODE 1 OF 8 AS 3 OF 6 @V304498 00362000
- VERPHA N R1,F7 ZAP ALL BUT LOW 3 BITS @VA04586 00362100
- TM OBR33SNS+4,X'40' IS THIS 2ND OR 4TH CONTROL @VA04586 00362200
- * UNIT? 00362300
- BNO VERSETPR IF NOT, BRANCH @VA04586 00362400
- A R1,F8 BUMP ADDRESS IF 2ND OR 4TH @VA04586 00362500
- * CONTROL UNIT 00362600
- B VERSETPR GO SET PHYSICAL ADDR @VM08506 00363000
- CHK2314 EQU * @VM08506 00364000
- CLI RDEVTYPE,TYP2314 IS IT 2314 ??? @VM08506 00365000
- BNE VERDEDCK NO - ADDRESS OK @VM08506 00366000
- IC R1,OBRSENSN+4 LOAD 2314 PHYSICAL ADDR @VM08506 00367000
- N R1,F15 ZAP ALL EXCEPT LOW 4 BITS @VA04586 00367500
- VERSETPR EQU * @VM08506 00368000
- N R0,=X'00FFFFF0' SAVE ALL BUT LOW 4 @VM08506 00370000
- OR R1,R0 PUT THE TWO TOGETTHER @VM08506 00371000
- STCM R1,7,OBRCUAPR STORE PROPER DEV ADDR @VM08506 00372000
- VERDEDCK EQU * @VM08506 00373000
- TM RDEVSTAT,RDEVDED DEDICATED DEVICE @V1D0226 00374000
- BO VERMSGOP YES - NO MORE CONVERSION TO DO @V1D0226 00375000
- SPACE 00376000
- VERNOTDD EQU * @V1D0226 00377000
- * 00378000
- * ON A NON-DEDICATED / NON-DASD DEVICE, GO AHEAD 00379000
- * WITH RECORDING. FOR DASD - CONVERT THE SEEK AND HOME ADDRESS 00380000
- * TO THE REAL ADDRESS AND MOVE THE VOLUME SERIAL 00381000
- * FROM RDEVBLOK TO THE RECORD. FOR 3330/3340/3350/2305 ADJUST 00382000
- * CYLINDER NUMBER IN THE SENSE BYTE TO THE REAL CYLINDER. 00383000
- * FOR A 2311 BEING SIMULATED ON A 2314, ALTER THE SENSE IN 00384000
- * SENSE BYTE 3 TO REFLECT A 2314. 00385000
- * 00386000
- SPACE 00387000
- CLI RDEVTYPC,CLASDASD DASD DEVICE @V1D0226 00388000
- BNE VERMSGOP IF NOT - GO RECORD @V1D0226 00389000
- MVC OBRVOLN(6),RDEVSER MOVE THE REAL VOL SER @V1D0226 00390000
- L R7,SAVEWRK4 LOAD THE VDEVBLOK ADDRESS @V1D0226 00391000
- SPACE 00392000
- USING VDEVBLOK,R7 @V1D0226 00393000
- SPACE 00394000
- SLR R2,R2 ZIP A WORK REG @V1D0226 00395000
- ICM R2,3,OBRLSKN+3 CLYINDER NUMBER OF LAST SEEK @V1D0226 00396000
- CLI RDEVTYPE,TYP3340 IS IT A 3340 OR 3344? @V56BDA8 00396100
- BNE NOT334X NO, JUST CONTINUE @V56BDA8 00396200
- CH R2,=H'696' ALTERNATE OR CE CYLINDER? @V56BDA8 00396300
- BNL VERMSGOP YES, LEAVE UNCHANGED @V56BDA8 00396400
- TM RDEVFTR,FTR35MB IS IT A SMALL DISK? @V56BDA8 00396500
- BZ NOT334X NO, MUST RELOCATE @V56BDA8 00396600
- CH R2,=H'348' 35MB ALTERNATE OR CE CYLINDER? @V56BDA8 00396700
- BNL VERMSGOP YES, LEAVE UNCHANGED @V56BDA8 00396800
- NOT334X EQU * @V56BDA8 00396900
- AH R2,VDEVRELN ADD THE RELOCATION FACTOR @V1D0226 00397000
- STCM R2,3,OBRLSKN+3 REAL CLYNDER TO RECORD @V1D0226 00398000
- LH R2,OBRHAN+2 NOW UPDATE HOME ADDRESS @VA02834 00399000
- AH R2,VDEVRELN ADD RELOCATION @V1D0226 00400000
- STH R2,OBRHAN+2 AND STORE INTO RECORD @VA02834 00401000
- CLI RDEVTYPE,TYP2314 IS IT A 2314 ??? @V1D0226 00402000
- BE VER2314 GO CHECK FOR 2311 IF IT IS @V1D0226 00403000
- CLI RDEVTYPE,TYP3330 3330 ???? @V1D0226 00404000
- BE VERCYL YEP ---- @V1D0226 00405000
- CLI RDEVTYPE,TYP2305 COULD BE 2305 DRUM @V1D0226 00406000
- BE VERCYL IF IT IS - GO ADJUST SENSE @V1D0226 00407000
- TM RDEVTYPE,TYP3340+TYP3350 3340 OR 3350 DEVICE ? @V304498 00408000
- BZ VERMSGOP NO - GO RECORD RECORD @V304498 00409000
- IC R2,OBR33SNS+6 GET HIGH CYL BYTE @V2A2029 00410000
- LR R1,R2 SAVE FOR LATER @V2A2029 00411000
- SLL R2,3 SHIFT CYLINDER TO NEXT BYTE @V2A2029 00412000
- N R2,=A(256+512) ISOLATE CYL 512 AND 256 @V2A2029 00413000
- IC R2,OBR33SNS+5 AND LOAD CYL BYTE ALONG WITH IT @V2A2029 00414000
- AH R2,VDEVRELN ADD THE RELOCATION FACTOR @V2A2029 00415000
- CLI RDEVTYPE,TYP3350 3350 ???? @V304498 00416000
- BE VER3350 CHECK CYLINDER LIMIT @V304498 00417000
- SETCYL STC R2,OBR33SNS+5 STORE LOW CYL VALUE @V2A2029 00424000
- N R2,=A(256+512) ISOLATE CYL 512 AND 256 @V2A2029 00425000
- SRL R2,3 SHIFT TO HARDWARE VALUE @V2A2029 00426000
- N R1,=A(16+8+4+2+1) ISOLATE LOGICAL TRACK @V304498 00427000
- OR R2,R1 COMBINE CYL AND HEAD BITS @V2A2029 00428000
- STC R2,OBR33SNS+6 STORE HIGH CYL AND HEAD VALUE @V2A2029 00429000
- TM OBR33SNS+7,X'40' CHECK FOR FORMAT 4 OR 5 @VA11762 00429010
- BZ VERMSGOP NO CONTINUE NO UPDATE CYL @VA11762 00429020
- TM OBR33SNS+7,X'20' CHECK FOR FORMAT 6 ? @VA11762 00429030
- BO VERMSGOP YES DONT UPDATE 8 AND 9 @VA11762 00429040
- VERFMT4 DS 0H @VA11762 00429050
- SR R2,R2 ZERO OUT WORK REG @VA09156 00429100
- ICM R2,B'0011',OBRLSKN+3 GET LAST SEEK CYLINDER @VA09156 00429200
- AH R2,VDEVRELN ADD RELOCATION FACTOR @VA09156 00429300
- STH R2,OBR33SNS+8 STORE INTO SENSE @VA09156 00429400
- B VERMSGOP IF NOT - OK TO RECORD @V1D0226 00430000
- SPACE 1 00431000
- VER3350 CH R2,=H'559' EXCEEDED CYL LIMIT - 560 CYL'S @V304498 00432000
- BH VERMSGOP YES - LEAVE AS IS @V304498 00433000
- B SETCYL YES - STORE CYLINDER NUMBER @V304498 00434000
- SPACE 00435000
- VER2314 EQU * @V1D0226 00436000
- TM VDEVTYPE,FTR2311T+FTR2311B SIMULATING 2311 ???? @V1D0226 00437000
- BZ VERMSGOP NO - GO RECORD @V1D0226 00438000
- CLI OBRSENSN+3,X'C8' 2311 SENSE SAY READY AND @V1D0226 00439000
- * ONLINE ??? 00440000
- BNE VERCKOL NO - GO CHECK FURTHER @V1D0226 00441000
- NI OBRSENSN+3,X'40' LEAVE ONLINE SENSE BIT FOR 2314@V1D0226 00442000
- B VERMSGOP NOW CAN SAFELY RECORD @V1D0226 00443000
- SPACE 00444000
- VERCKOL EQU * @V1D0226 00445000
- TM OBRSENSN+3,X'48' IF 2311 ONLINE BITS BOTH 1'S, @V1D0226 00446000
- BO VERMSGOP LEAVE AS IS. @V1D0226 00447000
- TM OBRSENSN+3,X'40' IF BIT 1 ON ALONE, @V1D0226 00448000
- BO SETPCHG GO SET PACK CHANGE FOR 2314 @V1D0226 00449000
- XI OBRSENSN+3,X'08' INVERT PACK CHANGE BIT @V1D0226 00450000
- B VERMSGOP . . . @V1D0226 00451000
- SETPCHG OI OBRSENSN+3,X'08' FORCE PACK CHANGE ON @V1D0226 00452000
- B VERMSGOP . . . @V1D0226 00453000
- SPACE 00454000
- VERCYL EQU * @V1D0226 00455000
- * 00456000
- * COME HERE TO ADJUST CYLINDER ADDRESS IN THE SENSE 00457000
- * 00458000
- SPACE 00459000
- IC R2,OBR33SNS+6 LOAD BYTE CONTAINING CYL. HIGH @V1D0226 00460000
- * BIT 00461000
- SLL R2,2 GET IT UP TO NEXT BYTE @V1D0226 00462000
- N R2,F256 SAVE ONLY THAT BIT @V1D0226 00463000
- IC R2,OBR33SNS+5 AND LOAD CYL BYTE ALONG WITH IT @V1D0226 00464000
- AH R2,VDEVRELN ADD THE RELOCATION FACTOR @V1D0226 00465000
- CH R2,=H'400' DID WE GO OVER THE LIMIT ???? @V1D0226 00466000
- BH VERMSGOP IF WE DID, MEANS DMKUNTR DIDN'T @V1D0226 00467000
- * CHG 00468000
- STC R2,OBR33SNS+5 STORE NEW CYL NUMBER @V1D0226 00469000
- C R2,F256 OVER 256 ??? @V1D0226 00470000
- BL VERMSG1 @VA09156 00471100
- OI OBR33SNS+6,X'40' SET CYL HIGH BIT @V1D0226 00472000
- VERMSG1 EQU * @VA09156 00472100
- CLI RDEVTYPE,TYP2305 2305 ?? @VA11762 00472110
- BE TYPOK YES GO UPDATE SENSE 8 AND 9 @VA11762 00472120
- TM OBR33SNS+7,X'40' CHECK FOR FORMAT 4 OR 5 @VA11762 00472130
- BZ VERMSGOP NO IT IS UPDATE @VA11762 00472140
- TM OBR33SNS+7,X'20' CHECK FOR FORMAT 6 ? @VA11762 00472150
- BO VERMSGOP YES DONT UPDATE SENSE BYTES @VA11762 00472160
- TYPOK DS 0H @VA11762 00472170
- SR R2,R2 ZERO OUT WORK REG @VA09156 00472200
- ICM R2,B'0011',OBRLSKN+3 GET LAST SEEK CYLINDER @VA09156 00472300
- AH R2,VDEVRELN ADD RELOCATION FACTOR @VA09156 00472400
- STH R2,OBR33SNS+8 STORE INTO SENSE @VA09156 00472500
- SPACE 00473000
- DROP R7 @V1D0226 00474000
- SPACE 00475000
- SPACE 00476000
- VERMSGOP EQU * @V1D0226 00477000
- TM OBRSWSN+1,OBRDEMNT VOLUME DISMOUNT? HRC024DK 00477100
- BNZ VERRSTEX YES - NO NEED TO BOTHER OPERATOR HRC024DK 00477200
- L R1,SAVEWRK5 LOAD REAL DEVICE ADDRESS @V1D0226 00478000
- CALL DMKCVTBH CONVERT TO PRINTABLE FORM @V1D0226 00479000
- STCM R1,7,MSG575AD STUFF INTO MESSAGE @V1D0226 00480000
- MVC MSG575ID(8),VMUSER STUFF THIS IN MESSAGE @V1D0226 00481000
- LA R0,MSG575LN MESSAGE LENGTH @V1D0226 00482000
- LA R1,MSG575 AND THE ADDRESS @V1D0226 00483000
- LA R2,NORET+ALARM+OPERATOR @V1D0226 00484000
- CALL DMKQCNWT @V1D0226 00485000
- SPACE 00486000
- VERRSTEX EQU * @V1D0226 00487000
- TM SAVEWRK1,DOS DOS TYPE RECORDING ?? @VM08506 00488000
- BO DOSRET GIVE DOS RETURN CODE @VA03448 00489000
- XC VMGPRS+15*4(4),VMGPRS+15*4 R15=0 FOR OS/VS @VA03448 00490000
- B VEROSEX CONTINUE @VA03448 00491000
- DOSRET XC VMGPRS+4(4),VMGPRS+4 R1=0 FOR DOS/VS @VA03448 00492000
- VEROSEX EQU * @VM08506 00493000
- NI VMRSTAT,X'FF'-VMEXWAIT RESET THE WAIT BIT @V1D0226 00494000
- S R9,F4 BACK UP TO START OF BUFFER @V1D0226 00495000
- LR R1,R9 PASS THE RECORD ADDRESS TO IOE @V1D0226 00496000
- L R0,SAVEWRK9 GET SIZE OF RECORD IN DOUBLEWORDS@VA03358 00497000
- LR R3,R0 GET NUMBER OF DOUBLEWORDS @VA03358 00498000
- SLL R3,3 GET ACTUAL LENGTH OF RECORD @VA03358 00499000
- S R3,F4 SUBTRACT LENGTH FIELD FROM RECORD@VA03358 00500000
- ST R3,0(,R1) SAVE RECORD SIZE IN RECORD @VA03358 00501000
- CALL DMKIOEVR GET IT RECORDED @V1D0226 00502000
- SPACE 00503000
- SPACE 00504000
- L R15,ADSPCH ADDRESS OF DISPATCH @V1D0226 00505000
- ST R15,SAVERETN RETURN TO DISPATCH INSTEAD OF PSA@V1D0226 00506000
- ST R15,SAVER12 THIS TO SET DISPATCHERS BASE @V1D0226 00507000
- EXIT @V1D0226 00508000
- EJECT 00509000
- VER40 EQU * @V1D0226 00510000
- CLI OBRKEYN,X'43' IS IT 40,41,OR 42 ?? @VM08500 00511000
- BL VER40OK YEP - OK TO RECCRD @VM08500 00512000
- CLI OBRKEYN,X'4F' 4F IS LEGAL @VM08500 00513000
- BE VER40OK .... @VM08500 00514000
- CLI OBRKEYN,X'44' SO IS 44 @VM08500 00515000
- BE VER40OK .... @VM08500 00516000
- CLI OBRKEYN,X'48' AND 48 @VM08500 00517000
- BE VER40OK ..... @VM08500 00518000
- B VERERREX ALL ELSE IS BAD .. @VM08500 00519000
- VER40OK EQU * 00520000
- SLR R1,R1 ZERO R1 @VA04327 00520200
- LA R1,OBRHSIZE+8 GET STANDARD HEADER SIZE @VA07880 00520500
- CL R1,SAVEWRK8 HEADER SIZE > CALLER SIZE ? @VA04327 00520600
- BH VERERREX YES, CAN'T RECORD @VA04327 00520800
- BAL R10,COMCVT60 DO COMMON CONVERTS @VA05286 00521000
- B VERRSTEX AND GO RECORD @V1D0226 00522000
- EJECT 00523000
- VER60 EQU * @V1D0226 00524000
- SPACE 00525000
- USING DDRREC,R9 @V1D0226 00526000
- SPACE 00527000
- CLI DDRKEYN,X'60' 60 IS ONLY CODE ALLOWED @VM08500 00528000
- BNE VERERREX ELSE CAN'T RECORD @VM08500 00529000
- SLR R1,R1 ZERO R1 @VA04327 00529200
- LA R1,DDRSIZE GET LENGTH OF DDR RECORD @VA04327 00529400
- CL R1,SAVEWRK8 RECORD SIZE > CALLER SIZE ? @VA04327 00529600
- BH VERERREX YES, CAN'T RECORD @VA04327 00529800
- BAL R10,COMCVT60 GO DO COMMON CONVERTS @V1D0226 00530000
- ICM R1,7,DDRCUA1 LOAD 'FROM' DEVICE ADDRESS @V1D0226 00531000
- LA R1,0(,R1) ZERO THE HIGH BYTE @V1D0226 00532000
- BAL R5,CNVTVR CONVERT VIRTUAL TO REAL @V1D0226 00533000
- STCM R1,7,DDRCUA1 STORE REAL INTO RECORD @V1D0226 00534000
- ICM R1,7,DDRCUA2 LOAD 'TO' ADDRESS @V1D0226 00535000
- LA R1,0(,R1) ZIP THE HIGH BYTE @V1D0226 00536000
- BAL R5,CNVTVR CONVERT THIS TO REAL @V1D0226 00537000
- STCM R1,7,DDRCUA2 AND STORE INTO RECORD @V1D0226 00538000
- B VERRSTEX GO RECORD @V1D0226 00539000
- EJECT 00540000
- VER70 EQU * @V1D0226 00541000
- SPACE 00542000
- USING MIHREC,R9 @V1D0226 00543000
- SPACE 00544000
- CLI MIHKEYN,X'70' ONLY 70 TYPE ALLOWED @VM08500 00545000
- BNE VERERREX ELSE CAN'T RECORD @VM08500 00546000
- SLR R1,R1 ZERO R1 @VA04327 00546200
- LA R1,MIHSIZE GET MIH RECORD LENGTH @VA04327 00546400
- CL R1,SAVEWRK8 RECORD LENGTH > CALLER LENGTH@VA04327 00546600
- BH VERERREX YES, CAN'T RECORD @VA04327 00546800
- BAL R10,COMCVT70 DO THE COMMON CONVERTS @V1D0226 00547000
- TM RDEVSTAT,RDEVDED DEDICATED DEVICE ???? @V1D0226 00548000
- BO VERRSTEX YES - OK TO RECORD @V1D0226 00549000
- CLI RDEVTYPC,CLASDASD DASD DEVICE ???? @V1D0226 00550000
- BNE VERRSTEX NO - DON'T HAVE VOL SER TO @V1D0226 00551000
- * CONVERT 00552000
- MVC MIHVOL(6),RDEVSER MOVE REAL SERIAL IN @V1D0226 00553000
- B VERRSTEX AND GO RECORD @V1D0226 00554000
- EJECT 00555000
- VER90 EQU * @V1D0226 00556000
- USING MDRREC,R9 @VM08500 00557000
- SPACE 00558000
- CLI MDRKEYN,X'91' VALID MDR TYPE ?? @VM08500 00559000
- BNE VERERREX NO - CAN'T RECORD @VM08500 00560000
- SLR R1,R1 ZERO R1 @VA04327 00560200
- LA R1,MRDSIZE GET MRD RECORD SIZE @VA04327 00560400
- CL R1,SAVEWRK8 RECORD SIZE > CALLER SIZE ? @VA04327 00560600
- BH VERERREX YES, CAN'T RECORD @VA04327 00560800
- BAL R10,COMCVT90 CONVERT THE COMMON STUFF @V1D0226 00561000
- CLI RDEVTYPC,CLASDASD DASD CLASS DEVICE @VA06101 00561050
- BNE NOTDASD NO, HANDLE NON-DASD DEVICE @VA06101 00561070
- MVC MDRVOL(6),RDEVSER MOVE REAL VOLSER INTO RECORD @VA06101 00561090
- CLI RDEVTYPE,TYP3330 IS DEVICE 3330-1 OR 3330-11 ? @VA06101 00561110
- BNE DEV2314 NO, CHECK FOR 2314 TYPE @VA06101 00561130
- DEV3330 SR R10,R10 CLEAR R10 FOR WORK REG @VA06101 00561150
- IC R10,MDRSENS+4 GET DRIVE ID OF 3330 @VA06101 00561170
- TM MDRSENS+2,X'08' EMULATED 3330 ? @VA06101 00561190
- BZ NOTEMUL NO,BYPASS EMULATED CONV CODE @VA06101 00561210
- BAL R7,EMULCODE YES,CODE 1 OF 8 AS 3 OF 6 @VA06101 00561230
- NOTEMUL N R10,F7 ISOLATE 3-BIT ID FROM SENSE @VA06101 00561250
- TM MDRSENS+4,X'40' IS THIS 2ND OR 4TH CONTROL @VA06101 00561270
- * UNIT ? 00561290
- BNO GETADDR NO, BYPASS ADDRESS INCREMENT @VA06101 00561310
- A R10,F8 YES, BUMP ADDRESS BY 8 @VA06101 00561330
- B GETADDR GO SET PHYSICAL ADDRESS @VA06101 00561350
- DEV2314 CLI RDEVTYPE,TYP2314 IS DEVICE 2314 ? @VA06101 00561370
- BNE NOTDASD NO, HANDLE OTHER DEVICE TYPE @VA06101 00561390
- SR R10,R10 CLEAR R10 FOR WORK REG @VA06101 00561410
- IC R10,MDRSENS+4 YES, GET DRIVE ID FROM SENSE @VA06101 00561430
- N R10,F15 ISOLATE 4-BIT ID FROM SENSE @VA06101 00561450
- GETADDR EQU * @VA06101 00561470
- N R1,=X'0000FFF0' CLEAR MODULE/DRIVE ID @VA06101 00561490
- OR R1,R10 GET PHYSICAL DEVICE ADDRESS @VA06101 00561510
- STCM R1,3,MDRCUA1 SAVE PHYSICAL ADDRESS IN MDR @VA06101 00561530
- NOTDASD EQU * @VA06101 00561550
- B VERRSTEX NO MORE TO DO @V1D0226 00562000
- EJECT 00563000
- COMCVT30 EQU * @V1D0226 00564000
- SPACE 00565000
- USING OBRRECN,R9 @V1D0226 00566000
- SLR R1,R1 ZERO WORK REG @V1D0226 00567000
- ICM R1,7,OBRCUAIN LOAD CUA OF FAILING DEVICE @V1D0226 00568000
- TM OBRSWSN+1,X'20' IS THIS A SHORT OBR RECORD @VA03358 00569000
- BZ *+8 NO, BYPASS @VA03358 00570000
- ICM R1,7,OBRCUA GET CUA FROM RECORD @VA03358 00571000
- BAL R5,CNVTVR CONVERT TO REAL ADDRESS @V1D0226 00572000
- TM OBRSWSN+1,X'20' IS THIS A SHORT OBR RECORD @VA03358 00573000
- BO COMCVT40 YES, BYPASS SAVING CUA @VA03358 00574000
- STCM R1,7,OBRCUAIN AND STORE INTO RECORD @V1D0226 00575000
- B COMCVT60 DO REST OF COMMON CONVERTS @VM08506 00576000
- SPACE 00577000
- COMCVT90 EQU * @V1D0226 00578000
- COMCVT70 EQU COMCVT90 @V1D0226 00579000
- TM OBRKEYN,X'90' MDR ??? @V1D0226 00580000
- BO MDRPRIM YES - GO CONVERT PRIM DEV ADR @V1D0226 00581000
- SPACE 00582000
- MIHPRIM EQU * @V1D0226 00583000
- SPACE 00584000
- USING MIHREC,R9 @V1D0226 00585000
- SPACE 00586000
- ICM R1,7,MIHCUA1 LOAD PRIMARY ADDRESS @V1D0226 00587000
- LA R1,0(,R1) ZIP THE HIGH BYTE @V1D0226 00588000
- BAL R5,CNVTVR CONVERT TO REAL @V1D0226 00589000
- STCM R1,7,MIHCUA1 AND STORE BACK @V1D0226 00590000
- B COMCVT60 . .. . @V1D0226 00591000
- SPACE 00592000
- MDRPRIM EQU * @V1D0226 00593000
- SPACE 00594000
- USING MDRREC,R9 @V1D0226 00595000
- SPACE 00596000
- LH R1,MDRCUA1 LOAD DEVICE ADDRESS @V1D0226 00597000
- BAL R5,CNVTVR AND CONVERT TO REAL @V1D0226 00598000
- STH R1,MDRCUA1 AND STORE BACK TO THE RECORD @V1D0226 00599000
- B COMCVT40 BRANCH TO CONVERT CPUID @V1D0226 00600000
- SPACE 00601000
- COMCVT60 EQU * @V1D0226 00602000
- SPACE 00603000
- USING OBRRECN,R9 @V1D0226 00604000
- SPACE 00605000
- MVC OBRPGMN(8),VMUSER MOVE USER ID TO RECORD @V1D0226 00606000
- SPACE 00607000
- COMCVT40 EQU * @V1D0226 00608000
- SWITCH SWITCH TO MAIN PROCESSOR @VA12116 00608100
- MVC OBRCPIDN(8),CPUID MOVE REAL CPUID TO RECORD @V1D0226 00609000
- NI OBRSWSN,(X'FF'-X'08') RESET TIME MACRO @VM08585 00610000
- OI OBRSWSN,X'40' AND SET NS CLOCK @VM08585 00611000
- BR R10 RETURN TO CALLER @V1D0226 00612000
- EJECT 00613000
- CNVTVR EQU * @V1D0226 00614000
- CALL DMKSCNVU GET ADDRESSES OF VDEVBLOK @V1D0226 00615000
- BNZ VERERREX IF CAN'T FIND - DON'T RECORD @V1D0226 00616000
- SPACE 00617000
- USING VDEVBLOK,R8 @V1D0226 00618000
- SPACE 00619000
- ST R8,SAVEWRK4 SAVE VDEVBLOK ADDRESS FOR LATER @V1D0226 00620000
- TM VDEVSTAT,VDEVDED DEDICATED VIRTUAL DEVICE ? @VM08839 00621000
- BO GETREAL YES - VDEVREAL IS VALID @VM08839 00622000
- CLI VDEVTYPC,CLASDASD SHARED VIRTUAL DASD ? @VM08839 00623000
- BNE VERERREX NO -- CAN'T RECORD FAKE DEV @VM08839 00624000
- GETREAL EQU * @V1D0226 00625000
- L R8,VDEVREAL LOAD RDEVBLOK ADDRESS @V1D0226 00626000
- CALL DMKSCNRD GET REAL DEVICE ADDRESS @V1D0226 00627000
- ST R1,SAVEWRK5 SAVE THE REAL ADDRESS FOR LATER @V1D0226 00628000
- BR R5 AND RETURN TO CALLER @V1D0226 00629000
- EJECT 00630000
- TRNSTEST EQU * @VM08585 00631000
- TM VMSPMFLG,VMCPVIRT SVC76 FROM CP VIRTUAL MACH @VA09952 00631010
- BZ CONT NO, PROCESS THIS SVC76 @VA09952 00631020
- TM VMSPMFLG,VMCPSV76 ISSUED BY THIS CP VIRTUAL MACH@VA09952 00631030
- BZ PSARETRN NO, REFLECT SVC76 TO CP VIRTUAL @VA09952 00631040
- NI VMSPMFLG,X'FF'-VMCPSV76 RESET SVC76 FLAG @VA09952 00631050
- CONT DS 0H AND PROCESS THE REQUEST @VA09952 00631060
- TM VMPSW+1,EXTMODE ECMODE V.M. ?? @VM08585 00632000
- BCR 8,R10 IF NOT RETURN @VM08585 00633000
- TM VMPSW,TRANMODE IN TRANSLATE MODE ?? @VM08585 00634000
- BCR 8,R10 RETURN IF NOT @VM08585 00635000
- STM R0,R2,SAVEWRK4 SAVE THE PARM REGS. @VM08585 00636000
- CALL DMKVATRN BRING IN THE RECORD @VM08585 00637000
- LTR R0,R0 BETTER BE ZERO @VM08585 00638000
- BNZ PSARETRN IF NOT CAN'T RECORD @VM08585 00639000
- OI SAVEWRK1,VVADR FLAG AS V-V PROCESSING @VM08585 00640000
- ST R2,SAVEWRK7 SAVE REAL ADDRESS OF RECORD @VM08585 00641000
- BR R10 AND RETURN @VM08585 00642000
- SPACE 1 00643000
- EMULCODE LA R14,1 INITIAL SHIFT COUNTER @V304498 00644000
- LR R15,R1 OBTAIN 1 OF 8 2ODE (EMUL 3330) @V304498 00645000
- SHIFT SRA R15,1 START TO COUNT NO OF SHIFTS @V304498 00646000
- BZ EMULDONE FINISHED SHIFT COUNT @V304498 00647000
- LA R14,1(0,R14) INCREASE SHIFT COUNT BY ONE @V304498 00648000
- B SHIFT CONTINUE TO COUNT 1 OF 8 CODE @V304498 00649000
- EMULDONE LA R15,7 INITIALIZE TO CREATE 3 OF 6 CODE @V304498 00650000
- MR R14,R14 CREATE 3 OF 6 CODE @V304498 00651000
- LR R1,R15 CONTINUE WITH 3 OUT 0F 6 CODE @V304498 00652000
- BR R7 RETURN TO DEVICE ADDRESS PROCESS @V304498 00653000
- USING OBRRECN,R9 @VA04327 00653050
- CKOBRLEN EQU * @VA04327 00653100
- TM SAVEWRK1,OS THIS A OS TYPE OBR RECORD ? @VA04327 00653150
- BNOR R10 NO, DON'T DO LENGTH CHECKING @VA04327 00653200
- SLR R1,R1 YES, START BY ZEROING R1 @VA04327 00653250
- LA R1,OBRLSIZE GET LENGTH OF BASE RECORD @VA04327 00653300
- TM OBRSWSN+1,X'20' SHORT OBR RECORD ? @VA04327 00653350
- BZ CKOBRBAS NO @VA04327 00653400
- LA R1,OBRSSIZE YES, USE SHORT BASE LENGTH @VA04327 00653450
- CKOBRBAS EQU * @VA04327 00653500
- CL R1,SAVEWRK8 BASE LENGTH > CALLER SIZE ? @VA04327 00653550
- BH VERERREX YES, CAN'T RECORD @VA04327 00653600
- TM OBRSWSN+1,X'20' SHORT OBR RECORD ? @VA04327 00653650
- BOR R10 YES, NO MORE CHECKING NEEDED @VA04327 00653700
- SLR R1,R1 NO, MORE CHECKING BY DEVICE @VA04327 00653750
- ICM R1,7,OBRCUAIN LOAD CUA OF FAILING DEVICE @VA04327 00653800
- TM OBRSWSN+1,X'20' SHORT OBR RECORD ? @VA04327 00653850
- BZ GETRDEV1 NO, GET REAL DEVICE BLOCK @VA04327 00653900
- ICM R1,7,OBRCUA YES, THIS IS CUA OF DEVICE @VA04327 00653950
- GETRDEV1 EQU * @VA04327 00654000
- BAL R5,CNVTVR GO GET REAL DEV. BLOCK @VA04327 00654050
- USING RDEVBLOK,R8 @VA04327 00654100
- CLI RDEVTYPC,CLASDASD IS IT DASD TYPE ? @VA04327 00654150
- BNER R10 NO, DONE LENGTH CHECKING @VA04327 00654200
- SLR R1,R1 ZERO R1 AGAIN @VA04327 00654250
- CLI RDEVTYPE,TYP2314 2314 TYPE ? @VA04327 00654300
- BNE COMP33XX NO, GO CHECK OTHER DASD @VA04327 00654350
- LA R1,OBR2SIZE YES, GET 2314 LENGTH @VA04327 00654400
- B COMPDASD GO DO COMPARE @VA04327 00654450
- COMP33XX EQU * @VA04327 00654500
- LA R1,OBR3SIZE GET OTHER DASD LENGTH @VA04327 00654550
- COMPDASD EQU * @VA04327 00654600
- CL R1,SAVEWRK8 LENGTH > CALLER LENGTH ? @VA04327 00654650
- BH VERERREX YES, CAN'T RECORD @VA04327 00654700
- BR R10 NO, RETURN TO OBR PROCESSING @VA04327 00654750
- EJECT @VA04327 00654800
- * 00655000
- * CONSTANT AREA 00656000
- * 00657000
- MSG575 EQU * @V1D0226 00658000
- DC C'DMKVER575I I/O ERROR ADD=' @V1D0226 00659000
- MSG575AD DC C' ' @V1D0226 00660000
- DC C', USERID=' @V1D0226 00661000
- MSG575ID DC CL8' ' @V1D0226 00662000
- MSG575LN EQU *-MSG575 MESSAGE LENGTH @V1D0226 00663000
- SPACE 00664000
- EJECT 00665000
- LTORG @V1D0226 00666000
- EJECT 00667000
- COPY OBRRECN @V1D0226 00668000
- COPY MDRREC @V1D0226 00669000
- COPY MIHREC @V1D0226 00670000
- COPY DDRREC @V1D0226 00671000
- PSA @V1D0226 00672000
- COPY EQU @V1D0226 00673000
- COPY SAVE @V1D0226 00674000
- COPY VMBLOK @V1D0226 00675000
- COPY VBLOKS @V1D0226 00676000
- COPY RBLOKS @V1D0226 00677000
- COPY DEVTYPES @V1D0226 00678000
- COPY IOBLOKS @V1D0226 00679000
- END 00680000
ibm/vm370-lib/cp/dmkver.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator