CPI TITLE 'DMKCPI (CP) VM/370 - RELEASE 6' 00001000
ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
* 00003000
* NOTE - DMKBLD AND DMKUDR ARE THE ONLY PAGEABLE MODULES 00004000
* THAT NEED BE RESIDENT AT IPL TIME. 00005000
* ALL OTHER MODULES SHOULD BE IN THE CP PAGEABLE AREA. 00006000
* 00007000
*. 00008000
* MODULE NAME - 00009000
* 00010000
* DMKCPI 00011000
* 00012000
* FUNCTION - 00013000
* 00014000
* TO INITIALIZE VM/370'S CORE, WORKAREAS AND CONTROL BLOCKS, TO 00015000
* LOG ON THE SYSTEM OPERATOR, TO MOUNT AND VERIFY ALL READY DASD 00016000
* VOLUMES, AND, IN GENERAL, TO PREPARE THE SYSTEM FOR OPERATION 00017000
* 00018000
* ATTRIBUTES - 00019000
* 00020000
* NON-REUSABLE, PAGEABLE, ENTERED FROM DMKSAVRS VIA A GOTO AFTER 00021000
* SYSTEM IPL SEQUENCE AND CHECKPOINT ARE COMPLETE 00022000
* 00023000
* ENTRY POINTS - 00024000
* 00025000
* DMKCPINT - START INITIALIZATION - ENTERED FROM DMKSAVRS 00026000
* DMKCPIEM - ENABLE ALTERNATE OPERATOR'S CONSOLE - ENTERED 00027000
* VIA A GOTO FROM DMKCNS 00028000
* DMKCPICD - SYSTEM CREATION DATE 00029000
* 00030000
* ENTRY CONDITIONS - 00031000
* 00032000
* GPR10 = ADDRESS OF IPL'ED DEVICE 00033000
* GPR12 = ADDRESS OF DMKCPI 00034000
* 00035000
* EXIT CONDITIONS - 00036000
* 00037000
* DMKCPI EXITS TO THE DISPATCHER (DMKDSPCH) VIA A GOTO TO AWAIT 00038000
* INTERRUPTS FROM TP LINES OR THE OPERATOR'S CONSOLE 00039000
* 00040000
* CALLS TO OTHER ROUTINES - 00041000
* 00042000
* DMKALGON - AUTOLOG 'AUTOCOM' 00043000
* DMKAPI - PERFORM INITIALIZATION FOR AP SUPPORT 00044000
* DMKBLDRT - BUILD SYSTEM'S SEGMENT AND PAGE TABLES 00045000
* DMKCFMEN - EXPLICIT OPERATOR LOGON FROM ALTERNATE CONSOLE 00046000
* DMKCLK - SYNCHRONIZE THE TOD CLOCKS 00047000
* DMKCNSEN - EXIT VIA GOTO TO ENABLE OPERATOR'S LINE 00048000
* DMKCPVAE - AUTOMATIC RE-ENABLE OF LINES 00049000
* DMKCQRFI - QUERY SYSTEM SPOOLING FILES 00050000
* DMKCSOSD - START ALL UNIT RECORD DEVICES 00051000
* DMKCVTBD - CONVERT A FULLWORD OF BINARY TO EBCDIC DECIMAL 00052000
* DMKCVTBH - CONVERT A FULLWORD OF BINARY TO EBCDIC HEX 00053000
* DMKCVTDT - CONVERT DATE AND TIME 00054000
* DMKDSPCH - EXIT VIA GOTO AFTER PROCESSING IS FINISHED 00055000
* DMKFREE - GET A BLOCK OF FREE SPACE 00056000
* DMKFRET - RETURN A BLOCK TO FREE SPACE 00057000
* DMKFRETR - INITIALIZE SYSTEM FREE STORAGE 00058000
* DMKGRTID - Copy SYSID to 3270 status areas HRC108DK 00058100
* DMKHVDPP - INITIALIZE PROGRAM PRODUCT BIT MAP 00059000
* DMKIOEFL - FORMAT THE ERROR RECORDING LOGS 00060000
* DMKIOSQR - QUEUE I/O REQUEST 00061000
* DMKNETAE - AUTOMATIC RE-ENABLE OF NETWORK LINES 00062000
* DMKNLDR - LOAD 370X PROGRAMS 00063000
* DMKPGTPG - GET A DASD PAGE FOR PAGING SYSTEM TO DISK 00064000
* DMKPTRAN - BRING IN PAGEABLE MODULE 00065000
* DMKPTRLK - LOCK PAGES OF DMKCPI 00066000
* DMKPTRUL - UNLOCK DMKCPI'S PAGES 00067000
* DMKQCNRD - GET REPLIES FROM OPERATOR'S CONSOLE 00068000
* DMKQCNWT - WRITE MESSAGES TO OPERATOR'S CONSOLE 00069000
* DMKRPAPT - MOVE A PAGE FROM STORAGE TO DASD 00070000
* DMKSCHST - SCHEDULE A TIMER REQUEST VIA TRQBLOK 00071000
* DMKSCNRD - GET DEVICE ADDRESS 00072000
* DMKSCNRU - GET REAL CH, CU, AND DEV BLOK FOR DEVICE ADDRESS 00073000
* DMKSCNVS - GET DEVICE WITH GIVEN VOLID 00074000
* DMKUDRBV - BUILD USER DIRECTORY PAGE LIST 00075000
* DMKWRMST - PERFORM SYSTEM WARM START FUNCTIONS 00076000
* 00077000
* 00078000
* EXTERNAL REFERENCES - 00079000
* 00080000
* DMKCKP - ADDRESS OF THE CHECKPOINT MODULE 00081000
* DMKCPEID - THE CP VERSION LEVEL AND PLC ID 00082000
* DMKCPEML - THE CP ASSIST LEVEL STORED HERE 00083000
* DMKCPEND - END OF RESIDENT NUCLEUS 00084000
* DMKDMPAU - ADDRESS OF RDEVBLOK FOR AUTO DUMP DEVICE 00085000
* DMKDMPDV - ADDRESS OF RDEVBLOK FOR DUMP DEVICE 00086000
* DMKDMPRC - ADDRESS OF DUMP FILE RECBLOK CHAIN 00087000
* DMKDMPSF - DUMP FILE SFBLOK 00088000
* DMKDSPNP - TOTAL NUMBER OF PAGES AVAILABLE FOR PAGING 00089000
* DMKFREHI - START OF HIGH CORE FREE STORAGE AREA 00090000
* DMKFRELG - VALUE OF LARGEST SIZE BLOCK REQUESTED 00091000
* DMKFRELO - END OF LOW CORE FREE STORAGE AREA 00092000
* DMKFRESV - ADDRESS OF RESERVED SAVEAREA USED BY "EXTEND" 00093000
* DMKMCHIN - ADDRESS OF MACHINE CHECK INTERRUPT HANDLER 00094000
* DMKPAGHI - SAME AS DMKFREHI 00095000
* DMKPAGLO - SAME AS DMKFRELO MINUS LENGTH OF ONE PAGING IOBLOK 00096000
* DMKPAGST - INITIAL PAGING INTERVAL CONSTANT 00097000
* DMKPGTBN - ADDRESS OF VIRTUAL BUFFER NUMBER DIVIDED BY 8 00098000
* DMKPGTP0 - ANCHOR FOR PAGING 3330'S 00099000
* DMKPGTP4 - ANCHOR FOR PAGING 2314'S 00100000
* DMKPGTP5 - ANCHOR FOR PAGING 2305'S 00101000
* DMKPGTTM - NUMBER OF TEMP CYLINDERS 00102000
* DMKPGTTU - NUMBER OF TEMP CYLINDERS ALLOCATED 00103000
* DMKPGTT0 - ANCHOR FOR SPOOLING/PAGING 3330'S 00104000
* DMKPGTT4 - ANCHOR FOR SPOOLING/PAGING 2314'S 00105000
* DMKPGTT5 - ANCHOR FOR SPOOLING/PAGING 2305'S 00106000
* DMKPGT4P - ANCHOR FOR PAGING 3340'S 00107000
* DMKPGT5P - ANCHOR FOR PAGING 3350'S 00108000
* DMKPGT7P - Anchor for spooling/paging 3375's HRC106DK 00108100
* DMKPGT8P - Anchor for spooling/paging 3380's HRC106DK 00108200
* DMKPGT4T - ANCHOR FOR SPOOLING/PAGING 3340'S 00109000
* DMKPGT5T - ANCHOR FOR SPOOLING/PAGING 3350'S 00110000
* DMKPGT7T - Anchor for spooling/paging 3375's HRC106DK 00110100
* DMKPGT8T - Anchor for spooling/paging 3380's HRC106DK 00110200
* DMKPGT90 - 90 PERCENT OF TEMP CYLINDERS 00111000
* DMKPRGIN - ADDRESS OF PROGRAM CHECK INTERRUPT HANDLER 00112000
* DMKPSADU - SYSTEM DUMP ROUTINE 00113000
* DMKPSAEX - ADDRESS OF EXTERNAL INTERRUPT HANDLER 00114000
* DMKPSAHI - SAME AS DMKFREHI 00115000
* DMKPSALO - SAME AS DMKFRELO MINUS LENGTH OF ONE SAVE-AREA 00116000
* DMKPSANS - START OF SAVE-AREA CHAIN USED BY DMKPSASV 00117000
* DMKPSASV - ADDRESS OF SVC INTERRUPT HANDLER 00118000
* DMKPTRFA - ADDRESS OF RESERVED CPEXBLOK USED BY DMKPTRFR 00119000
* DMKPTRFN - NUMBER OF FREE PAGES IN CORTABLE 00120000
* DMKPTRF1 - ANCHOR FOR FREE PAGES 00121000
* DMKPTRRM - VALUE EQUAL TO REAL MACHINE SIZE (FOR CP ASSIST) 00122000
* DMKRIOCN - DEVICE ADDRESS OF ALTERNATE CONSOLE 00123000
* DMKRIORN - TABLE OF 370X'S 00124000
* DMKSAV - NUCLEUS SYSTEM SAVE ROUTINE 00125000
* DMKSCHLI - SAMPLE TIME INTERVAL FOR MEASUREMENT PERIODS 00126000
* DMKSCHMD - MIDNIGHT DATE CHANGE ROUTINE 00127000
* DMKSCHQ1 - Q1 TIME SLICE 00128000
* DMKSCHQ2 - Q2 TIME SLICE 00129000
* DMKSLC - ADDRESS OF END OF V=R AREA OR ZERO 00130000
* DMKSYM - ADDRESS OF SYSTEM SYMBOL TABLE 00131000
* DMKSYMTB - BEGINNING OF SYMBOL TABLE MODULE 00132000
* DMKSYSCS - ADDRESS OF SYSTEM CORTABLE 00133000
* DMKSYSDU - USERID TO RECEIVE AUTO SYSTEM DUMP 00134000
* DMKSYSDW - WEEKDAY IN EBCDIC 00135000
* DMKSYSIC - Count of SYSID entries HRC108DK 00135100
* DMKSYSID - Default / current SYSID HRC108DK 00135200
* DMKSYSIL - Beginning of list of SYSID entries HRC108DK 00135300
* DMKSYSNU - CYLINDER NUMBER FOR START OF NUCLEUS 00136000
* DMKSYSOC - ADDRESS OF OWNED VOLUME COUNT 00137000
* DMKSYSOP - ADDRESS OF OPERATOR'S VMBLOK 00138000
* DMKSYSOW - ADDRESS OF SYSTEM OWNED VOLUME LIST 00139000
* DMKSYSUS - ADDRESS OF USER VOLUME LIST HRC033DK 00139300
* DMKSYSUC - ADDRESS OF USER VOLUME COUNT HRC033DK 00139600
* DMKSYSRM - REAL SIZE OF MACHINE 00140000
* DMKSYSRV - SYSGEN SIZE OF MACHINE 00141000
* DMKSYSTZ - TIME ZONE CORRECTION CONSTANT 00142000
* DMKSYSUD - DISK ADDRESS OF START OF DIRECTORY 00143000
* DMKSYSVL - SYSRES VOLUME SERIAL 00144000
* DMKSYSER - ERR RECORDING AREA LOCATION INFORMATION HRC075DK 00144400
* DMKSYSWM - WARM START AREA LOCATION INFORMATION HRC075DK 00144500
* DMKSYSCH - CHECKPOINT AREA LOCATION INFORMATION HRC075DK 00144600
* DMKVMI - ADDRESS OF IPL SIMULATOR 00145000
* 00146000
SPACE 00147000
* 00148000
* TABLES / WORKAREAS - 00149000
* 00150000
* VMBLOK, RDEVBLOK, ALOCBLOK, CORTABLE, MICBLOK 00151000
* 00152000
* REGISTER USAGE - 00153000
* 00154000
* GPR0 = PARMS FOR CALLS TO DMKFREE/DMKFRET 00155000
* GPR1 = ADDRESS OF FREE STORAGE AREAS RETURNED BY DMKFREE 00156000
* GPR2 = PARMS PASSED TO CALLED ROUTINES 00157000
* GPR10 = INTERNAL SUBROUTINE LINKAGE 00158000
* GPR11 = VMBLOK BASE 00159000
* GPR12 = DMKCPI BASE 00160000
* GPR13 = DMKCPI BASE 00161000
* GPR14 = EXTERNAL LINKAGE 00162000
* GPR15 = EXTERNAL LINKAGE 00163000
* 00164000
* ALL OTHER REGISTERS ARE USED AS SCRATCH REGISTERS 00165000
* 00166000
* NOTES - 00167000
* 00168000
* NONE 00169000
* 00170000
EJECT 00171000
* 00172000
* 00173000
* OPERATION - 00174000
* 00175000
* 1. CLEAR LOW CORE AND SET NEW PSWS. 00176000
* 2. SET THE PSW RESTART PSW AT LOCATION 0. 00177000
* 3. SET CONTROL REGISTERS. 00178000
* 3A. IF MULTIPROCESSOR FEATURE INSTALLED AND IF SYSTEM 00179000
* IS GEN'D FOR AP SUPPORT, LOCATE THE ADDRESS OF THE 00180000
* APU. 00181000
* 4. LOOP THROUGH ALL OF MAIN STORAGE SETTING STORAGE KEYS 00182000
* TO ZERO; WHEN PROGRAM CHECK OCCURS, CALCULATE MAIN 00183000
* STORAGE SIZE AND SAVE. 00184000
* 5. CHECK FOR CP ASSIST ON CPU. IF PRESENT, FLAG AVAILABLE 00185000
* (PENDING LEVEL CHECK - DONE AFTER PROMPT FOR TIME OF DAY). 00186000
* IF TEST PRODUCES PROGRAM CHECK, SET CP ASSIST UNAVAILABLE 00187000
* AND REPLACE ALL CP ASSIST INSTRUCTIONS WITH NO-OPS. 00188000
* 6. INITIALIZE CORTABLE. 00189000
* 7. CALL DMKFRETR TO INITIALIZE THE HIGH CORE PAGES OF THE 00190000
* SYSTEM AS A FREE STORAGE AREA, AND TO RELEASE THE UNUSED 00191000
* PORTION OF THE LAST RESIDENT NUCLEUS PAGE. 00192000
* IF RUNNING IN AP MODE, ASSIGN THE TWO HIGHEST REAL 00193000
* STORAGE FRAMES AS CP OWNED TO BE USED FOR PREFIXING. 00194000
* 8. CALL DMKFREE FOR 'CPEXSIZE*16' DOUBLE WORDS OF STORAGE 00195000
* TO SATISFY FREE STORAGE CALLS DURING EXTEND PROCESSING 00196000
* ALSO, IF IN AP MODE, OBTAIN STORAGE FOR TWO ADDITIONAL 00197000
* CPEXBLOKS AND STORAGE AS DEFINED BY DMKFREAP. ONE 00198000
* OF THE CPEXBLOK'S WILL BE USED BY THE SWITCH MACRO 00199000
* AND THE OTHER WILL BE ASSIGNED AS A DEFERRED EXECUTION 00200000
* BLOCK FOR THE OPERATOR'S VMBLOK. THE DMKFREAP 00201000
* STORAGE IS USED AS A BACK POCKET FOR DMKFRE WHEN 00202000
* FREE STORAGE MUST BE EXTENDED AND THE SYSTEM LOCK 00203000
* IS NOT AVAILABLE. 00204000
* 9. LOOP THROUGH ALL RDEVBLOKS DOING A HALT I/O TO EACH 00205000
* DEVICE; IF THERE IS NO REAL DEVICE FOR THE RDEVBLOK 00206000
* THEN SKIP TO THE NEXT DEVICE. IF THERE IS A REAL DEVICE 00207000
* AND IT IS A 3800 PRINTING SUBSYSTEM, CALL DMKFREE 00208000
* TO GET STORAGE FOR THE REAL DEVICE BLOCK EXTENSION 00209000
* AND SAVE ITS ADDRESS IN RDEVEXTN. IF THERE IS A REAL DEV. 00210000
* AND IT IS NOT DASD OR TAPE, SKIP THE FOLLOWING 00211000
* 'RELEASE' AND VOLUME LABEL PROCESSING. FOR DASD AND 00212000
* TAPE DEVICES, ISSUE A 'RELEASE' CCW AND SET THE 00213000
* RDEVFTR(FTRRSRL) BIT IF THE COMMAND WORKED, INDICATING 00214000
* THAT AN X-CHANNEL SWITCH FEATURE IS INSTALLED. FOR DASD 00215000
* DEVICES, READ THE VOLUME SERIAL; CHECK FOR DUPLICATE 00216000
* SERIAL, CONSTRUCTING A MESSAGE TO BE WRITTEN LATER IF 00217000
* A DUPLICATE IS FOUND; IF THE VOLUME IS 'CPOWNED' 00218000
* AND THE DEVICE IS A 3330V, INFORMATIONAL MESSAGE 00219000
* DMKCPI913I WILL BE ISSUED AND THE DEVICE MARKED 00220000
* AVAILABLE. OTHERWISE, CHECK TO SEE IF THE VOLUME 00221000
* SERIAL APPEARS IN THE OWNED LIST, AND IF IT IS CALL 00222000
* DMKFREE TO OBTAIN FREE STORAGE FOR A MAXI ALLOCBLOK; 00223000
* FORMAT THE MAXI ALOCBLOK AND CHAIN IT TO THE RDEVBLOK. 00224000
* 10. IF ALTERNATE PATH I/O WAS GENERATED IN THE SYSTEM, GET 00225000
* AND INITIALIZE A STACK OF 'MIOBNUM' MINI IOB'S FOR DMKIOS 00226000
* 11. INITIALIZE SYSTEM SEGMENT, PAGE, AND SWAP TABLES. 00227000
* 12. TEST TO SEE IF VM ASSIST IS AVAILABLE ON THE COMPUTER. 00228000
* IF IT IS, SET BITS IN PSA INDICATING VMA AVAILABLE AND ON. 00229000
* 13. LOCATE THE SYSTEM OPERATOR'S CONSOLE. ISSUE A START I/O 00230000
* TO A SENSE COMMAND. IF THE SENSE INDICATES THAT THE 00231000
* CONSOLE IS UNAVAILABLE, ENABLE THE ALTERNATE CONSOLE BY 00232000
* FORCING AN INTERRUPT ENTRY INTO DMKCNS. RETURN WILL BE 00233000
* MADE VIA DMKCPIEN AFTER THE ALTERNATE CONSOLE IS MADE 00234000
* READY. IF THE ALTERNATE CONSOLE IS UNAVAILABLE LOAD A 00235000
* DISABLED WAIT STATE PSW. 00236000
* 14. IF RESTARTING AFTER A SYSTEM FAILURE, WRITE THE SYSTEM 00237000
* RESTART MESSAGE; WRITE THE SYSTEM IDENTIFICATION MESSAGE. 00238000
* 14a.Examine the SYSID list at DMKSYSIL and determine HRC108DK 00238100
* if any of the entries match this CPU. If so, HRC108DK 00238200
* copy the specified system id into DMKSYSID where HRC108DK 00238300
* it replaces the default system id established by HRC108DK 00238400
* DMKSYS. Call DMKGRTID to put SYSID in 3270 status HRC108DK 00238500
* 15. STORE THE TIME OF DAY CLOCK; IF THE CONDITION CODE 00239000
* INDICATES THAT THE CLOCK IS SET PROCEED TO THE NEXT STEP; 00240000
* OTHERWISE, ASK THE OPERATOR TO SET THE DATE AND TIME, AND 00241000
* THEN TO PRESS THE "TOD ENABLE SET" SWITCH. 00242000
* 16. COMPUTE A CONSTANT WHICH REPRESENTS THE TOD CLOCK VALUE AT 00243000
* MIDNIGHT THIS MORNING; COMPUTE THE DAY OF THE WEEK AND 00244000
* SAVE IT AS DMKSYSDW. 00245000
* 17. WRITE A MESSAGE WHICH GIVES THE CURRENT DATE AND TIME AND 00246000
* REQUESTS IF IT SHOULD BE CHANGED; IF THE ANSWER IS "YES" 00247000
* REPEAT THE PROCEDURE TO SET THE DATE AND TIME AND RE-ASK 00248000
* THE QUESTION. 00249000
* 18. INITIATE 30 SECOND TIMER INTERRUPT TO GIVE CONTROL TO 00250000
* DMKSCHTI TO ACCUMULATE SMOOTHED CPU UTILIZATION VALUE. 00251000
* 19. CALL DMKIOEFL TO INITIALIZE MACHINE CHECK AND I/O ERROR 00252000
* RECORDING AREAS IF THEY HAVE NOT BEEN PREVIOUSLY 00253000
* FORMATTED; SET THE MACHINE CHECK NEW PSW. 00254000
* 20. CALL DMKUDRBV TO BUILD THE USER DIRECTORY PAGE LIST. 00255000
* 21. CHECK THAT THE LOC 80 TIMER IS RUNNING, IF NOT LOOP, 00256000
* WRITING A MSG TO THE SYSTEM CONSOLE UNTIL IT IS ENABLED. 00257000
* 22. IF THE CP ASSIST IS SET AVAILABLE VERIFY THAT IT MATCHES 00258000
* THIS LEVEL OF CP. IF NOT SEND ERROR MSG 185 AND SET THE 00259000
* CP ASSIST UNAVAILABLE. 00260000
* 23. IF TRYING TO RESTART AFTER A FAILURE, SKIP TO NEXT STEP TO 00261000
* PERFORM A WARM START. OTHERWISE, ASK THE OPERATOR WHETHER 00262000
* DO A COLD OR WARM START, DRAIN THE SPOOL DEVICES, OR SHUT 00263000
* THE SYSTEM DOWN. IF THE ANSWER IS SHUTDOWN WRITE SYSTEM 00264000
* SHUTDOWN MESSAGE AND LOAD A DISABLED WAIT STATE PSW. 00265000
* 24. CALL DMKWRM TO PERFORM EITHER WARM OR COLD START. 00266000
* 25. ATTEMPT TO ALLOCATE SYSTEM DUMP FILE, IF NOT ENOUGH 00267000
* CONTIGUOUS SPACE IS AVAILABLE, SEND OPERATOR A MESSAGE AND 00268000
* SKIP TO NEXT STEP; ELSE WRITE OUT THE DMKSYM MODULE AS THE 00269000
* FIRST RECORD OF THE DUMP FILE. 00270000
* 26. LOOP THRU OWNED VOLS COMPRESSING MAXI ALLOCBLOKS 00271000
* INTO MINI ALOCBLOKS. CALLS ARE MADE TO DMKFRET TO RETURN 00272000
* MAXI ALOCBLOKS, AND CALLS ARE MADE TO DMKFREE TO OBTAIN 00273000
* MINI ALOCBLOKS. 00274000
* 27. CALL DMKLOGOP TO AUTOLOG THE OPERATOR, IF THE AUTOMATIC 00275000
* LOGON FAILS, WRITE A MESSAGE ASKING THE OPERATOR TO LOGON. 00276000
* 28. IF ALL VOLUMES SPECIFIED IN THE OWNED LIST ARE MOUNTED, 00277000
* CONTINUE; OTHERWISE, WRITE A WARNING MESSAGE FOR EACH 00278000
* MESSAGE FOR EACH VOLUME NOT MOUNTED. WRITE ANY DUPLICATE 00279000
* VOLUME SERIAL MESSAGES. 00280000
* 29. IF THE REAL MACHINE SIZE IS DIFFERENT THAN THE SYS-GEN'D 00281000
* SIZE, WRITE A MSG GIVING THE STORAGE SIZE TO BE USED 00282000
* (LOWER OF REAL OR SYS-GEN). 00283000
* 30. WRITE DMKCPI957I MSG - A GENERAL STORAGE MAP IN KBYTES. 00284000
* 31. CALL DMKCQRFI TO WRITE SYSTEM FILES MESSAGE. 00285000
* 32. IF DRAIN WAS SPECIFIED BY THE OPERATOR IN RESPONSE TO 00286000
* THE START MESSAGE, SKIP TO NEXT STEP; OTHERWISE CALL 00287000
* DMKCSOSD TO START ALL SPOOLING DEVICES. 00288000
* 33. RESET THE END OF THE RESIDENT NUCLEUS TO DMKCPEND, 00289000
* CALL DMKHVDPP TO INITIALIZE THE PROGRAM PRODUCT BIT MAP, 00290000
* TRANS IN ALL PAGEABLE MODULES FROM SYSRES AND FORCE 00291000
* TO BACKING DEVICE. 00292000
* 34. CALL DMKIOEFL TO INITIALIZE THE I/O ERROR RECORDING, 00293000
* MACHINE CHECK HANDLER, AND CHANNEL CHECK HANDLER. 00294000
* 35. AUTO LOAD THE 370X'S. 00295000
* 36. IF THE SYSTEM WAS SYSGEN'D FOR AP SUPPORT AND WAS 00296000
* EQUIPPED WITH THE MULTIPROCESSING FEATURE, BUT THE 00297000
* APU WAS NOT ONLINE, ISSUE MESSAGE DMKCPI959W. 00298000
* 37. IF THE SYSTEM IS SYSGEN'D FOR AP SUPPORT (SYSCOR 00299000
* AP=YES) AND THE APU IS ONLINE, CALL DMKAPI AND 00300000
* DMKCLK TO COMPLETE THE NECESSARY PROCESSING TO 00301000
* SUPPORT THE APU. ISSUE MESSAGE DMKCPI958I. 00302000
* 38. SET INITIALIZATION COMPLETE IN THE PSA. 00303000
* 39. AUTO LOG THE USER DEFINED IN 'AUTOCOM'. 00304000
* 40. EXIT TO THE DISPATCHER TO AWAIT INTERRUPTS FROM 00305000
* TP LINES OR THE OPERATOR'S CONSOLE. 00306000
* 00307000
EJECT 00308000
* 00309000
* MESSAGES - 00310000
* 00311000
* DMKCPI185E CP ASSIST LEVEL XXXX NOT SUPPORTED - CP ASSIST 00312000
* DISABLED 00312500
* DMKCPI913I CP OWNED VOLID XXXXXX INVALID FOR 3330V 00313000
* DMKCPI950A AUTO LOGON FAILED; EXPLICIT LOGON REQUIRED 00314000
* DMKCPI951I CP VOLID XXXXXX NOT MOUNTED 00315000
* DMKCPI952I XXXK SYSTEM STORAGE 00316000
* DMKCPI953I UNABLE TO ALLOCATE SYSTEM AUTO DUMP 00317000
* DMKCPI954E DASD XXX VOLID XXXXXX NOT MOUNTED; DUPLICATE OF 00318000
* DASD XXX 00319000
* DMKCPI955W INSUFFICIENT STORAGE FOR VM/370 00320000
* DMKCPI957I STORAGE SIZE = NNNNN K, NUCLEUS = NNNNN K, HRC028DK 00321090
* DYNAMIC PAGING = NNNNN K, TRACE TABLE = NNNN K, HRC028DK 00321180
* FREE STORAGE = NNNN K, VIRTUAL=REAL = NNNNN K HRC028DK 00321270
* DMKCPI966I INITIALIZATION COMPLETE HRC028DK 00321360
* DMKCPI971I SYSTEM IS UNIPROCESSOR GENERATED HRC028DK 00321450
* DMKCPI971I SYSTEM IS ATTACHED PROCESSOR GENERATED HRC028DK 00321540
* DMKCPI971I SYSTEM IS MULTIPROCESSOR GENERATED HRC028DK 00321630
* DMKCPI960I SYSTEM WARM START DATA SAVED 00322000
* DMKCPI961W SYSTEM SHUTDOWN COMPLETE 00323000
* DMKCPI958I ATTACHED PROCESSOR NOW OPERATIONAL 00324000
* DMKCPI959W ATTACHED PROCESSOR NOT ONLINE 00325000
* 00326000
* DISABLED WAIT STATE ERROR CONDITIONS - 00327000
* 00328000
* 00B - MACHINE CHECK DURING SYSTEM INITIALIZATION 00329000
* 005 - UNABLE TO LOCATE AN OPERATOR CONSOLE 00330000
* 006 - SYSTEM SHUTDOWN COMPLETE 00331000
* 00D - REAL MACHINE TOO SMALL FOR VM/370 00332000
* 015 - SIGP ERROR 00333000
* 016 - CHANNEL SET SWITCHING ERROR 00333100
*. 00334000
EJECT 00335000
COPY OPTIONS 00336000
COPY LOCAL OPTIONS 00337000
SPACE 2 00338000
PUNCH 'SPB' TELL LOADER TO START AT NEXT PAGE BOUNDARY 00339000
DMKCPI CSECT 00340000
SPACE 1 00341000
DC CL8'DMKCPI' MODULE IDENTIFICATION 00342000
SPACE 2 00343000
USING PSA,R0 00344000
SPACE 00345000
EXTRN DMKPSADU,DMKSYSRM,DMKSYSRV,DMKCPEND,DMKPTRFN,DMKRIOCN 00346000
EXTRN DMKSYSTR @V60BCAB 00347000
EXTRN DMKSYSUS,DMKSYSUC HRC033DK 00347500
EXTRN DMKSYSIP HRC036DK 00347700
EXTRN DMKDSPNP,DMKFRELO,DMKFREHI,DMKPTRF1,DMKSYSOW,DMKCFMEN 00348000
EXTRN DMKSYSOC,DMKLOGOP,DMKSCNVS,DMKCVTBD,DMKFRETR @V408246 00349000
EXTRN DMKALGON,DMKUDRFU,DMKPAGST @V407595 00350000
EXTRN DMKQCNRD,DMKPSAEX,DMKPRGIN,DMKMCHIN,DMKIOTIN @VA09587 00351000
EXTRN DMKPGTP4,DMKPGTT4,DMKPGTP0,DMKPGTT0,DMKPGTP5,DMKPGTT5 00352000
EXTRN DMKPGT7P,DMKPGT7T,DMKPGT8P,DMKPGT8T HRC106DK 00352100
EXTRN DMKPGTTM,DMKWRMST,DMKSYMTB,DMKDMPSF,DMKSYSDU,DMKIOSQR 00353000
EXTRN DMKSYSER,DMKSYSWM,DMKSYSCH HRC075DK 00353500
EXTRN DMKDMPDV,DMKCQRFI,DMKSCNRD,DMKDMPRC @V200930 00354000
EXTRN DMKPTRFA,DMKFRESV @V200930 00355000
EXTRN DMKSYSUD,DMKUDRBV,DMKSAV,DMKBLDRT,DMKIOEFL @V408246 00356000
EXTRN DMKPTRCP @V408246 00357000
EXTRN DMKSYSVL,DMKSYSNU,DMKCSOSD,DMKDMPAU 00358000
EXTRN DMKPTRUL @V200720 00359000
EXTRN DMKSCHQ1,DMKSCHQ2 00360000
EXTRN DMKSYSTZ,DMKSYSDW,DMKSYSTI,DMKCVTDT,DMKSCHMD,DMKSCHST 00361000
EXTRN DMKSYSIC,DMKSYSID,DMKSYSIL,DMKGRTID HRC108DK 00361100
EXTRN DMKSCHTI,DMKSCHLI @V2B2638 00362000
EXTRN DMKPGT90,DMKPGTTU,DMKPGT4P,DMKPGT4T @V2A2029 00363000
EXTRN DMKPGT5P,DMKPGT5T @V304498 00364000
EXTRN DMKCPEID 00365000
EXTRN DMKSLC @VA01682 00366000
EXTRN DMKSCNRU @VA01097 00367000
EXTRN DMKCPVAE,DMKCVTBH,DMKCNSEN,DMKNETAE @V2D3931 00368000
EXTRN DMKRIORN,DMKNLDR @V200820 00369000
EXTRN DMKCKP,DMKPGTBN @VA00919 00370000
EXTRN DMKSYSFP @V396414 00371000
EXTRN DMKPAGHI,DMKPAGLO @V407595 00372000
EXTRN DMKFRELG EXTERNAL-NAME FOR "LRGSTSIZ" IN DMKFRE 00373000
* (UNDEFINED IF NO STATISTICS IN DMKFRE) 00374000
EXTRN DMKPGTPG,DMKRPAPT,DMKVMI,DMKSYM @VA03106 00375000
EXTRN DMKCPEML,DMKPTRRM @V3M4026 00376000
EXTRN DMKIOSMQ MINI IOB QUEUE @V407438 00377000
EXTRN DMKSCNRA @V407438 00378000
AIF (NOT &AP).CLKCK4 00379000
EXTRN DMKCLKCK @V407595 00380000
EXTRN DMKAPIPR @V407595 00381000
.CLKCK4 ANOP 00382000
EXTRN DMKPTRSN @VA08341 00382100
EXTRN DMKSYSAT,DMKSYSUR,DMKSYSTS,DMKSYSTE,DMKMNIST @VMD0138 00383000
EXTRN DMKSVCIN @V407595 00384000
EXTRN DMKHVDPP INITIALIZATION FOR PP BIT MAP @VMD0161 00385000
SPACE 00386000
SAVNUMBR EQU 15 *** NUMBER OF SAVE-AREAS TO GIVE TO DMKPSASV *** 00387000
* (USUALLY ENOUGH AS DETERMINED EMPIRICALLY) 00388000
SPACE 00389000
* THE FOLLOWING 'RETRYNUM' VALUE IS DESIGNED TO CAUSE A 00390000
* DELAY OF NO MORE THAN 3 SECONDS PER DEVICE. IF THE I/O 00391000
* IS STILL BUSY AFTER 3 SECONDS THEN IT PROBABLY IS NOT 00392000
* REASONABLE TO WASTE ANY MORE TIME ON IT SINCE MORE TIME 00393000
* MOST LIKELY WOULD NOT CURE THE SITUATION. 00394000
SPACE 00395000
RETRYNUM EQU 3000/50 3000MS (3 SEC)/50MS DELAY EACH 00396000
SPACE 00397000
MIOBNUM EQU 15 NUMBER OF MINI IOB'S USED BY IOS @V407438 00398000
SPACE 00399000
SPACE 2 00400000
MAXALLOC EQU 2656 Max size of the allocation data HRC106DK 00401100
* from disk (1 byte per cylinder) HRC106DK 00402100
YES EQU C'Y' @V407595 00403000
N0 EQU 0 @V407595 00404000
N1 EQU 1 @V407595 00405000
N2 EQU 2 @V407595 00406000
L2 EQU 2 @V407595 00407000
N4 EQU 4 @V407595 00408000
N7 EQU 7 @V407595 00409000
N8 EQU 8 @V407595 00410000
L8 EQU 8 @V407595 00411000
N12 EQU 12 @V407595 00412000
N16 EQU 16 @V407595 00413000
N63 EQU 63 HIGHEST VALID PROCESSOR ADDR @V407595 00414000
FF EQU X'FF' @V407595 00415000
LOGICADR EQU X'40' COMPUTE LOGICAL PROCESSOR ADDR @V407595 00416000
CONDCODE EQU X'08' TO STCM CONDITION CODE IN PSW @V407595 00417000
SENRETCT EQU X'100' SENSE RETRY COUNT @VA11565 00417500
EJECT 00418000
ENTRY DMKCPINT 00419000
DMKCPINT DS 0H 00420000
USING DMKCPINT,R12,R13 00421000
SPACE 1 00422000
* ESTABLISH ADDRESSABILITY FOR SECOND BASE REGISTER 00423000
LA R13,X'FFF' 00424000
LA R13,1(R13,R12) 00425000
SPACE 2 00426000
* INITIALIZE LOW CORE 00427000
MVC EXNPSW(5*8),CPIPSWS SET UP NEW PSWS 00428000
MVC IPLPSW(8),RESTPSW MOVE IN RESTART PSW 00429000
XC IPLCCW1(TIMER+8-IPLCCW1),IPLCCW1 CLEAR 00430000
LA R2,CPULOG ADDRESS OF AREA TO CLEAR 00431000
LA R3,PSENDCLR ADDRESS OF 1ST BYTE PAST CLEAR AREA 00432000
SR R3,R2 GET NUMBER OF BYTES TO CLEAR 00433000
SR R5,R5 SET ZERO LENGTH AND PAD FOR MOVE 00434000
MVCL R2,R4 CLEAR LOW CORE 00435000
LA R2,PSBCLR2 START OF 2ND AREA TO CLEAR @V407595 00436000
LA R3,PSECLR2-PSBCLR2 NUMBER OF BYTES TO CLEAR @V407595 00437000
MVCL R2,R4 CLEAR STORAGE AREA @V407595 00438000
OI APSTAT1,PROCIO+PROCIPL INDICATE THIS PROCESSOR @V60B7AA 00439100
* HAS I/O CAPABILITY AND IS IPL PROCESSOR 00440100
MVI CPIFLAG1,N0 CLEAR INTERNAL FLAGS @V407595 00441000
SR R0,R0 LOAD ZEROES @V407595 00442000
STH R0,IPUADDR ENSURE ZEROES FOR LPUADDR BELOW @V407595 00443000
NI PSAMSS,X'FF'-MSSPRES SET MSS FLAG OFF @V60B6B8 00444000
** ** FLAG TURNED ON WHEN MSS VS MACHINE OPERATIONAL ** 00445000
OI CPSTATUS,CPSUPER INDICATE SUPERVISOR STATE. @V407595 00446000
* THIS WILL CAUSE WAIT STATE SHOULD@V407595 00447000
* MACHINE CHECK OR MFA OCCUR @V407595 00448000
* DURING DMKCPI PROCESSING. @V407595 00449000
MVI CPSTATUS,CPWAIT INDICATE CP IS IDLE 00450000
STH R10,SYSIPLDV SAVE UNIT ADDRESS OF IPL'ED DEVICE 00451000
L R15,CPIDMPSD ADDRESS TO STORE IPL DEVICE @V407595 00452000
STH R10,0(,R15) ALSO SAVE FOR DMKDMP @V407595 00453000
MVC PROBTIME(8),=X'7FFFFFFFFFFFF000' INITIALIZE PSA FIELD 00454000
MVC IDLEWAIT(8),=X'7FFFFFFFFFFFF000' ... 00455000
MVC PAGEWAIT(8),=X'7FFFFFFFFFFFF000' ... 00456000
MVC IONTWAIT(8),=X'7FFFFFFFFFFFF000' ... 00457000
LA R0,VMTTIME-VMBLOK(,R0) DISPLACEMENT SUP TIMER @V4M0203 00458000
ST R0,TIMEDISP SAVE DISP FOR TIMER UPDATES @V4M0203 00459000
SPACE 2 00460000
LCTL C0,C14,CTLREGS INITIALIZE CONTROL REGISTERS 00461000
SCKC FFS INITIALIZE T.O.D. CLOCK COMPARATOR 00462000
SPT PROBTIME INITIALIZE SYSTEM CPU TIMER 00463000
STIDP CPUID STORE REAL CPU IDENTIFIER 00464000
CLI CPUID,FF ARE WE RUNNING UDER VM/370 ? @VMH0034 00465000
BNE INITREAL NO BRANCH @VA11615 00466020
LA R1,8 SET DIAGNOSE REG @VA11615 00466030
DC X'83120048' DIAG 48 TO SET VIRTUAL BIT @VA11615 00466040
B CPIPINTA INIT IN UNIPROCESSOR ONLY @VA11615 00466050
INITREAL DS 0H @VA11615 00466060
SPACE 2 00467000
* HERE TO STORE CPU ADDRESS 00468000
LA R1,CPIPINTA SET UP PROGRAM CHECK ADDRESS @V213135 00469000
ST R1,PRNPSW+4 IN CASE WE ARE ON A UNIPROCESSOR @V213135 00470000
STAP IPUADDR ATTEMPT TO STORE PROCCESSOR @V213135 00471000
* UNIT ADDRESS 00472000
OI APSTAT1,MPFEAT INDICATE PRESENCE OF MP HARDWARE @V5BC0AB 00473000
L R2,CPIDMPMA ADDRESS TO STORE IPUADDR FOR DUMP@V407595 00474000
MVC 0(L2,R2),IPUADDR SAVE MAIN ADDRESS FOR DMKDMP @V407595 00475000
L R2,CPIDMPAA ADDRESS TO STORE IPUADDRX FOR @V4M0124 00476000
* DUMP. NOTE IF RUNNING IN UP MODE 00477000
* DMKDMPMA AND DMKDMPAA SHOULD CONTAIN 00478000
* THE SAME PROCESSOR ADDRESS. 00479000
MVC 0(L2,R2),IPUADDR DMKDMPMA/AA SAME IN UP MODE. @V4M0124 00480000
AIF (NOT &AP).APCHK4 00481000
L R2,CPISYSAP EST. ADDRESSIBILITY TO DMKSYSAP @V407595 00482000
CLI N0(R2),YES IS SYSTEM GEN'D FOR ATTACHED @V407595 00483000
* PROCESSOR SUPPORT (SYSCOR AP=YES)@V407595 00484000
BNE CPIPINTB NO - CONTINUE WITHOUT AN APU @V4M0206 00485000
SPACE 00485020
LA R2,SENRETCT LOAD LOOP CONTROL FOR SIO @VA11565 00485041
LA R5,CPINOCSS GET ADDRESS OF CPINOCSS @V60B7AB 00485060
ST R5,PRNPSW+4 SET UP PROGRAM CHECK ADDRESS @V60B7AB 00485080
LH R15,SYSIPLDV GET ADDRESS OF IPL DEVICE @VMV0001 00485100
LA R5,CPICCW1 GET ADDRESS OF SENSE CCW @V60B7AB 00485120
ST R5,CAW STORE ADDRESS OF SENSE CCW @V60B7AB 00485140
LA R5,N63 HIGHEST CHANNEL ADDRESS, X'003F' @V60B7AB 00485160
L R1,FFS PUT A NEGATIVE 1 IN REGISTER 1 @V60B7AB 00485180
* THE NEXT INSTRUCTION INCREMENTS 00485200
* R1 BY 1. CHANNEL SET ADDRESS 0 00485220
* WILL BE ATTEMPTED FIRST 00485240
CSSAVAIL DS 0H @V60B7AB 00485260
LA R1,1(0,R1) INCREMENT CHANNEL ADDRESS BY ONE @V60B7AB 00485280
SPACE 00485300
* CONCS 0(R1) CONNECT THIS CHANNEL SET @V60B7AB 00485320
DC X'B2001000' @V60B7AB 00485340
SPACE 00485360
BZ SENSEIPL BRANCH, IF CONNECT SUCCESSFUL @V60B7AB 00485380
CLR R5,R1 TRIED ALL CHANNEL SET ADDRESSES? @V60B7AB 00485400
BNE CSSAVAIL NO, BRANCH @V60B7AB 00485420
B WAITCHER GO LOAD A WAIT STATE @V60B7AB 00485440
SENSEIPL DS 0H @V60B7AB 00485460
SIO 0(R15) DO SENSE TO THE IPL DEVICE @V60B7AB 00485480
BZ CHKSENSE BRANCH ON CONDITION CODE 0 @V60B7AB 00485500
* (SUCCESSFUL) 00485520
BC 1,NEXTADDR BRANCH ON CONDITION CODE 3 @V60B7AB 00485540
* (NOT OPERATIONAL) 00485560
BC 2,SENSEIPL LOOP ON CONDITION CODE 2 @V60B7AB 00485580
* (SUBCHANNEL BUSY) 00485600
* HERE ON CONDITION CODE 1 (CSW STORED) 00485620
TM CSW+4,UC UNIT CHECK? @V60B7AB 00485640
BO TRYSIO YES, BRANCH @V60B7AB 00485660
TM CSW+5,CCC+IFCC PERMANENT ERRORS? @V60B7AB 00485680
BO NEXTADDR YES, BRANCH @V60B7AB 00485700
TRYSIO DS 0H @V60B7AB 00485720
BCT R2,SENSEIPL TRY SIO 16 TIMES @V60B7AB 00485740
LA R2,SENRETCT LOAD LOOP CONTROL FOR SIO @VA11565 00485761
B NEXTADDR PERMANENT ERRORS, TRY NEXT ADDR. @V60B7AB 00485780
CHKSENSE DS 0H @V60B7AB 00485800
TM CPISNS,INTREQ IS IPL DEVICE ACCESSIBLE? @V60B7AB 00485820
BNO SETCSSON YES, BRANCH @V60B7AB 00485840
NEXTADDR DS 0H @V60B7AB 00485860
MVI CPISNS,00 CLEAR FIRST BYTE OF SENSE DATA @V60B7AB 00485880
CLR R5,R1 TRIED ALL CHANNEL SET ADDRESSES? @V60B7AB 00485900
BNE CSSAVAIL NO, BRANCH @V60B7AB 00485920
SPACE 00485940
WAITCHER LPSW XWAITCSS LOAD WAIT STATE CODE X'016' @V60B7AB 00485960
SPACE 00485980
SETCSSON DS 0H @V60B7AB 00486000
OI APSTAT1,CSSFEAT INDICATE CHANNEL SET SWITCHING @V60B7AB 00486020
* FACILITY IS AVAILABLE 00486040
STH R1,CSADDR SAVE CHANNEL SET ADDRESS @V60B7AB 00486060
XC CPISNS,CPISNS CLEAR DATA AREA HRC011DK 00486090
CPINOCSS DS 0H @V60B7AB 00486100
LA R5,N63 HIGHEST VALID PROCESSOR ADDRESS @V407595 00487000
LA R4,N1 INCREMENT FOR BXLE @V407595 00488000
SR R2,R2 CURRENT PROCESSOR ADDRESS IN @V407595 00489000
* BXLE LOOP. @V407595 00490000
APCHKADR EQU * CHECK ADDR OF APU FOR VALIDITY @V407595 00491000
CH R2,IPUADDR IS THIS THE PROCESSOR NOW ACTIVE @V407595 00492000
BE APNXTADR YES - THIS IS ADDRESS OF MAIN - @V407595 00493000
* CONTINUE LOOP TO LOCATE ADDR OF APU 00494000
* 00495000
* NO - DETERMINE IF THIS PROCESSOR IS 00496000
* ACTIVE @V407595 00497000
SR R1,R1 CLEAR SIGP STATUS REGISTER @V407595 00498000
LA R0,SIGIPR SAVE SIGP ORDER IN CASE OF ERROR @V407595 00499000
APIPR EQU * @V407595 00500000
SIGP R1,R2,SIGIPR ISSUE INITIAL PROGRAM RESET @V407595 00501000
BC 8,APADDROK IPR STARTED SUCCESSFULLY (CC=0). @V407595 00502000
* THIS IS ADDRESS OF APU. @V407595 00503000
BC 2,APIPR CC=2 (BUSY) SHOULD NOT BE @V407595 00504000
* RECEIVED. BUT IF IT IS- LOOP. @V407595 00505000
BC 1,APNXTADR CC=3 (PROCESSOR NOT OPER)- SETUP @V407595 00506000
* TO SIGP THE NEXT PROCESSOR ADDR @V407595 00507000
* CC=1 (STATUS STORED) IS ERROR @V407595 00508000
APERROR EQU * SIGP ERROR- LOAD WAIT STATE PSW @V407595 00509000
BALR R15,0 SET CONDITION CODE IN REG @V407595 00510000
APERROR1 EQU * CC HAS BEEN SET IN R15 @V407595 00511000
STCM R15,CONDCODE,XWAIT4+N4 STORE CC IN WAIT PSW @V407595 00512000
* NOTE PSW IS IN BC MODE. @V407595 00513000
LPSW XWAIT4 LOAD WAIT STATE CODE. @V407595 00514000
APADDROK EQU * LOOP UNTIL IPR COMPLETES @V407595 00515000
LCTL C0,C0,MFAONLY ENABLE FOR MFA EXT INTERRUPTS @V407595 00516000
* IN WINDOW BELOW. @V407595 00517000
LA R14,100 WINDOW CONTROL COUNTER @V407595 00518000
APSENSE EQU * @V407595 00519000
LA R0,SIGSENSE SAVE SIGP ORDER IN CASE OF ERROR @V407595 00520000
SIGP R1,R2,SIGSENSE ISSUE SENSE @V407595 00521000
BC 8,APIPRCOM CC=0 IPR COMPLETE @V407595 00522000
BC 4,APCHSTAT CC=1 (STATUS STORED) CHK STATUS @V407595 00523000
BC 1,APERROR CC=3 (NOT OPER) PROCESS AS ERROR @V407595 00524000
BCT R14,APSENSE CC=2 (BUSY) - LOOP @V407595 00525000
STOSM SYSMASK,EXTMASK ENABLE FOR EXTERNAL INTERRUPTS @V407595 00526000
STNSM SYSMASK,FF-EXTMASK CLOSE WINDOW @V407595 00527000
B APADDROK CONTINUE UNTIL IPR COMPLETES @V407595 00528000
APCHSTAT EQU * @V407595 00529000
BALR R15,0 SAVE CC IN CASE OF ERROR @V407595 00530000
C R1,STOPPED APU IN STOPPED STATE ONLY @V407595 00531000
BE APIPRCOM YES- APU ENTERS STOPPED STATE @V407595 00532000
* FOLLOWING SUCCESSFUL EXECUTION OF@V407595 00533000
* OF INITIAL PROGRAM RESET. @V407595 00534000
B APERROR1 ANTHING OTHER THAN 'STOP' IS @V407595 00535000
* ERROR. @V407595 00536000
APIPRCOM EQU * @V407595 00537000
LCTL C0,C0,CTLREGS RESTORE ORIGINAL CONTROL REG 0 @V407595 00538000
STH R2,IPUADDRX SAVE THE PHYSICAL PROCESSOR ADDR @V407595 00539000
* OF THE APU SINCE THE IPR IS NOW @V407595 00540000
* COMPLETE. @V407595 00541000
L R15,CPIDMPAA ADDRESS TO STORE IPUADDRX FOR @V407595 00542000
* DUMP @V407595 00543000
STH R2,0(,R15) SAVE IPUADDRX FOR DUMP @V407595 00544000
STH R2,LPUADDRX SETUP TO STORE THE LOGICAL ADDR @V407595 00545000
OI LPUADDRX+N1,LOGICADR NOW IS LOGICAL PROC ADDR @V407595 00546000
OI CPIFLAG1,CPIAP INDICATE THE APU IS AVAILABLE @V407595 00547000
* FOR DMKCPI PROCESSING. @V407595 00548000
B CPIPINTB CONTINUE WITH SYSTEM INIT @V4M0206 00549000
APNXTADR EQU * ISSUE IPR TO EACH VALID @V407595 00550000
* PROCESSOR ADDRESS. @V407595 00551000
* R5 CONTAINS THE HIGHEST POSSIBLE PROCESSOR ADDRESS, X'003F'. 00552100
BXLE R2,R4,APCHKADR UNTIL ONE IS FOUND ONLINE. @V407595 00553000
OI CPIFLAG1,CPIAPOFF INDICATE THE APU WAS REQUESTED@V4M0206 00554000
* BUT IS OFFLINE. THIS INTERNAL BIT 00555000
* WILL BE USED TO ISSUE MSG 959W. @V4M0206 00556000
.APCHK4 ANOP 00557000
CPIPINTA DS 0H HERE VIA INTERRUPT IF STAP @V4M0206 00558000
* FAILS - IPUADDR = 0 @V4M0206 00559000
L R2,CPISYSAP EST. ADDRESSIBILITY TO DMKSYSAP @V4M0206 00560000
CLI N0(R2),YES IS SYSTEM GEN'D FOR ATTACHED @V4M0206 00561000
* PROCESSOR SUPPORT (SYSCOR AP=YES)@V4M0206 00562000
BNE CPIPINTB NO, DON'T WORRY ABOUT FLAGS @V4M0206 00563000
OI APSTAT1,APUNONLN INDICATE THAT APU WAS @V4M0206 00564000
* REQUESTED (SYSCOR AP=YES) BUT A UNIT WAS 00565000
* NOT ONLINE. 00566000
CPIPINTB DS 0H @V4M0206 00567000
LH R2,IPUADDR OBTAIN PHYSICAL CPU ADDRESS @V407595 00568000
STH R2,LPUADDR AND STORE IN PSA @V407595 00569000
OI LPUADDR+N1,LOGICADR MAKE IT THE LOGICAL ADDRESS @V407595 00570000
MVC PRNPSW(8),CPIPSWS+2*8 RESTORE PROGRAM NEW PSW @V213135 00571000
SPACE 2 00572000
* INITIALIZE DISPATCHER TIME SLICES BASED ON CPU MODEL 00573000
ICM R0,B'0011',CPUMODEL GET OUR MODEL NUMBER 00574000
LM R1,R3,=A(TS135,22,TS3032) INIT. TABLE LOOK- UP @V5088AB 00575000
TSLOOP CLM R0,B'0011',0(R1) GOT THE RIGHT BOX ? 00576000
BE SETSLICE YES -- GO SET UP TIME SLICE 00577000
BXLE R1,R2,TSLOOP NOT YET - KEEP LOOKING 00578000
B SLICEOK UNRECOGNIZABLE MODEL -- 00579000
SPACE 00580000
SETSLICE L R15,=A(DMKSCHQ1) POINT TO DISPATCH TIME SLICE FIELD 00581000
MVC 0(8,R15),2(R1) INITIALIZE Q1 00582000
L R15,=A(DMKSCHQ2) POINT TO Q2 FIELD 00583000
MVC 0(8,R15),10(R1) AND INITIALIZE Q2 00584000
MVC WAITCNT(4),18(R1) LOAD COUNT FOR THIS PROCESSOR @VA05431 00585000
EJECT 00587000
SLICEOK EQU * CALCULATE MAIN STORAGE SIZE & SAVE 00588000
LA R1,CPIPINT SET PROGRAM NEW PSW FOR ADDRESSING CK 00589000
ST R1,PRNPSW+4 ... 00590000
SR R5,R5 START AT CORE BOTTOM 00591000
LR R2,R5 WITH ZERO KEY 00592000
KEYLOOP SSK R2,R5 AND SET STORAGE KEYS 00593000
LA R5,2048(,R5) ONE BY ONE 00594000
LTR R5,R5 DID STORAGE WRAP AT 16 MEG 00595000
BNZ KEYLOOP NO- BRANCH 00596000
L R5,=X'01000000' SET TO 16 MEG 00597000
LPSW PRNPSW LOAD EC PSW @VA12591 00597500
SPACE 2 00598000
CPIPINT EQU * HERE WHEN PROGRAM INTERRUPT OCCURS @VA03799 00599000
MVC PRNPSW(8),CPIPSWS+2*8 RESTORE PROGRAM INT. NEW PSW 00600000
XC PROPSW(8),PROPSW CLEAR PROGRAM INT. OLD PSW 00601000
L R3,=A(DMKSYSRM) GET LOCATION WHERE REAL SIZE IS KEPT 00602000
ST R5,0(,R3) SAVE REAL MACHINE SIZE 00603000
SPACE 2 00604000
L R3,=A(DMKPTRRM) SAVE STORAGE SIZE IN DMKPTR @V386198 00605000
ST R5,0(,R3) FOR USE BY THE CP ASSIST @V386198 00606000
OI CPCREG6,X'02' SET CP ASSIST ENABLE MASK ON @V386198 00607000
LCTL C6,C6,CPCREG6 ENABLE CP ASSIST FEATURE @V386198 00608000
LA R2,CPIPINT2 SET FOR POSSIBLE PROGRAM CHECK @V386198 00609000
ST R2,PRNPSW+4 - IF CP ASSIST NOT ON CPU @V386198 00610000
MVI PSAEVMA,MICLPSW+MICPTLB+MICSCSP+MICSIO+MICSTSM+MICSTPT+M*00610200
ICTCH ENABLE ALL EVMA EXCEPT DIAG ASSIST @VA14280 00610400
* NOTE DIAG NOT ENABLED BECAUSE NOT SUPPORTED IN RELEASE 6 SCP 00610600
L R3,=A(DMKCPEML) LOCATION TO SAVE LEVEL NUMBER @V3M4026 00611000
DS 0H ISSUE 'ST CP ASSIST LEVEL' INST. @V3M4026 00612000
DC X'E612',S(0(R3),0) CP ASSIST FEATURE PRESENT? @V3M4026 00613000
OI CPSTAT2,CPASTAVL+CPASTON (CHECK LEVEL LATER) @V386198 00614000
LCTL C6,C6,ZEROES NO CP ASSIST UNTIL IPL COMPLETE @V386198 00615000
****************************************************************** 00616000
* * 00616010
* CHECK OUT LEVEL OF CP ASSIST AND TAKE ACTION AS FOLLOWS: * 00616020
* * 00616030
* BELOW LEVEL 18: DISABLE CP ASSIST * 00616040
* * 00616050
* LEVEL 18 OR 19: USE CP ASSIST, BUT MODIFY FREE/FRET AND * 00616060
* DISABLE TCH ASSIST * 00616070
* * 00616080
* LEVEL 20: USE CP ASSIST * 00616090
* * 00616100
* ABOVE LEVEL 20: DISABLE CP ASSIST * 00616110
* * 00616120
****************************************************************** 00616130
SPACE , 00616140
CLC F20,0(R3) CHECK FOR LEVEL 20 ASSIST @VA14280 00616150
BL CPIPINT3 GREATER THAN 20... DON'T USE IT @VA14280 00616160
BE CPINTFRE ASSIST IS LEVEL 20. GOOD, USE IT @VA14280 00616170
CLC F18,0(R3) CHECK FOR LEVEL 18 OR 19 ASSIST @VA14280 00616180
BH CPIPINT3 LESS THAN 18... DON'T USE IT @VA14280 00616190
* 00616200
* ASSIST LEVEL 18 OR 19... MUST CHANGE FREEX/FRETX INSTRUCTIONS BACK 00616210
* TO REGULAR FREE/FRET, AND ADJUST FIRST OPERAND LOCATION. 00616220
* 00616230
L R15,CPATFREE ADDRESS OF DMKFREE INSTRUCTION @VA14280 00616240
MVI OP1(R15),OLDFREE RESTORE OLD DMKFREE OPCODE @VA14280 00616250
LH R14,OP2(,R15) GET S(MAXSIZE) @VA14280 00616260
AL R14,F4 POINT IT TO S(SUBTABLE) @VA14280 00616270
STH R14,OP2(,R15) STORE IT BACK @VA14280 00616280
L R15,CPATFRET ADDRESS OF DMKFRET INSTRUCTION @VA14280 00616290
MVI OP1(R15),OLDFRET RESTORE OLD DMKFRET OPCODE @VA14280 00616300
LH R14,OP2(,R15) GET S(MAXSIZE) @VA14280 00616310
AL R14,F4 POINT IT TO S(SUBTABLE) @VA14280 00616320
STH R14,OP2(,R15) STORE IT BACK @VA14280 00616330
* 00616340
* ASSIST LEVEL 18 OR 19... MUST CHANGE OPERANDS OF DSP2 AND UNTFR 00616350
* INSTRUCTIONS TO POINT TO SUBTABLE INSTEAD OF MAXSIZE. 00616360
* 00616370
L R15,ADSPRQ POINT TO DSP2 DATA LIST @VA14280 00616380
L R14,DSPRQD(,R15) GET POINTER TO MAXSIZE @VA14280 00616390
AL R14,F4 INCREMENT, POINT TO SUBTABLE @VA14280 00616400
ST R14,DSPRQD(,R15) PUT IT BACK @VA14280 00616410
L R15,AUNTF1 POINT TO UNTFR DATA LIST @VA14280 00616420
L R14,UNTF1D(,R15) GET POINTER TO MAXSIZE @VA14280 00616430
AL R14,F4 INCREMENT, POINT TO SUBTABLE @VA14280 00616440
ST R14,UNTF1D(,R15) PUT IT BACK @VA14280 00616450
* 00616460
* ASSIST LEVEL 18 OR 19... MUST DISABLE TEST CHANNEL (TCH) ASSIST 00616470
* BECAUSE IT DOESN'T MATCH THE SOFTWARE. 00616480
* 00616490
NI PSAEVMA,255-MICTCH DISABLE TCH ASSIST @VA14280 00616500
B CPINTFRE CONTINUE... USE ASSISTS @VA14280 00616510
SPACE , 00616520
F18 DC F'18' USED TO CHECK CP ASSIST LEVEL @VA14280 00616530
ADSPRQ DC V(DMKDSPRQ) ADDRESS OF DSP2 ASSIST DATA LIST @VA14280 00616540
DSPRQD EQU 28 DISP TO MAXSIZE POINTER @VA14280 00616550
AUNTF1 DC V(DMKUNTF1) ADDRESS OF UNTFR ASSIST DATA LIST@VA14280 00616560
UNTF1D EQU 4 DISP TO MAXSIZE POINTER @VA14280 00616570
OLDFREE EQU X'00' 2ND BYTE OF OLD 'FREE' OPCODE @VA14280 00616580
OLDFRET EQU X'01' 2ND BYTE OF OLD 'FRET' OPCODE @VA14280 00616590
OP1 EQU 1 DISPLACEMENT TO 2ND OPCODE BYTE @VA14280 00616600
OP2 EQU 2 DISPLACEMENT TO FIRST OPERAND @VA14280 00616610
SPACE , 00616620
CPIPINT3 DS 0H HERE IF CP ASSIST ON CPU, BUT @VA14280*00616630
WRONG LEVEL @VA14280 00616640
NI CPSTAT2,255-CPASTON SET FLAG, WILL SEND @VA14280*00616650
MESSAGE LATER @VA14280 00616660
SPACE 00617000
CPIPINT2 EQU * HERE IF CP ASSIST NOT ON THE CPU @V386198 00618000
MVC CPCREG6,ZEROES CLEAR CP ASSIST ENABLE FLAG @V386198 00619000
LA R3,CPATABLE POINT TO LIST OF CP ASSIST ADDRS @V386198 00621000
LA R4,4 TABLE INCREMENT @V386198 00622000
LA R5,CPATBLND ADDRESS OF END OF TABLE @V386198 00623000
CLEARCPA L R6,0(,R3) GET CP ASSIST INSTRUCTION ADDR. @V386198 00624000
MVC 0(6,R6),=X'0700,47000000' - AND REMOVE IT @V386198 00625000
BXLE R3,R4,CLEARCPA @V386198 00626000
CPINTFRE MVC PRNPSW(8),CPIPSWS+2*8 RESTORE PROGRAM NEW PSW @V386198 00627000
AIF (NOT &FRETRAP).NOFTRAP HRC035DK 00627050
SPACE , HRC035DK 00627100
*--------------------------------------------------------------HRC035DK 00627150
* REPLACE CP ASSIST INSTRUCTIONS DSP1, DSP2, UNTFR, FREEX ANDHRC035DK 00627200
* FRETX WITH NO-OPS. HRC035DK 00627250
*--------------------------------------------------------------HRC035DK 00627300
SPACE , HRC035DK 00627350
L R6,CPATDSP1 GET CP ASSIST INSTRUCTION DSP1 HRC035DK 00627400
MVC 0(6,R6),NOOP NO-OP THE MICROCODE INSTRUCTION HRC035DK 00627450
L R6,CPATDSP2 GET CP ASSIST INSTRUCTION DSP2 HRC035DK 00627500
MVC 0(6,R6),NOOP NO-OP THE MICROCODE INSTRUCTION HRC035DK 00627550
L R6,CPATUNTF GET CP ASSIST INSTRUCTION UNTFR HRC035DK 00627600
MVC 0(6,R6),NOOP NO-OP THE MICROCODE INSTRUCTION HRC035DK 00627650
L R6,CPATFREE GET CP ASSIST INSTRUCTION FREEX HRC035DK 00627700
MVC 0(6,R6),NOOP NO-OP THE MICROCODE INSTRUCTION HRC035DK 00627750
L R6,CPATFRET GET CP ASSIST INSTRUCTION FRETX HRC035DK 00627800
MVC 0(6,R6),NOOP NO-OP THE MICROCODE INSTRUCTION HRC035DK 00627850
.NOFTRAP ANOP HRC035DK 00627900
EJECT 00628000
* INITIALIZE FREE STORAGE SECTION OF CORTABLE 00629000
L R4,=F'-16' 00630000
L R3,=A(DMKSYSRV) GET SYSGEN SPECIFIED MEMORY SIZE 00631000
L R3,0(,R3) ... 00632000
LR R11,R3 SAVE GEND SIZE FOR LATER CALC @V396414 00633000
LA R8,4095 ..... @V396414 00634000
ALR R3,R8 ROUND TO NEXT HIGHEST PAGE @V396414 00635000
SRL R3,12 GET PAGE NUMBER 00636000
BCTR R3,0 DECREMENT BY 1 00637000
SLL R3,4 *16 00638000
A R3,ACORETBL GET CORTABLE ENTRY 00639000
USING CORTABLE,R3 00640000
L R5,=A(DMKSYSRM) GET REAL MEMORY SIZE 00641000
L R5,0(,R5) ... 00642000
LR R6,R5 SAVE REAL SIZE FOR LATER CALC @V396414 00643000
ALR R5,R8 ROUND TO NEXT HIGHEST PAGE @V396414 00644000
SRL R5,12 GET PAGE NUMBER 00645000
BCTR R5,0 DECREMENT BY 1 00646000
SLL R5,4 *16 00647000
A R5,ACORETBL GET CORTABLE ENTRY 00648000
CR R3,R5 IS ALL OF MEMORY AVAILABLE? 00649000
BNH NOOFFLNE YES 00650000
OFFLOOP MVC CORFPNT,=C'*OL*' FLAG PAGE AS OFFLINE 00651000
BXH R3,R4,OFFLOOP 00652000
SPACE 2 00653000
NOOFFLNE DS 0H @VA01774 00654000
CR R6,R11 REAL CORE > SYSGEN CORE ? @V396414 00655000
BL USERM NO, USE REAL STORAGE SIZE @V396414 00656000
LR R6,R11 YES, USE GEND SIZE @V396414 00657000
SPACE 1 00658000
USERM ST R6,SAVSTOR SAVE STOR SIZE FOR LATER @V396414 00659000
AIF (NOT &AP).APCHK5 00660000
TM CPIFLAG1,CPIAP IS THE APU OPERATIONAL FOR CPI @V407595 00661000
BNO APNOPREF NO - BYPASS INIT OF PREFIX AREA @V407595 00662000
* 00663000
* YES - SETUP THE PREFIX STORAGE AREA 00664000
* USING THE TOP 2 FRAMES OF STORAGE 00665000
* 00666000
LR R5,R3 LOCATE CORE TABLE ENTRY FOR @V407595 00667000
* HIGHEST REAL STORAGE FRAME TO BE USED BY 00668000
* DMKCPI. 00669000
SH R5,H32 POINT TO 1ST CORE TABLE ENTRY @V407595 00670000
* BELOW THE PREFIX AREA. 00671000
L R1,CPIDMPSA GET PTR TO PSA ADDRESSES @V5BC0AB 00672000
LR R7,R6 LOAD REAL STORAGE SIZE @V407595 00673000
APPREFIX EQU * @V407595 00674000
S R7,F4096 COMPUTE ADDRESS OF PREFIX AREA @V407595 00675000
ST R7,0(,R1) STORE A PSA ADDRESS @V5BC0AB 00676000
LA R1,N4(R1) INCREMENT INDEX TO PREFIXB @V407595 00677000
MVC CORFPNT,ASYSVM INDICATE SYSTEM FRAME @V407595 00678000
MVI CORFLAG,CORCP DITTO @V407595 00679000
BXH R3,R4,APPREFIX PROCESS BOTH PSA'S @V407595 00680000
APNOPREF EQU * @V407595 00681000
.APCHK5 ANOP 00682000
L R5,CPISYSFP GET PTR TO FREE PAGES SPECIFIED @V407595 00683000
L R5,N0(,R5) GET FREE PAGES SPECIFIED ON @V407595 00684000
* SYSCOR. @V407595 00685000
ICM R11,B'1111',=A(DMKSLC) GET SIZE OF V=R, IF ANY @V396414 00686000
BZ VRNONE SKIP SUBTRACTION, IF NONE @V396414 00687000
L R7,ASYSVM ADDRESSABILITY @VA05369 00688000
USING VMBLOK,R7 VA05369 @VA05369 00689000
ST R6,VMSTOR SAVE SIZE IN SYSTEM'S VMBLOK. @VA05369 00690000
DROP R7 @VA05369 00691000
S R11,F4095 DEDUCT PAGE 0 @V396414 00692000
SR R6,R11 DEDUCT V=R FROM STOR SIZE @V396414 00693000
SPACE 1 00694000
VRNONE SRL R6,14 CONVERT TO PAGES/4(25% OF PAGES) @V396414 00695000
CR R5,R6 FREE PAGES > PAGES/4 ? @V396414 00696000
BH FPDFLT YES, USE DEFAULT METHOD @V396414 00697000
SPACE 1 00698000
LTR R5,R5 OR, IF NO FREE PAGES SPECIFIED @V396414 00699000
BZ FPDFLT USE DEFAULT METHOD @V396414 00700000
LR R11,R5 SHIFT REGS FOR @V396414 00701000
B SETUP ALLOCATION ROUTINE @V396414 00702000
SPACE 1 00703000
FPDFLT LR R11,R3 TOP OF CORE TABLE @V396414 00704000
SL R11,ACORETBL SIZE OF CORE TABLE @VA01774 00705000
SRL R11,4 GET NO OF PAGES DIV BY 16 @VA01774 00706000
A R11,F1 ADJUST FOR LAST ENTRY 00707000
* V=R SIZE IS NOT USED IN THE CALCULATION 00708000
ICM R6,15,=A(DMKSLC) GET SIZE OF V=R @VA01774 00709000
BZ NOVEQR BR, IF NOT GENED @VA01774 00710000
SRL R6,12 GET NO PAGES @VA01774 00711000
BCTR R6,0 LESS ONE FOR CP PAGE ZERO @VA01774 00712000
SR R11,R6 ADJUST TOTAL PAGES @VA01774 00713000
* 00714000
NOVEQR CH R11,=H'64' DO WE HAVE 256 LEFT @VA01774 00715000
BH FREBEE BR, IF YES @VA01774 00716000
LA R11,3 OTHERWISE USE STD 3 PAGES @VA01774 00717000
B SETUP INITIALIZE THE ENTRIES @VA03799 00718000
* 00719000
FREBEE SH R11,=H'64' REMOVE ONE BOX @VA01774 00720000
SRL R11,4 NUMBER PAGES DIV BY 16 @VA01774 00721000
LA R11,3(,R11) ADD IN THE STD 3 PAGES @VA01774 00722000
TM CPIFLAG1,CPIAP WILL RUN AS AP ? @V4M0173 00723000
BNO SETUP NO - DO NOT ADJUST FOR AP MODE @V4M0173 00724000
LR R6,R11 LOAD WORK REG WITH NO. FREE PGES @V4M0173 00725000
SRL R6,2 COMPUTE 25% OF FREE PAGES @V4M0173 00726000
AR R11,R6 AP MODE NO. OF FREE PAGES IS @V4M0173 00727000
* DEFAULT PLUS 25%. 00728000
* R11 NOW HAS THE NUMBER OF 64K BLOCKS OVER 256K 00729000
* PLUS THREE FOR FIRST 256K PLUS 25% IF AP MODE. 00730000
* WE WILL ALLOCATE ONE FIXED FREE PAGE FOR EACH 00731000
SETUP LR R6,R11 GET THE NUMBER OF PAGES @VA03799 00732000
SLL R6,4 TIMES 16 FOR CORE TABLE INDEX @VA01774 00733000
LR R5,R3 GET ADDR OF TOP OF CORE TABLE @VA01774 00734000
SR R5,R6 COMPUTE LOW CORE TABLE ADDR @VA01774 00735000
FRELOOP MVC CORFPNT,=C'FREE' FLAG CP FREE STORAGE PAGE 00736000
MVI CORFLAG,CORCP MARK IT AS CP PAGE @V408246 00737000
BXH R3,R4,FRELOOP 00738000
L R15,ASYSVM ADDRESS OF THE SYSTEM VMBLOK @V408246 00739000
LH R14,VMPAGES-VMBLOK(R15) GET NO OF SYSTEM PAGES @V408246 00740000
AR R14,R11 ADD IN NUMBER OF 'FREE' PAGES @V408246 00741000
STH R14,VMPAGES-VMBLOK(R15) @V408246 00742000
AIF (NOT &TRACE(9)).TR1 00743000
EJECT 00744000
* 00745000
* INITIALIZE TRACE TABLE SECTION OF CORTABLE 00746000
LR R8,R3 ADDR OF TOP CORTABLE @VA01774 00747000
SL R8,ACORETBL COMPUTE SIZE @VA01774 00748000
AL R8,=A(X'3F0') ROUND UP TO NEAREST 256K OF CORE @VA01774 00749000
SRL R8,10 COMPUTE LOW ADDR DIV BY 256K @VA01774 00750000
L R15,CPISYSTR GET PTR TO SYSCOR TRACE= VALUE @V60BCAB 00751000
LH R1,0(,R15) GET SYSCOR VALUE TRACE=(NUMBER OF 00752000
* PAGES FOR TRACE TABLE) @V60BCAB 00753000
CR R1,R8 SYSGEN VALUE GREATER THAN DEFAULT 00754000
* (ONE PAGE/256K)? @V60BCAB 00755000
BNH TRCDEFNO NO, USE DEFAULT VALUE @V60BCAB 00756000
LR R8,R1 YES, USE SYSGEN VALUE @V60BCAB 00757000
TRCDEFNO DS 0H @V60BCAB 00758000
SLL R8,4 NOW TIMES 16 FOR CORETABLE INDEX @VA01774 00759000
LR R5,R3 END OF TRACE ADDRESS @VA01774 00760000
SR R5,R8 START ADDRESS @VA01774 00761000
LA R8,16(R3) POINT TO NEXT PAGE ENTRY @VA01774 00762000
S R8,ACORETBL MINUS BASE OF CORTABLE 00763000
SLL R8,8 FORM END PAGE ADDRESS 00764000
ST R8,TRACEND SET TRACE END ADDRESS 00765000
LR R7,R8 SAVE FOR MSG CALC @V396414 00766000
TRLOOP MVC CORFPNT,ASYSVM TRACE TABLE BELONGS TO SYSTEM @V408246 00767000
MVI CORFLAG,CORCP ... 00768000
BXH R3,R4,TRLOOP DO FOR ALL PAGES REQUIRED 00769000
LR R8,R3 END CORTABLE SLOT 00770000
LA R8,16(R8) BUMP TO LAST PAGE (START OF TRACE) 00771000
S R8,ACORETBL MINUS BASE OF CORETABLE 00772000
SLL R8,8 FORM START PAGE ADDRESS 00773000
ST R8,TRACSTRT SET TRACE START ADDRESS 00774000
ST R8,TRACCURR ALSO CURRENT POINTER 00775000
SR R7,R8 TRACEND MINUS TRACSTRT @V396414 00776000
ST R7,SAVTRA EQUALS TRACE STORAGE @V396414 00777000
L R8,XRIGHT16 GET HALFWORD OF 1'S 00778000
STH R8,TRACEFLG SET FLAG TO INDICATE ALL TRACING ON 00779000
.TR1 ANOP 00780000
EJECT 00781000
* INITIALIZE DYNAMIC AREA SECTION OF CORTABLE 00782000
L R5,=A(DMKSAV) ADDRESS OF LOWEST FREE PAGE 00783000
AL R5,F4096 - PAGE ABOVE DMKSAV @VA02573 00784000
SRL R5,8 GET PAGE NUMBER*16 00785000
A R5,ACORETBL GET CORTABLE ENTRY 00786000
LA R8,16(R3) POINT TO 1ST TRACE TABLE PAGE @VA03799 00787000
SR R8,R5 FIND OUT HOW MANY PAGES AVAILABLE 00788000
CH R8,=H'64' AT LEAST FOUR FREE PAGES ? @VA03799 00789000
BNL *+8 YES - @VA03799 00790000
OI CPI955SW,FF NO--VM/370 TOO LARGE FOR MACHINE @V60B7AB 00791100
L R10,=A(DMKPTRCP) ANCHOR LIST FOR DMKPTR @V408246 00792000
LR R6,R3 SAVE CURRENT CORETBL POINTER @V408246 00793000
SL R6,ACORETBL FIND THE PAGE NUMBER @V408246 00794000
SLL R6,8 AND MULTIPLY IT BY 256. @V408246 00795000
ST R6,0(,R10) STORE HIGHEST PAGE NUMBER IN @V408246 00796000
* TABLES 00797000
ST R6,20(,R10) THAT ARE MAINTAINED BY @VA08341 00798100
ST R6,60(,R10) DMKPTR.... @VA08341 00799100
SPACE 1 00800000
ST R3,4(,R10) ALSO SAVE THE HIGHEST USER @V408246 00801000
ST R3,24(,R10) CORETABLE ENTRY FOR @VA08341 00802100
ST R3,64(,R10) DMKPTR.... @VA08341 00803100
SPACE 1 00804000
SPACE 00805000
L R7,=A(DMKPTRF1) GET PTR TO FREELIST 00806000
LR R10,R7 SAVE 00807000
LA R8,CORFREE 00808000
SLL R8,24 SHIFT TO HIGH ORDER BYTE 00809000
SR R9,R9 CLEAR 00810000
ST R3,0(,R7) SET FIRST CORTABLE ENTRY 00811000
SR R15,R15 ZERO PAGEABLE PAGE COUNTER 00812000
CORLOOP LR R6,R3 GET FIRST CORTABLE ENTRY 00813000
AR R6,R4 GET NEXT CORTABLE ENTRY 00814000
STM R6,R9,0(R3) FORMAT THIS CORTABLE ENTRY 00815000
LR R7,R3 GET THIS CORTABLE ENTRY 00816000
LA R15,1(,R15) KEEP A RUNNING TOTAL 00817000
BXH R3,R4,CORLOOP 00818000
ST R3,4(,R10) SET LAST CORTABLE ENTRY 00819000
LR R6,R10 GET PTR TO FREELIST 00820000
STM R6,R9,0(R3) FORMAT LAST CORTABLE ENTRY 00821000
LA R15,1(,R15) AND COUNT IT 00822000
L R7,=A(DMKPTRFN) 00823000
ST R15,0(,R7) 00824000
EJECT 00825000
L R1,=A(DMKCPEND) GET END OF RESIDENT NUCLEUS, AND 00826000
LA R5,4095(,R1) GET ADDRESS OF 1ST PAGABLE PAGE 00827000
SRL R5,12 GET PAGE NUMBER 00828000
SLL R5,4 TIMES 16 00829000
A R5,ACORETBL POINT TO CORTABLE ENTRY FOR PAGE 00830000
L R10,=A(DMKPTRCP) ANCHOR LIST FOR DMKPTR @V408246 00831000
AR R3,R4 POINT TO LAST USER CORETABLE @V408246 00832000
* ENTRY 00833000
L R6,ASYSVM ADDRESS OF SYSTEM VMBLOK @V408246 00834000
SLR R7,R7 ... @V408246 00835000
SLR R8,R8 ... @V408246 00836000
SPACE 1 00837000
USERLOOP STM R6,R9,0(R3) INITIALIZE CORTABLE ENTRY @V408246 00838000
LA R15,1(,R15) COUNT NUMBER OF PAGES FOR @V408246 00839000
* DISPATCHER. 00840000
BXH R3,R4,USERLOOP DO THEM ALL... @V408246 00841000
STM R6,R9,0(R3) ALSO INITIALIZE THE LAST ONE. @V408246 00842000
BCTR R3,0 DECREMENT ONE FOR LIMIT @V408246 00843000
ST R3,12(,R10) STORE THE LOWEST USER CORETABLE @V408246 00844000
* ENTRY 00845000
ST R3,32(,R10) FOR DMKPTR.... @VA08341 00846100
ST R3,72(,R10) ............ @VA08341 00846200
LA R3,1(,R3) RESTORE ORIGINAL COUNT @V408246 00848000
SPACE 1 00849000
LA R15,1(,R15) AND COUNT IT 00850000
L R7,=A(DMKDSPNP) GET PAGABLE PAGE COUNTER 00851000
ST R15,0(,R7) SAVE COUNT 00852000
L R10,=A(DMKPTRSN) ADDRESS OF PAGE SELECTION DATA@VA08341 00852100
LA R15,2 NUMBER OF BLOCKS OF FRAMES FOR @VA08341 00852200
* PAGE SELECTION TO SCAN 00852300
STH R15,0(R10) SET UP SCANNUM FIELD IN DMKPTR @VA08341 00852400
STH R15,2(R10) SET UP SCANBLOK FIELD IN DMKPTR @VA08341 00852500
SLR R15,R15 ZERO REGISTER @VA08341 00852600
STC R15,6(R10) INITIALIZE FLAGS FOR DMKPTR PAGE @VA08341 00852700
* SELECTION ROUTINE 00852800
LA R2,4095(,R1) 00853000
SRL R2,12 00854000
SPACE 3 00855000
CPLOOP EQU * HERE TO INITIALIZE RESIDENT NUCLEUS AREA OF CORTABLE 00856000
AR R3,R4 GET NEXT CORTABLE ENTRY 00857000
MVC CORFPNT,ASYSVM NUCLEUS BELONGS TO SYSTEM @V408246 00858000
MVI CORFLAG,CORCP MARK IT. @V408246 00859000
BCT R2,CPLOOP 00860000
EJECT 00861000
* INITIALIZE FREE STORAGE 00862000
LA R2,4095(,R1) 00863000
N R2,XPAGNUM 00864000
L R7,=A(DMKFRELO) 00865000
ST R2,0(,R7) 00866000
LR R0,R2 00867000
SR R0,R1 00868000
SRA R0,3 BYTES TO DBL-WORDS PLEASE 00869000
C R0,F3 AT LEAST THREE DBL-WORDS HOPEFULLY ? 00870000
BL NOFRET NO - FORGET IT. 00871000
SR R14,R14 OK (AT LEAST 3 DBL WORDS) - SET 00872000
LR R15,R0 REGS AND DIVIDE NO. DBL WORDS BY 3 00873000
D R14,F3 (SINCE THEY'LL BE USED FOR SUBPOOLS) 00874000
SR R0,R14 SUBTRACT REMAINDER (0,1,2) FROM COUNT, 00875000
SLL R14,3 REMAINDER TO BYTES PLEASE (0,8,16) 00876000
AR R1,R14 AND ADD TO THE STARTING ADDRESS 00877000
CALL DMKFRETR 00878000
NOFRET LA R15,SAVESIZE*8 LENGTH OF ONE SAVE-AREA 00879000
SR R2,R15 COMPUTE DMKFRELO - LENGTH ONE SAVE-AREA 00880000
L R7,CPISVCLO AND @V407595 00881000
ST R2,0(,R7) STORE WHERE NEEDED BY DMKSVC @V407595 00882000
AR R2,R15 RESTORE R2 = DMKFRELO 00883000
LA R15,PAGESIZE*8 LENGTH OF PAGING IOBLOK 00884000
SR R2,R15 DMKFRELO - SAME 00885000
L R7,=A(DMKPAGLO) AND 00886000
ST R2,0(,R7) STORE WHERE NEEDED BY DMKPAGIO 00887000
SLL R11,12 NOW GET NO. OF PAGES TO FRET * 4096 00888000
L R7,=A(DMKSYSRM) GET REAL MACHINE SIZE 00889000
L R1,0(,R7) ... 00890000
L R15,=A(DMKSYSRV) GET SYSGEN SPECIFIED SIZE 00891000
C R1,0(,R15) COMPARE REAL WITH SYSGEN 00892000
BNH *+8 LOW OR EQUAL -- USE ACTUAL MAIN STORAGE 00893000
L R1,0(,R15) HIGH -- USE SYSGEN SIZE 00894000
TM CPIFLAG1,CPIAP IS PREFIXING ESTABLISHED @V407595 00895000
BNO NOAP NO - BYPASS PREFIX ADJUSTMENT @V407595 00896000
S R1,F8192 YES - ADJUST FOR 2 PREFIX FRAMES @V407595 00897000
NOAP EQU * @V407595 00898000
LR R2,R1 ... 00899000
N R2,BDYCHK .... @V396414 00900000
CR R2,R1 ON 2K BOUNDRY ? 00901000
BE *+8 NO 00902000
S R11,=F'2048' RETURN 1/2 PAGE LESS 00903000
SR R1,R11 GET PTR TO START OF FREE AREA 00904000
LR R0,R11 GET NO BYTES TO BE RETURNED 00905000
SRL R0,3 /8 00906000
CALL DMKFRETR 00907000
L R7,=A(DMKFREHI) 00908000
ST R1,0(,R7) 00909000
L R7,CPISVCHI ALSO @V407595 00910000
ST R1,0(,R7) STORE WHERE NEEDED BY DMKSVC @V407595 00911000
L R7,=A(DMKPAGHI) AND 00912000
ST R1,0(,R7) STORE FOR USE BY DMKPAGIO 00913000
EJECT 00914000
LA R4,SAVNUMBR+3 NUMBER OF SAVE-AREAS WANTED FOR DMKPSASV 00915000
* NOTE- (1 USED FOR DMKFRESV) 00916000
SR R0,R0 SET R0-R1 FOR MULTIPLY USE 00917000
LA R1,SAVESIZE SIZE OF ONE SAVE-AREA INTO R1 00918000
MR R0,R4 SIZE OF ONE BIG BLOCK NOW IN R1 00919000
LR R0,R1 INTO R0 PLEASE 00920000
CALL DMKFREE GET ONE BIG CHUNK OF SAVE-AREAS 00921000
LA R0,SAVESIZE*8 SIZE OF ONE SAVE-AREA INTO R0 (BYTES) 00922000
L R2,CPISVCNS ANCHOR FOR DMKSVCSV S.A. CHAIN @V407595 00923000
SL R4,F1 SUBTRACT 1 FOR DMKFRESV @VM08952 00924000
XCFREE XC 0(SAVESIZE*8,R1),0(R1) CLEAR ONE SAVE-AREA 00925000
ST R1,0(,R2) STORE POINTER TO SAME 00926000
LR R2,R1 NEW ADDRESS OF POINTER 00927000
AR R1,R0 ADDRESS OF NEXT SAVE AREA 00928000
BCT R4,XCFREE ITERATE FOR DESIRED NUMBER OF SAVE-AREAS 00929000
EX 0,XCFREE CLEAR THE ONE LAST BLOCK, THEN: 00930000
L R15,=A(DMKFRESV) GET DMKFREE'S "BACK POCKET" PTR 00931000
ST R1,0(,R15) SAVE FOR CALL TO DMKPTRFR @VM08952 00932000
SPACE 2 00933000
* GET CHUNK OF STORAGE FOR USE BY DMKPTR WHEN IT 00934000
* BECOMES NECESSARY FOR THE SYSTEM TO EXTEND. 00935000
L R4,=A(DMKPTRFA) WHERE TO PUT THE ADDRESS @VM08952 00936000
LA R0,CPEXSIZE*16 GET LARGE BLOCK @VM08952 00937000
CALL DMKFREE ... @VM08952 00938000
ST R1,0(,R4) STORE ITS ADDRESS IN DMKPTRFA @VM08952 00939000
STC R0,0(,R4) AND THE LENGTH IN DW'S @VM08952 00940000
* NOW SET "LRGSTSIZ" (DEFINED IN DMKFRE IF STATISTICS INCLUDED) TO 00941000
* A SMALL VALUE (INSTEAD OF THE BIG CHUNK OF BLOCKS WE GOT EARLIER): 00942000
L R15,=A(DMKFRELG) GET A("LRGSTSIZ") IN DMKFRE 00943000
LTR R15,R15 DEFINED ? 00944000
BZ *+8 NOPE - FORGET IT. 00945000
ST R0,0(,R15) YES - STORE SIZE PAGING IOBLOK (IN R0) 00946000
AIF (NOT &AP).APCHK6 00947000
TM CPIFLAG1,CPIAP IS APU AVAILABLE @V407595 00948000
BNO NOAP1 NO - CONTINUE WITHOUT AN APU @V407595 00949000
* 00950000
* YES - OBTAIN A CPEXBLOK TO BE USED BY 00951000
* THE SWITCH MACRO AND A DEFER 00952000
* EXECUTION BLOCK TO BE SAVED IN 00953000
* THE OPERATOR'S VMBLOK 00954000
* 00955000
LA R0,CPEXSIZE GET LENGTH IN DBW @V407595 00956000
CALL DMKFREE OBTAIN STORAGE @V407595 00957000
ST R1,PSACPXBP SAVE ADDR IN ABSOLUTE PSA. @V407595 00958000
LA R0,CPEXSIZE GET LENGTH IN DBW @V407595 00959000
CALL DMKFREE OBTAIN STORAGE @V407595 00960000
L R11,ASYSVM GET ADDR SYSTEM VMBLOK @V4M0203 00961000
USING VMBLOK,R11 ADDRESSABILITY TO VMBLOK @V4M0203 00962000
MVC VMCPTIME,HALFTIME INIT SYSTEM AP MODE SUPV TIMER@VM40203 00963000
MVC VMAPTIME,HALFTIME SAME FOR ATTACHED TIMER @V4M0203 00964000
L R11,ASYSOP OBTAIN ADDR OF OPERATOR'S VMBLOK @V407595 00965000
ST R1,VMDFTPNT SAVE ADDR OF DEFER EXEC BLOC @V407595 00966000
MVC VMCPTIME,HALFTIME INIT OPER AP MODE SUPV TIMER @V4M0203 00967000
MVC VMAPTIME,HALFTIME SAME FOR ATTACHED TIMER @V4M0203 00968000
* 00969000
* OBTAIN BACK POCKET FOR DMKFRE WHEN FREE STORAGE MUST BE 00970000
* EXTENDED AND THE GLOBAL SYSTEM LOCK IS NOT AVAILABLE. @V407595 00971000
* 00972000
L R10,CPIFREAP ADDR OF DMKFRE BACK POCKET PTR @V407595 00973000
SR R0,R0 CLEAR INPUT REG @V407595 00974000
IC R0,N0(R10) OBTAIN NUMBER OF BYTES IN DBW'S @V407595 00975000
CALL DMKFREE OBTAIN STORAGE @V407595 00976000
STCM R1,N7,N1(R10) SAVE ADDRESS FOR DMKFRE @V407595 00977000
LA R0,CPEXSIZE MUST GET CPEXBLOK TOO @VA12596 00977100
CALL DMKFREE @VA12596 00977300
ST R1,4(,R10) PUT CPEX POINTER IN DMKFREAP @VA12596 00977500
NOAP1 EQU * @V407595 00978000
.APCHK6 ANOP 00979000
SPACE 2 00980000
SR R10,R10 INDICATE PROCESSING IPL DEVICE @VA01097 00981000
LH R1,SYSIPLDV ADDRESS OF IPL DEVICE @VA01097 00982000
CALL DMKSCNRU LOCATE THE RDEVBLOK ADDRESS @VA01097 00983000
BNZ CPI1 NO RDEVBLOK FOR IPL DEVICE @VA01097 00984000
LR R15,R1 SET DEVICE ADDRESS FOR HIO @VA01097 00985000
B MOUNTIPL GO MOUNT IPL DEVICE @VA01097 00986000
EJECT 00987000
MOUNTALL EQU * MOUNT ALL DEVICES @VA01097 00988000
LA R4,2 GET INCREMENT FOR BXLE LOOP 00989000
SR R9,R9 ZERO CHANNEL INDEX 00990000
L R10,ARIOCT GET ADDRESS OF CHANNEL INDEX TABLE 00991000
MOUNTNCH LA R5,30 GET END OF INDEX TABLE 00992000
LH R6,0(R9,R10) LOAD INDEX OF NEXT CHANNEL 00993000
LTR R6,R6 IS CHANNEL ALIVE? 00994000
BM MOUNTCHI NO, TRY NEXT CHANNEL 00995000
A R6,ARIOCH GET ADDRESS OF RCHBLOK 00996000
USING RCHBLOK,R6 00997000
SR R2,R2 ZERO CONTROL UNIT INDEX 00998000
MOUNTNCU LA R5,62 GET END OF INDEX TABLE 00999000
LH R7,RCHCUTBL(R2) LOAD INDEX OF NEXT CONTROL UNIT 01000000
LTR R7,R7 IS CONTROL UNIT THERE? 01001000
BM MOUNTCUI NO, TRYBNEXT CONTROL UNIT 01002000
A R7,ARIOCU GET ADDRESS OF RCUBLOK 01003000
USING RCUBLOK,R7 01004000
SR R3,R3 ZERO DEVICE INDEX 01005000
MOUNTNDV LA R5,30 GET END OF INDEX TABLE 01006000
LH R8,RCUDVTBL(R3) LOAD INDEX OF NEXT DEVICE 01007000
LTR R8,R8 IS DEVICE THERE? 01008000
BM MOUNTDVI NO, TRY NEXT DEVICE 01009000
SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 01010000
A R8,ARIODV GET ADDRESS OF RDEVBLOK 01011000
USING RDEVBLOK,R8 01012000
LH R11,RDEVADD FORM DEVICE ADDRESS 01013000
LH R15,RCUADD ... 01014000
OR R15,R11 ... 01015000
AH R15,RCHADD ... 01016000
CLC RDEVTYPC(2),P3800 IS IT A 3800 PRINTER ? @V60B9BA 01017000
BNE NOT3800 XFER IF NOT @V60B9BA 01018000
LR R11,R15 SAVE R15 ACROSS CALL @V60B9BA 01019000
LA R0,RSPXSIZE SIZE OF RSPXBLOK @V60B9BA 01020000
CALL DMKFREE GET STORAGE FOR IT @V60B9BA 01021000
LR R15,R11 RESTORE VALUE IN R15 @V60B9BA 01022000
ST R1,RDEVEXTN SAVE ITS LOCATION @V60B9BA 01023000
XC 0(RSPXSIZE*8,R1),0(R1) CLEAR IT @V60B9BA 01024000
NOT3800 TM RDEVSTA2,RDEVALT ALTERNATE PATH DEVICE @V60B9BA 01025000
BO CHKIPL YES, SKIP CHECKING FOR ALT. PATH @VA07369 01026000
CL R7,RDEVCUA IS THIS THE FIRST CTL UNIT PATH? @V407438 01027000
BE CHKALTCH YES, MAYBE ALT CHANNEL @V407438 01028000
OI CPISTAT,ALTPATH ALT PATH FOUND, SET FLAG @V407438 01029000
OI RDEVSTA2,RDEVALT ALTERNATE PATH DEVICE @VA07369 01030000
B CHKIPL CONTINUE. @V407438 01031000
CHKALTCH LR R14,R7 ADDRESS OF THE CTL UNIT TO R14 @V407438 01032000
TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE CTL UNIT? @V407438 01033000
BZ *+8 NOPE, SKIP @V407438 01034000
L R14,RCUPRIME ADDRESS THE PRIME @V407438 01035000
CL R6,RCUCHA-RCUBLOK(R14) THIS 1ST CHANNEL PATH? @V407438 01036000
BE CHKIPL YES, VANILLA, BR. @V407438 01037000
OI CPISTAT,ALTPATH INDICATE ALTERNATE PATH FOUND @V407438 01038000
OI RDEVSTA2,RDEVALT ALTERNATE PATH DEVICE @VA07369 01039000
CHKIPL EQU * HERE TO CHECK FOR IPL DEVICE @V407438 01040000
CH R15,SYSIPLDV IPL DEVICE ? @VA01097 01041000
BE MOUNTDVI YES -- ALL READY MOUNTED @VA01097 01042000
MOUNTIPL MVI CPISNS,00 CLEAR 1ST BYTE OF SENSE INFO @VA01097 01043000
L R14,F240 SET NUMBER OF RETRIES @VA06205 01044000
CPIHIO HIO 0(R15) ISSUE HIO 01045000
BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01046000
DC X'0F00' HALT I/O TRACE ENTRY @V407466 01047000
BC 1,MOUNTDVI CC=3, NOT OPERATIONAL 01048000
BC 2,CPIHIO CC=2, BURST OP HALTED 01049000
BC 8,CPIRS CC=0, INTERRUPT PENDING 01050000
TM CSW+4,CUE+SM+BUSY CC=1: SHORT CONTROL UNIT BUSY ? 01051000
BNO CPIRS NO - CONTINUE @VA06205 01052000
TIO 0(R15) TO CLEAR HEX 70 STATUS @VA06205 01053000
TIO 0(R15) FROM 3705 @VA06205 01054000
TIO 0(R15) (CODE FOR 3705 ONLY) @VA06205 01055000
TIO 0(R15) @VA06205 01056000
BCT R14,CPIHIO RETRY HIO @VA06205 01057000
B MOUNTDVI TRY NEXT DEVICE @VA06205 01058000
CPIRS L R14,=A(RETRYNUM) SET NUMBER OF RETRIES @V60B6B8 01059000
CLI RDEVTYPC,CLASSPEC CLASSPEC? @V60B6B8 01060000
BE CHKMSC IS MSC - ISSUE SUSPEND ORDER @V60B6B8 01061000
TM RDEVTYPC,CLASDASD+CLASTAPE THIS TAPE OR DASD @V60B6B8 01062000
BZ CPIDEVEN NOPE, DONE; GO MARK ONLINE @V60B6B8 01063000
CPITIO11 BCT R14,CPITIO1 LOOP THRU NO. OF RETRIES @VA04712 01064000
B MOUNTDVI 01065000
CPITIO L R1,WAITCNT LOAD WAIT COUNT @VA05431 01066000
BCT R1,* WAIT A WHILE @VA05431 01067000
B CPITIO11 RETURN TO TIO LOOP @VA04712 01068000
CPITIO1 TIO 0(R15) TIO 01069000
BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01070000
DC X'0E00' TEST I/O ENTRY @V407466 01071000
BC 1,MOUNTDVI CC=3, NOT OPERATIONAL 01072000
BC 2,CPITIO CC=2, CHANNEL OR SUBCHANNEL BUSY 01073000
BC 8,CPIRD CC=0, DEVICE AVAILABLE 01074000
TM CSW+4,CUE+SM+BUSY CC=1: SHORT CONTROL UNIT BUSY ? 01075000
BO CPITIO1 YES, REPEAT TIO 01076000
TM CSW+4,BUSY CONTROL UNIT OR DEVICE BUSY ? 01077000
BO CPITIO YES -- POSSIBLE SHARED CTL UNIT 01078000
TM CSW+4,UC UNIT CHECK? 01079000
BZ CPIRD NOPE, GO DO THE 'RELEASE' TEST @V407438 01080000
BAL R14,CPISNSUB YES - DO A SENSE TO CLEAN UP CONTROL UNIT 01081000
* 01082000
* ISSUE A "RELEASE" CCW TO: 1) SEE OF THE DEVICE HAS RES/REL FTR 01083000
* 1) SEE IF THE DEVICE HAS RESERVE/RELEASE CAPABILITIES, AND 01084000
* 2) FREE THE DEVICE IF SOMEBODY HAD IT RESERVED PRIOR TO A CRASH 01085000
* 01086000
CPIRD MVC CPIRLD(6),FFS FILL RELEASE DATA WITH X'FF'S @V407438 01087000
LA R14,CPICCWRL SET UP FOR DASD RELEASE CCW @V407438 01088000
CLI RDEVTYPC,CLASDASD IS THIS A DASD DEVICE? @V407438 01089000
BE *+8 YES, CCW ADDRESS IS OK @V407438 01090000
LA R14,CPICCWRT SET TO TAPE RELEASE CCW @V407438 01091000
ST R14,CAW ... 01092000
L R14,=A(RETRYNUM) SET NUMBER OF RETRIES @VA00809 01093000
CHKRSRL1 BCT R14,CHKRSRL2 LOOP THRU NUMBER OF RETRIES 01094000
B MOUNTDVI GIVE UP IF STILL "BUSY" 01095000
CHKRSRL2 SIO 0(R15) ATTEMPT THE "RELEASE" 01096000
BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01097000
DC X'0B00' START I/O ENTRY @V407466 01098000
BC 8,CHKRSRL3 CC=0 MEANS IT MUST HAVE WORKED 01099000
BC 2+1,MOUNTDVI CC=2 OR CC=3, BUSY OR NOT OPERATIONAL 01100000
TM CSW+4,CUE+SM+BUSY CC=1: SHORT CONTROL UNIT BUSY ? 01101000
BO CHKRSRL2 YES - KEEP TRYING INDEFINITELY 01102000
L R1,WAITCNT LOAD WAIT COUNT @VA05431 01103000
BCT R1,* WAIT A WHILE @VA05431 01104000
TM CSW+4,BUSY CONTROL UNIT OR DEVICE BUSY ? 01105000
BO CHKRSRL1 YES - KEEP TRYING (WITHIN REASON) 01106000
TM CSW+4,UC UNIT CHECK ON THE RELEASE ? 01107000
BZ SETRRFTR NOPE, GO SET RES/REL FTR CODE @V407438 01108000
BAL R14,CPISNSUB YES - DO A SENSE TO CLEAN UP CONTROL UNIT 01109000
B CPIRDCON FORGET RELEASE, BUT TRY TO READ LABEL. 01110000
CHKRSRL3 TIO 0(R15) IF CONDITION-CODE 0, 01111000
BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01112000
DC X'0E00' TEST I/O ENTRY @V407466 01113000
BC 2,CHKRSRL3 WAIT FOR DATA TRANSMISSION TO FINISH 01114000
TM CSW+4,UC UNIT CHECK? @VA00864 01115000
BO CPISNSEX YUP, ASSUME FAILURE; GO CLEAN UP @V407438 01116000
SETRRFTR EQU * @VA07875 01117000
L R1,RDEVCUB GET ADDRESS ALTCU @VA07875 01118000
LTR R1,R1 IS THERE ONE ? @VA07875 01119000
BNZ CPIRDCON YES, WE CAN NOT ALLOW RES/REL @VA07875 01120000
OI RDEVFTR,FTRRSRL SET RESERVE/RELEASE FTR @VA07875 01121000
* 01122000
* HERE TO READ THE VOLUME LABEL. 01123000
* 01124000
CPIRDCON CLI RDEVTYPC,CLASDASD IS THIS A DASD DEVICE? @V407438 01125000
BNE CPIDEVEN NOPE, MARK ON LINE AND CONTINUE @V407438 01126000
TM CPISNS,INTREQ DID WE HAVE AN INTERVENTION REQUIRED ? 01127000
BO CPIDEVEN YES, DON'T BOTHER TO READ LABEL @VA00864 01128000
TM RDEVSTAT,RDEVDISA PROCESSED DEV BY A DIFF PATH @V407438 01129000
BZ CPIDEVEN YES, SKIP LABEL STUFF @V407438 01130000
CLI RDEVTYPE,TYP3380 OK - MOUNTING A 3380 ?? HRC011DK 01131390
BE TEST3380 YES - CONTINUE -- HRC011DK 01131780
CLI RDEVTYPE,TYP2305 OK - MOUNTING A 2305 ?? HRC011DK 01132170
BNE TEST3340 NO -- CONTINUE -- HRC011DK 01132560
TM RDEVADD+1,X'07' IS THIS AN 'EXPOSURE' ADDRESS 01133000
BNZ CPIDEVEN YES - DO NOT READ LABEL IF NOT @V2A2029 01134000
* A BASE ADD 01135000
TEST3340 CLI RDEVTYPE,TYP3340 OK - MOUNTING A 3340 ? @V2A2029 01136000
BNE CPISTCAW NO -- CONTINUE -- @V2A2029 01137000
XC CPISNS,CPISNS CLEAR DATA AREA HRC011DK 01138490
BAL R14,CPISNSUB DO SENSE TO IDENTIFY DATA MODULE @V2A2029 01139000
TM CPISNS+2,X'80' RPS FEATURE INSTALLED ? @V2A2029 01140000
BZ *+8 NO - BRANCH @V2A2029 01141000
OI RDEVFTR,FTRRPS INDICATE RPS FEATURE INSTALLED @V2A2029 01142000
TM CPISNS+2,X'03' 35MB OR 70MB MOUNTED ? @V2A2029 01143000
BNM MOUNTDVI BRANCH IF ZERO OR ONES-(OFFLINE) @V2A2029 01144000
TM CPISNS+2,X'02' 70MB DATA MODULE MOUNTED ? @V2A2029 01145000
BZ SET35MB NO - SET 35MB @V2A2029 01146000
OI RDEVFTR,FTR70MB INDICATE 70MB PACK MOUNTED @V2A2029 01147000
B CPISTCAW AND CONTINUE @V2A2029 01148000
TEST3380 DS 0H HRC011DK 01148100
XC CPISNS,CPISNS CLEAR DATA AREA HRC011DK 01148200
MVC CAW(4),=A(CPISNSE4) SETUP FOR E4 SENSE ID HRC011DK 01148300
BAL R14,SNSIOR GO READ HRC011DK 01148400
MVC RDEVMDL,CPISNSB6 HRC011DK 01148500
B CPISTCAW CONTINUE HRC011DK 01148600
SET35MB OI RDEVFTR,FTR35MB INDICATE 35MB PACK MOUNTED @V2A2029 01149000
CPISTCAW MVC CAW(4),=A(CPICCW2) SET CAW TO READ LABEL 01150000
L R14,=A(RETRYNUM) SET NUMBER OF RETRIES 01151000
CPISIO BCT R14,*+8 01152000
B MOUNTDVI 01153000
CPISIO1 SIO 0(R15) ISSUE SIO 01154000
BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01155000
DC X'0B00' START I/O ENTRY @V407466 01156000
BC 2+1,MOUNTDVI CC=2 OR CC=3, BUSY OR NOT OPERATIONAL 01157000
BC 8,CPIALLOC CC=0, STARTED 01158000
TM CSW+4,CUE+SM+BUSY CC=1: SHORT CONTROL UNIT BUSY ? 01159000
BO CPISIO1 YES, RETRY SIO 01160000
L R1,WAITCNT LOAD WAIT COUNT @VA05431 01161000
BCT R1,* WAIT A WHILE @VA05431 01162000
TM CSW+4,BUSY CONTROL UNIT OR DEVICE BUSY ? 01163000
BO CPISIO YES, RETRY (DECREMENTING COUNTER) 01164000
B CPISNSEX ASSUME FAILURE 01165000
CPIALLOC TIO 0(R15) ISSUE TIO 01166000
BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01167000
DC X'0E00' TEST I/O ENTRY @V407466 01168000
BC 2,CPIALLOC CC=2, SUBCHANNEL OR CHANNEL BUSY @V407466 01169000
BC 1,MOUNTDVI CC=3, NOT OPERATIONAL 01170000
CLI CSW+4,CE+DE CHANNEL END WITH DEVICE END? 01171000
BNE CPISNSEX NO, ASSUME FAILURE 01172000
LA R14,CPICCW2E ADDRESS OF THE END IF DATA READ @V407438 01173000
CLM R14,B'0111',CSW+1 IS THAT WHERE IT ENDED? @V407438 01174000
BNE CPIDEVEN NOPE, MUST BE 3330V W/ CYL FAULT @V407438 01175000
LA R0,4 Offset to volser in std labelHRC106DK 01176000
L R14,=A(CPIATABL) -> volume label record HRC106DK 01176500
CLC 0(4,R14),=C'VOL1' Standard label? HRC106DK 01177000
BE SAVESER Yes HRC106DK 01177500
CLC 0(3,R14),=C'CMS' Any CMS header? HRC106DK 01178000
BE SAVESER Yes HRC106DK 01178500
SR R0,R0 Offset to non-standard label HRC106DK 01179000
SPACE 1 01182000
SAVESER EQU * HERE TO SAVE VOLUME SERIAL IN RDEVBLOK 01183000
AR R14,R0 -> volser HRC106DK 01183100
LA R0,6 CHECK FOR DUPLICATE VOLUME SERIAL 01184000
LR R1,R14 PASS PTR IN GPR1 01185000
STM R14,R15,TEMPR14 SAVE REGISTERS 01186000
CALL DMKSCNVS LOOK FOR DUPLICATE VOLUME 01187000
BZ DUPVOLD DUPLICATE VOLUME ALREADY MOUNTED 01188000
LM R14,R15,TEMPR14 RESTORE REGISTERS 01189000
MVC RDEVSER,0(R14) SAVE VOLSER IN RDEVBLOK 01190000
OI RDEVFLAG,RDEVMOUT Set mounted-not-attached flag HRC039DK 01190050
TM RDEVFTR,SYSVIRT+VIRTUAL THIS AN MSS VUA? @VA11344 01190100
BZ SAVESER2 NO - THEN DON'T TURN ON @VA11344 01190200
* 'MTD-BY-CP' FLAG @VA11344 01190300
OI RDEVFLAG,RDEVVMNT ELSE TURN IT ON! @VA11344 01190400
SAVESER2 DS 0H @VA11344 01190500
L R14,=A(CPIATABL) -> volume label record HRC106DK 01190600
CLC 46(5,R14),=C'CP370' CP OWNED volume ?? HRC106DK 01191000
BNE CPIUSRA NO -- CHECK FOR USER VOLUME HRC033DK 01192490
SPACE 01193000
MVC UDRPSTRT,52(R14) Sav possible directory startHRC106DK 01194000
CLI RDEVTYPE,TYP3380 3380 device type? HRC106DK 01194050
BNE STDMAPSZ No, use std alloc map size HRC106DK 01194100
L R14,F4096 Size of 3380-K alloc map HRC106DK 01194150
TM RDEVMDL,RDEVMD83 Triple density 3380? HRC106DK 01194200
BO SETMAPSZ Yes HRC106DK 01194250
LA R14,2048 Size of 3380-E alloc map HRC106DK 01194300
TM RDEVMDL,RDEVMD82 Double density 3380? HRC106DK 01194350
BO SETMAPSZ Yes HRC106DK 01194400
LA R14,1024 Size of 3380-A HRC106DK 01194450
* HRC106DK 01194500
SETMAPSZ EQU * HRC106DK 01194550
STH R14,CPICCW3L+6 Set length to read alloc mapHRC106DK 01194600
* HRC106DK 01194650
STDMAPSZ EQU * HRC106DK 01194700
LA R14,CPICCW3 ADDRESS OF PROGRAM TO READ ALLOC TABLE 01195000
ST R14,CAW SET UP CAW 01196000
L R14,=A(RETRYNUM) SET NUMBER OF RETRIES 01197000
CPISIO2 BCT R14,CPISIO3 LOOP THRU FOR NUMBER OF RETRIES 01198000
B MOUNTDVI GIVE UP IF "STILL BUSY" 01199000
CPISIO3 SIO 0(R15) START THE READ 01200000
BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01201000
DC X'0B00' START I/O ENTRY @V407466 01202000
BC 2+1,MOUNTDVI BUSY OR UNAVAILABLE 01203000
BC 8,CPIOWNA STARTED OK 01204000
TM CSW+4,CUE+SM+BUSY CC=1: SHORT CONTROL UNIT BUSY ? 01205000
BO CPISIO3 YES - RETRY THE SIO FORTHWITH. 01206000
L R1,WAITCNT LOAD WAIT COUNT @VA05431 01207000
BCT R1,* WAIT A WHILE @VA05431 01208000
TM CSW+4,BUSY CONTROL UNIT OR DEVICE BUSY ? 01209000
BO CPISIO2 YES - RETRY SIO (DECREMENTING COUNTER) 01210000
B CPISNSEX DEVICE NOT USABLE 01211000
SPACE 01212000
CHKMSC CLI RDEVTYPC,CLASSPEC CLASS SPECIAL? @VA07836 01213000
BNE CPIDEVEN NO... @VA07836 01214000
CLI RDEVTYPE,TYP3851 MSS? @VA07836 01215000
BNE CPIDEVEN NOPE @V407466 01216000
L R14,=A(RETRYNUM) RETRY RIGHT NUMBER OF TIMES @VA07836 01217000
ST R2,BALR2 SAVE R2 @V407466 01218000
LA R2,SUSP ADDR OF EXECUTE SUSPEND CCW @V50A2B5 01219000
ST R2,CAW ... @V407466 01220000
L R2,BALR2 RESTORE R2 @V407466 01221000
BUSYSIO BCT R14,CPSIO1 LOOP THRU NUMBER OF ENTRIES @V407466 01222000
B CPIDEVEN FORGET IT, KEEP GOING @V407466 01223000
SPACE 01224000
CPSIO1 SIO 0(R15) SUSPEND IMMEDIATE @V407466 01225000
BAL R1,TRACESUB TRACE TABLE ENTRY @V407466 01226000
DC X'0B00' SIO ENTRY @V407466 01227000
BC 2,BUSYSIO LOOP THRU NUMBER OF ENTRIES @V407466 01228000
BC 1,MOUNTDVI NEXT DEVICE, CC=3 @V407466 01229000
BC 4,CPISNSEX GO ISSUE SENSE, CC=1 @V407466 01230000
CPTIO TIO 0(R15) CHECK OUT STATUS,CC=0 @VA07481 01231000
BAL R1,TRACESUB TRACE TABLE ENTRY @VA07481 01232000
DC X'0E00' TIO ENTRY @V407466 01233000
BC 2,CPTIO BUSY, TRY AGAIN @VA07481 01234000
BC 1,MOUNTDVI NOT OPERATIONAL, CC=3 @V407466 01235000
BC 8,CPIDEVEN OK, KEEP GOING CC=0 @V407466 01236000
B CPISNSEX GO ISSUE SENSE, CC=1 @V407466 01237000
SPACE 01238000
CPIOWNA TIO 0(R15) DRAIN FOR CE/DE 01239000
BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01240000
DC X'0E00' TEST I/O ENTRY @V407466 01241000
BC 2,CPIOWNA LOOP ON CHANNEL BUSY @V407466 01242000
BC 1,MOUNTDVI NOT AVAILABLE 01243000
CLI CSW+4,CE+DE FINISHED OK ?? 01244000
BNE CPISNSEX NO -- 01245000
L R11,=A(DMKSYSOW) GET PTR TO OWNED LIST 01246000
USING OWNDLIST,R11 01247000
L R14,=A(DMKSYSOC) GET PTR TO OWNED VOLUME COUNT 01248000
L R14,0(,R14) ... 01249000
CPIOWN CLC OWNDVSER,RDEVSER IS THIS AN OWNED VOLUME ?? 01250000
BE CPICHAIN FOUND ONE IF EQUAL, CHAIN ALLOCATION TBL 01251000
LA R11,8(,R11) GET NEXT ENTRY 01252000
BCT R14,CPIOWN 01253000
CPIUSRA L R11,=A(DMKSYSUS) GET PTR TO USER LIST HRC033DK 01253100
USING OWNDLIST,R11 HRC033DK 01253200
L R14,=A(DMKSYSUC) GET PTR TO USER VOLUME COUNTHRC033DK 01253300
L R14,0(,R14) ... HRC033DK 01253400
CPIUSR CLC OWNDVSER,RDEVSER IS THIS AN USER VOLUME ?? HRC033DK 01253500
BE CPIUSRCH FOUND ONE IF EQUAL, PROCESS HRC033DK 01253600
LA R11,8(,R11) GET NEXT ENTRY HRC033DK 01253700
BCT R14,CPIUSR HRC033DK 01253800
B CPIDEVEN FINISHED 01254000
CPIUSRCH EQU * HRC033DK 01255070
LR R15,R8 GET RDEVBLOK HRC033DK 01255140
S R15,ARIODV GET DISPLACEMENT HRC033DK 01255210
SRL R15,3(0) CONVERT TO DOUBLE-WORD INDEX HRC033DK 01255280
STH R15,OWNDRDEV SET IN USRVLIST HRC033DK 01255350
NI RDEVFLAG,255-RDEVMOUT Clr mounted-not-attached HRC039DK 01255370
OI RDEVFLAG,RDEVSYS MARK AS A SYSTEM VOL HRC033DK 01255420
S R11,=A(DMKSYSUS) GET DISPLACEMENT FROM START HRC033DK 01255490
SRL R11,3 OF LIST/LENGTH OF LIST ENTRY HRC033DK 01255560
STH R11,RDEVCODE SAVE INDEX IN RDEVBLOK HRC033DK 01255630
B CPIDEVEN FINISHED HRC033DK 01255700
CPICHAIN EQU * HRC033DK 01255770
CLI RDEVTYPE,TYP3330 3330 DASD DEVICE @V407466 01256000
BNE PREFER NO, FLAG AS PREFERRED VOLUME @V407466 01257000
TM RDEVFTR,FTRVIRT 3330V? @V407466 01258000
BZ PREFER NO, FLAG AS PREFERRED VOLUME @V407466 01259000
MVC OWNVOL,RDEVSER MOVE VOLUME SERIAL TO MSG @V407466 01260000
LA R0,(OWNMSGL+8+7)/8 MESSAGE LENGTH @V407466 01261000
CALL DMKFREE ACQUIRE FREE STORAGE FOR MSG @V407466 01262000
MVC 8(OWNMSGL,R1),OWNMSG MOVE MSG TO FREE STOR @V407466 01263000
LA R2,OWNMSGL LENGTH OF MESSAGE @V407466 01264000
ST R2,4(,R1) STORE MSG LENGTH IN BUFFER @V407466 01265000
L R0,DUPMSGPT PLACE ON STACK W DUP VOL SER @V407466 01266000
ST R1,DUPMSGPT PLACE THIS MSG ON TOP @V407466 01267000
ST R0,0(,R1) ... @V407466 01268000
B CPIDEVEN MARK DEVICE AVAILABLE @V407466 01269000
PREFER LH R15,OWNDPREF GET PREFERRED BIT @V407466 01270000
LPR R15,R15 MAKE POSITIVE 01271000
SLL R15,2 *4 01272000
B *(R15) IF NOT PREFERRED VOLUME, SKIP 01273000
OI RDEVFLAG,RDEVPREF FLAG DEVICE AS HAVING PREF. VOL. 01274000
CLI RDEVTYPE,TYP2314 2314 DISK? 01275000
BNE TST3330 NO 01276000
L R15,PLST2314-4(R15) GET 2314 PREFERRED LIST PTR 01277000
B CPIPCOM 01278000
TST3330 CLI RDEVTYPE,TYP3330 3330 DISK? 01279000
BNE TST3340 NO @V2A2029 01280000
L R15,PLST3330-4(R15) GET 3330 PREFERRED LIST PTR 01281000
B CPIPCOM 01282000
TST3340 CLI RDEVTYPE,TYP3340 3340 DISK ? @V2A2029 01283000
BNE TST3350 NO @V304498 01284000
L R15,PLST3340-4(R15) GET 3340 PREFERRED LIST PTR @V2A2029 01285000
B CPIPCOM .. @V2A2029 01286000
TST3350 CLI RDEVTYPE,TYP3350 3350 DISK ? @V304498 01287000
BNE TST3375 HRC106DK 01288100
L R15,PLST3350-4(R15) GET 3350 PREFERRED LIST PTR @V304498 01289000
B CPIPCOM .. @V304498 01290000
TST3375 CLI RDEVTYPE,TYP3375 3375 Disk ? HRC106DK 01290100
BNE TST3380 HRC106DK 01290200
L R15,PLST3375-4(R15) Get 3375 Preferred list ptr HRC106DK 01290300
B CPIPCOM .. HRC106DK 01290400
TST3380 CLI RDEVTYPE,TYP3380 3380 Disk ? HRC106DK 01290500
BNE MB2305 HRC106DK 01290600
L R15,PLST3380-4(R15) Get 3380 Preferred list ptr HRC106DK 01290700
B CPIPCOM .. HRC106DK 01290800
MB2305 L R15,PLST2305-4(R15) GET 2305 PREFERRED LIST PTR 01291000
CPIPCOM L R14,0(,R15) GET PREFERRED LIST 01292000
LTR R14,R14 EMPTY? 01293000
BNZ CPIINSRT NO 01294000
ST R8,RDEVPNT CHAIN THIS RDEVBLOK TO ITSELF 01295000
ST R8,0(,R15) ... 01296000
B CPICNDN 01297000
CPIINSRT MVC RDEVPNT,RDEVPNT-RDEVBLOK(R14) 01298000
ST R8,RDEVPNT-RDEVBLOK(,R14) 01299000
CPICNDN LR R15,R8 GET RDEVBLOK 01300000
S R15,ARIODV GET DISPLACEMENT 01301000
SRL R15,3(0) CONVERT TO DOUBLE-WORD INDEX @V200820 01302000
STH R15,OWNDRDEV SET IN OWNDLIST 01303000
LA R0,6+(MAXALLOC+7)/8 CORE FOR LARGEST ALLOC BLOCK@V200528 01304000
CALL DMKFREE GET IT 01305000
ST R1,RDEVALLN SAVE ADDRESS OF BLOK 01306000
STM R2,R5,BALR2 SAVE REGS 01307000
LR R2,R1 GET ADDRESS OF SPACE FOR BLOK 01308000
LA R3,404 NUMBER OF CYLINDERS FOR 3330 01309000
CLI RDEVTYPE,TYP3330 IS IT ?? 01310000
BNE ALL3350 NO, CHECK FOR 3350 @V304498 01311000
CLI RDEVMDL,11 IS THIS A MOD 11 3330 @V200528 01312000
BNE MOVALLOC NO- BRANCH @V200528 01313000
LA R3,808 YES- SET UP FOR MOD 11 3330 @V200528 01314000
B MOVALLOC @V200528 01315000
ALL3350 LA R3,555 NUMBER OF CYL FOR 3350 @V304498 01316000
CLI RDEVTYPE,TYP3350 3350 DEVICE TYPE ? @V304498 01317000
BE MOVALLOC YES, GENERATE ALLOCATION BLOCK @V304498 01318000
LA R3,959 Number of cyl for 3375 HRC106DK 01318100
CLI RDEVTYPE,TYP3375 3375 Device type ? HRC106DK 01318150
BE MOVALLOC Yes, generate allocation block HRC106DK 01318200
CLI RDEVTYPE,TYP3380 3380 Device type ? HRC106DK 01318250
BNE TST2314 No, check for 2314/2319 HRC106DK 01318300
LA R3,2655 Number of cyl for 3380 (K) HRC106DK 01318350
TM RDEVMDL,RDEVMD83 Triple density 3380? HRC106DK 01318400
BO MOVALLOC Yes, generate allocation block HRC106DK 01318450
LA R3,1770 Number of cyl for 3380 (E) HRC106DK 01318500
TM RDEVMDL,RDEVMD82 Double density 3380? HRC106DK 01318550
BO MOVALLOC Yes, generate allocation block HRC106DK 01318600
LA R3,885 Number of cyl for 3380 (A/D/J) HRC106DK 01318650
B MOVALLOC Go allocate HRC106DK 01318700
TST2314 LA R3,203 NUMBER FOR A 2314 OR 2319 @V200528 01319000
CLI RDEVTYPE,TYP2314 IS IT ?? 01320000
BE MOVALLOC YES -- 01321000
CLI RDEVTYPE,TYP3340 3340 DEVICE TYPE ? @V2A2029 01322000
BNE ALL2305 NO- CHECK FOR 2305 @V2A2029 01323000
LA R3,MB35 NUMBER OF CYLINDERS FOR 35MB @V56BDA8 01324000
L R4,=A(CPIATABL) -> allocation data HRC106DK 01325000
AR R4,R3 POINT ONE BYTE BEYOND LAST BYTE @V2A2029 01326000
CLI 0(R4),X'FF' VALID 35MB ALLOCATION RECORD ? @V2A2029 01327000
BE MOVALLOC YES - GO ALLOCATE @V2A2029 01328000
TM RDEVFTR,FTR35MB 35MB DATA MODULE MOUNTED @V2A2029 01329000
BO MOVALLOC YES - GO ALLOCATE @V2A2029 01330000
LA R3,MB70 NUMBER OF CYLINDERS FOR 70MB @V56BDA8 01331000
B MOVALLOC GO ALLOCATE @V2A2029 01332000
ALL2305 LA R3,96 NUMBER OF CYLINDERS FOR 2305 @V2A2029 01333000
* MOD 2 01334000
CLI RDEVMDL,X'01' CHECK FOR A MOD 1 01335000
BNE MOVALLOC NO- BRANCH 01336000
LA R3,48 NUMBER FOR 2305 MOD 1 01337000
SPACE 01338000
MOVALLOC STH R3,0(,R2) SAVE NUMBER OF CYLINDERS 01339000
LA R2,2(,R2) POINT TO SAVEAREA FOR ALLOCATION DATA 01340000
L R4,=A(CPIATABL) -> allocation data HRC106DK 01341000
LA R3,1(,R3) ALLOW FOR FLAG BYTE 01342000
LA R5,0(R3,R3) GET DOUBLE LENGTH FOR MOVE LONG 01343000
MVCL R2,R4 MOVE ALLOCATION DATA TO SAVE AREA 01344000
NI RDEVFLAG,255-RDEVMOUT Clr mounted-not-attached HRC039DK 01344100
OI RDEVFLAG,RDEVOWN+RDEVSYS MARK AS OWNED & A SYSTEM VOL 01345000
S R11,=A(DMKSYSOW) GET DISPLACEMENT FROM START 01346000
SRL R11,3 OF LIST/LENGTH OF LIST ENTRY 01347000
STH R11,RDEVCODE SAVE INDEX IN RDEVBLOK 01348000
LA R2,UDRASTRT GET PTR TO ALTERNATE DIRECTORY ADDRESS 01349000
L R14,=A(DMKSYSVL) GET PTR TO SYSRES VOLUME SERIAL 01350000
CLC RDEVSER,0(R14) IS THIS THE SYSRES VOLUME 01351000
BNE *+8 NO 01352000
LA R2,UDRNSTRT GET PTR TO NUCLEUS DIRECTORY ADDRESS 01353000
L R3,0(,R2) GET DIRECTORY ADDRESS 01354000
LTR R3,R3 FOUND DIRECTORY YET ?? 01355000
BNZ RSTRG YES -- 01356000
SPACE 01357000
* GPR5 NOW HAS ORIGINAL LENGTH OF MOVE 01358000
SPACE 01359000
CKDRCT BCTR R4,0 POINT TO NEXT BYTE TO TEST 01360000
CLI 0(R4),X'0C' ALLOCATED DIRECTORY CYLINDER ?? 01361000
BE SAVEDRCT YES -- SAVE ADDRESS OF ACTIVE DIRECTORY 01362000
BCT R5,CKDRCT KEEP CHECKING UNTIL A DIRECTORY IS FOUND 01363000
B RSTRG NO DIRECTORY ON THIS VOLUME 01364000
SPACE 01365000
SAVEDRCT ICM R11,B'1110',UDRPSTRT FORM DIRECTORY CCRD DISK ADDR 01366000
ST R11,0(,R2) AND SAVE 01367000
SPACE 01368000
RSTRG LM R2,R5,BALR2 RESTORE USER REGS 01369000
SPACE 2 01370000
CPIDEVEN NI RDEVSTAT,X'FF'-RDEVDISA MARK AS AVAILABLE 01371000
TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE CU @VA01081 01372000
BZ PRIME NO- BRANCH @VA01081 01373000
L R15,RCUPRIME YES- POINT TO THE PRIME CU @VA01081 01374000
NI RCUSTAT-RCUBLOK(R15),255-RCUDISA VARY PRIME @VA01081 01375000
PRIME EQU * CONTROL UNIT ONLINE ALSO 01376000
NI RCUSTAT,X'FF'-RCUDISA SUB CU ON FOR COMPLETENESS@V407438 01377000
STM R1,R3,BALR1 TEMPORARILY SAVE REGS @V407438 01378000
TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE? @V407438 01379000
BO *+6 YES, R15 ALREADY SET UP @V407438 01380000
LR R15,R7 SET R15 TO POINT TO PRIMARY CU @V407438 01381000
DROP R7 USE R15 TEMPORARILY @V407438 01382000
USING RCUBLOK,R15 ... @V407438 01383000
LA R1,RCUCHA ADDRESS OF THE FIRST CHANNEL @V407438 01384000
LA R2,4 INCREMENT @V407438 01385000
LA R3,RCUCHD ADDRESS OF THE LAST CHANNEL @V407438 01386000
NEXTCH CL R6,0(R1) R6 REPRESENT THIS CU -> CH PATH? @V407438 01387000
BE *+8 YES, PATH FOUND, BR. @V407438 01388000
BXLE R1,R2,NEXTCH NOPE, LOOK AT ALL CHANNEL PATHS @V407438 01389000
LA R2,RCUCHA ADDRESS OF THE BEGINNING AGAIN @V407438 01390000
SLR R1,R2 FIND HOW FAR DOWN WE FOUND IT @V407438 01391000
SRL R1,2 CONVERT TO INDEX FROM 0 TO 3 @V407438 01392000
IC R3,ENABTBL(R1) GET CU->CH PTH BIT & ENABLE PTH @V407438 01393000
EX R3,CUCHENAB (NI RCUSTAT,X'FF'-RCUCHXOF) @V407438 01394000
LM R1,R3,BALR1 RESTORE REGS @V407438 01395000
B MOUNTDVI CONTINUE... @V407438 01396000
SPACE 01397000
* RCU TO RCH BLOCK PATH AVAILABLE BITS IN RCUSTAT 01398000
ENABTBL DC AL1(X'FF'-RCUCHAOF,X'FF'-RCUCHBOF) @V407438 01399000
DC AL1(X'FF'-RCUCHCOF,X'FF'-RCUCHDOF) @V407438 01400000
CUCHENAB NI RCUSTAT,0 ENABLE RCU -> RCH PATH @V407438 01401000
DROP R15 NO MORE RCUBLOK ON R15 @V407438 01402000
USING RCUBLOK,R7 SWITCH BACK TO R7 @V407438 01403000
SPACE 2 01404000
MOUNTDVI LTR R10,R10 PROCESSING IPL DEVICE @VA01097 01405000
BZ MOUNTALL YES -- GO INITIALIZE BXLE REGS @VA01097 01406000
BXLE R3,R4,MOUNTNDV @VA01097 01407000
LA R5,62 RESTORE INDEX FOR RCHBLOK 01408000
MOUNTCUI BXLE R2,R4,MOUNTNCU 01409000
LA R5,30 RESTORE INDEX FOR RCUBLOK 01410000
MOUNTCHI BXLE R9,R4,MOUNTNCH 01411000
SPACE 01412000
* NOW CHECK FOR THE EXISTANCE OF ALTERNATE PATHS GENED 01413000
* IN THE SYSTEM. IF ANY WERE INCLUDED, OBTAIN AND INITIALIZE 01414000
* A CHAIN OF MINI IOB'S TO BE USED BY DMKIOS FOR ALTERNATE 01415000
* PATH I/O SCHEDULING 01416000
SPACE 01417000
TM CPISTAT,ALTPATH ANY ALT PATH IN THIS SYSTEM? @V407438 01418000
BZ NOALTP NOPE, SKIP MINI-IOB'S, BR. @V407438 01419000
LA R0,MIOBNUM*IOBMSIZE NUMBER OF MINI IOB'S GO GET @V407438 01420000
CALL DMKFREE GO GET THEM NOW @V407438 01421000
LA R4,MIOBNUM NUMBER OF MINI IOB'S TO INIT. @V407438 01422000
L R2,=A(DMKIOSMQ) IOS BACK POCKET QUEUE ADDR @V407438 01423000
IOBMCHN ST R1,0(R2) CHAIN MINI IOB'S TOGETHER @V407438 01424000
LR R2,R1 REMEMBER PREVIOUS @V407438 01425000
LA R1,IOBMSIZE*8(R1) BUMP TO ADDR OF NEXT @V407438 01426000
BCT R4,IOBMCHN CONTINUE CHAINING @V407438 01427000
ST R4,0(R2) END OF CHAIN = ZERO @V407438 01428000
NOALTP EQU * @V407438 01429000
EJECT 01430000
* INITIALIZE CP'S VIRTUAL MEMORY TABLES 01431000
L R11,ASYSVM POINT TO SYSTEM VMBLOK 01432000
ST R11,RUNUSER INITIALIZE RUNUSER FOR DISPATCH 01433000
USING VMBLOK,R11 01434000
SPACE 1 01435000
* DETERMINE VIRTUAL BUFFER STORAGE VIA REAL OR SYSGEN MACHINE SIZE 01436000
L R3,=A(DMKSYSRM) GET REAL MACHINE SIZE @VA00919 01437000
L R4,=A(DMKSYSRV) GET SYSGEN MACHINE SIZE @VA00919 01438000
CLC 0(4,R4),0(R3) SYSGEN SIZE GREATER THAN REAL ? @VA00919 01439000
BH *+6 YES - USE REAL SIZE AS MAX @VA00919 01440000
LR R3,R4 NO - USE SYSGEN SIZE AS MAX @VA00919 01441000
L R2,0(,R3) SIZE OF REAL STORAGE USED BY VM @VA00919 01442000
S R2,=A(DMKSLC) MINUS THE V=R SIZE @VA11813 01442300
* R2 CONTAINS THE REAL CP STORAGE SIZE MINUS THE V=R AREA 01442600
L R1,=A(X'81000') DEFAULT SIZE - 128 BUFFERS @VA00919 01443000
CL R2,=A(X'A0000') 655,360 OR LESS REAL STORAGE? @VA00919 01444000
BNH VBUFF YES -- 128 VIRTUAL BUFFERS @VA00919 01445000
LA R0,160 1280 VIRTUAL BUFFERS/8 @VA05042 01446000
L R1,=A(X'501000') SIZE FOR 1280 VIRTUAL BUFFERS @VA05042 01447000
CL R2,=A(X'300000') OVER 3 MEG REAL STORAGE? @VA05042 01448000
BH SETBUF YES, SET 1280 VIRTUAL BUFFERS @VA05042 01449000
LA R0,80 640 VIRTUAL BUFFERS/8 @VA00919 01450000
L R1,=A(X'281000') SIZE FOR 640 VIRTUAL BUFFERS @VA00919 01451000
CL R2,=A(X'120000') OVER 1.1MEG REAL STORAGE ? @VA00919 01452000
BH SETBUF YES - 640 VIRTUAL BFFERS @VA00919 01453000
LA R0,40 320 VIRTUAL BUFFERS/8 @VA00919 01454000
L R1,=A(X'181000') SIZE FOR 320 VIRTUAL BUFFERS @VA00919 01455000
SETBUF L R3,=A(DMKPGTBN) ADDRESS OF VIRTUAL BUFFER CTR @VA00919 01456000
STC R0,0(,R3) STORE VALUE @VA00919 01457000
VBUFF A R1,=A(DMKCKP) VIRTUAL BUFFER SIZE PLUS ADDRESS @VA00919 01458000
* OF 'DMKCKP'. 01459000
CL R1,=A(X'FFF000') STORAGE OVER 16M VIRTUAL? @VA11813 01459080
BNH VBUFFOK NO WE ARE OK @VA11813 01459160
L R1,=A(X'FFF000') SET VIRTUAL STOR TO 16M @VA11813 01459240
LR R0,R1 INTO R0 ALSO @VA11813 01459320
S R0,=A(DMKCKP) MINUS THE END OF THE CP NUC @VA11813 01459400
BNP CPI955 ERROR-CP IS TOO LARGE @VA11813 01459480
SRL R0,15 NUMBER OF VIRTUAL BUFFERS @VA11813 01459560
* DIVIDED BY 8 01459640
C R0,F16 AT LEAST 128 VIRTUAL BUFFERS? @VA11813 01459720
BL CPI955 NOT ENOUGH STOR FOR CP @VA11813 01459800
STC R0,0(,R3) STORE VALUE IN DMKPGUBN @VA11813 01459880
VBUFFOK EQU * @VA11813 01459960
ST R1,VMSIZE SAVE SIZE IN SYSTEM'S VMBLOK. 01460000
SRL R1,12 BEGIN/ENDING VALUE FOR TABLES @V304635 01461000
BCTR R1,R0 MINUS 1 PAGE (BLD WILL @V304635 01462000
* COMPENSATE) 01463000
CALL DMKBLDRT,PARM=NEWSEGS+NEWPAGES BUILD THE @V304635 01464000
* COMPLETE SET 01465000
EJECT 01466000
L R1,=A(DMKSYSVL) GET ADDRESS OF SYSRES VOLID 01467000
LA R0,6 AND ITS LENGTH 01468000
CALL DMKSCNVS LOCATE RDEVBLOK FOR SYSRES 01469000
BNZ CPI1 NOT FOUND ---- SYSTEM GOING DOWN 01470000
LR R0,R1 SAVE THE RDEVBLOK ADDRESS @V407438 01471000
LH R1,SYSIPLDV GET THE IPL DEVICE CCU @V407438 01472000
CALL DMKSCNRU GET RBLOKS FOR SYSRES @V407438 01473000
USING RDEVBLOK,R8 ADDRESS THE RDEVBLOK @V407438 01474000
CLR R0,R8 SYSRES LABEL ON IPL'ED DEVICE? @V407438 01475000
BNE CPI1 NO -- ABEND CPI001 -- @VA01097 01476000
L R1,=A(DMKSYSNU) GET ADDRESS OF NUCLEUS CYLINDER 01477000
LH R1,0(,R1) GET CYLINDER 01478000
SLL R1,16 SHIFT TO HIGH ORDER BYTES 01479000
IC R1,RDEVCODE+1 GET DEVICE CODE IN LOW ORDER 01480000
LA R0,32 GET NUMBER OF PAGES/CYLINDER (2314) 01481000
CLI RDEVTYPE,TYP2314 IS IT ?? 01482000
BE STCYL IT IS ?? 01483000
LA R0,57 GET NUMBER PAGES/CYLINDER (3330) 01484000
CLI RDEVTYPE,TYP3330 DEVICE TYPE 3330 ? 01485000
BE STCYL IS IT ?? 01486000
LA R0,120 GET NUMBER PAGES/CYL (3350) @V304498 01487000
CLI RDEVTYPE,TYP3350 IS DEVICE 3350 ? @V304498 01488000
BE STCYL YES,SET PAGES/CYL LIMIT @V304498 01489000
LA R0,96 Get number pages/cyl (3375) HRC106DK 01489100
CLI RDEVTYPE,TYP3375 Is device 3375 ? HRC106DK 01489200
BE STCYL Yes,set pages/cyl limit HRC106DK 01489300
LA R0,150 Get number pages/cyl (3380) HRC106DK 01489400
CLI RDEVTYPE,TYP3380 Is device 3380 ? HRC106DK 01489500
BE STCYL Yes,set pages/cyl limit HRC106DK 01489600
LA R0,24 GET NUMBER PAGES/CYLINDER (2305) 01490000
* (3340) 01491000
STCYL ST R0,BALR0 SET LIMIT OF PAGES/CYLINDER 01492000
DROP R8 01493000
SR R2,R2 GET STARTING REAL PAGE NUMBER 01494000
L R3,VMSEG GET ADDRESS OF SEGMENT TABLE 01495000
USING SEGPAGE,R3 ADDRESSABILITY 01496000
LA R4,X'10' GET LENGTH OF CORTABLE ENTRY FOR BXLE 01497000
L R15,ACORETBL GET ADDRESS OF CORETABLE 01498000
USING CORTABLE,R15 ADDRESSABILITY FOR ENTRY 01499000
L R5,=A(DMKCKP) ADDRESS OF TOP OF CP CODE 01500000
SRL R5,8 DIVIDED BY 256 01501000
AR R5,R15 CORTABLE ENTRY FOR THAT PAGE 01502000
SR R5,R4 CORTABLE ENTRY FOR LAST CP PAGE 01503000
LA R7,X'0100' GET DASD PAGE NUMBER INCREMENT 01504000
ALR R1,R7 INITIALIZE 1ST PAGE ADDRESS 01505000
LA R10,X'08' GET LENGTH OF SWPTABLE ENTRY 01506000
EJECT 01507000
GETSEG DS 0H @V408246 01508000
NI SEGPAGE+3,255-1 CLEAR INVALID STE BIT @V408246 01509000
L R9,SEGPAGE GET PAGETABLE ADDR @V408246 01510000
LA R9,0(,R9) CLEAR TABLE LENGTH 01511000
USING PAGCORE,R9 ADDRESSABILITY 01512000
LA R6,16 GET NUMBER OF PAGES IN A SEGMENT FOR BCT 01513000
LR R8,R9 SAVE TABLE ADDRESS 01514000
S R8,F4 BACK UP TO SWPTABLE POINTER 01515000
L R8,0(,R8) POINT TO SWPTABLE 01516000
USING SWPFLAG,R8 ADDRESSABILITY 01517000
SPACE 01518000
VMINIT ST R1,SWPCYL INITIALIZE DASD ADDRESS IN SWPTABLE 01519000
LA R14,1 INCREMENT @VM01009 01520000
AH R14,VMPAGES ADD ALREADY RESIDENT SYSTEM PGS @VM01009 01521000
STH R14,VMPAGES AND RE-STORE @VM01009 01522000
L R14,=A(DMKSAV) GET ADDRESS OF DMKSAV @VA01682 01523000
SRL R14,8 REDUCE TO INDEX VALUE @VA01682 01524000
AL R14,ACORETBL POINT TO ACTUAL TABLE ENTRY @VA01682 01525000
CLR R15,R14 BEYOND ADDRESS OF DMKSAV ? @VA01682 01526000
BH BXLESWAP YES - GET NEXT PAGE TABLE ENTRY @VA02573 01527000
STH R2,PAGCORE INITIALIZE PAGTABLE ENTRY 01528000
STCM R8,B'0111',CORSWPNT+1 STORE ADDR. OF SWAP ENTRY @V408246 01529000
ST R9,CORPGPNT STORE ADDR. OF PAGE TABLE ENTRY @V408246 01530000
OI SWPFLAG,SWPCHG1 FORCE PAGE TO BE SWAPPED @V408246 01531000
ICM R14,B'1111',=A(DMKSLC) VIRT=REAL SYSTEM ? @VA01682 01532000
BZ BXLESWAP NO - CONTINUE @VA01682 01533000
SRL R14,8 REDUCE TO INDEX VALUE @VA01682 01534000
AL R14,ACORETBL POINT TO ACTUAL CORETBL ENTRY @VA01682 01535000
CL R15,ACORETBL IS THIS PAGE 0 ENTRY ? @VA01682 01536000
BE BXLESWAP IF YES - SKIP OVER IT. @VA01682 01537000
CLR R15,R14 IS ENTRY FOR VIRT=REAL @VA01682 01538000
BNL BXLESWAP IF NOT - SKIP OVER IT @VA01682 01539000
MVI CORFLAG,CORCFLCK+CORIOLCK LOCK FLAGS @V408246 01540000
MVC CORLCNT,F1 AND LOCK COUNT @V408246 01541000
BXLESWAP BXLE R15,R4,*+8 INDEX UP THE CORE TABLE 01542000
B MICTEST @V201537 01543000
SPACE 01544000
ALR R1,R7 BUMP PAGE NUMBER ON CYLINDER 01545000
ALR R2,R4 BUMP REAL PAGE ADDRESS 01546000
BCT R0,VMINDEX COUNT DOWN PAGES ON CYLINDER 01547000
ICM R1,2,=X'01' RESTART AT PAGE ONE 01548000
L R0,BALR0 RESTORE PAGE COUNT 01549000
AL R1,=XL4'00010000' BUMP CYLINDER NUMBER 01550000
SPACE 01551000
VMINDEX EQU * INDEX UP SWAP AND PAGE TABLES 01552000
ALR R8,R10 POINT TO NEXT SWPTABLE ENTRY 01553000
AL R9,F2 POINT TO NEXT PAGTABLE ENTRY @VA01682 01554000
BCT R6,VMINIT COUNT DOWN PAGES IN SEGMENT 01555000
LA R3,4(,R3) POINT TO NEXT STE 01556000
B GETSEG AND GO PROCESS NEXT SEGMENT 01557000
EJECT 01558000
ABEND 1 SYSRES DEVICE NOT FOUND OR INCORRECT 01559000
SPACE 2 01560000
* "SUBROUTINE" TO ISSUE SENSE (TO "CLEAN UP" CONTROL UNIT) 01561000
* IN CASE OF UNIT CHECK OR SIMILAR FAILURE 01562000
* 01563000
CPISNSEX LA R14,CPIDEVEN HERE TO GO TO "CPIDEVEN" WHEN THRU 01564000
* 01565000
CPISNSUB MVC CAW(4),=A(CPICCW1) "ISSUE SENSE CMD TO CLEAR INV. REQ." 01566000
SNSIOR LA R1,SENRETCT LOAD RETRY COUNT HRC011DK 01567690
SNSIO SIO 0(R15) ISSUE SENSE COMMAND @VA01504 01568000
ST R1,BALR1 SAVE R1 TEMPORARILY @V407466 01569000
BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01570000
DC X'0B00' START I/O ENTRY @V407466 01571000
L R1,BALR1 RESTORE R1 @V407466 01572000
BC 2,SNSIO LOOP ON SUBCHANNEL BUSY @V407466 01573000
BC 1,MOUNTDVI NOT READY CONTINUE NEXT DEVICE @VA01504 01574000
BC 8,SNTIO OK - GO CLEAR SUB CHANNEL @VA01504 01575000
USING RDEVBLOK,R8 ADDRESSABILITY @VA03547 01576000
TM RDEVTYPC,CLASTAPE TAPE DEVICE? @VA03547 01577000
BO SNTIO YES, CLEAR SUBCH & GO TO CPIDEVEN@VA03547 01578000
DROP R8 @VA03547 01579000
TM CSW+4,UC IS IT A UNIT CHECK @VA01504 01580000
BO SNRETRY YES THEN DO ERROR RETRY @VA01504 01581000
TM CSW+5,CCC+IFCC THESE ERRORS ARE PERMANENT @VA01504 01582000
BO MOUNTDVI CONTINUE WITH NEXT DEVICE @VA01504 01583000
SNRETRY BCT R1,SNSIO RETRY 16 TIMES @VA01504 01584000
B MOUNTDVI PERRMENT ERROR TRY NEXT DEVICE @VA01504 01585000
* 01586000
SNTIO TIO 0(R15) CLEAR THE SUBCHANNEL @VA01504 01587000
BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01588000
DC X'0E00' TEST I/O ENTRY @V407466 01589000
BC 2,SNTIO CC=2, CHANNEL OR SUBCHANNEL BUSY @V407466 01590000
BR R14 "RETURN" (OR GO DIRECTLY TO CPIDEVEN) 01591000
SPACE 2 01592000
TRACESUB EQU * @V407595 01593000
STM R14,R3,TEMPSAVE SAVE REGS REQUIRED BY TRACE @V407595 01594000
IC R0,N0(R1) LOAD THE TRACE CODE @V407595 01595000
TRACE CODE=(R0),R14,R2,R3 OBTAIN TRACE TABLE ENTRY @V407595 01596000
STCM R1,B'1000',1(R14) SAVE CONDITION CODE @V407466 01597000
NI 1(R14),X'30' TURN OFF ILC AND PROGRAM MASK BITS @V407466 01598000
STH R15,2(,R14) SAVE DEVICE ADDRESS @V407466 01599000
ST R1,4(,14) SAVE RETURN ADDRESS @V407466 01600000
MVC 8(4,R14),CAW SAVE CAW @V407466 01601000
XC 12(4,R14),12(R14) CLEAR LAST FIELD @V407466 01602000
CLI 1(R14),X'10' CONDITION CODE 1 ? @V407466 01603000
BNE *+10 NO -- DON'T SAVE CSW @V407466 01604000
MVC 12(4,R14),CSW+4 SAVE RIGHT HALF OF CSW @V407466 01605000
LM R14,R3,TEMPSAVE RESTORE REGS @V407595 01606000
SPM R1 RESTORE CONDITION CODE @V407466 01607000
B 2(,R1) RETURN TO CALLER+2 @V407466 01608000
CPISAVRE DC F'0' @V407466 01609000
SPACE 01610000
DUPVOLD EQU * BUILD MESSAGE FOR DUPLICATE LABELS 01611000
L R14,TEMPR14 PICK UP PREVIOUS GR14 VALUE 01612000
MVC DUPSER1,0(R14) MOVE VOLUME SERIAL TO OUTPUT MESSAGE 01613000
LR R8,R1 PASS RDEVBLOK IN GPR8 01614000
CALL DMKSCNRD GET REAL DEVICE ADDRESS 01615000
CALL DMKCVTBH CONVERT TO DECIMAL 01616000
STCM R1,B'0111',DUPVOL2 STORE IN OUTPUT MESSAGE 01617000
L R1,TEMPR15 GET DEVICE ADDRESS OF 1ST VOL 01618000
CALL DMKCVTBH CONVERT TO DECIMAL 01619000
STCM R1,B'0111',DUPVOL1 STORE IN OUTPUT MESSAGE 01620000
LA R0,(DUPMSGL+8+7)/8 ACQ STORAGE FOR MSG + PTRS @V407466 01621000
CALL DMKFREE ... 01622000
MVC 8(DUPMSGL,R1),DUPMSG MOVE MSG TO BUFFER @V3E6466 01623000
LA R14,DUPMSGL LENGTH OF TEXT PORTION @V3E6466 01624000
ST R14,4(,R1) STORE MSG LENGTH IN BUFFER @V3E6466 01625000
L R0,DUPMSGPT GET DUPLICATE VOL SER MESSAGE STACK 01626000
ST R1,DUPMSGPT PLACE THIS MESSAGE ON TOP 01627000
ST R0,0(,R1) ... 01628000
B MOUNTDVI GO PROCESS NEXT DEVICE 01629000
EJECT 01630000
MICTEST EQU * TEST FOR VM HARDWARE ASSIST @V201520 01631000
* TO DO THIS, DO AN SSM INSTRUCTION IN PROBLEM STATE. IF CP RECEIVES 01632000
* THE PROGRAM INTERRUPT, VM ASSIST IS NOT PRESENT. IF VM 01633000
* ASSIST HANDLES THE SSM, DO AN SVC TO GET BACK TO SUPERVISOR STATE. 01634000
* 01635000
LA R1,CPISVC SET SVC NEW PSW TO POINT TO @V201537 01636000
ST R1,SVCNPSW+4 CPISVC @V201537 01637000
LA R1,CPIPROG SET PROGRAM NEW PSW TO POINT @V201537 01638000
ST R1,PRNPSW+4 TO CPIPROG @V201537 01639000
MVC RUNCR0(4),CPCREG0 SET UP REAL CR0 @VM08542 01640000
MVC RUNCR1(4),VMSEG SET UP REAL CR1 @VM08542 01641000
* SET UP MICROCODE POINTER LIST 01642000
MVC TEMPR2,VMSEG SYSTEM SEGMENT TABLE IN PTR LIST @V201537 01643000
LA R1,RUNCR0 VIRT CR0 SAME AS REAL CR0 @VM08542 01644000
ST R1,TEMPR3 @V201537 01645000
MVC TEMPR4(4),ZEROES VIRT. PSW POINTER 01646000
LA R1,BALRSAVE WORKSPACE ADDRESS @V201537 01647000
ST R1,TEMPR5 @V201537 01648000
* SET UP C-REG 6 - USE TEMPR0 TO SET IT UP 01649000
LA R1,TEMPR2 ADDRESS OF MICROCODE POINTER LIST@V201537 01650000
ST R1,TEMPR0 INTO C-REG 6 @V201537 01651000
OI TEMPR0,VMMFE+VMMSVC TURN MICROCODE ON & SVCS OFF@V201537 01652000
LCTL C6,C6,TEMPR0 LOAD CR6 @V201537 01653000
LCTL C0,C1,RUNCR0 LOAD REAL CR0 AND CR1 @VM08542 01654000
LPSW TESTPSW GO INTO PROBLM STATE & ISSUE SSM @V201537 01655000
DS 0D @V201537 01656000
TESTPSW DC X'040D0000' PROB STATE PSW @V201537 01657000
DC A(SSMTEST) 01658000
SSMTEST SSM *+1 WILL MICROCODE HANDLE THIS? @V201520 01659000
SVC 30 NO, THEN MUST RETURN TO @V201537 01660000
* SUPERVISOR STATE 01661000
CPIPROG EQU * IF MICROCODE DOESNT HANDLE LRA, @V201537 01662000
* PROGRAM INTERRUPT COMES HERE 01663000
NI CPSTAT2,X'FF'-CPMICAVL-CPMICON INDICATE VM @V201537 01664000
* ASSIST NOT AVAILABLE & NOT ON 01665000
B NPSWS @V201537 01666000
CPISVC EQU * IF MICROCODE HANDLES LRA, SVC @V201537 01667000
* INTERRUPT COMES HERE 01668000
OI CPSTAT2,CPMICAVL+CPMICON INDICATE VM ASSIST @V201537 01669000
* AVAILABLE & ON 01670000
SPACE 01671000
NPSWS MVC SVCNPSW(8),CPIPSWS+8 RESTORE SVC NEW PSW @V201537 01672000
MVC PRNPSW(8),CPIPSWS+2*8 RESTORE PROGRAM NEW PSW @V201537 01673000
LCTL C6,C6,ZEROES RESET ASSIST CONTROL REGISTER @V386198 01674000
EJECT 01675000
* LOCATE OPERATOR'S CONSOLE & ATTEMPT TO WRITE SYSTEM MSG 01676000
L R10,=A(DMKRIOCN) GET CONSOLE RDEVBLOK DISPLACEMENT 01677000
L R9,4(R10) ACCESS COUNT OF ALT CONSOLES @V60BCAA 01678000
LH R8,0(,R10) GET RDEVBLOK DISPLACEMENT 01679000
SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 01680000
A R8,ARIODV GET CONSOLE RDEVBLOK 01681000
USING RDEVBLOK,R8 01682000
OI RDEVFLAG,RDEVENAB PRIMARY CONSOLE IS ENABLED @V200820 01683000
LH R15,2(,R10) GET DEVICE ADDRESS 01684000
BAL R14,STRTERM START PRIMARY CONSOLE IF THERE @V200730 01685000
BNZ GETALT NOT THERE, TRY ALTERNATE @V200730 01686000
BAL R14,TSTERM TEST TERMINAL ENDING STATUS @V200730 01687000
BZ ONLINE OK, CONT WITH PRIMARY CONSOLE @V200730 01688000
GETALT LA R10,4(R10) POINT TO COUNT OF ALT CONSOLES @V60BCAA 01689000
ALTLOOP NI RDEVFLAG,X'FF'-RDEVENAB DISABLE THIS CONSOLE @V60BCAA 01690000
LTR R9,R9 ANY MORE ALTERNATE CONSOLES? @V60BCAA 01691000
BZ CPIERR0 CAN'T FIND A CONSOLE @V60BCAA 01692000
BCTR R9,0 DECREMENT COUNT FOR NEXT TIME @V60BCAA 01693000
* THROUGH LOOP 01694000
LA R10,4(R10) POINT TO NEXT ALT CONSOLE DATA @V60BCAA 01695000
L R8,=A(DMKRIOCN) HRC201DK 01695300
MVC 0(4,R8),0(R10) SET AS THE PRIMARY HRC201DK 01695600
LH R8,0(R10) GET ALTERNATE CONS. DISPLACEMENT @V60BCAA 01696000
SLL R8,3(0) CONVERT TO BYTE INDEX @V60BCAA 01697000
AL R8,ARIODV RDEVBLOK ADDRESS @V60BCAA 01698000
OI RDEVFLAG,RDEVENAB ENABLE THIS ALTERNATE CONSOLE @V60BCAA 01699000
LH R15,2(R10) ALTERNATE CONSOLE DEVICE ADDRESS @V60BCAA 01700000
BAL R14,STRTERM START ALTERNATE CONSOLE @V60BCAA 01701000
BNZ ALTLOOP CAN'T FIND THAT ALT CONSOLE @V60BCAA 01702000
BAL R14,TSTERM TEST ENDING STATUS @V60BCAA 01703000
BZ ONLINE OK, CONTINUE WITH THIS ALT CONS. @V60BCAA 01704000
B ALTLOOP CAN'T GET TO THIS ALT CONS--TRY @V60BCAA 01705000
* ANOTHER ONE 01706000
CPIERR0 LPSW XWAIT2 CAN'T GET TO CONSOLES - GIVE UP @V386298 01707000
SPACE 01708000
STRTERM LA R1,CPICCW1 SENSE CCW @V200730 01709000
ST R1,CAW SET CAW @V200730 01710000
LTR R15,R15 DOES DEVICE EXIST ?? @V200730 01711000
BCR 4,R14 (BM) NO -- EXIT IMMEDIATELY @V200820 01712000
CLI RDEVTYPC,CLASGRAF GRAPHIC DEVICE, 3270, 3066 ? @V200730 01713000
BE STRTGRF YES, START THEM @V200730 01714000
CLI RDEVTYPC,CLASTERM TERMINAL TYPE ?? @V200730 01715000
BCR 7,R14 (BNE) NO -- EXIT WITH BAD CC @V200820 01716000
CLI RDEVTYPE,TYP3210 3210 TYPE DEVICE ?? @V200730 01717000
BE STRTGRF YES, START IT UP @V200730 01718000
TIO 0(R15) MAKE SURE IT EXISTS @V200820 01719000
BCR 1,R14 NOPE - GIVE UP NOW @V200820 01720000
GOTO DMKCNSEN ENABLE THE T.P. LINE @V200820 01721000
SPACE 01722000
STRTGRF TIO 0(R15) TEST DEVICE @V200730 01723000
BC 2,*-4 LOOP IF BUSY @V200730 01724000
LA R2,100 LOOP COUNT @V200730 01725000
STRTSIO SIO 0(R15) START SENSE TO DEVICE @V200730 01726000
BCR 8+1,R14 RETURN IF O.K. OR DEAD @V200820 01727000
BCT R2,STRTSIO LOOP TRYING TO START @V200730 01728000
TM RDEVTYPE,TYP3277+TYP3278 IS THIS A 3277 OR 3278 @V60A6B6 01729000
BZ RET3277 NO - RETURN @VA08072 01730000
CLI 4+CSW,X'50' IS STAT SM + BUSY? @VA08072 01731000
BE CLRCHAN GO CLEAR THE 3277 INTURPTS @VA08072 01732000
RET3277 TM RDEVTYPE,X'FF' SET CC=4 @VA08072 01733000
BR R14 WON'T START - BOO @V200720 01734000
SPACE 01735000
CLRCHAN STM R3,R9,CHASAVE SAVE REGS @VA08072 01736000
LR R3,R15 GET IPL DEV ADDR @VA08072 01737000
SRL R3,8 ONLY NEED THE CHANNEL ADDR @VA08072 01738000
LA R9,31 BUILD CHAN BIT POSITION @VA08072 01739000
SR R9,R3 THIS IS IT @VA08072 01740000
STH R9,SELDCHAN THIS IS THE ONE WE NEED @VA08072 01741000
LA R9,1 SETUP MASK BIT @VA08072 01742000
DC X'8990' SLL R9,SELDCHAN @VA08072 01743000
SELDCHAN DS H SHIFT TO PROPER CHANNEL MASK @VA08072 01744000
ST R9,CHANMASK STORE IT @VA08072 01745000
LA R3,CHANRET @VA08072 01746000
ST R3,IONPSW+4 @VA08072 01747000
STCTL C2,C2,CTRLSAV SAVE THE CHANNEL CTRL REG @VA08072 01748000
LCTL C2,C2,CHANMASK LOAD OUR NEW MASK @VA08072 01749000
LPSW CHANWT WAIT FOR 3277 INTERUPT @VA08072 01750000
CHANRET MVC IONPSW+4(4),=A(DMKIOTIN) RETURN TO NORMAL @VA09587 01751000
LCTL C2,C2,CTRLSAV RESTORE CTRL REG @VA08072 01752000
LM R3,R9,CHASAVE RESTORE REGS @VA08072 01753000
B STRTGRF TRY AGAIN @VA08072 01754000
TSTERM CLI RDEVTYPC,CLASTERM TERMINAL DEVICE ?? @V200730 01755000
BE TSTGRF YES - JUST DRAIN THE INTERRUPT @V200720 01756000
MVI RDEVTFLG,RDEVRUN GRF DEVICE RUNNING @V200730 01757000
TSTGRF TIO 0(R15) TEST FOR SENSE END @V200730 01758000
BC 2,TSTGRF LOOP IF STILL BUSY @V200730 01759000
TM CPISNS,X'F0' ANY SENSE BITS ON ?? @V200730 01760000
BR R14 RETURN WITH COND. CODE SET @V200730 01761000
EJECT 01762000
LTORG 01763000
EJECT 01764000
ENTRY DMKCPIEM @VM03170 01765000
* DMKCPIEM - ENTER VIA 'GOTO' FROM SLIH 01766000
DROP R12,R13 @VM03170 01767000
USING DMKCPIEM,R12 @VM03170 01768000
DMKCPIEM DS 0D @VM03170 01769000
LM R12,R13,BASEREGS SET UP BASE REGISTERS @VM03170 01770000
B ONLINE1 CONTINUE @VM03170 01771000
USING DMKCPINT,R12,R13 @VM03170 01772000
SPACE 1 01773000
ONLINE EQU * @VM03170 01774000
LM R12,R13,BASEREGS ESTABLISH NEW BASE REGISTER @VM03170 01775000
USING DMKCPIEM,R12,R13 @VM03170 01776000
B ONLINE1 CONTINUE @VM03170 01777000
BASEREGS DC A(DMKCPIEM,DMKCPIEM+4096) BASE REGISTERS @VM03170 01778000
SPACE 1 01779000
SHUTSYS EQU * HERE IF SYSTEM IS TO BE SHUT DOWN@VM03170 01780000
L R0,=A(SHUTM1L) GET MESSAGE LENGTH HRC028DK 01781590
L R1,=A(SHUTM1) GET MESSAGE PTR HRC028DK 01782180
CALL DMKQCNWT,PARM=NORET+NOTIME @VM03170 01783000
L R0,=A(SHUTM2L) GET MESSAGE LENGTH HRC028DK 01784590
L R1,=A(SHUTM2) GET MESSAGE PTR HRC028DK 01785180
CALL DMKQCNWT,PARM=NOTIME @VM03170 01786000
LPSW XWAIT1 LOAD DISABLED WAIT STATE PSW @VM03170 01787000
SPACE 3 01788000
CPIERR1 EQU * HERE WHEN IMPOSSIBLE TO GET TO @VM03170 01789000
* A CONSOLE 01790000
LPSW XWAIT2 LOAD DISABLED WAIT STATE PSW @VM03170 01791000
SPACE 01792000
CPI955 EQU * HERE WHEN VM/370 IS TOO LARGE @VM03170 01793000
* FOR MACHINE 01794000
USING DMKCPINT,R12,R13 MUST SPECIFY THIS SINCE WE @VA11813 01794100
* CAN COME HERE 01794200
* FROM VBUFF ROUTINE 01794300
LM R12,R13,BASEREGS SET UP BASE REGISTERS @VA11813 01794400
USING DMKCPIEM,R12,R13 NOW BASE REGS ARE OK @VA11813 01794500
L R11,ASYSOP POINT TO OPERATOR VMBLOK @VA11813 01794600
L R0,=A(CPI955LN) LENGTH OF MESSAGE HRC028DK 01795590
L R1,=A(CPI955MG) ADDRESS OF THE MESSAGE HRC028DK 01796180
CALL DMKQCNWT,PARM=NOTIME+ALARM SEND MESSAGE @VM03170 01797000
SPACE 01798000
NOSTOR LPSW XWAIT3 LOAD DISABLED WAIT STATE PSW @V407466 01799000
CPI955SW DC X'00' SWITCH FOR ISSUE OF MSG 955W @V60B7AB 01799100
EJECT 01800000
* DISPATCH TIME SLICE TABLE - CPU TIMER UNITS 01801000
DS 0H @VM03170 01802000
TS135 DC X'0135' SYSTEM/370 MODEL 135 @VM03170 01803000
DC X'00000000493E0000' QUEUE 1 = 300 MS @VM03170 01804000
DC X'00000001E8480000' QUEUE 2 = 2.0 SEC @VM03170 01805000
DC X'00003D09' 15625 BCT @ 3.25 MICROSEC @VA05431 01806000
SPACE 01807000
TS138 DC X'0138' SYSTEM/370 MODEL 138 @V386298 01808000
DC X'00000000493E0000' QUEUE 1 = 300 MS @V386298 01809000
DC X'00000001E8480000' QUEUE 2 = 2.0 SEC @V386298 01810000
DC X'00003D09' 15625 BCT @ 3.25 MICROSEC @VA05431 01811000
SPACE 01812000
TS4331 DC X'4331' SYSTEM 4300 MODEL 4331 @V60A6B6 01813000
DC X'00000000493E0000' QUEUE 1 = 300 MS @V60A6B6 01814000
DC X'00000001E8480000' QUEUE 2 = 2.0 SEC @V60A6B6 01815000
DC X'00003D09' 15625 BCT @ 3.25 MICROSEC @V60A6B6 01816000
SPACE 01817000
TS145 DC X'0145' SYSTEM/370 MODEL 145 @VM03170 01818000
DC X'00000000493E0000' QUEUE 1 = 300 MS @VM03170 01819000
DC X'00000001E8480000' QUEUE 2 = 2.0 SEC @VM03170 01820000
DC X'00007A12' 31250 BCT @ 1.6 MICROSEC @VA05431 01821000
SPACE 01822000
TS148 DC X'0148' SYSTEM/370 MODEL 148 @V386298 01823000
DC X'00000000493E0000' QUEUE 1 = 300 MS @V386298 01824000
DC X'00000001E8480000' QUEUE 2 = 2.0 SEC @V386298 01825000
DC X'00007A12' 31250 BCT @ 1.6 MICROSEC @VA05431 01826000
SPACE 01827000
TS155 DC X'0155' SYSTEM/370 MODEL 155-II @VM03170 01828000
DC X'0000000030D40000' QUEUE 1 = 200 MS @VM03170 01829000
DC X'00000000F4240000' QUEUE 2 = 1.0 SEC @VM03170 01830000
DC X'0000F424' 52500 BCT @ .8 MICROSEC @VA05431 01831000
SPACE 01832000
TS158 DC X'0158' SYSTEM/370 MODEL 158 @VM03170 01833000
DC X'0000000030D40000' QUEUE 1 = 200 MS @VM03170 01834000
DC X'00000000F4240000' QUEUE 2 = 1.0 SEC @VM03170 01835000
DC X'0000F424' 62500 BCT @ .8 MICROSEC @VA05431 01836000
SPACE 01837000
TS4341 DC X'4341' SYSTEM 4300 MODEL 4341 @V60A6B6 01838000
DC X'0000000030D40000' QUEUE 1 = 200 MS @V60A6B6 01839000
DC X'00000000F4240000' QUEUE 2 = 1.0 SEC @V60A6B6 01840000
DC X'0000F424' 62500 BCT @ .8 MICROSEC @V60A6B6 01841000
SPACE 01842000
TS165 DC X'0165' SYSTEM/370 MODEL 165-II @VM03170 01843000
DC X'00000000186A0000' QUEUE 1 = 100 MS @VM03170 01844000
DC X'00000000F4240000' QUEUE 2 = 1.0 SEC @VM03170 01845000
DC X'00017848' 125000 BCT @ .4 MICROSEC @VA05431 01846000
SPACE 01847000
TS168 DC X'0168' SYSTEM/370 MODEL 168 @VM03170 01848000
DC X'00000000186A0000' QUEUE 1 = 100 MS @VM03170 01849000
DC X'00000000F4240000' QUEUE 2 = 1.0 SEC @VM03170 01850000
DC X'00017848' 125000 BCT @ .4 MICROSEC @VA05431 01851000
SPACE 01852000
TS3033 DC X'3033' SYSTEM/370 MODEL 3033 @V5088AB 01853000
DC X'00000000186A0000' QUEUE 1 = 100MS. @V5088AB 01854000
DC X'00000000F4240000' QUEUE 2 = 1.0 SEC. @V5088AB 01855000
DC X'0007A120' BCT @ .1 MICROSEC. @V5088AA 01856000
SPACE 01857000
TS3031 DC X'3031' SYSTEM/370 MODEL 3031 @V5088AB 01858000
DC X'0000000030D40000' QUEUE 1 = 200 MS. @V5088AB 01859000
DC X'00000000F4240000' QUEUE 2 = 1.0 SEC. @V5088AB 01860000
DC X'0000F424' BCT @ .8 MICROSEC. @V5088AB 01861000
SPACE 01862000
TS3032 DC X'3032' SYSTEM/370 MODEL 3032 @V5088AB 01863000
DC X'00000000186A0000' QUEUE 1 = 100 MS. @V5088AB 01864000
DC X'00000000F4240000' QUEUE 2 = 1.0 SEC. @V5088AB 01865000
DC X'0001E848' BCT @ .4 MICROSEC. @V5088AA 01866000
SPACE 01867000
WAITCNT DC F'625000' DEFAULT TO 158 COUNT @V60A6B6 01868000
SPACE 01870000
CPISTAT DC X'00' CPI PROCESSING STATUS @V407438 01871000
ALTPATH EQU X'80' ALT. PATH GENED IN DMKRIO @V407438 01872000
SPACE 01873000
DS 0D @VM03170 01874000
CPICCW1 CCW X'04',CPISNS,SILI,32 SENSE UP TO 32 BYTES HRC011DK 01875490
SPACE 01876000
CPICCWRL CCW X'94',CPIRLD,SILI,6 DASD "RELEASE" CCW @V407438 01877000
CPICCWRT CCW X'D4',CPIRLD,SILI,6 TAPE "RELEASE" CCW @V407438 01878000
CPISNSE4 CCW X'E4',CPISNS,SILI,7 SENSE ID HRC011DK 01878500
SPACE 01879000
CPICCW2 CCW X'07',CPISEEK,CC,6 READ LABEL OR WRITE DMKSYM @VM03170 01880000
CCW X'08',*+16,0,0 TIC TO SEARCH ID EQ @V407438 01881000
CCW X'03',0,SILI,1 NOOP IN CASE OF 3330V CYL FAULT @V407438 01882000
CCW X'31',CPISEEK+2,CC,5 @VM03170 01883000
CCW X'08',*-8,0,0 @VM03170 01884000
CPICCW4 CCW X'06',CPIATABL,CC+SILI,80 CHGD TO WRITE FOR SYM @V407438 01885000
CCW X'03',0,SILI,1 @VM03170 01886000
CPICCW2E EQU * IF LBL GETS READ, CSW POINTS HERE@V407438 01887000
SPACE 01888000
CPICCW3 CCW X'07',CPISEEK2,CC,6 READ ALLOCATION RECORD @VM03170 01889000
CCW X'31',CPISEEK2+2,CC,5 @VM03170 01890000
CCW X'08',*-8,0,0 @VM03170 01891000
CPICCW3L CCW X'06',CPIATABL,CC+SILI,1024 HRC106DK 01892000
CCW X'03',*,SILI,1 @VM03170 01893000
SPACE 01894000
CPICCW5 CCW X'05',DMKSYMTB,CC,4096 WRITE SYMBOL TABLE FOR @VM03170 01895000
* DUMP 01896000
SPACE 01897000
XWAIT1 DC X'0002000000000006' @VM03170 01898000
XWAIT2 DC X'0002000000000005' @VM03170 01899000
XWAIT3 DC X'000200000000000D' REAL MACHINE TOO SMALL FOR @VM03170 01900000
* VM/370 01901000
XWAIT9 DC X'0002000000000009' VOLUME NEEDED FOR ERR, WRM, HRC075DK 01901500
* OR CKP CYLS NOT MOUNTED HRC075DK 01901600
XWAIT4 DC X'0002000000000015' @V407595 01902000
XWAITCSS DC X'0002000000000016' FAILED TO CONNECT CHANNELS @V60B7AB 01902100
SPACE 01903000
SUSP CCW X'87',SUSPORD,CC,4 EXEC MSC ORDER @V50A2B5 01904000
CCW X'03',0,SILI,1 MUST BE CHAINED TO NOP @V407466 01905000
SUSPORD DC AL1(X'22',0,B'10000000',0) SUSPEND IMMEDIATE @V407466 01906000
SPACE 01907000
SPACE 1 01908000
TOD24HR DC X'000141DD76000000' 24 HOUR TOD CLOCK VALUE @VM03170 01909000
SPACE 2 01910000
CPIPSWS DC A(MCHEKENB,DMKPSAEX) EXTERNAL NEW PSW @VM03170 01911000
DC A(MCHEKENB,DMKSVCIN) SVC NEW PSW @V407595 01912000
DC A(MCHEKENB,DMKPRGIN) PROGRAM NEW PSW @VM03170 01913000
DC A(WAITON,X'000000B') MACHINE NEW PSW (INITIAL) @VM03170 01914000
DC A(MCHEKENB,DMKIOTIN) I/O NEW PSW @VA09587 01915000
MCKPSW DC A(XMODEON,DMKMCHIN) MACHINE NEW PSW (FINAL) @VM03170 01916000
RESTPSW DC A(MCHEKENB,DMKPSADU) RESTART NEW PSW @VM03170 01917000
SPACE 01918000
PLST2314 DC A(DMKPGTP4,DMKPGTT4) @VM03170 01919000
PLST3340 DC A(DMKPGT4P,DMKPGT4T) @VM03170 01920000
PLST3330 DC A(DMKPGTP0,DMKPGTT0) @VM03170 01921000
PLST3350 DC A(DMKPGT5P,DMKPGT5T) @VM03170 01922000
PLST3375 DC A(DMKPGT7P,DMKPGT7T) HRC106DK 01922100
PLST3380 DC A(DMKPGT8P,DMKPGT8T) HRC106DK 01922200
PLST2305 DC A(DMKPGTP5,DMKPGTT5) @VM03170 01923000
SPACE 01924000
CTLREGS DS 0F @VM03170 01925000
DC AL1(BLKMPX+NOSSKCK) HRC004DK 01926290
DC AL1(PAGE4K,CKCMASK,INTMASK+KEYMASK) HRC004DK 01926580
DC F'0' @VM03170 01927000
DC X'FFFFFFFF' @VM03170 01928000
DC 11F'0' @V407595 01929000
DC AL1(HARDSTOP+SYNCLOG+DAMAGRPT,0,0,0) @VM03170 01930000
SPACE 01931000
UDRPSTRT DC A(0) SAVEAREA FOR POSSIBLE DIRECTORY @VM03170 01932000
* ADDRESS 01933000
UDRNSTRT DC A(0) SAVEAREA FOR NUC. DISK @VM03170 01934000
* DIRECTORY ADDRESS 01935000
UDRASTRT DC A(0) SAVEAREA FOR ALT. DISK @VM03170 01936000
* DIRECTORY ADDRESS 01937000
SPACE 1 01938000
DUPMSGPT DC F'0' PTR TO DUPLICATE VOLUME SERIAL @VM03170 01939000
* MESSAGES 01940000
SPACE 1 01941000
BDYCHK DS 0F ROUNDING CONSTANT @V396414 01942000
DC X'01FFF000' ..... @V396414 01943000
SPACE 01944000
DUMPDTBL DS 0F @VM03170 01945000
DC A(DMKPGTT4) PTR TO RDEVBLOK CHAIN FOR 2314 @VM03170 01946000
* TEMP ALOC 01947000
DC F'32' NUMBER OF RECORDS/CYLINDER FOR @VM03170 01948000
* 2314 01949000
DC X'00000000FFFFFFFF' INITIAL RECMAP SETTING @VM03170 01950000
DC X'FFFFFFFFFFFFFFFF' @VM03170 01951000
DC X'FFFFFFFFFFFFFFFF' HRC106DK 01951100
DC A(DMKPGT4T) RDEVBLOK TEMP ALLOC CHAIN (3340) @VM03170 01952000
DC F'24' PAGES/CYLINDER (3340) @VM03170 01953000
DC X'000000FFFFFFFFFF' INITIAL RECMAP SETTING @VM03170 01954000
DC X'FFFFFFFFFFFFFFFF' @VM03170 01955000
DC X'FFFFFFFFFFFFFFFF' HRC106DK 01955100
DC A(DMKPGTT0) PTR TO RDEVBLOK CHAIN FOR 3330 @VM03170 01956000
* TEMP ALOC 01957000
DC F'57' NUMBER OF RECORDS/CYLINDER FOR @VM03170 01958000
* 3330 01959000
DC X'000000000000007F' INITIAL RECMAP SETTING @VM03170 01960000
DC X'FFFFFFFFFFFFFFFF' @VM03170 01961000
DC X'FFFFFFFFFFFFFFFF' HRC106DK 01961100
DC A(DMKPGT5T) RDEVBLOK TEMP ALLOC CHAIN (3350) @VM03170 01962000
DC F'120' NUMBER RECORDS/CYLINDER (3350) @VM03170 01963000
DC X'0000000000000000' INITIAL RECMAP SETTING @VM03170 01964000
DC X'00000000000000FF' @VM03170 01965000
DC X'FFFFFFFFFFFFFFFF' HRC106DK 01965100
DC A(DMKPGT7T) RDEVBLOK temp alloc chain (3375) HRC106DK 01965150
DC F'96' Number records/cylinder (3375) HRC106DK 01965200
DC X'0000000000000000' Initial recmap setting HRC106DK 01965250
DC X'00000000FFFFFFFF' HRC106DK 01965300
DC X'FFFFFFFFFFFFFFFF' HRC106DK 01965350
DC A(DMKPGT8T) RDEVBLOK temp alloc chain (3380) HRC106DK 01965400
DC F'150' Number records/cylinder (3380) HRC106DK 01965450
DC X'0000000000000000' HRC106DK 01965500
DC X'0000000000000000' HRC106DK 01965550
DC X'000003FFFFFFFFFF' HRC106DK 01965600
DC A(DMKPGTT5) PTR TO RDEVBLOK CHAIN FOR 2305 @VM03170 01966000
* TEMP ALOC 01967000
DC F'24' NUMBER OF RECORDS/CYLINDER FOR @VM03170 01968000
* 2305 01969000
DC X'000000FFFFFFFFFF' INITIAL RECMAP SETTING @VM03170 01970000
DC X'FFFFFFFFFFFFFFFF' @VM03170 01971000
DC X'FFFFFFFFFFFFFFFF' HRC106DK 01971100
SPACE 01972000
ALOCTBL DC X'8040201008040201' @VM03170 01973000
SPACE 01974000
CPISNS DC 32X'00' SENSE DATA FIELD EXTENDED HRC011DK 01975090
CPISNSB0 EQU CPISNS+00 HRC011DK 01975180
CPISNSB1 EQU CPISNS+01 HRC011DK 01975270
CPISNSB2 EQU CPISNS+02 HRC011DK 01975360
CPISNSB3 EQU CPISNS+03 HRC011DK 01975450
CPISNSB4 EQU CPISNS+04,2 HRC011DK 01975540
CPISNSB6 EQU CPISNS+06 HRC011DK 01975630
CPIRLD DC 6X'FF' "RELEASE" DATA FIELD @VM03170 01976000
CPISEEK DC XL7'3' CYL 0, TRK 0, REC 3 @VM03170 01977000
CPISEEK2 DC XL7'4' @V386198 01978000
SPACE , HRC028DK 01978200
* KEEP IN THIS ORDER !! HRC028DK 01978400
WARMFLAG DC X'00' WARM START FLAGS2 HRC028DK 01978600
WARMCOLD DC X'00' WARM START FLAGS @V386198 01979000
EFC0 DC X'EFC0' MASK INDICATORS FOR C-REG 14 @V386198 01980000
P3800 DC AL1(CLASURO,TYP3800) @V60B9BA 01981000
CHANMASK DS F @VA08072 01982000
CTRLSAV DS F @VA08072 01983000
CHASAVE DS 7F REG SAVE AREA 3 TO 9 @VA08072 01984000
DS 0D ALIGNMENT @VA08072 01985000
CHANWT DC X'020A000000000004' WAIT FOR 3277'S TO CLEAR @VA08072 01986000
EJECT 01987000
NOOP DC X'0700,47000000' NO-OP FOR MICROCODE ASSISTS HRC035DK 01988000
CPATABLE DS 0F CP ASSIST INSTRUCTION ADDRESSES: @V386198 01990000
CPATFREE DC V(DMKFREE) E614 @VA14280 01991000
CPATFRET DC V(DMKFRET) E615 @VA14280 01992000
DC V(DMKPTRLK) E602 @V386198 01993000
DC V(DMKPTRUL) E603 @V386198 01994000
DC V(DMKCCW0) E604 @V3M4026 01995000
CPATUNTF DC V(DMKUNTFR) E605 HRC035DK 01996490
DC V(DMKSCNVU) E606 @V386198 01997000
CPATDSP1 DC V(DMKDSP1) E607 HRC035DK 01998490
DC V(DMKCCWB1) E608 @V386198 01999000
DC V(DMKCCWB2) E608 @V386198 02000000
DC V(DMKCCWB3) E608 @V386198 02001000
DC V(DMKCCWB4) E608 @V386198 02002000
DC V(DMKCCWB5) E608 @V386198 02003000
DC V(DMKCCWB6) E608 @V386198 02004000
DC V(DMKCCWB7) E608 @V386198 02005000
DC V(DMKCCWB8) E608 @V386198 02006000
DC V(DMKCCWL1) E609 @V386198 02007000
DC V(DMKCCWL2) E609 @V386198 02008000
DC V(DMKCCWL3) E609 @V386198 02009000
DC V(DMKCCWL4) E609 @V386198 02010000
DC V(DMKCCWL5) E609 @V386198 02011000
DC V(DMKVATZS) E60A @V386198 02012000
DC V(DMKVATZP) E60B @V386198 02013000
DC V(DMKCCW1) E60C @V3M4026 02014000
DC V(DMKDSP0) E60D @V3M4026 02015000
DC V(DMKSCNRU) E60E @V386198 02016000
DC V(DMKCCWGN) E60F @V386198 02017000
DC V(DMKUNTRN) E610 @V386198 02018000
CPATDSP2 DC V(DMKDSP2) E611 HRC035DK 02019490
DC V(DMKVMASH) E613 @VA07223 02020000
CPATBLND EQU *-4 @V386198 02021000
EJECT 02022000
ALLOCON OI 0(R6),0 EXECUTED OI @VM03170 02023000
DUMPLOOK CLC 0(0,R1),CPIATABL EXECUTED COMPARE @VM03170 02024000
YESTEST CLC CPIATABL(0),=C'YES' EXECUTED COMPARE @VM03170 02025000
NOTEST CLC CPIATABL(0),=C'NO' EXECUTED COMPARE @VM03170 02026000
KEYCONFL TM WARMCOLD,0 EXECUTED CONFLICT TEST @VM03170 02027000
KEYSET OI WARMCOLD,0 EXECUTED OI TO TURN FLAGS ON @VM03170 02028000
KEYSET2 OI WARMFLAG,0 EXECUTED OI TO TURN FLAGS ON HRC028DK 02028500
KEYCOMP CLC 0(0,R7),0(R3) EXECUTED COMPARE @VM03170 02029000
SPACE 1 02030000
COLD EQU X'01' FLAGS IN WARMCOLD HRC028DK 02030070
WARM EQU X'02' HRC028DK 02030140
OTHERFLG EQU X'04' HRC028DK 02030210
SHUTDOWN EQU X'08' HRC028DK 02030280
WARMAUTO EQU X'10' HRC028DK 02030350
CKPT EQU X'20' HRC028DK 02030420
FORCE EQU X'40' HRC028DK 02030490
SPACE 1 HRC028DK 02030560
DISABLE EQU X'01' FLAGS IN WARMFLAG HRC028DK 02030630
DRAIN EQU X'02' HRC028DK 02030700
NOAUTOLG EQU X'04' HRC028DK 02030770
SHUTFLGS EQU WARM+COLD+CKPT+FORCE+OTHERFLG+SHUTDOWN HRC028DK 02030840
SPACE 2 , HRC028DK 02030910
WSKYTAB DC CL8'COLD',AL1(COLD,WARM+COLD+CKPT+FORCE),H'3' @VM03170 02031000
DC CL8'WARM',AL1(WARM,WARM+COLD+CKPT+FORCE),H'0' @VM03170 02032000
DC CL8'CKPT',AL1(CKPT,WARM+COLD+CKPT+FORCE),H'3' HRC028DK 02033690
DC CL8'FORCE',AL1(FORCE,WARM+COLD+CKPT+FORCE),H'0' HRC028DK 02034380
DC CL8'SHUTDOWN',AL1(SHUTDOWN,SHUTFLGS),H'7' HRC028DK 02035070
WSKYFLG2 DC CL8'NOAUTOLO',AL1(NOAUTOLG,NOAUTOLG),H'5' HRC028DK 02035760
DC CL8'DISABLE ',AL1(DISABLE,DISABLE),H'1' HRC028DK 02036450
WSKYTABE DC CL8'DRAIN ',AL1(DRAIN,DRAIN),H'1' HRC028DK 02037140
SPACE 02038000
MASK1 DC X'0F0F000F0F000F0F' @VM03170 02039000
MASK2 DC X'FFFF61FFFF61FFFF' @VM03170 02040000
MASK3 DC X'FFFF7AFFFF7AFFFF' @VM03170 02041000
SPACE 1 02042000
MONTHTBL DC Y(0*31+0*28+0*30,1*31+0*28+0*30,1*31+1*28+0*30) J,F,M 02043000
DC Y(2*31+1*28+0*30,2*31+1*28+1*30,3*31+1*28+1*30) A,M,J 02044000
DC Y(3*31+1*28+2*30,4*31+1*28+2*30,5*31+1*28+2*30) J,A,S 02045000
DC Y(5*31+1*28+3*30,6*31+1*28+3*30,6*31+1*28+4*30) O,N,D 02046000
SPACE 1 02047000
MONTHCHK DC Y(31,29,31,30,31,30,31,31,30,31,30,31) @VM03170 02048000
SPACE 1 02049000
CPITODAY DC X'1',X'5',CL9'MONDAY' @VM03170 02050000
DC X'2',X'6',CL9'TUESDAY' @VM03170 02051000
DC X'3',X'8',CL9'WEDNESDAY' @VM03170 02052000
DC X'4',X'7',CL9'THURSDAY' @VM03170 02053000
DC X'5',X'5',CL9'FRIDAY' @VM03170 02054000
DC X'6',X'7',CL9'SATURDAY' @VM03170 02055000
DC X'7',X'5',CL9'SUNDAY' @VM03170 02056000
PGTTU DC F'0' NUMBER OF TEMP CYLINDERS @VM03170 02057000
* ALLOCATED 02058000
PGTTM DC F'0' NUMBER OF MAX TEMP CYLINDER @VM03170 02059000
SPACE 2 02060000
PAGESIZE EQU 15 *** SIZE OF PAGING IOBLOK (USED @VM03170 02061000
* BY DMKPAGIO) *** 02062000
DS 0F @V60BCAB 02063000
CPISYSTR DC V(DMKSYSTR) PTR TO TRACE= VALUE FROM SYSCOR @V60BCAB 02064000
EJECT 02065000
* START OF ATTACHED PROCESSOR DEFINITIONS 02066000
DS 0F @V407595 02067000
CPISYSAP DC V(DMKSYSAP) PTR TO AP= VALUE FROM SYSCOR @V407595 02068000
CPISYSFP DC V(DMKSYSFP) PTR TO FREE= VALUE FROM SYSCOR @V407595 02069000
CPIFREAP DC V(DMKFREAP) PTR TO FREE STORAGE FOR DMKFRE @V407595 02070000
CPISVCLO DC V(DMKSVCLO) LOW FREE STORAGE AREA @V407595 02071000
CPISVCHI DC V(DMKSVCHI) HIGH FREE STORAGE AREA @V407595 02072000
CPISVCNS DC V(DMKSVCNS) SAVEAREA CHAIN FOR DMKSVC @V407595 02073000
CPIDMPTD DC V(DMKDMPTD) PSA 'TODATE' FOR DMKDMP @V407595 02074000
CPIDMPDT DC V(DMKDMPDT) PSA 'DATE' FOR DMKDMP @V407595 02075000
CPIDMPSD DC V(DMKDMPSD) PSA 'SYSIPLDV' FOR DMKDMP @V407595 02076000
CPIDMPMA DC V(DMKDMPMA) PSA 'IPUADDR' FOR DMKDMP- (MAIN) @V407595 02077000
CPIDMPAA DC V(DMKDMPAA) PSA 'IPUADDRX' FOR DMKDMP- (APU) @V407595 02078000
CPIDMPSA DC V(DMKDMPSA) ADDRESS OF SAVE AREA FOR PREFIXA/B @V5BC0AB 02079000
MFAONLY DC AL1(BLKMPX+NOSSKCK) HRC004DK 02080290
DC AL1(PAGE4K,MFAMASK,N0) MFA ONLY FOR CR0 HRC004DK 02080580
* 02081000
* DEFINE DMKCPI FLAGS, REGISTER SAVEAREAS AND CONSTANTS @V407595 02082000
* 02083000
CPIBASE DS 2F SAVEAREA FOR BASEREGS @V407595 02084000
F8192 DC F'8192' TWO PAGES @V407595 02085000
STOPPED DC X'00000040' PROCESSOR IN STOPPED STATE @V407595 02086000
HALFTIME DC X'3FFFFFFFFFFFF000' HALF UP SUPV TIMER VALUE @V4M0203 02087000
H32 DC H'32' DECREMENT CORE TABLE PTR BELOW @V407595 02088000
* PREFIX AREA (I.E., -8K). 02089000
CPIWORK DS H DMKCPI INTERNAL FLAGS AND W.A. @V407595 02090000
ORG CPIWORK @V407595 02091000
CPIFLAG1 DS CL1 FIRST FLAG BYTE @V407595 02092000
SYSMASK DS CL1 STORE SYSTEM MASK HERE @V407595 02093000
* DEFINE BITS FOR CPIFLAG1 @V407595 02094000
CPIAP EQU X'80' INDICATE APU IS AVAILABLE TO CPI @V407595 02095000
APUSPIN EQU X'40' SPIN BIT @V407595 02096000
CPIAPOFF EQU X'20' APU NOT ONLINE @V4M0206 02097000
EJECT 02111000
CPAMSG DC X'15' HRC202DK 02112690
DC C'DMKCPI185E CP Assist level ' HRC028DK 02113490
CPALVLNO DC CL4' ' @V386198 02114000
DC C' not supported - CP Assist disabled' HRC028DK 02115990
DC X'15' HRC202DK 02117490
CPAMSGL EQU *-CPAMSG @V386198 02118000
SPACE 02119000
NMSG DC X'15' HRC202DK 02120690
DC C'DMKCPI951I CP VOLID ' HRC028DK 02121490
NMSGVOL DC CL6' ' @VM03170 02122000
DC C' not mounted' HRC028DK 02123490
NMSGNL DC X'15' HRC075DK 02124490
NMSGL EQU *-NMSG @VM03170 02125000
DC C' required for ' HRC075DK 02125200
NMCYLS DC CL6' ' HRC075DK 02125300
DC C' cylinders' HRC075DK 02125400
DC X'1515' HRC075DK 02125500
NMSGLREQ EQU *-NMSG HRC075DK 02125600
SPACE 02126000
CORMSG DC X'15' HRC202DK 02127490
DC C'DMKCPI952I ' @VM03170 02128000
CORSMSG DC CL5' ' @VA11619 02129100
DC C'K System Storage' HRC028DK 02130490
DC X'15' HRC202DK 02131490
CORMSGL EQU *-CORMSG @VM03170 02132000
SPACE 02133000
ENTRY DMKCPICD @VM03170 02138000
STMSG DC X'151515' @VM03170 02139000
DC C'VM/370 Release ' HRC370DK 02140590
CPIVER DC C' Hercul' VERSION NO FROM DMKCPEID HRC370DK 02141180
CPILEV DC C' "Six' LEVEL NO FROM DMKCPEID HRC370DK 02142000
CPIPLC DC C' " ver' PLC NO FROM DMKCPEID HRC370DK 02143100
CPIHRC DC C' ' HRC VERSION NUMBER FROM CPEID HRC370DK 02143200
CPIWHO DC C' : ' INITIALS FROM CPEID HRC370DK 02143300
DMKCPICD DC CL9' ' CREATION DATE FILLED IN BY DMKSAV@VM03170 02144000
DC CL8' ' CREATION TIME FILLED IN BY DMKSAV@VM03170 02145000
DC X'1515' @VM03170 02146000
STMSGL EQU *-STMSG @VM03170 02147000
SPACE 1 02148000
* THE FOLLOWING SET OF DC'S CONSTITUTES A MESSAGE TO THE OPERATOR 02149000
* CONCERNING STORAGE ALLOCATION AT INITIALIZATION. 02150000
ALOCMSG EQU * HRC028DK 02151690
DC X'15' HRC028DK 02152380
DC C'DMKCPI957I Storage size = ' HRC028DK 02153070
ALOCSTOR DC C' ' HRC028DK 02153760
DC C' K, Nucleus = ' HRC028DK 02154450
ALOCNUC DC C' ' HRC028DK 02155140
DC C' K,',X'15' HRC028DK 02155830
DC C' Dynamic Paging = ' HRC028DK 02156520
ALOCDYN DC C' ' HRC028DK 02157210
DC C' K, Trace Table = ' HRC028DK 02157900
ALOCTRA DC C' ' HRC028DK 02158590
DC C' K,',X'15' HRC028DK 02159280
DC C' Free Storage = ' HRC028DK 02159970
ALOCFREE DC C' ' HRC028DK 02160660
DC C' K, Virtual=Real = ' HRC028DK 02161350
ALOCVR DC C' ' HRC028DK 02162040
DC C' K' HRC028DK 02162730
DC X'15' HRC028DK 02163420
ALOCMSGL EQU *-ALOCMSG HRC028DK 02164110
SPACE 1 02165000
SAVSTOR DC D'0' SAVE BINARY STORAGE SIZE @V396414 02166000
SAVNUC DC D'0' SAVE BINARY NUCLEUS SIZE @V396414 02167000
SAVDYN DC D'0' SAVE BINARY DYNAMIC SIZE @V396414 02168000
SAVFREE DC D'0' SAVE BINARY FREE STOR SIZE @V396414 02169000
SAVTRA DC D'0' SAVE BINARY TRACE SIZE @V396414 02170000
SAVVR DC D'0' SAVE BINARY V=R SIZE @V396414 02171000
SPACE 1 HRC370DK 02171050
SAVEDPSW DS D saved program new PSW HRC370DK 02171100
TRAPPER DC X'00080000' program check new PSW HRC370DK 02171150
DC A(CHK3702) address of the interrupt handler HRC370DK 02171200
PCNEWPSW EQU X'68' program check new PSW HRC370DK 02171250
SPACE 1 02172000
* THE FOLLOWING DC'S CONSTITUTE MESSAGES WHICH MAY BE ISSUED TO 02173000
* THE OPERATOR DURING CP INITIALIZATION: 02174000
SPACE 02175000
SPACE 1 02206000
DUPMSG DC C'DMKCPI954E DASD ' HRC020DK 02207000
DUPVOL1 DC CL3' ' @VM03170 02209000
DC C' VOLID ' @VM03170 02210000
DUPSER1 DC CL6' ' @VM03170 02211000
DC C' not mounted; duplicate of DASD ' HRC028DK 02212490
DUPVOL2 DC CL3' ' @VM03170 02213000
DUPMSGL EQU *-DUPMSG @VM03170 02215000
SPACE 1 02216000
SETMSG DC C'Press "TOD ENABLE SET" key at designated' HRC028DK 02217290
DC C' instant' HRC028DK 02217580
SETMSGL EQU *-SETMSG @VM03170 02218000
SPACE 1 02219000
CHNGMSG DC C'Change TOD Clock (Yes|No) :' HRC028DK 02220490
CHNGMSGL EQU *-CHNGMSG @VM03170 02221000
SPACE 1 02222000
OPLGMSG DC C'DMKCPI950A Auto LOGON failed; explicit LOGON' HRC028DK 02223290
DC C' reguired' HRC028DK 02223580
OPLGMSGL EQU *-OPLGMSG @VM03170 02224000
OWNMSG DC X'15' HRC202DK 02225690
DC C'DMKCPI913I CP owned VOLID ' HRC028DK 02226490
OWNVOL DC CL6' ' @V407466 02227000
DC C' invalid for 3330V' HRC028DK 02228490
OWNMSGL EQU *-OWNMSG @V407466 02229000
SPACE 2 02230000
ORG 02244000
EJECT 02245000
ONLINE1 TM WARMCOLD,WARMAUTO+WARM HAVE WE ACTIVATED DMKWRM?@VA08415 02246000
BNZ CPIRET YES, DON'T DO IT AGAIN @VA08415 02247000
L R11,ASYSOP GET OPERATORS VMBLOK @VA08415 02248000
USING VMBLOK,R11 02249000
CLI RDEVTYPC,CLASGRAF GRAPHIC DEVICE ? @V200829 02250000
BNE CHKTERM NO -- CHECK CLASTERM @V200829 02251000
TM RDEVTYPE,TYP3066+TYP3277+TYP3278 SUPPORTED? @V60A6B6 02252000
BZ CPIERR1 NO -- ENTER WAIT STATE @V200829 02253000
B ONLINEA HAVE FOUND A SYSTEM CONSOLE @V200829 02254000
CHKTERM EQU * @V200829 02255000
CLI RDEVTYPC,CLASTERM SLOW-SPEED TERMINAL DEVICE ?@V200829 02256000
BNE CPIERR1 NOPE - NO CONSOLE FOUND @V200829 02257000
CLI RDEVTYPE,TYPBSC IS THIS A 3270 REMOTE LINE 02258000
BE CPIERR1 YES, NO CONSOLE FOUND 02259000
NI RDEVTFLG,255-RDEVATOF DO NOT SUPPRESS EXCLAIM @VA00944 02260000
CLI RDEVTYPE,TYP2741 IS THIS A 2741 ? @V200820 02261000
BNE ONLINEA NO -- ALL SET AS IS @V200820 02262000
OI RDEVFLAG,RDEVIDNT TERMINAL CODE IDENTIFIED @V200820 02263000
MVI RDEVTMCD,RDEVPTTC SET CODE = PTTC/EBCD @V200820 02264000
ONLINEA EQU * @VA00944 02265000
ST R8,VMTERM STORE ADDRESS OF TERMINAL RDEVBLOK 02266000
ST R11,RDEVUSER STORE ADDRESS OF VMBLOK 02267000
L R10,RDEVAIOB GET ACTIVE IOBLOK 02268000
USING IOBLOK,R10 02269000
LTR R10,R10 ANY THERE ? 02270000
BZ *+8 NO -- 02271000
ST R11,IOBUSER STORE ADDRESS OF VMBLOK 02272000
SPACE 02273000
CLI CPI955SW,FF IS SYSTEM TOO BIG FOR MACHINE? @V60B7AB 02274100
BE CPI955 YES, BRANCH. ISSUE DMKCPI955W @V60B7AB 02274200
SPACE 02275000
L R1,=A(DMKSYSIC) Get address of SYSID list count HRC108DK 02275050
ICM R0,B'1111',0(R1) Get number of entries in list HRC108DK 02275100
BZ SYSIDFIN No entries in list HRC108DK 02275150
L R1,=A(DMKSYSIL) Get address of SYSID list HRC108DK 02275200
L R2,=A(DMKSYSID) Get address of current SYSID HRC108DK 02275250
SYSIDLP EQU * HRC108DK 02275300
CLC 9(5,R1),CPUSER Check list entry against PSA HRC108DK 02275350
BNE SYSIDNOT Not this one HRC108DK 02275400
MVC 0(8,R2),0(R1) Replace SYSID with list entry HRC108DK 02275450
SYSIDNOT EQU * HRC108DK 02275500
LA R1,14(,R1) Point to next item in list HRC108DK 02275550
BCT R0,SYSIDLP Decrement count and loop if more HRC108DK 02275600
SYSIDFIN EQU * HRC108DK 02275650
CALL DMKGRTID Copy SYSID to 3270 status area HRC108DK 02275700
SPACE 02276000
* WRITE INITIAL CONSOLE MESSAGE 02277000
CLC =CL4'WRM ',CPID IPL ON WARM MACHINE ? 02278000
BNE INITWRIT NO 02279000
L R0,=A(WNGMSGL) GET LENGTH OF RESTART MESSAGE HRC028DK 02280590
L R1,=A(WNGMSG) GET PTR TO RESTART MESSAGE HRC028DK 02281180
CALL DMKQCNWT,PARM=NORET+NOTIME+ALARM 02282000
INITWRIT EQU * 02283000
L R1,=A(DMKCPEID) POINT TO THE CP ID 02284000
MVC CPIVER(2),0(R1) MOVE IN THE VERSION NO. 02285000
MVC CPILEV(2),2(R1) MOVE IN THE LEVEL NO. 02286000
MVC CPIPLC(4),4(R1) MOVE IN THE PLC TAPE NO. 02287000
MVC CPIHRC(4),8(R1) MOVE IN THE HRC VERSION HRC019DK 02287100
MVC CPIWHO(3),12(R1) WHO DONE IT HRC019DK 02287200
SPACE 1 HRC370DK 02287220
* Since we support both System/380 and System/370 machines, HRC370DK 02287240
* let's see on which we are running, and adjust the version HRC370DK 02287260
* message accordingly. HRC370DK 02287280
MVI INSTWRD1,C'7' seems like a safe place for this HRC370DK 02287300
MVC SAVEDPSW(8),PCNEWPSW save program check new PSW HRC370DK 02287320
MVC PCNEWPSW(8),TRAPPER set our interrupt handler HRC370DK 02287340
LA R14,CHK3701 load branch address HRC370DK 02287360
ICM R14,8,=X'80' try to switch to 31-bit mode HRC370DK 02287380
DC X'0B0E' BSM R0,R14 HRC370DK 02287400
SPACE 1 HRC370DK 02287420
* If we arrive here, the BSM instruction was valid and we are HRC370DK 02287440
* executing on a System/380 machine. HRC370DK 02287460
* Note!!!!! We store an '8' in the first byte of INSTWRD1 in HRC370DK 02287480
* the PSA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! HRC370DK 02287500
CHK3701 DS 0H HRC370DK 02287520
MVI INSTWRD1,C'8' seems like a safe place for this HRC370DK 02287540
MVI STMSG+7,C'8' tell them this is System/380 HRC370DK 02287560
LA R14,CHK3702 load branch address HRC370DK 02287580
ICM R14,8,=X'00' return to 24-bit addressing mode HRC370DK 02287600
DC X'0B0E' BSM R0,R14 HRC370DK 02287620
SPACE 1 HRC370DK 02287640
* If we branched here, the BSM instruction generated a program HRC370DK 02287660
* check. Thus we are executing on a System/370 machine. HRC370DK 02287680
CHK3702 DS 0H HRC370DK 02287700
MVC PCNEWPSW(8),SAVEDPSW restore program check PSW HRC370DK 02287720
SPACE 1 HRC370DK 02287740
LA R0,STMSGL GET LENGTH OF VERSION MESSAGE 02288000
LA R1,STMSG GET PTR TO VERSION MESSAGE 02289000
CALL DMKQCNWT,PARM=NORET+NOTIME 02290000
EJECT 02291000
* HERE TO INITIALIZE TOD CLOCK 02292000
MVC STARTIME(8),FFS MOVE IN VALUE FOR LATER @VA02901 02293000
* TESTING ON CC=3 02294000
STCK STARTIME STORE TOD CLOCK 02295000
BC 8,CLOCKSET CC=0, CLOCK SET 02296000
BC 6,CLOCKNST CC=1 OR 2, NOT SET OR ERROR BUT RUNNING 02297000
BC 1,CLOCKCK CC=3, STOPPED STATE OR NOT OPERATIONAL@VA02901 02298000
ABEND 3 CLOCK NOT WORKING 02299000
SPACE 02300000
CLOCKCK EQU * HERE TO DISTINGUISH BETWEEN CLOCK IN STOPPED @VA02901 02301000
* STATE OR CLOCK NOT OPERATIONAL 02302000
CLC STARTIME,ZEROES ZEROES STORED IF CLOCK NOT @VA02901 02303000
* OPERATIONAL 02304000
BE CPI3 BRANCH AND ABEND VM/370, OTHERWISE RESET @VA02901 02305000
* CLOCK 02306000
CLOCKNST EQU * HERE WHEN TOD CLOCK IS NOT SET 02307000
GETDATE L R0,=A(DATEMSGL) GET LENGTH OF DATE MESSAGE HRC028DK 02308590
L R1,=A(DATEMSG) GET PTR TO DATE MESSAGE HRC028DK 02309180
CALL DMKQCNWT,PARM=NORET+NOAUTO+NOTIME 02310000
LA R0,130 SET EXPECTED INPUT COUNT 02311000
LA R1,CPIATABL GET PTR TO INPUT BUFFER 02312000
USING CPIATABL,R1 @V408246 02313000
CALL DMKQCNRD,PARM=UCASE+EDIT 02314000
C R0,F8 INPUT COUNT .EQ. 8 ? 02315000
BNE GETDATE NO 02316000
MVC TEMPSAVE(8),0(R1) MOVE INPUT TO A WORK AREA 02317000
OC TEMPSAVE(8),MASK1 VALIDITY CHECK FIELDS 02318000
XC TEMPSAVE(8),MASK2 ... 02319000
BNZ GETDATE ERROR IF NONZERO 02320000
PACK MONTH(2),0(3,R1) GET MONTH 02321000
CLI MONTH,X'12' MONTH .GT. 12 ? 02322000
BH GETDATE YES 02323000
CLI MONTH,X'01' MONTH .LT. 1 ? @VM08554 02324000
BL GETDATE YES @VM08554 02325000
PACK DAY(2),3(3,R1) GET DAY 02326000
PACK TEMPSAVE(8),0(2,R1) PACK MONTH 02327000
CVB R2,TEMPSAVE CONVERT MONTH TO BINARY 02328000
AR R2,R2 DOUBLE FOR INDEX INTO HALFWORD TABLE 02329000
LH R2,MONTHCHK-2(R2) GET MAXIMUM NUMBER OF DAYS IN MONTH 02330000
PACK TEMPSAVE(8),3(2,R1) PACK DAY 02331000
CVB R3,TEMPSAVE CONVERT DAY TO BINARY 02332000
LTR R3,R3 DAY = ZERO @VM08554 02333000
BZ GETDATE YES @VM08554 02334000
CR R3,R2 CHECK FOR A DAY .GT. NUMBER IN MONTH 02335000
BH GETDATE ERROR 02336000
PACK YEAR(2),6(3,R1) GET YEAR 02337000
CLI MONTH,X'02' FEBRUARY ? 02338000
BNE GETCLOCK NO 02339000
CLI DAY,X'29' 29TH ? 02340000
BL GETCLOCK NO 02341000
PACK TEMPSAVE(8),6(2,R1) PACK YEAR 02342000
CVB R2,TEMPSAVE CONVERT YEAR TO BINARY 02343000
ST R2,TEMPSAVE SAVE 02344000
TM TEMPSAVE+3,X'03' A MULTIPLE OF 4 ? 02345000
BNZ GETDATE NO -- ERROR 02346000
DROP R1 @V408246 02347000
EJECT 02348000
GETCLOCK L R0,=A(CMSGL) GET LENGTH OF CLOCK MESSAGE HRC028DK 02349590
L R1,=A(CMSG) GET PTR TO CLOCK MESSAGE HRC028DK 02350180
CALL DMKQCNWT,PARM=NOTIME+NORET+NOAUTO 02351000
LA R0,130 SET EXPECTED INPUT COUNT 02352000
LA R1,CPIATABL GET PTR TO INPUT BUFFER 02353000
USING CPIATABL,R1 ALSO USE FOR ADDRESSING FURTHER @V408246 02354000
* ON 02355000
CALL DMKQCNRD,PARM=UCASE+EDIT 02356000
C R0,F8 INPUT COUNT .EQ. 8 ? 02357000
BNE GETCLOCK NO 02358000
MVC TEMPSAVE(8),0(R1) MOVE INPUT TO A WORK AREA 02359000
OC TEMPSAVE(8),MASK1 VALIDITY CHECK FIELDS 02360000
XC TEMPSAVE(8),MASK3 ... 02361000
BNZ GETCLOCK ERROR IF NONZERO 02362000
PACK HOUR(2),0(3,R1) GET HOUR 02363000
CLI HOUR,X'23' HOUR .GT. 23 ? 02364000
BH GETCLOCK YES 02365000
PACK MIN(2),3(3,R1) GET MINUTES 02366000
CLI MIN,X'59' MINUTES .GT. 59 ? 02367000
BH GETCLOCK YES 02368000
PACK SEC(2),6(3,R1) GET SECONDS 02369000
CLI SEC,X'59' SECONDS .GT. 59 ? 02370000
BH GETCLOCK YES 02371000
SLR R0,R0 CLEAR 02372000
MVC CVTWORD(8),=PL8'0' 02373000
MVO CVTWORD,MONTH(3) PUT DATE INTO PACKED DECIMAL 02374000
LR R4,R0 GET ZEROS 02375000
CVB R5,CVTWORD 010100 < R5 < 123199 02376000
LA R15,100 MAX YEARS IN 2 LOW DECIMAL DIGITS 02377000
DR R4,R15 0000 < R4 < 0099 *02378000
0101 < R5 < 1231 02379000
LA R7,50 02380000
CLR R4,R7 YEAR .GT. 50 ? 02381000
BNL *+6 YES -- 20TH CENTURY 02382000
ALR R4,R15 NO -- 21ST CENTURY 02383000
LA R7,365 02384000
MR R6,R4 R7 = NUM DAYS TO JAN 1 (EXCEPT LEAPS) 02385000
LR R9,R4 02386000
BCTR R9,0 ADJUST TO COUNT LEAP YEAR DAYS 02387000
LR R8,R0 02388000
LA R6,4 02389000
DR R8,R6 R9 = NUMBER OF LEAP DAYS IN PAST YEARS 02390000
ALR R7,R9 02391000
LA R6,3 02392000
CLR R6,R8 REMAINDER .EQ. 4 ? 02393000
BNE NOTLEAP NO 02394000
LA R6,300 02395000
CLR R6,R5 AFTER FEB IN LEAP YEAR ? 02396000
BH NOTLEAP NO 02397000
LA R7,1(,R7) ADD AN EXTRA DAY 02398000
NOTLEAP LR R4,R0 02399000
DR R4,R15 0001 < R4 < 0031 *02400000
0001 < R5 < 0012 02401000
ALR R5,R5 DOUBLE R5 FOR INDEXING HALFWORD TABLE 02402000
LH R8,MONTHTBL-2(R5) PICK UP DAYS OF MONTHS PAST 02403000
ALR R8,R4 ADD DATE OF CURRENT MONTH 02404000
ALR R7,R8 ADD JULIAN DAY ON NON-LEAP YEAR 02405000
BCTR R7,0 DAY 1 OF MONTH = 0TH DAY 02406000
SPACE 02407000
MVO CVTWORD,HOUR(3) PUT HOURS INTO PACKED DECIMAL 02408000
LR R4,R0 02409000
CVB R5,CVTWORD 000000 < R5 < 235959 02410000
DR R4,R15 0000 < R4 < 0059 (SEC) *02411000
0000 < R5 < 2359 02412000
DROP R1 FINISHED WITH EXTENDED @V408246 02413000
* ADDRESSABILITY 02414000
LR R8,R4 02415000
LR R4,R0 02416000
DR R4,R15 0000 < R4 < 0059 (MIN) *02417000
0000 < R5 < 0023 (HOURS) 02418000
L R15,=A(DMKSYSTZ) GET PTR TO TIME ZONE CORRECTION 02419000
S R8,0(,R15) ADJUST SEC TO INCLUDE GMT DIFFERENCE 02420000
SRDA R8,32 MAKE RESULT A DOUBLE PRECISION INTEGER 02421000
LR R3,R4 SAVE MINUTES 02422000
LA R6,60 02423000
MR R4,R6 CONVERT HOURS TO MINUTES 02424000
ALR R5,R3 02425000
MR R4,R6 MINUTES TO SECONDS 02426000
ALR R5,R9 ADD IN SECONDS 02427000
BC 12,*+8 ... 02428000
AL R4,F1 ... 02429000
ALR R4,R8 ... 02430000
L R3,=F'86400' GET NUMBER OF SECONDS PER DAY 02431000
MR R6,R3 R6 - R7 TOTAL SECONDS IN PAST DAYS 02432000
ALR R6,R4 ADD IN SECONDS FOR THIS DAY 02433000
ALR R7,R5 ... 02434000
BC 12,*+8 ... 02435000
LA R6,1(,R6) R6 - R7 TOTAL SECONDS SINCE START 02436000
SLDL R6,1 02437000
SRL R7,1 MAKE LOW 31 BITS POSITIVE 02438000
LR R5,R6 REMEMBER HIGH 33 BITS 02439000
L R8,=F'500000' GET NUMBER OF MICROSECONDS PER HALF SECOND 02440000
MR R4,R8 RESULTANT PORTION OF HIGH 31 BITS 02441000
ALR R8,R8 DOUBLE MULTIPLIER 02442000
MR R6,R8 RESULTANT LOW 32 BITS 02443000
ALR R6,R5 RESULTANT HIGH 32 BITS 02444000
SLDL R6,12 SHIFT TO POSITION 02445000
STM R6,R7,STARTIME 02446000
SPACE 02447000
LA R1,SETMSG MESSAGE FOR 'TOD ENABLE' SWITCH @V200829 02448000
LA R0,SETMSGL ...LENGTH @V200829 02449000
CALL DMKQCNWT,PARM=NOTIME SEND MESSAGE, WAIT @V200829 02450000
SPACE 02451000
SCK STARTIME SET TOD CLOCK 02452000
BC 4,*-4 CC=1, CLOCK SECURE 02453000
BC 8,CLOCKSET CC=0, CLOCK SET 02454000
B CPI3 CLOCK NOT WORKING GO TO ABEND 3 02455000
SPACE 3 02456000
CLOCKSET EQU * HERE WHEN TOD CLOCK IS SET 02457000
STCK STARTIME GUARD AGAINST VIRTUAL CP @VA05563 02458000
L R1,=A(DMKPAGST) SAVE INITIAL VALUE IN PAG TOO 02459000
MVC 0(8,R1),STARTIME ... 02460000
LM R0,R1,STARTIME GET TOD CLOCK VALUE 02461000
SRDL R0,12 CONVERT TO MICROSECONDS 02462000
D R0,=F'8000000' GET NUMBER OF SECONDS BY THE FOLLOWING 02463000
LR R3,R0 DOUBLE PRECISION DIVISION: 02464000
SLR R2,R2 X/Y=8*(X/(8*Y))+MOD(X,8*Y)/Y 02465000
D R2,=F'1000000' WHERE X = NUMBER OF MICROSECONDS SINCE 02466000
SLR R0,R0 EPOCH 02467000
SLDL R0,3 Y = 1000000 02468000
ALR R1,R3 ... 02469000
BC 12,*+8 ... 02470000
A R0,F1 R0 - R1 = NUMBER OF SECONDS SINCE EPOCH 02471000
D R0,=F'86400' R1 = NUMBER OF DAYS SINCE EPOCH *02472000
R0 = NUMBER OF SECONDS PAST MIDNIGHT 02473000
L R15,=A(DMKSYSTZ) GET PTR TO TIME ZONE CORRECTION 02474000
A R0,0(,R15) ADJUST SEC TO INCLUDE GMT DIFFERENCE 02475000
BNM *+10 BRANCH IF RESULT .GE. ZERO 02476000
A R0,=F'86400' ADD A DAYS WORTH OF SECONDS 02477000
BCTR R1,0 AND SUBTRACT A DAY 02478000
C R0,=F'86400' SEC .LT. 1 DAY ? 02479000
BL *+12 YES 02480000
S R0,=F'86400' SUBTRACT A DAYS WORTH OF SECONDS 02481000
A R1,F1 AND ADD A DAY 02482000
LR R5,R0 02483000
M R4,=F'1000000' MULTIPLY CORRECTED SECONDS BY 1000000 02484000
ALR R5,R2 ADD REMAINDER FROM FIRST DIVISION 02485000
BC 12,*+8 ... 02486000
A R4,F1 ... 02487000
SLDL R4,12 02488000
LM R14,R15,STARTIME GET INITIAL TOD CLOCK VALUE 02489000
SLR R15,R5 - NUMBER OF SECONDS INTO THE DAY 02490000
BC 11,*+8 ... 02491000
SL R14,F1 ... 02492000
SLR R14,R4 ... 02493000
STM R14,R15,TODATE RESULT IS TOD CLOCK VALUE AT MIDNIGHT *02494000
TODAY LOCAL TIME 02495000
L R15,CPIDMPTD ADDRESS TO STORE TODATE FOR DUMP @V407595 02496000
MVC 0(L8,R15),TODATE SAVE TODATE FOR DMKDMP @V407595 02497000
SPACE 02498000
LA R3,365 02499000
CR R1,R3 IS DAYS .LT. 365 ? 02500000
BNL NOT1900 NO 02501000
LR R6,R1 GET NUMBER OF DAYS HERE 02502000
SLR R1,R1 INDICATE YEAR = 00 02503000
B YEARSET 02504000
SPACE 02505000
NOT1900 EQU * HERE IF YEAR IS GREATER THAN 1900 02506000
SR R1,R3 SUBTRACT THE YEAR 1900 OUT 02507000
SLR R0,R0 CLEAR FOR DIVIDE 02508000
D R0,=A(4*365+1) DIVIDE BY THE NUMBER OF DAYS IN 4 YEARS 02509000
LR R7,R0 R7 = NUMBER OF DAYS SINCE LAST LEAP 02510000
SLR R6,R6 02511000
DR R6,R3 02512000
A R6,F1 R6 = NUMBER OF DAYS SINCE START OF YEAR 02513000
C R7,F4 EXACTLY A MULTIPLE OF 4 YEARS ? 02514000
BNE NOTQUAD NO 02515000
AR R6,R3 SET DAY .EQ. 366 02516000
L R7,F3 ... 02517000
SPACE 1 02518000
NOTQUAD EQU * 02519000
ALR R1,R1 02520000
ALR R1,R1 02521000
A R1,F1 02522000
AR R1,R7 02523000
SPACE 02524000
YEARSET EQU * HERE WHEN YEAR HAS BEEN DETERMINED 02525000
CVD R1,TEMPSAVE CONVERT DATE TO DECIMAL 02526000
UNPK DATE+6(2),TEMPSAVE+6(2) UNPACK AND 02527000
OI DATE+7,X'F0' FORMAT IT 02528000
SPACE 02529000
* HERE TO SET WEEKDAY 02530000
SLR R2,R2 CLEAR 02531000
LR R14,R2 02532000
LR R3,R1 GET YEAR 02533000
BCTR R3,0 YEAR-1 02534000
LR R15,R3 YEAR-1 02535000
SRL R15,2 (YEAR-1)/4 02536000
N R3,F3 (YEAR-1) MOD 4 02537000
MH R15,F5+2 ((YEAR-1)/4)*5) 02538000
AR R15,R3 ((YEAR-1)/4)*5)+(YEAR-1) MOD 4 02539000
AR R15,R6 ((YEAR-1)/4)*5)+(YEAR-1) MOD 4 + DAYS 02540000
D R14,F7 DIVIDE BY 7 02541000
MH R14,=H'11' INDEX INTO TABLE 02542000
LA R14,CPITODAY(R14) ... 02543000
L R15,=A(DMKSYSDW) GET PTR TO WEEKDAY CONSTANT 02544000
MVC 0(11,R15),0(R14) PLACE IN DMKSYS 02545000
SPACE 1 02546000
* HERE TO CONVERT JULIAN DATE TO GREGORIAN 02547000
SPACE 1 02548000
* THE FOLLOWING ALGORITHM TO CONVERT A JULIAN DATE TO GREGORIAN WAS 02549000
* ADOPTED FROM AN ALGORITHM ENTITLED "TABLELESS DATE CONVERSION" 02550000
* APPEARING IN "COMMUNICATIONS OF THE ACM", VOLUME 13, NUMBER 10, 02551000
* OCTOBER 1970, P. 621, BY RICHARD A. STONE, WESTERN ELECTRIC COMPANY, 02552000
* P.O. BOX 900, PRINCETON, NJ 08540. 02553000
N R1,F3 YEAR MOD 4 02554000
BNZ *+8 BRANCH IF NOT A LEAP YEAR 02555000
LA R2,1 GET GREGORIAN DATE FROM JULIAN 02556000
LA R1,59(,R2) ... 02557000
CR R6,R1 ... 02558000
BNH *+10 ... 02559000
A R6,F2 ... 02560000
SR R6,R2 ... 02561000
A R6,=F'91' ... 02562000
LR R9,R6 ... 02563000
M R8,=F'100' ... 02564000
D R8,=F'3055' ... 02565000
LR R15,R9 ... 02566000
M R14,=F'3055' ... 02567000
D R14,=F'100' ... 02568000
SR R6,R15 ... 02569000
BCTR R9,0 ... 02570000
BCTR R9,0 ... 02571000
CVD R6,TEMPSAVE CONVERT DAY TO DECIMAL 02572000
UNPK DATE+3(2),TEMPSAVE+6(2) UNPACK AND 02573000
OI DATE+4,X'F0' FORMAT IT 02574000
MVI DATE+5,C'/' 02575000
CVD R9,TEMPSAVE CONVERT MONTH TO DECIMAL 02576000
UNPK DATE(2),TEMPSAVE+6(2) UNPACK AND 02577000
OI DATE+1,X'F0' FORMAT IT 02578000
MVI DATE+2,C'/' 02579000
L R15,CPIDMPDT ADDRESS TO STORE DATE FOR DMKDMP @V407595 02580000
MVC 0(L8,R15),DATE SAVE DATE FOR DUMP @V407595 02581000
SPACE 1 02582000
MVC CPIATABL(4),=C'Now ' FORMAT TIME MESSAGE HRC202DK 02585490
LA R2,CPIATABL+4 TIME GOES HERE 02586000
MVI CPIATABL+12,C' ' BLANK AFTER TIME 02587000
L R15,=A(DMKSYSTI) GET TIME ZONE IDENTIFIER 02588000
MVC CPIATABL+13(3),0(R15) PLACE IN MESSAGE 02589000
MVI CPIATABL+16,C' ' BLANK AFTER TIME ZONE IDENTIFIER 02590000
L R15,=A(DMKSYSDW) GET WEEKDAY 02591000
MVC CPIATABL+17(9),2(R15) MOVE WEEKDAY TO MESSAGE 02592000
SLR R1,R1 CLEAR 02593000
IC R1,1(,R15) GET CURRENT WEEKDAY LENGTH 02594000
LA R1,CPIATABL+18(R1) SET PTR TO CHAR AFTER WEEKDAY 02595000
MVI 0(R1),C' ' BLANK AFTER WEEKDAY 02596000
LA R1,1(,R1) DATE GOES HERE 02597000
CALL DMKCVTDT GET TIME AND DATE 02598000
LA R0,8(,R1) GET PTR TO END OF MESSAGE 02599000
LA R1,CPIATABL GET PTR TO START OF MESSAGE 02600000
SLR R0,R1 GET MESSAGE LENGTH 02601000
STH R0,CPIATABL+130 SAVE THIS LENGTH HRC019DK 02601100
MVC CPIATABL+133(40),CPIATABL SET ASIDE MOMENTARILY HRC019DK 02601200
CLC =CL4'WRM ',CPID IPL ON A WARM MACHINE? HRC019DK 02601300
BE NOTCHNG YES--DON'T ASK FOR CLOCK CHANGE. HRC019DK 02601400
XC CPABEND,CPABEND NO--ZERO ABEND CODE FOR Q CPSYS HRC019DK 02601500
CALL DMKQCNWT,PARM=NORET+NOTIME 02602000
EJECT 02603000
GETCHNG EQU * HERE TO REQUEST IF TOD CLOCK SHOULD BE CHANGED 02604000
L R1,=A(DMKSYSIP) AUTO IPL ? HRC036DK 02604100
LTR R1,R1 HRC036DK 02604200
BZ GETCHNG2 HRC036DK 02604300
TM 0(R1),CPWARM+CPCKPT+CPFORCE+CPCOLD AUTO IPL? HRC036DK 02604400
BM NOTCHNG YES, DON'T ASK HRC036DK 02604500
SPACE , HRC036DK 02604600
GETCHNG2 EQU * HRC036DK 02604700
LA R0,CHNGMSGL GET LENGTH OF CHANGE MESSAGE 02605000
LA R1,CHNGMSG GET PTR TO MESSAGE 02606000
CALL DMKQCNWT,PARM=NORET+NOTIME+NOAUTO 02607000
LA R0,130 SET EXPECTED INPUT COUNT 02608000
LA R1,CPIATABL GET PTR TO INPUT BUFFER 02609000
CALL DMKQCNRD,PARM=UCASE+EDIT 02610000
LTR R0,R0 INPUT COUNT .EQ. 0 ? 02611000
BZ NOTCHNG YES -- 02612000
CLI CPIATABL,C'Y' POSSIBLE YES ? 02613000
BNE TCHNGNO NO 02614000
C R0,F3 INPUT COUNT .GT. 3 ? 02615000
BH GETCHNG YES 02616000
LR R1,R0 GET COUNT IN GPR1 02617000
BCTR R1,0 -1 FOR EXECUTE 02618000
EX R1,YESTEST KEYWORD .EQ. YES ? 02619000
BE CLOCKNST YES -- GO SET CLOCK 02620000
B GETCHNG ERROR 02621000
SPACE 02622000
TCHNGNO EQU * HERE WHEN FIRST CHARACTER OF KEYWORD IS NOT Y 02623000
C R0,F2 INPUT COUNT .GT. 2 ? 02624000
BH GETCHNG YES 02625000
LR R1,R0 GET COUNT IN GPR1 02626000
BCTR R1,0 -1 FOR EXECUTE 02627000
EX R1,NOTEST KEYWORK .EQ. NO ? 02628000
BE NOTCHNG YES -- 02629000
B GETCHNG 02630000
EJECT 02631000
NOTCHNG EQU * 02632000
* HERE TO INITIALIZE RESPONSES TO 'QUERY CPLEVEL' CMD 02632010
LA R0,STMSGL+21 COMPUTE SIZE PLUS SOME SLOP AREA HRC019DK 02632020
AH R0,CPIATABL+130 LENGTH OF 2ND MSG HRC019DK 02632030
SRL R0,3 COMPUTE SIZE FOR FREE HRC019DK 02632040
CALL DMKFREE ALLOCATE QCP STATUS BLOCK HRC019DK 02632050
USING QCPBLOK,R1 HRC019DK 02632060
ST R1,QCPSTAT SAVE ITS ADDRESS IN PSA HRC019DK 02632070
LA R2,STMSGL-5 LENGTH OF FIRST MSG HRC019DK 02632080
LA R3,QCPBUF ADDRESS OF FIRST MSG HRC019DK 02632090
STM R2,R3,QCPMSG1 SAVE IN QCPBLOK HRC019DK 02632100
BCT R2,*+10 MOVE IN THE FIRST MSG HRC019DK 02632110
MVC 0(*-*,R3),STMSG+3 ... HRC019DK 02632120
EX R2,*-6 ... HRC019DK 02632130
LA R3,1(R2,R3) COMPUTE 2ND MSG ADDR HRC019DK 02632140
LH R2,CPIATABL+130 GET LENGTH OF 2ND MSG HRC019DK 02632150
AL R2,F3 MAKE MSG 3 BYTES LONGER HRC019DK 02632160
STM R2,R3,QCPMSG2 SAVE IN QCPBLOK HRC019DK 02632170
BCT R2,*+10 MOVE IN THE 2ND MSG HRC019DK 02632180
MVC 0(*-*,R3),CPIATABL+130 ... HRC019DK 02632190
EX R2,*-6 ... HRC019DK 02632200
MVC 0(6,R3),=C'IPL at' ALTER SLIGHTLY FOR QUERY HRC202DK 02632215
DROP R1 HRC019DK 02632220
EJECT , HRC019DK 02632230
LM R4,R5,TODATE GET TOD CLOCK VALUE AT MIDNIGHT THIS *02633000
MORNING 02634000
AL R5,TOD24HR+4 ADD 24 HOUR TOD CLOCK VALUE 02635000
BC 12,*+8 ... 02636000
AL R4,F1 ... 02637000
AL R4,TOD24HR ... 02638000
LA R0,TRQBSIZE GET TIMER REQUEST BLOCK SIZE 02639000
CALL DMKFREE GET TRQBLOK 02640000
LR R2,R1 02641000
USING TRQBLOK,R2 02642000
XC TRQBLOK(TRQBSIZE*8),TRQBLOK CLEAR 02643000
MVC TRQBUSER,ASYSVM MARK USER AS SYSTEM 02644000
MVC TRQBIRA,=A(DMKSCHMD) SET IRA 02645000
STM R4,R5,TRQBVAL SET VALUE AT MIDNIGHT TONIGHT 02646000
CALL DMKSCHST SCHEDULE TIMER REQUEST 02647000
DROP R2 02648000
SPACE 02649000
*. 02650000
* INITIATE TIMER INTERRUPTS EVERY 30 SECONDS TO GIVE CONTROL 02651000
* TO A ROUTINE IN THE SCHEDULER (DMKSCHTI) WHICH WILL MAINTAIN 02652000
* A SMOOTHED MEASURE OF CPU UTILIZATION 02653000
*. 02654000
LA R0,TRQBSIZE GET TRB SIZE @V2B2638 02655000
CALL DMKFREE GET STORAGE FOR TRB @V2B2638 02656000
LR R2,R1 SAVE ADDRESS IN R2 @V2B2638 02657000
USING TRQBLOK,R2 @V2B2638 02658000
XC TRQBLOK(TRQBSIZE*8),TRQBLOK CLEAR IT @V2B2638 02659000
MVC TRQBUSER,ASYSVM CHARGE TIME TO SYSTEM @V2B2638 02660000
L R3,=A(DMKSCHTI) ADDRESS OF ROUTINE TO RECEIVE @V2B2638 02661000
* CON 02662000
ST R3,TRQBIRA INTO TRB WE GO @V2B2638 02663000
STCK TRQBTOD INITIALIZE TOD @V2B2638 02664000
L R5,=A(DMKSCHLI) LOCATION OF SAMPLE INTERVAL @V2B2638 02665000
L R5,0(R5) IN SECONDS @V2B2638 02666000
SR R4,R4 ZERO WORK REG @V2B2638 02667000
M R4,=F'1000000' INTO MICRO SECS @V2B2638 02668000
SLDL R4,12 INTO TOD FORMAT @V2B2638 02669000
AL R5,TRQBTOD+4 @V2B2638 02670000
BC 12,*+8 @V2B2638 02671000
AL R4,F1 @V2B2638 02672000
AL R4,TRQBTOD TICK...TOCK..TICK @V2B2638 02673000
STM R4,R5,TRQBVAL @V2B2638 02674000
CALL DMKSCHST SCHEDULE TRB @V2B2638 02675000
DROP R2 @V2B2638 02676000
SPACE 1 02677000
LA R0,MSG971L GET MESSAGE LENGTH HRC028DK 02677200
L R1,=A(MSG971) POINT TO MESSAGE HRC028DK 02677400
CALL DMKQCNWT,PARM=NORET+NOTIME HRC028DK 02677600
SPACE 1 02678000
* HERE TO INITIALIZE DIRECTORY 02679000
L R2,=A(DMKSYSUD) GET ADDRESS OF DIRECTORY POINTER 02680000
L R0,UDRNSTRT GET NUCLEUS DIRECTORY ADDRESS 02681000
LTR R0,R0 ANY FOUND ? 02682000
BNZ DRCTSET BRANCH IF ONE FOUND 02683000
L R0,UDRASTRT GET ALTERNATE DIRECTORY ADDRESS 02684000
LTR R0,R0 ANY FOUND ? 02685000
BNZ DRCTSET BRANCH IF ONE FOUND 02686000
ABEND 2 CAN NOT CONTINUE WITHOUT THE DIRECTORY 02687000
EJECT 02688000
DRCTSET EQU * HERE TO SAVE DIRECTORY DISK ADDRESS 02689000
ST R0,0(,R2) SAVE IN DMKSYSUD 02690000
CALL DMKUDRBV GO BUILD USER DIRECTORY PAGE LIST 02691000
* LOCK DMKCPI IN CORE UNTIL COMPLET 02692000
LR R2,R12 FIRST PAGE TO BE LOCKED @V200720 02693000
CALL DMKPTRLK . . . @V200720 02694000
LR R2,R13 SECOND PAGE TO BE LOCKED @V200720 02695000
CALL DMKPTRLK . . . @V200720 02696000
LA R2,X'FFF' LOCK THIRD PAGE ALSO @VA05046 02697000
LA R2,1(R2,R13) @VA05046 02698000
CALL DMKPTRLK @VA05046 02699000
B TIMETEST TEST FOR TIMER RUNNING @V200730 02700000
EJECT 02701000
LOGOP CALL DMKLOGOP LOGON OPERATOR @V200730 02702000
B TSTR2 SEE IF ERROR RETURNED IN R2 @V407466 02703000
DC AL4(0) SPACE HOLDER @V407466 02704000
B NOSTOR ISSUE INSUFFICIENT STORAGE MSG @V407466 02705000
TSTR2 LTR R2,R2 ANY ERRORS ENCOUNTERED? @V407466 02706000
BZ OWNEDCK NO @VM08550 02707000
SPACE 02708000
EXPLOGOP EQU * HERE TO EXPLICITLY LOGON OPERATOR 02709000
LA R0,BUFSIZE 02710000
CALL DMKFREE 02711000
LR R4,R1 SAVE BUFFER PTR HERE 02712000
USING BUFFER,R4 02713000
SPACE 1 02714000
EXPMSG EQU * HERE TO REQUEST THAT OPERATOR LOGON 02715000
LA R0,OPLGMSGL GET MESSAGE LENGTH 02716000
LA R1,OPLGMSG GET MESSAGE PTR 02717000
CALL DMKQCNWT,PARM=NORET 02718000
SLR R0,R0 02719000
CALL DMKQCNWT,PARM=NORET+NOAUTO FORCE TIME-STAMP 02720000
LA R0,130 SET EXPECTED INPUT COUNT 02721000
LA R1,BUFIN GET BUFFER PTR 02722000
CALL DMKQCNRD,PARM=UCASE+EDIT 02723000
CH R2,=H'12' FATAL LINE/TERMINAL PROBS?? @VA00853 02724000
BE CPIERR1 YES -- DIE. FORCE RE-IPL @VA00853 02725000
LTR R0,R0 INPUT COUNT .EQ. 0 ? 02726000
BZ EXPMSG YES -- REPEAT 02727000
ST R1,BUFNXT SET NEXT KEYWORD PTR FOR DMKSCN 02728000
ST R0,BUFCNT SET INPUT COUNT 02729000
CALL DMKCFMEN CALL DIAGNOSE INTERFACE 02730000
LTR R2,R2 RETURN CODE .EQ. 0 ? 02731000
BNZ EXPLOGOP NO -- GET NEW BUFFER AND REPEAT @VA00853 02732000
TM VMRSTAT,VMLOGON USER NOT LOGGED ON YET ? 02733000
BO EXPLOGOP YES @VA00853 02734000
EJECT 02735000
SPACE 2 02736000
OWNEDCK EQU * CHECK FOR CP-OWNED VOLUMES @V200820 02737000
L R4,=A(DMKSYSOC) GET SYSTEM OWNED VOL OWNED COUNT 02738000
L R4,0(,R4) ... 02739000
L R3,=A(DMKSYSOW) GET OWNED LIST PTR 02740000
USING OWNDLIST,R3 02741000
NEXTOWN LA R0,6 SET VOLUME SERIAL LENGTH TO 6 02742000
LR R1,R3 PASS VOLUME SERIAL IN R1 02743000
CALL DMKSCNVS 02744000
BZ NEXTOWN1 THIS VOLUME HAS BEEN MOUNTED 02745000
MVC NMSGVOL,OWNDVSER PLACE VOLUME SERIAL IN WNG MSG 02746000
LA R0,NMSGL GET MESSAGE LENGTH 02747000
LA R1,NMSG GET MESSAGE PTR 02748000
CALL DMKQCNWT,PARM=NORET+ALARM 02749000
NEXTOWN1 LA R3,8(,R3) GET NEXT OWNED LIST ENTRY 02750000
BCT R4,NEXTOWN 02751000
EJECT 02752000
* HERE TO PRINT DUPLICATE VOLUME SERIAL MESSAGES, IF ANY 02753000
L R4,DUPMSGPT GET DUPLICATE VOL SERIAL ANCHOR 02754000
DUPLUP EQU * 02755000
LTR R3,R4 AT END ? 02756000
BZ SYSAREAS YES HRC075DK 02757000
L R0,4(,R3) MSG LENGTH @V407466 02758000
LA R1,8(,R3) POINT TO MSG @V407466 02759000
CALL DMKQCNWT,PARM=NORET 02760000
L R1,4(,R3) MSG LENGTH @V407466 02761000
LA R0,15(,R1) ACCOUNT FOR 2 EXTRA FIELDS & DW. @V407466 02762000
SRL R0,3 CHANGE TO DOUBLEWORDS @V407466 02763000
LR R1,R3 02764000
L R4,0(,R3) GET NEXT MESSAGE 02765000
CALL DMKFRET RETURN BUFFER TO FREE STORAGE 02766000
B DUPLUP 02767000
* 02767100
SYSAREAS EQU * GET DEVICE CUU OF ERR,WRM,CKP HRC075DK 02767120
L R2,=A(DMKSYSER) -> ERROR RECORDING AREA INFO HRC075DK 02767140
LA R4,=CL6'SYSERR' INDICATE ERR AREA CYLINDERS HRC075DK 02767160
BAL R3,LVOL GO LOCATE VOLUME AND CUU HRC075DK 02767180
L R2,=A(DMKSYSWM) -> WARM START AREA INFO HRC075DK 02767200
LA R4,=CL6'SYSWRM' INDICATE WRM AREA CYLINDERS HRC075DK 02767220
BAL R3,LVOL GO LOCATE VOLUME AND CUU HRC075DK 02767240
L R2,=A(DMKSYSCH) -> CHECKPOINT AREA INFO HRC075DK 02767260
LA R4,=CL6'SYSCKP' INDICATE CKP AREA CYLINDERS HRC075DK 02767280
BAL R3,LVOL GO LOCATE VOLUME AND CUU HRC075DK 02767300
B MEMCK ALL REQ'D VOLUMES LOCATED HRC075DK 02767320
* HRC075DK 02767340
LVOL EQU * HRC075DK 02767360
CLC 4(2,R2),ZEROES IS DEV ADDR FILLED IN? HRC075DK 02767380
BNER R3 YES, ON TO NEXT AREA HRC075DK 02767400
LA R0,6 LENGTH OF VOLSER HRC075DK 02767420
LA R1,8(,R2) -> NAME OF VOLUME HRC075DK 02767440
CALL DMKSCNVS GET THE RDEVBLOK HRC075DK 02767460
BNZ NOTHERE THIS VOLUME NOT FOUND; REQUIRED HRC075DK 02767480
LR R8,R1 RDEVBLOK PTR TO R8 HRC075DK 02767500
CALL DMKSCNRD GET THE CUU OF RDEVBLOK DEVICE HRC075DK 02767520
STH R1,4(,R2) SAVE CUU AT DMKSYSER+4 (DEV ADDR)HRC075DK 02767540
MVC 6(2,R2),RDEVTYPC SAVE DEVTYPE AT DMKSYSER+6 HRC075DK 02767560
BR R3 RETURN HRC075DK 02767580
* HRC075DK 02767600
NOTHERE EQU * HRC075DK 02767620
MVC NMSGVOL,8(R2) PLUG VOLID TO MSG HRC075DK 02767640
MVC NMCYLS,0(R4) MOVE TYPE OF CYLS NEEDED HRC075DK 02767660
MVI NMSGNL,C';' REPLACE NEWLINE WITH SEMI HRC075DK 02767680
MVI NMSG+10,C'E' CHANGE 951I MSG TEXT TO ERROR LVLHRC075DK 02767700
LA R0,NMSGLREQ LENGTH OF VOLID REQUIRED MSG HRC075DK 02767720
LA R1,NMSG -> DMKCPI951E VOLID NOT MOUNTED HRC075DK 02767740
CALL DMKQCNWT,PARM=ALARM HRC075DK 02767760
LPSW XWAIT9 LOAD DISABLED WAIT 9 HRC075DK 02767780
SPACE 3 02768000
MEMCK EQU * VERIFY THAT ALL OF MAIN MEMORY IS AVAILABLE 02769000
L R1,=A(DMKSYSRM) GET ACTUAL SIZE OF MEMORY 02770000
L R1,0(,R1) ... 02771000
L R15,=A(DMKSYSRV) GET SYSGEN SPECIFIED VALUE 02772000
C R1,0(,R15) COMPARE 02773000
BE MAPMSG OK, GIVE STORAGE MAP MSG @V396414 02774000
BL *+8 LOW, USE ACTUAL MAIN STORAGE VALUE 02775000
L R1,0(,R15) HIGH, USE LIMITING SYSGEN VALUE 02776000
SRL R1,10 /1024 02777000
CALL DMKCVTBD CONVERT TO DECIMAL 02778000
STC R0,CORSMSG SAVE HIGH ORDER DIGIT OF SIZE @VA11619 02779100
STCM R1,B'1111',CORSMSG+1 SAVE THE REST @VA11619 02779200
LA R0,CORMSGL GET MESSAGE LENGTH 02780000
LA R1,CORMSG GET MESSAGE PTR 02781000
CALL DMKQCNWT,PARM=NORET 02782000
B MAPMSG GO GIVE STORAGE MAP MSG @V396414 02783000
EJECT 02784000
TIMETEST EQU * HERE TO VERIFY THAT THE INTERVAL TIMER IS RUNNING 02785000
L R4,TIMER GET CURRENT VALUE OF TIMER 02786000
TLOOP1 L R0,=F'40000' FIX FOR FASTER PROCESSORS HRC008DK 02787490
STIDP CPUID FORCE A TRIP THROUGH THE @VA02179 02788000
* DISPATCHER 02789000
TLOOP C R4,TIMER SEE IF TIMER IS CHANGING 02790000
BNE TIMERON NO, ISSUE WARNING MSG 02791000
BCT R0,TLOOP 02792000
TM CPIFLAG1,CPIAP IS THE APU TO BE ACTIVATED ? @V407595 02793000
BNO NOMPMSG NO - DO NOT INCLUDE MAIN PROC @V407595 02794000
* IN INTERVAL TIMER MSG. 02795000
L R1,=A(TMSGMP) GET MSG PTR. HRC028DK 02796590
L R0,=A(TMSGMPL) GET MSG LENGTH. HRC028DK 02797180
CALL DMKQCNWT,PARM=0 ISSUE WARNING MSG. @V407595 02798000
B TLOOP1 GO CHECK AGAIN. @V407595 02799000
NOMPMSG EQU * @V407595 02800000
L R1,=A(TMSG) GET MESSAGE PTR HRC028DK 02801590
L R0,=A(TMSGL) GET MESSAGE LENGTH HRC028DK 02802180
CALL DMKQCNWT,PARM=0 02803000
B TLOOP1 GO CHECK AGAIN @VA02179 02804000
SPACE 02805000
TIMERON EQU * CHECK CP AND CP ASSIST LEVELS 02806000
* IF CP ASSIST WAS AVAILABLE ON THE MACHINE, BUT IT IS THE WRONG 02807000
* LEVEL, WE SHOULD SEND A MESSAGE. 02807400
TM CPSTAT2,CPASTAVL+CPASTON CHECK AVAIL. BITS @VA14280 02807800
BNM WARMTEST ALL IS OK, NO MESSAGE 02808200
NI CPSTAT2,255-CPASTAVL TURN IT OFF NOW 02808600
L R2,=A(DMKCPEML) GET ADDRESS OF LEVEL NUMBER @V3M4026 02809000
L R1,0(,R2) GET ASSIST LEVEL NO. FOR CONVERT @V3M4026 02824000
CALL DMKCVTBD CONVERT CP ASSIST LEVEL TO DEC. @V386198 02825000
STCM R1,15,CPALVLNO PUT NUMBER INTO MESSAGE TEXT @V386198 02826000
LA R0,CPAMSGL LENGTH OF WARNING MESSAGE @V386198 02827000
LA R1,CPAMSG ADDRESS OF MSG @V386198 02828000
CALL DMKQCNWT,PARM=NOTIME+NORET+ALARM -TELL OPERATOR @V386198 02829000
SPACE 02830000
WARMTEST EQU * HERE TO CHECK FOR TYPE OF START 02831000
MVI WARMFLAG,X'00' CLEAR FLAG BYTE HRC036DK 02831500
OI WARMCOLD,WARMAUTO AUTO-WARM START IF CPID=WRM @V200829 02832000
CLC =CL4'WRM ',CPID WARM MACHINE AFTER RESTART ? 02833000
BE AUTOWRM YES 02834000
L R15,=A(DMKSYSIP) GET INITIAL START TYPE HRC036DK 02834100
LTR R15,R15 IS IT SPECIFIED ? HRC036DK 02834200
BZ RETRY NO, CONTINUE HRC036DK 02834300
TM 0(R15),CPWARM+CPCKPT+CPFORCE+CPCOLD AUTO IPL? HRC036DK 02834400
BNM RETRY NO, CONTINUE HRC036DK 02834500
MVC WARMCOLD,0(R15) MOVE TO STARTUP FLAG HRC036DK 02834600
MVI 0(R15),0 RESET FLAG HRC036DK 02834700
B AUTOWRM HRC036DK 02834800
SPACE 1 02835000
RETRY EQU * 02836000
MVI WARMFLAG,X'00' CLEAR FLAG BYTE HRC036DK 02836500
MVI WARMCOLD,X'00' CLEAR FLAG BYTE HRC036DK 02837000
L R0,=A(AWARML) GET MESSAGE LENGTH HRC028DK 02837690
L R1,=A(AWARM) GET MESSAGE PTR HRC028DK 02838380
CALL DMKQCNWT,PARM=NORET+NOAUTO+NOTIME HRC028DK 02839070
SPACE 1 02840000
LA R0,130 SET EXPECTED INPUT COUNT 02841000
LA R1,CPIATABL GET PTR TO INPUT BUFFER 02842000
CALL DMKQCNRD,PARM=UCASE+EDIT 02843000
LR R4,R0 GET INPUT COUNT 02844000
LA R4,0(R4,R1) GET END OF LAST CHARACTER TYPED IN 02845000
MVI 0(R4),C' ' INSURE THAT BLANK WILL BE FOUND 02846000
LR R3,R1 GET INPUT BUFFER PTR 02847000
GETARG CR R3,R4 AT END OF STRING? 02849000
BNL PROEND YES 02850000
CLI 0(R3),C' ' ELIMINATE PRECEEDING BLANKS 02851000
LA R3,1(,R3) ... 02852000
BE GETARG ... 02853000
BCTR R3,0 02854000
LR R5,R3 GET PTR TO START OF KEYWORD 02855000
LA R5,1(,R5) BUMP PTR 02856000
CLI 0(R5),C' ' SEARCH FOR END OF KEYWORD 02857000
BNE *-8 ... 02858000
SR R5,R3 GET KEYWORD LENGTH 02859000
BCTR R5,0 -1 FOR EXECUTE 02860000
C R5,F8 KEYWORD .GT. 7 ? 02861000
BNL RETRY NO 02862000
LM R7,R9,=A(WSKYTAB,12,WSKYTABE) GET CONSTANTS 02863000
EX R5,KEYCOMP KEYWORD .EQ. KEYWORD IN TABLE ? 02864000
BE KEYFOUND YES 02865000
BXLE R7,R8,*-8 LOOP THROUGH EACH ENTRY IN THE TABLE 02866000
B RETRY 02867000
SPACE 1 02868000
KEYFOUND EQU * HERE WHEN A VALID KEYWORD IS FOUND 02869000
CH R5,10(,R7) CHECK FOR MINIMUM KEYWORD LENGTH 02870000
BL RETRY ... HRC028DK 02871190
LA R6,WSKYFLG2 GET THE ADDR OF FLG2 OPTIONS HRC028DK 02871380
CR R7,R6 IS THE A FLG2 OPTION? HRC028DK 02871570
BNL KEY2FND YES, CONTINUE HRC028DK 02871760
IC R6,9(,R7) GET CONFLICT TEST BYTE 02872000
EX R6,KEYCONFL CONFLICT TEST 02873000
BNZ RETRY BRANCH IF KEYWORDS IN CONFLICT 02874000
IC R6,8(,R7) GET FLAGS 02875000
EX R6,KEYSET TURN ON KEYWORD FLAG 02876000
KEYCONT EQU * HRC028DK 02876500
LA R3,1(R3,R5) SKIP OVER THIS KEYWORD 02877000
B GETARG RESTART SCAN 02878000
KEY2FND EQU * HRC028DK 02878100
OI WARMCOLD,OTHERFLG TURN ON THE OTHER FLG HRC028DK 02878200
IC R6,8(,R7) GET FLAG BYTE HRC028DK 02878300
EX R6,KEYSET2 SET IT ON HRC028DK 02878400
B KEYCONT CONTINUE PROCESSING HRC028DK 02878500
SPACE 1 02879000
PROEND EQU * 02880000
TM WARMCOLD,SHUTDOWN SHUTDOWN ? 02881000
BO SHUTSYS YES 02882000
AUTOWRM SLR R2,R2 PASS WARM FLAGS TO HRC028DK 02883590
ICM R2,B'0011',WARMFLAG DMKWRMST HRC028DK 02884180
CALL DMKWRMST CALL WARM START PROCESSOR 02885000
B *+4(R2) 02886000
B WARMOK RC=0, WARM START COMPLETED SUCCESSFULLY 02887000
B COLDFRCD RC=4, FORCED COLD START HRC032DK 02888490
B RETRY RC=8 REASK QUESTION HRC032DK 02888980
COLDFRCD OI WARMCOLD,COLD INDICATE FORCE COLD START BYHRC032DK 02889470
WARMOK MVC CPID,=C'CPCP' SYSTEM NOW RUNNING @V200730 02890000
MVC APAGCP,=A(DMKCPEND) END OF RESIDENT NUCLEUS @V200730 02891000
EJECT 02892000
DMPALLOC DS 0H ALLOCATE DUMP FILE @V200730 02893000
L R10,=A(DMKSYSRM) GET REAL MACHINE SIZE 02894000
L R10,0(,R10) ... 02895000
AL R10,=X'00000800' ROUND UP TO 4K BOUNDRY @VA09916 02896500
SRL R10,12 GET NUMBER OF PAGES OF MEMORY-1 02897000
LA R10,1+4(,R10) GET NUMBER OF RECORDS IN DUMP FILE 02898000
XC CPIATABL(176),CPIATABL THIS AREA IS USED IN COMPARE *02899000
BELOW 02900000
LA R2,DUMPDTBL GET DUMP DEVICE INFORMATION TABLE 02901000
LA R3,7 Number entries in dump table HRC106DK 02902100
DUMPALOC L R1,4(,R2) GET NUMBER REC/CYL FOR THIS DEVICE 02903000
SR R4,R4 CLEAR 02904000
LR R5,R10 GET NUMBER RECORDS IN DUMP FILE 02905000
DR R4,R1 GET NUMBER OF CYLINDERS NEEDED 02906000
LTR R4,R4 ANY REMAINDER? 02907000
BNZ *+6 YES 02908000
BCTR R5,0 DECREMENT FOR EXECUTE BELOW 02909000
L R8,0(,R2) GET PTR TO RDEVBLOK 02910000
L R8,0(,R8) GET RDEVBLOK 02911000
USING RDEVBLOK,R8 02912000
LTR R14,R8 ANYTHING ON CHAIN ? 02913000
BNZ DUMPEX YES 02914000
DPNXTDEV LA R2,32(,R2) Get next entry in dump table HRC106DK 02915100
BCT R3,DUMPALOC LOOP THROUGH ALL DEVICES 02916000
L R0,=A(DUMPMSGL) GET MESSAGE LENGTH HRC028DK 02917590
L R1,=A(DUMPMSG) GET MESSAGE PTR HRC028DK 02918180
CALL DMKQCNWT,PARM=NORET 02919000
B DUMPDONE 02920000
DUMPER CLR R8,R14 BACK AT START ? 02921000
BE DPNXTDEV YES 02922000
DUMPEX L R4,RDEVALLN GET MAXI ALOCBLK 02923000
LA R1,3(,R4) GET START OF ALLOCATION MAP SKIPPING CYL 0 02924000
LA R7,1(,R4) GET END OF ALLOCATION MAP 02925000
AH R7,0(,R4) ... 02926000
SR R7,R5 ... 02927000
LA R6,1 GET CONSTANT OF 1 02928000
DUMPSR EX R5,DUMPLOOK COMPARE FOR FREE CYLINDERS 02929000
BE SPCFOUND BRANCH IF FOUND 02930000
BXLE R1,R6,DUMPSR LOOP THROUGH MAXI ALOCBLOK 02931000
L R8,RDEVPNT-RDEVBLOK(,R8) NO SPACE FOUND - GET NEXT DEV 02932000
B DUMPER ... 02933000
SPACE 02934000
* THE FOLLOWING TABLE REPRESENTS THE VALUE TO BE ADDED TO RCUCHA 02935000
* TO OBTAIN THE ADDRESS OF A CHANNEL BLOCK WHICH IS ONLINE 02936000
* FOR USE IN ALLOCATING THE SYSTEM DUMP FILE TO A DASD DEVICE. 02937000
DMPCHPTH DC AL1(0,0,0,0,0,0,0,0,4,4,4,4,8,8,12,256) @V407438 02938000
EJECT 02939000
SPCFOUND EQU * HERE WHEN SUFFICIENT SPACE IS FOUND FOR THE DUMP FILE 02940000
LR R9,R1 SAVE ALOCBLOK DUMP CYL POINTER @V407438 02941000
STM R5,R7,TEMPSAVE SAVE TEMPORARILY @V407438 02942000
CALL DMKSCNRD GET FIRST PATH TO DEVICE @V407438 02943000
CALL DMKSCNRU FIND REAL BLOCKS FOR THE 1ST PTH @V407438 02944000
TM RCUSTAT,RCUDISA IS THIS CTL UNIT OFFLINE? @V407438 02945000
BZ CUON NOPE, CU IS OK, BR. @V407438 02946000
L R7,RDEVCUB GET THE SECOND CTL UNIT THEN @V407438 02947000
TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE? @V407438 02948000
BZ *+8 NOPE, BR. @V407438 02949000
L R7,RCUPRIME GET PRIMARY CUBLOK FOR STATUS @V407438 02950000
CUON SLR R5,R5 CLEAR FOR INSERT & INDEX @V407438 02951000
IC R5,RCUSTAT GET CU -> CH PATH STATUS @V407438 02952000
N R5,F15 CH PATH STATUS BITS ONLY PLEASE @V407438 02953000
IC R5,DMPCHPTH(R5) FIND A CHANNEL PATH INDEX TO USE@V407438 02954000
L R6,RCUCHA(R5) GET THE CORRECT CHANNEL BLOCK @V407438 02955000
CALL DMKSCNRA FIND THIS REAL ADDRESS (CCU) @V407438 02956000
L R3,=A(DMKDMPDV) GET PTR TO DUMP DEVICE RDEVBLOK 02957000
ST R1,0(R3) STORE DEVICE ADDRESS @V407438 02958000
L R3,=A(DMKDMPAU) GET PTR TO DUMP AUTO DEVICE RDEVBLOK 02959000
ST R1,0(R3) STORE DEVICE ADDRESS @V407438 02960000
LR R1,R9 RESTORE ALOCBLOK DUMP CYL POINTER@V407438 02961000
LM R5,R7,TEMPSAVE RESTORE CLOBBERED REGS @V407438 02962000
L R9,=A(DMKDMPSF) GET PTR TO DUMP SFBLOK 02963000
USING SFBLOK,R9 02964000
LA R5,1(,R5) RESTORE NUMBER OF CYLINDERS 02965000
LR R3,R1 GET CURRENT BYTE PTR 02966000
SR R3,R4 GET DISPLACEMENT FROM START OF ALOCBLOK 02967000
BCTR R3,0 -1 02968000
BCTR R3,0 -2 02969000
LR R4,R3 SAVE STARTING CYLINDER NUMBER 02970000
SLL R3,8 FORM CCRP DISK ADDRESS 02971000
IC R3,F1+3 GET RECORD 1 02972000
SLL R3,8 ... 02973000
IC R3,RDEVCODE+1 GET DEVICE DISPACEMENT IN OWNED LIST 02974000
ST R3,SFBSTART SET STARTING DISK ADDRESS OF FILE 02975000
LR R0,R5 GET NUMBER OF CYLINDERS ALLOCATED 02976000
MVI 0(R1),X'80' FLAG AS ALLOCATED 02977000
LA R1,1(,R1) BUMP PRT 02978000
BCT R0,*-8 LOOP 02979000
L R3,=A(DMKSYSDU) GET PTR TO USERID TO RECEIVE DUMP 02980000
MVC SFBUSER,0(R3) SET USERID 02981000
L R3,ASYSVM GET PTR TO SYSTEM VMBLOK 02982000
MVC SFBORIG,VMUSER-VMBLOK(R3) SET SYSTEM VMBLOK AS CREATOR 02983000
L R3,=A(DMKDMPRC) GET PTR TO DUMP FILE RECBLOK ANCHOR 02984000
SPACE 1 02985000
RECALOC EQU * HERE TO FORMAT RECORD ALLOCATION BLOCKS 02986000
LA R0,RECSIZE GET SIZE OF RECBLOK 02987000
CALL DMKFREE 02988000
LR R7,R1 GET PTR TO RECBLOK 02989000
USING RECBLOK,R7 02990000
XC RECBLOK(8),RECBLOK CLEAR 02991000
MVC RECMAP,8(R2) SET INITIAL RECORD ALLOCATION BIT MAP 02992000
STH R4,RECCYL SET THE CYLINDER NUMBER FOR THIS BLOK 02993000
L R1,4(,R2) GET NUMBER OF REC/CYL FOR THIS DEV TYPE 02994000
STC R1,RECMAX SET RECMAX 02995000
ST R7,RECPNT-RECBLOK(,R3) CHAIN BLOK 02996000
LR R3,R7 GET NEW ANCHOR 02997000
AR R4,R6 AND NEXT CYLINDER 02998000
BCT R5,RECALOC AND ALLOCATE ALL RECBLOKS 02999000
EJECT 03000000
* WRITE 'DMKSYMTB' TO FIRST RECORD OF DUMP FILE 03001000
L R7,=A(DMKDMPRC) GET FIRST RECBLOK 03002000
L R7,0(,R7) ... 03003000
OI RECMAP,X'80' SET FIRST RECORD IN USE 03004000
MVI RECUSED,1 SET 1ST RECORD IN USE 03005000
MVI CPISEEK+6,X'01' SET RECORD 1 03006000
MVC CPISEEK+2(2),RECCYL SET CYLINDER NUMBER 03007000
MVC CPICCW4(8),CPICCW5 CHANGE READ CCW TO WRITE 03008000
LA R0,IOBSIZE GET IOBLOK SIZE 03009000
CALL DMKFREE GET IOBLOK 03010000
LR R10,R1 SAVE PTR 03011000
USING IOBLOK,R10 03012000
XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR 03013000
L R3,ASYSVM GET PTR TO SYSTEM VMBLOK 03014000
ST R3,IOBUSER STORE AS USER 03015000
LA R3,DUMPRET GET RETURN ADDRESS 03016000
ST R3,IOBIRA SET IT 03017000
LA R3,CPICCW2 GET PTR TO CCWS 03018000
ST R3,IOBCAW AND SET 03019000
CALL DMKIOSQR QUEUE I/O 03020000
GOTO DMKDSPCH GOTO DISPATCH TO AWAIT I/O COMPLETION 03021000
DROP R7,R8,R9,R13 03022000
SPACE 2 03023000
USING DUMPRET,R12 TEMPORARILY . . . 03024000
DUMPRET DS 0D RETURN AFTER WRITE IS COMPLETE 03025000
LM R12,R13,=A(DMKCPIEM,DMKCPIEM+4096) @VM03170 03026000
USING DMKCPIEM,R12,R13 @VM03170 03027000
L R11,ASYSOP GET OPERATOR'S VMBLOK BACK 03028000
LA R0,IOBSIZE GET SIZE OF IOBLOK 03029000
LR R1,R10 GET PTR TO IOBLOK 03030000
CALL DMKFRET RETURN IT TO FREE STORAGE 03031000
DROP R10 03032000
EJECT 03033000
DUMPDONE EQU * HERE TO COMPRESS MAXI ALOCBLOKS 03034000
L R2,=A(DMKSYSOC) GET NUMBER OF OWNED VOLUMES 03035000
L R2,0(,R2) ... 03036000
L R3,=A(DMKSYSOW) GET START OF OWNED LIST 03037000
USING OWNDLIST,R3 03038000
ALOCLP LH R8,OWNDRDEV GET RDEVBLOK DISPLACEMENT 03039000
LTR R8,R8 NEGATIVE? 03040000
BM ALOCGET YES, NOT MOUNTED @VA01639 03041000
SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 03042000
A R8,ARIODV GET RDEVBLOK 03043000
USING RDEVBLOK,R8 03044000
L R4,RDEVALLN GET MAXI ALOCBLOK 03045000
LH R5,0(,R4) GET NUMBER OF CYLINDERS 03046000
ST R8,BALR8 SAVE ADDRESS OF RDEVBLOK 03047000
* 03048000
* A COPY OF THE FOLLOWING CODE IS LOCATED IN 03049000
* DMKVDB FOR ATTACH COMMAND. 03050000
* 03051000
LA R1,63(R5) ROUND UP IF NECESSARY... @VA03723 03052000
SRL R1,6 NO DBLWDS NEEDED: 64 CYL/DBLWD @VA03723 03053000
LA R0,(ALOCMAP-ALOCBLOK+7)/8(R1) ADD IN HDR SIZE @VA03723 03054000
CALL DMKFREE GET MINI ALOCBLOK 03055000
USING ALOCBLOK,R1 03056000
ST R1,RDEVALLN SET RDEVALLN TO MINI ALOCBLOK 03057000
ST R1,BALR1 SAVE ADDRESS OF LAST ALLOCATION BLOCK 03058000
DROP R8 03059000
SR R8,R8 ZERO TDISK CYLINDER COUNTER 03060000
LR R6,R1 ADDR OF ALOCBLOK @VA01188 03061000
LR R7,R0 SIZE OF THE BLOCK @VA01188 03062000
SLL R7,3 IN BYTES PLEASE. @VA01188 03063000
L R15,F0 PAD & COUNT @VA01188 03064000
MVCL R6,R14 CLEAR THE BLOCK @VA01188 03065000
STH R5,ALOCMAX SET ALOCMAX 03066000
SR R9,R9 CLEAR 03067000
LA R14,2(,R4) POINT TO ALLOCATION DATA 03068000
LR R15,R14 SAVE START OF ALOCMAP 03069000
ALOCLKUP CLI 0(R14),X'00' IS THERE ANY ALLOCATION ON THIS CYLINDER? 03070000
BE NOTTDISK GO TEST FOR END OF TDISK AREA 03071000
CLI 0(R14),TEMP ... @VMI0019 03072000
BE NOTTDISK TREAT AS TEMP @VMI0019 03073000
LA R10,1 SET TENTATIVE DECREMENT 03074000
LR R6,R5 GET NUMBER CYLINDERS FOR THIS DEVICE 03075000
SRL R6,1 /2 03076000
LR R7,R14 GET ADDRESS OF CURRENT BYTE 03077000
SR R7,R15 GET CYLINDER NUMBER WHERE WE ARE NOW 03078000
SR R6,R7 03079000
BP *+8 03080000
LPR R6,R6 MAKE POSITIVE 03081000
SR R10,R10 SET DECREMENT TO 0 03082000
AR R6,R6 DOUBLE 03083000
SR R6,R10 DECREMENT, IF NECESSARY 03084000
SRDL R6,3 /8 03085000
SRL R7,29 GET REMAINDER IN LOW ORDER 3 BITS 03086000
IC R7,ALOCTBL(R7) GET BITS THAT ARE ALREADY IN ALOCTBL 03087000
LA R6,ALOCMAP(R6) GET PROPER OUTPUT BYTE 03088000
EX R7,ALLOCON TURN ON APPROPRIATE BIT 03089000
LA R9,1(,R9) KEEP TOTAL OF ALLOCATED CYLINDERS 03090000
CLI 0(R14),X'02' TDISK CYLINDER ?? 03091000
BNE CNTTEMP NO -- GO TEST FOR END OF TDISK 03092000
LA R8,1(,R8) BUMP TDISK CYLINDER COUNT 03093000
B ALOCNXT AND GO PROCESS NEXT CYLINDER 03094000
SPACE 03095000
CNTTEMP L R6,BALR8 GET ADDRESS OF RDEVBLOK 03096000
TM RDEVFLAG-RDEVBLOK(R6),RDEVPREF TEMP SPACE ? 03097000
BO NOTTDISK NO -- PAGING SPACE 03098000
CLI 0(R14),ALLOC ALLOC. BY DMP OR WRM STRT @VMI0019 03099000
BNE NOTTDISK NO, CHECK FOR END OF TDSK @VMI0019 03100000
L R0,PGTTU COUNT OF TEMP CYLS ALLOC. @VMI0019 03101000
A R0,F1 PLUS ONE 03102000
ST R0,PGTTU AND STORE 03103000
SPACE 03104000
LH R0,ALOCNTMP COUNT OF ALREADY ALLOC 'TEMP' CYL@VA03723 03105000
A R0,F1 BUMP BY ONE @VA03723 03106000
STH R0,ALOCNTMP AND RESAVE FOR LATER @VA03723 03107000
NOTTDISK LTR R8,R8 ANY TDISK ALLOCATED ?? 03108000
BZ ALOCNXT NO -- 03109000
ST R1,BALR6 SAVE CURRENT (OLD) ADDR @VA03723 03110000
LA R7,7(R8) ROUND UP IF NECESSARY... @VA03723 03111000
SRL R7,3 NO DBLWDS NEEDED: 8 CYL/DBLWD @VA03723 03112000
LA R7,(ALOCMAP-ALOCBLOK+7)/8(R7) ADD IN HDR SIZE @VA03723 03113000
LR R0,R7 TO R0 FOR DMKFREE PLEASE @VA03723 03114000
STM R14,R15,BALR14 SAVE REGS 14 AND 15 OVER CALL 03115000
CALL DMKFREE GET CORE FOR A TDISK BLOK 03116000
LR R6,R1 NEW BLOK ADDR @VA01188 03117000
SLL R7,3 SIZE IN BYTES @VA01188 03118000
L R15,F0 PAD & COUNT @VA01188 03119000
MVCL R6,R14 CLEAR THE BLOCK @VA01188 03120000
LM R14,R15,BALR14 RESTORE R14, R15 @VA01188 03121000
L R7,BALR1 RESTORE ADDRESS OF LAST ALLOCATION BLOCK 03122000
ST R1,ALOCPNT-ALOCBLOK(,R7) CHAIN IT TO OLD LAST BLOCK 03123000
MVI 0(R7),X'80' AND FLAG IT AS TDISK ALLOCATION 03124000
ST R1,BALR1 AND SAVE ADDRESS OF NEW LAST BLOCK 03125000
LR R7,R14 GET CURRENT CYLINDER 03126000
SR R7,R15 RELATIVE TO ZERO 03127000
BCTR R7,0 LESS ONE (LAST TDISK CYLINDER) 03128000
STH R7,ALOCCYL2 SAVE AS LAST CYLINDER ADDRESS 03129000
SR R7,R8 GET 1ST CYLINDER ADDRESS 03130000
LA R7,1(,R7) ... 03131000
STH R7,ALOCCYL1 SAVE IN ALOCBLOK 03132000
LA R10,ALOCMAP(R8) POINT TO FIRST NON-ALLOCATED BYTE 03133000
SR R8,R8 CLEAR TDISK COUNTER FOR NEXT TIME 03134000
LR R7,R1 SAVE ADDRESS OF BLOK 03135000
L R1,BALR6 RESTORE ADDR OF OLD BLOK @VA01188 03136000
SLL R0,3 GET LENGTH OF BLOK 03137000
AR R7,R0 GET END OF BLOK 03138000
BCTR R7,0 GET LAST BYTE OF BLOK 03139000
CR R10,R7 BLOK FULL ?? 03140000
BH ALOCNXT YES -- 03141000
LA R6,1 GET INCREMENT FOR BXLE 03142000
MVI 0(R10),X'AA' FLAG UNUSED BYTES AS ALLOCATED 03143000
BXLE R10,R6,*-4 LOOP UNTIL BLOK IS FULL 03144000
SPACE 03145000
ALOCNXT CLI 0(R14),X'FF' END OF ALLOCATION ?? 03146000
LA R14,1(,R14) IN ANY CASE, INDEX UP 03147000
BE ALOCFINI YES 03148000
LR R10,R14 GET CURRENT ALOCATION BYTE 03149000
SR R10,R4 MINUS START OF TABLE 03150000
BCTR R10,0 ... 03151000
BCTR R10,0 ... 03152000
CH R10,ALOCMAX EXCEEDED MAXIMUM ? 03153000
BL ALOCLKUP NO 03154000
CLI 0(R14),X'FF' END OF ALLOCATION DATA ? 03155000
BE NOTTDISK SEE IF T-DISK AT TOP OF DEVICE 03156000
SPACE 2 03157000
ALOCFINI EQU * HERE AT END OF MAXI ALLOCATION TABLE SCAN 03158000
STH R9,ALOCUSED SET TOTAL NUMBER OF CYLINDERS ALLOCATED 03159000
SR R5,R9 GET NUMBER OF TEMP CYLINDERS ON VOLUME 03160000
SH R9,ALOCNTMP LESS 'TEMP' CYLS ALREADY ALLOCATE@VA03723 03161000
STH R9,ALOCNTMP SET NUMBER OF NON-TEMP CYLS @VA03723 03162000
L R1,BALR8 GET ADDRESS OF RDEVBLOK 03163000
TM RDEVFLAG-RDEVBLOK(R1),RDEVPREF TEMP SPACE ? 03164000
BO GETALOC NO -- PAGING SPACE 03165000
A R5,PGTTM ADD CURRENT TOTAL OF TEMP CYLINDERS 03166000
ST R5,PGTTM AND SAVE. (EXCLUDING TDISK SPACE) 03167000
SPACE 03168000
GETALOC LA R0,6+(MAXALLOC+7)/8 CORE FOR LARGEST ALLOC BLOCK@V200528 03169000
LR R1,R4 GET MAXI ALOCBLOK 03170000
CALL DMKFRET 03171000
ALOCGET LA R3,8(,R3) GET NEXT ENTRY IN OWNDLIST 03172000
BCT R2,ALOCLP 03173000
L R15,=A(DMKPGTTM) GET ADDRESS OF MAX COUNTER 03174000
L R3,PGTTM GET UNALLOCATED TEMP TOTAL 03175000
A R3,PGTTU ADD TEMP ALLOCATED 03176000
ST R3,0(R15) AND STORE 03177000
M R2,F9 TIMES 90 PERCENT 03178000
D R2,F10 .. 03179000
L R15,=A(DMKPGT90) ADDRESS OF 90 PERCENT COUNTER 03180000
ST R3,0(R15) STORE 90 PERCENT COUNT 03181000
* END OF DUPICATE CODE USED BY DMKVDB 03182000
L R15,=A(DMKPGTTU) ADDRESS OF TEMP IN USED COUNTER 03183000
MVC 0(4,R15),PGTTU MOVE USED VALUE TO COUNTER 03184000
L R6,=A(DMKRIORN) TABLE OF 3705'S @VA04552 03185000
L R5,0(0,R6) COUNT OF ENTRIES @VA04552 03186000
LTR R5,R5 ANY ENTRIES ? @VA04552 03187000
BNP LOGOP NO..GO LOGON OPERATOR @VA04552 03188000
NR3705 LA R6,4(,R6) NEXT ENTRY IN TABLE @VA04552 03189000
LH R8,0(0,R6) DISP TO RDEVBLOK @VA04552 03190000
SLL R8,3 CONVERT TO BYTE INDEX @VA04552 03191000
AL R8,ARIODV RDEVBLOK ADDRESS @VA04552 03192000
CLI RDEVTYPC-RDEVBLOK(R8),CLASTERM BSC LINE ? @VA04552 03193000
BE ANDEV YES..SKIP FOR NOW... @VA04552 03194000
OI RDEVSTAT-RDEVBLOK(R8),RDEVNRDY 370X IS UNLOADED @VA04552 03195000
ANDEV BCT R5,NR3705 LOOP THROUGH ALL 370X'S @VA04552 03196000
B LOGOP GO LOGON OPERATOR NOW .... @V200730 03197000
EJECT 03198000
MAPMSG EQU * CREATE STORAGE MAP MSG @V396414 03199000
L R6,=A(DMKCPEND) DMKCPEND MINUS DMKSLC @V396414 03200000
LA R6,4095(,R6) ROUND UP TO PAGE BOUNDARY @VA05879 03201000
N R6,XPAGNUM ... ... ... ... ... ... @VA07433 03202000
ICM R5,B'1111',=A(DMKSLC) EQUALS NUCLEUS SIZE @V396414 03203000
BZ NOVR ONLY IF THERE IS A V=R USER @V396414 03204000
S R5,F4095 PSA PAGE CONSIDERED NUCLEUS @V396414 03205000
SR R6,R5 ..... @V396414 03206000
ST R5,SAVVR SAVE FOR LATER CONVERSION @V396414 03207000
NOVR ST R6,SAVNUC SAVE FOR LATER CONVERSION @V396414 03208000
SPACE 1 03209000
L R5,=A(DMKFREHI) DMKFREHI @V396414 03210000
L R5,0(,R5) ..... @V396414 03211000
L R6,=A(DMKFRELO) MINUS DMKFRELO @V396414 03212000
L R6,0(,R6) ..... @V396414 03213000
SR R5,R6 MINUS TRACE STORAGE @V396414 03214000
L R7,SAVTRA ...... @V396414 03215000
SR R5,R7 EQUALS DYNAMIC AREA @V396414 03216000
ST R5,SAVDYN SAVE FOR LATER @V396414 03217000
SPACE 1 03218000
L R5,=A(DMKCPEND) DMKFRELO MINUS DMKCPEND @V396414 03219000
LA R5,4095(,R5) ROUND UP TO PAGE BOUNDARY @VA05879 03220000
N R5,XPAGNUM ... ... ... ... ... ... @VA07433 03221000
SR R6,R5 ...... @V396414 03222000
L R5,=A(DMKFREHI) PLUS USEABLE CORE @V396414 03223000
L R5,0(,R5) ..... @V396414 03224000
L R7,SAVSTOR MINUS DMKFREHI @V396414 03225000
SR R7,R5 ...... @V396414 03226000
AR R7,R6 EQUALS FREE STORAGE @V396414 03227000
TM CPIFLAG1,CPIAP IS PREFIX AREA TO BE DEFINED ? @V407595 03228000
BNO NOAP2 NO - DO NOT ADJUST FREE STORAGE @V407595 03229000
S R7,F8192 ADJUST FREE STORAGE BY THE 2 @V407595 03230000
* PREFIX AREA FRAMES. 03231000
NOAP2 EQU * @V407595 03232000
ST R7,SAVFREE SAVE FOR LATER @V396414 03233000
SPACE 1 03234000
LA R3,SAVSTOR SET UP LOOP FOR CONVERSION @V396414 03235000
LA R4,8 ...... @V396414 03236000
LA R5,SAVVR ...... @V396414 03237000
LA R7,512 HALF K FOR HALF ADJUST @V396414 03238000
SPACE 1 03239000
KCNVRT L R1,0(,R3) GET SAVED BYTE COUNT @V396414 03240000
ALR R1,R7 HALF ADJUST @V396414 03241000
SRL R1,10 SHIFT TO KBYTES @V396414 03242000
CALL DMKCVTBD CONVERT TO PRINTABLE FORM @V396414 03243000
STM R0,R1,0(R3) AND PUT BACK @V396414 03244000
BXLE R3,R4,KCNVRT CONVERT ALL .. @V396414 03245000
SPACE 1 03246000
MVC ALOCSTOR,SAVSTOR+3 PLUG STORAGE K @V396414 03247000
MVC ALOCNUC,SAVNUC+5 PLUG NUCLEUS K @V396414 03248000
MVC ALOCDYN,SAVDYN+3 PLUG DYNAMIC K @V396414 03249000
MVC ALOCFREE,SAVFREE+4 PLUG FREE K @V396414 03250000
MVC ALOCTRA,SAVTRA+5 PLUG TRACE K @V396414 03251000
MVC ALOCVR,SAVVR+3 PLUG V=R K @V396414 03252000
SPACE 1 03253000
LA R0,ALOCMSGL GET MESSAGE LENGTH @V396414 03254000
LA R1,ALOCMSG POINT TO MESSAGE @V396414 03255000
CALL DMKQCNWT,PARM=NORET+NOTIME @V396414 03256000
EJECT 03257000
SLR R2,R2 GIVE FILES MSG TO OPERATOR EVEN IF THERE 03258000
CALL DMKCQRFI ...ARE NO FILES NOW @V200930 03259000
SPACE 03260000
* HERE TO START SPOOL DEVICES (UNLESS 'DRAIN' SPECIFIED) 03261000
TM WARMFLAG,DRAIN "DRAIN" SPECIFIED ? HRC028DK 03262490
BO PPMAP YES @VMD0161 03263000
LA R5,B'11111111' START ALL DEVICES ARBITRARILY 03264000
TM WARMCOLD,COLD "COLD" SPECIFIED ? 03265000
BO *+8 YES 03266000
LA R5,B'11111110' START ONLY IF NOT DRAINED 03267000
CALL DMKCSOSD START ALL PUNCH AND PRINTERS 03268000
SPACE 2 03269000
PPMAP DS 0H INITIALIZE PP BIT MAP @VMD0161 03270000
CALL DMKHVDPP @VMD0161 03271000
SPACE 2 03272000
STARTSYS DS 0H @V200730 03273000
* 03274000
* CHECK IF A SYMBOL TABLE (DMKSYM) EXISTS. IF ONE DOES, 03274400
* WRITE IT OUT TO THE PAGING DEVICE TO ENSURE WE HAVE A 03274800
* COPY OF IT. IN ADDITION, WRITE OUT MODULE DMKVMI. 03275200
* READ IN ALL PAGABLE MODULES BETWEEN DMKSAV AND 03275600
* DMKCKP FROM SYSRES DEVICE AND FORCE TO BACKING DEVICE. 03276000
* 03277000
L R1,=A(DMKSYM) GET ADDR OF SYMBOL TABLE @VA13364 03277090
LTR R1,R1 DO WE HAVE ONE @VA13364 03277180
BZ GETVMI NO, GO TO GET DMKVMI MODULE @VA13364 03277270
BAL R3,WRTOUT GO WRITE OUT THE SYMBOL TABLE @VA13364 03277360
GETVMI DS 0H @VA13364 03277450
L R1,=A(DMKVMI) GET ADDR OF DMKVMI @VA13364 03277540
LTR R1,R1 MAKE SURE WE HAVE A DMKVMI @VA13364 03277630
BZ STRTLOOP DON'T HAVE A VMI, SKIP THIS @VA13364 03277720
BAL R3,WRTOUT GO WRITE OUT THE SYMBOL TABLE @VA13364 03277810
STRTLOOP DS 0H @VA13364 03277900
L R1,=A(DMKSAV) LOCATE FIRST PAGABLE MODULE 03278000
TRANSLP A R1,F4096 POINT TO NEXT PAGE 03279000
C R1,=A(DMKCKP) REACH LAST PAGABLE MODULE ?? 03280000
BNL CPIEXIT YES - 03281000
C R1,=A(DMKVMI) IS IT VMI? @VA03106 03282000
BE TRANSLP YES, NO NEED TO WRITE IT AGAIN @VA13364 03283000
C R1,=A(DMKSYM) IS IT SYM? @VA03106 03284000
BE TRANSLP YES, NO NEED TO WRITE IT AGAIN @VA13364 03285000
TRANSIN EQU * @VA03106 03286000
TRANS 2,1,OPT=(BRING,DEFER,SYSTEM) PAGE IT IN 03287000
B TRANSLP GET NEXT PAGE 03288000
WRTOUT LA R6,20 TRY 20 TIMES IF I/O ERROR @VA13167 03289000
GETCCPD LR R2,R1 SAVE THE ADDR IN R2 @VA13167 03289500
CALL DMKPGTPG GET A DASD PAGE @VA03106 03290000
LTR R1,R1 IS THE SPACE AVAILABLE? @VA03106 03291000
BNZ RPACALL WRITE IT OUT NOW @VA04083 03292000
LR R1,R2 RESTORE ADDR @VA04083 03293000
B CPI4 TERMINATE SYS - SPACE NOT AVAIL @VA13167 03294000
RPACALL EQU * @VA04083 03295000
LR R0,R1 RPA EXPECT R0 CONTAIN DASD ADDR @VA03106 03296000
LR R1,R2 R1 HAS THE VIRT. ADDR @VA03106 03297000
CALL DMKRPAPT,PARM=SYSTEM @VA03106 03298000
BZR R3 WRITE SUCCESSFUL,RETURN TO CALLER@VA13364 03299000
BCT R6,GETCCPD IF FATAL ERROR, TRY ANOTHER CCPD @VA13167 03299300
ABEND 4 ABEND 4 - PAGING ERRORS @VA13167 03299600
SPACE 2 03300000
CPIEXIT EQU * 03301000
* INITIALIZE THE I/O ERROR RECORDING, MACHINE CHECK HANDLER 03302000
* AND CHANNEL CHECK HANDLER. 03303000
CALL DMKIOEFL 03304000
MVC MCNPSW,MCKPSW SETUP MACHINE CHECK NEW PSW 03305000
STCTL C14,C14,TEMPR14 @VMD0103 03306000
OC TEMPR14(L'EFC0),EFC0 MASK ON MACHINE CHECKS 03307000
LCTL C14,C14,TEMPR14 @VMD0103 03308000
EJECT 03309000
CPILOAD EQU * AUTOMATIC LOAD OF THE 370X'S @V200820 03310000
L R6,=A(DMKRIORN) TABLE OF EXISTING 370X BOXES@V200820 03311000
L R5,0(0,R6) GR5 = COUNT OF ENTRIES @V200820 03312000
LTR R5,R5 ARE THERE ANY AT ALL ? @V200820 03313000
BNP CPICHKAP NO - CHECK IF APU IS TO BE INIT @V407595 03314000
LOAD37X EQU * LOAD 370X CONTROL PROGRAMS @V200820 03315000
LA R6,4(0,R6) NEXT ENTRY IN TABLE @V200820 03316000
LH R8,0(0,R6) DISPLACEMENT TO RDEVBLOK @V200820 03317000
SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 03318000
AL R8,ARIODV GR8 = RDEVBLOK ADDRESS @V200820 03319000
USING RDEVBLOK,R8 @V200820 03320000
CLI RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS ? @V2D3931 03321000
BE REM3270 YES, VARY STATIONS ONLINE 03322000
OI RDEVSTAT,RDEVNRDY SET IT NOT READY (UNLOADED) @V240820 03323000
TM RDEVSTAT,RDEVDISA OFFLINE NOW ? @V200820 03324000
BO LOADNXT YES - SKIP THIS ONE @V200820 03325000
TM RDEVFLAG,RDEVAUTO AUTOMATIC LOAD ENABLED ? @V200820 03326000
BZ LOADNXT NO -- SKIP THIS ONE @V200820 03327000
CALL DMKNLDR,PARM=SYSTEM LOAD A 370X PROGRAM @V200820 03328000
LOADNXT EQU * @V200820 03329000
BCT R5,LOAD37X LOOP THROUGH ALL DEVICES @V200820 03330000
CPICHKAP DS 0H @V407595 03331000
AIF (NOT &AP).APCHK7 03332000
TM CPIFLAG1,CPIAPOFF WAS APU SUPPORT REQUESTED @V4M0206 03333000
* VIA SYSGEN, BUT IS NOT AVAILABLE?@V4M0206 03334000
BNO APCHECK NO - SEE IF ATTACHED PROCESSOR @V407595 03335000
* IS ONLINE. 03336000
* 03337000
* YES - WRITE INDICATE MSG TO OPERATOR 03338000
* 03339000
L R0,=A(CPI959LN) GET LENGTH OF MESSAGE HRC028DK 03340590
L R1,=A(CPI959MG) GET POINTER TO MESSAGE HRC028DK 03341180
* ISSUE MESSAGE DMKCPI959W 03342000
CALL DMKQCNWT,PARM=NOTIME+OPERATOR @VMH0017 03343000
B CPIENAB EXIT UNLOCKED TO THE DISPATCHER @V407595 03344000
APCHECK EQU * @V407595 03345000
TM CPIFLAG1,CPIAP IS THE ATTACHED PROCESSOR ONLINE @V407595 03346000
BNO CPIENAB NO - EXIT UNLOCKED TO THE DISP @V407595 03347000
* YES - SETUP TO CALL DMKAPIPR TO COMPLETE 03348000
* INITIALIZATION OF THE PREFIX AREAS 03349000
L R1,CPIDMPSA SET INPUT PARAMETER FOR DMKAPIPR @V5BC0AB 03350000
* ADDRSS OF SAVED PREFIXA/B VALUES 03351000
CALL DMKAPIPR INITIALIZE THE PREFIX AREAS ON @V407595 03352000
* THE APU. 03353000
CALL DMKCLKCK SYNC CLOCKS IF NECESSARY @V407595 03354000
SIGNAL WAKEUP WAKEUP THE APU. THIS IS NECESSARY@V4M0102 03355000
* TO ENSURE CPU TIMER SET TO WAIT VALUE. 03356000
L R0,=A(CPI958LN) SET LENGTH OF MSG HRC028DK 03357590
L R1,=A(CPI958MG) SET ADDRESS OF MSG HRC028DK 03358180
* ISSUE MESSAGE DMKCPI958I 03359000
CALL DMKQCNWT,PARM=NOTIME+OPERATOR @VMH0017 03360000
SPACE 03361000
.APCHK7 ANOP 03362000
CPIENAB EQU * ENABLE 270X TERMINAL LINES @V200820 03363000
L R15,PREFIXB LOAD APU PREFIX @V407595 03364000
OI APSTAT1,CPINITD SET INITIALIZATION COMPLETE @VA07615 03365000
* IN MAIN PROCESSOR'S PSA; 03366000
OI APSTAT1-PSA(R15),CPINITD AND IN ATTACHED @VA07615 03367000
* PROCESSOR'S PSA, IF PRESENT. 03368000
TM WARMFLAG,DISABLE WAS DISABLE REQUESTED ? HRC028DK 03369590
BO CPIDSP YES, CONTINUE HRC028DK 03370180
CALL DMKCPVAE AUTOMATIC RE-ENABLE, TERM + GRAF @V200829 03371000
CALL DMKNETAE AUTOMATIC RE-ENABLE LINE&STATION 03372000
EJECT 03373000
CPIDSP DS 0H ALMOST DONE @V408246 03374000
L R7,=A(DMKSYSTE) GET THE END TIME @V50A2B5 03375000
L R5,0(R7) @V50A2B5 03376000
SR R4,R4 PREPARE TO MULTIPLY @V50A2B5 03377000
M R4,=F'1000000' CONVERT TO MICROSECONDS @V50A2B5 03378000
SLDL R4,12 THEN TO TOD FORMAT @V50A2B5 03379000
STM R4,R5,0(R7) STORE IT BACK @V50A2B5 03380000
L R7,=A(DMKSYSTS) GET THE START TIME @V50A2B5 03381000
L R5,0(R7) @V50A2B5 03382000
SR R4,R4 PREPARE TO MULTIPLY @V50A2B5 03383000
M R4,=F'1000000' CONVERT TO MICROSECONDS @V50A2B5 03384000
SLDL R4,12 @V50A2B5 03385000
STM R4,R5,0(R7) STORE THE TOD FORMAT @V50A2B5 03386000
L R5,=A(DMKSYSAT) NOTE DEFAULT AUTO SETTING @V50A2B5 03387000
TM 0(R5),AUTGO IS AUTO MONITOR ON @V50A2B5 03388000
BNO ENDUPDT NO @V50A2B5 03389000
L R1,=A(DMKSYSUR) GET THE USER NAME ADDRESS @V50A2B5 03390000
LR R5,R1 GET THE LENGTH OF THE USERID @V50A2B5 03391000
LA R4,1 @V50A2B5 03392000
TRYAGN CLI 1(R5),C' ' LOOK FOR A BLANK @V50A2B5 03393000
BE ENDLOOK AS DELIMITER @V50A2B5 03394000
LA R4,1(R4) BUMP COUNT BY ONE @V50A2B5 03395000
LA R5,1(R5) ALSO THE ADDRESSING @V50A2B5 03396000
C R4,F8 8 IS THE LIMIT @V50A2B5 03397000
BE ENDLOOK @V50A2B5 03398000
B TRYAGN KEEP GOING UNTIL THE END @V50A2B5 03399000
ENDLOOK LR R0,R4 KEEP IN REGISTER 0 @V50A2B5 03400000
SR R2,R2 PASS ZERO IN REG 2 @V50A2B5 03401000
CALL DMKUDRFU VERIFY THAT USER IS VALID @V50A2B5 03402000
BZ NOERRORR KEEP ON GOING WITH THE CODE @V50A2B5 03403000
LA R0,L'UBADMSG SEND OUT ERROR MESSAGE @V50A2B5 03404000
L R1,=A(UBADMSG) HRC028DK 03405490
CALL DMKQCNWT,PARM=NORET+OPERATOR @V50A2B5 03406000
B ENDUPDT @V50A2B5 03407000
NOERRORR EQU * @V50A2B5 03408000
SPACE 1 03409000
CALL DMKMNIST HANDLE THE TRQS @VMD0138 03410000
SPACE 1 03411000
ENDUPDT EQU * @V50A2B5 03412000
LA R7,9 UP TO NINE AUTOLOG USERS HRC016DK 03412200
LA R5,C'1' START WITH ONE C'1' HRC016DK 03412400
AUTOLALL EQU * HRC016DK 03412600
TM WARMFLAG,NOAUTOLG WAS NOAUTOLOG REQUESTED? HRC028DK 03412700
BO CPIUNCK YES, CONTINUE HRC028DK 03412800
L R9,=A(AUTOCOM) AUTOLOG USER @V408246 03413000
USING AUTOCOM,R9 @V408246 03414000
STC R5,AUTOUSR+7 SAVE NUMBER HRC016DK 03415290
XC AUTOPSRD,AUTOPSRD CLEAR PASSWORD HRC016DK 03415580
LA R0,17 LENGTH OF COMMAND HRC016DK 03415870
ST R0,AUTOLEN HRC016DK 03416160
LA R0,8 LENGTH OF USERID HRC016DK 03416450
LA R1,AUTOUSR AUTOLOG USERID HRC016DK 03416740
ST R1,AUTOSTRT HRC016DK 03417030
LA R2,AUTOCOM+4*8 ROOM FOR DIRECTORY BLOCK @V408246 03418000
CALL DMKUDRFU IS IT THERE? @V408246 03419000
BNZ NOAUTOL NO, BYPASS LOGON HRC028DK 03420270
CLC AUTOUSR(8),UDIRUSER-UDIRBLOK(R2) IS THIS IT HRC016DK 03420380
BNE NOAUTOL NO, BYPASS LOGON HRC028DK 03420760
MVC AUTOPSRD(8),UDIRPASS-UDIRBLOK(R2) MOVE-IN @V408246 03421000
* PASSWORD 03422000
CALL DMKALGON CALL LOGON @V407595 03423000
NOAUTOL EQU * HRC028DK 03423290
LA R5,1(,R5) INCREMENT BY 1 HRC016DK 03423400
BCT R7,AUTOLALL HRC016DK 03423600
DROP R9 @V408246 03424000
CPIUNCK DS 0H UNLOCK CPI AND EXIT @V408246 03425000
LA R0,INITMSGL GET MESSAGE LENGTH HRC028DK 03425200
L R1,=A(INITMSG) POINT TO MESSAGE HRC028DK 03425400
CALL DMKQCNWT,PARM=NORET+NOTIME HRC028DK 03425600
LR R2,R12 FIRST PAGE TO UNLOCK @V200820 03426000
CALL DMKPTRUL UNLOCK MYSELF @V200820 03427000
LR R2,R13 SECOND PAGE FOR UNLOCK @V200820 03428000
CALL DMKPTRUL @VA05046 03429000
LA R2,X'FFF' UNLOCK THIRD PAGE @VA05046 03430000
LA R2,1(R2,R13) @VA05046 03431000
CALL DMKPTRUL @VA05046 03432000
CPIRET EQU * @VA08415 03433000
GOTO DMKDSPCH START UP THE SYSTEM . . . @V200820 03434000
SPACE 2 03438000
REM3270 DS 0H VARY ALL STATIONS ONLINE @VA08698 03439000
USING NICBLOK,R7 ADDRESSABILITY FOR NICBLOK 03440000
TM RDEVSTAT,RDEVDISA IS BISYNC LINE OFFLINE ? 03441000
BO LOADNXT YES, GET NEXT RDEVBLOK POINTER 03442000
L R7,RDEVNICL GET START OF NICBLOK LIST 03443000
RMSTAT EQU * VARY REMOTE STATION ONLINE 03444000
LH R2,NICNAME GET RESOURCE ID. 03445000
LA R2,1(0,R2) UPDATE RESOURCE ID. BY ONE 03446000
NI NICSTAT,X'FF'-NICDISA CLEAR OFFLINE FLAG 03447000
CH R2,RDEVMAX IS THIS END OF RESOURCE LIST 03448000
BH LOADNXT YES, GET NEXT RDEVBLOK POINTER 03449000
AH R7,=AL2(NICSIZE*8) UPDATE TO NEXT NICBLOK ADDR 03450000
B RMSTAT GET RESOURCE ID. 03451000
DROP R8 DROP BASE REGISTER FOR RDEVBLOK 03452000
EJECT 03456000
LTORG 03458000
EJECT HRC028DK 03459010
INITMSG EQU * HRC028DK 03459020
DC X'15' HRC028DK 03459030
DC C'DMKCPI966I Initialization complete' HRC028DK 03459040
DC X'15' HRC028DK 03459050
INITMSGL EQU *-INITMSG HRC028DK 03459060
SPACE 3 HRC028DK 03459070
MSG971 EQU * HRC028DK 03459080
DC X'15' HRC028DK 03459090
DC C'DMKCPI971I System is ' HRC028DK 03459100
AIF (NOT &AP).UP971 HRC028DK 03459110
DC C'Attached ' HRC028DK 03459120
AGO .MSG971 HRC028DK 03459130
.UP971 ANOP HRC028DK 03459140
DC C'Uni' HRC028DK 03459150
.MSG971 ANOP HRC028DK 03459160
DC C'processor generated' HRC028DK 03459170
DC X'15' HRC028DK 03459180
AIF (NOT &FRETRAP).FRE971 HRC035DK 03459182
DC C'DMKCPI977I Free Trap Installed',X'15' 03459184
.FRE971 ANOP HRC035DK 03459186
MSG971L EQU *-MSG971 HRC028DK 03459190
SPACE 3 HRC028DK 03459200
UBADMSG DC C'DMKCPI229I User of MONITOR does not exist' HRC028DK 03459210
CPI958MG DC X'15' HRC202DK 03459225
DC C'DMKCPI958I Attached processor' HRC028DK 03459230
DC C' now operational' HRC028DK 03459240
DC X'15' HRC202DK 03459255
CPI958LN EQU *-CPI958MG HRC028DK 03459260
CPI959MG DC X'15' HRC202DK 03459275
DC C'DMKCPI959W Attached processor not online' HRC028DK 03459280
DC X'15' HRC202DK 03459295
CPI959LN EQU *-CPI959MG HRC028DK 03459300
TMSGMP DC X'15' HRC202DK 03459315
DC C'Turn on the MAIN processor''s Interval Timer' HRC028DK 03459320
DC X'15' HRC202DK 03459335
TMSGMPL EQU *-TMSGMP HRC028DK 03459340
CPI955MG DC X'15' HRC202DK 03459355
DC C'DMKCPI955W Insufficient storage for VM/370' HRC028DK 03459360
DC X'15' HRC202DK 03459375
CPI955LN EQU *-CPI955MG HRC028DK 03459380
WNGMSG DC X'151515' HRC028DK 03459390
DC C'VM/370 System Restart' HRC028DK 03459400
WNGMSGL EQU *-WNGMSG HRC028DK 03459410
SPACE , HRC028DK 03459420
TMSG DC C'Turn on the Interval Timer' HRC028DK 03459430
TMSGL EQU *-TMSG HRC028DK 03459440
SPACE , HRC028DK 03459450
AWARM DC C'Start ((Warm|Force|COLD|CKPT) ' HRC028DK 03459460
DC C'(DRain) (DIsable) (NOAUTOlo))' HRC028DK 03459470
DC C' or (SHUTDOWN):' HRC028DK 03459480
AWARML EQU *-AWARM HRC028DK 03459490
SPACE , HRC028DK 03459500
DATEMSG DC C'Set Date MM/DD/YY :' HRC028DK 03459510
DATEMSGL EQU *-DATEMSG HRC028DK 03459520
SPACE , HRC028DK 03459530
CMSG DC C'Set Time HH:MM:SS :' HRC028DK 03459540
CMSGL EQU *-CMSG HRC028DK 03459550
SPACE , HRC028DK 03459560
SHUTM1 DC X'15' HRC202DK 03459575
DC C'DMKCPI968I No Warm Start, previous data' HRC028DK 03459580
DC C' still valid' HRC028DK 03459590
DC X'15' HRC202DK 03459605
SHUTM1L EQU *-SHUTM1 HRC028DK 03459610
SPACE , HRC028DK 03459620
SHUTM2 DC C'DMKCPI961W System SHUTDOWN complete' HRC202DK 03459636
DC X'15' HRC202DK 03459642
SHUTM2L EQU *-SHUTM2 HRC028DK 03459650
SPACE , HRC028DK 03459660
DUMPMSG DC X'15' HRC202DK 03459675
DC C'DMKCPI953I Unable to allocate' HRC028DK 03459680
DC C' SYSTEM AUTO DUMP' HRC028DK 03459690
DC X'15' HRC202DK 03459705
DUMPMSGL EQU *-DUMPMSG HRC028DK 03459710
DS 0D HRC106DK 03459800
CPIATABL DC 4096X'00' Buffer for largest allocation recHRC106DK 03459810
ORG CPIATABL+136 HRC106DK 03459820
MONTH DS 1X HRC106DK 03459830
DAY DS 1X HRC106DK 03459840
YEAR DS 1X HRC106DK 03459850
DS 1X HRC106DK 03459860
HOUR DS 1X HRC106DK 03459870
MIN DS 1X HRC106DK 03459880
SEC DS 1X HRC106DK 03459890
DS 1X HRC106DK 03459900
DS CL8 HRC106DK 03459910
CVTWORD DS PL8 HRC106DK 03459920
ORG , HRC106DK 03459930
EJECT 03460000
PSA , @V306638 03461000
PREFIX EQU PREFIXA-PSA @V407595 03462000
CLRCNT EQU PSENDCLR-PGREAD @V407595 03463000
COPY EQU @V306638 03464000
MCHEKENB EQU (MCHEK+EXTMODE)*X'10000' 03465000
XMODEON EQU EXTMODE*X'10000' 03466000
WAITON EQU (WAIT+EXTMODE)*X'10000' 03467000
SPACE 1 03468000
MB35 EQU 348 35MB 3340/3344 CYLINDERS @V56BDA8 03476000
MB70 EQU 696 70MB 3340/3344 CYLINDERS @V56BDA8 03477000
TEMP EQU X'08' TEMP SPACE @VMI0019 03478000
ALLOC EQU X'80' TEMP CYL IN USE INDICATOR @VMI0019 03479000
EJECT 03480000
COPY UDIRECT @V408246 03481000
COPY ALLOC @V306638 03482000
COPY CONBUF @V306638 03483000
* 03484000
DMKCPI CSECT @V408246 03485000
AUTOCOM DS (BUFSIZE)D SIMULATED COMMAND BUFFER @V408246 03486000
ORG AUTOCOM @V408246 03487000
DC CL8'AUTOLOG ' @V408246 03488000
AUTOUSR DC CL9'AUTOLOG1 ' USERID TO BE LOGGED ON HRC016DK 03489490
AUTOPSRD DC CL8' ' INITIALLY BLANK @V408246 03490000
ORG AUTOCOM+(BUFNXT-BUFFER) @V408246 03491000
AUTOSTRT DC A(AUTOUSR) HRC016DK 03492590
AUTOLEN DC F'17' NO. CARACTERS IN BUFFER HRC016DK 03493180
ORG , @V408246 03494000
* 03495000
CPCOLD EQU X'01' HRC036DK 03495200
CPWARM EQU X'02' HRC036DK 03495400
CPCKPT EQU X'20' HRC036DK 03495600
CPFORCE EQU X'40' HRC036DK 03495800
COPY CORE @V306638 03496000
COPY DEVTYPES @V306638 03497000
COPY IOBLOKS @V306638 03498000
COPY MICBLOK @V306638 03499000
COPY NETWORK @V306638 03500000
COPY RBLOKS @V306638 03501000
COPY SAVE @V306638 03502000
COPY SPOOL @V306638 03503000
COPY TIMER @V306638 03504000
COPY MONBLOKS @V50A2V5 03505000
COPY VMBLOK @V306638 03506000
COPY QCPBLOK HRC019DK 03506100
END DMKCPI 03507000