User Tools

Site Tools


ibm:vm370-lib:cp:dmkld00e.assemble_src

DMKLD00E Source

References

Source Listing

DMKLD00E.ASSEMBLE.txt
  1. LD00E TITLE 'DMKLD00E (CP) VM/370 - RELEASE 6' 00001000
  2. PUNCH 'SLC 002000' 00002000
  3. * 00003000
  4. * THE LOADER HAS BEEN MODIFIED TO HANDLE ASSEMBLER AND 00004000
  5. * FORTRAN OUTPUT FROM BPS, BOS, AND OS ASSEMBLERS AND 00005000
  6. * COMPILERS. THE ORDER THE DECKS ARE LOADED IS NOT 00006000
  7. * IMPORTANT. LOADING WILL START AT X'100' UNLESS 00007000
  8. * MODIFIED VIA AN 'SLC' CARD. THE LOADER WILL NOT PERMIT 00008000
  9. * ITSELF OR THE BOTTOM 128 LOCATIONS OF CORE TO BE 00009000
  10. * OVERLAID BY INCOMING TEXT. IT WILL, HOWEVER, ALLOW 00010000
  11. * THE DEFINITION OF CONTROL SECTIONS SPANNING THIS AREA. 00011000
  12. * 00012000
  13. * MODIFIED FOR BETTER I/O HANDLING AND TO PERMIT CHOICE 00013000
  14. * OF PRINTER AND READER DYNAMICALLY. ALSO, 'SKIP' OPTION 00014000
  15. * INCLUDED TO PERMIT SELECTIVE REPLACEMENT OF MODULES 00015000
  16. * FROM PRESTORED TAPE. NEW CTL CARDS ARE 'RDR XXX', WTR 00016000
  17. * XXX', AND 'SKIP NAME '. GOOD LUCK! 00017000
  18. * 00018000
  19. *********************************************************************** 00019000
  20. * 00020000
  21. * THE RELOCATING LOADER CAN LOAD ASSEMBLED 00021000
  22. * PROGRAM MODULES INTO STORAGE AT LOCATIONS 00022000
  23. * OTHER THAN THOSE ASSIGNED BY THE ASSEMBLER-- 00023000
  24. * IT COMPLETES LINKAGE AMONG THE MODULES SO 00024000
  25. * THAT ONE PROGRAM MODULE MAY REFER TO ANOTH- 00025000
  26. * ER-- IT ALLOWS CORRECTIONS OR ADDITIONS TO 00026000
  27. * BE MADE TO THE PROGRAM AT LOAD TIME-- AND IT 00027000
  28. * TRANSFERS CONTROL TO ONE OF THE LOADED 00028000
  29. * MODULES FOR EXECUTION. 00029000
  30. * 00030000
  31. * THE OPERATION OF THIS PROGRAM, EXCEPT AS 00031000
  32. * NOTED BELOW, DEPENDS UPON AN INTERNAL REPRE- 00032000
  33. * SENTATION OF THE EXTERNAL CHARACTER SET 00033000
  34. * WHICH IS EQUIVALENT TO THE ONE USED AT AS- 00034000
  35. * SEMBLY TIME. THE CODING HAS BEEN ARRANGED SO 00035000
  36. * THAT REDEFINITION OF CHARACTER CONSTANTS, BY 00036000
  37. * REASSEMBLY, WILL RESULT IN A CORRECT MODULE 00037000
  38. * FOR THE NEW DEFINITIONS. 00038000
  39. * 00039000
  40. * THOSE STATEMENTS MARKED WITH AN * 00040000
  41. * 71 BELOW DO NOT DEPEND UPON A PARTICULAR IN- 00041000
  42. * TERNAL REPRESENTATION OF THE EXTERNAL CHAR- 00042000
  43. * ACTER SET EXCEPT THAT THE DECIMAL NUMBERS 00043000
  44. * MUST BE CODED SO THAT THE LOW ORDER FOUR 00044000
  45. * BITS, WHEN CONSIDERED AS A BINARY INTEGER, 00045000
  46. * IDENTIFY THE VALUE OF THAT DIGIT. 00046000
  47. * 00047000
  48. * THE CONSTANT MARKED WITH A DOUBLE * 00048000
  49. * COLUMNS 70 AND 71 REPRESENT THE DIFFERENCE 00049000
  50. * BETWEEN THE HEXIDECIMAL VALUE OF THE NUMBER 00050000
  51. * A AND THE INTERNAL BINARY VALUE OF THE CHAR- 00051000
  52. * ACTER A, AND MUST BE ALTERED SHOULD THE IN- 00052000
  53. * TERNAL REPRESENTATIONS OF THE LETTERS A 00053000
  54. * THROUGH F CHANGE. 00054000
  55. * 00055000
  56. * THE CONSTANTS WITH *** IN COL. 00056000
  57. * THE X'02' EQUAL A T-2-9 PUNCH AND MUST BE 00057000
  58. * MODIFIED IF THE PROPERTIES OF THE CHARACTER 00058000
  59. * SET ARE CHANGED. 00059000
  60. * 00060000
  61. *********************************************************************** 00061000
  62. EJECT 00062000
  63. RELDR START 8192 00063000
  64. ENTRY LDRGEN 00064000
  65. ALPHA DS 0D 00065000
  66. DS 0D ALIGNMENT 00066000
  67. * 00067000
  68. MON EQU * 00068000
  69. * 00069000
  70. *********************************************************************** 00070000
  71. * 00071000
  72. * APOINT - ADD TO THE POINTER TABLES 00072000
  73. * 00073000
  74. * THIS ROUTINE ADDS TO THE STRING OF LOCATIONS WAITING FOR 00074000
  75. * AN UNDEFINED SYMBOL TO BE DEFINED (BY AN ENTRY POINT OR 00075000
  76. * AN ICS CARD) 00076000
  77. * IT IS REACHED BY A BRANCH FROM THE RLD SUBROUTINE 00077000
  78. * 00078000
  79. * REGISTER USE 00079000
  80. * 00080000
  81. * 3. LOCATION AT WHICH CONSTANT SHOULD BE STORED 00081000
  82. * 4. CURRENT VALUE OF CONSTANT 00082000
  83. * 5. BYTE COUNT - 1 (LENGTH OF CONSTANT) 00083000
  84. * 10. POINTER TO FLAG BYTE 00084000
  85. * 11. ONE 00085000
  86. * 12. ENTRY OF SYMBOL IN REFTBL 00086000
  87. * 13. SAVE AREA LOCATION 00087000
  88. * 14. RETURN LOCATION 00088000
  89. * 00089000
  90. *********************************************************************** 00090000
  91. * 00091000
  92. APOINT STM 0,15,APSV(13) 00092000
  93. BALR 6,0 00093000
  94. USING *,6 ESTABLISH ADDRESSABILITY 00094000
  95. L 9,SECBASE 00095000
  96. L 6,RLDR 00096000
  97. USING RELDR,6,9 00097000
  98. SR 2,2 ZERO OUT REGISTER 2 00098000
  99. LA 0,2 LOAD REG 0 WITH TWO 00099000
  100. CR 5,0 IS BYTE COUNT EQUAL TO THREE 00100000
  101. BC 8,APOIN9 YES 00101000
  102. LA 3,0(,3) INSURE THAT FIRST BYTE IS ALL ZERO 00102000
  103. O 3,ONEBIT NO - SET A MINUS BIT IN LOC. POINTER 00103000
  104. APOIN9 NC 13(3,12),13(12) ANY MORE BLOCKS 00104000
  105. BZ APOIN1 00105000
  106. L 12,12(,12) 00106000
  107. B APOIN9 00107000
  108. APOIN1 L 15,AFREE YES - GET TWO DOUBLE WORDS OF STORAGE 00108000
  109. BALR 14,15 00109000
  110. O 1,12(,12) LEAVE COMP. FLAG INTACT 00110000
  111. ST 1,12(,12) STORE THE LOCATION OF THE DOUBLE WORDS 00111000
  112. ST 4,0(,1) IN POINTER AND STORE CONSTANT 00112000
  113. ST 3,4(,1) SET UP FIRST LOCATION POINTER 00113000
  114. ST 3,8(,1) AND LAST LOCATION POINTER 00114000
  115. ST 2,12(,1) MAKE POINTER TO NEXT BLOCK EQUAL ZERO 00115000
  116. TM 0(10),X'02' IS COMP. FLAG ON 00116000
  117. BC 8,APOIN2 NO 00117000
  118. MVI 12(1),X'02' 00118000
  119. APOIN2 LM 0,15,APSV(13) RESTORE REGISTERS 00119000
  120. BCR 15,14 AND RETURN TO CALLER 00120000
  121. RLDR DC A(RELDR) 00121000
  122. SECBASE DC A(RELDR+4096) 00122000
  123. * 00123000
  124. DROP 6 00124000
  125. EJECT 00125000
  126. *********************************************************************** 00126000
  127. * 00127000
  128. * ADDEF - SUBROUTINE TO REMOVE UNDEFINED BIT FROM REFTBL AND 00128000
  129. * REPLACE THE STRING ADDRESSES WITH THEIR PROPER VALUE 00129000
  130. * 00130000
  131. * REGISTER SETTINGS UPON ENTRY 00131000
  132. * 1. ABSOLUTE LOCATION OF SYMBOL 00132000
  133. * 12. ENTRY POINT IN REFTBL 00133000
  134. * 13. SAVE AREA LOCATION 00134000
  135. * 14. RETURN 00135000
  136. * 00136000
  137. *********************************************************************** 00137000
  138. * 00138000
  139. ADDEF TM 8(12),X'80' IS UNDEFINED BIT ON 00139000
  140. BCR 8,14 NO - RETURN TO CALLER 00140000
  141. NI 8(12),X'7F' YES - TURN IT OFF 00141000
  142. L 10,12(,12) POINTER TO FIRST CONSTANT 00142000
  143. LTR 10,10 IS THERE A POINTER 00143000
  144. BCR 8,14 NO - RETURN TO CALLER 00144000
  145. STM 0,15,APSV(13) YES - SAVE REGISTERS 00145000
  146. BALR 11,0 ESTABLISH ADDRESSABILITY 00146000
  147. USING *,11 00147000
  148. SR 2,2 ZERO OUT REG 2 00148000
  149. LR 3,1 PUT ABS LOCATION IN REG 3 00149000
  150. ADDEF7 LR 6,10 SAVE POINTER TO FIRST CONSTANT 00150000
  151. L 8,4(,10) ADCON CORE LOC. 00151000
  152. LTR 8,8 00152000
  153. BM GETVAL4 4 BYPE 00153000
  154. MVC 1(3,10),0(8) GET 3-BYTE VALUE 00154000
  155. B EVAL 00155000
  156. GETVAL4 MVC 0(4,10),0(8) GET 4-BYTE VALUE 00156000
  157. EVAL DS 0H 00157000
  158. LM 7,10,0(10) REG 7 CONTAINS THE CONSTANT 00158000
  159. * REG 8 HAS FIRST MEM LOCATION 00159000
  160. * REG 9 HAS LAST MEM LOCATION 00160000
  161. * REG 10 HAS POINTER TO NEXT CONSTANT 00161000
  162. LR 5,9 LOAD REG 5 WITH LAST MEN LOCATION 00162000
  163. L 9,APSV+36(13) RESTORE 2ND BASE REG. 00163000
  164. TM 12(6),X'02' IS COMP. FLAG ON 00164000
  165. BC 8,ADDEF1 NO 00165000
  166. SR 7,3 00166000
  167. ST 7,TEMPST(,13) STORE LOCATION TEMPORARILY 00167000
  168. BC 15,ADDEF2 00168000
  169. ADDEF1 AR 7,3 VALUE OF THE SYMBOL 00169000
  170. ST 7,TEMPST(,13) STORE VALUE TEMPORARILY 00170000
  171. ADDEF2 LTR 8,8 IS THE LOCATION FOUR BYTES LONG 00171000
  172. BC 4,ADDEF8 YES - BRANCH 00172000
  173. MVC TMPLOC+1(3,13),0(8) N0 - MOVE ADDRESS PTR 00173000
  174. TM TMPLOC+1(13),X'80' IS NEXT ADDR 4 BYTES 00174000
  175. BC 7,SIGN YES 00175000
  176. NI TMPLOC(13),0 00176000
  177. ADDMOV MVC 0(3,8),TEMPST+1(13) MOVE IN CONST 00177000
  178. BC 15,ADDEF9 AND CHECK NEXT ADDR 00178000
  179. SIGN OI TMPLOC(13),X'80' TURN ON SIGN BIT 00179000
  180. NI TMPLOC+1(13),X'7F' AND TURN OFF SIGN BIT IN 00180000
  181. * SECOND BYTE. 00181000
  182. BC 15,ADDMOV GO MOVE IN CONSTANT 00182000
  183. ADDEF8 MVC TMPLOC(4,13),0(8) MOVE NEW ADDRESS TO TEMP LOC. 00183000
  184. MVC 0(4,8),TEMPST(13) MOVE IN CONSTANT 00184000
  185. ADDEF9 CLR 8,5 00185000
  186. BC 8,ADDEF6 YES - PICK UP POINTER TO NEXT CPMSTAMT 00186000
  187. L 8,TMPLOC(,13) NO - PICK UP NEXT MEMORY LOCATION 00187000
  188. BC 15,ADDEF2 AND GO WORK ON NEXT LOCATION 00188000
  189. ADDEF6 LA 0,2 NO OF DOUBLE WORDS TO GIVE BACK 00189000
  190. LR 1,6 LOCATION WE ARE THROUGH WITH 00190000
  191. L 15,AFRETX 00191000
  192. BALR 14,15 AND BRANCH TO FRET 00192000
  193. LA 10,0(,10) 00193000
  194. LTR 10,10 00194000
  195. BC 7,ADDEF7 NO - GO TO NEXT AREA 00195000
  196. LM 0,15,APSV(13) YES - RESTORE REGISTERS 00196000
  197. BCR 15,14 AND RETURN 00197000
  198. * 00198000
  199. DROP 11 00199000
  200. EJECT 00200000
  201. ********************************************************************** 00201000
  202. * 00202000
  203. * HEX-BINARY CONVERSION ROUTINE 00203000
  204. * 00204000
  205. * PLACE THE NUMBER OF CHARACTERS IN REG 4 00205000
  206. * ADDRESS OF HIGH ORDER IN REG 5 00206000
  207. * LINKAGE-- L 1,HEXADD 00207000
  208. * RETURN ADDRESS IN REG 0. 00208000
  209. * BALR 0,1 00209000
  210. * ANSWER RETURNED IN REG 0 00210000
  211. * 00211000
  212. * 00212000
  213. ********************************************************************** 00213000
  214. * 00214000
  215. HEXB EQU * 00215000
  216. USING HEXB,1 00216000
  217. ST 0,RETT(,13) 00217000
  218. SR 3,3 00218000
  219. LR 0,3 00219000
  220. LA 2,ERR2 00220000
  221. L1 CLI 0(5),C'0' CMP TO VALUE OF ZERO 00221000
  222. BC 4,L3 BR IF NOT 0 THRU 9 00222000
  223. CLI 0(5),C'9' CMP TO VALUE OF NINE 00223000
  224. BCR 3,2 ERROR. 00224000
  225. * CLEAR HIGH ORDER BITS OF CHAR 00225000
  226. NI 0(5),X'0F' * 00226000
  227. IC 3,0(0,5) * 00227000
  228. L2 SLL 0,4 * 00228000
  229. AR 0,3 * 00229000
  230. LA 5,1(,5) 00230000
  231. BCT 4,L1 00231000
  232. L 2,RETT(,13) 00232000
  233. BCR 15,2 00233000
  234. L3 CLI 0(5),C'A' 00234000
  235. BCR 4,2 BR IF VALUE LESS 00235000
  236. CLI 0(5),C'F' 00236000
  237. BCR 3,2 ERROR. 00237000
  238. IC 3,0(0,5) 00238000
  239. SH 3,CONST 00239000
  240. BC 15,L2 00240000
  241. ERR2 MVC CDIMJ(80),SPEC(13) 00241000
  242. LA 7,SPEC+5(,13) LET REGISTER FIVE HOLD NO. OF POSITIONS 00242000
  243. SR 5,7 IN REP CARD TO BLANK OUT FOR PRINTING 00243000
  244. MVI SPEC+5(13),C' ' MOVE IN ONE BLANK 00244000
  245. LTR 5,5 ARE THERE ANY MORE TO MOVE 00245000
  246. BC 4,LDERRA NO - GO PRINT ERROR MESSAGE 00246000
  247. EX 5,MVC4 YES - MOVE IN REMAINING BLANKS 00247000
  248. LDERRA LA 5,ERRORA 00248000
  249. BAL R14,ERPRNT BAD CONVERSION 00249000
  250. BAL R14,PAGER EJECT PAGE 00250000
  251. SVC 100 DIE... 00251000
  252. * 00252000
  253. MVC4 MVC SPEC+6(1,13),SPEC+5(13) 00253000
  254. * 00254000
  255. DS 0H 00255000
  256. * 00256000
  257. CONST DC X'00B7' 00257000
  258. * 00258000
  259. DROP 1 00259000
  260. EJECT 00260000
  261. *********************************************************************** 00261000
  262. * 00262000
  263. * ROUTINE TO EXTEND MEMORY BOUND DOWN 00263000
  264. * 00264000
  265. *********************************************************************** 00265000
  266. * 00266000
  267. USING *,15 00267000
  268. * 00268000
  269. EXTEND STM 6,7,EPSW 00269000
  270. L 15,BREG1 ESTABLISH GOOD ADDRESSABILITY. 00270000
  271. USING RELDR,15 00271000
  272. CLI CNTR,0 00272000
  273. BC 8,FIRST YES 00273000
  274. L 7,HILOW LOAD HIGHEST LOCATION USED BELOW LOADER. 00274000
  275. L 6,FREEST(,13) AND LOWER BOUND OF FREE STORAGE 00275000
  276. S 6,ONTHOU 00276000
  277. S 6,F32 DROP THE LOWER BOUNDARY BY 4 DW'S 00277000
  278. A 7,TWTHOU ALLOW TWO-THOUSAND MORE BYTES FOR TEXT 00278000
  279. CR 6,7 ENOUGH ROOM FOR MORE FREE STORAGE 00279000
  280. BC 12,NOMORE NO - COMPLAIN 00280000
  281. LA 0,1000 NO OF BYTES 00281000
  282. LR 1,6 ADDRESS OF START OF DOUBLE WORDS 00282000
  283. ST 1,FREEST(,13) 00283000
  284. ST 1,BELOW 00284000
  285. ERET LM 6,7,EPSW 00285000
  286. BCR 15,14 00286000
  287. * 00287000
  288. FIRST L 1,TOP 00288000
  289. L 0,AMAXREF MAX NO. OF UNRESOLVED REF. 00289000
  290. SLL 0,4 00290000
  291. SR 1,0 00291000
  292. LA 0,1264 00292000
  293. SR 1,0 00293000
  294. S 1,F32 00294000
  295. ST 1,T1 00295000
  296. MVI CNTR,1 00296000
  297. BCR 15,14 00297000
  298. * 00298000
  299. NOMORE LA 5,ERRORO 00299000
  300. BAL R14,ERPRNT NO FREE STORAGE LEFT 00300000
  301. BAL R14,PAGER EJECT PAGE 00301000
  302. SVC 101 DIE... 00302000
  303. ONTHOU DC F'1000' 00303000
  304. TWTHOU DC F'2000' 00304000
  305. EPSW DS 2F 00305000
  306. CNTR DC X'00' 00306000
  307. T1 DS 1F .. 00307000
  308. HILOW DC F'0' HIGHEST LOCATION USED BELOW LOADER. 00308000
  309. F32 DC F'32' CONSTANT 00309000
  310. EJECT 00310000
  311. *********************************************************************** 00311000
  312. * 00312000
  313. * PROGRAM INITIAL LOADING ENTRY 00313000
  314. * 00314000
  315. * 00315000
  316. * SWS(13) BIT POSITION 0 = ABS LOAD FLAG 00316000
  317. * 1 = FTTR1 FLAG - FIRST TIME TRANSFER 00317000
  318. * 2 = NO HEX ADDR IN SLC CARD 00318000
  319. * 3 = END CRD ADDR SAVED 00319000
  320. * 4 = TWO OR MORE REP ENTRIES IN CRD 00320000
  321. * 00321000
  322. *********************************************************************** 00322000
  323. * 00323000
  324. LOAD2 BALR 15,0 00324000
  325. USING *,15 00325000
  326. L 9,BASE 00326000
  327. L 15,BREG1 00327000
  328. USING RELDR,15,9 00328000
  329. MVI DEVSW,X'01' 00329000
  330. XC SWS(2),SWS CLEAR SWITCH SETTINGS. 00330000
  331. LA 1,0 TABLE COUNT INITIALLY 00331000
  332. STH 1,TBLCT(,13) .. 00332000
  333. L 11,CTRSET 00333000
  334. ST 11,LOCCT(,13) STARTING LOCTION TO LOAD SAVED 00334000
  335. EJECT 00335000
  336. *********************************************************************** 00336000
  337. * 00337000
  338. * RESUME LOADING ENTRY 00338000
  339. * 00339000
  340. *********************************************************************** 00340000
  341. * 00341000
  342. OVRLDR EQU * 00342000
  343. RESUME BALR 15,0 00343000
  344. USING *,15 00344000
  345. L 15,BREG1 00345000
  346. USING RELDR,15 00346000
  347. SR 1,1 00347000
  348. ST 1,BRAD(,13) 00348000
  349. MVI SWS,ABS+ENDB+FTTR1 TURN ON BITS. 00349000
  350. SSM CH0OFF NO INTERRUPTS PLEASE @V60B9BA 00349100
  351. LH 2,PRNTR GET THE PRINTER ADDRESS @V60B9BA 00349200
  352. MVC ZCAW(4),INITCCW GET INITIALIZE PRINTER CCW @V60B9BA 00349300
  353. TIO 0(2) CLEAR THE PATH @V60B9BA 00349400
  354. BC 2,*-4 KEEP ON UNTIL IT'S CLEAR @V60B9BA 00349500
  355. SIO 0(2) DO THE INITIALIZE PRINTER @V60B9BA 00349600
  356. BC 4+1,RD FORGET ABOUT IT, THEN @V60B9BA 00349700
  357. TIO 0(2) WAIT TILL THE INTERRUPT CLEARS @V60B9BA 00349800
  358. BNZ *-4 ... @V60B9BA 00349900
  359. RD EQU * 00350000
  360. LOOP L 1,LOCCT(,13) CHECK FOR HIGHEST LOCATION BELOW LOADER. 00351000
  361. C 1,LEND AND SEE IF IT HAS CHANGED. BRANCH IF 00352000
  362. BC 2,LOOP1 LOCATION COUNTER IS ABOVE LOADER. 00353000
  363. C 1,HILOW .. 00354000
  364. BC 4,LOOP1 NO CHANGE. 00355000
  365. ST 1,HILOW UPDATE HIGHEST LOCATION USED BELOW LDR. 00356000
  366. LOOP1 BAL 10,LOOP2 BRANCH TO START I/O 00357000
  367. B CONTIN CONTINUE 00358000
  368. LOOP2 MVC ZCAW(4),RDCCW READ CONTROL WORD TO LOWER CORE. 00359000
  369. SIO2 SSM CH0OFF TURN OFF MULTIPLEX CHANNEL 00360000
  370. LH 2,READER 00361000
  371. SIO 0(2) START INPUT OPERATION 00362000
  372. BC 8,WAITXX CHECK FOR SUCCESS - IF 0 EVERYTHING O.K 00363000
  373. BC 4,WAIT1 CSW STORED 00364000
  374. BC 2,WAIT5 BUSY 00365000
  375. NOTOP1 LA 5,RETYRD INTERVENTION REQUIRED 00366000
  376. MVC PRNTR(2),CNSL SET UP TO PRINT MSG ON CONSOLE 00367000
  377. BAL 14,ERPRNT GO TELL USER 00368000
  378. BAL 14,PAGER SKIP TO NEW PAGE ON PRINTER 00369000
  379. MVC PRNTR(2),PRNTSET RESTORE PRNTR ADDRESS 00370000
  380. WAIT7 MVC ZIONP+2(2),READER SET UP FOR DEVICE END 00371000
  381. CNOP 4,8 00372000
  382. WAIT2 LPSW *+4 00373000
  383. DC X'FF020000' WAIT FOR INTERRUPT 00374000
  384. WAIT2AD DC A(LOOP2) AND THEN RETRY READ 00375000
  385. SPACE 2 00376000
  386. WAIT5 STH 2,ZIONP+2 WAIT FOR ANY INTERRUPT ON THIS CNANNEL 00377000
  387. OI ZIONP+2,X'80' 00378000
  388. B WAIT2 00379000
  389. SPACE 3 00380000
  390. WAIT1 TM ZCSW+4,X'02' IS IT UNIT CHECK 00381000
  391. BC 1,NOTOP1 YES - INTERVENTION REQUIRED 00382000
  392. TM ZCSW+4,X'14' IS IT BUSY 00383000
  393. BC 1,LOOP2 NOT ANY MORE 00384000
  394. BC 4,WAIT7 YES - WAIT TO READ 00385000
  395. TM ZCSW+4,X'01' IS IT END OF FILE 00386000
  396. BC 1,C6AC3 YES - ENTER LDT PROCESSOR 00387000
  397. SPACE 3 00388000
  398. WAIT6 BAL 14,PAGER EJECT PAGE - WAIT FOR OPERATOR. 00389000
  399. CNOP 4,8 .. 00390000
  400. LPSW *+4 .. 00391000
  401. DC X'00020000' 00392000
  402. DC 4X'CC' 00393000
  403. SPACE 3 00394000
  404. CNOP 0,8 -ALIGNMENT- 00395000
  405. * 00396000
  406. WAITXX STH 2,ZIONP+2 00397000
  407. LPSW *+4 00398000
  408. DC X'FE020000' 00399000
  409. WAITXXAD DC A(*+4) PROCEED WHEN INPUT OPERATION FINISHED. 00400000
  410. CLC ZIOOP+2(2),ZIONP+2 00401000
  411. BNE WAITXX 00402000
  412. TM ZCSW+4,1 END-OF-FILE? 00403000
  413. BC 1,C6AC3 YES - BRANCH 00404000
  414. TM ZCSW+4,X'02' WAS THERE A VALIDITY CHECK 00405000
  415. BCR 8,10 NO -GO PROCESS 00406000
  416. CLI ERETRYSW,X'80' IS THE ERROR RETRY SWITCH ON 00407000
  417. BE TAPERR YES ISSUE SENSE COMMAND 00408000
  418. STM 2,9,ERRSAV SAVE REGS 00409000
  419. B TAPERR BRANCH TO TAPE ERROR ROUTINE 00410000
  420. NOISERTN LM 2,9,ERRSAV RESTORE REGS 00411000
  421. MVI ERETRYSW,X'00' RESET SWITCH 00412000
  422. B LOOP1 00413000
  423. CONTINUE LM 2,9,ERRSAV RESTORE REGS 00414000
  424. B CONTIN 00415000
  425. CARDRTN LM 2,9,ERRSAV RESTORE REGS 00416000
  426. MVI ERETRYSW,X'00' RESET SWITCH 00417000
  427. CONTCARD LA 5,VALCHK YES SEND A MSG TO THE USER 00418000
  428. TIO 0(2) DRAIN THE READER 00419000
  429. TM ZCSW+4,X'10' 00420000
  430. BC 1,*-8 UNTIL NOT BUSY 00421000
  431. LA 14,NOTOP1 AND THEN WAIT FOR USER TO 00422000
  432. BC 15,ERPRNT CORRECT ERROR BEFORE WE REREAD 00423000
  433. CONTIN SR 6,6 00424000
  434. LA 11,1 REGISTER 11 ALWAYS SET TO 1 00425000
  435. L 1,SPEC(,13) 00426000
  436. TM SWS+1,ENDFLG IS FLUSH-TO-END SWITCH ON 00427000
  437. BC 1,FLUSH YES - BRANCH 00428000
  438. TM DEVSW,X'01' 00429000
  439. BO DEVHNDLR 00430000
  440. CONTINU C 1,SLC 00431000
  441. BNE C2AE2 00432000
  442. BC 15,C2AD1 00433000
  443. FLUSH C 1,END ALL OVER IF THIS IS THE END 00434000
  444. BC 7,RD NOT SO 00435000
  445. MVC READER(2),RDR RESTORE THE READER 00436000
  446. NI SWS+1,255-ENDFLG CLEAR FLAG 00437000
  447. BC 15,RD AND CONTINUE 00438000
  448. EJECT 00439000
  449. *********************************************************************** 00440000
  450. * 00441000
  451. * SET LOCATION COUNTER ROUTINE (SLC) 00442000
  452. * THIS ROUTINE HAS TWO ENTRIES 00443000
  453. * (1) AT THE BEGINNING WHEN RESUME FALLS THRU 00444000
  454. * (2) ORG2- USED TO OBTAIN THE CURRENT ADDRESS OF A GIVEN 00445000
  455. * SYMBOLIC LOCATION. 00446000
  456. * THIS ROUTINE SETS THE LOCATION COUNTER TO THE SLC- 00447000
  457. * CARD SPECIFIED ADDRESS AND/OR OBTAINS THE CURRENT 00448000
  458. * ADDRESS OF A GIVEN SYMBOLIC LOC. FROM THE REFTBL TABLE. 00449000
  459. * NOTE THAT IF NO ABS LOC IS PUNCHED AND THE SYMBOLIC NAME 00450000
  460. * IS AS YET UNDEFINED, AN ERROR IS CREATED. 00451000
  461. * 00452000
  462. *********************************************************************** 00453000
  463. * 00454000
  464. C2AD1 CLI SPEC+6(13),C' ' CMP ADDR FOR BLANKS 00455000
  465. BC 7,C2AD BR- ADDR IN CRD 00456000
  466. OI SWS,BRSW NO ADDRESS - TURN ON SWITCH. 00457000
  467. BC 15,C2A 00458000
  468. C2AD LA 4,6(0,0) CONVERT ADDR TO BINARY 00459000
  469. LA 5,SPEC+6(,13) 00460000
  470. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 00461000
  471. BALR 0,1 BR TO HEXB ROUTINE 00462000
  472. LR 6,0 SAVE ADDR IN REGISTER 00463000
  473. C2A CLI SPEC+16(13),C' ' TEST IMAGE FOR NAME 00464000
  474. * SYMBOL IS LEFT ADJUSTED 00465000
  475. BC 7,C2AE3 BR- NAME IN CRD 00466000
  476. LA 5,ERRORA 00467000
  477. MVC CDIMJ(80),SPEC(13) 00468000
  478. LA 14,RD 00469000
  479. TM SWS,BRSW 00470000
  480. BC 1,ERPRNT 00471000
  481. SR 0,0 00472000
  482. C2X NI SWS,255-BRSW TURN OFF SWITCH. 00473000
  483. AR 6,0 ADD CONVERTED ADDR TO ORG2 00474000
  484. ST 6,LOCCT(,13) SET THE LOCATION COUNTER 00475000
  485. B RD RETURN TO READ A CARD. 00476000
  486. C2AE3 LA 2,ERRSLC 00477000
  487. BAL 3,SERCH 00478000
  488. LA 14,C2X LINK AGE 00479000
  489. ORG2 L 0,8(0,12) THE ABSOLUTE LOCATION 00480000
  490. BCR 15,14 00481000
  491. ERRSLC LH 3,TBLCT(,13) 00482000
  492. SR 3,11 00483000
  493. STH 3,TBLCT(,13) 00484000
  494. LA 5,ERRORU 00485000
  495. MVC ERRU(8),0(12) 00486000
  496. LA 14,RD 00487000
  497. BC 15,ERPRNT 00488000
  498. EJECT 00489000
  499. * SET PAGE BOUNDRY ROUTINE (SPB) 00490000
  500. * THIS ROUTINE ROUNDS THE LOCATION COUNTER 00491000
  501. * TO THE NEAREST HIGHER PAGE BOUNDRY 00492000
  502. C2AE2 C 1,SPB 00493000
  503. BNE C2AE1 00494000
  504. L 1,LOCCT(,13) 00495000
  505. LA 1,4095(,1) 00496000
  506. N 1,PAGENO 00497000
  507. ST 1,LOCCT(,13) 00498000
  508. B RD 00499000
  509. EJECT 00500000
  510. *********************************************************************** 00501000
  511. * 00502000
  512. * INCLUDE CONTROL SECTION 00503000
  513. * ROUTINE (ICS) 00504000
  514. * 00505000
  515. *********************************************************************** 00506000
  516. * 00507000
  517. C2AE1 C 1,ICS 00508000
  518. BC 7,C3AA1 BR NO 00509000
  519. LA 5,ERRORA 00510000
  520. MVC CDIMJ(80),SPEC(13) 00511000
  521. LA 14,RD 00512000
  522. CLI SPEC+24(13),C' ' TEST FOR HEX ADDR 00513000
  523. BC 8,ERPRNT 00514000
  524. LA 4,4 00515000
  525. LA 5,SPEC+24(,13) TO BINARY 00516000
  526. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 00517000
  527. BALR 0,1 BR TO HEXB 00518000
  528. LR 6,0 SAVE LENGTH IN REG 00519000
  529. LA 14,RD LOAD LINKAGE TO BRANCH TO RD WHEN DONE 00520000
  530. LA 3,SYMDEF IF NAME IN REFTBL, IS IT DEFINED 00521000
  531. BAL 2,SERCH 00522000
  532. * ENTERED C2AJ1 FROM ESD00 ROUTINE 00523000
  533. C2AJ1 L 1,LOCCT(,13) LOD PRESENT LOCATION 00524000
  534. LTR 6,6 IS THE SEGMENT LENGTH EQUAL TO ZERO 00525000
  535. BC 8,C2AJ4 YES - BRANCH OUT 00526000
  536. ADJ TM LOCCT+3(13),X'07' TEST FOR MULT OF EIGHT 00527000
  537. BC 8,C2AJ4 BR YES 00528000
  538. AR 1,11 ADD ONE 00529000
  539. ST 1,LOCCT(,13) 00530000
  540. BC 15,ADJ 00531000
  541. C2AJ4 LR 7,14 TEST FOR UNDEFINED BIT 00532000
  542. L 5,AADDEF AND DEFINE IF NECESSARY 00533000
  543. BALR 14,5 00534000
  544. STOABS ST 1,8(,12) STORE VALUE OF LOCCT IN REFTBL 00535000
  545. AR 1,6 UPDATE LOCCT 00536000
  546. ST 1,LOCCT(,13) 00537000
  547. MVC LOC1(8),0(12) MOVE NAME TO PRINT STATEMENT 00538000
  548. UNPK LOC1+12(7),9(4,12) 00539000
  549. TR LOC1+12(8),DMPTBL-240 TRANSLATE LOCATION INTO EBCD 00540000
  550. MVC LOC1+18(20),ORAREA CLEAR PRINT AREA 00541000
  551. MVC LOC1+38(11),ORAREA ... 00542000
  552. CLI SPEC+24(R13),X'00' ESD TYPE 0 CARD ? 00543000
  553. BNE NOTESD0 NO 00544000
  554. MVC LOC1+24(21),ESDHDR MOVE IN ESD HEADING INFORMATION 00545000
  555. UNPK LOC1+39(7),SPEC+29(4,R13) UNPACK THE LENGTH 00546000
  556. TR LOC1+39(8),DMPTBL-240 TRANSLATE PRINTABLE 00547000
  557. NOTESD0 EQU * HERE IF NOT ESD TYPE 0 00548000
  558. LA 5,ERRORL 00549000
  559. BAL 14,ERPRNT AND GO PRINT PIECE OF LOADER MAP 00550000
  560. MVC LOC1+18(20),ORAREA CLEAR PRINT AREA 00551000
  561. MVC LOC1+38(9),ORAREA .... 00552000
  562. LR 14,7 00553000
  563. SR 6,6 00554000
  564. BCR 15,14 RETURNS TO RD OR C3AD4 (IN ESD T-0) 00555000
  565. SYMDEF TM 8(12),X'80' IS UNDEFINED BIT ON 00556000
  566. BCR 8,14 IF DEFINED, IGNORE ICS CARD 00557000
  567. BC 15,C2AJ1 YES - ALIGN ABS ADDR OF PROGRAM ON DOUBL 00558000
  568. * WORD BOUNDARY AND GO GET NEXT CARD 00559000
  569. EJECT 00560000
  570. *********************************************************************** 00561000
  571. * 00562000
  572. * DETERMINE IF ESD TYPE CARD 00563000
  573. * 00564000
  574. *********************************************************************** 00565000
  575. * 00566000
  576. C3AA1 C 1,ESD 00567000
  577. BC 7,C4AA1 NO- TEST FOR TXT CRD 00568000
  578. CA3A1 NI SPEC+24(13),X'0F' 00569000
  579. CLI SPEC+24(13),X'00' * 00570000
  580. BZ C3AA3 (SD)-- ESD TYPE 0 @VA04840 00571500
  581. LA 5,ERRORA 00574000
  582. MVC CDIMJ(80),SPEC(13) 00575000
  583. LA 14,RD 00576000
  584. * VALID ESD TEST 00577000
  585. CLI SPEC+24(13),X'03' * 00578000
  586. BC 10,ERPRNT 00579000
  587. CLI SPEC+24(13),X'02' * 00580000
  588. BC 10,C3AH1 BR, EXTERNAL SYMBOL ESD 00581000
  589. EJECT 00582000
  590. *********************************************************************** 00583000
  591. * 00584000
  592. * ESD TYPE 1 ROUTINE (ENTRY) 00585000
  593. * 00586000
  594. *********************************************************************** 00587000
  595. * 00588000
  596. LH 3,SPEC+30(,13) LOAD EXTERNAL SYMBOL ID NO. 00589000
  597. BAL 14,REFADR OBTAINS ADDR OF THE ENTRY IN REFTBL 00590000
  598. STC 6,SPEC+24(,13) 00591000
  599. L 7,12(,12) LOAD REL FACTOR OF CONTROL SEGMENT 00592000
  600. A 7,SPEC+24(,13) FORM ENTRY POINT 00593000
  601. LA 2,C3AD1 NOT FOUND RETURN 00594000
  602. BAL 3,SERCH SEARCH FOR NAME IN REFTBL 00595000
  603. L 0,8(,12) LOAD RELOCATED ADDRESS 00596000
  604. LA 5,ERRORD 00597000
  605. MVC ERRD(8),0(12) 00598000
  606. TM 8(12),X'80' IS ENTRY DEFINED 00599000
  607. BC 1,C3AD2 NO - DEFINE IT 00600000
  608. CR 7,0 YES - CMP ORG2 TO GENERATED ADDR 00601000
  609. BE GOODCMP 00602000
  610. BAL R14,ERPRNT PRINT BAD NEWS 00603000
  611. DUPESD BAL R14,PAGER EJECT PAGE @VA08186 00604100
  612. SVC 102 DIE ..... 00605000
  613. GOODCMP MVC NAME,0(12) MOVE ENTRY NAME TO ERROR MESSAGE 00606000
  614. LA 5,ERRORM DUPLICATE IDENTIFIER-FATAL ERROR @VA08186 00607100
  615. BAL 14,ERPRNT 00608000
  616. BC 15,DUPESD DUPLICATE ESD ENTRY @VA08186 00609100
  617. C3AD2 LR 1,7 LOAD REG 1 FROM 7 00610000
  618. L 5,AADDEF 00611000
  619. BALR 14,5 00612000
  620. ST 1,8(,12) AND UPDATE CORE - STORE ABS ADDR 00613000
  621. BC 15,PRNT 00614000
  622. C3AD1 ST 7,8(,12) STORE ABS VALUE IN REFTBL 00615000
  623. PRNT MVC LOC1(8),0(12) MOVE NAME TO PRINT STATEMENT 00616000
  624. UNPK LOC1+12(7),9(4,12) 00617000
  625. TR LOC1+12(8),DMPTBL-240 TRANSLATE LOCATION INTO EBCD 00618000
  626. MVC LOC1+18(2),ORAREA CLEAR 2 BYTES FROM PRINT LINE 00619000
  627. LA 5,ERRORL 00620000
  628. BAL 14,ERPRNT AND GO PRINT PIECE OF LOADER MAP 00621000
  629. BC 15,ESD00 AND GO CHECK FOR MULTIPLE ENTRIES 00622000
  630. EJECT 00623000
  631. *********************************************************************** 00624000
  632. * 00625000
  633. * ESD TYPE 0 ROUTINE (SEGMENT NAME) 00626000
  634. * 00627000
  635. *********************************************************************** 00628000
  636. * 00629000
  637. C3AA3 TM SWS+1,SKPFLG SHOULD WE TEST FOR SKIP? 00630000
  638. BC 1,SKPTST YES - BRANCH 00631000
  639. C3AA3B NI SWS,255-ABS TURN OFF ABSOLUTE LOAD FLAG 00632000
  640. TM SWS,ESDSW HAVE WE SEEN TYPE 0 OR 2 BEFORE. 00633000
  641. BZ C3AA3A NO. - CONTINUE AS USUAL. 00634000
  642. LH 2,SPEC+14(,13) BUMP ESID NO. BY ONE FOR EXTRA ENTRIES. 00635000
  643. LA 2,1(,2) .. 00636000
  644. STH 2,SPEC+14(,13) .. 00637000
  645. C3AA3A OI SWS,ESDSW SET ESID SWITCH. 00638000
  646. LA 2,C3AC3 NAME NOT IN TBL RETURN 00639000
  647. BAL 3,SERCH SEARCH FOR NAME IN REFTBL 00640000
  648. TM 8(12),X'80' IS ENTRY DEFINED 00641000
  649. BC 7,C3AC3 NO - GET STARTING LOCATION 00642000
  650. MVC NAME,0(12) MOVE ESD NAME TO ERROR MESSAGE 00643000
  651. LA 5,ERRORM 00644000
  652. BAL 14,ERPRNT POSSIBLE OVERLAYING OF A PREVIOUS DECK 00645000
  653. C3AD4 L 0,8(,12) COMPUTE RELOCATION FACTOR 00646000
  654. LH 2,SPEC+14(,13) LOD ESID 00647000
  655. SLL 2,1 TIMES 2 FOR HALFWORD ENTRY 00648000
  656. STH 4,ESIDTB(13,2) REFTBLE POSITION TO ESIDTB(13) 00649000
  657. SRL 2,1 BACK AGAIN 00650000
  658. STC 6,SPEC+24(,13) LOD ASSEMBLED ADDR 00651000
  659. L 2,SPEC+24(,13) 00652000
  660. CR 0,2 00653000
  661. BC 5,COMP BR- ORG2 LESS THAN ADDR 00654000
  662. SR 0,2 00655000
  663. RELF ST 0,12(,12) SAVE RELOCATION FACTOR 00656000
  664. BC 15,ESD00 READ ANOTHER CARD 00657000
  665. COMP SR 2,0 ADDRESS MINUS ORIGIN 00658000
  666. LCR 0,2 COMPLEMENT (TWOS) 00659000
  667. BC 15,RELF 00660000
  668. C3AC3 STC 6,SPEC+28(,13) RETURNED HERE FOR NAME NOT FND 00661000
  669. L 6,SPEC+28(,13) LOD SEGMENT LENGTH 00662000
  670. LA R0,XTRSIZE SIZE OF BUFFER FOR EXTRNS 00663000
  671. L R15,AFREE ADDRESS OF FREE STORAGE ROUTINE 00664000
  672. BALR R14,R15 CALL FREE FOR STORAGE 00665000
  673. L R15,BREG1 RESTORE REG-15 00666000
  674. ST R1,PNTXTR0 REMEMBER ESD TYPE 0 CHAIN @VA04840 00667000
  675. USING XTRBLOK,R3 ADDRESSABILITY 00668000
  676. LR R3,R1 PUT IN PROPER REGISTER 00669000
  677. XC XTRPNT(16),XTRPNT CLEAR OUT ADDRESS POINTER FILES 00670000
  678. MVI XTRDATA,C' ' CLEAR PRINTER AREA TO BLANKS 00671000
  679. MVC XTRDATA+1(XTRDATAL-1),XTRDATA ... 00672000
  680. MVC XTRDATA+26(34),HEADING PUN IN THE HEADING LINE 00673000
  681. LA R1,XTRDATA ADDRESS WHERE PRINT DATA CAN BE FOUND 00674000
  682. ST R1,XTRLINE SAVE IT IN THE CONTROL BLOK 00675000
  683. MVI XTRLEN+1,86 MAKE THIS LINE LOOK LIKE ITS FULL 00676000
  684. MVC XTRDATA+62(8),0(R12) FILL IN CSECT NAME 00677000
  685. CLC 0(6,R12),DMKPSA LOADING VM/370 SYSTEM ? 00678000
  686. BNE *+8 NO- NOT FOUND 00679000
  687. MVI VM370,X'FF' INDICATE LOADING VM/370 00680000
  688. CLC 0(6,R12),DMKCPE REACH END OF NUCLEUS YET ? 00681000
  689. BNE *+12 NO - 00682000
  690. MVI CPEND,X'FF' FLAG FOR SKIP TO CHANNEL 1 00683000
  691. MVI ENDNUC,X'FF' INDICATE END OF NUCLEUS HAS BEEN REACHED 00684000
  692. LA R14,C3AD4 RETURN ADDRESS 00685000
  693. CLI VM370,X'FF' IS THIS VM/370 OR CMS . 00686000
  694. BNE C2AJ1 MUST BE CMS 00687000
  695. CLI ENDNUC,X'FF' REACHED END OF NUCLEUS YET ? 00688000
  696. BNE C2AJ1 NO - DON'T CHECK SPB YET 00689000
  697. CLC 0(6,R12),DMKWRM IS THIS DMKWRM ? 00690000
  698. BE C2AJ1 YES - SKIP OVER PAGE BOUNDARY 00691000
  699. L R2,LOCCT(,R13) GET LOCATION COUNTER 00692000
  700. LA R2,4095(,R2) FORCE TO NEXT PAGE BOUNDARY 00693000
  701. N R2,PAGENO REMOVE THE DISPLACEMENT 00694000
  702. L R1,LOCCT(,R13) RELOAD LOCATION COUNTER 00695000
  703. CLR R1,R2 ALREADY ON PAGE BOUNDARY ? 00696000
  704. BE C2AJ1 YES - DON'T CHECK FURTHER. 00697000
  705. ADJ1 EQU * @VA01938 00698000
  706. TM LOCCT+3(13),X'07' TEST FOR DOUBLEWORD BOUNDARY @VA01938 00699000
  707. BC 8,CKFIT YES, SEE IF IT'LL FIT @VA01938 00700000
  708. AR 1,11 NO, ADD ONE @VA01938 00701000
  709. ST 1,LOCCT(,13) @VA01938 00702000
  710. BC 15,ADJ1 DO IT AGAIN @VA01938 00703000
  711. CKFIT EQU * @VA01938 00704000
  712. AR R1,R6 ADD TO IT LENGTH OF THIS MODULE 00705000
  713. CR R1,R2 SHOULD WE FORCE MODULE TO PAGE BOUNDARY 00706000
  714. BNH C2AJ1 NO - DID NOT SPILL INTO NEXT PAGE 00707000
  715. ST R2,LOCCT(,R13) FORCE THIS MODULE TO NEXT PAGE BOUNDARY. 00708000
  716. MVC XTRDATA+70(15),SPBHDR ALSO FLAG IT. 00709000
  717. DROP R3 00710000
  718. B C2AJ1 CONTINUE 00711000
  719. SPACE 1 00712000
  720. SPACE 00713000
  721. SKPTST CLC SPEC+16(8,13),SKPMSG IS THIS THE ONE TO SKIP? 00714000
  722. BC 7,C3AA3B 00715000
  723. XI SWS+1,SKPFLG+ENDFLG YES - SKIP TO END CARD 00716000
  724. BC 15,RD 00717000
  725. EJECT 00718000
  726. *********************************************************************** 00719000
  727. * 00720000
  728. * ESD TYPE 2 ROUTINE (EXTRN) 00721000
  729. * THIS ROUTINE HAS TWO ENTRY POINTS. LOC C3AH1 AND LOC ESD00 00722000
  730. * LOCATION C3AH1 IS ENTERED FROM THE ESD CARD ANALYSIS ROUTINE 00723000
  731. * LOCATION ESD00 IS ENTERED FROM... 00724000
  732. * 1. THE ESD CARD ANALYSIS ROUTINE WHEN THE CARD BEING 00725000
  733. * PROCESSED IS A TYPE 1OR 2 , AND AN ABS LOAD IS INDICATED 00726000
  734. * 2. THE ESD TYPE 0 ROUTINE AND TYPE 1 ENTER AS THE LAST 00727000
  735. * STEP OF THESE ROUTINES 00728000
  736. *********************************************************************** 00729000
  737. * 00730000
  738. C3AH1 TM SWS,ESDSW HAVE WEE SEEN TYPE 0 OR 2 ON THIS CARD. 00731000
  739. BC 8,C3AH3 00732000
  740. LH 2,SPEC+14(,13) 00733000
  741. LA 2,1(,2) 00734000
  742. STH 2,SPEC+14(,13) 00735000
  743. C3AH3 LA 2,C3AH2 00736000
  744. OI SWS,ESDSW INDICATE WE HAVE ESD 2 ON THIS CARD. 00737000
  745. USING XTRBLOK,R3 ADDRESSABILITY 00738000
  746. L R3,PNTXTR GET POINTER TO LIST OF CHAIN 00739000
  747. LTR R3,R3 CHAIN EMPTY ? @VA04840 00740100
  748. BZ FNDONE1 IF YES,ADD NEW BUFFER TO LIST @VA04840 00740150
  749. SLR R0,R0 CLEAR A COMPARISON REGISTER @VA04840 00740200
  750. LA R3,PNTXTR YES,POINT TO ANCHOR @VA04840 00740250
  751. NXTBUF CL R0,0(,R3) ARE WE AT THE END OF THE CHAIN 00741000
  752. BE FNDONE YES - 00742000
  753. L R3,0(,R3) NO - KEEP SEARCHING 00743000
  754. B NXTBUF .. 00744000
  755. FNDONE CLI XTRLEN+1,XTRFULL IS THIS BUFFER FULL UP ? 00745000
  756. BNH NOXFREE IF NOT THEN DON'T CALL FREE 00746000
  757. FNDONE1 LA R0,XTRSIZE SIZE OF EXT BUFFER @VA04840 00747500
  758. L R15,AFREE ADDRESS OF FREE STORAGE ROUTINE 00748000
  759. BALR R14,R15 CALL FREE 00749000
  760. L R15,BREG1 RESTORE REG-15 00750000
  761. LTR R3,R3 CHAIN EMPTY ? @VA04840 00751100
  762. BNZ FNDONE2 NO,PATCH TO LAST BUFFER @VA04840 00751200
  763. ST R1,PNTXTR ELSE,INIT ANCHOR @VA04840 00751300
  764. B FNDONE3 @VA04840 00751400
  765. FNDONE2 ST R1,0(,R3) PATCH TO EXISTING CHAIN @VA04840 00751500
  766. FNDONE3 LR R3,R1 START WORKING W/ NEW BUFR @VA04840 00751600
  767. XC XTRPNT(16),XTRPNT CLEAR OUT CONTROL DATA POINTERS 00753000
  768. MVI XTRLEN+1,25 START AT PRINT POSITION 26 00754000
  769. MVI XTRDATA,C' ' CLEAR PRINTER INFORMATION TO BLANKS 00755000
  770. MVC XTRDATA+1(XTRDATAL-1),XTRDATA ... 00756000
  771. LA R0,XTRDATA GET ADDRESS WHERE PRINT DATA WILL GO 00757000
  772. ST R0,XTRLINE AND SAVE ITS ADDRESS 00758000
  773. NOXFREE SLR R1,R1 CLEAR 00759000
  774. LH R1,XTRLEN GET NUMBER OF BYTES IN USE. 00760000
  775. LA R1,XTRDATA(R1) POINT TO CORRECT BUFFER LOCATION 00761000
  776. MVC 0(8,R1),SPEC+16(R13) MOVE IN EXTRN NAME 00762000
  777. LH R1,XTRLEN GET NUMBER OF BYTES AGAIN 00763000
  778. LA R1,10(,R1) INCREMENT TO NEXT BUFFER LOCATION 00764000
  779. STH R1,XTRLEN AND STORE IT BACK 00765000
  780. DROP R3 00766000
  781. SPACE 00767000
  782. BAL 3,SERCH SEARCH FOR NAME IN REFTBL 00768000
  783. LH 2,SPEC+14(,13) LOAD ESID 00769000
  784. SLL 2,1 TIMES 2 FOR HALFWORD ENTRY 00770000
  785. STH 4,ESIDTB(13,2) REFTBLE POSITION TO ESIDTB 00771000
  786. SRL 2,1 BACK AGAIN 00772000
  787. TM 8(12),X'80' IS UNDEFINED BIT ON 00773000
  788. BC 1,ESD00 YES - CHECK FOR MULTIPLE ENTRIES 00774000
  789. L 0,8(,12) LOAD RELOCATED ADDRESS 00775000
  790. ST 0,12(,12) STORE RELFAC IN REFTBL 00776000
  791. ESD00 LA 2,16 TEST FOR MULTIPLE ENTRIES IN CARD 00777000
  792. LH 1,SPEC+10(,13) 00778000
  793. SR 1,2 00779000
  794. BC 3,C3AH5 00780000
  795. NI SWS,255-ESDSW CLEAR SWITCH FOR START OF NEXT CARD. 00781000
  796. BC 15,RD 00782000
  797. C3AH5 MVC SPEC+16(32,13),SPEC+32(13) 00783000
  798. STH 1,SPEC+10(,13) 00784000
  799. BC 15,CA3A1 00785000
  800. C3AH2 OI 8(12),X'80' PLACE UNDEFINED BIT ON 00786000
  801. SR 3,3 CLEAR REGISTER 3 00787000
  802. ST 3,12(,12) STORE ZERO IN RELOCATION FACTOR 00788000
  803. LH 2,SPEC+14(,13) LOAD ESID. 00789000
  804. SLL 2,1 TIMES 2 FOR HALFWORD ENTRY 00790000
  805. STH 4,ESIDTB(13,2) REFTBL POSITION TO ESIDTB 00791000
  806. SRL 2,1 BACK AGAIN 00792000
  807. BC 15,ESD00 AND CHECK FOR MULTIPLE ENTRIES 00793000
  808. EJECT 00794000
  809. *********************************************************************** 00795000
  810. * 00796000
  811. * TEXT CARD ROUTINE (TXT) 00797000
  812. * 00798000
  813. *********************************************************************** 00799000
  814. * 00800000
  815. C4AA1 C 1,TXT 00801000
  816. BC 7,C4AA3 BR- NOT TEXT CRD 00802000
  817. STC 6,SPEC+4(,13) 00803000
  818. LH 7,SPEC+10(,13) NUM OF BYTES 00804000
  819. LTR 7,7 00805000
  820. BZ RD ZERO COUNT - DON'T MOVE TEXT. 00806000
  821. LA 8,C4AK2+2 00807000
  822. REPENT TM SWS,ABS TEST ABSOLUTE LOAD FLAG. 00808000
  823. BC 8,C4AC1 BR, RELOCATABLE LOAD 00809000
  824. APR1 SR 10,10 00810000
  825. BC 15,C4AC2 00811000
  826. C4AC1 LH 3,SPEC+14(,13) LOD ESID TO FIND ADDR 00812000
  827. BAL 14,REFADR 00813000
  828. L 10,12(,12) LOAD RELFAC 00814000
  829. C4AC2 A 10,SPEC+4(,13) ADD ADDR TO RELFAC 00815000
  830. ST 10,SPEC+4(,13) 00816000
  831. LR 1,10 00817000
  832. AR 1,7 00818000
  833. LA 5,ERRORO 00819000
  834. C 10,LEND TEST ADDR ABOVE LDR 00820000
  835. BC 10,C4AG2 BR- YES 00821000
  836. C 1,BELOW TEST ADDR BELOW LDR 00822000
  837. BC 2,UNDERLDR 00823000
  838. C 1,ABOVE 00824000
  839. BC 4,PROTREG ADDRESS BELOW INTERRUPT REGION - AN ERRO 00825000
  840. C4AG2 TM SWS,ABS TEST ABSOLUTE LOAD FLAG. 00826000
  841. C4AJ2 TM SWS,FTTR1 .. 00827000
  842. BC 14,C4AK2 BR-OFF 00828000
  843. LA 0,128 IS ADDR BELOW FIRST 128 BYTES 00829000
  844. CR 1,0 00830000
  845. BC 5,C4AK2 BR, DO NOT SAVE ADDR 00831000
  846. NI SWS,255-FTTR1 .. 00832000
  847. ST 10,BRAD(,13) SAVE FIRST ADDR LOADED INTO 00833000
  848. C4AK2 BCR 15,8 00834000
  849. SR 7,11 SUB ONE FROM NUM OF BYTES 00835000
  850. EX 7,CHAR MOVE TEXT TO STORAGE 00836000
  851. BC 15,RD AND GO READ A CARD 00837000
  852. SPACE 1 00838000
  853. UNDERLDR BAL R14,ERPRNT PRINT IT 00839000
  854. BAL R14,PAGER EJECT PAGE 00840000
  855. SVC 106 DIE... 00841000
  856. SPACE 1 00842000
  857. PROTREG BAL R14,ERPRNT PRINT IT 00843000
  858. BAL R14,PAGER EJECT PAGE 00844000
  859. SVC 107 DIE... 00845000
  860. * 00846000
  861. CHAR MVC 0(1,10),SPEC+16(13) 00847000
  862. EJECT 00848000
  863. *********************************************************************** 00849000
  864. * 00850000
  865. * REPLACE CARD ROUTINE (REP) 00851000
  866. * 00852000
  867. *********************************************************************** 00853000
  868. * 00854000
  869. C4AA3 C 1,REP 00855000
  870. BC 7,C5AA1 BR- NOT REPLACE CARD 00856000
  871. TM SWS,REPSW DO WE WANT REP CARDS PRINTED. 00857000
  872. BC 1,C4AA4 NO 00858000
  873. MVC CDIMJ(80),SPEC(13) 00859000
  874. MVI CDIMJ,C' ' BLANK OUT 12-2-9 PUNCH. 00860000
  875. LA 5,CRDIMJ GO PRINT OUT REP CARD IMAGE 00861000
  876. BAL 14,ERPRNT 00862000
  877. C4AA4 LA 4,6 CONVERT REP CRD HEX ADDR TO BIN 00863000
  878. LA 5,SPEC+6(,13) 00864000
  879. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 00865000
  880. BALR 0,1 BR TO HEXB 00866000
  881. ST 0,SPEC+4(,13) SAVE ADDR IN CARD IMAGE 00867000
  882. LA 4,2(0,0) 00868000
  883. LA 5,SPEC+14(,13) CONVERT REP ESID TO BIN 00869000
  884. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 00870000
  885. BALR 0,1 BR TO HEXB 00871000
  886. STH 0,SPEC+14(,13) SAVE THE ESID IN CARD IMAGE 00872000
  887. LA 5,SPEC+16(,13) 00873000
  888. NUM LA 7,2 NUM OF BYTES 00874000
  889. ST 5,TMPLOC(,13) 00875000
  890. TM SWS,FREPSW .. 00876000
  891. BC 1,APR10 00877000
  892. BAL 8,REPENT 00878000
  893. APRIL LA 4,4 CONVERT HALF WORD OF CORRECTIONS 00879000
  894. L 5,TMPLOC(,13) 00880000
  895. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 00881000
  896. BALR 0,1 BR TO HEXB 00882000
  897. L 8,SPEC+4(,13) LOD REPLACE ADDR 00883000
  898. STH 0,0(0,8) PLACE CORRECTION IN STORAGE 00884000
  899. NI SWS,255-FREPSW .. 00885000
  900. CLI 0(5),C',' 00886000
  901. BC 7,RD 00887000
  902. OI SWS,FREPSW TURN ON REP FIRST SWITCH. 00888000
  903. LA 8,2(8,0) 00889000
  904. ST 8,SPEC+4(,13) SAVE REPLACE ADDR 00890000
  905. AR 5,11 00891000
  906. BC 15,NUM 00892000
  907. APR10 LA 8,APRIL 00893000
  908. BC 15,APR1 00894000
  909. EJECT 00895000
  910. *********************************************************************** 00896000
  911. * 00897000
  912. * RELOCATION DICTIONARY CARD (RLD) 00898000
  913. * REG 6= 0 UPON ENTRY INTO C5AA1 00899000
  914. * 00900000
  915. *********************************************************************** 00901000
  916. * 00902000
  917. C5AA1 C 1,RLD 00903000
  918. BC 7,C6AA1 BR-NOT RLD CARD 00904000
  919. TM SWS,ABS TEST ABSOLUTE LOAD FLAG. 00905000
  920. BC 1,RD ON ABS LOAD ONLY 00906000
  921. * REL. HEADER ON CARD USED TO OBTAIN CURRENT ADDR 00907000
  922. * OF SYMBOL. THIS ADDR IS FOUND IN REL FAC. OF REFTBL 00908000
  923. LA 10,SPEC+16(,13) 00909000
  924. C5AC1 LH 3,0(,10) RH ESID 00910000
  925. LTR 3,3 ERROR IF RH ESI=0 00911000
  926. BC 8,ERRLD 00912000
  927. BAL 14,REFADR COMPUTE POS OF ENTRY IN TABLE (REG 12) 00913000
  928. ST 12,TEMPST(,13) AND SAVE ADDRESS 00914000
  929. TM 8(12),X'80' IS THE UNDEF. BIT=1 00915000
  930. BC 8,PLOAD NO - PROGRAM PREVIOUSLY LOADED 00916000
  931. LA 8,0 YES, USE A REL. FACTOR OF ZERO 00917000
  932. BC 15,PLOAD1 SKIP AN INSTR TO RELOAD REL FAC IN 8 00918000
  933. PLOAD L 8,12(,12) OBTAIN REL FACTOR OF SYMBOL 00919000
  934. PLOAD1 LH 3,2(,10) POSITION HEADER OF CURRENT SEGMENT 00920000
  935. LTR 3,3 00921000
  936. BC 8,ERRLD 00922000
  937. BAL 14,REFADR 00923000
  938. L 0,12(,12) RELFACT OF CURRENT SYMBOL 00924000
  939. LH 1,MVC1+2(,13) MVC (TO) WD DECREMENT 00925000
  940. LH 2,MVC2+4(,13) MVC FROM WD TO STORAGE 00926000
  941. BAL 14,CTR REDUCES CD BYTE COUNT BY 4, TEST FOR ZERO 00927000
  942. * IF NON 0, RETURNS, IF =0 BRANCHES TO RD 00928000
  943. * LENGTH OF SYMBOL IN BYTES IN REG 5 00929000
  944. C5AA3 AR 10,5 00930000
  945. LR 3,1 00931000
  946. LR 4,2 00932000
  947. TM 0(10),X'0C' TEST FOR FOUR BYTES 00933000
  948. BC 14,C5AB3 BR-TEST FOR THREE 00934000
  949. C5AF3 SR 5,11 00935000
  950. AR 3,6 TO MVC 'TO' 00936000
  951. AR 4,6 TO MVC 'FROM' 00937000
  952. STH 3,MVC1+2(,13) 'TO' 00938000
  953. STH 4,MVC2+4(,13) 'FROM' 00939000
  954. L 3,0(10,0) LOAD ADDR 00940000
  955. LA 3,0(,3) AND TAKE OUT FLAGS FROM 1ST BYTE 00941000
  956. AR 3,0 00942000
  957. EX 5,MVC1(,13) MVC WD(1,13),0(3) 00943000
  958. STH 1,MVC1+2(,13) 00944000
  959. L 4,WD(,13) THE SYMBOL VALUE W/O CONATANT 00945000
  960. TM 0(10),X'02' TEST COMPLEMENT FLAG 00946000
  961. BC 1,C5AE4 BR YES 00947000
  962. AR 4,8 ADD TO CONTENTS OF CELL 00948000
  963. COMPP ST 4,WD(,13) THE COMPLETE VALUE OF THE CONSTANT 00949000
  964. L 12,TEMPST(,13) RESTORE REFTBL ENTRY POINT OF SUBR 00950000
  965. TM 8(12),X'80' IS UNDEF BIT =1 00951000
  966. BC 8,CTEX 00952000
  967. STH 2,MVC2+4(,13) RESTORE ORIGINAL MVC2. 00953000
  968. L 7,APPNT 00954000
  969. BALR 14,7 UPDATE POINTERS 00955000
  970. BC 15,CTEX1 RESUME 00956000
  971. CTEX EX 5,MVC2(,13) MVC 0(1,3),WD(13) 00957000
  972. STH 2,MVC2+4(,13) 00958000
  973. CTEX1 BAL 14,CTR REDUCES BYTE COUNT OF CARD 00959000
  974. SR 6,6 00960000
  975. TM 0(10),X'01' TEST CONTINUATION FLAG 00961000
  976. BC 1,C5AA3 BR, FLAG-ADR FOLLOWS 00962000
  977. AR 10,5 00963000
  978. BC 14,C5AC1 BR, RH FOLLOWS 00964000
  979. CTR LA 5,4 CLOSED SBR, REDUCING BYTE COUNT BY 4 00965000
  980. SR 4,4 CLEAR OUT WORD 00966000
  981. ST 4,WD(,13) 00967000
  982. LH 4,SPEC+10(,13) BYTE COUNT 00968000
  983. SR 4,5 00969000
  984. BC 8,RD BYTES COUNT = 0 00970000
  985. STH 4,SPEC+10(,13) 00971000
  986. BCR 15,14 00972000
  987. C5AE4 SR 4,8 ADDR MINUS RELFAC 00973000
  988. BC 15,COMPP 00974000
  989. C5AB3 AR 6,11 00975000
  990. SR 5,11 00976000
  991. TM 0(10),X'08' TEST FOR THREE BYTE LOAD 00977000
  992. BC 1,C5AF3 BR-THREE BYTE 00978000
  993. AR 6,11 00979000
  994. SR 5,11 00980000
  995. TM 0(10),X'04' TEST FOR TWO BYTE LOAD 00981000
  996. BC 1,C5AF3 BR-TWO BYTE 00982000
  997. AR 6,11 00983000
  998. SR 5,11 00984000
  999. BC 15,C5AF3 00985000
  1000. ERRLD LA 5,ERRORA 00986000
  1001. MVC CDIMJ(80),SPEC(13) 00987000
  1002. LA 14,RD 00988000
  1003. BC 15,ERPRNT 00989000
  1004. EJECT 00990000
  1005. *********************************************************************** 00991000
  1006. * 00992000
  1007. * END CARD ROUTINE (END) 00993000
  1008. * 00994000
  1009. *********************************************************************** 00995000
  1010. * 00996000
  1011. C6AA1 C 1,END 00997000
  1012. BC 7,C6AC1 BR-NOT END CARD 00998000
  1013. CLC SPEC+28(4,13),BLANKS CHECK FOR CSECT LENGTH IN END. 00999000
  1014. BE C6AB5 NO - CONTINUE NORMALLY. 01000000
  1015. L 1,LOCCT(,13) YES - UPDATE THE LOCATION COUNTER. 01001000
  1016. A 1,SPEC+28(,13) .. 01002000
  1017. AH 1,HW7 FORCE ALIGNMENT ON DOUBLE WORD. 01003000
  1018. SRL 1,3 .. 01004000
  1019. SLL 1,3 .. 01005000
  1020. ST 1,LOCCT(,13) .. 01006000
  1021. C6AB5 SR 2,2 .. 01007000
  1022. CLI SPEC+5(13),C' ' 01008000
  1023. BC 8,C6AB3 BR IF NO ADDR 01009000
  1024. STC 6,SPEC+4(,13) 01010000
  1025. TM SWS,ENDB END BIT ON --- 01011000
  1026. BC 8,C6AB3 BR NO, ADDR SAVED 01012000
  1027. NI SWS,255-(FTTR1+ENDB) .. 01013000
  1028. TM SWS,ABS TEST ABSOLUTE LOAD FLAG. 01014000
  1029. BC 1,C6AB4 BR, ABS-LOAD FLAG ON 01015000
  1030. LH 3,SPEC+14(,13) LOD ESID 01016000
  1031. BAL 14,REFADR 01017000
  1032. L 2,12(,12) RELOCATION FACTOR 01018000
  1033. C6AB4 A 2,SPEC+4(,13) FORM ADDR 01019000
  1034. ST 2,BRAD(,13) 01020000
  1035. C6AB3 DS 0H 01021000
  1036. LA 2,ESIDTB(,13) CLEAR ESIDTB TABLE 01022000
  1037. LA 3,NOESD*2/256 GET NUMBER OF XC'S NEEDED 01023000
  1038. XC 0(256,2),0(2) CLEAR 01024000
  1039. LA 2,256(,2) BUMP PTR 01025000
  1040. BCT 3,*-10 01026000
  1041. OI SWS,ABS ABSOLUTE FLAG ON. 01027000
  1042. USING XTRBLOK,R3 ADDRESSABILITY 01028000
  1043. L R1,PNTXTR GET EXTRN BUFFER @VA04840 01029100
  1044. L R3,PNTXTR0 GET ESD TYPE 0 HEADER @VA04840 01029200
  1045. ST R1,0(,R3) PATCH TO EXISTING CHAIN @VA04840 01029300
  1046. XC PNTXTR,PNTXTR ZIP EXTRN BUFFER PNTR @VA04840 01029400
  1047. NXTLINE LA R5,XTRLINE POINT TO CONTROL LIST FOR PRINTER 01030000
  1048. BAL R14,ERPRNT GO PRINT THIS LINE 01031000
  1049. LR R1,R3 ADDRESS INTO R1 FOR FRET 01032000
  1050. LA R0,XTRSIZE AND SIZE OF BLOK 01033000
  1051. L R3,XTRPNT GET POINTER TO NEXT BUFFER (IF ANY) 01034000
  1052. L R15,AFRETX ADDRESS OF FRET ROUTINE 01035000
  1053. BALR R14,R15 NOW FRET IT. 01036000
  1054. L R15,BREG1 RESTORE REG-15 01037000
  1055. LTR R3,R3 ANY MORE BUFFERS IN THE CHAIN 01038000
  1056. BNZ NXTLINE YES - GO PROCESS THEM 01039000
  1057. XC PNTXTR0,PNTXTR0 ZIP ESD TYPE 0 BUFFER PNTR @VA04840 01040500
  1058. LA R5,SPACE1 SPACE PRINTER ONE LINE 01041000
  1059. BAL R14,ERPRNT ... 01042000
  1060. LA R5,SPACE1 SPACE PRINTER 1 ADDITIONAL LINE 01043000
  1061. BAL R14,ERPRNT ... 01044000
  1062. DROP R3 01045000
  1063. BC 15,RD TO RD 01046000
  1064. EJECT 01047000
  1065. *********************************************************************** 01048000
  1066. * 01049000
  1067. * LOAD TERMINATE CARD ROUTINE (LDT) 01050000
  1068. * 01051000
  1069. *********************************************************************** 01052000
  1070. * 01053000
  1071. C6AC1 C 1,LDT 01054000
  1072. BC 7,CTLCRD NOT LDT - IS IT CTL CARD 01055000
  1073. C6AC2 CLI SPEC+16(13),C' ' IS THERE A NAME 01056000
  1074. BC 7,C6AD3 YES 01057000
  1075. C6AC3 C 6,BRAD(,13) NO - IS THERE AN ADDRESS 01058000
  1076. BC 8,C6AD4 BR-NO ADDR DEVELOPED 01059000
  1077. L 0,BRAD(,13) LOD SAVED BR ADDR 01060000
  1078. EXEC DS 0H 01061000
  1079. LA 2,ESIDTB(,13) CLEAR ESIDTB TABLE 01062000
  1080. LA 3,NOESD*2/256 GET NUMBER OF XC'S NEEDED 01063000
  1081. XC 0(256,2),0(2) CLEAR 01064000
  1082. LA 2,256(,2) BUMP PTR 01065000
  1083. BCT 3,*-10 01066000
  1084. OI SWS,ABS SET ABSOLUTE LOAD FLAG. 01067000
  1085. ST 0,PSW+4 01068000
  1086. TM SWS+1,SKPFLG 01069000
  1087. BC 1,SKPERR 01070000
  1088. L 12,TBLREF(,13) 01071000
  1089. LH 4,TBLCT(,13) 01072000
  1090. LA 3,16 01073000
  1091. SUB1 SR 12,3 POINT TI FIRST ENTRY IN REFTBL 01074000
  1092. TM 8(12),X'80' IS UNDEFINED BIT ON 01075000
  1093. BC 8,NO1 NO - PICK UP NEXT ENTRY 01076000
  1094. MVC ERRU(8),0(12) 01077000
  1095. LA 5,ERRORU YES - GO PRINT UNDEFINED NAME 01078000
  1096. BAL 14,ERPRNT 01079000
  1097. SR 1,1 01080000
  1098. L 7,AADDEF DEFINE UNDEFINED SYMBOL AT ZERO 01081000
  1099. BALR 14,7 01082000
  1100. NO1 BCT 4,SUB1 01083000
  1101. BAL 14,PAGER 01084000
  1102. LH 3,TBLCT(,13) GET COUNT OF ENTRIES IN REFTBL 01085000
  1103. LR 2,3 AND PLACE IN REGISTER TWO 01086000
  1104. SLL 3,4 GET THE NUMBER OF BYTES IN REFTBL AND 01087000
  1105. L 1,TBLREF(,13) SUBTRACT QUANTITY FROM LARGEST ADDRESS O 01088000
  1106. SR 1,3 TABLE+1 TO GET START OF REFTBL IN REG. 1 01089000
  1107. LPSW PSW MUST BE CHANGED LATER 01090000
  1108. * 01091000
  1109. C6AC4 LA 3,1 01092000
  1110. BAL 14,REFADR 01093000
  1111. CA6D4 L 0,8(,12) 01094000
  1112. BC 15,EXEC 01095000
  1113. C6AD3 LA 2,ERLDT 01096000
  1114. BAL 3,SERCH GO FIND THE NAME 01097000
  1115. BC 15,CA6D4 NAME FOUND 01098000
  1116. C6AD4 L 12,TBLREF(,13) 01099000
  1117. LA 6,16 01100000
  1118. SR 12,6 01101000
  1119. BC 15,CA6D4 01102000
  1120. * 01103000
  1121. ERLDT MVC ERRU(6),SPEC+16(13) 01104000
  1122. MVC ERRU+6(2),BLANKS 01105000
  1123. LA 5,ERRORU 01106000
  1124. BAL R14,ERPRNT PRINT ERROR 01107000
  1125. BAL R14,PAGER EJECT PAGE 01108000
  1126. SVC 103 DIE..... 01109000
  1127. SPACE 01110000
  1128. SKPERR LA 5,SKIPM CONTROL SECTION NOT FOUND BY EOF 01111000
  1129. BAL R14,ERPRNT PRINT ERROR 01112000
  1130. BAL R14,PAGER EJECT PAGE 01113000
  1131. SVC 104 DIE... 01114000
  1132. EJECT 01115000
  1133. *********************************************************************** 01116000
  1134. * 01117000
  1135. * CONTROL CARD ROUTINE (CTL) 01118000
  1136. * 01119000
  1137. * 01120000
  1138. * THIS ROUTINE PROVIDES FOR THE OPTIONAL PRINTING OF 01121000
  1139. * INVALID CARDS, REPLACE CARDS, AND LOAD LISTING. 01122000
  1140. * 01123000
  1141. *********************************************************************** 01124000
  1142. * 01125000
  1143. CTLCRD C 1,CTL 01126000
  1144. BC 8,SETSWS THIS IS A CONTROL CARD 01127000
  1145. TM SWS,INVSW ILLEGAL CARD - DO WE PRINT IT. 01128000
  1146. BC 8,BADCRD YES 01129000
  1147. BC 15,RD NO - IGNORE AND GET ANOTHER CARD 01130000
  1148. SPACE 3 01131000
  1149. SETSWS MVC CDIMJ(80),SPEC+1(13) 01132000
  1150. LA 5,CRDIMJ 01133000
  1151. BAL 14,ERPRNT PRINT CTL CARD IMAGE 01134000
  1152. LA 5,SPEC+4(,13) SET UP TO SCAN REAST OF CONTROL 01135000
  1153. LA 6,1 CARD FOR FIELDS 01136000
  1154. LA 7,SPEC+79(,13) 01137000
  1155. LOOKBL CLI 0(5),C' ' IS THIS A BLANK 01138000
  1156. BC 8,BUMP YES - BUMP COUNTER 01139000
  1157. TM SWS+1,RDRSWT+WTRSWT 01140000
  1158. BC 7,UNITB 01141000
  1159. CLC 0(4,5),REPS NO - IS IT SREP 01142000
  1160. BC 7,REPPT NO 01143000
  1161. OI SWS,REPSW YES. 01144000
  1162. BC 15,MOVEUP POINT TO NEXT FIELD 01145000
  1163. REPPT CLC 0(4,5),REPP IS IT PREP 01146000
  1164. BC 7,INVSP NO 01147000
  1165. NI SWS,255-REPSW .. 01148000
  1166. BC 15,MOVEUP POINT TO NEXT FIELD 01149000
  1167. INVSP CLC 0(4,5),INVS IS IT SINV 01150000
  1168. BC 7,INVPT NO 01151000
  1169. OI SWS,INVSW YES. 01152000
  1170. BC 15,MOVEUP POINT TO NEXT FIELD 01153000
  1171. INVPT CLC 0(4,5),INVP IS IT VINP 01154000
  1172. BC 7,UNIT 01155000
  1173. NI SWS,255-INVSW .. 01156000
  1174. MOVEUP A 5,THREE NO - LOOK FOR ANOTHER FIELD 01157000
  1175. BUMP BXLE 5,6,LOOKBL 01158000
  1176. BC 15,RD ALL DONE - GET NEXT CARD 01159000
  1177. EJECT 01160000
  1178. BADCRD DS 0H 01161000
  1179. CLI SPEC(13),2 LOADER CARD? 01162000
  1180. BE BDCRDB YES 01163000
  1181. CLI SPEC(13),C'A' COMMENT CARD? 01164000
  1182. BNL BDCRDA YES 01165000
  1183. CLI SPEC(13),C'*' COMMENT CARD? 01166000
  1184. BE BDCRDA YES 01167000
  1185. CLC SPEC(5,13),CMSREAD CMS 'READ' CARD 01168000
  1186. BE CMSCARD YES 01169000
  1187. CLI SPEC(13),C' ' COMMENT CARD? 01170000
  1188. BNE BDCRDB NOP 01171000
  1189. B BDCRDA YES 01172000
  1190. CMSCARD EQU * HERE FOR SPECIAL CMS 'READ' CARD 01173000
  1191. CLI CPEND,X'FF' IS THIS FIRST 'READ' CARD AFTER DMKCPE ? 01174000
  1192. BNE NOTCPE NO - 01175000
  1193. BAL R14,SET YES - SKIP TO CHANNEL 1 01176000
  1194. MVC CDCOM+80(25),ORAREA CLEAR PRINT AREA 01177000
  1195. MVC CDCOM(80),ASTRIS PUT IN EYE CHATCHER 01178000
  1196. LA R5,PRCOM ADDRESS OF CHANNEL PROGRAM 01179000
  1197. BAL R14,ERPRNT PRINT IT... 01180000
  1198. MVC CDCOM(80),CPEHDR PUT IN HEADING LINE. 01181000
  1199. LA R5,PRCOM ADDRESS OF CHANNEL PROGRAM 01182000
  1200. BAL R14,ERPRNT PRINT IT. 01183000
  1201. MVC CDCOM(80),ASTRIS PUT IT EYE CHATCHER. 01184000
  1202. LA R5,PRCOM ADDRESS OF CHANNEL PROGRAM 01185000
  1203. BAL R14,ERPRNT PRINT IT 01186000
  1204. MVI CPEND,X'00' CLEAR DMKCPE SWITCH 01187000
  1205. LA R5,SPACE1 ADDRESS OF CCW TO SPACE PRINTER 01188000
  1206. BAL R14,ERPRNT DO IT. 01189000
  1207. LA R5,SPACE1 CAUSE A DOUBLE SPACE 01190000
  1208. BAL R14,ERPRNT ... 01191000
  1209. NOTCPE MVC CDCOM(80),SPEC(R13) MOVE IN CARD IMAGE 01192000
  1210. MVC CDCOM+80(25),ORAREA BLANK REMAINDER 01193000
  1211. MVI CDCOM,C'*' REPLACE COLON WITH AN ASTERISK @VA11453 01193100
  1212. LA R5,PRCOM PRINT CMS CARD 01194000
  1213. B BDCRDC REJOIN 01195000
  1214. BDCRDA DS 0H 01196000
  1215. MVC CDCOM(25),ORAREA 01197000
  1216. MVC CDCOM+25(80),SPEC(13) MOVE CARD IMAGE 01198000
  1217. LA 5,PRCOM PRINT COMMENT 01199000
  1218. B BDCRDC REJOIN 01200000
  1219. BDCRDB DS 0H 01201000
  1220. LA 5,ERRORA 01202000
  1221. MVC CDIMJ(80),SPEC(13) 01203000
  1222. MVC CDCOM+80(25),ORAREA 01204000
  1223. BDCRDC DS 0H 01205000
  1224. LA 14,RD 01206000
  1225. BC 15,ERPRNT 01207000
  1226. UNIT CLC 0(3,5),RDRCTL RDR CTL CARD 01208000
  1227. BC 7,UNITA NO 01209000
  1228. OI SWS+1,RDRSWT YES - CONTINUE SCAN 01210000
  1229. BC 15,MOVEUP 01211000
  1230. SPACE 01212000
  1231. UNITA CLC 0(3,5),WTRCTL 01213000
  1232. BC 7,SKIPX 01214000
  1233. OI SWS+1,WTRSWT 01215000
  1234. BC 15,MOVEUP 01216000
  1235. SPACE 01217000
  1236. UNITB LA 4,3 01218000
  1237. L 1,HEXBB CONVERT UNIT ADDRESS AND STORE IN PACE 01219000
  1238. BALR 0,1 01220000
  1239. TM SWS+1,RDRSWT 01221000
  1240. BC 1,UNITC 01222000
  1241. STH 0,PRNTR 01223000
  1242. LR 1,5 IF PRINTER IS SWITCHED, LET BOTH KNOW 01224000
  1243. LA 5,CRDIMJ 01225000
  1244. BAL 14,ERPRNT 01226000
  1245. LR 5,1 01227000
  1246. NI SWS+1,255-WTRSWT 01228000
  1247. BC 15,MOVEUP 01229000
  1248. SPACE 01230000
  1249. UNITC STH 0,READER 01231000
  1250. NI SWS+1,255-RDRSWT 01232000
  1251. BC 15,MOVEUP 01233000
  1252. SPACE 01234000
  1253. SKIPX CLC 0(4,5),SKIPWD SPECIAL CONTROL CARD ? 01235000
  1254. BC 7,BUMP 01236000
  1255. OI SWS+1,SKPFLG 01237000
  1256. MVC RDR(2),READER SAVE CURRENT READER 01238000
  1257. MVC SKPMSG(8),5(5) SAVE CSECT NAME TO BE SKIPPED 01239000
  1258. BC 15,RD 01240000
  1259. * SKIP CSECTNAME CAUSES LOADING TO CONTINUE NORMALLY UNTIL 01241000
  1260. * 'CSECTNAME' OCCURS ON AN ESD 0 CARD. AT THAT TIME, ALL INPUT 01242000
  1261. * CARDS ARE SKIPPED UNTIL AND 'END' CARD APPEARS AAT WHICH 01243000
  1262. * TIME 'READER' IS SET BACK TO 'RDR', AND LAODING CONTINUES 01244000
  1263. * NORMALLY. USEFULE FOR SLEECTIVE REPLACEMENT OF DECKS. 01245000
  1264. EJECT 01246000
  1265. *********************************************************************** 01247000
  1266. * 01248000
  1267. * ROUTINE TO LOCATE REFTBL ENTRIES 01249000
  1268. * THRU ESID 01250000
  1269. * 01251000
  1270. * LH 3, WITH ESID, RH, OR PH 01252000
  1271. * VALUE BEFORE ENTERING ROUTINE 01253000
  1272. * THIS ROUTINE COMPUTES THE STORAGE ADDRESS OF A GIVEN ENTRY IN REF 01254000
  1273. * 01255000
  1274. *********************************************************************** 01256000
  1275. * 01257000
  1276. REFADR L 12,TBLREF(,13) 01258000
  1277. SLL 3,1 TIMES 2 FOR HALFWORD ENTRY 01259000
  1278. LH 3,ESIDTB(13,3) OBTAINS FROM ESIDTB TABLE ENTRY 01260000
  1279. SLL 3,4 MULTIPLY BY 16 01261000
  1280. SR 12,3 SIZE-(ESID X 16) 01262000
  1281. BCR 15,14 01263000
  1282. SPACE 3 01264000
  1283. *********************************************************************** 01265000
  1284. * 01266000
  1285. * ROUTINE TO SEARCH REFERENCE TABLE 01267000
  1286. * FOR A GIVEN NAME 01268000
  1287. * 01269000
  1288. *********************************************************************** 01270000
  1289. * 01271000
  1290. * CALLING SEQUENCE-- 01272000
  1291. * L(LA) 2,NOT FOUND RETURN 01273000
  1292. * BAL 3,ENTRY FOUND RETURN 01274000
  1293. * REG 12 = ADDR OF ENTRY IN REFTBL.REG 11=1,REG 1= NAME OF PROG 01275000
  1294. * THIS ROUTINE COMPARES EACH REFERENCE TABLE ENTRY 01276000
  1295. * WITH THE GIVEN NAME,DETERMINING FIRST WHETHER THERE 01277000
  1296. * IS AN ENTRY FOR THAT NAME AND 2ND WHAT THE 01278000
  1297. * STORAGE ADDRESS OF THAT ENTRY IS. 01279000
  1298. * 01280000
  1299. *********************************************************************** 01281000
  1300. * 01282000
  1301. SERCH LH 0,TBLCT(,13) NO. OF ENTRIES IN REFTBL 01283000
  1302. LA 1,SPEC+16(,13) ADDR OF NAME IN CRD 01284000
  1303. SR 4,4 01285000
  1304. LA 5,16 LOAD ENTRY SIZE 01286000
  1305. L 12,TBLREF(,13) LARGEST ADDR IN STORAGE+1 01287000
  1306. LTR 0,0 01288000
  1307. BC 8,NOT 01289000
  1308. CLC 0(8,1),BLANKS IS IT A BLANK NAME 01290000
  1309. BC 7,CMP NO 01291000
  1310. LR 4,0 UPDATE REG 4 WITH TBLCT 01292000
  1311. SLL 0,4 SET REGISTER 12 TO POINT TO 01293000
  1312. SR 12,0 NEXT ENTRY IN REFTBL 01294000
  1313. BC 15,NOT RETURN 01295000
  1314. CMP SR 12,5 01296000
  1315. AR 4,11 TO ACCUM ENTRY POSITION 01297000
  1316. CLC 0(8,1),0(12) COMPARE NAME IN CARD TO NAME IN REFTBL 01298000
  1317. BCR 8,3 BR- NAME FOUND 01299000
  1318. BCT 0,CMP 01300000
  1319. NOT SR 12,5 01301000
  1320. AR 4,11 ADD TO TOTAL ENTRIES 01302000
  1321. L 0,AMAXREF MAX NO. OF UNRESOLVED REF, 01303000
  1322. CR 4,0 01304000
  1323. BC 10,ERREF REFERENCE TABLE OVERFLOW 01305000
  1324. STH 4,TBLCT(,13) NO. FO ENTRIES IN TBLREF 01306000
  1325. MVC 0(8,12),0(1) PLACE NAME IN TABLE 01307000
  1326. XC 8(8,12),8(12) CLEAR OTHER HALF ON ENTRY. 01308000
  1327. BCR 15,2 01309000
  1328. ERREF LA 5,ERRORR GO TO ERPRNT WITH COMMENT OF REFERENCE 01310000
  1329. BAL R14,ERPRNT PRINT TABLE OVERFLOW 01311000
  1330. BAL R14,PAGER EJECT PAGE 01312000
  1331. SVC 105 DIE... 01313000
  1332. EJECT 01314000
  1333. *********************************************************************** 01315000
  1334. * 01316000
  1335. * ERROR MESSAGES ROUTINE 01317000
  1336. * 01318000
  1337. *********************************************************************** 01319000
  1338. * 01320000
  1339. RDCONSL L 0,RDCLCCW 01321000
  1340. N 0,R3BIT 01322000
  1341. O 0,0(,5) 01323000
  1342. ST 0,RDCLCCW 01324000
  1343. LH 0,4(,5) 01325000
  1344. LTR 0,0 01326000
  1345. BCR 8,14 01327000
  1346. STH 0,RDCLCCW+6 01328000
  1347. LA 8,10 LOAD RETRY COUNTER 01329000
  1348. LH 2,PRNTR 01330000
  1349. ERPR2 SSM CH0OFF 01331000
  1350. MVC ZCAW(4),RDCCA 01332000
  1351. LA 0,ERPR2 01333000
  1352. ST 0,PRTWAT+8 01334000
  1353. B STARTIO 01335000
  1354. ERPRNT CLI CPUID,X'FF' RUNNING UNDER CP? HRC031DK 01336000
  1355. BNER R14 NO, MUST BE BARE MACHINE HRC031DK 01336333
  1356. LH R0,4(,R5) GET LENGTH HRC031DK 01336666
  1357. LTR R0,R0 IS ANY THERE ? 01337000
  1358. BCR 8,R14 NO - RETURN 01338000
  1359. MVI PRTLINE,C' ' BLANKS 01339000
  1360. MVC PRTLINE+1(129),PRTLINE FOR STARTER 01340000
  1361. L R2,0(,R5) ADDRESS OF DATA 01341000
  1362. LH R8,4(,R5) AND ITS LENGTH 01342000
  1363. BCTR R8,R0 MINUS 1 BYTE FOR EXCUTE INST. 01343000
  1364. EX R8,PRTMOVE MOVE TO OUTPUT AREA 01344000
  1365. LA R0,ERRCCW ADDRESS OF CCW 01345000
  1366. ST R0,ZCAW STORE IN CAW 01346000
  1367. LA R8,10 RETRY ERROR COUNTER 01347000
  1368. LH R2,PRNTR ADDRESS OF I/O DEVICE 01348000
  1369. ERPR1 SSM CH0OFF MASK OFF CHANNEL 01349000
  1370. LA R0,ERPR1 01350000
  1371. ST R0,PRTWAT+8 01351000
  1372. STARTIO SIO 0(2) AND START I/O 01352000
  1373. SPACE 01353000
  1374. BC 8,PRTDRN SIO OK, .. GO WAIT FOR CE 01354000
  1375. BC 2,PRTWAT UNIT BUSY - WAIT. 01355000
  1376. BCR 1,14 UNIT UNAVAILABLE - FORGET IT AND PAY 01356000
  1377. CH 2,CNSL 01357000
  1378. BE CKERR 01358000
  1379. TM IGNSW,X'01' 01359000
  1380. BZ CKERR 01360000
  1381. BC 15,14 01361000
  1382. CKERR BCT 8,CONT RETRY 10 TIMES? 01362000
  1383. MVC 0(15,0),MSG5 01363000
  1384. B WAITLCMG 01364000
  1385. PRTMOVE MVC PRTLINE(*-*),0(R2) SET UP PRINT LINE 01365000
  1386. CONT TM ZCSW+4,X'02' TEST FOR UNIT CHECK 01366000
  1387. BC 1,ERPR1 YES - CONTINUE TO TRY. 01367000
  1388. TM ZCSW+4,X'14' TEST FOR BUSY AND DEVICE END 01368000
  1389. BC 1,ERPR1 BOTH - TRY AGAIN. 01369000
  1390. TM ZCSW+4,X'10' TEST FOR BUSY. 01370000
  1391. BC 1,PRTWAT YES - WAIT FOR INTERRUPT. 01371000
  1392. BC 15,ERPR1 OTHERWISE - TRY AGAIN. 01372000
  1393. * 01373000
  1394. PRTDRN TIO 0(2) TIO 'TIL CE 01374000
  1395. BC 2,*-4 01375000
  1396. L R0,LINECNT GET CURRENT NUMBER LINES ON THIS PAGE 01376000
  1397. AL R0,CONST1 BUMP IT BY 1. 01377000
  1398. ST R0,LINECNT SAVE IT. 01378000
  1399. CH R0,LINEMAX 60 LINES ON THIS PAGE YET? 01379000
  1400. BCR 4,R14 NO - RETURN TO CALLER 01380000
  1401. B SET YES - SKIP TO PAGE 1. 01381000
  1402. * 01382000
  1403. CNOP 4,8 01383000
  1404. * 01384000
  1405. PRTWAT LPSW *+4 01385000
  1406. DC X'FE020000' 01386000
  1407. PRTWATAD DC AL4(ERPR1) 01387000
  1408. * 01388000
  1409. DMPTBL DC C'0123456789ABCDEF' DUMP CONVERTER 01389000
  1410. * 01390000
  1411. PAGER CLI CPUID,X'FF' UNDER CONTROL OF CP? HRC031DK 01391000
  1412. BNER R14 NO, NO MAP ON BARE MACHINE HRC031DK 01391333
  1413. LA 8,5 SET UP RETRY COUNTER HRC031DK 01391666
  1414. LH 2,PRNTR GET PRINTER ADDRESS. 01392000
  1415. TESTIO TIO 0(2) CLEAR CHANNEL 01393000
  1416. BC 2,*-4 TRY AGAIN 01394000
  1417. BC 8,SET 01395000
  1418. TM ZCSW+4,X'10' BUSY ? 01396000
  1419. BO TESTIO YES 01397000
  1420. TM IGNSW,X'01' 01398000
  1421. BO RTURN 01399000
  1422. BCT 8,TESTIO 01400000
  1423. ST 14,LINKSAV 01401000
  1424. INT LA 5,INTPRT 01402000
  1425. MVC PRNTR(2),CNSL 01403000
  1426. INTVENP BAL 14,ERPRNT 01404000
  1427. CNOP 4,8 01405000
  1428. WAITPRNT LPSW *+4 01406000
  1429. DC X'FE020000' 01407000
  1430. WAITPRAD DC A(*+4) 01408000
  1431. CLC READER,58 01409000
  1432. BE WAITPRNT 01410000
  1433. CLC CNSL,58 01411000
  1434. BE IGNOR 01412000
  1435. MVC PRNTR,58 01413000
  1436. MVC PRNTSET,58 01414000
  1437. L 14,LINKSAV 01415000
  1438. B PAGER 01416000
  1439. LINKSAV DS 1F 01417000
  1440. SPACE , HRC031DK 01418000
  1441. SET CLI CPUID,X'FF' RUNNING UNDER VM? HRC031DK 01418250
  1442. BNER R14 NO, FORGET SKIPS TO CH 1 HRC031DK 01418500
  1443. SSM CH0OFF HRC031DK 01418750
  1444. LH R2,PRNTR GET PRINTER ADDRESS 01419000
  1445. TIO 0(R2) DRAIN OUTSTANDING INTERRUPTS 01420000
  1446. BC 4+2,*-4 ... 01421000
  1447. SLR R0,R0 CLEAR 01422000
  1448. ST R0,LINECNT CURRENT LINE NUMBER COUNTER 01423000
  1449. LA R0,PGRSTR ADDRESS OF SKIP CCW. 01424000
  1450. ST R0,ZCAW STORE IT IN CAW 01425000
  1451. SIO 0(R2) NOW SKIP TO 1 01426000
  1452. SSM CH0ON ENABLE FOR INTERRUPTS 01427000
  1453. RTURN BR R14 RETURN TO CALLER 01428000
  1454. IGNOR TM 68,X'80' 01429000
  1455. BZ WAITPRNT 01430000
  1456. LA 5,IGNMSG 01431000
  1457. BAL 14,RDCONSL 01432000
  1458. MVC PRNTR(2),PRNTSET 01433000
  1459. OC MSG4,ORAREA 01434000
  1460. CLC MSG4,IGN 01435000
  1461. BNE INT 01436000
  1462. MVI IGNSW,X'01' 01437000
  1463. L 14,LINKSAV 01438000
  1464. B RTURN 01439000
  1465. ORAREA DC CL25' ' 01440000
  1466. IGNMSG DC A(MSG4) 01441000
  1467. DC H'0006' 01442000
  1468. IGN DC C'IGNORE' 01443000
  1469. IGNSW DC X'00' 01444000
  1470. MSG5 DC C'UNRECOVERABLE ERROR' 01445000
  1471. EJECT 01446000
  1472. ********************************************************************* 01447000
  1473. * 01448000
  1474. * PRINTED MESSAGES 01449000
  1475. * 01450000
  1476. ********************************************************************* 01451000
  1477. * 01452000
  1478. RMES1 DC C'INTERVENTION ' 01453000
  1479. DC C'REQUIRED - ' 01454000
  1480. RMES2 DC C'UNIT CHECK. RETURN LAST CARD TO HOPPER' 01455000
  1481. RMES3 EQU * 01456000
  1482. ERRU DS 8C 01457000
  1483. DC C' IS UNDEFINED' 01458000
  1484. ERRA DC C'INVALID CARD...' 01459000
  1485. CDIMJ DS 80C 01460000
  1486. ERRD DS 8C 01461000
  1487. DC C' IS DEFINED MORE' 01462000
  1488. DC C' THAN ONCE' 01463000
  1489. ERRO DC C'OVERLAY ERROR' 01464000
  1490. ERRP DC C' ' 01465000
  1491. ERRF DC C' ' 01466000
  1492. RLDREFXT DC CL7' ' 01467000
  1493. LOC1 DS CL8 01468000
  1494. DC C' AT ' 01469000
  1495. DC CL35' ' 01470000
  1496. ERRR DC C'REFERENCE TABLE ' 01471000
  1497. DC C'OVERFLOW.' 01472000
  1498. ERRM DC C'DUPLICATE ' 01473000
  1499. DC C'IDENTIFIER - ' 01474000
  1500. NAME DS CL8 01475000
  1501. ENDERR EQU * 01476000
  1502. SKPMSG DS 8C 01477000
  1503. DC C' NOT FOUND BY EOF TIME' 01478000
  1504. SKPMSG1 EQU * 01479000
  1505. * 01480000
  1506. CDCOM DC CL105' ' 01481000
  1507. PRCOM DC A(CDCOM) 01482000
  1508. DC H'105' 01483000
  1509. RETYRD DC A(RMES1) 01484000
  1510. DC AL2(RMES2-RMES1) 01485000
  1511. VALCHK DC A(RMES2) 01486000
  1512. DC AL2(RMES3-RMES2) 01487000
  1513. ERRORU DC A(ERRU) 01488000
  1514. DC AL2(ERRA-ERRU) 01489000
  1515. ERRORA DC A(ERRA) 01490000
  1516. DC AL2(ERRD-ERRA) 01491000
  1517. ERRORD DC A(ERRD) 01492000
  1518. DC AL2(ERRO-ERRD) 01493000
  1519. ERRORO DC A(ERRO) 01494000
  1520. DC AL2(ERRP-ERRO) 01495000
  1521. ERRORL DC A(RLDREFXT) 01496000
  1522. DC AL2(ERRR-RLDREFXT-2) 01497000
  1523. ERRORR DC A(ERRR) 01498000
  1524. DC AL2(ERRM-ERRR) 01499000
  1525. ERRORM DC A(ERRM) 01500000
  1526. DC AL2(ENDERR-ERRM) 01501000
  1527. CRDIMJ DC A(CDIMJ) 01502000
  1528. DC AL2(ERRD-CDIMJ) 01503000
  1529. SKIPM DC A(SKPMSG) 01504000
  1530. DC AL2(SKPMSG1-SKPMSG) 01505000
  1531. SPACE1 DC A(ORAREA) 01506000
  1532. DC AL2(1) 01507000
  1533. INTPRT DC A(MSG1) 01508000
  1534. DC X'0020' 01509000
  1535. MSG1 DC C'INTERVENTION REQUIRED - PRINTER ' 01510000
  1536. MSG4 DC 3H'0' 01511000
  1537. HEADING DC C'** EXTERNAL SYMBOL DICTIONARY FOR ' 01512000
  1538. DS 0F 01513000
  1539. PNTXTR0 DC F'0' PNTR TO ESD TYPE 0 ESID HEADER @VA04840 01513500
  1540. PNTXTR DC F'0' POINTER TO LIST OF EXTRNS TO PRINT. 01514000
  1541. LINECNT DC F'0' CURRENT LINES PRINTED ON PAGE. 01515000
  1542. LINEMAX DC H'60' MAX. NUMBER LINES ALLOWED ON PAGE 01516000
  1543. CONST1 DC F'1' CONSTANT 01517000
  1544. SPACE 1 01518000
  1545. DMKPSA DC CL6'DMKPSA' MODULE USED BY VM/370 01519000
  1546. DMKCPE DC CL6'DMKCPE' MODULE INDICATING END OF NUCLEUS 01520000
  1547. DMKWRM DC CL6'DMKWRM' DON'T FORCE ON PAGE BOUNDARY 01521000
  1548. SPBHDR DC CL15' (SPB INSERTED)' MESSAGE INDICATOR 01522000
  1549. ASTRIS DC CL80'*** X01523000
  1550. ***' 01524000
  1551. CPEHDR DC CL80' END OF VM/370 RESIDENT NUCLEUS' 01525000
  1552. ESDHDR DC CL21'MODULE SIZE IS XXXXXX' 01526000
  1553. VM370 DC X'00' FF IF DMKPSA FOUND 01527000
  1554. ENDNUC DC X'00' FF IF DMKCPE FOUND 01528000
  1555. CPEND DC X'00' SWITCH FOR FIRST READ CARD AFTER DMKCPE 01529000
  1556. EJECT 01530000
  1557. *********************************************************************** 01531000
  1558. * 01532000
  1559. * CONSTANTS AREA 01533000
  1560. * 01534000
  1561. *********************************************************************** 01535000
  1562. * 01536000
  1563. BELOW DC A(ALPHA) 01537000
  1564. * 01538000
  1565. SLC DC X'02' *** 01539000
  1566. DC C'SLC' 01540000
  1567. SPB DC X'02' *** 01541000
  1568. DC C'SPB' 01542000
  1569. ICS DC X'02' *** 01543000
  1570. DC C'ICS' 01544000
  1571. ESD DC X'02' *** 01545000
  1572. DC C'ESD' 01546000
  1573. TXT DC X'02' *** 01547000
  1574. DC C'TXT' 01548000
  1575. REP DC X'02' *** 01549000
  1576. DC C'REP' 01550000
  1577. RLD DC X'02' *** 01551000
  1578. DC C'RLD' 01552000
  1579. END DC X'02' *** 01553000
  1580. DC C'END' 01554000
  1581. LDT DC X'02' *** 01555000
  1582. DC C'LDT' 01556000
  1583. CTL DC X'02' 01557000
  1584. DC C'CTL' 01558000
  1585. * 01559000
  1586. BLANKS DC CL8' ' 01560000
  1587. SKIPWD DC C'SKIP' 01561000
  1588. RDRCTL DC C'RDR' READER CONTROL CARD 01562000
  1589. WTRCTL DC C'WTR' PRINTER CONTROL CARD 01563000
  1590. CMSREAD DC C':READ' SPECIAL CMS CARD ? 01564000
  1591. HW7 DC H'7' CONSTANT 01565000
  1592. * 01566000
  1593. * THE FOLLOWING INSTRUCTION 01567000
  1594. * SHOULD BE ADJUSTED TO READ-- 01568000
  1595. *CTRSET DC A(CTRR) 01569000
  1596. * FOR LOW ASSEMBLIES, AND 01570000
  1597. *CTRSET DC A(256) 01571000
  1598. * FOR HIGH ASSEMBLIES. 01572000
  1599. * INITIAL VALUE FOR LOCCT(13) 01573000
  1600. * 01574000
  1601. CTRSET DC A(0) INITIAL LOCATION COUNTER SETTING 01575000
  1602. * 01576000
  1603. ABOVE DC A(256) 01577000
  1604. * 01578000
  1605. LEND DC A(OMEGA) 01579000
  1606. AADDEF DC A(ADDEF) 01580000
  1607. AFRINI DC A(FRINIT) 01581000
  1608. AFREE DC A(FREE) 01582000
  1609. AFRETX DC A(FRET) ADDRESS OF FRET. 01583000
  1610. APPNT DC A(APOINT) 01584000
  1611. HEXBB DC A(HEXB) 01585000
  1612. TOP DC A(MON) 01586000
  1613. AMAXREF DC A(MAXREF) MAXIMUM NUMBER OF ESD ENTRIES 01587000
  1614. ANOESD DS A(NOESD) MAXIMUN NUMBER OF EXTERNS IN 1 MODULE 01588000
  1615. * 01589000
  1616. THREE DC F'3' 01590000
  1617. * 01591000
  1618. REPS DC C'SREP' 01592000
  1619. REPP DC C'PREP' 01593000
  1620. INVS DC C'SINV' 01594000
  1621. INVP DC C'PINV' 01595000
  1622. * 01596000
  1623. DS 0D 01597000
  1624. * 01598000
  1625. PSW DC XL16'00' 01599000
  1626. * 01600000
  1627. CTLIST EQU * 01601000
  1628. DC 2D'0' ADDRESS POINTER 01602000
  1629. DC F'3' COMMON NUMBER OF DW'S USED ALOT 01603000
  1630. DC F'0' USAGE COUNTER CONTAINING CALL TO FREE 01604000
  1631. DC D'0' ALIGNMENT FOR DW BOUNDARY 01605000
  1632. DC 4D'0' NEXT ENTRY IN THE CONTROL LIST 01606000
  1633. * 01607000
  1634. ONEBIT DC X'80000000' 01608000
  1635. R3BIT DC X'FF000000' 01609000
  1636. PAGENO DC X'00FFF000' 01610000
  1637. * 01611000
  1638. BYTE1 EQU R3BIT 01612000
  1639. * 01613000
  1640. CTRR DS 0D 01614000
  1641. * 01615000
  1642. * 01616000
  1643. EJECT 01617000
  1644. * 01618000
  1645. ********************************************************************* 01619000
  1646. * 01620000
  1647. * CHANNEL AREA 01621000
  1648. * 01622000
  1649. ********************************************************************* 01623000
  1650. * 01624000
  1651. ZEXOP EQU 24 01625000
  1652. ZPROP EQU 40 01626000
  1653. ZMCOP EQU 48 01627000
  1654. ZIOOP EQU 56 01628000
  1655. ZCSW EQU 64 CHANNEL STATUS WORD. 01629000
  1656. ZCAW EQU 72 CHANNEL ADDRESS WORD 01630000
  1657. ZEXNP EQU 88 EXTERNAL INTERRUPT NEW PSW. 01631000
  1658. ZSUPNP EQU 96 01632000
  1659. ZPRNP EQU 104 01633000
  1660. ZMCNP EQU 112 01634000
  1661. ZIONP EQU 120 INPUT-OUTPUT NEW PSW 01635000
  1662. * 01636000
  1663. SPACE 3 01637000
  1664. *********************************************************************** 01638000
  1665. * 01639000
  1666. * I-O INTERRUPT HANDLER 01640000
  1667. * 01641000
  1668. *********************************************************************** 01642000
  1669. * 01643000
  1670. IOINT NI ZIOOP+1,X'FD' 01644000
  1671. MVI ZIOOP,X'00' DONT ALLOW ANY INTERRUPTS 01645000
  1672. LPSW ZIOOP REMOVE USER FROM WAIT 01646000
  1673. SPACE 01647000
  1674. *********************************************************************** 01648000
  1675. * 01649000
  1676. * EXTERNAL INTERRUPT HANDLER 01650000
  1677. * 01651000
  1678. *********************************************************************** 01652000
  1679. * 01653000
  1680. EXTINT NI ZEXOP+1,X'FD' REMOVE USER FROM WAIT 01654000
  1681. LPSW ZEXOP 01655000
  1682. SPACE 3 01656000
  1683. DROP 15 01657000
  1684. DS 0D 01658000
  1685. IONP DC F'0' 01659000
  1686. IONPAD DC A(IOINT) 01660000
  1687. EXNP DC X'01040000' 01661000
  1688. EXNPAD DC A(EXTINT) 01662000
  1689. SUPNP DC X'00060000' 01663000
  1690. DC 4X'99' 01664000
  1691. MCNP DC X'00020000' 01665000
  1692. DC 4X'BB' 01666000
  1693. PRNP DC X'00060000' WAIT WITH CODE 111111 ON PROGRAM CK. 01667000
  1694. DC 4X'11' .. 01668000
  1695. * DC A(PROGI) TO PROGRAM INTERRUPT ROUTINE LATER. 01669000
  1696. * 01670000
  1697. ERRSAV DC 8F'00' 01671000
  1698. ERETRYSW DC X'00' 01672000
  1699. CNSL DC H'09' ADDR OF CONSOLE 01673000
  1700. PRNTSET DC H'14' 01674000
  1701. PRNTR DC H'14' 01675000
  1702. READER DS H 01676000
  1703. RDR DS H 01677000
  1704. READ EQU 2 READNAD SLCT 1 01678000
  1705. WRITE EQU 9 01679000
  1706. SKIP1 EQU X'8B' 01680000
  1707. SLI EQU X'20' 01681000
  1708. * 01682000
  1709. READCL EQU X'0A' 01683000
  1710. * 01684000
  1711. INITCCW DC A(INITCCWA) INITIALIZE PRINTER CCW @V60B9BA 01684100
  1712. INITCCWA CCW X'37',0,SLI,1 ... @V60B9BA 01684200
  1713. RDCCW DC A(RDCCWA) 01685000
  1714. RDCCWA CCW READ,*-*,0,80 01686000
  1715. ERRCCA DC A(ERRCCW) 01687000
  1716. ERRCCW CCW WRITE,PRTLINE,SLI,130 @V60A6B6 01688000
  1717. PGRSTR CCW SKIP1,*-*,SLI,1 01689000
  1718. RDCLCCW CCW READCL,*-*,0,0 01690000
  1719. RDCCA DC A(RDCLCCW) 01691000
  1720. CH0OFF DC X'00' 01692000
  1721. CH0ON DC X'FE' 01693000
  1722. PRTLINE DC CL130' ' 01694000
  1723. * 01695000
  1724. * THE FOLLOWING BITS ARE DESIGNATED IN SWS --- 01696000
  1725. * 01697000
  1726. SWS DS 2C .. 01698000
  1727. * 01699000
  1728. ABS EQU X'80' ABSOLUTE LOAD FLAG. 01700000
  1729. FTTR1 EQU X'40' 01701000
  1730. BRSW EQU X'20' 01702000
  1731. ENDB EQU X'10' 01703000
  1732. FREPSW EQU X'08' 01704000
  1733. ESDSW EQU X'04' 01705000
  1734. INVSW EQU X'02' 01706000
  1735. REPSW EQU X'01' 01707000
  1736. RDRSWT EQU X'80' SWITCH THE READER 01708000
  1737. WTRSWT EQU X'40' SWITCH THE WTR 01709000
  1738. SKPFLG EQU X'20' SKIP CONTROL SECTION AND SWITCH READER 01710000
  1739. ENDFLG EQU X'10' SKIP TO END CARD 01711000
  1740. SPACE 1 01712000
  1741. DROP 9 01713000
  1742. EJECT 01714000
  1743. *********************************************************************** 01715000
  1744. * 01716000
  1745. * INITIAL ENTRY ROUTINE (RELLDR) 01717000
  1746. * 01718000
  1747. *********************************************************************** 01719000
  1748. * 01720000
  1749. BETA DS 0D 01721000
  1750. RELLDR EQU * 01722000
  1751. BALR 12,0 01723000
  1752. USING *,12 01724000
  1753. L 9,BASE 01725000
  1754. L 12,BREG1 01726000
  1755. USING RELDR,12,9 01727000
  1756. STIDP CPUID GET CPUID HRC031DK 01727500
  1757. MVI CNTR,0 REINITIALIZE TO SHOW NO FREE STORAGE 01728000
  1758. MVC READER(2),2 IPL DEVICE BECOMES READER 01729000
  1759. * 01730000
  1760. * 01731000
  1761. * HERE TO CAUSE RELOCATION TO HIGH CORE 01732000
  1762. * 01733000
  1763. LA R1,PROGINT ADDR. OF PROGRAM INTERRUPT RETURN 01734000
  1764. ST R1,ZPRNP+4 SAVE ADDR. IN NEW PROG. PSW 01735000
  1765. SLR R1,R1 CLEAR.. 01736000
  1766. ST R1,ZPRNP ZERO OUT ALL BUT ADDRESS 01737000
  1767. L R2,ENDE LOAD END ADDRESS OF THIS MODULE 01738000
  1768. L R3,SIZFE CONSTANT BET. 15 AND 16 MEG @VA04629 01739000
  1769. MVCL R2,R2 FORCE PROGRAM CHECK 01740000
  1770. * 01741000
  1771. * 01742000
  1772. PROGINT EQU * P.C. RETURN-- REG-2 = TOP OF STORAGE 01743000
  1773. S R2,PROGSIZE SUBTRACT SIZE OF THIS MODULE 01744000
  1774. L R3,FFF000 ZERO OUT LOW ORDER 12 BITS 01745000
  1775. NR R2,R3 FORCE TO 1K BOUNDARY 01746000
  1776. L R3,PROGSIZE NUMBER OF BYTES TO MOVE TO HIGH CORE 01747000
  1777. LR R4,R2 SAVE FOR RELOCATION FACTOR 01748000
  1778. SLR R4,R12 REG4 NOW HAS RELOCATION FACTOR 01749000
  1779. SLR R8,R8 CLEAR 01750000
  1780. LA R5,ADCONSLG NUMBER OF ADCONS TO RESOLVE 01751000
  1781. LA R6,ADCONS POINTER TO BEGINING OF ADCON LIST 01752000
  1782. NXTADCON L R7,0(,R6) GET ADCON ENTRY ADDRESS 01753000
  1783. ICM R8,B'0111',1(R7) GET ACTUAL ADCON 01754000
  1784. ALR R8,R4 ADD IT TO RELOCATION VALUE 01755000
  1785. STCM R8,B'0111',1(R7) PUT IT BACK 01756000
  1786. LA R6,4(,R6) BUMP TO GET NEXT ADCON IN THE LIST 01757000
  1787. BCT R5,NXTADCON PROCESS TILL LIST IS DELETED 01758000
  1788. LR R5,R2 SAVE R2 BEOFRE MVCL INSTRUCTION 01759000
  1789. LR R13,R3 SECOND OPERAND FOR 'MVCL' INSTRUCTION 01760000
  1790. LA R14,RELDR REMEMBER OLD ADDRESS AND ... @VA03812 01761000
  1791. L R15,ATOTSIZE TOTAL SIZE OF THE LOADER. @VA03812 01762000
  1792. MVCL R2,R12 MOVE MODULE TO HIGH CORE 01763000
  1793. LR R2,R5 RESTORE REG 2 01764000
  1794. LA R1,NEWSTART EXCUTION RESUME ADDRESS WITH 01765000
  1795. ALR R1,R4 PROPER RELOCATION FACTOR 01766000
  1796. ST R1,ZPROP+4 STORE IN OLD PROGRAM CHECK PSW 01767000
  1797. LR R9,R2 NEW BASE REG MUST BE LOADED WITH 01768000
  1798. LA R9,4095(,R9) VALUE OF NEW REG-12 PLUS ADDING 01769000
  1799. LA R9,1(,R9) 4096 BYTES TO IT. 01770000
  1800. LR R12,R2 ... 01771000
  1801. LPSW ZPROP TAKE OFF AT THE NEW LOCATION 01772000
  1802. * 01773000
  1803. SPACE 01774000
  1804. NEWSTART EQU * RESUME EXCUTION AT NEW STARTING LOCATION 01775000
  1805. SR R1,R1 CLEAR R1 (R0 IS IMMATERIAL) @VA03812 01776000
  1806. MVCL R14,R0 CLEAR WHERE THE OLD LOADER WAS @VA03812 01777000
  1807. LA 0,158 01778000
  1808. L 15,AFRINI 01779000
  1809. LA 1,CTLIST 01780000
  1810. BALR 14,15 01781000
  1811. L 15,AFREE 01782000
  1812. BALR 14,15 01783000
  1813. LR 13,1 01784000
  1814. LH 1,READER DRAIN ANY READER CONDITIONS. 01785000
  1815. TIO 0(1) .. 01786000
  1816. BC 7,*-4 01787000
  1817. MVC ZIONP(8),IONP MOVE IO NEW PSW TO 3OWER CORE. 01788000
  1818. MVC ZEXNP(8),EXNP SAME FOR EXTERNAL INTERRUPT. 01789000
  1819. MVC ZSUPNP(8),SUPNP 01790000
  1820. MVC ZMCNP(8),MCNP 01791000
  1821. MVC ZPRNP(8),PRNP 01792000
  1822. L 3,RDCCWA 01793000
  1823. N 3,R3BIT 01794000
  1824. LA 2,SPEC(,13) 01795000
  1825. OR 3,2 01796000
  1826. ST 3,RDCCWA READER CHANNEL COMMAND WORD 01797000
  1827. LA 0,X'B7' 01798000
  1828. STC 0,CONS(,13) 01799000
  1829. L 1,TOP 01800000
  1830. ST 1,TBLREF(,13) 01801000
  1831. MVC MVC1(12,13),MMMVC INITIALIZATION INTO STO MOVE 01802000
  1832. L 1,T1 01803000
  1833. ST 1,FREEST(,13) 01804000
  1834. L 15,BREG2 01805000
  1835. BCR 15,15 INITIAL LOADING ENTRY 01806000
  1836. DROP 12 01807000
  1837. * 01808000
  1838. CPUID DS D CPUID STORED HERE HRC031DK 01808500
  1839. PROGSIZE DC A(OMEGA-RELDR) SIZE OF THIS MODULE 01809000
  1840. SIZFE DC X'00FE0000' CONSTANT BET. 15 AND 16 MEG @VA04629 01810000
  1841. FFF000 DC X'00FFF000' USED TO FORCE TO 1K BOUNDARY 01811000
  1842. BREG1 DC A(RELDR) BASE ADDR OF LOADER 01812000
  1843. BREG2 DC A(LOAD2) INITIAL LOADING ENTRY 01813000
  1844. BASE DC A(RELDR+4096) 01814000
  1845. ATOTSIZE DC A(TOTLSIZE) TOTAL SIZE OF LOADER @VA03812 01815000
  1846. * 01816000
  1847. MMMVC MVC WD(1,13),0(3) INITIALIZATION FOR RLD SUPROUTINE 01817000
  1848. MVC 0(1,3),WD(13) 01818000
  1849. * 01819000
  1850. ADCONS DS 0F TABLE OF ADDRESS CONSTANTS 01820000
  1851. DC A(RLDR) 01821000
  1852. DC A(SECBASE) 01822000
  1853. DC A(WAIT2AD) 01823000
  1854. DC A(WAITXXAD) 01824000
  1855. DC A(PRTWATAD) 01825000
  1856. DC A(WAITPRAD) 01826000
  1857. DC A(IGNMSG) 01827000
  1858. DC A(PRCOM) 01828000
  1859. DC A(RETYRD) 01829000
  1860. DC A(VALCHK) 01830000
  1861. DC A(ERRORU) 01831000
  1862. DC A(ERRORA) 01832000
  1863. DC A(ERRORD) 01833000
  1864. DC A(ERRORO) 01834000
  1865. DC A(ERRORL) 01835000
  1866. DC A(ERRORR) 01836000
  1867. DC A(ERRORM) 01837000
  1868. DC A(CRDIMJ) 01838000
  1869. DC A(SKIPM) 01839000
  1870. DC A(SPACE1) 01840000
  1871. DC A(INTPRT) 01841000
  1872. DC A(BELOW) 01842000
  1873. DC A(LEND) 01843000
  1874. DC A(AADDEF) 01844000
  1875. DC A(AFRINI) 01845000
  1876. DC A(AFREE) 01846000
  1877. DC A(AFRETX) 01847000
  1878. DC A(APPNT) 01848000
  1879. DC A(HEXBB) 01849000
  1880. DC A(TOP) 01850000
  1881. DC A(IONPAD) 01851000
  1882. DC A(EXNPAD) 01852000
  1883. DC A(RDCCW) 01853000
  1884. DC A(INITCCW) @V60B9BA 01853100
  1885. DC A(ERRCCA) 01854000
  1886. DC AL1(128),AL3(ERRCCW) 01855000
  1887. DC A(RDCCA) 01856000
  1888. DC A(BREG1) 01857000
  1889. DC A(BREG2) 01858000
  1890. DC A(BASE) 01859000
  1891. DC A(SNSWAIAD) 01860000
  1892. DC A(INTVRAD) 01861000
  1893. DC AL1(128),AL3(TIECCW) 01862000
  1894. DC AL1(128),AL3(SENSCCW) 01863000
  1895. DC A(EQCKMSG) 01864000
  1896. DC A(NOTOPMG) 01865000
  1897. DC A(UNRECMG) 01866000
  1898. DC A(LPMSG) 01867000
  1899. DC A(SECDBASE) 01868000
  1900. DC A(RDATCKMG) 01869000
  1901. DC A(ARELDR) @VA02639 01870000
  1902. DC A(IOTAA) 01871000
  1903. DC AL1(128),AL3(IPLCCW) 01872000
  1904. DC AL1(128),AL3(IPCCW2) 01873000
  1905. DC A(BETAA) 01874000
  1906. DC A(ENDE) 01875000
  1907. DC A(START) 01876000
  1908. DC A(STOPP) 01877000
  1909. DC AL1(128),AL3(TOPX) 01878000
  1910. DC AL1(128),AL3(CARD3) @VA02018 01879000
  1911. DC AL1(128),AL3(CRD3CCW2) @VA02018 01880000
  1912. DC A(FRETAD) 01881000
  1913. DC A(AFRET) 01882000
  1914. DC A(AEXTND) 01883000
  1915. ADCONSLG EQU (*-ADCONS)/4 NUMBER OF ENTRIES IN LIST 01884000
  1916. EJECT 01885000
  1917. TAPERR BALR 3,0 01886000
  1918. USING *,3 01887000
  1919. L 9,SECDBASE 01888000
  1920. L 4,ARELDR LOAD ADDR OF RELDR 01889000
  1921. USING RELDR,4,9 ESTABLISH ADDRESSABILITY 01890000
  1922. MVC SENSFLD(6),CLEAR CLEAR OUT SENSE FIELD 01891000
  1923. MVC CSWSAV(8),ZCSW SAVE CSW 01892000
  1924. MVI ERETRYSW,X'80' SET SWITCH 01893000
  1925. SNSSIO LA 2,SENSCCW LOAD ADDR OF SENSE CCW 01894000
  1926. SSM DISABLE DISABLE IO INT 01895000
  1927. ST 2,72 STORE CCW ADDR IN CAW 01896000
  1928. LH 2,READER LOAD ADDR OF DEVICE TO BE STARTED 01897000
  1929. SENCK SIO 0(2) START DEVICE 01898000
  1930. BC 8,SNSWAIT DEVICE STARTED 01899000
  1931. BC 3,SIOERR UNIT NOT OPERATIONAL 01900000
  1932. TM 68,X'02' WAS THERE AN ERROR ON SENSE 01901000
  1933. BO EQUIPCHK YES GIVE MSG TERMINATE 01902000
  1934. B SENCK LOOP TILL SIO TAKES 01903000
  1935. CNOP 0,8 ALIGNMENT 01904000
  1936. SNSWAIT STH 2,ZIONP+2 STORE 01905000
  1937. LPSW *+4 LOAD 01906000
  1938. DC X'FE020000' PSW 01907000
  1939. SNSWAIAD DC A(*+4) 01908000
  1940. CLC ZIOOP+2(2),ZIONP+2 COMPARE 01909000
  1941. BNE SNSWAIT WAIT 01910000
  1942. TM SENSFLD,X'80' IS IT COMMAND REJECT 01911000
  1943. BO CARDRTN YES CONTINUE AS A CARD ERROR 01912000
  1944. TM SENSFLD,X'40' IS IT INTERVENTION REQ 01913000
  1945. BO INTVREQ YES 01914000
  1946. TM SENSFLD+1,X'08' IS TAPE AT LOAD POINT 01915000
  1947. BO TAPELP YES 01916000
  1948. TM SENSFLD,X'08' IS IT A DATA CHECK 01917000
  1949. BO DATACK YES 01918000
  1950. TM SENSFLD+1,X'80' IS IT NOISE 01919000
  1951. BO DATACK YES 01920000
  1952. B UNRCTPER 01921000
  1953. DATACK L 7,CSWSAV GET ADDR OF ERROR CCW 01922000
  1954. S 7,EIGHT GET ADDR OF ERROR CCW 01923000
  1955. MVC TIECCW1(8),0(7) LOAD ERROR CCW IN TIE LIST 01924000
  1956. LH 8,6(7) LOAD COUNT OF ERROR CCW IN REG 8 01925000
  1957. SH 8,CSWSAV+6 SUBTRACT TO GET NR OF BYTES READ 01926000
  1958. CH 8,TWELVE TEST FOR TWELVE BYTES 01927000
  1959. BC 10,READTAPE 12 BYTES OR MORE RECORD LENGTH 01928000
  1960. TM SENSFLD+1,X'80' LESS THAN 12 BYTES CHECK NOISE BIT 01929000
  1961. BC 7,READTAPE NOISE BIT ON GO TO READ TAPE ROUTINE 01930000
  1962. NOISEREC B NOISERTN IGNORE NOISE RECORD GET NEXT RECORD 01931000
  1963. READTAPE LA 2,BSPACE GET BS CCW ADDR 01932000
  1964. BAL 6,SIORTN START DEVICE 01933000
  1965. L 7,READTEN SETUP CNTR FOR READ RETRY 01934000
  1966. BCT 7,READLOOP PERFORM TEN RETRIES 01935000
  1967. TM SENSFLD+1,X'08' IS TAPE AT LOAD POINT 01936000
  1968. BC 1,NOCLEAN YES BYPASS TAPE CLEAN ROUTINE 01937000
  1969. MVI LPSWITCH,X'EE' SET LOOP SWITCH TO DETECT BS TO LP 01938000
  1970. LA 2,CLEANTP GET ADDR OF TAPE CLEAN CCWS 01939000
  1971. BAL 6,SIORTN START DEVICE 01940000
  1972. MVI LPSWITCH,X'00' RESET LP SWITCH TO OFF 01941000
  1973. NOCLEAN L 8,CLEANCTR SET UP TAPE CLEAN ENTRY CTR 01942000
  1974. BCT 8,CLEANLOP BRANCH ALLOW TEN ENTRIES INTO TP CLN RTN 01943000
  1975. MVC READTEN(4),READSET SOLID ERROR RESET COUNTER TO 10 01944000
  1976. MVC CLEANCTR(4),CLEANSET 10 ENTRIES TO TAPE CLEAN/RESET 01945000
  1977. MVI LPSWITCH,X'00' RESET LOAD POINT SWITCH OFF 01946000
  1978. B RDATCK LOAD ADDR OF READ DATA CHECK MSG 01947000
  1979. CLEANLOP ST 8,CLEANCTR SAVE DEC CTR VALUE 01948000
  1980. L 7,READSET 10TH READ RETRY, RESET READTEN 01949000
  1981. READLOOP ST 7,READTEN SAVE DEC CTR VALUE 01950000
  1982. MVC TIEBYTE(1),SENSFLD+2 PUT SENSE BYTE 2 IN TIE CCW LIST 01951000
  1983. LA 2,TIECCW LOAD TRACK IN ERROR CCW LIST ADDR 01952000
  1984. ST 2,72 SET UP CAW 01953000
  1985. BAL 10,SIO2 START DEVICE 01954000
  1986. MVC READTEN(4),READSET NO ERROR RETURN RESET COUNTER 01955000
  1987. MVC CLEANCTR(4),CLEANSET NO ERROR RETURN RESET COUNTER 01956000
  1988. MVI ERETRYSW,X'00' RESET SWITCH 01957000
  1989. B CONTINUE 01958000
  1990. SIORTN SSM DISABLE DISABLE IO 01959000
  1991. ST 2,72 STORE CCW ADDR IN CAW 01960000
  1992. LH 2,READER LOAD DEVICE ADDR 01961000
  1993. WAITLOOP TIO 0(2) TEST DEVICE STATUS 01962000
  1994. BC 2,WAITLOOP YES 01963000
  1995. SIO1 SIO 0(2) START DEVICE 01964000
  1996. BC 8,IOWAIT STARTED 01965000
  1997. BC 2,WAITLOOP BUSY TRY AGAIN 01966000
  1998. BC 1,SIOERR NOT OPERATIONAL 01967000
  1999. B TIO3 CHECK FOR ANY ERRORS 01968000
  2000. IOWAIT TIO 0(2) IS IO COMPLETE 01969000
  2001. BC 2,IOWAIT NO KEEP LOOPING 01970000
  2002. BR 6 YES RETURN 01971000
  2003. TIO3 TM 68,X'03' IS STATUS UC OR UE 01972000
  2004. BC 5,TIO2 YES 01973000
  2005. TM 69,X'FF' ANY OTHER ERRORS 01974000
  2006. BC 5,TIO2 YES 01975000
  2007. TM 68,X'04' IS IT DEVICE END 01976000
  2008. BC 8,TIO1 NO 01977000
  2009. BR 6 YES IT IS 01978000
  2010. TIO2 TM 68,X'02' IS IT UNIT CHECK 01979000
  2011. BC 1,SNSSIO YES 01980000
  2012. B UNRCTPER ITS UNIT EXCEPTION 01981000
  2013. TIO1 TM 68,X'30' CNTL UNIT END 01982000
  2014. BC 5,SIO1 01983000
  2015. TM 68,X'08' CHANNEL END 01984000
  2016. BC 1,IOWAIT WAIT FOR DEVICE END 01985000
  2017. B SNSSIO CHECK ERROR 01986000
  2018. INTVREQ LA 5,RETYRD LOAD ADDR OF INT REG MSG 01987000
  2019. MVC PRNTR(2),CNSL SET UP TO PRINT MSG ON CONSOLE 01988000
  2020. BAL 14,ERPRNT GO TELL USER 01989000
  2021. BAL 14,PAGER SKIP TO NEW PAGE ON PRINTER 01990000
  2022. MVC PRNTR(2),PRNTSET RESTORE PRNTR ADDRESS 01991000
  2023. MVC ZIONP+2(2),READER SET UP FOR DEVICE END 01992000
  2024. CNOP 4,8 01993000
  2025. LPSW *+4 01994000
  2026. DC X'FF020000' WAIT FOR INTERRUPT ON THIS CHAN 01995000
  2027. INTVRAD DC A(DATACK) 01996000
  2028. TAPELP TM LPSWITCH,X'EE' LP OCCURED DURING TAPE CLEAN RTN 01997000
  2029. BC 1,LPDATA YES GO TO DATA CHECK AT LP EXIT 01998000
  2030. RDATCK LA 5,RDATCKMG LOAD ADDR OF READ DATA CK MSG 01999000
  2031. MVC PRNTR(2),CNSL PUT MSG OUT ON THE CONSOLE 02000000
  2032. BAL 14,ERPRNT PRINT MSG 02001000
  2033. LPSW ERRPSW LOAD ERROR PSW 02002000
  2034. LPDATA LA 5,LPMSG LOAD ADDR OF LOAD POINT MSG 02003000
  2035. MVC PRNTR(2),CNSL PUT MSG ON CONSOLE 02004000
  2036. BAL 14,ERPRNT PRINT MSG 02005000
  2037. LPSW ERRPSW LOAD ERROR PSW 02006000
  2038. EQUIPCHK LA 5,EQCKMSG LOAD ADDR OF EQUIP CK MSG 02007000
  2039. MVC PRNTR(2),CNSL PUT MSG OUT ON THE CONSOLE 02008000
  2040. BAL 14,ERPRNT PRINT MSG 02009000
  2041. LPSW ERRPSW LOAD ERROR PSW 02010000
  2042. SIOERR LA 5,NOTOPMG LOAD ADDR OF NOT OPERATIONAL MSG 02011000
  2043. MVC PRNTR(2),CNSL PUT MSG OUT ON THE CONSOLE 02012000
  2044. BAL 14,ERPRNT PRINT MSG 02013000
  2045. LPSW ERRPSW LOAD ERROR PSW 02014000
  2046. UNRCTPER LA 5,UNRECMG LOAD ADDR OF UNRECOVERABLE ERROR MSG 02015000
  2047. MVC PRNTR(2),CNSL PUT MSG OUT ON THE CONSOLE 02016000
  2048. BAL 14,ERPRNT PRINT MSG 02017000
  2049. SVC 108 DIE..... 02018000
  2050. DS 0D 02019000
  2051. TIECCW DC X'1B' TRACK IN ERROR COMMAND CODE 02020000
  2052. DC AL3(TIEBYTE) ADDR OF TRACK IN ERROR 02021000
  2053. DC X'60000001' CHAIN BIT ON SLI BIT ON 02022000
  2054. TIECCW1 DC X'0000000000000000' SPACE FOR INSERTING READ CCW 02023000
  2055. TIEBYTE DC X'00' SPACE TO INSERT SENSE BYTE TWO 02024000
  2056. DS 0F 02025000
  2057. READTEN DC X'0000000A' COUNT OF RETRIES 02026000
  2058. READSET DC X'0000000A' RESTORE VALUE 02027000
  2059. CLEANCTR DC X'0000000A' COUNT OF TAPE CLEANER RETRYS 02028000
  2060. CLEANSET DC X'0000000A' RESTORE VALUE 02029000
  2061. DS 0F 02030000
  2062. EIGHT DC F'08' 02031000
  2063. TWELVE DC H'12' 02032000
  2064. SENSFLD DC 6X'00' 02033000
  2065. DISABLE DC X'00' 02034000
  2066. CSWSAV DC 2F'00' 02035000
  2067. DS 0D 02036000
  2068. CLEANTP DC X'27' BACKSPACE OP CODE 02037000
  2069. DC X'00000060000001' CHAIN BIT ON SLI BIT ON 02038000
  2070. DC X'27' BACKSPACE OP CODE 02039000
  2071. DC X'00000060000001' CHAIN BIT ON SLI BIT ON 02040000
  2072. DC X'37' FOWARD SPACE OP CODE 02041000
  2073. DC X'00000060000001' CHAIN BIT ON SLI BIT ON 02042000
  2074. DC X'37' FOWARD SPACE OP CODE 02043000
  2075. DC X'00000020000001' CHAIN BIT OFF SLI BIT ON 02044000
  2076. DS 0D 02045000
  2077. BSPACE DC X'27' BACKSPACE OP CODE 02046000
  2078. DC X'00000020000001' REST OF CCW 02047000
  2079. SENSCCW DC X'04' SENSE CCW OP CODE 02048000
  2080. DC AL3(SENSFLD) ADDR OF READIN AREA 02049000
  2081. DC X'20000006' REST OF CCW 02050000
  2082. LPSWITCH DC X'00' SWITCH AT EE DATA CHECK AT LP 02051000
  2083. CLEAR DC XL8'00' 02052000
  2084. CNOP 0,8 02053000
  2085. ERRPSW DC X'00020000' 02054000
  2086. DC X'0000FFFF' 02055000
  2087. EQCKMSG DC A(REQCKMSG) 02056000
  2088. DC AL2(RNOTOPMG-REQCKMSG) 02057000
  2089. NOTOPMG DC A(RNOTOPMG) 02058000
  2090. DC AL2(RUNRECMG-RNOTOPMG) 02059000
  2091. UNRECMG DC A(RUNRECMG) 02060000
  2092. DC AL2(RLPMSG-RUNRECMG) 02061000
  2093. LPMSG DC A(RLPMSG) 02062000
  2094. DC AL2(RRDATCK-RLPMSG) 02063000
  2095. SECDBASE DC A(RELDR+4096) 02064000
  2096. RDATCKMG DC A(RRDATCK) 02065000
  2097. DC AL2(LASTMSG-RRDATCK) 02066000
  2098. REQCKMSG DC C'TAPE EQUIP CHECK' 02067000
  2099. RNOTOPMG DC C'TAPE NOT OPERATIONAL' 02068000
  2100. RUNRECMG DC C'UNRECOVERABLE TAPE ERROR' 02069000
  2101. RLPMSG DC C'TAPE AT LOAD POINT' 02070000
  2102. RRDATCK DC C'TAPE READ DATA CHECK' 02071000
  2103. LASTMSG EQU * 02072000
  2104. EJECT 02073000
  2105. DROP 3 02074000
  2106. DROP 4 02075000
  2107. ********************************************************************* 02076000
  2108. * CHANGE PRINTER AND TYPEWRITER ADDRESS ROUTINE 02077000
  2109. ********************************************************************* 02078000
  2110. L 15,ARELDR LOAD ADDR OF RELDR 02079000
  2111. USING RELDR,15 02080000
  2112. DEVHNDLR STM 0,15,SAV 02081000
  2113. C 1,DEV 02082000
  2114. BE PROC 02083000
  2115. MVI DEVSW,X'00' 02084000
  2116. BAL 14,PAGER 02085000
  2117. LM 0,15,SAV 02086000
  2118. B CONTINU 02087000
  2119. CNOP 0,8 02088000
  2120. DC X'00020000FFFFFFFF' 02089000
  2121. WAITLCMG LPSW *-8 02090000
  2122. PROC LA 5,SPEC+4(,13) SET UP TO SCAN THE FIRST FIELD 02091000
  2123. LA 6,1 02092000
  2124. LA R7,SPEC+71(,R13) SET UPPER LIMIT TO SCAN @VA04726 02093100
  2125. LOOKUP CLI 0(5),C' ' IS THIS A BLANK 02094000
  2126. BC 8,BPNTR 02095000
  2127. SCAN CLC 0(5,5),TYP 02096000
  2128. BE TYPTR 02097000
  2129. CLC 0(5,5),PRT 02098000
  2130. BE PRTER 02099000
  2131. BAD MVC 0(15,0),MSG2 02100000
  2132. B WAITLCMG 02101000
  2133. BPNTR BXLE 5,6,LOOKUP 02102000
  2134. B NXTCARD 02103000
  2135. PRTER LA 5,5(5) 02104000
  2136. BAL 14,PACKUNT 02105000
  2137. MVC PRNTR,PAREA1 02106000
  2138. MVC PRNTSET,PRNTR 02107000
  2139. B RTN 02108000
  2140. TYPTR LA 5,5(5) 02109000
  2141. BAL 14,PACKUNT 02110000
  2142. MVC CNSL,PAREA1 02111000
  2143. RTN LA 5,3(5) 02112000
  2144. CLI 0(5),C',' 02113000
  2145. BE BPNTR YES, GO CHECK NEXT COL. @VA04087 02114000
  2146. CLI 0(R5),C' ' BLANK? @VA04087 02115000
  2147. BE BPNTR YES, GO CHECK NEXT COL. @VA04087 02116000
  2148. B BAD INVALID DEV CARD @VA04087 02117000
  2149. NXTCARD BAL 14,PAGER 02118000
  2150. MVI DEVSW,X'00' 02119000
  2151. LM 0,15,SAV 02120000
  2152. BC 15,RD 02121000
  2153. PACKUNT LA 1,3 GET NUMBER OF DIGITS @VA10508 02122100
  2154. SR 3,3 CLEAR WORK REG @VA10508 02122600
  2155. LR 4,5 POINT TO DEVICE ADDRESS @VA10508 02123100
  2156. GETNEXT MVC PAREA2,0(4) LOAD FOR CHECKING @VA10508 02123600
  2157. SLL 3,4 SHIFT THE GENERATED ADDRESS @VA10508 02124100
  2158. CLI PAREA2,X'C1' IS IT A? @VA10508 02124600
  2159. BL BADDEV LOWER THAN A -- NO GOOD @VA10508 02125100
  2160. CLI PAREA2,X'C6' MAYBE F @VA10508 02125600
  2161. BH NOTALPH HIGHER THAN F @VA10508 02126100
  2162. XI PAREA2,X'C0' CLEAR 'C' @VA10508 02126600
  2163. AH 3,DIG9 ADD ADJUSTMENT @VA10508 02127100
  2164. B ADDDIG GO FINISH THE PACK @VA10508 02127600
  2165. DIG9 DC X'0009' ADJUSTMENT NUMBER @VA10508 02128100
  2166. NOTALPH CLI PAREA2,X'F0' IS IT NUMERIC? @VA10508 02128600
  2167. BL BADDEV NO--NOT A VALID DEV ADDRESS @VA10508 02129100
  2168. XI PAREA2,X'F0' CLEAR 'F' @VA10508 02129600
  2169. ADDDIG AH 3,PAREA ADD LOW ORDER BITS @VA10508 02130100
  2170. LA 4,1(4) INDEX THE POINTER @VA10508 02130600
  2171. BCT 1,GETNEXT HAVE WE DONE THREE? @VA10508 02131100
  2172. STH 3,PAREA1 @VA10508 02131600
  2173. BR 14 02136000
  2174. BADDEV MVC 0(24,0),MSG3 02137000
  2175. B WAITLCMG 02138000
  2176. DEVSW DS CL1 02144000
  2177. SAV DS 16F 02145000
  2178. MSG2 DC C'BAD DEVICE CARD' 02146000
  2179. MSG3 DC C'INVALID DEVICE SPECIFIED' 02147000
  2180. PRT DC C'PRNT=' 02148000
  2181. TYP DC C'TYPW=' 02149000
  2182. CTN DC H'0' 02150000
  2183. PARLMT DC H'0' 02151000
  2184. UNT DC X'000A0B0C0D0E0F' 02152000
  2185. PAREA1 DC H'0' 02153000
  2186. PAREA DC X'0' @VA10508 02154000
  2187. PAREA2 DC X'0' @VA10508 02154500
  2188. DS F 02155000
  2189. DEV DC X'02' 02156000
  2190. DC C'DEV' 02157000
  2191. DS 0F 02158000
  2192. ARELDR DC A(RELDR) ADDRESS OF BASE MODULE 02159000
  2193. EJECT 02160000
  2194. *********************************************************************** 02161000
  2195. * STORAGE USING REGISTER 13 AND THE FOLLOWING SYMBOLS 02162000
  2196. *********************************************************************** 02163000
  2197. * 02164000
  2198. * TO BEGIN ON DOUBLE WORD BOUNDRY 02165000
  2199. * 02166000
  2200. NOESD EQU 512 NUMBER OF EXTERNS IN 1 MODULE 02167000
  2201. MAXREF EQU 1280 NUMBER OF TYPE 0 & 1 ESD ENTRIES @VA03724 02168000
  2202. * 02169000
  2203. GREG EQU 0 16 WORDS, GEN REGS SAVED BY RELLDR 02170000
  2204. EMSG EQU GREG+64 4 BYTES TO INDICATE ERROE 02171000
  2205. RETT EQU 0 USED BY HEXB SUBROUTINE 02172000
  2206. LOCCT EQU RETT+4 4 BYTES LOC TO BEGIN LOADING (ADDR SV 02173000
  2207. NARG EQU LOCCT+4 4 BYTES ,NO. OF ARG. IN INPUT LIST 02174000
  2208. MVC1 EQU NARG+4 THESE TWO INITIALIZED BY DOLLA. 02175000
  2209. MVC2 EQU MVC1+6 .. 02176000
  2210. WD EQU MVC2+6 4 BYTES, STORAGE FOR RLD SBR 02177000
  2211. BRAD EQU WD+4 4 BYTES, STORAGE 02178000
  2212. SPEC EQU BRAD+4 80 BYTES-------------THE I/O BUFFER 02179000
  2213. CONS EQU SPEC+80 4 BYTES-B7000000 STORAGE 02180000
  2214. * EQU CONS+1 FORMERLY SWS(13) 02181000
  2215. ESIDTB EQU CONS+4 64 BYTES A TABLE 02182000
  2216. TBLCT EQU CONS+2 1 BYTES - NO OF ENTRIES IN TBLREF 02183000
  2217. TBLREF EQU ESIDTB+NOESD*2 HALFWORD ENTRIES 02184000
  2218. APSV EQU TBLREF+4 64 BYTES - REG SAVED 02185000
  2219. PLIST EQU APSV+64 4 BYTES, POINTER TO PARAM LIST 02186000
  2220. TEMPST EQU PLIST+4 02187000
  2221. TMPLOC EQU TEMPST+4 02188000
  2222. FREEST EQU TMPLOC+4 02189000
  2223. EPSV EQU FREEST+4 02190000
  2224. EJECT 02191000
  2225. * 02192000
  2226. * THE OPERATION OF THIS PROGRAM DEPENDS UPON 02193000
  2227. * AN INTERNAL REPRESENTATION OF THE EXTERNAL 02194000
  2228. * CHARACTER SET WHICH IS EQUIVALENT TO THE ONE 02195000
  2229. * USED AT ASSEMBLY TIME. THE CODING HAS BEEN 02196000
  2230. * ARRANGED SO THAT REDEFINITION OF CHARACTER 02197000
  2231. * CONSTANTS, BY REASSEMBLY, WILL RESULT IN A 02198000
  2232. * CORRECT MODULE FOR THE NEW DEFINITIONS. 02199000
  2233. * THE CONSTANTS WITH *** IN COL. 69-71 REQUIRE 02200000
  2234. * THE X'02' EQUAL A T-2-9 PUNCH AND MUST BE 02201000
  2235. * MODIFIED IF THE PROPERTIES OF THE CHARACTER 02202000
  2236. * SET ARE CHANGED. 02203000
  2237. EJECT 02204000
  2238. * 02205000
  2239. LDRGEN DS 0D -LOADER CONTROL- 02206000
  2240. * 02207000
  2241. * 02208000
  2242. EOPSW EQU 24 EXTERNAL OLD PSW 02209000
  2243. MCOP EQU 32 SUPERVISOR CALL OLD PSW 02210000
  2244. PRLOD EQU 40 PROGRAM OLD PSW 02211000
  2245. IOOP EQU 56 I/O OLD PSW 02212000
  2246. CSW EQU 64 CHANNEL STATUS WORD ADDR 02213000
  2247. CAW EQU 72 CHANNEL ADDRESS WORD 02214000
  2248. EXNPSW EQU 88 EXTERNAL NEW PSW 02215000
  2249. NSVCPSW EQU 96 SUPERVISOR CALL NEW PSW 02216000
  2250. NPROG EQU 104 PROGRAM NEW PSW 02217000
  2251. MKNEW EQU 112 MACHINE CHECK NEW PSW 02218000
  2252. NIOPSW EQU 120 I/O NEW PSW 02219000
  2253. * 02220000
  2254. ZUSER EQU 2048 SET BY CONTROL PROGRAM OR IPL SIMULATOR 02221000
  2255. * 02222000
  2256. EJECT 02223000
  2257. BALR 15,0 02224000
  2258. USING *,15 02225000
  2259. L 4,IOTAA LOD BUFFER ADDR 02226000
  2260. LH 8,DEVICE OUTPUT DEVICE ADDRESS 02227000
  2261. LA 11,QRCD I/O ROUTINE ADDR 02228000
  2262. LR 1,8 DEVICE ADDR TO REG-1 02229000
  2263. SRL 1,8 ADJUST REG TO DEVELOP 02230000
  2264. LA 2,256 CHANNEL MASK 02231000
  2265. N6 SRL 2,1 CHANNEL MASK 02232000
  2266. SH 1,N6+2 COUNT DOWN 02233000
  2267. BC 10,N6 BR IF NOT CORRECT CHAN 02234000
  2268. STC 2,WAIT1X CHAN MASK TO WAIT PSW 02235000
  2269. LA 2,1(2) INCLUDE EXTERNAL INTERUP 02236000
  2270. STC 2,WAIT2X 02237000
  2271. STC 2,WAIT3X CHAN MASK TO WAIT PSW 02238000
  2272. MVI CMD+1,EJECT EJECT LAST CARD. 02239000
  2273. SR 1,1 02240000
  2274. LA 2,ERR 02241000
  2275. BALR 12,11 BR TO I/O ROUTINE 02242000
  2276. CLL L 1,IOTAA LOD BUFF ADDR 02243000
  2277. ST 1,TOPX PLACE BUF ADDR IN BOOT- 02244000
  2278. MVI TOPX,X'02' MOVE IN READ C6MMAND. 02245000
  2279. ST 1,CARD3 STORE ADDRESS IN 3RD IPL CCW @VA02018 02246000
  2280. MVI CARD3,X'02' RESTORE READ OP CODE @VA02018 02247000
  2281. LA 1,80(1) BUMP ADDR TO NEXT CARD @VA02018 02248000
  2282. ST 1,CRD3CCW2 STORE ADDRESS IN 4TH IPL CCW @VA02018 02249000
  2283. MVI CRD3CCW2,X'02' RESTORE READ OP CODE @VA02018 02250000
  2284. LA 1,80(1) MOD I/P BUF ADDR 02251000
  2285. ST 1,IPLCCW STORE ADDRESS IN 1ST IPL CCW @VA02018 02252000
  2286. MVI IPLCCW,X'02' RESTORE READ OP CODE @VA02018 02253000
  2287. ST 1,IPCCW2 STORE ADDRESS 02254000
  2288. MVI IPCCW2,X'08' RESTORE TIC OP CODE @VA02018 02255000
  2289. LOXP L 14,ENDE OBJECT PROG END ADDR 02256000
  2290. L 13,START OBJECT PROG START ADDR 02257000
  2291. SR 14,13 DIFF = NUM OF BYTES TO PCH 02258000
  2292. MVI MVCX+1,71 RESTORE BYTE COUNT 02259000
  2293. MVI CMD+1,WRITEC WRITE AND EJECT 02260000
  2294. MVI CCW1+7,24 IPL CARD BYTE COUNT 02261000
  2295. LA 1,IPLPSW ADDR OF IPL CARD 02262000
  2296. LA 2,ERR ERROR RETURN 02263000
  2297. BALR 12,11 BR TO I/O ROUTINE 02264000
  2298. MVI CCW1+7,80 02265000
  2299. LA 1,ENTRY+160 3RD CARD OF BOOTSTRAP RTN @VA02018 02266000
  2300. LA 2,ERR ERROR RETURN @VA02018 02267000
  2301. BALR 12,11 BR TO I/O ROUTINE @VA02018 02268000
  2302. LA 1,ENTRY BOOTSTRAP ROUTINE ADDR 02269000
  2303. LA 2,ERR 02270000
  2304. BALR 12,11 BR TO I/O ROUTINE 02271000
  2305. LA 1,ENTRY+80 PCH SECOND BOOTSTRAP 02272000
  2306. LA 2,ERR CARD 02273000
  2307. BALR 12,11 WRITE RECORD 02274000
  2308. LA 10,72 LOD RECORD BYTE SIZE 02275000
  2309. EXC L 7,CONUM RESTORE TO ZEROS 02276000
  2310. LA 6,10 SETUP CARD SEQ PATTERN 02277000
  2311. LA 5,10 SEQUENCE CONTROLS 02278000
  2312. PCH L 1,BETAA+4 LOD BLANKS TO REPLACE 02279000
  2313. ST 1,0(0,4) BYTES 1-75 IN BUFFER 02280000
  2314. MVC 1(75,4),0(4) 02281000
  2315. MVCX MVC 0(72,4),0(13) MOVE TXT TO BUFFER 02282000
  2316. ST 7,76(0,4) ST SEQ NUM 02283000
  2317. LR 1,4 SETUP I/O CALL 02284000
  2318. LA 2,ERR 02285000
  2319. BALR 12,11 WRITE RECORD 02286000
  2320. PCH1 LA 1,1 LOD SEQ INCREMENT 02287000
  2321. TM ERR0+4,X'80' TEST LAST CRD SWITCH 02288000
  2322. BC 1,OUT BR IF LAST CARD 02289000
  2323. AR 13,10 MODIFY FOR NEXT RECORD 02290000
  2324. LR 9,14 SAVE REMAINING BYTE COUNT 02291000
  2325. AR 7,1 INCREMENT CARD SEQ 02292000
  2326. BCT 5,LO2 02293000
  2327. LA 5,10 RESTORE COUNTER 02294000
  2328. SRL 7,8 ADJUST FOR NEXT CTR 02295000
  2329. AR 7,1 INCREMENT CARD SEQ 02296000
  2330. SLL 7,8 REAJUST REGISTER 02297000
  2331. IC 7,CONUM INSERT ZERO 02298000
  2332. BCT 6,LO2 CONTROL 02299000
  2333. LA 6,10 RESTORE COUNTER 02300000
  2334. SRL 7,16 ADJUST TO HUNDREDS POSITION 02301000
  2335. LO1 AR 7,1 INCREMENT CARD SEQ 02302000
  2336. SLL 7,8 LOD ZEROS 02303000
  2337. IC 7,CONUM LOD ZEROS 02304000
  2338. SLL 7,8 LOD ZEROS 02305000
  2339. IC 7,CONUM LOD ZEROS 02306000
  2340. IC 1,SSM+1 HUNDREDS POSITION COUNTER 02307000
  2341. SH 1,PCH1+2 HUNDREDS POSITION CTL 02308000
  2342. STC 1,SSM+1 RESTORE COUNTER 02309000
  2343. BC 2,LO2 02310000
  2344. LA 1,10 COUNTER WRAPS AROUND 02311000
  2345. STC 1,SSM+1 RESTORE TO ZEROS 02312000
  2346. EX 0,EXC RESTORE TO ZEROS 02313000
  2347. SRL 1,3 RESTORE ONE IN REG 02314000
  2348. LO2 SR 14,10 MODIFY FOR NEXT RECORD 02315000
  2349. *********************************************************************** 02316000
  2350. BC 8,OUT BR IF NOTHING MORE 02317000
  2351. *********************************************************************** 02318000
  2352. CR 14,10 CHECK REMAINING. 02319000
  2353. BC 11,PCH RETURN FOR MORE. 02320000
  2354. OI ERR0+4,X'80' LAST CRD SW ON 02321000
  2355. SR 14,1 SETUP MOVE INST. 02322000
  2356. STC 14,MVCX+1 .. 02323000
  2357. *********************************************************************** 02324000
  2358. BC 15,PCH 02325000
  2359. OUT NI ERR0+4,X'7F' SWITCH OFF 02326000
  2360. LA 1,24 SETUP TO PUNCH END CRD 02327000
  2361. STH 1,CCW1+6 STORE BYTE COUNT 02328000
  2362. MVI CEND+1,C'L' FLAG LAST CARD 02329000
  2363. MVI CEND+2,C'D' ... 02330000
  2364. LA 1,CEND END CARD ADDRESS 02331000
  2365. LA 2,ERR 02332000
  2366. BALR 12,11 BR TO I/O ROUTINE 02333000
  2367. LH 1,CON LOAD DECK COUNT 02334000
  2368. SH 1,PCH1+2 SUBTRACT ONE FROM REG 02335000
  2369. STH 1,CON RESTORE COUNT 02336000
  2370. BC 2,LOXP BR IF COUNT NOT ZERO 02337000
  2371. L 6,EASY LOD EOJ INDICATOR 02338000
  2372. ST 6,ERR0+4 ST IN PSW IMAGE 02339000
  2373. LPSW ERR0 END-OF-JOB 02340000
  2374. * 02341000
  2375. ERR LPSW ERR0 AB-END-OF-JOB 02342000
  2376. * 02343000
  2377. DEVICE DC AL2(OUTPUT) CELL FOR DEVICE ADDR 02344000
  2378. CON DC XL2'1' PUNCH X MANY DECKS 02345000
  2379. * 02346000
  2380. DS 0D 02347000
  2381. ERR0 DC X'0006000000' 02348000
  2382. DC C'GNA' DEVICE NOT AVAILABLE 02349000
  2383. * 02350000
  2384. IPLPSW DC X'00040000' 02351000
  2385. * 02352000
  2386. IOTAA DC A(IOTA) BUFFER ADDRESS 02353000
  2387. * 02354000
  2388. IPLCCW DC X'02' 02355000
  2389. DC AL3(IOTA+160) CCW FOR READING IN 3RD @VA02018 02356000
  2390. * BOOTSTRAP CARD 02357000
  2391. DC X'60000050' 02358000
  2392. IPCCW2 DC X'08' TIC CCW @VA02018 02359000
  2393. DC AL3(IOTA+160) TIC TO 3RD CARD, JUST READ IN @VA02018 02360000
  2394. DC X'00000000' @VA02018 02361000
  2395. CEND DC X'02' *** 02362000
  2396. DC C'XX' END OF LOADER FLAG 02363000
  2397. DC X'02' ... 02364000
  2398. BETAA DC A(BETA) LOAD END TR ADDR 02365000
  2399. DC C' 01' 02366000
  2400. DC C' ' 02367000
  2401. CONUM DC C'0000' CONSTANT ZEROS 02368000
  2402. ENDE DC A(OMEGA) 02369000
  2403. START DC A(ALPHA) 02370000
  2404. EASY DC C' GEA' EOJ 02371000
  2405. * 02372000
  2406. ALPHAA EQU START 02373000
  2407. OMEGAA EQU ENDE 02374000
  2408. * 02375000
  2409. DROP 15 02376000
  2410. EJECT 02377000
  2411. *********************************************************************** 02378000
  2412. * 02379000
  2413. * CARD READ ROUTINE 02380000
  2414. * 02381000
  2415. *********************************************************************** 02382000
  2416. * 02383000
  2417. USING *,11 -ADDRESSIBILITY- 02384000
  2418. QRCD ST 1,CCW1 I/O BUFFER ADDR 02385000
  2419. CMD MVI CCW1,X'02' I/O COMMAND 02386000
  2420. LA 1,CCW1 SETUP CHAN ADDR WORD 02387000
  2421. ST 1,CAW 02388000
  2422. ST 2,REG2 SAVE REGISTER TWO 02389000
  2423. LA 1,WAITX NORMAL WAIT PSW 02390000
  2424. LA 2,TIOA CHAN BUSY RETURN 02391000
  2425. TIOA TIO 0(8) CLEAR CHANNEL 02392000
  2426. BC 1,ERRR1X 02393000
  2427. GO LA 0,SIOD LOD INTERRUPTION ADDR 02394000
  2428. ST 0,NIOPSW+4 ST AT I/O NEW PSW 02395000
  2429. SSM SSM MASK OUT OTHER CHANNELS 02396000
  2430. SIOA SIO 0(8) CMD TO READ/WRITE 02397000
  2431. BCR 8,1 CMD ACCEPTED,WAIT 02398000
  2432. BCR 2,2 TO RETRY,CHAN BUSY 02399000
  2433. TM CSW+4,X'10' TEST FOR UNIT BUSY 02400000
  2434. BCR 1,2 BR-UNIT BUSY 02401000
  2435. BC 15,TEST TEST CONDITIONS 02402000
  2436. SIOD CH 8,IOOP+2 TEST CHAN AND DEVICE 02403000
  2437. BC 8,*+8 TEST FURTHER IF SAME 02404000
  2438. LPSW IOOP OTHERWISE WAIT 02405000
  2439. * 02406000
  2440. TEST TM CSW+5,X'3F' TEST FOR CHANNEL ERROR 02407000
  2441. BC 7,ERRR1X CHAN ERROR BR 02408000
  2442. TM CSW+4,X'0E' DATA ERROR CHECK 02409000
  2443. BC 1,SIOC INDICATE THRU WAIT 02410000
  2444. TM CSW+4,X'0A' DATA ERROR CHECK 02411000
  2445. BC 1,SIOC INDICATE THRU WAIT 02412000
  2446. TM CSW+4,X'06' DATA ERROR CHECK 02413000
  2447. BC 1,SIOC INDICATE THRU WAIT 02414000
  2448. TM CSW+4,X'02' INTERVENTION REQUIRED 02415000
  2449. BC 1,SIOB HOPPER EMPTY 02416000
  2450. TM CSW+4,X'01' LAST CRD TEST 02417000
  2451. BC 1,LAST BR IF LAST CRD READ 02418000
  2452. TM CSW+4,X'04' TEST FOR DEVICE END 02419000
  2453. BC 8,WAIO BR TO WAIT FOR IT 02420000
  2454. BCR 15,12 RETURN 02421000
  2455. * 02422000
  2456. WAIO LPSW IOOP WAIT FOR DEVICE END 02423000
  2457. * 02424000
  2458. LAST L 12,REG2 LAST CRD RETURN ADDR 02425000
  2459. BCR 15,12 RETURN TO OBJECT PROG 02426000
  2460. * 02427000
  2461. WAITX LPSW WAIT1X NORMAL WAIT 02428000
  2462. * 02429000
  2463. SIOB ST 2,EXNPSW+4 READY READER WAIT 02430000
  2464. LPSW WAIT2X 02431000
  2465. * 02432000
  2466. SIOC ST 2,NIOPSW+4 DATA ERROR(S) 02433000
  2467. LPSW WAIT3X 02434000
  2468. * 02435000
  2469. ERRR1X ST 2,NIOPSW+4 02436000
  2470. ST 2,EXNPSW+4 02437000
  2471. LPSW WAIT4X 02438000
  2472. * 02439000
  2473. REG2 DS 1F 02440000
  2474. SSM DC X'0009' MASK OFF ALL CHAN 02441000
  2475. * 02442000
  2476. DS 0D 02443000
  2477. CCW1 DC X'0000000020000050' 02444000
  2478. * 02445000
  2479. WAIT1X DC X'8006' NORMAL WAIT 02446000
  2480. DC XL6'F' PSW 02447000
  2481. * 02448000
  2482. WAIT2X DC X'0106' INTERRUPT TO RESUME 02449000
  2483. DC XL3'0' 02450000
  2484. DC C'GIA' HOPPER EMPTY 02451000
  2485. * 02452000
  2486. * WAIT3X DATA ERROR(S) CHECK 02453000
  2487. * 02454000
  2488. WAIT3X DC X'8106' 02455000
  2489. DC XL3'0' 02456000
  2490. DC C'GDD' DATA ERROR 02457000
  2491. * 02458000
  2492. * WAIT4X CHANNEL ERROR(S) 02459000
  2493. * 02460000
  2494. WAIT4X DC X'0106' INTERRUPT TO RESUME 02461000
  2495. DC XL3'0' 02462000
  2496. DC C'GCA' CHANNEL ERROR 02463000
  2497. DROP 11 02464000
  2498. * 02465000
  2499. NOP EQU 3 02466000
  2500. EJECT EQU NOP 02467000
  2501. WRITEC EQU 1 02468000
  2502. OUTPUT EQU X'D' 02469000
  2503. FREE DS 0D 02470000
  2504. ENTRY FRINIT FREE STORAGE INITIALIZATION 02471000
  2505. ENTRY FRET RETURN FREE STORAGE BLOCKS 02472000
  2506. SPACE 02473000
  2507. SPACE 02474000
  2508. * BLOCK DEFINITIONS 02475000
  2509. * 02476000
  2510. BSIZE EQU 0 BACKWARD SIZE POINTER. 02477000
  2511. FSIZE EQU 4 FORWARD SIZE POINTER 02478000
  2512. BSTOR EQU 8 BACKWARD STORAGE POINTER 02479000
  2513. FSTOR EQU 12 FORWARD STORAGE POINTER 02480000
  2514. SIZE EQU 16 LOCATION OF SIZE BYTE (IF NOT TWO) 02481000
  2515. SPACE 02482000
  2516. CTLSIZ EQU 16 CONTROL LIST SIZE 02483000
  2517. CTLCNT EQU 20 CONTROL LIST USAGE COUNT 02484000
  2518. CTLLEN EQU 32 02485000
  2519. * 02486000
  2520. EJECT 02487000
  2521. *********************************************************************** 02488000
  2522. * 02489000
  2523. * 'FREE' IS THE ENTRY TO OBTAIN BLOCKS OF FREE STORAGE 02490000
  2524. * OF A SPECIFIED SIZE. ITS OPERATION IS DESCRIBED BELOW. 02491000
  2525. * 02492000
  2526. * 'FREE' SEARCHES DOWN THE LIST OF SPECIFIED SIZES 02493000
  2527. * FOR A MATCH WITH THE REQUEST. IF IT FINDS AN ENTRY WHICH 02494000
  2528. * CONTAINS SOMETHING ON ITS STRING, IT WILL DETACH THE FIRST 02495000
  2529. * BLOCK ON THE STRING AND RETURN IT TO THE USER. IF IT FAILS TO 02496000
  2530. * FIND A MATCHING ENTRY, IT WILL LOOK ON THE JUNK LIST FOR AN 02497000
  2531. * ENTRY OF A LARGER SIZE. IF IT FINDS ONE, IT WILL SPLIT OFF 02498000
  2532. * THE USER'S REQUEST FROM THE TOP AND RETURN THE BOTTOM HALF 02499000
  2533. * TO FREE STORAGE VIA A CALL TO 'FRET'. IF IT FAILS TO FIND ONE, 02500000
  2534. * IT WILL LOOK ON THE LIST OF STANDARD SIZES FOR A LARGER SIZE. 02501000
  2535. * IF IT FINDS ONE, IT WILL PERFORM THE SAME OPERATION AS FOR THE 02502000
  2536. * JUNK LIST. IF IT FAILS, IT WILL CALL THE USER ROUTINE 'EXTEND' 02503000
  2537. * FOR AN INCREASE IN THE 'MEMORY BOUND' AND PROCEED TO TRY AGAIN 02504000
  2538. * 02505000
  2539. * IT CHECKS TO SEE WHETHER 'FRINIT' HAS BEEN PREVIOUSLY CALLED 02506000
  2540. * (BY 'FRLIST' BEING NON-ZERO). IF NOT IT WILL INITIALIZE ITSELF 02507000
  2541. * INTERNALLY TO AN ALL GARBAGE LIST AND CLEAR OUT THE STORAGE 02508000
  2542. * THREAD POINTER. 02509000
  2543. * 02510000
  2544. ********************************************************************** 02511000
  2545. SPACE 02512000
  2546. USING *,R15 ADDRESSIBILITY- 02513000
  2547. SPACE 02514000
  2548. STM R0,R15,FREREG SAVE REGISTERS 02515000
  2549. ST R14,RETREG SAVE RETURN REG. 02516000
  2550. BAL R5,ROUNDUP ROUND UP TO 3 DW BOUNDARY 02517000
  2551. STH R0,NREQ SAVE NUM. OF DW'S WANTED. 02518000
  2552. SLR R3,R3 CLEAR OUT LSTENT FOR USAGE COUNTER 02519000
  2553. ST R3,LSTENT ... 02520000
  2554. FREEX SLR R3,R3 ZERO REG 02521000
  2555. L R1,FRLIST GET ADDRESS OF FREE CONTROL LIST. 02522000
  2556. LTR R1,R1 CHECK FOR PROPER FRINIT INITIALIZATION. 02523000
  2557. BNZ FREE3 YES. 02524000
  2558. LA R1,FRGARB NO - GET GARBAGE LIST POINTER. 02525000
  2559. ST R1,FRLIST ... 02526000
  2560. ST R3,STHRED CLEAR OUT STORAGE THREAD. 02527000
  2561. FREE3 L R2,CTLSIZ(R1) GET COUNT VALUE 02528000
  2562. LTR R2,R2 AND TEST FOR END OF LIST. 02529000
  2563. BZ FREE1 IF END OF LIST BRANCH 02530000
  2564. CR R0,R2 COMPARE FOR DESIRED VALUE. 02531000
  2565. BE FREE2 YES - FOUND ONE 02532000
  2566. BNM FREE4 NO- SAVE STRING WITH HIGHER VALUE 02533000
  2567. LTR R3,R3 SEE IF WE HAVE A HIGHER ONE. 02534000
  2568. BNZ FREE4 YES - WE DO 02535000
  2569. L R3,FSIZE(R1) NO - PICK UP ADDRESS. 02536000
  2570. FREE4 LA R1,CTLLEN(R1) GO GET NEXT ELEMENT. 02537000
  2571. B FREE3 ... 02538000
  2572. SPACE 02539000
  2573. FREE2 ST R1,LSTENT SAVE LIST ENTRY. 02540000
  2574. L R4,FSIZE(R1) GET FORWARD SIZE POINTER. 02541000
  2575. LTR R4,R4 ... 02542000
  2576. BZ FREE4 ZERO - NO HIGHER VALUE - GO TO MISC. 02543000
  2577. LR R1,R4 SAVE FOR UNZIP. 02544000
  2578. SPACE 02545000
  2579. FREE6 BAL R10,UNZIP REMOVE FROM ITS LIST (POINTED TO BY 1) 02546000
  2580. SPACE 02547000
  2581. FREXIT L R2,LSTENT BUMP USAGE COUNTER. 02548000
  2582. L R3,CTLCNT(R2) .. 02549000
  2583. LA R3,1(R3) ... 02550000
  2584. ST R3,CTLCNT(R2) ... 02551000
  2585. LM R2,R15,FREREG+8 RESTORE REGISTERS 02552000
  2586. LH R0,NREQ RETURN REQUESTED NUMBER ALSO. 02553000
  2587. L R14,RETREG RESTORE RETURN REGISTER 02554000
  2588. BR R14 EXIT. 02555000
  2589. SPACE 02556000
  2590. FREE1 L R4,LSTENT CHECK FOR SOMETHING IN LSTENT. 02557000
  2591. LTR R4,R4 IS ANYTHING THERE ? 02558000
  2592. BNZ *+8 YES - DON'T CHANGE IT. 02559000
  2593. ST R1,LSTENT NO - ASSUME GARBAGE REQUEST. 02560000
  2594. L R1,FSIZE(R1) ... 02561000
  2595. LTR R1,R1 02562000
  2596. BNZ FREE9 EXTRACT IF THERE IS 02563000
  2597. FREE7A LTR R1,R3 IS THERE ANYTHING IN A LARGER SIZE ? 02564000
  2598. BNZ FREE9 YES - EXTRACT FROM THERE. 02565000
  2599. SPACE 02566000
  2600. FREE7 LR R3,R15 PREPARE TO CALL FOR EXTENSION OF MEMORY. 02567000
  2601. L R5,AFRET CALL FREE RETURN. 02568000
  2602. L R15,AEXTND CALL FOR EXTENSION. 02569000
  2603. BALR R14,R15 ... 02570000
  2604. LR R15,R5 ... 02571000
  2605. SRA R0,3 NO. OF BYTES TO DOUBLE WORDS. 02572000
  2606. BALR R14,R15 ... 02573000
  2607. LR R15,R3 RESTORE ADDRESSABILITY 02574000
  2608. LH R0,NREQ RELOAD NUMBER REQUESTED 02575000
  2609. B FREEX AND CONTINUE FROM START. 02576000
  2610. SPACE 02577000
  2611. FREE5 L R1,FSIZE(R1) GO DOWN LIST TO FIND LARGER OR EQUAL. 02578000
  2612. LTR R1,R1 WAS ANYTHING FOUND. 02579000
  2613. BZ FREE7A NO - LIST EMPTY. 02580000
  2614. FREE9 L R2,SIZE(R1) GET SIZE OF THIS BEAD. 02581000
  2615. CR R0,R2 COMPARE AGAINST REQUEST 02582000
  2616. BE FREE6 EQUAL. 02583000
  2617. BH FREE5 HIGH. 02584000
  2618. SPACE 02585000
  2619. FREE8 BAL R10,UNZIP REMOVE TOP SECT. OF LARGER BEAD 02586000
  2620. L R2,SIZE(R1) FORM TOP ADDRESS OF NEW BEAD. 02587000
  2621. SLR R2,R0 NEW LENGHT 02588000
  2622. ST R2,SIZE(R1) SAVE NEW LENGTH OF OLD HOLE. 02589000
  2623. LR R4,R0 ... 02590000
  2624. SLA R4,3 ... 02591000
  2625. LR R3,R1 SAVE REG 1 FOR CALL TO 'FRET' 02592000
  2626. AR R1,R4 ... 02593000
  2627. L R0,SIZE(R3) RESTORE SIZE OF NEWLY FORMED. 02594000
  2628. LR R5,R15 SAVE ADDRESSABILITY AND RETURN 02595000
  2629. L R15,AFRET CALL FREE RETURN. 02596000
  2630. BALR R14,R15 ... 02597000
  2631. LR R15,R5 RESTORE ADDRESSABILITY. 02598000
  2632. LR R1,R3 RESTORE ADDRESS TO RETURN TO USER. 02599000
  2633. B FREXIT EXIT.. 02600000
  2634. SPACE 02601000
  2635. EJECT 02602000
  2636. ********************************************************************** 02603000
  2637. * 02604000
  2638. * 'FRET' IS CALLED TO RETURN BLOCKS TO FREE STORAGE. 02605000
  2639. * ITS OPERATION IS DESCRIBED BELOW--- 02606000
  2640. * 02607000
  2641. * 'FRET' SEARCHES THROUGH A 'STORAGE' THREAD 02608000
  2642. * IN ORDER TO DETERMINE IF THE RETURNED BLOCKS ADJOINS A BLOCK 02609000
  2643. * ALREADY IN FREE STORAGE. IF IT IS FOUND TO ADJOIN ON EITHER 02610000
  2644. * OR BOTH ENDS, A NEW BLOCK IS FORMED OUT OF THE TWO BLOCKS AND 02611000
  2645. * THE PROCESS IS REPEATED. IN THIS WAY, CORE FRAGMENTATION IS 02612000
  2646. * AVOIDED AT THE COST OF SOME PROGRAM EFFICIENCY. 02613000
  2647. * IF AN ATTEMPT IS MADE TO RETURN A WRONGLY ALIGNED (NOT DOUBLE 02614000
  2648. * WORD BOUNDARIED) BLOCK TO FRET, A WAIT STATE PSW WILL BE 02615000
  2649. * LOADED (WITH INTERRUPT AND MPX CHANNEL ENABLED) POINTING TO 02616000
  2650. * 'FRET'. 02617000
  2651. *********************************************************************** 02618000
  2652. SPACE 02619000
  2653. USING *,R15 ADDRESSABILITY 02620000
  2654. SPACE 02621000
  2655. FRET STM R0,R15,FRTREG SAVE REGISTERS 02622000
  2656. BAL R5,ROUNDUP ROUND UP TO 3 DW BOUNDARY 02623000
  2657. N R1,AMASK CLEAR OUT ALL BUT THE ADDRESS. 02624000
  2658. TM FRTREG+7,X'07' TEST FOR WRONG ALIGMENT. 02625000
  2659. BZ FRETX ALIGNMENT OK. 02626000
  2660. SVC 109 DIE... 02627000
  2661. FRETAD DC A(FRET) 02628000
  2662. SPACE 02629000
  2663. FRETX L R2,STHRED PICK UP STORAGE THREAD 02630000
  2664. LA R3,FRLIST PICK UP THE ADDRESS OF STHRED. 02631000
  2665. N R2,AMASK CLEAR OUT ALL BUT THE ADDRESS 02632000
  2666. BNZ FRET1 NO. 02633000
  2667. SPACE 02634000
  2668. FRET3 SLR R4,R4 ZERO REG. 4 02635000
  2669. ST R4,BSIZE(R1) ZERO OUT TOP REGISTER 02636000
  2670. ST R4,BSTOR(R1) ... 02637000
  2671. ST R4,FSIZE(R1) 02638000
  2672. ST R4,FSTOR(R1) 02639000
  2673. ST R3,BSTOR(R1) AND SAVE. 02640000
  2674. ST R1,STHRED NEW POINTER ADDRESS. 02641000
  2675. OI STHRED,X'80' INDICATE SINGLE LENGTH. 02642000
  2676. B FRET8 02643000
  2677. SPACE 02644000
  2678. FRET1 L R2,FSTOR(R3) GET ADDRESS OF NEXT ELEMENT. 02645000
  2679. LTR R2,R2 IS THERE ONE THERE 02646000
  2680. BZ FRET2 NO - 02647000
  2681. CR R1,R2 YES - COMPARE WITH PROVIDED ADDRESS. 02648000
  2682. BL FRET2 ELEMENT DOES HERE. 02649000
  2683. LR R3,R2 ADVANCE A STAGE 02650000
  2684. B FRET1 ... 02651000
  2685. SPACE 02652000
  2686. FRET2 LR R4,R3 SEE IF NEW ONE SPLICES WITH OLD ONE. 02653000
  2687. L R5,SIZE(R3) ... 02654000
  2688. SLA R5,3 EXPAND INTO BYTES 02655000
  2689. AR R4,R5 FORM TOP ADDRESS OF BACKWARD. 02656000
  2690. CR R4,R1 AND COMPARE WITH RETURN ADDRESS. 02657000
  2691. BNE FRET6 NO MATCH. 02658000
  2692. SRA R5,3 RECOMPRESS LENGTH. 02659000
  2693. AR R5,R0 A MATCH - MERGE COUNTS ONLY HERE. 02660000
  2694. ST R5,SIZE(R3) ... 02661000
  2695. LR R1,R3 ... 02662000
  2696. LR R0,R5 NEW SIZE 02663000
  2697. BAL R10,UNZIP REMOVE THIS ONE FROM ITS STRING 02664000
  2698. B FRETX EXIT 02665000
  2699. SPACE 02666000
  2700. FRET6 LTR R2,R2 CHECK FOR END OF LIST. 02667000
  2701. BZ FRET7A YES - END OF LIST 02668000
  2702. LR R4,R1 SEE IF THIS ONE ADJOINS ONE ABOVE 02669000
  2703. SLA R0,3 CHANGE DW'S TO BYTES 02670000
  2704. AR R4,R0 ... 02671000
  2705. SRA R0,3 RECOMPRESS LENGTH 02672000
  2706. CR R4,R2 02673000
  2707. BNE FRET7 NO MATCH. 02674000
  2708. LR R3,R1 SAVE REGISTER 1 02675000
  2709. LR R1,R2 AND LOAD REG 2 INTO REG 1 02676000
  2710. LR R4,R0 AND SAVE REG 0 ALSO 02677000
  2711. L R0,SIZE(R2) GET SIZE OF FORWARD BEAD. 02678000
  2712. BAL R10,UNZIP AND REMOVE IT FROM STRING. 02679000
  2713. AR R0,R4 GET NEW SIZE OF WHOLE THING. 02680000
  2714. LR R1,R3 RETURN REG 1 02681000
  2715. B FRETX AND RETURN TO START THE MESS AGAIN. 02682000
  2716. SPACE 02683000
  2717. FRET7A ST R2,FSTOR(R1) IT GOES AT THE END OF LIST - PATCH IT IN 02684000
  2718. ST R1,FSTOR(R3) ... 02685000
  2719. ST R3,BSTOR(R1) ... 02686000
  2720. B FRET8 02687000
  2721. SPACE 02688000
  2722. FRET7 LR R4,R1 FORM COMPRESSED ADDRESS OF THIS BEAD. 02689000
  2723. L R5,FSTOR(R3) ... 02690000
  2724. ST R5,FSTOR(R1) ... 02691000
  2725. L R5,BSTOR(R2) ... 02692000
  2726. N R5,AMASK CLEAR OUT ALL BUT THE ADDRESS 02693000
  2727. ST R5,BSTOR(R1) ... 02694000
  2728. ST R4,FSTOR(R3) ... 02695000
  2729. ST R4,BSTOR(R2) ... 02696000
  2730. SPACE 02697000
  2731. FRET8 L R2,FRLIST GET ADDRESS OF CONTROL LIST 02698000
  2732. FRET9 L R3,CTLSIZ(R2) GET THE SIZE. 02699000
  2733. LTR R3,R3 CHECK FOR ZERO 02700000
  2734. BZ FRET10 ZERO - INSERT HERE IN MISCELLANEOUS 02701000
  2735. CR R0,R3 COMPARE WITH REQUEST. 02702000
  2736. BE FRET10 YES - MATCH 02703000
  2737. LA R2,CTLLEN(R2) NO - BUMP POINTER 02704000
  2738. B FRET9 ... 02705000
  2739. FRET10 L R4,FSIZE(R2) ... 02706000
  2740. ST R4,FSIZE(R1) PROCEED TO PATCH IN SIZE SLOT. 02707000
  2741. ST R0,SIZE(R1) 02708000
  2742. ST R2,BSIZE(R1) 02709000
  2743. LTR R4,R4 02710000
  2744. BZ *+8 02711000
  2745. ST R1,BSIZE(R4) 02712000
  2746. ST R1,FSIZE(R2) 02713000
  2747. SPACE 02714000
  2748. FRTXIT LM R0,R15,FRTREG RELOAD REGISTERS 02715000
  2749. BR R14 RETURN TO CALLER 02716000
  2750. SPACE 1 02717000
  2751. ROUNDUP SLR R2,R2 CLEAR 02718000
  2752. LR R3,R0 NUMBER OF DW INTO R3 02719000
  2753. LA R3,2(,R3) ROUND TO 3 DW BOUNDARY 02720000
  2754. LA R4,3 DIVIDE CONSTANT 02721000
  2755. DR R2,R4 FIND NUMBER OF 3 DW FOR THIS REQUEST 02722000
  2756. MR R2,R4 CONVERT BACK TO EVEN DIVISOR 02723000
  2757. LR R0,R3 THIS IS THE NUMBER WE WILL GET UP 02724000
  2758. BR R5 RETURN 02725000
  2759. SPACE 02726000
  2760. DROP R15 02727000
  2761. SPACE 02728000
  2762. EJECT 02729000
  2763. *********************************************************************** 02730000
  2764. * 02731000
  2765. * 'FRINIT' IS THE INITIALIZATION ENTRY OF THE FREE STORAGE 02732000
  2766. * PACKAGE. WITH IT THE USER PROVIDES A LIST OF STANDARD SIZES 02733000
  2767. * WHICH WILL BE USED BY THE FREE STORAGE PACKAGE TO PROVIDE 02734000
  2768. * SMALL ACCESS TIMES TO MOST OFTEN USED BLOCK SIZES. THE FORMAT 02735000
  2769. * OF THE LIST IS AS FOLLOWS -- 02736000
  2770. * 02737000
  2771. * DS 0D -ALIGNMENT- 02738000
  2772. *LIST EQU * LOCATION OF CONTROL LIST. 02739000
  2773. * 02740000
  2774. * DC 2D'0' WILL BE USED BY FREE PACKAGE FOR PNTR. 02741000
  2775. * DC F'3' DESIGNATION OF SIZE OF THIS STRING 02742000
  2776. * DC F'0' WILL BE USED AS COUNTER FOR NUM. OF 02743000
  2777. * TIMES REFERENCED. 02744000
  2778. * DC D'0' BOUNDARY ALIGNMENT. 02745000
  2779. * 02746000
  2780. * 02747000
  2781. * DC 4D'0' END OF LIST DESIGNATOR. 02748000
  2782. * 02749000
  2783. *********************************************************************** 02750000
  2784. SPACE 02751000
  2785. USING *,R15 -ADDRESSABILITY- 02752000
  2786. SPACE 02753000
  2787. FRINIT STM R0,R15,FREREG SAVE REGISTERS 02754000
  2788. ST R1,FRLIST SAVE ADDRESS OF FREE STORAGE CONTROL LIST 02755000
  2789. SLR R3,R3 ZERO REG 02756000
  2790. ST R3,STHRED ENSURE PROPER STORAGE INITIALIZATION 02757000
  2791. FRINI2 L R4,CTLSIZ(R1) GET SIZE OF THIS LIST. 02758000
  2792. ST R3,CTLCNT(R1) ZERO OUT VITAL PARTS OF CONTROL LIST. 02759000
  2793. ST R3,BSIZE(R1) ... 02760000
  2794. LTR R4,R4 SEE IF THIS IS END OF CONTROL LIST 02761000
  2795. BZ FRINI1 YES - 02762000
  2796. LA R1,CTLLEN(R1) NO - BUMP COUNT 02763000
  2797. B FRINI2 GET NEXT ENTRY 02764000
  2798. FRINI1 LM R0,R15,FREREG RELOAD REGISTERS 02765000
  2799. BR R14 RETURN TO CALLER 02766000
  2800. SPACE 02767000
  2801. DROP R15 02768000
  2802. SPACE 02769000
  2803. EJECT 02770000
  2804. *********************************************************************** 02771000
  2805. * 02772000
  2806. * 'UNZIP' IS AN INTERNAL ROUTINE CALLED TO REMOVED 02773000
  2807. * THE FREE STORAGE BLOCK POINTED TO BY GPR 1 FROM ITS STRINGS. 02774000
  2808. * 02775000
  2809. *********************************************************************** 02776000
  2810. SPACE 02777000
  2811. UNZIP BALR R9,R0 -ADDRESSABILITY- 02778000
  2812. USING *,R9 ... 02779000
  2813. L R8,BSIZE(R1) REMOVE THIS ELEMENT FROM SIZE STRING 02780000
  2814. LR R5,R8 ... 02781000
  2815. L R6,FSIZE(R1) ... 02782000
  2816. ST R6,FSIZE(R5) ... 02783000
  2817. LTR R6,R6 02784000
  2818. BZ *+8 BRANCH IF END OF LIST. 02785000
  2819. ST R8,BSIZE(R6) .. 02786000
  2820. L R8,BSTOR(R1) NOW PATCH STORAGE STRING FOR THIS ELEMENT 02787000
  2821. N R8,AMASK REMOVE SIZE BIT. 02788000
  2822. LR R5,R8 .. 02789000
  2823. L R6,FSTOR(R1) 02790000
  2824. ST R6,FSTOR(R5) 02791000
  2825. LTR R6,R6 ARE WE AT END OF LIST 02792000
  2826. BCR 8,R10 IF YES - RETURN TO CALLER 02793000
  2827. ST R8,BSTOR(R6) NO 02794000
  2828. BR R10 RETURN TO CALLER 02795000
  2829. SPACE 02796000
  2830. DROP R9 ADDRESSABILITY 02797000
  2831. SPACE 02798000
  2832. FREREG DS 16F STORAGE FOR FREE. 02799000
  2833. FRTREG DS 16F FRET REGISTER SAVE AREA 02800000
  2834. SPACE 02801000
  2835. DS 0D -ALIGNMENT- 02802000
  2836. FRLIST DS 1F ADDRESS OF FREE CONTROL LIST 02803000
  2837. DC F'0' FILLER 02804000
  2838. DC F'0' FILLER 02805000
  2839. STHRED DC F'0' ADDRESS OF STORAGE THREAD (DOUBLE+4) 02806000
  2840. DC F'0' FILLER 02807000
  2841. DC F'0' FILLER 02808000
  2842. AFRET DC A(FRET) ADDRESS OF FRET 02809000
  2843. AEXTND DC A(EXTEND) ADDRESS OF EXTEND ROUTINE 02810000
  2844. ONE DC F'1' CONSTANT OF (1) 02811000
  2845. NREQ DS 1H NUM. OF DOUBLE WORDS DESIRED (FREE). 02812000
  2846. HW3 DC H'3' MINIMUM NUMBER OF DW'S FOR FREE CALL 02813000
  2847. SPACE 02814000
  2848. DS 0F ALIGNMENT 02815000
  2849. AMASK DC X'00FFFFFF' USED TO CLEAR OUT UNWANTED BITS 02816000
  2850. RETREG DS 1F RETURN SAVE REGISTER 02817000
  2851. LSTENT DS 1F POINTER TO ACTIVE LIST ENTRY. 02818000
  2852. FRGARB DC 2D'0' DEFAULT GARBAGE LIST 02819000
  2853. OMEGA DC CL160'O' END OF PROGRAM 02820000
  2854. DS 0D ALIGEMENT 02821000
  2855. IOTA DC CL240'I' INPUT CARD READIN AREA @VA02018 02822000
  2856. LTORG @VA08517 02869010
  2857. EJECT 02869020
  2858. DS 0D @VA08517 02869030
  2859. ENTRY L R13,4 ADDRESS OF "ENTRY" @VA08517 02869040
  2860. USING ENTRY,R13 ESTABLISH ADDRESSABILITY @VA08517 02869050
  2861. LH R1,2 OBTAIN IPL ADDRESS @VA08517 02869060
  2862. SRL R1,8 CH PORTION TO LOW ORDER BITS @VA08517 02869070
  2863. LA R2,1 INCREMENT @VA08517 02869080
  2864. SR R3,R3 CLEAR WORK REG @VA08517 02869090
  2865. AR R1,R2 INCREMENT CH NUMBER BY ONE @VA08517 02869100
  2866. SHFTLOOP SRDL R2,1 R3 CONTAINS MASK BITS FOR CR2 @VA08517 02869110
  2867. BCT R1,SHFTLOOP WHEN THRU... @VA08517 02869120
  2868. STCM R3,B'1000',WAIT11 SAVE IN PSW IN CASE CH 0-5 @VA08517 02869130
  2869. NI WAIT11,X'FC' ONLY WANT TO SET BITS IF 0-5 @VA08517 02869140
  2870. BNZ READY MUST BE CH 0-5 IF BNZ @VA08517 02869150
  2871. ST R3,CREG2 CH 6 AND ABOVE, MUST SET UP CR2 @VA08517 02869160
  2872. LCTL C2,C2,CREG2 LOAD CREG2 @VA08517 02869170
  2873. OI WAIT11,IOMASK TURN ON I/O SUMMARY BIT IN PSW @VA08517 02869180
  2874. READY STCM R13,B'0111',CCW+1 SETUP CAW TO READ FROM @VA08517 02869190
  2875. LA R1,CCW IPL DEVICE @VA08517 02869200
  2876. ST R1,CAW ... @VA08517 02869210
  2877. SR R0,R0 CLEAR @VA08517 02869220
  2878. LA R1,INTRPT SET UP TO POINT TO I/O NEW PSW @VA08517 02869230
  2879. STM R0,R1,NIOPSW FOR RETURN WHEN I/O IS HANDLED @VA08517 02869240
  2880. L R3,STOPP STARTING LOAD ADDRESS @VA08517 02869250
  2881. LH R8,2 IPL ADDRESS AGAIN @VA08517 02869260
  2882. TIO TIO 0(R8) CLEAR CHANNEL @VA08517 02869270
  2883. BNZ TIO LOOP IF BUSY @VA08517 02869280
  2884. ALLSET SSM *+1 DISABLE ALL I/O @VA08517 02869290
  2885. SIO 0(R8) GO AHEAD AND PERFORM I/O @VA08517 02869300
  2886. WAITT LPSW WAIT11 NORMAL WAIT PSW @VA08517 02869310
  2887. INTRPT TM CCW+4,UC IF UNIT CHECK, ERROR @VA08517 02869320
  2888. BO UCLPSW LOAD DISABLED WAIT @VA08517 02869330
  2889. TM CSW+4,DE IF DEVICE-END, @VA08517 02869340
  2890. BZ WAITT CONTINUE TO WAIT @VA08517 02869350
  2891. LM R4,R5,ENTRY PREPARE TO CHECK IF LAST @VA08517 02869360
  2892. C R4,ENDX CARD READ; IF YES, BR TO @VA08517 02869370
  2893. BER R5 STARTING ROUTINE @VA08517 02869380
  2894. MVC 0(72,R3),ENTRY OTHERWISE, MOVE CARD AND @VA08517 02869390
  2895. LA R3,72(R3) PREPARE FOR NEXT READ @VA08517 02869400
  2896. B ALLSET GO LOOP AGAIN @VA08517 02869410
  2897. * 02870000
  2898. DS 0D -ALIGNMENT- 02871000
  2899. * 02872000
  2900. ENDX DC X'02' *** 02873000
  2901. DC C'LD' END OF LOADER FLAG 02874000
  2902. DC X'02' ... 02875000
  2903. * 02876000
  2904. STOPP DC A(ALPHA) STARTING LOAD ADDRESS. 02877000
  2905. * 02878000
  2906. * 02879000
  2907. ORG ENTRY+160 ORG FOR THIRD CARD @VA02018 02880000
  2908. * 02881000
  2909. CARD3 DC X'02' IPL CCW TO READ 1ST BOOTSTRP CARD@VA02018 02882000
  2910. DC AL3(IOTA) @VA02018 02883000
  2911. DC X'60000050' @VA02018 02884000
  2912. CRD3CCW2 DC X'02' IPL CCW TO READ 2ND BOOTSTRP CARD@VA02018 02885000
  2913. DC AL3(IOTA+80) @VA02018 02886000
  2914. DC X'20000050' @VA02018 02887000
  2915. * 02888000
  2916. UCLPSW LPSW DISABW LOAD DISABLED WAIT PSW WITH UNIT @VA02018 02889000
  2917. * CHECK ERROR CODE 02890000
  2918. * 02891000
  2919. DS 0D ALIGNMENT @VA02018 02892000
  2920. WAIT11 DC X'FF020000' ENABLED WAIT PSW @VA02018 02893000
  2921. TOPX DC AL1(2),AL3(ENTRY) @VA02018 02894000
  2922. DISABW DC X'00020000' DISABLED WAIT PSW @VA02018 02895000
  2923. DC X'22222222' UNIT CHECK ERROR CODE @VA02018 02896000
  2924. * 02896100
  2925. CREG2 DS F WORK AREA FOR CREG2 @VA08517 02896200
  2926. CCW CCW 2,0,SILI,80 READ TAPE CCW @VA08517 02896300
  2927. LTORG (IF ANY) @VA03812 02897000
  2928. TOTLSIZE EQU *-RELDR TOTAL SIZE OF LOADER @VA03812 02898000
  2929. * 02899000
  2930. ORG ENTRY+240 RESERVE SPACE FOR 3 CARDS @VA02018 02900000
  2931. * 02901000
  2932. DROP 13 @VA02018 02902000
  2933. EJECT 02903000
  2934. XTRBLOK DSECT 02904000
  2935. XTRPNT DS 1F POINTER TO NEXT XTRBLOK 02905000
  2936. XTRLINE DS 1F ADDRESS OF DATA TO PRINT 02906000
  2937. XTRLEN DS 1H NUMBER OF BYTES PRESENTLY IN USE 02907000
  2938. DS 1H FILLER 02908000
  2939. DS 1F FILLER 02909000
  2940. XTRDATA DS CL96 EXTRN DATA ENTRIES 02910000
  2941. XTRDATAL EQU L'XTRDATA NUMBER OF BYTES TO CLEAR 02911000
  2942. XTRFULL EQU 84 MAX. NUMBER OF BUFFER PRINT POSITIONS 02912000
  2943. DS 0D FORCE ALIGNMENT 02913000
  2944. XTRSIZE EQU (*-XTRBLOK)/8 NUMBER OF DOUBLE WORDS OF BLOK. 02914000
  2945. SPACE 2 02915000
  2946. COPY EQU 02916000
  2947. END LDRGEN 02917000
ibm/vm370-lib/cp/dmkld00e.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator