ibm:vm370-lib:cms:dmsins.assemble_src
Table of Contents
DMSINS Source
References
- Fixes Applied : 7
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [HRC371DS]
Source Listing
- DMSINS.ASSEMBLE.txt
- 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
ibm/vm370-lib/cms/dmsins.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator