INS TITLE 'DMSINS (CMS) VM/370 - RELEASE 6' 00001000
SPACE 2 00002000
*. 00003000
* 00004000
* MODULE NAME: 00005000
* 00006000
* DMSINS (INITSUB) 00007000
* 00008000
* FUNCTION: 00009000
* 00010000
* TO CONTROL INITIALIZATION OF THE CMS NUCLEUS. 00011000
* 00012000
* ATTRIBUTES: 00013000
* 00014000
* RESIDENT WITH NUCLEUS AT IPL TIME. 00015000
* 00016000
* ENTRY POINTS: 00017000
* 00018000
* DMSINS - ENTRY FROM IPL TEXT. 00019000
* 00020000
* ENTRY CONDITIONS: 00021000
* 00022000
* NONE 00023000
* 00024000
* EXIT CONDITIONS: 00025000
* 00026000
* NONE 00027000
* 00028000
* CALLS TO OTHER ROUTINES: 00029000
* 00030000
* DMSFRES, DMSFREE, DMSFRET, READFST, DMSINT, 00031000
* DMSDIOR, DMSCAT 00032000
* 00033000
* EXTERNAL REFERENCES: 00034000
* 00035000
* NONE 00036000
* 00037000
* TABLES/WORKAREAS: 00038000
* 00039000
* NONE 00040000
* 00041000
* REGISTER USAGE: 00042000
* 00043000
* GPR13 - BASE, REST WORK 00044000
* 00045000
* NOTES: 00046000
* 00047000
* NONE 00048000
* 00049000
* OPERATION: 00050000
* 00051000
* AFTER INITIAL PROGRAM LOAD (IPL) OF THE CMS NUCLEUS, 00052000
* CONTROL PASSES TO THE ONE-TIME INITIALIZATION PROGRAM 00053000
* INITSUB, WHICH IMMEDIATELY ESTABLISHES ADDRESSABILITY 00054000
* AND PROCEEDS AS FOLLOWS: 00055000
* 00056000
* 1. SAVES THE IPL-ED DEVICE ADDRESS. 00057000
* 00058000
* 2. CALLS ADTLKP TO LOCATE THE ACTIVE DISK TABLE FOR 00059000
* THE SYSTEM DISK. 00060000
* 00061000
* 3. SETS LOW-EXTEND TO X'40000'. 00062000
* 00063000
* 4. CALLS DMSFRES FOR FIRST-PASS STORAGE INITIALIZING. 00064000
* 00065000
* 5. CALLS DMSFREE TO RESERVE ALL NUCLEUS FREE STORAGE 00066000
* 00067000
* 6. CALLS READFST TO READ IN ALL S-DISK FST'S. 00068000
* 00069000
* 7. CALLS DMSFRET TO RETURN ALL NUCLEUS STORAGE 00070000
* 00071000
* 8. CALLS DMSFREE TO GET NUCLEUS FREE STORAGE FOR 00072000
* SSTAT. 00073000
* 00074000
* 9. CREATES THE SSTAT FROM 'S2' FILES ON S-DISK 00075000
* 00076000
* 10. USES CP-DIAGNOSE TO DETERMINE CHARACTERISTICS 00077000
* OF A DYNAMIC DISK (IF PRESENT). 00078000
* 00079000
* 11. CHECKS IF THE D-DISK HAS A VALID CMS-LABEL AND 00080000
* DECIDES IF A FORMAT OR ACCESS IS REQUIRED. 00081000
* 00082000
* 12. CHECKS TO SEE IF A Z-DISK IS REQUIRED. 00083000
* 00084000
* 13. TYPES VERSION IDENTIFICATION MESSAGE. 00085000
* 00086000
* 14. READS THE FIRST COMMAND AND IF IT WAS 00087000
* 'SAVESYS, ISSUES A DIAGNOSE TO CP USING THE 00088000
* INPUT LINE AS THE PARAMETER LIST. GOTO 10. 00089000
* 00090000
* 15. IF THE FIRST COMMAND WAS ANYTHING ELSE 00091000
* A. ACCESS THE YDISK (IF PRESENT) 00092000
* B. Load the GCC runtime library into high HRC371DS 00093000
* memory and update a pointer in NUCON with HRC371DS 00093100
* its address. HRC371DS 00093200
* C. Load REXX into high memory and establish it HRC371DS 00093300
* as a nucleus command. Now all EXECs can be HRC371DS 00093400
* written in REXX. HRC371DS 00093500
* D. Access the user's A disk. HRC371DS 00093600
* E. Stack a plist LIFO for "PROFILE EXEC" HRC371DS 00093700
* (if present and if "ACCESS ( NOPROFILE" was HRC371DS 00093800
* not entered as the first command) HRC371DS 00093900
* F. Stack a plist LIFO for "SYSPROF EXEC" HRC371DS 00094000
* (if present and if "ACCESS ( NOPROFILE" was HRC371DS 00094100
* not entered as the first command) HRC371DS 00094200
* G. Access the D disk or, if not formatted, HRC371DS 00094300
* stack a plist LIFO to format the D disk HRC371DS 00094400
* (if present) HRC371DS 00094500
* HRC371DS 00094600
* Thus the command EXEC SYSPROF will be executed HRC371DS 00094700
* before the PROFILE EXEC is executed. Eventually, HRC371DS 00094800
* we may first stack a "RELEASE A" command so that HRC371DS 00094900
* we can ensure that SYSPROF EXEC S is executed... HRC371DS 00095000
* HRC371DS 00095100
* 00097000
* 16. SETS VALUE OF BLIP TIMER. 00098000
* 00099000
* 17. DETERMINES VIRTUAL MACHINE SIZE AND ALLOCATES 00100000
* 2 PAGES OF LOADER TABLES IF MACHINE SIZE IS 00101000
* NOT OVER 320K. 3 PAGES ARE OTHERWISE ALLOCATED 00102000
* But if the machine is 4MB or larger, allocate HRC371DS 00102100
* 64 pages of loader tables. HRC371DS 00102200
* 00103000
* 18. CALLS DMSFRES FOR FINAL STORAGE INITIALIZING 00104000
* 19. GOTO INIT. 00105000
* 00106000
*. 00107000
EJECT 00108000
DMSINS START X'20000' 00109000
ENTRY INITSUB 00110000
INITSUB EQU DMSINS 00111000
USING NUCON,R0 00112000
USING INITSUB,R12 00113000
* 00114000
* CMS CONTINUES HERE AFTER WRITING ON DISK (IF READ FROM CARDS) 00115000
* OR STARTS UP HERE IF READ IN FROM DISK (VIA 'IPL 190') ... 00116000
* 00117000
MVC IPLPARMS(64),0(R1) KEEP CP 'IPL' PARMS @VA12042 00118000
MVC 80(4,R0),BIGTIME PUT A HIGH NUMBER IN THE TIMER 00119000
MVC VMSIZE,=A(X'40000') P3077 00120000
MVC IPLADDR,IPLPSW+2 SAVE IPL-ED DEVICE ADDRESS 00121000
XC SYSNAME(8),SYSNAME CLEAN IT UP @VA03571 00122000
LA R1,SY-DMODE POINT TO MODE LETTER 00123000
L R15,=V(DMSLAD) GET ADDR. OF ADTLKP 00124000
BALR R14,R15 GO THERE 00125000
LR R13,R1 SAVE ADDR. OF ADT 00126000
USING ADTSECT,R13 00127000
* THE FOLLOWING TWO INSTRUCTIONS WILL CAUSE DMSFRE TO ALLOCATE, IN THE 00128000
* HIGH-CORE AREA, FROM THE END OF THIS ROUTINE TO X'40000'. THE 00129000
* LATTER FIGURE CAN BE CHANGED AT WILL. 00130000
MVC FREELOWE,=A(X'40000') INITIAL SETTING OF LOW-EXTEND 00131000
MVC LOCCNT,=A(ENDSYS) INITIAL SETTING OF LOCCNT 00132000
DMSFRES INIT1,TYPCALL=BALR FIRST DMSFRE INIT ROUTINE 00133000
SPACE 00134000
* WE ALLOCATE ALL OF THE LOW-CORE STORAGE AVAILABLE TO DMSFRE, SO THAT 00135000
* THE SUBSEQUENT CALL TO 'ACCESS' WILL USE ONLY HIGH-CORE STORAGE. 00136000
DMSFREE DWORDS=X'FFFFFF',MIN=1,TYPE=NUCLEUS,TYPCALL=BALR, *00137000
AREA=LOW ALLOCATE ALL LOW-CORE STORAGE 00138000
LR R7,R0 SAVE SIZE ALLOCATED 00139000
LR R9,R1 SAVE ADDRESS RETURNED 00140000
L R2,=V(SDISK) LOAD ADDRESS OF SYSTEM DISK ADT 00141000
LH R3,DTAD(,R2) SAVE SYSTEM DISK ADDRESS 00142000
LR R0,R13 R0 POINTS TO ACTIVE-DISK-TABLE, 00143000
OI ADTFLG3,ADTFORCE ENSURE S-DISK IS "READ-ONLY" @VM03029 00144000
LA R1,READFSTL R1 TO PARAMETER-LIST 00145000
L 15,=V(READFST) CALL 'READFST' TO READ PSTAT FROM 00146000
BALR R14,R15 S-DISK 00147000
EJECT 00148000
* NOW RE-INITIALIZE THE FREE STORAGE MANAGEMENT ... 00149000
* WE NOW RETURN LOW-CORE STORAGE TO DMSFRE, SO THAT WE CAN USE IT. 00150000
LR R0,R7 LOAD SIZE OF LOW-CORE STORAGE 00151000
LR R1,R9 LOAD ADDRESS OF LOW-CORE STORAGE 00152000
DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR GO RETURN IT 00153000
L R0,ADTFSTC GET NUMBER OF FILES READ IN BY READFST 00154000
MH R0,=H'5' TIMES 5 GIVES NO. OF DBL-WORDS FOR SAME, 00155000
A R0,=F'2' PLUS 2 GETS EXACT SIZE NEEDED FOR SSTAT, 00156000
DMSFREE DWORDS=(0),TYPE=NUCLEUS,AREA=LOW,TYPCALL=BALR ALLOCATE 00157000
R1OK SLL R0,3 00158000
LR R3,R0 00159000
AR R3,R1 00160000
SH R3,=H'8' 00161000
XC 0(8,R3),0(R3) CLEAR LAST DOUBLE-WORD OF FREE STORAGE 00162000
ST R3,ASTATEXT STORE ADDRESS OF 'STATEXT' 00163000
L R5,ADTFDA START WITH TABLE PROVIDED TO READFST, 00164000
LA R5,8(,R5) SPACE OVER PRELIMINARY WORDS, 00165000
LA R6,40 40 BYTE ENTRIES 00166000
LR R4,R3 START WITH 40-BYTE 00167000
SR R4,R6 ENTRY AT THE END OF FREE STORAGE 00168000
LA R15,STR1SS FOR BCR BELOW, FOR MAXIMUM SPEED. 00169000
SLR R10,R10 FOR SPEED IN LOOP BELOW 00170000
LOOP1A LA R7,760(,R5) R5+760 = LIMIT FOR BXLE LOOP 00171000
LOOP2 CL R10,0(,R5) IS ENTRY = ZERO ? 00172000
BCR 8,R15 'BZ STR1SS' IF YES. 00173000
MVC 0(40,R4),0(R5) MOVE 40-BYTE ENTRY TO 'SSTAT', 00174000
MVI DMODE(R4),C'S' MAKE THIS PRETTY FOR VIEWERS 00175000
SR R4,R6 DECREMENT R4 BY 40 FOR NEXT TIME 00176000
BXLE R5,R6,LOOP2 ITERATE THRU EACH 800-BYTE BLOCK 00177000
L R5,0(,R5) POINTER TO NEXT ONE (IF ANY) 00178000
LTR R5,R5 ANY MORE 800-BYTE BLOCKS LEFT ? 00179000
BP LOOP1A BP IF YES, KEEP SEARCHING. 00180000
STR1SS ST R1,ASSTAT STORE ADDRESS OF 'SSTAT' 00181000
ST R1,ADTFDA ALSO STORE IN 'ADTS' TABLE. 00182000
OI ADTFLG1,ADTFFSTV SET SPECIAL FLAG-BIT FOR SSTAT SEARCH 00183000
NI ADTFLG1,255-ADTFFSTF TURN OFF FREE-STORAGE FLAG-BIT 00184000
ST R6,0(,R1) '40' INTO SSTAT, 00185000
AR R4,R6 POINT R4 TO THE LAST ENTRY WE STORED, 00186000
SR R3,R4 END - BEGINNING = SIZE 00187000
ST R3,4(,R1) SIZE IN BYTES INTO SSTAT+4 00188000
LR R0,R13 R0 MUST POINT TO S-DISK ADT, @V305032 00189000
L R15,=V(SORTFST) THEN SORT ALL THE FST ENTRIES @V305032 00190000
BALR R14,R15 (VIA SUBROUTINE IN DMSALU) @V305032 00191000
OI ADTFLG3,ADTFSORT AND SIGNAL 'SSTAT' IS SORTED. @V305032 00192000
B INITCONT SKIP 'SAVESYS' CODE (FOR A WHILE,ANYWAY) 00193000
DROP R13 V0218 00194000
EJECT 00195000
SAVESYS LA R0,16 FORCE TWO-ARGUMENT COMMAND LINE P3096 00196000
STM R0,R15,GPRLOG SAVE REGS FOR SAVED SYS IPL @VA13281 00196500
MVC SYSNAME(8),8(R1) SAVE NAME OF SAVED SYSTEM @VA03571 00197000
DC X'83100008' ISSUE 'SAVESYS' WITH USER'S INPUT P3096 00198000
* 00200000
* CMS STARTS HERE IF IPLING A SAVED SYSTEM 00201000
* 00202000
MVI DCSSFLAG,DCSSCLR CLEAR DCSS FLAGS @V305614 00203000
STM R0,R15,LOWSAVE SAVE CP 'IPL' PARMS @VA13281 00210000
LM R0,R15,GPRLOG RESTORE SAVED SYS REGS @VA13281 00210200
MVC IPLPARMS(64),LOWSAVE GET IPL PARMS @VA13281 00210400
SR R15,R15 INDICATE SAVESYS @VA13281 00210600
SPACE 1 00211000
INITCONT LA R6,PARMLEN GET LENGTH OF PARMS @V305066 00212000
LA R5,IPLPARMS POINT TO PARMS @V305665 00213000
INITLOOP EQU * @V305665 00214000
BAL R14,SKIPBLNK GO SKIP BLANKS @V305665 00215000
CLC 0(5,R5),BATCH IS KEYWORD BATCH? @V305614 00216000
BNE CHKSET BRANCH IF NOT @V305665 00217000
OI BATFLAGS,BATRUN+BATLOAD INDICATE BATCH @V305665 00218000
LA R14,KEYLEN GET LENGTH OF KEYWORD @V305066 00219000
AR R5,R14 SPACE OVER KEYWORD @V305665 00220000
SR R6,R14 AND BACK OFF @V305665 00221000
B INITLOOP LOOK FOR MORE @V305665 00222000
CHKSET EQU * @V305665 00223000
CLC 0(L'SEG,R5),SEG IS KEYWORD SEG? @V305665 00224000
BNE CHKAUTO BRANCH IF NOT, SEE IF "AUTOCR" @V60C6BE 00225000
LA R14,L'SEG GET KEYWORD LENGTH @V305665 00226000
AR R5,R14 SPACE OVER KEYWORD @V305665 00227000
SR R6,R14 BACK OFF KEYWORD LENGTH @V305665 00228000
L R14,ASYSNAMS POINT TO SYSNAMES TABLE @V305665 00229000
USING SYSNAMES,R14 @V305665 00230000
MVC CMSSEG,0(R5) MOVE IN SEGMENT NAME @V305665 00231000
DROP R14 @V305665 00232000
LA R3,EIGHT INSERT LENGTH OF NAME @V305665 00233000
AR R5,R3 ADD LENGTH OF NAME @V305665 00234000
SR R6,R3 BACK OFF NAME LENGTH @V305665 00235000
B INITLOOP @V305665 00236000
CHKAUTO CLC 0(L'AUTOPRM,R5),AUTOPRM AUTOCR OPTION @V60C6BE 00236100
BNE GETCON1 BRANCH IF NOT, IGNORE @V60C6BE 00236200
LA R14,L'AUTOPRM @V60C6BE 00236300
AR R5,R14 SPACE OVER KEYWORD @V60C6BE 00236400
SR R6,R14 BACK OFF KEYWORD LENGTH @V60C6BE 00236500
OI INSFLAG2,AUTOCR SET SPECIAL FLAG @V60C6BE 00236600
B INITLOOP LOOK FOR MORE @V60C6BE 00236700
GETCON1 EQU * @V305665 00237000
USING SYSNAMES,R3 @V305665 00238000
L R3,ASYSNAMS GET SYSNAMES TABLE ADDRESS @V305665 00239000
LA R3,CMSSEG GET ADDRESS OF NAMED SYSTEM @V305665 00240000
DROP R3 @V305665 00241000
LA R4,FINDSYS INDICATE FINDSYS @V305066 00242000
DC X'83340064' DIAGNOSE @V305665 00243000
CH R4,=H'44' WAS THE SEGMENT FOUND? @V305665 00244000
BE GETCON2 BRANCH IF NOT @VM03224 00245000
OI DCSSFLAG,DCSSAVAL INDICATE DCSS OK @V305665 00246000
ST R3,ACMSSEG SAVE DCSS ADDRESS @V305665 00247000
B GETCON @V305665 00248000
GETCON2 NI DCSSFLAG,255-DCSSAVAL RESTORE INDICATOR @V305614 00249000
GETCON SR R13,R13 ZERO OUT A REGISTER. V0218 00250000
BCTR R13,0 MAKE IT NEGATIVE. V0218 00251000
DC X'83DF0024' SPECIAL-FORM DEVTYPES DIAGNOSE. V0218 00252000
BNO SETCON SEEMS OK. V0218 00253000
MVC IONPSW,WAKEPSW SOME MONKEY BUSINESS NEEDED. V0218 00254000
LPSW WAITPSW V0218 00255000
WAKEHERE MVC IONPSW,NIOPSW SETUP NORMAL PSW. V0218 00256000
B GETCON TRY AGAIN. V0218 00257000
SETCON L R11,=V(CONSOLE) GET DEVTAB OFFSET. V0218 00258000
STH R13,0(,R11) PUT THE ADDRESS THERE. V0218 00259000
B TYPMSG GIVE STARTING MESSAGE V0254 00260000
EJECT 00261000
CKDDISK L R11,=V(DDISK) GET DEVTAB ENTRY ADDRESS 00262000
LA R3,DPLIST POINT TO OUR CURRENT WORK LIST 00263000
BAL R2,VERIFY ESTABLISH SOMETHING 00264000
BNZ CKYDISK GUESS NOT. 00265000
STC R13,WORKAREA STORE BYTE WHERE WE CAN TEST IT P3119 00266000
TM WORKAREA,MTDSK IS IT CP TEMP-SPACE? P3119 00267000
BNO CKDLAB NO. P3119 00268000
OI INSFLAG,TDSK REMEMBER THAT IT IS (FOR LATER) P3119 00269000
CKDLAB EQU * P3119 00270000
LA R14,LABCCWS POINT TO THE CCWS 00271000
ST R14,CAW REALLY POINT 00272000
DC X'83AE0020' SEE WHAT'S OUT THERE 00273000
BNZ NOREC3 RECORD 3 IS UNREADABLE P3119 00274000
CLC LABELR(4),DUMTDISK IS IT A CMS VOLUME? P3119 00275000
BNE SCRAPD NO. REMOVE IT FROM DEVICE-TABLE. P3119 00276000
OI INSFLAG,ACCD SIGNAL ACCESS REQUIRED. P3119 00277000
B CKYDISK CONTINUE. P3119 00278000
NOREC3 TM INSFLAG,TDSK WAS IT T-DISK SPACE? P3119 00279000
BNO SCRAPD INVALIDATE THE ADDRESS IN DEVTAB. P3119 00280000
OI INSFLAG,FORMD SIGNAL FORMAT REQUIRED. P3119 00281000
B CKYDISK CONTINUE. P3119 00282000
SCRAPD EX R0,REMOVE REMOVE ADDRESS FROM DEVTAB P3119 00283000
CKYDISK L R11,=V(YDISK) GET DEVTAB ENTRY FOR YDISK 00284000
LA R3,YPLIST POINT TO THE LATEST PLIST 00285000
BAL R2,VERIFY AND SEE WHAT'S OUT THERE 00286000
BNZ CKADISK NO Y DISK 00287000
OI INSFLAG,ACCY SIGNAL ACCESS Y WANTED 00288000
CKADISK L R11,=V(ADISK) POINT TO THE ADISK DEVTAB ENTRY 00289000
LA R3,WORKAREA-8 DUMMY PLIST (SPECIAL CASE FOR ADISK) 00290000
BAL R2,VERIFY FIND OUT WHICH IF ANY 00291000
OI INSFLAG,ACCA SIGNAL THAT THERE IS AN ADISK 00292000
B TSTDISK ACCESS OR FORMAT AS SPECIFIED V0254 00293000
EJECT 00294000
TYPMSG LA R1,STARTMSG ANNOUNCE OURSELVES V0254 00295000
SVC 202 ... 00296000
TM BATFLAGS,BATRUN CMSBATCH IPL? V0742 00297000
BO BATNIP IF SO, NO TERMINAL READS V0742 00298000
L R4,AOPSECT POINT TO A USEFUL DSECT 00299000
USING OPSECT,R4 00300000
MVI CONRDCOD,C'U' SIGNAL UPPERCASE TRANSLATION WANTED 00301000
TM INSFLAG2,AUTOCR AUTOCR OPTION ? @V60C6BE 00301100
BO CORINIT BR YES, NO CONSOLE READ @V60C6BE 00301200
LA R1,CONREAD POINT TO THE READ PLIST 00302000
SVC 202 ... 00303000
LH R6,CONRDCNT GET BYTE-COUNT READ 00304000
LTR R0,R6 TEST IT 00305000
BZ CORINIT CONTINUE IF IT WAS A NULL-LINE 00306000
STC R6,CMNDINFO KEEP ACTUAL LINE LENGTH V0692 00307000
LA R1,CMNDLINE POINT TO IT 00308000
L R15,=V(DMSSCNN) GET ADDR OF SCAN ROUTINE 00309000
BALR R14,R15 SCAN THE INPUT LINE 00310000
CLC 0(8,R1),=CL8'SAVESYS' WAS IT 'SAVESYS'? 00311000
BE SAVESYS YES. BACKTRACK TO HANDLE CORRECTLY. 00312000
OI INSFLAG,GOTFIRST FIRST COMMAND EXISTS V0692 00313000
CLC 0(8,R1),=CL8'CMSBATCH' TRYING TO RUN BATCH? V0742 00314000
BNE CORINIT NO. CONTINUE @VM03203 00315000
NI INSFLAG,255-GOTFIRST AVOID STACKING BATCH TWICE @VM03203 00316000
OI BATFLAGS,BATRUN+BATLOAD INIT. BATCH FLAGS @VM03203 00317000
CLI 8(R1),FENCE SAVED SYSTEM NAME ENTERED? @VM03203 00318000
BE BATNIP IF NOT, CONTINUE AS USUAL... @VM03203 00319000
OI BATFLAG2,BATIPLSS IF SO, REMEMBER TO REIPL NAME @VM03203 00320000
LM R2,R3,8(R1) @VM03203 00321000
STM R2,R3,SYSNAME SAVE NAME OF SAVED SYS IN NUCON @VM03203 00322000
BATNIP EQU * INITIALIZE BATCH FLAGS, PLISTS @VM03203 00323000
MVC APLIST+8(40),BATCHA ACC 195 A - FOR BATCH @VM03203 00324000
B CORINIT ESTABLISH VIRTUAL-MACHINE SIZE 00325000
EJECT 00326000
* 00327000
* SUBROUTINE TO VERIFY EXISTENCE OF A PARTICULAR DISK, AND IF 00328000
* IT EXISTS, CONVERT THAT ADDRESS TO PRINTABLE HEX FORMAT 00329000
* ELSE, REMOVE THE DEVICE ADDRESS FROM THE DEVICE-TABLE 00330000
* 00331000
VERIFY LH R10,DTAD(,R11) GET DEVICE ADDRESS FROM DEVTAB 00332000
LTR R10,R10 IS THERE ANY (INITIALIZED AS X'FF')? 00333000
BCR 4,R2 NONE FOUND. 00334000
CH R10,=X'0191' IS IT THE 'A' DISK? @VA03369 00335000
BE NOCARE YES, DON'T DO DIAGNOSE @VA03369 00336000
DC X'83AD0024' FIND OUT ITS CHARACTERISTICS 00337000
BC 1,REMOVE NOT PRESENT, SO GET RID OF TELLTALES. 00338000
CLM R13,B'1000',MDASD IS IT AT LEAST A DASD DEVICE? 00339000
BNE REMOVE NO, FORGET IT. 00340000
NOCARE UNPK WORKAREA(5),DTAD(3,R11) CONVERT ADDR TO @VA03369 00341000
TR WORKAREA(4),HEXTBL-C'0' PRINTABLE HEX 00342000
MVC 8(3,R3),WORKAREA+1 PUT ADDR INTO INDICATED PLIST 00343000
SR R3,R3 SET ZERO RETURN CODE 00344000
BR R2 RETURN 00345000
REMOVE MVC 0(2,R11),=XL2'FFFF' COVER UP DETAB ADDRESS FIELD 00346000
LTR R2,R2 SET NON-ZERO RETURN CODE 00347000
BR R2 RETURN 00348000
SPACE 5 00349000
* SUBROUTINE TO SPACE OVER BLANKS 00350000
* 00351000
SKIPBLNK EQU * @V305665 00352000
CLI 0(R5),BLANK IS THIS BLANK? @V305665 00353000
BCR 7,R14 RETURN IF NOT @V305665 00354000
LA R5,1(,R5) POINT TO NEXT BYTE @V305665 00355000
BCT R6,SKIPBLNK AND LOOP @V305665 00356000
B GETCON QUIT IF NO MORE @V305665 00357000
* 00358000
* COMPUTE NUMBER OF BYTES PHYSICALLY PRESENT IN OUR REAL OR 00359000
* VIRTUAL CORE, AND STORE WHERE NEEDED IN NUCON... 00360000
* 00361000
CORINIT DC X'83DE0060' DIAGNOSE MACHINE SIZE @V305001 00362000
ST R13,VMSIZE STORE VIRTUAL MEMORY SIZE 00363000
ST R13,ALDRTBLS .. 00364000
* 00365000
* SOME CMS FREE STORAGE SHOULD BE RESERVED WHENEVER A GETMAIN 00366000
* MACRO IS ISSUED. AMOUNT DEPENDS ON VMSIZE, AS FOLLOWS: 00367000
* LESS THAN 512K: 6 PAGES; 512K OR ABOVE: 7 PAGES, @VA04911 00368000
* PLUS 1 PAGE FOR EACH ADDITIONAL 256K OVER 512K. @VA04911 00369000
* @VA04911 00370000
LR R15,R13 GET VMSIZE (IN BYTES) @VA04911 00371000
SL R15,=F'262144' SUBTRACT 256K BYTES @VA04911 00372000
SRL R15,18 NOW DIVIDE BY 256K @VA04911 00373000
LA R15,6(,R15) FINALLY, ADD SIX @VA04911 00374000
STH R15,FRERESPG AND SAVE IT IN NUCON @VA04199 00375000
L R14,F8192 ASSUME 2 PAGES OF LOADER TABLES P0515 00376000
C R13,MINSIZE IS THIS A "LARGE MACHINE" P0515 00377000
BNH SR1314 TRF IF NOT - USE 2 PAGES PER USUAL. 00378000
AH R14,H4096 BUT IF YES MAKE IT 3 PAGES = 12288 BYTES 00379000
* C R13,FOURMEG is it 4 megabytes or more? HRC371DS 00379100
* BL SR1314 no, so we are good to go HRC371DS 00379200
* L R14,K256 set LDRTBLS=64 pages (256K) HRC371DS 00379300
SR1314 SR R13,R14 decrement by LDRTBLS space HRC371DS 00380000
ST R13,FREELOWE INITIALIZE LOWEXT 00381000
SRL R14,12 MAKE THAT 8192 OR 12288 BYTES INTO PAGES 00382000
STC R14,ALDRTBLS STORE IN 1ST BYTE LDRTBLS @V305665 00383000
TM DCSSFLAG,DCSSAVAL IS DCSS PRESENT? @V305665 00384000
BZ CORINIT1 BRANCH IF NOT @V305665 00385000
CLC ACMSSEG,VMSIZE NAMED SYSTEM OVERLAP CMS? @V305665 00386000
BNL NOVLAP BRANCH IF NOT @V305665 00387000
NI DCSSFLAG,255-DCSSAVAL INDICATE NOT AVAILABLE @V305665 00388000
OI DCSSFLAG,DCSSOVLP INDICATE OVERLAP @V305665 00389000
B CORINIT1 @V305665 00390000
NOVLAP EQU * @V305665 00391000
L R14,ASYSNAMS POINT TO SEGMENT TABLE @V305665 00392000
USING SYSNAMES,R14 @V305665 00393000
************************************************************** 00394000
* IT IS POSSIBLE THAT THE CP-OWNED VOLUME CONTAINING THE 00395000
* CMS SHARED SEGMENT IS NOT ATTACHED TO THE VIRTUAL MACHINE. 00396000
* THE FOLLOWING CODE VERIFIES THAT THE SEGMENT CAN ACTUALLY 00397000
* BE LOADED BY THE VIRTUAL MACHINE. 00398000
************************************************************** 00399000
SR R2,R2 INDICATE SHARED COPY @V305614 00400000
LA R1,CMSSEG POINT TO SYSNAMES ENTRY @V305614 00401000
DC X'83120064' LOADSYS @V305614 00402000
BZ LSYSOK BRANCH IF LOAD IS OK @V305614 00403000
SPACE 1 00404000
NI DCSSFLAG,255-DCSSAVAL RESET AVAILABLE FLAG @V305614 00405000
B CORINIT1 AND SKIP PURGESYS @V305614 00406000
SPACE 1 00407000
LSYSOK LA R2,PURGESYS INDICATE PURGESYS @V305066 00408000
LA R1,CMSSEG POINT TO SYSNAMES ENTRY @V305614 00409000
DC X'83120064' PURGESYS @V305614 00410000
SPACE 1 00411000
CORINIT1 EQU * @V305665 00412000
SPACE 00413000
LA R1,TODAY @V305032 00414000
LA R2,TWENTY4 @V305066 00415000
DC X'8312000C' TELL ME THE TIME @V305032 00416000
STCK DOUBLE1 THEN GET TIME VIA "STCK" @V305032 00417000
MVC DATIPCMS(8),TODAY SAVE TODAY'S DATE IN NUCON @V305032 00418000
NC HOURS(8),=X'0F0F000F0F000F0F' @V305032 00419000
SR R0,R0 CLEAR REGISTERS FOR IC USE @V305032 00420000
SR R1,R1 ... @V305032 00421000
SR R2,R2 ... @V305032 00422000
IC R0,HOURS HOURS @V305032 00423000
IC R1,HOURS+1 ... @V305032 00424000
MH R0,TEN ... @V305032 00425000
AR R0,R1 ... @V305032 00426000
MH R0,SIXTY ... @V305032 00427000
IC R1,MINUTES MINUTES @V305032 00428000
IC R2,MINUTES+1 ... @V305032 00429000
MH R1,TEN ... @V305032 00430000
AR R1,R2 ... @V305032 00431000
AR R0,R1 ADD HOURS*60 AND MINUTES @V305032 00432000
MH R0,SIXTY ... @V305032 00433000
IC R1,SECONDS SECONDS @V305032 00434000
IC R2,SECONDS+1 ... @V305032 00435000
MH R1,TEN ... @V305032 00436000
AR R1,R2 SECONDS INTO R1 @V305032 00437000
AR R1,R0 ADD MINUTES*60 AND HOURS*3600 @V305032 00438000
S R1,=F'1' AVOID POSSIBLE ROUNDOFF ERROR @V305032 00439000
BNM MULTMIL OK IF NOT MINUS @VM03031 00440000
SR R1,R1 IF IT WAS 0000 HOURS, MAKE IT 0 @V305032 00441000
MULTMIL M R0,=F'1000000' TIMES A MILLION, @VM03031 00442000
SLDL R0,12 SHIFT - NOW IN 'STCK' FORM @V305032 00443000
STM R0,R1,DOUBLE2 SAVE IT @V305032 00444000
LM R0,R1,DOUBLE1 GET THE TIME FROM THE STCK @V305032 00445000
SL R1,DOUBLE2+4 SUB. LOW PART OF ELAPSED TIME @V305032 00446000
BC 2+1,SUBHIGH TRANSFER IF CC=2 OR 3 (CARRY) @VM03031 00447000
BCTR R0,0 FOR CC=1, DECR. HIGH ORDER PART @V305032 00448000
SUBHIGH SL R0,DOUBLE2 SUB. HIGH PART OF ELAPSED TIME @VM03031 00449000
SRDL R0,12+1 SHIFT TO OBTAIN MICROSECONDS / 2 @V305032 00450000
D R0,MICHOUR2 DIV. BY NO. MICROSEC IN HOUR / 2 @V305032 00451000
* NOTE - THROW AWAY THE REMAINDER 00452000
M R0,MICHOUR2 MULTIPLY QUOTIENT BY SAME NUMBER @V305032 00453000
SLDL R0,12+1 SHIFT BACK AGAIN @V305032 00454000
STM R0,R1,CLKVALMD SAVE PREVIOUS MIDNITE STCK VALUE @V305032 00455000
SPACE 00456000
* NOW INITIALIZE 'YYDDD' FIELD IN 'BGCOM' ... 00457000
LA R2,NONLEAP ASSUME IT'S NOT LEAP YEAR @V305032 00458000
PACK DOUBLE1(8),DATIPCMS+6(2) GET THE YEAR @V305032 00459000
CVB R1,DOUBLE1 ... @V305032 00460000
SR R0,R0 CLEAR, AND ... @V305032 00461000
D R0,=F'4' DIVIDE BY 4 @V305032 00462000
LTR R0,R0 CHECK THE REMAINDER @V305032 00463000
BNZ GETMONTH NONZERO = NOT LEAP YEAR @V305032 00464000
LA R2,LEAPYEAR WE GUESSED WRONG @V305032 00465000
GETMONTH PACK DOUBLE1(8),DATIPCMS(2) GET THE MONTH @V305032 00466000
CVB R1,DOUBLE1 ... @V305032 00467000
BCTR R1,0 MINUS ONE PLEASE @V305032 00468000
ALR R1,R1 TIMES 2 TO INDEX TABLE @V305032 00469000
AR R2,R1 AND ADD TO TABLE ADDRESS @V305032 00470000
PACK DOUBLE1(8),DATIPCMS+3(2) GET THE DAY @V305032 00471000
CVB R1,DOUBLE1 (1 TO 31) @V305032 00472000
AH R1,0(,R2) ADD MAGIC VALUE FROM TABLE @V305032 00473000
CVD R1,DOUBLE1 TO DECIMAL PLEASE (1 TO 366) @V305032 00474000
L R2,ABGCOM REFERENCE BGCOM @V305032 00475000
USING BGCOM,R2 ... @V305032 00476000
MVC MMDD(2),DATIPCMS GET CMSIPL MONTH @VA13783 00476300
MVC MMDD+2(2),DATIPCMS+3 SET CMSIPL DAY @VA13783 00476600
MVC YYDDD(2),DATIPCMS+6 MOVE IN THE YEAR, @V305032 00477000
UNPK YYDDD+2(3),DOUBLE1+5(3) PUT IN THE 'DDD', @V305032 00478000
OI YYDDD+4,SIGN AND FIX UP SIGN AS USUAL @V305066 00479000
DROP R2 @V305032 00480000
SPACE 00481000
L R15,=A(INITSUB) @V305032 00482000
ST R15,AUSRAREA SET BEGINNING OF USER AREA 00483000
ST R15,MAINHIGH AND HIGH END OF MAIN STORAGE 00484000
DMSFRES INIT2,TYPCALL=BALR SECOND DMSFRE INIT ROUTINE 00485000
* DETERMINE DEVICE-TYPE FOR CONSOLE 00486000
* 00487000
L R1,=V(CONSOLE) @VM03203 00488000
LH R13,0(,R1) GIVE CP THE CONS ADDR @VM03203 00489000
DC X'83D10024' DIAG FOR CONSOLE CLASS @VM03203 00490000
CLM R2,B'1000',GRAFCON TYPECLASS GRAPHICS? @VM03203 00491000
BE GRAFTYP YES ... BR @VM03203 00492000
CLM R2,B'1100',REMGRAF REMOTE DISPLAY TERMINAL ? @VM03203 00493000
BE GRAFTYP YES ... BR @VA12109 00494000
CLM R2,B'1000',CLASTERM REMOTE 3270? @VA12109 00494100
BNE NOTGRAF NO ... BR @VA12109 00494200
CLM R2,B'0100',TYP3275 REMOTE 3275? @VA12109 00494300
BE GRAFTYP YES ... BR @VA12109 00494400
CLM R2,B'0100',TYP3277 REMOTE 3277? @VA12109 00494500
BNE NOTGRAF NO ... BR @VA12109 00494600
GRAFTYP OI MISFLAGS,GRAFDEV SET GRAPHICS FLAG IN NUCON @VM03203 00495000
OI OPTFLAGS,NOVMREAD YES, SET NO AUTO READ FLAG @VM08878 00496000
L R13,AEXTSECT @VM08878 00497000
USING EXTSECT,R13 @VM08878 00498000
MVI TIMCHAR,0 NO BLIPS FOR TUBES @VM08878 00499000
TM BATFLAGS,BATRUN IS THIS BATCH MACHINE? @VA04734 00500000
BO SETTIME ENABLE TIMER FOR BATCH @VA04734 00501000
B CVTINT NORMAL CONSOLE CCW @VM08878 00502000
NOTGRAF OI MSGFLAGS,SPECLF USE SPECIAL LF IN CONS CCW @VM08878 00503000
L R13,AEXTSECT @VM03203 00504000
SETTIME EQU * @VA04734 00505000
MVC TIMER(4),TIMINIT AND SET INTERVAL TIMER FOR BLIP@VM03203 00506000
DROP R13 @VM03203 00507000
EJECT 00508000
CVTINT EQU * @VM03203 00509000
* 00510000
* INITIALIZE COMMUNICATION VECTOR TABLE (CVT) 00511000
* 00512000
USING CVTSECT,R14 00513000
L R14,=V(CMSCVT) A(CVT) 00514000
ST R14,ACMSCVT SETUP OS-LIKE CVT-POINTER P3116 00515000
SH R14,=H'8' POINT TO PREFIX AREA P3116 00516000
L R15,AUSRAREA GET BEGINNING OF USER STORAGE P3116 00517000
ST R15,CVTNUCB SET A(LOWEST POINT NOT IN NUCLEUS) 00518000
STIDP IPLPARMS STORE CPU ID @VA02548 00519000
MVC CVTMDL(2),IPLPARMS+4 STORE MODEL NUMBER @VA02548 00520000
MVC CVTMZ00(4),VMSIZE SET A(HIGHEST CORE LOCATION) 00521000
MVC PGMNPSW(8),ACVTOK IF PROG-INT...SKIP 'OI' INST. V0207 00522000
SXR F0,F0 ISSUE EXT-PREC. SUBTRACT... V0207 00523000
OI CVTOPTA,CVTXPFP BIT MEANS WE HAVE EXT-PREC HRDWRE V0207 00524000
CVTOK MVC PGMNPSW(8),APRG RESTORE REGULAR PGM-INT NEW PSW V0207 00525000
DROP R14 00526000
LA R14,SYSREF GET ADDRESS OF SYSREF 00527000
ST R14,ASYSREF SET INTO PERM CORE LOCATION 00528000
OI PROTFLAG,PRFTSYS SET TRANSIENT-SYSTEM FLAG-BIT @V305032 00529000
* TO MATCH "ACCESS" CMD IN TRANSIENT AREA. 00530000
LA R5,1 ASSUME NO FIRST COMMAND TO WORRY ABOUT 00531000
B CKDDISK VERIFY DISKS EXISTANCE V0254 00532000
TSTDISK SR R3,R3 CLEAR COMMAND COUNT REGISTER V0254 00533000
TM INSFLAG,ACCY WAS A YDISK REQUIRED? 00534000
BNO TESTA NO. GO HANDLE THE ADISK. 00535000
LA R1,YPLIST ACCESS THE YDISK. 00536000
SVC 202 ... 00537000
DC AL4(*+4) ERROR CONDITION IS IMMATERIAL 00538000
SPACE 1 HRC371DS 00539000
TESTA DS 0H HRC371DS 00539010
* Now we load GCCLIB and REXX into memory, establishing them HRC371DS 00539020
* as nucleus extensions. But RESLIB will first load GCCLIB HRC371DS 00539030
* into the user area, overlaying us (DMSINS). So we change HRC371DS 00539040
* the user area pointer in NUCON so that it does not overlay HRC371DS 00539050
* us. Yes, this is a kludge! I apologize profusely. HRC371DS 00539060
* MVC MAINHIGH(4),OUTOFWAY HRC371DS 00539070
* LA R1,GLOBALTX "GLOBAL TXTLIB GCCLIB" HRC371DS 00539080
* SVC 202 HRC371DS 00539090
* DC AL4(BADGLOB) error address HRC371DS 00539100
* MVC MAINHIGH(4),OUTOFWAY HRC371DS 00539110
* LA R1,RESLOAD "RESLIB LOAD GCCLIB" HRC371DS 00539120
* SVC 202 HRC371DS 00539130
* DC AL4(BADGCC) error address HRC371DS 00539140
* ST R1,DOSTRANS store GCC runtime addr here HRC371DS 00539150
* MVC MAINHIGH(4),OUTOFWAY HRC371DS 00539160
* MVC RESWHO(8),REXXNAME HRC371DS 00539170
* LA R1,RESLOAD "RESLIB LOAD DMSREX" HRC371DS 00539180
* SVC 202 HRC371DS 00539190
* DC AL4(BADREXX) error address HRC371DS 00539200
* MVC MAINHIGH(4),REALUSER restore user area address HRC371DS 00539210
* B THATSALL HRC371DS 00539220
BADGCC DS 0H HRC371DS 00539230
* MVC MAINHIGH(4),REALUSER restore user area address HRC371DS 00539240
* DMSERR TEXT='GCC runtime not available',NUM=098,LET=W HRC371DS 00539250
* B THATSALL HRC371DS 00539260
BADGLOB DS 0H HRC371DS 00539270
* DMSERR TEXT='GCCLIB TXTLIB not found',NUM=098,LET=W HRC371DS 00539280
* B THATSALL HRC371DS 00539290
BADREXX DS 0H HRC371DS 00539300
* MVC MAINHIGH(4),REALUSER restore user area address HRC371DS 00539310
* DMSERR TEXT='REXX executor not available',NUM=098,LET=W C371DS 00539320
THATSALL DS 0H HRC371DS 00539330
SPACE 1 HRC371DS 00539340
SR R0,R0 INITIALIZE FIRST COMMAND INDICATOR 00539350
TM INSFLAG,GOTFIRST WAS THERE A FIRST COMMAND? 00540000
BNO POINTA NO. WE'RE ALL SET THEN. 00541000
LA R0,CMNDLIST PICK UP THE SCANNED LINE POINTER 00542000
POINTA LA R1,APLIST POINT TO THE ADISK PLIST 00543000
SVC 202 ... 00544000
DC AL4(*+4) ERROR CONDITION IS IMMATERIAL 00545000
STM R0,R3,REGSAV SAVE AROUND SVT LOAD @V305614 00546000
SPACE 1 00547000
* IF NO CMSSEG IS AVAILABLE LOAD DMSSVT TEXT INTO FREE 00548000
* STORAGE. 00549000
TM DCSSFLAG,DCSSAVAL CMSSEG TO BE USED ? @V305614 00550000
BO SKLOAD YES, SKIP THE FOLLOWING @V305614 00551000
L R14,ASYSNAMS POINT TO SYSNAMES TABLE @VA04293 00552000
USING SYSNAMES,R14 ..... @VA04293 00553000
DMSERR NUM=100,LET=W,SUB=(CHARA,(R14)),TEXT='CMSSEG system namX00554000
e ''........'' not available' @VA04293 00555000
LA R1,SVTST POINT TO SVT STATE PLIST @V305614 00556000
L R15,ASTATE SEE IF DMSSVT TEXT EXISTS @V305614 00557000
BALR R14,R15 ..... @V305614 00558000
BNZ SKLOAD BR, IF NO OS SVC ALLOWED @V305614 00559000
SPACE 1 00560000
L R1,DUMMYAD TRY TO LOAD OS SIM. ABOVE US @VA05055 00561000
BAL R10,LOADSUB USE LOAD SUB ROUTINE... @VA05055 00562000
L R3,LOCCNT SEE HOW HIGH WE LOADED @VA05055 00563000
L R2,DUMMYAD AND SUBTRACT ORIGIN... @VA05055 00564000
SR R3,R2 ... @VA05055 00565000
LA R3,SEVEN(,R3) GET UP TO NEXT DWORD @VA05055 00566000
SRL R3,DIV8 CONVERT TO DWORDS @VA05055 00567000
LR R0,R3 FOR DMSFREE'S SAKE... @VA05055 00568000
DMSFREE DWORDS=(0),TYPCALL=BALR,AREA=HIGH,TYPE=NUCLEUS 00569000
LTR R15,R15 REQUEST GRANTED? @VA05055 00570000
BNZ SKLOAD IF NOT, DROP THRU @VA05055 00571000
SPACE 1 00572000
ST R0,OSMODLDW SAVE OS SIM.'S SIZE (DWORDS) @VA05055 00573000
ST R1,AOSMODL SAVE ADDRESS OF DMSSVT TEXT @V305614 00574000
LR R2,R1 SET ORIGIN (R3 HAS THE SIZE), @VM03029 00575000
SR R15,R15 MAKE SURE R15=0 (R14 IMMATERIAL) @VM03029 00576000
MVCL R2,R14 CLEAR AREA TO BE LOADED @VM03029 00577000
LA R10,FINALOAD TO DROP THRU AT END OF LOAD @VA05055 00578000
LOADSUB EQU * ENTER HERE FOR LOADING... @VA05055 00579000
LR R2,R1 NOW SET ORIGIN AGAIN; @VM03029 00580000
LA R14,MAXORG MAX ORIGIN LENGTH @VM03029 00581000
LA R1,LOADSTRT+7 POINT TO ORIGIN FIELD @V305614 00582000
SPACE 1 00583000
HALFBYTE SRDL R2,FOURBITS MOVE HALF BYTE TO R3 @V305614 00584000
SRL R3,RESTWORD MOVE TO LOW BYTE @V305614 00585000
STC R3,0(,R1) STORE FULL BYTE IN PLIST @V305614 00586000
BCTR R1,0 BET LOWER BYTE ADDRESS @V305614 00587000
BCT R14,HALFBYTE AND LOOP @V305614 00588000
SPACE 1 00589000
TR LOADSTRT,HEXTBL TRANSLATE TO EBCDIC @V305614 00590000
LA R1,LDPLIST POINT TO PLIST @V305614 00591000
STM R0,R15,RGPRS SAVE REGISTERS @V305614 00592000
OI MODFLGS,SYSLOAD ALLOW LOAD ABOVE FREELOWE @VA04666 00593000
L R15,=V(DMSLOA) GET ADDRESS OF LOADER @V305614 00594000
BALR R14,R15 AND LOAD DMSSVT @V305614 00595000
NI MODFLGS,255-SYSLOAD RESET LOADER FLAG @VA04666 00596000
LTR R15,R15 TEST FOR VALID LOAD @V305614 00597000
L R12,AUSRAREA RESTORE OUR ADDRESSABILITY @V305614 00598000
LM R0,R15,RGPRS RESTORE REGISTERS @V305614 00599000
BNZ SKLOAD ISSUE MESSAGE LATER @VM03024 00600000
BR R10 RETURN TO CALLER (OR DROP) @VA05055 00601000
FINALOAD EQU * HERE WHEN FINAL LOAD DONE @VA05055 00602000
OI DCSSFLAG,DCSSVTLD RUN UP THE FLAG @V305614 00603000
SPACE 1 00604000
SKLOAD LM R0,R3,REGSAV RESTORE REGISTERS @V305614 00605000
TM BATFLAGS,BATRUN BATCH RUNNING ? @V305614 00606000
BO TESTD IF SO, NO PROFILE PLEASE @V305614 00607000
LTR R0,R0 IS THERE A FIRST COMMAND? 00608000
BZ CKPROF NO. MAYBE THERE IS A PROFILE. 00609000
LR R0,R1 BETTER SAVE THIS INDICATOR FOR LATER 00610000
LA R1,ATTN1 POINT TO STACK PLIST 00611000
L R2,CMNDINFO POINT TO THE SCANNED LINE 00612000
ST R2,STCKINFO FOR ATTN 00613000
SVC 202 STACK IT 00614000
SR R5,R5 SIGNAL THAT THERE IS A USER FIRST COMMAND 00615000
LA R3,1(,R3) UP THE COMMAND-COUNT 00616000
LR R1,R0 WE CAN REMEMBER NOW 00617000
CKPROF LTR R1,R1 DID ACCESS FIND A PROFILE? 00618000
BNM TESTD APPARENTLY NOT 00619000
LA R1,ATTN1 POINT TO THE STACK PLIST 00620000
L R2,PROFINFO POINT TO PROFILE COMMAND 00621000
ST R2,STCKINFO IN ATTN PLIST 00622000
SVC 202 STACK IT 00623000
LA R3,1(,R3) UP THE COMMAND-COUNT 00624000
SPACE 1 HRC371DS 00624050
* If SYSPROF EXEC S exists, stack a line to execute it. HRC371DS 00624100
FSSTATE 'SYSPROF EXEC S' HRC371DS 00624150
LTR R15,R15 HRC371DS 00624200
BNZ TESTD no SYSPROF EXEC found HRC371DS 00624250
LA R1,ATTN1 point to the stack plist HRC371DS 00624300
L R2,SYSPINFO point to "EXEC SYSPROF" command HRC371DS 00624350
ST R2,STCKINFO put it in ATTN plist HRC371DS 00624400
SVC 202 stack "EXEC SYSPROF" lifo HRC371DS 00624450
LA R3,1(,R3) up the command-count HRC371DS 00624500
TESTD TM MISFLAGS,X'04' WAS NODISK SPECIFIED ? V0743 00625000
BO ENTERSYS YES..BR V0743 00626000
LA R2,5 MAX LGTH OF COMPARE @VA01116 00627000
CKACCD EX R2,COMPACC IS THE FIRST CMD ACCESS ? @VA01116 00628000
BE ISIT YES...BR @VA01116 00629000
BCT R2,CKACCD MAYBE AN ABBREVIATION @VA01116 00630000
B ACCDDSK NO...BR @VA01116 00631000
SPACE 1 00632000
COMPACC CLC CMNDLIST(1),=C'ACCESS' @VA01116 00633000
SPACE 1 00634000
USING NUCON,R2 THIS ELIMINATES AN LA INSTR. @VA01116 00635000
ISIT CLI CMNDLIST+1,C' ' MUST BE BLANK AFTER VALID ABBREV@VA01116 00636000
DROP R2 @VA01116 00637000
USING NUCON,0 @VA01116 00638000
BNE ACCDDSK BR IF NOT ACCESS CMD ABBREV. @VA01116 00639000
CLC CMNDLIST+8(3),=C'192' ACCESS 192 ? @VA01116 00640000
BE REMOVED BRANCH IF YES, NO AUTO D ACC @VA04755 00641000
CLC CMNDLIST+8(3),DEV191 ACCESS 191? @VA05919 00642000
BNE DACCESS NO, CHECK FOR DDISK @VA05919 00643000
CLC CMNDLIST+16(1),DSKA ACCESS ADISK? @VA05919 00644000
BE DACCESS YES, CHECK FOR DDISK @VA05919 00645000
L R2,=V(ADISK) IF FIRST COMMAND WAS AC 191 BUT @VA05919 00646000
XC 0(4,R2),0(R2) NOT A, DELETE DEFAULT ENTRY @VA05919 00647000
* FROM DEVTAB 00648000
DACCESS EQU * @VA05919 00649000
CLC CMNDLIST+16(1),DSKD WAS DDISK ACCESSED? @VA05919 00650000
BE BATSTACK YES, BYPASS AUTO FORMAT AND AUTO @VA05919 00651000
* ACCESS 00652000
ACCDDSK DS 0H @VA01116 00653000
TM INSFLAG,ACCD WAS 192 FORMATTED? @VA05919 00654000
BNO TESTFORM NOT READY FOR ACCESS @VA05919 00655000
LA R1,DPLIST POINT TO 'ACCESS D' 00656000
SVC 202 ... 00657000
DC AL4(*+4) ERROR CONDITION IS IMMATERIAL 00658000
B BATSTACK GO TO THE GOTO V0742 00659000
TESTFORM TM INSFLAG,FORMD WAS THE DDISK UNFORMATTED? 00660000
BNO BATSTACK ALMOST DONE IF NOT V0742 00661000
LA R1,ATTN1 POINT TO STACK PLIST 00662000
L R2,DINFO GET ADDRESS OF INFO 00663000
ST R2,STCKINFO INTO THE ATTN PLIST 00664000
SVC 202 ... 00665000
LA R3,1(,R3) UP THE COMMAND COUNT 00666000
B BATSTACK @VA04755 00667000
REMOVED EQU * @VA04755 00668000
CLI CMNDLIST+16,C'D' IS THIS THE 'D' DISK? @VA04755 00669000
BE BATSTACK BRANCH IF YES @VA04755 00670000
L R11,=V(DDISK) GET DEVTAB ENTRY ADDRESS @VA04755 00671000
EX R0,REMOVE REMOVE ADDRESS FROM DEVTAB @VA04755 00672000
BATSTACK EQU * STACK THE 'BATCH' COMMAND V0742 00673000
TM BATFLAGS,BATRUN BATCH IPL? V0742 00674000
BZ ENTERSYS IF NOT, PROCEED AS USUAL V0742 00675000
L R2,BATINFO V0742 00676000
ST R2,STCKINFO PROVIDE COMMAND LINE AND... V0742 00677000
LA R1,ATTN1 V0742 00678000
SVC 202 STACK 'BATCH' REQUEST V0742 00679000
SR R5,R5 SIGNAL USER COMMAND FOR DMSINT V0742 00680000
LA R3,1(,R3) COMMAND COUNT FOR DMSINT V0742 00681000
ENTERSYS TM DCSSFLAG,DCSSAVAL+DCSSVTLD OS SIMULATION OK ? @VM03024 00682000
BNZ OSOK YES, BRANCH @VM03024 00683000
DMSERR TEXT='CMS OS simulation not available',NUM=098,LET=W 00684000
ICM R1,ALL,AOSMODL GET OS SIMUL. ADDR @VA05055 00685000
BZ OSOK NOT THERE, DON'T FRET... @VA05055 00686000
L R0,OSMODLDW GET OS SIM LENGTH(DWORDS) @VA05055 00687000
DMSFRET DWORDS=(0),LOC=(1) @VA05055 00688000
SR R1,R1 @VA05055 00689000
ST R1,AOSMODL CLEAR OS SIM ADD @VA05055 00690000
OSOK LM R10,R12,JREGS RESTORE REGISTERS FOR DMSINT @VM03024 00691000
BR R12 BRANCH TO 'INITENTR'. 00692000
EJECT 00693000
H4096 DC H'4096' PAGE SIZE AS HALFWORD @V305001 00694000
F8192 DC A(8192) STANDARD LOADER TABLE ALLOC. @V305001 00695000
MINSIZE DC A(393216) MINIMUM CMS MACHINE SIZE @V305001 00696000
FOURMEG DC A(4194304) 4 megabyte machine size HRC371DS 00696100
K256 DC A(262144) 64 pages (256K) loader tbl alloc HRC371DS 00696200
DS 0F 00697000
APRG EQU * 00698000
DC H'4,0' 00699000
DC V(PRGINT) 00700000
ACVTOK DC X'00040000',A(CVTOK) (FOR COMPUTING EXT-PREC.) V0207 00701000
CVTXPFP EQU X'01' (EXT-PREC. BIT IN CVTOPTA)V0207 00702000
* 00703000
JREGS DC V(OPSECT) R10 00704000
DC V(FVS) R11 00705000
DC V(INIT) R12 00706000
* 00707000
DS 0D V0218 00708000
NIOPSW DC AL2(MCKM,0),V(IOINT) V0218 00709000
WAKEPSW DC AL1(0,MCKM,0,0),A(WAKEHERE) V0218 00710000
WAITPSW DC AL1(CHAN0,MCKM+WAIT,0,0),A(WAKEHERE) V0218 00711000
* 00712000
STARTMSG DC CL8'TYPLIN' 00713000
DC A(SYSTEMID-NUCON) 00714000
DC C'B' 00715000
DC AL3(32) 32 BYTES 00716000
* 00717000
* CCW-STRING TO READ IN RECORD 3 FROM T-DISK (IF FEASIBLE) ... 00718000
LABCCWS CCW X'07',BIN0,CC,6 SEEK 00719000
CCW X'31',CYL0,CC,5 SEARCH 00720000
CCW X'08',*-8,0,1 TIC BACK TO SEARCH 00721000
CCW X'06',LABELR,CC+SILI,16 READ 16 BYTES 00722000
CCW X'03',0,SILI,1 NO-OP. 00723000
* 00724000
BIN0 DC H'0000' 00725000
CYL0 DC H'0000' 00726000
HEAD0 DC H'0000' 00727000
REC3 DC X'03' 00728000
* 00729000
LABELR DC 2D'0' FIRST 16 BYTES OF RECORD 3 ARE READ IN HERE 00730000
DUMTDISK DC C'CMS=' ALL CMS LABELS START THIS WAY P3119 00731000
MTDSK EQU X'40' P3119 00732000
* 00733000
READFSTL DS 0F PLIST TO ACCESS ALL S2 FILES FROM S-DISK: @VM03029 00734000
DC CL8'READFST' 00735000
DC CL8'*' 00736000
DC CL8'*' 00737000
DC CL8'S2' @VM03029 00738000
DC 8X'FF' 00739000
* 00740000
LDPLIST DS 0F PLIST TO LOAD DMSSVT & FRIENDS @VM03154 00741000
DC CL8'LOAD' IN GOOD ORDER FOR PAGING PLEASE: @VM03154 00742000
DC CL8'DMSSVT' @VM03154 00743000
DC CL8'DMSSVN' @VM03154 00744000
DC CL8'DMSSMN' @VM03154 00745000
DC CL8'DMSSLN' @VM03154 00746000
DC CL8'DMSLGT' @VM03154 00747000
DC CL8'DMSOLD' @VM03154 00748000
DC CL8'DMSLSB' @VM03154 00749000
DC CL8'DMSLIB' @VM03154 00750000
DC CL8'DMSLSY' @VM03154 00751000
DC CL8'DMSSOP' @VM03154 00752000
DC CL8'DMSSQS' @VM03154 00753000
DC CL8'DMSSCT' @VM03154 00754000
DC CL8'DMSSBS' @VM03154 00755000
DC CL8'DMSSEB' @VM03154 00756000
DC CL8'DMSSBD' @VM03154 00757000
DC CL8'DMSSAB' @VM03154 00758000
DC CL8'(' @VM03154 00759000
DC CL8'NOMAP' @VM03154 00760000
DC CL8'ORIGIN' @VM03154 00761000
LOADSTRT DC CL8'0' @VM03154 00762000
DC 8X'FF' @VM03154 00763000
* 00764000
SVTST DS 0F PLIST FOR DMSSVT STATE @V305614 00765000
DC CL8'STATE' @V305614 00766000
DC CL8'DMSSVT' @V305614 00767000
DC CL8'TEXT' @V305614 00768000
DC CL2'*' @V305614 00769000
DC 6X'00' @V305614 00770000
DC 8X'FF' @V305614 00771000
* 00772000
HEXTBL DC C'0123456789ABCDEF' 00773000
* 00774000
DUMMYAD DC A(X'22000') LOAD OS SIM HERE FIRST ... @VA05055 00775000
* TO COMPUTE FREE STORAGE SIZE 00776000
WORKAREA DC D'0' 00777000
* 00778000
CLKCCW CCW 0,CURRDATE-NUCON,0,24 CHRONO READ CCW 00779000
* 00780000
APLIST DC CL8'ACCESS' 00781000
DC X'FEFFFFFF' 00782000
SPACE 1 00783000
BATCHA DC CL8'195' V0742 00784000
DC CL8'A' V0742 00785000
DC CL8'(' V0742 00786000
DC CL8'ERASE' V0742 00787000
DC 8X'FF' V0742 00788000
* 00789000
DPLIST DC CL8'ACCESS' 00790000
DC CL8'192' 00791000
DC CL8'D' 00792000
DC X'FFFFFFFF' 00793000
* 00794000
DPLIST1 DC CL8'FORMAT' 00795000
DC X'FEFFFFFF' 00796000
* 00797000
DINFO DC AL1(*-DPLIST1) 00798000
DC AL3(DPLIST1) 00799000
* 00800000
PROFLIST DC CL8'EXEC' 00801000
DC CL8'PROFILE' 00802000
DC X'FFFFFFFF' 00803000
* 00804000
PROFINFO DC AL1(*-PROFLIST) 00805000
DC AL3(PROFLIST) 00806000
* 00807000
BATLIST DC CL8'CMSBATCH' V0742 00808000
DC 8X'FF' V0742 00809000
* 00810000
BATINFO DC AL1(*-BATLIST) V0742 00811000
DC AL3(BATLIST) V0742 00812000
* 00813000
YPLIST DC CL8'ACCESS' 00814000
DC CL8'192' 00815000
DC CL8'Y/S' 00816000
DC CL8'*' 00817000
DC CL8'*' 00818000
DC CL8'Y2' 00819000
BIGTIME DC X'FFFFFFFF' 00820000
* HRC371DS 00820020
SYSPROF DC CL8'EXEC' plist for EXEC SYSPROF HRC371DS 00820030
DC CL8'SYSPROF' HRC371DS 00820040
DC 8X'FF' HRC371DS 00820050
SYSPINFO DC AL1(*-SYSPROF) HRC371DS 00820060
DC AL3(SYSPROF) plist to load GCCLIB runtime HRC371DS 00820070
RESLOAD DC CL8'RESLIB' HRC371DS 00820080
DC CL8'LOAD' HRC371DS 00820090
RESWHO DC CL8'GCCLIB' HRC371DS 00820100
DC CL8'(' HRC371DS 00820110
DC CL8'PERM' HRC371DS 00820120
DC 8X'FF' HRC371DS 00820130
GLOBALTX DC CL8'GLOBAL' plist to access GCCLIB TXTLIB HRC371DS 00820140
DC CL8'TXTLIB' HRC371DS 00820150
DC CL8'GCCLIB' HRC371DS 00820160
DC 8X'FF' HRC371DS 00820170
REXXNAME DC CL8'DMSREX' HRC371DS 00820180
OUTOFWAY DC AL4(139264) relocate user area to x22000 HRC371DS 00820190
REALUSER DC AL4(131072) real user area is at x20000 HRC371DS 00820200
* 00821000
ATTN1 DC CL8'ATTN' 00822000
DC CL4'LIFO' 00823000
STCKINFO DC AL1(16) 00824000
DC AL3(DPLIST1) 00825000
* 00826000
CMNDINFO DC AL1(130) 00827000
DC AL3(CMNDLINE-NUCON) 00828000
* 00829000
* THE FOLLOWING 5 MUST BE KEPT IN ORDER (USED VIA 'LM) .. 00830000
FREEADS DC V(NUCEND) R7 00831000
DC A(ENDSYS) R8 00832000
DC F'1' R9 00833000
ZERO DC F'0' R10 00834000
DC A(X'40000'-ENDSYS) R11 00835000
* 00836000
IPLPARMS DC D'0' KEEP CP IPL PARMS HERE V0742 00837000
DC 7D'0' ADDITIONAL PARMS @VA12042 00838000
FENCE EQU X'FF' 00839000
DMODE EQU 24 MODE IS 24 BYTES FROM BEGINNING 00840000
EIGHT EQU 8 @V305665 00841000
DIV8 EQU 3 @V305614 00842000
MAXORG EQU 8 @V305614 00843000
FOURBITS EQU 4 @V305614 00844000
RESTWORD EQU 28 @V305614 00845000
TWENTY4 EQU 24 @V305066 00846000
SIGN EQU X'F0' @V305066 00847000
BIN1000 EQU B'1000' @V305066 00848000
PARMLEN EQU 30 @V305066 00849000
KEYLEN EQU 5 @V305066 00850000
FINDSYS EQU 12 @V305066 00851000
PURGESYS EQU 8 @V305066 00852000
SEVEN EQU 7 @VA05055 00853000
ALL EQU 15 @VA05055 00854000
* 00855000
RGPRS DC 16F'0' REGISTER SAVE AREA @V305614 00856000
REGSAV DC 4F'0' .. AND ANOTHER @V305614 00857000
DCSSCLR EQU 0 @V305614 00858000
SY DC C'SY' 00859000
* 00860000
MDASD DC X'04' 00861000
* 00862000
DS 0F @V305665 00863000
SEG DC C'SEG=' @V305665 00864000
BATCH DC C'BATC' @V305614 00865000
BATH DC C'H' @V305614 00866000
BLANK EQU C' ' @V305665 00867000
INSFLAG DC X'00' 00868000
DEV191 DC C'191' DEVICE 191 @VA05919 00869000
DSKA DC C'A' A-DISK @VA05919 00870000
DSKD DC C'D' D-DISK @VA05919 00871000
* 00872000
ACCD EQU X'80' 00873000
FORMD EQU X'40' 00874000
ACCY EQU X'20' 00875000
ACCA EQU X'10' 00876000
GOTFIRST EQU X'08' 00877000
TDSK EQU X'04' P3119 00878000
GRAFCON DC X'40' @VM08878 00879000
REMGRAF DC X'8080' @V2D3914 00880000
TYP3275 DC X'02' @VA12109 00880020
TYP3277 DC X'04' @VA12109 00880040
CLASTERM DC X'80' @VA12109 00880060
AUTOPRM DC C'AUTOCR' @V60C6BE 00880100
INSFLAG2 DC X'00' A NEW FLAG BYTE @V60C6BE 00880200
AUTOCR EQU X'80' AUTOCR SPECIFIED AS PARM @V60C6BE 00880300
SPACE 00881000
TODAY DC 4D'0' @V305032 00882000
HOURS EQU TODAY+8 @V305032 00883000
MINUTES EQU TODAY+11 @V305032 00884000
SECONDS EQU TODAY+14 @V305032 00885000
DOUBLE1 DC D'0' @V305032 00886000
DOUBLE2 DC D'0' @V305032 00887000
MICHOUR2 DC F'1800000000' NO. MICROSEC IN ONE HOUR / 2 @V305032 00888000
TEN DC H'10' @V305032 00889000
SIXTY DC H'60' @V305032 00890000
NONLEAP DC AL2(0,31,59,90,120,151,181,212,243,273,304,334) @V305032 00891000
LEAPYEAR DC AL2(0,31,60,91,121,152,182,213,244,274,305,335) @V305032 00892000
SPACE 00893000
LTORG @V305032 00894000
ENDSYS DS 0D FREE STORAGE CAN START RIGHT HERE. 00895000
ENTRY DMSINSE 00896000
DMSINSE EQU * 00897000
EJECT 00898000
EQUATES 00899000
REGEQU 00900000
NUCON 00901000
BGCOM , @V305032 00902000
SYSNAMES @V305665 00903000
IO 00904000
ADT 00905000
CMSCVT 00906000
EXTSECT @VM08878 00907000
END 00908000