ibm:vm370-lib:cp:dmkiof.assemble_src
Table of Contents
DMKIOF Source
References
- Fixes Applied : 11
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC105DK]
Source Listing
- DMKIOF.ASSEMBLE.txt
- IOF TITLE 'DMKIOF (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 @VA03358 00002000
- *************************************************************** 00003000
- * 00004000
- * MODULE NAME - 00005000
- * 00006000
- * DMKIOF 00007000
- * 00008000
- * CONTENTS - 00009000
- * 00010000
- * DMKIOFOB - RECORD OUTBOARD AND MISCELLENOUS DATA RECORDS 00011000
- * DMKIOFVR - RECORD SVC 76 REQUEST RECORDS 00012000
- * DMKIOFM1 - RECORD MACHINE CHECK RECORDS 00013000
- * DMKIOFC1 - RECORD CHANNEL CHECK RECORDS 00014000
- * DMKIOFIN - INITIALIZE POINTERS TO AVAILABLE RECORDING PAGES 00015000
- * 00016000
- * FUNCTION - 00017000
- * 00018000
- * THIS PAGABLE MODULE PROVIDES SUPPORT FOR RECORDING OUTBOARD 00019000
- * (OBR), INBOARD (CCH), MACHINE CHECK (MCH) AND MISCELLANEOUS 00020000
- * DATA (MDR) RECORDS TO THE PREDEFINED ERROR RECORDING 00021000
- * CYLINDERS. IT ALSO INITIALIZE POINTERS TO THE AVAILABLE 00022000
- * RECORDING PAGES AT IPL TIME AND WHEN THE RECORDING CYLINDERS 00023000
- * ARE ERASE. 00024000
- * 00025000
- COPY OPTIONS @VA12116 00025100
- SPACE 3 00026000
- DMKIOF CSECT @VA03358 00027000
- MODID DC CL8'DMKIOF' MODULE IDENTIFIER @V305435 00028000
- SPACE 2 00029000
- EXTRN DMKPGTVR,DMKRPAPT,DMKRPAGT,DMKPGTVG @VA03358 00030000
- EXTRN DMKIOEES,DMKIOERP,DMKIOEMX,DMKSYSER @V5088AA 00031100
- EXTRN DMKIOEIQ,DMKIOEMQ,DMKIOERQ,DMKIOENQ @VA03358 00032000
- EXTRN DMKIOEVQ,DMKIOENI,DMKIOEEP,DMKIOECT @V5088AA 00033100
- EXTRN DMKPTRUL,DMKIOECQ,DMKSTKCP @VA03358 00034000
- EXTRN DMKERMSG,DMKIOESQ,DMKIOCVT @VA03757 00035000
- SPACE 2 00036000
- USING PSA,R0 SETUP ADDRESSABILITY FOR LOWCORE @VA03358 00037000
- USING RECPAG,R2 SETUP ADDRESSABILITY FOR HEADER @VA03358 00038000
- USING RDEVBLOK,R8 SETUP ADDRESSABILITY FOR RDEVBLOK@VA03358 00039000
- USING SAVEAREA,R13 SETUP ADDRESSABILITY FOR SAVEAREA@VA03358 00040000
- USING *,R12 SETUP ADDRESSABILITY FOR MODULE @VA03358 00041000
- EJECT 00042000
- ********************************************************************** 00043000
- * 00044000
- * SUBROUTINE NAME - 00045000
- * 00046000
- * DMKIOFOB 00047000
- * 00048000
- * FUNCTION - 00049000
- * 00050000
- * THIS SUBROUTINE BUILDS, FORMATS AND RECORDS OUTBOARD (OBR) 00051000
- * AND MISCELLANEOUS DATA (MDR) RECORDS ONTO THE ERROR 00052100
- * RECORDING CYLINDERS. 00053100
- * 00054000
- * ATTRIBUTES - 00055000
- * 00056000
- * SERIALLY REUSEABLE, PAGABLE, ENTERED VIA SVC 00057000
- * 00058000
- * ENTRY CONDITIONS - 00059000
- * 00060000
- * GR 6 = ADDRESS OF ERRBLOK 00061000
- * GR 7 = SIZE OF ERRBLOK RECORD IN DOUBLEWORDS 00062000
- * GR 8 = ADDRESS OF RDEVBLOK 00063000
- * GR 11 = ADDRESS OF VMBLOK 00064000
- * GR 12 = ADDRESS OF DMKIOFOB 00065000
- * GR 13 = ADDRESS OF SAVE AREA 00066000
- * 00067000
- * EXIT CONDITIONS - 00068000
- * 00069000
- * NONE 00070000
- * 00071000
- * CALL TO OTHER ROUTINES - 00072000
- * 00073000
- * DMKFRET - TO RETURN ALLOCATED STORAGE FOR RECORD/CPEXBLOK 00074000
- * DMKPGTVG - GET A VIRTUAL BUFFER PAGE 00075000
- * DMKQCNWT - WRITE A MESSAGE TO THE OPERATOR 00076000
- * DMKPGTVR - RELEASE A VIRTUAL BUFFER PAGE 00077000
- * DMKRPAGT - READ A PAGE FROM THE RECORDING CYLINDER 00078000
- * DMKRPAPT - WRITE PAGE RECORD TO RECORDING CYLINDER 00079000
- * DMKPTRUL - UNLOCK RECORDING PAGE 00080000
- * DMKPTRAN - LOCK RECORDING PAGE IN STORAGE 00081000
- * DMKSTKCP - STACK CPEXBLOK TO GET NEXT REQUEST 00082000
- * DMKERMSG - WRITE ERROR MESSAGES 00083000
- * DMKIOCVT - CONVERT VM/370 DEVICE TYPE TO OS/VS DEVICE TYPE 00084000
- * 00085000
- * EXTERNAL REFERENCES - 00086000
- * 00087000
- * DMKIOERP - RECORDING IN PROGRESS FLAG 00088000
- * DMKIOEMX - NO. OF PAGES (MAX) ON A CYLINDER 00089000
- * DMKIOENI - NO. OF PAGES ON LAST CYL WHICH CORRESPONDS 00090100
- * TO RECORDING AREA 90% FULL 00090200
- * DMKIOEIQ - RECORDING QUE CHAIN FOR OBR/MDR RECORDS 00091000
- * DMKIOESQ - QUE CHAIN FOR UPDATE REQUESTS 00092000
- * DMKIOEES - ERROR RECORDING CYLINDERS FULL FLAG 00093100
- * DMKIOERQ - RECORDING QUE CHAIN FOR ERASE REQUEST 00094000
- * DMKIOEMQ - RECORDING QUE CHAIN FOR MCH RECORDS 00095000
- * DMKIOECQ - RECORDING QUE CHAIN FOR CCH RECORDS 00096000
- * DMKIOENQ - RECORDING QUE CHAIN FOR MDR SYNCHRONOUS RECORDS 00097000
- * DMKIOEVQ - RECORDING QUE CHAIN FOR SVC 76 REQUESTS 00098000
- * 00099000
- * TABLES /WORK AREAS - 00100000
- * 00101000
- * ERRBLOK - CONTAINS DATA TO BUILD OBR/MDR 00102000
- * 00103000
- * NOTES - 00104000
- * 00105000
- * NONE 00106000
- * 00107000
- * REGISTER USAGE - 00108000
- * 00109000
- * GR14,15 LINKAGE REGISTERS 00110000
- * GR12 = MODULE BASE REGISTER 00111000
- * GR11 = VMBLOK ADDRESSABILITY 00112000
- * GR 9 = WORK REGISTER 00113000
- * GR 8 = RDEVBLOK ADDRESSABILITY 00114000
- * GR 7 = SIZE OF THE RECORD IN DOUBLEWORDS 00115000
- * GR 6 = ADDRESS OF THE RECORD 00116000
- * GR 5 = SUBROUTINE BAL REGISTER 00117000
- * GR0-4= WORK REGISTERS 00118000
- * 00119000
- * OPERATION - 00120000
- * 00121000
- * I. HANDLE RECORDING FOR OBR/MDR RECORDS 00122000
- * 00123000
- * 1. IF THE RECORDING CYLINDER IS FULL, RELEASE THE 00124000
- * OBR/MDR RECORD AND SEND THE FULL CYLINDER ERROR 00125000
- * MESSAGE (DMKIOF553E/DMKIOF551E) TO THE OPERATOR IF 00126000
- * ONE HAS NOT BEEN SENT BEFORE. AFTERWARD, GO CHECK 00127000
- * RECORDING QUES FOR OTHER REQUESTS. 00128000
- * 00129000
- * 2. IF THERE IS ALREADY A RECORDING PAGE IN STORAGE, 00130000
- * BYPASS GETTING A VIRTUAL BUFFER PAGE AND RECORDING 00131000
- * PAGE. IF RECORDING PAGE IS NOT IN STORAGE, CALL 00132000
- * DMKPGTVG TO OBTAIN A VIRTUAL BUFFER PAGE, CALL 00133000
- * DMKRPAGT TO READ A PAGE FROM THE RECORDING CYLINDER 00134000
- * INTO STORAGE AND CALL DMKPTRAN TO LOCK RECORDING PAGE 00135000
- * IN STORAGE. 00136000
- * 00137000
- * 3. DETERMINE IF ENOUGH SPACE IS AVAILABLE ON THE 00138000
- * RECORDING PAGE FOR THE RECORD. IF NOT, GET ANOTHER 00139000
- * PAGE FROM RECORDING CYLINDER AND TRY AGAIN. 00140000
- * 00141000
- * 4. FOR AN OBR RECORD, THE DEVICE TYPE WILL BE ALTERED 00142000
- * TO AN OS DEVICE TYPE IN ORDER TO ALLOW DECODING BY 00143000
- * CPEREP (A CALL TO DMKIOC) . 00144000
- * 00145000
- * 5. BUILD OBR/MDR RECORD USING THE ERRBLOK THEN 00146000
- * MOVE THE OBR/MDR RECORD INTO AVAILABLE AREA 00147000
- * IN THE RECORDING PAGE AND RELEASE THE ERRBLOK.. 00148000
- * 00149000
- * 6. IF RUNNING IN A VIRTUAL MACHINE, ISSUE AN SVC 76 00150000
- * TO HAVE THE OBR/MDR RECORD ON THE REAL MACHINE 00151000
- * RECORDING CYLINDER. IF THIS IS NOT A VIRTUAL 00152000
- * MACHINE, UPDATE THE CONTROL HEADER IN THE RECORDING 00153000
- * PAGE, TO POINT TO NEXT AVAILABLE AREA ON PAGE. 00154000
- * 00155000
- * 7. MOVE PAGE NUMBER INTO THE OBR/MDR PAGE FIELD AND 00156000
- * RELEASE THE OBR/MDR RECORD. 00157000
- * 00158000
- * 8. ERASE QUE - IF AN ERASE REQUEST IS ON THE QUE, 00159000
- * WRITE OUT LAST RECORDING PAGE TO RECORDING CYLINDER 00160000
- * (IF NECESSARY), PUT NEXT REQUEST ON TOP OF QUE AND 00161000
- * CALL DMKSTKCP TO STACK A CPEXBLOK TO RETURN TO 00162000
- * DMKIOEFM. AFTERWARD, EXIT FROM RECORDER. IF ERASE QUE 00163000
- * IS EMPTY, GO CHECK NEXT RECORDING QUE. 00164000
- * 00165000
- * 9. MACHINE CHECK RECORDING QUE - IF THERE IS A MACHINE 00166000
- * CHECK REQUEST ON THE QUE, WRITE OUT LAST RECORDING 00167000
- * PAGE (IF NECESSARY), PUT NEXT REQUEST ON TOP OF QUE 00168000
- * AND CALL DMKSTKCP TO STACK A CPEXBLOK TO RETURN 00169000
- * TO DMKIOEMC. AFTERWARD, EXIT FROM RECORDER. 00170000
- * IF MACHINE CHECK QUE IS EMPTY, GO CHECK NEXT 00171000
- * RECORDING QUE. 00172000
- * 00173000
- * 10. CHANNEL CHECK RECORDING QUE - IF THERE IS A CHANNEL 00174000
- * CHECK REQUEST ON THE QUE, WRITE OUT LAST RECORDING 00175000
- * PAGE TO RECORDING CYLINDER (IF NECESSARY), PUT 00176000
- * NEXT REQUEST ON TOP OF QUE, GET POINTERS FOR THE 00177000
- * NEXT RECORD, RELEASE THE CPEXBLOK AND GO TO CHANNEL 00178000
- * CHECK'S SECTION OF RECORDER. IF CHANNEL CHECK QUE 00179000
- * IS EMPTY, GO CHECK NEXT RECORDING QUE. 00180000
- * 00181000
- * 11. OBR/MDR RECORDING QUE - IF THERE IS A OBR/MDR 00182000
- * REQUEST ON THE QUE, PUT THE NEXT REQUEST ON TOP OF 00183000
- * QUE, GET POINTERS TO NEXT ERRBLOK, RELEASE 00184000
- * THE CPEXBLOK AND GO TO OBR/MDR SECTION OF 00185000
- * RECORDER. IF OBR/MDR QUE IS EMPTY, GO CHECK NEXT 00186000
- * RECORDING QUE. 00187000
- * 00188000
- * 12. ENVIRONMENTAL RECORDING QUE - IF THERE AN MDR REQUEST 00189000
- * ON THE QUE, PUT THE NEXT REQUEST ON TOP OF QUE 00190000
- * AND CALL DMKSTKCP TO STACK CPEXBLOK TO RETURN TO 00191000
- * DMKIOESD. AFTERWARD, EXIT FROM THE RECORDER. 00192000
- * 00193000
- * 13. SVC 76 RECORDING QUE - IF THERE IS AN SVC 76 00194000
- * REQUEST ON THE QUE, PUT THE NEXT REQUEST ON TOP OF 00195000
- * QUE, GET POINTERS TO THE NEXT RECORD, RELEASE 00196000
- * THE CPEXBLOK AND GO TO SVC 76 SECTION OF 00197000
- * RECORDER. IF THE SVC 76 QUE IS EMPTY, GO WRITE 00198000
- * RECORDING PAGE BACK TO THE RECORDING CYLINDER BY 00199000
- * CALLING DMKRPAPT (IF NECESSARY). AFTERWARD, 00200000
- * UNLOCK AND RELEASE RECORDING PAGE 00201000
- * AND VIRTUAL BUFFER PAGE. 00202000
- * 00203000
- * 14. STATISTICAL UPDATE QUE - IF THERE IS A UPDATE 00204000
- * REQUEST ON THE QUE, PUT THE NEXT REQUEST ON THE TOP 00205000
- * OF THE QUE, GET POINTERS TO NEXT ERRBLOK, RELEASE THE 00206000
- * THE CPEXBLOK AND GO TO THE STATISTICAL UPDATE SECTION 00207000
- * IF SDR QUEUE IS EMPTY GO CHECK 90% FULL CONDITION. 00208000
- * 00209000
- * 15. DETERMINE IF THE RECORDING CYLINDER IS 90% FULL. 00210000
- * IF 90 % FULL, WRITE AN ERROR MESSAGE TO THE 00211000
- * OPERATOR (DMKIOF552E/DMKIOF550E). 00212000
- * 00213000
- * 16. CLEAR THE MCH/CCH ENTRY FLAG AND THE RECORDING IN 00214000
- * PROGRESS FLAG AND RETURN TO CALLER. 00215000
- * 00216000
- * ERROR MESSAGES - 00217000
- * 00218000
- * DMKIOF550E ERROR RECORDING AREA 90 PERCENT FULL; RUN CPEREP 00219100
- * DMKIOF551E ERROR RECORDING AREA FULL; RUN CPEREP 00220100
- * 00221000
- **************************************************************** 00222000
- EJECT 00223000
- DMKIOFOB RELOC @VA03358 00224000
- IOFOB EQU * HANDLE OBR/MDR RECORDS @VA03358 00225000
- MVI MCCHFLAG,X'00' CLEAR MCH/CCH ENTRY FLAG @V5088AA 00225100
- BAL R5,CHEKFULL CHECK CYLINDER FULL CONDITION @VA03358 00226000
- BAL R5,OBRMDRBL GO BUILD OBR/MDR RECORD @VA03757 00227000
- LR R3,R0 SAVE SIZE OF OBR/MDR @VA03757 00228000
- LR R4,R1 SAVE ADDRESS OF OBR/MDR @VA03757 00229000
- BAL R5,REGSETUP GET READY TO FRET ERRBLOK @VA03757 00230000
- BAL R5,FRETRECD GO FRET ERRBLOK @VA03757 00231000
- LR R6,R4 ADDRESS OF OBR/MDR @VA03757 00232000
- LR R7,R3 GET SIZE IN DOUBLEWORDS @VA03757 00233000
- SLL R7,3 CONVERT DOUBLEWORDS TO BYTES @VA03757 00234000
- BAL R5,PAGEIN GET VIRT. BUFFER PAGE (IF NEEDED)@VA03358 00235000
- BAL R5,CKOBROOM CHECK FOR ENOUGH ROOM FOR RECORD @VA03358 00236000
- CLI 4(R6),X'91' IS THIS A MDR RECORD @VA03358 00237000
- BE SKIPCALL YES, BYPASS GETTING DEVICE TYPE @VA03757 00238000
- SPACE 00239000
- CALL DMKIOCVT @VA03757 00240000
- SPACE 00241000
- SKIPCALL EQU * GO MOVE OBR/MDR @VA03757 00242000
- BAL R5,SETUPOBR MOVE OBR/MDR REC. INTO VIRT. PAGE@VA03358 00243000
- EJECT 00244000
- ********************************************************************** 00245000
- * 00246000
- * SUBROUTINE NAME - 00247000
- * 00248000
- * DMKIOFVR 00249000
- * 00250000
- * FUNCTION - 00251000
- * 00252000
- * THIS SUBROUTINE RECORD OUTBOARD (OBR) AND MISCELLANEOUS DATA 00253000
- * (MDR) RECORDS ONTO THE ERROR RECORDING CYLINDERS 00254100
- * SVC 76 REQUESTS. 00255000
- * 00256000
- * ATTRIBUTES - 00257000
- * 00258000
- * SERIALLY REUSEABLE, PAGABLE, ENTERED VIA SVC 00259000
- * 00260000
- * ENTRY CONDITIONS - 00261000
- * 00262000
- * GR 6 = ADDRESS OF OBR/MDR RECORD 00263000
- * GR 7 = SIZE OF OBR/MDR RECORD IN DOUBLEWORDS 00264000
- * GR 8 = ADDRESS OF RDEVBLOK 00265000
- * GR 11 = ADDRESS OF VMBLOK 00266000
- * GR 12 = ADDRESS OF DMKIOFVR 00267000
- * GR 13 = ADDRESS OF SAVE AREA 00268000
- * 00269000
- * EXIT CONDITIONS - 00270000
- * 00271000
- * NONE 00272000
- * 00273000
- * CALL TO OTHER ROUTINES - 00274000
- * 00275000
- * DMKFRET - TO RETURN ALLOCATED STORAGE FOR RECORD/CPEXBLOK 00276000
- * DMKPGTVG - GET A VIRTUAL BUFFER PAGE 00277000
- * DMKQCNWT - WRITE A MESSAGE TO THE OPERATOR 00278000
- * DMKPGTVR - RELEASE A VIRTUAL BUFFER PAGE 00279000
- * DMKRPAGT - READ A PAGE FROM THE RECORDING CYLINDER 00280000
- * DMKRPAPT - WRITE PAGE RECORD TO RECORDING CYLINDER 00281000
- * DMKPTRUL - UNLOCK RECORDING PAGE 00282000
- * DMKPTRAN - LOCK RECORDING PAGE IN STORAGE 00283000
- * DMKSTKCP - STACK CPEXBLOK TO GET NEXT REQUEST 00284000
- * 00285000
- * EXTERNAL REFERENCES - 00286000
- * 00287000
- * DMKIOERP - RECORDING IN PROGRESS FLAG 00288000
- * DMKIOEMX - NO. OF PAGES (MAX) ON A CYLINDER 00289000
- * DMKIOENI - NO. OF PAGES ON LAST CYL WHICH CORRESPONDS 00290100
- * TO RECORDING AREA 90% FULL 00290200
- * DMKIOEIQ - RECORDING QUE CHAIN FOR OBR/MDR RECORDS 00291000
- * DMKIOEES - ERROR RECORDING CYLINDERS FULL FLAG 00292100
- * DMKIOERQ - RECORDING QUE CHAIN FOR ERASE REQUEST 00293000
- * DMKIOEMQ - RECORDING QUE CHAIN FOR MCH RECORDS 00294000
- * DMKIOECQ - RECORDING QUE CHAIN FOR CCH RECORDS 00295000
- * DMKIOENQ - RECORDING QUE CHAIN FOR MDR SYNCHRONOUS RECORDS 00296000
- * DMKIOEVQ - RECORDING QUE CHAIN FOR SVC 76 REQUESTS 00297000
- * 00298000
- * TABLES /WORK AREAS - 00299000
- * 00300000
- * NONE 00301000
- * 00302000
- * NOTES - 00303000
- * 00304000
- * NONE 00305000
- * 00306000
- * REGISTER USAGE - 00307000
- * 00308000
- * GR14,15 LINKAGE REGISTERS 00309000
- * GR12 = MODULE BASE REGISTER 00310000
- * GR11 = VMBLOK ADDRESSABILITY 00311000
- * GR 9 = WORK REGISTER 00312000
- * GR 8 = RDEVBLOK ADDRESSABILITY 00313000
- * GR 7 = SIZE OF THE RECORD IN DOUBLEWORDS 00314000
- * GR 6 = ADDRESS OF THE RECORD 00315000
- * GR 5 = SUBROUTINE BAL REGISTER 00316000
- * GR0-4= WORK REGISTERS 00317000
- * 00318000
- * OPERATION - 00319000
- * 00320000
- * I. HANDLE RECORDING FOR SVC 76 REQUEST RECORDS 00321000
- * 00322000
- * 1. THE OPERATION SECTION FOR SVC76 REQUEST IS THE 00323000
- * SAME AS THE OPERATIONS THAT ARE DESCRIBED 00324000
- * UNDER DMKIOFOB OPERATIONS SECTION. 00325000
- * 00328000
- * ERROR MESSAGES - 00329000
- * 00330000
- * DMKIOF550E ERROR RECORDING AREA 90 PERCENT FULL; RUN CPEREP 00331100
- * DMKIOF551E ERROR RECORDING AREA FULL; RUN CPEREP 00332100
- * 00333000
- **************************************************************** 00334000
- EJECT 00335000
- DMKIOFVR RELOC @VA03358 00336000
- IOFVR EQU * HANDLE SVC 76 REQUESTS @VA03358 00337000
- MVI MCCHFLAG,X'00' CLEAR MCH/CCH ENTRY FLAG @V5088AA 00337100
- BAL R5,CHEKFULL CHECK CYLINDER FULL CONDITION @VA03358 00338000
- BAL R5,PAGEIN GET VIRT. BUFFER PAGE (IF NEEDED)@VA03358 00339000
- BAL R5,CKOBROOM CHECK FOR ENOUGH ROOM FOR RECORD @VA03358 00340000
- CLI 4(R6),X'30' IS THIS AN OBR RECORD? @VA07413 00340110
- BNE SETUPOBR NO, DO NOT CALL DMKIOCVT @VA07413 00340160
- * CURRENTLY DMKIOCVT CAN ONLY HANDLE OBR-TYPE RECORDS 00340210
- CALL DMKIOCVT @VA06287 00340300
- SETUPOBR EQU * HANDLE OBR/MDR RECORDS @VA03358 00341000
- BAL R3,MOVEREC MOVE OBR/MDR REC. INTO VIRT. PAGE@VA03358 00342000
- BAL R5,SVC76FTN DETERMINE IF SVC 76 IS REQUIRED @VA03358 00343000
- * IF YES BYPASS UPDATING CONTROL HEADER 00344000
- BAL R5,UPDTHDR UPDATE CONTROL HEADER IN PAGE @VA03358 00345000
- MVC CECYL(3),WORKCYL SAVE THE UPDATED CCP @V5088AA 00346100
- BAL R5,FRETRECD RELEASE OBR/MDR RECORD @VA03358 00347000
- BAL R5,RECDQUE GET NEXT REC. FROM RECORDING QUE @VA03358 00348000
- EJECT 00349000
- ********************************************************************** 00350000
- * 00351000
- * SUBROUTINE NAME - 00352000
- * 00353000
- * DMKIOFM1 00354000
- * 00355000
- * FUNCTION - 00356000
- * 00357000
- * THIS SUBROUTINE RECORD MACHINE CHECK (MCH) RECORDS ONTO THE 00358000
- * ERROR RECORDING CYLINDERS 00359100
- * 00360000
- * ATTRIBUTES - 00361000
- * 00362000
- * SERIALLY REUSEABLE, PAGABLE, ENTERED VIA SVC 00363000
- * 00364000
- * ENTRY CONDITIONS - 00365000
- * 00366000
- * GR 6 = ADDRESS OF MCH RECORD 00367000
- * GR 7 = SIZE OF OMCH RECORD IN DOUBLEWORDS 00368000
- * GR 11 = ADDRESS OF VMBLOK 00369000
- * GR 12 = ADDRESS OF DMKIOFM1 00370000
- * GR 13 = ADDRESS OF SAVE AREA 00371000
- * 00372000
- * EXIT CONDITIONS - 00373000
- * 00374000
- * NONE 00375000
- * 00376000
- * CALL TO OTHER ROUTINES - 00377000
- * 00378000
- * DMKPGTVG - GET A VIRTUAL BUFFER PAGE 00379000
- * DMKQCNWT - WRITE A MESSAGE TO THE OPERATOR 00380000
- * DMKPGTVR - RELEASE A VIRTUAL BUFFER PAGE 00381000
- * DMKRPAGT - READ A PAGE FROM THE RECORDING CYLINDER 00382000
- * DMKRPAPT - WRITE PAGE RECORD TO RECORDING CYLINDER 00383000
- * DMKPTRUL - UNLOCK RECORDING PAGE 00384000
- * DMKPTRAN - LOCK RECORDING PAGE IN STORAGE 00385000
- * DMKSTKCP - STACK CPEXBLOK TO GET NEXT REQUEST 00386000
- * DMKERMSG - WRITE ERROR MESSAGES 00387000
- * 00388000
- * EXTERNAL REFERENCES - 00389000
- * 00390000
- * DMKIOERP - RECORDING IN PROGRESS FLAG 00391000
- * DMKIOEMX - NO. OF PAGES (MAX) ON A CYLINDER 00392000
- * DMKIOENI - NO. OF PAGES ON LAST CYL WHICH CORRESPONDS 00393100
- * TO RECORDING AREA 90% FULL 00393200
- * DMKIOEIQ - RECORDING QUE CHAIN FOR OBR/MDR RECORDS 00394000
- * DMKIOEES - ERROR RECORDING CYLINDERS FULL FLAG 00395100
- * DMKIOERQ - RECORDING QUE CHAIN FOR ERASE REQUEST 00396000
- * DMKIOEMQ - RECORDING QUE CHAIN FOR MCH RECORDS 00397000
- * DMKIOECQ - RECORDING QUE CHAIN FOR CCH RECORDS 00398000
- * DMKIOENQ - RECORDING QUE CHAIN FOR MDR SYNCHRONOUS RECORDS 00399000
- * DMKIOEVQ - RECORDING QUE CHAIN FOR SVC 76 REQUESTS 00400000
- * 00401000
- * TABLES /WORK AREAS - 00402000
- * 00403000
- * NONE 00404000
- * 00405000
- * NOTES - 00406000
- * 00407000
- * NONE 00408000
- * 00409000
- * REGISTER USAGE - 00410000
- * 00411000
- * GR14,15 LINKAGE REGISTERS 00412000
- * GR12 = MODULE BASE REGISTER 00413000
- * GR11 = VMBLOK ADDRESSABILITY 00414000
- * GR 9 = WORK REGISTER 00415000
- * GR 7 = SIZE OF THE RECORD IN DOUBLEWORDS 00416000
- * GR 6 = ADDRESS OF THE RECORD 00417000
- * GR 5 = SUBROUTINE BAL REGISTER 00418000
- * GR0-4= WORK REGISTERS 00419000
- * 00420000
- * OPERATION - 00421000
- * 00422000
- * I. HANDLE RECORDING FOR MCH/CCH RECORDS 00423000
- * 00424000
- * 1. IF THE RECORDING CYLINDER IS FULL, RELEASE THE 00425000
- * CCH RECORD AND SEND THE FULL CYLINDER ERROR 00426000
- * MESSAGE (DMKIOF553E/DMKIOF551E) TO THE OPERATOR IF 00427000
- * ONE HAS NOT BEEN SENT BEFORE. AFTERWARD, GO CHECK 00428000
- * RECORDING QUES FOR OTHER REQUESTS. 00429000
- * 00430000
- * 2. IF THERE IS ALREADY A RECORDING PAGE IN STORAGE, 00431000
- * BYPASS GETTING A VIRTUAL BUFFER PAGE AND RECORDING 00432000
- * PAGE. IF RECORDING PAGE IS NOT IN STORAGE, CALL 00433000
- * DMKPGTVG TO OBTAIN A VIRTUAL BUFFER PAGE, CALL 00434000
- * DMKRPAGT TO READ A PAGE FROM THE RECORDING CYLINDER 00435000
- * INTO STORAGE AND CALL DMKPTRAN TO LOCK RECORDING PAGE 00436000
- * IN STORAGE. 00437000
- * 00438000
- * 3. DETERMINE IF ENOUGH SPACE IS AVAILABLE ON THE 00439000
- * RECORDING PAGE FOR THE RECORD. IF NOT, GET ANOTHER 00440000
- * PAGE FROM RECORDING CYLINDER AND TRY AGAIN. 00441000
- * 00442000
- * 4. MOVE THE MCH/CCH RECORD INTO AVAILABLE AREA 00443000
- * IN THE RECORDING PAGE. 00444000
- * 00445000
- * 5. MOVE PAGE NUMBER INTO THE MCH/CCH PAGE FIELD AND 00446000
- * RELEASE THE CCH RECORD. 00447000
- * 00448000
- * 6. WRITE RECORDING PAGE BACK TO THE RECORDING CYLINDER 00449000
- * BY CALLING DMKRPAPT. AFTERWARD, UNLOCK AND RELEASE 00450000
- * RECORDING PAGE AND VIRTUAL BUFFER PAGE. 00451000
- * 00452000
- * 7. ERASE QUE - IF AN ERASE REQUEST IS ON THE QUE, 00453000
- * WRITE OUT LAST RECORDING PAGE TO RECORDING CYLINDER 00454000
- * (IF NECESSARY), PUT NEXT REQUEST ON TOP OF QUE AND 00455000
- * CALL DMKSTKCP TO STACK A CPEXBLOK TO RETURN TO 00456000
- * DMKIOEFM. AFTERWARD, EXIT FROM RECORDER. IF ERASE QUE 00457000
- * IS EMPTY, GO CHECK NEXT RECORDING QUE. 00458000
- * 00459000
- * 8. MACHINE CHECK RECORDING QUE - IF THERE IS A MACHINE 00460000
- * CHECK REQUEST ON THE QUE, WRITE OUT LAST RECORDING 00461000
- * PAGE (IF NECESSARY), PUT NEXT REQUEST ON TOP OF QUE 00462000
- * AND CALL DMKSTKCP TO STACK A CPEXBLOK TO RETURN 00463000
- * TO DMKIOEMC. AFTERWARD, EXIT FROM RECORDER. 00464000
- * IF MACHINE CHECK QUE IS EMPTY, GO CHECK NEXT 00465000
- * RECORDING QUE. 00466000
- * 00467000
- * 9. CHANNEL CHECK RECORDING QUE - IF THERE IS A CHANNEL 00468000
- * CHECK REQUEST ON THE QUE, WRITE OUT LAST RECORDING 00469000
- * PAGE TO RECORDING CYLINDER (IF NECESSARY), PUT 00470000
- * NEXT REQUEST ON TOP OF QUE, GET POINTERS FOR THE 00471000
- * NEXT RECORD, RELEASE THE CPEXBLOK AND GO TO CHANNEL 00472000
- * CHECK'S SECTION OF RECORDER. IF CHANNEL CHECK QUE 00473000
- * IS EMPTY, GO CHECK NEXT RECORDING QUE. 00474000
- * 00475000
- * 10. OBR/MDR RECORDING QUE - IF THERE IS A OBR/MDR 00476000
- * REQUEST ON THE QUE, PUT THE NEXT REQUEST ON TOP OF 00477000
- * QUE, GET POINTERS TO NEXT OBR/MDR RECORD, RELEASE 00478000
- * THE CPEXBLOK AND GO TO OBR/MDR SECTION OF 00479000
- * RECORDER. IF OBR/MDR QUE IS EMPTY, GO CHECK NEXT 00480000
- * RECORDING QUE. 00481000
- * 00482000
- * 11. ENVIRONMENTAL RECORDING QUE - IF THERE AN MDR REQUEST 00483000
- * ON THE QUE, PUT THE NEXT REQUEST ON TOP OF QUE 00484000
- * AND CALL DMKSTKCP TO STACK CPEXBLOK TO RETURN TO 00485000
- * DMKIOESD. AFTERWARD, EXIT FROM THE RECORDER. 00486000
- * 00487000
- * 12. SVC 76 RECORDING QUE - IF THERE IS AN SVC 76 00488000
- * REQUEST ON THE QUE, PUT THE NEXT REQUEST ON TOP OF 00489000
- * QUE, GET POINTERS TO THE NEXT RECORD, RELEASE 00490000
- * THE CPEXBLOK AND GO TO SVC 76 SECTION OF 00491000
- * RECORDER. IF THE SVC 76 QUE IS EMPTY, GO WRITE 00492000
- * RECORDING PAGE BACK TO THE RECORDING CYLINDER BY 00493000
- * CALLING DMKRPAPT (IF NECESSARY). AFTERWARD, 00494000
- * UNLOCK AND RELEASE RECORDING PAGE 00495000
- * AND VIRTUAL BUFFER PAGE. 00496000
- * 00497000
- * 13. DETERMINE IF THE RECORDING CYLINDER IS 90 % FULL. 00498000
- * IF 90 % FULL, WRITE AN ERROR MESSAGE TO THE 00499000
- * OPERATOR (DMKIOF552E/DMKIOF550E). 00500000
- * 00501000
- * 14. CLEAR THE MCH/CCH ENTRY FLAG AND THE RECORDING IN 00502000
- * PROGRESS FLAG AND RETURN TO CALLER. 00503000
- * 00504000
- * ERROR MESSAGES - 00505000
- * 00506000
- * DMKIOF550E ERROR RECORDING AREA 90 PERCENT FULL; RUN CPEREP 00507100
- * DMKIOF551E ERROR RECORDING AREA FULL; RUN CPEREP 00508100
- * 00509000
- **************************************************************** 00510000
- EJECT 00511000
- DMKIOFM1 RELOC @VA03358 00512000
- MVI MCCHFLAG,MCHFLAG SET MCH ENTRY INDICATOR @VA03358 00513000
- BAL R5,SETUPMCH MOVE MCH/CCH REC. INTO VIRT. PAGE@VA03358 00514000
- EJECT 00515000
- ********************************************************************** 00516000
- * 00517000
- * SUBROUTINE NAME - 00518000
- * 00519000
- * DMKIOFC1 00520000
- * 00521000
- * FUNCTION - 00522000
- * 00523000
- * THIS SUBROUTINE RECORD CHANNEL CHECK (CCH) RECORDS ONTO THE 00524000
- * ERROR RECORDING CYLINDERS 00525100
- * 00526000
- * ATTRIBUTES - 00527000
- * 00528000
- * SERIALLY REUSEABLE, PAGABLE, ENTERED VIA SVC 00529000
- * 00530000
- * ENTRY CONDITIONS - 00531000
- * 00532000
- * GR 6 = ADDRESS OF CCH RECORD 00533000
- * GR 7 = SIZE OF CCH RECORD IN DOUBLEWORDS 00534000
- * GR 11 = ADDRESS OF VMBLOK 00535000
- * GR 12 = ADDRESS OF DMKIOFC1 00536000
- * GR 13 = ADDRESS OF SAVE AREA 00537000
- * 00538000
- * EXIT CONDITIONS - 00539000
- * 00540000
- * NONE 00541000
- * 00542000
- * CALL TO OTHER ROUTINES - 00543000
- * 00544000
- * DMKFRET - TO RETURN ALLOCATED STORAGE FOR RECORD/CPEXBLOK 00545000
- * DMKPGTVG - GET A VIRTUAL BUFFER PAGE 00546000
- * DMKQCNWT - WRITE A MESSAGE TO THE OPERATOR 00547000
- * DMKPGTVR - RELEASE A VIRTUAL BUFFER PAGE 00548000
- * DMKRPAGT - READ A PAGE FROM THE RECORDING CYLINDER 00549000
- * DMKRPAPT - WRITE PAGE RECORD TO RECORDING CYLINDER 00550000
- * DMKPTRUL - UNLOCK RECORDING PAGE 00551000
- * DMKPTRAN - LOCK RECORDING PAGE IN STORAGE 00552000
- * DMKSTKCP - STACK CPEXBLOK TO GET NEXT REQUEST 00553000
- * DMKERMSG - WRITE ERROR MESSAGES 00554000
- * 00555000
- * EXTERNAL REFERENCES - 00556000
- * 00557000
- * DMKIOERP - RECORDING IN PROGRESS FLAG 00558000
- * DMKIOEMX - NO. OF PAGES (MAX) ON A CYLINDER 00559000
- * DMKIOENI - NO. OF PAGES ON LAST CYL WHICH CORRESPONDS 00560100
- * TO RECORDING AREA 90% FULL 00560200
- * DMKIOEIQ - RECORDING QUE CHAIN FOR OBR/MDR RECORDS 00561000
- * DMKIOEES - ERROR RECORDING CYLINDERS FULL FLAG 00562100
- * DMKIOERQ - RECORDING QUE CHAIN FOR ERASE REQUEST 00563000
- * DMKIOEMQ - RECORDING QUE CHAIN FOR MCH RECORDS 00564000
- * DMKIOECQ - RECORDING QUE CHAIN FOR CCH RECORDS 00565000
- * DMKIOENQ - RECORDING QUE CHAIN FOR MDR SYNCHRONOUS RECORDS 00566000
- * DMKIOEVQ - RECORDING QUE CHAIN FOR SVC 76 REQUESTS 00567000
- * 00568000
- * TABLES /WORK AREAS - 00569000
- * 00570000
- * NONE 00571000
- * 00572000
- * NOTES - 00573000
- * 00574000
- * NONE 00575000
- * 00576000
- * REGISTER USAGE - 00577000
- * 00578000
- * GR14,15 LINKAGE REGISTERS 00579000
- * GR12 = MODULE BASE REGISTER 00580000
- * GR11 = VMBLOK ADDRESSABILITY 00581000
- * GR 9 = WORK REGISTER 00582000
- * GR 7 = SIZE OF THE RECORD IN DOUBLEWORDS 00583000
- * GR 6 = ADDRESS OF THE RECORD 00584000
- * GR 5 = SUBROUTINE BAL REGISTER 00585000
- * GR0-4= WORK REGISTERS 00586000
- * 00587000
- * OPERATION - 00588000
- * 00589000
- * I. HANDLE RECORDING FOR CCH RECORDS 00590000
- * 00591000
- * 1. THE OPERATION SECTION FOR CHANNEL CHECK RECORDING IS 00592000
- * THE SAME AS THE OPERATIONS DESCRIBE UNDER DMKIOFM1 00593000
- * OPERATION'S SECTION. 00594000
- * 00595000
- * ERROR MESSAGES - 00596000
- * 00597000
- * DMKIOF550E ERROR RECORDING AREA 90 PERCENT FULL; RUN CPEREP 00598100
- * DMKIOF551E ERROR RECORDING AREA FULL; RUN CPEREP 00599100
- * 00600000
- **************************************************************** 00601000
- EJECT 00602000
- DMKIOFC1 RELOC @VA03358 00603000
- IOFC1 EQU * HANDLE CHANNEL CHECK RECORDS @VA03358 00604000
- MVI MCCHFLAG,CCHFLAG SET CCH ENTRY INDICATOR @VA03358 00605000
- SETUPMCH EQU * HANDLE MCH/CCH RECORD @VA03358 00606000
- BAL R5,CHEKFULL CHECK FOR RECORDING AREA FULL @V5088AA 00607100
- BAL R5,PAGEIN GET VIRT. BUFFER PAGE (IF NEEDED)@VA03358 00608000
- BAL R5,CKOBROOM CHECK FOR ENOUGH ROOM FOR RECORD @VA03358 00609000
- BAL R3,MOVEREC MOVE MCH/CCH REC. INTO VIRT. PAGE@VA03358 00610000
- BAL R5,UPDTHDR UPDATE CONTROL HEADER IN PAGE @VA03358 00611000
- CLI MCCHFLAG,CCHFLAG IS THIS A CCH ENTRY @VA03358 00612000
- BNE *+8 NO, BYPASS RELEASING THE RECORD @VA03358 00613000
- BAL R5,FRETRECD RELEASE CCH RECORD SPACE @VA03358 00614000
- MVC CECYL(3),WORKCYL SET RECORDING CCP VALUE @V5088AA 00615100
- BAL R9,REALWRT WRITE VIRTUAL PAGE BACK TO DISK @VA03358 00616000
- BAL R3,PAGREL UNLOCK AND RELEASE VIRTUAL PAGE @VA03358 00617000
- SPACE 3 00618000
- * 00619000
- * CHECK THE RECORDING QUES FOR ANY OUTSTANDING REQUESTS FROM 00620000
- * MCH / CCH / OBR / MDR / ERASE REQUEST OR SVC 76 REQUEST. 00621000
- * 00622000
- SPACE 1 00623000
- RECDQUE EQU * CHECK RECORDING QUES @VA03358 00624000
- BAL R5,WRITPAG WRITE RECORD PAGE BACK TO DISK @VA05146 00624100
- BAL R5,ERASEQ CHECK THE ERASE REQUEST QUE @VA03358 00625000
- BAL R5,MCHQ CHECK MACHINE CHECK RECORDING QUE@VA03358 00626000
- BAL R5,CCHQ CHECK CHANNEL CHECK RECORDING QUE@VA03358 00627000
- BAL R5,OBRQ CHECK THE OUTBOARD RECORDING QUE @VA03358 00628000
- BAL R5,ENVQ CHECK ENVIRONMENTAL RECORDING QUE@VA03358 00629000
- BAL R5,SVC76Q CHECK THE SVC 76 RECORDING QUE @VA03358 00630000
- BAL R5,STATQ CHECK COUNTER UPDATE QUEUE @VA03757 00632000
- CLC WORKCYL(3),AREA90PC IS RECORDING AREA 90% FULL? @V5088AA 00633100
- BNE *+8 NO, BYPASS SENDING MSG. TO OPER. @VA03358 00634000
- BAL R4,MSG90PC CHECK CYLINDER FOR 90 % FULL @VA03358 00635000
- RESETERP EQU * @VA04803 00636100
- MVI MCCHFLAG,X'00' RESET MCH/CCH ENTRY FLAG @VA04803 00636200
- L R5,=V(DMKIOERP) ADDR OF REC. IN PROGRESS FLAG @VA04803 00636300
- MVI 0(R5),X'00' CLEAR RECORDING IN PROGRESS FLAG @VA04803 00636400
- RETEXIT EQU * EXIT TO CALLER @VA04803 00636500
- EXIT @VA04803 00636600
- EJECT 00637000
- ********************************************************************** 00638000
- * 00639000
- * SUBROUTINE NAME - 00640000
- * 00641000
- * DMKIOFIN 00642000
- * 00643000
- * FUNCTION - 00644000
- * 00645000
- * THIS SUBROUTINE INITIALIZE POINTERS TO AVAILABLE RECORDING 00646000
- * PAGES AT IPL TIME AND AFTER AN ERASE HAS BEEN COMPLETED. 00647000
- * 00648000
- * ATTRIBUTES - 00649000
- * 00650000
- * SERIALLY REUSEABLE, PAGABLE, ENTERED VIA SVC 00651000
- * 00652000
- * ENTRY CONDITIONS - 00653000
- * 00654000
- * GR 12 = ADDRESS OF DMKIOFOB 00655000
- * GR 13 = ADDRESS OF SAVE AREA 00656000
- * 00657000
- * EXIT CONDITIONS - 00658000
- * 00659000
- * NONE 00660000
- * 00661000
- * CALL TO OTHER ROUTINES - 00662000
- * 00663000
- * NONE 00664000
- * 00665000
- * EXTERNAL REFERENCES - 00666000
- * 00667000
- * DMKIOERP - RECORDING IN PROGRESS FLAG 00668000
- * DMKIOEMX - NO. OF PAGES (MAX) ON A CYLINDER 00669000
- * DMKIOENI - NO. OF PAGES ON LAST CYL. WHICH CORRESPONDS 00670100
- * TO RECORDING AREA 90% FULL 00670200
- * DMKIOEEP - ERROR RECORDING CCP (CYL + PAGE) 00671100
- * DMKIOERP - RECORDING IN PROGRESS FLAG 00673000
- * 00674000
- * TABLES /WORK AREAS - 00675000
- * 00676000
- * NONE 00677000
- * 00678000
- * NOTES - 00679000
- * 00680000
- * NONE 00681000
- * 00682000
- * REGISTER USAGE - 00683000
- * 00684000
- * GR14,15 LINKAGE REGISTERS 00685000
- * GR12 = MODULE BASE REGISTER 00686000
- * GR0-5= WORK REGISTERS 00687000
- * 00688000
- * OPERATION - 00689000
- * 00690000
- * I. HANDLE INITIALIZING INCORE POINTERS IN RECORDER 00691000
- * 00692000
- * 1. PICK UP THE ERROR RECORDING CYLINDER THAT WAS 00693000
- * SPECIFIED AT SYSTEM GENERATION TIME AND THE DEVICE 00694000
- * CODE TYPE FOR THE ERROR RECORDING DEVICE FROM 00695000
- * DMKIOEEP. 00696100
- * 00697000
- * 2. PICK UP THE NUMBER OF CYLINDERS FROM DMKIOECT 00698100
- * AND CALCULATE THE ENDING CYLINDER ADDRESS. 00699100
- * 00700000
- * 3. PICK UP MAXIMUN PAGE NUMBER FOR RECORDING CYLINDER 00701000
- * FROM DMKIOEMX. 00702000
- * 00703000
- * 4. PICK UP PAGE VALUE FOR 90% AREA FULL 00704100
- * FROM DMKIOENI. 00705000
- * 00706000
- * 5. INITIALIZE ALL CONSTANTS IN RECORDER. 00707000
- * 00708000
- * 6. RETURN TO CALLER. 00709000
- * 00710000
- **************************************************************** 00711000
- EJECT 00712000
- DMKIOFIN RELOC @VA03358 00713000
- L R5,=V(DMKIOEEP) GET @ OF RECORDING AREA CCPD @V5088AA 00714100
- MVC CECYL(4),0(R5) MOVE CCPD VALUE IN OBR/MDR FIELD @VA03358 00715000
- IC R5,CECYLTYP GET PAGING DEVICE CODE TYPE @VA03358 00716000
- STC R5,WORKTYP SAVE DEV. CODE TYPE IN WORK AREA @VA03358 00717000
- L R5,=V(DMKIOECT) GET @ OF COUNT OF RECORDING CYLS@V5088AA 00717100
- LH R5,0(R5) RETRIEVE NUMBER OF RECORDING CYLS@V5088AA 00717200
- L R3,=V(DMKSYSER) GET ADDRESS OF REC. AREA START @V5088AA 00717300
- LH R3,0(R3) RETRIEVE REC. AREA STARTING CYL. @V5088AA 00717400
- AR R5,R3 ADD STARTING CYLINDER + NO. CYLS @V5088AA 00718100
- BCTR R5,0 SUBTRACT ONE FOR END ADDRESS @V5088AA 00719100
- STH R5,LASTCYL SAVE ADDRESS OF LAST CYLINDER @V5088AA 00720100
- L R5,=V(DMKIOEMX) ADDR. OF MAX. NO. OF PAGES-CYL @VA03358 00721000
- MVC MAXPAGE(1),0(R5) SAVE MAX. NO. OF PAGES/CYL @VA03358 00722000
- L R5,=V(DMKIOENI) GET NUMBER OF PAGES/CYLINDER @VA03358 00723000
- MVC PAG90PC(1),0(R5) THAT REPRESENTS 90 % OF MAX. @VA03358 00724000
- MVI FLAG90PC,X'00' RESET FLAGS FOR MCH/CCH & OBR/MDR@VA03358 00725000
- BAL R5,RECDQUE GET NEXT RECORD FROM RECORDING @VA04803 00731500
- * QUEUE 00731600
- EJECT 00732000
- ****************************************************************** 00733000
- * 00734000
- * SUBROUTINE NAME 00735000
- * 00736000
- * DMKIOFST 00737000
- * 00738000
- * FUNCTION 00739000
- * 00740000
- * GET STORAGE FOR SDRBLOK, UPDATE STATISTICAL COUNTERS 00741000
- * IN THE SDRBLOK 00742000
- * 00743000
- * ATTRIBUTES 00744000
- * 00745000
- * SERIALLY REUSABLE, PAGABLE, ENTERED VIA SVC 00746000
- * 00747000
- * ENTRY CONDITIONS 00748000
- * 00749000
- * GR 6 = ADDRESS OF ERRBLOK 00750000
- * GR 7 = SIZE OF ERRBLOK 00751000
- * GR 8 = ADDRESS OF RDEVBLOK 00752000
- * GR 13 = ADDRESS OF SAVE AREA 00753000
- * 00754000
- * EXIT CONDITIONS 00755000
- * 00756000
- * NONE 00757000
- * 00758000
- * EXTERNAL REFERENCES 00759000
- * 00760000
- * DMKIOERP - RECORDING IN PROGRESS FLAG 00761000
- * DMKIOESQ - RECORDING QUEUE FOR UPDATE REQUESTS 00762000
- * 00763000
- * CALLS TO OTHER ROUTINES 00764000
- * 00765000
- * DMKFREE - TO ALLOCATE FREE STORAGE FOR SDRBLOK 00766000
- * 00767000
- * NOTES 00768000
- * 00769000
- * THIS ROUTINE GETS CONTROL FOR THE PURPOSE OF UPDATING 00770000
- * THE SDR COUNTERS. THE FOLLOWING MODULES ARE RESPONSIBILE 00771000
- * FOR THE CALL TO THIS ROUTINE.. 00772000
- * 00773000
- * DMKBSC 00774000
- * DMKCNS 00775000
- * DMKDAS 00776000
- * DMKGRF 00777000
- * DMKTAP 00778000
- * DMKRSE 00779000
- * 00780000
- * TABLES/WORK AREAS 00781000
- * 00782000
- * ERRBLOK - CONTAIN INFORMATION NEEDED TO UPDATE COUNTERS 00783000
- * SDRCTRS - KEEP COUNT OF SPECIFIC ERRORS 00784000
- * BITABL - THE MASK TABLE 00785000
- * 00786000
- * OPERATION 00787000
- * 00788000
- * 00789000
- * 00790000
- * 00791000
- * 00792000
- * 00793000
- * 00794000
- ********************************************************************** 00795000
- EJECT 00796000
- DMKIOFST RELOC HANDLE @VA03757 00797000
- USING IOERBLOK,R4 ADDRESSIBILITY FOR IOERBLOK @VA03757 00798000
- USING SDRBLOK,R9 ADDRESSABILITY FOR SDRBLOK @VA03757 00799000
- USING ERRBLOK,R10 ADDRESSABILITY FOR ERRBLOK @VA03757 00800000
- USING VMBLOK,R11 ADDRESSIBILITY FOR VMBLOK @VA03757 00801000
- IOFST EQU * DO COUNTER UPDATE FUNCTION @VA03757 00802000
- LR R10,R6 GET ADDRESS OF PASSED BLOCK @VA03757 00803000
- LA R10,4(0,R10) POINT TO REAL ERRBLOK @VA03757 00804000
- LA R4,ERRIOER GET ADDRESS OF IOERBLOK @VA03757 00805000
- LA R8,0(,R8) BE SURE OF HI-ORDER BYTE @VA03757 00806000
- ICM R9,15,RDEVCTRS GET ADDRESS OF SDRBLOK @VA03757 00807000
- BZ GETSDRBK BRANCH IF WE DON'T HAVE ONE @VA03757 00808000
- C R8,SDRRDEV DOES THE SDRBLOK POINT BACK TO @VA03757 00809000
- * THE RDEVBLOK ??? IT BETTER 00810000
- BE CKPARM IT DOES @VA03757 00811000
- ENTRYERR BAL R5,ERREXIT EXIT FROM MODULE @VA03757 00812000
- CKPARM LA R6,ERRPARM GET ADDRESS OF PARAMETER STRING @VA03757 00813000
- CLI 0(R6),ZERO WAS A PARM STRING PASSED ?? @VA03757 00814000
- BE SDRDASD NO, SO GO GET ONE @VA03757 00815000
- SPACE 00816000
- SETUPSDR EQU * @VA03757 00817000
- LA R5,IOERDATA GET ADDRESS OF SENSE INFO @VA03757 00818000
- LA R7,SDRCTRS GET ADDRESS OF COUNTERS @VA03757 00819000
- USING IOERDATA,R5 ADDRESSABILITY FOR SENSE INFO @VA03757 00820000
- USING PARMLST,R6 ADDRESSABILITY FOR PARAMETER LIST@VA03757 00821000
- USING SDRCTRS,R7 ADDRESSABILITY FOR COUNTERS @VA03757 00822000
- NI ERRSDR,X'FF'-(SDRMAX+SDRSHRT+SDRRECD) RESET FLG @VA03757 00823000
- MVI SDRPRMCT,ZERO CLEAR PARAMETER COUNTER @VA03757 00824000
- MVI SDROVFWK,OVFLMSK SET UP OVERFLOW MASK @VA03757 00825000
- ANALPARM EQU * @VA03757 00826000
- MVI SDRFLCT,ZERO RESET FULL BYTE COUNTER SWITCH @VA03757 00827000
- SR R1,R1 *** CLEAR THE *** @VA03757 00828000
- SR R2,R2 *** WORK REGS *** @VA03757 00829000
- SPACE 00830000
- * EXAMINE THE PARAMETER LIST, ONE BYTE AT A TIME, 00831000
- * FIRST CHECKING TO SEE IF IT IS A SPECIAL CHARACTER, 00832000
- * IF NOT ,IT WILL BE HANDLED AS SENSE DATA.. 00833000
- SPACE 00834000
- CLI PARMLST,X'FF' LAST PARAMETER IN THE LIST ?? @VA03757 00835000
- BE STATEXIT YES, WE ARE ALL DONE @VA03757 00836000
- CLI ERRSDR,SDRMAX MAX NO. OF COUNTERS REACHED @VA03757 00837000
- BO COUNTERR YES, GO TO ERROR EXIT @VA03757 00838000
- CLI PARMLST,X'3F' CHECK FOR CHANNEL DATA CHECK ? @VA03757 00839000
- BE CHLDATCK YES, GO CHECK FOR C D C @VA03757 00840000
- CLI PARMLST,X'1F' FULL BYTE COUNTER ?? @VA03757 00841000
- BNE BYPASS04 NO,CONTINUE CHECKING @VA03757 00842000
- BAL R3,FULBYTEN GO UPDATE POINTERS AND TURN ON @VA03757 00843000
- * FULL BYTE SWITCH 00844000
- BYPASS04 LA R3,ANALPARM SET UP RETURN @VA03757 00845000
- CLI PARMLST,X'0F' NOP PARM ?? @VA03757 00846000
- BE UPDTEPTR YES, UPDATE POINTERS @VA03757 00847000
- CLI PARMLST,X'2F' DEVICE DEPENDENT COUNTER UPDATE??@VA03757 00848000
- BE UPDTECNT YES, UPDATE COUNTERS @VA03757 00849000
- SPACE 00850000
- *** THE PARAMETER BYTE HAS THE SENSE BYTE INDEX 00851000
- *** IN THE FOUR HI-ORDER BITS, THE FOUR LO-ORDER BITS 00852000
- *** WILL HAVE THE SENSE BIT THAT WE ARE TESTING FOR, 00853000
- *** IT IS USED AS AN INDEX TO GET THE SENSE BYTE MASK. 00854000
- SPACE 00855000
- SENTST EQU * @VA03757 00856000
- IC R1,PARMLST GET THE PARAMETER BYTE @VA03757 00857000
- SRL R1,4 CLEAR THE BIT INDEX @VA03757 00858000
- AR R1,R5 REG 1 WILL HAVE THE ADDR OF THE @VA03757 00859000
- * SENSE BYTE FOR THE EXECUTED INSTRUCTION 00860000
- IC R2,PARMLST USE SENSE BIT INDEX THIS TIME @VA03757 00861000
- N R2,F15 SAVE 4 LO-ORDER BITS @VA03757 00862000
- CL R2,F7 A VALID PARM ??? @VA03757 00863000
- BNH PARMOK YES, CONTINUE @VA03757 00864000
- BAL R5,ERREXIT NO, EXIT @VA03757 00865000
- PARMOK EQU * @VA03757 00866000
- IC R2,BITABL(R2) REG 2 WILL CONTAIN THE MASK BYTE@VA03757 00867000
- * FOR THE EXECUTED INSTRUCTION 00868000
- EX R2,TSTSENSE GO TEST DESIRED SENSE BIT @VA03757 00869000
- BZ UPDTEPTR BRANCH, IF THE SENSE BIT IS OFF, @VA03757 00870000
- * TO UPDATE THE POINTERS, THEN 00871000
- * EXAMINE THE NEXT PARAMETER BYTE.. 00872000
- SPACE 00873000
- SPACE 00874000
- * *** THE SENSE BIT IS ON *** 00875000
- SENBITON EQU * @VA03757 00876000
- CLI PARMLST,DATCHK IS IT A DATA CHECK ?? @VA03757 00877000
- BE DATACK YES, GO CHECK WHETHER A @VA03757 00878000
- * READ/WRITE 00879000
- SPACE 00880000
- * *** INCREMENT THE COUNTER *** 00881000
- SPACE 00882000
- UPDTECNT EQU * @VA03757 00883000
- IC R2,SDRCTRS PICK UP THE COUNTER @VA03757 00884000
- IC R1,SDROVFWK PICK UP OVERFLOW MASK @VA03757 00885000
- N R1,ANDMASK ANDMASK = '00000011' @VA03757 00886000
- AR R1,R2 UPDATE THE COUNTER @VA03757 00887000
- STC R1,SDRCTRS PUT IT BACK @VA03757 00888000
- SPACE 00889000
- * *** CHECK FOR OVERFLOW *** 00890000
- SPACE 00891000
- OC SDRFLCT(1),SDROVFWK OR THE OVERFLOW MASK @VA03757 00892000
- * AND THE FULL BYTE SWITCH 00893000
- IC R2,SDRFLCT PICK UP NEW MASK @VA03757 00894000
- EX R2,TSTOVFL GO TEST FOR OVERFLOW @VA03757 00895000
- BNO BYPASS01 BRANCH IF NO OVERFLOW @VA03757 00896000
- OI ERRSDR,SDRRECD TURN ON OVERFLOW SWITCH @VA03757 00897000
- BYPASS01 B UPDTEPTR GO UPDATE POINTERS @VA03757 00898000
- SPACE 00899000
- * *** EXECUTED INSTRUCTIONS *** 00900000
- SPACE 00901000
- TSTSENSE TM 0(R1),ZERO TEST SENSE BIT @VA03757 00902000
- TSTOVFL TM SDRCTRS,ZERO @VA03757 00903000
- SPACE 3 00904000
- FULBYTEN EQU * @VA03757 00905000
- MVI SDRFLCT,FULLBYTE TURN ON FULL BYTE SWITCH @VA03757 00906000
- SPACE 00907000
- * *** UPDATE POINTERS FOR NEXT PARAMETER BYTE *** 00908000
- SPACE 00909000
- UPDTEPTR EQU * @VA03757 00910000
- TM SDROVFWK,FIFTEEN RIGHT HAND COUNTER ?? @VA03757 00911000
- BNO BYPASS02 NO, DON'T INCREMENT COUNTER REG @VA03757 00912000
- LA R7,1(,R7) INCREMENT COUNTER REG @VA03757 00913000
- BYPASS02 LA R6,1(,R6) POINT TO NEXT PARAMETER BYTE @VA03757 00914000
- IC R2,SDRPRMCT PICK UP PARAMETER BYTE COUNTER @VA03757 00915000
- LA R2,1(R2) INCREMENT IT @VA03757 00916000
- SLR R1,R1 CLEAR WORK REG @VA03757 00917000
- IC R1,SDRLNGTH PICK UP SDR WORK AREA LENGTH @VA03757 00918000
- SLL R1,1 GET MAX NO. OF SDR COUNTERS @VA03757 00919000
- CLR R1,R2 COMPARE PARAMETER BYTE COUNT @VA03757 00920000
- BL COUNTERR TOO MANY COUNTERS---EXIT @VA03757 00921000
- BNE BYPASS05 TO CONTINUE PROCESS @VA03757 00922000
- OI ERRSDR,SDRMAX MAX NO. OF COUNTERS REACHED @VA03757 00923000
- BYPASS05 EQU * CONTINUE PROCESS @VA03757 00924000
- STC R2,SDRPRMCT STORE UPDATED COUNT @VA03757 00925000
- XI SDROVFWK,FOXES CHANGE TO OTHER MASK @VA03757 00926000
- SR R1,R1 *** CLEAR THE *** @VA03757 00927000
- SR R2,R2 *** WORK REGS *** @VA03757 00928000
- BR R3 RETURN @VA03757 00929000
- COUNTERR BAL R5,ERREXIT EXIT VIA ERROR EXIT @VA03757 00930000
- SPACE 1 00931000
- DROP R5 @VA03757 00932000
- DROP R6 @VA03757 00933000
- DROP R7 @VA03757 00934000
- SPACE 2 00935000
- CHLDATCK EQU * @VA03757 00936000
- LA R3,STATEXIT RESET THE RETURN REG @VA03757 00937000
- TM IOERCSW+5,CDC CHANNEL DATA CHECK ?? @VA03757 00938000
- BNO STATEXIT NO CDC , SO ALL DONE @VA03757 00939000
- LA R7,SDRCTRS RESET THE COUNTER POINTER @VA03757 00940000
- LA R7,7(,R7) POINT AT CORRECT COUNTER @VA03757 00941000
- MVI SDROVFWK,FIFTEEN RESET THE OVER FLOW MASK @VA03757 00942000
- B UPDTECNT NOW GO UPDATE THE COUNTER @VA03757 00943000
- SPACE 1 00944000
- DATACK EQU * @VA03757 00945000
- CLI SDRPRMCT,ONE SECOND PARAMETER BYTE ?? @VA03757 00946000
- BH UPDTECNT NO,ITS HIGHER,SO UPDATE COUNTER @VA03757 00947000
- BE TSTREAD SECOND BYTE,GO CHECK FOR READ @VA03757 00948000
- TM IOERFLG3,IOERREAD FIRST BYTE,WAS IT A READ OP ? @VA03757 00949000
- BO UPDTECNT YES,UPDATE READ DATA CK COUNTER @VA03757 00950000
- B UPDTEPTR NO,SO GO LOOK AT NEXT BYTE @VA03757 00951000
- TSTREAD TM IOERFLG3,IOERREAD WAS IT A READ OP ?? @VA03757 00952000
- BO UPDTEPTR YES,BUT WE ARE LOOKING FOR A @VA03757 00953000
- * WRITE DATA CK, GO TO NEXT BYTE 00954000
- B UPDTECNT IT WAS A WRITE,UPDATE COUNTER @VA03757 00955000
- SPACE 2 00956000
- GETSDRBK EQU * GET SDRBLOK, IF IT IS USED!! @VA03757 00957000
- SPACE 1 00958000
- CKFORTAP LA R1,SDRSIZE SET UP FOR SMALL SDRBLOK @VA03757 00959000
- CLI RDEVTYPC,CLASTAPE A TAPE DRIVE ?? @VA03757 00960000
- BNE GETSDR NO, NOT TAPE , GET SMALL SDR @VA03757 00961000
- TM RDEVTYPE,TYP3410+TYP3420 IS IT A 3400 ?? @VA03757 00962000
- BZ GETSDR NOT EITHER ONE @VA03757 00963000
- LA R1,SDRSIZE1 SET UP FOR LARGE SDRBLOK @VA03757 00964000
- GETSDR BAL R3,CALLFRE GO GET SDRBLOK @VA03757 00965000
- BAL R3,OBRMDRCL NOW CLEAR IT WITH ZEROES @VA03757 00966000
- LR R9,R1 PUT SDRBLOK ADDRESS IN BASE REG @VA03757 00967000
- LA R9,0(,R9) BE SURE (CLEAR HI-ORDER BYTE) @VA03757 00968000
- ST R9,RDEVCTRS SAVE SDRBLOK ADDRESS @VA03757 00969000
- SPACE 2 00970000
- *** BUILD SDRBLOK *** 00971000
- SPACE 1 00972000
- ST R8,SDRRDEV SAVE ADDRESS OF RELATED RDEVBLOK @VA03757 00973000
- MVI SDRLNGTH,SDRCNTLN SET LENGTH OF SDR COUNTERS @VA03757 00974000
- LR R7,R0 GET LENGTH OF RECORD(DOUBLEWORDS)@VA03757 00975000
- C R7,F4 DID WE GET LARGE SDRBLOK ?? @VA03757 00976000
- BL SDRLNOK NO,LENGTH IS OK @VA03757 00977000
- MVI SDRLNGTH,SDRCTLN1 CHANGE SDR COUNTER LENGTH @VA03757 00978000
- * FOR 3400 TAPE DRIVES 00979000
- SDRLNOK EQU * @VA03757 00980000
- MVC SDRCUA+1(2),ERRIOB GET PRIMARY DEVICE @VA03757 00981000
- B CKPARM GO LOOK FOR PARAMETERS @VA03757 00982000
- SPACE 2 00983000
- SDRDASD CLI RDEVTYPC,CLASDASD DASD ?? @VA03757 00984000
- BNE SDRTAPE NOT DASD,GO CHECK TAPE @VA03757 00985000
- LA R6,PARMDAS SET UP PARAMETER REG @VA03757 00986000
- IC R3,IOERDATA+4 GET PHYSICAL DRIVE ADDRESS @VA03757 00987000
- N R3,F15 SAVE 4 LOW ORDER BITS @VA04586 00988000
- LH R7,ERRIOB GET LOGICAL DEVICE ADDRESS @VA03757 00989000
- N R7,=X'0000FFF0' CLEAR LOW ORDER 4 BITS @VA03757 00990000
- OR R7,R3 TOGETHERNESS @VA03757 00991000
- STCM R7,7,SDRCUA STORE PRIMARY DEVICE ADDRESS @VA03757 00992000
- B SETUPSDR GO LOOK AT PARAMETER LIST @VA03757 00993000
- SPACE 1 00994000
- SDRTAPE EQU * @VA03757 00995000
- CLI RDEVTYPC,CLASTAPE IS IT A TAPE DRIVE ?? @VA03757 00996000
- BNE SDRTERM NO, GO CHECK FOR TERMINAL @VA03757 00997000
- LA R6,PARMTAP1 SET PARAMETER LIST FOR 3410 @VA03757 00998000
- TM RDEVTYPE,TYP3410 3410 TAPE DRIVE ?? @VA03757 00999000
- BO SETUPSDR YES,CONTINUE PROCESSING @VA03757 01000000
- LA R6,PARMTAP2 SET PARAMETER LIST FOR 3420 @VA03757 01001000
- CLI RDEVTYPE,TYP3420 3420 TAPE DRIVE ?? @VA03757 01002000
- BE SETUPSDR YES ,CONTINUE PROCESSING @VA03757 01003000
- * NOTE: WE SHOULD HAVE PASSED A 01004000
- * PARAMETER LIST FOR 2400 DRIVE.. 01005000
- BAL R5,ERREXIT DONT KEEP STATS FOR THIS DEVICE. @VA03757 01006000
- SPACE 1 01007000
- SDRTERM EQU * @VA03757 01008000
- CLI RDEVTYPC,CLASTERM IS IT A TERMINAL ?? @VA03757 01009000
- BNE SDRGRAF NO, GO TRY GRAPHICS @VA03757 01010000
- LA R6,PARMCNS SET PARAMETER LIST FOR 3210 ETC..@VA03757 01011000
- CLI RDEVTYPE,TYP3210 3210,3215,2150 OR1052 ?? @VA03757 01012000
- BE SETUPSDR YES,CONTINUE PROCESSING @VA03757 01013000
- LA R6,PARMBSC SET UP PARAMETER LIST FOR BI-SYNC@VA03757 01014000
- TM RDEVTYPE,TYP2700+TYPTTY 2700 OR TTY ?? @VA03757 01015000
- BM SETUPSDR YES,CONTINUE PROCESSING @VA03757 01016000
- CLI RDEVTYPE,TYPSDLC IS IT SDLC @V67CDF1 01016100
- BM SETUPSDR YES,CONTINUE PROCESSING @V67CDF1 01016200
- TM RDEVTYPE,TYPBSC REMOTE 3270? @VA07662 01016300
- BO SETUPSDR YES,CONTINUE PROCESSING @VA07662 01016600
- CLI RDEVTYPE,TYP1050 IS IT A 1050 ?? @VA03757 01017000
- BE SETUPSDR YES,CONTINUE PROCESSING @VA03757 01018000
- CLI RDEVTYPE,TYP2741 HOW ABOUT A 2741 ?? @VA03757 01019000
- BE SETUPSDR IT IS,CONTINUE PROCESSING @VA03757 01020000
- BAL R5,ERREXIT DONT KNOW WHAT WE HAVE, @VA03757 01021000
- * ITS NOT SUPPORTED!! EXIT 01022000
- SPACE 1 01023000
- SDRGRAF EQU * @VA03757 01024000
- CLI RDEVTYPC,CLASGRAF COULD IT BE GRAPHICS ?? @VA03757 01025000
- BNE SDRRSE NO,TRY UNIT RECORD @VA03757 01026000
- LA R6,PARMGRF SET PARAMETER LIST FOR GRAPHICS @VA03757 01027000
- TM RDEVTYPE,TYP3066 IS IT A 168 ?? @VA03757 01028000
- BO SETUPSDR YES,CONTINUE PROCESSING @VA03757 01029000
- * NOTE: WE SHOULD HAVE PASSED A 01030000
- * PARAMETER LIST FOR 3277 DEVICE 01031000
- GRAFERR BAL R5,ERREXIT NO PARAMETER LIST, ERROR EXIT @VA03757 01032000
- SPACE 1 01033000
- SDRRSE EQU * @VA03757 01034000
- TM RDEVTYPC,CLASURI+CLASURO UNIT RECORD,EITHER ONE?@VA03757 01035000
- BZ RSEERR UNKNOWN CLASS -- EXIT @VA03757 01036000
- LA R6,PARMRSE SET UP PARAMETER LIST @VA03757 01037000
- TM RDEVTYPE,TYP2501 IS IT A 2501 ?? @VA03757 01038000
- BO SETUPSDR YES,CONTINUE PROCESSING @VA03757 01039000
- TM RDEVTYPE,TYP2520R IS IT 2520 READER ?? @VA03757 01040000
- BO SETUPSDR YES,CONTINUE PROCESSING @VA03757 01041000
- LA R6,PARMRSE1 CHANGE PARAMETER LIST POINTER @VA03757 01042000
- TM RDEVTYPE,TYP2540R IS IT A 2540 READER ?? @VA03757 01043000
- BO SETUPSDR YES,CONTINUE PROCESSING @VA03757 01044000
- LA R6,PARMRSE2 SET PARAMETER LIST FOR 1403 @VA03757 01045000
- CLI RDEVTYPE,TYP1403 IS IT A 1403 PRINTER?? @V386298 01046000
- BE SETUPSDR YES, CONTINUE PROCESSING @V386298 01047000
- LA R6,PARMRSE3 SET UP FOR 1443 @VA03757 01048000
- TM RDEVTYPE,TYP1443 IS IT A 1443 ?? @VA03757 01049000
- BO SETUPSDR YES,CONTINUE PROCESSING @VA03757 01050000
- LA R6,PARMRSE4 SET UP FOR 3211 OR 3203 @V386298 01051000
- TM RDEVTYPE,TYP3211 IS IT A 3211 PRINTER ?? @VA03757 01052000
- BO SETUPSDR YES,CONTINUE PROCESSING @VA03757 01053000
- * NOTE: WE SHOULD HAVE PASSED A PARAMETER 01053100
- * LIST FOR THE 3800 PRINTER 01053200
- RSEERR BAL R5,ERREXIT UNIT RECORD TYPE, NOT SUPPORTED @VA03757 01054000
- SPACE 2 01055000
- ERREXIT EQU * ERROR EXIT @VA03757 01056000
- MVI RDEVCTRS,FOXES SUSPEND SDR FOR THIS DEVICE @VA03757 01057000
- STM R5,R6,SDRCTRS SAVE ERROR DATA @VA03757 01058000
- STC R2,SDRCTRS SAVE ONE MORE BYTE @VA03757 01059000
- B STAEXIT1 RETURN TO CALLER @VA03757 01060000
- SPACE 2 01061000
- STATEXIT EQU * @VA03757 01062000
- TM ERRSDR,SDRRECD TEST FOR COUNTER OVERFLOW @VA03757 01063000
- BNO STAEXIT1 NOT ON , SO EXIT @VA03757 01064000
- SPACE 2 01065000
- * CHECK THE OBR QUEUE FOR ANY REQUESTS FOR THIS DEVICE, IF THERE 01066000
- * IS ONE, JUST EXIT, IF NONE--- QUEUE THIS ERRBLOK ON THE 01067000
- * OBR QUEUE SO AN OBR RECORD WILL BE WRITTEN FOR COUNTER OVERFLOW.. 01068000
- SPACE 01069000
- L R6,=V(DMKIOEIQ) GET ADDRESS OF OBR QUEUE @VA03757 01070000
- QUESRCH ICM R6,15,0(R6) GET POINTER TO FIRST REQUEST @VA03757 01071000
- BZ QUERRBLK IF ZERO, GO QUEUE THIS ERRBLOK @VA03757 01072000
- L R5,CPEXR6-CPEXBLOK(R6) GET ADD OF QUE'ED BLOK @VA03757 01073000
- CLC ERRIOB(2),ERRIOB-ERRBLOK+4(R5) SAME DEVICE ??? @VA03757 01074000
- BE STAEXIT1 YES, NO NEED TO QUEUE ANOTHER ONE@VA03757 01075000
- B QUESRCH CONTINUE DOWN THE QUEUE.. @VA03757 01076000
- SPACE 01077000
- QUERRBLK EQU * FIRST, DETERMINE OBR SIZE. @VA03757 01078000
- CLI SDRLNGTH,SDRCNTLN SHORT OBR TO BE BUILT??? @VA03757 01079000
- BNE QUEBLOK NO, BUILD LONG OBR @VA03757 01080000
- OI ERRSDR,SDRSHRT SET FLAG FOR SHORT OBR @VA03757 01081000
- QUEBLOK EQU * NOW QUEUE THE ERRBLOK @VA03757 01082000
- BAL R5,REGSETUP GET REGS READY @VA03757 01083000
- SRL R7,3 CONVERT BYTES TO DOUBLE WORDS @VA04748 01084000
- GCPEX EQU * GET SPACE FOR CPEXBLOK @VA03757 01085000
- LA R0,CPEXSIZE GET SIZE IN DOUBLEWORDS @VA03757 01086000
- CALL DMKFREE GET STORAGE FOR CPEXBLOK @VA03757 01087000
- USING CPEXBLOK,R1 SET UP ADDRESSABILITY FOR CPEXBLK@VA03757 01088000
- STM R0,R15,CPEXREGS SAVE ALL REGISTERS IN CPEXBLOK @VA03757 01089000
- SLR R4,R4 CLEAR REGISTER R4 @VA03757 01090000
- ST R4,CPEXFPNT CLEAR POINTER TO NEXT CPEXBLOK @VA03757 01091000
- L R3,=V(DMKIOEIQ) GET POINTER TO QUEUE @VA03757 01092000
- DROP R1 DROP CPEXBLOK BASE REGISTER @VA03757 01093000
- SPACE 2 01094000
- QCPEX EQU * QUE CPEXBLOK OFF RECORDING QUE @VA03757 01095000
- LR R4,R3 GET POINTER TO RECORDING QUE @VA03757 01096000
- ICM R3,15,0(R3) GET POINTER TO NEXT CPEXBLOK @VA03757 01097000
- BNZ QCPEX YES, GET POINTER TO NEXT CPEXBLOK@VA03757 01098000
- ST R1,0(,R4) QUE CPEXBLOK AT THE END OF CHAIN @VA03757 01099000
- B RECDQUE GO CHECK THE QUEUES @VA03757 01100000
- SPACE 2 01101000
- DROP R10 @VA03757 01102000
- SPACE 2 01103000
- STAEXIT1 EQU * EXIT, FIRST CHECKING OTHER QUEUES@VA03757 01104000
- BAL R5,REGSETUP GET REGS READY @VA03757 01105000
- BAL R5,FRETRECD RELEASE THE RECORD @VA03757 01106000
- B RECDQUE GET NEXT REC. FROM RECORDING QUE @VA03757 01107000
- SPACE 2 01108000
- DROP R4 @VA03757 01109000
- DROP R9 @VA03757 01110000
- EJECT 01111000
- SPACE 01112000
- * 01113000
- * SUBROUTINES FOR RECORDING ERROR RECORDS ONTO THE ERROR 01114000
- * RECORDING CYLINDERS. 01115000
- * 01116000
- SPACE 2 01117000
- PAGEIN EQU * PUT REAL PAGE ADDRESS IN REG. 2 @VA03358 01118000
- SR R4,R4 CLEAR WORK REGISTER @VA03358 01119000
- C R4,IOEREALA IS THERE A RECORDING PAGE ADDR @VA03358 01120000
- BNE RECREST YES, GET REAL PAGE ADDRESS @VA03358 01121000
- CALL DMKPGTVG ALLOCATE PAGE OF VIRTUAL STORAGE @VA03358 01122000
- ST R1,IOEVMPAD SAVE VIRTUAL PAGE ADDRESS @VA03358 01123000
- BAL R9,REALREAD GET A RECORDING PAGE FOR RECORD @VA03358 01124000
- RECREST EQU * @VA03358 01125000
- L R1,IOEVMPAD GET VIRTUAL PAGE ADDRESS @VA03358 01126000
- L R2,IOEREALA GET RECORDING PAGE ADDRESS @VA03358 01127000
- BR R5 RETURN TO IN LINE CODE @VA03358 01128000
- SPACE 2 01129000
- REALWRT EQU * WRITE RECORDING PAGE BACK TO DASD@VA03358 01130000
- L R1,IOEVMPAD GET VIRTUAL BUFFER ADDRESS @VA03358 01131000
- REALWRTS EQU * WRITE RECORDING PAGE TO DISK @VA03358 01132000
- L R0,WORKCYL GET CCPD (CYL,CYL,PAGE,DEV TYPE) @VA03358 01133000
- CALL DMKRPAPT,PARM=SYSTEM MOVE RECORDING PAGE TO DISK@VA03358 01134000
- BZ RLWREXIT IF ZERO, SUCCESSFUL WRITE @VA03358 01135000
- L R2,IOEREALA GET ADDRESS OF REAL PAGE @VA03358 01136000
- BAL R3,UPPAG UPDATE THE PAGE NUMBER @VA03358 01137000
- STC R14,WORKPAGE SAVE PAGE NO. IF NOT AT MAXIMUN @VA03358 01138000
- MVC RECCCPD(2),WORKCYL UPDATE CCPD FIELD IN HEADER @VA03358 01139000
- B REALWRTS TRY WRITING PAGE OUT TO DISK @VA03358 01140000
- RLWREXIT EQU * @VA03358 01141000
- L R2,IOEREALA GET THE REAL PAGE ADDRESS @VA03358 01142000
- BR R9 RETURN TO IN LINE CODE @VA03358 01143000
- SPACE 2 01144000
- REALREAD EQU * GET ADDRESS OF RECORDING PAGE @VA03358 01145000
- L R0,WORKCYL GET RECORDING PAGE CCPD VALUE @VA03358 01146000
- L R1,IOEVMPAD GET RECORDING PAGE VIRTUAL ADDR @VA03358 01147000
- CALL DMKRPAGT,PARM=SYSTEM GET REC. PAGE REAL ADDRESS @VA03358 01148000
- LA R2,(BRING+LOCK+DEFER+SYSTEM) GET OPTIONS @VA03358 01149000
- CALL DMKPTRAN BRING IN RECORDING PAGE @VA03358 01150000
- BNZ RLRDERR IF ERROR , GET ANOTHER PAGE @VA03358 01151000
- ST R2,IOEREALA SAVE RECORDING PAGE REAL ADDRESS @VA03358 01152000
- TM RECFLAG1,RECPAGFL IS RECORDING PAGE FULL @VA03358 01153000
- BO RLRDERR YES, GET ANOTHER RECORDING PAGE @VA03358 01154000
- MVI RECFLAG1,RECPAGIU SET RECORDING PAGE IN USE FLAG@VA03358 01155000
- BR R9 RETURN TO IN LINE CODE @VA03358 01156000
- SPACE 1 01157000
- RLRDERR EQU * UPDATE TO NEXT RECORDING PAGE @VA03358 01158000
- BAL R3,UPPAG UPDATE RECORDING PAGE NUMBER @VA03358 01159000
- STC R14,WORKPAGE SAVE PAGE NO. IF NOT AT MAXIMUN @VA03358 01160000
- BAL R3,REALREAD GET REAL ADDR FOR RECORDING PAGE @VA03358 01161000
- SPACE 2 01162000
- PAGREL EQU * RELEASE THE VIRTUAL PAGE @VA03358 01163000
- L R2,IOEREALA GET ADDRESS OF RECORDING PAGE @VA03358 01164000
- L R1,IOEVMPAD GET ADDRESS OF VIRTUAL PAGE @VA03358 01165000
- CALL DMKPTRUL UNLOCK THE VIRTUAL PAGE @VA03358 01166000
- XC IOEREALA,IOEREALA CLEAR THE REAL PAGE ADDRESS @VA03358 01167000
- SR R0,R0 FORCE SWAP CCPD ENTRY TO ZERO @VA03358 01168000
- CALL DMKRPAGT,PARM=SYSTEM RELEASE BACKUP VIRTUAL PAGE@VA03358 01169000
- CALL DMKPGTVR RELEASE VIRTUAL MEMORY PAGE @VA03358 01170000
- BR R3 RETURN TO IN LINE CODE @VA03358 01171000
- SPACE 2 01172000
- UPPAG EQU * UPDATE TO NEXT RECORDING PAGE NO.@VA03358 01173000
- ICM R14,B'0111',WORKCYL CURRENT RECORDING CYL & PAGE@V5088AA 01174100
- LA R14,1(,R14) UPDATE RECORDING PAGE NO. BY ONE @VA03358 01175000
- CLM R14,B'0111',AREA90PC IS RECORDING AREA 90% FULL?@V5088AA 01176100
- BNE UPPAGMAX NO, CHECK FOR MAX. NO. PAGES @VA03358 01177000
- ST R14,PAGNOUPD SAVE UPDATED PAGE NUMBER @VA11472 01178500
- BAL R4,MSG90PC WRITE 90 % MESSAGE TO OPERATOR @VA03358 01179000
- L R14,PAGNOUPD GET UPDATED PAGE NUMBER @VA11472 01180500
- UPPAGMAX EQU * CHECK MAX. PAGE NO. VALUE FOR CYL@VA03358 01181000
- CLM R14,1,MAXPAGE IS IT = TO MAX. PAGE NO. VALUE @VA03358 01182000
- BNER R3 NO, RETURN TO IN LINE CODE @VA03358 01183000
- CLM R14,B'0110',LASTCYL IS IT LAST PAGE ON LAST CYL?@V5088AA 01183100
- BNE UPCYL IF NOT, UPDATE TO NEXT CYL NO. @V5088AA 01183600
- BAL R4,MSGFULL WRITE CYL. FULL MSG. TO OPERATOR @VA03358 01184000
- SPACE 2 01185000
- UPDTHDR EQU * UPDATE CONTROL HEADER INDEX VALUE@VA03358 01186000
- L R2,IOEREALA GET ADDRESS OF RECORDING PAGE @VA03358 01187000
- LH R4,RECNXT GET INDEX VALUE TO AVAILABLE AREA@VA03358 01188000
- LA R4,0(R4,R7) UPDATE TO AVAILABLE SPACE ON PAGE@VA03358 01189000
- TM MCCHFLAG,MCHFLAG IS THIS A MCH/CCH ENTRY @VA03358 01190000
- BZ *+8 NO, BYPASS UPDATING INDEX VALUE @VA03358 01191000
- LA R4,4(,R4) ADD LENGTH FIELD TO INDEX VALUE @VA03358 01192000
- STH R4,RECNXT SAVE NEW INDEX VALUE @VA03358 01193000
- LA R4,0(R4,R2) GET ADDR TO NEW AVAILABLE SPACE @VA03358 01194000
- L R3,FFS STORE ENDING INDICATOR (FFFFFFFF)@VA03358 01195000
- ST R3,0(,R4) AT BEGINNING OF AVAILABLE SPACE @VA03358 01196000
- BR R5 RETURN TO IN LINE CODE @VA03358 01197000
- UPCYL EQU * UPDATE WORKCYL TO NEXT CYL. NO. @V5088AA 01197100
- SRL R14,8 ISOLATE CC PORTION OF CCP @V5088AA 01197200
- LA R14,1(R14) UPDATE RECORDING CYL BY 1 @V5088AA 01197300
- STH R14,WORKCYL UPDATE CURRENT RECORDING CYL NO. @V5088AA 01197400
- SLL R14,8 MAKE ROOM FOR PAGE NUMBER @V5088AA 01197500
- LA R14,1(R14) INITIALIZE TO 1ST PAGE ON NEW CYL@V5088AA 01197600
- BR R3 RETURN TO INLINE CODE @V5088AA 01197700
- SPACE 2 01198000
- CKOBROOM EQU * ENOUGH SPACE ON RECORDING PAGE @VA03358 01199000
- LH R4,RECNXT INDEX VALUE TO AVAILABLE SPACE @VA03358 01200000
- LA R3,4095-L'INITFMT MAXIMUM SIZE OF RECORDING PAGE@VA03358 01201000
- LA R4,4(R4) UPDATE INDEX FOR LENGTH FIELD @VA03358 01202000
- SR R3,R4 GET THE REMAINING SPACE ON PAGE @VA03358 01203000
- CR R7,R3 CAN ERROR RECORD FIX ON REC PAGE @VA03358 01204000
- BLR R5 YES, RETURN TO IN LINE CODE @VA03358 01205000
- MVI RECFLAG1,RECPAGFL SET RECORDING PAGE FULL FLAG @VA03358 01206000
- BAL R9,REALWRT WRITE RECORDING PAGE BACK TO DISK@VA03358 01207000
- BAL R3,UPPAG UPDATE RECORDING PAGE NUMBER @VA03358 01208000
- STC R14,WORKPAGE SAVE PAGE NO. IF NOT AT MAXIMUN @VA03358 01209000
- BAL R9,REALREAD GET REAL ADDR FOR RECORDING PAGE @VA03358 01210000
- MVC RECNXT(8),INITFMT INITIALIZE CONTROL HEADER @VA03358 01211000
- BR R5 RETURN TO IN LINE CODE @VA03358 01212000
- SPACE 2 01213000
- ERASEQ EQU * CHECK THE ERASE REQUEST QUE @VA03358 01214000
- L R9,=V(DMKIOERQ) GET POINTER TO ERASE REQUEST QUE@VA03358 01215000
- ICM R4,15,0(R9) GET FIRST ENTRY IN ERASE QUE @VA03358 01216000
- BZR R5 IF ZERO, NO REQUEST AVAILABLE @VA03358 01217000
- BAL R5,WRITPAG WRITE RECORDING PAGE BACK TO DISK@VA03358 01218000
- L R9,=V(DMKIOERQ) GET POINTER TO ERASE REQUEST QUE@VA03358 01219000
- L R4,0(,R9) GET FIRST ENTRY IN ERASE QUE @VA03358 01220000
- BAL R5,STACKREQ STACK CPEXBLOK AND EXIT TO CALLER@VA03358 01221000
- SPACE 2 01222000
- MCHQ EQU * CHECK MACHINE CHECK RECORDING QUE@VA03358 01223000
- L R9,=V(DMKIOEMQ) GET POINTER TO MCH RECORDING QUE@VA03358 01224000
- ICM R4,15,0(R9) GET FIRST ENTRY IN MCH QUE @VA03358 01225000
- BZR R5 IF ZERO, NO REQUEST AVAILABLE @VA03358 01226000
- BAL R5,WRITPAG WRITE RECORDING PAGE BACK TO DISK@VA03358 01227000
- L R9,=V(DMKIOEMQ) GET POINTER TO MCH RECORDING QUE@VA03358 01228000
- L R4,0(,R9) GET FIRST ENTRY IN MCH QUE @VA03358 01229000
- BAL R5,STACKREQ STACK CPEXBLOK AND EXIT TO CALLER@VA03358 01230000
- SPACE 2 01231000
- CCHQ EQU * CHECK CCH RECORDING QUE @VA03358 01232000
- L R9,=V(DMKIOECQ) GET POINTER TO CCH RECORDING QUE@VA03358 01233000
- ICM R4,15,0(R9) GET FIRST ENTRY IN CCH QUE @VA03358 01234000
- BZR R5 IF ZERO, NO REQUEST AVAILABLE @VA03358 01235000
- BAL R5,WRITPAG WRITE BACK RECORDING PAGE ON DISK@VA03358 01236000
- L R9,=V(DMKIOECQ) GET POINTER TO CCH RECORDING QUE@VA03358 01237000
- L R4,0(,R9) GET FIRST ENTRY IN CCH QUE @VA03358 01238000
- L R2,0(,R4) GET POINTER TO SECOND CCH REQUEST@VA03358 01239000
- ST R2,0(,R9) PUT REQUEST AT BEGINNING OF QUE @VA03358 01240000
- LM R6,R8,CPEXR6-CPEXBLOK(R4) GET SET UP REGISTERS @VA03358 01241000
- BAL R5,FRETCPEX RELEASE STORAGE FOR CPEXBLOK @VA03358 01242000
- BAL R5,IOFC1 GO RECORD CCH RECORDS @VA03358 01243000
- SPACE 2 01244000
- OBRQ EQU * CHECK OUTBOARD RECORDING QUE @VA03358 01245000
- L R9,=V(DMKIOEIQ) GET PTR TO OUTBOARD REC. QUE @VA03358 01246000
- ICM R4,15,0(R9) GET FIRST ENTRY IN OUTBOARD QUE @VA03358 01247000
- BZR R5 IF ZERO, NO REQUEST AVAILABLE @VA03358 01248000
- L R2,0(,R4) PTR TO SECOND OUTBOARD REQUEST @VA03358 01249000
- ST R2,0(,R9) PUT REQUEST AT BEGINNING OF QUE @VA03358 01250000
- LM R6,R8,CPEXR6-CPEXBLOK(R4) GET SET UP REGISTERS @VA03358 01251000
- BAL R5,FRETCPEX RELEASE CPEXBLOK @VA03358 01252000
- BAL R5,IOFOB GO RECORD OBR/MDR RECORDS @VA03358 01253000
- SPACE 2 01254000
- ENVQ EQU * CHECK ENVIRONMENTAL RECORDING QUE@VA03358 01255000
- L R9,=V(DMKIOENQ) GET PTR TO ENVIRON. REQUEST QUE @VA03358 01256000
- ICM R4,15,0(R9) GET FIRST ENTRY IN MDR QUE @VA03358 01257000
- BZR R5 IF ZERO, NO REQUEST AVAILABLE @VA03358 01258000
- STACKREQ EQU * STACK CPEXBLOK AND EXIT TO CALLER@VA03358 01259000
- L R2,0(,R4) GET POINTER TO SECOND MDR REQUEST@VA03358 01260000
- ST R2,0(,R9) PUT REQUEST AT BEGINNING OF QUE @VA03358 01261000
- BAL R5,STKCPEX GO STACK CPEXBLOK AND EXIT @VA03358 01262000
- SPACE 2 01263000
- SVC76Q EQU * CHECK SVC 76 RECORDING QUE @VA03358 01264000
- L R9,=V(DMKIOEVQ) GET PTR TO SVC 76 REQUEST QUE @VA03358 01265000
- ICM R4,15,0(R9) GET FIRST ENTRY IN SVC 76 QUE @VA03358 01266000
- BZR R5 IF ZERO, NO REQUEST AVAILABLE @VA03358 01267000
- L R2,0(,R4) GET PTR TO SECOND SVC 76 REQUEST @VA03358 01268000
- ST R2,0(,R9) PUT REQUEST AT BEGINNING OF QUE @VA03358 01269000
- LM R6,R8,CPEXR6-CPEXBLOK(R4) GET SET UP REGISTERS @VA03358 01270000
- BAL R5,FRETCPEX RELEASE CPEXBLOK @VA03358 01271000
- BAL R5,IOFVR GO RECORD ALL SVC 76 REQUESTS @VA03358 01272000
- SPACE 2 01273000
- STATQ EQU * CHECK COUNTER UPDATE QUEUE @VA03757 01274000
- L R9,=V(DMKIOESQ) GET POINTER TO UPDATE QUEUE @VA03757 01275000
- ICM R4,15,0(R9) GET FIRST ENTRY ON UPDATE QUEUE @VA03757 01276000
- BZR R5 IF ZERO, NO REQUEST AVAILABLE @VA03757 01277000
- L R2,0(,R4) PTR TO SECOND UPDATE REQUEST @VA03757 01278000
- ST R2,0(R9) PUT REQUEST AT BEGINNING OF QUEUE@VA03757 01279000
- LM R6,R8,CPEXR6-CPEXBLOK(R4) SET UP REGISTERS @VA03757 01280000
- BAL R5,FRETCPEX RELEASE CPEXBLOK @VA03757 01281000
- B IOFST GO UPDATE STATISTICAL COUNTERS @VA03757 01282000
- SPACE 2 01283000
- STKCPEX EQU * STACK CPEXBLOK AND EXIT TO CALLER@VA03358 01284000
- LR R1,R4 GET ADDRESS OF CPEXBLOK @VA03358 01285000
- CALL DMKSTKCP STACK CPEXBLOK @VA03358 01286000
- MVI MCCHFLAG,X'00' RESET MCH/CCH ENTRY FLAG @VA03358 01287000
- BAL R5,RETEXIT GO EXIT TO CALLER @VA03358 01288000
- SPACE 2 01289000
- CHEKFULL EQU * CHECK CYLINDER FOR FULL CONDITION@VA03358 01290000
- MVC WORKCYL(3),CECYL MOVE CYL AND PAGE NO. IN AREA @VA03358 01292000
- SLL R7,3 CONVERT DOUBWORDS TO ACTUAL SIZE @VA03358 01293000
- L R4,=V(DMKIOEES) RECORDING AREA FULL INDICATOR @V5088AA 01294100
- CLI 0(R4),X'FF' IS RECORDING AREA FULL? @V5088AA 01295100
- BE MSGFULL YES, GO WRITE AREA FULL MESSAGE @V5088AA 01296100
- BR R5 RETURN TO IN LINE CODE @VA03358 01297000
- SPACE 2 01298000
- SPACE 2 01306000
- WRITPAG EQU * WRITE RECORDING PAGE BACK ON DISK@VA03358 01307000
- SR R3,R3 CLEAR WORK REGISTER @VA03358 01308000
- C R3,IOEREALA DOES AN ADDRESS EXIST FOR PAGE @VA03358 01309000
- BER R5 NO, RETURN TO IN LINE CODE @VA03358 01310000
- BAL R9,REALWRT WRITE RECORDING PAGE BACK TO DISK@VA03358 01311000
- BAL R3,PAGREL RELEASE VIRTUAL RECORDING PAGE @VA03358 01312000
- BR R5 RETURN TO IN LINE CODE @VA03358 01313000
- SPACE 2 01314000
- MSG90PC EQU * HANDLE CYLINDER 90 % FULL MESSAGE@VA03358 01315000
- TM FLAG90PC,ERRCYL90 WAS 90% FLAG ON? @V5088AA 01318100
- BOR R4 YES, RETURN TO IN LINE CODE @VA03358 01319000
- OI FLAG90PC,ERRCYL90 SET 90% FULL FLAG @V5088AA 01320100
- LA R2,550 DMKIOF550E MESSAGE NUMBER @V305435 01322000
- BAL R10,CALLERM WRITE ERROR MESSAGE @V305435 01323000
- BR R4 RETURN TO LINE CODE @V305435 01324000
- SPACE 1 01325000
- SPACE 2 01334000
- MSGFULL EQU * HANDLE CYLINDER FULL CONDITION @VA03358 01335000
- TM MCCHFLAG,CCHFLAG IS THIS A MCH/CCH ENTRY @VA03358 01336000
- BM *+8 IF MCH ENTRY, BYPASS RECORD FRET @VA07990 01338100
- BAL R5,FRETRECD RELEASE STORAGE FOR CCH RECORD @VA03358 01339000
- L R3,=V(DMKIOEES) GET PTR. TO AREA FULL FLAG @V5088AA 01340100
- CLI 0(R3),X'FF' WAS RECORDING AREA FULL FLAG ON? @V5088AA 01341100
- BE SKIPMSG YES, BYPASS SENDING MSG TO OPER. @VA03358 01342000
- MVI 0(R3),X'FF' SET RECORDING AREA FULL FLAG ON @V5088AA 01343100
- LA R2,551 DMKIOF551E MESSAGE NUMBER @V305435 01345000
- BAL R10,CALLERM WRITE ERROR MESSAGE @V305435 01346000
- SPACE 1 01347000
- SKIPMSG EQU * ... @VA03358 01357000
- ICM R2,15,IOEREALA GET ADDR OF REAL RECORDING PAGE @VA03358 01358000
- BZ RECDQUE IF ZERO, GO CHECK QUES @VA03358 01359000
- BAL R3,PAGREL RELEASE RECORDING PAGE @VA03358 01360000
- B RECDQUE CHECK RECORDING QUEUES @V305435 01361000
- SPACE 1 01362000
- CALLERM SLR R0,R0 CLEAR LENGTH BYTE @V305435 01363000
- ICM R0,B'1110',MODID+3 GET MODULE IDENTIFIER @V305435 01364000
- * NOTE - R1 = TEXT INFORMATION 01365000
- SLR R1,R1 NO VARIABLE TEXT @V5088AA 01365100
- * R2 = MESSAGE ERROR NUMBER 01366000
- ICM R2,B'1000',ERMPARM INSERT PARAMETER FLAGS @V305435 01367000
- CALL DMKERMSG CALL MESSAGE WRITTER @V305435 01368000
- L R1,IOEVMPAD GET RECORDING PAGE VIRTUAL ADDR @VA03358 01369000
- L R2,IOEREALA GET RECORDING PAGE REAL ADDRESS @VA03358 01370000
- BR R10 RETURN TO IN LINE CODE @VA03358 01371000
- SPACE 2 01372000
- FRETRECD EQU * RELEASE STORAGE FOR ERROR RECORD @VA03358 01373000
- SRL R7,3 PUT LENGTH ON DOUBLEWORDS @VA03358 01374000
- LR R0,R7 GET SIZE OF RECORD IN DOUBLEWORDS@VA03358 01375000
- LTR R1,R6 IS THERE AN ERROR RECORD ADDRESS @VA03358 01376000
- BZR R5 NO, RETURN TO IN LINE CODE @VA03358 01377000
- CALL DMKFRET RELEASE RECORD STORAGE @VA03358 01378000
- SR R6,R6 CLEAR ERROR RECORD ADDRESS @VA03358 01379000
- BR R5 RETURN TO IN LINE CODE @VA03358 01380000
- SPACE 2 01381000
- FRETCPEX EQU * RELEASE THE CPEXBLOK @VA03358 01382000
- LR R1,R4 GET ADDRESS OF CPEXBLOK @VA03358 01383000
- LA R0,CPEXSIZE GET SIZE IN DOUBLEWORDS @VA03358 01384000
- CALL DMKFRET RELEASE THE STORAGE @VA03358 01385000
- BR R5 RETURN TO IN LINE CODE @VA03358 01386000
- SPACE 2 01387000
- USING ERRBLOK,R6 CHANGE ADDRESSABILITY FOR ERRBLOK@VA03757 01388000
- REGSETUP EQU * GET REGS SET UP TO REFLECT BLOCK @VA03757 01389000
- LR R6,R10 GET ADDRESS OF RECORD @VA03757 01390000
- S R6,F4 GET BEGINNING ADDRESS @VA03757 01391000
- L R7,ERRBLOK GET SIZE OF RECORD @VA03757 01392000
- LA R7,4(0,R7) GET ORIGINAL SIZE @VA03757 01393000
- BR R5 RETURN TO IN LINE CODE @VA03757 01394000
- DROP R6 @VA03757 01395000
- SPACE 2 01396000
- MOVEREC EQU * MOVE RECORD INTO RECORDING PAGE @VA03358 01397000
- LR R15,R7 GET LENGTH OF ERROR RECORD @VA03358 01398000
- LR R14,R6 GET ADDRESS OF ERROR RECORD @VA03358 01399000
- L R2,IOEREALA GET ADDRESS OF RECORDING PAGE @VA03358 01400000
- LH R4,RECNXT GET INDEX TO AVAILABLE SPACE @VA03358 01401000
- AR R4,R2 GET ADDRESS OF AVAILABLE SPACE @VA03358 01402000
- TM MCCHFLAG,MCHFLAG IS THIS A MCH/CCH ENTRY @VA03358 01403000
- BZ *+12 NO, BYPASS SAVING RECORD SIZE @VA03358 01404000
- ST R7,0(,R4) SAVE LENGTH OF MCH/CCH RECORD @VA03358 01405000
- LA R4,4(,R4) UPDATE PASS LENGTH FIELD @VA03358 01406000
- LR R5,R15 GET LENGTH OF MOVE DATA @VA03358 01407000
- MVCL R4,R14 MOVE RECORD INTO RECORDING PAGE @VA03358 01408000
- BR R3 RETURN TO IN LINE CODE @VA03358 01409000
- SPACE 2 01410000
- SVC76FTN EQU * SVC 76 INTERFACE'S FUNCTION @VA03358 01411000
- CLI CPUVERSN,X'FF' IS THIS A VIRTUAL MACHINE @VA03358 01412000
- BNER R5 NO, RETURN TO IN LINE CODE @VA03358 01413000
- LR R3,R6 GET ADDRESS OF ERROR RECORD @VA03358 01414000
- LA R4,0(R7,R6) GET ADDRESS AT END OF RECORD @VA03358 01415000
- LA R1,4 ISSUE THE FOLLOWING DIAGNOSE @VA09952 01415010
- DC X'83120048' X'48' TO SWITCH ON VMCPSV76 BIT @VA09952 01415020
- SVCINFAC EQU * ISSUE SVC 76 INSTRUCTION @VA03358 01416000
- LA R1,4(,R3) UPDATE PASS RECORD LENGTH FIELD @VA03358 01417000
- L R0,0(,R3) GET LENGTH OF ERROR RECORD @VA03358 01418000
- LR R2,R0 SAVE LENGTH OF RECORD @VA03358 01419000
- LCR R0,R0 GET COMPLIMENT OF LENGTH VALUE @VA03358 01420000
- SVC 76 ISSUE SVC 76 @VA03358 01421000
- LA R3,0(R1,R2) GET ENDING ADDR OF ERROR RECORD @VA03358 01422000
- CR R3,R4 DOES ENDING ADRESSES EQUAL @VA03358 01423000
- BNE SVCINFAC NO, HANDLE MDR REC FOR 3211/3203 @V386298 01424000
- L R2,IOEREALA GET ADDRESS OF RECORDING PAGE @VA03358 01425000
- L R1,IOEVMPAD GET ADDR OF VIRTUAL BUFFER PAGE @VA03358 01426000
- B 4(R5) RETURN TO IN LINE CODE PLUS 4 @VA03358 01427000
- SPACE 2 01428000
- SPACE 3 01429000
- USING IOERBLOK,R4 ADDRESSABILITY FOR IOERBLOK @VA03757 01430000
- USING OBRRECN,R6 ADDRESSABILITY FOR OBR RECORD @VA03757 01431000
- USING SDRBLOK,R9 ADDRESSABILITY FOR SDRBLOK @VA03757 01432000
- USING ERRBLOK,R10 ADDRESSABILITY FOR ERRBLOK @VA03757 01433000
- SPACE 01434000
- *** EXECUTED MOVE INSTRUCTIONS *** 01435000
- MOVESDR MVC 0(0,R14),SDRCTRS MOVE SDR COUNTERS INTO OBR @VA03757 01436000
- MOVESEN MVC 0(0,R14),IOERDATA MOVE SENSE INFO INTO OBR @VA03757 01437000
- CLRSDR MVC SDRCTRS+1(0),SDRCTRS RESET SDR COUNTERS @VA03757 01438000
- MVESDR MVC OBRSSDR1(0),SDRCTRS MOVE COUNTERS TO SHORT OBR @VA03757 01439000
- SPACE 2 01440000
- OBRMDRBL EQU * TEST WHAT TO BUILD OBR OR MDR @VA03757 01441000
- SWITCH SWITCH TO MAIN PROCESSOR @VA12116 01441100
- LR R10,R6 GET ADDRESS OF PASSED BLOCK @VA03757 01442000
- LA R10,4(0,R10) POINT TO REAL ERRBLOK @VA03757 01443000
- CLI ERRBLOK,X'91' BUILD MDR RECORD ?? @VA03757 01444000
- BE MDRREC YES @VA03757 01445000
- OBRREC EQU * BUILD AND FORMAT OUTBOARD RECORD @VA03757 01446000
- LA R4,ERRIOER GET ADDRESS OF IOERBLOK @VA03757 01447000
- BAL R3,SPACE GET SPACE FOR THE OBR RECORD @VA03757 01448000
- BAL R3,OBRMDRCL CLEAR OUTBOARD RECORD AREA @VA03757 01449000
- MVC OBRKEYN(16),ERRKEY CLASS/SYSTEM/REL. NO./TIME @VA03757 01450000
- MVC OBRCPIDN(8),CPUID SET UP CPU SERIAL NO. & ID. @VA03757 01451000
- ICM R9,15,RDEVCTRS PICK UP SDRBLOK ADDRESS @VA03757 01452000
- BZ BYPASS1 BRANCH IF NO SDRBLOK @VA03757 01453000
- TM ERRSDR,SDRSHRT SHORT OBR TO BE WRITTEN ?? @VA03757 01454000
- BO SHORTOBR YES @VA03757 01455000
- BYPASS1 TM ERRIOB+3,IOBFATAL PERMANENT ERROR ?? @VA03757 01456000
- BO BYPASS2 YES @VA03757 01457000
- OI OBRSWSN+1,OBRTEMP TURN ON TEMPORARY FLAG @VA03757 01458000
- TM ERRSDR,SDRRECD TEST FOR COUNTER OVERFLOW @VA03757 01459000
- BZ BYPASS2 BR, IF NO OVERFLOW @VA03757 01460000
- OI OBRSWSN+1,OBREOD COUNTER OVERFLOW RECORD @VA03757 01461000
- BYPASS2 EQU * @VA03757 01462000
- L R2,ERRIOB+24 GET ADDRESS OF VMBLOK ADDRESS @VA03757 01463000
- LTR R2,R2 IS THIS A VALID ADDRESS? @VA14701 01463100
- BZ *+10 NO, SKIP RECORDING OF USER ID @VA14701 01463200
- MVC OBRPGMN(8),VMUSER-VMBLOK(R2) GET USER IDENT. @VA03757 01464000
- MVC OBRCSWN(8),IOERCSW SAVE FAILING CSW @VA03757 01465000
- MVC OBRFCCWN(8),ERRCCW MOVE IN FAILING CCW @VA03757 01466000
- MVC OBRCUAIN+1(2),ERRIOB GET SECONDARY DEVICE ADDR @VA03757 01467000
- MVC OBRCUAPR+1(2),ERRIOB GET PRIMARY DEVICE ADDRESS @VA03757 01468000
- MVI OBRSDRCT,X'0A' SET STATISTICAL DATA AREA LENGTH @VA03757 01469000
- OBRSENSE EQU * MOVE SENSE INFORMATION INTO REC @VA03757 01470000
- LH R2,IOERLEN GET NUMBER OF SENSE BYTES @VA03757 01471000
- STH R2,OBRSNSCT SAVE SENSE BYTE COUNT @VA03757 01472000
- LTR R2,R2 IS SENSE BYTE COUNT ZERO ?? @VA03757 01473000
- BZ *+6 YES, BYPASS SUBTRACTING ONE @VA03757 01474000
- BCTR R2,R0 SUBTRACT ONE FOR EXECUTE INST. @VA03757 01475000
- CLI RDEVTYPC,CLASDASD IS THIS A DASD DEVICE CLASS @VA03757 01476000
- BNE OBRTAPE NO, CHECK FOR TAPE DEVICE @VA03757 01477000
- SPACE 01478000
- OBRDASD EQU * DASD TYPE DEVICE @VA03757 01479000
- MVI OBRDDCNT,X'03' NO. OF DOUBLEWORDS FOR DEP. AREA @VA03757 01480000
- MVC OBRVOLN(6),ERRVOLID GET THE VOLID LABEL @VA03757 01481000
- MVC OBRHAN+2(4),IOERADR+4 GET HOME ADDRESS @VA03757 01482000
- MVC OBRLSKN+3(4),IOERADR GET LAST SEEK ADDRESS @VA03757 01483000
- TM RDEVFTR,FTREXTSN EXTENDED SENSE DASD ??? @VA03757 01484000
- BO OBRNSDR YES, GO MOVE SENSE DATA INTO REC @VA03757 01485000
- BAL R3,MVSDRSEN MOVE SDR AND SENSE INFO @VA03757 01486000
- IC R2,IOERDATA+4 GET PHYSICAL DRIVE ADDRESS @VA03757 01487000
- N R2,F15 SAVE 4 LOW ORDER BITS @VA04586 01488000
- B OBRPRDEV GET THE PRIMARY DEVICE ADDRESS @VA03757 01489000
- OBRNSDR EQU * SDR COUNTER AREA NOT AVAILABLE @VA03757 01490000
- MVI OBRSDRCT,X'00' CLEAR SDR LENGTH FIELD @VA03757 01491000
- MVC OBRIORTY(2),ERRIOB+18 GET RETRY COUNT @VA03757 01492000
- BAL R3,MVSDRSEN MOVE SDR AND SENSE INFO @VA03757 01493000
- IC R2,IOERDATA+4 GET PHYSICAL DRIVE ADDRESS @VA03757 01494000
- CLI RDEVTYPE,TYP3330 IS DASD A 3330 DEVICE ?? @VA03757 01495000
- BNER R5 NO, (TRUE IOB ADDR) RETURN @VA04586 01496000
- TM OBR33SNS+2,X'08' TEST FOR EMULATED 3330 DEVICE @VA04586 01497000
- BOR R5 YES,ADDRESS OK - RETURN @VA11982 01498010
- BLDPHA N R2,F7 ZAP ALL BUT THREE LOW BITS @VA04586 01500000
- TM OBR33SNS+4,X'40' IS THIS 2ND OR 4TH CONTROL UNIT@VA04586 01501000
- BNO OBRPRDEV IF NOT, BRANCH @VA04586 01502000
- A R2,F8 BUMP ADDRESS IF 2ND OR 4TH @VA04586 01503000
- * CONTROL UNIT 01504000
- OBRPRDEV EQU * FIND PRIMARY DEVICE ADDRESS @VA03757 01505000
- LH R14,ERRIOB GET LOGICAL DEVICE ADDRESS @VA03757 01506000
- N R14,=X'0000FFF0' CLEAR LOW ORDER FOUR BITS @VA03757 01507000
- OR R14,R2 GET PRIMARY DEVICE ADDRESS @VA03757 01508000
- STCM R14,7,OBRCUAPR PUT PRIMARY ADDRESS IN RECORD @VA03757 01509000
- BR R5 RETURN TO IN LINE CODE @VA03757 01510000
- SPACE 1 01511000
- * CODE DISABLED BY VM11982. REMAIN FOR FUTURE DEVELOPMENT. 01511100
- EMULCODE LA R14,1 INITIAL SHIFT COUNTER @VA03757 01512000
- LR R15,R2 OBTAIN 1 OF 8 CODE (EMUL 3330) @VA03757 01513000
- SHIFT SRA R15,1 START TO COUNT NO OF SHIFTS @VA03757 01514000
- BZ EMULDONE FINISHED SHIFT COUNT @VA03757 01515000
- LA R14,1(0,R14) INCREASE SHIFT COUNT BY ONE @VA03757 01516000
- B SHIFT CONTINUE TO COUNT 1 OF 8 CODE @VA03757 01517000
- EMULDONE LA R15,7 INITIALIZE TO CREATE 3 OF 6 CODE @VA03757 01518000
- MR R14,R14 CREATE 3 OF 6 CODE @VA03757 01519000
- LR R2,R15 CONTINUE WITH 3 OF 6 CODE @VA03757 01520000
- BR R3 RETURN TO DEVICE ADDRESS PROCESS @VA03757 01521000
- SPACE 01522000
- OBRTAPE EQU * DETERMINE TYPE OF TAPE DEVICE @VA03757 01523000
- CLI RDEVTYPC,CLASTAPE IS THIS A TAPE CLASS @VA03757 01524000
- BNE OBRUNRX NO, CHECK FOR UNIT RECORD DEVICE @VA03757 01525000
- CH R2,=H'23' IF THE SENSE IS NOT 24 MAKE IT HRC105DK 01525100
- BNH OBRTAPE2 HRC105DK 01525200
- LA R2,24 MAKE IT 24 HRC105DK 01525300
- STH R2,OBRSNSCT SAVE SENSE BYTE COUNT HRC105DK 01525400
- BCTR R2,0 FOR LATER HRC105DK 01525500
- OBRTAPE2 EQU * HRC105DK 01525600
- MVC OBRVOLN(6),ERRVOLID GET THE VOLID LABEL @VA03757 01526000
- MVI OBRDDCNT,X'01' NO. OF DWORDS IN DEPENDENT AREA @VA03757 01527000
- TM RDEVTYPE,TYP3410+TYP3420 3400 TAPE SERIES @VA03757 01528000
- BZ COMMOVE NO, MUST BE 2400 TAPE SERIES @VA03757 01529000
- MVI OBRDDCNT,X'03' NO. OF DWORDS IN DEPENDENT AREA @VA03757 01530000
- MVI OBRSDRCT,X'14' SET THE LENGTH OF SDR AREA @VA03757 01531000
- B COMMOVE MOVE SDR AND SENSE INTO RECORD @VA03757 01532000
- SPACE 1 01533000
- OBRUNRX EQU * MOVE SENSE DATA AFTER SDR DATA @VA03757 01534000
- TM RDEVTYPC,CLASGRAF+CLASTERM+CLASSPEC CHK CLASSES @VA03757 01535000
- BNZ COMMOVE YES, MOVE SDR AND SENSE INTO REC @VA03757 01536000
- TM RDEVTYPE,TYP3211 IS IT A 3203/3211 PRINTER?? @V386298 01537000
- BO MOVE3211 YES--HANDLE SPECIAL @V386298 01538000
- CLI RDEVTYPE,TYP3505 IS THIS A 3505 DEVICE @VA03757 01539000
- BNE COMMOVE NO, MOVE SDR AND SENSE INTO REC @VA03757 01540000
- MVI OBRSDRCT,X'00' CLEAR SDR LENGTH FIELD @VA03757 01541000
- B COMMOVE MOVE JUST SENSE INFO INTO REC @VA03757 01542000
- SPACE 1 01543000
- MOVE3211 EQU * BUILD 3211/3203 MDR REC @V386298 01544000
- MVI OBRDDCNT,X'01' DATA COUNT IS ONE DOUBLEWORD @VA03757 01545000
- LH R15,IOEREXT IS THERE AN EXTENSION TO IOERBLOK@VA03757 01546000
- LTR R15,R15 ... @VA03757 01547000
- BNZ OBRMDR YES, BUILD MDR RECORD FOR 3211 @VA03757 01548000
- * OR 3203 PRINTER 01548100
- SPACE 01549000
- COMMOVE EQU * COMMON MOVE ENTRY @VA03757 01550000
- BAL R3,MVSDRSEN MOVE SDR AND SENSE INTO RECORD @VA03757 01551000
- BR R5 RETURN TO IN LINE CODE @VA03757 01552000
- EJECT 01553000
- *********************************************************** 01554000
- * MOVE SDR COUNTERS AND SENSE * 01555000
- * INFORMATION INTO RECORD * 01556000
- SPACE 01557000
- *** SET UP WORK REGS *** 01558000
- SPACE 01559000
- MVSDRSEN EQU * @VA03757 01560000
- LR R14,R6 MOVE OBR ADDR TO WORKREG @VA03757 01561000
- SLR R7,R7 CLEAR IT @VA03757 01562000
- IC R7,OBRDDCNT GET DEVICE DEPENDENT LENGTH @VA03757 01563000
- SLL R7,3 CONVERT LENGTH TO BYTES @VA03757 01564000
- LA R7,X'40'(,R7) INCREMENT TO SDR AREA @VA03757 01565000
- AR R14,R7 UPDATE OBR RECORD BASE @VA03757 01566000
- SPACE 2 01567000
- *** SET UP FOR SDR AREA *** 01568000
- SPACE 01569000
- ICM R7,1,OBRSDRCT GET SDR LENGTH @VA03757 01570000
- BZ NOSDR BRANCH IF SDR COUNTERS DO NOT @VA03757 01571000
- * EXIST FOR THIS DEVICE CLASS 01572000
- LTR R9,R9 ANY COUNTERS FOR THIS DEVICE ? @VA03757 01573000
- BZ NOSDRNOW BR IF NONE,MOVE JUST SENSE TO OBR@VA03757 01574000
- BCTR R7,R0 SUBTRACT ONE FOR EXECUTE INSTR. @VA03757 01575000
- EX R7,MOVESDR GO MOVE SDR COUNTERS @VA03757 01576000
- LA R14,1(,R14) ADD ONE TO OBR REG @VA03757 01577000
- AR R14,R7 FINISH ADDING SDR LGTH TO OBR REG@VA03757 01578000
- EX R2,MOVESEN GO MOVE SENSE INTO OBR @VA03757 01579000
- SPACE 2 01580000
- *** CLEAR SDR COUNTERS AND FLAGS 01581000
- SPACE 01582000
- LTR R9,R9 ANY SDRBLOK ?? @VA03757 01583000
- BZR R3 NO, FORGET CLEARING IT @VA03757 01584000
- IC R7,OBRSDRCT GET SIZE OF SDR WORK AREA @VA03757 01585000
- BCTR R7,R0 *** SUBTRACT TWO *** @VA03757 01586000
- CLEARSHT BCTR R7,R0 *** FOR EXECUTE MOVE *** @VA03757 01587000
- MVI SDRCTRS,ZERO SET UP FOR RESET @VA03757 01588000
- EX R7,CLRSDR GO RESET SDR COUNTERS @VA03757 01589000
- MVI SDRFLAGS,X'00' CLEAR SDR FLAGS @VA03757 01590000
- BR R3 RETURN TO SUBROUTINE @VA03757 01591000
- SPACE 2 01592000
- * NO SDR INFORMATION, FINISH OBR BY MOVING JUST SENSE 01593000
- SPACE 01594000
- NOSDRNOW AR R14,R7 ADD SDR LENGTH TO OBR BASE @VA03757 01595000
- NOSDR EX R2,MOVESEN GO MOVE SENSE INTO OBR @VA03757 01596000
- BR R3 RETURN TO SUBROUTINE @VA03757 01597000
- SPACE 2 01598000
- * ROUTINE TO BUILD SHORT OBR , DONE AT SDR COUNTER 01599000
- * OVERFLOW , SHUTDOWN AND VARY OFFLINE COMMAND 01600000
- SPACE 01601000
- SHORTOBR EQU * @VA03757 01602000
- OI OBRSWSN+1,OBRTEMP+OBRSHOBR TURN ON SHORT AND @VA03757 01603000
- * TEMPORARY OBR FLAGS 01604000
- MVC OBRSDRSH(4),SDRLNGTH MOVE LENGTH OF SDR @VA03757 01605000
- * COUNTERS AND CUA 01606000
- SLR R7,R7 CLEAR WORK REG @VA03757 01607000
- IC R7,SDRLNGTH GET SDR COUNTERS LENGTH @VA03757 01608000
- BCTR R7,R0 SUBTRACT ONE FOR EXECUTED MOVE @VA03757 01609000
- EX R7,MVESDR GO MOVE SDR COUNTERS INTO OBR @VA03757 01610000
- BAL R3,CLEARSHT OK LETS RESET THE SDRBLOK @VA03757 01611000
- BR R5 RETURN FROM WHENCE WE CAME @VA03757 01612000
- SPACE 2 01613000
- OBRMDR EQU * BUILD MDR FOR 3211/3203 ERROR @V386298 01614000
- MVC OBRCORL(1),ERRCORR SAVE CORRELATION NUMBER @VA03757 01615000
- OI OBRSWSN,X'80' TURN ON MULTIPE RECORD FLAG @VA03757 01616000
- BAL R3,MVSDRSEN MOVE SDR AND SENSE INTO RECORD @VA03757 01617000
- LA R2,RECDLEN GET LENGTH OF OBR RECORD @VA03757 01618000
- ST R2,0(,R1) SAVE LENGTH OF OBR RECORD IN REC @VA03757 01619000
- LA R6,LENGOBR(,R1) GET ADDRESS OF AVAILABLE AREA @VA03757 01620000
- USING TNSREC,R6 SET UP ADDRESSABILITY FOR MDR @VA03757 01621000
- TM XOBRFLAG,XOBRT1+XOBRT3 TEST FOR TYPE 1 & 3 MDR @VA03757 01622000
- BZ MDRREC2 NO, MUST BE TYPE 2 MDR RECORD @VA03757 01623000
- BO MDRREC1 YES, BUILD TYPE 1 & 3 MDR RECORDS@VA03757 01624000
- TM XOBRFLAG,XOBRT1 IS THIS A TYPE 1 MDR RECORD @VA03757 01625000
- BO MDRREC1 YES, BUILD TYPE 1 MDR RECORD @VA03757 01626000
- MDRREC3 EQU * BUILD & FORMAT TYPE 3 MDR RECORD @VA03757 01627000
- LA R2,TYP3SIZE GET SIZE OF TYPE 3 MDR RECORD @VA03757 01628000
- BAL R3,MDR3211 FORMAT HEADER FOR MDR RECORD @VA03757 01629000
- MVI TNSDEVAD+3,X'03' INSERT 3211/3203 BUFFER TYPE @V386298 01630000
- CLI RDEVTYPE,TYP3203 IS IT A 3203 PRINTER?? @V386298 01630100
- BE MDR33203 YES--HANDLE TYPE 3 MDR RECORD @V386298 01630200
- MVC TNSDEVAD+4(150),XOBR150 MOVE PRINT LINE BUFFER @VA03757 01631000
- MVC TNSDEVAD+154(10),XOBR010 INTO MDR RECORD @VA03757 01632000
- BR R5 RETURN TO IN LINE CODE @VA03757 01633000
- MDR33203 MVC TNSDEVAD+4(132),XOBR150 MOVE 3203 PLB @V386298 01633100
- MVC TNSDEVAD+136(10),XOBR010 1ST 10 EROR CHAR @V386298 01633200
- BR R5 RETURN TO IN LINE CODE @V386298 01633300
- SPACE 1 01634000
- MDRREC2 EQU * BUILD & FORMAT TYPE 2 MDR RECORD @VA03757 01635000
- LA R2,TYP2SIZE GET SIZE OF TYPE 2 MDR RECORD @VA03757 01636000
- BAL R3,MDR3211 FORMAT HEADER FOR MDR RECORD @VA03757 01637000
- MVI TNSDEVAD+3,X'02' INSERT 3211/3203 BUFFER TYPE @V386298 01638000
- MVC TNSDEVAD+4(180),XOBR180 FORM CONTRL BUFFER (FCB)@VA03757 01639000
- BR R5 RETURN TO IN LINE CODE @VA03757 01640000
- SPACE 1 01641000
- MDRREC1 EQU * BUILD & FORMAT TYPE 1 MDR RECORD @VA03757 01642000
- LA R2,TYP1SIZE GET SIZE OF TYPE 1 MDR RECORD @VA03757 01643000
- BAL R3,MDR3211 FORMAT HEADER FOR MDR RECORD @VA03757 01644000
- MVI TNSDEVAD+3,X'01' INSERT 3211/3203 BUFFER TYPE @V386298 01645000
- MVC TNSDEVAD+4(256),XOBR512 MOVE UNIVERSAL CHAR. SET@VA03757 01646000
- CLI RDEVTYPE,TYP3203 IS IT A 3203 PRINTER?? @V386298 01646100
- BE MDR13203 YES--HANDLE TYPE 1 MDR RECORD @V386298 01646200
- MVC TNSDEVAD+260(256),XOBR512+256 BUFFER INTO RECORD@VA03757 01647000
- B CHMDR1N3 GO CHECK MDR RECORDS 1 & 3 @V386298 01647100
- MDR13203 MVC TNSDEVAD+260(148),XOBR512+256 INTO RECORD @V386298 01647200
- CHMDR1N3 EQU * @V386298 01647300
- TM XOBRFLAG,XOBRT1+XOBRT3 IS THIS TYPE 1 & 3 MDR @VA03757 01648000
- BNOR R5 NO, RETURN TO IN LINE CODE @VA03757 01649000
- LA R6,0(R2,R6) UPDATE TO NEXT AVAILABLE AREA @VA03757 01650000
- BAL R3,MDRREC3 GO BUILD TYPE 3 MDR RECORD @VA03757 01651000
- SPACE 2 01652000
- MDR3211 EQU * SET UP HEADER FOR MDR RECORD @VA03757 01653000
- S R2,F4 SUBTRACT LENGTH FIELD FROM SIZE @VA03757 01654000
- ST R2,0(,R6) SAVE LENGTH OF MDR RECORD @VA03757 01655000
- LA R6,4(R6) UPDATE PASS LENGTH FIELD @VA03757 01656000
- MVC TNSREC(24),4(R1) MOVE OBR HEADER INTO MDR HEADER@VA03757 01657000
- MVI TNSKEYN,X'91' INDICATE MDR CLASS TYPE @VA03757 01658000
- MVI TNSSWS3,X'04' SET 3211/3203 PRINTER FLAG @V386298 01659000
- MVC TNSDEVAD(2),ERRIOB MOVE DEVICE ADDR INTO REC @VA03757 01660000
- MVC TNSDEVAD+2(1),ERRCORR PUT CORRELATION CT. IN REC@VA03757 01661000
- BR R3 RETURN TO IN LINE CODE @VA03757 01662000
- SPACE 2 01663000
- MDRREC EQU * BUILD MISCELLANEOUS DATA RECORD @VA03757 01664000
- LA R4,ERRMIOER GET ADDRESS OF FIRST IOERBLOK @VA03757 01665000
- BAL R3,GETSPACE GET SPACE FOR THE MDR RECORD @VA03757 01666000
- USING TNSREC,R6 SETUP ADDRESSABILITY FOR MDR REC @VA03757 01667000
- BAL R3,OBRMDRCL CLEAR MISCELLANEOUS DATA RECORD @VA03757 01668000
- MVC TNSKEYN(16),ERRKEY CLASS/SYSTEM/REL. NO./TIME @VA03757 01669000
- MVC TNSCPIDN(8),CPUID SET UP CPU SERIAL NO. & IDENT.@VA03757 01670000
- MVI TNSSWS3,X'03' SET 3270 REMOTE STATION FLAG @VA03757 01671000
- CLI RDEVTYPC,CLASTERM IS THIS A REMOTE BISYNC LINE @VA03757 01672000
- BE MDRCONTK YES, MOVE DEVICE DEPENDENT DATA @VA03757 01673000
- TM RDEVTYPC,CLASURO IS IT A 3800 PRINTER ? @V60B9BA 01673100
- BZ MDRREC4 XFER IF NOT @V60B9BA 01673200
- CLI RDEVTYPE,TYP3800 IS IT REALLY A 3800? @V60B9BA 01673300
- BNE MDRREC4 XFER IF NOT @V60B9BA 01673400
- MVI TNSSWS3,X'0C' 3800 DEVICE TYPE @V60B9BA 01673500
- MVC TNSDEVAD(2),ERRMIOB DEVICE ADDRESS @V60B9BA 01673600
- MVC TNS3800(136),IOERDATA ENVIRONMENTAL DATA @VA09396 01673750
- BR R5 RETURN TO INLINE CODE @V60B9BA 01673800
- MDRREC4 MVI TNSSWS3,X'05' SET 3705 TERMINAL FLAG @V60B9BA 01674000
- CLI RDEVTYPC,CLASDASD IS THIS A DASD DEVICE CLASS @VA03757 01675000
- BNE MDRCONTK NO, MOVE 3705 DEPENDENT DATA @VA03757 01676000
- MVI TNSSWS3,X'09' SET 3340 DEVICE TYPE FLAG @VA03757 01677000
- CLI RDEVTYPE,TYP3340 IS THIS A 3340 DEVICE TYPE @VA03757 01678000
- BE MDRDASD YES, GET DEVICE ADDRESS @VA03757 01679000
- MVI TNSSWS3,X'11' INDICATE 3350 TYPE @VA03757 01680000
- CLI RDEVTYPE,TYP3350 IS THIS A 3350 ?? @VA03757 01681000
- BE MDRDASD YES , BRANCH @VA03757 01682000
- MVI TNSSWS3,X'01' SET 3330 DEVICE TYPE FLAG @VA03757 01683000
- CLI RDEVTYPE,TYP2305 IS THIS A 2305 DEVICE TYPE @VA03757 01684000
- BE MDR2305 YES, SET UP DEVICE TYPE FOR 2305 @VA03757 01685000
- CLI RDEVMDL,X'0B' IS THIS A 3330 MODEL 11 DEVICE @VA03757 01686000
- BNE MDRDASD NO, MUST BE 3330 DEVICE @VA03757 01687000
- MVI TNSSWS3,X'0A' SET 3330-11 DEVICE TYPE FLAG @VA03757 01688000
- B MDRDASD GET DEVICE ADDRESS @VA03757 01689000
- MDR2305 EQU * GET CORRECT DEVICE TYPE @VA03757 01690000
- MVI TNSSWS3,X'02' SET 2305 MODEL 2 DEVICE TYPE FLAG@VA03757 01691000
- TM RDEVMDL,X'01' IS THIS A 2305 MODEL 1 DEVICE @VA03757 01692000
- BZ MDRDASD NO, GET DEVICE ADDRESS @VA03757 01693000
- OI TNSSWS3,X'10' SET 2305 MODEL 1 DEVICE TYPE FLAG@VA03757 01694000
- MDRDASD EQU * MOVE DASD DEPENDENT DATA INTO REC@VA03757 01695000
- MVC TNSDEVAD(2),ERRMIOB PUT DEVICE ADDRESS IN REC @VA03757 01696000
- MVC TNSVOLID(6),IOERVSER MOVE IN VOLUME SERIAL NO. @VA03757 01697000
- CLI RDEVTYPE,TYP2305 IS THIS A 2305 DEVICE TYPE @VA03757 01698000
- BNE MDR33SEN NO, GET 3330 SENSE INFORMATION @VA03757 01699000
- MVC TNSVOLID(128),IOERDATA GET ENVIRONMENTAL DATA @VA03757 01700000
- BR R5 RETURN TO IN LINE CODE @VA03757 01701000
- SPACE 1 01702000
- MDR33SEN EQU * MOVE DEPENDENT DATA INTO RECORD @VA03757 01703000
- LA R3,TNSSNS1 GET ADDRESS OF DEPENDENT AREA @VA03757 01704000
- LR R2,R4 GET ADDRESS OF IOERBLOK @VA03757 01705000
- MDRMOVE EQU * ... @VA03757 01706000
- LH R15,IOERLEN-IOERBLOK(R2) GET IOERBLOK EXT. SIZE @VA03757 01707000
- BCTR R15,R0 SUBTRACT ONE - EXECUTE INST. @VA03757 01708000
- EX R15,MOVENV MOVE DATA INTO RECORD @VA03757 01709000
- CLC 0(4,R2),ZEROES ANY MORE IOERBLOKS TO PROCESS @VA03757 01710000
- BE MDRDEVTY NO, GO CHECK IF DEVICE ADDRESS OK@VA03757 01711000
- LA R3,1(R15,R3) UPDATE DEPENDENT AREA POINTER @VA03757 01712000
- LA R15,IOERSIZE GET SIZE OF IOERBLOK @VA03757 01713000
- AH R15,IOEREXT-IOERBLOK(R2) ADD TO IT EXT SIZE @VA03757 01714000
- SLL R15,3 CONVERT TO BYTES @VA03757 01715000
- AR R2,R15 POINT TO NEXT IOERBLOK @VA03757 01716000
- B MDRMOVE GO MOVE DATA FROM NEXT IOERBLOK @VA03757 01717000
- MDRDEVTY SR R2,R2 CLEAR OUT A WORK REG @VA06173 01718100
- IC R2,TNSSNS1+4 GET THE DRIVE ID BYTE @VA06173 01718200
- TM RDEVTYPE,TYP3340+TYP3350 1 OF 8 DEVICE TYPE ?? @VA03757 01720000
- BNZR R5 YES, DEVICE ADDRESS OK, RETURN @VA03757 01721000
- CLI RDEVTYPE,TYP3330 IS DASD A 3330 DEVICE ?? @VA03757 01722000
- BNE MDRDEV NO, BYPASS 3330 EMULATION TEST @VA03757 01723000
- TM TNSSNS1+2,X'08' TEST FOR EMULATED 3330 DEV @VA03757 01724000
- BOR R5 YES, ADDRESS OK - RETURN @VA11982 01725010
- MDRPHA N R2,F7 ISOLATE 3-BIT ID @VA05891 01727100
- TM TNSSNS1+4,X'40' 2ND OR 4TH CU ?? @VA05891 01727200
- BNO MDRDEV IF NOT, BRANCH @VA04586 01728000
- A R2,F8 BUMP ADDRESS IF 2ND OR 4TH @VA04586 01729000
- * CONTROL UNIT 01730000
- MDRDEV EQU * @VA04586 01731000
- LH R3,ERRMIOB GET LOGICAL DEVICE ADDRESS @VA04586 01732000
- N R3,=X'0000FFF0' CLEAR MODULE/DRIVE ID. @VA03757 01733000
- OR R3,R2 GET PHYSICAL DEVICE ADDRESS @VA03757 01734000
- STCM R3,3,TNSDEVAD SAVE PHYSICAL ADDRESS IN MDR REC @VA03757 01735000
- BR R5 RETURN TO IN LINE CODE @VA03757 01736000
- SPACE 1 01737000
- MOVENV MVC 0(0,R3),IOERDATA-IOERBLOK(R2) MOVE DATA INTO REC@VA03757 01738000
- SPACE 1 01739000
- MDRCONTK EQU * MOVE DEPENDENT DATA FROM CONTASK @VA03757 01740000
- SR R2,R2 CLEAR WORK REG @VA03757 01741000
- LH R2,ERRCCNT GET LENGTH OF DEPENDENT BUFFER @VA03757 01742000
- BCTR R2,R0 SUBTRACT ONE - EXECUTE INST. @VA03757 01743000
- EX R2,MOVCONT MOVE BUFFER INTO MDR RECORD @VA03757 01744000
- BR R5 RETURN TO IN LINE CODE @VA03757 01745000
- SPACE 1 01746000
- MOVCONT MVC 24(0,R6),ERRCONT MOVE BUFFER INTO MDR RECORD @VA03757 01747000
- SPACE 2 01748000
- SPACE EQU * GET SIZE AND STORAGE FOR OBR REC @VA03757 01749000
- USING SDRBLOK,R9 ADDRESSABILITY FOR SDRBLOK @VA03757 01750000
- LA R1,LENGOBR GET SIZE OF OBR RECORD @VA03757 01751000
- ICM R9,15,RDEVCTRS PICK UP SDRBLOK @VA03757 01752000
- BZ BYPASS03 BRANCH IF NO SDRBLOK @VA03757 01753000
- TM ERRSDR,SDRSHRT SHORT OBR ?? @VA03757 01754000
- BZ BYPASS03 NO, ITS A LONG OBR @VA03757 01755000
- IC R1,SDRLNGTH GET LENGTH OF SDR COUNTERS @VA03757 01756000
- LA R1,36(,R1) ADD OBR HEADER SIZE @VA03757 01757000
- B CONVDWD GO CONVERT TO DOUBLEWORDS @VA03757 01758000
- BYPASS03 EQU * @VA03757 01759000
- CLC RDEVTYPC(2),P3203 IS IT A 3203 PRINTER?? @V386298 01759100
- BE EXTNDLEN YES--GO GET LEN OF EXTNSN BLOK @V386298 01759600
- CLC RDEVTYPC(2),P3211 IS THIS A 3211 (PRINTER) @VA03757 01760000
- BNE CONVDWD NO, CONVERT LENGTH TO DOUBLEWORDS@VA03757 01761000
- EXTNDLEN EQU * @V386298 01761500
- LH R15,IOEREXT GET LENGTH OF EXTENSION BLOCK @VA03757 01762000
- LTR R15,R15 IS THE EXTENSION LENGTH ZERO @VA03757 01763000
- BZ CONVDWD YES, CONVERT LENGTH TO DWORDS @VA03757 01764000
- LA R1,TYP2SIZE+LENGOBR GET SIZE OF TYPE 2 MDR REC. @VA03757 01765000
- TM XOBRFLAG,XOBRT1+XOBRT3 IS THIS TYPE 1 & 3 MDR @VA03757 01766000
- BZ CONVDWD YES, GO CONVERT TO DOUBLEWORDS @VA03757 01767000
- LA R1,TYP1SIZE+TYP3SIZE+LENGOBR SIZE OF TYPE 1 & 3 @VA03757 01768000
- BO CONVDWD GO CONVERT TO DOUBLEWORDS @VA03757 01769000
- LA R1,TYP1SIZE+LENGOBR GET SIZE OF TYPE 1 MDR REC. @VA03757 01770000
- TM XOBRFLAG,XOBRT1 IS THIS A TYPE 1 MDR RECORD @VA03757 01771000
- BO CONVDWD YES, GO CONVERT TO DOUBLEWORDS @VA03757 01772000
- LA R1,TYP3SIZE+LENGOBR GET SIZE OF TYPE 3 MDR REC. @VA03757 01773000
- BAL R2,CONVDWD GO CONVERT LENGTH TO DOUBLEWORDS @VA03757 01774000
- DROP R9 @VA03757 01775000
- SPACE 2 01776000
- GETSPACE EQU * GET SPACE FOR MDR RECORD @VA03757 01777000
- TM RDEVTYPC,CLASURO IS IT A 3800 PRINTER ? @V60B9BA 01777100
- BZ GTSP2 XFER IF NOT @V60B9BA 01777200
- CLI RDEVTYPE,TYP3800 IS IT REALLY A 3800? @V60B9BA 01777300
- BNE GTSP2 XFER IF NOT @V60B9BA 01777400
- LA R1,172 LENGTH OF 3800 MDR RECD @V60B9BA 01777500
- B CONVDWD CONVERT TO DOUBLE WORDS @V60B9BA 01777600
- GTSP2 CLI RDEVTYPC,CLASDASD IS THIS A DASD DEVICE CLASS @V60B9BA 01778000
- BE STGDASD YES, GET SPACE FOR DASD RECORD @VA03757 01779000
- LA R1,28 LENGTH OF HEADER & LENGTH FIELD @VA03757 01780000
- AH R1,ERRCCNT ADD BUFFER LENGTH TO HEADER @VA03757 01781000
- B CONVDWD GO CONVERT LENGTH TO DOUBLEWORDS @VA03757 01782000
- SPACE 1 01783000
- STGDASD EQU * GET SPACE FOR DASD MDR RECORD @VA03757 01784000
- LA R1,128+(TNSVOLID-TNSREC) GET SIZE OF 2305 MDR @VA09736 01785010
- CLI RDEVTYPE,TYP2305 IS THIS A 2305 DEVICE TYPE @VA03757 01786000
- BE CONVDWD YES, CONVERT LENGTH TO DWORDS @VA03757 01787000
- LA R1,36 LENGTH OF HEADER & LENGTH FIELD @VA03757 01788000
- LR R7,R4 GET CURRENT IOERBLOK POINTER @VA03757 01789000
- DEPSTG EQU * GET LENGTH OF DEPENDENT DATA @VA03757 01790000
- AH R1,IOERLEN-IOERBLOK(R7) ADD LENGTH OF EXTENSION @VA03757 01791000
- ICM R6,15,IOERPNT-IOERBLOK(R7) PTR. TO NEXT IOERBLOK@VA03757 01792000
- BZ CONVDWD NO MORE IOERBLOKS, GO GET BLOK @VA03757 01793000
- LA R6,IOERSIZE IOERBLOK SIZE IN DOUBLEWORDS @VA03757 01794000
- AH R6,IOEREXT-IOERBLOK(R7) ADD EXTENTION SIZE @VA03757 01795000
- SLL R6,3 CONVERT TO BYTES @VA03757 01796000
- AR R7,R6 IOER POINTER NOW UPDATED TO NEXT @VA03757 01797000
- B DEPSTG CONTINUE COMPUTING SIZE @VA03757 01798000
- CONVDWD EQU * CONVERT LENGTH TO DOUBLEWORDS @VA03757 01799000
- A R1,F7 UPDATE BY ONE DOUBLEWORD @VA03757 01800000
- SRL R1,3 GET NUMBER OF DOUBLEWORDS @VA03757 01801000
- CALLFRE EQU * @VA03757 01802000
- LR R0,R1 ... @VA03757 01803000
- CALL DMKFREE GET STORAGE FOR MDR RECORD @VA03757 01804000
- BR R3 RETURN TO IN LINE CODE @VA03757 01805000
- SPACE 2 01806000
- OBRMDRCL EQU * CLEAR OBR/MDR RECORD AREA @VA03757 01807000
- LR R7,R0 LENGTH IN DOUBLEWORDS OF RECORD @VA03757 01808000
- SLL R7,3 GET ACTUAL LENGTH OF RECORD @VA03757 01809000
- S R7,F4 SUBTRACT LENGTH FIELD FROM SIZE @VA03757 01810000
- ST R7,0(,R1) SAVE LENGTH OF RECORD IN RECORD @VA03757 01811000
- LA R6,4(,R1) GET ADDRESS OF RECORD BUILD AREA @VA03757 01812000
- BCTR R7,R0 SUBTRACT TWO BYTES FROM SIZE, @VA03757 01813000
- BCTR R7,R0 BECAUSE OF EXECUTE INSTRUCTION @VA03757 01814000
- MVI 0(R6),X'00' SET FIRST BYTE IN RECORD TO ZERO @VA03757 01815000
- C R7,F255 DOES COUNT EXCEEDS 255 @VA03757 01816000
- BNH *+8 NO, BYPASS SETTING COUNT TO 255 @VA03757 01817000
- LA R7,255 SET COUNT VALUE TO MAXIMUM @VA03757 01818000
- EX R7,OBMDRCLR CLEAR OBR/MDR RECORD AREA @VA03757 01819000
- BR R3 RETURN TO IN LINE CODE @VA03757 01820000
- SPACE 1 01821000
- OBMDRCLR MVC 1(0,R6),0(R6) CLEAR OBR/MDR RECORD AREA @VA03757 01822000
- SPACE 2 01823000
- IOEREALA DC F'00' REAL ADDRESS OF RECORDING PAGE @VA03358 01824000
- IOEVMPAD DC F'00' ADDRESS OF VIRTUAL MEMORY PAGE @VA03358 01825000
- CECYL DC H'00' OBR/MDR CYLINDER NO. FOR PAGING @VA03358 01826000
- CEPAGE DC X'01' OBR/MDR PAGE NO. (INITIALIZE 1) @VA03358 01827000
- CECYLTYP DC X'00' OBR/MDR SYSRES DEVICE TYPE @VA03358 01828000
- * NOTE: WORKCYL AND WORKPAGE MUST REMAIN CONTIGUOUS @V5088AA 01828100
- WORKCYL DC H'00' WORK CYLINDER NUMBER FOR PAGING @VA03358 01832000
- WORKPAGE DC X'01' WORK PAGE NO. (INITIALIZE 1) @VA03358 01833000
- WORKTYP DC X'00' WORK SYSRES DEVICE TYPE @VA03358 01834000
- MAXPAGE DC X'00' NO. OF PAGES (MAX) ON A CYLINDER @VA03358 01835000
- PAGNOUPD DC F'00' SAVE UPDATED PAGE NUMBER @VA11472 01836010
- * NOTE: AREA90PC, LASTCYL, AND PAG90PC MUST REMAIN CONTIGUOUS @V5088AA 01836100
- AREA90PC DS 0H CCP VALUE OF 90% FULL MARK OF @V5088AA 01836200
- * ERROR RECORDING AREA @V5088AA 01836300
- LASTCYL DC H'0000' CYL ADDRESS OF RECORDING AREA END@V5088AA 01836400
- PAG90PC DC X'00' NO. OF PAGES (90 % FULL) ON A CYL@VA03358 01837000
- FLAG90PC DC X'00' FLAG FOR 90 % CYL FULL CONDITION @VA03358 01838000
- MCCHFLAG DC X'00' MCH/CCH ENTRY INDICATOR @VA03358 01839000
- SPACE 1 01840000
- MCHFLAG EQU X'80' MCH ENTRY FLAG @VA03358 01841000
- CCHFLAG EQU X'C0' CCH ENTRY FLAG @VA03358 01842000
- ERRCYL90 EQU X'80' 90% FULL FLAG FOR RECORDING AREA @V5088AA 01843100
- SPACE 1 01845000
- INITFMT DC X'00088000FFFFFFFF' INITIALIZE CONTROL HEADER @VA03358 01846000
- SPACE 1 01847000
- DS 0F @VA03757 01848000
- ANDMASK DC X'00000011' @VA03757 01849000
- P3211 DC X'1042' 3211 PRINTER @VA03757 01850000
- P3203 DC X'1043' 3203 PRINTER @V386298 01850100
- BITABL DC X'8040201008040201' MASK TABLE @VA03757 01851000
- PARMLST EQU * @VA03757 01852000
- PARMBSC DC X'04040102030506073FFF' @VA03757 01853000
- PARMCNS DC X'0F0F0102033FFF' @VA03757 01854000
- PARMCNS1 EQU PARMBSC @VA03757 01855000
- PARMGRF DC X'04040F02030F06073FFF' @VA03757 01856000
- PARMDAS DC X'0404010203050607200F2223240F163FFF' @VA03757 01857000
- PARMTAP1 DC X'0F0F1F101F301F311F331F3405320F0F0F0F0F0F' @VA03757 01858000
- PARMCNT DC X'525455560F810F8384850F0F0F0F0F0F1F360240FF' @VA03757 01859000
- PARMTAP2 DC X'0F0F1F101F301F311F331F34053237430F0F0F0F' @VA03757 01860000
- PARMCNT1 DC X'5254555680810F83848586870F910F0F1F360240FF' @VA03757 01861000
- PARMRSE DC X'04040102033FFF' @VA03757 01862000
- PARMRSE1 DC X'0404010203063FFF' @VA03757 01863000
- PARMRSE2 DC X'0F04010203053FFF' @VA03757 01864000
- PARMRSE3 DC X'0F040102033FFF' @VA03757 01865000
- PARMRSE4 DC X'04040F020305060F101112130F153FFF' @VA03757 01866000
- ERMPARM DC X'B0' PARM=OPERATOR+ALARM+RETURN @V305435 01867000
- D2311 EQU X'11' 2311 DASD DEVICE @V304498 01868000
- D2303 EQU X'03' 2303 DASD DEVICE @V304498 01869000
- D2301 EQU X'01' 2301 DASD DEVICE @V304498 01870000
- ZERO EQU 00 @VA03757 01871000
- ONE EQU 01 @VA03757 01872000
- DATCHK EQU 04 @VA03757 01873000
- SDRCNTLN EQU 10 @VA03757 01874000
- FIFTEEN EQU 15 @VA03757 01875000
- SDRCTLN1 EQU 20 @VA03757 01876000
- RECDLEN EQU 132 LENGTH OF OBR RECORD @VA03757 01877000
- LENGOBR EQU 136 SIZE OF OBR RECORD & LENGTH FIELD@VA03757 01878000
- TYP3SIZE EQU 200 SIZE TYPE3 3211/3203 MDR @V386298 01879000
- TYP2SIZE EQU 216 SIZE TYPE2 3211/3203 MDR @V386298 01880000
- OVFLMSK EQU 240 @VA03757 01881000
- FULLBYTE EQU 255 @VA03757 01882000
- FOXES EQU FULLBYTE @VA03757 01883000
- TYP1SIZE EQU 552 SIZE TYPE1 3211/3203 MDR @V386298 01884000
- EJECT 01885000
- LTORG @VA03358 01886000
- EJECT 01887000
- COPY OBRRECN @VA03358 01888000
- COPY IOBLOKS @VA03757 01889000
- COPY IOER @VA03757 01890000
- EJECT 01891000
- COPY ERRBLOK @VA03757 01892000
- EJECT 01893000
- COPY SDRBLOK @VA03757 01894000
- COPY TNSREC @VA03757 01895000
- COPY VMBLOK @VA03757 01896000
- COPY RECPAG @VA03358 01897000
- COPY DEVTYPES @VA03358 01898000
- COPY EQU @VA03358 01899000
- COPY RBLOKS @VA03358 01900000
- PSA @VA03358 01901000
- COPY SAVE @VA03358 01902000
- END 01903000
ibm/vm370-lib/cp/dmkiof.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator