Table of Contents

DMSMOD Source

References

Source Listing

DMSMOD.ASSEMBLE.txt
  1. MOD TITLE 'DMSMOD (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * 00004000
  5. * 00005000
  6. * 00006000
  7. * MODULE NAME 00007000
  8. * 00008000
  9. * DMSMOD 00009000
  10. * 00010000
  11. * FUNCTION 00011000
  12. * 00012000
  13. * GENMOD. TO CREATE A FILE WHICH IS A CORE IMAGE COPY 00013000
  14. * OF LOADED OBJECT CODE 00014000
  15. * LOADMOD. LOAD A FILE WHICH IS IN CORE IMAGE FORM. 00015000
  16. * 00016000
  17. * ATTRIBUTES 00017000
  18. * 00018000
  19. * NUCLEUS RESIDENT, REENTRANT 00019000
  20. * 00020000
  21. * ENTRY POINTS 00021000
  22. * 00022000
  23. * DMSMOD - FOR BOTH GENMOD AND LOADMOD COMMANDS 00023000
  24. * 00024000
  25. * ENTRY CONDITIONS 00025000
  26. * 00026000
  27. * GPR1 - A(PLIST) 00027000
  28. * GPR15- A(DMSMOD) 00028000
  29. * 00029000
  30. * PLIST- CL8'GENMOD' 00030000
  31. * CL8'FILENAME' 00031000
  32. * <CL8'MODULE'> 00032000
  33. * <CL8'FILEMODE'> 00033000
  34. * <CL8'('> 00034000
  35. * <CL8'OPTION'> FOR EACH OPTION 00035000
  36. * OPTIONS- 00036000
  37. * MAP/NOMAP 00037000
  38. * NOSTR/STR 00038000
  39. * FROM ENTRY 00039000
  40. * TO ENTRY 00040000
  41. * XL8'FF' 00041000
  42. * 00042000
  43. * OR 00043000
  44. * 00044000
  45. * CL8'LOADMOD' 00045000
  46. * CL8'FILENAME' 00046000
  47. * <CL8'MODULE'> 00047000
  48. * <CL8'FILEMODE'> 00048000
  49. * XL8'FF' 00049000
  50. * 00050000
  51. * EXIT CONDITIONS 00051000
  52. * 00052000
  53. * GENMOD- 00053000
  54. * 00054000
  55. * NORMAL GPR15=0 00055000
  56. * ERROR GPR15=ERROR CODE 00056000
  57. * 00057000
  58. * ERROR MESSAGES RC 00058000
  59. * 00059000
  60. * 003E INVALID OPTION 24 00060000
  61. * 005E NO (FROM|TO) ENTRY SPECIFIED 24 00061000
  62. * 021E ENTRY POINT NOT FOUND 40 00062000
  63. * 032E INVALID FILETYPE 24 00063000
  64. * 037E DISK 'MODE' IS READ/ONLY 36 00064000
  65. * 040E NO FILES LOADED 40 00065000
  66. * 070E INVALID PARAMETER 24 00066000
  67. * 084E INVALID OPTION USE 24 00067000
  68. * 105S ERROR WRITING FILE ON DISK 100 00068000
  69. * 00069000
  70. * LOADMOD- 00070000
  71. * 00071000
  72. * NORMAL GPR15=0 00072000
  73. * ERROR GPR15=ERROR CODE 00073000
  74. * 00074000
  75. * ERROR MESSAGES RC 00075000
  76. * 00076000
  77. * 001E NO FILENAME SPECIFIED 24 00077000
  78. * 002E FILE NOT FOUND 28 00078000
  79. * 032E INVALID FILETYPE 24 00079000
  80. * 070E INVALID PARAMETER 24 00080000
  81. * 104S ERROR READING FILE ON DISK 100 00081000
  82. * 109S VIRTUAL STORAGE CAPACITY EXCEEDED 104 00082000
  83. * 114E NOT LOADED, DOS/OS MISMATCH 40 00083000
  84. * 116S LOADER TABLE OVERFLOW 104 00084000
  85. * 00085000
  86. * CALLS TO OTHER ROUTINES 00086000
  87. * 00087000
  88. * DMSERS 00088000
  89. * DMSBWR 00089000
  90. * DMSFNS 00090000
  91. * DMSFREB 00091000
  92. * DMSSMNSB 00092000
  93. * DMSERR 00093000
  94. * DMSSTT 00094000
  95. * DMSBRD 00095000
  96. * 00096000
  97. * EXTERNAL REFERENCES 00097000
  98. * 00098000
  99. * FVS 00099000
  100. * 00100000
  101. * TABLES/WORKAREAS 00101000
  102. * 00102000
  103. * PSA - USED FOR DISK PLIST 00103000
  104. * 00104000
  105. * REGISTER USAGE 00105000
  106. * 00106000
  107. * GPR10 - FVS 00107000
  108. * GPR13 - PSA 00108000
  109. * GPR12 - BASE 00109000
  110. * REST - WORK 00110000
  111. * 00111000
  112. * OPERATION 00112000
  113. * 00113000
  114. * GENMOD- 00114000
  115. * 00115000
  116. * GENMOD ISSUES THE START (NO) COMMAND TO FINISH LOADING OF 00116000
  117. * OBJECT PROGRAMS. NEXT ERASE THE OLD MODULE IF IT EXISTS. 00117000
  118. * THE START AND ENDING LOCATIONS ARE DETERMINED FROM THE 00118000
  119. * USER OPTIONS 'TO' AND 'FROM' OR BY DEFAULT. THE DEFAULT 00119000
  120. * START IS THE ADDRESS OF THE FIRST LOADER TABLE NAME, THE 00120000
  121. * DEFAULT END IS THE CURRENT SETTING OF LOCCNT IN NUCON. 00121000
  122. * AN EIGHTY BYTE RECORD IS WRITTEN AS THE FIRST RECORD OF THE 00122000
  123. * THE MODULE. THIS RECORD CONSISTS OF THE NUCON LOADER INFORMA- 00123000
  124. * TION. NEXT THE TEXT INFORMATION IS WRITTEN TO THE MODULE 00124000
  125. * FILE IN VARIABLE SIZE RECORDS UP TO 65535 BYTES. IF THE 00125000
  126. * MODULE IS NOT FOR A TRANSIENT ROUTINE AND NOMAP WAS NOT 00126000
  127. * SPECIFIED THE LOADER TABLE IS WRITTEN AS THE LAST MODULE 00127000
  128. * FILE RECORD. CLOSE THE NEW MODULE FILE AND RETURN TO THE 00128000
  129. * CALLER. 00129000
  130. * 00130000
  131. * LOADMOD- 00131000
  132. * 00132000
  133. * LOADMOD CHECKS FOR THE EXISTENCE OF THE REQUESTED MODULE 00133000
  134. * THEN READS THE TEXT INFORMATION INTO THE LOCATIONS SET 00134000
  135. * UP WHEN THE MODULE WAS CREATED. THE MODULE NAME IS 00135000
  136. * STORED IN THE APPROPRIATE NUCON LOCATION. IF THERE IS 00136000
  137. * A LOADER TABLE RECORD IN THE MODULE IT IS READ INTO 00137000
  138. * THE LOADER TABLE LOCATION IN STORAGE. SELECTED LOADER 00138000
  139. * INFORMATION IS STORED IN NUCON. RETURN TO CALLER 00139000
  140. *. 00140000
  141. EJECT 00141000
  142. DMSMOD START 0 00142000
  143. USING *,R12 00143000
  144. USING FREEST,R13 WORK AREA 00144000
  145. USING NUCON,R0 00145000
  146. LR R12,R15 ADDRESSIBILITY 00146000
  147. LR R2,R1 PROTECT R1 00147000
  148. LR R11,R14 SAVE RETURN ADDRESS 00148000
  149. L R10,AFVS ADDR. OF FVSECT 00149000
  150. USING FVSECT,R10 00150000
  151. MVC DSKLIN(44),DSKLIS DISK PARAMETER LIST TO FREE STORAGE 00151000
  152. SR R9,R9 CLEAR LOADMOD BUFFER REG. 00152000
  153. CLI 0(R2),C'L' IS COMMAND LOADMOD 00153000
  154. BE GOREAD YES 00154000
  155. EJECT 00155000
  156. *********************************************************************** 00156000
  157. * 00157000
  158. * GENMOD - CREATE A LOAD MODULE 00158000
  159. * 00159000
  160. *********************************************************************** 00160000
  161. SPACE 00161000
  162. LH R8,TBENT NO. OF LDR TBL ENTRIES 00162000
  163. CH R8,=H'2' ANY LOADER TABLE ENTRIES 00163000
  164. BNH ERR040E NO, NOTHING LOADED 00164000
  165. CLC AUSRAREA+1(3),LOCCNT+1 HAS LOCATION COUNTER BEEN MOVED 00165000
  166. BE ERR040E NO, NOTHING LOADED 00166000
  167. ST R9,BUFF CLEAR FLAG AREA @V305032 00167000
  168. NI LDRFLAGS+1,255-X'80' DEFAULT TO NOSTR OPTION 00168000
  169. MVI MODFLGS,CLEAR CLEAR ALL GENMOD/LOADMOD FLAGS @V305066 00169000
  170. * (DEFAULTING TO 'MAP' AND 'OS' OPTIONS) 00170000
  171. LA R1,STARTLIS CALL START (NO) TO COMPLETE LOAD 00171000
  172. SVC 202 00172000
  173. DC AL4(*+4) 00173000
  174. LA R2,8(0,R2) GET TO MODULE NAME 00174000
  175. CLI 0(R2),X'FF' END OF PLIST 00175000
  176. BE ERASE YES, CONTINUE V0415 00176000
  177. GENMOD01 CLI 0(R2),C'(' IS THERE A MODULE NAME 00177000
  178. BE ERASE NO, MUST USE DEFAULT NAME V0415 00178000
  179. MVC DSKLIN+8(8),0(R2) YES, MOVE NAME TO DISK PLIST 00179000
  180. LA R2,8(0,R2) GET PAST MODULE NAME 00180000
  181. CLI 0(R2),C'(' OPTIONS NEXT 00181000
  182. BE ERASE YES, DON'T LOOK FOR MODE 00182000
  183. CLI 0(R2),X'FF' IS FILE MODE SPECIFIED 00183000
  184. BE ERASE NO, ERASE OLD MODULE 00184000
  185. CLC 0(8,R2),=CL8'MODULE' IS FILE TYPE MODULE 00185000
  186. BNE ERR032E NO, ERROR 00186000
  187. LA R2,8(0,R2) POINT TO MODE LOCATION V0415 00187000
  188. CLI 0(R2),C'(' OPTIONS NEXT ? V0415 00188000
  189. BE ERASE YES, USE DEFAULT MODE V0415 00189000
  190. CLI 0(R2),X'FF' END OF PLIST V0415 00190000
  191. BE ERASE YES, USE DEFAULT MODE V0415 00191000
  192. MVC DSKLIN+24(2),0(R2) MOVE IN SPECIFIED MODE V0415 00192000
  193. LA R2,8(0,R2) GET PAST MODE V0415 00193000
  194. CLI DSKLIN+24,C'*' THIS MEANS USE DEFAULT @VA02568 00194000
  195. BE ERASE MAKE IT AN 'A1' FILE @VA02568 00195000
  196. CLI DSKLIN+24,C' ' SAME IF NO LETTER @VA02568 00196000
  197. BE ERASE GIVEN AT ALL @VA02568 00197000
  198. CLI DSKLIN+25,C' ' IF NO NUMBER, SAY ONE @VA02568 00198000
  199. BNE ERASE1 OR LET IT GO @VA02568 00199000
  200. MVI DSKLIN+25,C'1' HAVE TO GIVE A MODE NO @VA02568 00200000
  201. B ERASE1 LET STATE FIND INVALIDS @VA02568 00201000
  202. ERASE MVC DSKLIN+24(2),AONE USE DEFAULT FILE MODE 00202000
  203. ERASE1 SR R5,R5 INITIALIZE R5 TO ZERO 00203000
  204. L R6,LOCCNT INIT. R6 TO DEFAULT START ADDR. 00204000
  205. CLI 0(R2),C'(' ANY OPTIONS 00205000
  206. BE EXEC1 YES, PROCESS THEM 00206000
  207. CLI 0(R2),X'FF' END OF PARAMETERS 00207000
  208. BNE ERR070E NO, ERROR 00208000
  209. B DEFAULTS USE DEFAULT 'FROM' AND 'TO' 00209000
  210. EXEC1 LA R2,8(0,R2) GET TO 1ST (NEXT) USER OPTION 00210000
  211. LA R1,OPT ADDR. OF OPTION TABLE 00211000
  212. LA R3,OPTNO NUMBER OF LEGAL OPTIONS 00212000
  213. CLI 0(R2),X'FF' END OF USER OPTIONS 00213000
  214. BE DEFAULTS YES, VERIFY R5 AND R6 00214000
  215. CLI 0(R2),C')' END OF OPTIONS ? 00215000
  216. BE DEFAULTS YES 00216000
  217. OPTIONB CLC 0(8,R2),0(R1) COMPARE USER TO LEGAL OPTION 00217000
  218. BE EXEC THIS IS IT 00218000
  219. LA R1,12(0,R1) NEXT LEGAL OPTION IN TBL 00219000
  220. BCT R3,OPTIONB CHECK AGAINST ALL LEGAL OPTIONS 00220000
  221. B ERR003E OPTION ERROR 00221000
  222. EXEC EX 0,8(R1) TAKE APPROPRIATE ACTION 00222000
  223. B EXEC1 DO NEXT OPTION 00223000
  224. FROM LA R2,8(0,R2) GET TO NAME 00224000
  225. LA R3,OPT IN CASE OF ERROR 00225000
  226. BAL R15,SEARCH LOOK FOR NAME IN LDR TBL 00226000
  227. TM DSKLIN+8,X'FF' IS DEFAULT MODULE NAME TO BE USED 00227000
  228. BNO FROM1 NO, LEAVE PLIST NAME 00228000
  229. MVC DSKLIN+8(8),0(R4) USE 'FROM' NAME AS MODULE NAME 00229000
  230. FROM1 L R5,12(,R4) PUT ITS ADDR IN R5 00230000
  231. LA R5,0(,R5) CLEAR HI BYTE 00231000
  232. B EXEC1 DO NEXT OPTION 00232000
  233. TO LA R2,8(0,R2) GET 'TO' NAME 00233000
  234. LA R3,OPT+12 IN CASE OF ERROR 00234000
  235. BAL R15,SEARCH LOOK FOR IT IN LDR TBL 00235000
  236. L R6,12(,R4) PUT ITS ADDR IN R6 00236000
  237. LA R6,0(0,R6) CLEAR HI BYTE 00237000
  238. B EXEC1 DO NEXT OPTION 00238000
  239. DEFAULTS TM MODFLGS,NOMAPFLG IS NOMAP OPTION ON? @VA02871 00239000
  240. BZ DEFAULT1 NO, CONTINUE TO NEXT DEFAULT @VA02871 00240000
  241. SR R8,R8 CLEAR LDR TBL COUNT @VA02871 00241000
  242. DEFAULT1 LTR R5,R5 WAS 'FROM' SPECIFIED? @VA02871 00242000
  243. BNE STM34 YES, WRITE FIRST RECORD 00243000
  244. TM DSKLIN+8,X'FF' USE DEFAULT MODULE NAME 00244000
  245. BO TO2 YES, DON'T SCAN LDR TBL 00245000
  246. LH R0,TBENT NO OF LDR TBL ENTRIES 00246000
  247. L R5,ALDRTBLS TOP OF LDR TBL 00247000
  248. LA R5,0(0,R5) CLEAR HI BYTE 00248000
  249. LA R7,20 SIZE OF EACH ENTRY 00249000
  250. COMP1 SR R5,R7 1ST (NEXT) ENTRY 00250000
  251. CLC DSKLIN+8(8),0(R5) IS THIS THE MODULE NAME 00251000
  252. BE TO1 YES, USE ITS ADDR 00252000
  253. BCT R0,COMP1 LOOK AT NEXT ENTRY 00253000
  254. TO2 L R5,ALDRTBLS TOP OF LDR TBL 00254000
  255. SH R5,=H'60' POINT TO THIRD ENTRY 00255000
  256. TM DSKLIN+8,X'FF' USE DEFAULT MODULE NAME ? 00256000
  257. BNO TO1 NO, LEAVE DISK PLIST AS IS 00257000
  258. MVC DSKLIN+8(8),0(R5) YES, USE FIRST LDR TBL NAME 00258000
  259. TO1 L R5,12(0,R5) LOAD ITS ADDR IN R5 00259000
  260. LA R5,0(0,R5) CLEAR HI BYTE 00260000
  261. STM34 LA R1,DSKLIN GET DISK PLIST 00261000
  262. LR R15,R6 CHECK MODULE DEFINITION 00262000
  263. SR R15,R5 R15 NOW HAS LENGTH 00263000
  264. BNP ERR084E IF NOT POSITIVE THEN ERROR 00264000
  265. L R15,ASTATEW CHECK FOR FILE (ON R/W DISK) @V305032 00265000
  266. BALR R14,R15 00266000
  267. BNZ MODSTER SOME ERROR 00267000
  268. L R15,AERASE ADDR OF ERASE 00268000
  269. BALR R14,R15 ERASE THE OLD MODULE 00269000
  270. NOERASE C R5,AUSRAREA LOCATION AT START OF USER AREA? @VA09142 00270000
  271. BNE TESTSTR NO @VA09142 00271000
  272. TM BUFF,X'80' YES, WAS NOSTR SPECIFIED 00272000
  273. BO TESTSTR YES @VA09142 00273000
  274. OI BUFF,X'40' NO, INDICATE STRINIT CALL 00274000
  275. TESTSTR EQU * 00274700
  276. TM BUFF,X'40' STR OPTION REQUESTED? @VA09142 00275400
  277. BNO STM56 NO 00276000
  278. OI LDRFLAGS+1,X'80' YES, SET REAL STRINIT FLAG 00277000
  279. STM56 STM R5,R6,FRSTLOC SET 1ST AND LAST LOCATIONS OF MODULE 00278000
  280. C R5,ADTRANS IS IT IN TRANSIENT AREA 00279000
  281. BNE STBUFF NO 00280000
  282. SR R8,R8 YES, INDICATE NO LOAD MAP ON MODULE 00281000
  283. TM LDRFLAGS,SYSTEM WAS "SYSTEM" OPTION SPECIFIED ? @V305032 00282000
  284. BZ STBUFF NO - DO IT THE OLD WAY. @V305032 00283000
  285. TM BUFF,STRINIT WAS STRINIT CALL REQUESTED ? @V305066 00284000
  286. BNZ STBUFF YES - DO IT THE OLD WAY. @V305032 00285000
  287. LA R1,DSKLIN NO - POINT TO WRBUF P-LIST, @V305032 00286000
  288. MVI DSKLIN+FVEQU,FIX MAKE TRANSIENT MODULE FIXED @V305066 00287000
  289. B WSETR3 GO SET R3 AND WRBUF THE MODULE. @V305032 00288000
  290. STBUFF LA R0,10 GET BUFFER FOR FIRST RECORD 00289000
  291. DMSFREE DWORDS=(0),TYPCALL=BALR 00290000
  292. LR R9,R1 R9 IS BUFFER ADDRESS 00291000
  293. ST R9,DSKLIN+28 PUT IN PLIST 00292000
  294. MVC 0(80,R9),STRTADDR MOVE LOADER INFORMATION TO BUFFER 00293000
  295. STH R8,TBENT-STRTADDR(R9) SAVE LDR TABLE COUNT 00294000
  296. MVC DSKLIN+32(4),=XL4'50' SET TO WRITE 80 BYTES 00295000
  297. LA R1,DSKLIN ADDR. OF WRITE PLIST 00296000
  298. L R15,AWRBUF ADDR. OF WRBUF 00297000
  299. BALR R14,R15 WRITE FIRST RECORD OF MODULE 00298000
  300. BNZ WRTERR WRITE ERROR 00299000
  301. WSETR3 L R3,F65535 MAX WRBUF SIZE IN R3 @V305032 00300000
  302. SR R6,R5 LENGTH OF TEXT INFORMATION 00301000
  303. WLOOP STM R5,R6,DSKLIN+28 STORE ADR. AND LENGTH IN WRITE PLIST 00302000
  304. CR R6,R3 IS COUNT TOO BIG 00303000
  305. BNH OKW NOT TOO BIG 00304000
  306. ST R3,DSKLIN+32 IF TOO BIG, SUBSTITUTE MAX. SIZE 00305000
  307. OKW L R15,AWRBUF 00306000
  308. BALR R14,R15 WRITE SECOND RECORD 00307000
  309. BNZ ERR105S WRITE ERROR 00308000
  310. AR R5,R3 INCREMENT STARTING ADDR. 00309000
  311. SR R6,R3 COMPUTE REMAINING LENGTH 00310000
  312. BP WLOOP BP IF R4 > 0, WRITE SOME MORE 00311000
  313. LTR R4,R8 SHOULD LDR TBLS BE WRITTEN 00312000
  314. BZ FINMOD NO, FINIS MODULE 00313000
  315. MH R4,=H'20' COMPUTE SIZE OF LDR TBL 00314000
  316. L R3,ALDRTBLS TOP OF LDR TBL 00315000
  317. LA R3,0(0,R3) CLEAR HI BYTE 00316000
  318. SR R3,R4 BOTTOM OF LDR TBL 00317000
  319. STM R3,R4,DSKLIN+28 ADR. AND LENGTH OF LDR TBL 00318000
  320. L R15,AWRBUF 00319000
  321. BALR R14,R15 WRITE LDR TBL TO MODULE 00320000
  322. BNZ ERR105S WRITE ERROR 00321000
  323. B FINMOD FINIS THE MODULE 00322000
  324. MODSTER CH R15,=H'28' FILE NOT FOUND 00323000
  325. BE NOERASE YES, OMIT ERASE CALL 00324000
  326. B EXIT SOME OTHER ERROR 00325000
  327. WRTERR CH R15,=H'12' WAS DISK READ ONLY 00326000
  328. BE ERR037E YES 00327000
  329. B ERR105S SOME OTHER WRITE ERROR 00328000
  330. SPACE 00329000
  331. AONE DC C'A1' DEFAULT MODE FOR OLD AND NEW MODULE 00330000
  332. EJECT 00331000
  333. *********************************************************************** 00332000
  334. * 00333000
  335. * LOADMOD - CHECK FOR MODULE THEN READ IT IN 00334000
  336. * 00335000
  337. *********************************************************************** 00336000
  338. SPACE 00337000
  339. GOREAD MVC DSKLIN+8(8),8(R2) MOVE MODULE NAME TO PLIST 00338000
  340. CLI 8(R2),X'FF' ANY MODULE NAME SPECIFIED 00339000
  341. BE ERR001E NO, ERROR 00340000
  342. LR R7,R2 REMEMBER "R1 AT INPUT" @V305032 00341000
  343. CLI 16(R2),X'FF' END OF PARAMETERS 00342000
  344. BE GOREAD1 YES 00343000
  345. LA R2,16(0,R2) GET PAST NAME 00344000
  346. CLC 0(8,R2),=CL8'MODULE' IS FILE TYPE MODULE 00345000
  347. BNE ERR032E NO, ERROR 00346000
  348. CLI 8(R2),X'FF' IS A MODE SPECIFIED 00347000
  349. BE GOREAD1 NO 00348000
  350. MVC DSKLIN+24(2),8(R2) MOVE MODE TO PLIST 00349000
  351. CLI 16(R2),X'FF' END OF PARAMETERS 00350000
  352. BNE ERR070 NO, ERROR 00351000
  353. GOREAD1 CLI DSKLIN+8,C'*' WAS * TYPED AS COMMAND NAME 00352000
  354. BE ERR002E YES, THAT'S NOT RIGHT 00353000
  355. LA R1,DSKLIN SET PLIST REG 00354000
  356. L R15,ASTATE CHECK FOR FILE 00355000
  357. BALR R14,R15 00356000
  358. BNZ LMODSTER STATE ERROR 00357000
  359. L R1,28(R1) GET A(FST COPY) 00358000
  360. MVC DSKLIN+24(2),24(R1) SET MODE IN PLIST 00359000
  361. CLI FVSFSTFV,FIX IS MODULE FIXED ? @V305066 00360000
  362. BE FIXDTRAN YES - IT MUST BE TRANSIENT. @V305032 00361000
  363. LA R0,10 GET AN INPUT BUFFER 00362000
  364. DMSFREE DWORDS=(0),TYPCALL=BALR 00363000
  365. LR R9,R1 USE R9 AS BUFFER ADDR 00364000
  366. ST R9,DSKLIN+28 SET IN PLIST 00365000
  367. LA R1,DSKLIN ADDR OF READ PLIST 00366000
  368. L R15,ARDBUF READ FIRST RECORD 00367000
  369. BALR R14,R15 00368000
  370. BNZ ERR104S ERROR 00369000
  371. TM MODFLGS,MDPCALL CALLING FROM DMSMDP ? @VA07083 00370000
  372. BZ CONTINUE @VA07083 00371000
  373. CLC H0,TBENT-STRTADDR(R9) ARE THERE LOADER TABLES ? @VA07083 00372000
  374. BE ERROR18E @VA07083 00373000
  375. CONTINUE EQU * @VA07083 00374000
  376. L R6,0(R9) GET STARTING ADR OF THIS MODULE 00375000
  377. LM R3,R4,4(R9) GET 1ST AND LAST LOCATIONS 00376000
  378. L R15,=V(SUBFLAG) GET SUBSET FLAG 00377000
  379. TM 0(R15),X'01' IS SUBSET BIT ON 00378000
  380. BZ SUBOK NO, DON'T CHECK LOAD LOCATION 00379000
  381. C R3,AUSRAREA COMPARE LOAD LOC WITH USER AREA 00380000
  382. BL SUBOK OK IF LOADING BELOW USER AREA 00381000
  383. LA R5,32 WOULD OVERLAY VALID TEXT @VA05074 00382000
  384. B FINMOD1 CLOSE FILE THEN EXIT @VA05074 00383000
  385. LMODSTER CH R15,=H'28' FILE NOT FOUND 00384000
  386. BE ERR002E YES, TYPE MESSAGE 00385000
  387. B EXIT SOME OTHER ERROR 00386000
  388. SUBOK C R3,ADTRANS DOES MODULE GO TO TRANSIENT AREA 00387000
  389. BNE STR6 NO 00388000
  390. BAL R14,DOSOSUB1 CHECK FOR DOS/OS "MISMATCH" @V305032 00389000
  391. MVC LASTTMOD,DSKLIN+8 REMEMBER WHICH MODULE IN TRANS AR. 00390000
  392. B LM34 CONTINUE 00391000
  393. SPACE 00392000
  394. * MODULE IS "FIXED" - IT SHOULD BE TRANSIENT WITH "SYSTEM" OPION: 00393000
  395. * ERROR-CHECK IT (AGAINST USER ERRORS); THEN IF IT LOOKS OK, READ IT 00394000
  396. * INTO THE TRANSIENT AREA VIA TWO CALLS TO "RDTK" (DON'T NEED RDBUF): 00395000
  397. * 00396000
  398. FIXDTRAN DS 0H @VA07908 00396500
  399. TM MODFLGS,MDPCALL CALLED FROM DMSMDP @VA07908 00397000
  400. BO ERROR18E YES, DONT HAVE MAP @VA07908 00397500
  401. LA R15,LRECL1 ONE LOGICAL RECORD @VA07908 00398000
  402. CH R15,FVSFSTIC EQUAL @VA08626 00398500
  403. BNE ERROR11 IF NOT, CALL IT ERROR 11. @V305032 00399000
  404. L R7,FVSFSTIL NOW GET MODULE BYTE-COUNT IN R7 @V305032 00400000
  405. C R7,=F'8192' CAN'T BE MORE THAN 8192 BYTES @V305032 00401000
  406. BH ERROR8 IF NOT, CALL IT ERROR 8. @V305032 00402000
  407. LA R1,DSKLST POINT TO "RDTK" P-LIST @V305032 00403000
  408. L R3,ADTRANS ADDRESS INTO R3 @V305032 00404000
  409. SR R4,R4 "0" MEANS READ FIRST CHAIN LINK @V305032 00405000
  410. LA R5,FVSFSTCL POINT TO FIRST CHAIN LINK @V305032 00406000
  411. L R6,FVSFSTAD POINT TO ACTIVE DISK TABLE @V305032 00407000
  412. STM R3,R6,DSKLOC STORE DSKLOC/RWCNT/DSKADR/ADTADD @V305032 00408000
  413. L R15,ARDTK CALL "RDTK" TO READ THE FIRST @V305032 00409000
  414. BALR R14,R15 CHAIN LINK (INTO TRANSIENT AREA) @V305032 00410000
  415. BNZ ERR100TR HOPEFULLY SHOULDN'T GET ERROR. @V305032 00411000
  416. LR R4,R7 NOW GET MODULE BYTE-COUNT IN R4 @V305032 00412000
  417. MVC REGSAV3(22),80(R3) MOVE 11 BLK NUMBERS (ENOUGH @V305032 00413000
  418. * FOR BIGGEST POSSIBLE TRANSIENT MODULE) 00414000
  419. LA R5,REGSAV3 POINT TO WHERE WE MOVED THEM @V305032 00415000
  420. STM R4,R5,RWCNT STORE NEW RWCNT AND DSKADDR @V305032 00416000
  421. L R15,ARDTK CALL "RDTK" AGAIN TO READ IN @V305032 00417000
  422. BALR R14,R15 THE ACTUAL TRANSIENT MODULE @V305032 00418000
  423. BNZ ERR100TR HOPEFULLY SHOULDN'T GET ERROR. @V305032 00419000
  424. MVC LASTTMOD,DSKLIN+8 REMEMBER WHICH MOD IN TRANSAR @V305032 00420000
  425. OI PROTFLAG,PRFTSYS SET PROTECTION FLAG-BIT, @V305032 00421000
  426. AR R4,R3 LET R4 = LAST LOCATION LOADED @V305032 00422000
  427. STM R3,R4,FRSTLOC "SHOW" 1ST & LAST LOCATIONS, @V305032 00423000
  428. B EXIT2 AND GO EXIT (WE'RE ALL DONE). @V305032 00424000
  429. SPACE 00425000
  430. STR6 C R4,FREELOWE WILL FREE STORAGE BE OVERLAID ? @V305032 00426000
  431. BH ERR109S YES, ERROR. @V305032 00427000
  432. BAL R14,DOSOSUB2 CHECK FOR DOS/OS "MISMATCH" @V305032 00428000
  433. MVC LASTLMOD(8),DSKLIN+8 SAVE NAME OF LAST LOAD MOD. IN USER 00429000
  434. ST R6,STRTADDR SET STARTING ADDR 00430000
  435. MVC LOCCNT(4),LOCCNT-STRTADDR(R9) SET LOCATION COUNTER 00431000
  436. LH R8,TBENT-STRTADDR(R9) LDR TBL COUNT 00432000
  437. LTR R8,R8 IS IT ZERO (NOMAP) 00433000
  438. BZ NOCOUNT YES, DON'T STORE IN NUCON 00434000
  439. STH R8,TBENT PLACE NEW COUNT IN NUCON 00435000
  440. SR R0,R0 GET NUMBER OF PAGES OF LDRTBLS @VA02323 00436000
  441. IC R0,ALDRTBLS FROM LEFT-MOST BYTE OF "LDRTBL" @VA02323 00437000
  442. MH R0,=H'204' X 204 (204 ENTRIES/PAGE) @VA02323 00438000
  443. CR R8,R0 @VA02323 00439000
  444. BH ERR116S REFERENCE TABLE OVERFLOW @VA02323 00440000
  445. NOCOUNT OI LDRFLAGS,X'04' SET NOERASE TO PROTECT LOAD MAP 00441000
  446. LM34 MVC FRSTLOC(8),FRSTLOC-STRTADDR(R9) SET 1ST AND LAST LOCATIO 00442000
  447. L R5,F65535 MAX RECORD SIZE FOR RDBUF 00443000
  448. SR R4,R3 GET LENGTH OF TEXT 00444000
  449. RLOOP STM R3,R4,DSKLIN+28 PUT ADR AND LENGTH IN READ PLIST 00445000
  450. CR R4,R5 SEE IF COUNT TOO BIG FOR RDBUF 00446000
  451. BNH OKR NOT TOO BIG 00447000
  452. ST R5,DSKLIN+32 IF TOO BIG SUBSTITUTE MAX. 00448000
  453. OKR L R15,ARDBUF READ IN SOME TEXT 00449000
  454. BALR R14,R15 00450000
  455. BNZ ERR104S ERROR 00451000
  456. AR R3,R5 INCREMENT STARTING ADR 00452000
  457. SR R4,R5 REMAINING COUNT 00453000
  458. BP RLOOP BP IF R4 > 0, READ SOME MORE 00454000
  459. LH R4,TBENT-STRTADDR(R9) NO. OF LDR TBL ENTRIES 00455000
  460. MH R4,=H'20' MULTIPLY BY 20 00456000
  461. LTR R4,R4 ANY LDR TBL 00457000
  462. BZ CHKSTR NO LDR TABLE, CHECK STR OPTION V0009 00458000
  463. L R3,ALDRTBLS TOP OF LOADER TBL 00459000
  464. LA R3,0(0,R3) CLEAR HI BYTE 00460000
  465. SR R3,R4 LDR TBL LOCATION IN STORAGE 00461000
  466. STM R3,R4,DSKLIN+28 SET PLIST 00462000
  467. L R15,ARDBUF 00463000
  468. BALR R14,R15 READ IN LDR TBLS 00464000
  469. LR R14,R15 @VA13683 00464500
  470. N R14,=A(X'FFFFF7') @VA13683 00465000
  471. BNZ ERR104S READ ERROR 00466000
  472. CHKSTR TM LDRFLAGS+1-STRTADDR(R9),X'80' STRINIT CALL REQUESTEV0009 00467000
  473. BNO CHKSYS NO 00468000
  474. L R15,=V(SUBFLAG) GET SUBSET FLAG @VA07612 00468200
  475. TM 0(R15),X'01' ARE WE IN SUBSET MODE @VA07612 00468400
  476. BO CHKSYS YES, SKIP STORAGE INIT @VA07612 00468600
  477. STRINIT TYPCALL=BALR 00469000
  478. * IF THE 'SYSTEM' OPTION WAS SPECIFIED ON THE GENMOD COMMAND, THEN 00470000
  479. * WE MUST SET THE APPROPRIATE SYSTEM BIT IN PROTFLAG. 00471000
  480. CHKSYS EQU * 00472000
  481. L R3,4(R9) GET FIRST STORAGE LOCATION 00473000
  482. C R3,ADTRANS EQUALS START OF TRANSIENT AREA? 00474000
  483. LA R1,PRFUSYS R1 <- USER SYSTEM BIT 00475000
  484. BNE *+8 SKIP IF USER ROUTINE 00476000
  485. LA R1,PRFTSYS R1 <- TRANSIENT SYSTEM BIT 00477000
  486. EX R1,CHKSYSO TURN ON SYSTEM FLAG 00478000
  487. TM LDRFLAGS-STRTADDR(R9),SYSTEM IS IT A SYSTEM MODULE? 00479000
  488. BO FINMOD YES - GO FINISH UP. @V305032 00480000
  489. EX R1,CHKSYSX IF NOT, TURN OFF FLAG AGAIN 00481000
  490. * CONTINUE TO "FINMOD" ... 00482000
  491. SPACE 00483000
  492. * NOW FINISH UP (FOR EITHER 'LOADMOD' OR 'GENMOD') ... 00484000
  493. FINMOD SR R5,R5 CLEAR "RETURN CODE" @V305032 00485000
  494. FINMOD1 LA R1,DSKLIN PLIST FOR FINIS @V305032 00486000
  495. L R15,AFINIS 00487000
  496. BALR R14,R15 FINIS FILE 00488000
  497. BNZ ERR105S BRANCH IF ERROR 00489000
  498. LR R15,R5 OK - PRESERVE "RETURN CODE" @V305032 00490000
  499. EXIT LTR R1,R9 WAS A BUFFER AQUIRED 00491000
  500. BZ EXIT1 NO 00492000
  501. LR R5,R15 PROTECT RETURN CODE 00493000
  502. LA R0,10 SIZE OF BUFFER 00494000
  503. DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR 00495000
  504. LR R15,R5 RESTORE RETURN CODE 00496000
  505. EXIT1 LM R3,R4,FRSTLOC "SHOW" FIRST & LAST LOCATIONS @V305032 00497000
  506. EXIT2 LR R14,R11 RESTORE RETURN CODE, @V305032 00498000
  507. LTR R15,R15 SET CONDITION-CODE, AND @V305032 00499000
  508. BR R14 EXIT 00500000
  509. SPACE 00501000
  510. CHKSYSO OI PROTFLAG,*-* BIT FILLED IN BY "EX" @V305032 00502000
  511. CHKSYSX XI PROTFLAG,*-* BIT FILLED IN BY "EX" @V305032 00503000
  512. EJECT 00504000
  513. SEARCH CLI 0(R2),X'FF' IS THERE A NAME 00505000
  514. BE ERR005E NO, ERROR 00506000
  515. CLI 0(R2),C')' 00507000
  516. BE ERR005E 00508000
  517. LH R0,TBENT NO. OF LOADER TBL ENTRIES 00509000
  518. L R4,ALDRTBLS TOP OF LDR TBL 00510000
  519. LA R4,0(0,R4) CLEAR HI BYTE 00511000
  520. LA R7,20 SIZE OF EACH ENTRY 00512000
  521. COMP SR R4,R7 1ST (NEXT) ENTRY 00513000
  522. CLC 0(8,R2),0(R4) SAME AS USER'S NAME 00514000
  523. BE BCT0 YES , VALIDATE ITS EXISTENCE P3083 00515000
  524. BCT 0,COMP TRY NEXT 00516000
  525. B ERR004E ERROR IF NOT FOUND 00517000
  526. BCT0 L R7,12(0,R4) GET THE ENTRY ADDRESS P3083 00518000
  527. LA R7,0(0,R7) CLEAR HI BYTE P3083 00519000
  528. LTR R7,R7 IS IT ZERO P3083 00520000
  529. BCR 7,R15 NO, RETURN TO CALLER P3083 00521000
  530. B ERR004E YES, IT DOES NOT EXIST P3083 00522000
  531. EJECT 00523000
  532. *********************************************************************** 00524000
  533. * 00525000
  534. * ERROR MESSAGES 00526000
  535. * 00527000
  536. *********************************************************************** 00528000
  537. SPACE 00529000
  538. ERR001E DMSERR TEXT='NO FILENAME SPECIFIED',LET=E,NUM=1,TYPCALL=BALR 00530000
  539. LA R15,24 ERROR CODE 00531000
  540. B EXIT 00532000
  541. ERR002E CLC SPFENCE(4),16(R2) SPECIAL RETURN FOR SVCINT 00533000
  542. BE LA1528 YES 00534000
  543. LA R2,DSKLIN+8 ADDR OF FILE NAME 00535000
  544. DMSERR TEXT='FILE ........ MODULE NOT FOUND', X00536000
  545. LET=E,NUM=2,SUB=(CHARA,(R2)),TYPCALL=BALR 00537000
  546. LA1528 LA R15,28 ERROR CODE 00538000
  547. B EXIT RETURN 00539000
  548. ERR003E DMSERR TEXT='INVALID OPTION ........', X00540000
  549. NUM=3,LET=E,SUB=(CHARA,(R2)),TYPCALL=BALR 00541000
  550. LA R15,24 00542000
  551. B EXIT 00543000
  552. SPACE 00544000
  553. ERR005E DMSERR TEXT='NO ''........ ENTRY'' SPECIFIED',NUM=5, X00545000
  554. LET=E,SUB=(CHAR8A,(R3)) 00546000
  555. LA R15,24 00547000
  556. B EXIT 00548000
  557. SPACE 00549000
  558. ERR032E DMSERR TEXT='INVALID FILETYPE ........',LET=E,NUM=032, X00550000
  559. SUB=(CHARA,(R2)),TYPCALL=BALR 00551000
  560. LA R15,24 00552000
  561. B EXIT 00553000
  562. SPACE 00554000
  563. ERR004E DMSERR TEXT='ENTRY POINT ........ NOT FOUND', X00555000
  564. LET=E,NUM=21, X00556000
  565. SUB=(CHARA,(R2)),TYPCALL=BALR 00557000
  566. LA R15,40 00558000
  567. B EXIT 00559000
  568. SPACE 00560000
  569. ERR037E LR R3,R15 SAVE ERROR CODE 00561000
  570. LA R2,DSKLIN+24 MODE ADDR. IN R2 00562000
  571. DMSERR TEXT='DISK ''..'' IS READ/ONLY',NUM=37, X00563000
  572. LET=E,SUB=(CHARA,(R2)),TYPCALL=BALR 00564000
  573. LA R15,36 RETURN CODE 00565000
  574. B EXIT 00566000
  575. SPACE 00567000
  576. ERR040E DMSERR TEXT='NO FILES LOADED',NUM=40,LET=E,TYPCALL=BALR 00568000
  577. LA R15,40 00569000
  578. B EXIT 00570000
  579. ERROR18E DMSERR TEXT='NO LOAD MAP AVAILABLE',LET=E,NUM=18, X00571000
  580. TYPCALL=BALR 00572000
  581. LA R15,40 ERROR CODE @VA07083 00573000
  582. B EXIT @VA07083 00574000
  583. SPACE 00575000
  584. ERR070 LA R2,16(0,R2) POINT TO INVALID PARM 00576000
  585. ERR070E DMSERR TEXT='INVALID PARAMETER ''........''',NUM=70, X00577000
  586. LET=E,SUB=(CHAR8A,(R2)) 00578000
  587. LA R15,24 00579000
  588. B EXIT 00580000
  589. ERR084E DMSERR TEXT='INVALID USE OF FROM AND TO OPTIONS',LET=E,NUM=84 00581000
  590. LA R15,24 00582000
  591. B EXIT 00583000
  592. SPACE 00584000
  593. ERROR11 LA R15,ERR11 FIXED MODULE NOT ONE RECORD @V305066 00585000
  594. B ERR100TR TREAT AS EQUIVALENT RDBUF ERROR. @V305032 00586000
  595. * 00587000
  596. ERROR8 LA R15,ERR8 FIXED MODULE > 8192 BYTES @V305066 00588000
  597. * TREAT AS EQUIVALENT RDBUF ERROR: 00589000
  598. ERR100TR EQU * ERROR READING FIXED TRANSIENT MODULE: @V305032 00590000
  599. XC LASTTMOD(8),LASTTMOD CLEAR NAME OF TRANSIENT @V305032 00591000
  600. * MODULE; CONTINUE TO "ERR104S": 00592000
  601. ERR104S LR R3,R15 SAVE RETURN CODE 00593000
  602. LA R2,DSKLIN+8 ADDR. OF FILENAME 00594000
  603. DMSERR TEXT=('ERROR ''..'' READING FILE ', V0314X00595000
  604. '''..................'' FROM DISK'), V0314X00596000
  605. NUM=104,LET=S,TYPCALL=BALR, V0314X00597000
  606. SUB=(DEC,(R3),CHAR8A,(R2)),MF=(E,MSG) V0314 00598000
  607. LA R15,100 RETURN CODE 00599000
  608. B EXIT 00600000
  609. ERR105S LR R3,R15 SAVE RETURN CODE 00601000
  610. LA R2,DSKLIN+8 ADR. OF FILE NAME 00602000
  611. DMSERR TEXT='ERROR .. WHILE WRITING FILE .................. ONX00603000
  612. DISK',LET=S,NUM=105,SUB=(DEC,(R3),CHAR8A,(R2)), X00604000
  613. MF=(E,MSG),TYPCALL=BALR 00605000
  614. LA R15,100 RETURN CODE 00606000
  615. B EXIT 00607000
  616. SPACE 00608000
  617. SPACE 00609000
  618. SPACE 00610000
  619. ERR109S DMSERR TEXT='STORAGE EXCEEDED',LET=S,NUM=109,TYPCALL=BALR 00611000
  620. LA R15,104 RETURN CODE 00612000
  621. B EXIT 00613000
  622. ERR116S DMSERR TEXT='LOADER TABLE OVERFLOW',LET=S,NUM=116,TYPCALL=BALR 00614000
  623. LA R15,104 @VA02323 00615000
  624. B EXIT @VA02323 00616000
  625. SPACE 2 00617000
  626. * CHECK A (VARIABLE) TRANSIENT MODULE FOR A POSSIBLE DOS/OS "MISMATCH": 00618000
  627. DOSOSUB1 TM LDRFLAGS-STRTADDR(R9),SYSTEM "SYSTEM" MODULE ? @V305032 00619000
  628. BOR R14 YES - IT'S OK TO LOADMOD IT. @V305032 00620000
  629. * NO - CHECK LIKE ANY OTHER MODULE: 00621000
  630. * CHECK A MODULE FOR A POSSIBLE DOS/OS "MISMATCH": 00622000
  631. DOSOSUB2 CLM R7,M8,=AL1(COMM) ISSUED AS A COMMAND ? @VM03147 00623000
  632. BLR R14 NO (AS FUNCTION) - ASSUME OK. @V305032 00624000
  633. CLM R7,M8,=AL1(EX) OR FROM EXEC ? @VM03147 00625000
  634. BHR R14 NO (AS FUNCTION) - ASSUME OK. @V305032 00626000
  635. * IF LOADMOD ISSUED FROM TERMINAL, AN EXEC FILE, OR FROM DMSITS, CHECK 00627000
  636. * FOR MISMATCH BETWEEN THE MODULE AND THE PRESENT CMS/DOS ENVIRNOMENT: 00628000
  637. TM MODFLGS-STRTADDR(R9),MODGNALL "ALL" FLAG SET ? @V305032 00629000
  638. BOR R14 YES - IGNORE POSSIBLE MISMATCH. @V305032 00630000
  639. TM MODFLGS-STRTADDR(R9),MODGNDOS "DOS" FLAG SET ? @V305032 00631000
  640. BO CHKDOSNC YES - CHECK DOS FLAG IN NUCLEUS. @V305032 00632000
  641. TM DOSFLAGS,DOSMODE+DOSSVC WE SHOULDN'T BE IN DOS @V305032 00633000
  642. BZR R14 IF NOT, WE'RE OK. @V305032 00634000
  643. ER114A LA R3,ACTIVE SIGNAL DOS ENVIRONMENT ACTIVE @V305032 00635000
  644. B ER114MSG AND GO GIVE ERROR MESSAGE. @V305032 00636000
  645. CHKDOSNC TM DOSFLAGS,DOSMODE+DOSSVC DOS - FLAGS MUST BE SET @V305032 00637000
  646. BOR R14 OK IF YES - RETURN TO CALLER. @V305032 00638000
  647. * ERROR IF YES - CONTINUE TO "ER114B": 00639000
  648. ER114B LA R3,NOTACT "DOS ENVIRONMENT NOT ACTIVE" @V305032 00640000
  649. ER114MSG LA R2,DSKLIN+8 POINT TO THE MODULE'S FILENAME @V305032 00641000
  650. DMSERR MF=(E,'SYS'),TEXTA=DOSMSGL,LET=E,NUM=114, @V305032X00642000
  651. SUB=(CHAR8A,(R2),CHARA,(R3)),TYPCALL=BALR @V305032 00643000
  652. LA R5,RC40 SET RETURN CODE = 40, @V305066 00644000
  653. B FINMOD1 GO CLOSE FILE AND THEN EXIT. @V305032 00645000
  654. DOSMSGL DC AL1(L'DOSMSG) @V305032 00646000
  655. DOSMSG DC C'''....................'' NOT LOADED; CMS/DOS ENVIRONMEX00647000
  656. NT ..........' NOT ACTIVE | ACTIVE @V305032 00648000
  657. SPACE 00649000
  658. NOTACT DC C'NOT ACTIVE',CL4' ' @V305032 00650000
  659. ACTIVE EQU NOTACT+4 @V305032 00651000
  660. EJECT 00652000
  661. ADTRANS DC V(TRANSAR) ADDRESS OF TRANSIENT AREA 00653000
  662. DS 0F 00654000
  663. DSKLIS EQU *-8 00655000
  664. DC X'FF',7X'40' SET FOR DEFAULT FNAME V0415 00656000
  665. DC CL8'MODULE' FTYPE 00657000
  666. DC CL2'* ' FMODE 00658000
  667. DC XL2'00' ITEM NO. 00659000
  668. DC 4C'*' MAKE * IN FNAME OR FTYPE INVALID @VA14823 00660000
  669. * FIELD CONTAINS BUFFER ADDR ON RETURN FROM STATE @VA14823 00660500
  670. DC A(80) LENGTH OF FIRST RECORD 00661000
  671. DSKFV DC CL2'V' VARIABLE FILE = DEFAULT @V305032 00662000
  672. DC H'1' NO. OF ITEMS 00663000
  673. DC F'0' NO. OF BYTES READ 00664000
  674. SPACE 00665000
  675. FVEQU EQU DSKFV-DSKLIS DISP OF FV FLAG FROM WRBUF PLIST @V305032 00666000
  676. SPACE 00667000
  677. DS 0F 00668000
  678. STARTLIS DC CL8'START' 00669000
  679. DC CL8'(' 00670000
  680. DC CL8'NO' 00671000
  681. SPFENCE DC X'FF00000000' SPECIAL FENCE FOR NO ERROR MESSAGE 00672000
  682. SPACE 00673000
  683. DS F 00674000
  684. H0 DC H'0' @VA07083 00675000
  685. OPT DC CL8'FROM' 00676000
  686. B FROM 00677000
  687. DC CL8'TO' 00678000
  688. B TO 00679000
  689. DC CL8'NOMAP' 00680000
  690. OI MODFLGS,NOMAPFLG NOMAP OPTION WANTED @VA02871 00681000
  691. DC CL8'MAP' P3029 00682000
  692. NI MODFLGS,255-NOMAPFLG MAP OPTION WANTED @VA02871 00683000
  693. DC CL8'STR' 00684000
  694. OI BUFF,X'40' INDICATE STRINIT CALL AT LOADMOD TIME 00685000
  695. DC CL8'NOSTR' 00686000
  696. OI BUFF,X'80' INDICATE NO STRINIT CALL WANTED 00687000
  697. DC CL8'SYSTEM' 00688000
  698. OI LDRFLAGS,SYSTEM INDICATE SYSTEM MODULE 00689000
  699. DC CL8'OS' MODULE USES OS AND/OR CMS MACROS @V305032 00690000
  700. NI MODFLGS,255-MODGNDOS ENSURE "DOS" FLAG RESET @V305032 00691000
  701. DC CL8'DOS' MODULE USES "DOS" MACROS @V305032 00692000
  702. OI MODFLGS,MODGNDOS SET "DOS" FLAGBIT @V305032 00693000
  703. DC CL8'ALL' ALL MACROS IN MODULE PRESUMED OK @V305032 00694000
  704. OI MODFLGS,MODGNALL SET "ALL" FLAGBIT @V305032 00695000
  705. OPTEND EQU * 00696000
  706. OPTNO EQU (OPTEND-OPT)/8 00697000
  707. SYSTEM EQU X'01' 00698000
  708. CLEAR EQU X'00' CLEAR FLAGS @V305066 00699000
  709. STRINIT EQU X'40' STRINIT REQUEST @V305066 00700000
  710. FIX EQU C'F' FIXED MODULE @V305066 00701000
  711. LRECL1 EQU 1 ONE LOGICAL RECORD @V305066 00702000
  712. ERR11 EQU 11 FIXED MODULE NOT 1 RECORD @V305066 00703000
  713. ERR8 EQU 8 FIXED MODULE > 8192 BYTES @V305066 00704000
  714. RC40 EQU 40 RETURN CODE = 40 @V305066 00705000
  715. M8 EQU 8 HIGH BIT FOR CLM/ICM/STCM USE @VM03147 00706000
  716. COMM EQU X'0C' ISSUED FROM COMMAND @VM03147 00707000
  717. EX EQU X'0E' ISSUED FROM EXEC @V305066 00708000
  718. LTORG 00709000
  719. SPACE 00710000
  720. FREEST DSECT 00711000
  721. BUFF DS 2F 00712000
  722. DSKLIN DS 11F 00713000
  723. MSG DMSERR MF=L,MAXSUBS=2 00714000
  724. EJECT 00715000
  725. NUCON 00716000
  726. REGEQU 00717000
  727. FVS 00718000
  728. END 00719000