ibm:vm370-lib:cp:dmkrpa.assemble_src
Table of Contents
DMKRPA Source
References
- Fixes Applied : 3
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [R13364DK]
Source Listing
- DMKRPA.ASSEMBLE.txt
- 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
ibm/vm370-lib/cp/dmkrpa.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator