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