RPA TITLE 'DMKRPA (CP) VM/370 - RELEASE 6' 00001000 ISEQ 73,80 VALIDATE SEQUENCING OF SOURCE 00002000 *. 00003000 * 00004000 * MODULE NAME - 00005000 * 00006000 * DMKRPA 00007000 * 00008000 * FUNCTION - 00009000 * 00010000 * TO TRANSFER SPECIFIC DASD PAGES BETWEEN THE CALLER'S VIRTUAL 00011000 * MEMORY SPACE AND THE BACKING STORE 00012000 * 00013000 * ATTRIBUTES - 00014000 * 00015000 * REENTRANT, RESIDENT, CALLED VIA SVC 00016000 * 00017000 * ENTRY POINTS - 00018000 * 00019000 * DMKRPAGT - MOVE THE SPECIFIED DASD PAGE FROM DASD TO THE SPEC- 00020000 * IFIED PAGE IN THE USER'S VIRTUAL MEMORY SPACE 00021000 * DMKRPAPT - MOVE THE PAGE FROM VIRTUAL MEMORY TO DASD 00022000 * 00023000 * ENTRY CONDITIONS - 00024000 * 00025000 * GPR0 = THE DASD ADDRESS OF THE PAGE, IN THE FORM (CCPD), 00026000 * WHERE CC IS THE CYLINDER, P IS THE PAGE ON THE CYL- 00027000 * INDER, AND D IS THE DEVICE CODE 00028000 * GPR1 = THE VIRTUAL MEMORY PAGE ADDRESS 00029000 * GPR2 = PARMS SUPPLIED TO DMKRPAGT TO BE PASSED TO DMKPTRAN - 00030000 * MAY BE BRING AND/OR CHANGE 00031000 * GPR11 = ADDRESS OF VMBLOK FOR OWNER OF VIRTUAL MEMORY 00032000 * GPR12 = ADDRESS OF DMKRPAGT OR DMKRPAPT 00033000 * GPR13 = ADDRESS OF SAVEAREA 00034000 * 00035000 * EXIT CONDITIONS - 00036000 * 00037000 * DMKRPAGT - NORMAL 00038000 * CC = 0 00039000 * GPR2 = REAL ADDRESS OF PAGE (PROVIDED THE BRING OPTION 00040000 * WAS SPECIFIED) 00041000 * 00042000 * DMKRPAGT - ERROR 00043000 * CC = 1 - DIAGNOSE 14 AND PAGE LOCKED FOR I/O 00043100 * CC = 2 - SPECIFIED ADDRESS IS A SHARED PAGE 00044000 * CC = 3 - FATAL IOERROR TRYING TO READ PAGE 00045000 * 00046000 * DMKRPAPT - NORMAL 00047000 * CC = 0 00048000 * 00049000 * DMKRPAPT - ERROR 00050000 * CC = 3 - FATAL IOERROR TRYING TO WRITE 00051000 * CC = 2 - FATAL PAGING ERROR TRYING TO RETRIEVE PAGE FROM BACK- 00052000 * ING STORE PRIOR TO WRITING 00053000 EJECT 00054000 * 00055000 * CALLS TO OTHER ROUTINES - 00056000 * 00057000 * DMKPTRAN - TO LOCATE INITIAL POSITION OF REFERENCED PAGE 00058000 * DMKPTRFT - CALLED TO RETURN RESIDENT PAGE TO FREELIST 00059000 * DMKPGTSP - CALL TO RETURN CURRENT DASD SYSTEM PAGE 00060000 * DMKPGTPR - CALLED TO RETURN CURRENT DASD PAGING PAGE SLOT 00061000 * DMKPTRUL - CALLED TO UNLOCK PAGE AFTER IT HAS BEEN WRITTEN 00062000 * DMKFREE - TO OBTAIN FREE STORAGE FOR A CPEXBLOK 00063000 * DMKPAGIO - TO MOVE THE REQUESTED FROM REAL MAIN STORAGE TO 00064000 * DASD 00065000 * DMKDSPCH - EXIT VIA GOTO TO WAIT FOR PAGE IO TO COMPLETE 00066000 * DMKSCHDL - CALLED TO DROP USER FROM RUNNABLE LIST 00067000 * DMKPGSPR RELEASE USER PAGES 00067100 * 00068000 * EXTERNAL REFERENCES - 00069000 * 00070000 * NONE 00071000 * 00072000 * TABLES / WORKAREAS - 00073000 * 00074000 * NONE 00075000 * 00076000 * REGISTER USAGE - 00077000 * 00078000 * GPR0 = CONTAINS DASD ADDRESS OF PAGE TO BE MOVED 00079000 * GPR1 = CONTAINS ADDRESS OF VIRTUAL PAGE 00080000 * GPR3 = INTERNAL SUBROUTINE LINKAGE 00081000 * GPR4 - NOT USED 00082000 * GPR5 = SWPTABLE ENTRY BASE 00083000 * GPR6 - NOT USED 00084000 * GPR7 = CORTABLE ENTRY BASE 00085000 * GPR8 - NOT USED 00086000 * GPR9 = PAGTABLE ENTRY BASE 00087000 * GPR10 - NOT USED 00088000 * GPR11 = VMBLOK BASE 00089000 * GPR12 = DMKRPA BASE 00090000 * GPR13 = SAVEAREA BASE 00091000 * GPR14 = EXTERNAL LINKAGE 00092000 * GPR15 = EXTERNAL LINKAGE 00093000 * 00094000 * NOTES - 00095000 * 00096000 * NONE 00097000 * 00098000 * OPERATION - 00099000 * 00100000 * THE OPERATION OF DMKRPAGT IS DESCIRBED IN SECTION A. BELOW, 00101000 * AND THE OPERATION OF DMKRPAPT IS DESCIRBED IN SECTION B. 00102000 * 00103000 *. 00104000 EJECT 00105000 COPY OPTIONS 00106000 COPY LOCAL OPTIONS 00107000 SPACE 2 00108000 DMKRPA CSECT 00109000 SPACE 3 00110000 EXTRN DMKPTRFT 00111000 EXTRN DMKPGTPR,DMKPGTSP @V304635 00112000 EXTRN DMKPTRUL 00113000 EXTRN DMKPAGIO 00114000 EXTRN DMKSCHDL 00115000 EXTRN DMKPTRWQ 00116000 EXTRN DMKPGSPR @V408246 00116100 EXTRN DMKVMI @VA04806 00116500 EXTRN DMKSYM @VA13364 00116700 SPACE 3 00117000 USING PSA,R0 00118000 USING CPEXBLOK,R1 00119000 USING SWPFLAG,R5 00120000 USING CORTABLE,R7 00121000 USING PAGCORE,R9 00122000 USING VMBLOK,R11 00123000 USING SAVEAREA,R13 00124000 EJECT 00125000 *. 00126000 * A. OPERATION OF DMKRPAGT - 00127000 * 1. ENQUEUE ON THE DESIRED PAGE VIA A CALL TO DMKPTRAN 00128000 * 2. IF THE PAGE IS RESIDENT, SKIP TO STEP 5, BELOW; OTHERWISE 00129000 * CONTINUE 00130000 * 3. USE THE ADDRESS OF THE PAGTABLE ENTRY RETURNED BY DMKPTRAN 00131000 * TO LOCATE THE SWPTABLE ENTRY FOR THE PAGE; IF THE CURRENT 00132000 * ADDRESS OF THE PAGE HAS BEEN DYNAMICALLY RECOMPUTED, RE- 00133000 * LEASE THE PAGE, AND IN ANY CASE STORE THE NEW DASD ADDRESS 00134000 * IN THE SWPTABLE ENTRY; THEN, GO TO STEP 5 00135000 * 4. LOCATE THE COTABLE, SWPTABLE AND PAGTABLE ENTRIES FOR THE 00136000 * RESIDENT PAGE AND RESET THE DASD ADDRESS AS IN STEP 00137000 * 3; THEN, CONTINUE 00138000 * 5. IF THE CALLER HAS NOT SPECIFIED,THE 'BRING' OPTION, EXIT; 00139000 * OTHERWISE CALL DMKPTRAN, PASSING THE BRING AND DEFER OPTION 00140000 * IN ADDITION TO CHANGE (IF SPECIFIED BY THE CALLER) 00141000 * 6. WHEN THE NEW PAGE IS RESIDENT, EXIT 00142000 *. 00143000 SPACE 00144000 DMKRPAGT RELOC 00145000 MVI SAVEWRK1,0 CLEAR DMKPTRAN ERROR SWITCH 00146000 MVI SAVEWRK2,0 CLEAR PUTRETURN SWITCH @VA08568 00146050 TRRETRY DS 0H @V408246 00146100 LA R2,DEFER+IOERETN SET OPTIONS FOR DMKPTRAN 00147000 TM SAVER2+3,SYSTEM USER REFERENCING SYSTEM V.M. 00148000 BZ *+8 NO -- 00149000 LA R2,SYSTEM(,R2) ADD THAT ALSO 00150000 CALL DMKPTRAN ENQUEUE ON PAGE 00151000 BZ RESIDENT PAGE IS RESIDENT -- 00152000 BC 2,DIE1 ADDRESSING ERROR 00153000 BC 1,SAVECODE IOERROR 00154000 NRESIDNT DS 0H @V408246 00155100 LR R9,R2 SAVE ADDRESS OF PAGTABLE ENTRY 00156000 N R1,=A(X'F000') CLEAR SEGMENT AND DISPLACEMENT FROM 00157000 SRL R1,11 ADDRESS, AND GET PAGE NUMBER TIMES 2 00158000 SR R2,R1 POINT TO START OF PAGE TABLE 00159000 S R2,F4 POINT TO SWPTABLE POINTER 00160000 L R5,0(,R2) POINT TO SWPTABLE 00161000 SLL R1,2 GET PAGE NUMBER TIMES 8 00162000 AR R5,R1 POINT TO SWPTABLE ENTRY 00163000 LA R3,CKBRING EXIT ADDRESS FOR SUBROUTINE 00164000 B CKRECMP AND GO TEST STATUS OF PAGE 00165000 EJECT 00166100 RESIDENT BAL R3,GETENTRY GO LOCATE CORTABLE, PAGTABLE AND SWPTABLE 00167000 * ENTRIES FOR PAGE, AND TEST RECOM STATUS 00168000 TM CORFLAG,CORCFLCK+CORRSV SPECIAL HANDLING? @V408246 00168100 BZ RESIDA NO, PROCESS NORMALLY @V408246 00168300 TM SAVER2+3,SYSTEM SYSTEM PAGE? @V408246 00168500 BO RESIDA YES, CONTINUE NORMALLY @V408246 00168700 AIF (NOT &VIRREAL).NOVR1X @V408246 00168900 C R11,AVMREAL VIRTUAL = REAL USER @V408246 00169100 BE RESIDA YES, BYPASS @V408246 00169300 .NOVR1X ANOP 00169500 LR R2,R1 BEGINNING AND ENDING ADDRESSES @V408246 00169700 * FOR REL. 00169900 CALL DMKPGSPR RELEASE PAGE @V408246 00170100 B TRRETRY START ALL OVER @V408246 00170300 RESIDA DS 0H @V408246 00170500 OI PAGCORE+1,PAGINVAL+PAGREF FLAG PAGE INVALID 00174000 OI VMESTAT,VMINVPAG SIGNAL PAGE TABLE ENTRY IS INVALID 00175000 OI APSTAT2,CPPTLBR SET PTLB REQUIRED FOR THIS @V407594 00175100 L R15,PREFIXB AND OTHER PROCESSOR @V407594 00175200 OI APSTAT2-PSA(R15),CPPTLBR (IF THERE IS ANOTHER) @V407594 00175300 AIF (NOT &VIRREAL).NOVR1 00176000 C R11,AVMREAL IS VIRT = REAL AREA IN USE ? @VA07519 00177000 BNE CLRTBL NO, CONTINUE 00178000 TM SAVER2+3,SYSTEM DOES THE SYSTEM OWN IT 00179000 BZ CKBRING NO, MUST BELONG TO A USER 00180000 .NOVR1 ANOP 00181000 CLRTBL SR R0,R0 ZERO OUT 00182000 ST R0,CORPGPNT OLD PAGTABLE POINTER 00183000 STH R0,PAGCORE AND ALSO THE PAGE ENTRY. 00184000 OI PAGCORE+1,PAGINVAL+PAGREF FLAG PAGE INVALID @V408246 00185100 L R15,CORFPNT PAGE'S OWNER @V408246 00186100 LH R0,VMPAGES-VMBLOK(,R15) OWNER'S PAGE COUNT @V408246 00187100 S R0,F1 DECREMENT @V408246 00188100 BM DIE3 SYSTEM PROBLEMS IF COUNT NEGATIVE@V408246 00189100 STH R0,VMPAGES-VMBLOK(,R15) @V408246 00190100 * 00191100 CALL DMKPTRFT PLACE PAGE ON FREE LIST @V408246 00192100 SPACE 00200100 TM VMMCR6,VMMVTMR IS TIMER ASSIST BEING USED ? @V3M5014 00200200 BZ CKBRING NO POTENTIAL PROBLEMS IF NOT @V3M5014 00200300 ICM R15,B'0111',VMMADDR VM ASSIST ON FOR USER ? @V3M5014 00200400 BZ CKBRING NO TIMER ASSIST IF NO VM ASSIST @V3M5014 00200500 USING MICBLOK,R15 ADDRESSABILITY TO POINTER LIST @V3M5014 00200600 L R1,XPAGNUM GET PAGE AND SEGMENT NUMBER MASK @V3M5014 00200700 N R1,SAVER1 GOING TO GET A NEW PAGE ZERO ? @V3M5014 00200800 BNZ CKBRING NO, TIMER ASSIST POINTER O.K. @V3M5014 00200900 LA R1,VMTIMER POINT TIMER ASSIST HERE... @V3M5014 00201000 ST R1,MICVTMR FOR UPDATING VIRTUAL TIMER VALUE @V3M5014 00201100 DROP R15 @V3M5014 00201200 SPACE 00201300 CKBRING TM SAVER2+3,BRING BRING NEW PAGE INTO CORE ?? 00202000 BZ EXIT NO -- FINISHED 00203000 LM R1,R2,SAVER1 RESTORE CALLER'S V.A. AND PARMS 00204000 LA R15,DEFER+IOERETN INSURE THESE OPTIONS ALSO @VA01234 00205000 OR R2,R15 ARE PASSED @VA01234 00206000 CALL DMKPTRAN CALL TO BRING IN PAGE 00207000 BZ SAVEADDR BRANCH IF IO SUCCESSFUL 00208000 BC 6,DIE1 BRANCH IF NOT RESIDENT OR ILLEGAL ADDR. 00209000 B EXIT IF IOERROR, RETURN CC3 TO CALLER 00210000 SPACE 2 00211000 SAVEADDR ST R2,SAVER2 PASS ADDRESS OF PAGE TO CALLER 00212000 SPACE 00213000 EXIT EXIT RETURN 00214000 SPACE 2 00215000 SAVECODE EQU * HERE OF I/O ERROR READING OLD PAGE 00216000 BALR R15,0 SAVE CONDITION CODE 00217000 ST R15,SAVEWRK1 IN SAVEAREA 00218000 B RESIDENT AND CONTINUE PROCESSING 00219000 EJECT 00220000 *. 00221000 * B. OPERATION OF DMKRPATP - 00222000 * 1. CALL DMKPTRAN VIA THE TRANS MACRO TO LOCATE THE PAGE TO 00223000 * BE MOVED, AND LOCK IT 00224000 * 2. LOCATE THE CORTABLE, SWPTABLE AND PAGTABLE ENTRIES FOR THE 00225000 * RESIDENT PAGE 00226000 * 3. SET UP A CPEXBLOK TO RETURN TO DMKRPATP, AND CALL DMKPAGIO 00227000 * TO WRITE THE PAGE; THEN, GO TO DMKDSPCH TO AWAIT THE 00228000 * INTERRUPT 00229000 * 4. AFTER THE PAGE HAS BEEN WRITTEN, CALL DMKPTRUL TO UNLOCK 00230000 * IT, PASS ANY IOERROR CODE BACK TO THE CALLER, AND EXIT 00231000 *. 00232000 SPACE 00233000 DMKRPAPT RELOC 00234000 MVI SAVEWRK1,0 CLEAR ERROR SWITCH 00235000 MVI SAVEWRK2,1 SET PUTRETURN SWITCH @VA08568 00235500 L R2,SAVER2 GET USER OPTIONS 00236000 LA R15,BRING+DEFER+LOCK ADD THESE OPTIONS ALSO @VA01234 00237000 OR R2,R15 TO WHAT IS PASSED @VA01234 00238000 CALL DMKPTRAN BRING IN PAGE 00239000 BC 2,DIE2 ADDRESSING ERROR 00240000 BC 1,SETCC2 IOERROR 00241000 BAL R3,GETENTRY 00242000 PUTRETRN DS 0H @V4M0167 00242010 OI SWPFLAG,SWPTRANS LOCK OUT UNTIL WRITE FINISHED @V408246 00242100 LA R0,CPEXSIZE GET CORE FOR A CPEXBLOK @V4M0167 00243100 CALL DMKFREE 00244000 LA R0,5 GET DASD READ DATA OP-CODE 00245000 STM R0,R15,CPEXR0 SAVE ALL REGS 00246000 LA R15,IORETN AND SET UP 00247000 ST R15,CPEXADD RETURN TO EXECUTION ADDRESS 00248000 LH R15,VMWCNT GET PAGE WAIT COUNT 00249000 LA R15,1(,R15) INCREMENT 00250000 STH R15,VMWCNT AND SAVE 00251000 OI VMRSTAT,VMPGWAIT SET USER IN PAGEWAIT 00252000 OI PAGCORE+1,PAGINVAL+PAGREF INVALIDATE ACROSS @V408246 00253100 * WRITE 00253200 TM VMRSTAT,VMNORUN-VMPGWAIT NOT RUNNABLE ALREADY? @V408246 00253300 BNZ NOSCHA YES, SCH ALREADY KNOWS @V408246 00253400 CALL DMKSCHDL HAVE SCH UPDATE RUNNING STATUS @V408246 00253500 NOSCHA DS 0H @V408246 00253600 L R15,=A(DMKPTRWQ) POINT TO PAGE WRITE REQUEST QUEUE 00254000 L R0,0(,R15) AND PUSH IT 00255000 ST R1,0(,R15) DOWN 00256000 ST R0,CPEXFPNT ... 00257000 GOTO DMKPAGIO GO GET THE I/O STARTED .. 00258000 SPACE 3 00259000 IORETN EQU * HERE AFTER PAGE HAS BEEN WRITTEN 00260000 NI SWPFLAG,X'FF'-SWPTRANS PAGE NO LONGER IN TRANSIT 00261000 ST R15,SAVEWRK1 SAVE ERROR FLAG 00262000 LH R15,VMWCNT GET PAGE WAIT COUNT 00263000 BCT R15,*+8 DECREMENT AND TEST COUNT @V408246 00264100 NI VMRSTAT,255-VMPGWAIT RESET PAGEWAIT (WHEN @V408246 00264600 * COUNT=0) 00265100 STH R15,VMWCNT @V408246 00265600 NI PAGCORE+1,255-PAGINVAL-PAGREF FINISHED, VALIDATE@V408246 00266100 TM VMRSTAT,VMNORUN STILL NON-RUNNABLE? @V408246 00266600 BNZ NOSCHB YES, SCH DOESN'T CARE @V408246 00267100 CALL DMKSCHDL INFORM SCH OF STATUS CHANGE @V408246 00267600 NOSCHB DS 0H @V408246 00268100 CALL DMKPTRUL AND UNLOCK THE CORTABLE ENTRY 00271000 TM SAVEWRK1,X'FF' ERROR RETURN FROM PAGEIO ?? 00272000 B EXIT EXIT, PASSING CODE TO CALLER 00273000 SPACE 2 00274000 SETCC2 CLI FFS,X'00' SET CONDITION CODE 2 00275000 B EXIT AND EXIT 00276000 SETCC1 CLI ZEROES,X'FF' SET CONDITION CODE 1 @VA07519 00276050 B EXIT AND EXIT @VA07519 00276150 * CONDITION CODE 1 WILL BE RETURNED TO: 00276200 * DMKHVD FOR DIAGNOSE 30 00276250 * AND TO DMKDRD FOR DIAGNOSE 14,34,AND 38 00276300 * IF THE PAGE IS LOCKED FOR I/O. 00276350 EJECT 00277000 GETENTRY EQU * HERE TO LOCATE TABLE ENTRIES, AND TEST FOR DASD PAGE 00278000 * TO RELEASE 00279000 LR R7,R2 SAVE REAL ADDRESS OF PAGE 00280000 SRL R7,8 GET PAGE ADDRESS/256 00281000 A R7,ACORETBL POINT TO CORTABLE ENTRY 00282000 L R9,CORPGPNT GET PAGTABLE POINTER 00283000 L R5,CORSWPNT AND SWPTABLE POINTER 00284000 CLI SAVEWRK2,0 RPAGT ? @VA08568 00284010 BNE CKRECMP NO, RPAPT @VA08568 00284020 TM SAVER2+3,SYSTEM WORKING WITH SYSTEM SPACE ? @VA08306 00284025 BO CKRECMP YES,BRANCH @VA08306 00284035 TM CORFLAG,CORIOLCK LOCKED FOR I/O ? @VA07519 00284050 BZ CKRECMP CONTINUE CHECKING @VA07519 00284150 C R11,AVMREAL IS IT THE V=R USER ?? @VA08925 00284155 BE CKRECMP YES, CONTINUE THE OLD WAY @VA08925 00284175 CLI VMINST,X'83' IS THIS A DIAGNOSE ? @VA07519 00284250 BNZ CKRECMP NOT DIAGNOSE,CONTINUE CHECKING @VA07519 00284350 CLI VMINST+3,DIAG38 DIAGNOSE X'38' ? @VA12172 00284375 BE CKRSTAT YES,NOW CHECK STATUS @VA12172 00284400 CLI VMINST+3,DIAG30 DIAGNOSE X'30' ? @VA12172 00284425 BE CKRSTAT YES,NOW CHECK STATUS @VA12172 00284450 CLI VMINST+3,DIAG34 DIAGNOSE X'34' ? @VA12172 00284475 BE CKRSTAT YES,NOW CHECK STATUS @VA12172 00284500 CLI VMINST+3,DIAG14 DIAGNOSE X'14' ? @VA12172 00284525 BNE CKRECMP NOT DIAGNOSE X'14' @VA12172 00284550 * NEITHER,CONTINUE CHECKING 00284575 TM CORFLAG,CORCFLCK LOCKED BY CONSOLE ? @VA12172 00284600 BZ CKRSTAT YES,NOW CHECK STATUS @VA12172 00284625 CLC CORLCNT,F1 IS CORE LOCK COUNT EXACTLY ONE ? @VA12172 00284650 BE CKRECMP YES,CONTINUE LOCKED BY CONSOLE @VA12172 00284675 CKRSTAT DS 0H @VA12172 00284700 TM VMRSTAT,VMEXWAIT IN INSTRUCTION WAIT ? @VA08568 00284750 BO SETCC1 YES, CURRENT INSTRUCTION @VA08568 00284850 SPACE 00285000 CKRECMP EQU * CHECK FOR SHARED PAGE, DASD RELEASE 00286000 TM SWPFLAG,SWPSHR IS THIS A SHARED SEGMENT PAGE ? 00287000 BO SETCC2 YES - WE CANNOT OVERLAY IT 00288000 TM SWPFLAG,SWPRECMP HAS DASD PAGE BEEN RE-ASSIGNED ? 00289000 BO STORDASD NO -- DO NOT RELEASE PAGE 00290000 TM SAVEWRK1,X'01' IOERROR READING OLD PAGE ?? 00291000 BO STORDASD YES -- DO NOT RELEASE ERROR PAGE 00292000 SPACE 00293000 L R15,=A(DMKPGTPR) ASSUME PAGE NOT FOR SYSTEM VMBL@V304635 00294000 TM SAVER2+3,SYSTEM IS IT FOR THE 'SYSTEM' ? @V304635 00295000 BZ *+8 IF NOT - RELEASE USER PAGE @V304635 00296000 L R15,=A(DMKPGTSP) OTHERWISE RELEASE SYSTEM PAGE @V304635 00297000 BALR R14,R15 NOW - RELEASE THE PAGE (DASD) @V304635 00298000 SPACE 00299000 STORDASD ST R0,SWPCYL INSERT NEW DASD ADDRESS IN SWPTABLE ENTRY 00300000 NI SWPFLAG,X'FF'-(SWPCHG1+SWPCHG2) @V4M0167 00300010 TM SAVEWRK2,1 ENTRY FROM DMKRPAPT ? @VA08568 00300140 BZR R3 NO, FROM DMKRPAGT @VA08568 00300240 TM SAVER2+3,SYSTEM WORKING WITH SYSTEM SPACE? @VA04806 00300400 BZR R3 NO @VA04806 00300500 L R15,=A(DMKVMI) AVOID WASTING EXTRA DASD PAGE @VA04806 00300600 CR R15,R1 FOR DMKVMI - R1 HAS VIR ADDRESS @VA04806 00300700 BZ RECMPOFF GOT DMKVMI GO TURN OFF RECMP @VA04806 00300800 L R15,=A(DMKSYM) GET ADDR OF SYMBOL TABLE @VA13364 00300900 CR R15,R1 FOR DMKSYM - R1 HAS VIR ADDRESS @VA13364 00301000 BZ RECMPOFF GOT DMKSYM GO TURN OFF RECMP @VA04806 00301100 BR R3 NOT SYM OR VMI, RETURN TO CALLER @VA13364 00301200 RECMPOFF DS 0H @VA13364 00301300 NI SWPFLAG,X'FF'-SWPRECMP @V4M0167 00301400 BR R3 AND RETURN TO CALLER 00301500 SPACE 3 00302000 DIE1 ABEND 1 DMKRPAGT - ADDRESS ERROR 00303000 SPACE 00304000 DIE2 ABEND 2 DMKRPAPT - ADDRESS ERROR 00305000 SPACE 00306000 DIE3 ABEND 3 DMKRPAGT - USER PAGE COUNT IS NEGATIVE 00307000 SPACE 00307050 DIAG14 EQU X'14' DIAGNOSE FOR DMKDRD @VA12172 00307150 DIAG30 EQU X'30' DIAGNOSE FOR DMKHVD @VA12172 00307250 DIAG34 EQU X'34' DIAGNOSE FOR DMKDRD @VA12172 00307350 DIAG38 EQU X'38' DIAGNOSE FOR DMKDRD @VA12172 00307450 EJECT 00308000 LTORG 00309000 EJECT 00310000 COPY VMBLOK 00311000 COPY CORE 00312000 PSA 00313000 COPY SAVE 00314000 COPY EQU 00315000 COPY MICBLOK @V3M5014 00315500 END 00316000