IOB TITLE 'DMMIOB (IPCS) VM/370 - RELEASE 6' 00001000
* 00002000
* 00003000
* MODULE NAME: 00004000
* DMMIOB SUBROUTINE OF DUMPSCAN 00005000
* 00006000
* FUNCTION: 00007000
* DISPLAYS IO BLOCKS 00008000
* 00009000
* ATTRIBUTES: 00010000
* REUSABLE 00011000
* NON-REENTRANT 00012000
* 00013000
* ENTRY POINTS: 00014000
* DMMIOB 00015000
* 00016000
* ENTRY CONDITIONS: 00017000
* R2 POINTS TO THE PLIST WITH THE TOKENIZED INPUT 00018000
* 00019000
* EXIT CONDITIONS: 00020000
* RETURN CODE IN R15 0 - GOOD 00021000
* 4 - WARNING 00022000
* 8 - FATAL 00023000
* 00024000
* CALLS TO OTHER ROUTINES: 00025000
* DMMGET TO FETCH DATA INTO CORE 00026000
* DMMHEX TO CONVERT EBCDIC TO HEX 00027000
* 00028000
* EXTERNAL REFERENCES: 00029000
* 00030000
* TABLES/WORKAREAS: 00031000
* 00032000
* REGISTER USAGE: 00033000
* R15 ADDRESSES OF EXTERNAL ROUTINES 00034000
* R14 RETURNS FROM EXTERNAL ROUTINES 00035000
* R13 SAVE AREA ADDRESS 00036000
* R12 BASE 00037000
* R11 VMBLOK ADDRESS FOR EXTRACT 00038000
* R10 INTERNAL LINKS 00039000
* R9-R2 WORK REGISTERS 00040000
* 00041000
* OPERATION: 00042000
* THE PLIST ADDRESS IS PASSED IN R2. THE PLIST 00043000
* CONTAINS THE SUBCOMMAND, ONE OF :- 00044000
* RIO CUU 00045000
* VIO CUU USERID 00046000
* VIO CUU 00047000
* THE CHANNEL, CONTROL UNIT AND DEVICE BLOKS 00048000
* ARE SCANNED, AND THE CONTENST OF THE APPROPRIATE 00049000
* BLOCKS ARE DISPLAYED. IF NO USERID IS ENTERED 00050000
* FOR A VIRTUAL DEVICE, THE DEFAULT IS 'OPERATOR', 00051000
* OR THE LAST USERID ENTERED. 00052000
* 00053000
* ERROR MESSAGES: 00054000
* DMMIOB712I 'CUU' ADDRESS NOT FOUND 00055000
* DMMIOB713I USER 'USERID' VMBLOK NOT FOUND 00056000
* 00057000
* * * * * * * *------- -------- -------- -------- ------* 00058000
DMMIOB CSECT @VA04250 00059000
EXTRN DMMGET BRING DATA INTO CORE @VA04250 00060000
EXTRN DMMINT HEX TO EBCDIC @VA04250 00061000
EXTRN DMMHEX EBCDIC TO HEX @VA04250 00062000
STM R14,R12,SAVEDISP(R13) SAVE CALLERS REGS @VA04250 00063000
LR R12,R15 ADDRESSABILITY @VA04250 00064000
USING DMMIOB,R12 USE IT @VA04250 00065000
ST R13,SAVEBACK CALLERS SAVE AREA @VA04250 00066000
B EYECATCH BYPASS EYECATCHER @VA04250 00067000
DS 0D ALIGN @VA04250 00068000
DC CL8'DMMIOB' EYECATCHER @VA04250 00069000
RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00070000
EYECATCH LA R13,SAVEAREA IOB SAVEAREA @VA04250 00071000
XC RETCODE(WORKL),RETCODE CLEAR RETURN CODE @VA04250 00072000
MVC SUBCUMSG,BLANKOUT CLEAR SUBORD CU MSG @VA04830 00073500
* * * * * * * * ------- -------- -------- ------- * 00074000
* * * * * * * * R2 POINTS TO THE PLIST. 00075000
* * * * * * * * COMMAND HAS 'CUU' AS SECOND PARM, 00076000
* * * * * * * * WHICH IS AT 8 INTO THE PLIST 00077000
* * * * * * * * IN EBCDIC, FIRST RIGHT JUSTIFY THE 00078000
* * * * * * * * ADDRESS, THEN CHECK CHARACTERS ARE 00079000
* * * * * * * * VALID HEX, THEN TRANSLATE TO HEX 00080000
* * * * * * * * AND PUT THE HEX VALUE INTO 00081000
* * * * * * * * R3 FOR THE BLOK EXTRACTION ROUTINE 00082000
* * * * * * * * ------- -------- -------- ------- * 00083000
MVC PLISTCMD(PLISTL),0(R2) MOVE PLIST IN. @VA04250 00084000
MVC HEADER(CMDL),PLISTCMD PLUG CMD INTO HEADER @VA04250 00085000
MVC HEADER+CUU(CUUL),PLISTCUU PLUG ADDRESS INTO HDR @VA04250 00086000
LA R4,PLISTCUU GET ADDRESS OF ADDRESS @VA04250 00087000
ST R4,ADDPOINT SAVE ADDRESS OF ADDRESS @VA04250 00088000
L R15,HEXADD ADDRESS OF HEX ROUTINE @VA04250 00089000
BALR R14,R15 LINK TO HEX @VA04250 00090000
LTR R15,R15 TEST RETURN @VA04250 00091000
BNZ CODECHEK FIND HOW BAD @VA04250 00092000
ST R5,CUUHEX SAVE THE HEX ADDRESS @VA04250 00093000
CLC PLISTCMD(L'V),V IS IT A VIO REQUEST? @VA04250 00094000
BE VIO YES @VA04250 00095000
* * * * * * * * ------- -------- -------- ------- * 00096000
* * * * * * * * THIS MUST BE A REAL DEVICE REQUEST. 00097000
* * * * * * * * THIS ROUTINE ACCEPTS A DEVICE ADDRESS 00098000
* * * * * * * * IN R3, AND LOCATES THE CHANNEL, CONTROL 00099000
* * * * * * * * UNIT, AND DEVICE BLOCKS, AND PLUGS THE 00100000
* * * * * * * * ADDRESSES IN R6, R7 AND R8. 00101000
* * * * * * * * ------- -------- -------- ------- * 00102000
MVC CHRCH(L'R),R PLUG 'R' INTO OUTPUT AREA HDRS @VA04250 00103000
MVC CURCU(L'R),R FOR THE CHANNEL, CONTROL UNIT, @VA04250 00104000
MVC DVRDV(L'R),R AND DEVICE BLOCKS @VA04250 00105000
LR R3,R5 GET THE HEX ADDRESS FOR EXTRACT @VA04250 00106000
LA R6,CHMASK ISOLATE CHAN ADDRESS @VA04250 00107000
NR R6,R3 FROM CUU @VA04250 00108000
SRL R6,7 CHAN ADD * 2 @VA04250 00109000
LA R2,ARIOCT-PSA DISP TO CHANN TABLE ADDRESS @VA04250 00110000
BAL R10,GOGET FETCH IT INTO CORE @VA04250 00111000
A R6,0(R2) ADD CHAN TABLE ADDRESS @VA04250 00112000
LR R2,R6 SET UP FOR GET @VA04250 00113000
BAL R10,GOGET GET THAT INTO CORE @VA04250 00114000
LH R6,0(R2) GET RCHBLOK INDEX @VA04250 00115000
LTR R7,R6 DOES CHAN EXIST? @VA04250 00116000
BM NOCHAN NO @VA04250 00117000
LA R2,ARIOCH-PSA DISP TO REAL CH BLOK ADD @VA04250 00118000
BAL R10,GOGET GET IT INTO CORE @VA04250 00119000
A R6,0(R2) NOW R6 HAS REAL CHAN BLOCK @VA04250 00120000
* * * * * * * * ------- -------- -------- ------- * 00121000
LA R7,CUMASK1 ISOLATE CU BITS @VA04250 00122000
NR R7,R3 FROM CUU @VA04250 00123000
SRL R7,2 CU ADD * 2 @VA04250 00124000
LA R7,RCHCUTBL-RCHBLOK(R7) IN TO INDEX TABLE @V4075A2 00125500
AR R7,R6 PLUS RCH BLOK @VA04250 00126000
LR R2,R7 SET UP FOR GET @VA04250 00127000
BAL R10,GOGET FETCH INTO CORE @VA04250 00128000
LH R7,0(R2) GET THE INDEX @VA04250 00129000
LTR R7,R7 CU EXIST? @VA04250 00130000
BNM COMPRCUB YES @VA04250 00131000
LA R7,CUMASK2 ISOLAT CU @VA04250 00132000
NR R7,R3 FROM CUU @VA04250 00133000
SRL R7,R2 ALTERNATE CU ADDRESS @VA04250 00134000
LA R7,RCHCUTBL-RCHBLOK(R7) IN TO INDEX TABLE @V4075A2 00135500
AR R7,R6 PLUS RCH BLOK @VA04250 00136000
LR R2,R7 SET UP FOR GET @VA04250 00137000
BAL R10,GOGET FETCH INTO CORE @VA04250 00138000
LH R7,0(R2) LOAD CONTROL UNIT INDEX @VA04250 00139000
LTR R8,R7 CU EXIST? @VA04250 00140000
BM NOCU NO @VA04250 00141000
COMPRCUB LA R2,ARIOCU-PSA GET DISP TO CU BLOCK @VA04250 00142000
BAL R10,GOGET INTO CORE @VA04250 00143000
A R7,0(R2) NOW R7 HAS RCUBLOK ADDRESS @VA04250 00144000
* * * * * * * * ------- -------- -------- ------- * 00145000
LA R8,DVMASK GET DEV @VA04250 00146000
NR R8,R3 FROM CUU @VA04250 00147000
AR R8,R8 DEV ADD * 2 @VA04250 00148000
LA R8,RCUDVTBL-RCUBLOK(R8) DEVBLOK INDEX @VA04250 00149000
AR R8,R7 ADD DEVBLOK ADDRESS @VA04250 00150000
LR R2,R8 SET FOR GET @VA04250 00151000
BAL R10,GOGET GET INTO CORE @VA04250 00152000
LH R8,0(R2) AND GET THE INDEX @VA04250 00153000
LR R2,R7 GET CU BLOCK @VA04250 00154000
LA R2,RCUTYPE-RCUBLOK(R2) ADD 5, POINT TO SUB BIT @VA04250 00155000
BAL R10,GOGET GETIT IN COR @VA04250 00156000
TM 0(R2),RCUSUB SUBORDINATE CUBLOK? @VA04250 00157000
BZ TESTDEV NO - BRANCH @VA04250 00158000
MVI SUBCUSW,SUB YES - SET SUB-CU SWITCH @VA04250 00159000
ST R7,SUBCUADX SAVE HEX ADDRESS TO TRANSLATE @VA04250 00160000
MVC SUBCUMSG,SUBCUM PLUB SUBCU MESSAGE @VA04250 00161000
LR R2,R7 GET CUBLOK ADDRESS @VA04250 00162000
LA R2,RCUCHA-RCUBLOK(R2) IN TO SUB CU ADDRESS @VA04250 00163000
BAL R10,GOGET GET IT IN CORE @VA04250 00164000
L R7,0(R2) GET IT IN R7 @VA04250 00165000
TESTDEV LTR R8,R8 DEVICE EXIST? @VA04250 00166000
BM NODEV NO @VA04250 00167000
SLL R8,3 CONVERT TO BYTES @VA04250 00168000
LA R2,ARIODV-PSA GET DISP TO DEV TABLE ADDRESS @VA04250 00169000
BAL R10,GOGET INTO CORE @VA04250 00170000
A R8,0(R2) ADD OFFSET - R8 NOW HAS DEV BLK @VA04250 00171000
MVC HEADER+UID(UID),BLANKER BLANK ANY USERID @VA04250 00172000
B DISPLAY NOW GO TO DISPLAY THEM @VA04250 00173000
* * * * * * * * ------- -------- -------- ------- * 00174000
* * * * * * * * IN ORDER TO FIND VIRTUAL DEVICE BLOCKS 00175000
* * * * * * * * WE NEED THE ADDRESS OF THE USERS VMBLOK 00176000
* * * * * * * * AND THE DEVICE ADDRESS. 00177000
* * * * * * * * FIRST GET THE ADDRESS OF THE USER VMBLOK 00178000
* * * * * * * * GO TO GETREC TO GET THE SYSTEM 00179000
* * * * * * * * VMBLOCK ADDRESS 00180000
* * * * * * * *------- -------- -------- -------- ------* 00181000
VIO CLC PLISTUSR,FENCE USER IN THE PLIST? @VA04250 00182000
BE PLUGUSER NO GO PLUG ONE @VA04250 00183000
CLC PLISTUSR,BLANKER USER IN THE PLIST? @VA04250 00184000
BNE GETSYSVM YES - CONTINUE @VA04250 00185000
PLUGUSER MVC PLISTUSR,USERSAVE USE LAST USERID @VA04250 00186000
GETSYSVM MVC USERSAVE,PLISTUSR SAVE THE CURRENT USERID @VA04250 00187000
MVC CHRCH(L'V),V PLUG 'V' IN MESSAGE HEADERS @VA04250 00188000
MVC CURCU(L'V),V FOR CHAN, CU, AND @VA04250 00189000
MVC DVRDV(L'V),V DEVICE BLOCKS @VA04250 00190000
LA R2,ASYSVM-PSA DISP TO SYSVMBLOCK ADDRESS @VA04250 00191000
BAL R10,GOGET GO FETCH @VA04250 00192000
L R2,0(R2) GET TRUE VMBLOCK ADDRESS @VA04250 00193000
ST R2,BLOCKADD VMB ADDRESS FOR TRANS @VA04250 00194000
LA R2,VMUSER-VMBLOK(R2) @VA04834 00194500
BAL R10,GOGET GO FETCH @VA04250 00195000
CLC PLISTUSR,0(R2) DOES THIS VMBLOK MATCH THE INPUT?@VA04834 00196100
BE GOTUSER YES - GO GET ADDRESS @VA04250 00198000
L R2,BLOCKADD NO - GO AFTER NEXT BLOK IN CHAIN @VA04834 00199100
LA R2,NEXTBLK(R2) IN 8 BYTES TO NEXT BLOK PTR @VA04834 00199300
BAL R10,GOGET AND FETCH IT INTO CORE @VA04834 00199500
L R2,0(R2) PICK IT UP @VA04834 00199700
LTR R2,R2 IS IT ZEROS @VA04250 00200000
BNZ SAVEOC NO - KEEP ON @VA04250 00201000
B NOUSER YES - END OF VMBLOKS @VA04250 00202000
SAVEOC ST R2,OPVMADD SAVE 'END-OF-CHAIN' ADDRESS @VA04250 00203000
ST R2,BLOCKADD VMB ADDRESS FOR TRANS @VA04250 00204000
* * * * * * * *------- -------- -------- -------- ------* 00205000
* * * * * * * * NOW PROCESS THE REMAINING VMBLOCKS 00206000
* * * * * * * *------- -------- -------- -------- ------* 00207000
LA R6,MAXUSERS MAX OF 500 USERS @VA04250 00208000
BALGET LA R2,VMUSER-VMBLOK(R2) INCREMENT TO USER ID @VA04834 00209100
BAL R10,GOGET GET THE USERID INTO CORE @VA04834 00209800
CLC PLISTUSR,0(R2) IS THIS THE REQUESTED VMBLOK? @VA04834 00210500
BE GOTUSER YES - GO PROCESS HIM @VA04250 00211000
L R2,BLOCKADD NO - GO FOR NEXT BLOK @VA04834 00212100
LA R2,NEXTBLK(R2) GET CYCLIC POINTER @VA04834 00212300
BAL R10,GOGET FETCH IT INTO CORE @VA04834 00212500
L R2,0(R2) PICK IT UP @VA04834 00212700
ST R2,BLOCKADD VMB ADDRESS FOR TRANS @VA04250 00213000
C R2,OPVMADD POINT TO END OF CHAIN? @VA04250 00214000
BE NOUSER YES - WRITE 'NOT FOUND' LINE @VA04250 00215000
BCT R6,BALGET GET NEXT VMBLOCK @VA04250 00216000
NOUSER MVC ERUSER(L'PLISTUSR),PLISTUSR USERID INTO ERR MSG @VA04250 00217000
LA R8,ERMSG713 USER NOT FOUND MSG @VA04250 00218000
LA R9,E713L LENGTH @VA04250 00219000
BAL R10,WRTERM WRITE ONE ENTRY @VA04250 00220000
MVC RETCODE,CODE4 WARNING RETURN @VA04250 00221000
B RETURN QUIT @VA04250 00222000
* * * * * * * * ------- -------- -------- ------- * 00223000
* * * * * * * * NOW WE HAVE A MATCH ON THE USERID. 00224000
* * * * * * * * THE VMBLOK ADDRESS IS IN 'BLOCKADD' 00225000
* * * * * * * * THE VIRTUAL 'CUU' IS IN 'CUUHEX' 00226000
* * * * * * * * PASS THESE TO THE VIRTBLOK 00227000
* * * * * * * * ROUTINE FOR VIRTUAL BLOKS. 00228000
* * * * * * * * ------- -------- -------- ------- * 00229000
GOTUSER LA R2,VMCHTBL-VMBLOK DISP OF CHAN TBL INTO VMBLOK @VA04837 00231100
A R2,BLOCKADD PLUS BASE ADDRESS OF VMBLOK @VA04837 00231800
L R3,CUUHEX GET THE HEX DEVICE ADDRESS @VA04837 00232500
L R6,CHANMASK MASK OUT THE NON CHANNEL BITS @VA04837 00233200
NR R6,R3 STRIP THEM OFF @VA04837 00233900
SRL R6,7 AND SLIDE IT TO LOW ORDER @VA04837 00234600
AR R2,R6 ADD THIS TO TABLE START ADDRESS @VA04837 00235300
BAL R10,GOGET FETCH THE CHAN ENTRY INTO CORE @VA04837 00236000
LH R6,0(R2) LOAD IT @VA04837 00236700
LTR R7,R6 DOES THIS CHANNEL EXIST ? @VA04837 00237400
BM NOVCHAN NO - STOP SEARCHING @VA04837 00238100
LA R2,VMCHSTRT-VMBLOK DISP TO VCHAN BLOK @VA04837 00238800
A R2,BLOCKADD PLUS BASE GIVES CH START ADDRESS @VA04837 00239500
BAL R10,GOGET GO GET IT INTO CORE @VA04837 00240200
A R6,0(R2) ADD TO CHANNEL ADDRESS @VA04837 00240900
ST R6,VCHSAVE STORE IT FOR LATER @VA04837 00241600
* * * * * * * * ------- -------- -------- ------- * 00244000
* * * * * * * * SINCE WE ARE GOING TO READ IN THE 00245000
* * * * * * * * VCHBLOK AND THE VDEVBLOK WE MUST 00246000
* * * * * * * * SAVE THE VMCUSTRT AND VMDVSTRT FIELDS 00247000
* * * * * * * * ------- -------- -------- ------- * 00248000
LA R2,VMCUSTRT-VMBLOK DISP TO CUSTRT @VA04837 00249100
A R2,BLOCKADD PLUS BASE ADDRESS @VA04837 00249700
BAL R10,GOGET FETCH INTO CORE @VA04837 00250300
MVC VMCUSAVE,0(R2) SAVE THE FIELD @VA04837 00250900
LA R2,VMDVSTRT-VMBLOK AND THE SAME FOR VMDVSTRT @VA04837 00251500
A R2,BLOCKADD POINT TO VMDVSTRT @VA04837 00252100
BAL R10,GOGET FETCH IT IN @VA04837 00252700
MVC VMDVSAVE,0(R2) AND SAVE IT @VA04837 00253300
LA R2,VCHCUTBL-VCHBLOK DISPLACEMENT @VA04837 00253900
AR R2,R6 PLUS THE OFFSET @VA04837 00254500
BAL R10,GOGET FETCH IT @VA04837 00255100
L R7,CUMASK MASK OUT THE NON - CU BITS @VA04837 00255700
NR R7,R3 STRIP THEM OUT @VA04837 00256300
SRL R7,3 PUT CTL UNIT ADDRESS INT R7 @VA04837 00256900
AR R2,R7 ADD TO START OF TABLE @VA04837 00257500
LH R7,0(R2) LOAD THE ENTRY @VA04837 00258100
LTR R8,R7 IS THERE AN ENTRY @VA04837 00258700
BM NOVCU NO - QUIT @VA04837 00259300
A R7,VMCUSAVE ADD THE SAVED VALUE @VA04837 00259900
ST R7,VCUSAVE AND SAVE THAT @VA04837 00260500
********** NOW THE CONTROL UNIT ************* @VA04837 00261100
LA R2,VCUDVTBL-VCUBLOK DEVICE TABLE DISP @VA04837 00261700
AR R2,R7 PLUS ADDRESS OF TABLE @VA04837 00262300
L R8,DEVMASK MASK OUT NON DEVICE BITS @VA04837 00262900
NR R8,R3 STRIP OUT @VA04837 00263500
AR R8,R8 DOUBLE IT FOR HALFWORD TABLE @VA04837 00264100
AR R2,R8 POINT TO DEVICE ENTRY @VA04837 00264700
BAL R10,GOGET FETCH IT @VA04837 00265300
LH R8,0(R2) PICK IT UP @VA04837 00265900
LTR R8,R8 DEV EXIST? @VA04250 00271000
BM NOVDEV NO @VA04250 00272000
A R8,VMDVSAVE GET VDEVBLOK ADDRESS @VA04250 00273000
LM R6,R7,VCHSAVE GET BACK THE ADDRESSES @VA04250 00274000
MVC HEADER+UID(L'USERSAVE),USERSAVE PLUG USERID @VA04250 00275000
B DISPLAY GO SHOW EM @VA04250 00276000
* * * * * * * * ------- -------- -------- ------- * 00277000
* * * * * * * * IF WE DIDNT FIND THE VIRTUAL DEVICE 00278000
* * * * * * * * ------- -------- -------- ------- * 00279000
NOVCHAN SR R6,R6 SET R6 @VA04250 00280000
BCTR R6,R0 NEGATIVE @VA04250 00281000
NOVCU SR R7,R7 MAKE R7 @VA04250 00282000
BCTR R7,R0 NEGATIVE @VA04250 00283000
NOVDEV SR R8,R8 MAKE R8 @VA04250 00284000
BCTR R8,R0 NEGATIVE @VA04250 00285000
MVC RETCODE,CODE4 SET RETURN @VA04250 00286000
B WRITERR GO WRITE THE ERROR @VA04250 00287000
* * * * * * * * ------- -------- -------- ------- * 00289000
* * * * * * * * NOW CHBLOK ADDRESS IS IN R6, 00290000
* * * * * * * * THE CUBLOK ADDRESS IS IN R7, 00291000
* * * * * * * * AND DVBLOK ADDRESS IS IN R8. 00292000
* * * * * * * * FORMAT AND DISPLAY THEM. 00293000
* * * * * * * * ------- -------- -------- ------- * 00294000
DISPLAY STM R6,R8,CHADSTOR PUT ADDRESSES IN CORE @VA04250 00295000
LA R4,CHADSTOR GET ADDRESS FOR INT @VA04250 00296000
LA R3,TRANL AND LENGTH - 16 @VA04250 00297000
BAL R10,GOINT GO TRANSLATE @VA04250 00298000
MVC CHBLKADD(TRADL),CHB(R5) PLUG CHAN BLK ADDRESS @VA04250 00299000
MVC CUBLKADD(TRADL),CUB(R5) CU BLOK ADDRESS @VA04250 00300000
MVC DVBLKADD(TRADL),DVB(R5) DEV BLK ADDRESS @VA04250 00301000
CLI SUBCUSW,SUB IS IT A SUBORD CU? @VA04250 00302000
BNE CHANTRAN NO -- DONT PLUG ADDRESS IN MSG @VA04250 00303000
MVC SUBCUADD(TRADL),SUBDISP(R5) YES - PLUG IT @VA04250 00304000
MVI SUBCUSW,PRIME TURN OFF SUBCUSW @VA04250 00305000
* * * * * * * * ------- -------- -------- ------- * 00306000
* * * * * * * * NOW TRANSLATE LINES FROM THE 00307000
* * * * * * * * VARIOUS BLOCKS AND FORMAT THEM 00308000
* * * * * * * * INTO THE OUTPUT AREA 00309000
* * * * * * * * FIRST THE CHANNEL BLOK 00310000
* * * * * * * * ------- -------- -------- ------- * 00311000
CHANTRAN LA R6,CHLINES 3 CH LINES @VA04250 00312000
CLC PLISTCMD(L'V),V ARE THESE 'VIRTUAL' BLOCKS? @VA04250 00313000
BNE PLUGCH NO - LEAVE IT AT 3 LINES @VA04250 00314000
BCTR R6,R0 YES - MUST ONLY FETCH 2 LINES @VA04250 00315000
PLUGCH MVC ADSTOR,CHADSTOR PLUG CH BLOK ADDRESS @VA04250 00316000
LA R2,CHLINE1 GET CHAN LINE 1 ADDRESS @VA04250 00317000
ST R2,LINE1ADD PLUG IT FOR TRANSLATE/FORMAT @VA04250 00318000
BAL R11,GETLINE GO FORMAT IT @VA04250 00319000
* * * * * * * * ------- -------- -------- ------- * 00320000
* * * * * * * * NOW THE CU BLOCK 00321000
* * * * * * * * ------- -------- -------- ------- * 00322000
LA R6,CULINES TWO CU LINES @VA04250 00323000
MVC ADSTOR,CUADSTOR CU BLOK ADDRESS @VA04250 00324000
LA R2,CULINE1 CU BLOK @VA04250 00325000
ST R2,LINE1ADD PLUG FOR FORMAT @VA04250 00326000
BAL R11,GETLINE GO FORMAT @VA04250 00327000
* * * * * * * * ------- -------- -------- ------- * 00328000
* * * * * * * * NOW THE DEV BLOCK 00329000
* * * * * * * * ------- -------- -------- ------- * 00330000
LA R6,DVLINES 3 DEV LINES @VA04250 00331000
CLC PLISTCMD(L'V),V ARE THESE VIRTUAL BLOCKS? @VA04250 00332000
BNE PLUGDV NO - LEAVE IT AT 3 LINES @VA04250 00333000
BCTR R6,R0 YES - MUST REDUCE TO 2 LINES @VA04250 00334000
PLUGDV MVC ADSTOR,DVADSTOR DEV BLOK ADDRESS @VA04250 00335000
LA R2,DVLINE1 DEV BLOK OUTPUT AREA @VA04250 00336000
ST R2,LINE1ADD PLUG IT @VA04250 00337000
BAL R11,GETLINE GO DO DEVICE @VA04250 00338000
* * * * * * * * ------- -------- -------- ------- * 00339000
* * * * * * * * NOW PLUG THE ADDRESS OF THE SOUGHT DEVICE 00340000
* * * * * * * * ------- -------- -------- ------- * 00341000
MVC CHCHANAD(ADL),CHLINE1+ONE PLUG CHAN INTO CHBLOK @VA04250 00342000
MVC CUUNITAD(ADL),CHLINE1+ONE AND INT CUBLOK @VA04250 00343000
MVC CUUNITAD+ONE(ADL),CULINE1+TWO CU ADD INTO CUBLOK@VA04250 00344000
MVC DVDEVAD(CUUL),PLISTCUU PLUG DEV ADD IN DEVBLK @VA04250 00345000
* * * * * * * * ------- -------- -------- ------- * 00346000
* * * * * * * * NOW ALL THE LINES ARE BUILT - GO WRITE THEM 00347000
* * * * * * * * ------- -------- -------- ------- * 00348000
B WRITE WRITE THE LINES @VA04250 00349000
* * * * * * * * ------- -------- -------- ------- * 00350000
* * * * * * * * THIS GETS THE TEXT OF THE VARIOUS CONTROL 00351000
* * * * * * * * BLOCKS INTO CORE, TRANSLATES AND FORMATS 00352000
* * * * * * * * THEM INTO EIGHT BYTE BLOCKS. THE DATA IS 00353000
* * * * * * * * FETCHED 8 BYTES AT A TIME, AS THERE IS 00354000
* * * * * * * * THE POSSIBILITY THAT A REAL IO BLOCK 00355000
* * * * * * * * MAY CROSS A PAGE BOUNDARY AND SUFFER 00356000
* * * * * * * * GARBAGE. R6 HAS THE NUMBER OF LINES TO 00357000
* * * * * * * * BE PRINTED. THE REST SHOULD BE OBLIVIOUS. 00358000
* * * * * * * * ------- -------- -------- ------- * 00359000
GETLINE L R7,LINE1ADD ADDRESS OF FIRST LINE @VA04250 00360000
LA R8,BLOX 4 BLOCKS OF 16 BYTES @VA04250 00361000
L R2,ADSTOR GET ADDRESS OF BLOCK @VA04250 00362000
GOGOGET BAL R10,GOGET GET IT INTO CORE @VA04250 00363000
LR R4,R2 GET THE ADDRESS TO TRANSLATE @VA04250 00364000
LA R3,WORDL AND THE LENGTH - 8 @VA04250 00365000
BAL R10,GOINT GO TRANSLATE IT @VA04250 00366000
MVC 0(WORDL,R7),0(R5) MOVE IN AN 8 BYTE BLOCK @VA04250 00367000
LA R7,WORDL+ONE(R7) BUMP OUTPUT PLUS A SPACE @VA04250 00368000
LA R5,WORDL(R5) BUMP INPUT @VA04250 00369000
MVC 0(WORDL,R7),0(R5) MOVE THE SECOND 8 BYTE BLOCK @VA04250 00370000
LA R7,WORDL+ONE(R7) NEXT OUTPUT SLOT @VA04250 00371000
L R2,ADSTOR GET CURRENT INPUT PTR @VA04250 00372000
LA R2,WORDL(R2) BUMP IT BY 8 INPUT BYTES @VA04250 00373000
ST R2,ADSTOR AND RE-STORE IT @VA04250 00374000
BCT R8,GOGOGET GO FINISH THE LINE @VA04250 00375000
L R7,LINE1ADD WEVE DONE THE FIRST LINE. NOW @VA04250 00376000
LA R7,LINEL(R7) UPDATE TO POINT TO THE NEXT LINE @VA04250 00377000
ST R7,LINE1ADD AND RESTORE IT @VA04250 00378000
BCT R6,GETLINE NOW GET THE NEXT LINE @VA04250 00379000
BR R11 DONE ALL LINES - RETURN @VA04250 00380000
* * * * * * * * ------- -------- -------- ------- * 00381000
* * * * * * * * NOW WRITE THE LINES. WRITE THREE, THEN CHECK 00382000
* * * * * * * * IF IT IS A VIRTUAL DISPLAY. IF SO SKIP A 00383000
* * * * * * * * LINE IN THE FORMATTED AREA, SINCE THE VCHBLOK 00384000
* * * * * * * * IS A LINE SHORTER THAN THE RCHBLOK. 00385000
* * * * * * * * ------- -------- -------- ------- * 00386000
WRITE MVC DVLINE3+SEC(L'DVLINE3-SEC),BLANKOUT CLR 2ND @VA04830 00387500
CLC PLISTCMD(L'V),V ARE THESE VIRTUAL BLOKS? @VA04250 00388000
BNE REAL NO - PROCESS AS IS @VA04250 00389000
MVI CHLINE2+NUCH,BLANK SET @VA04830 00390100
MVI CULINE2+NUCU,BLANK UP @VA04830 00390400
MVI DVLINE2+NUDV,BLANK TO @VA04830 00390700
MVC CHLINE2+NUCH+1(NUCHL-1),CHLINE2+NUCH CLEAR @VA04830 00391000
MVC CULINE2+NUCU+1(NUCUL-1),CULINE2+NUCU CTL @VA04830 00391300
MVC DVLINE2+NUDV+1(NUDVL-1),DVLINE2+NUDV BLOCKS @VA04830 00391600
REAL LA R8,HEADER ADDRESS OF HEADER @VA04250 00393000
LA R9,L'HEADER AND LENGTH @VA04250 00394000
BAL R10,WRTERM WRITE HEADER @VA04250 00395000
LA R2,FIRSTSET 3 DISPLAY LINES @VA04250 00396000
LA R8,CHRCH OUTPUT AREA @VA04250 00397000
LA R9,EIGHTY LINE LENGTH @VA04250 00398000
GOWRITE BAL R10,WRTERM GO WRITE A LINE @VA04250 00399000
LA R8,LINEL(R8) NEXT OUTPUT LINE @VA04250 00400000
BCT R2,GOWRITE WRITE ANOTHER LINE @VA04250 00401000
LA R2,NEXTSET GET 10 FOR LAST SET OF LINES @VA04250 00402000
CLC V,PLISTCMD ARE THESE VIRT BLOKS? @VA04250 00403000
BNE LASTSET NO - WRITE AS IS @VA04250 00404000
LA R8,LINEL(R8) YES - SKIP A LINE @VA04250 00405000
BCTR R2,R0 AND DECREMENT THE LINE COUNT @VA04250 00406000
LASTSET BAL R10,WRTERM WRITE ONE OF THE LAST GROUP @VA04250 00407000
LA R8,LINEL(R8) BUMP A LINE @VA04250 00408000
BCT R2,LASTSET GO WRITE IT @VA04250 00409000
B RETURN GET OUT @VA04250 00410000
* * * * * * * * ------- -------- -------- ------- * 00411000
* * * * * * * * COMMON WRTERM 00412000
* * * * * * * * ------- -------- -------- ------- * 00413000
WRTERM ST R8,PARMLIS1 SAVE MSG TEXT PTR IN PARM LIST @V4075A2 00414100
ST R9,PARMLIS2 AND TEXT LENGTH @V4075A2 00414200
LA R1,PARMLIS1 POINTER TO PASS @V4075A2 00414300
L R15,FEDLNADD ADDRESS OF DMMFEDLN - LINE WRITER@V4075A2 00414400
BALR R14,R15 GO WRITE THE LINE @V4075A2 00414500
BR R10 AND RETURN @V4075A2 00414600
PARMLIS1 DS F PARM1 @V4075A2 00414700
PARMLIS2 DS F PARM2 @V4075A2 00414800
FEDLNADD DC V(DMMFEDLN) LINE WRITER ROUTINE @V4075A2 00414900
* * * * * * * * ------- -------- -------- ------- * 00416000
* * * * * * * * GOINT - COMMON BALR TO INTERPRET 00417000
* * * * * * * * ------- -------- -------- ------- * 00418000
GOINT L R15,INTADD INT ROUTINE @VA04250 00419000
BALR R14,R15 LINK @VA04250 00420000
LTR R15,R15 TEST RETURN @VA04250 00421000
BNZ CODECHEK TEST NON-ZERO RET @VA04250 00422000
BR R10 BACK TO CALLER @VA04250 00423000
* * * * * * * * ------- -------- -------- ------- * 00424000
* * * * * * * * COMMON BAL TO DMMGET 00425000
* * * * * * * * ------- -------- -------- ------- * 00426000
GOGET L R15,GETADD ADDRESS OF DMMGET @VA04250 00427000
BALR R14,R15 LINK @VA04250 00428000
LTR R15,R15 TEST RETURN @VA04250 00429000
BNZ CODECHEK GO TEST A NON ZERO RETURN @VA04250 00430000
BR R10 RETURN TO GO GETTER @VA04250 00431000
* * * * * * * * ------- -------- -------- ------- * 00432000
* * * * * * * * ERROR ROUTINES 00433000
* * * * * * * * ------- -------- -------- ------- * 00434000
NOCHAN SR R6,R6 ZERO R6 @VA04250 00435000
BCTR R6,R0 MAKE IT MINUS @VA04250 00436000
NOCU SR R7,R7 ZERO IT @VA04250 00437000
BCTR R7,R0 MAKE IT MINUS @VA04250 00438000
NODEV SR R8,R8 ZERO DEV REG @VA04250 00439000
BCTR R8,R0 MAKE IT MINUS @VA04250 00440000
B WRITERR GO WRITE THE ERROR MSG @VA04250 00441000
* * * * * * * * ------- -------- -------- ------- * 00442000
* * * * * * * * WRITE THE ERROR MSG 00443000
* * * * * * * * ------- -------- -------- ------- * 00444000
WRITERR MVC ERRORADD,PLISTCUU PLUG ADDRESS IN ERROR MSG @VA04250 00445000
LA R8,ERMSG712 GET ADDRESS OF ER MSG @VA04250 00446000
LA R9,E712L LENGTH OF ERROR @VA04250 00447000
BAL R10,WRTERM WRITE ERROR MSG @VA04250 00448000
MVC RETCODE,CODE4 SET WARNING RETCODE @VA04250 00449000
B RETURN @VA04250 00450000
* * * * * * * * ------- -------- -------- ------- * 00451000
* * * * * * * * CODECHECK 00452000
* * * * * * * * ------- -------- -------- ------- * 00453000
CODECHEK C R15,CODE4 IS IT A WARNING? @VA04250 00454000
BE WARNING PLUG A 4 @VA04250 00455000
MVC RETCODE,CODE8 PLUG 8 @VA04250 00456000
B RETURN FATAL RETURN @VA04250 00457000
WARNING MVC RETCODE,CODE4 PLUG A 4 @VA04250 00458000
B RETURN @VA04250 00459000
* * * * * * * * ------- -------- -------- ------- * 00460000
* * * * * * * * CLOSE 00461000
* * * * * * * * ------- -------- -------- ------- * 00462000
RETURN L R13,SAVEBACK RESTORE CALLER SAVE PTR @VA04250 00463000
MVC SAVREG15(L'RETCODE,R13),RETCODE PLUG RETCODE @VA04250 00464000
LM R14,R12,SAVEDISP(R13) RESTORE CALLERS REGS @VA04250 00465000
BR R14 RETURN @VA04250 00466000
* * * * * * * * ------- -------- -------- ------- * 00467000
* * * * * * * * CONSTANTS 00468000
* * * * * * * * ------- -------- -------- ------- * 00469000
* * * * * * * * SAVEAREA 00470000
* * * * * * * * ------- -------- -------- ------- * 00471000
SAVEAREA DS 0F THIS PROGRAM'S SAVE AREA @VA04250 00472000
SAVEUSR DS F USER WORD @VA04250 00473000
SAVEFWD DS F FORWARD POINTER @VA04250 00474000
SAVEBACK DS F BACKWARD POINTER @VA04250 00475000
SAVER14 DS F SAVE AREA FOR CALLER'S R14 @VA04250 00476000
SAVER15 DS F SAVE AREA FOR CALLER'S R15 @VA04250 00477000
SAVER0 DS F SAVE AREA FOR CALLER'S R0 @VA04250 00478000
SAVER1 DS F SAVE AREA FOR CALLER'S R1 @VA04250 00479000
SAVER2 DS F SAVE AREA FOR CALLER'S R2 @VA04250 00480000
SAVER3 DS F SAVE AREA FOR CALLER'S R3 @VA04250 00481000
SAVER4 DS F SAVE AREA FOR CALLER'S R4 @VA04250 00482000
SAVER5 DS F SAVE AREA FOR CALLER'S R5 @VA04250 00483000
SAVER6 DS F SAVE AREA FOR CALLER'S R6 @VA04250 00484000
SAVER7 DS F SAVE AREA FOR CALLER'S R7 @VA04250 00485000
SAVER8 DS F SAVE AREA FOR CALLER'S R8 @VA04250 00486000
SAVER9 DS F SAVE AREA FOR CALLER'S R9 @VA04250 00487000
SAVER10 DS F SAVE AREA FOR CALLER'S R10 @VA04250 00488000
SAVER11 DS F SAVE AREA FOR CALLER'S R11 @VA04250 00489000
SAVER12 DS F SAVE AREA FOR CALLER'S R12 @VA04250 00490000
* * * * * * * * ------- -------- -------- ------- * 00491000
DUM DS 4F @VA04250 00492000
CODE4 DC F'4' WARNING @VA04250 00493000
CODE8 DC F'8' FATAL @VA04250 00494000
GETADD DC AL4(DMMGET) DMMGET @VA04250 00495000
HEXADD DC AL4(DMMHEX) EBC TO HEX TRANS @VA04250 00496000
INTADD DC AL4(DMMINT) HEX TO EBC TRANS @VA04250 00497000
ADDPOINT DS F POINTER TO 'CUU' ADDRESS @VA04250 00498000
RETCODE DS F RETURN CODE @VA04250 00499000
CHADSTOR DS F STORE CH BLOK ADDRESS @VA04250 00500000
CUADSTOR DS F STORE CUBLOK ADDRESS @VA04250 00501000
DVADSTOR DS F STORE DVBLOK ADDRESS @VA04250 00502000
SUBCUADX DS F HEX ADDRESS OF ANY SUBORD CU @VA04250 00503000
WORKL EQU 20 LENGTH OF WORK AREAS @VA04250 00504000
LINE1ADD DS F ADDRESS OF FIRST LINE OF OUTPUT @VA04250 00505000
ADSTOR DS F CURRENT FORMAT ADDRESS @VA04250 00506000
VMCUSAVE DS F SAVE FOR VMCUSTRT @VA04250 00507000
VMDVSAVE DS F SAVE FOR VMDVSTRT @VA04250 00508000
VCHSAVE DS F VCHBLOK ADDRESS @VA04250 00509000
VCUSAVE DS F VCUBLOK @VA04250 00510000
CUUHEX DS F CUU IN HEX @VA04250 00511000
BLOCKADD DS F ADDRESS OF CURRENT VMBLOK @VA04250 00512000
OPVMADD DS F ADDRESS OF OPERATORS VMBLOK @VA04250 00513000
* * * * * * * * ------- -------- -------- ------- * 00514000
* * * * * * * * FORMATTING AREAS TO DISPLAY THE 00515000
* * * * * * * * BLOCK CHAINS 00516000
* * * * * * * * ------- -------- -------- ------- * 00517000
CHRCH DC CL12'RCHBLOK' HEADER @VA04250 00518000
CHCHAN DC CL5'CHAN' HDR @VA04250 00519000
CHCHANAD DC CL8'XXX' CHANNEL ADDRESS @VA04250 00520000
CHADD DC CL8'ADDRESS' HDR @VA04250 00521000
CHBLKADD DC CL47' ' ADDRESS OF CHBLOK @VA04250 00522000
CHL1HDR DC CL4'000' ADDRESS LINE 1 @VA04250 00523000
CHLINE1 DC CL76' ' LINE 1 @VA04250 00524000
CHL2HDR DC CL4'020' ADD L2 @VA04250 00525000
CHLINE2 DC CL76' ' LINE2 @VA04250 00526000
CHL3HDR DC CL4'040' ADLINE3 @VA04250 00527000
CHLINE3 DC CL76' ' LINE 3 @VA04250 00528000
SPACE1 DC CL80' ' SPACE @VA04250 00529000
CURCU DC CL12'RCUBLOK' HEADER @VA04250 00530000
CUUNIT DC CL5'UNIT' HDR @VA04250 00531000
CUUNITAD DC CL8'0XX' CONTROL UNIT ADDRESS @VA04250 00532000
CUADD DC CL8'ADDRESS' HDR @VA04250 00533000
CUBLKADD DC CL7' ' ADDRESS OF CUBLOK @VA04250 00534000
SUBCUMSG DC CL40' ' MESSAGE RE SUBORDINATE CU @VA04250 00535000
ORG SUBCUMSG+29 @VA04250 00536000
SUBCUADD DC CL11' ' ADDRESS OF ABOVE @VA04250 00537000
CUL1HDR DC CL4'000' ADDRESS LINE 1 @VA04250 00538000
CULINE1 DC CL76' ' LINE 1 @VA04250 00539000
CUL2HDR DC CL4'020' ADD L2 @VA04250 00540000
CULINE2 DC CL76' ' LINE2 @VA04250 00541000
SPACE2 DC CL80' ' SPACE @VA04250 00542000
DVRDV DC CL12'RDEVBLOK' HEADER @VA04250 00543000
DVDEV DC CL5'DEV' HDR @VA04250 00544000
DVDEVAD DC CL8'00X' DEV ADDRESS @VA04250 00545000
DVADD DC CL8'ADDRESS' HDR @VA04250 00546000
DVBLKADD DC CL47' ' ADDRESS OF DVBLOK @VA04250 00547000
DVL1HDR DC CL4'000' ADDRESS LINE 1 @VA04250 00548000
DVLINE1 DC CL76' ' LINE 1 @VA04250 00549000
DVL2HDR DC CL4'020' ADD L2 @VA04250 00550000
DVLINE2 DC CL76' ' LINE2 @VA04250 00551000
DVL3HDR DC CL4'040' ADLINE3 @VA04250 00552000
DVLINE3 DC CL80' ' LINE 3 @VA04250 00553000
* * * * * * * * ------- -------- -------- ------- * 00554000
V DC C'V' V TO PLUG IN MESSAGE HEADER @VA04250 00555000
R DC C'R' R DITTO @VA04250 00556000
TRANL EQU 16 LENGTH OF LINE TO TRANSLATE @VA04250 00557000
TLINEL EQU 32 LENGTH AFTER TRANS @VA04250 00558000
LINEL EQU 80 LINE LENGTH @VA04250 00559000
MAXUSERS EQU 500 MAXUSERS ALLOWED - LOOP ASSUMED @VA04250 00560000
CHLINES EQU 3 THREE CHANNEL LINES @VA04250 00561000
CULINES EQU 2 CU BLOK LINES @VA04250 00562000
DVLINES EQU 3 DEVICE LINES @VA04250 00563000
EIGHTY EQU 80 LINE LENGTH @VA04250 00564000
FIRSTSET EQU 3 SOME OF LINES IN OUTPUT DISPLAY @VA04250 00565000
NEXTSET EQU 10 REST OF THE LINES @VA04250 00566000
* * * * * * * * ------- -------- -------- ------- * 00567000
ADL EQU 1 LENGTH OF EACH SEG OF 'CUU' @VA04250 00568000
ONE EQU 1 BUMP COUNTER @VA04250 00569000
TWO EQU 2 INDEX @VA04250 00570000
CHB EQU 2 CHANNEL BLOCK @VA04250 00571000
CMDL EQU 3 LENGTH OF CMD @VA04250 00572000
CUUL EQU 3 LENGTH OF 'CUU' @VA04250 00573000
CUU EQU 4 ADDRESS DISP @VA04250 00574000
BLOX EQU 4 4 X 16 BYTE BLOCKS ON OUT_LINE @VA04250 00575000
TRADL EQU 6 LENGTH OF TRANSLATED ADDRESS @VA04250 00576000
UID EQU 8 USERID DISP @VA04250 00577000
NEXTBLK EQU 8 ADDRESS OF NEXT BLOK @VA04250 00578000
WORDL EQU 8 LENGTH OF A TRANSLATED WORD @VA04250 00579000
CUB EQU 10 CU BLOCK @VA04250 00580000
SAVEDISP EQU 12 REGS IN SAVE AREA @VA04250 00581000
SAVREG15 EQU 16 REG 15 IN SAVE AREA @VA04250 00582000
DVB EQU 18 DEVICE BLOK @VA04250 00583000
NUCH EQU 18 NOT USED PART OF CHBLOK @VA04250 00584000
NUCU EQU 18 NOT USED PART OF CU BLOK @VA04250 00585000
SUBDISP EQU 26 DISP TO SUB CU ADDR @VA04250 00586000
SEC EQU 54 DISP TO SEC HALF OF LINE @VA08869 00587100
BLANK EQU X'40' FILL FOR CLEAR @VA04830 00587500
NUDV EQU 71 UNUSED PORTION OF VDEVBLOK @V4075A2 00588000
NUCHL EQU X'DA' LENGTH TO CLEAR @VA04250 00589000
NUCUL EQU X'8A' LENGTH TO CLEAR @VA04250 00590000
NUDVL EQU X'59' LENGTH TO CLEAR @V4075A2 00591000
CHMASK EQU X'F00' CHANNEL MASK @VA04250 00592000
CUMASK1 EQU X'0F8' MASK FOR CU PORTION OF 'CUU' @VA04250 00593000
CUMASK2 EQU X'0F0' SAME @VA04250 00594000
DVMASK EQU X'00F' SAME - FOR DEVICE @VA04250 00595000
* * * * * * * * ------- -------- -------- ------- * 00596000
PLISTCMD DC CL8' ' COMMAND @VA04250 00597000
PLISTCUU DC CL8' ' CUU @VA04250 00598000
PLISTUSR DC CL8' ' USERID @VA04250 00599000
PLISTFNC DC 8X'FF' FENCE @VA04250 00600000
PLISTL EQU *-PLISTCMD LENGTH OF PLIST @VA04250 00601000
* * * * * * * * ------- -------- -------- ------- * 00602000
FENCE DC 8X'FF' FENCE @VA04250 00603000
BLANKER DC CL8' ' BLANKS X '40' @VA04250 00604000
USERSAVE DC CL8'OPERATOR' DEFAULT USERID @VA04250 00605000
* * * * * * * * ------- -------- -------- ------- * 00606000
ERMSG712 DC C'DMMIOB712I DEVICE ''' MSG NUMBER @VA04250 00607000
ERRORADD DC CL3' ' BAD ADDRESS @VA04250 00608000
RESTERR DC C''' NOT FOUND' BALANCE OF THE MESSAGE @VA04250 00609000
E712L EQU *-ERMSG712 LENGTH @VA04250 00610000
* * * * * * * * ------- -------- -------- ------- * 00611000
ERMSG713 DC C'DMMIOB713I USER ''' MESSAGE NUMBER @VA04250 00612000
ERUSER DC CL8' ' USER @VA04250 00613000
EREST DC C''' VMBLOK NOT FOUND' @VA04428 00614000
E713L EQU *-ERMSG713 LENGTH @VA04250 00615000
* * * * * * * * ------- -------- -------- ------- * 00616000
HEADER DC CL16' ' HEADER @VA04250 00617000
SUBCUM DC CL40'REPLACES SUBORDINATE CUBLOK- ' @V4075A2 00618500
* * * * * * * * ------- -------- -------- ------- * 00619000
SUBCUSW DC X'00' SUBORDINATE CU BLOCK SWITCH @VA04250 00620000
SUB EQU X'FF' SUBORDINATE @VA04250 00621000
PRIME EQU X'00' PRIME CU @VA04250 00622000
* * * * * * * * ------- -------- -------- ------- * 00623000
DS 0F @VA04250 00624000
CHANMASK DC XL4'F00' MASK TO SEPARATE CHAN FROM CUU @VA04250 00625000
CUMASK DC XL4'0F0' CONTROL UNIT @VA04250 00626000
DEVMASK DC XL4'00F' DEVICE @VA04250 00627000
BLANKOUT DC CL80' ' BLANKS FOR FILL @VA04830 00627500
PATCH DC 50F'0' PATCH @VA04250 00628000
LTORG @VA04250 00629000
COPY VMBLOK @VA04250 00630000
COPY VBLOKS @VA04250 00631000
PSA PSA DSECT @VA04250 00632000
COPY RBLOKS REAL IO BLOCKS @VA04250 00633000
R0 EQU 0 R0 EQUALS REGISTER 0 @VA04250 00634000
R1 EQU 1 R1 EQUALS REGISTER 1 @VA04250 00635000
R2 EQU 2 R2 EQUALS REGISTER 2 @VA04250 00636000
R3 EQU 3 R3 EQUALS REGISTER 3 @VA04250 00637000
R4 EQU 4 R4 EQUALS REGISTER 4 @VA04250 00638000
R5 EQU 5 R5 EQUALS REGISTER 5 @VA04250 00639000
R6 EQU 6 R6 EQUALS REGISTER 6 @VA04250 00640000
R7 EQU 7 R7 EQUALS REGISTER 7 @VA04250 00641000
R8 EQU 8 R8 EQUALS REGISTER 8 @VA04250 00642000
R9 EQU 9 R9 EQUALS REGISTER 9 @VA04250 00643000
R10 EQU 10 R10 EQUALS REGISTER 10 @VA04250 00644000
R11 EQU 11 R11 EQUALS REGISTER 11 @VA04250 00645000
R12 EQU 12 R12 EQUALS REGISTER 12 @VA04250 00646000
R13 EQU 13 R13 EQUALS REGISTER 13 @VA04250 00647000
R14 EQU 14 R14 EQUALS REGISTER 14 @VA04250 00648000
R15 EQU 15 R15 EQUALS REGISTER 15 @VA04250 00649000
END 00650000