User Tools

Site Tools


ibm:vm370-lib:cms:dmslsb.assemble_src

DMSLSB Source

References

Source Listing

DMSLSB.ASSEMBLE.txt
  1. LSB TITLE 'DMSLSB (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. * DMSLSB (LDRSUBS) 00009000
  10. * 00010000
  11. * CONTENTS: 00011000
  12. * 00012000
  13. * CONTAINS THE FOLLOWING LOADER SUBROUTINES: DMSLSBA, 00013000
  14. * DMSLSBB, DMSLSBC, DMSLSBD 00014000
  15. * 00015000
  16. * SUBROUTINE NAME: 00016000
  17. * 00017000
  18. * DMSLSBA 00018000
  19. * 00019000
  20. * FUNCTION: 00020000
  21. * 00021000
  22. * HEX TO BINARY CONVERSION ROUTINE 00022000
  23. * 00023000
  24. * ATTRIBUTES: 00024000
  25. * 00025000
  26. * REENTRANT, RESIDENT 00026000
  27. * 00027000
  28. * ENTRY POINTS: 00028000
  29. * 00029000
  30. * DMSLSBA - FROM VARIOUS ROUTINES IN LOADER 00030000
  31. * 00031000
  32. * ENTRY CONDITIONS: 00032000
  33. * 00033000
  34. * R4 - NUMBER OF CHARACTERS TO CONVERT 00034000
  35. * R5 - ADDRESS OF HIGH ORDER CHARACTER 00035000
  36. * R0 - RETURN REGISTER 00036000
  37. * R1 - ADDRESS OF DMSLSBA 00037000
  38. * 00038000
  39. * EXIT CONDITIONS: 00039000
  40. * 00040000
  41. * NORMAL - 00041000
  42. * RETURNS VIA R0 WITH CONVERSION DONE 00042000
  43. * 00043000
  44. * ERROR - 00044000
  45. * IF INVALID HEX CHARACTER IS ENCOUNTERED DMSLSBA EXITS 00045000
  46. * TO DMSLDRC IN DMSLDR. 00046000
  47. * 00047000
  48. * CALLS TO OTHER ROUTINES: 00048000
  49. * 00049000
  50. * DMSLDRC - FOR INVALID HEX ADDRESS 00050000
  51. * 00051000
  52. * EXTERNAL REFERENCES: 00052000
  53. * 00053000
  54. * NONE 00054000
  55. * 00055000
  56. * TABLES/WORKAREAS: 00056000
  57. * 00057000
  58. * NONE. 00058000
  59. * 00059000
  60. * REGISTER USAGE: 00060000
  61. * 00061000
  62. * R0 - RETURN 00062000
  63. * R1 - BASE 00063000
  64. * R2 - ERROR EXIT 00064000
  65. * R3,4,5 - WORK 00065000
  66. * 00066000
  67. * OPERATION: 00067000
  68. * 00068000
  69. * 1. IN A SERIES OF TESTS BEGINNING AT LOCATION L1, THE 00069000
  70. * ROUTINE DETERMINES WHETHER THE FIRST HEXADECIMAL 00070000
  71. * CHARACTER TO BE CONVERTED IS A VALID NUMERIC, A VALID 00071000
  72. * ALPHABETIC, OR AN INVALID CHARACTER. 00072000
  73. * 00073000
  74. * 2. IF OPERATION 1 INDICATES THAT THE CHARACTER IS A VALID 00074000
  75. * NUMBERIC CHARACTER (0-9), THE ROUTINE CONVERTS THE 00075000
  76. * HEXADECIMAL CHARACTER TO BINARY BY CLEARING ITS 00076000
  77. * HIGH-ORDER (LEFTMOST) FOUR BITS. THE ROUTINE THEN 00077000
  78. * PERFORMS OPERATION 5, BELOW. 00078000
  79. * 00079000
  80. * 3. IF OPERATION 1 INDICATES THAT THE CHARACTER IS A VALID 00080000
  81. * ALPHABETIC CHARACTER (A-F), THE ROUTINE CONVERTS THE 00081000
  82. * HEXADECIMAL CHARACTER TO BINARY BY SUBTRACTING A 00082000
  83. * CONSTANT FROM THE CHARACTER. THE ROUTINE THEN PERFORMS 00083000
  84. * OPERATION 5, BELOW. 00084000
  85. * 00085000
  86. * 4. IF OPERATION 1 INDICATES THAT THE CHARACTER IS INVALID, 00086000
  87. * | THE ROUTINE BRANCHES TO DMSLDRC. 00087000
  88. * 00088000
  89. * 5. WHEN THE ROUTINE HAS CONVERTED A VALID NUMERIC OR VALID 00089000
  90. * ALPHABETIC CHARACTER TO BINARY FORM, IT SHIFTS THE 00090000
  91. * GENERAL REGISTER IN WHICH IT RETURNS THE ENTIRE 00091000
  92. * CONVERTED NUMBER FOUR BITS TO THE LEFT AND INSERTS THE 00092000
  93. * CONVERTED DIGIT IN THE VACANT LOW-ORDER (RIGHTMOST) 00093000
  94. * FOUR BITS OF THAT REGISTER. 00094000
  95. * 00095000
  96. * 6. THE ROUTINE THEN DETERMINES WHETHER IT HAS CONVERTED 00096000
  97. * ALL THE CHARACTERS THAT WERE PASSED TO IT FOR 00097000
  98. * CONVERSION. IF IT HAS NOT, IT BRANCHES WITHIN ITSELF 00098000
  99. * TO LOCATION L1 AND REPEATS THE CONVERSION PROCESS FOR 00099000
  100. * THE NEXT CHARACTER; OTHERWISE, IT RETURNS TO THE 00100000
  101. * CALLING ROUTINE. 00101000
  102. * 00102000
  103. * EXIT: 00103000
  104. * 00104000
  105. * THIS ROUTINE HAS TWO EXITS: 00105000
  106. * 00106000
  107. * 1. IF THE ROUTINE ENCOUNTERS AN INVALID HEXADECIMAL 00107000
  108. * | CHARACTER, IT EXITS TO DMSLDRC, IN DMSLDR 00108000
  109. * 00109000
  110. * 2. IF THE ROUTINE ENCOUNTERS NO INVALID HEXADECIMAL 00110000
  111. * CHARACTER DURING THE PROCESS OF CONVERTING THE 00111000
  112. * ENTIRE SPECIFIED NUMBER, IT EXITS TO THE ADDRESS 00112000
  113. * CONTAINED IN LOCATION RETT. THIS ADDRESS IS THE 00113000
  114. * RETURN ADDRESS SPECIFIED BY THE LOADER ROUTINE OR 00114000
  115. * PROBLEM PROGRAM THAT LINKED TO THIS ROUTINE. 00115000
  116. * 00116000
  117. * SUBROUTINE NAME: 00117000
  118. * 00118000
  119. * DMSLSBB 00119000
  120. * 00120000
  121. * FUNCTION: 00121000
  122. * 00122000
  123. * ADD TO THE STRING OF LOCATIONS WAITING FOR AN 00123000
  124. * UNDEFINED SYMBOL TO BE DEFINED. 00124000
  125. * 00125000
  126. * ATTRIBUTES: 00126000
  127. * 00127000
  128. * REENTRANT, RESIDENT 00128000
  129. * 00129000
  130. * ENTRY POINTS: 00130000
  131. * 00131000
  132. * DMSLSBB - FROM RLD ROUTINE IN DMSLDR 00132000
  133. * 00133000
  134. * ENTRY CONDITIONS: 00134000
  135. * 00135000
  136. * R3 - LOCATION AT WHICH CONSTANT SHOULD BE STORED 00136000
  137. * R10 - POINTER TO FLAG BYTE 00139000
  138. * R11 - ONE 00140000
  139. * R12 - ENTRY OF SYMBOL IN REFTBL 00141000
  140. * R13 - SAVE AREA LOCATION 00142000
  141. * R14 - RETURN 00143000
  142. * 00144000
  143. * EXIT CONDITIONS: 00145000
  144. * 00146000
  145. * NORMAL - BR ON R14 00147000
  146. * 00149000
  147. * CALLS TO OTHER ROUTINES: 00150000
  148. * 00151000
  149. * DMSFREB 00152000
  150. * 00153000
  151. * EXTERNAL REFERENCES: 00154000
  152. * 00155000
  153. * REFTBL 00156000
  154. * 00157000
  155. * TABLES/WORKAREAS: 00158000
  156. * 00159000
  157. * ACQUIRES CONSTANT BLOCK IF NECESSARY 00160000
  158. * 00161000
  159. * REGISTER USAGE: 00162000
  160. * 00163000
  161. * AS DEFINED IN ENTRY CONDITIONS 00164000
  162. * 00165000
  163. * OPERATION: 00166000
  164. * 00167000
  165. * 2. GET A CONSTANT BLOCK FROM FREE STORAGE AND SET IT UP. 00172000
  166. * 00173000
  167. * 3. RESTORE REGS AND RETURN ON R14. 00174000
  168. * 00175000
  169. * 00182000
  170. * SUBROUTINE NAME: 00183000
  171. * 00184000
  172. * DMSLSBC 00185000
  173. * 00186000
  174. * FUNCTION: 00187000
  175. * 00188000
  176. * TO REMOVE UNDEFINED BIT FROM REFTBL ENTRY AND REPLACE 00189000
  177. * THE ADCON WITH RELOCATED VALUE. @V1D1705 00190100
  178. * 00192000
  179. * ATTRIBUTES: 00193000
  180. * 00194000
  181. * REUSEABLE, RESIDENT 00195000
  182. * 00196000
  183. * ENTRY POINTS: 00197000
  184. * 00198000
  185. * DMSLSBC - TO MOVE CONSTANTS TO CORE LOCATIONS 00199000
  186. * 00200000
  187. * ENTRY CONDITIONS: 00201000
  188. * 00202000
  189. * R1 - ABSOLUTE LOCATION OF SYMBOL 00203000
  190. * R12 - ENTRY ADDRESS IN REFTBL 00204000
  191. * R13 - SAVE AREA 00205000
  192. * R14 - RETURN 00206000
  193. * 00207000
  194. * CALLS TO OTHER ROUTINES: 00208000
  195. * 00209000
  196. * DMSFREB 00211000
  197. * EXTERNAL REFERENCES: 00212000
  198. * 00213000
  199. * REFTBL 00214000
  200. * 00215000
  201. * TABLES/WORKAREAS: 00216000
  202. * 00217000
  203. * NONE 00218000
  204. * 00219000
  205. * REGISTER USAGE: 00220000
  206. * 00221000
  207. * R1,12-14 AS DEFINED IN ENTRY CONDITIONS 00222000
  208. * R2-10,15 WORK 00223000
  209. * R11 BASE 00224000
  210. * 00225000
  211. * OPERATION: 00226000
  212. * 00227000
  213. * 1. CHECK UNDEFINED BIT. IF NOT ON RETURN ON R14. 00228000
  214. * 00229000
  215. * 2. TURN OFF UNDEFINED BIT. 00230000
  216. * 00231000
  217. * 3. ANY CONSTANT BLOCKS? NO, RETURN ON R14. OTHERWISE 00232000
  218. * CONTINUE. 00233000
  219. * 00234000
  220. * 4. CHECK COMP BIT. IF NOT ON ADD ABSOLUTE LOCATION TO 00235000
  221. * VALUE OF CONSTANT. IF ON, SUBTRACT ABSOLUTE LOCATION 00236000
  222. * FROM CONSTANT AND COMPLEMENT TO THE RESULT. 00237000
  223. * 00238000
  224. * 5. MOVE CONSTANT TO MEMORY ADDRESSES FOR THIS CONSTANT 00239000
  225. * BLOCK AND FREE CONSTANT BLOCK. IF ANY MORE C B S GO TO 00240000
  226. * STEP 4. 00241000
  227. * 00242000
  228. * SUBROUTINE NAME: 00243000
  229. * 00244000
  230. * DMSLSBD 00245000
  231. * 00246000
  232. * FUNCTION: 00247000
  233. * 00248000
  234. * SUBROUTINE TO PROCESS LDR OPTIONS. 00249000
  235. * 00250000
  236. * ATTRIBUTES: 00251000
  237. * 00252000
  238. * REENTRANT, NON-RESIDENT 00253000
  239. * 00254000
  240. * ENTRY POINTS: 00255000
  241. * 00256000
  242. * DMSLSBD - FROM DMSLDRB TO PROCESS OPTIONS 00257000
  243. * 00258000
  244. * ENTRY CONDITIONS: 00259000
  245. * 00260000
  246. * R2 - PLIST 00261000
  247. * R13 - ADDRESS OF LDRST 00262000
  248. * R14 - RETURN 00263000
  249. * R15 - ADDRESSABILITY 00264000
  250. * 00265000
  251. * EXIT CONDITIONS: 00266000
  252. * 00267000
  253. * NORMAL - RETURN VIA R14 TO CALLER 00268000
  254. * ERROR - EXIT TO DMSLDRD 00269000
  255. * 00270000
  256. * CALLS TO OTHER ROUTINES: 00271000
  257. * 00272000
  258. * DMSLSBA - FOR HEX TO BINARY CONVERSION OF ORIGIN ADDRESS 00273000
  259. * DMSLDRD - OPTION ERROR 00274000
  260. * 00275000
  261. * EXTERNAL REFERENCES: 00276000
  262. * 00277000
  263. * FREEST NUCON 00278000
  264. * 00279000
  265. * TABLES/WORKAREAS: 00280000
  266. * 00281000
  267. * NONE 00282000
  268. * 00283000
  269. * REGISTER USAGE: 00284000
  270. * 00285000
  271. * R9 NUCON 00286000
  272. * R12 BASE 00287000
  273. * R13 LDRST 00288000
  274. * R14 RETURN 00289000
  275. * R0-5,10-11,15 WORK 00290000
  276. * 00291000
  277. * OPERATION: 00292000
  278. * 00293000
  279. * FOR EACH OPTION IN THE USER'S PLIST A SCAN IS MADE OF 00294000
  280. * AN OPTION TABLE WITHIN THE SUBROUTINE FOR A VALID 00295000
  281. * MATCH. FOR EACH MATCH THE APPROPRIATE BIT IS TURNED 00296000
  282. * ON OR ACTION TAKEN. WHEN ALL OPTIONS ARE PROCESSED 00297000
  283. * RETURN IS MADE TO THE CALLER VIA R1. IF AN OPTION IS 00298000
  284. * NOT LOCATED, AN ERROR MESSAGE IS ISSUED. 00299000
  285. * 00300000
  286. * RESET ENTRY 00301000
  287. * 00302000
  288. * THE STADDR LOCATION WHICH HOLDS THE START EXECUTION 00303000
  289. * ADDRESS IS SET TO ZERO. WHEN THE ADDRESS OF 'ENTRY' 00304000
  290. * IS DETERMINED, IT IS PLACED INTO STADDR. 00305000
  291. * 00306000
  292. * START 00307000
  293. * 00308000
  294. * AFTER LOADING, EXECUTION CONTROL IS TO PASS TO THE 00309000
  295. * ENTRY POINT SPECIFIED BY STADDR. A PSW IS SET WITH 00310000
  296. * THE STADDR LOCATION AS THE INSTRUCTION ADDRESS. 00311000
  297. * AFTER THE LOADER COMPLETES ITS OPERATIONS, THE PSW IS 00312000
  298. * LOADED. 00313000
  299. * 00314000
  300. * CLEAR 00315000
  301. * 00316000
  302. * STORAGE IS ZEROED OUT FROM CURRENT VALUE OF THE 00317000
  303. * LOCATION COUNTER TO THE VALUE OF LOWEXT. 00318000
  304. * 00319000
  305. * SAME 00320000
  306. * 00321000
  307. * (FOR INCLUDE ONLY) INDICATES THAT THE OPTIONS IN 00322000
  308. * EFFECT FOR ANY PREVIOUS LOAD OR INCLUDE COMMAND 00323000
  309. * (EXCEPT FOR ORIGIN) WILL REMAIN IN EFFECT. 00324000
  310. * OTHERWISE, UNSPECIFIED OPTIONS ASSUME THEIR DEFAULT 00325000
  311. * VALUES. SWTICHES REMAIN SET AFTER A LOAD OR INCLUDE 00326000
  312. * COMMAND COMPLETES. 00327000
  313. * 00328000
  314. * ORIGIN ADDRESS|TRANS 00329000
  315. * 00330000
  316. * SPECIFIES THE ADDRESS AT WHICH THE ADDRESS IS PLACED 00331000
  317. * IN LOCCNT. IF TRANS IS ENTERED, THE FILE IS LOADED 00332000
  318. * INTO THE TRANSIENT AREA. IF NO ORIGIN IS SPECIFIED, 00333000
  319. * THE CURRENT VALUE OF LOCCNT IS USED. 00334000
  320. * 00335000
  321. * MAP|NOMAP, AUTO|NOAUTO, NOINV|INV, 00336000
  322. * TYPE|NOTYPE, NOREP|REP, NOLIBE|LIBE 00337000
  323. * 00338000
  324. * SWITCHES ARE SET TO INDICATE IF: A LOAD MAP IS TO BE 00339000
  325. * CREATED; AN AUTOMATIC TEXT FILE SEARCH IS TO OCCUR 00340000
  326. * FOR UNRESOLVED REFERENCES; INVALID AND REP CARDS ARE 00341000
  327. * TO BE INCLUDED IN THE LOAD MPA; THE LOAD MAP IS TO 00342000
  328. * BE TYPED TO THE TERMINAL; TXTLIBS ARE TO BE SEARCHED 00343000
  329. * FOR UNRESOLVED REFERENCES. 00344000
  330. * 00345000
  331. *. 00346000
  332. EJECT 00347000
  333. DMSLSB START 0 @V305665 00348100
  334. ENTRY DMSLSBA @V305665 00348200
  335. ENTRY DMSLSBB,DMSLSBC,DMSLSBD 00349000
  336. EXTRN DMSLDRC,DMSLDRD 00350000
  337. USING LDRST,R13 00351000
  338. USING NUCON,R0 00352000
  339. * 00353000
  340. EJECT 00354000
  341. *********************************************************************** 00355000
  342. * 00356000
  343. * HEX-BIN CONVERSION ROUTINE 00357000
  344. * PLACE THE NUM OF CHAR IN REG-4 00358000
  345. * ADDR OF HIGH ORDER IN REG-5 00359000
  346. * LINKAGE-- L 1,HEXADD 00360000
  347. * RETURN ADDR IN REG-0 00361000
  348. * 00362000
  349. * ANSWER RETURNED IN REG-0 00363000
  350. * 00364000
  351. *********************************************************************** 00365000
  352. * 00366000
  353. DMSLSBA EQU * @V305665 00366100
  354. USING DMSLSBA,R1 00367000
  355. STM R8,R9,APSV+32 SAVE DMSLDR BASE REGS @VA02089 00367100
  356. ST 0,RETT 00368000
  357. SR 3,3 00369000
  358. LR 0,3 00370000
  359. LA R2,HXBINV 00371000
  360. L1 CLI 0(5),C'0' CMP TO VALUE OF ZERO 00372000
  361. BC 4,L3 BR IF NOT 0 THRU 9 00373000
  362. CLI 0(5),C'9' CMP TO VALUE OF NINE 00374000
  363. BCR 3,2 00375000
  364. * CLEAR HIGH ORDER BITS OF CHAR 00376000
  365. IC 3,0(0,5) * 00378000
  366. SH R3,=X'00F0' CLEAR ZONE @VA00857 00378100
  367. L2 SLL 0,4 * 00379000
  368. AR 0,3 * 00380000
  369. LA 5,1(,5) 00381000
  370. BCT 4,L1 00382000
  371. L 2,RETT 00383000
  372. BCR 15,2 00384000
  373. L3 CLI 0(5),C'A' 00385000
  374. BCR 4,2 BR IF VALUE LESS 00386000
  375. CLI 0(5),C'F' 00387000
  376. BCR 3,2 00388000
  377. IC 3,0(0,5) 00389000
  378. SH 3,CONST 00390000
  379. BC 15,L2 00391000
  380. HXBINV LM R8,R9,APSV+32 DMSLDR BASE REGS 00392000
  381. TM RETT,X'F0' CALLED BY DMSLSBD 00393000
  382. BNO LSBDRET YES, SPECIA$ RETURN 00394000
  383. L R2,ABADCRD ERROR ROUTINE IN DMSLDR 00395000
  384. BR R2 00396000
  385. LSBDRET OI RETT,X'80' INDICATE ERROR DURING CONVERSION 00397000
  386. L R2,RETT RETURN ADDRESS 00398000
  387. BR R2 RETURN TO DMSLSBD 00399000
  388. DS 0H 00400000
  389. CONST DC X'00B7' 00401000
  390. DROP 1 00402000
  391. EJECT 00403000
  392. * 00404000
  393. * 00405000
  394. *********************************************************************** 00406000
  395. * 00407000
  396. * APOINT - ADD TO THE POINTER TABLES 00408000
  397. * 00409000
  398. * THIS ROUTINE ADDS TO THE STRING OF LOCATIONS WAITING FOR 00410000
  399. * AN UNDEFINED SYMBOL TO BE DEFINED (BY AN ENTRY POINT OR 00411000
  400. * AN ICS CARD) 00412000
  401. * IT IS REACHED BY A BRANCH FROM THE RLD SUBROUTINE 00413000
  402. * 00414000
  403. * REGISTER USE 00415000
  404. * 00416000
  405. * 3. LOCATION AT WHICH CONSTANT SHOULD BE STORED 00417000
  406. * 10. POINTER TO FLAG BYTE 00420000
  407. * 12. ENTRY OF SYMBOL IN REFTBL 00422000
  408. * 13. SAVE AREA LOCATION 00423000
  409. * 14. RETURN LOCATION 00424000
  410. * 00425000
  411. *********************************************************************** 00426000
  412. * 00427000
  413. DMSLSBB STM R0,R15,APSV SAVE REGISTERS @V1D1705 00428100
  414. USING DMSLSBB,R7 @V1D1705 00428200
  415. DMSFREE DWORDS=1,TYPCALL=BALR @V1D1705 00428300
  416. L R8,12(,R12) GET PATCH BLOCK CHAIN BEGINNING @V1D1705 00428400
  417. ST R1,12(R12) QUEUE NEW BLOCK @V1D1705 00428500
  418. ST R8,0(R1) FOWARD PTR IF ANY @V1D1705 00428600
  419. ST R3,4(R1) LOCATION OF ADCON @V1D1705 00428700
  420. MVC 4(1,R1),0(R10) SAVE RLD FLAG BYTE @V1D1705 00428800
  421. NI 4(R1),X'0E' BUT ONLY LENGTH AND SIGN @V1D1705 00428900
  422. LM R0,R15,APSV RESTORE REGISTERS @V1D1705 00429000
  423. BR R14 RETURN TO DMSLDR @V1D1705 00429100
  424. EJECT 00474000
  425. * 00475000
  426. *********************************************************************** 00476000
  427. * 00477000
  428. * ADDEF - SUBROUTINE TO REMOVE UNDEFINED BIT FROM REFTBL AND 00478000
  429. * REPLACE THE STRING ADDRESSES WITH THEIR PROPER VALUE 00479000
  430. * 00480000
  431. * REGISTER SETTINGS UPON ENTRY 00481000
  432. * 1. ABSOLUTE LOCATION OF SYMBOL 00482000
  433. * 12. ENTRY POINT IN REFTBL 00483000
  434. * 13. SAVE AREA LOCATION 00484000
  435. * 14. RETURN 00485000
  436. * 00486000
  437. *********************************************************************** 00487000
  438. DMSLSBC TM 8(R12),X'80' IS NAME UNDEFINED @V1D1705 00488100
  439. BCR 8,R14 NO, RETURN @V1D1705 00488200
  440. NI 8(R12),X'7F' YES, RESET IT @V1D1705 00488300
  441. STM R0,R15,APSV SAVE REGISTERS @V1D1705 00488400
  442. BALR R11,0 @V1D1705 00488500
  443. USING *,R11 @V1D1705 00488600
  444. L R10,12(,R12) PTR TO 1ST PCB @V1D1705 00488700
  445. LTR R10,R10 ANY PCB'S @V1D1705 00488800
  446. BZ ADRET NO, RETURN @V1D1705 00488900
  447. LR R2,R1 PROTECT RH ADDRESS @V1D1705 00489000
  448. LOOP SR R5,R5 GET A ZERO @V1D1705 00489100
  449. ST R5,TMPLOC CLEAR WORK AREA @V1D1705 00489200
  450. IC R5,4(R10) GET RLD FLAG BYTE @V1D1705 00489300
  451. SRL R5,2 LENGTH BITS TO LOW ORDER @V1D1705 00489400
  452. LA R6,TMPLOC+3 SET ADJUCTED WORK PTR @V1D1705 00489500
  453. SR R6,R5 R5 HAS ADCON LENGTH-1 @V1D1705 00489600
  454. L R3,4(R10) GET LOCATION OF ADCON @V1D1705 00489700
  455. EX R5,GETVAL MOVE ADCON VALUE TO WORK AREA @V1D1705 00489800
  456. LR R8,R2 GET REFERENCED ADDR. @V1D1705 00489900
  457. TM 4(R10),X'02' IS ADCON VALUE TO BE ADDED @V1D1705 00490000
  458. BZ CALC YES @V1D1705 00490100
  459. LNR R8,R2 COMPLEMENT REFERENCED ADDR. @V1D1705 00490200
  460. CALC A R8,TMPLOC ADD TO ADCON VALUE @V1D1705 00490300
  461. ST R8,TMPLOC PLACE IN WORK AREA @V1D1705 00490400
  462. EX R5,STVAL MOVE ADCON VALUE TO ADCON LOCATIO@V1D1705 00490500
  463. LR R1,R10 SET TO FREE PCB @V1D1705 00490600
  464. L R10,0(,R10) NEXT PCB @V1D1705 00490700
  465. DMSFRET DWORDS=1,TYPCALL=BALR,LOC=(1) @V1D1705 00490800
  466. LTR R10,R10 ANY MORE PCB'S @V1D1705 00490900
  467. BNZ LOOP YES @V1D1705 00491000
  468. ADRET LM R0,R15,APSV RESTORE REGISTERS @V1D1705 00491100
  469. BR R14 RETURN TO DMSLDR @V1D1705 00491200
  470. SPACE 1 @V1D1705 00491300
  471. GETVAL MVC 0(*-*,R6),0(R3) MOVE FROM ADCON LOCATION @V1D1705 00491400
  472. STVAL MVC 0(*-*,R3),0(R6) MOVE BACK @V1D1705 00491500
  473. SPACE 1 @V1D1705 00491600
  474. ABADCRD DC A(DMSLDRC) 00548000
  475. EJECT 00550000
  476. DMSLSBD EQU * 00551000
  477. USING *,R12 00552000
  478. LR R12,R15 00553000
  479. ST R14,APSV+56 SAVE R14 00554000
  480. NI MODFLGS,255-CLEAROP RESET CLEAR OPTION FIELD @VA02440 00554100
  481. FNDOPT EQU * @VA09710 00555000
  482. CLI 0(R2),X'FF' IF AT END OF LIST @VA09710 00555500
  483. BE INCPTR1 GO SAVE ADDRESS @VA09710 00556000
  484. CLI 0(R2),C'(' LEFT PAREN ? @VA09710 00556500
  485. BE PARKILL GO PROCESS OPTIONS @VA09710 00557000
  486. LA R2,8(R2) ELSE, POINT TO NEXT PARM @VA09710 00557500
  487. B FNDOPT AND GO CHECK IT. @VA09710 00558000
  488. PSTART LA R3,CONSPAR OPTION LIST 00561000
  489. LA R4,12 LENGTH 00562000
  490. LA R5,CONSEND END OF OPTION LIST 00563000
  491. XPARLP CLC 0(8,2),0(3) COMPARE PARAM TO LIST 00564000
  492. BE PARFND FOUND - PROCESS 00565000
  493. BXLE 3,4,XPARLP BACK FOR ANOTHER 00566000
  494. MVC OUTBUF(8),0(R2) INVALID OPTION TO MSG BUFFER 00567000
  495. LM R0,R9,APSV RESTORE SOME REGS 00568000
  496. LA R5,ERR404E ERROR CODE FOR DMSLIO 00569000
  497. L R15,ADMSLDRD ADR OF FATAL ERROR RTN 00570000
  498. BR R15 TYPE MSG AND TERMINATE 00571000
  499. PARKILL LA R2,8(0,R2) NEXT OPTION 00572000
  500. CLI 0(2),X'FF' END OF LIST? 00573000
  501. BE INCPTR1 YES, END OF OPTIONS 00574000
  502. CLI 0(R2),C')' END OF LIST ? 00575000
  503. BNE PSTART NO - KEEP AT IT 00576000
  504. LA R2,8(,R2) GET TO PARAM FOR XEQ @VA00896 00577100
  505. INCPTR1 ST R2,FRSTSDID SAVE END ADDR FOR EXECUTION @VA00896 00577200
  506. TM MODFLGS,CLEAROP CLEAR OPTION? @VA02440 00577400
  507. BO CLRCOR YES, CLEAR AREA @VA02440 00577500
  508. RESTREGS LM R0,R15,APSV RESTORE REGISTERS @VA02440 00577600
  509. BR R14 YES EXIT TO INIT CARD READ 00578000
  510. SPACE 00579000
  511. PARFND EX 0,8(0,3) PERFORM APPROPRIATE ACTION 00580000
  512. B PARKILL NEXT USER OPTION 00581000
  513. SPACE 3 00582000
  514. CLRCOR STM 0,12,APSV SAVE R0 THRU R12, JS 00583000
  515. L R11,LOCCT GET FIRST LOCATION @VA02440 00584400
  516. LA R11,0(,R11) MAKE SURE NO HI-ORDER BYTE @VA02440 00584800
  517. C R11,ADTRANS CLEAR TRANS. AREA? @VA02440 00585200
  518. BNE CONTINUE NO, CONTINUE PROCESSING @VA02440 00585600
  519. L R10,ALAST POINT TO END OF TRANS. AREA @VA02440 00586000
  520. B RDDOWN @VA02440 00586400
  521. CONTINUE C R11,FREELOWE GREATER THAN FREELOWE? @VA03976 00586800
  522. BNL RESTREGS YES, ERROR @VA03976 00586900
  523. ST R11,MAINHIGH INITIALIZE MAINHIGH @VA03976 00587000
  524. LA R11,4096-1(,R11) ADD (PAGE-1) VALUE @VA02440 00587200
  525. N R11,=X'00FFF000' TRUNCATE TO PAGE BDRY @VA02440 00587600
  526. L R10,FREELOWE LOW EXTENT INTO R10 @VA02440 00588000
  527. RDDOWN SRL R10,12 @VA02440 00588400
  528. BCTR R10,0 SUBTRACT 1 @VA02440 00588800
  529. SLL R10,12 TRUNCATE TO PAGE BDRY @VA02440 00589200
  530. CR R11,R10 PAGE GREATER? @VA04106 00589400
  531. BNH REL NO, RELEASE THOSE PAGES @VA04106 00589500
  532. L R11,FREELOWE GET UPPER EXTENT @VA04106 00589600
  533. B NOREL CLEAR THE REST @VA04106 00589700
  534. REL DC X'83BA0010' RELEASE PAGES @VA04106 00589800
  535. C R11,ADTRANS BEGINNING OF TRANS AREA? @VA02440 00590000
  536. BE RESTREGS YES, GO RESTORE REGS @VA02440 00590400
  537. NOREL L R10,MAINHIGH GET MAINHIGH @VA04106 00590500
  538. SR R11,R10 COMPUTE DIFFERENCE @VA04106 00591500
  539. COMPU S R11,=F'255' SUBTRACT LENGTH FOR 'XC' @VA04106 00592500
  540. BNP USEEX USE EXISTING VALUE @VA04106 00593500
  541. XC 0(255,R10),0(R10) CLEAR AREA @VA04106 00594500
  542. A R10,=F'255' GET NEXT POSITION @VA04106 00595500
  543. B COMPU COMPUTE MORE @VA04106 00596500
  544. USEEX A R11,=F'254' RESTORE ORIGINAL VALUE - 1 @VA04106 00597500
  545. BM RESTREGS YES, GET OUT @VA04106 00598500
  546. EX R11,MOVEIT DO MOVE @VA04106 00599500
  547. B RESTREGS RESTORE REGISTERS @VA02440 00600500
  548. MOVEIT XC 0(*-*,R10),0(R10) CLEAR AREA @VA04106 00600600
  549. SPACE 00602000
  550. CONSLC LA R2,8(0,R2) GET TO PARAMETER FOR ORIGIN 00603000
  551. STM 0,6,APSV SAVE 00604000
  552. CLC 0(8,R2),=CL8'TRANS' ORIGIN TRANS ? 00605000
  553. BE TRANS YES 00606000
  554. LA R5,8 SET FOR DEC @VA02855 00606300
  555. LR R4,R2 SAVE R4 FOR LIO IN CASE @VA02855 00606600
  556. SR R4,R5 DEC FOR LIO IN CASE (POINT TO @VA02855 00606900
  557. * CORRECT PLACE) 00607200
  558. MVC OUTBUF(8),0(R4) MOVE TO MESSAGE AREA @VA02855 00607500
  559. LA R5,58 00609000
  560. CLI 0(R2),X'FF' ORIGIN SPECIFIED 00610000
  561. BE ERRXT NO, ERROR 00611000
  562. CLI 0(R2),C')' 00612000
  563. BE ERRXT 00613000
  564. LR R4,R2 SET R4 TO ADDR. PORTION @V1D1705 00614100
  565. ORGLP CLI 0(R4),C' ' END OF GRAPHICS @V1D1705 00614200
  566. BE ENDLP YES @V1D1705 00614300
  567. LA R4,1(,R4) SET TO NEXT CHAR. @V1D1705 00614400
  568. SR R4,R2 GET LENGTH TO DATE @V1D1705 00614500
  569. CH R4,=H'8' CHECK FOR LIMIT @V1D1705 00614600
  570. BE ENDLP1 LAST CHAR. @V1D1705 00614700
  571. AR R4,R2 RESTORE POINTER @V1D1705 00614800
  572. B ORGLP NEXT CHAR. @V1D1705 00614900
  573. ENDLP SR R4,R2 LENGTH OF ADDRESS @V1D1705 00615000
  574. ENDLP1 LR R5,R2 ADDRESS OF GRAPHICS @V1D1705 00615100
  575. B SLCA COMMON CODE 00618000
  576. TRANS SR R0,R0 ZERO IT @VA02440 00619500
  577. LM R10,R11,ADTRANS 00621000
  578. ST R0,LASTTMOD CLEAR TRANSAREA NAME 00622000
  579. ST R10,LOCCT SET LOC. CTR. 00623000
  580. OI MODFLGS,CLEAROP SET CLEAR FLAG @VA02440 00624300
  581. TM FLAGS,RESET RESET OPTION ON? @VA02440 00624600
  582. BO PARKILL YES @VA02440 00624900
  583. ST R10,BRAD SET STARTING ADDRESS @VA02440 00625200
  584. B PARKILL DO NEXT OPTION @VA02440 00625500
  585. SLCA MVC OUTBUF(8),0(R2) SET FOR MSG SUBSTITUTION @VA01241 00626100
  586. L R1,=A(DMSLSBA) ADDR OF HEX-BINARY CONVERSION 00627000
  587. SR R0,R0 CLEAR R0 00628000
  588. LA R0,RETSLC RETURN FROM DMSLSBA 00629000
  589. BR R1 CONVERT GRAPHICS TO HEX 00630000
  590. RETSLC LTR R2,R2 CHECK R2 00631000
  591. BM ERRSLC IF MINUS THE GRAPHICS WERE INVALID 00632000
  592. TM BATFLAGS,BATLOAD BATCH BEING LOADED? @VA01284 00633100
  593. BO ORIGOK IF SO, ALLOW LOW LOAD @VA01284 00633200
  594. TM MODFLGS,SYSLOAD SYSTEM FUNCTION ? @VA04666 00633210
  595. BO ORIGOK IF SO, ALLOW LOAD @VA04666 00633220
  596. C R0,=XL4'00FFFFFF' IS THIS A VALID ADDRESS? @VA03976 00633230
  597. BH ERRSLC NO, INVALID ORIGIN @VA03976 00633260
  598. C R0,AUSRAREA ARE WE BELOW USER STORAGE ? @VA01284 00633300
  599. BNL ORIGOK IF NOT, WE ARE OKAY @VA01284 00633400
  600. C R0,ALAST ABOVE TRANSIENT AREA? @V305665 00633550
  601. BNL ERRSLC IF ABOVE, INVALID ORIGIN @VA01284 00633600
  602. C R0,ADTRANS BELOW TRANSIENT AREA? @V305665 00633750
  603. BL ERRSLC IF SO, INVALID ORIGIN @VA01284 00633800
  604. ORIGOK ST R0,LOCCT STORE BIN ADDR IN LOC COUNTER @VA01284 00633900
  605. LM R0,R6,APSV RESTORE USED REGS 00634000
  606. B PARKILL DO NEXT OPTION 00635000
  607. ERRSLC LA R5,ERR429E ERROR CODE FOR DMSLIO 00636000
  608. ERRXT L R15,ADMSLDRD FATAL ERROR ROUTINE 00637000
  609. LM R8,R9,APSV+32 DMSLDR BASE REGS 00638000
  610. BR R15 GO TERMINATE WITH ERROR MSG 00639000
  611. RESET1 LA R2,8(R2) POINT TO ENTRY NAME 00640000
  612. MVC OUTBUF(16),RSTSUB IN CASE OF ERROR 00641000
  613. LA R5,58 00642000
  614. CLI 0(R2),X'FF' RESET ENTRY SPECIFIED 00643000
  615. BE ERRXT NO, ERROR 00644000
  616. CLI 0(R2),C')' 00645000
  617. BE ERRXT 00646000
  618. XC STRTADDR(4),STRTADDR CLEAR STARTING ADDRESS FIELD 00647000
  619. XC BRAD(4),BRAD CLEAR LOADER'S COPY ALSO V0038 00647100
  620. NI FLAG1,255-(ENDCDADR+FSTXTADR) ALLOW END CARD ADDRESS 00648000
  621. * AND FIRST TEXT ADR. 00649000
  622. CLC 0(2,R2),=C'* ' DEFAULT REQUESTED 00650000
  623. BE PARKILL YES 00651000
  624. CLI 0(R2),X'FF' ENTRY SPECIFIED ? 00652000
  625. BE INCPTR1 NO 00653000
  626. MVC ENTNAME(8),0(R2) SAVE THE ENTRY NAME 00654000
  627. OI FLAGS,RESET INDICATE ENTRY TO BE RESET 00655000
  628. OI FLAG1,ENDCDADR NO END CARD ADDRESS ALLOWED 00656000
  629. OI FLAG1,FSTXTADR DON'T ALLOW 1ST TEXT ADDRESS V0038 00656100
  630. B PARKILL CONTINUE OPTION PROCESSING 00657000
  631. * JS 00658000
  632. EJECT 00659000
  633. CONSPAR DS 0H 00660000
  634. DC CL8'RESET' RESET 00661000
  635. B RESET1 00662000
  636. DC CL8'NOAUTO' NOAUTO 00663000
  637. OI FLAG2,NOAUTO 00664000
  638. DC CL8'NOCLEAR' NOCLEAR 00665000
  639. NI MODFLGS,X'FF'-CLEAROP RESET CLEAR OPTION @VA10593 00666000
  640. DC CL8'CLEAR' CLEAR 00667000
  641. OI MODFLGS,CLEAROP SET CLEAR OPTION @VA02440 00668300
  642. DC CL8'START' START 00669000
  643. OI FLAGS,START 00670000
  644. DC CL8'NOMAP' NOMAP 00671000
  645. OI FLAG2,NOMAP 00672000
  646. DC CL8'ORIGIN' ORIGINXXXXX 00673000
  647. B CONSLC 00674000
  648. DC CL8'MAP' MAP 00675000
  649. NI FLAG2,255-NOMAP 00676000
  650. DC CL8'LIBE' 00677000
  651. NI FLAG2,255-NOLIBE 00678000
  652. DC CL8'NOLIBE' NOLIBE 00679000
  653. OI FLAG2,NOLIBE 00680000
  654. DC CL8'AUTO' AUTO 00681000
  655. NI FLAG2,255-NOAUTO 00682000
  656. DC CL8'TYPE' TYPE 00683000
  657. OI FLAG2,TYPE 00684000
  658. DC CL8'NOTYPE' NOTYPE 00685000
  659. NI FLAG2,255-TYPE 00686000
  660. DC CL8'NOINV' NOINV 00687000
  661. OI FLAG2,NOINV 00688000
  662. DC CL8'NOREP' NOREP 00689000
  663. OI FLAG2,NOREP 00690000
  664. DC CL8'INV' INV 00691000
  665. NI FLAG2,255-NOINV 00692000
  666. DC CL8'REP' REP 00693000
  667. NI FLAG2,255-NOREP 00694000
  668. DC CL8'DUP' DUP @VM08875 00694100
  669. NI FLAG1,255-NODUP @VM08875 00694200
  670. DC CL8'NODUP' NODUP @VM08875 00694300
  671. OI FLAG1,NODUP @VM08875 00694400
  672. CONSEND EQU *-8 00695000
  673. RSTSUB DC CL16'RESET ENTRY' 00696000
  674. ORGSUB DC CL16'ORIGIN' 00697000
  675. ADTRANS DC X'0000E000' TRANSIENT START @V305665 00698100
  676. ALAST DC X'00010000' TRANSIENT END @V305665 00698200
  677. ADMSLDRD DC V(DMSLDRD) 00700000
  678. ERR404E EQU 40 00701000
  679. ERR429E EQU 42 00702000
  680. REGEQU 00710000
  681. EJECT 00711000
  682. LDRST 00712000
  683. EJECT 00713000
  684. NUCON 00714000
  685. END 00715000
ibm/vm370-lib/cms/dmslsb.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator