ibm:vm370-lib:cp:dmkiog.assemble_src
Table of Contents
DMKIOG Source
References
- Fixes Applied : 10
- This Source Date : Monday, January 22, 1979
- Last Fix ID : [HRC075DK]
Source Listing
- DMKIOG.ASSEMBLE.txt
- IOG TITLE 'DMKIOG (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 00002000
- *. 00003000
- * MODULE NAME - DMKIOG 00004000
- * 00005000
- * 00006000
- * FUNCTION - 00007000
- * PAGABLE ERROR RECORDING MODULE. CALLED AT INITIALIZATION 00008000
- * TIME TO LOCATE THE ERROR RECORDING DEVICE,LOCATE THE 00009000
- * LAST RECORDINGS MADE ON THE CYLINDERS, 00010000
- * AND SET THE IN-CORE POINTERS TO THE PROPER VALUES. 00011000
- * INITIALIZATION FOR 'RMS' FUNCTIONS IS PERFORMED 00012000
- * AFTER FIRST MAKING A TEST TO DETERMINE IF WE ARE 00013000
- * CP RUNNING UNDER CP. RMS FUNCTIONS WILL NOT BE 00014000
- * ACTIVATED FOR A VIRTUAL CP ENVIRONMENT. 00015000
- * THE MODULE IS ALSO USED TO ERASE THE RECORDING AREAS. 00016000
- * 00017000
- * ATTRIBUTES - 00018000
- * PAGABLE,SERIAL-REUSABLE,CALLED VIA SVC. 00019000
- * 00020000
- * 00021000
- * ENTRY POINTS - 00022000
- * 00023000
- * DMKIOGF1 - INITIALIZATION ENTRY, RMS INIT AND 00024000
- * LOCATOR FOR STARTING PAGE ON RECORDING 00025000
- * DMKIOGAP - INITIALIZATION ENTRY, RMS INIT 00026000
- * FOR ATTACHED PROCESSOR 00027000
- * DMKIOGF2 - TO ERASE EITHER THE ERROR RECORDS OR 00028000
- * BOTH THE ERROR AND FRAME RECORDS FROM 00029000
- * THE ERROR RECORDING AREA. 00030000
- * 00034000
- * ENTRY CONDITIONS - 00035000
- * DMKIOGF1 -NONE 00036000
- * DMKIOGAP -NONE 00037000
- * DMKIOGF2 - GPR2 = ERASE REQ PARAMATER. 00038000
- * 00040000
- * EXIT CONDITIONS - RETURN TO CALLER. 00041000
- * 00042000
- * CALLS TO OTHER ROUTINES - 00043000
- * DMKPGTVG - TO GET VIRTUAL PAGES. 00044000
- * DMKPGTVR - TO RELEASE VIRTUAL PAGES. 00045000
- * DMKSCNRU - TO GET IPL DEV. RDEVBLOK ADDRESS. 00046000
- * DMKQCNWT - TO WRITE MSGS. TO THE OPERATOR. 00047000
- * DMKRPAGT - TO READ A PAGE INTO CORE. 00048000
- * DMKRPAPT - TO WRITE A PAGE TO RECORDING CYLINDER. 00049000
- * DMKERMSG - TO WRITE OUT ERROR MESSAGES 00050000
- * DMKPTRLK - TO LOCK A PAGE. 00051000
- * DMKPTRUL - TO UNLOCK A PAGE. 00052000
- * DMKIOHFR - TO INITIALIZE FRAME RECORDS ON A 303X. 00052100
- * 00053000
- * EXTERNAL REFERENCES - 00054000
- * DMKIOERP - 'RECORDING IN PROCESS' SWITCH. 00055000
- * DMKIOEEP - RECORDING AREA IN-CORE POINTER (CCP). 00056000
- * DMKIOEMX - MAXIMUM NO. OF PAGES PER CYL . 00057000
- * DMKIOENI - 90 FULL PAGE CNT ON IPL DEV TYP. 00058000
- * DMKIOEES - 'RECORDING AREA FULL' FLAG. 00059000
- * DMKIOEHS - DASD START OF ERROR RECORDS ON 00060000
- * RECORDING CYLINDERS (CCPD FORMAT). 00061000
- * DMKIOEFR - 'FRAME RECORDS ON CYLINDERS' FLAG. 00062000
- * DMKIOHIF - DMKIOH'S INFOFLAG. 00062100
- * 00063000
- * REGISTER USAGE - 00064000
- * GPR0-1 SCRATCH 00065000
- * GPR2 ERASE PARAMATERS 00066000
- * GPR3-9 SCRATCH 00067000
- * GPR 10 IOBLOK POINTER 00068000
- * GPR11 VMBLOK POINTER 00069000
- * GPR12 BASE 00070000
- * GPR13 SAVE AREA POINTER 00071000
- * GPR14-15 LINK REGS 00072000
- * 00073000
- * NOTES - 00074000
- * IF THE ERROR RECORDING CYLINDERS ARE FOUND TO BE 00075000
- * UNFORMATTED AT IPL TIME, A MSG IS SENT TO THE 00076000
- * OPERATOR AND THE CYLINDERS ARE FORMATTED . 00077000
- * 00077100
- * IF THE PROCESSOR IS A 4331 OR 4341, THEN THERE ARE 00077200
- * NO EXTENDED LOGOUT AREAS OR REGION CODE. 00077300
- * 00078000
- * OPERATION - DMKIOGF1 00079000
- * 1. DETERMINE IF WE ARE RUNNING AS A VIRTUAL CP, IF WE 00080000
- * ARE PUT 'WAIT' BIT ON IN THE MCH NEW PSW AND SKIP 00081000
- * TO STEP 4. 00082000
- * 2. CALL DMKFREE TO RESERVE CORE STORAGE FOR LOGOUT, 00083000
- * MCHAREA, AND CPEXBLOK FOR EACH PROCESSOR. 00084000
- * 3. INITIALIZE THE MCH LOGOUT POINTERS AND CONTROL 00085000
- * REGISTERS 14 AND 15. 00086000
- * 4. FIND STARTING CYL FOR ERROR RECORDING SPECIFIED 00087000
- * AT SYSGEN IN DMKSYSER. 00088000
- * 5. DETERMINE THE IPL DEVICE (SYSIPLDV). 00089000
- * 6. CALL DMKSCNRU TO GET RDEVBLOK ADDRESS FOR IPL DEVICE 00090000
- * 7. SET THE VALUES FOR 'MAXPAGES' AND 'NINETY PRCNT FULL' 00091000
- * AS DETERMINED FROM RDEVTYPE. 00092000
- * 8. CALL DMKPGTVG TO GET A VIRTUAL PAGE. 00093000
- * 9. CALL DMKRPAGT TO READ A PAGE INTO CORE. 00094000
- * 10.IF THE FORMAT OF THE PAGE IS NOT VALID, GO TO 00095000
- * STEP 14. 00096000
- * 11. IF THE PAGE IS NOT FULL, GO TO THE NEXT STEP. IF 00097000
- * IT IS FULL, BUMP THE PAGE NUMBER IN THE CCPD TO 00098000
- * THE NEXT PAGE. IF END OF THE RECORDING CYLS 00099000
- * IS REACHED, GO TO STEP 19. IF NOT, READ IN 00100000
- * THE PAGE & REPEAT THIS STEP UNTIL A USABLE 00101000
- * PAGE IS FOUND OR END OF REC. AREA IS REACHED 00102000
- * 12. SET THE PAGE IN USE FLAG AND WRITE THE PAGE BACK 00103000
- * OUT TO THE DASD. 00104000
- * SET UP THE IN-STORAGE POINTERS AND EXIT. 00105000
- * 14. SET UP THE FLAGS IN THE FIRST PAGE TO INDICATE A 00106000
- * FORMAT IS IN PROCESS AND WRITE THE FIRST PAGE 00107000
- * BACK TO THE DASD. 00108000
- * 15. READ IN THE REST OF THE PAGES FROM REC. CYLS 00109000
- * INITIALIZE, AND WRITE BACK OUT. 00110000
- * 16. READ THE FIRST PAGE BACK IN AND INITIALIZE WITH THE 00111000
- * NORMAL FORMAT, AND WRITE BACK OUT TO THE DASD. 00112000
- * 17. IF THIS IS A 'CLEARF' OPERATION, OR IF THIS 00113000
- * IS INITIAL FORMATTING WHEN INITIALIZING A 00114000
- * 3033/3032/3031 PROCESSOR, CALL DMKIOGFR TO 00115000
- * FORMAT FRAME RECORDS. 00116000
- * 18. IF THIS IS A CLEAR OPERATION, GO TO STEP 3 00117000
- * IN THE DESCRIPTION FOR DMKIOGF2. IF NOT, 00118000
- * SET UP THE IN STORAGE POINTERS AND EXIT. 00119000
- * AND EXIT. 00120000
- * 19. SET UP RECORDING AREA FULL MSG;CALL DMKQCNWT 00121000
- * TO SEND THE MSG. SET THE AREA FULL FLAG 00122000
- * IN DMKIOE. EXIT. 00123000
- * 00124000
- * OPERATION - DMKIOGAP 00125000
- * 1. CALL DMKFREE TO RESERVE CORE STORAGE FOR LOGOUT, 00126000
- * MCHAREA, AND CPEXBLOK FOR EACH PROCESSOR. 00127000
- * 2. INITIALIZE THE MCH LOGOUT POINTERS AND CONTROL 00128000
- * REGISTERS 14 AND 15. 00129000
- * 00130000
- * 00131000
- * OPERATION - DMKIOGF2 00132000
- * 00133000
- * 1. CHECK THE PARAMETERS. IF THEY ARE NOT VALID, EXIT. 00134000
- * 2. SET UP THE CCPD FOR THE 1ST PAGE OF RECORDING 00135000
- * AREA AND READ IT IN. FLAG THE PAGE TO 00136000
- * INDICATE A FORMAT IN PROCESS AND WRITE IT 00137000
- * BACK OUT. IF 'CLEAR' WAS SPECIFIED, USER 00138000
- * MEANS TO CLEAR ONLY ERROR RECORDS FROM THE 00139000
- * RECORDING CYLINDERS. CHECK FOR FRAME RECORDS 00140000
- * ON THE CYLS; IF SO, READ PAGES LOOKING FOR 00141000
- * 1ST RECORDING PAGE WHICH DOES NOT CONTAIN 00142000
- * FRAME RECORDS. WHEN SUCH A PAGE IS FOUND, 00143000
- * OR IF 'CLEARF' HAD BEEN SPECIFIED, 00144000
- * GO TO STEP 15 OF THE DESCRIPTION OF DMKIOGF1 TO 00145000
- * FORMAT THE REST OF THE CYLINDER. 00146000
- * 3. TURN OFF 'FORMATTING' FLAG IN 1ST RECORDING 00147000
- * PAGE; SET UP IN-STORAGE POINTERS AND EXIT. 00148000
- * 00149000
- * 00150000
- * 00229000
- * MESSAGES - 00230000
- * 00231000
- * DMKIOG551E ERROR RECORDING AREA FULL; RUN CPEREP 00232000
- * 00233000
- * DMKIOG552I FORMATTING ERROR RECORDING AREA 00234000
- * 00235000
- * DMKIOG553I ERROR RECORDING AREA CLEARED; USER 'USER' 00236000
- * 00237000
- * DMKIOG558I FATAL I/O ERROR; ERROR RECORDING DISABLED 00238000
- * 00239000
- * DMKIOG550I ERROR RECORDING AREA 90 PERCENT FULL; RUN CPEREP 00240000
- * 00241000
- *. 00250000
- COPY OPTIONS @V407510 00251000
- EJECT 00252000
- DMKIOG CSECT 00253000
- MODULEID DC CL8'DMKIOG' 00254000
- EXTRN DMKSCNRU,DMKPGTVG 00255000
- EXTRN DMKPGTVR,DMKRPAPT,DMKRPAGT 00256000
- EXTRN DMKIOERP 00257000
- EXTRN DMKERMSG @V305435 00258000
- EXTRN DMKIOEFR @V5088AA 00259000
- EXTRN DMKIOECT @V5088AA 00260000
- EXTRN DMKIOEES @V5088AA 00261000
- EXTRN DMKIOEHS @V5088AA 00262000
- EXTRN DMKIOEEP @V5088AA 00263000
- EXTRN DMKIOECE @VA10241 00263100
- EXTRN DMKIOEIF @VA10241 00263200
- EXTRN DMKSYSCT @V5088AA 00264000
- EXTRN DMKPTRLK @V5088AA 00267000
- EXTRN DMKIOETY 00268000
- EXTRN DMKIOEMX 00269000
- EXTRN DMKIOENI 00270000
- EXTRN DMKSIX60 00271000
- EXTRN DMKSEV70 00272000
- EXTRN DMKEIG80 00273000
- EXTRN DMKCCHCF 00274000
- EXTRN DMKCCH60 00275000
- EXTRN DMKCCHSZ 00276000
- EXTRN DMKCCHMX 00277000
- EXTRN DMKPTRAN @V407510 00278000
- EXTRN DMKIOSQR @V5088AA 00279000
- EXTRN DMKPTRUL @V5088AA 00280000
- EXTRN DMKCVTAB @V5088AA 00281000
- EXTRN DMKIOHFR @V60B7AA 00281100
- USING VMBLOK,R11 00282000
- USING PSA,R0 00283000
- USING SAVEAREA,R13 00284000
- USING *,R12 00285000
- SPACE 3 00286000
- ********************************************************************** 00287000
- * * 00288000
- * ROUTINE TO LOCATE LAST RECORDING ON CE CYLINDER * 00289000
- * AND SET THE IN-CORE POINTERS TO PROPER VALUES. * 00290000
- * IF THE ERROR RECORDING AREA IS NOT PROPERLY FORMATTED@V5088AA 00291000
- * A MSG. WILL BE SENT TO THE OPERATOR AND THE AREA WILL @V5088AA 00292000
- * BE FORMATTED. THE FIRST EIGHT BYTES OF EACH BLOCK CONTAIN * 00293000
- * THE CONTROL INFO AND ARE THE ONLY BYTES FORMATTED. * 00294000
- * RECORDING IS DONE IN 4096 BYTE BLOCKS. RECORDS ARE VARIABLE * 00295000
- * LENGTH WITHIN THE BLOCK. * 00296000
- * * 00297000
- * CALLED BY DMKCPI * 00298000
- * * 00299000
- * * 00300000
- ********************************************************************** 00301000
- SPACE 2 00302000
- DMKIOGF1 RELOC 00303000
- STIDP CPUID SAVE THE CPU MODEL AND SERIAL NO. 00304000
- CLI CPUVERSN,X'FF' IS THIS A VIRTUAL MACHINE ? 00305000
- BNE NOTVIRT NO, LETS GET ON WITH IT @V508690 00306000
- OI MCNPSW+1,WAIT TURN ON THE WAIT BIT IN @V508690 00307000
- * MACHINE CHECK NEW PSW. 00308000
- NOTVIRT EQU * @V508690 00309000
- LA R5,16 SETUP TO EXERCISE 15 CHANNELS 00310000
- ISSUEINS EQU * 00311000
- LR R4,R5 R5 IS CHANNEL NUMBER PLUS 1 ... @VMD0103 00312000
- BCTR R4,0 AND R4 IS CHANNEL NUMBER. @VMD0103 00313000
- LA R7,0(R4,R4) CHANNEL NUMBER * 2. @VMD0103 00314000
- A R7,ARIOCT R7 IS INDEX INTO CHANNEL TABLE. @VMD0103 00315000
- LH R7,0(0,R7) PICK UP HALFWD OFFSET TO RCHBLOK.@VMD0103 00316000
- LTR R7,R7 OFFSET INDICATES NO RCHBLOK? @VMD0103 00317000
- BM NORCH1 NO RCHBLOK. @VMD0103 00318000
- A R7,ARIOCH OFFSET + ORIGIN = RCHBLOK ADDR. @VMD0103 00319000
- NORCH1 EQU * FROM HERE ON, R7 IS ADDR OF @VMD0103 00320000
- * RCHBLOK OR IS -1. 00321000
- LA R6,CONF(R4) GET THE PTR TO THE CHANNEL TABLE.@VMD0103 00322000
- MVI 0(R6),X'FF' TENTATIVELY SET NO CHANL SUPPORT.@VMD0103 00323000
- L R0,FFS TENTATIVELY SET FLAG INDICATING @VMD0103 00324000
- * STIDC FAILS. 00325000
- SLL R4,8 ADJUST CHANL NUMBER FOR STIDC. @VMD0103 00326000
- STIDC 0(R4) STORE CHANNEL IDENTIFICATION. @VMD0103 00327000
- SRL R4,8 CHANNEL AGAIN IN LOW ORDER BYTE. @VMD0103 00328000
- BNZ STIDCSAV STIDC FAILED, LEAVE FFS IN R0. @VMD0103 00329000
- L R0,CHANID GET CHANNEL ID LEFT BY STIDC. @VMD0103 00330000
- IC R8,CHANID GET THE CHANNEL TYPE 00331000
- IC R9,CHANID+1 GET THE CHANNEL MODEL 00332000
- N R8,=X'000000F0' CLEAR ALL BITS EXCEPT TYPE 00333000
- N R9,=X'0000000F' CLEAR ALL BITS EXCEPT MODEL 00334000
- AR R8,R9 GET THE INDEX VALUE FOR TABLE 00335000
- LA R8,CHAN(R8) GET CHANNEL TYPE ID. 00336000
- MVC 0(1,R6),0(R8) SAVE THE CHANNEL TYPE ID. 00337000
- CLI 0(R8),X'F5' IS THIS A 2860 SELECTOR ? 00338000
- BNE TEST2880 NO, GO TEST FOR 2880 00339000
- OI TYPEM,X'40' INDICATE 2860 SUPPORT 00340000
- B RESET370 GO RESET 370 CHANNEL FLAG 00341000
- TEST2880 EQU * 00342000
- CLI 0(R8),X'F8' IS THIS A 2880 SELECTOR ? 00343000
- BNE TEST2881 NO, GO TEST FOR 2880 00344000
- OI TYPEM,X'80' INDICATE 2880 SUPPORT 00345000
- TEST2881 EQU * 00346000
- CLI 0(R8),X'F7' IS THIS A 2880 BLOCK MULTIPLEX ? 00347000
- BNE TEST2870 NO, GO TEST FOR 2870 00348000
- OI TYPEM,X'80' INDICATE 2880 SUPPORT 00349000
- TEST2870 EQU * 00350000
- CLI 0(R8),X'F6' IS THIS A 2870 BYTE MULTIPLEX ? 00351000
- BNE STIDCSAV NO. @VMD0103 00352000
- OI TYPEM,X'20' INDICATE 2870 SUPPORT 00353000
- RESET370 LTR R7,R7 DOES THE RCHBLOK EXIST? @VMD0103 00354000
- BM NORCH2 NO, NO RCHBLOK. @VMD0103 00355000
- USING RCHBLOK,R7 @VMD0103 00356000
- NI RCHTYPE,X'FF'-RCH370 RESET THE CHANNEL'S 370 @VMD0103 00357000
- * INSTRUCTION FLAG. 00358000
- STIDCSAV LTR R7,R7 DOES THE RCHBLOK EXIST? @VMD0103 00359000
- BM NORCH2 NO, NO RCHBLOK. @VMD0103 00360000
- ST R0,RCHSTIDC PUT ID FROM STIDC OR F'S INTO @VMD0103 00361000
- * RCHBLOK. 00362000
- DROP R7 @VMD0103 00363000
- NORCH2 EQU * @VMD0103 00364000
- CHANGEID EQU * 00365000
- BCT R5,ISSUEINS GO GET NEXT CHANNEL 00366000
- MVZ CONF(16),CONF-1 CHANGE THE HIGH ORDER FOUR BITS 00367000
- L R4,=V(DMKCCHCF) GET THE POINTER TO THE CONFIGURATION 00368000
- * TABLE POINTER 00369000
- MVC 0(16,R4),CONF SAVE THE CHANNEL ID. TYPES IN 00370000
- * CCH CONTROL PROGRAM 00371000
- MVI PARMSAVE,X'00' WILL BE USED TO INDICATE WHETHER @V5088AA 00372000
- * FRAME RECORDS REQUIRE INIT'ZATION@V5088AA 00373000
- BAL R7,IOGMCHIN INITIALIZE MACHINE CHECK AREA @V407510 00374000
- * FOR MAIN PROCESSOR @V407510 00375000
- * CHECK HANDLER COMMUNICATION AREA 00376000
- L R6,=V(DMKCCHMX) GET THE ADDRESS OF THE CCH RECORD LENGTH 00377000
- * SAVE AREA 00378000
- B MCH004(R3) GO TO MODEL DEPENDED CODE 00379000
- B PASTDAVE GO INITIALIZE CP 00380000
- MCH004 EQU * 00381000
- B MC158155 GO GET SPACE FOR CCH RECORD @V407510 00382000
- B MC135138 GO TO THE 135/138 SUPPORT @V386298 00383000
- B MC145148 GO TO THE 145/148 SUPPORT @V386298 00384000
- B MC158155 GO TO THE 155 & 158 SUPPORT 00385000
- B MC168165 GO TO THE 165 & 168 SUPPORT 00386000
- B MC303X GOTO THE COMMON 3033/3032/3031 @V5088AA 00387000
- * SUPPORT ROUTINE @V5088AA 00388000
- B MC331341 GO TO 4331/4341 PROCESSING @V60A6B6 00388100
- MC135138 EQU * SUPPORT FOR 135/138 @V386298 00389000
- LA R0,X'6C' LENGTH OF THE CCH RECORD @V5088AA 00390000
- STH R0,0(R6) SAVE LENGTH @V5088AA 00391000
- * AND I/O EXTENDED LOGOUT AREA 00392000
- LA R1,X'100' GET THE ADDRESS OF THE I/O EXTENDED 00393000
- * LOGOUT AREA 00394000
- LA R4,22 GET THE LENGTH OF THE I/O LOGOUT AREA 00395000
- B INTECSW GO INITIALIZE THE ECSW 00396000
- MC145148 EQU * SUPPORT FOR THE 145/148 @V386298 00397000
- LA R0,X'B4' LENGTH OF THE CCH RECORD @V5088AA 00398000
- STH R0,0(R6) SAVE LENGTH @V5088AA 00399000
- * AND I/O EXTENDED LOGOUT AREA 00400000
- LA R0,96 GET THE LENGTH OF THE EXTENDED LOGOUT 00401000
- BAL R3,FREE GO GET THE SPACE FOR THE LOGOUT 00402000
- B INTECSW GO INITIALIZE THE ECSW 00403000
- MC158155 EQU * 00404000
- LA R0,X'54' LENGTH OF THE CCH RECORD @V5088AA 00405000
- STH R0,0(R6) SAVE LENGTH @V5088AA 00406000
- SR R1,R1 CLEAR THE I/O EXTENDED LOGOUT POINTER 00407000
- B INTECSW GO INITIALIZE THE ECSW @V5088AA 00408000
- MC303X EQU * COMMON 3033/3032/3031 SUPPORT @V5088AA 00409000
- LA R0,X'2D4' LENGTH OF THE CCH RECORD @V5088AA 00410000
- STH R0,0(R6) SAVE LENGTH @V5088AA 00411000
- LA R0,640 GET LENGTH OF EXTENDED LOGOUT @V5088AA 00412000
- BAL R3,FREE GO GET SPACE FOR LOGOUT AREA @V5088AA 00413000
- OI PARMSAVE,INITYES FRAMES NEED TO BE INITIALIZED @V5088AA 00414000
- INTECSW EQU * 00415000
- MVI ECSWLOG,X'FF' INITIALIZE THE ECSW 00416000
- B PASTDAV1 GO SAVE THE I/O EXTENDED LOGOUT POINTER 00417000
- MC168165 EQU * 00418000
- TM TYPEM,X'80' IS THIS A 2880 CHANNEL ? 00419000
- BZ C287060 NO, GO TO 2870 &2860 SUPPORT 00420000
- LA R0,X'C0' LENGTH OF THE CCH RECORD + IOEL@V5088AA 00421000
- STH R0,0(R6) SAVE LENGTH @V5088AA 00422000
- LA R0,112 GET THE LENGTH OF THE I/O EXTENDED 00423000
- * LOGOUT AREA 00424000
- BAL R3,FREE GO GET THE SPACE THE THE I/O EXTENDED 00425000
- * LOGOUT 00426000
- B PASTDAV1 GO SAVE THE I/O EXTENDED LOGOUT POINTER 00427000
- MC331341 EQU * PROCESS 4331/4341 @V60A6B6 00427100
- LA R0,X'54' LENGTH OF THE CCH RECORD @VA10477 00427110
- STH R0,0(R6) SAVE LENGTH @VA10477 00427130
- SR R1,R1 CLEAR I/O EXTENDED LOGOUT PTR. @VA10477 00427150
- MVI ECSWLOG,X'FF' INITIALIZE THE ECSW @V60A6B6 00427200
- B PASTDAVE GO SETUP RECORDING CYLINDERS @V60A6B6 00427300
- SPACE 2 00428000
- ********************************************************************** 00429000
- FREE EQU * 00430000
- LR R4,R0 SAVE THE LENGTH OF THE AREA 00431000
- A R0,F7 PUT LENGTH ON A DOUBLEWORD @VA00881 00432000
- * BOUNDARY 00433000
- SRL R0,3 DIVIDE BY 8 00434000
- CALL DMKFREE GO GET THE STORAGE 00435000
- BR R3 RETURN TO IN LINE CODE 00436000
- ********************************************************************** 00437000
- EJECT 00438000
- ***************************************************************@V407510 00439000
- * @V407510 00440000
- * ROUTINE TO OBTAIN STORAGE FOR MACHINE CHECK @V407510 00441000
- * RECORD, EXTENDED LOGOUT AREA, AND CPEXBLOK. @V407510 00442000
- * THE MACHINE CHECK COMMUNICATION AREA IS ALSO @V407510 00443000
- * INITIALIZED. @V407510 00444000
- * @V407510 00445000
- ***************************************************************@V407510 00446000
- IOGMCHIN DS 0H MACHINE CHECK INITIALIZATION @V407510 00447000
- USING MCHAREA,R5 SETUP ADDRESSABILITY FOR MACHINE @V407510 00448000
- * CHECK HANDLER COMMUNICATION AREA @V407510 00449000
- LH R9,CPUMCELL GET THE LENGTH OF THE EXTENDED @V407510 00450000
- * LOGOUT AREA @V407510 00451000
- LA R6,MCHLEN1 GET LN OF DAMAGE ASSESSMENT AREA @V407510 00452000
- LA R0,MCHFIX(R9,R6) CALCULATE THE TOTAL LENGTH @V407510 00453000
- BAL R3,FREE GO GET THE SPACE FOR THE RECORD @V407510 00454000
- SLL R0,X8 MULTIPLY LENGTH BY 8 @V407510 00455000
- LR R2,R1 SET UP STARTING ADDRESS @V407510 00456000
- LR R3,R0 SET UP LENGTH @V407510 00457000
- LR R4,R2 SET UP FOR OVERLAP @V407510 00458000
- SR R5,R5 SET UP TO ZERO STORAGE @V407510 00459000
- MVCL R2,R4 CLEAR STORAGE JUST OBTAINED @V407510 00460000
- LA R5,MCHFIX(R9,R1) GET ADDRESS OF DAMAGE @V407510 00461000
- * ASSESSMENT AREA @V407510 00462000
- ST R5,AMCHAREA SAVE ADDRESS OF DAMAGE @V407510 00463000
- * ASSESSMENT AREA @V407510 00464000
- STH R6,MCHDAMLN SAVE LENGTH OF DAMAGE @V407510 00465000
- * ASSESSMENT AREA @V407510 00466000
- MVC MCHPROCA,IPUADDR SAVE PROCESSOR ADDRESS @V407510 00467000
- LTR R9,R9 ANY EXTENDED LOGOUT AREA? @V407510 00468000
- BZ LOGOUT NO, SET ADDRESS TO ZERO @V407510 00469000
- LA R9,MCHFIX(R1) GET THE BEGINNING ADDRESS OF @V407510 00470000
- * THE EXTENDED LOGOUT AREA WILL @V407510 00471000
- LOGOUT DS 0H @V407510 00472000
- ST R9,SAVEWRK7 SAVE THE BEGINNING ADDRESS @V407510 00473000
- LCTL R15,R15,SAVEWRK7 RESTORE CONTROL REGISTER 15 @V407510 00474000
- ST R1,MCHREC SAVE THE POINTER TO THE MACHINE C@V407510 00475000
- * RECORD @V407510 00476000
- LA R0,8*CPEXSIZE GET THE SIZE OF THE CPEXBLOK @V407510 00477000
- BAL R3,FREE GO GET THE SPACE FOR THE CPEXBLOK@V407510 00478000
- SLL R0,X8 MULTIPLY LENGTH BY 8 @V407510 00479000
- LR R2,R0 GET LENGTH @V407510 00480000
- BCTR R2,0 SUBTRACT ONE FROM LENGTH @V407510 00481000
- EX R2,CLEAR CLEAR CPEXBLOK @V407510 00482000
- ST R1,MCHCPEX SAVE THE CPEXBLOK POINTER @V407510 00483000
- LH R2,CPUMODEL GET THE MODEL NUMBER @V407510 00484000
- SR R3,R3 CLEAR REGISTER 3 @V407510 00485000
- LH R4,NOTSUPPD GET THE ID STOPPER @V407510 00486000
- MCH002 EQU * @V407510 00487000
- CH R2,MODMODEL(R3) COMPARE MODEL NUMBER WITH @V407510 00488000
- BE MCH003 YES, GO SAVE MODEL ID @V407510 00489000
- LA R3,TABSZ(R3) UPDATE MODEL NUMBER TABLE PTR @V407510 00490000
- CH R4,MODMODEL(R3) COMPARE MODEL NO. WITH STOPPER @V407510 00491000
- BNE MCH002 NO, GO COMPARE NEXT MODEL NO. @V407510 00492000
- MCH003 EQU * @V407510 00493000
- LH R3,MODMODID(R3) GET THE MODEL ID. @V407510 00494000
- STC R3,MCHMODEL SAVE THE MODEL ID IN THE MACHINE @V407510 00495000
- * CHECK HANDLER COMMUNICATION AREA @V407510 00496000
- CH R2,MO155 IS THIS MODEL 155? @V407510 00497000
- BE SETMODE YES, RECORD SOFT ERRORS @V407510 00498000
- CH R2,MO165 IS THIS MODEL 165? @V407510 00499000
- BNE IOGMCHEX NO, DO NOT RECORD SOFT ERRORS @V407510 00500000
- SETMODE DS 0H RECORD SOFT ERRORS @V407510 00501000
- OI APSTAT4,RECMODE SET RECORDING INDICATOR FOR REC.@VA09862 00502100
- IOGMCHEX DS 0H @V407510 00503000
- BR R7 RETURN TO CALLER @V407510 00504000
- CLEAR XC ZERO(ZERO,R1),ZERO(R1) CLEAR STORAGE @V407510 00505000
- ZERO EQU 0 CONSTANT OF 0 @V407510 00506000
- TABSZ EQU 4 SIZE OF MODEL NO. ENTRIES @V407510 00507000
- X8 EQU 3 SHIFT VALUE TO MULTIPLY BY 8 @V407510 00508000
- ***************************************************************@V407510 00509000
- SPACE 00510000
- ***************************************************************@V407510 00511000
- * @V407510 00512000
- * THIS ENTRY POINT IS INVOKED TO INITIALIZE @V407510 00513000
- * THE MACHINE CHECK RECORD, EXTENDED LOGOUT AREA, @V407510 00514000
- * CPEXBLOK, AND MCHAREA FOR THE ATTACHED PROCESSOR. @V407510 00515000
- * @V407510 00516000
- ***************************************************************@V407510 00517000
- DMKIOGAP RELOC @V407510 00518000
- STIDP CPUID SAVE THE CPU MODEL & SERIAL NO. @V407510 00519000
- BAL R7,IOGMCHIN INITIALIZE MACHINE CHECK AREA @V407510 00520000
- * FOR ATTACHED PROCESSOR @V407510 00521000
- LM R0,R11,SAVEREGS RESTORE CALLERS REGS @V407510 00522000
- SVC RETURN EXIT @V407510 00523000
- RETURN EQU 12 RETURN SVC NUMBER @V407510 00524000
- SPACE 00525000
- C287060 EQU * 00526000
- SR R1,R1 CLEAR THE I/O EXTENDED LOGOUT POINTER 00527000
- TM TYPEM,X'60' IS THIS A 2860 OR 2870 CHANNEL ? 00528000
- BZ PASTDAV1 NO, GO SAVE I/O EXTENDED LOGOUT POINTER 00529000
- MVI 0(R6),X'68' SAVE THE LENGTH OF THE CCH RECORD AND 00530000
- * I/O EXTENDED LOGOUT AREA 00531000
- LA R1,X'130' GET THE POINTER TO THE I/O EXTENDED 00532000
- * LOGOUT 00533000
- LA R4,22 GET THE LENGTH OF THE I/O LOGOUT AREA 00534000
- PASTDAV1 EQU * 00535000
- ST R1,IOELPNTR SAVE THE POINTER TO THE I/O EXTENDED 00536000
- LTR R1,R1 IS THE ADDRESS ZERO ? 00537000
- BZ PASTDAV2 YES, GO GET DEPENDENT MODULE 00538000
- L R15,=V(DMKCCHSZ) GET ADDRESS OF IOEL SIZE FIELD @V5088AA 00539000
- STH R4,0(,R15) SAVE I/O EXTENDED LOGOUT LENGTH @V5088AA 00540000
- LR R2,R1 'TO' ADDRESS (IOEL) @V5088AA 00541000
- LR R3,R4 LENGTH TO MOVE @V5088AA 00542000
- LR R4,R2 'FROM' ADDRESS FOR MOVE @V5088AA 00543000
- L R5,F255 PAD CHARACTER @V5088AA 00544000
- SLL R5,24 PAD CHAR. = X'FF'; LENGTH=0 @V5088AA 00545000
- MVCL R2,R4 PROPAGATE X'FF'S THRUOUT IOEL @V5088AA 00546000
- L R5,AMCHAREA RESTORE MCH AREA BASE @V5088AA 00547000
- PASTDAV2 EQU * 00548000
- CLI MCHMODEL,MODEL165 IS THIS A 165 OR 168 ? 00549000
- BNE PASTDAVE NO, GO FIND STARTING CYL FOR RECORDING 00550000
- L R3,=V(DMKCCH60) GET THE ADDRESS OF THE SAVE AREA FOR 00551000
- * CHANNEL ADDRESSES 00552000
- LA R6,3 SETUP COUNT VALUE 00553000
- SR R4,R4 CLEAR WORK REGISTER 00554000
- INTERG EQU * 00555000
- L R1,MOD1658C(R4) GET ADDRESS OF CHANNEL MODULE 00556000
- LTR R1,R1 IS THERE AN ADDRESS FOR CHANNEL MODULE ? 00557000
- BZ CCHCHAN NO, GO GET NEXT ADDRESS 00558000
- * GET CHANNEL SUPPORT MODULE @V407510 00559000
- TRANS 2,1,OPT=(BRING,LOCK,DEFER,SYSTEM),AFFINITY @V407510 00560000
- ST R2,0(R4,R3) SAVE THE ADDRESS IN CCH CONTROL 00561000
- * ROUTINE 00562000
- CCHCHAN EQU * 00563000
- LA R4,4(R4) UPDATE THE SAVE AREA 00564000
- BCT R6,INTERG GO GET NEXT MODULE 00565000
- DROP R5 DROP THE BASE REGISTER FOR MCH 00566000
- B PASTDAVE GO SET UP RECORDING CYLINDERS 00567000
- SPACE 00568000
- PASTDAVE L R15,=V(DMKSYSER) FIND STARTING CYL FOR RECORDING 00569000
- LH R1,4(,R15) Get CUU of ERR area HRC075DK 00569500
- LH R15,0(R15) ERRORS. 00570000
- STH R15,CECYL SET RECORDING AREA IN-CORE PTR @V5088AA 00571000
- CALL DMKSCNRU CALLSCANNER TO GET RDEVBLOK PTR 00573000
- ********************************************************************** 00574000
- * SCANNER RETURNS PTR TO RDEVBLOK IN GPR8 * 00575000
- ********************************************************************** 00576000
- USING RDEVBLOK,R8 00577000
- LH R15,RDEVCODE R8 POINTS TO RDEVBLOK-PICK UP RDEVCODE 00578000
- STC R15,CECYLTYP ONLY 1 BYTE IS USED AT PRESENT. 00579000
- STC R15,WORKTYP 00580000
- L R4,=V(DMKIOETY) ADDRESS OF 'D' PART OF ERROR @VMV0030 00580100
- * RECORDING AREA CCPD 00580200
- STC R15,0(R4) SAVE DEVICE TYPE @VMV0030 00580300
- CLI RDEVTYPE,TYP3330 IS IT A 3330 ? 00581000
- BE SET3330 YES 00582000
- CLI RDEVTYPE,TYP3350 IS IT A 3350 ? @V304498 00583000
- BE SET3350 YES - @V304498 00584000
- CLI RDEVTYPE,TYP3375 Is it a 3375 ? HRC106DK 00584100
- BE SET3375 Yes - HRC106DK 00584200
- CLI RDEVTYPE,TYP3380 Is it a 3380 ? HRC106DK 00584300
- BE SET3380 Yes - HRC106DK 00584400
- CLI RDEVTYPE,TYP2305 IS IT A 2305 ? 00585000
- BE SET2305 YES 00586000
- CLI RDEVTYPE,TYP3340 IS IT A 3340 ? @V2A2029 00587000
- BE SET3340 YES - @V2A2029 00588000
- MVI MAXPAGE,MAX2314 SET MAX NO. PAGES PER CYL 2314/2319 00589000
- B NINETYPC @V5088AA 00590000
- SET3350 MVI MAXPAGE,MAX3350 SET MAX NO. PAGES PER CYL 3350 @V304498 00591000
- B NINETYPC @V5088AA 00592000
- SET3375 MVI MAXPAGE,MAX3375 Set max no. pages per cyl 3375 HRC106DK 00592100
- B NINETYPC HRC106DK 00592200
- SET3380 MVI MAXPAGE,MAX3380 Set max no. pages per cyl 3380 HRC106DK 00592300
- B NINETYPC HRC106DK 00592400
- SET3330 MVI MAXPAGE,MAX3330 SET MAX NO. PAGES PER CYL 3330 00593000
- B NINETYPC @V5088AA 00594000
- SET3340 EQU * SET MAX NO. PAGES PER CYL 3340 @V2A2029 00595000
- SET2305 MVI MAXPAGE,MAX2305 SET MAX NO. PAGES PER CYL 2305 00596000
- EJECT 00597000
- NINETYPC EQU * @V5088AA 00598000
- L R2,=V(DMKSYSCT) COUNT OF RECORDING CYLINDERS @V5088AA 00599000
- LH R2,0(R2) RETRIEVE COUNT OF RECORDING CYLS @V5088AA 00600000
- L R4,=V(DMKIOECT) ADDRESS TO SAVE CYL COUNT @V5088AA 00601000
- STH R2,0(R4) SAVE CYLINDER COUNT @V5088AA 00602000
- LR R4,R2 MOVE COUNT FOR MANIPULATION @V5088AA 00603000
- AH R4,CECYL ADD START CYL OF RECORDING AREA @V5088AA 00604000
- BCTR R4,0 SUBTRACT ONE FOR END ADDRESS @V5088AA 00605000
- STH R4,MAXCYL SAVE END 'CC' OF RECORDING AREA @V5088AA 00606000
- STH R4,LASTCYL SAVE ENDING 'CC' FOR 90% CHECK @V5088AA 00607000
- SRDL R2,32 PREPARE FOR MULTIPLICATION @V5088AA 00608000
- SLR R4,R4 CLEAR THE REGISTER @V5088AA 00609000
- IC R4,MAXPAGE NUMBER OF PAGES PER CYLINDER +1 @V5088AA 00610000
- BCTR R4,0 SUBTRACT 1 FOR NO. PAGES PER CYL @V5088AA 00611000
- MR R2,R4 MULTIPLY PAGES/CYL BY NO. OF CYLS@V5088AA 00612000
- LA R4,10 FIND 10% OF TOTAL NO. OF PAGES @V5088AA 00613000
- DR R2,R4 DIVIDE TOTAL NUMBER OF PAGES IN @V5088AA 00614000
- * RECORDING AREA BY 10 @V5088AA 00615000
- LTR R2,R2 IS REMAINDER ZERO? @V5088AA 00616000
- BZ *+8 IF YES, OK @V5088AA 00617000
- LA R3,1(R3) IF NOT, ROUND UP THE 10% VALUE @V5088AA 00618000
- IC R4,MAXPAGE NO. OF PAGES ON ONE CYLINDER @V5088AA 00619000
- SR R4,R3 SUBTRACT IN ORDER TO GET THE @V5088AA 00620000
- * PAGE WHICH, ON THE LAST RECORDING@V5088AA 00621000
- * CYL, WILL MEAN AREA IS 90% FULL. @V5088AA 00622000
- STC R4,PAGE90PC SAVE FOR USE BY RECORDING RTNS @V5088AA 00623000
- L R4,=V(DMKIOEMX) PICK UP MAX PAGE PTR IN RES CODE@V60B7AA 00623100
- MVC 0(1,R4),MAXPAGE MOVE IN MAX NO. OF PAGES FOR @V60B7AA 00623200
- * DEVICE 00623300
- L R4,=V(DMKIOENI) PICK UP ADDRESS OF 90% FULL LIM.@V60B7AA 00623400
- MVC 0(1,R4),PAGE90PC MOVE IN CORRECT COUNT @V60B7AA 00623500
- FINDIOR LA R4,SETOBRS ADDRESS OF 'FIND' RETURN POINT @V5088AA 00624000
- ST R4,FINDRET SET RETURN POINT FROM SEARCH 00625000
- MVC WORKCYL(3),CECYL PUT IO-OBR PARMS IN WORK AREA 00626000
- DROP R8 00627000
- SPACE 2 00628000
- ********************************************************************** 00629000
- * LOCATE THE FIRST RECORD ON DESIGNATED RECORDING CYLINDER * 00630000
- * AND CHECK THAT IT IS IN THE CORRECT FORMAT * 00631000
- ********************************************************************** 00632000
- SPACE 1 00633000
- FINDREC EQU * 00634000
- CALL DMKPGTVG GET A VIRTUAL MEMORY PAGE ADDRESS 00635000
- ********************************************************************** 00636000
- * ADDRESS WILL BE RETURNED IN REG 1 * 00637000
- ********************************************************************** 00638000
- ST R1,IOEVMPAD SAVE VIRT MEM PAGE ADDRESS 00639000
- FIND2 EQU * 00640000
- BAL R14,FMTREAD GO READ A 4096 BYTE RECORD 00641000
- ********************************************************************** 00642000
- * * 00643000
- * ON RETURN REGISTER 2 CONTAINS REAL ADDRESS OF BUFFER * 00644000
- * * 00645000
- ********************************************************************** 00646000
- ST R2,IOEREALA SAVE REAL ADDRESS OF BUFFER 00647000
- USING RECPAG,R2 00648000
- CLC WORKCYL(4),RECCCPD CORRECT CCPD FOR PAGE ?? 00649000
- BNE FORMAT IF NOT - GO FORMAT 00650000
- TM RECFLAG2,RECPAGFM IN A FORMAT OPERATION 00651000
- BO FORMAT YES - DO IT ALL OVER AGAIN 00652000
- TM RECFLAG1,RECPAGIU+RECPAGFR+RECPAGFL SHOULD HAVE ONE 00653000
- BZ FORMAT CAUSE IF WE DON'T , WE FORMAT 00654000
- MVI INFOFLAG,X'00' CLEAR OUT FLAG BYTE @VD00160 00655000
- TM RECFLAG1,RECPAGFA ARE FRAME RECORDS ON THIS PAGE@VD00160 00656000
- BZ FINDLOOP OK IF NOT @VD00160 00657000
- OI INFOFLAG,YESFRAME REMEMBER FRAMES ARE PRESENT @VD00160 00658000
- MVC SAVELAST,WORKCYL SAVE THIS FIRST CCPD VALUE @VA07861 00658100
- SPACE 00659000
- FINDLOOP EQU * 00660000
- TM INFOFLAG,YESFRAME WERE FRAME RECORDS FOUND ON @VD00160 00665000
- * THE RECORDING CYLINDERS? 00666000
- BZ FIND3 NO --CONTINUE @VD00160 00667000
- TM RECFLAG1,RECPAGFA ARE THERE FRAMES ON THIS PAGE?@VD00160 00668000
- * (WE ARE LOOKING FOR THE FIRST 00669000
- * NON-FRAME RECORD IN ORDER TO FILL 00670000
- * IN DMKIOEHS.) 00671000
- BNZ FIND3 YES -- THEN THIS IS NOT A PAGE @VD00160 00672000
- * THAT CONTAINS ERROR RECORDS. 00673000
- L R2,=V(DMKIOEFR) ADDRESS OF FRAME INDICATOR @VD00160 00674000
- MVI 0(R2),YESFRAME INDICATE FRAMES ARE ON REC. CYLS @VD00160 00675000
- L R2,=V(DMKIOEHS) ADDRESS OF CCPD OF 1ST ERROR REC@VD00160 00676000
- MVC 0(4,R2),SAVELAST SAVE CCPD OF LAST FRAME RECORD @VA07861 00677100
- * (EREP WILL USE THIS TO READ THE 1ST 00678100
- * ERROR RECORD.) 00678125
- MVI INFOFLAG,X'00' TURN OFF FLAG SO THAT WE DON'T @VD00160 00679000
- * COME THROUGH HERE AGAIN. 00680000
- L R2,IOEREALA LOAD REAL PAGE ADDRESS @VA08278 00680050
- FIND3 TM RECFLAG1,RECPAGFR CLEARED PAGE? @VA07861 00680100
- BO FINDEXIT YES - LET'S USE IT @VA07861 00680120
- TM RECFLAG1,RECPAGFL IN USE BUT NOT FULL? @VA07861 00680140
- BZ FINDEXIT YES - OK TO USE THIS ONE @VA07861 00680160
- SLR R2,R2 ZERO REGISTER 2 @VA07861 00681100
- ICM R2,B'0111',WORKCYL LOAD LAST CYL & PAGE NUMBER @V5088AA 00682000
- STCM R2,B'0111',SAVELAST SAVE THIS CCPD - IT MAY BE @VA07861 00682100
- * THE LAST PAGE TO CONTAIN FRAME RECORDS. 00682125
- LA R2,1(R2) BUMP PAGE NUMBER BY ONE @V5088AA 00683000
- STC R2,WORKPAGE AND STORE IT 00684000
- CLC WORKPAGE(1),MAXPAGE HAVE WE REACHED THE END 00685000
- BL FINDREAD OK--NOT AT END OF CYLINDER @V5088AA 00686000
- CLC WORKCYL(3),MAXCYL ARE WE AT END OF LAST CYL? @V5088AA 00687000
- BNL CYLFULL YES, RECORDING AREA IS FULL @V5088AA 00688000
- SRL R2,8 ISOLATE 'CC' PART OF CURRENT ADDR@V5088AA 00689000
- LA R2,1(R2) INCREMENT CYL NUMBER @V5088AA 00690000
- STH R2,WORKCYL STORE UPDATED WORK ADDRESS @V5088AA 00691000
- MVI WORKPAGE,X'01' RESET 'P' TO 1ST PAGE ON NEW CYL @V5088AA 00692000
- FINDREAD BAL R14,FMTREAD READ PAGE IN @V5088AA 00693000
- B FINDLOOP GO BACK AND LOOK AT THIS ONE 00694000
- SPACE 00695000
- FINDEXIT EQU * 00696000
- MVI RECFLAG1,RECPAGIU SET PAGE IN USE 00697000
- BAL R3,FMTWRITE OUTPUT THE PAGE 00698000
- L R3,FINDRET LOAD RETURN ADDRESS 00699000
- BR R3 AND GO BACK 00700000
- SPACE 00701000
- ********************************************************************** 00702000
- * * 00703000
- * SET RECORDING AREA STARTING CYLINDER AND PAGE @V5088AA 00704000
- * CECYL POINTS TO FIRST AVAILABLE ERROR RECORD 'CCP' @V5088AA 00705000
- * * 00706000
- ********************************************************************** 00707000
- SPACE 2 00708000
- SETOBRS MVC CECYL(3),WORKCYL LET IT BE DONE 00709000
- L R15,=V(DMKIOECE) ADD. OF CECYL @VA10241 00709100
- MVC 0(3,R15),CECYL MOVE IN CECYL @VA10241 00709200
- B IOEXIT ALL DONE 00710000
- EJECT 00711000
- ********************************************************************** 00712000
- * * 00713000
- * FORMAT WILL WRITE A 12 BYTE CONTROL FIELD AS THE FIRST 12 * 00714000
- * BYTES IN EVERY 4096 BYTE BLOCK. * 00715000
- * BYTES 1-2=CYLINDER * 00716000
- * BYTE 3 =PAGE NO. (BLOCK OR PHYSICAL RECORD NUMBER) * 00717000
- * BYTE 4 =DEVICE CODE * 00718000
- * BYTE 5-6=NEXT AVAIL. SPACE THAT CAN BE USED IN BLOCK * 00719000
- * BYTE 7 =PAGE 'IN-USE' IND (00=EMPTY, 80=IN-USE@V5088AA 00720000
- * BYTE 8 = PAGE SKIPPED INDICATOR. * 00721000
- * BYTES 9-12=LAST RECORD IND OR SIZE OF VARIABLE RECORD * 00722000
- * * 00723000
- * * 00724000
- ********************************************************************** 00725000
- SPACE 2 00726000
- FORMAT EQU * 00727000
- MVI RECFLAG2,RECPAGFM SET FORMATTING FLAG 00728000
- MVC RECCCPD(4),WORKCYL SET CCPD 00729000
- MVC RECNXT(2),INITFMT PAGE ONE STUFF 00730000
- MVI RECFLAG1,0 ZIP USE FLAGS 00731000
- SLR R0,R0 NO VARIABLE MESSAGE TEXT @V5088AA 00732000
- SLR R1,R1 NO VARIABLE MESSAGE TEXT @V5088AA 00733000
- LA R2,552 MESSAGE DMKIOG552I @V305435 00734000
- ICM R2,B'0100',=C'I' INFORMATION MESSAGE @V305435 00735000
- FORMSGOK BAL R3,CALLERM CALL MESSAGE WRITTER @V305435 00736000
- LA R14,FMTFINI GET RETURN ADDRESS @V305435 00737000
- ST R14,FMTEXIT SAVE IT @V305435 00738000
- B FMTWRTPG OUTPUT FIRST PAGE @V305435 00739000
- SPACE 3 00740000
- ********************************************************************** 00741000
- * * 00742000
- * ROUTINE TO FORMAT ERROR RECORDING AREA @V5088AA 00743000
- * * 00744000
- ********************************************************************** 00745000
- SPACE 2 00746000
- FMTLOOP MVC 0(4,R2),WORKCYL MOVE IN CCPD 00747000
- MVC 4(8,R2),INITFMT MOVE IN THE GOODIES 00748000
- BAL R3,FMTWRITE WRITE IT OUT 00749000
- FMTPGINC EQU * 00750000
- ICM R2,B'0111',WORKCYL PICK UP CYL AND PAGE POINTER @V5088AA 00751000
- LA R2,1(R2) BUMP IT BY 1 00752000
- STC R2,WORKPAGE SAVE PTR 00753000
- CLC WORKPAGE(1),MAXPAGE DID WE HIT END OF CYL ? 00754000
- BNE FMTRD NOT AT END OF A CYLINDER @V5088AA 00755000
- CLC WORKCYL(3),MAXCYL AT END OF LAST CYLINDER? @V5088AA 00756000
- BE FMTOUT YES, AT END OF RECORDING AREA @V5088AA 00757000
- SRL R2,8 ISOLATE 'CC' PART OF CURRENT ADDR@V5088AA 00758000
- LA R2,1(R2) INCREMENT CYLINDER TO NEXT ONE @V5088AA 00759000
- STH R2,WORKCYL STORE UPDATED CYLINDER NUMBER @V5088AA 00760000
- MVI WORKPAGE,X'01' UPDATE 'P' TO 1ST PAGE ON NEW CYL@V5088AA 00761000
- FMTRD BAL R14,FMTREAD GO READ ANOTHER PAGE @V5088AA 00762000
- B FMTLOOP FORMAT THIS PAGE 00763000
- SPACE 5 00764000
- ********************************************************************** 00765000
- * * 00766000
- * RETURN HERE WHEN FORMAT OF AREA IS COMPLETE @V5088AA 00767000
- * * 00768000
- ********************************************************************** 00769000
- FMTOUT L R2,=V(DMKIOEFR) ADDR. OF FRAME RECORD INDICATOR @V5088AA 00770000
- MVI 0(R2),NOFRAMES NO FRAME RECS ARE IN REC. AREA @V5088AA 00771000
- TM PARMSAVE,INITYES MUST WE INITIALIZE FRAME RECS? @V5088AA 00772000
- BZ EXITFMT NO, DONE WITH FORMATTING @V5088AA 00773000
- L R15,=V(DMKIOEHS) ADDRESS OF HDRSTART FIELD -- @V5088AA 00774000
- * SLOT FOR FIRST ERROR RECORD TO GO@V5088AA 00775000
- MVC 0(4,R15),F0 ZERO THIS FIELD--WILL BE UPDATED @V5088AA 00776000
- * BY DMKIOGFR AS APPROPRIATE @V5088AA 00777000
- CALL DMKIOHFR GO INITIALIZE FRAME RECORDS @V60B7AA 00778100
- EXITFMT L R14,FMTEXIT CALLER'S RETURN ADDRESS @V5088AA 00779000
- BR R14 00780000
- * 00781000
- FMTFINI EQU * 00782000
- L R3,=V(DMKSYSER) ADDR. OF START OF REC. AREA @V5088AA 00783000
- * NOTE: MUST USE DMKSYSER VALUE @V5088AA 00784000
- * SINCE CECYL MAY HAVE BEEN UPDATED@V5088AA 00785000
- * BY DMKIOGFR AND IF WE CHANGE IT @V5088AA 00786000
- * THEN DMKIOEEP WILL BE WRONG. @V5088AA 00787000
- LH R3,0(R3) RETRIEVE 'CC' PART OF ADDRESS @V5088AA 00788000
- STH R3,WORKCYL UPDATE CURRENT 'CC' ADDRESS @V5088AA 00789000
- MVI WORKPAGE,X'01' RESET PAGE NUMBER TO ONE 00790000
- BAL R14,FMTREAD READ PAGE ONE IN 00791000
- TM RECFLAG1,RECPAGFA ARE FRAME RECS ON THIS PAGE? @V5088AA 00792000
- BZ FMTPAGDN NO, GO INITIALIZE PAGE HDR @V5088AA 00793000
- MVI RECFLAG2,RECPAGDN TURN OFF 'FORMATTING' FLAG. @V5088AA 00794000
- * THE REST OF THE HDR WAS INIT. @V5088AA 00795000
- * BY DMKIOGFR. @V5088AA 00796000
- B *+10 @V5088AA 00797000
- FMTPAGDN MVC RECNXT(8),INITFMT SET FLAGS AND FENCE @V5088AA 00798000
- BAL R3,FMTWRITE WRITE IT BACK OUT 00799000
- DROP R2 00800000
- IOEXIT SR R0,R0 00801000
- ST R0,IOEREALA 00802000
- ST R0,IOEVMPAD 00803000
- SR R2,R2 CLEAR PARM REG 00804000
- CALL DMKRPAGT,PARM=SYSTEM CLEAR PAGE REF 00805000
- CALL DMKPGTVR RELEASE THE VIRTUAL MEMORY SPACE 00806000
- L R4,=V(DMKIOEEP) GET RECORDING ADDRESS CCPD @V5088AA 00807000
- MVC 0(3,R4),CECYL MOVE CYL, PAGE, AND TYPE FOR @V60B7AA 00808100
- * RECORDING AREA 1ST AVAIL. SPACE @V5088AA 00809000
- EXIT RETURN TO CALLER @V305435 00814000
- SPACE 1 00815000
- FMTREAD ST R14,SAVE14 00816000
- L R0,WORKCYL SET RECORD CCPD 00817000
- CALL DMKRPAGT,PARM=SYSTEM+BRING,AFFINITY @V407510 00818000
- L R14,SAVE14 00819000
- BC 8,0(R14) RETURN IF OK 00820000
- GIVENEWS SLR R0,R0 INDICATE NO VARIBLE DATA @V305435 00821000
- SLR R1,R1 ... @V305435 00822000
- LA R2,558 MESSAGE DMKIOG558I @V305435 00823000
- ICM R2,B'0100',=C'I' INFORMATION MESSAGE @V305435 00824000
- BAL R3,CALLERM OUTPUT THE ERROR MESSAGE @V305435 00825000
- B LIGHTOUT TURN OFF RECORDING AND EXIT. 00826000
- * DMKFREE - TO OBTAIN A BLOCK OF STORAGE 00827000
- FMTWRITE EQU * 00828000
- L R1,IOEVMPAD 00829000
- L R0,WORKCYL 00830000
- CALL DMKRPAPT,PARM=SYSTEM,AFFINITY @V407510 00831000
- BC 8,0(R3) RETURN IF NO ERRORS 00832000
- B GIVENEWS GO SEND ERROR MSG 00833000
- * 00834000
- CYLFULL SLR R0,R0 NO VARIABLE MESSAGE TEXT @V5088AA 00835000
- SLR R1,R1 NO VARIABLE MESSAGE TEXT @V5088AA 00836000
- LA R2,551 MESSAGE DMKIOG551E @V305435 00837000
- ICM R2,B'0100',=C'E' ERROR MESSAGE @V5088AA 00838000
- L R4,=V(DMKIOEES) I/O SWITCH @V305435 00839000
- CYLMSGOK BAL R3,CALLERM CALL MESSAGE WRITTER @V305435 00840000
- MVI 0(R4),X'FF' TURN OFF (OBR|MCH) SWITCH @V305435 00841000
- B IOEXIT NO - RETURN TO CALLER @V305435 00842000
- SPACE 00843000
- FMTWRTPG EQU * 00844000
- BAL R3,FMTWRITE OUTPUT PAGE ONE 00845000
- B FMTPGINC NOW GO DO THE REST 00846000
- EJECT 00847000
- ********************************************************************** 00848000
- * * 00849000
- * THIS ENTRY POINT IS INVOKED TO RESET OR CLEAR THE ERROR * 00850000
- * RECORDING CYLINDERS TO CONTAIN BYTE COUNTS OF RESET VALUES. * 00851000
- * AN IN-CORE POINTER IS THEN UPDATED TO POINT TO THE * 00852000
- * START OF THE RECORDING AREAS. * 00853000
- * * 00854000
- * PARAMETER IS PASSED TO THIS ROUTINE IN REGISTER 2. * 00855000
- * R2=01 ERROR RECORDS ONLY @V5088AA 00856000
- * R2=02 ERROR RECORDS AND FRAME RECORDS @V5088AA 00857000
- * * 00858000
- ********************************************************************** 00859000
- SPACE 2 00860000
- DMKIOGF2 RELOC 00861000
- SWITCH @V407510 00862000
- STC R2,PARMSAVE SAVE ERASE PARAMETERS @V60B7AA 00863100
- TM PARMSAVE,CLR+CLEARF VALID ERASE PARAMETER? @V5088AA 00864000
- BNZ ERASE YES @V5088AA 00865000
- LM R0,R11,SAVEREGS RESTORE CALLERS REGS 00866000
- SVC 12 EXIT 00867000
- SPACE 1 00868000
- ********************************************************************** 00869000
- * SET SWITCH 'RECORDING IN PROCESS' IS ON WHILE ERASE IS * 00870000
- * BEING DONE TO ELIMINATE LOST RECORDINGS. * 00871000
- * THIS WILL ALLOW ERRORS TO BE QUED UNTIL ERASE IS COMPLETE * 00872000
- ********************************************************************** 00873000
- ERASE L R10,=V(DMKIOEFR) ADDRESS OF FRAME INDICATOR @V5088AA 00874000
- IC R10,0(R10) PICK UP THE IOEFR VALUE @V5088AA 00875000
- STC R10,IOEFRSAV SAVE THE PRESENT INDICATION @V5088AA 00876000
- L R10,=V(DMKSYSER) ADDR. OF START OF REC. AREA @V5088AA 00877000
- LH R10,0(R10) RETRIEVE 'CC' PART OF ADDRESS @V5088AA 00878000
- STH R10,CECYL START OF ERROR RECORDING AREA @V5088AA 00879000
- L R15,=V(DMKIOECE) ADD. OF CECYL @VA10241 00879100
- MVC 0(3,R15),CECYL MOVE IN CECYL @VA10241 00879200
- MVI CEPAGE,X'01' INITIALIZE THE CURRENT 'P' @V5088AA 00880000
- MVC WORKCYL(3),CECYL INITIALIZE THE CURRENT 'CC' @V5088AA 00881000
- BAL R10,ERASINIT 00882000
- LA R14,ERASDONE PICK UP RETURN ADDRESS @V5088AA 00883000
- ST R14,FMTEXIT STOW IT 00884000
- B FMTLOOP 00885000
- ********************************************************************** 00886000
- * * 00887000
- * * 00888000
- * RECORDING CYLINDERS ARE FORMATTED AT THIS POINT @V5088AA 00889000
- * * 00890000
- * * 00891000
- ********************************************************************** 00892000
- ERASDONE L R4,=V(DMKIOEIF) ADD. OF INFOFLAG @VA10241 00893120
- TM 0(R4),FULLNOW IS AREA NOW FILLED WITH FRAME @V60B7AA 00893300
- * RECORDS? 00893400
- BO FMTFINI DON'T CLEAR 'FULL' FLAG IF SO @V5088AA 00894000
- TM PARMSAVE,CLR WAS THIS A 'CLEAR' OPERATION? @V5088AA 00895000
- BZ CLRIOEES 00896000
- L R4,=V(DMKIOEFR) ADDRESS OF FRAME INDICATOR @V5088AA 00897000
- MVC 0(1,R4),IOEFRSAV IF THIS IS A 'CLEAR' OPERATION,@V5088AA 00898000
- * THEN THERE MAY STILL BE FRAMES @V5088AA 00899000
- * ON THE REC. CYLS. RESTORE FRAME @V5088AA 00900000
- * INDICATOR TO ITS VALUE AT ENTRY @V5088AA 00901000
- * TO 'CLEAR' FUNCTION. @V5088AA 00902000
- CLRIOEES EQU * @V5088AA 00903000
- L R4,=V(DMKIOEES) PICK UP SWITCH 00904000
- MVI 0(R4),X'00' CLEAR CYL FULL INDICATOR 00905000
- XC SAVEWRK2(L'SAVEWRK2*2),SAVEWRK2 CLEAR MSG. AREA @VMD0156 00906000
- LA R0,L'SAVEWRK2*2 LENGTH OF VARIABLE MSG. TEXT @V5088AA 00907000
- LA R1,SAVEWRK2 AND ITS ADDRESS @V305435 00908000
- LA R2,553 MESSAGE DMKIOG553I @V305435 00909000
- ICM R2,B'0100',=C'I' INFORMATION MESSAGE @V305435 00910000
- MVC SAVEWRK2(L'SAVEWRK2*2),VMUSER SHOW WHO CLEARED @V5088AA 00911000
- BAL R3,CALLERM WRITE OUT MESSAGE @V305435 00912000
- B FMTFINI FINISH UP FORMATTING @V5088AA 00913000
- SPACE 3 00914000
- SPACE 4 00915000
- ERASINIT CALL DMKPGTVG GET A VIRTUAL MEMORY PAGE ADDRESS. 00916000
- ********************************************************************** 00917000
- * * 00918000
- * ADDRESS RETURNED IN REGISTER 1 * 00919000
- * * 00920000
- ********************************************************************** 00921000
- ST R1,IOEVMPAD SAVE IT 00922000
- BAL R14,FMTREAD 00923000
- ********************************************************************** 00924000
- * * 00925000
- * REGISTER 2 CONTAINS ADDRESS OF BUFFER ON RETURN FROM READ. * 00926000
- * * 00927000
- ********************************************************************** 00928000
- ST R2,IOEREALA SAVE IT 00929000
- USING RECPAG,R2 BASE ADDRESS FOR RECORDING PAGE @V5088AA 00930000
- MVC RECCCPD(4),WORKCYL PAGE ONE CCPD 00931000
- MVI RECFLAG2,RECPAGFM FLAG CYLINDER FORMATTING 00932000
- TM PARMSAVE,CLR CLEAR ONLY ERROR RECORDS? @V5088AA 00933000
- BNO ERASFRMS NO, CLEAR ALL RECORDS @V5088AA 00934000
- TM RECFLAG1,RECPAGFA REQUEST IS TO CLR ERR. RECS-- @V5088AA 00935000
- * ARE FRAMES IN THIS 1ST PAGE? @V5088AA 00936000
- BO ERASWRT YES, DON'T DESTROY RECFLAG1 @V5088AA 00937000
- ERASFRMS MVI RECFLAG1,X'00' ZIP THE USE FLAGS. EITHER WE ARE @V5088AA 00938000
- * CLEARING ALL RECORDS OR THERE @V5088AA 00939000
- * WERE NO FRAME RECS. ON CYL ANYWAY@V5088AA 00940000
- MVC RECNXT(2),INITFMT AND INITIALIZE THE REST 00941000
- ERASWRT BAL R3,FMTWRITE NOW WRITE IT OUT @V5088AA 00942000
- MVI WORKPAGE,X'02' POINT TO PAGE TWO 00943000
- BAL R14,FMTREAD AND READ IT IN 00944000
- TM PARMSAVE,CLEARF CLEARF SPECIFIED? @V5088AA 00945000
- BOR R10 YES, START FORMAT WITH 2ND PAGE @V5088AA 00946000
- * @V5088AA 00947000
- * WE ARE HERE IF 'CLEAR' WAS SPECIFIED. LEAVE ANY FRAME @V5088AA 00948000
- * RECORDS ON RECORDING CYLINDERS INTACT. ANY PAGES WHICH @V5088AA 00949000
- * CONTAIN FRAME RECORDS WILL NOT CONTAIN ERROR RECORDS-- @V5088AA 00950000
- * DMKIOEFR SEES TO THAT. SO FIND 1ST PAGE WHICH DOESN'T @V5088AA 00951000
- * CONTAIN FRAME RECORDS AND START FORMAT THERE. @V5088AA 00952000
- ERASLOOP TM RECFLAG1,RECPAGFA ANY FRAMES ON THIS 1ST PAGE? @V5088AA 00953000
- * (IF NOT, NONE ON RECORDING CYLS.)@V5088AA 00954000
- BZR R10 START FORMATTING WITH THIS PAGE @V5088AA 00955000
- ICM R0,B'0111',WORKCYL GET CURRENT 'CCP' VALUE @V5088AA 00956000
- A R0,F1 INCREMENT 'P' NUMBER @V5088AA 00957000
- STC R0,WORKPAGE SAVE IN CURRENT PAGE VALUE @V5088AA 00958000
- CLC WORKPAGE(1),MAXPAGE ON LAST PAGE OF A CYLINDER? @V5088AA 00959000
- BL ERASRD NO, OK GO READ THIS CURRENT PAGE @V5088AA 00960000
- CLC WORKCYL(3),MAXCYL ON LAST PAGE OF LAST CYLINDER?@V5088AA 00961000
- BE CYLFULL PUT OUT AREA FULL MESSAGE @V5088AA 00962000
- SRL R0,8 ISOLATE 'CC' PART OF ADDRESS @V5088AA 00963000
- A R0,F1 INCREMENT TO NEXT CYLINDER @V5088AA 00964000
- STH R0,WORKCYL SAVE IN CURRENT 'CC' VALUE @V5088AA 00965000
- MVI WORKPAGE,X'01' SET CURRENT 'P' TO 1ST PG. OF CYL@V5088AA 00966000
- ERASRD BAL R14,FMTREAD GO READ THIS CURRENT PAGE @V5088AA 00967000
- MVC CECYL(3),WORKCYL UPDATE CECYL VALUE TO POINT TO @V5088AA 00968000
- * PAST THE FRAME RECORDS @V5088AA 00969000
- L R14,=V(DMKIOECE) ADD. OF CECYL @VA10241 00969100
- MVC 0(3,R14),CECYL @VA10241 00969200
- B ERASLOOP CHECK FOR FRAMES ON THIS PAGE @V5088AA 00970000
- DROP R2 @V5088AA 00971000
- SPACE 1 00972000
- CALLERM ICM R2,B'1000',ERMPARMS PARMS=OPERATOR+ALARM+RETURN @V305435 00973000
- ICM R0,B'1110',MODULEID+3 MODULE IDENTIFIER @V305435 00974000
- CALL DMKERMSG,AFFINITY CALL MESSAGE WRITTER @V407510 00975000
- L R2,IOEREALA RESTORE REAL PAGE ADDRESS @V305435 00976000
- L R1,IOEVMPAD RESTORE VIRTUAL PAGE ADDRESS @V305435 00977000
- BR R3 RETURN TO LINE CODE @V305435 00978000
- SPACE 1 00979000
- LIGHTOUT L R4,=V(DMKIOEES) ADDR. OF RECORDING AREA FULL FLG@V5088AA 00980000
- MVI 0(R4),X'FF' TURN OFF OBR RECORDING 00981000
- B IOEXIT 00982000
- EJECT 00983000
- DS 0F 01475000
- INITFMT DC X'00084000FFFFFFFF' COUNT OF 8 AND PAGE FREE 01476000
- FMTEXIT DS 1F 01477000
- FINDRET DS 1F 01478000
- IOEVMPAD DS 1F 01479000
- IOEREALA DS 1F 01480000
- CECYL DC H'00' 01481000
- CEPAGE DC X'01' 01482000
- CECYLTYP DC X'00' 01483000
- WORKCYL DC H'00' 01484000
- WORKPAGE DC X'01' 01485000
- WORKTYP DC X'00' 01486000
- SAVE14 DS 1F 01487000
- SAVELAST DC F'0' SAVE AREA FOR LAST CCPD-USED TO DETERMINE@VA07861 01487100
- * CCPD OF LAST FRAME RECORD 01487150
- MAXREC DC H'126' 01488000
- MODMODEL DS H 01489000
- MODMODID DS H 01490000
- ORG MODMODEL 01491000
- MO135 DC X'0135',AL2(MODEL135) MODEL NUMBER AND ID FOR 135 01492000
- MO138 DC X'0138',AL2(MODEL138) MOD NUMBER AND ID FOR 138 @V386298 01493000
- MO145 DC X'0145',AL2(MODEL145) MODEL NUMBER AND ID FOR 145 01494000
- MO148 DC X'0148',AL2(MODEL148) MOD NO. AND ID FOR 148 @V386298 01495000
- MO155 DC X'0155',AL2(MODEL155) MODEL NUMBER AND ID FOR 155 01496000
- MO158 DC X'0158',AL2(MODEL158) MODEL NUMBER AND ID FOR 158 01497000
- MO165 DC X'0165',AL2(MODEL165) MODEL NUMBER AND ID FOR 165 01498000
- MO168 DC X'0168',AL2(MODEL168) MODEL NUMBER AND ID FOR 168 01499000
- MO3031 DC X'3031',AL2(MOD3031) MODEL NO. AND ID FOR 3031 @V5088AA 01500000
- MO3032 DC X'3032',AL2(MOD3032) MODEL NO. AND ID FOR 3032 @V5088AA 01501000
- MO3033 DC X'3033',AL2(MOD3033) MODEL NO. AND ID FOR 3033 @V5088AA 01502000
- MO4331 DC X'4331',AL2(MOD4331) MOD NO AND ID FOR 4331 @V60A6B6 01502200
- MO4341 DC X'4341',AL2(MOD4341) MOD NO. AND ID FOR 4341 @V60A6B6 01502300
- NOTSUPPD DC H'-1',AL2(NOMODEL) NO MACHINE SUPPORT 01503000
- * NOTE: LASTCYL AND PAGE90PC MUST REMAIN CONTIGUOUS @V5088AA 01504000
- * AS THEY ARE REFERENCED AS A UNIT @V5088AA 01505000
- AREA90PC DS 0X @V5088AA 01506000
- LASTCYL DC H'0000' ENDING 'CC' OF RECORDING AREA @V5088AA 01507000
- PAGE90PC DC X'00' 01508000
- * NOTE: MAXCYL AND MAXPAGE MUST REMAIN CONTIGUOUS AS @V5088AA 01509000
- * THEY ARE REFERENCED AS A UNIT @V5088AA 01510000
- MAXCYL DC H'0000' ENDING 'CC' OF RECORDING AREA @V5088AA 01511000
- MAXPAGE DC X'00' 01512000
- PARMSAVE DC X'00' 01513000
- TYPEM DC X'00' INDICATE DEPENDENT CHANNEL MODULES 01514000
- MVZINST DC X'00' ONLY USE FOR THE MVZ INSTR. 01515000
- CONF DC XL17'0' SAVE CHANNEL IDENTIFICATION 01516000
- SPACE 2 01517000
- ********************************************************************** 01518000
- CHAN DC X'F2F5FFF8FFFFFFFFFFFFFAFFFFFFFFFF' 01519000
- DC X'F1FFF6FFFFFFFFFFFFFFFFFFFFFFFFFF' 01520000
- DC X'F3FFFFF7FFFFFFFFFFFFFFFFFFFFFFFF' 01521000
- DC X'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' 01522000
- ********************************************************************** 01523000
- SPACE 2 01524000
- ********************************************************************** 01525000
- MOD1658C DC A(DMKSIX60) GET THE ADDRESS OF THE 2860 CHANNEL 01526000
- * MODULE 01527000
- DC A(DMKSEV70) GET THE ADDRESS OF THE 2870 CHANNEL 01528000
- * MODULE 01529000
- DC A(DMKEIG80) GET THE ADDRESS OF THE 2880 CHANNEL 01530000
- * MODULE 01531000
- ********************************************************************** 01532000
- * DMKIOHFR 01532200
- IOEFRSAV DS XL1 SAVE AREA FOR DMKIOEFR VALUE @V5088AA 01536000
- INFOFLAG DC X'00' AREA FILLED WITH FRAME RECORDS @V5088AA 01537000
- FULLNOW EQU X'80' INDICATES AREA FILLED WITH FRAMES@V5088AA 01538000
- INITYES EQU X'02' INITIALIZE FRAME RECORDS @V5088AA 01540000
- CLR EQU X'01' 'CLEAR' SPECIFIED @V5088AA 01541000
- CLEARF EQU X'02' 'CLEARF' SPECIFIED @V5088AA 01542000
- NOFRAMES EQU X'00' NO FRAME RECS. ON RECORDING CYLS @V5088AA 01543000
- YESFRAME EQU X'20' FRAME RECORDS ARE ON REC. CYLS @V5088AA 01544000
- ERMPARMS DC X'B0' PARMS= OPERATOR+ALARM+RETURN @V305435 01545000
- MAX2314 EQU X'21' 01546000
- MAX2305 EQU X'19' 01547000
- MAX3330 EQU X'3A' 01548000
- MAX3350 EQU X'79' 3350 MAX PAGES (PLUS 1) = 121 @V304498 01549000
- MAX3375 EQU X'61' 3375 max pages (plus 1) = 97 HRC106DK 01549100
- MAX3380 EQU X'97' 3380 max pages (plus 1) = 151 HRC106DK 01549200
- NIN2314 EQU X'1C' 01550000
- NIN2305 EQU X'15' 01551000
- NIN3330 EQU X'33' 01552000
- SPACE 1 01577000
- LTORG 01578000
- EJECT 01579000
- COPY MCHAREA 01580000
- COPY EQU 01581000
- COPY RBLOKS 01582000
- PSA 01583000
- COPY SAVE 01584000
- COPY IOBLOKS @V306638 01585000
- COPY VMBLOK 01586000
- COPY DEVTYPES 01587000
- COPY IOER 01588000
- COPY RECPAG 01589000
- END 01622000
ibm/vm370-lib/cp/dmkiog.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator