ibm:vm370-lib:cp:dmkcpi.assemble_src
Table of Contents
DMKCPI Source
References
- Fixes Applied : 38
- This Source Date : Wednesday, January 31, 1979
- Last Fix ID : [HRC075DK]
Source Listing
- DMKCPI.ASSEMBLE.txt
- 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
ibm/vm370-lib/cp/dmkcpi.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator