ibm:vm370-lib:cp:dmkpag.assemble_src
Table of Contents
DMKPAG Source
References
- Fixes Applied : 10
- This Source Date : Thursday, December 14, 1978
- Last Fix ID : [HRC106DK]
Source Listing
- DMKPAG.ASSEMBLE.txt
- PAG TITLE 'DMKPAG (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
- *. 00003000
- * MODULE NAME - 00004000
- * 00005000
- * DMKPAG 00006000
- * 00007000
- * FUNCTION - 00008000
- * 00009000
- * TO CONSTRUCT THE IOBLOKS AND SCHEDULE THE TASKS THAT MOVE 00010000
- * VIRTUAL MEMORY PAGES BETWEEN AUXILIARY DASD STORAGE AND REAL 00011000
- * MAIN STORAGE, AND TO CALCULATE TOTAL SYSTEM PAGING LOAD AT 00012000
- * USER SPECIFIED INTERVALS 00013000
- * 00014000
- * ATTRIBUTES - 00015000
- * 00016000
- * SERIALLY REUSABLE, RESIDENT, ENTERED VIA GOTO 00017000
- * 00018000
- * ENTRY POINTS - 00019000
- * 00020000
- * DMKPAGIO - ENTERED TO START PAGING OPERATIONS 00021000
- * 00022000
- * ENTRY POINTS - NON-EXECUTABLE 00023000
- * 00024000
- * DMKPAGPS - COUNT OF PAGING SIO'S 00025000
- * DMKPAGCC - COUNT OF CALLS TO THIS ROUTINE 00026000
- * DMKPAGQ - ANCHOR FOR LIST OF CPEXBLOKS FOR IN-TRANSIT PAGES 00027000
- * DMKPAGIC - NUMBER OF PAGING SIO'S OVER WHICH TO MEASURE LOAD 00028000
- * DMKPAGQR - MAINTAIN PAGE I/O FOR QUERY PAGING COMMAND 00029000
- * DMKPAGST - START OF PAGE LOAD MEASUREMENT PERIOD 00030000
- * DMKPAGSP - END OF PAGE LOAD MEASUREMENT PERIOD 00031000
- * DMKPAGLO - "DMKFRELO" MINUS LENGTH OF ONE PAGING IOBLOK 00032000
- * DMKPAGHI - "DMKFREHI" 00033000
- * DMKPAGSK - ANCHOR OF AVAILABLE PAGE I/O BLOCKS 00034000
- * DMKPAGDP - FLAG FOR SETTING PCI ON ALL 2305 REQUESTS 00035000
- * DMKPAGWS - SAVE AREA FOR THE PAGE WAIT TIME FOR THE ATTACHED 00036000
- * PROCESSOR 00037000
- * 00038000
- * ENTRY CONDITIONS - 00039000
- * 00040000
- * THE ANCHORS DMKPTRRQ AND DMKPTRWQ ARE POINTERS TO PUSH DOWN 00041000
- * STACKS OF CPEXBLOKS FOR PAGES TO BE MOVED. IN EACH CPEXBLOK 00042000
- * CPEXR0+3 CONTAINS THE DASD OP-CODE FOR THE OPERATION, CPEXR5 00043000
- * POINTS TO THE SWPTABLE ENTRY, CPEXR7 POINTS TO THE CORTABLE 00044000
- * ENTRY, AND CPEXR11 POINTS TO THE OWNER'S VMBLOK. 00045000
- * GPR12 = ADDRESS OF DMKPAGIO 00046000
- * 00047000
- * EXIT CONDITIONS - 00048000
- * 00049000
- * NONE 00050000
- * 00051000
- * CALLS TO OTHER ROUTINES - 00052000
- * 00053000
- * DMKFREE - TO OBTAIN STORAGE FOR PAGING IOBLOKS 00054000
- * DMKIOSQR - TO SCHEDULE THE I/O OPERATION ON THE REAL DEVICE 00055000
- * DMKDSPCH - EXIT VIA GOTO TO WAIT FOR INTERRUPTS 00056000
- * DMKOPRWT - WRITE ERROR MESSAGE DMKPAG415E TO OPERATOR 00057000
- * DMKCVTBH - BINARY TO HEX CONVERT ROUTINE 00058000
- * DMKSTKCP - TO STACK FOR EXECUTION CPEXBLOKS QUEUED ON PAGES 00059000
- * DMKFRET - TO RETURN PAGING IOBLOK IN DYNAMIC PAGING AREA 00060000
- * DMKSCNRD - FIND 'CUU' DEV ADDRESS GIVEN RDEVBLOK 00061000
- * 00062000
- * EXTERNAL REFERENCES - 00063000
- * 00064000
- * DMKSYSOW - ADDRESS OF THE SYSTEM OWNED VOLUME LIST 00065000
- * DMKPTRRQ - PAGE READ REQUEST QUEUE 00066000
- * DMKPTRWQ - PAGE WRITE REQUEST QUEUE 00067000
- * DMKPTRFF - TOTAL NUMBER OF FLUSHED PAGES 00068000
- * DMKPTRSS - TOTAL NUMBER OF STOLEN PAGES 00069000
- * DMKSLC - HIGH END OF V=R AREA (IF ANY) - OR 0 00070000
- * 00071000
- * TABLES / WORKAREAS - 00072000
- * 00073000
- * 1. SWPTABLE - ENTRIES CONTAIN DASD ADDRESSES FOR PAGES 00074000
- * 00075000
- * REGISTER USAGE - 00076000
- * 00077000
- * GPR0 = SCRATCH 00078000
- * GPR1 = CPEXBLOK BASE 00079000
- * GPR2 = SCRATCH 00080000
- * GPR3 = SCRATCH 00081000
- * GPR4 = SCRATCH 00082000
- * GPR5 = SWPTABLE ENTRY BASE 00083000
- * GPR7 = CORTABLE ENTRY BASE 00084000
- * GPR8 = RDEVBLOK BASE 00085000
- * GPR10 = IOBLOK BASE 00086000
- * GPR11 = VMBLOK BASE 00087000
- * GPR12 = DMKPAG BASE 00088000
- * GPR14 = EXTERNAL LINKAGE 00089000
- * GPR15 = EXTERNAL LINKAGE 00090000
- * 00091000
- * NOTES - 00092000
- * 00093000
- * NONE 00094000
- * 00095000
- * OPERATION - 00096000
- * 00097000
- * A. PROCESSING FOR CALL TO DMKPAGIO 00098000
- * 1. IF A PREFORMATTED PAGING IOBLOK EXISTS, GET ITS ADDRESS AND 00099000
- * SKIP TO STEP 2; OTHERWISE, CALL DMKFREE FOR FREE STORAGE 00100000
- * AND FORMAT A SKELETON IOBLOK 00101000
- * A. EXAMPLE OF A PAGING IOBLOK 00102000
- * 00103000
- * PAGESK X'07',PAGESEEK,CC,6 SEEK CCW 00104000
- * PAGESS X'23',PAGESECT,CC,1 SET SECTOR CCW 00105000
- * PAGESRCH X'31',PAGESEEK+2,CC,5 SEARCH ID EQUAL CCW 00106000
- * PAGESTIC X'08',PAGESRCH TIC *-8 (4 BYTES) 00107000
- * PAGEIOB X'00000000' POINTER TO SLOT SORTED IOBLOK 00108000
- * X'06'/X'05',DATA ADDRESS,CC,4096 RD/WR CCWS 00109000
- * PAGESNS X'04'/X'08',0,SILI+SKIP,1 SENSE CCW OR 00110000
- * TIC CCW TO THE NEXT SORTED IOBLOK 00111000
- * 00112000
- * 2. INSERT THE CORRECT PAGE FRAME ADDRESS AND DASD OPCODE INTO 00113000
- * THE PAGING IOBLOK AND INSERT THE DASD ADDRESS INFORMATION 00114000
- * FROM THE SWPTABLE ENTRY INTO THE SEEK ARGUMENT FIELD 00115000
- * 3. USE THE VOLUME INDEX IN THE COMPRESSED DASD ADDRESS TO IN- 00116000
- * DEX INTO THE SYSTEM OWNED VOLUME LIST, LOCATE THE DEVICE 00117000
- * INDEX AND POINT TO THE RDEVBLOK FOR THE PAGING DEVICE 00118000
- * 4. SEARCH THE QUEUE OF IOBLOKS ON THE RDEVBLOK FOR A PAGING 00119000
- * IOBLOK FOR THE SAME CYLINDER AS THE NEW REQUEST; IF ONE 00120000
- * IS FOUND, GO TO STEP 5, OTHERWISE GO TO STEP 7. 00121000
- * 5. IOBLOK SORT ROUTINES BY DEVICE TYPE: 00122000
- * 00123000
- * 5A. 2314/2319 - THE IOBLOKS FOR 2314/2319 ARE SORTED BY 00124000
- * SLOTS, USING SLOT VALUES 0 TO 7, REPRESENTING PAGES 00125000
- * 1 TO 8, 9 TO 16, 17 TO 24, AND 25 TO 32. 00126000
- * 00127000
- * SLOTS 00128000
- * 0 1 2 3 4 5 6 7 00129000
- * 00130000
- *TRACK/PAGE 0/1 0/2 1/3 1/4 2/5 3/6 3/7 4/8 00131000
- * 5/9 5/10 6/11 6/12 7/13 8/14 8/15 9/16 00132000
- * 10/17 10/18 11/19 11/20 12/21 13/22 13/23 14/24 00133000
- * 15/25 15/26 16/27 16/28 17/29 18/30 18/31 19/32 00134000
- * 00135000
- * A. IOBLOKS FOR RECORDS ON THE SAME TRACK ARE CHAINED 00136000
- * TOGATHER BY THE TIC ADDRESS IN THE PREVIOUS IOBLOK 00137000
- * POINTING TO THE SEARCH ID EQUAL CCW OF THE 00138000
- * NEXT IOBLOK, BYPASSING THE SEEK AND NO-OP CCWS. 00139000
- * B. ALL OTHER IOBLOKS ARE CHAINED TOGATHER BY THE TIC 00140000
- * ADDRESS IN THE PREVIOUS IOBLOK POINTING TO THE 00141000
- * SEEK CCW OF THE NEXT IOBLOK. 00142000
- * 00143000
- EJECT 00144000
- * 5B. 2305 - THE IOBLOKS FOR THE 2305-1 AND 2305-2 ARE SORTED 00145000
- * BY SLOTS (3 SLOTS PER REVOLUTION), AND DISREGARDING 00146000
- * CYLINDER AND TRACK/HEAD ADDRESSES. 00147000
- * 00148000
- * NOTE: ON 2305-1 AND 2305-2 DRUM, YOU CAN INCLUDE A SEEK 00149000
- * (OR SEEK HEAD) BETWEEN CONSECUTIVE CCWS IN A STRING, 00150000
- * WITHOUT AN EXTRA REVOLUTION, WHETHER THE HEAD CHANGES 00151000
- * OR NOT. A SET SECTOR CCW BETWEEN ADJACENT RECORDS OR 00152000
- * SLOTS WILL CAUSE AN EXTRA REVOLUTION TO BE TAKEN. 00153000
- * 00154000
- * TRACK/ SLOTS 00155000
- * HEAD 1 2 3 00156000
- * 00157000
- * 0 1 2 3 00158000
- * 1 4 5 6 00159000
- * 2 7 8 9 00160000
- * 3 10 11 12 00161000
- * 4 13 14 15 00162000
- * 5 16 17 18 00163000
- * 6 19 20 21 00164000
- * 7 22 23 24 00165000
- * |------PAGES-----| 00166000
- * 00167000
- * 00168000
- * A. IOBLOKS FOR RECORDS ON THE SAME TRACK ARE CHAINED 00169000
- * TOGATHER BY THE TIC ADDRESS IN THE PREVIOUS IOBLOK 00170000
- * POINTING TO THE SEARCH ID EQUAL CCW OF THE NEXT IOBLOK 00171000
- * BYPASSING THE SEEK AND SET SECTOR CCWS (EX. PAGES 00172000
- * 22,23,24). 00173000
- * B. IOBLOKS WHICH ARE ADJACENT (SLOT WISE) AND NOT ON THE 00174000
- * SAME TRACK ARE CHAINED TOGATHER BY THE TIC IN 00175000
- * THE PREVIOUS IOBLOK POINTING TO THE SET SECTOR CCW 00176000
- * IN THE NEXT IOBLOK. THE SET SECTOR CCW IS REPLACED BY 00177000
- * THE SEEK CCW. (EX. PAGES 1 5 9). 00178000
- * C. IOBLOKS FOR THE LAST RECORD OF ONE TRACK AND THE FIRST 00179000
- * RECORD OF AN OTHER TRACK ARE CHAINED TOGATHER BY THE 00180000
- * TIC ADDRESS IN THE PREVIOUS IOBLOK POINTING TO THE 00181000
- * SET SECTOR CCW IN THE NEXT IOBLOK. THE SET SECTOR 00182000
- * CCW IS REPLACED BY THE SEEK CCW. (EX. PAGE 3 TO 10). 00183000
- * D. ALL OTHER IOBLOKS ARE CHAINED TOGATHER BY THE TIC 00184000
- * ADDRESS OF PREVIOUS IOBLOK POINTING TO THE SEEK CCW 00185000
- * OF THE NEXT IOBLOK, WITH THE SET SECTOR CCW 00186000
- * FOLLOWING THE SEEK CCW. 00187000
- * (EX. PAGE 1 TO 3). 00188000
- * 00189000
- * E. EXAMPLE OF CALLS TO DMKPAG FOR PAGE IO. 00190000
- * PAGES - 57,24,20,16,8,5,3,6,43,1 00191000
- * SORTED BY DMKPAG -- 00192000
- * PAGES - 16,20,57,43,8,24,1,5,3,6 00193000
- * 00194000
- EJECT 00195000
- * 5C. 3330 - THE IOBLOKS FOR THE 3330 AND 3330-11 ARE SORTED 00196000
- * BY TRACK. 00197000
- * 00198000
- * NOTE: ON A 3330-1 AND 3330-11 DISK, YOU CAN NOT INCLUDE 00199000
- * A SEEK (OR SEEK HEAD) BETWEEN THE CCWS IN A STRING 00200000
- * (EVEN THOUGH THE HEAD NUMBER DOSEN'T CHANGE) WITHOUT 00201000
- * IT COSTING AN EXTRA REVOLUTION. A DUMMY RECORD OF 110 00202000
- * BYTES IS REQUIRED TO ALLOW SEEKS BETWEEN CCWS, BUT 00203000
- * HARDWARE SPEC. LIMITS THE DUMMY RECORD SIZE TO 101 00204000
- * BYTES. CP DMKFMT PROGRAM FORMATS CP DISK WITH 50 00205000
- * BYTE DUMMY RECORDS. 00206000
- * 00207000
- * TRACK/ TRK RCD NUMBER TRACK/ TRK RCD NUMBER 00208000
- * HEAD 1 2 3 HEAD 1 2 3 00209000
- * 00210000
- * 0 1 2 3 10 31 32 33 00211000
- * 1 4 5 6 11 34 35 36 00212000
- * 2 7 8 9 12 37 38 39 00213000
- * 3 10 11 12 13 40 41 42 00214000
- * 4 13 14 15 14 43 44 45 00215000
- * 5 16 17 18 15 46 47 48 00216000
- * 6 19 20 21 16 49 50 51 00217000
- * 7 22 23 24 17 52 53 54 00218000
- * 8 25 26 27 18 55 56 57 00219000
- * 9 28 29 30 |------PAGES-----| 00220000
- * |------PAGES-----| 00221000
- * 00222000
- * A. IOBLOKS FOR RECORDS ON THE SAME TRACK ARE CHAINED 00223000
- * TOGATHER BY THE TIC ADDRESS IN THE PREVIOUS IOBLOK 00224000
- * POINTING TO THE SEARCH ID EQUAL CCW OF THE NEXT IOBLOK 00225000
- * BYPASSING THE SEEK AND SET SECTOR CCWS (EX. PAGES 00226000
- * 22 23 24). 00227000
- * B. IOBLOKS FOR THE LAST RECORD OF ONE TRACK AND THE FIRST 00228000
- * RECORD OF AN OTHER TRACK ARE CHAINED TOGATHER BY THE 00229000
- * TIC ADDRESS IN THE PREVIOUS IOBLOK POINTING TO THE 00230000
- * SET SECTOR CCW IN THE NEXT IOBLOK. THE SET SECTOR 00231000
- * CCW IS REPLACED BY THE SEEK CCW. (EX. PAGE 3 TO 10). 00232000
- * C. ALL OTHER IOBLOKS ARE CHAINED TOGATHER BY THE TIC 00233000
- * ADDRESS OF PREVIOUS IOBLOK POINTING TO THE SEEK CCW 00234000
- * OF THE NEXT IOBLOK, WITH THE SET SECTOR CCW 00235000
- * FOLLOWING THE SEEK CCW. 00236000
- * (EX. PAGE 1 TO 3). 00237000
- * 00238000
- * D. EXAMPLE OF CALLS TO DMKPAG FOR PAGE IO. 00239000
- * PAGES - 51,9,4,6,18,49,17,16,50,8,7 00240000
- * SORTED BY DMKPAG -- 00241000
- * PAGES - 49,50,51,7,8,9,4,6,16,17,18 00242000
- * 00243000
- EJECT 00244000
- * 5D. 3340 - THE IOBLOKS FOR 3340 ARE SORTED BY 00245000
- * LOGICAL TRACKS (2 RECORDS PER LOGICAL TRACK) AND 00246000
- * IN AN EVEN/ODD TRACK SEQUENCE. 00247000
- * 00248000
- * NOTE: ON 3340 DISK, YOU CAN NOT INCLUDE A SEEK (OR SEEK 00249000
- * HEAD) BETWEEN THE CCWS IN A STRING (EVEN THOUGH THE 00250000
- * HEAD NUMBER DOESN'T CHANGE) WITHOUT IT COSTING AN 00251000
- * EXTRA REVOLUTION, WITH EXCEPTION OF CCWS CROSSING 00252000
- * INDEX POINT (HOME ADDRESS AND RECORD ZERO). 00253000
- * 00254000
- * | PAGE OR RECORD NUMBER | 00255000
- * TRACK OR HEAD |EVEN TRACKS | ODD TRACKS| TRACK OR HEAD 00256000
- * 0 | 1 | 2 | 3 | 4 | 1 00257000
- * 2 | 5 | 6 | 7 | 8 | 3 00258000
- * 4 | 9 | 10 | 11 | 12 | 5 00259000
- * 6 | 13 | 14 | 15 | 16 | 7 00260000
- * 8 | 17 | 18 | 19 | 20 | 9 00261000
- * 10 | 21 | 22 | 23 | 24 | 11 00262000
- * 00263000
- * SECTOR VALUES | 2 | 32 | 2 | 32 | 00264000
- * |LOGICAL TRK |LOGICAL TRK| 00265000
- * | ONE PHYSICAL TRACK | 00266000
- * 00267000
- * IOBLOKS ARE CHAINED TOGATHER WITH TICS IN THE 00268000
- * FOLLOWING WAY: 00269000
- * A. IOBLOKS FOR RECORDS ON THE SAME LOGICAL TRACK 00270000
- * WILL BE CHAINED TOGATHER BY THE TIC ADDRESS IN THE 00271000
- * PREVIOUS IOBLOK POINTING TO THE SEARCH ID EQUAL 00272000
- * COMMAND OF THE NEXT IOBLOK, BYPASSING THE SEEK 00273000
- * AND SET SECTOR COMMANDS. (EX. PAGES - 1 2 7 8 9 10) 00274000
- * B. IOBLOKS FOR THE LAST RECORD OF ONE EVEN/ODD TRACK 00275000
- * AND THE FIRST RECORD OF ANOTHER ODD/EVEN TRACK ARE 00276000
- * CHAINED TOGATHER BY THE TIC ADDRESS IN THE FIRST 00277000
- * IOBLOK POINTING TO THE SET SECTOR COMMAND IN THE 00278000
- * SECOND IOBLOK, AND THE SET SECTOR COMMAND OF THE 00279000
- * SECOND IOBLOK IS REPLACED BY A SEEK COMMAND. 00280000
- * (EXAMPLE - PAGE 2 TO 7 PAGE 20 TO 9). 00281000
- * C. ALL OTHER IOBLOKS ARE CHAINED TOGATHER BY THE 00282000
- * TIC ADDRESS IN THE PREVIOUS IOBLOK POINTING TO THE 00283000
- * SEEK COMMAND OF THE NEXT IOBLOK, WITH THE SET SECTOR 00284000
- * COMMAND FOLLOWING THE SEEK COMMAND. 00285000
- * (EX. PAGES - 1 7 9 15 18 21) 00286000
- * D. IOBLOKS FOR EVEN/ODD CYLINDERS ON THE 3340 70MB 00287000
- * DATA MODULE ARE TREATED AS SAME CYLINDER FOR THE SORT 00288000
- * (EXAMPLE-(0,1),(2,3),(4,5),(6,7),(694,695),(696,697)) 00289000
- * E. EXAMPLE OF CALLS TO DMKPAGIO FOR PAGE IO. 00290000
- * PAGES - 2 11 16 15 9 17 12 10 1 (6 REVOLUTIONS) 00291000
- * SORTED BY DMKPAG -- 00292000
- * PAGES - 1 2 11 12 9 10 15 16 17 (2.24 REVOLUTIONS) 00293000
- EJECT 00294000
- * 6. FOR REQUESTS FOR THE SAME SLOT, SORT BY REQUEST 00295000
- * PRIORITY. 00296000
- * 00297000
- * REQUEST PRIORITY 00298000
- * Q1, READ 0 00299000
- * Q2, READ 2 00300000
- * Q1, WRITE 4 00301000
- * Q2, WRITE 6 00302000
- * E1, READ 8 00303000
- * ยฌE1, READ 10 00304000
- * E1, WRITE 12 00305000
- * ยฌE1, WRITE 14 00306000
- * 00307000
- * 6A. CONTINUE WITH STEP 8. 00308000
- * 7. CALL DMKIOSQR TO INITIATE THE I/O 00309000
- * 8. DECREMENT AND TEST THE PAGEIO COUNT; IF IT IS ZERO, BAL TO 00310000
- * THE OVERHEAD CALCULATION SUBROUTINE DESCRIBED BELOW IN 00311000
- * SECTION C. 00312000
- * 9. GET THE NEXT CPEXBLOK ON THE QUEUE. IF ONE EXISTS, RESTART 00313000
- * WITH STEP 1; OTHERWISE, EXIT VIA A GOTO TO DISPATCH 00314000
- * 00315000
- * 5E. 3350 - THE IOBLOKS FOR THE 3350 ARE SORTED BY SLOTS 00316000
- * (4 SLOTS PER REVOLUTION) WITHIN A CYLINDER. 00317000
- * 00318000
- * NOTE: ON 3350 DISK, YOU CAN INCLUDE A SEEK HEAD COMMAND 00319000
- * BETWEEN CONSECUTIVE CCWS IN A STRING, WITHOUT THE LOSS 00320000
- * OF A DISK REVOLUTION WHEN A HEAD SWITCH OCCURS. 00321000
- * 00322000
- * TRACK/ SLOTS TRACK/ SLOTS 00323000
- * HEAD 1 2 3 4 HEAD 1 2 3 4 00324000
- * 00325000
- * 0 1 2 3 4 15 61 62 63 64 00326000
- * 1 5 6 7 8 16 65 66 67 68 00327000
- * 2 9 10 11 12 17 69 70 71 72 00328000
- * 3 13 14 15 16 18 73 74 75 76 00329000
- * 4 17 18 19 20 19 77 78 79 80 00330000
- * 5 21 22 23 24 20 81 82 83 84 00331000
- * 6 25 26 27 28 21 85 86 87 88 00332000
- * 7 29 30 31 32 22 89 90 91 92 00333000
- * 8 33 34 35 36 23 93 94 95 96 00334000
- * 9 37 38 39 40 24 97 98 99 100 00335000
- * 10 41 42 43 44 25 101 102 103 104 00336000
- * 11 45 46 47 48 26 105 106 107 108 00337000
- * 12 49 50 51 52 27 109 110 111 112 00338000
- * 13 53 54 55 56 28 113 114 115 116 00339000
- * 14 57 58 59 60 29 117 118 119 120 00340000
- * |-------PAGES------| |-------PAGES-------| 00341000
- * 00342000
- * 00343000
- * A. IOBLOKS FOR RECORDS ON THE SAME TRACK ARE CHAINED 00344000
- * TOGETHER BY THE TIC ADDRESS IN THE PREVIOUS IOBLOK 00345000
- * POINTING TO THE SEARCH ID EQUAL CCW OF THE NEXT IOBLOK 00346000
- * BYPASSING THE SEEK AND SET SECTOR CCWS (EX. PAGES 00347000
- * 33,34,36). 00348000
- * B. IOBLOKS WHICH ARE ADJACENT (SLOT WISE) AND NOT ON THE 00349000
- * SAME TRACK ARE CHAINED TOGETHER BY THE TIC IN 00350000
- * THE PREVIOUS IOBLOK POINTING TO THE SET SECTOR CCW 00351000
- * IN THE NEXT IOBLOK. THE SET SECTOR CCW IS REPLACED BY 00352000
- * THE SEEK CCW. (EX. PAGES 5,46,115). 00353000
- * C. IOBLOKS FOR THE LAST RECORD OF ONE TRACK AND THE FIRST 00354000
- * RECORD OF AN OTHER TRACK ARE CHAINED TOGETHER BY THE 00355000
- * TIC ADDRESS IN THE PREVIOUS IOBLOK POINTING TO THE 00356000
- * SET SECTOR CCW IN THE NEXT IOBLOK. THE SET SECTOR 00357000
- * CCW IS REPLACED BY THE SEEK CCW. (EX. PAGE 72 TO 101). 00358000
- * D. ALL OTHER IOBLOKS ARE CHAINED TOGETHER BY THE TIC 00359000
- * ADDRESS OF PREVIOUS IOBLOK POINTING TO THE SEEK CCW 00360000
- * OF THE NEXT IOBLOK, WITH THE SET SECTOR CCW 00361000
- * FOLLOWING THE SEEK CCW. 00362000
- * (EX. PAGE 1 TO 3). 00363000
- * 00364000
- * E. EXAMPLE OF CALLS TO DMKPAG FOR PAGE IO. 00365000
- * PAGES - 103,14,40,88,5,50,3,11,70,21 00366000
- * SORTED BY DMKPAG -- 00367000
- * PAGES - 5,14,103,40,21,50,3,88,70,11 00368000
- * 00369000
- SPACE 1 00370000
- * ERROR MESSAGE - 00371000
- * 00372000
- * DMKPAG415E CONTINUOUS PAGING ERRORS FROM DASD XXX 00373000
- * 00374000
- * THE ABOVE MESSAGE WILL BE ISSUED IF 5 CONSECTIVE 00375000
- * ERRORS HAVE OCCURED ON A PAGING DEVICE. THE SYSTEM 00376000
- * WILL THEN ENTER A DISABLED WAIT STATE. (CODE 00F) 00377000
- * 00378000
- *. 00379000
- EJECT 00380000
- COPY OPTIONS 00381000
- COPY LOCAL OPTIONS @V306638 00382000
- SPACE 2 00383000
- DMKPAG CSECT 00384000
- SPACE 3 00385000
- EXTRN DMKPTRRQ,DMKPTRWQ 00386000
- EXTRN DMKIOSQR 00387000
- EXTRN DMKSTKCP 00388000
- EXTRN DMKSTKMP @V407594 00389000
- EXTRN DMKSTKOP @V407594 00390000
- EXTRN DMKSTKIO @V408246 00391000
- EXTRN DMKCVTBH 00392000
- EXTRN DMKSCNRD @VA03787 00393000
- EXTRN DMKSYSOW 00394000
- EXTRN DMKMCHST @V407510 00395000
- EXTRN DMKCVTAB @VA04301 00396000
- EXTRN DMKPTRSS @V408246 00397000
- EXTRN DMKSCNRU @VA07455 00398000
- ENTRY DMKPAGSK @V408246 00399000
- ENTRY DMKPAGDP @V408246 00400000
- AIF (NOT &AP).NOAP10 @VA10137 00400100
- EXTRN DMKDSPRU @VA10805 00400310
- .NOAP10 ANOP @VA10137 00400500
- ENTRY DMKPAGQ 00401000
- ENTRY DMKPAGIO 00402000
- ENTRY DMKPAGQR @VA08859 00403000
- ENTRY DMKPAGST 00404000
- ENTRY DMKPAGPS,DMKPAGCC 00405000
- ENTRY DMKPAGWS @VMH0012 00406000
- ENTRY DMKPAGLO 00407000
- ENTRY DMKPAGHI 00408000
- EJECT 00409000
- USING PSA,R0 00410000
- USING CPEXBLOK,R1 00411000
- USING SWPFLAG,R5 00412000
- USING CORTABLE,R7 00413000
- USING RDEVBLOK,R8 00414000
- USING IOBLOK,R10 00415000
- USING VMBLOK,R11 00416000
- SPACE 00417000
- USING *,R12 00418000
- SPACE 00419000
- DMKPAGIO EQU * ENTERED VIA GOTO 00420000
- AIF (NOT &AP).NOAP1 **AIF*** 00421000
- TM APSTAT1,APUOPER RUNNING AS AP @V407594 00422000
- BZ NOUNLK NO @V407594 00423000
- CL R11,LASTUSER IS THIS LASTUSER @V407594 00424000
- BE NOUNLK YES, DO NOT UNLOCK @V407594 00425000
- CLC VMLOCK+2(2),LPUADDR LOCKED BY THIS PROCESSOR @V407594 00426000
- BNE NOUNLK NO, BYPASS UNLOCK @V407594 00427000
- LR R1,R11 VMBLOK TO R1 FOR UNLOCK @V407594 00428000
- LOCK RELEASE,TYPE=VMBLOK UNLOCK R11 AT ENTRY @V407594 00429000
- NOUNLK DS 0H @V407594 00430000
- .NOAP1 ANOP **ANOP** 00431000
- L R13,=A(DMKPTRRQ) POINT TO Q OF PAGE READ REQUESTS 00432000
- GETQ L R1,PREFIXA ACCESS ABSOLUTE PSA @V407594 00433000
- CLI XTNDLOCK-PSA(R1),0 SYSTEM EXTENDING @V407594 00434000
- BE CKQ NO -- PROCEED AS USUAL 00435000
- L R13,=A(DMKPTRWQ) POINT TO WRITE QUEUE 00436000
- L R1,0(,R13) GET 1ST REQUEST 00437000
- LTR R1,R1 ANY ?? 00438000
- BNP EXITX NO -- ONE COMING SOON, HOPEFULLY 00439000
- B DOIO YES -- START IT OUT -- 00440000
- SPACE 00441000
- CKQ L R1,0(,R13) GET NEXT REQUEST 00442000
- LTR R1,R1 ANYTHING THERE 00443000
- BP DOIO YES -- SET UP FOR I/O 00444000
- BM EXITX END OF THE LINE -- EXIT NOW 00445000
- LA R13,4(,R13) FINISHED WITH THIS QUEUE - TEST NEXT 00446000
- B GETQ .... 00447000
- SPACE 00448000
- DOIO EQU * START UP I/O FOR THIS PAGE 00449000
- L R2,DMKPAGCC COUNT PAGE I/O REQUESTS 00450000
- AL R2,F1 ... 00451000
- ST R2,DMKPAGCC .. 00452000
- L R0,CPEXFPNT POINT TO NEXT QUEUED REQUEST 00453000
- ST R0,0(,R13) AND MAKE IT 1ST IN LINE 00454000
- CHARGE SWITCH,CPEXR11 CHARGE I/O TO CORRECT USER @V407594 00455000
- L R2,DMKPAGQ POINT TO FIRST ENTRY IN IN-TRANSIT QUEUE 00456000
- LA R3,DMKPAGQ POINT TO QUEUE ANCHOR 00457000
- ST R1,DMKPAGQ MAKE NEW ENTRY FIRST ON QUEUE 00458000
- ST R1,CPEXBPNT-CPEXBLOK(,R2) UPDATE BACKCHAIN OF OLD 1ST E 00459000
- STM R2,R3,CPEXFPNT PLACE NEW ENTRY IN CHAIN 00460000
- SLR R0,R0 CLEAR OUT 00461000
- ST R0,CPEXMISC RELATED TASK CHAIN 00462000
- L R10,IOBSTACK GET A PREFORMATTED IOBLOK 00463000
- LTR R10,R10 HAVE ANY ?? 00464000
- BNP GETIOBLK NO -- MAKE UP A NEW ONE @V2A2029 00465000
- LM R5,R6,MODELSS GET MODEL SET SECTOR CCW @V2A2029 00466000
- ALR R5,R10 ADJUST DATA ADDRESS @V2A2029 00467000
- STM R5,R6,PAGESS AND STORE IN PAGE IOBLOK @V2A2029 00468000
- B SETRWCCW GO SET UP READ/WRITE CCW @V2A2029 00469000
- DROP R10 NO -- MAKE UP A NEW ONE 00470000
- EJECT 00471000
- GETIOBLK LR R10,R1 SAVE ADDRESS OF CPEXBLOK @V2A2029 00472000
- LA R0,PAGESIZE FIRST, GET SOME 00473000
- CALL DMKFREE FREE STORAGE 00474000
- LR R14,R1 AND USE R14 FOR TEMPORARY 00475000
- USING IOBLOK,R14 ADDRESSABILITY 00476000
- LR R15,R10 SAVE ADDRESS OF CPEXBLOK .. 00477000
- XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR ENTIRE IOBLOK 00478000
- LA R4,WAITPAGE GET ADDRESS FOR IOBIRA 00479000
- LA R5,PAGECCWS GET ADDRESS OF CHANNEL PROGRAM FOR IOBCAW 00480000
- ST R4,IOBIRA SET UP IRA RETURN ADDRESS 00481000
- ST R5,IOBCAW STORE CAW ADDRESS FOR PAGING CHAN. PROG. 00482000
- ST R14,IOBLINK IN CASE NEW IOB GETS CHAINED 1ST @V407438 00483000
- SPACE 00484000
- LM R0,R11,MODELCCW GET PROTOTYPE PAGING CCWS 00485000
- ALR R0,R14 ADJUST ADDRESS IN SEEK 00486000
- ALR R2,R14 IN SET SECTOR 00487000
- ALR R4,R14 IN SEARCH 00488000
- ALR R6,R14 AND IN TIC 00489000
- STM R0,R11,PAGECCWS AND SAVE IN IOBLOK EXTENSION 00490000
- LR R1,R15 RESTORE ADDRESSABILITY FOR CPEXBLOK 00491000
- L R11,CPEXR11 AND FOR USER'S VMBLOK 00492000
- DROP R14 ABANDON TEMPORARY ADDRESSABILITY 00493000
- LR R10,R14 AND REESTABLISH STANDARD 00494000
- USING IOBLOK,R10 00495000
- EJECT 00496000
- SETRWCCW EQU * HERE DIRECTLY TO SET UP CCW IN FORMATTED IOBLOK 00497000
- L R5,CPEXR5 GET ADDRESS OF SWPTABLE ENTRY 00498000
- L R7,CPEXR7 AND OF CORTABLE ENTRY 00499000
- OI SWPFLAG,SWPTRANS FLAG VIRTUAL PAGE IN TRANSIT 00500000
- L R0,IOBMISC GET NEXT IOBLOK IN STACK 00501000
- ST R0,IOBSTACK AND MAKE IT FIRST 00502000
- ST R1,IOBMISC SAVE POINTER TO TRANSIT CPEXBLOK 00503000
- SL R7,ACORETBL GET PAGE FRAME ADDRESS/256 00504000
- SLL R7,8 GET PAGE FRAME ADDRESS 00505000
- ICM R7,B'1000',CPEXR0+3 GET DASD OP-CODE FROM SAVED GPR0 00506000
- ST R7,PAGERW AND SET 1ST HALF OF R/W CCW 00507000
- MVI PAGERW+4,CC MAKE SURE FLAGS ARE CORRECT @V408246 00508000
- MVC IOBUSER,ASYSVM CHARGE IOB UNSTACK TO SYSTEM @VA07397 00509000
- SLR R0,R0 CLEAR OUT 00510000
- ST R0,IOBRADD ADDRESS, FLAGS AND STATUS 00511000
- OI IOBFLAG,IOBPAG+IOBCP FLAG AS PAGING IOBLOK 00512000
- ST R0,IOBCYL CLEAR CYLINDER AND RETRY COUNT 00513000
- SLR R8,R8 CLEAR DEVICE REGISTER @V408246 00514000
- IC R8,SWPCODE GET VOLUME CODE @V408246 00515000
- SLL R8,3 CONVERT TO INDEX FOR OWNDLIST @V408246 00516000
- AL R8,=A(DMKSYSOW) INDEX TO CORRECT ENTRY @V408246 00517000
- LH R8,OWNDRDEV-OWNDLIST(,R8) GET INDEX TO RDEVBLOK @V408246 00518000
- LTR R8,R8 IS IT STILL THERE? @V408246 00519000
- BNM CHKWRIT YES @V408246 00520000
- MVI IOBSTAT,IOBFATAL+IOBCC3 NO, FLAG FATAL I/O @V408246 00521000
- OI SWPFLAG,SWPRECMP BYPASS SYSTEM FALURE @V408246 00522000
- SR R0,R0 @V408246 00523000
- ST R0,PAGEIOB CLEAR CHAINING FIELD @V408246 00524000
- LR R1,R10 GET IOBLOK POINTER @V408246 00525000
- CALL DMKSTKIO AND STACK BLOCK @V408246 00526000
- B GETQ LOOK FOR MORE REQUESTS @V408246 00527000
- SPACE 3 00528000
- CHKWRIT DS 0H @V408246 00529000
- MVI PAGEPRI,0 INITIALIZE PRIORITY @V408246 00530000
- CLI PAGERW,X'05' PAGE WRITE ?? 00531000
- BNE GETRDEV NO -- 00532000
- L R3,PAGESOUT COUNT PENDING SWAPS 00533000
- LA R3,1(,R3) ... 00534000
- ST R3,PAGESOUT ... 00535000
- OI PAGEPRI,4 SET-UP WRITE PRIORITY @V408246 00536000
- SPACE 00537000
- GETRDEV EQU * 00538000
- TM VMQLEVEL,VMQ1 FOR Q1? @V408246 00539000
- BO *+8 YES @V408246 00540000
- OI PAGEPRI,2 NO, ADD IN Q2 PRIORITY @V408246 00541000
- TM VMDSTAT,VMINQ IN-Q? @V408246 00542000
- BO *+8 YES @V408246 00543000
- OI PAGEPRI,8 NO, ADD IN NOT IN-Q PRIORITY @V408246 00544000
- SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 00545000
- AL R8,ARIODV POINT TO CORRECT RDEVBLOK 00546000
- AIF (NOT &AP).NOAP2 **AIF*** 00547000
- LA R1,RDEVIOBL POINT TO RDEV LOCK WORD @V407594 00548000
- LOCK OBTAIN,TYPE=PRIVATE,SPIN=YES LOCK RDEVBLOK @V407594 00549000
- .NOAP2 ANOP **ANOP** 00550000
- SPACE 00551000
- SR R3,R3 CLEAR INDEX REGISTER 00552000
- IC R3,SWPDPAGE AND GET PAGE NUMBER 00553000
- SR R2,R2 CLEAR FOR DIVIDE 00554000
- BCTR R3,0 AND GET PAGE NUMBER-1 00555000
- CLI RDEVTYPE,TYP2314 PAGING ON 2314/2319 ? @VM01167 00556000
- BE PAG2314 YES -- 00557000
- SPACE 00558000
- CLI RDEVTYPE,TYP3340 PAGING ON 3340 ? @VM01167 00559000
- BE PAG3340 YES - BRANCH @V2A2029 00560000
- SPACE 00561000
- CLI RDEVTYPE,TYP3350 PAGING ON 3350 ? @V304498 00562000
- BE PAG3350 YES, CALCULATE HEAD NUMBER @V304498 00563000
- SPACE 1 00564000
- CLI RDEVTYPE,TYP3375 Paging on 3375 ? HRC106DK 00564100
- BE PAG3375 Yes, calculate head number HRC106DK 00564200
- SPACE 1 HRC106DK 00564300
- CLI RDEVTYPE,TYP3380 Paging on 3380 ? HRC106DK 00564400
- BE PAG3380 Yes, calculate head number HRC106DK 00564500
- SPACE 1 HRC106DK 00564600
- D R2,F3 CALCULATE HEAD NUMBER 00565000
- LA R1,SECT3330 SECTOR TABLE FOR 3330 @VM01167 00566000
- CLI RDEVTYPE,TYP2305 IS IT A 2305 00567000
- BNE GETSECTR NO -- GO CALCULATE SECTOR 00568000
- LA R1,SEC23052 SECTOR TABLE FOR 2305 M2 @VM01167 00569000
- CLI RDEVMDL,MODEL1 2305 MODEL 1 ?? 00570000
- BNE GETSECTR NO -- TO CALCULATE SECTOR @VM01167 00571000
- LA R1,SEC23051 SECTOR TABLE FOR 2305 M1 @VM01167 00572000
- B GETSECTR GO SET SECTOR @V2A2029 00573000
- SPACE 00574000
- PAG3340 D R2,F2 CALCULATE HEAD NUMBER @V2A2029 00575000
- LA R1,SECT3340 SECTOR TABLE FOR 3340 @VM01167 00576000
- LA R14,ONE SLOT NUMBER FOR 1ST EVEN HEAD @VM01167 00577000
- TM SWPDPAGE,BIT6+BIT7 IS THIS A EVEN HEAD NUMBER ? @VM01167 00578000
- BM SORTSLOT YES - LEAVE AS ONE @VM01167 00579000
- AR R14,R14 SET SLOT NUMBER FOR 1ST ODD HEAD @V2A2029 00580000
- SORTSLOT STC R14,PAGESRCD AND SAVE FOR SORTING @VM01167 00581000
- B GETSECTV GET SECTOR VALUE @VM01167 00582000
- SPACE 00583000
- PAG3350 D R2,F4 CALCULATE HEAD NUMBER @V304498 00584000
- LA R1,SECT3350 SECTOR TABLE 3350 @V304498 00585000
- SPACE 1 00586000
- B GETSECTR HRC106DK 00586050
- SPACE 1 HRC106DK 00586100
- PAG3375 D R2,F8 Calculate head number HRC106DK 00586150
- LA R1,SECT3375 Sector table 3375 HRC106DK 00586200
- B GETSECTR HRC106DK 00586250
- SPACE 1 HRC106DK 00586300
- PAG3380 D R2,F10 Calculate head number HRC106DK 00586350
- LA R1,SECT3380 Sector table 3380 HRC106DK 00586400
- SPACE 1 HRC106DK 00586450
- GETSECTR LA R9,1(,R2) GET SLOT NUMBER @VA04482 00587000
- STC R9,PAGESRCD AND SAVE FOR SORTING @VM01167 00588000
- GETSECTV SLL R3,16 HEAD NUMBER TO HIGH BYTES @VM01167 00589000
- IC R3,0(R2,R1) GET SECTOR VALUE FOR THIS RECORD @VM01167 00590000
- ICM R3,B'0010',SWPDPAGE INSERT RECORD NUMBER 00591000
- B SETADDR GO JOIN COMMON CODE BELOW 00592000
- SPACE 00593000
- PAG2314 EQU * HERE FOR 2314 CHANNEL PROGRAM 00594000
- MVI PAGESS,NOPCODE NOP THE SET SECTOR COMMAND @VM01167 00595000
- LA R1,HDTABLE(R3) POINT TO HEAD NUMBER FOR PAGE 00596000
- D R2,F8 GET SLOT NUMBER (REMAINDER IN GPR 2) 00597000
- LR R3,R2 SAVE IN GPR3 00598000
- ICM R3,B'0100',0(R1) INSERT HEAD NUMBER IN BYTE 1 00599000
- ICM R3,B'0010',SWPDPAGE INSERT RECORD NUMBER IN BYTE 2 00600000
- SPACE 00601000
- SETADDR LH R2,SWPCYL GET CYLINDER NUMBER 00602000
- STM R2,R3,PAGESEEK STORE SEEK ADDRESS IN TASK 00603000
- STH R2,IOBCYL SET CYLINDER IN IOBLOK 00604000
- CLI RDEVTYPE,TYP3340 PAGING ON 3340 ? @VM01167 00605000
- BNE CK2305 NO, CHECK 2305 @VM01167 00606000
- TM RDEVFTR,FTR70MB 2 LOGICAL CYLINDERS/PHYSICAL ? @VM01167 00607000
- BZ SLOTSORT NO, MUST BE 35MB @VM01167 00608000
- NI IOBCYL+1,X'FF'-BIT7 FORCE SORT ON EVEN CYLINDERS@VM01167 00609000
- B SLOTSORT GO LOCATE IOBLOK FOR THIS CYL @VM01167 00610000
- CK2305 CLI RDEVTYPE,TYP2305 PAGING ON 2305? @VA03430 00611000
- BNE SLOTSORT NO -- DO CYLINDER ORIENTED SLOT SORT 00612000
- SLR R1,R1 FORCE CYLINDER 0 00613000
- STH R1,IOBCYL ... 00614000
- SPACE 00615000
- SLOTSORT LR R2,R8 SAVE ADDRESS OF RDEVBLOK 00616000
- LH R1,IOBCYL GET CYLINDER NUMBER FOR COMPARE HALF 00617000
- SPACE 00618000
- FINDIOB L R3,IOBFPNT-IOBLOK(,R2) LOOK FOR AN IOBLOK FOR SAME CYL 00619000
- CR R3,R8 ANY MORE ON CHAIN 00620000
- BE QUEUEIO NO -- NEED A SEPARATE SIO 00621000
- TM IOBFLAG-IOBLOK(R3),IOBPAG PAGING I/O TASK ?? 00622000
- BZ FINDIOB2 NO -- KEEP LOOKING 00623000
- TM IOBSTAT-IOBLOK(R3),IOBMINI IS THIS A MINI IOB? @V407438 00624000
- BO FINDIOB2 YES, THEN SKIP IT TOO... @V407438 00625000
- CH R1,IOBCYL-IOBLOK(,R3) IO FOR SAME CYLINDER ?? 00626000
- BE SORTIT YES -- GO DO SLOT SORTING 00627000
- BL QUEUEIO NO -- LOOK NO FARTHER 00628000
- FINDIOB2 LR R2,R3 SAVE BACK CHAIN POINTER 00629000
- B FINDIOB AND KEEP LOOKING 00630000
- SPACE 00631000
- SORTIT SR R2,R2 CLEAR BACKCHAIN POINTER 00632000
- SR R6,R6 CLEAR OLD BACK POINTER @V408246 00633000
- CLI RDEVTYPE,TYP2305 2305 DEVICE TYPE ? @VM01167 00634000
- BE PAGE2305 YES - @VM01167 00635000
- CLI RDEVTYPE,TYP3350 3350 DEVICE ? @V304498 00636000
- BE SORT3350 YES, SLOT SORT WITHIN CYLINDER(S)@V304498 00637000
- CLI RDEVTYPE,TYP3375 3375 device ? HRC106DK 00637100
- BE SORT3375 Yes, slot sort within cylinder(s)HRC106DK 00637200
- CLI RDEVTYPE,TYP3380 3380 device ? HRC106DK 00637300
- BE SORT3380 Yes, slot sort within cylinder(s)HRC106DK 00637400
- CLI RDEVTYPE,TYP3330 3330 DEVICE TYPE ? @VM01167 00638000
- BE PAGE3330 YES - @VM01167 00639000
- CLI RDEVTYPE,TYP3340 3340 DEVICE TYPE ? @VM01167 00640000
- BE PAGE3340 YES - @VM01167 00641000
- CLI RDEVTYPE,TYP2314 2314/2319 DEVICE TYPE ? @VM01167 00642000
- BNE QUEUEIO NO - GO QUEUE IOBLOK @VM01167 00643000
- LA R15,CCW2314 YES, GET ADDRESS OF CHAIN ROUTINE@VM01167 00644000
- B PAGE2314 ENTER 2314 SORT ROUTINE @VM01167 00645000
- SPACE 00646000
- * CHAIN TIC IN IOBLOK(R2) TO CORRECT CCW IN NEXT IOBLOK(R10) 00647000
- SPACE 00648000
- CCW2314 LA R5,PAGESRCH ADDR OF SEARCH ID EQUAL CCW(R10) @VM01167 00649000
- CLC PAGEHEAD,PAGEHEAD-IOBLOK(R2) SAME TRACK/HEAD ? @VM01167 00650000
- BNE SK2314 NO, MUST TIC TO SEEK @VA03674 00651000
- CLC PAGERCD,PAGERCD-IOBLOK(R2) ASCENDING RECORDS? @VA03674 00652000
- BH TIC2314 YES, TIC TO SEARCH ID EQUAL CCW @VA03674 00653000
- SK2314 LA R5,PAGESS NO, TIC TO SET SECTOR CCW SLOT @VA03674 00654000
- MVC PAGESS,PAGESK OVERLAY SET SECTOR WITH SEEK CCW @VM01167 00655000
- TIC2314 ST R5,PAGESNS-IOBLOK(,R2) INSERT 'TIC TO' ADDRESS @VM01167 00656000
- MVI PAGESNS-IOBLOK(R2),TICOP MOVE IN TIC OP-CODE(08)@VM01167 00657000
- BR R14 RETURN TO CALLER @VM01167 00658000
- SPACE 00659000
- SORT3350 LA R15,CCW3350 3350 CHAIN IOBLOK ROUTINE @V304498 00660000
- MVI LASTSLOT,4 Highest slot number for 3350 HRC106DK 00660100
- B SORT2305 PERFORM 3350 SLOT SORT @V304498 00661000
- SORT3375 LA R15,CCW3350 3350/75/80 chain IOBLOK routine HRC106DK 00661100
- MVI LASTSLOT,8 Highest slot number for 3375 HRC106DK 00661200
- B SORT2305 Perform 3375 slot sort HRC106DK 00661300
- SORT3380 LA R15,CCW3350 3350/75/80 chain IOBLOK routine HRC106DK 00661400
- MVI LASTSLOT,10 Highest slot number for 3380 HRC106DK 00661500
- B SORT2305 Perform 3380 slot sort HRC106DK 00661600
- PAGE2305 LA R15,CCW2305 2305 CHAIN IOBLOK ROUTINE @VM01167 00662000
- PAGE2314 EQU * 2314/2319 CHAIN IOBLOK ROUTINE @VM01167 00663000
- SORT2305 CLC PAGESECT,PAGESECT-IOBLOK(R3) COMPARE SECTORS @VM01167 00664000
- BL INIOB LOW, SORT IN ASENDING ORDER @VM01167 00665000
- BE CHKPRI EQUAL, CHECK PRIORITY ORDER @V408246 00666000
- LR R2,R3 SAVE BACKCHAIN ADDRESS @VM01167 00667000
- L R3,PAGEIOB-IOBLOK(R2) GET NEXT IOBLOK @V408246 00668000
- LTR R3,R3 IS THERE ONE? @V408246 00669000
- BZ ENDIOB END OF CHAIN - INSERT HERE @VM01167 00670000
- CLC PAGESECT-IOBLOK(,R2),PAGESECT-IOBLOK(R3) @VM01167 00671000
- BNL INIOB BREAK IN ORDER, INSERT IOBLOK @VM01167 00672000
- B SORT2305 TRY AGAIN @VM01167 00673000
- SPACE 00674000
- CHKPRI DS 0H @V408246 00675000
- CLC PAGEPRI(1),PAGEPRI-IOBLOK(R3) BETTER PRIORITY? @V408246 00676000
- BNL SKIPIT NO @V408246 00677000
- LR R6,R3 YES, SAVE OLD BLOCK @V408246 00678000
- LTR R2,R2 REORDERING 1ST REQUEST? @V408246 00679000
- BNZ PRIODRA NO @V408246 00680000
- L R3,PAGEIOB-IOBLOK(R3) NEXT POINTER @V408246 00681000
- LTR R3,R3 IS THERE ONE ? @V408246 00682000
- BZ PRIODR NONE @V408246 00683000
- MVC IOBFPNT-IOBLOK(8,R3),IOBFPNT-IOBLOK(R6) VALID @V408246 00684000
- * UNCHAINING INFO 00685000
- B INIOB UNCHAIN AND RECHAIN @V408246 00686000
- PRIODR DS 0H REPLACING 1ST AND ONLY REQUEST @V408246 00687000
- LR R3,R6 RESTORE ONLY POINTER @V408246 00688000
- SR R6,R6 CLEAR REPLACED POINTER @V408246 00689000
- B INIOB MEARGE IN @V408246 00690000
- PRIODRA DS 0H @V408246 00691000
- L R3,PAGEIOB-IOBLOK(R3) NEXT POINTER @V408246 00692000
- LTR R3,R3 IS TEHERE ONE ? @V408246 00693000
- BNZ INIOB OK, CHAIN IN @V408246 00694000
- B ENDIOB LAST REQUEST @V408246 00695000
- * 00696000
- SKIPIT LR R2,R3 SAVE BACKCHAIN ADDRESS @VM01167 00697000
- L R3,PAGEIOB-IOBLOK(R2) GET NEXT IOBLOK @V408246 00698000
- LTR R3,R3 IS THERE ONE ? @V408246 00699000
- BZ ENDIOB END OF CHAIN - INSERT HERE @VM01167 00700000
- CLC PAGESECT-IOBLOK(,R3),PAGESECT-IOBLOK(R2) @VM01167 00701000
- BNH SORT2305 BREAK IN ORDER - SORT @VM01167 00702000
- B SKIPIT TRY NEXT IOBLOK @VM01167 00703000
- SPACE 00704000
- * CHAIN TIC IN IOBLOK(R2) TO CORRECT CCW IN NEXT IOBLOK(R10) 00705000
- SPACE 00706000
- CCW2305 LA R5,PAGESK ADDRESS OF SEEK CCW @VM01167 00707000
- CLI DMKPAGDP,X'FF' PCI DRUM FLAG SET ? @VA07060 00708000
- BE *+8 YES @VA07060 00709000
- OI PAGESK+4,8 YES, PCI ON ALL 2305 REQUESTS @V408246 00710000
- CLI PAGESRCD,ONE IS THIS RECORD ONE ? @VM01167 00711000
- BE RCDONE YES, CHECK PREVIOUS RECORD @VM01167 00712000
- CLC PAGESRCD,PAGESRCD-IOBLOK(R2) ADJACENT RECORDS @VM01167 00713000
- BNH TIC2305 NO,CHAIN IN SEEK AND SECTOR CCWS @VM01167 00714000
- CLC PAGECYL,PAGECYL-IOBLOK(R2) SAME CYLINDER ? @VM01167 00715000
- BNE SK2305 NO-ADJACENT RECORDS-DIFFERENT CYL@VM01167 00716000
- LA R5,PAGESRCH ADDRESS OF SEARCH ID EQUAL CCW @VM01167 00717000
- CLC PAGEHEAD-IOBLOK(,R2),PAGEHEAD SAME TRACK/HEAD ? @VM01167 00718000
- BE TIC2305 YES, SAME TRACK AND ADJACENT @VM01167 00719000
- * RECORDS - TIC TO SEARCH ID EQUAL CCW 00720000
- B SK2305 CHAIN TO SEEK WITHOUT SET SECTOR @VM01167 00721000
- SPACE 00722000
- RCDONE DS 0H @V408246 00723000
- OI PAGESK+4,8 PCI START OF SLOT 1 REQUEST @V408246 00724000
- CLI PAGESRCD-IOBLOK(R2),THREE PRIOR IOB FOR SLOT 3? @V408246 00725000
- BNE TIC2305 NO,CHAIN IN SEEK AND SECTOR CCWS @VM01167 00726000
- SK2305 LA R5,PAGESS ADDRESS OF SET SECTOR CCW @VM01167 00727000
- MVC PAGESS,PAGESK OVERLAY SET SECTOR WITH SEEK CCW @VM01167 00728000
- TIC2305 ST R5,PAGESNS-IOBLOK(,R2) STORE 'TIC TO' ADDRESS @VM01167 00729000
- MVI PAGESNS-IOBLOK(R2),TICOP MOVE IN TIC OP-CODE @VM01167 00730000
- BR R14 RETURN TO CALLER @VM01167 00731000
- SPACE 00732000
- PAGE3330 LA R15,CCW3330 3330 CHAIN IOBLOK ROUTINE @VM01167 00733000
- SORT3330 CLC PAGEHEAD,PAGEHEAD-IOBLOK(R3) SAME TRACK/HEAD ? @VM01167 00734000
- BE EQ3330 YES - SORT BY RECORD NUMBER @VM01167 00735000
- NXT3330 LR R2,R3 SAVEBACK CHAIN ADDRESS @VM01167 00736000
- L R3,PAGEIOB-IOBLOK(R2) GET NEXT IOBLOK @V408246 00737000
- LTR R3,R3 IS THERE ONE ? @V408246 00738000
- BZ ENDIOB END OF CHAIN - INSERT @VM01167 00739000
- B SORT3330 SORT WITH THIS TASK @VM01167 00740000
- SPACE 00741000
- EQ3330 CLC PAGERCD,PAGERCD-IOBLOK(R3) COMPARE RECORDS @VM01167 00742000
- BL INIOB LOW - INSERT IOBLOK HERE @VM01167 00743000
- LR R2,R3 SAVE BACK CHAIN ADDRESS @VM01167 00744000
- L R3,PAGEIOB-IOBLOK(R2) GET NEXT IOBLOK @V408246 00745000
- LTR R3,R3 IS THERE ONE ? @V408246 00746000
- BZ ENDIOB END OF CHAIN - INSERT HERE @VM01167 00747000
- CLC PAGEHEAD,PAGEHEAD-IOBLOK(R3) SAME TRACK/HEAD ? @VM01167 00748000
- BE EQ3330 YES - SAME TRACK/HEAD @VM01167 00749000
- B INIOB HIGH - INSERT IOBLOK HERE @VM01167 00750000
- SPACE 00751000
- * CHAIN TIC IN IOBLOK(R2) TO CORRECT CCW IN NEXT IOBLOK(R10) 00752000
- SPACE 00753000
- CCW3330 LA R5,PAGESK ADDRESS OF SEEK CCW @VM01167 00754000
- OI PAGESK+4,8 PCI START OF FOLLOWING REQUEST @V408246 00755000
- CLC PAGEHEAD,PAGEHEAD-IOBLOK(R2) SAME TRACK/HEAD ? @VM01167 00756000
- BNE UNEQHD NO, CHECK FOR SLOT 3 TO SLOT 1 @VA04482 00757000
- IC R4,PAGERCD-IOBLOK(,R2) GET RECORD NUMBER @VM01167 00758000
- LA R4,1(,R4) UPDATE BY ONE @VM01167 00759000
- CLM R4,B'0001',PAGERCD ADJACENT RECORDS ? @VM01167 00760000
- BNE TICSETS NO, TIC TO SET SECTOR @VA04482 00761000
- LA R5,PAGESRCH YES, TIC TO SEARCH ID EQUAL CCW @VM01167 00762000
- B CHAINTIC GO STORE TIC ADDRESS @VM01167 00763000
- UNEQHD CLI PAGESRCD-IOBLOK(R2),THREE PRIOR IOB FOR SLOT 3? @VA04482 00764000
- BNE CHAINTIC NO - TIC TO SEEK AND SET SETOR @VM01167 00765000
- CLI PAGESRCD,ONE IS THIS REQUEST FOR SLOT 1 @VA04482 00766000
- BNE CHAINTIC NO - TIC TO SEEK AND SET SECTOR @VM01167 00767000
- MVC PAGESS,PAGESK OVERLAY SET SECTOR WITH SEEK @VM01167 00768000
- TICSETS LA R5,PAGESS SET TIC ADDRESS TO SET SECTOR @VA04482 00769000
- CHAINTIC ST R5,PAGESNS-IOBLOK(,R2) STORE 'TIC TO' ADDRESS @VM01167 00770000
- MVI PAGESNS-IOBLOK(R2),TICOP MOVE IN TIC OP-CODE(08)@VM01167 00771000
- BR R14 RETURN TO CALLER @VM01167 00772000
- SPACE 00773000
- PAGE3340 LA R15,CCW3340 3340 CHAIN IOBLOK ROUTINE @VM01167 00774000
- SPACE 00775000
- SORT3340 CLC PAGESRCD,PAGESRCD-IOBLOK(R3) COMPARE @VM01167 00776000
- * 3340 SLOT NUMBERS 00777000
- BL INIOB LOW- SORT IN ASCENDING ORDER @VM01167 00778000
- BE EQ3340 SLOT EQUAL - CHECK FOR EQUAL HEAD@V2A2029 00779000
- NXT3340 LR R2,R3 SAVE BACKCHAIN ADDRESS @V2A2029 00780000
- L R3,PAGEIOB-IOBLOK(R2) NEXT SORTED TASK @V408246 00781000
- LTR R3,R3 END OF CHAIN ? @V408246 00782000
- BZ ENDIOB END OF CHAIN - INSERT IOBLOK @VM01167 00783000
- B SORT3340 TRY NEXT TASK @V2A2029 00784000
- SPACE 00785000
- EQ3340 CLC PAGECYL,PAGECYL-IOBLOK(R3) SAME CYLINDER ? @VM01167 00786000
- BNE UPDT3340 NO, UPDATE SLOT VALUE @VM01167 00787000
- CLC PAGEHEAD,PAGEHEAD-IOBLOK(R3) COMPARE LOGICAL @VM01167 00788000
- * HEADS ? 00789000
- BE EQHEADS BRANCH - HEADS EQUAL @V2A2029 00790000
- UPDT3340 IC R4,PAGESRCD GET SLOT NUMBER @VM01167 00791000
- LA R4,2(,R4) AND UPDATE TO NEXT SLOT (PLUS 2) @V2A2029 00792000
- STC R4,PAGESRCD AND SAVE @VM01167 00793000
- B NXT3340 TRY NEXT 3340 TASK @V2A2029 00794000
- SPACE 00795000
- EQHEADS CLC PAGESECT,PAGESECT-IOBLOK(R3) COMPARE SECTORS @VM01167 00796000
- BL INIOB LOWER- INSERT BEFORE R3 @VM01167 00797000
- LR R2,R3 SAVE BACKCHAIN ADDRESS @V2A2029 00798000
- L R3,PAGEIOB-IOBLOK(R2) NEXT TASK ADDRESS @V408246 00799000
- LTR R3,R3 END OF CHAIN ? @V408246 00800000
- BZ ENDIOB END OF CHAIN - INSERT IT @VM01167 00801000
- B INIOB CORRECT SLOT - INSERT HERE @VM01167 00802000
- SPACE 00803000
- * CHAIN TIC IN IOBLOK(R2) TO CORRECT CCW IN NEXT IOBLOK(R10) 00804000
- SPACE 00805000
- CCW3340 DS 0H @V408246 00806000
- OI PAGESK+4,8 PCI START OF FOLLOWING REQUEST @V408246 00807000
- CLC PAGECYL(2),PAGECYL-IOBLOK(R2) SAME CYLINDER? @V408246 00808000
- BNE SK3340 NO, MUST HAVE SEEK CCW @VM01167 00809000
- LA R5,PAGESRCH ADDRESS OF SEARCH ID EQUAL @VM01167 00810000
- CLC PAGESRCD,PAGESRCD-IOBLOK(R2) SAME TRACK ? @VM01167 00811000
- BE TIC3340 YES, SET TIC ADDRESS TO SEARCH @V2A2029 00812000
- * ID EQ BYPASSING SEEK AND SET SECTOR CCWS 00813000
- SK3340 LA R5,PAGESK ADDRESS OF SEEK COMMAND CCW @VM01167 00814000
- IC R4,PAGESRCD-IOBLOK(,R2) GET PREVIOUS SLOT @VM01167 00815000
- LA R4,1(,R4) NUMBER AND UPDATE BY ONE @V2A2029 00816000
- CLM R4,B'0001',PAGESRCD IS THIS THE NEXT SLOT ? @VM01167 00817000
- BNE TIC3340 NO - LEAVE SEEK AND SET SECTOR IN@V2A2029 00818000
- CLC PAGESECT-IOBLOK(,R2),PAGESECT RECORD 2 OF ONE @VM01167 00819000
- * EVEN/ODD TRACK TO RECORD ONE OF NEXT ODD/EVEN TRACK ? 00820000
- BNH TIC3340 NO - LEAVE SEEK AND SET SECTOR IN@V2A2029 00821000
- * RECORD 2 VALUE (20) TO RECORD ONE VALUE (02) 00822000
- MVC PAGESS,PAGESK OVERLAY SET SECTOR WITH SEEK CCW @VM01167 00823000
- LA R5,PAGESS POINT TO SEEK CCW @VM01167 00824000
- TIC3340 ST R5,PAGESNS-IOBLOK(,R2) STORE TIC TO ADDRESS @VM01167 00825000
- MVI PAGESNS-IOBLOK(R2),TICOP MOVE IN TIC OP-CODE @VM01167 00826000
- BR R14 RETURN TO CALLER @VM01167 00827000
- SPACE 00828000
- INIOB LTR R2,R2 REPLACING 1ST IOBLOK ? @VM01167 00829000
- BNZ TWOIOBS NO - @VM01167 00830000
- LM R1,R2,IOBFPNT-IOBLOK(R3) UNCHAIN 1ST IOBLOK @VM01167 00831000
- STM R1,R2,IOBFPNT AND CHAIN IN NEW IOBLOK @VM01167 00832000
- ST R10,IOBFPNT-IOBLOK(,R2) AND CHAIN IN @VM01167 00833000
- ST R10,IOBBPNT-IOBLOK(,R1) NEW 1ST IOBLOK @VM01167 00834000
- B ONEIOB DO NOT UPDATE OLD IOBLOK @VM01167 00835000
- SPACE 00836000
- TWOIOBS BALR R14,R15 UPDATE TIC ADDRESS @VM01167 00837000
- ST R10,PAGEIOB-IOBLOK(,R2) CHAIN IN NEW IOBLOK @VM01167 00838000
- ONEIOB LR R2,R10 NEW IOBLOK ADDRESS @VM01167 00839000
- LR R10,R3 ADDRESS OF THE NEXT IOBLOK @VM01167 00840000
- SPACE 00841000
- ENDIOB BALR R14,R15 ADJUST TIC ADDRESS TO NEXT IOBLOK@VM01167 00842000
- ST R10,PAGEIOB-IOBLOK(,R2) CHAIN IN NEW IOBLOK @VM01167 00843000
- LTR R10,R6 REPLACED TASK? @V408246 00844000
- BNZ ENDIOBA YES @V407594 00845000
- AIF (NOT &AP).NOAP3 **AIF*** 00846000
- LA R1,RDEVIOBL PT TO RDEV LOCK @V407594 00847000
- LOCK RELEASE,TYPE=PRIVATE UNLOCK RDEVBLOK @V407594 00848000
- .NOAP3 ANOP **ANOP** 00849000
- B EXIT DONE WITH THIS REQUEST @V407594 00850000
- ENDIOBA DS 0H HERE IF REPLACED TASK @V407594 00851000
- MVC PAGESNS(7),MODELNOP RESTORE SENSE @V408246 00852000
- LM R2,R3,MODELSS PROTO-TYPE SET SECTOR @V408246 00853000
- ALR R2,R10 FILL IN CORRECT ADDRESS @V408246 00854000
- STM R2,R3,PAGESS @V408246 00855000
- SR R6,R6 CLEAR . . @V408246 00856000
- ST R6,PAGEIOB . . NEXT REQUEST POINTER @V408246 00857000
- B SLOTSORT REORDER IN CHAIN @V408246 00858000
- SPACE 00859000
- QUEUEIO LA R1,RDEVIOBL PT TO RDEV LOCK @V407594 00860000
- LOCK RELEASE,TYPE=PRIVATE UNLOCK RDEVBLOK @V407594 00861000
- CALL DMKIOSQR SCHEDULE PAGING I/O @V407594 00862000
- L R1,DMKPAGPS ADD 1 TO COUNT OF 00863000
- AL R1,F1 PAGING START I/O'S 00864000
- ST R1,DMKPAGPS AND RESTORE 00865000
- EXIT EQU * UPDATE I/O COUNT FOR OVERHEAD, AND EXIT 00866000
- L R15,PAGIOCTR GET PAGE I/O COUNT 00867000
- BCT R15,*+8 DECREMENT AND TEST 00868000
- BAL R14,OVERHEAD WHEN 0, GO RE-CALCULATE PAGE OVERHEAD 00869000
- ST R15,PAGIOCTR UPDATE PAGE I/O COUNT 00870000
- L R1,DMKPAGQR GET PAGE I/O FOR QUERY COMMAND @VA08859 00871000
- AL R1,F1 ADD 1 TO IT AND SAVE @VA08859 00872000
- ST R1,DMKPAGQR ..... @VA08859 00873000
- B GETQ GO LOOK FOR MORE REQUESTS 00874000
- SPACE 00875000
- EXITX CHARGE SWITCH,ASYSVM SET R11 TO ASYSVM FOR DISPATCH @V407594 00876000
- AIF (NOT &AP).NOAP11 @VA10805 00876010
- TM APSTAT1,APUOPER RUNNING AP? @VA09257 00876100
- BNO NORMEXT NOT AP EXIT NORMALLY. @VA09257 00876200
- L R15,PREFIXA ACCESS OTHER PSA @VA09257 00876300
- CLI XTNDLOCK-PSA(R15),0 IS SYSTEM EXTENDING? @VA09257 00876400
- BE NOEXTEN NO NOT EXTENDING FREE STORAGE. @VA09257 00876500
- NORMEXT DS 0H @VA09257 00876600
- .NOAP11 ANOP 00876610
- GOTO DMKDSPCH ALL DONE -- LEAVE @V407594 00877000
- AIF (NOT &AP).NOAP12 @VA10805 00877010
- NOEXTEN DS 0H @VA09257 00877100
- L R15,PREFIXB ACCESS OTHER PSA @VA09257 00877200
- TM XCPEND-PSA(R15),XCDISP DISPATCH PENDING? @VA09257 00877300
- BZ NORMEXT NO DISPATCH PENDING. @VA09257 00877400
- LOCK RELEASE,TYPE=SYS YES,RELEASE THE LOCK @VA09257 00877500
- GOTO DMKDSPRU UNLOCKED ENTRY TO DSP @VA09257 00877600
- .NOAP12 ANOP 00877610
- SPACE 00878000
- PRINT DATA 00879000
- HDTABLE DS 0H TABLE OF HEAD NUMBERS FOR 2314 PAGES 00880000
- DC AL1(00,00,01,01,02,03,03,04) 00881000
- DC AL1(05,05,06,06,07,08,08,09) 00882000
- DC AL1(10,10,11,11,12,13,13,14) 00883000
- DC AL1(15,15,16,16,17,18,18,19) 00884000
- PRINT NODATA 00885000
- CCW3350 LA R5,PAGESK ADDRESS OF SEEK CCW @V304498 00886000
- OI PAGESK+4,8 PCI START OF FOLLOWING REQUEST @V408246 00887000
- CLI PAGESRCD,ONE IS THIS SLOT ONE? @VA04482 00888000
- BE RCDON50 YES, CHECK PREVIOUS SLOT @VA04482 00889000
- IC R4,PAGESRCD-IOBLOK(R2) GET PRIOR IOB SLOT NO. @VA04482 00890000
- LA R4,1(R4) BUMP SLOT NUMBER BY ONE @VA04482 00891000
- CLM R4,B'0001',PAGESRCD ADJACENT SLOTS? @VA04482 00892000
- BNE TIC3350 NO, CHAIN TO SEEK AND SET SECTOR @VA04482 00893000
- CLC PAGECYL,PAGECYL-IOBLOK(R2) SAME CYLINDER ? @V304498 00894000
- BNE SK3350 NO-ADJACENT RECORDS-DIFFERENT CYL@V304498 00895000
- LA R5,PAGESRCH ADDRESS OF SEARCH ID EQUAL CCW @V304498 00896000
- CLC PAGEHEAD-IOBLOK(,R2),PAGEHEAD SAME TRACK/HEAD ? @V304498 00897000
- BE TIC3350 YES, SAME TRACK AND ADJACENT @V304498 00898000
- * RECORDS - TIC TO SEARCH ID EQUAL 00899000
- B SK3350 CHAIN TO SEEK WITHOUT SET SECTOR @V304498 00900000
- SPACE 00901000
- RCDON50 CLC PAGESRCD-IOBLOK(1,R2),LASTSLOT Highest slot? HRC106DK 00902100
- BNE TIC3350 NO,CHAIN IN SEEK AND SECTOR CCWS @V304498 00903000
- SK3350 LA R5,PAGESS ADDRESS OF SET SECTOR CCW @V304498 00904000
- MVC PAGESS,PAGESK OVERLAY SET SECTOR WITH SEEK CCW @V304498 00905000
- TIC3350 ST R5,PAGESNS-IOBLOK(,R2) STORE 'TIC TO' ADDRESS @V304498 00906000
- MVI PAGESNS-IOBLOK(R2),TICOP MOVE IN TIC OP-CODE @V304498 00907000
- BR R14 RETURN TO CALLER @V304498 00908000
- SPACE 00909000
- EJECT 00910000
- *. 00911000
- * B. OPERATION OF THE PAGING INTERRUPT HANDLER - 00912000
- * 1. LOCATE THE CPEXBLOK FOR THE TASK THAT INITIATED THE PAGING 00913000
- * OPERATION AND UNCHAIN IT FROM THE INTRANSIT QUEUE 00914000
- * 2. IF NO ERRORS OCCURED FOR THE OPERATION, CALL DMKSTKCP TO 00915000
- * STACK THE DEFERED REQUESTS FOR EXECUTION, RETURN THE USED 00916000
- * IOBLOK TO THE STACK, AND EXIT VIA A GOTO TO DMKDSPCH 00917000
- * 3. IF ERRORS OCCURED IN A CHANNEL PROGRAM, FLAG THE CPEXBLOKS 00918000
- * TO BE UNSTACKED SO THAT DMKDSPCH WILL TRANSFER CONTROL TO 00919000
- * TO THE CALLING ROUTINE WITH A CONDITION CODE OF 4 00920000
- * 4. IF 5 CONSECTIVE ERRORS OCCUR ON A PAGING DEVICE; ERROR 00921000
- * MESSAGE DMKPAG415E WILL BE ISSUED TO THE SYSTEMS OPERATOR 00922000
- * AND THE SYSTEM WILL THEN ENTER A DISABLED WAIT STATE. 00923000
- *. 00924000
- SPACE 00925000
- WAITPAGE EQU * 00926000
- USING *,R12 ADDRESSABILITY ON ENTRY 00927000
- L R12,=A(DMKPAG) STANDARD ADDRESSABILITY 00928000
- USING DMKPAG,R12 00929000
- SPACE 00930000
- SR R6,R6 CLEAR PCI SWITCH @V408246 00931000
- SLR R9,R9 CLEAR ERROR SWITCH 00932000
- TM IOBCSW+5,IL INCORRECT LENGTH ERROR @VM08726 00933000
- BO WTPGERR YES, FORCE FATAL ERROR CONDITION @V408246 00934000
- TM IOBSTAT,IOBFATAL UNRECOVERABLE ERROR ? @VM08726 00936000
- BO WTPGERR YES, ANYLIZE FURTHER @V408246 00937000
- STC R9,PGERCTR ZERO PAGE ERROR COUNT @V408246 00938000
- TM IOBCSW+4,X'FF'-(CUE+CE+DE) MUST BE ZERO @V408246 00939000
- BNZ WTPGERR ERROR @V408246 00940000
- TM IOBCSW+4,CE+DE MUST BE ONE @V408246 00941000
- BO GETCPEX YES,OK @V408246 00942000
- CLI IOBCSW+5,PCI JUST PCI? @V408246 00943000
- BNE WTPGERR NO,ASSUME ERRORS THEN @V408246 00944000
- L R6,IOBCSW @V408246 00945000
- LA R6,0(,R6) LAST CCW POINTER @V408246 00946000
- LR R1,R10 SAVE COPIED IOBLOK @V408246 00947000
- L R10,IOBCAW POINT TO PAGECCWS @V408246 00948000
- SH R10,=Y(PAGECCWS-IOBLOK) BACK-UP TO START OF @V408246 00949000
- * ORIGINAL 00950000
- LA R0,IOBSIZE GET RID OF COPIED BLOCK @V408246 00951000
- CALL DMKFRET @V408246 00952000
- GETCPEX DS 0H PROCESS NEXT IOBLOK @V408246 00953000
- LTR R6,R6 PCI? @V408246 00954000
- BZ GETCPEXA NO @V408246 00955000
- LA R1,PAGESK 1ST CCW @V408246 00956000
- CR R6,R1 IN THIS TASK? @V408246 00957000
- BL GETCPEXA NO @V408246 00958000
- LA R1,PAGESNS+8 LAST CCW @V408246 00959000
- CR R6,R1 IN THIS TASK? @V408246 00960000
- BNH WTPGXIT YES, DONE @V408246 00961000
- GETCPEXA DS 0H @V408246 00962000
- CLI PAGERW,X'05' PAGE WRITE ?? 00963000
- BNE UNTRANS NO --- 00964000
- L R2,PAGESOUT GET PENDING WRITE COUNT 00965000
- BCTR R2,0 DECREMENT 00966000
- ST R2,PAGESOUT AND SAVE 00967000
- SPACE 00968000
- UNTRANS EQU * 00969000
- L R4,PAGEIOB SAVE NEXT POINTER @V408246 00970000
- ICM R1,B'1111',IOBMISC ANY STACKED REQUESTS? @V408246 00971000
- BZ UNSTCKA NO (PCI MUST HAVE CLEARED) @V408246 00972000
- XC IOBMISC,IOBMISC YES, MAKE SURE CLEARED NOW @V408246 00973000
- OI PAGERW+4,SKIP AVOID ANY PROBLEMS WITH RETRY @V408246 00974000
- LM R2,R3,CPEXFPNT AND UNCHAIN CPEXBLOK FROM TRANSIT QUEUE 00975000
- ST R2,CPEXFPNT-CPEXBLOK(,R3) --- 00976000
- ST R3,CPEXBPNT-CPEXBLOK(,R2) --- 00977000
- SPACE 2 00978000
- UNSTACK L R3,CPEXMISC SAVE POINTER TO NEXT CPREQUEST 00979000
- AIF (NOT &AP).NOAP4 **AIF*** 00980000
- CLI CPEXADD,0 DID DMKPTR INDICATE AFFINITY @V407594 00981000
- BE CALLSTK NO, STACK FOR EITHER PROCESSOR @V407594 00982000
- CLC CPEXADD(1),LPUADDR+1 AFFINITY FOR THIS PROC'R @V407594 00983000
- STC R9,CPEXADD INSERT POSSIBLE ERROR FLAG @V407594 00984000
- BNE STKOTHER NO- STACK FOR OTHER PROCESSOR @V407594 00985000
- CALL DMKSTKMP STACK FOR CURRENT PROCESSOR ONLY @V407594 00986000
- B NXTSTK LOOK FOR CHAINED CPEXBLOK @V407594 00987000
- STKOTHER CALL DMKSTKOP STACK FOR OTHER PROCESSOR ONLY @V407594 00988000
- B NXTSTK LOOK FOR CHAINED CPEXBLOK @V407594 00989000
- CALLSTK DS 0H STACK CPEXBLOCK FOR EITHER PROCR @V407594 00990000
- .NOAP4 ANOP **ANOP** 00991000
- STC R9,CPEXADD INSERT POSSIBLE ERROR FLAG 00992000
- CALL DMKSTKCP STACK THE CURRENT BLOK 00993000
- NXTSTK DS 0H @V407594 00994000
- LTR R1,R3 ANY MORE BLOKS ?? 00995000
- BNZ UNSTACK YES -- GO UNSTACK THEM 00996000
- UNSTCKA DS 0H @V408246 00997000
- LTR R6,R6 PCI? @V408246 00998000
- BNZ UNSTACK2 YES, FOREGO RELEASE UNTIL END @V408246 00999000
- UNSTACK1 DS 0H @VA10137 01000100
- L R0,IOBSTACK GET TOP OF IOBSTACK @VA10137 01000425
- ST R10,IOBSTACK AND PUSH IT 01001000
- ST R0,IOBMISC DOWN 01002000
- LM R2,R3,MODELNOP CLEAR OUT 01003000
- STM R2,R3,PAGESNS THE TIC @VM01167 01004000
- ST R1,PAGEIOB CLEAR POINTER TO SLOT-SORTED IOBLOKS 01005000
- MVI PAGESK+4,CC MAKE SURE PCI IS CLEARED @V408246 01006000
- UNSTACK2 LTR R10,R4 WERE THERE ANY SLOT-SORTED IOBLOK(S) ? 01007000
- BNZ GETCPEX YES -- GO PROCESS 01008000
- WTPGXIT DS 0H @V408246 01009000
- GOTO DMKDSPCH OTHERWISE, LEAVE 01010000
- EJECT 01011000
- * 01012000
- * HANDLE SERIOUS PAGING I/O ERRORS 01013000
- * 01014000
- * 01015000
- WTPGERR DS 0H @V408246 01016000
- CL R10,IOBLINK LAST IOBLOK ? @VA11208 01017000
- BE WTPGERRX YES @VA11208 01018000
- LA R0,IOBSIZE NO,RETURN @VA11208 01019000
- LR R1,R10 COPIED IOBLOCK @V408246 01020000
- CALL DMKFRET @V408246 01021000
- B WTPGXIT EXIT @V408246 01022000
- WTPGERRX DS 0H @V408246 01023000
- ICM R4,B'1111',PAGEIOB CHAINED IOBLOK POINTER @VA09024 01024100
- BZ WTPGERRB NONE @V408246 01025000
- LH R1,IOBRADD GET THE REAL DEVIVE ADDRESS @VA09024 01026100
- CALL DMKSCNRU GET RDEVBLOK ADDRESS FOR IOS @VA09024 01026200
- BNZ WTPGERRC SOMETHING IS SICK, RETURN @VA09024 01026300
- WTPGERRA DS 0H @VA09024 01026400
- MVC PAGESNS(7),MODELNOP NOP CCW @V408246 01036000
- MVI PAGESS,NOPCODE CHANGE POSSIBLE SK,SK TO SK,NOP @V408246 01037000
- NI PAGESK+4,255-8 RESET POSSIBLE PCI FLAG @V408246 01038000
- NI PAGESS+4,255-8 . . @V408246 01039000
- NI IOBSTAT,255-IOBFATAL RESET FATAL FLAG @V408246 01040000
- ST R9,PAGEIOB @V408246 01041000
- CALL DMKIOSQR AND RESCHEDULE INDIVIDUALLY @V408246 01042000
- LTR R10,R4 NEXT ON CHAIN? @V408246 01043000
- BZ WTPGXIT NONE @V408246 01044000
- L R4,PAGEIOB SAVE CHAIN POINTER @V408246 01045000
- B WTPGERRA REPEAT UNTIL END OF CHAIN @V408246 01046000
- WTPGERRB DS 0H @V408246 01047000
- L R1,IOBMISC CPEXBLOK POINTER FOR REQUEST @V408246 01048000
- L R5,CPEXR5 SWAPTABLE POINTER @V408246 01049000
- TM SWPFLAG,SWPRECMP NORMAL PAGING AREA? @V408246 01050000
- BNZ WTPGERRC NO, BYPASS FATAL SYSTEM ERROR @V408246 01051000
- * TESTING 01052000
- IC R9,PGERCTR INCREMENT @V408246 01053000
- LA R9,1(,R9) FATAL PAGE I/O COUNTER @V408246 01054000
- STC R9,PGERCTR @V408246 01055000
- C R9,F5 HAVE FIVE CONSECATIVE ERRORS @V408246 01056000
- * OCCURED? 01057000
- BH PERMERR YES - ISSUE DMKPAG415E MESSAGE @V408246 01058000
- WTPGERRC DS 0H @V408246 01059000
- SLR R9,R9 SET-UP I/O ERROR INDICATOR FOR @V408246 01060000
- * RETURN 01061000
- BCTR R9,0 I/O ERROR RETURN = -1 @V408246 01062000
- B GETCPEX REJOIN NORMAL CODE @V408246 01063000
- * 01064000
- * UNACCEPTABLE PAGING I/O ERROR ACTIVITY 01065000
- * 01066000
- * HERE IF PERMANENT PAGING ERROR CONDITION 01067000
- * ASSUME THAT INFO. IN 'IOBRADD' IS NOT VALID 01068000
- PERMERR EQU * @VA03787 01069000
- L R1,IOBMISC GET CPEXBLOK POINTER @VA03787 01070000
- L R5,CPEXR5 THEN GET SWPTABLE ENTRY @VA03787 01071000
- SR R8,R8 CLEAR REG 8 @VA03787 01072000
- IC R8,SWPCODE GET VOLUME CODE @VA03787 01073000
- SLL R8,3 MAKE IT INDEX FOR OWNED LIST @VA03787 01074000
- AL R8,=A(DMKSYSOW) POINT TO PROPER ENTRY @VA03787 01075000
- LH R8,OWNDRDEV-OWNDLIST(,R8) GET RDEVBLOK INDEX@VA03787 01076000
- SLL R8,3 CONVERT IT TO BYTES @VA03787 01077000
- AL R8,ARIODV NOW POINT TO THE RDEVBLOK @VA03787 01078000
- CALL DMKSCNRD GO FIND 'CUU' ADDRESS @VA03787 01079000
- CALL DMKCVTBH CONVERT IT TO HEX 01080000
- STCM R1,B'0111',PAGEDEV PUT DEVICE ADDR. IN THE MESSAGE 01081000
- LA R0,MSG415LN SIZE OF MESSAGE INTO R0 01082000
- LA R1,MSG415 ADDRESS OF MESSAGE INTO R1 01083000
- LA R2,PSW415 GET PAG WAIT STATE CODE @V407510 01084000
- GOTO DMKMCHST TERMINATE SYSTEM @V407510 01085000
- EJECT 01086000
- *. 01087000
- * C. OPERATION OF THE PAGING LOAD CALCULATOR 01088000
- * 1. STORE TOD CLOCK AND COMPUTE LENGTH OF RECORDING INTERVAL 01089000
- * 2. CONVERT THE TIME TO MICROSECONDS, INSURING THAT IT FITS IN 01090000
- * ONE WORD (31 BITS PLUS SIGN) 01091000
- * 3. OBTAIN PAGE-WAIT TIME OVER THE INTERVAL 01092000
- * 4. PROJECT PAGE-WAIT PERCENTAGE FOR NEXT INTERVAL 01093000
- * 5. CALCULATE THE PAGING RATE IN PAGES/SECOND, SAVE IN PSA 01094000
- * 6. CALCULATE THE RATIO OF STOLEN TO FLUSHED PAGES, AND STORE 01095000
- * IN PGSRATIO IN DMKPSA. 01096000
- * 7. RESET COUNTERS AND VALUES FOR THE START OF A NEW MEASURE- 01097000
- * MENT INTERVAL, AND RETURN TO MAINLINE CODE 01098000
- *. 01099000
- SPACE 2 01100000
- OVERHEAD EQU * HERE TO RE-CALCULATE PAGING OVERHEAD 01101000
- STM R10,R13,PAGSAVRG SAVE REGS @VM40121 01102000
- STCK DMKPAGSP REMEMBER END OF RECORDING PERIOD 01103000
- BC 3,DOWNWEGO CLOCK NOT FUNCTIONING @VA04301 01104000
- LM R0,R3,DMKPAGST GET START AND END OF RECORDING PERIOD 01105000
- LA R4,1 GET CONSTANT FOR ARITHMETIC 01106000
- SR R6,R6 CLEAR SHIFT COUNTER 01107000
- LA R7,100 GET CONSTANT FOR PERCENTAGE CALCULATIONS 01108000
- SLR R3,R1 CALCULATE LENGTH OF RECORDING PERIOD 01109000
- BC 11,*+6 ... 01110000
- SLR R2,R4 ... 01111000
- SLR R2,R0 ... 01112000
- SRDL R2,12 AND CONVERT TO MICROSECONDS 01113000
- LR R0,R2 SAVE THE ELAPSED TIME 01114000
- LR R1,R3 ... 01115000
- D R0,=F'10000' CONVERT TO 1/100'S OF A SECOND 01116000
- LTR R15,R1 SAVE AND TEST THE RESULT 01117000
- BP *+8 OK TO USE -- 01118000
- LA R15,1 SET MAXIMUM RATE 01119000
- L R1,DMKPAGIC GET NUMBER OF PAGIO'S DONE 01120000
- MR R0,R7 TIMES 100 01121000
- DR R0,R15 AND GET PAGING RATE 01122000
- L R15,PREFIXA OBTAIN CURRENT REAL PSA VALUE @VM40121 01123000
- STH R1,PAGERATE(R15) PAGE RATE TO ABSOLUTE 0 @V4M0121 01124000
- BAL R15,SHIFTER MAKE SURE THAT IT FITS IN ONE REGISTER 01125000
- SR R10,R10 INDEX TO MAIN PROC WAITSAVE VALUE@V4M0121 01126000
- SR R11,R11 PREFIX VALUE FOR REAL PSA @V4M0121 01127000
- LA R13,1 COUNTER - ONE FOR UP MODE @V4M0121 01128000
- TM APSTAT1,APUOPER APU OPERATIONAL ? @V4M0121 01129000
- BNO COMPSTAT NO - ONLY 1 PASS THRU CODE BELOW @V4M0121 01130000
- LA R13,2 YES - MAKE 2 PASSES THRU CODE @V4M0121 01131000
- * BELOW TO COMPUTE STATISTICS FOR 01132000
- * BOTH PROCESSORS. 01133000
- COMPSTAT DS 0H @VM00029 01133100
- TM APSTAT1,PROCIPL IS THIS THE IPL'ED PROCESSOR? @VMV0008 01134100
- BO COMPSTA2 YES, BRANCH @VM00029 01135100
- LA R10,8 NO - BEFORE COMPUTE PAGEING STATS@V4M0121 01136000
- * SET INDEX TO AP WORKSAVE VALUE. 01137000
- COMPSTA2 DS 0H @VM00029 01138100
- L R0,DMKPAGWS(R10) 1ST WORD OF SAVED PG WT TIME @VMH0012 01139000
- L R1,DMKPAGWS+N4(R10) 2ND WD OF SAVED PG WT TIME @VMH0012 01140000
- L R8,PAGEWAIT(R11) 1ST WORD OF CURRENT PG WT TOTAL@V4M0121 01141000
- L R9,PAGEWAIT+N4(R11) 2ND WORD OF PAGE WAIT TOTAL @V4M0121 01142000
- ST R8,DMKPAGWS(R10) SAVE PAGEWAIT FOR @VMH0012 01143000
- ST R9,DMKPAGWS+N4(R10) NEXT TIME @VMH0012 01144000
- SPACE 01145000
- SLR R1,R9 COMPUTE PAGE WAIT OVER INTERVAL 01146000
- BC 8+2+1,*+6 ... 01147000
- SLR R0,R4 .. 01148000
- SLR R0,R8 . 01149000
- SRDL R0,12 AND CONVERT TO MICROSECONDS 01150000
- SPACE 01151000
- LTR R1,R1 REMEMBER SETTING OF HIGH ORDER 01152000
- BALR R15,R0 BIT IN LOW ORDER REGISTER 01153000
- SPACE 01154000
- N R1,=XL4'7FFFFFFF' CLEAR HIGH ORDER BIT 01155000
- LR R5,R0 SAVE HIGH ORDER WORD 01156000
- MR R0,R7 MULTIPLY BY 100 FOR PERCENTAGE 01157000
- MR R4,R7 MULTIPLY HIGH ORDER WORD 01158000
- ALR R0,R5 AND ADD IN OVERFLOW 01159000
- SPM R15 WAS HIGH ORDER BIT ON ? 01160000
- BNM ALIGN NO -- 01161000
- SRL R7,1 ALIGN MULTIPLIER WITH MISSING BIT 01162000
- ALR R0,R7 AND ADD IN PARTIAL SUM 01163000
- ALIGN SRDL R0,0(R6) ALIGN WITH DIVISOR 01164000
- DR R0,R3 GET PAGING OVERHEAD PERCENTAGE 01165000
- LH R0,PAGELOAD(R11) GET PREVIOUS PAGE LOAD VALUE. @V4M0121 01166000
- ALR R0,R0 TIMES 2 01167000
- AH R0,PAGELOAD(R11) TIMES 3 @V4M0121 01168000
- ALR R1,R0 PLUS RECENT LOAD 01169000
- SRL R1,2 /4 FOR SMOOTHED AVERAGE 01170000
- STH R1,PAGELOAD(R11) AND SAVE IN EACH REAL PSA. @V4M0121 01171000
- X R10,F08 INVERT WAITSAVE INDEX @V4M0121 01172000
- L R11,PREFIXB ADDR OF OTHER PREFIX AREA @V4M0121 01173000
- BCT R13,COMPSTA2 COMPUTE PAGING STATISTICS FOR @VM00036 01174100
- * THE OTHER PROCESSOR. 01175000
- LM R10,R13,PAGSAVRG RESTORE CALLERS REQUIRED REGS @V4M0121 01176000
- SR R0,R0 CLEAR OUT 01177000
- STCK DMKPAGST REMEMBER START OF NEXT RECORDING PERIOD 01178000
- BC 12,CLOCKOK IS CLOCK FUNCTIONING? @VA04301 01179000
- DOWNWEGO GOTO DMKCVTAB CLOCK DAMAGED...ABEND CVT001 @VA04301 01180000
- CLOCKOK EQU * @VA04301 01181000
- L R15,DMKPAGIC GET NEXT RECORDING PERIOD 01182000
- BR R14 AND RETURN TO CALLER 01183000
- SPACE 01184000
- SHIFTER EQU * HERE TO TRUNCATE DIVISOR TO ONE WORD 01185000
- LTR R2,R2 ANY DATA IN HIGH ORDER WORD ?? 01186000
- BZ SHIFTER1 NO - INSURE NON-NEGATIVE 01187000
- SRDL R2,1 SHIFT ONE 01188000
- ALR R6,R4 AND COUNT NUMBER OF SHIFTS 01189000
- B SHIFTER CONTINUE 01190000
- SHIFTER1 LTR R3,R3 INSURE NON-NEGATIVE VALUE -- 01191000
- BCR 11,R15 IF NOT MINUS, EXIT 01192000
- SRL R3,1 OTHERWISE, SHIFT ONE MORE 01193000
- ALR R6,R4 BUMP SHIFT COUNT 01194000
- BR R15 AND EXIT 01195000
- SPACE 01196000
- PAGSAVRG DS 4F OVERHEAD REG SAVEAREA @V4M0121 01197000
- F08 DC F'08' BIT TO INVERT WAITSAVE INDEX @V4M0121 01198000
- SPACE 01199000
- DMKPAGWS DS 0F @VMH0012 01200000
- DC X'7FFFFFFF' WAITSAVE VALUE FOR MAIN PROC @V4M0121 01201000
- DC X'FFFFF000' @V4M0121 01202000
- DC X'7FFFFFFF' WAITSAVE VALUE FOR THE APU @V4M0121 01203000
- DC X'FFFFF000' @V4M0121 01204000
- EJECT 01205000
- MODELCCW DS 0D PROTOTYPE PAGING CCWS 01206000
- CCW 7,PAGESEEK-IOBLOK,CC,6 SEEK 01207000
- MODELSS CCW 35,PAGESECT-IOBLOK,CC,1 SET SECTOR @V2A2029 01208000
- CCW 49,PAGESEEK+2-IOBLOK,CC,5 SEARCH ID EQUAL 01209000
- CCW 8,PAGESRCH-IOBLOK,0,0 TIC *-8 01210000
- MODELRD CCW 0,0,CC,4096 READ/NOP PROTOTYPES 01211000
- MODELNOP CCW 4,0,SILI+SKIP,1 DUMMY SENSE TO END THE CHAIN 01212000
- SPACE 01213000
- * NOTE THAT A SENSE IS USED INSTEAD OF A NOP SO THAT RPS DEVICES WILL 01214000
- * NOT LOSE TRACK OF THE SECTOR 01215000
- SPACE 01216000
- MSG415 DC C'DMKPAG415E CONTINUOUS PAGING ERRORS FROM DASD XXX' 01217000
- MSG415LN EQU *-MSG415 LENGTH OF MESSAGE 01218000
- ORG *-3 01219000
- PAGEDEV DC X'000000' DASDI DEVICE CAUSING THE ERROR CONDITION 01220000
- ORG 01221000
- PGERCTR DC X'00' PAGE ERROR COUNTER. 01222000
- DS 0D 01223000
- PSW415 EQU X'0F' PAG WAIT STATE CODE @V407510 01224000
- SPACE 01225000
- SPACE 3 01226000
- MODEL1 EQU X'01' 2305 MODEL 1 01227000
- MODEL2 EQU X'02' 2305 MODEL 2 01228000
- PAGCYL24 EQU 24 24 PAGES PER CYLINDER (2305/3340)@VM01167 01229000
- PAGCYL32 EQU 32 32 PAGES PER CYLINDER (2314/2319)@VM01167 01230000
- PAGCYL57 EQU 57 57 PAGES PER CYLINDER (3330) @VM01167 01231000
- ONE EQU 1 @VM01167 01232000
- THREE EQU 3 @VM01167 01233000
- FOUR EQU 4 @V304498 01234000
- NOPCODE EQU 3 @VM01167 01235000
- TICOP EQU 8 @VM01167 01236000
- BIT7 EQU X'01' @VM01167 01237000
- BIT6 EQU X'02' @VM01167 01238000
- N4 EQU 4 INDEX TO 2ND WORD @V4M0121 01239000
- SPACE 2 01240000
- DMKPAGQ DC 2A(DMKPAGQ) QUEUE OF CPEXBLOKS FOR IN-TRANSIT PAGES 01241000
- SPACE 3 01242000
- SPACE 01243000
- DMKPAGST DC D'0' START OF PAGE LOAD MEASUREMENT PERIOD 01244000
- DMKPAGSP DC D'0' END OF PAGE LOAD MEASUREMENT PERIOD 01245000
- SPACE 01246000
- DMKPAGQR DC F'0' PAGE I/O COUNT FOR QUERY COMMAND @VA08859 01247000
- DMKPAGIC DC F'200' NUMBER OF PAGE I/O'S TO MEASURE 01248000
- PAGIOCTR DC F'200' NUMBER OF PAGE IO'S LEFT IN CURRENT PERIOD 01249000
- DMKPAGPS DC F'0' COUNT OF PAGING START I/O'S 01250000
- DMKPAGCC DC F'0' COUNT OF CALLS TO DMKPAG 01251000
- SPACE 01252000
- IOBSTACK DC A(0) STACK OF PRE-FORMATTED IOBLOKS 01253000
- DMKPAGSK EQU IOBSTACK ALLOW LOG-OFF TO REDUCE NUMBERS @V408246 01254000
- DMKPAGDP DC X'FF' SWITCH FOR PCI ON ALL 2305 @VA07060 01255000
- * REQUESTS 01256000
- SPACE 01257000
- LASTSLOT DS XL1 Highest slot number on 3350/75/80HRC106DK 01257100
- DYNFRET DC F'0' NO OF CALLS TO DMKFRET FOR IOBLOKS 01258000
- * WHICH WERE IN THE DYNAMIC PAGING AREA 01259000
- SPACE 01260000
- DMKPAGLO DC A(*-*) "DMKFRELO" MINUS LENGTH OF ONE PAGING IOBLOK 01261000
- DMKPAGHI DC A(*-*) "DMKFREHI" 01262000
- SPACE 01263000
- PAGESOUT DC F'0' COUNT OF PENDING PAGE WRITES 01264000
- SEC23051 DC AL1(2,32,62) SECTOR VALUES FOR 2305 M1 @VM01167 01265000
- SEC23052 DC AL1(3,57,111) SECTOR VALUES FOR 2305 M2 @VM01167 01266000
- SECT3330 DC AL1(2,44,86) SECTOR VALUES FOR 3330 @VM01167 01267000
- SECT3340 DC AL1(2,32) SECTOR VALUES FOR 3340 @VM01167 01268000
- SECT3350 DC AL1(2,33,63,94) SECTOR VALUES FOR 3350 @V304498 01269000
- SECT3375 DC AL1(4,27,51,75,98,122,145,169) HRC106DK 01269100
- SECT3380 DC AL1(5,26,46,67,87,108,128,149,170,190) HRC106DK 01269200
- EJECT 01270000
- LTORG 01271000
- EJECT 01272000
- COPY IOBLOKS 01273000
- COPY RBLOKS 01274000
- COPY CORE 01275000
- COPY SAVE 01276000
- COPY ALLOC 01277000
- IOBLOK DSECT CONTINUE THE DSECT 01278000
- * ANY CHANGES IN PAGESIZE MUST ALSO BE REFLECTED 01279000
- * IN DMKUSO AND DMKMON 01280000
- ORG , MAKE SURE WE'RE AT THE END @V200820 01281000
- PAGECCWS DS 6D SPACE FOR PAGING CCWS 01282000
- ORG PAGECCWS CCW DEFINITIONS 01283000
- PAGESK DS D SPACE FOR SEEK 01284000
- PAGESS DS D SPACE FOR SET SECTOR 01285000
- PAGESRCH DS D SPACE FOR SEARCH 01286000
- PAGESTIC DS F SPACE FOR TIC @V2A2029 01287000
- PAGEIOB DS F POINTER TO SLOT SORTED IOBLOK 01288000
- PAGERW DS D SPACE FOR READ/WRITE 01289000
- PAGEPRI EQU PAGERW+5 SPACE FOR REQUEST PRIORITY @V408246 01290000
- PAGESNS DS D SPACE FOR SENSE/TIC @VM01167 01291000
- ORG PAGESNS+7 @VM01167 01292000
- PAGESRCD DS X SPACE FOR SLOT NUMBER @VA04482 01293000
- PAGESEEK DS D SPACE FOR SEEK ARGUMENT AND SECTOR 01294000
- ORG PAGESEEK+2 @VM01167 01295000
- PAGECYL DS H SPACE FOR CYLINDER ADDRESS @VM01167 01296000
- PAGEHEAD DS H SPACE FOR HEAD ADDRESS @VM01167 01297000
- PAGERCD DS X SPACE FOR RECORD NUMBER @VM01167 01298000
- PAGESECT DS X SECTOR NUMBER 01299000
- PAGESIZE EQU (*-IOBLOK)/8 SIZE OF EXTENDED IOBLOK IN DOUBLE WORDS 01300000
- EJECT 01301000
- PSA 01302000
- COPY VMBLOK 01303000
- COPY DEVTYPES 01304000
- COPY EQU 01305000
- END 01306000
ibm/vm370-lib/cp/dmkpag.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator