ibm:vm370-lib:cp:dmkcch.assemble_src
Table of Contents
DMKCCH Source
References
- Fixes Applied : 10
- This Source Date : Monday, January 22, 1979
- Last Fix ID : [R13439DK]
Source Listing
- DMKCCH.ASSEMBLE.txt
- CCH TITLE 'DMKCCH (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
- *. 00003000
- *MODULE NAME 00004000
- * 00005000
- * DMKCCH 00006000
- * 00007000
- *FUNCTION - 00008000
- * 00009000
- * THE CHANNEL CHECK HANDLER FUNCTIONS WITH THE I/O INTERRUPT 00010000
- * HANDLER TO SCHEDULE A DEVICE DEPENDENT ERROR RECOVERY 00011000
- * PROCEDURE WHEN A CHANNEL DATA CHECK,A CHANNEL 00012000
- * CONTROL CHECK,OR AN INTERFACE CONTROL CHECK IS DETECTED. 00013000
- * 00014000
- *ATTRIBUTES- RESIDENT,SERIALLY REUSABLE,CALLED BY DMKIOS 00015000
- * 00016000
- * 00017000
- *ENTRY POINTS - 00018000
- * -DMKCCHNT-ENTRY POINT FROM DMKIOINT WHEN A CHANNEL CHECK IS 00019000
- * FOUND ON AN I/O INTERRUPT 00020000
- * 00021000
- * 00022000
- * -DMKCCHIS-ENTRY FROM DMKIOS WHEN A CHANNEL CHECK IS FOUND ON 00023000
- * A CSW STORED CONDITION AFTER A SIO 00024000
- * 00025000
- * -DMKCCHRT-ENTRY FROM DMKIOE TO ALLOW ERROR MESSAGES TO BE 00026000
- * PRINTED. 00027000
- * 00028000
- * -DMKCCHRF-ENTRY FROM DMKDSP, DMKVIO AND DMKVSI WHEN REFLECTING 00029000
- * A CHANNEL CHECK. 00030000
- * 00031000
- *ENTRY CONDITIONS- 00032000
- * 00033000
- * -FROM DMKIOECC-GPR 15 NOT ZERO IF ERROR WAS NOT RECORDED 00034000
- * 00035000
- * -FROM DMKINT GPR 7= ADDR OF RCUBLOK 00036000
- * 00037000
- * GPR 8= ADDR OF RDEVBLOK 00038000
- * 00039000
- * GRP 6= ADDR OF RCHBLOK 00040000
- * 00041000
- * GPR 4-5= CSW 00042000
- * 00043000
- * GPR 3= INTERRUPTING DEVICE ADDRESS 00044000
- * 00045000
- * -FROM DMKIOS GRP 10 = IOBLOK ADDRESS 00046000
- * 00047000
- * 00048000
- *EXIT CONDITIONS - 00049000
- * TO DMKIOSIN - IF CHANNEL ERROR IS RETRYABLE 00050000
- * 00051000
- * DISABLED WAIT STATE IF ERROR IS CATASTROPHIC 00052000
- * 00053000
- * 00054000
- *CALLS TO OTHER ROUTINES- 00055000
- * -DMKIOECC TO RECORD ERROR 00056000
- * -DMKFREE TO GET STORAGE FOR IOERBLOK AND ERROR RECORD. 00057000
- * -DMKSCNRU TO GET DEVICE BLOCKS. 00058000
- * -DMKQCNWT TO WRITE CONSOLE MESSAGES. 00059000
- * -DMKCVTBH TO CONVERT OPERATOR MESSAGES. 00060000
- * -DMKFRET TO RETURN ERROR RECORD TO FREE STORAGE 00061000
- * -DMKSCNRD TO GET REAL DEVICE ADDRESS (CCU) 00062000
- * 00063000
- * 00064000
- *EXTERNAL REFERENECS - 00065000
- * DMKSYSCK - ADDRESS OF TOD CLOCK FIELD 00066000
- * 00067000
- * 00068000
- *TABLES AND WORK AREAS - 00069000
- * MCHAREA, CCHREC, RCHBLOK, RCUBLOK AND RDEVBLOK 00070000
- * 00071000
- * 00072000
- *REGISTER USEAGE- 00073000
- * GPR 0= PSA BASE 00074000
- * GPR 0= LENGTH OF CHANNEL CHECK RECORD 00075000
- * GPR 1= PARAMETER 00076000
- * GPR 2=SCRATCH 00077000
- * GPR 3=INTERNAL SWITCHES 00078000
- * GPR 4= IOERBLOK BASE 00079000
- * GPR 5= SCRATCH 00080000
- * GPR 6= RCHBLOK BASE 00081000
- * GPR 7= RCUBLOK BASE 00082000
- * GPR 8= RDEVBLOK BASE 00083000
- * GPR 9= CHANNEL CHECK RECORD BASE 00084000
- * GPR 10= IOBLOK BASE 00085000
- * GPR 12= DMKCCH BASE 00086000
- * GPR 13= SAVEAREA BASE 00087000
- * GPR 14= SCRATCH 00088000
- * GPR 15= SCRATCH 00089000
- * 00090000
- * 00091000
- *NOTES- 00092000
- * WILL SUPPORT SYSTEM/370 MODEL 135, 138, 145, 148, 155-2, 00093000
- * 158, 158-2, 165-2, 168, 3033,3032 AND 3031. THERE IS ALSO 00094100
- * SUPPORT FOR THE 4331/4341 PROCESSORS. 00094200
- * 00095000
- * 00096000
- *OPERATION - DMKCCHNT AND DMKCCHIS. 00097000
- * 00098000
- * 1.CONTROL IS PASSED TO DMKCCH AFTER EITHER A SIO WITH FAILING 00099000
- * STATUS STORED, OR AN I/O INTERRUPT THAT REFLECTS CHANNEL 00100000
- * CONTROL CHECK,INTERFACE CONTROL CHECK, OR CHANNEL DATA 00101000
- * CHECK HAS OCCURED. 00102000
- * 00103000
- * 2.IF RDEVBLOK AND IOBLOK EXIST - 00104000
- * DMKCCH WILL BUILD AN IOERBLOK TO BE USED BY THE DEVICE 00105000
- * DEPENDENT ERP'S TO DETERMINE IF RECOVERY IS POSSIBLE FOR 00106000
- * CP INITIATED I/O EVENTS. I/O EVENTS ASSOCIATED WITH A VIRTUAL 00107000
- * USER THAT RESULT IN A CHANNEL ERROR WILL BE REFLECTED TO 00108000
- * THAT VIRTUAL MACHINE. THE WILL ENABLE THE VIRTUAL MACHINE 00109000
- * TO DO ITS OWN RECOVERY FROM CHANNEL CHECKS. 00110000
- * 00111000
- * 3 AN EXAMINATION OF THE CHANNEL STATUS WORD AND EXTENDED 00112000
- * CHANNEL STATUS WORD WILL BE PERFORMED TO DETERMINE IF THE 00113000
- * CHANNEL HAS BEEN RESET OR IF THE RESET CODES ARE INVALID; 00114000
- * THE CHANNEL STATUS WORD AND EXTENDED CHANNEL STATUS 00115000
- * WORD WILL ALSO BE EXAMINED TO SEE IF AN INTERFACE 00116000
- * HANG-UP (INTERFACE INOPERATIVE) HAS OCCURRED. 00117000
- * IF ANY OF THESE CONDITIONS IS PRESENT A MESSAGE IS 00118000
- * SENT TO THE OPERATOR AND A WAIT STATE IS PSW IS LOADED. IF 00119100
- * THIS IS A 4331/4341 PROCESSOR, THERE WILL NOT BE AN I/O FIXED 00119200
- * OR EXTENDED LOGOUT FOR A CHANNEL CHECK. THERE WILL BE A 00119300
- * LIMITED CHANNEL LOGOUT. THERE ALSO WILL NOT BE AN IOEL 00119400
- * POINTER(LOCATION 173-175). 00119500
- * 00120000
- * 4.AN ERROR RECORD WILL BE CONSTRUCTED WHICH WILL CONTAIN THE 00121000
- * EXTENDED CHANNEL STATUS WORD,THE CHANNEL LOGOUT,AND UP 00122000
- * TO EIGHT ACTIVE UNITS IN USE AT THE TIME OF ERROR ON THE 00123000
- * DAMAGED CHANNEL.DMKIOECC WILL USE THIS INFORMATION TO 00124000
- * BUILD THE CHANNEL CHECK RECORD. 00125000
- * 00126000
- * 5 THE DEVICE DEPENDENT ERP'S WILL USE THE SEQUENCE 00127000
- * CODE AND RETRY CODE PORTION OF THE ECSW IN THE IOERBLOK 00128000
- * TO DETERMINE CORRECT RETRY SEQUENCES. 00129000
- * 00130000
- * 00131000
- *OPERATION - DMKCCHRT. 00132000
- * 1. IF THE ERROR IS A CHANNEL CONTROL CHECK OR INTERFACE 00133000
- * CONTROL CHECK, CALL DMKQCNWT TO SEND ERROR MESSAGE 00134000
- * DMKCCH601I OR DMKCCH602I TO THE SYSTEM OPERATOR. 00135000
- * 2. IF THE ERROR WAS ASSOCIATED WITH A VIRTUAL MACHINE, AQUIRE 00136000
- * STORAGE FOR A NEW IOERBLOK, COPY THE OLD IOERBLOK TO THE NEW 00137000
- * IOERBLOK AND BUILD THE CCR EXTENTION. 00138000
- * 3. RETURN TO THE CALLER. 00139000
- * 00140000
- *MESSAGES- 00141000
- * DMKCCH601I CHANNEL CONTROL CHECK DEV XXX; USER USERID.. 00142000
- * DMKCCH602I INTERFACE CONTROL CHECK DEV XXX; USER USERID.. 00143000
- * DMKCCH603W CHANNEL ERROR; RUN SEREP, RESTART SYSTEM 00144000
- * DMKCCH604I CHANNEL ERROR DEV XXX ; USER XXXXXXXX MACHINE RESET 00145000
- * DMKCCH605I CHANNEL CHECK RECORDING FAILURE 00146000
- * 00147000
- ********************************************************************** 00148000
- EJECT 00149000
- COPY OPTIONS @VA01077 00150000
- EJECT 00151000
- COPY LOCAL @VA01077 00152000
- EJECT 00153000
- DMKCCH CSECT 00154000
- SPACE 00155000
- EXTRN DMKIOECC 00156000
- EXTRN DMKSCNRU 00157000
- EXTRN DMKCVTBH 00158000
- EXTRN DMKSYSCK 00159000
- ENTRY DMKCCHCF 00160000
- ENTRY DMKCCHMX 00161000
- ENTRY DMKCCHSZ 00162000
- EXTRN DMKSYSRM @VA01337 00163000
- ENTRY DMKCCH60 00164000
- EXTRN DMKSCNRD @VA01081 00165000
- EXTRN DMKQCNWT @V407510 00166000
- EXTRN DMKMCHST @V407510 00167000
- EXTRN DMKOPRWT @VA10837 00167010
- SPACE 3 00168000
- USING PSA,R0 00169000
- USING RCHBLOK,R6 00170000
- USING RCUBLOK,R7 00171000
- USING RDEVBLOK,R8 00172000
- USING IOBLOK,R10 00173000
- USING SAVEAREA,R13 00174000
- SPACE 00175000
- SPACE 00176000
- DMKCCHIS RELOC 00177000
- MVI ENTSW,SIOCCH SET ENTRY SWITCH FOR SIO ENTRY 00178000
- LM R4,R5,IOBCSW GET THE FAILING CSW @VA01068 00179000
- LH R3,IOBRADD GET THE DEVICE ADDRESS @VA01068 00180000
- B FINDBLOK GO STORE THE DEVICE ADDRESS 00181000
- DMKCCHNT RELOC 00182000
- MVI ENTSW,INTERCCH SET ENTRY SWITCH FOR INTERRUPT ENTRY 00183000
- SR R10,R10 CLEAR IOB POINTER @VA01337 00184000
- FINDBLOK EQU * 00185000
- STM R4,R5,CSW PUT BACK THE CSW @VA01068 00186000
- STH R3,SIOADDR SAVE THE DEVICE ADDRESS @VA01068 00187000
- TM CSW,X'04' IS LOGOUT PENDING ? 00188000
- BZ CCHSCAN NO, GO GET DEVICE BLOCKS 00189000
- OI ENTSW,TERMSYS SET SYSTEM TERMINATION FLAG 00190000
- CCHSCAN EQU * 00191000
- LR R1,R3 GET REAL DEVICE ADD. FOR DMKSCN @VA09029 00191500
- CALL DMKSCNRU GET THE REAL CHANNEL, CONTROL UNIT AND 00192000
- * DEVICE BLOCK ADDRESSES 00193000
- STM R6,R8,RCHSAVE SAVE THE RCHBLOK, RCUBLOK AND RDEVBLOK 00194000
- BNZ BULDREC GO BUILD RECORD IF ADDRESSES DON'T 00195000
- * EXIST 00196000
- OI ENTSW,DEVCCH INDICATE THE DEVICE BLOCK ADDRESS EXIST 00197000
- ICM R10,15,RDEVAIOB GET THE I/O BLOCK ADDRESS 00198000
- BZ BULDREC IF THE ADDRESS IS ZERO, GO BUILD 00199000
- * CCH RECORD 00200000
- OI ENTSW,IOBCCH INDICATE THE I/O BLOCK ADDRESS EXIST 00201000
- BULDREC EQU * 00202000
- SR R0,R0 CLEAR REGISTER @VA00881 00203000
- ICM R0,3,DMKCCHMX GET THE LENGTH OF CCH RECORD @V5088AA 00204000
- BZ CPTERM IF ZERO, GO TERMINATE SYSTEM 00205000
- A R0,F7 PUT LENGTH ON A DOUBLEWORD @VA00881 00206000
- * BOUNDARY 00207000
- SRL R0,3 DIVIDE BY 8 00208000
- ST R0,RECLENTH SAVE THE LENGTH OF THE CCH RECORD 00209000
- CALL DMKFREE GO GET STORAGE 00210000
- ST R1,RECADDR SAVE THE ADDRESS OF THE CCH RECORD 00211000
- STM R4,R5,CSW RESTORE THE CSW @VA01068 00212000
- LR R9,R1 SAVE THE CCH RECORD ADDRESS 00213000
- USING CCHREC,R9 SETUP ADDRESSABILITY FOR CCH RECORD 00214000
- XC CCRECTYP(CCHSIZE*8),CCRECTYP CLEAR CCH RECORD HEADER 00215000
- MVC CCHREC(8),CCHCONST MOVE RECORD HEADER INTO RECORD 00216000
- MVC CCCPUID(8),CPUID SAVE CPU ID NUMBER @V508690 00217000
- L R2,CAW GET CHANNEL ADDRESS WORD @VA01337 00218000
- LA R2,0(,R2) CLEAR HIGH ORDER BYTE @VA01337 00219000
- TM ENTSW,INTERCCH IS THIS AN I/O INTERRUPT @VA01337 00220000
- BZ CCHBYPAS NO, GO VALIDATE ADDRESS @VA01337 00221000
- ICM R2,C7,CSW+1 GET THE CCW ADDRESS 00222000
- BZ ADDMOVE IF ADDRESS IS ZERO, DON'T MOVE DATA 00223000
- LA R2,0(R2) GET THE ADDRESS OF THE LAST CCW PLUS 8 00224000
- S R2,F8 GET THE ADDRESS OF THE LAST CCW 00225000
- BM ADDMOVE IF ADDRESS IS NEGATIVE, DON'T MOVE CCW 00226000
- CCHBYPAS EQU * @VA01337 00227000
- L R5,=A(DMKSYSRM) GET ADDRESS OF MAX. STORAGE @VA01337 00228000
- L R5,0(,R5) GET MAX. SIZE OF REAL STORAGE @VA01337 00229000
- CR R2,R5 IS THIS ADDRESS IN REAL STORAGE @VA01337 00230000
- BNL ADDMOVE NO, GO MOVE IN FAILING CSW @VA01337 00231000
- STC R2,FAILCSW SAVE LOW ORDER BYTE @VA01337 00232000
- TM FAILCSW,X'07' IS THIS ADDR. ON DOUBLEWORD BDY @VA01337 00233000
- BNZ ADDMOVE NO, GO MOVE IN FAILING CSW @VA01337 00234000
- MVC FAILCCW,0(R2) SAVE FAILING CCW @VA01337 00235000
- ADDMOVE EQU * @VA01337 00236000
- MVC FAILCSW,CSW SAVE FAILING CSW @VA01337 00237000
- LH R2,SIOADDR GET THE FAILING DEVICE ADDRESS 00238000
- STCM R2,7,CCHCUA SAVE FAILING DEVICE ADDRESS @VA01068 00239000
- SRL R2,8 GET THE CHANNEL NUMBER 00240000
- IC R0,DMKCCHCF(R2) GET THE CHANNEL TYPE 00241000
- STC R0,CCHANID SAVE THE CHANNEL TYPE IN RECORD 00242000
- TM ENTSW,DEVCCH DOES THE REAL DEVICE BLOCK EXIST ? 00243000
- BZ CCHIO NO, GO CHECK FOR I/O BLOCK 00244000
- MVC CCDEVTYP(4),RDEVSTAT MOVE DEVICE DATA TO CCH @VA01068 00245000
- * RECORD 00246000
- CCHIO EQU * 00247000
- MVC CCPROGID,CPEYED MOVE IN CP/370 IDENTIFICATION @VA01068 00248000
- TM ENTSW,IOBCCH DOES THE I/O BLOCK EXIST ? 00249000
- BZ RDEVBSY NO, GO TEST FAILING DEVICE 00250000
- TM IOBFLAG,IOBCP WAS THIS A CP GENERATED @VA01077 00251000
- BNZ RDEVBSY YES, GO TEST FAILING DEVICE @VA00881 00252000
- L R14,IOBUSER GET THE USER'S VMBLOK ADDRESS 00253000
- MVC CCPROGID,VMUSER-VMBLOK(R14) SAVE THE USER'S ID. 00254000
- RDEVBSY EQU * 00255000
- SR R4,R4 CLEAR ADDRESSABILITY REGISTER FOR 00256000
- * THE I/O ERROR BLOCK 00257000
- TM ENTSW,DEVCCH+IOBCCH DOES THE BLOCKS EXIST ? 00258000
- BNO CCHDEPND NO, GO GET DEPENDENT ROUTINE 00259000
- TM IOBSPEC,IOBTIO WAS ERROR ON TIO INSTRUCTION ? 00260000
- BZ CCHHIOI NO, GO TEST FOR HIO INSTRUCTION 00261000
- OI ENTSW,TIOCCH SET TIO INDICATOR 00262000
- CCHHIOI EQU * 00263000
- TM IOBSPEC,IOBHIO WAS ERROR ON HIO INSTRUCTION ? 00264000
- BZ CCHIOERL NO, GO GET IOERBLOK LENGTH 00265000
- OI ENTSW,HIOCCH SET HIO INDICATOR 00266000
- CCHIOERL EQU * 00267000
- LA R0,IOERSIZE+1 GET THE DOUBLEWORD LENGTH OF THE I/O 00268000
- * ERROR BLOCK 00269000
- LM R4,R5,CSW GET THE CSW INFORMATION @VA01068 00270000
- CALL DMKFREE GO GET THE STORAGE 00271000
- STM R4,R5,CSW RESTORE THE CSW @VA01068 00272000
- LR R4,R1 SAVE THE I/O ERROR BLOCK ADDRESS 00273000
- ICM R1,15,IOBIOER GET IOERBLOK ADDRESS @VA01337 00274000
- ST R4,IOBIOER SAVE NEW IOERBLOK ADDRESS @VA01337 00275000
- BZ CCIOERBK IF ZERO, GO SET UP IOERBLOK @VA01337 00276000
- LA R0,IOERSIZE GET SIZE IN DOUBLEWORDS @VA01337 00277000
- AH R0,IOEREXT-IOERBLOK(R1) GET EXTENSION @VA01337 00278000
- CALL DMKFRET FRET IOERBLOK @VA01337 00279000
- CCIOERBK EQU * @VA01337 00280000
- USING IOERBLOK,R4 SETUP ADDRESSABILITY FOR I/O ERROR BLOCK 00281000
- XC IOERBLOK(IOERSIZE*8),IOERBLOK CLEAR THE I/O ERROR BLOCK 00282000
- MVI IOEREXT+1,X'01' PUT IN LENGTH OF EXTENSION 00283000
- MVC IOERCSW,FAILCSW SAVE CSW IN I/O ERROR BLOCK @VA01068 00284000
- MVC IOERCCRL(8),RECLENTH SAVE THE CCH RECORD LENGTH 00285000
- * AND ADDRESS 00286000
- CCHDEPND EQU * 00287000
- USING MCHAREA,R5 SETUP ADDRESSABILITY FOR MCH AREA 00288000
- L R5,AMCHAREA GET PTR TO MCH COMMON AREA @V407510 00289000
- L R15,DMK2880 GET THE ADDRESS OF THE 2880 MODULE 00290000
- LA R0,CCHSIZE GET THE SIZE OF THE CCH RECORD IN 00291000
- * DOUBLEWORDS 00292000
- MVC IGPRGFLG(1),ENTSW GET THE TYPE OF CONDITION @VA01068 00293000
- NI IGPRGFLG,CCHSIOB+CCHINTB+CCHTIO+CCHHIO CLEAR @VA01068 00294000
- * FLAGS 00295000
- TM IGPRGFLG,CCHTIO+CCHHIO IS TIO OR HIO INDICATED ?@VA01068 00296000
- BZ CCHBEGIN NO, GO TEST FOR CHANNEL TYPE @VA01068 00297000
- NI IGPRGFLG,X'FF'-CCHSIOB CLEAR THE SIO INDICATOR @VA01068 00298000
- CCHBEGIN EQU * @VA01068 00299000
- OI IGPRGFLG,CCHSNSB INDICATE THE SENSE DATA IS @VA01068 00300000
- * STORED 00301000
- OI IGVALIDB,CCHRCV+CCHCAV INDICATE THE RETRY CODE @VA01068 00302000
- * AND CHANNEL ADDRESS ARE VALID 00303000
- CLI CCHANID,X'08' IS THIS A 2880 CHANNEL TYPE ? 00304000
- MVI CCHCLOGL+1,X'70' SET UP LOG LENGTH @V508690 00305000
- BE CCHEXIT1 YES, GO GET DEPENDENT MODULE 00306000
- CLI CCHANID,X'07' IS THIS A 2880 CHANNEL TYPE ? 00307000
- BE CCHEXIT1 YES, GO GET DEPENDENT MODULE 00308000
- MVI CCHCLOGL+1,X'00' SET UP LOG LENGTH @V508690 00309000
- TM FAILCSW+5,IFCC+CCC IS THIS A CHANNEL DATA CHECK @VA01068 00310000
- BZ RCUSCN1 YES, GO GET EIGHT BUSY UNITS 00311000
- CLI MCHMODEL,MODEL165 IS THIS A MODEL 165 OR 168 ? 00312000
- BNE INTEGRAT NO, GO TO INTEGRATED CHANNEL SUPPORT 00313000
- MVI CCHCLOGL+1,X'18' SET UP LOG LENGTH @V508690 00314000
- L R15,DMKCCH60 GET THE ADDRESS OF THE 2880 MODULE 00315000
- CLI CCHANID,X'05' IS THIS A 2860 CHANNEL TYPE ? 00316000
- BE CCHEXIT1 YES, GO GET DEPENDENT MODULE 00317000
- L R15,DMK2870 GET THE ADDRESS OF THE 2870 MODULE 00318000
- CLI CCHANID,X'06' IS THIS A 2870 CHANNEL TYPE ? 00319000
- BNE CCHERROR NO, GO SET SYSTEM TERMINATION 00320000
- ********************************************************************** 00321000
- CCHEXIT1 EQU * 00322000
- LTR R15,R15 IS THERE AN ADDRESS FOR 00323000
- * THE DEPENDENT MODULE ? 00324000
- BZ CPTERM NO, GO TERMINATE THE OPERATING SYSTEM 00325000
- BALR R14,R15 GO TO DEPENDENT MODULE 00326000
- TM ENTSW,TERMSYS IS SYSTEM TERMINATION ON ? 00327000
- BO RCUSCN1 YES, GO GET EIGHT BUSY UNITS 00328000
- TM FAILCSW+5,CDC IS THIS A CHANNEL DATA CHECK ? @VA01068 00329000
- BO RCUSCN1 YES, GET EIGHT BUSY UNITS @VA01337 00330000
- TM IGTERMSQ,COMPSYS IS TERMINATION CODE = 3 FOR @VA01077 00331000
- * SYSTEM RESET 00332000
- BO CCHERROR YES, GO SET TERMINATION FLAG @VA01077 00333000
- LTR R4,R4 IS THERE AN IOERBLOK ADDRESS ? 00334000
- BZ RCUSCN1 NO, GO GET EIGHT BUSY UNITS 00335000
- MVC IOERECSW(4),FAILECSW MOVE FAILING ECSW INTO @VA01077 00336000
- * I/O ERROR BLOCK 00337000
- B RCUSCN1 GO GET EIGHT BUSY UNITS 00338000
- ********************************************************************** 00339000
- INTEGRAT EQU * 00340000
- SR R2,R2 CLEAR REG 2 TO USE AS INDICATOR @VA08513 00340100
- TM ECSWLOG,X'80' IS LIMITED CHANNEL LOGOUT VALID @VA01337 00341000
- BO CCHSYSM NO, SET SYSTEM TERMINATION FLAG @VA01337 00342000
- TM ECSWLOG+1,X'01' TEST THE 'LOG STORED' BIT IN LCL@VA08513 00342100
- BZ CCHRESET EITHER LOG WAS NOT STORED OR @VA08513 00342200
- * THIS CPU DOES NOT SET BIT 15 IN LCL 00342300
- LA R2,1 SET AN INDICATION OF LOG STORED @VA08513 00342400
- CCHRESET TM ECSWLOG+3,COMPSYS IS CHANNEL RESET? @VA08513 00343000
- BO CCHSYSM GO SET SYSTEM TERMINATION @V5088AA 00344000
- TM FAILCSW+5,IFCC INTERFACE CONTROL CHECK? @V5088AA 00345000
- BZ CCHIOER NO, TEST FOR IOERBLOK @V5088AA 00346000
- TM ECSWBYT3,CCHIOH I/O INTERFACE HANG-UP? @V5088AA 00347000
- BNO CCHIOER NO, TEST FOR IOERBLOK @V5088AA 00348000
- TM RCHSTAT,RCHDED IS THE CHANNEL DEDICATED ?? @V508690 00349000
- BO CCHIOER YES, THEN REFLECT ERROR TO USER @V508690 00350000
- CCHSYSM EQU * 00351000
- OI ENTSW,TERMSYS SET SYSTEM TERMINATION FLAG 00352000
- CCHIOER EQU * 00353000
- MVC FAILECSW+1(3),ECSWLOG+1 FAILING ECSW INTO @VA01337 00354000
- * CCH RECORD 00355000
- LTR R4,R4 IS THERE AN IOERBLOK ADDRESS 00356000
- BZ CCHFAIL NO, GO GET FAILING ECSW 00357000
- MVC IOERECSW(4),ECSWLOG MOVE IN ECSW @VA09068 00358100
- * CCH RECORD 00359000
- CCHFAIL EQU * 00360000
- LA R0,CCHSIZE1 GET THE SIZE OF CCH RECORD @VA01068 00361000
- A R0,F7 PUT LENGTH IN @VA01068 00362000
- SRL R0,3 DOUBLEWORDS @VA01068 00363000
- MVC CCHADDR+2(2),SIOADDR MOVE IN UNIT ADDRESS @VA01068 00364000
- * BY INTEGRATED CHANNEL 00365000
- MVI ECSWLOG,X'FF' INITIALIZE THE ECSW @VA01337 00366000
- CLI MCHMODEL,MOD4331 MODEL 4331/4341? @V60A6B6 00366100
- BE RCUSCN1 THEN IOELPNTR MAY BE INVALID. @V60A6B6 00366200
- ICM R1,15,IOELPNTR GET ADDRESS OF I/O EXTENDED LOGOUT 00367000
- * AREA 00368000
- BZ RCUSCN1 IF ADDRESS IS ZERO, GO INDICATE 00369000
- * SIZE OF CCH RECORD 00370000
- LTR R2,R2 WAS BIT 15 OF LCL (LOG STORED) =1@VA08513 00370100
- BNZ GOODIOEL IF SO, DONT CHECK IOEL FOR X'FF'S@VA08513 00370200
- CLC 0(4,R1),FFS IS THE LOGOUT AREA VALID ? 00371000
- BE RCUSCN1 NO, GO INDICATE SIZE OF CCH RECORD 00372000
- GOODIOEL SR R2,R2 CLEAR WORK REGISTER @VA08513 00373000
- ICM R2,3,DMKCCHSZ GET THE SIZES OF THE I/O EXT. @V5088AA 00374000
- * LOGOUT AREA 00375000
- BZ RCUSCN1 IF ZERO, GO INDICATE CCH RECORD SIZES 00376000
- CLI MCHMODEL,MODEL145 IS THIS A MODEL 145/148? @V386298 00377000
- BNE CCHMVC1 NO, GO MOVE LOGOUT AREA INTO RECORD 00378000
- CLI CCHANID,X'01' IS THIS A BYTE MPX CHANNEL ? 00379000
- BNE CCHMVC1 NO, GO MOVE LOGOUT AREA INTO RECORD 00380000
- TM 0(R1),X'80' DOES LOGOUT APPLIES TO THIS ERROR@VA01068 00381000
- BZ RCUSCN1 NO, GO SAVE CCH RECORD LENGTH @VA01068 00382000
- LA R2,76 GET SIZE OF I/O EXTENDED LOGOUT @VA01068 00383000
- * FOR CHANNEL CONTROL CHECK 00384000
- TM FAILCSW+5,IFCC IS THIS INTERFACE CONT CHECK ? @VA01068 00385000
- BZ CCHMVC1 NO, GO GET THE SIZES OF THE CCH RECORD 00386000
- LA R2,36 GET SIZE OF I/O EXTENDED LOGOUT @VA01068 00387000
- * FOR INTERFACE CONTROL CHECK 00388000
- CCHMVC1 EQU * 00389000
- LA R0,CCHSIZE1(R2) GET SIZE OF CCH RECORD @VA01068 00390000
- A R0,F7 PUT LENGTH IN @VA01068 00391000
- STCM R2,B'0011',CCHCLOGL SAVE SIZE OF LOGOUT @V508690 00392000
- SRL R0,3 DOUBLEWORDS @VA01068 00393000
- LR R14,R4 TEMPORARY SAVE OF IOERBLOK @ @V5088AA 00394000
- LR R15,R2 TEMPORARY SAVE OF IOEL LENGTH @V5088AA 00395000
- LR R3,R2 LENGTH TO MOVE @V5088AA 00396000
- LR R5,R3 LENGTH TO MOVE @V5088AA 00397000
- LR R4,R1 'FROM' ADDRESS (IOEL) @V5088AA 00398000
- LA R2,CCHLOG45 'TO' ADDRESS (CCH RECORD) @V5088AA 00399000
- MVCL R2,R4 MOVE IOEL TO CCH RECORD @V5088AA 00400000
- LR R2,R1 'TO' ADDRESS (IOEL) @V5088AA 00401000
- LR R3,R15 LENGTH OF IOEL FOR MOVE @V5088AA 00402000
- LR R4,R2 'FROM' ADDRESS @V5088AA 00403000
- L R5,F255 PAD CHARACTER @V5088AA 00404000
- SLL R5,24 PAD CHAR. OF X'FF', LENGTH=0 @V5088AA 00405000
- MVCL R2,R4 PROPAGATE FF'S THRUOUT IOEL @V5088AA 00406000
- LR R4,R14 RESTORE IOERBLOK BASE ADDRESS @V5088AA 00407000
- B RCUSCN1 GO SAVE THE CCH RECORD LENGTH 00408000
- ********************************************************************** 00409000
- CCHERROR EQU * 00410000
- OI ENTSW,TERMSYS SET SYSTEM TERMINATION FLAG 00411000
- ********************************************************************** 00412000
- RCUSCN1 EQU * 00413000
- CALL DMKFREE GET THE STORAGE FOR THE CCH @VA00881 00414000
- * RECORD 00415000
- LTR R4,R4 IS THERE AN IOERBLOK ? @VA00881 00416000
- BZ RMSREC NO, GO COPY CCH RECORD INTO NEW @VA00881 00417000
- * STORAGE 00418000
- STM R0,R1,IOERCCRL SAVE SIZE AND ADDRESS OF CCH @VA00881 00419000
- * RECORD 00420000
- RMSREC EQU * @VA00881 00421000
- LR R5,R0 GET THE SIZE OF THE CCH RECORD @VA00881 00422000
- SLL R5,3 GET THE LENGTH IN BYTES FOR CCH @VA00881 00423000
- * RECORD 00424000
- LR R3,R5 GET THE LENGTH OF CCH RECORD @VA00881 00425000
- LR R2,R1 GET THE ADDRESS OF THE NEW CCH @VA00881 00426000
- * RECORD 00427000
- L R4,RECADDR GET THE ADDRESS OF THE OLD CCH @VA00881 00428000
- * RECORD 00429000
- MVCL R2,R4 MOVE THE CCH RECORD TO NEW @VA00881 00430000
- * LOCATION 00431000
- LR R2,R0 GET THE SIZE OF THE NEW CCH @VA00881 00432000
- * RECORD 00433000
- LR R3,R1 GET THE ADDRESS OF THE NEW CCH @VA00881 00434000
- * RECORD 00435000
- LR R9,R3 GET THE ADDRESS OF THE NEW CCH @VA00881 00436000
- * RECORD 00437000
- LM R0,R1,RECLENTH GET THE SIZE AND ADDRESS OF @VA00881 00438000
- * THE OLD CCH RECORD 00439000
- CALL DMKFRET RELEASE STORAGE FOR OLD CCH @VA00881 00440000
- * RECORD 00441000
- STM R2,R3,RECLENTH SAVE THE SIZE AND ADDRESS OF THE @VA00881 00442000
- * NEW CCH RECORD 00443000
- RCUSCN2 EQU * 00444000
- SR R1,R1 CLEAR SWITCH REGISTER 00445000
- LTR R6,R6 IS THERE AN RCHBLOK ADDRESS ? 00446000
- BM SCNEND NO, GO TEST FOR SYSTEM TERMINATION 00447000
- TM ENTSW,DEVCCH DOES THE DEVICE ADDRESS EXIST ? 00448000
- BZ RCUSCN NO, GO SETUP FOR SCAN 00449000
- TM RDEVSTAT,RDEVBUSY WAS FAILING DEVICE ACTIVE ? 00450000
- BZ RCUSCN NO, GO SETUP FOR SCAN 00451000
- MVC FAILADD(2),SIOADDR SAVE THE FAILING DEVICE ADDRESS 00452000
- LA R1,2 UPDATE THE SAVE AREA FOR UNITS BY 1 00453000
- RCUSCN EQU * 00454000
- LA R2,2 INITIALIZE THE INCREMENT LENGTH 00455000
- LR R4,R2 UPDATE REGISTER 4 00456000
- LA R3,62 INITIALIZE THE COUNT 00457000
- ST R11,FALADDPT SAVE THE CONTENT OF REGISTER 11 00458000
- SR R11,R11 CLEAR REGISTER 11 00459000
- RCCUSCN EQU * 00460000
- LH R7,RCHCUTBL(R11) GET THE CONTROL UNIT ADDRESS 00461000
- LTR R7,R7 IS THERE A CONTROL UNIT ADDRESS ? 00462000
- BM RCUSCNI NO, GO GET NEXT CONTROL UNIT 00463000
- A R7,ARIOCU GET ADDRESS OF RCUBLOK 00464000
- SR R14,R14 CLEAR REGISTER 14 FOR INDEX 00465000
- LA R5,30 INITIALIZE COUNT REGISTER 00466000
- RDEVSCN EQU * 00467000
- LH R8,RCUDVTBL(R14) GET THE DEVICE ADDRESS 00468000
- LTR R8,R8 IS THERE A DEVICE ADDRESS ? 00469000
- BM RDVSCNI NO, GO GET NEXT DEVICE ADDRESS 00470000
- SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 00471000
- A R8,ARIODV GET ADDRESS OF RDEVBLOK 00472000
- C R8,RDEVSAVE IS THIS THE FAILING DEVICE ADDRESS 00473000
- BE RDVSCNI YES, DON'T PUT ADDRESS IN RECORD 00474000
- TM RDEVSTAT,RDEVBUSY WAS THE DEVICE BUSY ? 00475000
- BZ RDVSCNI NO, GO GET NEXT DEVICE ADDRESS 00476000
- FOUNDUM EQU * 00477000
- C R1,F16 ARE THERE EIGHT CONTROL UNITS SAVE ? 00478000
- BE SCNEND1 YES, GO GET DEVICE ADDRESS 00479000
- LH R0,RDEVADD GET DEVICE ADDRESS 00480000
- LH R15,RCUADD GET CONTROL UNIT ADDRESS 00481000
- OR R15,R0 GET THE 00482000
- LH R0,RCHADD CONTROL UNIT ADDRESS 00483000
- OR R15,R0 * 00484000
- STH R15,FAILADD(R1) SAVE UNIT ADDRESS IN CCH RECORD 00485000
- LA R1,2(R1) UPDATE UNIT ADDRESS COUNT 00486000
- RDVSCNI EQU * 00487000
- BXLE R14,R4,RDEVSCN GET THE NEXT DEVICE ADDRESS AND BRANCH 00488000
- RCUSCNI EQU * 00489000
- BXLE R11,R2,RCCUSCN GET THE NEXT CONTROL UNIT AND BRANCH 00490000
- SCNEND1 EQU * 00491000
- L R11,FALADDPT RESTORE THE CONTENT OF REGISTER 11 00492000
- SCNEND EQU * 00493000
- TM ENTSW,TERMSYS IS SYSTEM TERMINATION INDICATED ? 00494000
- BO CCHRESTO YES, RESTORE I/O EXTENDED LOGOUT AREA 00495000
- * FOR SEREP 00496000
- LM R7,R8,RCUSAVE GET THE DEVICE AND CONTROL UNIT ADDRS. 00497000
- TM ENTSW,DEVCCH+IOBCCH DOES THE ADDRESSES EXIST ? 00498000
- BNO CCHIOE NO, GO PUT CCH RECORD OUT ON 00499000
- * LOGREC 00500000
- LM R4,R5,FAILCSW GET THE CSW FOR RESTORE @VA01068 00501000
- TM ENTSW,INTERCCH INTERRUPT ENTRY @VA01068 00502000
- BO RESTDEV YES, RESTORE DEVICE AND CSW @VA01068 00503000
- B RESTCSW @VA01068 00504000
- ********************************************************************* 00505000
- ********************************************************************* 00506000
- SPACE 2 00507000
- CCHIOE EQU * IF NO RDEV OR NO IOBLOK, COME HERE TO RECORD CHL CHK 00508000
- LM R4,R5,FAILCSW GET THE CSW FOR RESTORE @VA01068 00509000
- BAL R3,MESSAGE GO WRITE THE MESSAGE @VA01068 00510000
- L R7,RECLENTH GET CCH RECORD LENGTH 00511000
- L R6,RECADDR GET THE ADDRESS OF THE CCH RECORD AREA 00512000
- SR R0,R0 CLEAR RETURN CODE REGISTER @VA03358 00513000
- CALL DMKIOECC,AFFINITY @V407510 00514000
- LTR R0,R0 WAS THE RECORDING SUCCESSFUL 00515000
- BZ MSGGEN YES, GO PUT OUT MESSAGE 00516000
- LA R0,MSG15L GET THE LENGTH OF THE MESSAGE 00517000
- LA R1,MSG15M GET THE ADDRESS OF THE ERROR MESSAGE 00518000
- CALL DMKQCNWT,PARM=OPERATOR+ALARM+NORET,AFFINITY @V407510 00519000
- MSGGEN EQU * 00520000
- TM ENTSW,SIOCCH START I/O ENTRY @VA01068 00521000
- BO RESTCSW YES, JUST RESTORE THE CSW @VA01068 00522000
- RESTDEV LH R2,SIOADDR GET THE DEVICE ADDRESS @VA01068 00523000
- STH R2,INTTIO RESTORE IT @VA01068 00524000
- RESTCSW EQU * @VA01068 00525000
- STM R4,R5,CSW RESTORE THE CSW FOR IOS @VA01068 00526000
- EXIT RETURN TO IOS 00527000
- ********************************************************************* 00528000
- EJECT 00529000
- CCHRESTO EQU * 00530000
- MVC ECSWLOG(4),FAILECSW RESTORE ECSW INFORMATION @VA01337 00531000
- SR R2,R2 CLEAR REGISTER 2 00532000
- ICM R2,3,DMKCCHSZ GET THE I/O EXT. LOGOUT LENGTH @V5088AA 00533000
- BZ CPTERM IF ZERO, GO PUT SYSTEM DOWN 00534000
- BCTR R2,R0 SUBTRACT ONE FROM THE LENGTH 00535000
- ICM R1,15,IOELPNTR GET THE POINTER TO THE I/O 00536000
- * EXTENDED LOGOUT 00537000
- BZ CPTERM IF ZERO, GO PUT SYSTEM DOWN 00538000
- SR R3,R3 CLEAR REGISTER 3 FOR INDEX 00539000
- L R5,AMCHAREA GET PTR TO MCH COMMON AREA @V407510 00540000
- ICM R3,1,MCHMODEL GET THE MODEL ID. 00541000
- B CCHSEREP(R3) BRANCH TO THE CORRECT MODEL SUPPORT 00542000
- CCHSEREP EQU * 00543000
- B CPTERM GO PUT THE SYSTEM DOWN 00544000
- B LOGOUT RESTORE LOGOUT AREA 00545000
- B LOGOUT RESTORE LOGOUT AREA FOR 145 00546000
- B CPTERM GO PUT SYSTEM DOWN 00547000
- B CCHCHAN GO CHECK CHANNEL ID FOR 165/168 00548000
- B CPTERM GO PUT THE SYSTEM DOWN FOR 3031/ @V5088AA 00549000
- * 3032/3033 PROCESSORS 00550000
- LOGOUT EQU * 00551000
- EX R2,MVCLOG RESTORE I/O EXTENDED LOGOUT AREA 00552000
- B CPTERM GO PUT SYSTEM DOWN 00553000
- SPACE 2 00554000
- ********************************************************************* 00555000
- MVCLOG MVC 0(0,R1),CCHLOG45 MOVE I/O EXTENDED LOGOUT 00556000
- * INTO STORAGE 00557000
- MVCLOG1 MVC 0(0,R1),CCHLOG80 MOVE I/O EXTENDED LOGOUT 00558000
- * FOR STANDALONE CHANNEL INTO STORAGE 00559000
- ********************************************************************* 00560000
- SPACE 2 00561000
- CCHCHAN EQU * 00562000
- CLI RECLENTH+3,X'18' IS THIS A 2880 CHANNEL ? @VA00881 00563000
- BE LOGOUT1 YES, GO RESTORE I/O EXTENDED LOGOUT 00564000
- LA R1,304 ADDRESS OF THE I/O EXTENDED LOGOUT AREA 00565000
- LA R2,23 THE LENGTH OF THE I/O EXTENDED LOGOUT 00566000
- CLI RECLENTH+3,X'0D' IS THIS A 2860 OR 2870 @VA00881 00567000
- * CHANNEL ? 00568000
- BNE CPTERM NO, GO PUT SYSTEM DOWN 00569000
- LOGOUT1 EQU * 00570000
- EX R2,MVCLOG1 RESTORE I/O EXTENDED LOGOUT AREA 00571000
- EJECT 00572000
- ********************************************************************* 00573000
- * OPERATOR COMMUNICATION ROUTINE 00574000
- ********************************************************************* 00575000
- SPACE 2 00576000
- CPTERM EQU * 00577000
- LH R2,SIOADDR GET THE ADDRESS OF THE DEVICE 00578000
- STH R2,IOOPSW+2 SAVE THE DEVICE ADDRESS IN I/O OLD 00579000
- * PSW 00580000
- USING VMBLOK,R11 SETUP ADDRESSABILITY FOR VMBLOK 00582000
- AIF (NOT &AP).CCHWFD @VA10837 00585010
- SWTCH DS 0H SWITCH TO MAIN PROCESSOR @VA10837 00585020
- TM APSTAT1,PROCIO MAIN PROCESSOR? @VA10837 00585030
- BNO ATTTERM NO, BRANCH @VA10837 00585040
- SIGNAL SSS STOP & STORE STATUS TO AP @VA10837 00585050
- B CCHCONT @VA10837 00585060
- ATTTERM DS 0H @VA10837 00585070
- L R4,PREFIXA GET OWN PREFIX REG @VA10837 00585080
- STM R0,R15,DUMPSAVE-PSA(R4) SAVE REGS FOR RESTART @VA10837 00585090
- L R4,PREFIXB GET OTHER PREFIX REG @VA10837 00585100
- MVC RSRTNPSW-PSA(,R4),RSRTMAIN RESTART NEW PSW @VA10837 00585110
- SIGNAL SSS SIGNAL MAIN PROCESSOR TO STOP @VA10837 00585120
- SIGNAL RESTART SIGNAL MAIN PROCESSOR TO RESTART @VA10837 00585130
- SIGNAL STOP,CONTROL=AUTO SIGNAL SELF TO STOP @VA10837 00585140
- MAINRSRT DS 0H RESTART ON MAIN PROCESSOR @VA10837 00585150
- L R4,PREFIXA GET OWN PREFIX REGISTER @VA10837 00585160
- LM R0,R15,DUMPSAVE-PSA(R4) RESTORE REGS @VA10837 00585170
- CCHCONT DS 0H @VA10837 00585180
- .CCHWFD ANOP 00585190
- LA R1,CCMSG GET THE CHANNEL MESSAGE @VA13439 00585194
- LA R0,CCMSGL GET LENGTH OF MESSAGE @VA13439 00585198
- MVC SAVEWRK2(20),IOOPSW @VA10837 00585200
- CALL DMKOPRWT,PARM=ALARM WRITE TO OPERATOR @VA10837 00585210
- MVC IOOPSW(20),SAVEWRK2 NOW REINSTATE @VA10837 00585220
- L R14,PREFIXA GET OWN PREFIX REG @VA10837 00585230
- CLC CPID-PSA(4,R14),WARM WARM INDICATED IN ID @VA10837 00585240
- BNE CCHCKP NO,DONT CHANGE ID @VA10837 00585250
- MVC CPID-PSA(4,R14),CPCP MOVE ID FOR CHECKPOINT @VA10837 00585260
- CCHCKP DS 0H @VA10837 00585270
- MVI MCNPSW+3,X'0F' SET FOR SEREP @VA10837 00585280
- LPSW WAITCCH ENTER DISABLE WAIT @VA10837 00585290
- SPACE 00587000
- ********************************************************************* 00588000
- SPACE 00589000
- DROP R6 @VMD0144 00590000
- EJECT 00591000
- ******************************************************************* 00592000
- * PRINT THE CHANNEL ERROR MESSAGE FOR DMKIOE. 00593000
- ********************************************************************* 00594000
- SPACE 00595000
- DMKCCHRT RELOC 00596000
- LTR R10,R10 IS THERE AN IOBLOK ? @VA01077 00597000
- BNP CCHEND NO, DON'T LOOK FOR TROUBLE @VA01077 00598000
- L R4,IOBIOER GET IOERBLOK ADDRESS 00599000
- L R9,IOERCCRA GET RECORD ADDRESS 00600000
- BAL R3,MESSAGE GO SETUP CCH MESSAGE 00601000
- LTR R8,R8 WAS THERE A RDEVBLOK ? 00602000
- BNP CCHEND NO,EXIT GRACEFULLY 00603000
- SPACE 00604000
- TM IOBFLAG,IOBCP WAS THIS A CP GENERATED @VA01077 00605000
- * EVENT ? 00606000
- BNZ CCHEND YES, EXIT @VA00881 00607000
- LTR R4,R4 DO WE HAVE AN IOERBLOK ? @V508690 00608000
- BZ CCHEND NO,LETS RETURN @V508690 00609000
- LH R2,CCHCLOGL GET THE LENGTH OF LOGOUT @V508690 00610000
- LA R2,CCHADDR-CCCPUID(R2) LENGTH OF IOERCCR EXT @V508690 00611000
- CLI CCHANID,X'08' CHECK FOR STANDALONE CHANNEL @V508690 00612000
- BE LNTHOK IT IS, DO NOT INCREMENT COUNT @V508690 00613000
- TM CCHANID,X'04' ONE OF THE OTHER STANDALONES ? @V508690 00614000
- BO LNTHOK YES, DO NOT INCREMENT COUNT @V508690 00615000
- LA R2,4(,R2) INCREMENT COUNT,INTEGRAT ADDR @V508690 00616000
- LNTHOK A R2,F7 ROUND UP @V508690 00617000
- SRL R2,3 CONVERT TO DOUBLEWORDS @V508690 00618000
- STH R2,IOERCCH SAVE SIZE OF CCH RECORD @V508690 00619000
- LA R0,IOERSIZE(R2) ADD IN THE IOERBLOK SIZE @V508690 00620000
- AH R0,IOEREXT ADD IOEREXT SIZE (SHOULD BE 1) @V508690 00621000
- CALL DMKFREE GET STORAGE FOR NEW IOERBLOK @V508690 00622000
- ST R1,IOBIOER CHAIN NEW IOERBLOK @V508690 00623000
- ST R1,SAVER4 PASS BACK TO DMKIOE THE NEW @V508690 00624000
- * IOERBLOK ADDRESS. 00625000
- LR R2,R1 ADDRESS OF NEW IOERBLOK @V508690 00626000
- LA R3,IOERSIZE+1 SIZE OF OLD IOERBLOK @V508690 00627000
- SLL R3,3 CONVERT TO BYTES @V508690 00628000
- LR R7,R3 MAKE COUNT REGS EQUAL @V508690 00629000
- LR R6,R4 ADDRESS OF OLD IOERBLOK @V508690 00630000
- MVCL R2,R6 MOVE IT @V508690 00631000
- LH R3,IOERCCH LENGTH OF CCH RECORD @V508690 00632000
- SLL R3,3 CONVERT TO BYTES @V508690 00633000
- LR R7,R3 MAKE COUNT REGS EQUAL @V508690 00634000
- LA R6,CCCPUID ADDR OF CCHREC TO BE COPIED @V508690 00635000
- MVCL R2,R6 MOVE CCHREC PORTION TO IOERBLOK @V508690 00636000
- * R2 SET FROM PREVIOUS MVCL 00637000
- LH R0,IOERCCH CCR EXT. SIZE @VMD0114 00638000
- AH R0,IOEREXT ADD SIZE OF OLD IOERBLOK EXT. @VMD0114 00639000
- STH R0,IOEREXT-IOERBLOK(R1) SIZE OF NEW IOERBLOK @VMD0114 00640000
- * EXT. GETS PUT INTO NEW IOERBLOK 00641000
- LA R0,IOERSIZE SET UP TO FRET OLD IOERBLOK @V508690 00642000
- AH R0,IOEREXT ADD THE EXTENTION SIZE @V508690 00643000
- LR R1,R4 ADDRESS OF OLD IOERBLOK TO FRET @V508690 00644000
- CALL DMKFRET FRET THE OLD IOERBLOK @V508690 00645000
- SPACE 00646000
- CCHEND EQU * 00647000
- EXIT RETURN TO THE RECORDER (DMKIOE) 00648000
- SPACE 00649000
- ********************************************************************* 00650000
- EJECT 00651000
- ********************************************************************* 00652000
- MESSAGE EQU * 00653000
- SR R1,R1 CLEAR REGISTER 1 @VA01068 00654000
- ICM R1,7,CCHCUA GET FAILING DEVICE ADDRESS @VA01068 00655000
- CALL DMKCVTBH CONVERT TO PRINT FORM 00656000
- LA R0,CCCMSGL INSERT MSG LENGTH 00657000
- STCM R1,C7,CCCADDR MOVE FAILING ADDRESS IN MESSAGE 00658000
- MVC CCCUSID(8),CCPROGID MOVE USERID TO MSG 00659000
- TM FAILCSW+5,CCC+IFCC WAS IT A CHANNEL CONTROL 00660000
- * CHECK OR INTERFACE CONTROL CHECK ? 00661000
- BZ MSGEXIT NO, RETURN TO IN LINE CODE 00662000
- LA R1,CCCMSG GET THE BEGINNING ADDRESS OF THE MESSAGE 00663000
- MVC CCCMSID(12),CCCCONST MOVE IN CHANNEL CONTROL CHECK ID. 00664000
- TM FAILCSW+5,IFCC IS THIS INTERFACE CONTROL CHECK @VA01068 00665000
- BZ MSGOPERA NO, GO PUT MESSAGE OUT @VA01068 00666000
- MVC CCCMSID(12),ICCCONST MOVE IN INTERFACE CONTROL CHECK 00667000
- * IDENTIFICATION 00668000
- MSGOPERA EQU * 00669000
- CALL DMKQCNWT,PARM=OPERATOR+NORET,AFFINITY @V407510 00670000
- MSGEXIT EQU * 00671000
- BR R3 RETURN TO IN LINE CODE 00672000
- ******************************************************************** 00673000
- ******************************************************************* 00674000
- EJECT 00675000
- ******************************************************************** 00676000
- * 00677000
- * SUBROUTINE NAME 00678000
- * 00679000
- * DMKCCHRF 00680000
- * 00681000
- * FUNCTION - 00682000
- * 00683000
- * THIS SUBROUTINE WILL REFLECT CHANNEL LOGOUT INFORMATION 00684000
- * TO A USERS VIRTUAL MACHINE PAGE ZERO .. 00685000
- * 00686000
- * ATTRIBUTES - 00687000
- * 00688000
- * RESIDENT,SERIALLY REUSABLE, ENTERED VIA SVC 00689000
- * 00690000
- * ENTRY CONDITIONS - 00691000
- * 00692000
- * GR 2 = ADDRESSABILITY FOR USER PAGE ZERO 00693000
- * GR 8 = ADDRESS OF VDEVBLOK 00694000
- * GR 11 = ADDRESS OF VMBLOK 00695000
- * 00696000
- * EXIT CONDITIONS - 00697000
- * 00698000
- * THE CHANNEL CHECK INFORMATION WILL HAVE BEEN REFLECTED 00699000
- * TO THE USERS PAGE ZERO AND USERS CHANNEL LOGOUT AREA. 00700000
- * 00701000
- * CALLS TO OTHER ROUTINES - 00702000
- * 00703000
- * DMKFRET - TO FRET THE IOERBLOK ASSOCIATED WITH THE 00704000
- * CHANNEL CHECK. 00705000
- * 00706000
- * EXTERNAL REFERENCES - 00707000
- * 00708000
- * NONE 00709000
- * 00710000
- * TABLES/WORK AREAS - 00711000
- * 00712000
- * IOERBLOK EXTENTION CONTAINS THE CHANNEL CHECK 00713000
- * INFORMATION TO BE REFLECTED. 00714000
- * 00715000
- * NOTES - 00716000
- * THE ONLY TIME THIS ROUTINE GETS CONTROL IS WHEN A 00717000
- * CHANNEL CHECK IS DETECTED WHILE TRYING TO REFLECT 00718000
- * STATUS TO THE VIRTUAL MACHINE. 00719000
- * THIS ROUTINE IS CALLED BY: 00720000
- * 00721000
- * DMKVIO 00722000
- * DMKVSI 00723000
- * DMKDSP 00724000
- * 00725000
- * REGISTER USAGE - 00726000
- * 00727000
- * GR 14,15 LINKAGE REGISTERS 00728000
- * GR 12 = MODULE BASE REGISTER 00729000
- * GR 11 = VMBLOK ADDRESSABILITY 00730000
- * GR 9 = IOERBLOK ADDRESSABILITY 00731000
- * GR 8 = VDEVBLOK ADDRESSABILITY 00732000
- * GR 2 = ADDRESSABILITY FOR USER PAGE ZERO AND LOGOUT AREA 00733000
- * GR 1,3,4,5 AND 7 = WORK REGISTERS 00734000
- * 00735000
- * OPERATION - 00736000
- * 00737000
- * 1. FOR ALL CHANNELS EXCEPT STANDALONE CHANNELS (2860,2870 00738000
- * 2880) MOVE THE ECSW FROM THE IOERBLOK EXTENTION TO USERS 00739000
- * PAGE ZERO. 00740000
- * 00741000
- * 2. DETERMINE THE CPU TYPE. 00742000
- * 00743000
- * 3. FOR ALL CPU'S EXCEPT 155/158 OBTAIN THE ADDRESS OF THE 00744000
- * LOGOUT AREA, IF NECESSARY BRING USER'S PAGE INTO CORE THEN 00745000
- * MOVE THE CHANNEL LOGOUT INFORMATION FROM THE IOERBLOK 00746000
- * EXTENTION TO THE VIRTUAL MACHINES LOGOUT AREA. 00747000
- * BUT FOR CPU'S WITH CHANNELS THAT ALLOW C-REG 14 TO MASK 00748000
- * OFF THE LOGOUT AND WHICH USE THE LOGOUT POINTER IN LOW 00749000
- * CORE AT X'AC', WE FIRST CHECK THE USERS C-REG 14 TO SEE 00750000
- * IF LOGOUT IS PERMITTED. IF IT IS WE THEN MAKE ONE 00751000
- * ADDITIONAL CHECK (NOT WANTED BY S/370 ARCHITECTURE, BUT 00752000
- * IT MAY PREVENT SOMEONE'S LOW CORE FROM BEING WIPED OUT) 00753000
- * BEFORE PROCEEDING: IF HIS LOGOUT POINTER (AT LOCATION 00754000
- * X'AC') POINTS TO 0 WE WILL NOT LOGOUT. 00755000
- * 00756000
- * 4. FRET THE IOERBLOK. 00757000
- * 00758000
- * ERROR MESSAGES - 00759000
- * 00760000
- * NONE 00761000
- * 00762000
- ********************************************************************* 00763000
- SPACE 3 00764000
- DMKCCHRF RELOC @V508690 00765000
- USING VDEVBLOK,R8 @V508690 00766000
- USING IOERBLOK,R9 @V508690 00767000
- SPACE 00768000
- L R9,VDEVIOER PICK UP IOERBLOK ADDR @V508690 00769000
- CLI IOERCCH+1,X'00' DO WE HAVE A CCR EXTENTION @V508690 00770000
- BE FRETCCR NO,FRET IOERBLOK AND EXIT @V508690 00771000
- SLR R1,R1 SET UP FOR USER PAGE ZERO @V508690 00772000
- SL R8,VMDVSTRT DEVICE DISPLACEMENT @V508690 00773000
- TRANS 2,1,OPT=(BRING,DEFER) GET USER PAGE ZERO @V508690 00774000
- AL R8,VMDVSTRT RESTORE VDEVBLOK PNTR @V508690 00775000
- CLI IOERCHID,IOER2860 TEST FOR STANDALONE CHANNELS @V508690 00776000
- BL MVECSW NOT STANDALONE,GO MOVE ECSW @V508690 00777000
- CLI IOERCHID,IOERS80 CHECK HI END OF RANGE @V508690 00778000
- BNH CPUTYP YES, A STANDALONE , BYPASS MOVE @V508690 00779000
- MVECSW EQU * @VA09068 00780100
- MVC ECSWLOG-PSA(4,R2),IOERECSW ECSW TO USER @VA09068 00780400
- SPACE 00781000
- CPUTYP EQU * @V508690 00782000
- L R5,AMCHAREA GET MCH AREA POINTER @V508690 00783000
- CLI MCHMODEL,MODEL155 IS THIS A 155/158 ? @V508690 00784000
- BE FRETCCR YES,ALL DONE,155/158 DO NOT LOG @V508690 00785000
- SPACE 00786000
- * DETERMINE WHETHER THE CHANNEL IS ONE THAT LOGS OUT IN THE 00787000
- * FIXED LOGOUT AREA IN LOW CORE AND IGNORES THE LOGOUT MASK IN 00788000
- * C-REG 14, OR ONE THAT USES THE IOEL POINTER (AT X'AC' IN LOW 00789000
- * CORE) AND HEEDS THE MASK IN C-REG 14. 00790000
- TM IOERCHID,X'04' 2860/2870 CHANNEL? @VMD0151 00791000
- BZ TRY135 NO, DEFINITELY NOT 2860/2870. @VMD0151 00792000
- LA R1,FXDLOG+48 2860/2870 LOW CORE LOGOUT AREA. @VMD0151 00793000
- CLI IOERCHID,IOERB80 2880 SLIPPED THRU ABOVE TEST? @VMD0151 00794000
- BNE GETLOGA NO, SO IT IS TRULY 2860/2870. @VMD0151 00795000
- TRY135 LA R1,FXDLOG 135/138 LOW CORE LOGOUT AREA. @VMD0151 00796000
- CLI MCHMODEL,MODEL135 IS IT REALLY 135/138? @VMD0151 00797000
- BE GETLOGA YES, 135/138. @VMD0151 00798000
- SPACE 00799000
- * THE CHANNEL USES IOEL POINTER. (INTEGRATED CHNL OR 2880 CHNL) 00800000
- L R1,IOELPNTR(R2) POINTER TO LOGOUT AREA. @VMD0151 00801000
- TM VMVCR14,VMIOLOG TEST USERS C-REG 14 I/O LOGOUT @VMD0103 00802000
- * MASK. 00803000
- BNO FRETCCR DO NOT LOGOUT, C-REG 14 PREVENTS.@VMD0103 00804000
- LTR R1,R1 IS HIS LOGOUT POINTER A 0? @VMD0103 00805000
- BZ FRETCCR DO NOT LOGOUT, IT WOULD KILL HIM.@VMD0103 00806000
- GETLOGA DS 0H TRANSLATE VIRT. LOG ADDR (R1) TO REAL (R2). @VMD0151 00807000
- SL R8,VMDVSTRT DEVICE DISPLACEMENT. @VMD0103 00808000
- TRANS 2,1,OPT=(BRING,DEFER) GET USER LOG AREA @V508690 00809000
- AL R8,VMDVSTRT RESTORE DEVICE BLOK PNTR @V508690 00810000
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00811000
- * FROM HERE TO NEXT DASHED COMMENT SEPARATOR WE ARE COMPUTING: 00812000
- * R4 GETS ADDRESS OF LOGOUT DATA IN IOERBLOK. 00813000
- * R5 GETS LENGTH OF THIS LOGOUT DATA. LENGTH IS LESSER OF: 00814000
- * (1) LENGTH FOUND IN IOERLOGL (=CCHCLOGL); (2) STIDC LENGTH; 00815000
- * (3) LENGTH OF DATA AFTER X'FF' PAD BYTES HAVE BEEN STRIPPED 00816000
- * FROM FAR END. 00817000
- SR R5,R5 @VMD0135 00818000
- IC R5,IOERCCUA+1 CHANNEL NUMBER OF FAILING REAL @VMD0135 00819000
- * CHANNEL (2ND BYTE OF 3 BYTE UNITADDR). 00820000
- AR R5,R5 DOUBLE IT TO INDEX HALFWORDS. @VMD0135 00821000
- A R5,ARIOCT ADD ADDR OF CHNL TABLE (HALFWDS).@VMD0135 00822000
- LH R5,0(0,R5) LOAD HALFWD INDEX TO RCHBLOK. @VMD0135 00823000
- * AT THIS POINT WE WOULD NORMALLY CHECK FOR MINUS INDEX TO SEE 00824000
- * IF CHANNEL WAS 'GEN'ED OR NOT, BUT THAT SHOULD NOT BE 00825000
- * NECESSARY HERE AS WE WOULD NOT BE REFLECTING INTERRUPT IF 00826000
- * CHANNEL WAS NOT 'GEN'ED. 00827000
- A R5,ARIOCH INDEX+BASE GIVES RCHBLOK ADDRESS.@VMD0135 00828000
- USING RCHBLOK,R5 @VMD0135 00829000
- LH R5,RCHSTIDC+2 LOAD LENGTH OF LOGOUT. THIS IS @VMD0135 00830000
- * WHAT REAL CHANNEL SAID IN RESPONSE TO 00831000
- * STIDC INSTRUCTION AT CP IPL TIME. 00832000
- DROP R5 @VMD0135 00833000
- LTR R5,R5 IF MINUS, REAL CHNL GAVE CC=3. @VMD0151 00834000
- * IF 0, CHNL GAVE FALSE LENGTH OF 0 TO 00835000
- * STIDC. CHNLS USING FIX-LOG-AREA DO THIS. 00836000
- BNP COMPUTLN USE COMPUTED LENGTH, NOT STIDC. @VMD0151 00837000
- CH R5,IOERLOGL COMPARE STIDC LENGTH WITH LENGTH @VMD0151 00838000
- * COMPUTED FOR THIS PARTICULAR LOGOUT. 00839000
- BNH KEEPSTID USE WHICHEVER LENGTH IS SMALLER. @VMD0151 00840000
- * NOTE: FOR THE NEW PROCESSORS, 3031 ETC, 00841000
- * COMPUTED LENGTH MAY BE LARGER THAN ACTUAL 00842000
- * STIDC LENGTH. 00843000
- COMPUTLN LH R5,IOERLOGL COMPUTED LENGTH IS SMALLER. ONE @VMD0151 00844000
- * EXAMPLE OF THIS IS WHERE THE CHANNEL IS 00845000
- * ONE THAT DOES NOT LOGOUT FOR CHANNEL DATA 00846000
- * CHECK; THAT WOULD GIVE 0 HERE. 00847000
- KEEPSTID DS 0H @VMD0151 00848000
- LA R4,IOERCLOG ADDRESS OF LOG OUT INFO @V508690 00849000
- CLI IOERCHID,IOERB80 CHECK FOR 2880 @V508690 00850000
- BE ADDROK YES,DO NOT INCREMENT ADDRESS @V508690 00851000
- CLI IOERCHID,IOERS80 CHECK FOR OTHER 2880 @V508690 00852000
- BE ADDROK YES, DO NOT INCREMENT ADDRESS @V508690 00853000
- CLI IOERCHID,IOER2860 CHECK FOR 2860. @VMD0151 00854000
- BE ADDROK YES,KEEP NON-INTEGRATED LOG ADDR.@VMD0151 00855000
- CLI IOERCHID,IOER2870 CHECK FOR 2870. @VMD0151 00856000
- BE ADDROK YES,KEEP NON-INTEGRATED LOG ADDR.@VMD0151 00857000
- LA R4,IOERLG45 ADDR OF INTEGRATED LOGOUT DATA. @VMD0151 00858000
- ADDROK DS 0H @VMD0151 00859000
- SLR R0,R0 @VMD0151 00860000
- LA R5,1(0,R5) +1 TO COMPENSATE FOR INITL BCT. @VMD0151 00861000
- LR R3,R4 ADDR OF LOGOUT DATA IN IOERBLOK. @VMD0151 00862000
- BCT R3,FCHKLPZ COMPUTE ADDR OF LOGOUT -1. @VMD0151 00863000
- SPACE 00864000
- * LOOK FOR FF BYTES AT THE FAR END OF THE LOGOUT AREA, WHICH 00865000
- * WILL INDICATE THE LOGOUT WAS SHORTER THAN WE THOUGHT. 00866000
- FCHKLOOP IC R0,0(R5,R3) LOAD BYTE FROM END OF LOGOUT. @VMD0151 00867000
- C R0,F255 IS IT X'FF' ? @VMD0151 00868000
- BNE NOMOREFF NO,SO IT'S THE TOP OF THE LOGOUT.@VMD0151 00869000
- FCHKLPZ BCT R5,FCHKLOOP STILL FINDING FFS AT END, SO BCT @VMD0151 00870000
- * DECREMENTS LOGOUT LENGTH. 00871000
- NOMOREFF DS 0H @VMD0151 00872000
- * R4 NOW HAS ADDR OF LOGOUT DATA IN IOERBLOK. 00873000
- * R5 NOW HAS LENGTH OF LOGOUT DATA (POSSIBLY 0). 00874000
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00875000
- LR R3,R5 SAVE COPY OF LENGTH IN R3. @VMD0151 00876000
- LR R7,R2 LOAD WORK REG, IOEL POINTER. @VMD0151 00877000
- SRL R7,12 CLEAR OUT LOW ORDER ADDRESS @V508690 00878000
- A R7,F1 ROUND UP TO NEXT PAGE @V508690 00879000
- SLL R7,12 MOVE IT BACK @V508690 00880000
- SR R7,R2 SUB THE IOEL PNT FROM NEXT PAGE @V508690 00881000
- CR R7,R3 COMPARE REMAINDER W/ IOEL LENGTH.@VMD0135 00882000
- BNL MOVELOG IT WILL FIT, SO MOVE IT @V508690 00883000
- LR R3,R7 LOAD WHAT WILL FIT @V508690 00884000
- AR R1,R7 SET UP LOG OUT AREA POINTER FOR @V508690 00885000
- * THE NEXT TRANS (ROUND UP) 00886000
- MOVELOG MVCL R2,R4 MOVE LOG INFO TO USER @V508690 00887000
- BE FRETCCR COUNTERS EQUAL, WE ARE FINISHED @V508690 00888000
- SL R8,VMDVSTRT DEVICE DISPLACEMENT @V508690 00889000
- TRANS 2,1,OPT=(BRING,DEFER) GET NEXT LOGOUT PAGE @V508690 00890000
- AL R8,VMDVSTRT RESTORE DEVICE BLOK PNTER @V508690 00891000
- LR R3,R5 COUNTERS EQUAL RESIDUAL COUNT @V508690 00892000
- B MOVELOG FINISH MOVING LOG INFO @V508690 00893000
- SPACE 3 00894000
- FRETCCR LA R0,IOERSIZE LETS FRET THE IOERBLOK @V508690 00895000
- AH R0,IOEREXT ADD THE EXTENTION SIZE @V508690 00896000
- LR R1,R9 THE ADDRESS TO FRET @V508690 00897000
- CALL DMKFRET @V508690 00898000
- MVC VDEVIOER,ZEROES CLEAR THE POINTER @V508690 00899000
- NI VDEVFLAG,255-VDEVUC TURN OFF UC FLAG @VA08976 00899500
- EXIT @V508690 00900000
- EJECT 00901000
- WAITCCH DS 0D @VA10837 00902010
- DC X'0002',X'0000' @VA10837 00902020
- DC X'00000002' @VA10837 00902030
- WARM DC C'WARM' @VA10837 00902040
- CPCP DC C'CPCP' @VA10837 00902050
- AIF (NOT &AP).CCHWFD2 @VA10837 00902060
- RSRTMAIN DS 0D @VA10837 00902070
- DC X'00080000' @VA10837 00902080
- DC A(MAINRSRT) @VA10837 00902090
- .CCHWFD2 ANOP 00902100
- SPACE 00903000
- SPACE 00904000
- CCMSG DC X'151515' 00905000
- DC C'DMKCCH603W CHANNEL ERROR; RUN SEREP, RESTART SYSTEM' 00906000
- DC X'1515' 00907000
- CCMSGL EQU (*-CCMSG) LENGTH OF MESSAGE 00908000
- SPACE 00909000
- CCCMSG DC X'151515' 00910000
- DC C'DMKCCH60' 00911000
- CCCMSID DC C'1I ' 00912000
- CCCTYPE DC C' CHANNEL ' 00913000
- DC C' CONTROL CHECK DEV ' 00914000
- CCCADDR DC C'XXX' 00915000
- DC C'; USER ' 00916000
- CCCUSID DC C'XXXXXXXX' 00917000
- DC X'1515' 00918000
- CCCMSGL EQU (*-CCCMSG) 00919000
- SPACE 00920000
- MSG15M DC X'1515' 00921000
- DC C'DMKCCH605I CHANNEL CHECK RECORDING FAILURE',X'1515' 00922000
- MSG15L EQU *-MSG15M 00923000
- CCCCONST DC C'1I CHANNEL ' @VA01337 00924000
- ICCCONST DC C'2I INTERFACE' @VA01337 00925000
- ************************************************************ 00926000
- SPACE 00927000
- CCHCONST DC X'20' REC. TYPE 00928000
- DC X'66' OPERATING SYSTEM AND RELEASE @VA10800 00929500
- DC X'40' CONVERT THE TOD FIELD @VM08856 00930000
- DC XL5'00' MISC. SWITCHES 00931000
- SPACE 00932000
- CPEYED DC C' CP/370' 00933000
- DMKCCHCF DC XL16'00' CHANNEL TYPE TABLE 00934000
- DMKCCH60 DC F'0' ADDRESS OF THE 2860 CHANNEL MODULE 00935000
- DMK2870 DC F'0' ADDRESS OF THE 2870 CHANNEL MODULE 00936000
- DMK2880 DC F'0' ADDRESS OF THE 2880 CHANNEL MODULE 00937000
- DMKCCHSZ DC H'0000' SAVE THE SIZES OF THE IOEL @V5088AA 00938000
- DMKCCHMX DC H'0000' SAVE MAX. SIZE OF CCH RECORD @V5088AA 00939000
- ********************************************************************* 00940000
- EJECT 00941000
- LTORG 00942000
- EJECT 00943000
- PSA , @V306638 00944000
- COPY CCHREC @V306638 00945000
- COPY EQU @V306638 00946000
- COPY DEVTYPES @V306638 00947000
- COPY VBLOKS @V508690 00948000
- COPY IOBLOKS @V306638 00949000
- COPY IOER @V306638 00950000
- COPY MCHAREA @V306638 00951000
- COPY RBLOKS @V306638 00952000
- COPY SAVE @V306638 00953000
- COPY VMBLOK @V306638 00954000
- EJECT 00955000
- ENTSW EQU SAVEWRK1 00956000
- RCHSAVE EQU SAVEWRK2 00957000
- RCUSAVE EQU SAVEWRK3 00958000
- RDEVSAVE EQU SAVEWRK4 00959000
- FALADDPT EQU SAVEWRK5 00960000
- RECLENTH EQU SAVEWRK6 00961000
- RECADDR EQU SAVEWRK7 00962000
- ADDSAVE EQU SAVEWRK8 00963000
- SIOADDR EQU SAVEWRK9 00964000
- END 00965000
ibm/vm370-lib/cp/dmkcch.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator