Table of Contents

DMSINS Source

References

Source Listing

DMSINS.ASSEMBLE.txt
  1. INS TITLE 'DMSINS (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * 00004000
  5. * MODULE NAME: 00005000
  6. * 00006000
  7. * DMSINS (INITSUB) 00007000
  8. * 00008000
  9. * FUNCTION: 00009000
  10. * 00010000
  11. * TO CONTROL INITIALIZATION OF THE CMS NUCLEUS. 00011000
  12. * 00012000
  13. * ATTRIBUTES: 00013000
  14. * 00014000
  15. * RESIDENT WITH NUCLEUS AT IPL TIME. 00015000
  16. * 00016000
  17. * ENTRY POINTS: 00017000
  18. * 00018000
  19. * DMSINS - ENTRY FROM IPL TEXT. 00019000
  20. * 00020000
  21. * ENTRY CONDITIONS: 00021000
  22. * 00022000
  23. * NONE 00023000
  24. * 00024000
  25. * EXIT CONDITIONS: 00025000
  26. * 00026000
  27. * NONE 00027000
  28. * 00028000
  29. * CALLS TO OTHER ROUTINES: 00029000
  30. * 00030000
  31. * DMSFRES, DMSFREE, DMSFRET, READFST, DMSINT, 00031000
  32. * DMSDIOR, DMSCAT 00032000
  33. * 00033000
  34. * EXTERNAL REFERENCES: 00034000
  35. * 00035000
  36. * NONE 00036000
  37. * 00037000
  38. * TABLES/WORKAREAS: 00038000
  39. * 00039000
  40. * NONE 00040000
  41. * 00041000
  42. * REGISTER USAGE: 00042000
  43. * 00043000
  44. * GPR13 - BASE, REST WORK 00044000
  45. * 00045000
  46. * NOTES: 00046000
  47. * 00047000
  48. * NONE 00048000
  49. * 00049000
  50. * OPERATION: 00050000
  51. * 00051000
  52. * AFTER INITIAL PROGRAM LOAD (IPL) OF THE CMS NUCLEUS, 00052000
  53. * CONTROL PASSES TO THE ONE-TIME INITIALIZATION PROGRAM 00053000
  54. * INITSUB, WHICH IMMEDIATELY ESTABLISHES ADDRESSABILITY 00054000
  55. * AND PROCEEDS AS FOLLOWS: 00055000
  56. * 00056000
  57. * 1. SAVES THE IPL-ED DEVICE ADDRESS. 00057000
  58. * 00058000
  59. * 2. CALLS ADTLKP TO LOCATE THE ACTIVE DISK TABLE FOR 00059000
  60. * THE SYSTEM DISK. 00060000
  61. * 00061000
  62. * 3. SETS LOW-EXTEND TO X'40000'. 00062000
  63. * 00063000
  64. * 4. CALLS DMSFRES FOR FIRST-PASS STORAGE INITIALIZING. 00064000
  65. * 00065000
  66. * 5. CALLS DMSFREE TO RESERVE ALL NUCLEUS FREE STORAGE 00066000
  67. * 00067000
  68. * 6. CALLS READFST TO READ IN ALL S-DISK FST'S. 00068000
  69. * 00069000
  70. * 7. CALLS DMSFRET TO RETURN ALL NUCLEUS STORAGE 00070000
  71. * 00071000
  72. * 8. CALLS DMSFREE TO GET NUCLEUS FREE STORAGE FOR 00072000
  73. * SSTAT. 00073000
  74. * 00074000
  75. * 9. CREATES THE SSTAT FROM 'S2' FILES ON S-DISK 00075000
  76. * 00076000
  77. * 10. USES CP-DIAGNOSE TO DETERMINE CHARACTERISTICS 00077000
  78. * OF A DYNAMIC DISK (IF PRESENT). 00078000
  79. * 00079000
  80. * 11. CHECKS IF THE D-DISK HAS A VALID CMS-LABEL AND 00080000
  81. * DECIDES IF A FORMAT OR ACCESS IS REQUIRED. 00081000
  82. * 00082000
  83. * 12. CHECKS TO SEE IF A Z-DISK IS REQUIRED. 00083000
  84. * 00084000
  85. * 13. TYPES VERSION IDENTIFICATION MESSAGE. 00085000
  86. * 00086000
  87. * 14. READS THE FIRST COMMAND AND IF IT WAS 00087000
  88. * 'SAVESYS, ISSUES A DIAGNOSE TO CP USING THE 00088000
  89. * INPUT LINE AS THE PARAMETER LIST. GOTO 10. 00089000
  90. * 00090000
  91. * 15. IF THE FIRST COMMAND WAS ANYTHING ELSE 00091000
  92. * A. ACCESS THE YDISK (IF PRESENT) 00092000
  93. * B. Load the GCC runtime library into high HRC371DS 00093000
  94. * memory and update a pointer in NUCON with HRC371DS 00093100
  95. * its address. HRC371DS 00093200
  96. * C. Load REXX into high memory and establish it HRC371DS 00093300
  97. * as a nucleus command. Now all EXECs can be HRC371DS 00093400
  98. * written in REXX. HRC371DS 00093500
  99. * D. Access the user's A disk. HRC371DS 00093600
  100. * E. Stack a plist LIFO for "PROFILE EXEC" HRC371DS 00093700
  101. * (if present and if "ACCESS ( NOPROFILE" was HRC371DS 00093800
  102. * not entered as the first command) HRC371DS 00093900
  103. * F. Stack a plist LIFO for "SYSPROF EXEC" HRC371DS 00094000
  104. * (if present and if "ACCESS ( NOPROFILE" was HRC371DS 00094100
  105. * not entered as the first command) HRC371DS 00094200
  106. * G. Access the D disk or, if not formatted, HRC371DS 00094300
  107. * stack a plist LIFO to format the D disk HRC371DS 00094400
  108. * (if present) HRC371DS 00094500
  109. * HRC371DS 00094600
  110. * Thus the command EXEC SYSPROF will be executed HRC371DS 00094700
  111. * before the PROFILE EXEC is executed. Eventually, HRC371DS 00094800
  112. * we may first stack a "RELEASE A" command so that HRC371DS 00094900
  113. * we can ensure that SYSPROF EXEC S is executed... HRC371DS 00095000
  114. * HRC371DS 00095100
  115. * 00097000
  116. * 16. SETS VALUE OF BLIP TIMER. 00098000
  117. * 00099000
  118. * 17. DETERMINES VIRTUAL MACHINE SIZE AND ALLOCATES 00100000
  119. * 2 PAGES OF LOADER TABLES IF MACHINE SIZE IS 00101000
  120. * NOT OVER 320K. 3 PAGES ARE OTHERWISE ALLOCATED 00102000
  121. * But if the machine is 4MB or larger, allocate HRC371DS 00102100
  122. * 64 pages of loader tables. HRC371DS 00102200
  123. * 00103000
  124. * 18. CALLS DMSFRES FOR FINAL STORAGE INITIALIZING 00104000
  125. * 19. GOTO INIT. 00105000
  126. * 00106000
  127. *. 00107000
  128. EJECT 00108000
  129. DMSINS START X'20000' 00109000
  130. ENTRY INITSUB 00110000
  131. INITSUB EQU DMSINS 00111000
  132. USING NUCON,R0 00112000
  133. USING INITSUB,R12 00113000
  134. * 00114000
  135. * CMS CONTINUES HERE AFTER WRITING ON DISK (IF READ FROM CARDS) 00115000
  136. * OR STARTS UP HERE IF READ IN FROM DISK (VIA 'IPL 190') ... 00116000
  137. * 00117000
  138. MVC IPLPARMS(64),0(R1) KEEP CP 'IPL' PARMS @VA12042 00118000
  139. MVC 80(4,R0),BIGTIME PUT A HIGH NUMBER IN THE TIMER 00119000
  140. MVC VMSIZE,=A(X'40000') P3077 00120000
  141. MVC IPLADDR,IPLPSW+2 SAVE IPL-ED DEVICE ADDRESS 00121000
  142. XC SYSNAME(8),SYSNAME CLEAN IT UP @VA03571 00122000
  143. LA R1,SY-DMODE POINT TO MODE LETTER 00123000
  144. L R15,=V(DMSLAD) GET ADDR. OF ADTLKP 00124000
  145. BALR R14,R15 GO THERE 00125000
  146. LR R13,R1 SAVE ADDR. OF ADT 00126000
  147. USING ADTSECT,R13 00127000
  148. * THE FOLLOWING TWO INSTRUCTIONS WILL CAUSE DMSFRE TO ALLOCATE, IN THE 00128000
  149. * HIGH-CORE AREA, FROM THE END OF THIS ROUTINE TO X'40000'. THE 00129000
  150. * LATTER FIGURE CAN BE CHANGED AT WILL. 00130000
  151. MVC FREELOWE,=A(X'40000') INITIAL SETTING OF LOW-EXTEND 00131000
  152. MVC LOCCNT,=A(ENDSYS) INITIAL SETTING OF LOCCNT 00132000
  153. DMSFRES INIT1,TYPCALL=BALR FIRST DMSFRE INIT ROUTINE 00133000
  154. SPACE 00134000
  155. * WE ALLOCATE ALL OF THE LOW-CORE STORAGE AVAILABLE TO DMSFRE, SO THAT 00135000
  156. * THE SUBSEQUENT CALL TO 'ACCESS' WILL USE ONLY HIGH-CORE STORAGE. 00136000
  157. DMSFREE DWORDS=X'FFFFFF',MIN=1,TYPE=NUCLEUS,TYPCALL=BALR, *00137000
  158. AREA=LOW ALLOCATE ALL LOW-CORE STORAGE 00138000
  159. LR R7,R0 SAVE SIZE ALLOCATED 00139000
  160. LR R9,R1 SAVE ADDRESS RETURNED 00140000
  161. L R2,=V(SDISK) LOAD ADDRESS OF SYSTEM DISK ADT 00141000
  162. LH R3,DTAD(,R2) SAVE SYSTEM DISK ADDRESS 00142000
  163. LR R0,R13 R0 POINTS TO ACTIVE-DISK-TABLE, 00143000
  164. OI ADTFLG3,ADTFORCE ENSURE S-DISK IS "READ-ONLY" @VM03029 00144000
  165. LA R1,READFSTL R1 TO PARAMETER-LIST 00145000
  166. L 15,=V(READFST) CALL 'READFST' TO READ PSTAT FROM 00146000
  167. BALR R14,R15 S-DISK 00147000
  168. EJECT 00148000
  169. * NOW RE-INITIALIZE THE FREE STORAGE MANAGEMENT ... 00149000
  170. * WE NOW RETURN LOW-CORE STORAGE TO DMSFRE, SO THAT WE CAN USE IT. 00150000
  171. LR R0,R7 LOAD SIZE OF LOW-CORE STORAGE 00151000
  172. LR R1,R9 LOAD ADDRESS OF LOW-CORE STORAGE 00152000
  173. DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR GO RETURN IT 00153000
  174. L R0,ADTFSTC GET NUMBER OF FILES READ IN BY READFST 00154000
  175. MH R0,=H'5' TIMES 5 GIVES NO. OF DBL-WORDS FOR SAME, 00155000
  176. A R0,=F'2' PLUS 2 GETS EXACT SIZE NEEDED FOR SSTAT, 00156000
  177. DMSFREE DWORDS=(0),TYPE=NUCLEUS,AREA=LOW,TYPCALL=BALR ALLOCATE 00157000
  178. R1OK SLL R0,3 00158000
  179. LR R3,R0 00159000
  180. AR R3,R1 00160000
  181. SH R3,=H'8' 00161000
  182. XC 0(8,R3),0(R3) CLEAR LAST DOUBLE-WORD OF FREE STORAGE 00162000
  183. ST R3,ASTATEXT STORE ADDRESS OF 'STATEXT' 00163000
  184. L R5,ADTFDA START WITH TABLE PROVIDED TO READFST, 00164000
  185. LA R5,8(,R5) SPACE OVER PRELIMINARY WORDS, 00165000
  186. LA R6,40 40 BYTE ENTRIES 00166000
  187. LR R4,R3 START WITH 40-BYTE 00167000
  188. SR R4,R6 ENTRY AT THE END OF FREE STORAGE 00168000
  189. LA R15,STR1SS FOR BCR BELOW, FOR MAXIMUM SPEED. 00169000
  190. SLR R10,R10 FOR SPEED IN LOOP BELOW 00170000
  191. LOOP1A LA R7,760(,R5) R5+760 = LIMIT FOR BXLE LOOP 00171000
  192. LOOP2 CL R10,0(,R5) IS ENTRY = ZERO ? 00172000
  193. BCR 8,R15 'BZ STR1SS' IF YES. 00173000
  194. MVC 0(40,R4),0(R5) MOVE 40-BYTE ENTRY TO 'SSTAT', 00174000
  195. MVI DMODE(R4),C'S' MAKE THIS PRETTY FOR VIEWERS 00175000
  196. SR R4,R6 DECREMENT R4 BY 40 FOR NEXT TIME 00176000
  197. BXLE R5,R6,LOOP2 ITERATE THRU EACH 800-BYTE BLOCK 00177000
  198. L R5,0(,R5) POINTER TO NEXT ONE (IF ANY) 00178000
  199. LTR R5,R5 ANY MORE 800-BYTE BLOCKS LEFT ? 00179000
  200. BP LOOP1A BP IF YES, KEEP SEARCHING. 00180000
  201. STR1SS ST R1,ASSTAT STORE ADDRESS OF 'SSTAT' 00181000
  202. ST R1,ADTFDA ALSO STORE IN 'ADTS' TABLE. 00182000
  203. OI ADTFLG1,ADTFFSTV SET SPECIAL FLAG-BIT FOR SSTAT SEARCH 00183000
  204. NI ADTFLG1,255-ADTFFSTF TURN OFF FREE-STORAGE FLAG-BIT 00184000
  205. ST R6,0(,R1) '40' INTO SSTAT, 00185000
  206. AR R4,R6 POINT R4 TO THE LAST ENTRY WE STORED, 00186000
  207. SR R3,R4 END - BEGINNING = SIZE 00187000
  208. ST R3,4(,R1) SIZE IN BYTES INTO SSTAT+4 00188000
  209. LR R0,R13 R0 MUST POINT TO S-DISK ADT, @V305032 00189000
  210. L R15,=V(SORTFST) THEN SORT ALL THE FST ENTRIES @V305032 00190000
  211. BALR R14,R15 (VIA SUBROUTINE IN DMSALU) @V305032 00191000
  212. OI ADTFLG3,ADTFSORT AND SIGNAL 'SSTAT' IS SORTED. @V305032 00192000
  213. B INITCONT SKIP 'SAVESYS' CODE (FOR A WHILE,ANYWAY) 00193000
  214. DROP R13 V0218 00194000
  215. EJECT 00195000
  216. SAVESYS LA R0,16 FORCE TWO-ARGUMENT COMMAND LINE P3096 00196000
  217. STM R0,R15,GPRLOG SAVE REGS FOR SAVED SYS IPL @VA13281 00196500
  218. MVC SYSNAME(8),8(R1) SAVE NAME OF SAVED SYSTEM @VA03571 00197000
  219. DC X'83100008' ISSUE 'SAVESYS' WITH USER'S INPUT P3096 00198000
  220. * 00200000
  221. * CMS STARTS HERE IF IPLING A SAVED SYSTEM 00201000
  222. * 00202000
  223. MVI DCSSFLAG,DCSSCLR CLEAR DCSS FLAGS @V305614 00203000
  224. STM R0,R15,LOWSAVE SAVE CP 'IPL' PARMS @VA13281 00210000
  225. LM R0,R15,GPRLOG RESTORE SAVED SYS REGS @VA13281 00210200
  226. MVC IPLPARMS(64),LOWSAVE GET IPL PARMS @VA13281 00210400
  227. SR R15,R15 INDICATE SAVESYS @VA13281 00210600
  228. SPACE 1 00211000
  229. INITCONT LA R6,PARMLEN GET LENGTH OF PARMS @V305066 00212000
  230. LA R5,IPLPARMS POINT TO PARMS @V305665 00213000
  231. INITLOOP EQU * @V305665 00214000
  232. BAL R14,SKIPBLNK GO SKIP BLANKS @V305665 00215000
  233. CLC 0(5,R5),BATCH IS KEYWORD BATCH? @V305614 00216000
  234. BNE CHKSET BRANCH IF NOT @V305665 00217000
  235. OI BATFLAGS,BATRUN+BATLOAD INDICATE BATCH @V305665 00218000
  236. LA R14,KEYLEN GET LENGTH OF KEYWORD @V305066 00219000
  237. AR R5,R14 SPACE OVER KEYWORD @V305665 00220000
  238. SR R6,R14 AND BACK OFF @V305665 00221000
  239. B INITLOOP LOOK FOR MORE @V305665 00222000
  240. CHKSET EQU * @V305665 00223000
  241. CLC 0(L'SEG,R5),SEG IS KEYWORD SEG? @V305665 00224000
  242. BNE CHKAUTO BRANCH IF NOT, SEE IF "AUTOCR" @V60C6BE 00225000
  243. LA R14,L'SEG GET KEYWORD LENGTH @V305665 00226000
  244. AR R5,R14 SPACE OVER KEYWORD @V305665 00227000
  245. SR R6,R14 BACK OFF KEYWORD LENGTH @V305665 00228000
  246. L R14,ASYSNAMS POINT TO SYSNAMES TABLE @V305665 00229000
  247. USING SYSNAMES,R14 @V305665 00230000
  248. MVC CMSSEG,0(R5) MOVE IN SEGMENT NAME @V305665 00231000
  249. DROP R14 @V305665 00232000
  250. LA R3,EIGHT INSERT LENGTH OF NAME @V305665 00233000
  251. AR R5,R3 ADD LENGTH OF NAME @V305665 00234000
  252. SR R6,R3 BACK OFF NAME LENGTH @V305665 00235000
  253. B INITLOOP @V305665 00236000
  254. CHKAUTO CLC 0(L'AUTOPRM,R5),AUTOPRM AUTOCR OPTION @V60C6BE 00236100
  255. BNE GETCON1 BRANCH IF NOT, IGNORE @V60C6BE 00236200
  256. LA R14,L'AUTOPRM @V60C6BE 00236300
  257. AR R5,R14 SPACE OVER KEYWORD @V60C6BE 00236400
  258. SR R6,R14 BACK OFF KEYWORD LENGTH @V60C6BE 00236500
  259. OI INSFLAG2,AUTOCR SET SPECIAL FLAG @V60C6BE 00236600
  260. B INITLOOP LOOK FOR MORE @V60C6BE 00236700
  261. GETCON1 EQU * @V305665 00237000
  262. USING SYSNAMES,R3 @V305665 00238000
  263. L R3,ASYSNAMS GET SYSNAMES TABLE ADDRESS @V305665 00239000
  264. LA R3,CMSSEG GET ADDRESS OF NAMED SYSTEM @V305665 00240000
  265. DROP R3 @V305665 00241000
  266. LA R4,FINDSYS INDICATE FINDSYS @V305066 00242000
  267. DC X'83340064' DIAGNOSE @V305665 00243000
  268. CH R4,=H'44' WAS THE SEGMENT FOUND? @V305665 00244000
  269. BE GETCON2 BRANCH IF NOT @VM03224 00245000
  270. OI DCSSFLAG,DCSSAVAL INDICATE DCSS OK @V305665 00246000
  271. ST R3,ACMSSEG SAVE DCSS ADDRESS @V305665 00247000
  272. B GETCON @V305665 00248000
  273. GETCON2 NI DCSSFLAG,255-DCSSAVAL RESTORE INDICATOR @V305614 00249000
  274. GETCON SR R13,R13 ZERO OUT A REGISTER. V0218 00250000
  275. BCTR R13,0 MAKE IT NEGATIVE. V0218 00251000
  276. DC X'83DF0024' SPECIAL-FORM DEVTYPES DIAGNOSE. V0218 00252000
  277. BNO SETCON SEEMS OK. V0218 00253000
  278. MVC IONPSW,WAKEPSW SOME MONKEY BUSINESS NEEDED. V0218 00254000
  279. LPSW WAITPSW V0218 00255000
  280. WAKEHERE MVC IONPSW,NIOPSW SETUP NORMAL PSW. V0218 00256000
  281. B GETCON TRY AGAIN. V0218 00257000
  282. SETCON L R11,=V(CONSOLE) GET DEVTAB OFFSET. V0218 00258000
  283. STH R13,0(,R11) PUT THE ADDRESS THERE. V0218 00259000
  284. B TYPMSG GIVE STARTING MESSAGE V0254 00260000
  285. EJECT 00261000
  286. CKDDISK L R11,=V(DDISK) GET DEVTAB ENTRY ADDRESS 00262000
  287. LA R3,DPLIST POINT TO OUR CURRENT WORK LIST 00263000
  288. BAL R2,VERIFY ESTABLISH SOMETHING 00264000
  289. BNZ CKYDISK GUESS NOT. 00265000
  290. STC R13,WORKAREA STORE BYTE WHERE WE CAN TEST IT P3119 00266000
  291. TM WORKAREA,MTDSK IS IT CP TEMP-SPACE? P3119 00267000
  292. BNO CKDLAB NO. P3119 00268000
  293. OI INSFLAG,TDSK REMEMBER THAT IT IS (FOR LATER) P3119 00269000
  294. CKDLAB EQU * P3119 00270000
  295. LA R14,LABCCWS POINT TO THE CCWS 00271000
  296. ST R14,CAW REALLY POINT 00272000
  297. DC X'83AE0020' SEE WHAT'S OUT THERE 00273000
  298. BNZ NOREC3 RECORD 3 IS UNREADABLE P3119 00274000
  299. CLC LABELR(4),DUMTDISK IS IT A CMS VOLUME? P3119 00275000
  300. BNE SCRAPD NO. REMOVE IT FROM DEVICE-TABLE. P3119 00276000
  301. OI INSFLAG,ACCD SIGNAL ACCESS REQUIRED. P3119 00277000
  302. B CKYDISK CONTINUE. P3119 00278000
  303. NOREC3 TM INSFLAG,TDSK WAS IT T-DISK SPACE? P3119 00279000
  304. BNO SCRAPD INVALIDATE THE ADDRESS IN DEVTAB. P3119 00280000
  305. OI INSFLAG,FORMD SIGNAL FORMAT REQUIRED. P3119 00281000
  306. B CKYDISK CONTINUE. P3119 00282000
  307. SCRAPD EX R0,REMOVE REMOVE ADDRESS FROM DEVTAB P3119 00283000
  308. CKYDISK L R11,=V(YDISK) GET DEVTAB ENTRY FOR YDISK 00284000
  309. LA R3,YPLIST POINT TO THE LATEST PLIST 00285000
  310. BAL R2,VERIFY AND SEE WHAT'S OUT THERE 00286000
  311. BNZ CKADISK NO Y DISK 00287000
  312. OI INSFLAG,ACCY SIGNAL ACCESS Y WANTED 00288000
  313. CKADISK L R11,=V(ADISK) POINT TO THE ADISK DEVTAB ENTRY 00289000
  314. LA R3,WORKAREA-8 DUMMY PLIST (SPECIAL CASE FOR ADISK) 00290000
  315. BAL R2,VERIFY FIND OUT WHICH IF ANY 00291000
  316. OI INSFLAG,ACCA SIGNAL THAT THERE IS AN ADISK 00292000
  317. B TSTDISK ACCESS OR FORMAT AS SPECIFIED V0254 00293000
  318. EJECT 00294000
  319. TYPMSG LA R1,STARTMSG ANNOUNCE OURSELVES V0254 00295000
  320. SVC 202 ... 00296000
  321. TM BATFLAGS,BATRUN CMSBATCH IPL? V0742 00297000
  322. BO BATNIP IF SO, NO TERMINAL READS V0742 00298000
  323. L R4,AOPSECT POINT TO A USEFUL DSECT 00299000
  324. USING OPSECT,R4 00300000
  325. MVI CONRDCOD,C'U' SIGNAL UPPERCASE TRANSLATION WANTED 00301000
  326. TM INSFLAG2,AUTOCR AUTOCR OPTION ? @V60C6BE 00301100
  327. BO CORINIT BR YES, NO CONSOLE READ @V60C6BE 00301200
  328. LA R1,CONREAD POINT TO THE READ PLIST 00302000
  329. SVC 202 ... 00303000
  330. LH R6,CONRDCNT GET BYTE-COUNT READ 00304000
  331. LTR R0,R6 TEST IT 00305000
  332. BZ CORINIT CONTINUE IF IT WAS A NULL-LINE 00306000
  333. STC R6,CMNDINFO KEEP ACTUAL LINE LENGTH V0692 00307000
  334. LA R1,CMNDLINE POINT TO IT 00308000
  335. L R15,=V(DMSSCNN) GET ADDR OF SCAN ROUTINE 00309000
  336. BALR R14,R15 SCAN THE INPUT LINE 00310000
  337. CLC 0(8,R1),=CL8'SAVESYS' WAS IT 'SAVESYS'? 00311000
  338. BE SAVESYS YES. BACKTRACK TO HANDLE CORRECTLY. 00312000
  339. OI INSFLAG,GOTFIRST FIRST COMMAND EXISTS V0692 00313000
  340. CLC 0(8,R1),=CL8'CMSBATCH' TRYING TO RUN BATCH? V0742 00314000
  341. BNE CORINIT NO. CONTINUE @VM03203 00315000
  342. NI INSFLAG,255-GOTFIRST AVOID STACKING BATCH TWICE @VM03203 00316000
  343. OI BATFLAGS,BATRUN+BATLOAD INIT. BATCH FLAGS @VM03203 00317000
  344. CLI 8(R1),FENCE SAVED SYSTEM NAME ENTERED? @VM03203 00318000
  345. BE BATNIP IF NOT, CONTINUE AS USUAL... @VM03203 00319000
  346. OI BATFLAG2,BATIPLSS IF SO, REMEMBER TO REIPL NAME @VM03203 00320000
  347. LM R2,R3,8(R1) @VM03203 00321000
  348. STM R2,R3,SYSNAME SAVE NAME OF SAVED SYS IN NUCON @VM03203 00322000
  349. BATNIP EQU * INITIALIZE BATCH FLAGS, PLISTS @VM03203 00323000
  350. MVC APLIST+8(40),BATCHA ACC 195 A - FOR BATCH @VM03203 00324000
  351. B CORINIT ESTABLISH VIRTUAL-MACHINE SIZE 00325000
  352. EJECT 00326000
  353. * 00327000
  354. * SUBROUTINE TO VERIFY EXISTENCE OF A PARTICULAR DISK, AND IF 00328000
  355. * IT EXISTS, CONVERT THAT ADDRESS TO PRINTABLE HEX FORMAT 00329000
  356. * ELSE, REMOVE THE DEVICE ADDRESS FROM THE DEVICE-TABLE 00330000
  357. * 00331000
  358. VERIFY LH R10,DTAD(,R11) GET DEVICE ADDRESS FROM DEVTAB 00332000
  359. LTR R10,R10 IS THERE ANY (INITIALIZED AS X'FF')? 00333000
  360. BCR 4,R2 NONE FOUND. 00334000
  361. CH R10,=X'0191' IS IT THE 'A' DISK? @VA03369 00335000
  362. BE NOCARE YES, DON'T DO DIAGNOSE @VA03369 00336000
  363. DC X'83AD0024' FIND OUT ITS CHARACTERISTICS 00337000
  364. BC 1,REMOVE NOT PRESENT, SO GET RID OF TELLTALES. 00338000
  365. CLM R13,B'1000',MDASD IS IT AT LEAST A DASD DEVICE? 00339000
  366. BNE REMOVE NO, FORGET IT. 00340000
  367. NOCARE UNPK WORKAREA(5),DTAD(3,R11) CONVERT ADDR TO @VA03369 00341000
  368. TR WORKAREA(4),HEXTBL-C'0' PRINTABLE HEX 00342000
  369. MVC 8(3,R3),WORKAREA+1 PUT ADDR INTO INDICATED PLIST 00343000
  370. SR R3,R3 SET ZERO RETURN CODE 00344000
  371. BR R2 RETURN 00345000
  372. REMOVE MVC 0(2,R11),=XL2'FFFF' COVER UP DETAB ADDRESS FIELD 00346000
  373. LTR R2,R2 SET NON-ZERO RETURN CODE 00347000
  374. BR R2 RETURN 00348000
  375. SPACE 5 00349000
  376. * SUBROUTINE TO SPACE OVER BLANKS 00350000
  377. * 00351000
  378. SKIPBLNK EQU * @V305665 00352000
  379. CLI 0(R5),BLANK IS THIS BLANK? @V305665 00353000
  380. BCR 7,R14 RETURN IF NOT @V305665 00354000
  381. LA R5,1(,R5) POINT TO NEXT BYTE @V305665 00355000
  382. BCT R6,SKIPBLNK AND LOOP @V305665 00356000
  383. B GETCON QUIT IF NO MORE @V305665 00357000
  384. * 00358000
  385. * COMPUTE NUMBER OF BYTES PHYSICALLY PRESENT IN OUR REAL OR 00359000
  386. * VIRTUAL CORE, AND STORE WHERE NEEDED IN NUCON... 00360000
  387. * 00361000
  388. CORINIT DC X'83DE0060' DIAGNOSE MACHINE SIZE @V305001 00362000
  389. ST R13,VMSIZE STORE VIRTUAL MEMORY SIZE 00363000
  390. ST R13,ALDRTBLS .. 00364000
  391. * 00365000
  392. * SOME CMS FREE STORAGE SHOULD BE RESERVED WHENEVER A GETMAIN 00366000
  393. * MACRO IS ISSUED. AMOUNT DEPENDS ON VMSIZE, AS FOLLOWS: 00367000
  394. * LESS THAN 512K: 6 PAGES; 512K OR ABOVE: 7 PAGES, @VA04911 00368000
  395. * PLUS 1 PAGE FOR EACH ADDITIONAL 256K OVER 512K. @VA04911 00369000
  396. * @VA04911 00370000
  397. LR R15,R13 GET VMSIZE (IN BYTES) @VA04911 00371000
  398. SL R15,=F'262144' SUBTRACT 256K BYTES @VA04911 00372000
  399. SRL R15,18 NOW DIVIDE BY 256K @VA04911 00373000
  400. LA R15,6(,R15) FINALLY, ADD SIX @VA04911 00374000
  401. STH R15,FRERESPG AND SAVE IT IN NUCON @VA04199 00375000
  402. L R14,F8192 ASSUME 2 PAGES OF LOADER TABLES P0515 00376000
  403. C R13,MINSIZE IS THIS A "LARGE MACHINE" P0515 00377000
  404. BNH SR1314 TRF IF NOT - USE 2 PAGES PER USUAL. 00378000
  405. AH R14,H4096 BUT IF YES MAKE IT 3 PAGES = 12288 BYTES 00379000
  406. * C R13,FOURMEG is it 4 megabytes or more? HRC371DS 00379100
  407. * BL SR1314 no, so we are good to go HRC371DS 00379200
  408. * L R14,K256 set LDRTBLS=64 pages (256K) HRC371DS 00379300
  409. SR1314 SR R13,R14 decrement by LDRTBLS space HRC371DS 00380000
  410. ST R13,FREELOWE INITIALIZE LOWEXT 00381000
  411. SRL R14,12 MAKE THAT 8192 OR 12288 BYTES INTO PAGES 00382000
  412. STC R14,ALDRTBLS STORE IN 1ST BYTE LDRTBLS @V305665 00383000
  413. TM DCSSFLAG,DCSSAVAL IS DCSS PRESENT? @V305665 00384000
  414. BZ CORINIT1 BRANCH IF NOT @V305665 00385000
  415. CLC ACMSSEG,VMSIZE NAMED SYSTEM OVERLAP CMS? @V305665 00386000
  416. BNL NOVLAP BRANCH IF NOT @V305665 00387000
  417. NI DCSSFLAG,255-DCSSAVAL INDICATE NOT AVAILABLE @V305665 00388000
  418. OI DCSSFLAG,DCSSOVLP INDICATE OVERLAP @V305665 00389000
  419. B CORINIT1 @V305665 00390000
  420. NOVLAP EQU * @V305665 00391000
  421. L R14,ASYSNAMS POINT TO SEGMENT TABLE @V305665 00392000
  422. USING SYSNAMES,R14 @V305665 00393000
  423. ************************************************************** 00394000
  424. * IT IS POSSIBLE THAT THE CP-OWNED VOLUME CONTAINING THE 00395000
  425. * CMS SHARED SEGMENT IS NOT ATTACHED TO THE VIRTUAL MACHINE. 00396000
  426. * THE FOLLOWING CODE VERIFIES THAT THE SEGMENT CAN ACTUALLY 00397000
  427. * BE LOADED BY THE VIRTUAL MACHINE. 00398000
  428. ************************************************************** 00399000
  429. SR R2,R2 INDICATE SHARED COPY @V305614 00400000
  430. LA R1,CMSSEG POINT TO SYSNAMES ENTRY @V305614 00401000
  431. DC X'83120064' LOADSYS @V305614 00402000
  432. BZ LSYSOK BRANCH IF LOAD IS OK @V305614 00403000
  433. SPACE 1 00404000
  434. NI DCSSFLAG,255-DCSSAVAL RESET AVAILABLE FLAG @V305614 00405000
  435. B CORINIT1 AND SKIP PURGESYS @V305614 00406000
  436. SPACE 1 00407000
  437. LSYSOK LA R2,PURGESYS INDICATE PURGESYS @V305066 00408000
  438. LA R1,CMSSEG POINT TO SYSNAMES ENTRY @V305614 00409000
  439. DC X'83120064' PURGESYS @V305614 00410000
  440. SPACE 1 00411000
  441. CORINIT1 EQU * @V305665 00412000
  442. SPACE 00413000
  443. LA R1,TODAY @V305032 00414000
  444. LA R2,TWENTY4 @V305066 00415000
  445. DC X'8312000C' TELL ME THE TIME @V305032 00416000
  446. STCK DOUBLE1 THEN GET TIME VIA "STCK" @V305032 00417000
  447. MVC DATIPCMS(8),TODAY SAVE TODAY'S DATE IN NUCON @V305032 00418000
  448. NC HOURS(8),=X'0F0F000F0F000F0F' @V305032 00419000
  449. SR R0,R0 CLEAR REGISTERS FOR IC USE @V305032 00420000
  450. SR R1,R1 ... @V305032 00421000
  451. SR R2,R2 ... @V305032 00422000
  452. IC R0,HOURS HOURS @V305032 00423000
  453. IC R1,HOURS+1 ... @V305032 00424000
  454. MH R0,TEN ... @V305032 00425000
  455. AR R0,R1 ... @V305032 00426000
  456. MH R0,SIXTY ... @V305032 00427000
  457. IC R1,MINUTES MINUTES @V305032 00428000
  458. IC R2,MINUTES+1 ... @V305032 00429000
  459. MH R1,TEN ... @V305032 00430000
  460. AR R1,R2 ... @V305032 00431000
  461. AR R0,R1 ADD HOURS*60 AND MINUTES @V305032 00432000
  462. MH R0,SIXTY ... @V305032 00433000
  463. IC R1,SECONDS SECONDS @V305032 00434000
  464. IC R2,SECONDS+1 ... @V305032 00435000
  465. MH R1,TEN ... @V305032 00436000
  466. AR R1,R2 SECONDS INTO R1 @V305032 00437000
  467. AR R1,R0 ADD MINUTES*60 AND HOURS*3600 @V305032 00438000
  468. S R1,=F'1' AVOID POSSIBLE ROUNDOFF ERROR @V305032 00439000
  469. BNM MULTMIL OK IF NOT MINUS @VM03031 00440000
  470. SR R1,R1 IF IT WAS 0000 HOURS, MAKE IT 0 @V305032 00441000
  471. MULTMIL M R0,=F'1000000' TIMES A MILLION, @VM03031 00442000
  472. SLDL R0,12 SHIFT - NOW IN 'STCK' FORM @V305032 00443000
  473. STM R0,R1,DOUBLE2 SAVE IT @V305032 00444000
  474. LM R0,R1,DOUBLE1 GET THE TIME FROM THE STCK @V305032 00445000
  475. SL R1,DOUBLE2+4 SUB. LOW PART OF ELAPSED TIME @V305032 00446000
  476. BC 2+1,SUBHIGH TRANSFER IF CC=2 OR 3 (CARRY) @VM03031 00447000
  477. BCTR R0,0 FOR CC=1, DECR. HIGH ORDER PART @V305032 00448000
  478. SUBHIGH SL R0,DOUBLE2 SUB. HIGH PART OF ELAPSED TIME @VM03031 00449000
  479. SRDL R0,12+1 SHIFT TO OBTAIN MICROSECONDS / 2 @V305032 00450000
  480. D R0,MICHOUR2 DIV. BY NO. MICROSEC IN HOUR / 2 @V305032 00451000
  481. * NOTE - THROW AWAY THE REMAINDER 00452000
  482. M R0,MICHOUR2 MULTIPLY QUOTIENT BY SAME NUMBER @V305032 00453000
  483. SLDL R0,12+1 SHIFT BACK AGAIN @V305032 00454000
  484. STM R0,R1,CLKVALMD SAVE PREVIOUS MIDNITE STCK VALUE @V305032 00455000
  485. SPACE 00456000
  486. * NOW INITIALIZE 'YYDDD' FIELD IN 'BGCOM' ... 00457000
  487. LA R2,NONLEAP ASSUME IT'S NOT LEAP YEAR @V305032 00458000
  488. PACK DOUBLE1(8),DATIPCMS+6(2) GET THE YEAR @V305032 00459000
  489. CVB R1,DOUBLE1 ... @V305032 00460000
  490. SR R0,R0 CLEAR, AND ... @V305032 00461000
  491. D R0,=F'4' DIVIDE BY 4 @V305032 00462000
  492. LTR R0,R0 CHECK THE REMAINDER @V305032 00463000
  493. BNZ GETMONTH NONZERO = NOT LEAP YEAR @V305032 00464000
  494. LA R2,LEAPYEAR WE GUESSED WRONG @V305032 00465000
  495. GETMONTH PACK DOUBLE1(8),DATIPCMS(2) GET THE MONTH @V305032 00466000
  496. CVB R1,DOUBLE1 ... @V305032 00467000
  497. BCTR R1,0 MINUS ONE PLEASE @V305032 00468000
  498. ALR R1,R1 TIMES 2 TO INDEX TABLE @V305032 00469000
  499. AR R2,R1 AND ADD TO TABLE ADDRESS @V305032 00470000
  500. PACK DOUBLE1(8),DATIPCMS+3(2) GET THE DAY @V305032 00471000
  501. CVB R1,DOUBLE1 (1 TO 31) @V305032 00472000
  502. AH R1,0(,R2) ADD MAGIC VALUE FROM TABLE @V305032 00473000
  503. CVD R1,DOUBLE1 TO DECIMAL PLEASE (1 TO 366) @V305032 00474000
  504. L R2,ABGCOM REFERENCE BGCOM @V305032 00475000
  505. USING BGCOM,R2 ... @V305032 00476000
  506. MVC MMDD(2),DATIPCMS GET CMSIPL MONTH @VA13783 00476300
  507. MVC MMDD+2(2),DATIPCMS+3 SET CMSIPL DAY @VA13783 00476600
  508. MVC YYDDD(2),DATIPCMS+6 MOVE IN THE YEAR, @V305032 00477000
  509. UNPK YYDDD+2(3),DOUBLE1+5(3) PUT IN THE 'DDD', @V305032 00478000
  510. OI YYDDD+4,SIGN AND FIX UP SIGN AS USUAL @V305066 00479000
  511. DROP R2 @V305032 00480000
  512. SPACE 00481000
  513. L R15,=A(INITSUB) @V305032 00482000
  514. ST R15,AUSRAREA SET BEGINNING OF USER AREA 00483000
  515. ST R15,MAINHIGH AND HIGH END OF MAIN STORAGE 00484000
  516. DMSFRES INIT2,TYPCALL=BALR SECOND DMSFRE INIT ROUTINE 00485000
  517. * DETERMINE DEVICE-TYPE FOR CONSOLE 00486000
  518. * 00487000
  519. L R1,=V(CONSOLE) @VM03203 00488000
  520. LH R13,0(,R1) GIVE CP THE CONS ADDR @VM03203 00489000
  521. DC X'83D10024' DIAG FOR CONSOLE CLASS @VM03203 00490000
  522. CLM R2,B'1000',GRAFCON TYPECLASS GRAPHICS? @VM03203 00491000
  523. BE GRAFTYP YES ... BR @VM03203 00492000
  524. CLM R2,B'1100',REMGRAF REMOTE DISPLAY TERMINAL ? @VM03203 00493000
  525. BE GRAFTYP YES ... BR @VA12109 00494000
  526. CLM R2,B'1000',CLASTERM REMOTE 3270? @VA12109 00494100
  527. BNE NOTGRAF NO ... BR @VA12109 00494200
  528. CLM R2,B'0100',TYP3275 REMOTE 3275? @VA12109 00494300
  529. BE GRAFTYP YES ... BR @VA12109 00494400
  530. CLM R2,B'0100',TYP3277 REMOTE 3277? @VA12109 00494500
  531. BNE NOTGRAF NO ... BR @VA12109 00494600
  532. GRAFTYP OI MISFLAGS,GRAFDEV SET GRAPHICS FLAG IN NUCON @VM03203 00495000
  533. OI OPTFLAGS,NOVMREAD YES, SET NO AUTO READ FLAG @VM08878 00496000
  534. L R13,AEXTSECT @VM08878 00497000
  535. USING EXTSECT,R13 @VM08878 00498000
  536. MVI TIMCHAR,0 NO BLIPS FOR TUBES @VM08878 00499000
  537. TM BATFLAGS,BATRUN IS THIS BATCH MACHINE? @VA04734 00500000
  538. BO SETTIME ENABLE TIMER FOR BATCH @VA04734 00501000
  539. B CVTINT NORMAL CONSOLE CCW @VM08878 00502000
  540. NOTGRAF OI MSGFLAGS,SPECLF USE SPECIAL LF IN CONS CCW @VM08878 00503000
  541. L R13,AEXTSECT @VM03203 00504000
  542. SETTIME EQU * @VA04734 00505000
  543. MVC TIMER(4),TIMINIT AND SET INTERVAL TIMER FOR BLIP@VM03203 00506000
  544. DROP R13 @VM03203 00507000
  545. EJECT 00508000
  546. CVTINT EQU * @VM03203 00509000
  547. * 00510000
  548. * INITIALIZE COMMUNICATION VECTOR TABLE (CVT) 00511000
  549. * 00512000
  550. USING CVTSECT,R14 00513000
  551. L R14,=V(CMSCVT) A(CVT) 00514000
  552. ST R14,ACMSCVT SETUP OS-LIKE CVT-POINTER P3116 00515000
  553. SH R14,=H'8' POINT TO PREFIX AREA P3116 00516000
  554. L R15,AUSRAREA GET BEGINNING OF USER STORAGE P3116 00517000
  555. ST R15,CVTNUCB SET A(LOWEST POINT NOT IN NUCLEUS) 00518000
  556. STIDP IPLPARMS STORE CPU ID @VA02548 00519000
  557. MVC CVTMDL(2),IPLPARMS+4 STORE MODEL NUMBER @VA02548 00520000
  558. MVC CVTMZ00(4),VMSIZE SET A(HIGHEST CORE LOCATION) 00521000
  559. MVC PGMNPSW(8),ACVTOK IF PROG-INT...SKIP 'OI' INST. V0207 00522000
  560. SXR F0,F0 ISSUE EXT-PREC. SUBTRACT... V0207 00523000
  561. OI CVTOPTA,CVTXPFP BIT MEANS WE HAVE EXT-PREC HRDWRE V0207 00524000
  562. CVTOK MVC PGMNPSW(8),APRG RESTORE REGULAR PGM-INT NEW PSW V0207 00525000
  563. DROP R14 00526000
  564. LA R14,SYSREF GET ADDRESS OF SYSREF 00527000
  565. ST R14,ASYSREF SET INTO PERM CORE LOCATION 00528000
  566. OI PROTFLAG,PRFTSYS SET TRANSIENT-SYSTEM FLAG-BIT @V305032 00529000
  567. * TO MATCH "ACCESS" CMD IN TRANSIENT AREA. 00530000
  568. LA R5,1 ASSUME NO FIRST COMMAND TO WORRY ABOUT 00531000
  569. B CKDDISK VERIFY DISKS EXISTANCE V0254 00532000
  570. TSTDISK SR R3,R3 CLEAR COMMAND COUNT REGISTER V0254 00533000
  571. TM INSFLAG,ACCY WAS A YDISK REQUIRED? 00534000
  572. BNO TESTA NO. GO HANDLE THE ADISK. 00535000
  573. LA R1,YPLIST ACCESS THE YDISK. 00536000
  574. SVC 202 ... 00537000
  575. DC AL4(*+4) ERROR CONDITION IS IMMATERIAL 00538000
  576. SPACE 1 HRC371DS 00539000
  577. TESTA DS 0H HRC371DS 00539010
  578. * Now we load GCCLIB and REXX into memory, establishing them HRC371DS 00539020
  579. * as nucleus extensions. But RESLIB will first load GCCLIB HRC371DS 00539030
  580. * into the user area, overlaying us (DMSINS). So we change HRC371DS 00539040
  581. * the user area pointer in NUCON so that it does not overlay HRC371DS 00539050
  582. * us. Yes, this is a kludge! I apologize profusely. HRC371DS 00539060
  583. * MVC MAINHIGH(4),OUTOFWAY HRC371DS 00539070
  584. * LA R1,GLOBALTX "GLOBAL TXTLIB GCCLIB" HRC371DS 00539080
  585. * SVC 202 HRC371DS 00539090
  586. * DC AL4(BADGLOB) error address HRC371DS 00539100
  587. * MVC MAINHIGH(4),OUTOFWAY HRC371DS 00539110
  588. * LA R1,RESLOAD "RESLIB LOAD GCCLIB" HRC371DS 00539120
  589. * SVC 202 HRC371DS 00539130
  590. * DC AL4(BADGCC) error address HRC371DS 00539140
  591. * ST R1,DOSTRANS store GCC runtime addr here HRC371DS 00539150
  592. * MVC MAINHIGH(4),OUTOFWAY HRC371DS 00539160
  593. * MVC RESWHO(8),REXXNAME HRC371DS 00539170
  594. * LA R1,RESLOAD "RESLIB LOAD DMSREX" HRC371DS 00539180
  595. * SVC 202 HRC371DS 00539190
  596. * DC AL4(BADREXX) error address HRC371DS 00539200
  597. * MVC MAINHIGH(4),REALUSER restore user area address HRC371DS 00539210
  598. * B THATSALL HRC371DS 00539220
  599. BADGCC DS 0H HRC371DS 00539230
  600. * MVC MAINHIGH(4),REALUSER restore user area address HRC371DS 00539240
  601. * DMSERR TEXT='GCC runtime not available',NUM=098,LET=W HRC371DS 00539250
  602. * B THATSALL HRC371DS 00539260
  603. BADGLOB DS 0H HRC371DS 00539270
  604. * DMSERR TEXT='GCCLIB TXTLIB not found',NUM=098,LET=W HRC371DS 00539280
  605. * B THATSALL HRC371DS 00539290
  606. BADREXX DS 0H HRC371DS 00539300
  607. * MVC MAINHIGH(4),REALUSER restore user area address HRC371DS 00539310
  608. * DMSERR TEXT='REXX executor not available',NUM=098,LET=W C371DS 00539320
  609. THATSALL DS 0H HRC371DS 00539330
  610. SPACE 1 HRC371DS 00539340
  611. SR R0,R0 INITIALIZE FIRST COMMAND INDICATOR 00539350
  612. TM INSFLAG,GOTFIRST WAS THERE A FIRST COMMAND? 00540000
  613. BNO POINTA NO. WE'RE ALL SET THEN. 00541000
  614. LA R0,CMNDLIST PICK UP THE SCANNED LINE POINTER 00542000
  615. POINTA LA R1,APLIST POINT TO THE ADISK PLIST 00543000
  616. SVC 202 ... 00544000
  617. DC AL4(*+4) ERROR CONDITION IS IMMATERIAL 00545000
  618. STM R0,R3,REGSAV SAVE AROUND SVT LOAD @V305614 00546000
  619. SPACE 1 00547000
  620. * IF NO CMSSEG IS AVAILABLE LOAD DMSSVT TEXT INTO FREE 00548000
  621. * STORAGE. 00549000
  622. TM DCSSFLAG,DCSSAVAL CMSSEG TO BE USED ? @V305614 00550000
  623. BO SKLOAD YES, SKIP THE FOLLOWING @V305614 00551000
  624. L R14,ASYSNAMS POINT TO SYSNAMES TABLE @VA04293 00552000
  625. USING SYSNAMES,R14 ..... @VA04293 00553000
  626. DMSERR NUM=100,LET=W,SUB=(CHARA,(R14)),TEXT='CMSSEG system namX00554000
  627. e ''........'' not available' @VA04293 00555000
  628. LA R1,SVTST POINT TO SVT STATE PLIST @V305614 00556000
  629. L R15,ASTATE SEE IF DMSSVT TEXT EXISTS @V305614 00557000
  630. BALR R14,R15 ..... @V305614 00558000
  631. BNZ SKLOAD BR, IF NO OS SVC ALLOWED @V305614 00559000
  632. SPACE 1 00560000
  633. L R1,DUMMYAD TRY TO LOAD OS SIM. ABOVE US @VA05055 00561000
  634. BAL R10,LOADSUB USE LOAD SUB ROUTINE... @VA05055 00562000
  635. L R3,LOCCNT SEE HOW HIGH WE LOADED @VA05055 00563000
  636. L R2,DUMMYAD AND SUBTRACT ORIGIN... @VA05055 00564000
  637. SR R3,R2 ... @VA05055 00565000
  638. LA R3,SEVEN(,R3) GET UP TO NEXT DWORD @VA05055 00566000
  639. SRL R3,DIV8 CONVERT TO DWORDS @VA05055 00567000
  640. LR R0,R3 FOR DMSFREE'S SAKE... @VA05055 00568000
  641. DMSFREE DWORDS=(0),TYPCALL=BALR,AREA=HIGH,TYPE=NUCLEUS 00569000
  642. LTR R15,R15 REQUEST GRANTED? @VA05055 00570000
  643. BNZ SKLOAD IF NOT, DROP THRU @VA05055 00571000
  644. SPACE 1 00572000
  645. ST R0,OSMODLDW SAVE OS SIM.'S SIZE (DWORDS) @VA05055 00573000
  646. ST R1,AOSMODL SAVE ADDRESS OF DMSSVT TEXT @V305614 00574000
  647. LR R2,R1 SET ORIGIN (R3 HAS THE SIZE), @VM03029 00575000
  648. SR R15,R15 MAKE SURE R15=0 (R14 IMMATERIAL) @VM03029 00576000
  649. MVCL R2,R14 CLEAR AREA TO BE LOADED @VM03029 00577000
  650. LA R10,FINALOAD TO DROP THRU AT END OF LOAD @VA05055 00578000
  651. LOADSUB EQU * ENTER HERE FOR LOADING... @VA05055 00579000
  652. LR R2,R1 NOW SET ORIGIN AGAIN; @VM03029 00580000
  653. LA R14,MAXORG MAX ORIGIN LENGTH @VM03029 00581000
  654. LA R1,LOADSTRT+7 POINT TO ORIGIN FIELD @V305614 00582000
  655. SPACE 1 00583000
  656. HALFBYTE SRDL R2,FOURBITS MOVE HALF BYTE TO R3 @V305614 00584000
  657. SRL R3,RESTWORD MOVE TO LOW BYTE @V305614 00585000
  658. STC R3,0(,R1) STORE FULL BYTE IN PLIST @V305614 00586000
  659. BCTR R1,0 BET LOWER BYTE ADDRESS @V305614 00587000
  660. BCT R14,HALFBYTE AND LOOP @V305614 00588000
  661. SPACE 1 00589000
  662. TR LOADSTRT,HEXTBL TRANSLATE TO EBCDIC @V305614 00590000
  663. LA R1,LDPLIST POINT TO PLIST @V305614 00591000
  664. STM R0,R15,RGPRS SAVE REGISTERS @V305614 00592000
  665. OI MODFLGS,SYSLOAD ALLOW LOAD ABOVE FREELOWE @VA04666 00593000
  666. L R15,=V(DMSLOA) GET ADDRESS OF LOADER @V305614 00594000
  667. BALR R14,R15 AND LOAD DMSSVT @V305614 00595000
  668. NI MODFLGS,255-SYSLOAD RESET LOADER FLAG @VA04666 00596000
  669. LTR R15,R15 TEST FOR VALID LOAD @V305614 00597000
  670. L R12,AUSRAREA RESTORE OUR ADDRESSABILITY @V305614 00598000
  671. LM R0,R15,RGPRS RESTORE REGISTERS @V305614 00599000
  672. BNZ SKLOAD ISSUE MESSAGE LATER @VM03024 00600000
  673. BR R10 RETURN TO CALLER (OR DROP) @VA05055 00601000
  674. FINALOAD EQU * HERE WHEN FINAL LOAD DONE @VA05055 00602000
  675. OI DCSSFLAG,DCSSVTLD RUN UP THE FLAG @V305614 00603000
  676. SPACE 1 00604000
  677. SKLOAD LM R0,R3,REGSAV RESTORE REGISTERS @V305614 00605000
  678. TM BATFLAGS,BATRUN BATCH RUNNING ? @V305614 00606000
  679. BO TESTD IF SO, NO PROFILE PLEASE @V305614 00607000
  680. LTR R0,R0 IS THERE A FIRST COMMAND? 00608000
  681. BZ CKPROF NO. MAYBE THERE IS A PROFILE. 00609000
  682. LR R0,R1 BETTER SAVE THIS INDICATOR FOR LATER 00610000
  683. LA R1,ATTN1 POINT TO STACK PLIST 00611000
  684. L R2,CMNDINFO POINT TO THE SCANNED LINE 00612000
  685. ST R2,STCKINFO FOR ATTN 00613000
  686. SVC 202 STACK IT 00614000
  687. SR R5,R5 SIGNAL THAT THERE IS A USER FIRST COMMAND 00615000
  688. LA R3,1(,R3) UP THE COMMAND-COUNT 00616000
  689. LR R1,R0 WE CAN REMEMBER NOW 00617000
  690. CKPROF LTR R1,R1 DID ACCESS FIND A PROFILE? 00618000
  691. BNM TESTD APPARENTLY NOT 00619000
  692. LA R1,ATTN1 POINT TO THE STACK PLIST 00620000
  693. L R2,PROFINFO POINT TO PROFILE COMMAND 00621000
  694. ST R2,STCKINFO IN ATTN PLIST 00622000
  695. SVC 202 STACK IT 00623000
  696. LA R3,1(,R3) UP THE COMMAND-COUNT 00624000
  697. SPACE 1 HRC371DS 00624050
  698. * If SYSPROF EXEC S exists, stack a line to execute it. HRC371DS 00624100
  699. FSSTATE 'SYSPROF EXEC S' HRC371DS 00624150
  700. LTR R15,R15 HRC371DS 00624200
  701. BNZ TESTD no SYSPROF EXEC found HRC371DS 00624250
  702. LA R1,ATTN1 point to the stack plist HRC371DS 00624300
  703. L R2,SYSPINFO point to "EXEC SYSPROF" command HRC371DS 00624350
  704. ST R2,STCKINFO put it in ATTN plist HRC371DS 00624400
  705. SVC 202 stack "EXEC SYSPROF" lifo HRC371DS 00624450
  706. LA R3,1(,R3) up the command-count HRC371DS 00624500
  707. TESTD TM MISFLAGS,X'04' WAS NODISK SPECIFIED ? V0743 00625000
  708. BO ENTERSYS YES..BR V0743 00626000
  709. LA R2,5 MAX LGTH OF COMPARE @VA01116 00627000
  710. CKACCD EX R2,COMPACC IS THE FIRST CMD ACCESS ? @VA01116 00628000
  711. BE ISIT YES...BR @VA01116 00629000
  712. BCT R2,CKACCD MAYBE AN ABBREVIATION @VA01116 00630000
  713. B ACCDDSK NO...BR @VA01116 00631000
  714. SPACE 1 00632000
  715. COMPACC CLC CMNDLIST(1),=C'ACCESS' @VA01116 00633000
  716. SPACE 1 00634000
  717. USING NUCON,R2 THIS ELIMINATES AN LA INSTR. @VA01116 00635000
  718. ISIT CLI CMNDLIST+1,C' ' MUST BE BLANK AFTER VALID ABBREV@VA01116 00636000
  719. DROP R2 @VA01116 00637000
  720. USING NUCON,0 @VA01116 00638000
  721. BNE ACCDDSK BR IF NOT ACCESS CMD ABBREV. @VA01116 00639000
  722. CLC CMNDLIST+8(3),=C'192' ACCESS 192 ? @VA01116 00640000
  723. BE REMOVED BRANCH IF YES, NO AUTO D ACC @VA04755 00641000
  724. CLC CMNDLIST+8(3),DEV191 ACCESS 191? @VA05919 00642000
  725. BNE DACCESS NO, CHECK FOR DDISK @VA05919 00643000
  726. CLC CMNDLIST+16(1),DSKA ACCESS ADISK? @VA05919 00644000
  727. BE DACCESS YES, CHECK FOR DDISK @VA05919 00645000
  728. L R2,=V(ADISK) IF FIRST COMMAND WAS AC 191 BUT @VA05919 00646000
  729. XC 0(4,R2),0(R2) NOT A, DELETE DEFAULT ENTRY @VA05919 00647000
  730. * FROM DEVTAB 00648000
  731. DACCESS EQU * @VA05919 00649000
  732. CLC CMNDLIST+16(1),DSKD WAS DDISK ACCESSED? @VA05919 00650000
  733. BE BATSTACK YES, BYPASS AUTO FORMAT AND AUTO @VA05919 00651000
  734. * ACCESS 00652000
  735. ACCDDSK DS 0H @VA01116 00653000
  736. TM INSFLAG,ACCD WAS 192 FORMATTED? @VA05919 00654000
  737. BNO TESTFORM NOT READY FOR ACCESS @VA05919 00655000
  738. LA R1,DPLIST POINT TO 'ACCESS D' 00656000
  739. SVC 202 ... 00657000
  740. DC AL4(*+4) ERROR CONDITION IS IMMATERIAL 00658000
  741. B BATSTACK GO TO THE GOTO V0742 00659000
  742. TESTFORM TM INSFLAG,FORMD WAS THE DDISK UNFORMATTED? 00660000
  743. BNO BATSTACK ALMOST DONE IF NOT V0742 00661000
  744. LA R1,ATTN1 POINT TO STACK PLIST 00662000
  745. L R2,DINFO GET ADDRESS OF INFO 00663000
  746. ST R2,STCKINFO INTO THE ATTN PLIST 00664000
  747. SVC 202 ... 00665000
  748. LA R3,1(,R3) UP THE COMMAND COUNT 00666000
  749. B BATSTACK @VA04755 00667000
  750. REMOVED EQU * @VA04755 00668000
  751. CLI CMNDLIST+16,C'D' IS THIS THE 'D' DISK? @VA04755 00669000
  752. BE BATSTACK BRANCH IF YES @VA04755 00670000
  753. L R11,=V(DDISK) GET DEVTAB ENTRY ADDRESS @VA04755 00671000
  754. EX R0,REMOVE REMOVE ADDRESS FROM DEVTAB @VA04755 00672000
  755. BATSTACK EQU * STACK THE 'BATCH' COMMAND V0742 00673000
  756. TM BATFLAGS,BATRUN BATCH IPL? V0742 00674000
  757. BZ ENTERSYS IF NOT, PROCEED AS USUAL V0742 00675000
  758. L R2,BATINFO V0742 00676000
  759. ST R2,STCKINFO PROVIDE COMMAND LINE AND... V0742 00677000
  760. LA R1,ATTN1 V0742 00678000
  761. SVC 202 STACK 'BATCH' REQUEST V0742 00679000
  762. SR R5,R5 SIGNAL USER COMMAND FOR DMSINT V0742 00680000
  763. LA R3,1(,R3) COMMAND COUNT FOR DMSINT V0742 00681000
  764. ENTERSYS TM DCSSFLAG,DCSSAVAL+DCSSVTLD OS SIMULATION OK ? @VM03024 00682000
  765. BNZ OSOK YES, BRANCH @VM03024 00683000
  766. DMSERR TEXT='CMS OS simulation not available',NUM=098,LET=W 00684000
  767. ICM R1,ALL,AOSMODL GET OS SIMUL. ADDR @VA05055 00685000
  768. BZ OSOK NOT THERE, DON'T FRET... @VA05055 00686000
  769. L R0,OSMODLDW GET OS SIM LENGTH(DWORDS) @VA05055 00687000
  770. DMSFRET DWORDS=(0),LOC=(1) @VA05055 00688000
  771. SR R1,R1 @VA05055 00689000
  772. ST R1,AOSMODL CLEAR OS SIM ADD @VA05055 00690000
  773. OSOK LM R10,R12,JREGS RESTORE REGISTERS FOR DMSINT @VM03024 00691000
  774. BR R12 BRANCH TO 'INITENTR'. 00692000
  775. EJECT 00693000
  776. H4096 DC H'4096' PAGE SIZE AS HALFWORD @V305001 00694000
  777. F8192 DC A(8192) STANDARD LOADER TABLE ALLOC. @V305001 00695000
  778. MINSIZE DC A(393216) MINIMUM CMS MACHINE SIZE @V305001 00696000
  779. FOURMEG DC A(4194304) 4 megabyte machine size HRC371DS 00696100
  780. K256 DC A(262144) 64 pages (256K) loader tbl alloc HRC371DS 00696200
  781. DS 0F 00697000
  782. APRG EQU * 00698000
  783. DC H'4,0' 00699000
  784. DC V(PRGINT) 00700000
  785. ACVTOK DC X'00040000',A(CVTOK) (FOR COMPUTING EXT-PREC.) V0207 00701000
  786. CVTXPFP EQU X'01' (EXT-PREC. BIT IN CVTOPTA)V0207 00702000
  787. * 00703000
  788. JREGS DC V(OPSECT) R10 00704000
  789. DC V(FVS) R11 00705000
  790. DC V(INIT) R12 00706000
  791. * 00707000
  792. DS 0D V0218 00708000
  793. NIOPSW DC AL2(MCKM,0),V(IOINT) V0218 00709000
  794. WAKEPSW DC AL1(0,MCKM,0,0),A(WAKEHERE) V0218 00710000
  795. WAITPSW DC AL1(CHAN0,MCKM+WAIT,0,0),A(WAKEHERE) V0218 00711000
  796. * 00712000
  797. STARTMSG DC CL8'TYPLIN' 00713000
  798. DC A(SYSTEMID-NUCON) 00714000
  799. DC C'B' 00715000
  800. DC AL3(32) 32 BYTES 00716000
  801. * 00717000
  802. * CCW-STRING TO READ IN RECORD 3 FROM T-DISK (IF FEASIBLE) ... 00718000
  803. LABCCWS CCW X'07',BIN0,CC,6 SEEK 00719000
  804. CCW X'31',CYL0,CC,5 SEARCH 00720000
  805. CCW X'08',*-8,0,1 TIC BACK TO SEARCH 00721000
  806. CCW X'06',LABELR,CC+SILI,16 READ 16 BYTES 00722000
  807. CCW X'03',0,SILI,1 NO-OP. 00723000
  808. * 00724000
  809. BIN0 DC H'0000' 00725000
  810. CYL0 DC H'0000' 00726000
  811. HEAD0 DC H'0000' 00727000
  812. REC3 DC X'03' 00728000
  813. * 00729000
  814. LABELR DC 2D'0' FIRST 16 BYTES OF RECORD 3 ARE READ IN HERE 00730000
  815. DUMTDISK DC C'CMS=' ALL CMS LABELS START THIS WAY P3119 00731000
  816. MTDSK EQU X'40' P3119 00732000
  817. * 00733000
  818. READFSTL DS 0F PLIST TO ACCESS ALL S2 FILES FROM S-DISK: @VM03029 00734000
  819. DC CL8'READFST' 00735000
  820. DC CL8'*' 00736000
  821. DC CL8'*' 00737000
  822. DC CL8'S2' @VM03029 00738000
  823. DC 8X'FF' 00739000
  824. * 00740000
  825. LDPLIST DS 0F PLIST TO LOAD DMSSVT & FRIENDS @VM03154 00741000
  826. DC CL8'LOAD' IN GOOD ORDER FOR PAGING PLEASE: @VM03154 00742000
  827. DC CL8'DMSSVT' @VM03154 00743000
  828. DC CL8'DMSSVN' @VM03154 00744000
  829. DC CL8'DMSSMN' @VM03154 00745000
  830. DC CL8'DMSSLN' @VM03154 00746000
  831. DC CL8'DMSLGT' @VM03154 00747000
  832. DC CL8'DMSOLD' @VM03154 00748000
  833. DC CL8'DMSLSB' @VM03154 00749000
  834. DC CL8'DMSLIB' @VM03154 00750000
  835. DC CL8'DMSLSY' @VM03154 00751000
  836. DC CL8'DMSSOP' @VM03154 00752000
  837. DC CL8'DMSSQS' @VM03154 00753000
  838. DC CL8'DMSSCT' @VM03154 00754000
  839. DC CL8'DMSSBS' @VM03154 00755000
  840. DC CL8'DMSSEB' @VM03154 00756000
  841. DC CL8'DMSSBD' @VM03154 00757000
  842. DC CL8'DMSSAB' @VM03154 00758000
  843. DC CL8'(' @VM03154 00759000
  844. DC CL8'NOMAP' @VM03154 00760000
  845. DC CL8'ORIGIN' @VM03154 00761000
  846. LOADSTRT DC CL8'0' @VM03154 00762000
  847. DC 8X'FF' @VM03154 00763000
  848. * 00764000
  849. SVTST DS 0F PLIST FOR DMSSVT STATE @V305614 00765000
  850. DC CL8'STATE' @V305614 00766000
  851. DC CL8'DMSSVT' @V305614 00767000
  852. DC CL8'TEXT' @V305614 00768000
  853. DC CL2'*' @V305614 00769000
  854. DC 6X'00' @V305614 00770000
  855. DC 8X'FF' @V305614 00771000
  856. * 00772000
  857. HEXTBL DC C'0123456789ABCDEF' 00773000
  858. * 00774000
  859. DUMMYAD DC A(X'22000') LOAD OS SIM HERE FIRST ... @VA05055 00775000
  860. * TO COMPUTE FREE STORAGE SIZE 00776000
  861. WORKAREA DC D'0' 00777000
  862. * 00778000
  863. CLKCCW CCW 0,CURRDATE-NUCON,0,24 CHRONO READ CCW 00779000
  864. * 00780000
  865. APLIST DC CL8'ACCESS' 00781000
  866. DC X'FEFFFFFF' 00782000
  867. SPACE 1 00783000
  868. BATCHA DC CL8'195' V0742 00784000
  869. DC CL8'A' V0742 00785000
  870. DC CL8'(' V0742 00786000
  871. DC CL8'ERASE' V0742 00787000
  872. DC 8X'FF' V0742 00788000
  873. * 00789000
  874. DPLIST DC CL8'ACCESS' 00790000
  875. DC CL8'192' 00791000
  876. DC CL8'D' 00792000
  877. DC X'FFFFFFFF' 00793000
  878. * 00794000
  879. DPLIST1 DC CL8'FORMAT' 00795000
  880. DC X'FEFFFFFF' 00796000
  881. * 00797000
  882. DINFO DC AL1(*-DPLIST1) 00798000
  883. DC AL3(DPLIST1) 00799000
  884. * 00800000
  885. PROFLIST DC CL8'EXEC' 00801000
  886. DC CL8'PROFILE' 00802000
  887. DC X'FFFFFFFF' 00803000
  888. * 00804000
  889. PROFINFO DC AL1(*-PROFLIST) 00805000
  890. DC AL3(PROFLIST) 00806000
  891. * 00807000
  892. BATLIST DC CL8'CMSBATCH' V0742 00808000
  893. DC 8X'FF' V0742 00809000
  894. * 00810000
  895. BATINFO DC AL1(*-BATLIST) V0742 00811000
  896. DC AL3(BATLIST) V0742 00812000
  897. * 00813000
  898. YPLIST DC CL8'ACCESS' 00814000
  899. DC CL8'192' 00815000
  900. DC CL8'Y/S' 00816000
  901. DC CL8'*' 00817000
  902. DC CL8'*' 00818000
  903. DC CL8'Y2' 00819000
  904. BIGTIME DC X'FFFFFFFF' 00820000
  905. * HRC371DS 00820020
  906. SYSPROF DC CL8'EXEC' plist for EXEC SYSPROF HRC371DS 00820030
  907. DC CL8'SYSPROF' HRC371DS 00820040
  908. DC 8X'FF' HRC371DS 00820050
  909. SYSPINFO DC AL1(*-SYSPROF) HRC371DS 00820060
  910. DC AL3(SYSPROF) plist to load GCCLIB runtime HRC371DS 00820070
  911. RESLOAD DC CL8'RESLIB' HRC371DS 00820080
  912. DC CL8'LOAD' HRC371DS 00820090
  913. RESWHO DC CL8'GCCLIB' HRC371DS 00820100
  914. DC CL8'(' HRC371DS 00820110
  915. DC CL8'PERM' HRC371DS 00820120
  916. DC 8X'FF' HRC371DS 00820130
  917. GLOBALTX DC CL8'GLOBAL' plist to access GCCLIB TXTLIB HRC371DS 00820140
  918. DC CL8'TXTLIB' HRC371DS 00820150
  919. DC CL8'GCCLIB' HRC371DS 00820160
  920. DC 8X'FF' HRC371DS 00820170
  921. REXXNAME DC CL8'DMSREX' HRC371DS 00820180
  922. OUTOFWAY DC AL4(139264) relocate user area to x22000 HRC371DS 00820190
  923. REALUSER DC AL4(131072) real user area is at x20000 HRC371DS 00820200
  924. * 00821000
  925. ATTN1 DC CL8'ATTN' 00822000
  926. DC CL4'LIFO' 00823000
  927. STCKINFO DC AL1(16) 00824000
  928. DC AL3(DPLIST1) 00825000
  929. * 00826000
  930. CMNDINFO DC AL1(130) 00827000
  931. DC AL3(CMNDLINE-NUCON) 00828000
  932. * 00829000
  933. * THE FOLLOWING 5 MUST BE KEPT IN ORDER (USED VIA 'LM) .. 00830000
  934. FREEADS DC V(NUCEND) R7 00831000
  935. DC A(ENDSYS) R8 00832000
  936. DC F'1' R9 00833000
  937. ZERO DC F'0' R10 00834000
  938. DC A(X'40000'-ENDSYS) R11 00835000
  939. * 00836000
  940. IPLPARMS DC D'0' KEEP CP IPL PARMS HERE V0742 00837000
  941. DC 7D'0' ADDITIONAL PARMS @VA12042 00838000
  942. FENCE EQU X'FF' 00839000
  943. DMODE EQU 24 MODE IS 24 BYTES FROM BEGINNING 00840000
  944. EIGHT EQU 8 @V305665 00841000
  945. DIV8 EQU 3 @V305614 00842000
  946. MAXORG EQU 8 @V305614 00843000
  947. FOURBITS EQU 4 @V305614 00844000
  948. RESTWORD EQU 28 @V305614 00845000
  949. TWENTY4 EQU 24 @V305066 00846000
  950. SIGN EQU X'F0' @V305066 00847000
  951. BIN1000 EQU B'1000' @V305066 00848000
  952. PARMLEN EQU 30 @V305066 00849000
  953. KEYLEN EQU 5 @V305066 00850000
  954. FINDSYS EQU 12 @V305066 00851000
  955. PURGESYS EQU 8 @V305066 00852000
  956. SEVEN EQU 7 @VA05055 00853000
  957. ALL EQU 15 @VA05055 00854000
  958. * 00855000
  959. RGPRS DC 16F'0' REGISTER SAVE AREA @V305614 00856000
  960. REGSAV DC 4F'0' .. AND ANOTHER @V305614 00857000
  961. DCSSCLR EQU 0 @V305614 00858000
  962. SY DC C'SY' 00859000
  963. * 00860000
  964. MDASD DC X'04' 00861000
  965. * 00862000
  966. DS 0F @V305665 00863000
  967. SEG DC C'SEG=' @V305665 00864000
  968. BATCH DC C'BATC' @V305614 00865000
  969. BATH DC C'H' @V305614 00866000
  970. BLANK EQU C' ' @V305665 00867000
  971. INSFLAG DC X'00' 00868000
  972. DEV191 DC C'191' DEVICE 191 @VA05919 00869000
  973. DSKA DC C'A' A-DISK @VA05919 00870000
  974. DSKD DC C'D' D-DISK @VA05919 00871000
  975. * 00872000
  976. ACCD EQU X'80' 00873000
  977. FORMD EQU X'40' 00874000
  978. ACCY EQU X'20' 00875000
  979. ACCA EQU X'10' 00876000
  980. GOTFIRST EQU X'08' 00877000
  981. TDSK EQU X'04' P3119 00878000
  982. GRAFCON DC X'40' @VM08878 00879000
  983. REMGRAF DC X'8080' @V2D3914 00880000
  984. TYP3275 DC X'02' @VA12109 00880020
  985. TYP3277 DC X'04' @VA12109 00880040
  986. CLASTERM DC X'80' @VA12109 00880060
  987. AUTOPRM DC C'AUTOCR' @V60C6BE 00880100
  988. INSFLAG2 DC X'00' A NEW FLAG BYTE @V60C6BE 00880200
  989. AUTOCR EQU X'80' AUTOCR SPECIFIED AS PARM @V60C6BE 00880300
  990. SPACE 00881000
  991. TODAY DC 4D'0' @V305032 00882000
  992. HOURS EQU TODAY+8 @V305032 00883000
  993. MINUTES EQU TODAY+11 @V305032 00884000
  994. SECONDS EQU TODAY+14 @V305032 00885000
  995. DOUBLE1 DC D'0' @V305032 00886000
  996. DOUBLE2 DC D'0' @V305032 00887000
  997. MICHOUR2 DC F'1800000000' NO. MICROSEC IN ONE HOUR / 2 @V305032 00888000
  998. TEN DC H'10' @V305032 00889000
  999. SIXTY DC H'60' @V305032 00890000
  1000. NONLEAP DC AL2(0,31,59,90,120,151,181,212,243,273,304,334) @V305032 00891000
  1001. LEAPYEAR DC AL2(0,31,60,91,121,152,182,213,244,274,305,335) @V305032 00892000
  1002. SPACE 00893000
  1003. LTORG @V305032 00894000
  1004. ENDSYS DS 0D FREE STORAGE CAN START RIGHT HERE. 00895000
  1005. ENTRY DMSINSE 00896000
  1006. DMSINSE EQU * 00897000
  1007. EJECT 00898000
  1008. EQUATES 00899000
  1009. REGEQU 00900000
  1010. NUCON 00901000
  1011. BGCOM , @V305032 00902000
  1012. SYSNAMES @V305665 00903000
  1013. IO 00904000
  1014. ADT 00905000
  1015. CMSCVT 00906000
  1016. EXTSECT @VM08878 00907000
  1017. END 00908000