ibm:vm370-lib:cp:dmkhvc.assemble_src
Table of Contents
DMKHVC Source
References
- Fixes Applied : 11
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC072DK]
Source Listing
- DMKHVC.ASSEMBLE.txt
- HVC TITLE 'DMKHVC (CP) VM/370 - RELEASE 6' 00001000
- COPY OPTIONS 00003000
- COPY LOCAL 00004000
- *. 00005000
- * MODULE NAME - 00006000
- * 00007000
- * DMKHVC 00008000
- * 00009000
- * CONTENTS - 00010000
- * 00011000
- * DMKHVCAL - VIRTUAL DIAGNOSE INSTRUCTION PROCESSING 00012000
- * DMKHVCPC - DATA TABLE - DASD PAGES/CYLINDER 00013000
- *. 00014000
- SPACE 2 00015000
- DMKHVC START 00016000
- SPACE 00017000
- ENTRY DMKHVCAL,DMKHVCPC @VM03170 00018000
- ENTRY DMKHVCDI 00020000
- SPACE 00021000
- EXTRN DMKSSSHV @V60B6B8 00021010
- EXTRN DMKDRDSY,DMKPRGSM 00022000
- EXTRN DMKCCWTR,DMKUNTFR @VA10860 00023100
- EXTRN DMKDGDDK,DMKCFMEN 00024000
- EXTRN DMKCFGCL,DMKPGSSS @VM03170 00025000
- EXTRN DMKPSASP @V202232 00026000
- EXTRN DMKGIOEX @VM03170 00027000
- EXTRN DMKSCNVU @VM03170 00029000
- EXTRN DMKCVTDB @V213135 00031000
- EXTRN DMKTMRPT 00033000
- EXTRN DMKHVDAL @VM03170 00034000
- EXTRN DMKHVEAL @VA11268 00034100
- EXTRN DMKCFMBK,DMKCVTDT 00035000
- EXTRN DMKVSIEX @VA05037 00036000
- EXTRN DMKVMCFC @V387045 00037100
- EXTRN HDKD7CEX HRC065DK 00037500
- EXTRN HDKD8CDC HRC072DK 00037600
- EJECT 00038000
- *. 00039000
- * SUBROUTINE NAME - 00040000
- * 00041000
- * DMKHVCAL 00042000
- * 00043000
- * FUNCTION - 00044000
- * 00045000
- * TO PERFORM SERVICES FOR VIRTUAL MACHINES AS REQUESTED 00046000
- * VIA THE DIAGNOSE INSTRUCTION. 00047000
- * 00048000
- * ATTRIBUTES - 00049000
- * 00050000
- * REENTRANT, RESIDENT, ENTERED VIA 'GOTO' FROM DMKPRVLG 00051000
- * 00052000
- * ENTRY POINTS - 00053000
- * 00054000
- * DMKHVCAL 00055000
- * 00056000
- * ENTRY CONDITIONS - 00057000
- * 00058000
- * GPR 12 = ADDRESS OF DMKHVCAL 00059000
- * GPR 11 = ADDRESS OF VMBLOK 00060000
- * 'VMINST' FIELD CONTAINS THE DIAGNOSE INSTRUCTION IMAGE 00061000
- * 00062000
- * EXIT CONDITIONS - 00063000
- * 00064000
- * DEPENDENT ON THE SERVICE PERFORMED. CONTROL RETURNS 00065000
- * TO THE USER VIA DMKDSPCH. 00066000
- * 00067000
- * CALLS TO OTHER ROUTINES - 00068000
- * 00069000
- * DMKCFMBK - TO PUT VIRTUAL MACHINE IN CONSOLE FUNCTION MODE 00070000
- * DMKCFMEN - TO EXECUTE VIRTUAL CONSOLE FUNCTIONS 00071000
- * DMKCVTDT - TO OBTAIN THE DATE AND TIME IN EBCDIC 00072000
- * DMKDGDDK - TO PERFORM STANDARD DASD I/O 00073000
- * DMKDSPCH - TO RE-DISPATCH THE SERVICED USER 00074000
- * DMKFREE - TO OBTAIN FREE STORAGE FOR BUFFERS 00075000
- * DMKGIOEX - TO PERFORM GENERAL SHORT-CUT I/O 00076000
- * DMKPGSSS - TO RELEASE A PORTION OF VIRTUAL STORAGE 00077000
- * DMKCGFCL - TO PROCESS THE REQUEST FOR A NAMED SYSTEM 00078000
- * DMKCVTDB - TO CONVERT DECIMAL RELEASE NUMBERS TO BINARY 00079000
- * DMKPRGSM - TO SIMULATE A PROGRAM INTERRUPT 00080000
- * DMKPSASP - TO EXAMINE VIRTUAL STORAGE PROTECTION KEYS 00081000
- * DMKPTRAN - TO PROCESS PAGING REQUESTS 00082000
- * DMKRPAGT - TO PROVIDE A USER WITH ONE PAGE OF SYSTEM DATA 00083000
- * DMKSCNRU - TO LOCATE THE SYSRES RDEVBLOK 00084000
- * DMKSCNVU - TO LOCATE VIRTUAL I/O BLOCKS 00085000
- * DMKTMRPT - TO GET USER'S VIRTUAL PROBLEM TIME USED 00086000
- * DMKVSIEX - TO PERFORM DIAG 3270 WRITE 00087000
- * DMKHVDAL - PROCESS DIAGNOSE CALLS NOT HANDLED IN THIS MODULE 00088000
- * CONTROL PROGRAM IMAGE 00089000
- * DMKHVEAL - PROCESS DIAGNOSE X'002C' AND X'0030' 00089050
- * DMKVMCFC - PROCESS VMCF REQUEST 00089100
- * HDKD7CEX - PROCESS LDF REQUEST HRC065DK 00089200
- * HDKD8CDC - GET 3270 DEVICE DEPENDENT CHARACTERISTICS HRC072DK 00089300
- EJECT 00090000
- * 00091000
- * EXTERNAL REFERENCES - 00092000
- * 00093000
- * DMKSYSRM - REAL MACHINE SIZE IN BYTES 00094000
- * DMKCPEID - VM/370 RELEASE AND VERSION NUMBER FOR STIDX 00095000
- * 00096000
- * TABLES / WORK AREAS - 00097000
- * 00098000
- * VMBLOK, VDEVBLOK, RDEVBLOK, VMCPARM 00099000
- * 00100000
- * 00101000
- * REGISTER USAGE - 00102000
- * 00103000
- * GPR 12 = BASE REGISTER FOR DMKHVCAL 00104000
- * GPR 11 = VMBLOK ADDRESSABILITY 00105000
- * GPR 9 = INTERNAL LINK REGISTER 00106000
- * GPR 6 = ADDRESS OF DIAGNOSE 'R2' VALUE 00107000
- * GPR 5 = ADDRESS OF DIAGNOSE 'R1' VALUE 00108000
- * 00109000
- * NOTES - 00110000
- * 00111000
- * AN ARTIFICIAL PROGRAM INTERRUPT (PRIVILEGED OPERATION 00112000
- * EXCEPTION WHILE IN VIRTUAL SUPERVISOR STATE) IS GENER- 00113000
- * ATED BY DMKHVCAL WHENEVER A VIRTUAL MACHINE REQUESTS 00114000
- * A SERVICE WHICH IS RESTRICTED TO COMMAND CLASSES OTHER 00115000
- * THAN THOSE ALLOWED TO THE VIRTUAL MACHINE. 00116000
- * 00117000
- * OPERATION - 00118000
- * 00119000
- * THE FUNCTION CODE CONTAINED IN THE ADDRESS FIELD OF THE 00120000
- * DIAGNOSE INSTRUCTION IS EXAMINED FOR VALIDITY. 00121000
- * A SPECIFICATION EXECPTION IS REFLECTED TO THE VIRTUAL 00122000
- * MACHINE IF THE CODE IS UNRECOGNIZED OR NOT A MULTIPLE 00123000
- * OF 4. A PRIVILEGED-OPERATION INTERRUPT IS GENERATED IF A 00124000
- * RESTRICTED SERVICE IS REQUESTED BY THE VIRTUAL MACHINE. 00125000
- * 00126000
- * SERVICES AVAILABLE VIA VIRTUAL DIAGNOSE ARE AS FOLLOWS: 00127000
- * 00128000
- * CODE = X'0000' STORE EXTENDED ID - STIDX - (ANY CLASS) 00129000
- * 'R1' = ADDRESS OF A DOUBLE WORD ALIGNED BUFFER IN VIRTUAL 00130000
- * STORAGE 00131000
- * 'R2' = BYTE COUNT OF INFORMATION TO BE STORED AT THE VIRTUAL 00132000
- * STORAGE ADDRESS SPECIFIED BY 'R1' IN THE FOLLOWING FORMAT: 00133000
- * +---------------------------------------+ 00134000
- * | VM/370 | 00135000
- * +--------------+----+---------+---------+ 00136000
- * | LEVEL | VC | MCEL | IPUADDR | 00137000
- * +--------------+----+---------+---------+ 00138000
- * | USERID | 00139000
- * +---------------------------------------+ 00140000
- * 00141000
- * THE FIELDS STORED ARE DEFINED AS FOLLOWS: 00142000
- * VM/370 - APPEARS AS SHOWN, LEFT JUSTIFIED AND PADDED 00143000
- * WITH BLANKS 00144000
- * LEVEL - THE VERSION, LEVEL AND PLC TAPE NUMBER 00145000
- * OF THE HYPERVISOR IN HEX. EACH FIELD OCCUPIES 00146000
- * ONE BYTE AND IS OBTAINED FROM THE SYSTEM ID FIELD 00147000
- * IN THE MODULE DMKCPEID 00148000
- * VC - THE VERSION CODE RETURNED BY A STIDP EXECUTED 00149000
- * BY THE HYPERVISOR (VM/370) 00150000
- * MCEL - THE MAXIMUM MCEL RETURNED BY THE STIDP 00151000
- * IPUADDR - THE PROCESSOR ADDRESS RETURNED BY A STAP 00152000
- * EXECUTED BY THE HYPERVISOR - = TO 0 IF EXECUTED ON 00153000
- * A VIRTUAL OR REAL UNIPROCESSOR 00154000
- * USERID - THE VM USERID OF THE VIRTUAL MACHINE EXECUTING 00155000
- * THE STIDX 00156000
- * 00157000
- * IF THE HYPERVISOR ITSELF IS EXECUTING IN A VIRTUAL MACHINE, 00158000
- * THE EXTENDED ID RETURNED BY A STIDX EXECUTED BY THE 00159000
- * HYPERVISOR IS APPENDED TO THE INFORMATION DESCRIBED ABOVE. 00160000
- * NOTE THAT THIS DEFINITION DIFFERS FROM THAT DESCRIBED IN 00161000
- * AR3799-01 IN THE AREA OF ALIGNMENT; ALSO, AN ARBITRARY LIMIT 00162000
- * OF FIVE LEVELS OF HYPERVISION HAS BEEN IMPOSED. 00163000
- * 00164000
- * 00165000
- * CODE = X'0004' EXAMINE REAL STORAGE LOCATIONS (CLASS C OR E) 00166000
- * 'R1' = ADDRESS OF A LIST OF REQUESTED DATA WORD ADDRESSES 00167000
- * 'R2' = COUNT OF FULL-WORD ENTRIES IN THE LIST 00168000
- * 'R2'+1 = ADDRESS OF A RESULT TABLE 00169000
- * 00170000
- * SPECIAL NOTE: SINCE THIS DIAGNOSE SERVICE IS INTENDED FOR 00171000
- * SYSTEM PERFORMANCE MONITORING, THE REQUEST AND RESULT TABLES 00172000
- * MUST BE IN THE SAME PAGE OF VIRTUAL STORAGE, AND THAT PAGE 00173000
- * MUST BE RESIDENT IN REAL STORAGE AT THE TIME THE DIAGNOSE IS 00174000
- * EXECUTED ( THIS IS GUARANTEED IF THE INSTRUCTION ITSELF IS 00175000
- * ALSO IN THE SAME PAGE). BRINGING VIRTUAL STORAGE PAGES INTO 00176000
- * REAL STORAGE FOR PROCESSING THIS REQUEST WOULD AT BEST 00177000
- * INFLUENCE, IF NOT INVALIDATE, ANY PERFORMANCE DATA GATHERED. 00178000
- * 00179000
- * FOR EACH ADDRESS ENTRY IN THE REQUEST TABLE, DMKHVC WILL 00180000
- * PLACE A FULL-WORD OF DATA FROM THE SPECIFIED LOCATION 00181000
- * IN REAL STORAGE, INTO THE RESULT TABLE SLOT CORRESPON- 00182000
- * DING TO THE ADDRESS ENTRY. WHEN EITHER ALL REQUESTS ARE 00183000
- * PROCESSED, THE END OF THE VIRTUAL STORAGE PAGE IS REACHED, 00184000
- * OR AN ADDRESS OUTSIDE OF REAL STORAGE IS ENCOUNTERED, 00185000
- * PROCESSING IS TERMINATED AND THE VIRTUAL MACHINE IS 00186000
- * RE-DISPATCHED VIA DMKDSPCH. 00187000
- * 00188000
- * CODE = X'0008' VIRTUAL CONSOLE FUNCTION INTERFACE (CLASS G) 00189000
- * 'R1' = ADDRESS OF A COMMAND-LINE BUFFER 00190000
- * 'R2' = BYTE 0 - FLAGS 00190600
- * BYTES 1-3 - BUFFER LENGTH 00191200
- * 00192000
- * THE FLAG BITS ARE USED AS FOLLOWS: 00192200
- * BIT MEANING 00192400
- * --- ----------------------------------- 00192600
- * 0 THE VIRTUAL MACHINE ISSUING THIS 00192800
- * DIAGNOSE DESIRES PASSWORD-ON-THE- 00193000
- * COMMAND-LINE SUPPRESSION. 00193200
- * 1-7 RESERVED 00193400
- * 00193600
- * IF FLAG BIT 0 IS ON, THE VMNPWOCL BIT IN THE 00193800
- * VMBLOK IS TURNED ON. 00194000
- * 00194010
- * IF FLAG BIT 1 IS ON, THE COMMAND RESPONSE IS TO BE PLACED 00194020
- * INTO VIRTUAL MEMORY RATHER THAN WRITTEN TO THE CONSOLE. IN 00194030
- * THIS CASE NEITHER 'R1' OR 'R2' CAN BE R15, AND 00194040
- * 00194050
- * 'R1' = ADDRESS OF COMMAND STRING 00194060
- * 'R2' = LENGTH OF COMMAND STRING 00194070
- * 'R1+1' = ADDRESS OF BUFFER TO RECEIVE COMMAND RESPONSES 00194080
- * ADDRESS CANNOT = 0, BUT CAN CROSS A PAGE 00194090
- * 'R2+1' = LENGTH OF 'R1+1' BUFFER. MUST BE >0 AND =<8192 00194100
- * 00194110
- * THE BUFFER ADDRESS AND DATA LENGTH ARE THEN EXAMINED 00194200
- * FOR VALIDITY. IF BIT 1 OF THE FLAG BYTE IS ON, THEN VALIDITY 00194400
- * CHECK RESPONSE BUFFER ADDRESS AND LENGTH AS SPECIFIED IN 00194500
- * 'R1+1' AND 'R2+1'. IF LENGTH OF THE COMMAND BUFFER >132, 00194600
- * A SPECIFICATION EXCEPTION IS GENERATED. IF THE ADDRESS 00195000
- * IS INVALID, AN ADRESSING EXCEPTION IS GENERATED. 00196000
- * IF A ZERO LENGTH FIELD IS SPECIFIED, THE VIRTUAL 00197000
- * MACHINE IS PLACED IN CONSOLE FUNCTION MODE VIA A CALL TO 00198000
- * DMKCFMBK, AND EXIT IS VIA DMKDSPCH. 00199000
- * FOR A VALID, NON-ZERO BUFFER LENGTH, THE COMMAND 00200000
- * DATA IS MOVED FROM VIRTUAL STORAGE INTO REAL FREE STORAGE 00201000
- * AND THE CONSOLE FUNCTION IS EXECUTED VIA A CALL TO 00202000
- * DMKCFMEN. ANY ERROR CODE RESULTING FROM THE EXECUTION 00203000
- * IS PASSED BACK TO THE VIRTUAL MACHINE IN THE 'R2' FIELD. 00204000
- * IF ALL RESPONSES FIT INTO THE RESPONSE BUFFER, THEN 00204100
- * SET CC = 0, ADN 'R2+1' = NUMBER OF CHARACTERS IN RESPONSE 00204200
- * IF RESPONSES DID NOT FIT IN THE BUFFER, THEN SET CC = 1, 00204300
- * AND 'R2=1' = AMOUNT OF THE OVERFLOW. 00204400
- * 00205000
- * CODE = X'000C' VIRTUAL "CHRONOLOG" CLOCK (CLASS G) 00206000
- * 'R1' = ADDRESS OF A 32-BYTE BUFFER AREA, DBL-WD ALIGNED 00207000
- * 00208000
- * DMKHVCAL PLACES INTO THE SPECIFIED AREA 32 BYTES 00209000
- * OF INFORMATION, IN THE FOLLOWING FORMAT: 00210000
- * +----------+----------+----------+----------+ 00211000
- * | MM/DD/YY | HH:MM:SS | VIRTCPU | TOTALCPU | 00212000
- * +----------+----------+----------+----------+ 00213000
- * WHERE THE DATE AND TIME ARE EBCDIC DOUBLE-WORD FIELDS, 00214000
- * AND VIRTUAL AND TOTAL CPU TIME ARE DBL-WORD, UNSIGNED 00215000
- * INTEGERS IN MICRO-SECOND UNITS. RETURN IS VIA DMKDSPCH. 00216000
- * 00217000
- * CODE = X'0010' RELEASE VIRTUAL STORAGE PAGES (CLASS G) 00218000
- * 'R1' = START ADDRESS OF FIRST PAGE TO BE RELEASED 00219000
- * 'R2' = START ADDRESS OF LAST PAGE TO BE RELEASED 00220000
- * 00221000
- * BOTH ADDRESSES ARE EXAMINED FOR ALIGNMENT AND VALIDITY. 00222000
- * DMKPGSPP IS CALLED TO PERFORM THE ACTUAL PAGE RELEASE. 00223000
- * 00224000
- * CODE = X'0014' INTERFACE TO INPUT SPOOL FILES (CLASS G) 00225000
- * 'R1','R2' AS REQUIRED BY DMKDRDER 00226000
- * 00227000
- * A CALL IS MADE TO DMKDRDER FOR SUB-FUNCTION DECODING 00228000
- * AND ACTUAL PROCESSING. ON RETURN, THE ERROR CODE IS TESTED 00229000
- * AND EITHER A PROGRAM INTERRUPT IS REFLECTED OR THE 00230000
- * VIRTUAL MACHINE IS RE-DISPATCHED WITH THE CONDITION CODE 00231000
- * INDICATING THE RESULTS OF THE OPERATION. 00232000
- * 00233000
- * CODE = X'0018' "STANDARD" DASD I/O W/O INTERRUPTS (CLASS G) 00234000
- * 'R1' = VIRTUAL DEVICE ADDRESS, DASD DEVICE 00235000
- * 'R2' = ADDRESS OF A DASD CCW STRING (FIXED FORMAT) 00236000
- * 00237000
- * CODE '18' IS PROCESSED VIA GOTO DMKDGDDK 00238000
- * 00239000
- * CODE = X'001C' CLEAR I/O AND M/C RECORDING AREA (CLASS F) 00240000
- * 'R1' = CODE 1,2,3 INDICATING CLEAR OF I/O, M/C, OR BOTH 00241000
- * 00242000
- * THE 'R1' CODE VALUE IS PASSED TO DMKIOEFM IN GPR 2. 00243000
- * 00244000
- * CODE = X'0020' GENERAL VIRTUAL I/O W/O INTERRUPTS (CLASS G) 00245000
- * 'R1' = VIRTUAL DEVICE ADDRESS 00246000
- * 'R2' = ADDRESS OF A CCW STRING TO BE EXECUTED 00247000
- * 00248000
- * CODE '20' IS PROCESSED VIA GOTO DMKGIOEX. 00249000
- * 00250000
- * CODE = X'0024' VIRTUAL DEVICE TYPE INFORMATION (CLASS G) 00251000
- * 'R1' = VIRTUAL DEVICE ADDRESS OR -1 IF VIRTUAL CONSOLE 00252000
- * ON RETURN: 00253000
- * 'R1' = VIRTUAL DEVICE ADDRESS 00254000
- * 'R2' = VIRTUAL DEVICE INFORMATION 00255000
- * 'R2'+1 = REAL DEVICE INFORMATION (IF ANY) 00256000
- * 00257000
- * THE VIRTUAL DEVICE INFORMATION CONSISTS OF THE FIELDS 00258000
- * VDEVTYPC, VDEVTYPE, VDEVSTAT, AND VDEVFLAG, IN THAT ORDER, 00259000
- * FROM THE VDEVBLOK OF THE SPECIFIED DEVICE. THE REAL DEVICE 00260000
- * INFORMATION CONSISTS OF THE FIELDS RDEVTYPC, RDEVTYPE, 00261000
- * RDEVMDL, AND RDEVFTR, IN THAT ORDER, FROM THE RDEVBLOK OF 00262000
- * THE ASSOCIATED REAL DEVICE (IF THERE IS ONE). IF THE DEVICE 00263000
- * IS A VIRTUAL CONSOLE, THE RDEVFTR FIELD OF 'R2+1' IS FILLED 00264000
- * WITH THE INFORMATION FROM RDEVLLEN. THE INFORMATION 00265000
- * IS PLACED IN THE 'R2' REGISTER AND THE FOLLOWING 'R2'+1, AS 00266000
- * INDICATED BELOW: 00267000
- * +----------+----------+----------+----------+ 00268000
- * 'R2' | VDEVTYPC | VDEVTYPE | VDEVSTAT | VDEVFLAG | 00269000
- * +----------+----------+----------+----------+ 00270000
- * 'R2+1' | RDEVTYPC | RDEVTYPE | RDEVMDL | RDEVFTR | 00271000
- * +----------+----------+----------+----------+ 00272000
- * EACH FIELD IS A SINGLE-BYTE FLAG, WHOSE VALUES MAY BE 00273000
- * DETERMINED FROM THE COPY FILES 'DEVTYPES', 'VBLOKS', AND 00274000
- * 'RBLOKS' IN THE VM/370 MACRO LIBRARY. THE VIRTUAL 00275000
- * CONDITION CODE IS SET AS FOLLOWS: 00276000
- * CC = 0 => ALL DATA IS VALID 00277000
- * CC = 2 => NO REAL DEVICE DATA, VIRTUAL TYPE OK 00278000
- * CC = 3 => DEVICE DOES NOT EXIST 00279000
- * 00280000
- * CODE = X'0028' DYNAMIC CHANNEL PROGRAM MODIFICATION (CLASS G) 00281000
- * 'R1' = SPECIFIES A REGISTER GIVING THE ADDRESS OF THE 00282000
- * CCW THAT HAS BEEN MODIFIED. 00283000
- * 'R2' = SPECIFIES ANOTHER REGISTER GIVING THE DEVICE 00284000
- * ADDRESS (IN BITS 16-31). 00285000
- * 00286000
- * THE MODIFIED CCW AND DEVICE ADDRESS ARE EXAMINED FOR 00287000
- * VALIDITY. IF THE MODIFIED CCW OR DEVICE ADDRESS IS INVALID, 00288000
- * DMKHVC RETURNS CONTROL TO THE USER WITH A RETURN CODE AND 00289000
- * CONDITION CODE OF ONE IN PSW. FOR A VALID MODIFIED CCW AND 00290000
- * DEVICE ADDRESS, A CHANGE IS MADE TO THE REAL CCW THAT 00291000
- * CORRESPONDS TO THE MODIFIED VIRTUAL CCW, IN ORDER FOR 00292000
- * MODIFICATION OF THE VIRTUAL CCW LIST TO HAVE ANY REAL 00293000
- * EFFECT ON VM/370. 00294000
- * ANY ERROR CODE RESULTING FROM THE EXECUTION IS 00295000
- * PASSED BACK TO THE VIRTUAL MACHINE IN REGISTER 15 AND A 00296000
- * CONDITION CODE IS SET IN THE PSW TO INDICATE TO THE VIRTUAL 00297000
- * MACHINE WHETHER THE NECESSARY MODIFICATION TO THE REAL 00298000
- * CCW LIST WAS MADE SUCCESSFULLY. IN GENERAL, A CONDITION 00299000
- * CODE OF 0 INDICATES SUCCESS, 1 INDICATES A PROBABLE 00300000
- * PROGRAMMING ERROR IN ISSUING THE DIAGNOSE CALL, AND 00301000
- * 2 INDICATES THAT IT WAS TOO LATE TO CHANGE THE REAL CCW 00302000
- * LIST BECAUSE OF CHANNEL END OR DEVICE END HAS ALREADY 00303000
- * OCCURRED. 00304000
- * 00305000
- * CODE = X'002C' SUPPORTED VIA CALL TO DMKHVE 00306000
- * RETURN DASD START ADDR OF ERROR RECORDING 00306100
- * DATA AREA (CLASS C, E, OR F) 00307000
- * 'R1' = ON RETURN: COMPRESSED DASD ADDRESS (CCPD) OF 00308000
- * FIRST RECORD IN ERROR RECORDING AREA. 00309000
- * 00310000
- * THE COMPRESSED DASD ADDRESS IS CONTRUCTED FROM THE 00311000
- * START CYLINDER NUMBER OF THE ERROR RECORDING AREA (FROM 00312000
- * DMKSYSER) AND THE DEVICE CODE (RDEVCODE) FROM THE SYSTEM 00313000
- * IPL DEVICE RDEVBLOK. THE VIRTUAL CONDITION CODE IS SET 00314000
- * TO ZERO AND RETURN IS VIA DMKDSPCH. 00315000
- * 00316000
- * CODE = X'0030' SUPPORTED VIA CALL TO DMKHVE 00317000
- * READ ONE RECORD OF ERROR RECORDING AREA 00317100
- * (CLASS C, E, OR F) 00318000
- * 'R1' = COMPRESSED DASD ADDRESS (CCPD) OF REQUESTED DATA 00319000
- * 'R2' = START ADDRESS OF A VIRTUAL STORAGE FULL-PAGE BUFFER 00320000
- * 00321000
- * THE DASD ADDRESS IS EXAMINED FOR VALIDITY, AND IF 00322000
- * IT IS O.K., THE DATA RECORD IS MADE AVAILABLE VIA A CALL 00323000
- * TO DMKRPAGT. THE VIRTUAL CONDITION CODE IS SET AS FOLLOWS: 00324000
- * CC = 0 SUCCESSFUL READ, DATA IS AVAILABLE 00325000
- * CC = 1 END OF CYLINDER REACHED, NO DATA 00326000
- * CC = 2 => FATAL I/O ERROR READING DATA PAGE 00327000
- * CC = 3 INVALID CYLINDER, OUTSIDE OF RECORDING AREA 00328000
- * 00329000
- * CODE = X'0034' READ SYSTEM DUMP SPOOL FILE (CLASS C OR E) 00330000
- * 'R1','R2' AS REQUIRED BY DMKDRDMP 00331000
- * 00332000
- * CODE '34' IS PROCESSED VIA A CALL TO DMKDRDMP. 00333000
- * ON RETURN, THE ERROR CODE IS EXAMINED AND EITHER A PROGRAM 00334000
- * INTERRUPT IS REFLECTED OR THE VIRTUAL MACHINE IS 00335000
- * RE-DISPATCHED WITH A CONDITION CODE SET. 00336000
- * 00337000
- * CODE = X'0038' READ SYSTEM SYMBOL TABLE (CLASS C OR E) 00338000
- * 'R1','R2' AS REQUIRED BY DMKDRDSY 00339000
- * 00340000
- * CODE '38' IS PROCESSED VIA A CALL TO DMKDRDSY. 00341000
- * RETURN HANDLING IS THE SAME AS FOR CODES '14' AND '34'. 00342000
- * 00343000
- * CODE = X'003C' DYNAMIC UPDATE OF SYSTEM USER DIRECTORY 00344000
- * (CLASS A, B, OR C) 00345000
- * 'R1','R2' IMMATERIAL 00346000
- * 00347000
- * CODE '3C' IS PROCESSED VIA A CALL TO DMKUDRDS. 00348000
- * RETURN HANDLING IS THE SAME AS FOR CODES '14','34','38'. 00349000
- * 00350000
- * 00351000
- * CODE = X'0040' RESERVED FOR FUTURE USE 00352000
- * 00353000
- * CODE = X'0044' RESERVED FOR FUTURE USE 00354000
- * CODE = X'0048' NOTIFY FIRST LEVEL CP THIS IS A SECOND LEVEL VM 00355010
- * SYSTEM AND THAT THIS VIRTUAL MACHINE HAS ISSUED AN SVC76 00355020
- * CODE = X'0048' RESERVED FOR FUTURE USE 00356000
- * 00357000
- * CODE = X'004C' PUNCH ACCOUNTING CARDS 00358000
- * (THE ACCOUNTING OPTION MUST BE SET) 00359000
- * 00360000
- * 'R1' = CONTAINS THE ADDRESS OF THE PARAMETER LIST OR ZERO. 00361000
- * 'R2' = CONTAINS AFUNCTION HEXADECIMAL CODE INTERPRETED BY 00362000
- * DMKCPVAA. 00363000
- * 00364000
- * CODE X'004C' IS PROCESSED VIA A CALL TO DMKCPVAA. ON 00365000
- * RETURN, IF THE USER ACCOUNTING BLOCK EXIST, THE STORAGE 00366000
- * IS RELEASED. DMKHVC CHECKS THE PARAMETER LIST ADDRESS TO 00367000
- * ASSURE THAT THE ADDRESS IS VALID AND ALIGNED ON A DOUBLEWORD 00368000
- * BOUNDARY. IF THE PARAMETER LIST ADDRESS IS ZERO, DMKHVC 00369000
- * RETURN CONTROL TO THE USER WITH CONDITION CODE ZERO 00370000
- * SET IN THE PSW. IF THE PARAMETER LIST ADDRESS IS INVALIDED OR 00371000
- * NOT ALIGNED ON A DOUBLEWORD BOUNDARY, THAN AN ADDRESSING 00372000
- * OR SPECIFICATION EXECPTION IS GENERATED RESPECTIVELY. 00373000
- * FOR A PARAMETER LIST ADDRESS THAT'S NON-ZERO AND VALID, THE 00374000
- * USERID IN THE PARAMETER LIST IS CHECK AGAINST THE DIRECTORY 00375000
- * LIST AND THE FUNCTION HEXADECIMAL CODE IS CHECK TO DETERMINE 00376000
- * IF THEY ARE VALID. IF NOT, DMKHVC RETURN CONTROL TO THE USER 00377000
- * WITH CONDITION CODE ONE OR THREE SET IN THE PSW RESPECTIVELY. 00378000
- * IF THE USERID AND FUNCTION HEXADECIMAL CODE ARE VALID, THE 00379000
- * USER ACCOUNTING BLOCK IS BUILDED AND THE USERID, ACCOUNT 00380000
- * NUMBER AND DISTRIBUTION NUMBER ARE MOVE INTO THE BLOCK FROM 00381000
- * THE PARAMETER LIST OR THE USER MACHINE BLOCK AND CONTROL 00382000
- * IS RETURNED TO THE USER WITH A CONDITION CODE ZERO 00383000
- * SET IN THE PSW. 00384000
- * 00385000
- * CODE = X'0050' SAVE 370X CONTROL PROGRAM IMAGE 00386000
- * (CLASS A, B, OR C) 00387000
- * 'R1', 'R2' AS REQUIRED BY DMKSNCP 00388000
- * 00389000
- * PROCESSED VIA A CALL TO DMKSNCP. ON RETURN AN ERROR 00390000
- * CODE (OR ZERO) IS RETURNED IN THE USER'S 'R2' REGISTER. 00391000
- * 00392000
- * CODE = X'0058' DIAG CONSOLE 3270 WRITE 00393000
- * 00394000
- * CODE = X'0054' DIAG PA2 CONSOLE INTERRUPT ENABLE 00395000
- * 00396000
- * 00397000
- * CODE = X'005C' EDIT AN ERROR MESSAGE ACCORDING TO USER'S 00398000
- * EMSG SETTING (CLASS G) 00399000
- * 'R1' = ADDRESS OF MESSAGE TO BE EDITED 00400000
- * 'R2' = LENGTH OF MESSAGE (INCLUDING CODE AND TEXT) 00401000
- * ON RETURN: 00402000
- * 'R1' = ADDRESS OF MESSAGE THAT USER SHOULD SEND 00403000
- * 'R2' = LENGTH OF MESSAGE THAT USER SHOULD SEND; 00404000
- * OR 0 IF NO MSG SHOULD BE SENT 00405000
- * 00406000
- * EMSG SETTING FOR THE USER IS TESTED BY TESTING VMMLEVEL 00407000
- * FOR VMMCODE AND VMMTEXT. 00408000
- * IF EMSG IS OFF, 'R2' IS SET TO 0. 00409000
- * IF EMSG IS ON, 'R2' AND 'R1' ARE LEFT ALONE. 00410000
- * IF EMSG IS CODE, 'R2' IS SET TO 10, WHICH IS LENGTH OF 00411000
- * CODE ALONE. 00412000
- * IF EMSG IS TEXT, 'R1' IS SET TO POINT TO TEXT PART OF MESSAGE, 00413000
- * AND 'R2' IS DECREMENTED TO LENGTH OF TEXT ONLY. (IF 00414000
- * RESULTING LENGTH IS NOT POSITIVE, 0 LENGTH IS RETURND.) 00415000
- * ON RETURN FROM DIAGNOSE 5C, CALLER SHOULD CHECK 'R2'. 00416000
- * IF A ZERO LENGTH WAS PASSED BACK, THE CALLER SHOULD 00417000
- * NOT ISSUE A STARTIO AT ALL (I.E., THE MESSAGE SHOULD 00418000
- * NOT BE SENT). IF A NON-0 LENGTH WAS PASSED BACK, 00419000
- * HE SHOULD ISSUE A STARTIO USING THE 'R1' ADDRESS AND 00420000
- * THE 'R2' LENGTH THAT WERE RETURNED BY THE DIAGNOSE 5C. 00421000
- * 00422000
- * CODE = X'0060' RETURN VIRTUAL MACHINE STORAGE SIZE (CLASS G) 00423000
- * ON RETURN: 00424000
- * 'R1' = SIZE OF VIRTUAL STORAGE 00425000
- * 00426000
- * CODE = X'0064' LOAD/FIND OR PURGE A NAMED SYSTEM (CLASS G) 00427000
- * 'R1' = ADDRESS OF THE NAMED SYSTEM 00428000
- * 'R2' = CODE FUNCTION: 00429000
- * 00 = LOAD A NAMED SYSTEM IN SHARED MODE 00430000
- * 04 = LOAD A NAMED SYSTEM IN NON-SHARED MODE 00431000
- * 08 = PURGE A PREVIOUS LOADED NAMED SYSTEM 00432000
- * 0C = FIND THE NAMED SYSTEM IN THE USERS VIRTUAL STORAGE 00433000
- * 00433010
- * CODE = X'0068' VIRTUAL MACHINE COMMUNICATION FACILITY 00433020
- * 00433030
- * 'RX' = VIRTUAL ADDRESS OF THE USER PARAMETER LIST 'VMCPARM'. 00433040
- * 'RY' = RETURN CODE REGISTER 00433050
- * 00433060
- * VMCPARM - VM COMMUNICATION PARMLIST 00433070
- * 00433080
- * 0 +-----+-----+-----------+-----------------------+ 00433090
- * | V*1 | V*2 | VMCPFUNC | VMCPMID | 00433100
- * 8 +-----+-----+-----------+-----------------------+ 00433110
- * | VMCPUSER | 00433120
- * 10 +-----------------------+-----------------------+ 00433130
- * | VMCPVADA | VMCPLENA | 00433140
- * 18 +-----------------------+-----------------------+ 00433150
- * | VMCPVADB | VMCPLENB | 00433160
- * 20 +-----------------------+-----------------------+ 00433170
- * | VMCPUSE | 00433180
- * 28 +-----------------------------------------------+ 00433190
- * 00433200
- * 00433210
- * THIS MODULE INITIALLY VALIDITY CHECKS THE VIRTUAL ADDRESS 00433220
- * SPECIFIED FOR VMCPARM AS FOLLOWS: 00433230
- * 00433240
- * 1. IF THE ADDRESS IS NOT WITHIN VIRTUAL STORAGE OR EXTENDS 00433250
- * BEYOND VIRTUAL STORAGE AN ADDRESSING EXCEPTION IS 00433260
- * REFLECTED TO THE VIRTUAL MACHINE. 00433270
- * 00433280
- * 2. IF THE VMCPARM ADDRESS IS NOT DOUBLEWORD ALIGNED A 00433290
- * SPECIFICATION EXCEPTION IS REFLECTED TO THE VIRTUAL 00433300
- * MACHINE. 00433310
- * 00433320
- * 3. IF THE ABOVE TESTS SUCCEED A 'CALL' IS MADE TO MODULE 00433330
- * DMKVMCFC WHO WILL PROCESS THE VMCF REQUEST. 00433340
- * 00433350
- * 4. UPON RETURN FROM DMKVMCFC 'R2' CONTAINS A DIAGNOSE 00433360
- * RETURN CODE. THE RETURN CODE IS PASSED BACK TO THE 00433370
- * USER IN HIS 'RY' REGISTER. 00433380
- * 00433390
- * 00434000
- * DMKCFGCL - IS CALLED TO PROCESS THE REQUEST 00435000
- * 00435100
- * CODE = X'70' RESERVED FOR FUTURE IBM USE 00435200
- * 00435300
- * CODE = X'74' SAVE 3800 PRINTER IMAGE LIBRARY 00435400
- * 00435500
- * THIS CODE SAVES A 3800 IMAGE LIBRARY IN A SAVED SYSTEM 00435600
- * 00435700
- * 00436000
- * CODE = X'0078' COMMUNICATION FROM DMKMSS RUNNING IN A 00437100
- * VIRTUAL MACHINE. 00437110
- * 00437120
- * A VALUE OF 16 (X'10') IS PLACED IN REGISTER 00437130
- * 0 AND MODULE DMKSSS IS CALLED TO PROCESS 00437140
- * THE REQUEST. 00437150
- * 00437160
- * CODES = X'007C' AND X'0080' RESERVED FOR IBM USE 00437200
- * CODE = X'0084' UPDATE DIRECTORY ENTRY IN PLACE 00437300
- * 00437400
- * 'RX' = VIRTUAL ADDRESS OF USER PARAMETER LIST 00437500
- * 'RY' = LENGTH OF USER PARAMETER LIST 00437600
- * 00437700
- * ON RETURN 'RY' CONTAINS A RETURN CODE 00437800
- * 00437900
- * CODES = X'0088' THRU X'00FC' RESERVED FOR IBM USE 00438000
- *. 00439000
- EJECT 00440000
- *---------------------------------------------------------------------* 00441000
- * * 00442000
- * PROCESS VIRTUAL DIAGNOSE FOR VIRTUAL MACHINES * 00443000
- * * 00444000
- *---------------------------------------------------------------------* 00445000
- DMKHVCAL DS 0D PROCESS DIAGNOSE - X'83RR0NNN' 00446000
- USING *,R12 00447000
- USING PSA,0 00448000
- USING VMBLOK,R11 00449000
- SPACE 2 00450000
- TM VMINST+3,X'03' IS CODE MULTIPLE OF 4? 00451000
- BNZ SPECERR NO - SPECIFICATION 00452000
- IC R5,VMINST+1 GET REGISTERS SPECIFIED 00453000
- LR R6,R5 00454000
- SLL R6,2(0) USER'S 'R2' NUMBER 00455000
- N R6,F60 ... 00456000
- SRL R5,2(0) ... 00457000
- N R5,F60 REGISTER NO. * 4 00458000
- LA R5,VMGPRS(R5) ADDR OF 'R1' IN VMBLOK 00459000
- LA R6,VMGPRS(R6) ADDR OF 'R2' IN VMBLOK 00460000
- LH R4,VMINST+2 GET FUNCTION CODE FROM INSTRUCTIO@V200820 00461000
- CL R4,=A(HVCMAXC) WITHIN SYSTEM SUPPORTED RANGE ? @V200820 00462000
- BH HVCUSER NO -- CHECK FOR INSTALLATION CODE@V200820 00463000
- B HVCODER(R4) JUMP INTO IT 00464000
- SPACE 2 00465000
- HVCODER EQU * DECODING TABLE FOR HVC'S 00466000
- B CALLHVD '000' - STORE EXTENDED ID @VM03170 00467000
- B CALLHVD '004' - READ CP CORE @VM03170 00468000
- B HVCONFN '008' - CONSOLE FUNCTION 00469000
- B HVCHRON '00C' - PSEUDO-CLOCK 00470000
- B HVCPGRL '010' - PAGEREL 00471000
- B CALLHVD '014' - SPOOL INPUT FILE @VM03170 00472000
- * MANIPULATE 00473000
- B HVCDISK '018' - DASD I/O 00474000
- B CALLHVD '01C' - CLEAR RECORDING AREA @VM03170 00475000
- B HVCFAKE '020' - GENERAL I/O WITHOUT INTERRUPTS 00476000
- B CALLHVD '024' - DEVICE TYPE INQUIRY @VM03170 00477000
- B HVCDCPM '028' - DYNAMIC CHANNEL @V1D0631 00478000
- * MODIFICATION 00479000
- B CALLHVE '02C' - GET DASD START OF @VA11268 00480000
- * LOGREC AREA 00480100
- B CALLHVE '030' - READ ONE PAGE OF LOGREC @VA11268 00480200
- * DATA 00480300
- B CALLHVD '034' - READ SYSTEM DUMP SPOOL @VM03170 00484000
- * FILE 00485000
- B CALLHVD '038' - READ SYSTEM SYMBOL TABLE @VM03170 00486000
- B CALLHVD '03C' - DYNAMIC DIRECTORY UPDATE @VM03170 00487000
- B HVCEXIT '040' - RESERVED FOR FUTURE USE 00488000
- B HVCEXIT '044' - RESERVED FOR FUTURE USE 00489000
- B HVCVMCP @VA09952 00490010
- B CALLHVD '04C' - PUNCH ACCOUNTING CARDS @VM03170 00491000
- B CALLHVD '050' - SAVE 370X CONTROL PROGRAM@VM03170 00492000
- B CALLHVD '054' - DIAG PA2 CONSOLE ENABLE @VM03170 00493000
- B HVCGRAF '058' - DIAG CONSOLE 3270 WRITE @V200730 00494000
- B HVCEMSG '05C' - EDIT MSG BY EMSG SETTING @VA01388 00495000
- B HVCSTOR '060' GET VIRTUAL MACHINE @V304635 00496000
- * STORAGE SIZE 00497000
- B HVCSYS '064' LOADSYS/PURGESYS/FINDSYS @V304635 00498000
- B HVCVMCF '068' VM COMMUNICATION @V60B9BA 00498500
- B HVCEXIT '06C' RESERVED FOR FUTURE USE @V60B9BA 00498600
- B HVCEXIT '070' RESERVED FOR FUTURE USE @V60B9BA 00498700
- B CALLHVD '074' SAVE 3800 IMAGE LIBRARY @V60B9BA 00498800
- B HVCMSS '078' CALL DMKSSS - MSS REQUEST @V60B6B8 00498810
- B HVCLDF '07C' Logical Dev Support FaciltyHRC065DK 00498820
- B HVCEXIT '080' RESERVED FOR FUTURE IBM USE@VMI0048 00498830
- B CALLHVD '084' DIRECTORY UPDATE IN PLACE @VMI0048 00498840
- B HVCEXIT '088' RESERVED FOR FUTURE USE HRC072DK 00499000
- B HVC3270 '08C' 3270 DEV CHARACTERISTICS HRC072DK 00499100
- HVCMAXC EQU *-HVCODER-4 MAXIMUM CODE NUMBER DEFINED HRC072DK 00499200
- EJECT 00500000
- CALLHVE CALL DMKHVEAL LET DMKHVE HANDLE @VA11268 00500100
- BNZ PROGINT IF NON-ZERO REFLECT PROG. CHECK @VA11268 00500200
- B HVCEXIT EXIT TO DISPATCHER @VA11268 00500300
- SPACE 2 00500400
- HVCUSER EQU * DECODING FOR INSTALLATION-DEFINED CODES@V200820 00501000
- S R4,F256 WITHIN INSTALLATION-DEFINED RANGE@V200820 00502000
- BM SPECERR NO -- SPECIFICATION EXCEPTION @V200820 00503000
- CL R4,=A(USRMAXC) VALID CODE FOR THIS TABLE ? @V200820 00504000
- BH SPECERR NO -- SPECIFICATION EXCEPTION @V200820 00505000
- B USRCODE(R4) BRANCH TO PROCESSING ROUTINE @V200820 00506000
- SPACE 2 00507000
- USRCODE EQU * DECODING TABLE FOR INSTALLATION CODES @V200820 00508000
- B SPECERR (PROTOTYPE) @V200820 00509000
- USRMAXC EQU *-USRCODE-4 HIGHEST INSTALLATION CODE DEFINED@V200820 00510000
- CALLHVD CALL DMKHVDAL LET HVD HANDLE THESE @VM03170 00511000
- BNZ PROGINT IF NON-ZERO REFLECT PROGRAM CHECK@VM03170 00512000
- SPACE 2 00513000
- HVCEXIT EQU * RE-DISPATCH VIRTUAL MACHINE 00514000
- NI VMRSTAT,X'FF'-(VMIOWAIT+VMEXWAIT) 00515000
- HVCDISP GOTO DMKDSPCH PASS CONTROL TO DISPATCHER @VA05376 00516000
- EJECT 00517000
- EJECT 00518000
- *---------------------------------------------------------------------* 00519000
- * VIRTUAL CONSOLE FUNCTION - CODE '008' FOR ANYBODY * 00520000
- *---------------------------------------------------------------------* 00521000
- HVCONFN EQU * 00522000
- TM VMOSTAT,VMCF EXECUTING A CONSOLE FUNCTION ?? @V200930 00523000
- BZ HVCON1 NO, CONT @V200930 00524000
- OI VMRSTAT,VMCFWAIT STOP MACHINE, WAIT TIL DONE @V200930 00525000
- L R2,VMPSW+4 GET PSW ADDRESS @V200930 00526000
- SL R2,F4 BACKUP TO RE-EXECUTE WHEN RUN @VA01587 00527000
- ST R2,VMPSW+4 SET ADDRESS @V200930 00528000
- B HVCEXIT RETURN @V200930 00529000
- HVCON1 DS 0H @V200930 00530000
- SLR R2,R2 ZERO WORK REGISTER 00531000
- SR R7,R7 INDICATE NO RESPONSE BUFFER @V60C2B8 00531100
- ICM R2,B'0111',1(R6) GET COMMAND LENGTH @V60BBBB 00531800
- BZ HVBREAK ZERO LENGTH = GO TO CP MODE @V60BBBB 00532000
- TM 0(R6),X'FF' ANY FLAGS SET? @V60BBBB 00532200
- BZ HVNFLAG BR IF NOT @V60BBBB 00532400
- BO SPECERR BR IF THEY'RE ALL ON - ERROR @V60BBBB 00532600
- TM 0(R6),PASSSUP PASSWORD SUPPRESSION? @V60BBBB 00532800
- BZ NFLAG0 BR IF NOT @V60BBBB 00533000
- OI VMFSTAT,VMNPWOCL INDICATE PASSWORD SUPPRESSION @V60BBBB 00533200
- NI 0(R6),X'FF'-PASSSUP TURN OFF FLAG BIT @V60BBBB 00533400
- NFLAG0 DS 0H @V60BBBB 00533800
- TM 0(R6),RESPBUF RESPONSE IN BUFFER? @V60C2B8 00534010
- BNO NFLAG1 NO - GO CHECK FOR ANY MORE BITS @V60C2B8 00534020
- LA R15,VMGPRS+R15*4 SET ADDRESS OF VIRTUAL R15 @V60C2B8 00534030
- CR R5,R15 RX CANNOT BE R15, @V60C2B8 00534040
- BNL SPECERR SINCE RX+1 IS RESPONSE BUFFER ADD@V60C2B8 00534050
- CR R6,R15 RY CANNOT BE R15 @V60C2B8 00534060
- BNL SPECERR SINCE RY+1 IS RESPONSE BUFFER LEN@V60C2B8 00534070
- LPR R8,R2 MAKE COMMAND LENGTH >0 AND SAVE @V60C2B8 00534080
- ICM R2,15,4(R6) SET RESPONSE BUFFER LENGTH @V60C2B8 00534090
- BNP SPECERR LENGTH MUST BE >0 @V60C2B8 00534100
- C R2,=F'8192' AND =< 8192 @V60C2B8 00534110
- BH SPECERR ELSE GIVE ERROR @V60C2B8 00534120
- SR R1,R1 CLEAR FOR ICM @V60C2B8 00534130
- ICM R1,B'0111',5(R5) GET RESPONSE BUFFER ADDRESS @V60C2B8 00534140
- BZ SPECERR ADDRESS OF 0 NOT A VALID BUFFER @V60C2B8 00534150
- LR R7,R1 SAVE THE RESPONSE BUFFER ADDRESS @V60C2B8 00534160
- LA R10,HVCNO1 SKIP 2ND PAGE KEY CK IF NO CROSS @V60C2B8 00534170
- BAL R9,ADDCHEK AND VERIFY THE BUFFER @V60C2B8 00534180
- LR R1,R14 GET ADDRESS OF LAST PAGE @V60C2B8 00534190
- HVCON1A BAL R13,KEYTRAN CHECK KEY ON THIS PAGE @V60C2B8 00534200
- SL R1,F4096 BACK UP 1 PAGE @V60C2B8 00534210
- CLR R1,R7 ANY MORE PAGES TO CHECK @V60C2B8 00534220
- BH HVCON1A YES, CONTINUE KEY CHECKING @V60C2B8 00534230
- LR R1,R7 RESTORE ADDRESS OF 1ST PAGE @V60C2B8 00534240
- HVCNO1 BAL R13,KEYTRAN CHECK KEY OF VIRTUAL BUFFER @V60C2B8 00534250
- LR R2,R8 RESTORE COMMAND LENGTH (>0) @V60C2B8 00534260
- NFLAG1 DS 0H @V60C2B8 00534270
- HVNFLAG DS 0H CHECK COMMAND BUFFER @V60C2B8 00534280
- CL R2,=F'132' EXCEED MAX? @VA03197 00535000
- BH SPECERR YES - ERROR @VA03197 00536000
- LR R3,R2 SAVE LENGTH @VA03197 00537000
- L R1,0(,R5) START ADDRESS OF USER'S BUFFER 00538000
- LR R8,R3 SAVE FULL BUFFER LENGTH 00539000
- LA R10,GETBUFF RETURNS HERE IF NO PAGE CROSS 00540000
- BAL R9,ADDCHEK VALIDATE + TEST VIRTUAL ADDRESS 00541000
- SLR R9,R9 INDICATE THAT PAGE BND WAS CROSSED 00542000
- LR R4,R3 FULL COUNT ALSO IN R4 00543000
- SLR R14,R1 COMPUTE FIRST SEGMENT LENGTH 00544000
- SLR R4,R14 COMPUTE SECOND SEGMENT LENGTH 00545000
- LR R3,R14 PUT FIRST LENGTH IN GPR 3 00546000
- GETBUFF EQU * GET FREE STORAGE FOR CFMEN BUFFER 00547000
- OI VMOSTAT,VMCF CONSOLE FUNCTION EXECUTING @VA03286 00548000
- OI VMOSTAT,VMVIRCF FLAG AS VIRTUAL CONS FUNC @V200930 00549000
- MVC VMCONLN,4+2(R6) SET RESPONSE BUFFER LENGTH @V60C2B8 00549100
- * WILL BE IGNORED IF ADDRESS = 0 00549200
- ST R7,VMCONBUF STORE VIRTUAL ADDRESS OF RESP BUF@V60C2B8 00549300
- LA R0,18(0) DBL-WDS FOR FULL BUFFER 00550000
- CALL DMKFREE GET FREE STORAGE FOR BLOCK 00551000
- LR R7,R1 SAVE BLOCK ADDRESS 00552000
- MVC 0(8,R7),BLANKS FILL BUFFER WITH BLANKS 00553000
- MVC 8(17*8,R7),0(R7) ... 00554000
- L R1,0(0,R5) USER'S BUFFER ADDRESS 00555000
- TRANS 2,1,OPT=(BRING,DEFER) 00556000
- EJECT 00557000
- BCTR R3,0 DECREMENT CHARACTER COUNT... 00558000
- EX R3,CONFUNY MOVE DATA TO FREE STORAGE @V200820 00559000
- LTR R9,R9 IS THERE A SECOND SEGMENT 00560000
- BNZ CFNEXEC NO - ALL DONE NOW 00561000
- LA R1,1(R3,R1) NEXT PAGE VIRTUAL STORAGE 00562000
- TRANS 2,1,OPT=(BRING,DEFER) GET SECOND SEGMENT 00563000
- LA R5,1(R3,R7) NEXT REAL STORAGE ADDRESS 00564000
- BCTR R4,0 R4 HAS LENGTH OF 2ND SEGMENT 00565000
- EX R4,CONFUNX MOVE SECOND HALF TO BUFFER 00566000
- CFNEXEC EQU * EXECUTE VIRTUAL CONSOLE FUNCTION 00567000
- LR R0,R8 FULL LINE LENGTH TO R0 00568000
- LR R1,R7 BUFFER START ADDR TO R1 00569000
- CALL DMKCFMEN EXECUTE VIRTUAL CONSOLE FUNCTION 00570000
- C R11,ASYSVM IS USER STILL WITH US? @VA05376 00570300
- BE HVCDISP NO, DON'T MODIFY VMBLOK STATUS @VA05376 00570700
- LTR R2,R2 WAS THERE A NON-ZERO RETURN CODE?@VA04144 00571000
- BNZ CFNSETRC YES. THEN SET IT. @VA04144 00572000
- CLC VMCOMND(4),=CL4'IPL ' WAS THIS AN 'IPL' COMMAND?@VA04144 00573000
- BE CFNIPLEX IF SO, DON'T SET RETURN CODE. @VA04144 00574000
- CFNSETRC EQU * @VA04144 00575000
- ST R2,0(0,R6) SEND RETURN CODE IN USER'S 'R2' 00576000
- CFNIPLEX EQU * @VA03685 00577000
- NI VMFSTAT,X'FF'-VMNPWOCL RESET PASSWORD @V60BBBB 00577300
- * SUPPRESSION FLAG. @V60BBBB 00577600
- TM VMOSTAT,VMSLEEP IS MACHINE SLEEPING ?? @V200930 00578000
- BO HVCCKBUF YES, SKIP FLAG RESET @V60C2B8 00579100
- NI VMOSTAT,X'FF'-VMVIRCF RESET DIAG CONS FUNC @V200930 00580000
- HVCCKBUF CLC VMCONBUF,ZEROES WAS THERE A RESPONSE BUFFER @V60C2B8 00581010
- BE HVCEXIT NO, THEN EXIT NOW @V60C2B8 00581020
- MVC VMCONBUF,ZEROES CLEAR RESPONSE BUFFER ADDRESS @V60C2B8 00581030
- NI VMPSW+2,X'FF'-X'30' SET CC = 0 @V60C2B8 00581040
- NI VMPSW+4,X'FF'-X'30' SET CC = 0 @V60C2B8 00581050
- LH R4,VMCONLN GET BYTES LEFT IN BUFFER @V60C2B8 00581060
- LTR R4,R4 AND TEST @V60C2B8 00581070
- BM EXCC1 <0 , MEANS BUFFER OVERFLOW @V60C2B8 00581080
- L R2,4(,R6) GET ORIGINAL COUNT @V60C2B8 00581090
- SR R2,R4 - COUNT LEFT = VALID CHAR COUNT @V60C2B8 00581100
- ST R2,4(,R6) RETURN COUNT @V60C2B8 00581110
- B HVCEXIT EXIT, CC=0 ALL SET @V60C2B8 00581120
- EXCC1 LPR R4,R4 GET COUNT OF OVERFLOW CHARACTERS @V60C2B8 00581130
- ST R4,4(,R6) AND RETURN TO USER @V60C2B8 00581140
- B HVCDTC1 NOW EXIT WITH CC=1 @V60C2B8 00581150
- SPACE 2 00582000
- HVBREAK EQU * ENTER CONSOLE FUNCTION MODE 00583000
- MVI 0(R6),X'00' ZERO FLAG BYTE @VA11382 00583500
- CALL DMKCFMBK ENTER CFWAIT 00584000
- B HVCEXIT ...AND GO TO DISPATCH 00585000
- SPACE 00586000
- CONFUNY MVC 0(*-*,R7),0(R2) @V200820 00587000
- CONFUNX MVC 0(*-*,R5),0(R2) 00588000
- SPACE 1 @V60BBBB 00588300
- *-------------------------------------------------------------*@V60BBBB 00588600
- * BITS DEFINED IN BYTE 0 OF RY (LENGTH REG) *@V60BBBB 00588900
- *-------------------------------------------------------------*@V60BBBB 00589200
- PASSSUP EQU X'80' VM REQUESTS PASSWORD SUPPRESSION @V60BBBB 00589500
- RESPBUF EQU X'40' USER REQUESTS RESPONSE IN BUFFER @V60C2B8 00589600
- EJECT 00590000
- *---------------------------------------------------------------------* 00591000
- * PSEUDO-CHRONOLOG CLOCK - CODE '00C' FOR ANYBODY * 00592000
- * ------------------------------- * 00593000
- * AT ENTRY, R1 MUST POINT TO A 32 BYTE DATA AREA THAT * 00594000
- * MUST BE DOUBLE-WORD ALIGNED. THE DATA AREA WILL BE * 00595000
- * FILLED IN IN THE FOLLOWING FORMAT -- * 00596000
- * * 00597000
- * +----------+----------+----------+----------+ * 00598000
- * | MM/DD/YY | HH:MM:SS | VIRTCPU | TOTALCPU | * 00599000
- * +----------+----------+----------+----------+ * 00600000
- * * 00601000
- * WHERE THE VIRTUAL AND TOTAL CPU TIMES ARE DOUBLE-WORD, * 00602000
- * UNSIGNED INTEGERS EXPRESSED IN MICRO-SECOND UNITS. * 00603000
- *---------------------------------------------------------------------* 00604000
- HVCHRON EQU * 00605000
- TM 3(R5),X'07' CHECK ADDRESS ALIGNMENT 00606000
- BNZ SPECERR NO GOOD 00607000
- L R1,0(,R5) GET USER'S DATA ADDRESS (VIRTUAL) 00608000
- LA R2,32(0) FIELD LENGTH 00609000
- LA R9,GETDATE DON'T CARE ABOUT PAGE CROSSINGS 00610000
- BAL R10,ADDCHEK CHECK PAGE CROSS, VALIDITY 00611000
- GETDATE EQU * CONVERT DATE AND CURRENT TIME 00612000
- LA R1,TEMPR6 PUT THE DATE HERE 00613000
- LA R2,TEMPR8 ...AND THE TIME HERE 00614000
- CALL DMKCVTDT ... 00615000
- L R5,0(0,R5) VIRTUAL ADDRESS OF BUFFER 00616000
- LA R1,0(0,R5) FIRST DOUBLE-WORD TO R1 00617000
- LM R7,R10,TEMPR6 PICK UP DATE, TIME 00618000
- BAL R13,KEYTRAN TRANSLATE FIRST ADDRESS 00619000
- STM R7,R8,0(R2) ...DATE MM/DD/YY 00620000
- LA R1,8(0,R5) ...2-ND DBL-WD 00621000
- BAL R13,KEYTRAN TRANSLATE... 00622000
- STM R9,R10,0(R2) ...TIME HH:MM:SS 00623000
- CALL DMKTMRPT OBTAIN UP-TO-DATE VTIME @V2B2638 00624000
- LR R9,R0 SAVE PROBLEM TIME 00625000
- LR R10,R1 ... 00626000
- SPACE 00627000
- SRDL R0,12(0) CONVERT IT TO MICRO-SECONDS 00628000
- STM R0,R1,TEMPR6 PUT IT HERE TEMPORARILY 00629000
- LM R7,R8,VMTTIME CALCULATE TOTAL CPU TIME USED 00630000
- SLR R8,R10 SUBTRACT OUT HIS PROBLEM TIME 00631000
- BC 8+2+1,*+8 BR. IF NO-CARRY 00632000
- SL R7,F1 ADJUST FOR CARRY CONDITION 00633000
- SLR R7,R9 ... 00634000
- LM R0,R1,=X'7FFFFFFFFFFFF000' MAXIMUN POSITIVE NUMBER. 00635000
- SLR R1,R8 FIND TOTAL TIME USED BY USER 00636000
- BC 8+2+1,*+8 BR. IF NO CARRY 00637000
- SL R0,F1 ADJUST FOR CARRY CONDITION 00638000
- SLR R0,R7 TOTAL CPU TIME NOW IN R0-1 00639000
- SRDL R0,12(0) CONVERT IT TO MICRO-SECONDS 00640000
- SPACE 00641000
- STM R0,R1,TEMPR8 ... 00642000
- LA R1,16(0,R5) 3-RD DBL-WD 00643000
- LM R7,R10,TEMPR6 PICK UP BOTH CPU TIMES 00644000
- BAL R13,KEYTRAN TRANSLATE THIRD ADDR. 00645000
- STM R7,R8,0(R2) VIRT. CPU TIME - MIC-SECS 00646000
- LA R1,24(0,R5) 4-TH DBL-WD 00647000
- BAL R13,KEYTRAN TRANSLATE... 00648000
- STM R9,R10,0(R2) TOTAL CPU TIME - MIC-SECS 00649000
- B HVCEXIT RE-DISPATCH 00650000
- SPACE 2 00651000
- KEYTRAN EQU * GET DATA PAGE, TEST PROTECTION KEYS 00652000
- TRANS 2,1,OPT=(BRING,DEFER) GET THE REQUIRED PAGE 00653000
- CALL DMKPSASP TEST VIRTUAL STORAGE KEYS @V202232 00654000
- BNZ PROTERR OOPS 00655000
- BR R13 ... 00656000
- EJECT 00657000
- *---------------------------------------------------------------------* 00658000
- * RELEASE VIRTUAL PAGES - CODE '010' FOR ANYBODY * 00659000
- * ------------------------------- * 00660000
- * HERE TO RELEASE A CONTIGUOUS AREA OF USER VIRTUAL * 00661000
- * MEMORY. BOTH MAIN STORAGE AND SECONDARY STORAGE ARE * 00662000
- * RELEASED. AT ENTRY, 'R1' MUST CONTAIN THE PAGE ADDRESS * 00663000
- * OF THE FIRST PAGE TO BE RELEASED, AND 'R2' MUST CONTAIN * 00664000
- * THE ADDRESS OF THE LAST PAGE. THE ADDRESSES IN EACH * 00665000
- * REGISTER MUST BE PAGE BOUNDARY ALIGNED, AND 'R2' MUST BE * 00666000
- * GREATER THAN OR EQUAL TO 'R1'. * 00667000
- *---------------------------------------------------------------------* 00668000
- HVCPGRL EQU * 00669000
- L R2,0(,R6) GET ADDRESS OF LAST PAGE TO BE RELEASED 00670000
- CL R2,VMSTOR IS IT WITHIN VIRTUAL STORAGE ? @V304635 00671000
- BNL ADDRERR NO -- REFLECT INVALID ADDRESS 00672000
- LR R1,R2 SAVE ADDRESS 00673000
- N R1,F4095 TEST FOR PAGE ALIGNMENT 00674000
- BNZ SPECERR ALIGNMENT ERROR -- SPECIFICATION EXCEP. 00675000
- L R1,0(,R5) TEST LOW ADDRESS ALSO 00676000
- LTR R1,R1 ADDRESS MUST BE GE 0 00677000
- BM SPECERR IF NOT, SPECIFICATION EXCEPTION 00678000
- CR R1,R2 1ST PAGE MUST .LE. 2ND 00679000
- BH SPECERR IF NOT, ERROR 00680000
- LR R0,R1 SAVE 1ST PAGE 00681000
- N R0,F4095 TEST ALIGNMENT 00682000
- BNZ SPECERR ALIGNMENT ERROR 00683000
- OI VMQSTAT,VMPRIDSP CHECK QUEUE STAT @VA08721 00683410
- * OF SHARED SYSTEMS, AND DON'T 00683900
- * CHANGE KEYS 00684400
- CALL DMKPGSSS RELEASE PAGES IN ADDRESS RANGE @V304635 00686000
- B HVCEXIT RETURN TO VM USER 00687000
- SPACE 00688000
- HVCDTC1 EQU * SET CONDITION CODE = 1 00689000
- LA R2,X'10' CONDITION CODE WILL BE ONE 00690000
- B HVCCSET GO SET CONDITION CODE 00691000
- HVCDTC2 EQU * SET CONDITION CODE = 2 00692000
- LA R2,X'20' CONDITION CODE WILL BE TWO 00693000
- B HVCCSET GO SET CONDITION CODE 00694000
- HVCDTC3 EQU * SET CONDITION CODE = 3 00695000
- LA R2,X'30' CONDITION CODE WILL BE THREE 00696000
- HVCCSET EQU * SET VIRTUAL CONDITION CODE 00697000
- LA R1,VMPSW+4 POSITION IF IN BC MODE 00698000
- TM VMESTAT,VMEXTCM (IT'S DIFFERENT FOR ECMODE) 00699000
- BZ *+8 00700000
- LA R1,VMPSW+2 POSITION IF IN EC MODE 00701000
- NI 0(R1),B'11001111' CLEAR ANY EXITING CC @VA02203 00702000
- EX R2,HVCSETCC SET THE CONDITION CODE IN VMPSW 00703000
- B HVCEXIT 00704000
- SPACE 00705000
- HVCSETCC OI 0(R1),*-* EXECUTED FOR COND. CODE SETTING 00706000
- HVCVMCP DS 0H @VA09952 00706010
- *-------------------------------------------------------------- 00706020
- * DO THE X'48' DIAGNOSE FOR CP UNDER CP 00706030
- * R5 ADDRESS OF DIAGNOSE RX 00706040
- * R11 ACCRESS OF CALLER VMBLOK 00706050
- * RX=04 SVC76 SWITCH ON 00706060
- * RX=08 CP VIRTUAL SWITCH ON 00706070
- *-------------------------------------------------------------- 00706080
- SPACE 3 00706090
- CLC 0(3,R5),ZEROES FIRST 3 BYTES OF RX MUST BE ZERO @VA09952 00706100
- BNE SPECERR NO ERROR @VA09952 00706110
- CLI 3(R5),X'04' SVC76 REQUEST @VA09952 00706120
- BE SVC76ON YES SWITCH ON @VA09952 00706130
- CLI 3(R5),X'08' CP VIRTUAL REQUEST @VA09952 00706140
- BE VMCPON YES SWITCH ON @VA09952 00706150
- B SPECERR OTHERWISE YOU GOTS ERROR @VA09952 00706160
- SVC76ON DS 0H @VA09952 00706170
- OI VMSPMFLG,VMCPSV76 SVC76 OUT OF CP VIRT @VA09952 00706180
- B HVCEXIT @VA09952 00706190
- VMCPON DS 0H @VA09952 00706200
- OI VMSPMFLG,VMCPVIRT ON SWITCH CP VIRTUAL @VA09952 00706210
- B HVCEXIT @VA09952 00706220
- EJECT 00707000
- SPACE 2 00708000
- *---------------------------------------------------------------------* 00709000
- * STANDARD-FORM DISK I/O - CODE '018' FOR ANYBODY * 00710000
- *---------------------------------------------------------------------* 00711000
- HVCDISK EQU * 00712000
- L R1,DMKHVCDI ADD 1 TO COUNT OF DIAGNOSE I/O'S 00713000
- A R1,F1 00714000
- ST R1,DMKHVCDI AND RESTORE 00715000
- LR R1,R5 ADDRESS OF REGISTER FIELDS 00716000
- LR R2,R6 ADDRESS OF SECOND REGISTER 00717000
- GOTO DMKDGDDK GO PERFORM I/O 00718000
- SPACE 2 00719000
- SPACE 2 00720000
- *---------------------------------------------------------------------* 00721000
- * GENERAL I/O WITHOUT INTERRUPTS - CODE '020' FOR ANYBODY * 00722000
- *---------------------------------------------------------------------* 00723000
- HVCFAKE EQU * 00724000
- L R1,DMKHVCDI GET COUNT OF DIAGNOSE I/O'S @VA05513 00724250
- A R1,F1 INCREMENT BY ONE @VA05513 00724500
- ST R1,DMKHVCDI RESTORE UPDATED COUNT @VA05513 00724750
- LR R1,R5 ADDRESS OF REGISTER FIELDS 00725000
- LR R2,R6 SECOND REGISTER ADDRESS 00726000
- CALL DMKGIOEX GO PERFORM SIMPLIFIED I/O @V200820 00727000
- B HVCEXIT @V200820 00728000
- SPACE 2 00728010
- *---------------------------------------------------------------------* 00728020
- * VIRTUAL MACHINE COMMUNICATION - CODE '068' FOR ANYBODY 00728030
- *---------------------------------------------------------------------* 00728040
- HVCVMCF EQU * @V387045 00728050
- TM 3(R5),X'07' VMCPARM ADDRESS D/W ALIGNED ? @V387045 00728060
- BNZ SPECERR NO..REFLECT SPECIFICATION @V387045 00728070
- * EXCEPTION.. 00728080
- L R1,0(,R5) VIRTUAL ADDRESS OF VMCPARM @V387045 00728090
- LA R2,VMCPLEN AND ITS LENGTH @V387045 00728100
- LA R9,HVCCVMC ALLOW TO CROSS PAGE BOUNDARY @V387045 00728110
- BAL R10,ADDCHEK VALIDITY CHECK ADDRESS @V387045 00728120
- HVCCVMC EQU * @V387045 00728130
- CALL DMKVMCFC PROCESS VMCF REQUEST @V387045 00728140
- ST R2,0(,R6) PASS BACK RETURN CODE @V387045 00728150
- B HVCEXIT EXIT TO DISPATCH @V387045 00728160
- EJECT 00729000
- *--------------------------------------------------------------HRC065DK 00729100
- * LOGICAL DEVICE SUPPORT FACILITY- CODE '07C' FOR ANYBODY HRC065DK 00729120
- *--------------------------------------------------------------HRC065DK 00729140
- HVCLDF EQU * HRC065DK 00729160
- CALL HDKD7CEX Process LDF request HRC065DK 00729180
- B HVCEXIT Exit to dispatcher HRC065DK 00729200
- *--------------------------------------------------------------HRC072DK 00729500
- * 3270 DEVICE CHARACTERISTICS - CODE '08C' FOR ANYBODY HRC072DK 00729520
- *--------------------------------------------------------------HRC072DK 00729540
- HVC3270 EQU * HRC072DK 00729560
- CALL HDKD8CDC Process 3270 dev characteristics HRC072DK 00729580
- B HVCEXIT Exit to dispatcher HRC072DK 00729600
- EJECT 00730000
- HVCGRAF L R1,0(R6) GET DEVICE ADDRESS @V200730 00731000
- CALL DMKSCNVU FIND CONTROL BLOKS @V200730 00732000
- BNZ HVCDTC3 NOT FOUND @V200730 00733000
- L R14,DMKHVCDI GET COUNT OF DIAGNOSE I/O'S @VA05513 00733250
- A R14,F1 INCREMENT BY ONE @VA05513 00733500
- ST R14,DMKHVCDI RESTORE UPDATED COUNT @VA05513 00733750
- L R5,0(R5) GET CCW ADDRESS IN R5 @V200730 00734000
- GOTO DMKVSIEX PROCESS @VA05037 00735000
- EJECT 00736000
- *---------------------------------------------------------------------* 00737000
- * EDIT MESSAGE ACCORDING TO EMSG SETTING - CODE '05C' FOR ANYBODY * 00738000
- *---------------------------------------------------------------------* 00739000
- HVCEMSG EQU * @VA01388 00740000
- L R2,0(,R6) GET MSG LENGTH @VA01388 00741000
- TM VMMLEVEL,VMMCODE+VMMTEXT TEST EMSG SETTING @VA01388 00742000
- BZ EMSGOFF EMSG OFF - SEND NO MSG @VA01388 00743000
- BO EMSGLAST EMSG ON - SEND ENTIRE MSG @VA01388 00744000
- TM VMMLEVEL,VMMCODE CODE ONLY? @VA01388 00745000
- BO EMSGCODE YES, BRANCH @VA01388 00746000
- S R2,=F'11' GET LENGTH OF TEXT ONLY @VA01388 00747000
- BNP EMSGOFF NOTHING BUT A CODE @VA01388 00748000
- L R1,0(,R5) GET MSG ADDRESS @VA01388 00749000
- LA R1,11(,R1) POINT TO TEXT PART OF MSG @VA01388 00750000
- ST R1,0(,R5) GIVE TEXT ADDRESS BACK TO USER @VA01388 00751000
- B EMSGLAST IN HIS 'R1' @VA01388 00752000
- EMSGOFF SR R2,R2 ZERO LENGTH @VA01388 00753000
- B EMSGLAST @VA01388 00754000
- EMSGCODE LA R2,10 LENGTH FOR CODE ONLY @VA01388 00755000
- EMSGLAST ST R2,0(,R6) GIVE PROPER LENGTH BACK TO USER @VA01388 00756000
- B HVCEXIT IN HIS 'R2' @VA01388 00757000
- SPACE 1 00758000
- *---------------------------------------------------------------------* 00759000
- * RETURN VIRTUAL STORAGE SIZE - CODE '060' FOR ANYBODY * 00760000
- *---------------------------------------------------------------------* 00761000
- HVCSTOR L R1,VMSTOR PASS VIRTUAL MEMORY SIZE @V304635 00762000
- ST R1,0(,R5) BACK IN USER'S R1 REGISTER. @V304635 00763000
- B HVCEXIT NOW RETURN TO USER. @V304635 00764000
- SPACE 1 00765000
- *---------------------------------------------------------------------* 00766000
- * LOADSYS-PURGESYS-LOADSYS FOR ANYBODY - CODE '064' 00767000
- *---------------------------------------------------------------------* 00768000
- HVCSYS L R1,0(,R5) GET ADDRESS OF DATA FIELD @V304635 00769000
- LRA R1,0(,R1) CHECK IF VALID VIRTUAL ADDR. @V304635 00770000
- BC 8+2,HVCSYS1 IF IT'S NOT A SEG EXCEPTION @V408246 00771100
- * CONTINUE 00771300
- L R1,0(,R5) RESTORE R1 FOR CALL TO PTRAN @V408246 00771500
- CALL DMKPTRAN,PARM=DEFER OTHERWISE LET PTRAN HANDLE @V408246 00771700
- BC 2,ADDRERR ADDRESSING PROBLEM @V408246 00771900
- HVCSYS1 DS 0H @V408246 00772100
- L R3,0(,R6) GET CODE FUNCTION BYTE @V304635 00773000
- CL R3,=F'12' MUST NOT BE GREATER THAN 12 @V304635 00774000
- BH SPECERR IF IT IS - HE GETS SPEC. CHECK @V304635 00775000
- TM 3(R6),X'03' MUST BE A MULTIPLE OF 4 @V304635 00776000
- BNZ SPECERR ERROR IF IT ISN'T. @V304635 00777000
- TM 3(R5),X'07' MUST BE ON DOUBLE-WORD BOUND. @V304635 00778000
- BNZ SPECERR ERROR IF IT ISN'T @V304635 00779000
- L R1,0(,R5) GET ADDRESS OF NAMED SYSTEM @V304635 00780000
- TRANS 2,1,OPT=(BRING,DEFER) GET VIRTUAL PAGE @V304635 00781000
- NI VMPSW+4,X'CF' SET CONDITION CODE TO ZERO @V304635 00782000
- NI VMPSW+2,X'CF' ALSO SAME FOR EXTENDED MODE PSW @V304635 00783000
- LM R1,R2,0(R2) GET NAME OF NAMED SYSTEM @V304635 00784000
- CALL DMKCFGCL CALL LOADSYS PROCESSOR @V304635 00785000
- B HVCEXIT RETURN TO DISPATCHER. @V304635 00786000
- *---------------------------------------------------------------------* 00786010
- * CALL DMKSSS TO PROCESS AN MSS REQUEST - CODE '078' * 00786020
- *---------------------------------------------------------------------* 00786030
- HVCMSS DS 0H @VA11354 00786041
- ICM R15,15,=A(DMKSSSHV) PICK UP THE ADCON @VA11354 00786042
- BZ PROTERR THE MODULE ISNT HERE @VA11354 00786043
- L R1,0(,R5) GET BUFFER ADDRESS @VA11354 00786044
- LA R2,MSSSIZE*8 GET LENGTH INTO R2 @VA11354 00786045
- LA R9,SPECERR IF BAD GIVE SPEC CHECK @VA11354 00786046
- BAL R10,ADDCHEK GO CHECK FOR PAGE BOUNDARY CROSS @VA11354 00786047
- CALL DMKSSSHV @V60B6B8 00786050
- B HVCEXIT RETURN TO ISSUER OF DIAGNOSE @V60B6B8 00786060
- EJECT 00787000
- * STARTING ADDRESSES AND LENGTH PASSED IN R1 & R2 00787100
- * REGISTERS USED: R0, R13, R14, AND R15 00787300
- ADDCHEK EQU * EXAMINE ADDRESS FOR VALIDITY 00788000
- LA R1,0(,R1) 24 BITS ONLY 00789000
- LRA R0,0(,R1) VALID START ADDRESS ? @V304635 00790000
- BC 8+2,ADDCHEK1 IF IT'S NOT SEG EXCEPTION @V408246 00791100
- * CONTINUE 00791200
- LR R0,R2 SAVE R2 ACCROSS CALL TO PTRAN @V408246 00791300
- CALL DMKPTRAN,PARM=DEFER OTHERWISE LET PTRAN HANDLE @V408246 00791400
- BC 2,ADDRERR ADDRESSING ERROR @V408246 00791500
- LR R2,R0 RESTORE R2 @V408246 00791600
- ADDCHEK1 DS 0H @V408246 00791700
- LA R14,0(R2,R1) R2 CONTAINS FIELD LENGTH 00792000
- BCTR R14,0 BACK UP TO LAST BYTE OF FIELD 00793000
- L R15,XPAGNUM PAGE NUMBER MASK 00794000
- NR R14,R15 ENDING PAGE ADDRESS 00795000
- LRA R0,0(,R14) IS ENDING ADDRESS VALID ? @V304635 00796000
- BC 8+2,ADDCHEK2 IF IT'S NOT SEG EXCEPTION @V408246 00797010
- * CONTINUE 00797060
- LR R13,R1 SAVE STARTING ADDRESS @V408246 00797110
- LR R0,R2 SAVE R2 FOR CALL TO PTRAN @V408246 00797160
- LR R1,R14 VIRT ADDR INTO R1 FOR PTRAN @V408246 00797210
- CALL DMKPTRAN,PARM=DEFER OTHERWISE LET PTRAN HANDLE @V408246 00797260
- BC 2,ADDRERR ADDRESSING PROBLEM @V408246 00797310
- LR R1,R13 RESTORE STARTING ADDRESS @V408246 00797360
- LR R2,R0 RESTORE LENGTH @V408246 00797410
- B ADDCHEK1 TRY AGAIN @V408246 00797460
- ADDCHEK2 DS 0H @V408246 00797510
- NR R15,R1 STARTING PAGE ADDRESS 00798000
- CLR R14,R15 CHECK FOR PAGE BOUNDARY CROSSING 00799000
- BCR 7,R9 YUP -- TAKE THE GR9 EXIT 00800000
- BR R10 RETURN - EVERYTHING IS O.K. 00801000
- EJECT 00804000
- *---------------------------------------------------------------------* 00805000
- * DYNAMIC CCW MODIFICATION - CODE '028' FOR ANYBODY * 00806000
- * 'R1' = ADDRESS OF MODIFIED 'TIC' CCW * 00807000
- * 'R2' = ADDRESS OF THE AFFECTED VIRTUAL DEVICE * 00808000
- *---------------------------------------------------------------------* 00809000
- HVCDCPM EQU * @V1D0631 00810000
- USING IOBLOK,R9 @VA10860 00811100
- USING VDEVBLOK,R13 @VA10860 00812100
- USING RCWTASK,R7 @VA10860 00813100
- NI VMPSW+2,X'FF'-X'30' SET CC TO 0 @VA10860 00814100
- NI VMPSW+4,X'FF'-X'30' SET CC TO 0 @VA10860 00815100
- CR R5,R6 RX SAME AS RY @VA10860 00816100
- BE ERROR1 YES @VA10860 00817100
- TM 3(R5),X'07' DW ALIGNED ? @VA10860 00818100
- BNZ ERROR4 NO @VA10860 00819100
- L R4,0(0,R5) CONTENTS OF RX, CCW ADDRESS @VA10860 00820100
- L R1,0(0,R6) CONTENTS OF RY, DEV ADDRESS @VA10860 00821100
- CALL DMKSCNVU FIND VDEVBLOK @VA10860 00822100
- BNZ ERROR2 VDEVBLOK NOT FOUND @VA10860 00823100
- LR R13,R8 VDEVBLOK IN R13 @VA10860 00824100
- LA R1,0(R4) CCW ADDRESS LESS 1ST BYTE @VA10860 00825100
- TRANS 2,1,OPT=(BRING,DEFER),ADEX=ERROR3 @VA10860 00826100
- CLI 0(R2),X'03' NOOP ? @VA10860 00827100
- BE NOOP YES @VA10860 00828100
- TM 0(R2),X'08' TIC ? @VA10860 00829100
- BZ ERROR6 NO @VA10860 00830100
- TM 0(R2),X'07' TIC ? @VA10860 00831100
- BNZ ERROR6 NO @VA10860 00832100
- NOOP EQU * @VA10860 00833100
- ICM R9,B'1111',VDEVIOB OLD IOBLOK @VA10860 00834100
- BZ ERROR9 ISIN'T THERE @VA10860 00835100
- ICM R7,B'0111',IOBCAW+1 ADDRESS OF CCW'S @VA10860 00836100
- BZ RETURNC NO CCW'S NOT A SIO @VA10860 00837100
- SL R7,F16 BEGINNING OF RCWTASK @VA10860 00838100
- CLC RCWHEAD,FFS RCWTASK ? @VA10860 00839100
- BNE RETURNC NO @VA10860 00840100
- CLC RCWRCNT,ZEROES DMKCCW DO TRANSLATION YET ? @VA10860 00841100
- BE RETURNC NO, HE WILL @VA10860 00842100
- LR R5,R7 PRESERVE 1ST OLD RCWTASK @VA10860 00843100
- SR R10,R10 @VA10860 00844100
- FINDRCW EQU * @VA10860 00845100
- L R6,RCWVCAW VIRTUAL,CCW ADDRESS @VA10860 00846100
- CR R1,R6 BELOW THIS RCW @VA10860 00847100
- BL NEXTRCW YES, NEXT RCW @VA10860 00848100
- LH R0,RCWVCNT VIRTUAL CCW COUNT @VA10860 00849100
- SLL R0,3 CONVERT TO BYTES @VA10860 00850100
- AR R6,R0 END OF VIRTUAL CCW'S @VA10860 00851100
- CR R1,R6 ABOVE THIS RCW ? @VA10860 00852100
- BNL NEXTRCW YES, NEXT @VA10860 00853100
- LR R10,R7 FOUND RCW @VA10860 00854100
- NEXTRCW EQU * @VA10860 00855100
- L R7,RCWPNT NEXT RCW @VA10860 00856100
- LTR R7,R7 END OF RCW'S ? @VA10860 00857100
- BNZ FINDRCW NO, KEEP LOOKING @VA10860 00858100
- LTR R10,R10 FIND RCW ? @VA10860 00859100
- BZ ERROR5 NO @VA10860 00860100
- LR R7,R10 OLD RCW WITH MODIFIED CCW @VA10860 00861100
- LA R3,RCWCCW START OF REAL CCW'S @VA10860 00862100
- L R6,RCWVCAW START OF VIRTUAL CCW'S @VA10860 00863100
- LH R0,RCWVCNT COUNT OF VIRTUAL CCW'S @VA10860 00864100
- CH R0,RCWRCNT VIRTUAL COUNT=REAL COUNT @VA10860 00865100
- BNE CPGEN NO, MUST BE CP GEN. CCW'S @VA10860 00866100
- LR R8,R1 VIRTUAL CCW ADDRESS @VA10860 00867100
- SR R8,R6 R8=DISPLACEMENT TO CCW @VA10860 00868100
- AR R3,R8 DISPL + START =REAL CCW ADDRESS @VA10860 00869100
- B FOUNDCCW @VA10860 00870100
- CPGEN EQU * @VA10860 00871100
- LA R0,8 @VA10860 00872100
- FINDCCW EQU * @VA10860 00873100
- TM RCWCTL-RCWCCW(R3),RCWGEN CP GENERATED ? @VA10860 00874100
- BO BUMPREAL YES, NEXT REAL CCW @VA10860 00875100
- CLR R1,R6 THIS CCW ? @VA10860 00876100
- BE FOUNDCCW YES @VA10860 00877100
- ALR R6,R0 NEXT VIRTUAL CCW @VA10860 00878100
- BUMPREAL EQU * @VA10860 00879100
- ALR R3,R0 NEXT REAL CCW @VA10860 00880100
- B FINDCCW LOOP @VA10860 00881100
- FOUNDCCW EQU * @VA10860 00882100
- CLI 0(R3),X'03' REAL A NOOP ? @VA10860 00883100
- BE NOOPCCW YES @VA10860 00884100
- TM 0(R3),X'08' REAL A TIC ? @VA10860 00885100
- BZ ERROR6 NO @VA10860 00886100
- TM 0(R3),X'07' REAL A TIC ? @VA10860 00887100
- BNZ ERROR6 NO @VA10860 00888100
- NOOPCCW EQU * @VA10860 00889100
- CLI 0(R2),X'03' VIRTUAL CCW NOOP ? @VA10860 00890100
- BNE TICCHECK NO, MUST BE TIC @VA10860 00891100
- BAL R14,TESTCSW TEST FOR I/O END @VA10860 00892100
- LM R7,R8,0(R2) GET NOOP CCW @VA10860 00893100
- STM R7,R8,0(R3) STORE NOOP CCW WE COULD GET CPC @VA10860 00894100
- * IF CHANNEL FETCHES AS WE STORE 00895100
- MVI 5(R3),X'00' ZERO DMKCCW'S FLAG BYTE @VA10860 00896100
- B RETURNC DONE @VA10860 00897100
- TICCHECK EQU * @VA10860 00898100
- TM 3(R2),X'07' TIC TO ADDRESS DW ALIGNED ? @VA10860 00899100
- BNZ ERROR8 NO @VA10860 00900100
- LR R6,R2 PRESERVE REAL ADDR VIRT CCW @VA10860 00901100
- ICM R2,B'0111',1(R6) TIC TO ADDRESS @VA10860 00902100
- LRA R1,0(R2) IN USER CORE ? @VA10860 00903100
- BC 2,ERROR7 NO @VA10860 00904100
- LA R0,IOBSIZE @VA10860 00905100
- CALL DMKFREE @VA10860 00906100
- ICM R9,B'1111',VDEVIOB GET OLD IOB @VA10860 00907100
- BZ FRTIOB TO LATE @VA10860 00908100
- TM IOBCSW+4,CE+DE+UC+UE ENDING STATUS ? @VA10860 00909100
- BNZ FRTIOB TO LATE @VA10860 00910100
- TM IOBCSW+5,255-(IL+PCI) @VA10860 00911100
- BNZ FRTIOB TO LATE @VA10860 00912100
- MVC 0(IOBSIZE*8,R1),IOBLOK COPY OLD @VA10860 00913100
- ST R2,IOBCAW-IOBLOK(0,R1) POIT TO NEW CCW'S @VA10860 00914100
- ICM R2,B'1000',IOBCAW ADD 1ST BYTE @VA10860 00915100
- LA R9,0(R2) DMKCCWTR REG9 @VA10860 00916100
- LR R8,R13 VDEVBLOK @VA10860 00917100
- SL R8,VMDVSTRT DMKCCWTR REG8 @VA10860 00918100
- LR R10,R1 DMKCCWTR REG10 @VA10860 00919100
- CALL DMKCCWTR TRANSLATE NEW CH PROGRAM @VA10860 00920100
- L R8,IOBCAW-IOBLOK(0,R10) NEW CAW @VA10860 00921100
- LA R8,0(R8) LESS 1ST BYTE @VA10860 00922100
- SL R8,F16 NEW RCW ADDRESS @VA10860 00923100
- NEXTOLD EQU * @VA10860 00924100
- L R5,RCWPNT NEXT @VA10860 00925100
- LTR R5,R5 LAST OLD RCW ? @VA10860 00926100
- BZ TICCHAIN YES @VA10860 00927100
- LR R7,R5 NEXT @VA10860 00928100
- B NEXTOLD LOOP @VA10860 00929100
- TICCHAIN EQU * @VA10860 00930100
- ICM R9,B'1111',VDEVIOB @VA10860 00931100
- BZ CSWIORCW @VA10860 00932100
- TM IOBCSW+4,CE+DE ENDING STATUS ? @VA10860 00933100
- BNZ CSWIORCW TO LATE @VA10860 00934100
- TM IOBCSW+5,PRGC+PRTC+CCC+CDC+IFCC+CHC END STATUS? @VA10860 00935100
- BNZ CSWIORCW TO LATE @VA10860 00936100
- ST R8,RCWPNT CHAIN IN NEW RCW'S @VA10860 00937100
- AL R8,F16 POINT TO CCW'S @VA10860 00938100
- STCM R8,B'0111',1(R3) ADDRESS IN TIC @VA10860 00939100
- MVI 0(R3),X'08' MAKE SURE CCW IS TIC @VA10860 00940100
- LA R0,IOBSIZE @VA10860 00943100
- CALL DMKFRET @VA10860 00944100
- RETURNC EQU * @VA10860 00945100
- SR R15,R15 ZERO @VA10860 00946100
- CLI CPUID,X'FF' RUNNING SECOND LEVEL?? @VA11698 00947000
- BE DIAGNOSE YES, ISSUE DIAGNOSE TO 1ST LEVEL @VA11698 00947100
- R15SET EQU * @VA10860 00949100
- ST R15,VMGPRS+4*R15 RETURN CODE @VA10860 00950100
- B HVCEXIT @VA10860 00951100
- DROP R7 @VA10860 00952100
- EJECT 00953100
- DIAGNOSE EQU * @V1D0631 00989000
- BAL R14,TESTCSW GO TEST FOR CHANNEL OR DEVICE END@V1D0631 00990000
- LH R6,IOBRADD GET DEVICE ADDRESS @VA11698 00991100
- DC X'83360028' ISSUE DIAGNOSE TO CP @VA11698 00992100
- BZ R15SET GO SAVE THE RETURN CODE @V1D0631 00993000
- BC 2,SETCC2 GO SET CONDITION CODE TWO @V1D0631 00994000
- SETCC1 EQU * @V1D0631 00995000
- LA R2,X'10' SET CONDITION CODE 1 @V1D0631 00996000
- SETCCODE EQU * @V1D0631 00997000
- LA R1,VMPSW+4 GET THE BC PSW CONDITION CODE @V1D0631 00998000
- * FIELD 00999000
- TM VMESTAT,VMEXTCM IS THIS IN EC MODE ? @V1D0631 01000000
- BZ NOECMODE NO, GO SET CONDITION CODE @V1D0631 01001000
- LA R1,VMPSW+2 GET THE EC PSW CONDITION CODE @V1D0631 01002000
- * FIELD 01003000
- NOECMODE EQU * @V1D0631 01004000
- EX R2,HSETCC SET CONDITION CODE @V1D0631 01005000
- B R15SET GO SET THE RETURN CODE @V1D0631 01006000
- HSETCC EQU * @V1D0631 01007000
- OI 0(R1),*-* SET THE CONDITION CODE @V1D0631 01008000
- ERROR1 EQU * @V1D0631 01009000
- LA R15,1 'R1' AND 'R2' REGISTERS ARE THE @V1D0631 01010000
- * SAME 01011000
- B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01012000
- ERROR2 EQU * @V1D0631 01013000
- LA R15,2 DEVICE SPECIFIED BY 'R2' @V1D0631 01014000
- * REGISTER WAS 01015000
- * NOT FOUND 01016000
- B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01017000
- ERROR3 EQU * @V1D0631 01018000
- LA R15,3 ADDRESS GIVEN BY 'R1' REGISTER @V1D0631 01019000
- * WAS NOT 01020000
- * WITHIN USER'S STORAGE SPACE 01021000
- B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01022000
- ERROR4 EQU * @V1D0631 01023000
- LA R15,4 ADDRESS GIVEN BY 'R1' REGISTER @V1D0631 01024000
- * WAS NOT 01025000
- * DOUBLE-WORD ALIGNED. 01026000
- B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01027000
- ERROR5 EQU * @V1D0631 01028000
- LA R15,5 CCW STRING CORRESPONDING TO @V1D0631 01029000
- * 'R2' DEVICE 01030000
- * AND 'R1' ADDRESS WAS NOT FOUND 01031000
- B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01032000
- ERROR6 EQU * @V1D0631 01033000
- LA R15,6 CCW AT ADDRESS SPECIFIED BY @V1D0631 01034000
- * 'R1' IS 01035000
- * NOT A TIC OR A NO-OP CCW 01036000
- B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01037000
- ERROR7 EQU * @V1D0631 01038000
- LA R15,7 NEW ADDRESS IN TIC IS NOT @V1D0631 01039000
- * WITHIN USER'S 01040000
- * STORAGE SPACE 01041000
- B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01042000
- ERROR8 EQU * @V1D0631 01043000
- LA R15,8 NEW ADDRESS IN TIC IS NOT @V1D0631 01044000
- * DOUBLE-WORD 01045000
- * ALIGNED 01046000
- B SETCC1 GO SET CONDITION CODE 1 @V1D0631 01047000
- CSWIORCW EQU * @V1D0631 01048000
- LR R8,R13 VDEVBLOK FOR DMKUNTFR @VA10860 01048500
- CALL DMKUNTFR GO RELEASE RCWTASKS @V1D0631 01049000
- FRTIOB LA R0,IOBSIZE GET THE SIZE OF IOB @VA03292 01050000
- CALL DMKFRET GO RELEASE SPACE FOR IOBLOK @V1D0631 01051000
- ERROR9 EQU * @V1D0631 01052000
- LA R15,9 TOO LATE TO CHANGE THE CCW STRING@V1D0631 01053000
- * (CHANNEL END OR DEVICE END HAS 01054000
- * ALREADY OCCURRED) 01055000
- SETCC2 EQU * @V1D0631 01056000
- LA R2,X'20' SET CONDITION CODE TO 2 @V1D0631 01057000
- B SETCCODE GO SET CONDITION CODE @V1D0631 01058000
- SPACE 2 01059000
- TESTCSW EQU * @V1D0631 01060000
- ICM R9,15,VDEVIOB GET THE ADDRESS OF THE IOBLOK @V1D0631 01061000
- BZ ERROR9 IF ADDRESS IS ZERO, GO SET RETURN@V1D0631 01062000
- * CODE TO 9 01063000
- TM IOBCSW+4,CE+DE IS THIS CHANNEL OR DEVICE END ? @V1D0631 01064000
- BNZ ERROR9 YES, GO SET RETURN CODE TO 9 @V1D0631 01065000
- TM IOBCSW+5,PRGC+PRTC+CCC+CDC+IFCC+CHC ARE STATUS @V1D0631 01066000
- * FLAGS ON 01067000
- BNZ ERROR9 YES, GO SET RETURN CODE 9 @V1D0631 01068000
- BR R14 RETURN TO IN LINE CODE @V1D0631 01069000
- DROP R9,R13 DROP BASE REG. FOR IOBLOK & @V1D0631 01070000
- * VDEVBLOK 01071000
- SPACE 4 01072000
- SPECERR EQU * @V1D0631 01073000
- LA R0,X'06' INTERRUPT CODE 01074000
- B PROGINT 01075000
- SPACE 01076000
- ADDRERR EQU * REFLECT ADDRESSING ERROR 01077000
- LA R0,X'05' INTERRUPT CODE 01078000
- B PROGINT 01079000
- SPACE 01080000
- PROTERR EQU * REFLECT PROTECTION CHECK 01081000
- LA R0,X'04' INTERRUPT CODE 01082000
- B PROGINT 01083000
- SPACE 01084000
- PRIVLGD EQU * REFLECT PRIVILEGED OPERATION 01085000
- LA R0,X'02' INTERRUPT CODE 01086000
- SPACE 01087000
- PROGINT EQU * 01088000
- GOTO DMKPRGSM SIMULATE PROGRAM INTERRUPT 01089000
- EJECT 01090000
- DMKHVCPC DS 0D PAGES PER CYLINDER - PAGING + SPOOLING 01131000
- DC AL1(24) REC/CYL 2305-1 (SAME AS 2305-2) @V200538 01132000
- DC AL1(24) 2305-2 01133000
- DC AL1(57) 3330 01134000
- DC AL1(57) 3330-11 (SAME AS 3330) @V200538 01135000
- DC AL1(120) PAGE LIMIT FOR 3350 @V304498 01136000
- DC AL1(32) 2314, 2319 01137000
- DC AL1(24) PAGE LIMIT FOR 3340 (35MB) @V2A2029 01138000
- DC AL1(24) PAGE LIMIT FOR 3340 (70MB) @V2A2029 01139000
- SPACE 2 01140000
- DMKHVCDI DC F'0' COUNT OF DIAGNOSE I/O'S 01141000
- LTORG 01142000
- EJECT 01143000
- COPY EQU 01144000
- COPY VMBLOK 01145000
- COPY IOBLOKS (R9) @V1D0631 01146000
- PSA 01147000
- COPY UDIRECT 01148000
- COPY ACCOUNT 01149000
- COPY RBLOKS 01150000
- COPY VBLOKS 01151000
- COPY DEVTYPES 01152000
- EJECT 01153000
- COPY NETWORK @VA03785 01154000
- COPY VMCBLOKS @V387045 01154500
- OSVSCOM MSSCOM @VA11354 01154550
- END DMKHVCAL 01155000
ibm/vm370-lib/cp/dmkhvc.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator