User Tools

Site Tools


ibm:vm370-lib:cp:dmkdir.assemble_src

DMKDIR Source

References

Source Listing

DMKDIR.ASSEMBLE.txt
  1. DIR TITLE 'DMKDIR (CP) VM/370 - RELEASE 6' 00001000
  2. *. 00002000
  3. * MODULE NAME 00003000
  4. * 00004000
  5. * DMKDIR DIRECTORY CREATION MODULE 00005000
  6. * 00006000
  7. * FUNCTION 00007000
  8. * 00008000
  9. * TO BUILD A USER DIRECTORY ON A SYSTEM ONWED VOLUME 00009000
  10. * USING PREALLOCATED CYLINDERS. A NEW DIRECTORY 00010000
  11. * MAY BE BUILT SO AS NOT TO OVERLAY AN EXISTING 00011000
  12. * DIRECTORY. THE USER MUST ALLOW SPACE FOR TWO 00012000
  13. * DIRECTORIES OR ALLOCATE A NEW DIRECTORY EACH 00013000
  14. * TIME THE DIRECTORY IS CREATED. THIS PROGRAM 00014000
  15. * WILL RUN STAND-ALONE, WITH A CARD DECK AS INPUT. 00015000
  16. * OR UNDER CMS USING A CMS FILE. 00016000
  17. * 00017000
  18. * THE INPUT WILL BE OF THE FOLLOWING FORMAT, WITH ONE 00018000
  19. * OR MORE BLANKS AS DELIMITERS. ALL ENTRIES ARE 00019000
  20. * POSITIONAL FROM LEFT TO RIGHT. IF ANY ENTRIES ARE 00020000
  21. * DEFAULTED ALL REMAINING ENTRIES ON THAT INPUT LINE 00021000
  22. * MUST BE DEFAULTED, WITH THE EXCEPTION OF THE 00022000
  23. * OPTION STATEMENT, ITS ENTRIES ARE SELF DEFINING 00023000
  24. * AND NOT POSITIONAL. 00024000
  25. * 00025000
  26. * IF ANY INPUT STATEMENT IS FOUND TO BE IN ERROR THE 00026000
  27. * PROGRAM WILL CONTINUE TO BUILD THE DIRECTORY CHECKING 00027000
  28. * ALL INPUT STATEMENTS FOR VALIDITY BEFORE TERMINATION. 00028000
  29. * AFTER AN ABNORMOL TERMINATION OR AN EDIT RUN, 00029000
  30. * THE OLD DIRECTORY WILL NOT BE ALTERED, AND THE NEW 00030000
  31. * DIRECTORY WILL NOT BE IN EVIDENCE. 00031000
  32. * 00032000
  33. * IF RUNNING UNDER VM/370 A NORMAL COMPLETION WILL 00033000
  34. * RESULT IN THE NEWLEY CREATED DIRECTORY BEING 00034000
  35. * DYNAMICALLY SWAPPED, AND PLACED IN USE BY VM/370. 00035000
  36. * PROVIDING THE USER'S CLASS IS A,B OR C AND THE 00036000
  37. * DIRECTORY VOLUME IS PRESENT IN THE SYSTEM OWNED 00037000
  38. * LIST. IN ETHER CASE THE DIRECTORY WILL HAVE BEEN 00038000
  39. * UPDATED ON THE DIRECTORY VOLUME. 00039000
  40. * 00040000
  41. * ONLY COLUMN 1 TO 71 WILL BE INSPECTED BY THE 00041000
  42. * PROGRAM. ALL DATA AFTER THE LAST POSSIBLE PARAMETER 00042000
  43. * ON ANY STATEMENT, WILL BE IGNORED. ALSO BLANK STATEMENT 00043000
  44. * AND STATEMENTS WITH THE FIRST PARAMETER AN * WILL ALSO 00044000
  45. * BE IGNORED. 00045000
  46. * 00046000
  47. EJECT 00047000
  48. * COMMAND LINE UNDER CMS 00048000
  49. * 00049000
  50. * +------------------------------------------------------+ 00050000
  51. * | DIRECT <FILENAME <FILETYPE <FILEMODE>>> ( EDIT | 00051000
  52. * +------------------------------------------------------+ 00052000
  53. * 00053000
  54. * THE DIRECT COMMAND WILL DEFAULT TO A CMS FILE 00054000
  55. * IDENTIFICATION OF ' USER DIRECT * '. ANY OR ALL 00055000
  56. * OF THE DEFAULT CAN BE OVERRIDEN BY THE COMMAND LINE. 00056000
  57. * THE EDIT OPTION WILL ALLOW THE USER TO RUN THE 00057000
  58. * PROGRAM WITHOUT UPDATING THE DIRECTORY ON DISK. 00058000
  59. * 00059000
  60. * +-----------------------------------+ 00060000
  61. * | DIRECTORY CCU DEVTYPE VOLSER | 00061000
  62. * | DIR | 00062000
  63. * +-----------------------------------+ 00063000
  64. * 00064000
  65. * DIRECTORY STATEMENT DEFINES THE DEVICE ON WHICH THE DIRECTORY 00065000
  66. * IS ALLOCATED. IT MUST BE THE FIRST STATEMENT. 00066000
  67. * 00067000
  68. * CCU THE DEVICE ADDRESS ON WHICH THE DIRECTORY 00068000
  69. * WILL RESIDE. 00069000
  70. * 00070000
  71. * DEVTYPE 00071000
  72. * 2314 00072000
  73. * 2319 00073000
  74. * 3340 00074000
  75. * 3330 00075000
  76. * 3350 00076000
  77. * 3375 HRC106DK 00076100
  78. * 3380 HRC106DK 00076200
  79. * 2305 00077000
  80. * 00078000
  81. * VOLSER THE VOLUME SERIAL NUMBER OF THE DIRECTORY 00079000
  82. * DEVICE. 00080000
  83. * 00081000
  84. * +-----------------------------------------------------------------+ 00082000
  85. * | USER USERID PASS <STOR <MSTOR <CL <PRI <LE <LD <CD <ES >>>>>>>> | 00083000
  86. * | U ON ON ON ON | 00084000
  87. * | OFF OFF OFF OFF | 00085000
  88. * +-----------------------------------------------------------------+ 00086000
  89. * 00087000
  90. * USER STATEMENT INITIATES A USER MACHINE BLOCK AND CREATES 00088000
  91. * A USER DIRECTORY BLOCK. IT DELIMITS THE USER DIRECTORY 00089000
  92. * ENTRIES FOR ONE USER. 00090000
  93. * 00091000
  94. * USERID ONE TO EIGHT CHARACTER USER ID 00092000
  95. * 00093000
  96. * PASS ONE TO EIGHT CHARACTER USER PASSWORD 00094000
  97. * 00095000
  98. * STOR ONE TO EIGHT DECIMAL DIGITS THAT IS THE 00096000
  99. * VIRTUAL USER'S STORAGE SIZE. IT IS A 00097000
  100. * MULTIPLE OF 4K. THE LAST DIGIT MUST BE 00098000
  101. * K OR M. THE DEFAULT IS 128K. THE MINIMUM 00099000
  102. * SIZE IS 8K. ALL ENTRIES NOT ON A 4K BOUNDARY 00100000
  103. * WILL BE ROUNDED UP TO THE NEXT 4K BOUNDARY. 00101000
  104. * THE MAXIMUM SIZE IS 16M. 00102000
  105. * 00103000
  106. EJECT 00104000
  107. * MSTOR ONE TO EIGHT DECIMAL DIGITS THAT IS THE 00105000
  108. * MAXIMUM STORAGE SIZE THIS USER CAN DEFINE 00106000
  109. * HIS STORAGE AS AFTER LOGGING ON THE SYSTEM. 00107000
  110. * IT IS A MULTIPLE OF 4K. THE LAST DIGIT 00108000
  111. * MUST BE K OR M. THE DEFAULT SIZE IS 1M. 00109000
  112. * ALL ENTRIES NOT ON A 4K BOUNDARY WILL 00110000
  113. * BE ROUNDED UP TO THE NEXT 4K BOUNDARY AND THE 00111000
  114. * MAXIMUM SIZE IS 16M. THE MINIMUM SIZE IS 8K. 00112000
  115. * 00113000
  116. * CL ONE TO EIGHT LETTERS FROM A TO H DENOTING 00114000
  117. * THE OPERATING CLASS GIVEN TO THIS USER. THE 00115000
  118. * DEFAULT IS G. 00116000
  119. * 00117000
  120. * PRI A NUMBER FROM ONE TO NINETY-NINE. USED BY 00118000
  121. * THE DISPATCHING SCHEME. ONE IS THE HIGHEST 00119000
  122. * PRIORITY AND FIFTY IS THE DEFAULT. 00120000
  123. * 00121000
  124. * LE A ONE CHARACTER TERMINAL LINE END SYMBOL OR A 00122000
  125. * TWO CHARACTER HEX REPRESENTATION OF THE SYMBOL. 00123000
  126. * ON WILL GIVE THE SYSTEM DEFAULT #. OFF WILL 00124000
  127. * TURN THE FEATURE OFF. 00125000
  128. * 00126000
  129. * LD A ONE CHARACTER TERMINAL LINE DELETE SYMBOL 00127000
  130. * OR A TWO CHARACTER HEX REPRESENTATION OF THE 00128000
  131. * SYMBOL. ON WILL GIVE THE SYSTEM DEFAULT ยข . 00129000
  132. * OFF WILL TURN THE FEATURE OFF. 00130000
  133. * 00131000
  134. * CD A ONE CHARACTER TERMINAL CHARACTER DELETE SYMBOL 00132000
  135. * OR A TWO CHARACTER HEX REPRESENTATION OF THE 00133000
  136. * SYMBOL. ON WILL GIVE THE SYSTEM DEFAULT @ . OFF 00134000
  137. * WILL TURN THE FEATURE OFF. 00135000
  138. * 00136000
  139. * ES A ONE CHARACTER EDIT EXCAPE CHARACTER OR A TWO 00137000
  140. * CHARACTER HEX REPRESENTATION OF THE SYMBOL. 00138000
  141. * ON WILL GIVE THE SYSTEM DEFAULT " . OFF WILL 00139000
  142. * TURN THE FEATURE OFF. 00140000
  143. * 00141000
  144. * 00142000
  145. * +-----------------------------------+ 00143000
  146. * | ACCOUNT NUMBER <DISTRIBUTION> | 00144000
  147. * | A | 00145000
  148. * +-----------------------------------+ 00146000
  149. * 00147000
  150. * ACCOUNT STATEMENT DEFINES AN EIGHT CHARACTER ACCOUNT NUMBER, 00148000
  151. * AND A ONE TO EIGHT CHARACTER DISTRIBUTION IDENTIFICATION. 00149000
  152. * THIS STATEMENT MUST FOLLOW THE USER STATEMENT AND PRECEDE THE FIRST 00150000
  153. * DEVICE STATEMENT. THE ACCOUNT STATEMENT IS OPTIONAL. 00151000
  154. * 00152000
  155. EJECT 00153000
  156. * +-------------------------------------------------------------------+ 00154000
  157. * |OPTION REALTIMER ECMODE ISAM VIRT=REAL ACCT SVCOFF BMX CPUID BBBBBB| 00155000
  158. * |O R E I V A S B C | 00156000
  159. * +-------------------------------------------------------------------+ 00157000
  160. * 00158000
  161. * +-------------------------------------------------------------------+ 00159000
  162. * |OPTION AFFINITY AA LNKNOPAS STFIRST HRC068DK 00160590
  163. * |O AF L ST HRC068DK 00161180
  164. * +-------------------------------------------------------------------+ 00162000
  165. * 00163000
  166. * OPTION STATEMENT SELECTS SPECIFIC OPTIONS AVAILABLE TO 00164000
  167. * THE USER. THIS STATEMENT MUST FOLLOW THE USER STATEMENT AND 00165000
  168. * PRECEDE THE FIRST DEVICE STATEMENT, THE OPTION STATEMENT 00166000
  169. * IS OPTIONAL. MULTIPLE OPTION STATEMENTS ARE PERMITTED. 00167000
  170. * 00168000
  171. * +---------------+ 00169000
  172. * | IPL IPLSYS | 00170000
  173. * | I | 00171000
  174. * +---------------+ 00172000
  175. * 00173000
  176. * IPL STATEMENT WILL CONTAIN A ONE TO EIGHT CHARACTER NAME OF 00174000
  177. * THE SYSTEM OR DEVICE TO BE IPL'D ,FOR THE USER, 00175000
  178. * AT LOGON TIME. THIS STATEMENT MUST BE AFTER THE USER STATEMENT 00176000
  179. * AND BEFORE THE FIRST DEVICE STATEMENT, THE IPL STATEMENT 00177000
  180. * IS OPTIONAL. 00178000
  181. * 00179000
  182. * +----------------------------------+ 00180000
  183. * | CONSOLE CCU DEVTYPE <CLASS> | 00181000
  184. * | C | 00182000
  185. * +----------------------------------+ 00183000
  186. * 00184000
  187. * CONSOLE STATEMENT SPECIFIES THE CONSOLE DEVICE. 00185000
  188. * 00186000
  189. * CCU THE VIRTUAL DEVICE ADDERSS. 00187000
  190. * 00188000
  191. * DEVTYPE 00189000
  192. * 1052 00190000
  193. * 3210 00191000
  194. * 3215 00192000
  195. * 3278 00193000
  196. * 00194000
  197. * CLASS IS A ONE CHARACTER OUTPUT CLASS, THE DEFAULT IS CLASS T. 00195000
  198. * 00196000
  199. * +------------------------------------------------------------------+ 00197000
  200. * | MDISK CCU TYPE CYLR CYLS VOLSER <MODE <PR <PW <PM>>>> | 00198000
  201. * | M T-DISK | 00199000
  202. * | T | 00200000
  203. * +------------------------------------------------------------------+ 00201000
  204. * 00202000
  205. * MDISK STATEMENT DESCRIBES A PHYICAL EXTENT ON A DASD DEVICE TO BE 00203000
  206. * OWNED BY THAT USER. 00204000
  207. * 00205000
  208. * CCU VIRTUAL DEVICE ADDRESS. 00206000
  209. * 00207000
  210. * TYPE 00208000
  211. * 2305 00209000
  212. * 2311 TOP (TOP HALF OF A 2314-2319) 00210000
  213. * T 00211000
  214. * BOTTOM (BOTTOM HALF OF A 2314-2319) 00212000
  215. * B 00213000
  216. * 2314 00214000
  217. * 2319 00215000
  218. * 3340 00216000
  219. * 3330 00217000
  220. * 3350 00218000
  221. * 3375 HRC106DK 00218100
  222. * 3380 HRC011DK 00218500
  223. * 00219000
  224. * CYLR A THREE DIGIT DECIMAL CYLINDER RELOCATION 00220000
  225. * FACTOR. OR IF T-DISK, DISK SPACE IS OBTAINED 00221000
  226. * AT LOGON TIME. 00222000
  227. * 00223000
  228. * CYLS A THREE DIGIT DECIMAL NUMBER SPECIFYING THE 00224000
  229. * NUMBER OF CYLINDERS. 00225000
  230. * 00226000
  231. * VOLSER THE VOLUME SERIAL NUMBER OF THE DASD UNIT 00227000
  232. * 00228000
  233. * MODE SPECIFIES THE PRIMARY ACCESS REQUESTED (READ/ONLY, 00229000
  234. * WRITE, OR MULTIPLE), AND THE ALTERNATE ACCESS 00230000
  235. * (READ/ONLY OR WRITE) DESIRED (IF ANY), AND OPTIONALLY 00231000
  236. * A CHARACTER 'V' WHICH IF SPECIFIED INDICATES THAT 00232000
  237. * VIRTUAL RESERVE/RELEASE PROCESSING SHOULD BE DONE. 00233000
  238. * 00234000
  239. * R SPECIFIES THAT READ/ONLY (R/O) ACCESS IS REQUESTED. 00235000
  240. * THE LINK WILL NOT BE GIVEN IF ANY OTHER USER HAS THE 00236000
  241. * DISK IN WRITE STATUS. 00237000
  242. * 00238000
  243. * RR SPECIFIES THAT READ/ONLY ACCESS IS REQUESTED, EVEN IF 00239000
  244. * ANOTHER USER HAS THE DISK IN WRITE STATUS. 00240000
  245. * 00241000
  246. * W SPECIFIES THAT WRITE ACCESS IS REQUESTED. THE DISK WILL 00242000
  247. * NOT BE DEFINED IF ANY OTHER USER HAS THE DISK IN READ OR 00243000
  248. * WRITE STATUS. 00244000
  249. * 00245000
  250. * WR SPECIFIES THAT WRITE ACCESS IS REQUESTED IF NO OTHER 00246000
  251. * USER HAS THE DISK IN READ OR WRITE STATUS, BUT THAT AN 00247000
  252. * ALTERNATE ACCESS OF READ/ONLY IS ACCEPTABLE IF OTHER(S) 00248000
  253. * DO HAVE A LINK TO THE DISK; IN THIS EVENT, A READ/ONLY 00249000
  254. * MODE IS TO BE GIVEN. 00250000
  255. * 00251000
  256. * M SPECIFIES THAT "MULTIPLE" ACCESS IS REQUESTED. THIS 00252000
  257. * MEANS THAT A WRITE LINK IS TO BE GIVEN TO THE DISK 00253000
  258. * UNLESS ANOTHER USER ALREADY HAS WRITE ACCESS TO IT, 00254000
  259. * IN WHICH EVENT NO LINK IS TO BE GIVEN. 00255000
  260. * 00256000
  261. * MR SPECIFIES THAT A WRITE LINK IS TO BE GIVEN TO THE DISK 00257000
  262. * UNLESS ANOTHER USER ALREADY HAS WRITE ACCESS TO IT; 00258000
  263. * IN THIS EVENT, A READ-LINK IS TO BE GIVEN, WITH AN 00259000
  264. * ERROR 1 OR 2, AND THE 'DEV XXX FORCED R/O' MESSAGE. 00260000
  265. * 00261000
  266. * MW SPECIFIES THAT A WRITE LINK IS TO BE GIVEN TO THE DISK 00262000
  267. * IN ANY EVENT. 00263000
  268. * 00264000
  269. * IF THE MODE IS OMITTED FROM THE STATEMENT, THE 00265000
  270. * DEFAULT IS TO "W". 00266000
  271. * 00267000
  272. EJECT 00268000
  273. * PR ONE TO EIGHT CHARACTER PASSWORD THAT ALLOWS LINKING 00269000
  274. * IN READ MODE. 00270000
  275. * 00271000
  276. * PR ONE TO EIGHT CHARACTER PASSWORD THAT ALLOWS LINKING 00272000
  277. * IN WRITE MODE. 00273000
  278. * 00274000
  279. * PM ONE TO EIGHE CHARACTER PASSWORD THAT ALLOWS LINKING 00275000
  280. * IN MULT-WRITE. 00276000
  281. * 00277000
  282. * +--------------------------------+ 00278000
  283. * | SPOOL CCU DEVTYPE <CLASS> | 00279000
  284. * | S | 00280000
  285. * +--------------------------------+ 00281000
  286. * 00282000
  287. * SPOOL STATEMENT SPECIFIES THE OUTPUT UNIT RECORD DEVICE TO SPOOL. 00283000
  288. * 00284000
  289. * CCU THE VIRTUAL DEVICE ADD. 00285000
  290. * 00286000
  291. * DEVTYPE 00287000
  292. * 1403 00288000
  293. * 1443 00289000
  294. * 3211 00290000
  295. * 3203 00291000
  296. * 2540 PUNCH 00292000
  297. * P 00293000
  298. * READER 00294000
  299. * R 00295000
  300. * 3525 00296000
  301. * 2501 00297000
  302. * 3505 00298000
  303. * 00299000
  304. * CLASS IS A ONE CHARACTER OUTPUT CLASS, THE DEFAULT IS CLASS A. 00300000
  305. * 00301000
  306. * +---------------------------------+ 00302000
  307. * | DEDICATE CCU RDEV <3330V> | 00303000
  308. * | D <VOLID> VOLSER | 00304000
  309. * +------------------------------------------+ 00305000
  310. * 00306000
  311. * DEDICATE STATEMENT SPECIFICES THAT A DEVICE IS TO BE 00307000
  312. * DEDICATED TO THIS USER. 00308000
  313. * 00309000
  314. * CCU THE VIRTUAL DEVICE ADD FOR THIS USER. 00310000
  315. * 00311000
  316. * RDEV THE REAL DEVICE ADD OF THE DEVICE TO BE DEDICATED. 00312000
  317. * 00313000
  318. * VOLID OPTIONAL KEYWORD USED IF THE VOLSER IS LESS THAN 00314000
  319. * 4 CHARACTERS. 00315000
  320. * 00316000
  321. * VOLSER THE VOLUME SERIAL NUMBER OF THE DISK PACK, 00317000
  322. * ON A REAL DEVICE, TO BE DEDICATED. 00318000
  323. * 00319000
  324. * 3330V AN OPTIONAL KEYWORD. IF SPECIFIED, INDICATES THAT 00320000
  325. * THE VIRTUAL DEVICE ADDRESS IS TO BE TREATED AS AN 00321000
  326. * MSS VUA. 00322000
  327. * 00323000
  328. EJECT 00324000
  329. * +-------------------------------------+ 00325000
  330. * | LINK USERID LDEV <CCU <MODE>> | 00326000
  331. * | L | 00327000
  332. * +-------------------------------------+ 00328000
  333. * 00329000
  334. * LINK STATEMENT SPECIFIES THAT THIS USER IS TO BE LINKED 00330000
  335. * AT LOGON TIME. 00331000
  336. * 00332000
  337. * USERID THE USER ID OF THE USER TO LINK TO. 00333000
  338. * 00334000
  339. * LDEV THE DEVICE ADDRESS OF THE DEVICE TO LINK TO. 00335000
  340. * 00336000
  341. * CCU THE VIRTUAL DEVICE ADDRESS OF THE USERS 00337000
  342. * DEVICE. IT WILL DEFAULT TO THE SAME ADD AS 00338000
  343. * LINK TO DEVICE. 00339000
  344. * 00340000
  345. * MODE SPECIFIES THE PRIMARY ACCESS REQUESTED (READ/ONLY, 00341000
  346. * WRITE, OR MULTIPLE), AND THE ALTERNATE ACCESS 00342000
  347. * (READ/ONLY OR WRITE) DESIRED (IF ANY), AS FOLLOWS: 00343000
  348. * 00344000
  349. * R SPECIFIES THAT READ/ONLY (R/O) ACCESS IS REQUESTED. 00345000
  350. * THE LINK WILL NOT BE GIVEN IF ANY OTHER USER HAS THE 00346000
  351. * DISK IN WRITE STATUS. 00347000
  352. * 00348000
  353. * RR SPECIFIES THAT READ/ONLY ACCESS IS REQUESTED, EVEN IF 00349000
  354. * ANOTHER USER HAS THE DISK IN WRITE STATUS. 00350000
  355. * 00351000
  356. * W SPECIFIES THAT WRITE ACCESS IS REQUESTED. THE LINK WILL 00352000
  357. * NOT BE GIVEN IF ANY OTHER USER HAS THE DISK IN READ OR 00353000
  358. * WRITE STATUS. 00354000
  359. * 00355000
  360. * WR SPECIFIES THAT WRITE ACCESS IS REQUESTED IF NO OTHER 00356000
  361. * USER HAS THE DISK IN READ OR WRITE STATUS, BUT THAT AN 00357000
  362. * ALTERNATE ACCESS OF READ/ONLY IS ACCEPTABLE IF OTHER(S) 00358000
  363. * DO HAVE A LINK TO THE DISK; IN THIS EVENT, A READ/ONLY 00359000
  364. * LINK IS TO BE GIVEN. 00360000
  365. * 00361000
  366. * M SPECIFIES THAT "MULTIPLE" ACCESS IS REQUESTED. THIS 00362000
  367. * MEANS THAT A WRITE LINK IS TO BE GIVEN TO THE DISK 00363000
  368. * UNLESS ANOTHER USER ALREADY HAS WRITE ACCESS TO IT, 00364000
  369. * IN WHICH EVENT NO LINK IS TO BE GIVEN. 00365000
  370. * 00366000
  371. * MR SPECIFIES THAT A WRITE LINK IS TO BE GIVEN TO THE DISK 00367000
  372. * UNLESS ANOTHER USER ALREADY HAS WRITE ACCESS TO IT; 00368000
  373. * IN THIS EVENT, A READ-LINK IS TO BE GIVEN, WITH AN 00369000
  374. * ERROR 1 OR 2, AND THE 'DEV XXX FORCED R/O' MESSAGE. 00370000
  375. * 00371000
  376. * MW SPECIFIES THAT A WRITE LINK IS TO BE GIVEN TO THE DISK 00372000
  377. * IN ANY EVENT. 00373000
  378. * 00374000
  379. * IF THE MODE IS OMITTED FROM THE STATEMENT, THE 00375000
  380. * DEFAULT IS TO "R". 00376000
  381. * 00377000
  382. EJECT 00378000
  383. * +-------------------------+ 00379000
  384. * | SPECIAL CCU DEVTYPE | 00380000
  385. * | SPE | 00381000
  386. * +-------------------------+ 00382000
  387. * 00383000
  388. * SPECIAL STATEMENT SPECIFIES THE I/O UNITS AVAILABLE TO THE USER 00384000
  389. * THAT NEED NOT HAVE A REAL I/O UNIT AVAILABLE. SPECIAL DEVICES 00385000
  390. * ARE PROGRAM SIMULATED DEVICES THAT MAY OR MAY NOT BE CONNECTED 00386000
  391. * TO REAL OR VIRTUAL DEVICES AFTER THE USER HAS COMPLETED 'LOGON'. 00387000
  392. * 00388000
  393. * CCU THE VIRTUAL DEVICE ADDRESS. 00389000
  394. * 00390000
  395. * DEVTYPE 00391000
  396. * 2701 IBM (VIRTUAL 270X ONLY) 00392000
  397. * I 00393000
  398. * TELE 00394000
  399. * T 00395000
  400. * 2702-2703 (SAME AS 2701) 00396000
  401. * CTCA (CHANNEL TO CHANNEL ADAPTER) 00397000
  402. * TIMER (PSEUDO-TIMER DEVICE) 00398000
  403. * 00399000
  404. * 3270 - VIRTUAL 3270 DEVICE 00400000
  405. * 3138 VIRTUAL CONSOLE 00401000
  406. * 3148 VITRUAL CONSOLE 00402000
  407. * 3158 VIRTUAL CONSOLE 00403000
  408. EJECT 00404000
  409. * ATTRIBUTES 00405000
  410. * 00406000
  411. * NOT SERIALLY REUSABLE, 00407000
  412. * 00408000
  413. * ENTRY POINTS 00409000
  414. * 00410000
  415. * DMKDIRCT DIRECTORY ENTRY POINT 00411000
  416. * 00412000
  417. * DMKDIRED END OF THE LOAD MODULE FOR CMS 00413000
  418. * 00414000
  419. * ENTRY CONDITIONS 00415000
  420. * 00416000
  421. * NONE IF ON THE BARE MACHINE 00417000
  422. * 00418000
  423. * UNDER CMS REG 1 WILL POINT TO A PARAMITER LIST 00419000
  424. * CONTAINING THE FILE NAME, TYPE AND MODE OF A 00420000
  425. * CMS FILE CONTAINING THE CONTROL STATEMENTS. 00421000
  426. * THE DEFAULT NAME WILL BE "USER DIRECT *" 00422000
  427. * 00423000
  428. * EXIT CONDITIONS 00424000
  429. * 00425000
  430. * NONE IF ON THE BARE MACHINE 00426000
  431. * 00427000
  432. * UNDER CMS REG 15 WILL CONTAIN A RETURN CODE: 00428000
  433. * 00429000
  434. * 1 = INVALID FILE NAME OR FILE NOT FOUND 00430000
  435. * 2 = ERROR LOADING THE DIRECTORY 00431000
  436. * 3 = INVALID OPTION FROM CMS 00432000
  437. * 4 = DIRECTORY NOT SWAPED, USER NOT CLASS A,B OR C. 00433000
  438. * 5 = DIRECTORY NOT SWAPED, OLD DIRECTORY LOCKED. 00434000
  439. * 6 = DIRECTORY NOT SWAPED, DIRECTORY IN USE BY THE 00435000
  440. * SYSTEM IS NOT THE DIRECTORY UPDATED. 00436000
  441. * 1XX = ERROR IN THE CMS RDBUF ROUTINE 00437000
  442. * 2XX = ERROR IN THE CMS TYPLIN ROUTINE 00438000
  443. * XX = THE CMS ROUTINE RETURN CODE 00439000
  444. * 00440000
  445. * EXTERNAL REFERENCES 00441000
  446. * 00442000
  447. * NONE 00443000
  448. * 00444000
  449. * TABLES / WORK AREAS 00445000
  450. * 00446000
  451. * NAMETABLE LIST OF VALID KEYWORDS FROM INPUT 00447000
  452. * 00448000
  453. * 00449000
  454. * 00450000
  455. EJECT 00451000
  456. * REGISTER USAGE 00452000
  457. * 00453000
  458. * 00454000
  459. * R0 = WORK 00455000
  460. * R1 = POINTER TO INPUT FIELD 00456000
  461. * POINTER TO IOB 00457000
  462. * POINTER TO OUTPUT BUFFER 00458000
  463. * WORK 00459000
  464. * R2 = INPUT COUNT FROM SCANSTATEMENT 00460000
  465. * DASD ADDRESS 00461000
  466. * WORK 00462000
  467. * R3 = WORK 00463000
  468. * R4 = WORK 00464000
  469. * R5 = BRANCH AND LINK RETURN ADDRESS 00465000
  470. * POINTER TO THE NEXT UDEVBLOK 00466000
  471. * WORK 00467000
  472. * R6 = RDIRBUF = POINTER TO THE UDIRBLOK BUFFER 00468000
  473. * R7 = RMACBUF = POINTER TO THE UMACBLOK BUFFER 00469000
  474. * R8 = RDEVBUF = POINTER TO THE UMDEVBLOK BUFFER 00470000
  475. * R9 = RDIR = POINTER TO UDIRBLOK 00471000
  476. * R10 = RMAC = POINTER TO UMACBLOK 00472000
  477. * R11 = RDEV = POINTER TO UDEVBLOK 00473000
  478. * R12 = BASE 1 00474000
  479. * R13 = BASE 2 00475000
  480. * R14 = RETURN ADDRESS 00476000
  481. * R15 = ENTRY ADDRESS 00477000
  482. * 00478000
  483. EJECT 00479000
  484. * MESSAGES 00480000
  485. * 00481000
  486. * DMKDIR751E INVALID OPERAND - XXXXXX 00482000
  487. * XXXXXX = THE PARAMETER IN ERROR FROM THE 00483000
  488. * LAST INPUT LINE. 00484000
  489. * 00485000
  490. * DMKDIR752E CONTROL STATMENT SEQUENCE ERROR 00486000
  491. * 00487000
  492. * DMKDDR753E OPERAND MISSING 00488000
  493. * 00489000
  494. * DMKDIR754E DEV CCU NOT OPERATIONAL 00490000
  495. * CCU = THE ADDRESS OF THE UNIT 00491000
  496. * 00492000
  497. * DMKDIR755E IO ERROR CCU CSW XXXXXXXXXXXXXXXX SENSE XXXXXXXXXXX 00493000
  498. * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 00494000
  499. * CCU = THE UNIT ADIRESS OF THE DEVICE 00495000
  500. * SENSE XX = UP TO 32 SENSE BYTES HRC011DK 00496490
  501. * CSW XX = THE CSW FROM THE ERROR 00497000
  502. * 00498000
  503. * DMKDIR756E PROGRAM CHECK PSW = XXXXXXXXXXXXXXXX 00499000
  504. * XXXX = THE PROGRAM CKECK OLD PSW 00500000
  505. * 00501000
  506. * DMKDIR757E MACHINE CHECK RUN SEREP AND SAVE OUTPUT FOR CE 00502000
  507. * 00503000
  508. * DMKDIR758E DUPLICATE UNIT DEFINITION 00504000
  509. * 00505000
  510. * DMKDIR760E NOT ENOUGH SPACE ALLOCATED FOR DIRECTORY 00506000
  511. * 00507000
  512. * DMKDIR761E VOLID READ IS VOLID1 NOT VOLID2 00508000
  513. * VOLID1 = THE VOLUME SERIAL NUMBER FROM 00509000
  514. * THE DASD DEVICE. 00510000
  515. * VOLID2 = THE VOLUME SERIAL NUMBER FROM 00511000
  516. * DIRECTORY STATMENT. 00512000
  517. * 00513000
  518. * DMKDIR762E DIRECTORY STATEMENT MISSING 00514000
  519. * 00515000
  520. * DMKDIR763E INVALID FILENAME OR FILE NOT FOUND 00516000
  521. * 00517000
  522. * DMKDIR764E ERROR IN XXXXXXXX 00518000
  523. * XXXXXXX = THE NAME OF THE CMS ROUTINE 00519000
  524. * IN ERROR. 00520000
  525. * 00521000
  526. * EOJ DIRECTORY NOT UPDATED 00522000
  527. * 00523000
  528. * EOJ DIRECTORY UPDATED 00524000
  529. * 00525000
  530. * EOJ DIRECTORY UPDATED AND ON LINE 00526000
  531. * 00527000
  532. * VM/370 USER DIRECTORY CREATION PROGRAM RELEASE 6 00528000
  533. * 00529000
  534. * ENTER CARD READER ADDRESS AND OPTIONS 00530000
  535. * 00531000
  536. * OPERATION SEE ROUTINES 00532000
  537. * 00533000
  538. *. 00534000
  539. EJECT 00535000
  540. MACRO 00536000
  541. &SYMBOL TABLE &NAME,&MIN,&CLASS,&TYPE,&FET,&LAST 00537000
  542. LCLC &C 00538000
  543. &C SETC '&NAME'(1,4) 00539000
  544. AIF (T'&TYPE EQ 'O').POINT 00540000
  545. AIF ('&LAST' EQ 'LAST').LASTCON 00541000
  546. &SYMBOL DC XL.4'4',AL.4(&MIN-1) FLAG = CONSTANT+LENGTH 00542000
  547. AGO .CON 00543000
  548. .LASTCON ANOP 00544000
  549. &SYMBOL DC XL.4'C',AL.4(&MIN-1) FLAG = LAST CONSTANT+LENGTH 00545000
  550. .CON DC AL1(&CLASS) CLASS OF DEVICE 00546000
  551. DC AL1(&TYPE) TYPE OF DEVICE 00547000
  552. AIF (T'&FET EQ 'O').FET 00548000
  553. DC AL1(&FET) FEATURE CODE 00549000
  554. AGO .NAME 00550000
  555. .FET DC AL1(0) NO FEATURE CODE 00551000
  556. AGO .NAME 00552000
  557. .POINT AIF ('&CLASS' EQ 'LAST').LASTPT 00553000
  558. DC XL.4'0',AL.4(&MIN-1) FLAG = POINTER TO ROUTINE + LENGTH 00554000
  559. AGO .PT 00555000
  560. .LASTPT ANOP 00556000
  561. &SYMBOL DC XL.4'8',AL.4(&MIN-1) FLAG = LAST POINTER+LENGTH 00557000
  562. .PT DC AL3(SCAN&C) ADDRESS OF THE ROUTINE 00558000
  563. .NAME ANOP 00559000
  564. CON&C DC CL8'&NAME' NAME 00560000
  565. SPACE 00561000
  566. MEND 00562000
  567. SPACE 00563000
  568. MACRO 00564000
  569. &SYMBOL COMP &NAME 00565000
  570. &SYMBOL LA R3,&NAME 00566000
  571. BAL R14,COMPARE . GO COMPARE THE KEYWORD RETURN WITH CC SET 00567000
  572. MEND 00568000
  573. SPACE 00569000
  574. MACRO 00570000
  575. &SYMBOL MOVE &NAME 00571000
  576. &SYMBOL BCT R2,*+10 00572000
  577. MVC &NAME(1)(1),0(R1) 00573000
  578. EX R2,*-6 00574000
  579. MEND 00575000
  580. SPACE 00576000
  581. MACRO 00577000
  582. &SYMBOL MSG &MESSAGE,&RETURN 00578000
  583. AIF ( T'&RETURN EQ 'O').YES 00579000
  584. &SYMBOL LA R5,&RETURN 00580000
  585. BAL R2,MSGWRITE 00581000
  586. AGO .CONT 00582000
  587. .YES ANOP 00583000
  588. &SYMBOL BAL R2,MSGWRITE 00584000
  589. .CONT DC AL2(L&SYSNDX) 00585000
  590. M&SYSNDX DC C&MESSAGE 00586000
  591. L&SYSNDX EQU *-M&SYSNDX 00587000
  592. SPACE 00588000
  593. MEND 00589000
  594. EJECT 00590000
  595. SPACE 3 00591000
  596. DMKDIR START 0 00592000
  597. USING *,R0 00593000
  598. USING IOB,R1 00594000
  599. USING NAMETABL,R4 00595000
  600. USING UMACBLOK,R10 00596000
  601. USING UDEVBLOK,R11 00597000
  602. USING DMKDIRCT+2,R12 00598000
  603. USING DMKDIRCT+4096,R13 00599000
  604. USING DMKDIRCT+8190,R9 @V200731 00600000
  605. SPACE 3 00601000
  606. RDIRBUF EQU 6 REGISTER POINTING TO DIRECTORY PAGE BUF 00602000
  607. RMACBUF EQU 7 REGISTER POINTING TO MACHINE PAGE BUFFER 00603000
  608. RDEVBUF EQU 8 REGISTER POINTING TO DEVICE PAGE BUFFER 00604000
  609. RDIR EQU 15 REGISTER POINTING TO UDIRBLOK @V200731 00605000
  610. RMAC EQU 10 REGISTER POINTING TO UMACBLOK 00606000
  611. RDEV EQU 11 REGISTER POINTING TO UDEVBLOK 00607000
  612. SPACE 3 00608000
  613. IPLUSE DS 3D 00609000
  614. EXTOLD DC D'0' 00610000
  615. SUPOLD DC D'0' 00611000
  616. PROOLD DC D'0' 00612000
  617. MCOLD DC D'0' 00613000
  618. IOOLD DC D'0' 00614000
  619. CSW DS 1D 00615000
  620. CAW DS 1F 00616000
  621. DC F'0' 00617000
  622. TIMER DC X'7FFFFFFF' 00618000
  623. DC F'0' 00619000
  624. EXTNEW DC X'0104000000' 00620000
  625. DC AL3(EXTINT) 00621000
  626. SVCNEW DC X'0106000000000000' 00622000
  627. PRONEW DC X'0104000000' 00623000
  628. DC AL3(ERROR56) 00624000
  629. MCNEW DC X'0000000000' 00625000
  630. DC AL3(ERROR57) 00626000
  631. IONEW DC X'0104000000' 00627000
  632. DC AL3(IOINT) 00628000
  633. EJECT 00629000
  634. ****************************************************************** 00630000
  635. *. 00631000
  636. * DMKDIRCT HOUSEKEEPING ROUTINE 00632000
  637. * 00633000
  638. * 1. IF UNDER CMS GO TO STEP 6. 00634000
  639. * 00635000
  640. * 2. PRINT HEADER AND READ FROM CONSOLE. 00636000
  641. * 00637000
  642. * 3. IF NULL LINE USE IPL DEV ADD, ELSE 00638000
  643. * SET UP ADD FROM CONSOLE. 00639000
  644. * 00640000
  645. * 4. IF THE EDIT OPTION WAS ENTERED SET THE 00641000
  646. * EDIT BIT ON. 00642000
  647. * 00643000
  648. * 5. GO TO READ THE FIRST CARD. 00644000
  649. * 00645000
  650. * 6. SET UP THE PARM LIST AND STATE THE FILE. 00646000
  651. * 00647000
  652. * 7. IF NOT FOUND GO TO EXIT. ELSE GO TO READ. 00648000
  653. * 00649000
  654. *. 00650000
  655. ****************************************************************** 00651000
  656. ENTRY DMKDIRCT 00652000
  657. DMKDIRCT BALR R12,0 SET UP BASE 1 00653000
  658. LA R12,0(,R12) CLEAR HIGH ORDER BYTE FOR BARE MAC COMP 00654000
  659. LA R13,4094(,R12) SET UP BASE 2 00655000
  660. LA R9,4094(,R13) SET UP BASE 3 @V200731 00656000
  661. L RDIR,POINTERS GET BUFFER ADDRESS FOR UDIRBLOK @V200731 00657000
  662. ST RDIR,DIRPTR SAVE BUFFER ADDRESS @V200731 00658000
  663. L RMAC,POINTERS+4 GET BUFFER ADDRESS FOR UMACBLOK @V200731 00659000
  664. LR RDEV,RMAC POINT TO FIRST UDEVBLOK 00660000
  665. LM RDIRBUF,RDEVBUF,POINTERS LOAD POINTERS TO BUFFERS 00661000
  666. STIDP CPUID STORE CPU ID 00662000
  667. CL R12,BAREMAC IS THIS A BARE MACHINE 00663000
  668. BNE CMS1 NO- GO TO CMS ROUTINE 00664000
  669. SSM =X'01' ENABLED TO ACCEPT EXT INTERRUPT 00665000
  670. B NEWADD 00666000
  671. EXTINT DS 0H 00667000
  672. MVI TIMER,X'7F' SET HI TIMER FOR ANY EXT INTERRUPT 00668000
  673. TM EXTOLD+3,X'40' WAS EXT INT KEY PUSHED 00669000
  674. BO NEWADD BRANCH IF SO 00670000
  675. LPSW EXTOLD IGNORE EXT INT IF NOT 00671000
  676. NEWADD LA R15,CONIOB POINT TO IOB 00672000
  677. BAL R5,MSG02 GO PRINT MSG 00673000
  678. MSGRET EQU * @V200731 00674000
  679. LA R2,CONERROR SET UP ADDRESS FOR ERROR ROUTINE @V200731 00675000
  680. ST R2,IOBERROR AND PUT ADDRESS IN IOB @V200731 00676000
  681. LA R2,CONCCWR POINT TO THE CONSOLE READ CCW @V200731 00677000
  682. BAL R5,GRAPHID GO READ CONSOLE @V200731 00678000
  683. LA R1,READBUF1 * GET IO ADD OF CARD READER 00679000
  684. ST R1,CURPOINT * AND STORE IT IN THE IOB 00680000
  685. LA R4,72 * 00681000
  686. STH R4,CURCOUNT * 00682000
  687. BAL R14,SCANCARD * 00683000
  688. BC 4,DEFAUL13 * 00684000
  689. BAL R14,HEXCONV * 00685000
  690. STOREADD STH R2,READADD * 00686000
  691. BAL R14,SCANCARD GO FIND THE EDIT PARM 00687000
  692. BNE READ IF NO INPUT THAN GO READ THE CARD 00688000
  693. CLC =C'EDIT ',0(R1) IS THIS EDIT 00689000
  694. BNE ERROR51 NO- ERROR 00690000
  695. OI DIRFLAG,EDITMODE TURN ON THE EDIT SWITCH 00691000
  696. B READ GO GET THE FIRST CARD 00692000
  697. DEFAUL13 LH R2,IPLUSE+2 USE IPL UNIT ADD 00693000
  698. B STOREADD 00694000
  699. SETUPERR TM IOBSTAT,IOBNOPER WAS THE UNIT NOT OPER 00695000
  700. BO CONPARM YES, GO TEST FOR CORRECT DEVICE @V200731 00696000
  701. TM IOBCSW+4,UC IS UNIT CHECK INDICATED ? @V200731 00697000
  702. BZ CONERROR NO, GO TO ERROR HANDLER @V200731 00698000
  703. CONPARM EQU * @V200731 00699000
  704. TM PARM,PARM321 IS THIS A 3215/3210/1052 @V200731 00700000
  705. BO DDRLPSW YES, GO WAIT FOR I/O INTERRUPT @V200731 00701000
  706. TM PARM,PARM01F IS THIS ADDRESS 01F ? @V200731 00702000
  707. BO TESTGRAP YES, GO CHECK FOR GRAPHIC @V200731 00703000
  708. * DEVICE ? 00704000
  709. OI PARM,PARM01F SET INDICATOR FOR 01F @V200731 00705000
  710. MVI CONIOB+((IOBUADD+1)-IOB),X'1F' SET DEVICE ADDR @V200731 00706000
  711. * TO 1F 00707000
  712. B NEWADD GO TRY THIS ADDRESS - 01F @V200731 00708000
  713. TESTGRAP EQU * @V200731 00709000
  714. TM PARM,PARMGRP IS THIS A GRAPHIC DEVICE ? @V200731 00710000
  715. BO TES3270T YES, GO TEST FOR 3270 DEVICE @V200731 00711000
  716. OI PARM,PARMGRP+PARMCLE SET GRAPHIC & ERASE @V200731 00712000
  717. * INDICATORS 00713000
  718. DDRLPSW EQU * @V200731 00714000
  719. LPSW CONWAIT WAIT FOR I/O INTERRUPT @V200731 00715000
  720. TES3270T EQU * @V200731 00716000
  721. TM PARM,PARMGRP+PARM327 IS THIS A 3270 DEVICE ? @V200731 00717000
  722. BO TEST3278 YES, GO TEST FOR 3278 @V60A6B6 00718000
  723. OI PARM,PARM327 SET THE 3270 INDICATOR @V60A6B6 00719000
  724. ********************************************************************** 00720000
  725. * THE FOLLOWING WILL ENSURE THE LINE/COL LOCATION FOR THE DATA STREAM* 00721000
  726. * FOR THE 3277. THIS IS A 24 LINE OPERATOR CONSOLE SCREEN. * 00722000
  727. ********************************************************************** 00723000
  728. MVC LAB3270A+2(2),ADDR1 @V60A6B6 00724000
  729. MVC LAB3270A+8(2),ADDR2 @V60A6B6 00725000
  730. MVC LAB3270B+2(2),ADDR1 @V60A6B6 00726000
  731. MVC LAB3270B+8(2),ADDR2 @V60A6B6 00727000
  732. MVC LAB3270C+2(2),ADDR2 @V60A6B6 00728000
  733. MVC LAB3270D+2(2),ADDR1 @V60A6B6 00729000
  734. MVC LAB3270E+5(2),ADDR1 @V60A6B6 00730000
  735. MVC LAB3270E+12(2),ADDR2 @V60A6B6 00731000
  736. MVC ADDR5,ADDR6 ADDR TO CHECK FOR CURSOR MOVE @V60A6B6 00732000
  737. MVC MAXLEN,LEN3270 @V60A6B6 00733000
  738. B NEWADD GO TRY THIS WITH GRAPHIC SUP. @V60A6B6 00734000
  739. TEST3278 EQU * @V60A6B6 00735000
  740. CLC LAB3270A+2(2),ADDR3 HAVE WE TRIED IT AS 3278 @V60A6B6 00736000
  741. BE TEST3215 MUST BE 3210-3215 @V60A6B6 00737000
  742. ********************************************************************** 00738000
  743. * THE FOLLOWING WILL ENSURE THE LINE/COL LOCATION FOR THE DATA STREAMS 00739000
  744. * FOR THE 3278 MOD2A. THIS IS A 20 LINE OPERATOR CONSOLE SCREEN. * 00740000
  745. ********************************************************************** 00741000
  746. MVC LAB3270A+2(2),ADDR3 @V60A6B6 00742000
  747. MVC LAB3270A+8(2),ADDR4 @V60A6B6 00743000
  748. MVC LAB3270B+2(2),ADDR3 @V60A6B6 00744000
  749. MVC LAB3270B+8(2),ADDR4 @V60A6B6 00745000
  750. MVC LAB3270C+2(2),ADDR4 @V60A6B6 00746000
  751. MVC LAB3270D+2(2),ADDR3 @V60A6B6 00747000
  752. MVC LAB3270E+5(2),ADDR3 @V60A6B6 00748000
  753. MVC LAB3270E+12(2),ADDR4 @V60A6B6 00749000
  754. MVC ADDR5,ADDR7 EST. ADDR FOR CURSOR CHECK @V60A6B6 00750000
  755. MVC MAXLEN,LEN3278 @V60A6B6 00751000
  756. B NEWADD GO TRY THIS ADDRESS WITH @V200731 00752000
  757. * GRAPHIC SUPPORT 00753000
  758. TEST3215 EQU * @V200731 00754000
  759. MVI PARM,PARM321 SET THE 3210-3215-1052 FLAG @V200731 00755000
  760. B NEWADD GO TRY THIS ADDRESS WITH 3215 @V200731 00756000
  761. * SUPPORT 00757000
  762. CONRET EQU * @V200731 00758000
  763. MVC IOBUADD,IOOLD+2 GET DEVICE ADDRESS FROM PSW @V200731 00759000
  764. B NEWADD GO AND TRY THIS ADDRESS @V200731 00760000
  765. CMS1 ST R14,CMSSAVE SAVE RETURN ADD 00761000
  766. BAL R5,TSTPLIST * SET UP P LIST FROM THE 00762000
  767. MVC INFCB+8(8),0(R1) * INPUT P LIST 00763000
  768. BAL R5,TSTPLIST * 00764000
  769. MVC INFCB+16(8),0(R1) * 00765000
  770. BAL R5,TSTPLIST * 00766000
  771. MVC INFCB+24(2),0(R1) * 00767000
  772. BAL R5,TSTPLIST * 00768000
  773. EDITTEST CLC =C'EDIT ',0(R1) IS THIS EDIT 00769000
  774. BE EDITON YES- BRANCH 00770000
  775. MVC ERRORRET,=F'3' SET UP CMS RETURM CODE OF 3 00771000
  776. OI DIRFLAG,ERROR TURN ON THE ERROR BIT 00772000
  777. B EXIT 00773000
  778. EDITON OI DIRFLAG,EDITMODE TURN ON THE EDIT FLAG 00774000
  779. STATE LA R1,INFCB POINT TO THE INPUT FCB 00775000
  780. SVC 202 STATE THE FILE 00776000
  781. DC AL4(ERROR63) ERROR RETURN 00777000
  782. MVC INFCB(8),=CL8'RDBUF' SET UP FOR FIRST READ 00778000
  783. B READ GO READ THE CMS FILE 00779000
  784. TSTPLIST LA R1,8(,R1) ADD 8 00780000
  785. CLI 0(R1),X'FF' IS THIS THE END OF THE P LIST 00781000
  786. BE STATE YES- GO 00782000
  787. CLI 0(R1),C'(' IS IT ( 00783000
  788. BCR 7,R5 NO- RETURN TO THE CALLING ROUTINE 00784000
  789. LA R1,8(,R1) POINT TO THE NEXT PARM 00785000
  790. B EDITTEST GO TEST FOR EDIT 00786000
  791. EJECT 00787000
  792. *************************************************************** 00788000
  793. *. 00789000
  794. * SUBROUTINE TO SCAN NAME TABLE 00790000
  795. * 00791000
  796. * 1. SCAN TABLE POINTED TO BY R4, IS NOT EQ GO TO ERROR51 00792000
  797. * 00793000
  798. * 2. IF NAME IS A CONSTANT MOVE IT INTO THE UDEVBLOK 00794000
  799. * AND RETURN TO THE CALLER. 00795000
  800. * 00796000
  801. * 3. IF NAME IS AN ADDRESS GO TO THAT ADDRESS. 00797000
  802. * 00798000
  803. *. 00799000
  804. * 00800000
  805. *************************************************************** 00801000
  806. SCANNAME STM R3,R5,SAVEREGS SAVE REG 00802000
  807. BCTR R2,0 -1 00803000
  808. RESCAN L R3,NAMEFLAG GET THE FLAG AND POINTER TO THE ROUTINE 00804000
  809. EX R2,COMPNAME COMPARE THE NAME TO THE CON 00805000
  810. BE GOODNAME GET OUT IF EQ 00806000
  811. ADDSIZE LA R4,NAMESIZE(,R4) POINT TO NEXT NAME TABLE ENTRY 00807000
  812. LTR R3,R3 IS THIS THE LAST NAME 00808000
  813. BNM RESCAN LOOP 00809000
  814. LA R2,1(,R2) +1 00810000
  815. B ERROR51 ERROR IF NOT FOUND 00811000
  816. GOODNAME SLL R3,4 DROP THE FLAGS 00812000
  817. SRL R3,28 SET UP THE COUNT 00813000
  818. CR R2,R3 COMPARE THE MIN COUNT 00814000
  819. BL ADDSIZE IF COUNT IS LOW CONT SCAN 00815000
  820. TM NAMEFLAG,X'40' IS THIS AN ADDRESS 00816000
  821. BO MOVECODE NO MOVE IN DEVICE CODE 00817000
  822. ST R14,SAVERET SAVE RETURN REGISTER 00818000
  823. L R15,NAMEFLAG SET UP TO GO TO SUBROUTINE 00819000
  824. LM R3,R5,SAVEREGS RETURN REG 00820000
  825. BR R15 GO TO SUBROUTINE 00821000
  826. MOVECODE MVC UDEVTYPC(3),NAMETYPC MOVE IN DEV TYPE CLASS AND FEAT 00822000
  827. CLC NAME-NAMETABL(8,R4),NAM3138 IS IT A 3138 ?? @V3M4036 00823000
  828. BE IND3158 INDICATE A 3158 @V386298 00824000
  829. CLC NAME-NAMETABL(8,R4),NAM3148 IS IT A 3148 ?? @V3M4036 00825000
  830. BE IND3158 INDICATE A 3158 @V386298 00826000
  831. CLC NAME-NAMETABL(8,R4),=CL8'3158' IS THIS A 3158? @VA02100 00827000
  832. BNE *+8 NO, SKIP IT @VA02100 00828000
  833. IND3158 EQU * @V386298 00829000
  834. OI UDEVSTAT,UDEV3158 FLAG AS 3158 @VA02100 00830000
  835. TM NAMEFLAG,X'40' RESTORE COND. CODE AS ABOVE. @VA02100 00831000
  836. LM R3,R5,SAVEREGS RETURN REG 00832000
  837. BR R14 RETURN TO CALLER 00833000
  838. COMPNAME CLC NAME-NAMETABL(0,R4),0(R1) COMP NAME TO INPUT 00834000
  839. SPACE 00835000
  840. DS 0F 00836000
  841. SPACE 3 00837000
  842. TABLE1 EQU * 00838000
  843. TABLE USER,1 00839000
  844. TABLE ACCOUNT,1 00840000
  845. TABLE OPTION,1 00841000
  846. TABLE MDISK,1 00842000
  847. TABLE SPOOL,1 00843000
  848. TABLE DEDICATE,1 00844000
  849. TABLE LINK,1 00845000
  850. TABLE IPL,1 00846000
  851. TABLE SPECIAL,3 00847000
  852. TABLE CONSOLE,1 00848000
  853. TABLE DIRECTORY,3,LAST 00849000
  854. DC CL4'Y ' LAST LETTER IN DIRECTORY 00850000
  855. TABLE2 EQU * 00851000
  856. TABLE CTCA,4 00852000
  857. TABLE TIMER,5,CLASURI,TYPTIMER 00853000
  858. TABLE 3270,4,CLASGRAF,TYP3277 @V200730 00854000
  859. TABLE 3158,4,CLASGRAF,TYP3158 @VA02100 00855000
  860. TABLE 3138,4,CLASGRAF,TYP3138 @VA06315 00856000
  861. TABLE 3148,4,CLASGRAF,TYP3148 @VA06315 00857000
  862. TABLE 2701,4 00858000
  863. TABLE 2702,4 00859000
  864. TABLE 2703,4,LAST 00860000
  865. TABLE3 EQU * 00861000
  866. TABLE 1052,4,CLASTERM,TYP1052 00862000
  867. TABLE 3210,4,CLASTERM,TYP3210 00863000
  868. TABLE 3215,4,CLASTERM,TYP3215,,LAST 00864000
  869. TABLE4 EQU * 00865000
  870. TABLE 2305,4,CLASDASD,TYP2305 00866000
  871. TABLE 2311,4 00867000
  872. TABLE 2314,4,CLASDASD,TYP2314 00868000
  873. TABLE 2319,4,CLASDASD,TYP2314 00869000
  874. TABLE 3340,4,CLASDASD,TYP3340 @V2A2029 00870000
  875. TABLE 3350,4,CLASDASD,TYP3350 @V304498 00871000
  876. TABLE 3375,4,CLASDASD,TYP3375 HRC106DK 00871100
  877. TABLE 3380,4,CLASDASD,TYP3380 HRC011DK 00871500
  878. TABLE 3330,4,CLASDASD,TYP3330,,LAST 00872000
  879. TABLE5 EQU * 00873000
  880. TABLE 2540,4 00874000
  881. TABLE 2501,4,CLASURI,TYP2501 00875000
  882. TABLE 1403,4,CLASURO,TYP1403 00876000
  883. TABLE 1443,4,CLASURO,TYP1443 00877000
  884. TABLE 3211,4,CLASURO,TYP3211 00878000
  885. TABLE 3203,4,CLASURO,TYP3203 @V386298 00879000
  886. TABLE 3505,4,CLASURI,TYP3505 00880000
  887. TABLE 3525,4,CLASURO,TYP3525,,LAST 00881000
  888. SPACE 3 00882000
  889. ****************************************************************** 00883000
  890. *. 00884000
  891. * DIRECTORY CARD SCAN ROUTINE 00885000
  892. * 00886000
  893. * 1. IF NOT FIRST CARD GO TO ERROR52. 00887000
  894. * 00888000
  895. * 2. FILL IN THE IOB FROM THE INPUT CARD. 00889000
  896. * 00890000
  897. * 3. READ THE VOL1 AND ALLOCATION RECORD FROM THE 00891000
  898. * DIRECTORY VOLUME. 00892000
  899. * 00893000
  900. * 4. GET A DASD PAGE ADDRESS FOT THE UDIR AND UMAC 00894000
  901. * BUFFERS, SET UP POINTERS AND GOTO READ. 00895000
  902. *. 00896000
  903. ****************************************************************** 00897000
  904. SCANDIRE CLI LASTCARD,X'00' IS THIS THE FIRST CARD 00898000
  905. BNE ERROR52 NO- ERROR 00899000
  906. BAL R14,SCANCARD GET DEVICE ADD 00900000
  907. BC 4,ERROR53 ERROR IF NO INPUT 00901000
  908. CL R2,=F'4' IS IT OVER 4 00902000
  909. BH ERROR51 YES- ERROR 00903000
  910. BAL R14,HEXCONV 00904000
  911. STH R2,DASDADD STORE OUTPUT ADDRESS 00905000
  912. BAL R14,SCANCARD GET DEVICE TYPE 00906000
  913. BC 4,ERROR53 ERROR IF NO INPUT 00907000
  914. CL R2,=F'4' IS IT UNDER 4 00908000
  915. BL ERROR51 YES- ERROR 00909000
  916. COMP CON2319 IS IT 2319 00910000
  917. BE SET2314 YES- BRANCH 00911000
  918. COMP CON2314 IS IT A 2314 00912000
  919. BNE TEST3330 NO- BRANCH 00913000
  920. SET2314 OI DIRFLAG,OUT2314 INDICATE THE OUTPUT IS A 2314 - 2319 00914000
  921. LA R4,32 SET UP THE MAX RECORD COUNT 00915000
  922. B SAVEMAX 00916000
  923. TEST3330 COMP CON3330 IS IT A 3330 00917000
  924. LA R4,57 SET UP THE MAX RECORD COUNT 00918000
  925. BE FLAG GO TURN ON THE 3330 FLAG 00919000
  926. COMP CON3350 IS IT A 3350 ? @V304498 00920000
  927. LA R4,120 SET UP THE MAX RECORD COUNT @V304498 00921000
  928. BE FLAG3350 YES, SET 3350 FLAG @V304498 00922000
  929. COMP CON3375 Is it a 3375 ? HRC106DK 00922100
  930. LA R4,96 Set up the max record count HRC106DK 00922200
  931. BE FLAG3375 Yes, set 3375 flag HRC106DK 00922300
  932. COMP CON3380 Is it a 3380 ? HRC106DK 00922400
  933. LA R4,150 Set up the max record count HRC106DK 00922500
  934. BE FLAG3380 Yes, set 3380 flag HRC106DK 00922600
  935. COMP CON3340 IS IT A 3340 ? @V2A2029 00923000
  936. LA R4,24 SET UP THE MAX RECORD COUNT @V2A2029 00924000
  937. BNE TEST2305 BRANCH IF NOT 3340 @V2A2029 00925000
  938. OI DIRFLAG1,OUT3340 INDICATE 3340 @V2A2029 00926000
  939. B SAVEMAX .. @V2A2029 00927000
  940. FLAG3350 OI DIRFLAG1,OUT3350 INDICATE 3350 @V304498 00928000
  941. B SAVEMAX .. @V304498 00929000
  942. FLAG3375 OI DIRFLAG1,OUT3375 Indicate 3375 HRC106DK 00929100
  943. B SAVEMAX .. HRC106DK 00929200
  944. FLAG3380 OI DIRFLAG1,OUT3380 Indicate 3380 HRC106DK 00929300
  945. B SAVEMAX .. HRC106DK 00929400
  946. TEST2305 COMP CON2305 IS IT A 2305 @V2A2029 00930000
  947. LA R4,24 SET UP THE MAX RECORD COUNT 00931000
  948. BNE ERROR51 NO- ERROR 00932000
  949. FLAG OI DIRFLAG,OUT3330 FLAG OUTPUT AS A 3330 OR 2305 00933000
  950. SAVEMAX STH R4,MAXREC SAVE THE MAX RECORD COUNT 00934000
  951. GETVS BAL R14,SCANCARD GET VOL SER NO 00935000
  952. BC 4,ERROR53 ERROR IF NO INPUT 00936000
  953. CL R2,=F'6' IS IT EQ 6 00937000
  954. BH ERROR51 NO- ERROR 00938000
  955. MVC DASDVSER,0(R1) MOVE IN VOL SER NO 00939000
  956. READDASD LA R1,DASDIOB POINT TO IOB 00940000
  957. TM DIRFLAG,EDITMODE EDIT RUN 00942000
  958. BO EDITON1 YES- BRANCH (DO NOT READ THE DISK) 00943000
  959. TM DIRFLAG1,OUT3380 Is this a 3380? HRC106DK 00943010
  960. BZ SKIP3380 Some other device HRC106DK 00943020
  961. L R3,IOB Get device address HRC106DK 00943030
  962. LA R2,SNSE4CCW Point to sense CCW HRC106DK 00943040
  963. CLI CPUID,X'FF' Is this a virtual machine? HRC106DK 00943050
  964. BNE SKIPDIAG Running standalone - use SIO HRC106DK 00943060
  965. SSM *+1 Lock out CMS HRC106DK 00943070
  966. DC X'83320020' Diagnose call to to VM/370 HRC106DK 00943080
  967. BNE SKIP3380 Error - give up on sense HRC106DK 00943090
  968. B SKIPSIO Skip over SIO/TIO HRC106DK 00943100
  969. SKIPDIAG EQU * HRC106DK 00943110
  970. ST R2,CAW Store in CAW HRC106DK 00943120
  971. XC SENSE,SENSE Zero out sense HRC106DK 00943130
  972. SIO 0(R3) Do sense HRC106DK 00943140
  973. TIO3380 TIO 0(R3) Clear any interrupt HRC106DK 00943150
  974. BC 2,TIO3380 Loop if channel is busy HRC106DK 00943160
  975. SKIPSIO EQU * HRC106DK 00943170
  976. CLC CSW+6(2),=H'0' Got all sense bytes wanted? HRC106DK 00943180
  977. BNE SKIP3380 No, something wrong here HRC106DK 00943190
  978. CLC SENSE+4(2),=X'3380' Is this really a 3380? HRC106DK 00943200
  979. BNE SKIP3380 No, continue HRC106DK 00943210
  980. TM SENSE+6,RDEVMD82 Is it a 3380E or 3380K? HRC106DK 00943220
  981. BZ SKIP3380 No - 1024 byte allocation map HRC106DK 00943230
  982. MVC RCCW7+6,=H'2048' 3380E - 2048 byte alloc map HRC106DK 00943240
  983. TM SENSE+6,RDEVMD83 Is it a 3380K? HRC106DK 00943250
  984. BNO SKIP3380 No, leave it at 2048 bytes HRC106DK 00943260
  985. MVC RCCW7+6,=H'4096' 3380K - 4096 byte alloc map HRC106DK 00943270
  986. SKIP3380 EQU * HRC106DK 00943280
  987. LA R2,RCCW1 Address of CCW string HRC106DK 00943290
  988. BAL R5,STARTIO GO READ THE RECORDS 00944000
  989. CLC DASDVSER(6),VOLLABLE+4 IS THIS THE PROPER DISK 00945000
  990. BNE ERROR61 NO- ERROR 00946000
  991. EDITON1 BAL R14,GETPAGE * GET A DASD ADDRESS AND 00947000
  992. ST R2,UDIRPAGE * SAVE POINTER TO FIRST 00948000
  993. ST R2,VOLLABLE+52 * PAGE OF THE DIRECTORY 00949000
  994. BAL R14,GETPAGE 00950000
  995. ST R2,UMACPAGE POINT TO DASD ADD OF FIRST MAC PAGE 00951000
  996. B READ 00952000
  997. EJECT 00953000
  998. ***************************************************************** 00954000
  999. *. 00955000
  1000. * USER CARD SCAN ROUTINE 00956000
  1001. * 00957000
  1002. * 1. IF THE LAST CARD WAS USER, ACCO, OPT OR IPL GO 00958000
  1003. * TO ERROR52. 00959000
  1004. * 00960000
  1005. * 2. MASK OFF THE LAST UDIR AND UMAC BLOCKS. 00961000
  1006. * 00962000
  1007. * 3 IF THE UDEV BUFFER WAS USED WRITE IT OUT. 00963000
  1008. * AND ZERO THE DASD ADDRESS POINTER. 00964000
  1009. * 00965000
  1010. * 4. SET UP POINTERS TO THE NEXT UMAC UDEV AND 00966000
  1011. * UDIR BLOCKS. 00967000
  1012. * 00968000
  1013. * 5. IF THE UDIR BUFFER IS FULL WRITE IT OUT 00969000
  1014. * AND GET A NEW DASD PAGE ADDRESS FOR THE BUFFER. 00970000
  1015. * 00971000
  1016. * 6. FILL IN THE UDIRBLOK AND SET UP POINTER TO 00972000
  1017. * THE UMACBLOK. 00973000
  1018. * 00974000
  1019. * 7. IF THE UMAC BUFFER IS FULL WRITE IT OUT AND 00975000
  1020. * GET AN NEW DASD ADDRESS FOR THE BUFFER. 00976000
  1021. * 00977000
  1022. * 8. POINT TO THE UDIRBLOK IN THE UMAC BUFFER. IF 00978000
  1023. * THE UMAC BUFFER IS FULL, GET A DASD ADDRESS 00979000
  1024. * FOR THE UDEV BUFFER AND USE IT. 00980000
  1025. * 00981000
  1026. * 9. FILL IN THE UMACBLOK AND GO TO READ, TO READ THE 00982000
  1027. * NEXT CARD. 00983000
  1028. *. 00984000
  1029. ************************************************************** 00985000
  1030. SCANUSER EQU * @VM08715 00986000
  1031. TM DIRFLAG,SPECID WAS LAST USER A 'SPECIAL'? @VM08715 00987000
  1032. BZ CHKPREQ NO - CHECK NORM. PREREQS @VM08715 00988000
  1033. NI DIRFLAG,255-SPECID YES - TURN OFF FLAG @VM08715 00989000
  1034. B MSKLST AND CONTINUE @VM08715 00990000
  1035. CHKPREQ EQU * @VM08715 00991000
  1036. CLI LASTCARD,C'U' WAS LAST CARD A USER CARD? @VM08715 00992000
  1037. BE ERROR52 YES- ERROR 00993000
  1038. CLI LASTCARD,C'A' WAS THE LAST CARD AN ACCOUNT CARD 00994000
  1039. BE ERROR52 YES- ERROR 00995000
  1040. CLI LASTCARD,C'O' WAS THE LAST CARD AN OPTION CARD 00996000
  1041. BE ERROR52 YES- ERROR 00997000
  1042. CLI LASTCARD,C'I' WAS THE LAST CARD AN IPL CARD 00998000
  1043. BE ERROR52 YES- ERROR 00999000
  1044. USING UDIRBLOK,R15 SETUP ADDRESSABILITY FOR UDIRBLOK@V200731 01000000
  1045. MSKLST EQU * @VM08715 01001000
  1046. TM DIRFLAG,FLUSH SYNTAX CHECKING AFTER EOF? @VA01066 01002000
  1047. BO EXIT YES, GO FINISH UP @VA01066 01003000
  1048. L RDIR,DIRPTR GET BUFFER ADDRESS FOR UDIRBLOK @V200731 01004000
  1049. XC UDIRUSER,MASK * MASK OFF THE UDIR AND 01005000
  1050. XC UDIRPASS,MASK * UMAC BLOCK'S 01006000
  1051. XC UMACBLOK+8(8),MASK * 01007000
  1052. XC UMACBLOK+16(8),MASK * 01008000
  1053. XC UMACBLOK+24(8),MASK * 01009000
  1054. XC UMACBLOK+32(8),MASK * 01010000
  1055. XC UMACBLOK+40(8),MASK * 01011000
  1056. SR R0,R0 ZERO OUT REG 01012000
  1057. CL R0,UDEVPAGE WAS UDEV BUFFER USED 01013000
  1058. BE NOTUSED NO BRANCH OVER CODE 01014000
  1059. *** IF DEVICE BUFFER WAS USED THAN THE MACHINE BUFFER IS FULL ! 01015000
  1060. LR R1,RMACBUF SET UP POINTER TO UMAC BUFFER 01016000
  1061. L R2,UMACPAGE SET UP DASD ADD OF BUFFER PAGE 01017000
  1062. BAL R14,WRITE WRITE OUT BUFFER 01018000
  1063. MVC UMACPAGE,UDEVPAGE SET DASD ADD EQ 01019000
  1064. ST R0,UDEVPAGE ZERO OUT DASD ADD (PAGE NOT IN BUFFER) 01020000
  1065. XR RMACBUF,RDEVBUF * 01021000
  1066. XR RDEVBUF,RMACBUF * REVERSE POINTERS 01022000
  1067. XR RMACBUF,RDEVBUF * 01023000
  1068. NOTUSED LR RMAC,RDEV POINT TO NEXT MACHINE BLOCK 01024000
  1069. L RDIR,DIRPTR GET BUFFER ADDRESS FOR UDIRBLOK @V200731 01025000
  1070. LA RDEV,UMACSIZE*8(,RDEV) POINT TO NEXT UDEVBLOK 01026000
  1071. LA RDIR,UDIRSIZE*8(,RDIR) POINT TO NEXT UDEVBLOK 01027000
  1072. ST RDIR,DIRPTR SAVE THE BUFFER ADDRESS FOR @V200731 01028000
  1073. * UDIRBLOK 01029000
  1074. LA R1,4096-UDIRSIZE*8(,RDIRBUF) POINT TO END OF BUFFER 01030000
  1075. CLR RDIR,R1 IS THE BUFFER FULL 01031000
  1076. BNH BILDUDIR NO- GO TO BUILD ENTRY 01032000
  1077. USERBFUL BAL R14,GETPAGE GET NEW DASD ADD OF A PAGE 01033000
  1078. L RDIR,DIRPTR GET BUFFER ADDRESS FOR UDIRBLOK @V200731 01034000
  1079. LR R1,RDIR SAVE POINTER TO UDIRBLOK 01035000
  1080. LR RDIR,RDIRBUF POINT TO FIRST UDIRBLOK 01036000
  1081. ST RDIR,DIRPTR SAVE THE BUFFER ADDRESS FOR @V200731 01037000
  1082. * UDIRBLOK 01038000
  1083. SR R1,RDIR CONVERT TO DISPLACEMENT 01039000
  1084. SL R1,DIRSIZE AJUST TO POINT TO LAST BLOCK 01040000
  1085. STH R1,UDIRDISP POINT TO LAST DIR BLOCK IN PAGE 01041000
  1086. LR R1,RDIRBUF POINT TO BUFFER 01042000
  1087. ST R2,UDIRDASD POINT TO NEXT DIRECTORY PAGE 01043000
  1088. L R3,UDIRPAGE PICK UP OLD PAGE DASD ADD 01044000
  1089. ST R2,UDIRPAGE STORE NEW PAGE DASD ADD 01045000
  1090. LTR R2,R3 LOAD OLD ADD TO WRITE IT OUT 01046000
  1091. BZ *+8 THEN SKIP THE WRITE @VA02180 01047000
  1092. BAL R14,WRITE 01048000
  1093. L RDIR,DIRPTR GET BUFFER ADDRESS FOR UDIRBLOK @V200731 01049000
  1094. BAL R5,CLEARBUF GO CLEAR THE BUFFER TO ZEROES @VA02180 01050000
  1095. LA RDIR,UDIRSIZE*8(,RDIR) POINT TO NEXT BLOCK 01051000
  1096. ST RDIR,DIRPTR SAVE CURRENT BUFFER ADDR @VA01711 01052000
  1097. BILDUDIR MVI UDIRBLOK,X'40' CLEAR FIRST 01053000
  1098. MVC UDIRBLOK+1(UDIRSIZE*8-1),UDIRBLOK CLEAR IT OUT 01054000
  1099. BAL R14,SCANCARD GET USER ID 01055000
  1100. BC 4,ERROR53 ERROR IF NO USER ID 01056000
  1101. LA R0,8 SET UP TO TEST LENGTH 01057000
  1102. CLR R2,R0 IS IT OVER 8 01058000
  1103. BH ERROR51 YES- GET OUT 01059000
  1104. MOVE UDIRUSER 01060000
  1105. BAL R14,SCANCARD GET PASSWORD 01061000
  1106. BC 4,ERROR52 ERROR IF NO PASSWORD 01062000
  1107. L RDIR,DIRPTR GET THE BUFFER ADDRESS FOR @V200731 01063000
  1108. * UDIRBLOK 01064000
  1109. CLR R2,R0 IS LENGTH OVER 8 01065000
  1110. BH ERROR51 YES- GET OUT 01066000
  1111. CLC 0(6,R1),=C'NOLOG ' IS IT 'NOLOG'?? @VM08715 01067000
  1112. BNE *+8 NOPE @VM08715 01068000
  1113. OI DIRFLAG,SPECID YES - THIS IS A SPECIAL ID. @VM08715 01069000
  1114. MOVE UDIRPASS 01070000
  1115. MOVEDISP LR R1,RMAC * LOAD DISPLACEMENT OF UMACBLOK 01071000
  1116. L RDIR,DIRPTR GET THE BUFFER ADDRESS FOR @V200731 01072000
  1117. * UDIRBLOK 01073000
  1118. SLR R1,RMACBUF * INTO UDIRBLOK 01074000
  1119. STH R1,UDIRDISP * 01075000
  1120. L R2,UMACPAGE * MOVE IN DASD ADD ALSO 01076000
  1121. ST R2,UDIRDASD * 01077000
  1122. LA R2,4096-UMACSIZE*8 SET UP TO SEE IF MACHINE BUF FULL 01078000
  1123. CLR R1,R2 IS RMACBUF FULL 01079000
  1124. BNH TESTUDEV NO- GO AND BUILD BLOCK 01080000
  1125. LR R1,RMACBUF POINT AT PAGE BUFFER 01081000
  1126. L R2,UMACPAGE GET DASD ADD OF PAGE 01082000
  1127. BAL R14,WRITE WRITE OUT PAGE 01083000
  1128. BAL R14,GETPAGE 01084000
  1129. ST R2,UMACPAGE POINT TO NEW PAGE 01085000
  1130. LR RMAC,RMACBUF POINT TO RMACBUF 01086000
  1131. LA RDEV,UMACSIZE*8(,RMAC) POINT TO FIRST UDEVBLOK 01087000
  1132. B MOVEDISP SET UP POINTER AGAIN 01088000
  1133. TESTUDEV LR R1,RDEV SAVE POINTER TO RDEV 01089000
  1134. SR R1,RMACBUF GET DISPLACEMENT OF BLOCK 01090000
  1135. L R2,UMACPAGE GET DASD ADD 01091000
  1136. LA R3,4096-UDEVSIZE*8 POINT TO LAST BLOCK 01092000
  1137. CLR R1,R3 IS BUFFER FULL 01093000
  1138. BNH BILDUMAC NO- BRANCH 01094000
  1139. BAL R14,GETPAGE GET NEW PAGE 01095000
  1140. ST R2,UDEVPAGE SAVE DASD ADD 01096000
  1141. LR RDEV,RDEVBUF POINT TO BUFFER 01097000
  1142. SR R1,R1 SET TO PROPER DISPLACEMENT 01098000
  1143. BILDUMAC MVI UMACBLOK,X'00' SET UP TO CLEAR BLOCK 01099000
  1144. MVC UMACBLOK+1(UMACSIZE*8-1),UMACBLOK CLEAR IT @V407466 01100000
  1145. MVI UMACACCT,C' ' SET UP TO BLANK 01101000
  1146. MVC UMACACCT+1(23),UMACACCT BLANK BLOCK 01102000
  1147. MVC UMACACCT(8),UDIRUSER MOVE INTO ACCOUNT NUMDER @VA08113 01103000
  1148. MVC UMACDIST(8),UDIRUSER MOVE INTO DIST. CODE @VA08113 01104000
  1149. DROP R15 DROP BASE REGISTER FOR UDIRBLOK @VA08113 01105000
  1150. STH R1,UMACDISP SET UP DISP 01106000
  1151. ST R2,UMACDASD SET UP DASD ADD 01107000
  1152. L R3,=F'262144' SET UP DEFAULT CORE SIZE = 256K 01108000
  1153. BAL R5,GETCORE LINK TO SUBROUTINE 01109000
  1154. ST R3,UMACCORE SAVE CORE SIZE 01110000
  1155. L R3,=F'1048576' SET UP DEFAULT MAX CORE SIZE = 1M 01111000
  1156. BAL R5,GETCORE LINK TO SUBROUTINE 01112000
  1157. ST R3,UMACMCOR SAVE CORE SIZE 01113000
  1158. B SETCMLV 01114000
  1159. GETCORE BAL R14,SCANCARD GET CORE SIZE 01115000
  1160. BCR 4,R5 IS THERE ANY INPUT -NO- RETURN 01116000
  1161. CL R2,=F'2' IS IT LESS THAN 2 01117000
  1162. BL ERROR51 01118000
  1163. CL R2,=F'8' IS IT OVER 8 01119000
  1164. BH ERROR51 YES- ERROR 01120000
  1165. BCTR R2,0 -1 01121000
  1166. LA R3,0(R2,R1) POINT TO THE LAST BYTE 01122000
  1167. BAL R14,BINCONV CONVERT TO BINARY 01123000
  1168. SLL R2,10 MULTIPLY BY 1K 01124000
  1169. CLI 0(R3),C'K' IS THE LAST DIGIT 'K' 01125000
  1170. BE MOVECORE YES- GET OUT 01126000
  1171. SLL R2,10 SET UP FOR 'M' 01127000
  1172. CLI 0(R3),C'M' IS IT A 'M' 01128000
  1173. BNE ERROR51 IF NOT 'K' OR 'M' GO TO ERROR 01129000
  1174. MOVECORE LA R3,4095 * ADD 4K-1 01130000
  1175. ALR R3,R2 * 01131000
  1176. N R3,=X'FFFFF000' SET TO 4K 01132000
  1177. CL R3,=F'16777216' IS IT OVER THE MAX SIZE 01133000
  1178. BH ERROR51 YES- GO TO THE ERROR ROUTINE 01134000
  1179. CL R3,=F'8192' IS IT OVER 8K 01135000
  1180. BCR 11,R5 YES- RETURN TO CALLER 01136000
  1181. L R3,=F'8192' NO- SET TO 8K 01137000
  1182. BR R5 RETURN TO CALLER 01138000
  1183. SETCMLV BAL R14,SCANCARD GET COMMAND LEVEL 01139000
  1184. BC 4,DEFAULT2 DEFAULT IF NO INPUT 01140000
  1185. CL R2,=F'8' IS IT OVER 8 01141000
  1186. BH ERROR51 YES- ERROR 01142000
  1187. MVI UMACCLEV,X'00' CLEAR OUT COMMAND LEVEL 01143000
  1188. LOOP1 LA R3,8 SET UP TO LOOP CMD TABLE FROM A-H 01144000
  1189. LOOP2 LA R4,CMDTABLE-1(R3) POINT AT LETTER IN TABLE 01145000
  1190. LA R5,0(R2,R1) POINT AT LETTER IN INPUT + 1 01146000
  1191. BCTR R5,0 POINT TO LETTER 01147000
  1192. CLC 0(1,R4),0(R5) IS IT EQ 01148000
  1193. BE TURNON YES- TURN ON BIT 01149000
  1194. BCT R3,LOOP2 DO IT 8 TIMES 01150000
  1195. B ERROR51 LETTER IS NOT IN TABLE 01151000
  1196. TURNON OC UMACCLEV(0),8(R4) TURN ON BIT 01152000
  1197. BCT R2,LOOP1 DO IT FOR EACH INPUT LETTER 01153000
  1198. B SETPRI 01154000
  1199. DEFAULT2 MVI UMACCLEV,X'02' DEFAULT IS 'G' 01155000
  1200. SETPRI BAL R14,SCANCARD GET PRIORITY 01156000
  1201. BC 4,DEFAULT3 DEFAULT IF NO INPUT 01157000
  1202. CL R2,=F'2' IS IT OVER 2 01158000
  1203. BH ERROR51 YES GET OUT 01159000
  1204. BAL R14,BINCONV CONVERT TO BINARY 01160000
  1205. STC R2,UMACPRIR STORE PRIORITY 01161000
  1206. B SETCODES GO TO NEXT ROUTINE 01162000
  1207. DEFAULT3 MVI UMACPRIR,X'32' SET UP DEFAULT 01163000
  1208. SETCODES LA R3,UMACLEND POINT TO LINE END BYTE 01164000
  1209. BAL R4,LOOP3 SET UP LINE END 01165000
  1210. LA R3,UMACLDEL POINT TO LINE DELETE BYTE 01166000
  1211. BAL R4,LOOP3 SET UP LINE DELETE 01167000
  1212. LA R3,UMACCDEL POINT TO CHARACTER DELETE BYTE 01168000
  1213. BAL R4,LOOP3 SET UP CHARACTER DELETE 01169000
  1214. LA R3,UMACES POINT TO THE EDIT SYMBOL 01170000
  1215. BAL R4,LOOP3 SET UP EDIT SYMBOL 01171000
  1216. BAL R14,READ GET THE NEXT CARD 01172000
  1217. LOOP3 BAL R14,SCANCARD GET THE CODE 01173000
  1218. BC 4,DEFAULT4 DEFAULT IF NO INPUT 01174000
  1219. CL R2,=F'2' IS IT 2 01175000
  1220. BH TESTOFF NO- GO TO TEST FOR OFF 01176000
  1221. BE TESTON YES- GO TO ON 01177000
  1222. MVC 0(1,R3),0(R1) IT IS ONLY 1 BYTE SO MOVE IT IN 01178000
  1223. BR R4 GO BACK TO CALLER 01179000
  1224. TESTON CLC 0(3,R1),=C'ON ' IS IT ON 01180000
  1225. BNE HEX NO- IT MUST BE HEX INPUT 01181000
  1226. DEFAULT4 MVI 0(R3),X'FF' YES- INDICATE THAT THE DEF IS TO BE USED 01182000
  1227. BR R4 RETURN TO CALLER 01183000
  1228. TESTOFF CLC 0(4,R1),=C'OFF ' IS IT OFF 01184000
  1229. BNE ERROR51 NO- ERROR GET OUT 01185000
  1230. MVI 0(R3),X'00' YES- INDICATE THAT THE FEATURE IS OFF 01186000
  1231. BR R4 RETURN TO CALLER 01187000
  1232. HEX BAL R14,HEXCONV CONVERT FROM HEX 01188000
  1233. STC R2,0(R3) MOVE IN BYTE 01189000
  1234. BR R4 RETURN TO CALLER 01190000
  1235. CLEARBUF EQU * @VA02180 01191000
  1236. STM R2,R5,REGSAVE SAVE THE REGS @VA02180 01192000
  1237. LR R2,R15 PUT BUFF. START ADDRESS IN R2 @VA02180 01193000
  1238. L R3,F4096 LOAD LENGTH OF BUFFER @VA02180 01194000
  1239. SLR R4,R4 DUMMY ADDRESS FOR MVCL @VA02180 01195000
  1240. SLR R5,R5 LENGTH AND PADDING @VA02180 01196000
  1241. MVCL R2,R4 CLEAR THE BUFFER @VA02180 01197000
  1242. LM R2,R5,REGSAVE RESTORE THE REGS @VA02180 01198000
  1243. BR R5 RETURN @VA02180 01199000
  1244. EJECT 01200000
  1245. ****************************************************************** 01201000
  1246. *. 01202000
  1247. * ACCOUNT CARD SCAN ROUTINE 01203000
  1248. * 01204000
  1249. * 1. IF THE LAST CARD WAS NOT A USER, OPTION OR 01205000
  1250. * IPL CARD GO TO ERROR52. 01206000
  1251. * 01207000
  1252. * 2. FILL IN THE ACCOUNT NUMBER AND DISTRIBUTION CODE. 01208000
  1253. * 01209000
  1254. * 3. GO TO READ AND GET THE NEXT CARD. 01210000
  1255. *. 01211000
  1256. ****************************************************************** 01212000
  1257. SCANACCO CLI LASTCARD,C'U' WAS THE LAST CARD A USER CARD 01213000
  1258. BE GETACCO 01214000
  1259. CLI LASTCARD,C'O' WAS THE LAST CARD AN OPTION CARD 01215000
  1260. BE GETACCO 01216000
  1261. CLI LASTCARD,C'I' WAS IT AN IPL CARD 01217000
  1262. BNE ERROR52 NO- ERROR 01218000
  1263. GETACCO BAL R14,SCANCARD GET ACCOUNT NUMBER 01219000
  1264. BC 4,READ ERROR IF NO INPUT 01220000
  1265. CL R2,=F'8' IS IT OVER 8 01221000
  1266. BH ERROR51 YES- ERROR 01222000
  1267. MVI UMACACCT,C' ' BLANK OUT FIELD BEFORE @VA08113 01223000
  1268. MVC UMACACCT+1(7),UMACACCT MOVE @VA08113 01224000
  1269. MOVE UMACACCT 01225000
  1270. BAL R14,SCANCARD GET DISTRIBUTION CODE 01226000
  1271. BC 4,READ NO INPUT GET OUT 01227000
  1272. CL R2,=F'8' IS IT OVER 8 01228000
  1273. BH ERROR51 YES- ERROR 01229000
  1274. MVI UMACDIST,C' ' BLANK OUT FIELD BEFORE @VA08113 01230000
  1275. MVC UMACDIST+1(7),UMACDIST MOVE @VA08113 01231000
  1276. MOVE UMACDIST 01232000
  1277. B READ GO GET THE NEXT CARD 01233000
  1278. EJECT 01234000
  1279. ****************************************************************** 01235000
  1280. *. 01236000
  1281. * OPTION CARD SCAN ROUTINE 01237000
  1282. * 01238000
  1283. * 1. IF THE LAST CARD WAS NOT A USER, ACCOUNT OR 01239000
  1284. * IPL CARD GO TO ERROR52. 01240000
  1285. * 01241000
  1286. * 2. FILL IN THE OPTIONS IN THE UMACBLOK. 01242000
  1287. * 01243000
  1288. * 3. GO TO READ TO READ IN THE NEXT CARD. 01244000
  1289. *. 01245000
  1290. ****************************************************************** 01246000
  1291. SCANOPTI CLI LASTCARD,C'U' WAS THE LAST CARD A USER CARD 01247000
  1292. BE OPT1 YES- GO 01248000
  1293. CLI LASTCARD,C'A' WAS THE LAST CARD AN ACCOUNT CARD 01249000
  1294. BE OPT1 01250000
  1295. CLI LASTCARD,C'I' WAS THE LAST CARD A IPL CARD 01251000
  1296. BE OPT1 YES, KEEP GOING @V407466 01252000
  1297. CLI LASTCARD,C'O' ANOTHER 'OPTION' CARD @V407466 01253000
  1298. BNE ERROR52 NO, ERROR @V407466 01254000
  1299. OPT1 BAL R14,SCANCARD GET OPTION 01255000
  1300. BC 4,READ NO INPUT GO TO READ NEXT CARD 01256000
  1301. COMP =C'REALTIMER ' * SET ON OPTION BIT 01257000
  1302. BNE OPT2 * SET OPTION BIT IF INPUT 01258000
  1303. OI UMACOPT,UMACRT * IS EQ TO KEYWORD. 01259000
  1304. B OPT1 * ERROR IF NOT EQ. 01260000
  1305. OPT2 COMP =C'ECMODE ' * 01261000
  1306. BNE OPT3 * 01262000
  1307. OI UMACOPT,UMACECOP * 01263000
  1308. B OPT1 * 01264000
  1309. OPT3 COMP =C'ISAM ' * 01265000
  1310. BNE OPT4 * 01266000
  1311. OI UMACOPT,UMACISAM * 01267000
  1312. B OPT1 * 01268000
  1313. OPT4 COMP =C'VIRT=REAL ' * 01269000
  1314. BNE OPT5 01270000
  1315. OI UMACOPT,UMACVROP * 01271000
  1316. B OPT1 * 01272000
  1317. OPT5 COMP =C'ACCT ' 01273000
  1318. BNE OPT6 @V201537 01274000
  1319. OI UMACOPT,UMACACC SET THE ACCOUNTING OPTION 01275000
  1320. B OPT1 01276000
  1321. OPT6 COMP =C'SVCOFF ' * @V407466 01277000
  1322. BNE OPT7 @VA01771 01278000
  1323. OI UMACOPT,UMACNSVC SET THE SVCOFF BIT @V201537 01279000
  1324. B OPT1 @V201537 01280000
  1325. OPT7 COMP =C'BMX ' BMX OPTION ? @V407466 01281000
  1326. BNE OPT8 NO BRANCH @V407466 01282000
  1327. OI UMACOPT,UMACBMX SET BLOCK MULTIPLEXER OPTION @VA01771 01283000
  1328. B OPT1 @VA01771 01284000
  1329. OPT8 COMP =C'CPUID' CPUID OPTION? @V407466 01285000
  1330. BNE OPT9 @V407546 01286000
  1331. BAL R14,SCANCARD GET CPUID SERIAL @V407466 01287000
  1332. BC 4,ERROR53 MISSING 'BBBBBB' FIELD @V407466 01288000
  1333. CL R2,=F'6' GREATER THAN 6 - ERROR @V407466 01289000
  1334. BH ERROR51 ERROR @V407466 01290000
  1335. BAL R14,HEXCONV CVT 'BBBBBB' FROM HEX TO BIN @V407466 01291000
  1336. STCM R2,B'0111',UMACPUID STORE CONVERTED CPUID @V407466 01292000
  1337. OI UMACOPT2,UMACCPU TURN BIT ON IN UMACBLOK @V407466 01293000
  1338. B OPT1 GET NEXT INPUT CARD @V407466 01294000
  1339. OPT9 COMP =C'AFFINITY' @V407546 01295000
  1340. BNE OPT10 NO HRC011DK 01296490
  1341. BAL R14,SCANCARD GET AFFINITY CPU ADDRESS @V407546 01297000
  1342. BC 4,ERROR53 MISSING AFFINITY 'AA' @V407546 01298000
  1343. CL R2,=F'2' GREATER THAN 2 --ERROR @V407546 01299000
  1344. BH ERROR51 @V407546 01300000
  1345. BAL R14,BINCONV CVT 'AA' TO BINARY @V407546 01301000
  1346. CL R2,=F'63' GREATER THAN 63 --ERROR @V407546 01302000
  1347. BNH OPT9OK @V407546 01303000
  1348. LM R1,R2,SAVEREGS RESTORE POINTER AND LENGTH @V407546 01304000
  1349. B ERROR51 HANDLE ERROR @V407546 01305000
  1350. OPT9OK STC R2,UMACAFF STORE CPU ADDR IN UMACBLOK @V407546 01306000
  1351. OI UMACAFF,UMACFFON SET AFFINITY FLAG @V407546 01307000
  1352. B OPT1 GET NEXT OPTION @V407546 01308000
  1353. OPT10 COMP =C'LNKNOPAS ' HRC011DK 01308200
  1354. BNE OPT11 NO HRC068DK 01308410
  1355. OI UMACOPT2,UMADLNKN TURN BIT ON IN UMACBLOK HRC011DK 01308600
  1356. B OPT1 GET NEXT INPUT CARD HRC011DK 01308800
  1357. OPT11 COMP =C'STFIRST ' HRC068DK 01308900
  1358. BNE ERROR51 NO,INVALID KEYWORD HRC068DK 01308910
  1359. OI UMACOPT2,UMAST1ST TURN BIT ON IN UMACBLOK HRC068DK 01308920
  1360. B OPT1 GET NEXT INPUT CARD HRC068DK 01308930
  1361. EJECT 01309000
  1362. ****************************************************************** 01310000
  1363. *. 01311000
  1364. * IPL CARD SCAN ROUTINE 01312000
  1365. * 01313000
  1366. * 1. IF THE LAST WAS NOT A USER, ACCOUNT OR 01314000
  1367. * OPTION CARD GO TO ERROR52. 01315000
  1368. * 01316000
  1369. * 2. FILL IN THE UMACIPL FIELD IN THE UMACBLOK. 01317000
  1370. * 01318000
  1371. * 3. GO TO READ TO READ IN THE NEXT CARD. 01319000
  1372. *. 01320000
  1373. ****************************************************************** 01321000
  1374. SCANIPL CLI LASTCARD,C'U' WAS THE LAST CARD A USER CARD 01322000
  1375. BE GETNAME YES- BRANCH 01323000
  1376. CLI LASTCARD,C'A' WAS IT AN ACCO CARD 01324000
  1377. BE GETNAME YES- BRANCH 01325000
  1378. CLI LASTCARD,C'O' WAS IT AN OPTI CARD 01326000
  1379. BNE ERROR52 NO- ERROR 01327000
  1380. GETNAME BAL R14,SCANCARD GET IPL SYSTEM 01328000
  1381. BC 4,READ GET OUT IF NO INPUT 01329000
  1382. CL R2,=F'8' IS IT OVER 8 01330000
  1383. BH ERROR51 YES- ERROR 01331000
  1384. MOVE UMACIPL 01332000
  1385. B READ 01333000
  1386. SPACE 3 01334000
  1387. ****************************************************************** 01335000
  1388. *. 01336000
  1389. * CONSOLE CARD SCAN ROUTINE 01337000
  1390. * 01338000
  1391. * 1. SET UP VIRTUAL DEVICE ADDRESS. 01339000
  1392. * 01340000
  1393. * 2. FILL IN THE DEVICE CLASS FROM TABLE3. 01341000
  1394. * 01342000
  1395. * 3. SET UP THE SPOOL CLASS. 01343000
  1396. * 01344000
  1397. * 4. GO TO CHAINDEV IN SCANMDIS TO CHAIN IN THE UDEVBLOK. 01345000
  1398. *. 01346000
  1399. ****************************************************************** 01347000
  1400. SCANCONS MVI UDEVBLOK,X'0' * ZERO OUT BLOCK 01348000
  1401. MVC UDEVBLOK+1(UDEVSIZE*8-25),UDEVBLOK * 01349000
  1402. BAL R14,SCANCARD GET DEVICE ADD 01350000
  1403. BC 4,ERROR53 ERROR IF NO INPUT 01351000
  1404. CL R2,=F'4' IS SIZE OVER 4 01352000
  1405. BH ERROR51 YES- ERROR 01353000
  1406. BAL R14,HEXCONV GET DEVICE ADD AND CONVERT IT TO DEC 01354000
  1407. STH R2,UDEVADD STORE DEVICE ADD 01355000
  1408. BAL R14,SCANCARD GET DEVICE TYPE 01356000
  1409. BC 4,ERROR53 ERROR IF NO INPUT 01357000
  1410. LA R4,TABLE3 POINT TO THE TABLE 01358000
  1411. BAL R14,SCANNAME SUBROUTINE WILL MOVE DEVICE TYPE X01359000
  1412. AND CLASS INTO UDEVTYPE AND UDEVTYPC 01360000
  1413. BC 4,CONCLASS BRANCH IF INPUT WAS PRESCANED @V200930 01361000
  1414. BAL R14,SCANCARD GET OUTPUT CLASS @V200930 01362000
  1415. BC 4,DEFAULT9 DEFAULT TO T IF NO INPUT @V200930 01363000
  1416. CONCLASS CL R2,=F'1' IS COUNT EQ 1 @V200930 01364000
  1417. BNE ERROR51 NO - ERROR @V200930 01365000
  1418. MVC UDEVCLAS(1),0(R1) MOVE IN SPOOL CLASS @V200930 01366000
  1419. B CHAINDEV @V200930 01367000
  1420. DEFAULT9 MVI UDEVCLAS,C'T' DEFAULT TO CLASS T @V200930 01368000
  1421. B CHAINDEV 01369000
  1422. SPACE 3 01370000
  1423. ****************************************************************** 01371000
  1424. *. 01372000
  1425. * MDISK CARD SCAN ROUTINE 01373000
  1426. * 01374000
  1427. * 1. SET UP THE VIRTUAL DEVICE ADDRESS. 01375000
  1428. * 01376000
  1429. * 2. FILL IN THE DEVICE CLASS FROM TABLE4. 01377000
  1430. * 01378000
  1431. * 3. IF THIS IS A T-DISK TURN ON THE T-DISK FLAG, 01379000
  1432. * ELSE TURN ON THE LONG BLOCK FLAG AND FILL IN THE 01380000
  1433. * CYLINDER RELOCATION. 01381000
  1434. * 01382000
  1435. * 5. FILL IN THE CYLINDER SIZE, IF T-DISK GO TO 01383000
  1436. * CHAINDEV IN STEP 7. 01384000
  1437. * 01385000
  1438. * 6. FILL IN VOL SER NO, MODE AND PASSWORDS. 01386000
  1439. * 01387000
  1440. * CHAINDEV & CHAINCU - COMMON SUBROUTINE 01388000
  1441. * 01389000
  1442. * 7. IF DEVICE(S) IS(ARE) DEFINED TWICE GO TO ERROR58. 01390000
  1443. * 01391000
  1444. * 8. MASK OFF THE UDEVBLOK. 01392000
  1445. * 01393000
  1446. * 9. IF THE BUFFER IS FULL AND THE UDEV BUFFER IS NOT 01394000
  1447. * USED, GO TO STEP 10. ELSE WRITE OUT THE UDEV BUFFER. 01395000
  1448. * 01396000
  1449. * 10. GET A DASD ADDRESS FOR THE UDEV BUFFER. 01397000
  1450. * 01398000
  1451. * 11. UPDATE POINTERS TO THE NEXT UDEVBLOK AND GOTO READ. 01399000
  1452. *. 01400000
  1453. ***************************************************************** 01401000
  1454. SCANMDIS MVI UDEVBLOK,X'0' * ZERO OUT BLOCK 01402000
  1455. MVC UDEVBLOK+1(UDEVSIZE*8-1),UDEVBLOK * 01403000
  1456. MVI UDEVVSER,C' ' * BLANK IT 01404000
  1457. MVC UDEVVSER+1(29),UDEVVSER * 01405000
  1458. SR R0,R0 01406000
  1459. BAL R14,SCANCARD GET DEVICE ADD 01407000
  1460. BC 4,ERROR53 ERROR IF NO INPUT 01408000
  1461. CL R2,=F'4' IS SIZE OVER 4 01409000
  1462. BH ERROR51 YES- ERROR 01410000
  1463. BAL R14,HEXCONV GET DEVICE ADD AND CONVERT IT TO DEC 01411000
  1464. STH R2,UDEVADD STORE DEVICE ADD 01412000
  1465. BAL R14,SCANCARD GET DEVICE TYPE 01413000
  1466. BC 4,ERROR53 ERROR IF NO INPUT 01414000
  1467. LA R4,TABLE4 POINT TO THE TABLE 01415000
  1468. BAL R14,SCANNAME SUBROUTINE WILL MOVE DEVICE TYPE X01416000
  1469. AND CLASS INTO UDEVTYPE AND UDEVTYPC 01417000
  1470. BC 4,TESTCYLR BRANCH IF INPUT CARD WAS PRESCANED 01418000
  1471. BAL R14,SCANCARD 01419000
  1472. BC 4,ERROR53 BUILD SHORT UDIRBLOK IF LAST INPUT LINE 01420000
  1473. TESTCYLR COMP =C'T-DISK' IS IT THE KEYWORD T-DISK 01421000
  1474. BNE LONG NO- BRANCH 01422000
  1475. MVI UDEVSTAT,UDEVTDSK INDICATE THIS IS A T-DISK 01423000
  1476. B GETCYLNO 01424000
  1477. LONG MVI UDEVSTAT,UDEVLONG INDICATE THIS IS A LONG BLOCK 01425000
  1478. CL R2,=F'4' IS IT OVER 4 DIGITS? HRC011DK 01426270
  1479. BH ERROR51 YES- ERROR 01427000
  1480. SAVESTRT DS 0H HRC011DK 01427500
  1481. BAL R14,BINCONV CONVERT TO BINARY 01428000
  1482. STH R2,UDEVRELN SET IN CYL RELOCATION 01429000
  1483. GETCYLNO BAL R14,SCANCARD GET SIZE OF DISK 01430000
  1484. BC 4,ERROR53 ERROR IF NO INPUT 01431000
  1485. CL R2,=F'4' IS IT OVER 4 DIGITS? HRC011DK 01432270
  1486. BH ERROR51 YES- ERROR 01433000
  1487. SAVESIZE DS 0H HRC011DK 01433500
  1488. BAL R14,BINCONV * CONVERT TO BINARY 01434000
  1489. STH R2,UDEVNCYL * 01435000
  1490. LTR R2,R2 IS IT 0 CYLINDERS? @VA12689 01435030
  1491. BNZ NOTZERO NO-CONTINUE @VA12689 01435060
  1492. L R2,SAVEREGS+4 RESTORE LENGTH @VA12689 01435090
  1493. B ERROR51 AND PRINT ERROR MESSAGE @VA12689 01435120
  1494. NOTZERO EQU * @VA12689 01435150
  1495. TM UDEVSTAT,UDEVTDSK IS THIS A T-DISK 01436000
  1496. BO CHAINDEV YES- EXIT 01437000
  1497. BAL R14,SCANCARD 01438000
  1498. BC 4,ERROR53 ERROR IF NO INPUT 01439000
  1499. CL R2,=F'6' 01440000
  1500. BH ERROR51 NO- ERROR 01441000
  1501. MOVE UDEVVSER SET UP VOL SER NO 01442000
  1502. BAL R14,SCANCARD GET FILE MODE 01443000
  1503. BC 4,DEFAULT5 DEFAULT IF NO MODE 01444000
  1504. BAL R5,MODESCAN GO FILL IN THE MODE 01445000
  1505. B GETPASS 01446000
  1506. DEFAULT5 OI UDEVMODE,UDEVW INDICATE DISK IS TO BE IN WRITE MODE 01447000
  1507. GETPASS LA R4,SCANPASS * LINK TO PASSWORD SUBROUTINE 01448000
  1508. BALR R3,R4 * AND MOVE IT TO THE UDEVBLOK 01449000
  1509. MOVE UDEVPASR * 01450000
  1510. OI UDEVMODE,UDEVLR * 01451000
  1511. BALR R3,R4 * 01452000
  1512. MOVE UDEVPASW * 01453000
  1513. OI UDEVMODE,UDEVLW * 01454000
  1514. BALR R3,R4 * 01455000
  1515. MOVE UDEVPASM * 01456000
  1516. OI UDEVMODE,UDEVLM * 01457000
  1517. B BLANKALL GO MASK THE PASSWORDS 01458000
  1518. SCANPASS BAL R14,SCANCARD 01459000
  1519. BC 4,BLANKALL EXIT IF NO INPUT 01460000
  1520. CL R2,=F'8' IS IT OVER 8 01461000
  1521. BH ERROR51 YES- ERROR 01462000
  1522. BR R3 RETURN TO CALLER 01463000
  1523. BLANKALL XC UDEVPASR,MASK * MASK THE PASSWORD 01464000
  1524. XC UDEVPASW,MASK * 01465000
  1525. XC UDEVPASM,MASK * 01466000
  1526. CHAINDEV SR R0,R0 * SET UP THE DEVICE 01467000
  1527. BCTR R0,0 * COMPARE MASK. 01468000
  1528. CHAINCU DS 0H THE CONTROL UNIT MASK WILL BE SET UP BY *01469000
  1529. THE CALLING ROUTINE. 01470000
  1530. LH R1,UDEVADD * CHECK TO SEE IF THIS 01471000
  1531. LH R2,UMACDISP * UNIT WAS DEFINED. IF 01472000
  1532. LR R3,RMACBUF * DEFINED THEN GO TO 01473000
  1533. SCAN LTR R2,R2 * THE ERROR ROUTINE. 01474000
  1534. BNZ COMPUADD * 01475000
  1535. CR R3,RDEVBUF * 01476000
  1536. BE SKIPLOOP * 01477000
  1537. LR R3,RDEVBUF * NOTE: IF THE NUMBER 01478000
  1538. COMPUADD AR R2,R3 * OF UDEVBLOK'S EXCEEDS 01479000
  1539. LH R4,UDEVADD-UDEVBLOK(R2) * THE CAPACITY OF THE 01480000
  1540. NR R4,R0 * RDEVBUF, CHECKING 01481000
  1541. CLR R1,R4 * WILL BE TERMINATED. 01482000
  1542. BE TESTSAME * BUFFERS WRITTEN OUT 01483000
  1543. LH R2,UDEVDISP-UDEVBLOK(R2) * ONTO THE DISK WILL 01484000
  1544. B SCAN * NOT BE CHECKED. 01485000
  1545. TESTSAME CLR R2,RDEV * (OVER 90 UDEVBLOK'S) 01486000
  1546. BNE ERROR58 * 01487000
  1547. SKIPLOOP SR R0,R0 ZERO REG 0 TO USE LATER 01488000
  1548. LA R5,UDEVSIZE*8-24(,RDEV) * POINT TO NEXT UDEVBLOK 01489000
  1549. TM UDEVSTAT,UDEVLONG * 01490000
  1550. BZ SETPOINT 01491000
  1551. LA R5,UDEVSIZE*8(,RDEV) * 01492000
  1552. SETPOINT XC UDEVBLOK+8(8),MASK * MASK THE BLOCK 01493000
  1553. XC UDEVBLOK+16(8),MASK * 01494000
  1554. LR R4,RDEVBUF * SET POINTERS TO THE BUFFER THE 01495000
  1555. L R2,UDEVPAGE * UDEVBLOK IS IN. POINT TO RDEVBUF 01496000
  1556. LTR R2,R2 * IF THE BUFFER WAS USED OR RMACBUF 01497000
  1557. BNZ SETDISP * IF RDEVBUF WAS NOT USED. 01498000
  1558. LR R4,RMACBUF * 01499000
  1559. L R2,UMACPAGE *** 01500000
  1560. SETDISP LR R3,R5 * GET DISPLACEMANT OF NEXT UDEVBLOK 01501000
  1561. SR R3,R4 * 01502000
  1562. CLI NEXTCARD,C'U' IS THE NEXT CARD A USER CARD 01503000
  1563. BE LASTDEV YES- BRANCH 01504000
  1564. STH R3,UDEVDISP SET UP DASP OF NEXT BLOCK 01505000
  1565. ST R2,UDEVDASD SET UP DASD ADD OF PAGE 01506000
  1566. B UPDATECT 01507000
  1567. LASTDEV STH R0,UDEVDISP ZERO OUT DISP 01508000
  1568. ST R0,UDEVDASD ZERO OUT DASD ADD 01509000
  1569. UPDATECT LH R1,UMACDVCT * UPDATE DEVICE COUNT IN UMACBLOK 01510000
  1570. LA R1,1(,R1) * 01511000
  1571. STH R1,UMACDVCT * 01512000
  1572. LA R1,4096-(UDEVSIZE*8)+24 * POINT TO END OF BUFFER 01513000
  1573. CLI NEXTCARD,C'M' * 01514000
  1574. BNE TESTBUF * 01515000
  1575. LA R1,4096-UDEVSIZE*8 * 01516000
  1576. TESTBUF CLR R3,R1 IS THE BUFFER FULL 01517000
  1577. BNH UPDATE NO- BRANCH 01518000
  1578. BAL R14,GETPAGE 01519000
  1579. CLI NEXTCARD,C'U' IS THE NEXT CARD A USER CARD 01520000
  1580. BE TESTBUFF YES- BRANCH 01521000
  1581. STH R0,UDEVDISP SET UP NEW DISP 01522000
  1582. ST R2,UDEVDASD SET UP NEW DASD ADD OF BUFFER 01523000
  1583. TESTBUFF L R1,UDEVPAGE * REVERSE POINTERS AND TEST TO SEE 01524000
  1584. ST R2,UDEVPAGE * IF UDEVBUF WAS USED. IF NOT USED 01525000
  1585. LTR R2,R1 * DO NOT WRITE BUFFER OUT. 01526000
  1586. BZ POINTDEV * 01527000
  1587. LR R1,RDEVBUF POINT AT BUFFER TO WRITE OUT 01528000
  1588. BAL R14,WRITE WRITE OUT FULL RDEVBUF 01529000
  1589. POINTDEV LR R5,RDEVBUF UPDATE POINTER TO NEXT UDEVBLOK 01530000
  1590. UPDATE LR RDEV,R5 POINT TO NEXT UDEVBLOK 01531000
  1591. B READ 01532000
  1592. SPACE 3 01533000
  1593. ******************************************************************* 01534000
  1594. *. 01535000
  1595. * SPOOL CARD SCAN ROUTINE 01536000
  1596. * 01537000
  1597. * 1. SET UP THE VIRTUAL DEVICE ADDRESS. 01538000
  1598. * 01539000
  1599. * 2. SCAN TABLE5 TO FILL IN THE DEVICE CLASS. 01540000
  1600. * 01541000
  1601. * 3. SET UP THE SPOOL CLASS. 01542000
  1602. * 01543000
  1603. * 4. GO TO CHAINDEV IN SCANMDIS TO CHAIN IN THE UDEVBLOK. 01544000
  1604. *. 01545000
  1605. ****************************************************************** 01546000
  1606. SCANSPOO MVI UDEVBLOK,X'00' SET UP TO ZERO BLOCK 01547000
  1607. MVC UDEVBLOK+1(UDEVSIZE*8-25),UDEVBLOK ZERO IT 01548000
  1608. MVI UDEVSTAT,UDEVSPOO TURN ON SPOOL BIT 01549000
  1609. BAL R14,SCANCARD GET DEVICE ADDRESS 01550000
  1610. BC 4,ERROR53 ERROR IF NO INPUT 01551000
  1611. CL R2,=F'3' IS SIZE OVER 3 01552000
  1612. BH ERROR51 YES- ERROR 01553000
  1613. BAL R14,HEXCONV 01554000
  1614. STH R2,UDEVADD STORE DEVICE ADD 01555000
  1615. BAL R14,SCANCARD GET DEVICE TYPE 01556000
  1616. BC 4,ERROR53 ERROR IF NO INPUT 01557000
  1617. LA R4,TABLE5 POINT TO THE TABLE 01558000
  1618. BAL R14,SCANNAME GET OUTPUT CLASS AND TYPE 01559000
  1619. BC 4,TESTCLAS BRANCH IF INPUT WAS PRESCANED 01560000
  1620. BAL R14,SCANCARD GET OUTPUT CLASS 01561000
  1621. BC 4,DEFAULT8 DEFAULT TO A IF NO INPUT 01562000
  1622. TESTCLAS CL R2,=F'1' IS COUNT EQ 1 01563000
  1623. BNE ERROR51 NO- ERROR 01564000
  1624. MVC UDEVCLAS(1),0(R1) MOVE IN SPOOL CLASS 01565000
  1625. B CHAINDEV 01566000
  1626. DEFAULT8 DS 0H @VA09980 01567000
  1627. CLI UDEVTYPC,CLASURI TEST FOR INPUT @VA09980 01567100
  1628. BE DEFAUL14 GO TO INPUT DEFAULT @VA09980 01567200
  1629. MVI UDEVCLAS,C'A' DEFAULT TO CLASS A @VA09980 01567300
  1630. B CHAINDEV @VA09980 01567400
  1631. DEFAUL14 DS 0H @VA09980 01567500
  1632. MVI UDEVCLAS,C'*' DEFAULT TO CLASS * @VA09980 01567600
  1633. B CHAINDEV 01568000
  1634. EJECT 01569000
  1635. ****************************************************************** 01570000
  1636. *. 01571000
  1637. * DEDICATE CARD SCAN ROUTINE 01572000
  1638. * 01573000
  1639. * 1. TURN ON THE DEDICATE BIT AND SET UP THE VIRTUAL 01574000
  1640. * DEVICE ADDRESS. 01575000
  1641. * 01576000
  1642. * 2. SET UP THE VIRTUAL DEVICE ADDRESS OR MOVE IN THE 01577000
  1643. * DASD VOL SER NO. 01578000
  1644. * 01579000
  1645. * 3. GO TO CHAINDEV IN SCANMDIS TO CHAIN IN THE UDEVBLOK. 01580000
  1646. *. 01581000
  1647. ******************************************************************* 01582000
  1648. SCANDEDI MVI UDEVBLOK,X'00' SET UP TO ZERO UDEVBLOK 01583000
  1649. MVC UDEVBLOK+1(UDEVSIZE*8-25),UDEVBLOK DO IT 01584000
  1650. MVI UDEVVSER,C' ' * BLANK OUT BLOCK 01585000
  1651. MVC UDEVVSER+1(5),UDEVVSER * 01586000
  1652. MVI UDEVSTAT,UDEVDED TURN ON DEDICATE BIT 01587000
  1653. MVI UDEVLINK,UDEVNORA INITIALIZE TO 8000 @VA11411 01587010
  1654. BAL R14,SCANCARD GET DEVICE ADD 01588000
  1655. BC 4,ERROR53 ERROR IF NO INPUT 01589000
  1656. CL R2,=F'3' IS SIZE OVER 3 01590000
  1657. BH ERROR51 YES- ERROR 01591000
  1658. BAL R14,HEXCONV CONVERT FROM HEX 01592000
  1659. STH R2,UDEVADD STORE DEVICE ADD 01593000
  1660. BAL R14,SCANCARD GET REAL DEVICE ADD OR VOL SER NO 01594000
  1661. BC 4,ERROR53 ERROR IF NO INPUT 01595000
  1662. CL R2,=F'3' IS IT A VOLUME SERIAL NUMBER 01596000
  1663. BNH TESTRDEV NO- BRANCH 01597000
  1664. CLC VOLID,0(R1) 'VOLID' SPECIFIED @VA11371 01598010
  1665. BNE SKIPVS1 NO SKIP GOING TO NEXT PARM @VA11371 01598020
  1666. BAL R14,SCANCARD YES- GO GET THE VOLID 01600000
  1667. SKIPVS1 DS 0H @VA11371 01600010
  1668. CL R2,=F'6' TOO BIG 01601000
  1669. BH ERROR51 YES- ERROR 01602000
  1670. MOVE UDEVVSER 01603000
  1671. B TEST333V CHECK FOR STATUS DESIRED @V60B6B8 01604000
  1672. TESTRDEV BAL R14,HEXCONV GET DEVICE ADD AND ALINE IT IN R2 01605000
  1673. STH R2,UDEVLINK STORE LINK DEVICE ADDRESS 01606000
  1674. B TESTVOL1 GO TEST FOR VOLSER @V60B6B8 01607000
  1675. TESTREAD BAL R14,SCANCARD LOOK FOR ANOTHER PARM @VA02483 01608000
  1676. CL R2,=F'1' IS THERE ONE? @VA02483 01609000
  1677. BL WRTSTAT NO, DEFAULT IS WRITE STATUS @VA02483 01610000
  1678. TESTRO EQU * TEST FOR 'R/O' PARAMETER @V60B6B8 01611000
  1679. CLC RONLY,0(R1) WAS 'R/O' SPECIFIED @VA11371 01612010
  1680. BE CHAINDEV YES, DON'T SET WRITE STATUS @VA02483 01613000
  1681. B ERROR51 ALL OTHERS ARE INVALID @VA02483 01614000
  1682. TESTVOL1 EQU * TEST FOR THE VOLSER PARAMETER @V60B6B8 01615000
  1683. * 01616000
  1684. * HAVE FOUND 'VADDR' AND 'RADDR' SO FAR. TEST 01617000
  1685. * TO SEE IF THERE IS ALSO A 'VOLSER'. 01618000
  1686. * 01619000
  1687. BAL R14,SCANCARD SCAN FOR THE NEXT PARAMETER @V60B6B8 01620000
  1688. CL R2,FONE IS THERE ANOTHER? @V60B6B8 01621000
  1689. BL WRTSTAT NO, SET DEFAULT ACCESS TYPE @V60B6B8 01622000
  1690. CLC VIRTC,0(R1) WAS '3330V' SPECIFIED @VA11371 01623010
  1691. BE SETFTR YES, SET FEATURE=VIRTUAL @V60B6B8 01624000
  1692. CLC RONLY,0(R1) WAS R/O SPECIFIED @VA11371 01625010
  1693. BE CHAINDEV YES, DO NOT SET WRITE STATUS @V60B6B8 01626000
  1694. * 01627000
  1695. * THIS PARAMETER MUST BE A VOLUME SERIAL 01628000
  1696. * 01629000
  1697. CLC VOLID,0(R1) WAS 'VOLID' SPECIFIED @VA11371 01630010
  1698. BNE SKIPVS2 NO SKIP SKIPPING TO NEXT PARM @VA11371 01630020
  1699. BAL R14,SCANCARD YES,GO GET THE VOLID @V60B6B8 01632000
  1700. SKIPVS2 DS 0H @VA11371 01632010
  1701. CL R2,FONE WAS THERE A PARAMETER? @V60B6B8 01633000
  1702. BL ERROR51 NO, ERROR @V60B6B8 01634000
  1703. CL R2,=F'6' TOO BIG? @V60B6B8 01635000
  1704. BH ERROR51 YES,ERROR @V60B6B8 01636000
  1705. MOVE UDEVVSER MOVE IN VOLID @V60B6B8 01637000
  1706. TEST333V EQU * SEE IF THE NEXT PARAMETER IS @V60B6B8 01638000
  1707. * '3330V' 01639000
  1708. BAL R14,SCANCARD GET NEXT PARAMETER @V60B6B8 01640000
  1709. CL R2,FONE WAS THERE ONE @V60B6B8 01641000
  1710. BL WRTSTAT NO, SET DEFAULT ACCESS TYPE @V60B6B8 01642000
  1711. CLC VIRTC,0(R1) WAS 3330V SPECIFIED @VA11371 01643010
  1712. BNE TESTRO NO, TEST FOR 'R/O' @V60B6B8 01644000
  1713. SETFTR EQU * SET FEATURE = FTRVIRT @V60B6B8 01645000
  1714. MVI UDEVFTR,VIRTUAL SET FEATURE CODE IN UDEVBLOK @V60B6B8 01646000
  1715. BAL R14,SCANCARD GET NEXT PARAMETER @V60B6B8 01647000
  1716. CL R2,FONE WAS THERE ONE? @V60B6B8 01648000
  1717. BL WRTSTAT NO, SET DEFAULT ACCESS TYPE @V60B6B8 01649000
  1718. B TESTRO NOW TEST FOR 'R/O' @V60B6B8 01650000
  1719. WRTSTAT OI UDEVMODE,UDEVW SET WRITE STATUS @VA02483 01651000
  1720. B CHAINDEV 01652000
  1721. EJECT 01653000
  1722. ****************************************************************** 01654000
  1723. *. 01655000
  1724. * LINK CARD SCAN ROUTINE 01656000
  1725. * 01657000
  1726. * 1. SET UP THE USERID, LINK DEVICE ADDRESS AND 01658000
  1727. * TURN ON THE LINK BIT. 01659000
  1728. * 01660000
  1729. * 2. SET UP THE VIRTUAL DEVICE ADDERSS AND MODE. 01661000
  1730. * 01662000
  1731. * 3. GO TO CHAINDEV IN SCANMDIS TO CHAIN IN THE UDEVBLOK. 01663000
  1732. *. 01664000
  1733. ****************************************************************** 01665000
  1734. SCANLINK MVI UDEVBLOK,X'00' SET UP TO ZERO BLOCK 01666000
  1735. MVC UDEVBLOK+1(UDEVSIZE*8-25),UDEVBLOK DO IT 01667000
  1736. MVI UDEVLKID,C' ' * BLANK BLOCK 01668000
  1737. MVC UDEVLKID+1(7),UDEVLKID * 01669000
  1738. MVI UDEVSTAT,UDEVLKDV TURN ON LINK DEVICE BIT 01670000
  1739. BAL R14,SCANCARD GET USER ID 01671000
  1740. BC 4,ERROR53 ERROR IF NO INPUT 01672000
  1741. CL R2,=F'8' IS IT OVER 8 01673000
  1742. BH ERROR51 YES- ERROR 01674000
  1743. MVI UDEVLKID,X'40' SET UP TO BLANK USER ID 01675000
  1744. MVC UDEVLKID+1(7),UDEVLKID BLANK OUT BLOCK 01676000
  1745. MOVE UDEVLKID 01677000
  1746. BAL R14,SCANCARD GET LINK DEVICE ADD 01678000
  1747. BC 4,ERROR53 ERROR IF NO INPUT 01679000
  1748. CL R2,=F'3' IS IT OVER 3 01680000
  1749. BH ERROR51 YES- ERROR 01681000
  1750. BAL R14,HEXCONV GET DEVICE ADD AND ALINE IT IN R2 01682000
  1751. STH R2,UDEVLINK STORE LINK DEVICE ADDRESS 01683000
  1752. BAL R14,SCANCARD GET DEVICE ADDRESS 01684000
  1753. BC 4,DEFAULT6 DEFAULT TO LINK DEVICE IF NO INPUT 01685000
  1754. CL R2,=F'3' IS IT OVER 3 01686000
  1755. BH ERROR51 YES- ERROR 01687000
  1756. BAL R14,HEXCONV CONVERT FROM HEX 01688000
  1757. STH R2,UDEVADD STORE DEVICE ADDRESS 01689000
  1758. BAL R14,SCANCARD GET FILE MODE 01690000
  1759. BC 4,DEFAULT7 DEFAVLT TO R IF NO INPUT 01691000
  1760. LA R5,CHAINDEV SET RETURN ADDRESS FOR MODESCAN 01692000
  1761. SPACE 2 01693000
  1762. MODESCAN BCTR R2,0 -1 01694000
  1763. LA R3,MODETABL POINT TO THE TABLE 01695000
  1764. LA R4,14 14 ENTRIES IN MODETABLE @V407466 01696000
  1765. LOOP12 EX R2,EXECOMP COMPARE THE TABLE ENTRY TO THE INPUT 01697000
  1766. BE MODEOK BRANCH IF IT IS EQ 01698000
  1767. LA R3,4(,R3) POINT TO NEXT ENTRY IN TABLE @V407466 01699000
  1768. BCT R4,LOOP12 DO IT UP TO 7 TIMES 01700000
  1769. LA R2,1(,R2) ADD ONE FOR THE ERROR MSG 01701000
  1770. B ERROR51 GO TYPE THE MSG 01702000
  1771. MODEOK OC UDEVMODE(1),3(R3) OR IN MODE @V407466 01703000
  1772. CH R4,=H'7' IF R4 < OR = 7 - VIRT. RES/REL. @V407466 01704000
  1773. BCR 2,R5 HIGH - NO VIRTUAL RES/REL @V407466 01705000
  1774. OI UDEVSTAT,UDEVVRR VIRTUAL RES/REL REQUESTED @V407466 01706000
  1775. BR R5 RETURN TO THE CALLER 01707000
  1776. DEFAULT6 MVC UDEVADD,UDEVLINK 01708000
  1777. DEFAULT7 OI UDEVMODE,UDEVR TURN ON READ BIT 01709000
  1778. B CHAINDEV 01710000
  1779. SPACE 3 01711000
  1780. ****************************************************************** 01712000
  1781. *. 01713000
  1782. * SPECIAL CARD SCAN ROUTINE 01714000
  1783. * 01715000
  1784. * 1. SET UP THE VIRTUAL DEVICE ADDRESS. 01716000
  1785. * 01717000
  1786. * 2. SCAN TABLE3 TO GET THE DEVICE CLASS. 01718000
  1787. * 01719000
  1788. * 3. GO TO CHAINDEV IN SCANMDIS TO CHAIN IN THE UDEVBLOK. 01720000
  1789. *. 01721000
  1790. ****************************************************************** 01722000
  1791. SCANSPEC MVI UDEVBLOK,X'0' * ZERO OUT BLOCK 01723000
  1792. MVC UDEVBLOK+1(UDEVSIZE*8-25),UDEVBLOK * 01724000
  1793. BAL R14,SCANCARD GET DEVICE ADD 01725000
  1794. BC 4,ERROR53 ERROR IF NO INPUT 01726000
  1795. CL R2,=F'3' IS SIZE OVER 3 01727000
  1796. BH ERROR51 YES- ERROR 01728000
  1797. STM R1,R2,CTCASAVE SAVE THE POINTER'S TO DEV ADD FOR CTCA 01729000
  1798. BAL R14,HEXCONV GET DEVICE ADD AND CONVERT IT TO DEC 01730000
  1799. STH R2,UDEVADD STORE DEVICE ADD 01731000
  1800. BAL R14,SCANCARD GET DEVICE TYPE 01732000
  1801. BC 4,ERROR53 ERROR IF NO INPUT 01733000
  1802. LA R4,TABLE2 POINT TO THE TABLE 01734000
  1803. BAL R14,SCANNAME SUBROUTINE WILL MOVE DEVICE TYPE X01735000
  1804. AND CLASS INTO UDEVTYPE AND UDEVTYPC 01736000
  1805. B CHAINDEV 01737000
  1806. SPACE 3 01738000
  1807. ********************************************************************** 01739000
  1808. *. 01740000
  1809. * CTCA DEVICE TYPE SCAN SUBROUTINE 01741000
  1810. * 01742000
  1811. * 1. FILL IN THE CLASS. 01743000
  1812. * 01744000
  1813. * 01745000
  1814. * 2. GOTO CHAINCU IN SCANMDIS TO CHAIN IN THE UDEVBLOK 01746000
  1815. *. 01747000
  1816. ********************************************************************** 01748000
  1817. SCANCTCA MVI UDEVTYPC,CLASSPEC SET UP THE DEVICE CLASS 01749000
  1818. MVI UDEVTYPE,TYPCTCA AND THE TYPE 01750000
  1819. LH R0,=X'FFF0' SET UP THE CONTROL UNIT MASK 01751000
  1820. B CHAINCU GO CHAIN IN THE CU; @VA03128 01752000
  1821. EJECT 01753000
  1822. ****************************************************************** 01754000
  1823. *. 01755000
  1824. * 2311 DEVICE TYPE SCAN SUBROUTINE 01756000
  1825. * 01757000
  1826. * 1. FILL IN THE CLASS. 01758000
  1827. * 01759000
  1828. * 2. RETURN CC = 1 IF NOT TOP OR BOTTOM. ELSE 01760000
  1829. * RETURN CC = 0. 01761000
  1830. *. 01762000
  1831. ****************************************************************** 01763000
  1832. SCAN2311 MVI UDEVTYPC,CLASDASD SET UP DASD CLASS 01764000
  1833. MVI UDEVTYPE,TYP2311 SET UP TYPE 01765000
  1834. BAL R14,SCANCARD 01766000
  1835. BC 4,ERROR53 ERROR IF NO INPUT 01767000
  1836. COMP =C'TOP ' IS IT TOP 01768000
  1837. BNE TESTBOT NO- BRANCH 01769000
  1838. MVI UDEVFTR,FTR2311T SET IN FEATURE 01770000
  1839. B RETURNC0 RETURN TO CALLER CC = 0 01771000
  1840. TESTBOT COMP =C'BOTTOM ' IS IT BOTTOM 01772000
  1841. BNE RETURNC1 NO- BRANCH 01773000
  1842. MVI UDEVFTR,FTR2311B SET IN FEATURE 01774000
  1843. RETURNC0 TM *,X'00' SET CC = 0, CARD IS NOT PRESCANER 01775000
  1844. L R14,SAVERET SET UP RETURN ADDRESS 01776000
  1845. BR R14 RETURN TO CALLER 01777000
  1846. RETURNC1 TM *,X'FF' SET CC = 1, CARD IS PRESCANED 01778000
  1847. L R14,SAVERET SET UP RETURN ADDRESS 01779000
  1848. BR R14 RETURN TO CALLER 01780000
  1849. EJECT 01781000
  1850. ***************************************************************** 01782000
  1851. *. 01783000
  1852. * 2540 DEVICE TYPE SCAN SUBROUTINE 01784000
  1853. * 01785000
  1854. * 1. SET UP DEVICE CLASS AND RETURN CC = 0. 01786000
  1855. *. 01787000
  1856. ***************************************************************** 01788000
  1857. SCAN2540 BAL R14,SCANCARD 01789000
  1858. BC 4,ERROR53 ERROR IF NO INPUT 01790000
  1859. COMP =C'READER ' IS IT READER 01791000
  1860. BNE TESTPUN NO- BRANCH 01792000
  1861. MVI UDEVTYPC,CLASURI SET UP CLASS 01793000
  1862. MVI UDEVTYPE,TYP2540R SET TO READER 01794000
  1863. B RETURNC0 RETURN TO CALLER 01795000
  1864. TESTPUN COMP =C'PUNCH ' IS IT PUNCH 01796000
  1865. BNE ERROR51 ERROR IF NOT READER OR PUNCH 01797000
  1866. MVI UDEVTYPC,CLASURO SET UP CLASS 01798000
  1867. MVI UDEVTYPE,TYP2540P SET IT TO PUNCH 01799000
  1868. B RETURNC0 RETURN TO CALLER 01800000
  1869. SPACE 3 01801000
  1870. ****************************************************************** 01802000
  1871. *. 01803000
  1872. * 2701 2702 2703 DEVICE TYPE SCAN SUBROUTINE 01804000
  1873. * 01805000
  1874. * 1. FILL IN THE DEVICE CLASS AND RETURN CC = 0. 01806000
  1875. *. 01807000
  1876. ****************************************************************** 01808000
  1877. SCAN2701 EQU * 01809000
  1878. SCAN2702 EQU * 01810000
  1879. SCAN2703 MVI UDEVTYPC,CLASTERM SET IN CLASS 01811000
  1880. BAL R14,SCANCARD 01812000
  1881. BC 4,ERROR53 ERROR IF NO INPUT 01813000
  1882. COMP =C'IBM ' IS IT IBM 01814000
  1883. BNE TESTTELE 01815000
  1884. MVI UDEVTYPE,TYPIBM1 SET TO IBM 01816000
  1885. B RETURNC0 RETURN TO CALLER 01817000
  1886. TESTTELE COMP =C'TELE ' IS IT TELE 01818000
  1887. BNE ERROR51 NO- ERROR 01819000
  1888. MVI UDEVTYPE,TYPTELE2 01820000
  1889. B RETURNC0 RETURN TO CALLER 01821000
  1890. EJECT 01822000
  1891. ****************************************************************** 01823000
  1892. *. 01824000
  1893. * START IO ROUTINE 01825000
  1894. * 01826000
  1895. * 1. IF RUNNING UNDER VM/370 GO TO STEP 10. 01827000
  1896. * 01828000
  1897. * 2. IF AN ERROR IS STACKED, UNSTACK IT AND GO TO 01829000
  1898. * STEP 5. 01830000
  1899. * 01831000
  1900. * 3. START THE DEVICE. 01832000
  1901. * 01833000
  1902. * 4. IF CHANNEL STATUS IS ZERO AND IF NO UC, UE OR 01834000
  1903. * ATTN IS IN THE UNIT STATUS GO TO STEP 7. 01835000
  1904. * 01836000
  1905. * 5. IF THIS IS THE DEVICE I STARTED GO TO DO A SENSE, 01837000
  1906. * ELSE STACK THE ERROR IN THE IOB. 01838000
  1907. * 01839000
  1908. * 6. GO TO THE ERROR ROUTINE IF PROVIDED, ELSE CHECK 01840000
  1909. * THE OPTION SWITCHES TO STOP, REPEAT OR RETURN. 01841000
  1910. * 01842000
  1911. * 7. IF THIS IS THE DEVICE I STARTED CONTINUE, ELSE WAIT 01843000
  1912. * FOR THE NEXT IO INTERRUPT. (RENTER AT STEP 4) 01844000
  1913. * 01845000
  1914. * 8. IF PROPER ENDING STATUS, CE AND/OR DE, RETURN TO 01846000
  1915. * CALLER. ELSE RETURN TO CALLER. 01847000
  1916. * 01848000
  1917. * 9. IF THIS IS A DASD DEVICE CONTINUE, ELSE GO TO 01849000
  1918. * STEP 2. 01850000
  1919. * 01851000
  1920. * 10. DO A DIAGNOSE CALL TO VM/370 AND LET CP DO THE 01852000
  1921. * 01853000
  1922. * 11. IF ERROR GO TO THE ERROR ROUTINE, ELSE RETURN 01854000
  1923. * TO THE CALLER. 01855000
  1924. *. 01856000
  1925. ****************************************************************** 01857000
  1926. STARTIO ST R2,IOBCCW SAVE POINTER TO THE CCWS @V56BDA8 01858000
  1927. RETRYIO L R3,IOB GET FIRST WORD OF IOB @V56BDA8 01859000
  1928. RESTART CLI CPUID,X'FF' IS THIS A VIRTUAL MACHINE ? 01860000
  1929. BE DIAGNOSE YES, LET CP DO THE WORK 01861000
  1930. RETSIO TM IOBSTAT,IOBSTACK IS AN IO ERROR STACKED FOR THIS UNIT 01862000
  1931. BO UNSTACK YES- BRANCH TO UNSTACK IT 01863000
  1932. ST R2,CAW SET UP CAW 01864000
  1933. XC CSW,CSW ZERO THE CSW 01865000
  1934. SIO 0(R3) 01866000
  1935. BC 4,CSWSTORE GO AND TEST STATUS 01867000
  1936. BC 2,IOWAIT GO AND WAIT FOR AN IO INTERRUPT 01868000
  1937. BC 1,NOTOPER GO TO THE NOT OPER ERROR ROUTINE 01869000
  1938. LA R3,0(,R3) INDICATE IO STARTED 01870000
  1939. IOWAIT LPSW IOWPSW INABLE IO INTERRUPTIONS 01871000
  1940. IOINT MVI IOOLD,X'01' TURN OFF ALL BUT EXTERNAL INTERRUPT 01872000
  1941. NI IOOLD+1,X'FD' TURN OFF WAIT BIT 01873000
  1942. LPSW IOOLD LOAD IO OLD PSW 01874000
  1943. CSWSTORE EQU * 01875000
  1944. TM CSW+4,BUSY IS THE UNIT BUSY 01876000
  1945. BZ LOOKATCE NO- GO LOOK AT CE 01877000
  1946. TM CSW+4,DE+ATTN+CUE+CE IS THIS ENDING STATUS 01878000
  1947. BNZ STUADD YES- BRANCH 01879000
  1948. LPSW IOWPSW WAIT FOR ENDING STATUS 01880000
  1949. LOOKATCE TM CSW+4,CE IS THIS CHANNEL END 01881000
  1950. BZ STUADD NO- BRANCH 01882000
  1951. LA R3,0(,R3) INDICATE IO STARTED 01883000
  1952. LA R4,8(,R2) POINT TO THE FIRST CCW + 8 01884000
  1953. ST R4,CSW AND SAVE IT IN THE CSW 01885000
  1954. STUADD STH R3,IOOLD+2 POINT TO THE INTERRUPTING DEVICE 01886000
  1955. TESTSTAT TM CSW+5,X'FF' TEST ALL CHANNEL STATUS. IS IT ZERO? 01887000
  1956. BNZ IOERROR NO- ERROR 01888000
  1957. TM CSW+4,UC+UE+ATTN TEST UNIT STATUS, IS IT BAD? 01889000
  1958. BNZ IOERROR YES- ERROR 01890000
  1959. TESTDEV LR R4,R3 GET THE ADDRESS OF THE DEVICE WAITING FOR 01891000
  1960. TM CSW+4,X'20' IS THIS A CU END INT 01892000
  1961. BZ TESTADD NO- GO TEST THE ADD 01893000
  1962. LTR R3,R3 WAS THE UNIT STARTED @VA01134 01894000
  1963. BM RESTART NO-RESTART @VA01134 01895000
  1964. B IOWAIT GO WAIT FOR NEXT INTERRUPT @VA01134 01896000
  1965. TESTADD CLM R4,3,IOOLD+2 IS THIS THE DEVICE WAITING FOR 01897000
  1966. BNE IOWAIT NO- GO WAIT FOR THE NEXT INT 01898000
  1967. LTR R3,R3 WAS THE UNIT STARTED 01899000
  1968. BM RESTART NO- RESTART THE UNIT 01900000
  1969. TM IOBOPT,IOBDEW MUST I WAIT FOR DEVICE END 01901000
  1970. BZ TESTCE NO- BRANCH 01902000
  1971. TM CSW+4,DE IS IT DEVICE END 01903000
  1972. BCR 1,R5 YES- RETURN TO CALLER 01904000
  1973. LPSW IOWPSW WAIT FOR THE NEXT IO INTERRUPT 01905000
  1974. TESTCE TM CSW+4,CE+DE IS IT CHANEL END OR DEVICE END 01906000
  1975. BCR 7,R5 YES- RETURN 01907000
  1976. LPSW IOWPSW WAIT 01908000
  1977. IOERROR CLC IOBUADD,IOOLD+2 IS THIS THE DEVICE I AM WORKING WITH 01909000
  1978. BNE STACK NO- BRANCH TO STACK THE IO ERROR 01910000
  1979. MVC IOBCSW(8),CSW MOVE IN CSW 01911000
  1980. UNSTACK NI IOBSTAT,255-IOBSTACK TURN IOBSTACK BIT OFF 01912000
  1981. LA R4,SENSECCW POINT TO SENSE CCW 01913000
  1982. ST R4,CAW SET UP CAW 01914000
  1983. XC SENSE,SENSE ZERO OUT SENSE 01915000
  1984. SIO 0(R3) DO A SENSE 01916000
  1985. TIO TIO 0(R3) CLEAR ANY INTERRUPT 01917000
  1986. BC 2,TIO LOOP IF CHANNEL IS BUSY 01918000
  1987. LA R4,32 CAL THE NUMBER OF SENSE BYTES HRC011DK 01919490
  1988. SH R4,CSW+6 .. @V2B3729 01920000
  1989. STC R4,SNSCNT .. @V2B3729 01921000
  1990. L R4,IOBERROR GET THE ADDRESS OF THE ERROR ROUTINE 01922000
  1991. LTR R4,R4 DO I HAVE AN IO ERROR ROUTINE 01923000
  1992. BCR 7,R4 YES- GO TO IT 01924000
  1993. IORETURN TM IOBOPT,IOBEEXIT DO I REPEAT THE CCW STRING 01925000
  1994. BNO TESTSTOP NO- BRANCH 01926000
  1995. L R3,IOB SET UP TO REPEAT CCW STRING 01927000
  1996. TESTSTOP TM IOBOPT,IOBERST DO I STOP ON ERROR 01928000
  1997. BNO TESTST NO- BRANCH 01929000
  1998. LPSW IOWPSW 01930000
  1999. TESTST LTR R3,R3 IS DEVICE STARTED 01931000
  2000. BM RESTART NO- BRANCH TO START DEVICE 01932000
  2001. BR R5 RETURN TO CALLER 01933000
  2002. USING IOB,R4 01934000
  2003. STACK LA R4,READIOB 01935000
  2004. SCANIOBS CLC IOBUADD,IOOLD+2 IS THIS THE ERROR IOB 01936000
  2005. BNE UPDATE2 NO- BRANCH 01937000
  2006. MVC IOBCSW(8),CSW MOVE ERROR CSW INTO IOB 01938000
  2007. OI IOBSTAT,IOBSTACK TURN ON ERROR STACKED BIT 01939000
  2008. LPSW IOWPSW NOW WAIT FOR MY INTERRUP 01940000
  2009. UPDATE2 TM IOBSTAT,IOBLAST IS THIS THE LAST IOB 01941000
  2010. LA R4,IOBSIZE(,R4) POINT TO THE NEXT IOB. @V56BDA8 01942000
  2011. BNO SCANIOBS NO- BRANCH IF THIS IS NOT THE LAST IOB 01943000
  2012. LPSW IOWPSW INTERRUP WAS NOT FROM A UNIT I X01944000
  2013. STARTED SO IGNORE IT AND WAIT FOR MINE 01945000
  2014. DROP R4 01946000
  2015. USING IOB,R1 01947000
  2016. NOTOPER OI IOBSTAT,IOBNOPER TURN ON THE NOT OPER BIT 01948000
  2017. L R4,IOBERROR GET THE ADDRESS OF THE IO ERROR ROUTINE 01949000
  2018. LTR R4,R4 IS THERE AN ERROR ROUTINE 01950000
  2019. BCR 2,R4 YES- GO TO IT 01951000
  2020. B ERROR54 01952000
  2021. DIAGNOSE CL R1,=A(DASDIOB) IS THIS A START IO TO A DASD DEV 01953000
  2022. BNE RETSIO NO- RETURN TO SIO 01954000
  2023. SSM *+1 LOCK OUT CMS 01955000
  2024. DC X'83320020' DIAGNOSE CALL TO VM/370 01956000
  2025. BCR 8,R5 IF CC = 0 ALL OK (RETURN TO CALLER) 01957000
  2026. LA R3,0(,R3) INDICATE IO STARTED 01958000
  2027. CL R15,=F'1' IS THE RETURN CODE 1 01959000
  2028. BE NOTOPER YES- THE UNIT IS NOT OPERATIONAL 01960000
  2029. XC SENSE,SENSE CLEAN UP THE SENSE 01961000
  2030. MVC IOBCSW(8),CSW MOVE IN THE CSW 01962000
  2031. CL R15,=F'13' IS THE RETURN CODE 13 01963000
  2032. BNE RET NO- BRANCH 01964000
  2033. STH R2,SENSE SAVE THE SENSE 01965000
  2034. MVI SNSCNT,2 INDICATE 2 SENSE BYTES @V2B3729 01966000
  2035. L R2,IOBCCW REPOINT TO CCWS JUST IN CASE @V56BDA8 01967000
  2036. RET L R4,IOBERROR POINT TO THE ERROR ROUTINE 01968000
  2037. LTR R4,R4 DO I HAVE AN ERROR ROUTINE 01969000
  2038. BCR 2,R4 YES- GO TO IT 01970000
  2039. B IORETURN NO- RETURN TO IO RETURN 01971000
  2040. EJECT 01972000
  2041. ******************************************************************** 01973000
  2042. GRAPHID EQU * @V200731 01974000
  2043. TM PARM,PARMGRP IS THE GRAPHIC INDICATOR ACTIVE ?@V200731 01975000
  2044. BZ STARTIO NO, GO START THE I/O REQUEST @V200731 01976000
  2045. STM R14,R5,GRAPHSAV SAVE THE REGISTERS @V200731 01977000
  2046. LR R4,R2 GET THE ADDRESS OF THE CCW STRING@V200731 01978000
  2047. GETCCW EQU * @V200731 01979000
  2048. LH R3,6(R4) GET THE DATA COUNT FROM THE CCW @V200731 01980000
  2049. STM R3,R4,SAVEAREA SAVE THE DATA REGISTERS @V200731 01981000
  2050. NI PARM,X'FF'-(PARMREA+PARMNDA) CLEAR THE READ @V200731 01982000
  2051. * REQUEST 01983000
  2052. * AND NO DATA INDICATOR 01984000
  2053. LA R2,5 SET THE LOOP COUNT @V200731 01985000
  2054. LA R14,TABLGRAP GET THE ADDRESS OF THE COMMAND @V200731 01986000
  2055. * OP TABLE 01987000
  2056. ICM R5,1,0(R4) GET THE OP CODE @V200731 01988000
  2057. CCWEXEC EQU * @V200731 01989000
  2058. EX R5,CLIP TEST THE COMMAND OP CODE WITH @V200731 01990000
  2059. * TABLE CODE 01991000
  2060. BE GRAPHADD YES, FOUND THE COMMAND OP CODE @V200731 01992000
  2061. LA R14,4(R14) UPDATE THE ADDRESS IN THE TABLE @V200731 01993000
  2062. BCT R2,CCWEXEC GO TEST THE NEXT OP CODE @V200731 01994000
  2063. OI DIRFLAG,ERROR SET ERROR MESSAGE FLAG @V200731 01995000
  2064. B EXIT INVALID OP CODE - GO EXIT @V200731 01996000
  2065. CLIP CLI 0(R14),X'00' TEST THE OP CODE IN THE TABLE @V200731 01997000
  2066. GRAPHADD EQU * @V200731 01998000
  2067. ICM R2,7,1(R14) GET THE ADDRESS OF THE OP CODE @V200731 01999000
  2068. * ROUTINE 02000000
  2069. BR R2 GO TO THE ROUTINE @V200731 02001000
  2070. SPACE 2 02002000
  2071. READ66 EQU * @V200731 02003000
  2072. OI PARM,PARMREA+PARMATT INDICATE READ AND ATTENTION@V200731 02004000
  2073. * REQUESTS 02005000
  2074. LA R5,GRAPHIC0 RETURN ADDRESS FROM I/O HANDLER @V200731 02006000
  2075. XC BLNKLINE(140),BLNKLINE CLEAR THE READ AREA @VM08604 02007000
  2076. MVI IOBCSW+4,X'00' CLEAR THE CSW STATUS @V200731 02008000
  2077. XC RDMIDATA(6),RDMIDATA CLEAR THE READ DATA FIELD @V200731 02009000
  2078. MVC CPXYSTAT(20),REALABEL @V200731 02010000
  2079. LA R2,REQREAD GET THE ADDRESS OF THE CHANNEL @V200731 02011000
  2080. * PROGRAM 02012000
  2081. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 02013000
  2082. BZ STARTIO NO, GO ISSUE SIO @V200731 02014000
  2083. LA R2,REQREAD1 GET THE ADDRESS OF THE CHANNEL @V200731 02015000
  2084. * PROGRAM 02016000
  2085. B STARTIO GO TO THE I/O HANDLER @V200731 02017000
  2086. SPACE 2 02018000
  2087. WRT66 EQU * @V200731 02019000
  2088. MVC CPXYSTAT(20),RUNLABEL @V200731 02020000
  2089. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 02021000
  2090. BO YES3270 YES, GO TO 3270 SUPPORT @V200731 02022000
  2091. MVC WRT3066+1(3),1(R4) GET THE MESSAGE ADDRESS @V200731 02023000
  2092. STH R3,WRT3066+6 SAVE THE DATA COUNT IN THE CCW @V200731 02024000
  2093. LA R2,WRTCRTXY GET THE ADDRESS OF THE CHANNEL @V200731 02025000
  2094. * PROGRAM 02026000
  2095. TM PARM,PARMCLE IS THE ERASE INDICATOR ON ? @V200731 02027000
  2096. BZ GRAPWRT NO, GO TO SIO SECTION @V200731 02028000
  2097. LA R2,ERSE3066 GET THE ADDRESS OF THE CHANNEL @V200731 02029000
  2098. * PROGRAM 02030000
  2099. MVI SBADDR,X'00' CLEAR LINE POINTER @V200731 02031000
  2100. GRAPWRT EQU * @V200731 02032000
  2101. LA R5,GRAPHIC1 RETURN ADDRESS FROM I/O HANDLER @V200731 02033000
  2102. B STARTIO GO TO THE I/O HANDLER @V200731 02034000
  2103. YES3270 EQU * @V200731 02035000
  2104. SR R5,R5 CLEAR REGISTER 5 @V200731 02036000
  2105. LA R2,WRTCRT70 GET THE ADDRESS OF THE CHANNEL @V200731 02037000
  2106. * PROGRAM 02038000
  2107. TM PARM,PARMCLE IS THE ERASE INDICATOR ON ? @V200731 02039000
  2108. BZ NOCL3270 NO, DON'T CLEAR SCREEN @V200731 02040000
  2109. MVI SBADDR,X'00' CLEAR LINE POINTER @V200731 02041000
  2110. LA R2,ERSE3270 GET THE ADDRESS OF THE CHANNEL @V200731 02042000
  2111. * PROGRAM 02043000
  2112. NOCL3270 EQU * @V200731 02044000
  2113. IC R5,SBADDR GET THE CURRENT LINE POINTER @V200731 02045000
  2114. SLL R5,1 SETUP THE INDEX INTO THE TABLE @V200731 02046000
  2115. LH R5,TABLE70(R5) GET THE LINE ADDRESS @V200731 02047000
  2116. STCM R5,3,LAB3270+2 SAVE THE CURRENT LINE POINTER @V200731 02048000
  2117. MVC WRTCR70+1(3),1(R4) GET THE MESSAGE ADDRESS @V200731 02049000
  2118. STH R3,WRTCR70+6 SAVE THE BYTE COUNT IN THE CCW @V200731 02050000
  2119. B GRAPWRT GO GET THE RETURN ADDRESS @V200731 02051000
  2120. SPACE 2 02052000
  2121. GRAPHIC1 EQU * @V200731 02053000
  2122. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 02054000
  2123. NI PARM,X'FF'-PARMCLE CLEAR THE ERASE INDICATOR @V200731 02055000
  2124. SR R2,R2 CLEAR REGISTER 2 @V200731 02056000
  2125. IC R2,SBADDR GET THE Y COORDINATE @V200731 02057000
  2126. LA R2,1(R2) UPDATE THE Y COORDINATE @V200731 02058000
  2127. CH R3,=H'80' IS THE DATA COUNT LONGER THAN 1 @V200731 02059000
  2128. * LINE 02060000
  2129. BNH *+8 NO, GO SAVE Y COORDINATE @V200731 02061000
  2130. LA R2,1(R2) UPDATE THE Y COORDINATE AGAIN @V200731 02062000
  2131. STC R2,SBADDR SAVE THE Y COORDINATE @V200731 02063000
  2132. MH R2,=H'80' GET THE BYTE LENGTH @V200731 02064000
  2133. L R14,=F'2640' GET THE MAX. LENGTH @V200731 02065000
  2134. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 02066000
  2135. BZ TEST3066 NO, GO TEST FOR END OF CRT @V200731 02067000
  2136. L R14,MAXLEN GET THE MAX. LEN. FOR 3270/3278 @V60A6B6 02068000
  2137. TEST3066 EQU * @V200731 02069000
  2138. CR R2,R14 IS THE Y COORDINATE AT THE END @V200731 02070000
  2139. * OF THE 02071000
  2140. * CRT 02072000
  2141. BL RETWORD NO, CHECK FOR CMD CHAINING @VA08599 02073000
  2142. OI PARM,PARMATT SET THE ATTENTION REQUEST @V200731 02074000
  2143. MVI IOBCSW+4,X'00' CLEAR THE CSW STATUS @V200731 02075000
  2144. MVC CPXYSTAT(20),MORLABEL @V200731 02076000
  2145. LA R5,GRAPHIC3 RETURN ADDRESS FROM I/O HANDLER @V200731 02077000
  2146. LA R2,CRTWORD GET THE ADDRESS OF THE CHANNEL @V200731 02078000
  2147. * PROGRAM 02079000
  2148. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 02080000
  2149. BZ STARTIO NO, GO ISSUE SIO @V200731 02081000
  2150. LA R2,MORECCW1 GET THE ADDRESS OF THE CHANNEL @V200731 02082000
  2151. * PROGRAM 02083000
  2152. B STARTIO GO ISSUE SIO @V200731 02084000
  2153. GRAPHIC3 EQU * @V200731 02085000
  2154. TM IOBCSW+4,ATTN IS THE ATTENTION FLAG ACTIVE ? @V200731 02086000
  2155. BZ GRAPPSW NO, GO WAIT FOR AN ATTENTION @V200731 02087000
  2156. * INTERRUPT 02088000
  2157. NI PARM,X'FF'-PARMATT CLEAR THE ATTENTION INDICATOR@V200731 02089000
  2158. CANCEL1 EQU * @V200731 02090000
  2159. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 02091000
  2160. MVI SBADDR,X'00' SET THE Y COORDINATE TO ZERO @V200731 02092000
  2161. MVC CPXYSTAT(20),RUNLABEL CRT DISPLAY RUN STATUS @V200731 02093000
  2162. LA R2,CNCL3066 GET THE ADDRESS OF THE CHANNEL @V200731 02094000
  2163. * PROGRAM 02095000
  2164. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 02096000
  2165. BZ RETURNCN NO, GO GET RETURN ADDRESS @V200731 02097000
  2166. LA R2,CNCL3270 GET THE ADDRESS OF THE CHANNEL @V200731 02098000
  2167. * PROGRAM 02099000
  2168. RETURNCN EQU * @V200731 02100000
  2169. LA R5,READ66 GET THE ADDRESS OF THE READ @V200731 02101000
  2170. * SECTION 02102000
  2171. TM PARM,PARMREA IS THIS A READ REQUEST ? @V200731 02103000
  2172. BO STARTIO YES, GO TO THE I/O HANDLER @V200731 02104000
  2173. LA R5,RETWORD RETURN ADDRESS FROM I/O HANDLER @V200731 02105000
  2174. B STARTIO GO TO THE I/O HANDLER @V200731 02106000
  2175. SPACE 1 02107000
  2176. GRAPHIC0 EQU * @V200731 02108000
  2177. TM IOBCSW+4,ATTN IS THE ATTENTION FLAG ACTIVE ? @V200731 02109000
  2178. BO GRAPATTN YES, GO SETUP CCW FOR READ @V200731 02110000
  2179. * MANUAL INPUT 02111000
  2180. GRAPPSW EQU * @V200731 02112000
  2181. LPSW IOWPSW GO WAIT FOR INTERRUPT @V200731 02113000
  2182. SPACE 1 02114000
  2183. GRAPATTN EQU * @V200731 02115000
  2184. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 02116000
  2185. NI PARM,X'FF'-PARMATT CLEAR ATTENTION REQUEST @V200731 02117000
  2186. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 02118000
  2187. BO YES3270A YES, GO TO 3270 SUPPORT @V200731 02119000
  2188. STH R3,RD3066DA+6 STORE THE COUNT IN THE CCW @V200731 02120000
  2189. MVC RD3066DA+1(3),1(R4) MOVE THE ADDRESS OF THE READ@V200731 02121000
  2190. * BUFFER INTO THE CCW 02122000
  2191. LA R2,RDMI3066 GET THE ADDRESS OF THE CHANNEL @V200731 02123000
  2192. * PROGRAM 02124000
  2193. RETURNAD EQU * @V200731 02125000
  2194. LA R5,RET66MI RETURN ADDRESS FROM I/O HANDLER @V200731 02126000
  2195. B STARTIO GO TO THE I/O HANDLER @V200731 02127000
  2196. YES3270A EQU * @V200731 02128000
  2197. LA R14,6(R3) ADD 6 T0 THE TOTAL COUNT @V200731 02129000
  2198. STH R14,RD3270DA+6 STORE THE COUNT IN THE CCW @V200731 02130000
  2199. LA R14,BLNKLINE GET THE ADDRESS OF THE BUFFER @V200731 02131000
  2200. STCM R14,7,RD3270DA+1 MOVE THE ADDRESS OF THE READ @V200731 02132000
  2201. * BUFFER INTO THE CCW 02133000
  2202. LA R2,RDMI3270 GET THE ADDRESS OF THE CHANNEL @V200731 02134000
  2203. * PROGRAM 02135000
  2204. B RETURNAD GO GET THE RETURN ADDRESS @V200731 02136000
  2205. SPACE 2 02137000
  2206. RET66MI EQU * @V200731 02138000
  2207. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 02139000
  2208. MVC CPXYSTAT(20),RUNLABEL CRT DISPLAY RUN STATUS @V200731 02140000
  2209. LA R2,CRTWORD GET THE ADDRESS OF THE CHANNEL @V200731 02141000
  2210. * PROGRAM 02142000
  2211. LA R5,RETINPUT RETURN ADDRESS FROM I/O HANDLER @V200731 02143000
  2212. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 02144000
  2213. BO YES3270B YES, GO CHECK 3270 SUPPORT @V200731 02145000
  2214. TM RDMIDATA+2,X'40' DID THE OPERATOR HIT THE @V200731 02146000
  2215. * CANCEL KEY 02147000
  2216. BO CANCEL1 YES, GO CLEAR SCREEN @V200731 02148000
  2217. CLC RDMIDATA(2),SBAREAD DID THE CURSOR MOVE ? @V200731 02149000
  2218. BNE STARTIO YES, GO WRITE STATUS @V200731 02150000
  2219. OI PARM,PARMNDA SET INDICATOR FOR NO DATA @V200731 02151000
  2220. B STARTIO GO WRITE OUT STATUS @V200731 02152000
  2221. YES3270B EQU * @V200731 02153000
  2222. CLI BLNKLINE,X'6E' DID THE OPERATOR HIT THE CANCEL @V200731 02154000
  2223. * KEY 02155000
  2224. BE CANCEL1 YES, GO CLEAR SCREEN @V200731 02156000
  2225. CLI BLNKLINE,X'6D' DID THE OPERATOR HIT THE CLEAR @V200731 02157000
  2226. * KEY 02158000
  2227. BE CANCEL1 YES, GO CLEAR SCREEN @V200731 02159000
  2228. CLI BLNKLINE,X'6C' DID OPERATOR HIT PA1 KEY @V200731 02160000
  2229. BE CANCEL1 YES, GO CLEAR SCREEN @V200731 02161000
  2230. OI PARM,PARMNDA SET INDICATOR FOR NO DATA @V200731 02162000
  2231. CLI BLNKLINE,X'01' DID OPERATOR HIT TEST REQ. KEY @VM08604 02163000
  2232. BE ENT3270 YES, GO WRITE STATUS @VM08604 02164000
  2233. CLI BLNKLINE,X'E6' IS THIS THE CARD READER @VM08604 02165000
  2234. BE ENT3270 YES, GO WRITE STATUS @VM08604 02166000
  2235. CLC BLNKLINE+6,X'00' DATA IN INPUT AREA ? @VM08604 02167000
  2236. BNE DATA3270 YES, GO DISPLAY DATA @VM08604 02168000
  2237. CLC BLNKLINE+1(2),ADDR5 DID CURSOR MOVE @V60A6B6 02169000
  2238. BE ENT3270 NO, GO WRITE STATUS @V200731 02170000
  2239. DATA3270 EQU * @VM08604 02171000
  2240. NI PARM,X'FF'-PARMNDA SET INDICATOR FOR NO DATA @V200731 02172000
  2241. ICM R14,7,1(R4) GET ADDRESS OF USER'S BUFFER @V200731 02173000
  2242. BCTR R3,R0 SUBTRACT ONE FROM COUNT (EX @V200731 02174000
  2243. * INSTR.) 02175000
  2244. EX R3,MOV3270 MOVE DATA INTO USER'S BUFFER @V200731 02176000
  2245. LA R3,1(,R3) UPDATE THE DATA COUNT @VM08921 02177000
  2246. MOVEBLNK EQU * @VM08921 02178000
  2247. OI 0(R14),X'40' SET UP FOR UPPERCASE LETTER @VM08921 02179000
  2248. LA R14,1(,R14) UPDATE THE BUFFER ADDRESS BY ONE @VM08921 02180000
  2249. BCT R3,MOVEBLNK GO SET CHARACTERS TO UPPERCASE @VM08921 02181000
  2250. ENT3270 EQU * @V200731 02182000
  2251. LA R2,CRTWORD1 GET THE ADDRESS OF THE CHANNEL @V200731 02183000
  2252. * PROGRAM 02184000
  2253. B STARTIO GO ISSUE SIO @V200731 02185000
  2254. SPACE 2 02186000
  2255. ********************************************************************* 02187000
  2256. MOV3270 MVC 0(0,R14),BLNKLINE+6 MOVE THE DATA INTO THE @V200731 02188000
  2257. * USER'S BUFFER 02189000
  2258. ********************************************************************* 02190000
  2259. SPACE 2 02191000
  2260. RETINPUT EQU * @V200731 02192000
  2261. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 02193000
  2262. TM PARM,PARMNDA IS NO DATA INDICATED ? @V200731 02194000
  2263. BZ WRT66 NO, GO DISPLAY INPUT ON CRT @V200731 02195000
  2264. RETWORD EQU * @V200731 02196000
  2265. TM 4(R4),CC IS COMMAND CHAINING ON ? @V200731 02197000
  2266. LA R4,8(R4) UPDATE THE CCW ADDRESS TO NEXT @V200731 02198000
  2267. * CCW 02199000
  2268. BO GETCCW YES, GET DATA COUNT FROM CCW @V200731 02200000
  2269. LM R14,R5,GRAPHSAV GET CALLER'S REGISTERS @V200731 02201000
  2270. BR R5 RETURN TO CALLER @V200731 02202000
  2271. EJECT 02203000
  2272. ****************************************************************** 02204000
  2273. *. 02205000
  2274. * INPUT CARD READ ROUTINE 02206000
  2275. * 02207000
  2276. * 1. SET UP THE NEXT AND LAST CARD POINTERS. 02208000
  2277. * 02209000
  2278. * 2. IF UNDER CMS USE SVC 202 TO GET THE NEXT CARD, 02210000
  2279. * ELSE USE STARTIO TO READ IT IN. 02211000
  2280. * 02212000
  2281. * 3. IF AN * OR A BLANK CARD GO TO STEP 2. 02213000
  2282. * 02214000
  2283. * 4. IF NOT FIRST CARD, SET UP CURRENT CARD POINTER 02215000
  2284. * AND EXIT TO SCANNAME POINTING AT TABLE1. 02216000
  2285. * 02217000
  2286. * 5. IF FIRST CARD IS NOT A DIRECTORY CARD GO TO 02218000
  2287. * ERROR62. ELSE GO TO STEP 1 TO READ THE NEXT 02219000
  2288. * CARD. 02220000
  2289. *. 02221000
  2290. ****************************************************************** 02222000
  2291. READ LA R1,READIOB POINT TO THE INPUT IOB 02223000
  2292. MVC LASTCARD,CURRCARD SET UP LAST CARD POINTER @VA01066 02224000
  2293. MVC CURRCARD,NEXTCARD SET UP NEXT CARD POINTER 02225000
  2294. LM R2,R3,CURBUF * REVERSE POINTERS TO INPUT BUFFERS 02226000
  2295. XR R2,R3 * 02227000
  2296. XR R3,R2 * 02228000
  2297. XR R2,R3 * 02229000
  2298. STM R2,R3,CURBUF * 02230000
  2299. REREAD ST R3,CURPOINT POINT TO CURRANT CARD BUFFER 02231000
  2300. LA R4,71 SET UP INPUT COUNT 02232000
  2301. STH R4,CURCOUNT STORE COUNT 02233000
  2302. STCM R3,7,READCCW+1 POINT TO THE BUFFER 02234000
  2303. LA R2,READCCW POINT TO THE CCW 02235000
  2304. TM DIRFLAG,READEOF HIT EOF YET? @VA01066 02236000
  2305. BO BUFLUSH YES, GO SYNTAX LAST USER @VA01066 02237000
  2306. CL R12,BAREMAC IS THIS A BARE MACHINE? @VA01066 02238000
  2307. BNE CMS3 NO- GO 02239000
  2308. BAL R5,STARTIO READ IN CARD 02240000
  2309. RET1 BAL R14,SCANCARD * SET UP NEXT CARD INDICATOR 02241000
  2310. BNE SKIP1 * IF IT IS A BLANK CARD OR AN * 02242000
  2311. MVC NEXTCARD,0(R1) * SKIP THE CARD 02243000
  2312. CLI NEXTCARD,C'*' * 02244000
  2313. BNE MOVECPT * 02245000
  2314. SKIP1 L R3,NEXTBUF * 02246000
  2315. LA R1,READIOB * 02247000
  2316. B REREAD * 02248000
  2317. MOVECPT MVC CURPOINT,CURBUF * 02249000
  2318. LA R4,71 * SET UP COUNT 02250000
  2319. STH R4,CURCOUNT * 02251000
  2320. CLI CURRCARD,X'00' WAS THAT THE FIRST CARD 02252000
  2321. BNE SCAN1 NO- BRANCH 02253000
  2322. CLC NEXTCARD(3),CONDIRE IS THE FIRST CARD A DIRECTORY CARD 02254000
  2323. BE READ YES- BRANCH TO READ THE NEXT CARD 02255000
  2324. OI DIRFLAG,ERROR TURN ON THE ERROR FLAG 02256000
  2325. B ERROR62 PRINT OUT ERROR 02257000
  2326. SCAN1 BAL R14,SCANCARD POINT TO THE FIRST FIELD 02258000
  2327. LA R4,TABLE1 02259000
  2328. BAL R14,SCANNAME GO TO PROPER ROUTINE 02260000
  2329. B ERROR51 ERROR IF RETURN FROM SCANNAME 02261000
  2330. EJECT 02262000
  2331. READERR TM IOBCSW+4,UE IS ERROR UNIT EXCEPTION 02263000
  2332. BO EOF YES- BRANCH 02264000
  2333. STM R1,R5,SAVEERR SAVE RETURN REGS 02265000
  2334. TM IOBSTAT,IOBNOPER IS THE NOT OPER BIT ON 02266000
  2335. BO ERROR54 YES- BRANCH 02267000
  2336. BAL R5,ERROR55 GO AND PRINT THE ERROR 02268000
  2337. RESTORE LM R1,R5,SAVEERR RETURN ERROR REGS 02269000
  2338. B IORETURN GO BACK TO IO ROUTINE 02270000
  2339. SPACE 1 02271010
  2340. * THIS UPDATE BUFFERS DIRECTORY READ OPERATIONS TO IMPROVE 02271020
  2341. * I/O PERFORMANCE. 02271030
  2342. CMS3 STM R2,R4,FIORSAV SAVE SOME REGISTERS @VA09965 02271040
  2343. LA R4,FIOFCB SET UP ADDRESSABILITY TO FCB @VA09965 02271050
  2344. USING FSCBD,R4 @VA09965 02271060
  2345. TM FIOFLAGS,FIOINIT SHOULD INITIALIZATION BE DONE @VA09965 02271070
  2346. BO FIONOM BR IF NOT @VA09965 02271080
  2347. * INITIALIZE FOR FAST I/O PROCESSING 02271090
  2348. OI FIOFLAGS,FIOINIT SET INIT. DONE @VA09965 02271100
  2349. LA R1,INFCB REFERENCE OLD FCB @VA09965 02271110
  2350. MVC FSCBFN(18),8(R1) MOVE FILEID TO NEW FCB @VA09965 02271120
  2351. * GET BUFFER FOR FAST I/O. USER VARIABLE REQUEST WITH MAX. 02271130
  2352. * OF 12,000 BYTES AND MINIMUM OF 800 BYTES. 02271140
  2353. GETMAIN VU,LA=FIOMNMX,A=FIOGMANS @VA09965 02271150
  2354. MVC FSCBBUFF(8),FIOGMANS BUFF ADDR & SIZE IN FCB @VA09965 02271160
  2355. * CALCULATE THE NUMBER OF BYTES TO READ AND PUT IN FCB 02271170
  2356. * (= BUFF. SIZE DIVIDED BY LOGICAL RECORD SIZE OF 80 BYTES) 02271180
  2357. SR R0,R0 ZERO FOR DIVIDE @VA09965 02271190
  2358. L R1,FIOGMSZ GET BUFF. SIZE @VA09965 02271200
  2359. D R0,=F'80' CALC. NO. OF RECORDS TO READ @VA09965 02271210
  2360. * IGNORE ANY REMAINDER...JUST DON'T USE IT 02271220
  2361. STH R1,FSCBNOIT STORE IN FCB @VA09965 02271230
  2362. SPACE 1 02271240
  2363. * PERFORM PHYSICAL READ VIA CMS RDBUF 02271250
  2364. FIOREAD FSREAD FSCB=FIOFCB,ERROR=FIOEREND @VA09965 02271260
  2365. LR R1,R0 GET CT. OF BYTES READ FROM FCB @VA09965 02271270
  2366. SR R0,R0 ZERO HIGH DIVIDEND @VA09965 02271280
  2367. D R0,=F'80' CALC. NO. OF 80 BYTE RECS. READ @VA09965 02271290
  2368. LTR R0,R0 ANY REMAINDER? @VA09965 02271300
  2369. BZ FIOOK BR IF NO REMAINDER @VA09965 02271310
  2370. * ERROR, THERE SHOULD BE NO REMAINDER 02271320
  2371. LA R15,8 SET UP WRONG LENGTH ERROR @VA09965 02271330
  2372. LA R1,FIOFCB RESTORE PLIST FOR USE BY ERR MSG @VA09965 02271340
  2373. B FIOEREND @VA09965 02271350
  2374. SPACE 1 02271360
  2375. FIOOK L R2,FIOGMAD GET ADDRESS OF FIO INPUT BUFFER @VA09965 02271370
  2376. LA R3,1 SET UP VALUE OF 1 @VA09965 02271380
  2377. STM R1,R3,FIORECCT STORE NEW REC CT, PTR, + CUR CT @VA09965 02271390
  2378. B FIOMOVE GO TO MOVE RECORD @VA09965 02271400
  2379. SPACE 1 02271410
  2380. * EXCEPTION ENDING 02271420
  2381. FIOEREND DS 0H @VA09965 02271430
  2382. LM R2,R4,FIORSAV RESTORE REGISTERS @VA09965 02271440
  2383. B TESTEOF GO CHECK OUT ERROR @VA09965 02271450
  2384. SPACE 1 02271460
  2385. * PROCESSING WHEN PHYSICAL READ NOT REQUIRED 02271470
  2386. * R1= FIORECCT, R2= FIOCURPT, R3= FIOCURCT 02271480
  2387. FIONOM LM R1,R3,FIORECCT SET UP REGISTERS @VA09965 02271490
  2388. LA R3,1(,R3) COUNT ONE MORE RECORD @VA09965 02271500
  2389. CR R3,R1 COMPARE NEW COUNT TO MAX. @VA09965 02271510
  2390. BH FIOREAD BR IF BUFF USED UP, NEED READ @VA09965 02271520
  2391. LA R2,80(,R2) POINT TO NEXT RECORD @VA09965 02271530
  2392. STM R1,R3,FIORECCT SAVE NEW VALUES IN CTL. BLOCK @VA09965 02271540
  2393. FIOMOVE LM R3,R4,FIORSAV+4 RESTORE R3 AND R4 @VA09965 02271550
  2394. MVC 0(80,R3),0(R2) MOVE DATA TO EXPECTED BUFFER @VA09965 02271560
  2395. L R2,FIORSAV RESTORE REGISTER @VA09965 02271570
  2396. SPACE 1 02271580
  2397. DROP R4 @VA09965 02271590
  2398. SPACE 1 02271600
  2399. B RET1 RETURN 02275000
  2400. TESTEOF CL R15,=F'12' IS IT EOF 02276000
  2401. BE EOF YES, NOT AN ERROR @VA07951 02277000
  2402. OI DIRFLAG,ERROR SHOW WE HAD AN ERROR @VA07951 02278000
  2403. B ERROR1 @VA07951 02279000
  2404. EOF OI DIRFLAG,READEOF TURN ON END OF FILE BIT 02280000
  2405. L R2,NEXTBUF POINT TO INPUT BUFFER 02281000
  2406. MVC 0(4,R2),CONUSER FAKE A USER CARD 02282000
  2407. B RET1 RETURN TO READ 02283000
  2408. BUFLUSH OI DIRFLAG,FLUSH INDICATE LAST BUFFER FLUSHED @VA01066 02284000
  2409. B SCANUSER GO CHECK OUT THE LAST RECORD @VA01066 02285000
  2410. EJECT 02286000
  2411. ***************************************************************** 02287000
  2412. *. 02288000
  2413. * DASD WRITE ROUTINE 02289000
  2414. * 02290000
  2415. * 1. IF ERROR OR EDIT BIT ON RETURN TO CALLER. 02291000
  2416. * 02292000
  2417. * 2. BUILG THE CCW STRING AND CALL STARTIO TO WRITE 02293000
  2418. * THE BUFFER OUT. 02294000
  2419. * 02295000
  2420. * 3. RETURN TO THE CALLER. 02296000
  2421. *. 02297000
  2422. ***************************************************************** 02298000
  2423. WRITE TM DIRFLAG,ERROR+EDITMODE IS THE ERROR OR EDIT BIT ON 02299000
  2424. BCR 7,R14 YES- RETURN TO THE CALLER (DO NOT WRITE) 02300000
  2425. STM R1,R3,SAVEWREG SAVE REG 02301000
  2426. ST R1,WCCW4 POINT TO BUFFER 02302000
  2427. MVI WCCW4,5 SET UP WRITE CCW 02303000
  2428. ST R2,SKSERCC SET IN CYLINDER LOCATION 02304000
  2429. STH R2,SKSERR SET IN RECORD NO 02305000
  2430. LA R1,512 SET UP TO DIVIDE BY 2.0 (3340) @V2A2029 02306000
  2431. TM DIRFLAG1,OUT3340 IS THIS A 3340 @V2A2029 02307000
  2432. BO DEVIDE YES - BRANCH @V2A2029 02308000
  2433. LA R1,1024 SET UP TO DIVIDE BY 4.0 (3350) @V304498 02309000
  2434. TM DIRFLAG1,OUT3350 IS THIS A 3350 @V304498 02310000
  2435. BO DEVIDE YES - BRANCH @V304498 02311000
  2436. LA R1,8*256 Set up to divide by 8.0 (3375) HRC106DK 02311100
  2437. TM DIRFLAG1,OUT3375 Is this a 3375 HRC106DK 02311200
  2438. BO DEVIDE Yes - branch HRC106DK 02311300
  2439. LA R1,10*256 Set up to divide by 10.0 (3380) HRC106DK 02311400
  2440. TM DIRFLAG1,OUT3380 Is this a 3380 HRC106DK 02311500
  2441. BO DEVIDE Yes - branch HRC106DK 02311600
  2442. LA R1,409 SET UP TO DEVIDE BY 1.6 (2314-2319) 02312000
  2443. TM DIRFLAG,OUT3330 IS THIS A 3330 02313000
  2444. BZ DEVIDE NO- BRANCH 02314000
  2445. LA R1,768 SET UP TO DEVIDE BY 3.0 (3330) 02315000
  2446. DEVIDE N R2,=X'0000FF00' ZERO OUT ALL BUT RECORD NO. 02316000
  2447. SL R2,=F'256' SUBTRACT BY ONE 02317000
  2448. SRDA R2,32 SLIDE RECORD NO INTO R3 02318000
  2449. DR R2,R1 DEVIDE THE RECORD NUMBER BY THE NUMBER X02319000
  2450. OF RECORDS PER TRACK. 02320000
  2451. STH R3,SKSERHH STORE THE TRACK NO 02321000
  2452. LA R1,DASDIOB POINT TO THE IOB 02322000
  2453. LA R2,WCCW1 GET ADD OF CCW STRING 02323000
  2454. BAL R5,STARTIO GO TO START IO ROUTINE 02324000
  2455. LM R1,R3,SAVEWREG RETURN REG 02325000
  2456. BR R14 02326000
  2457. SPACE 3 02327000
  2458. * THE STARTIO ROUTINE COMES HERE IN THE EVENT OF AN IO ERROR 02328000
  2459. * ON THE DASDIOB. 02329000
  2460. DASDERR TM IOBSTAT,IOBNOPER IS THE DEVICE NOT OPERATIONAL 02330000
  2461. BO ERROR54 YES- ERROR 02331000
  2462. CLI CPUID,X'FF' IS THIS A VIRTUAL MACHINE ? 02332000
  2463. BE BADERR YES, GET OUT 02333000
  2464. TM SENSE,X'2C' TEST FOR BUSOUT, DATA OR OVERRUN 02334000
  2465. BNZ SUB1 BRANCH IF ON 02335000
  2466. TM SENSE,X'01' SEEK CHECK ? 02336000
  2467. BZ MAYBTRKC NO, MAYBE TRACK CONDITION CHECK @V56BDA8 02337000
  2468. CL R2,=A(DASDERR1) IS THIS THE RECALIBRATE CCW 02338000
  2469. BE SUB1 YES- BRANCH 02339000
  2470. MVC DASDERR2+1(3),IOBCCW+1 CHAIN THE RECALIBRATE TO MY CCW 02340000
  2471. LA R2,DASDERR1 SET UP TO POINT TO THE ERROR CCW STRING 02341000
  2472. SUB1 L R4,DASDERCT PICK UP ERROR COUNT 02342000
  2473. BCT R4,RETURNER IS IT ZERO 02343000
  2474. BADERR OI DIRFLAG,ERROR YES- TURN ON THE ERROR BIT 02344000
  2475. BAL R5,ERROR55 PRINT OUT IO ERROR 02345000
  2476. B READ GO GET THE NEXT CARD 02346000
  2477. RETURNER ST R4,DASDERCT STORE ERROR COUNT 02347000
  2478. B RETRYIO RETRY THE SIO @V56BDA8 02348000
  2479. SPACE 1 02349000
  2480. MAYBTRKC TM SENSE,X'02' TRACK CONDITION CHECK? @V56BDA8 02350000
  2481. BZ BADERR NO, GET OUT @V56BDA8 02351000
  2482. TM DIRFLAG1,OUT3340 IS IT A 3340? @V56BDA8 02352000
  2483. BZ BADERR NO. @V56BDA8 02353000
  2484. SPACE 02354000
  2485. ST R5,ALTRECUR SAVE CALLER'S RETURN ADDRESS. @V56BDA8 02355000
  2486. IC R5,SENSE+6 COMPUTE CCHH OF DEFECTIVE TRACK @V56BDA8 02356000
  2487. * FROM SENSE DATA. NEED IT FOR SEEK IN 02357000
  2488. * RESTART CCWS. 02358000
  2489. SRL R5,5 ISOLATE 512 + 256. @V56BDA8 02359000
  2490. STC R5,ALTSKADD+2 STORE HIGH C AND SOME GARBAGE. @V56BDA8 02360000
  2491. NI ALTSKADD+2,X'03' GET RID OF THE GARBAGE. @V56BDA8 02361000
  2492. MVC ALTSKADD+3(1),SENSE+5 STORE LOW C. @V56BDA8 02362000
  2493. MVN ALTSKADD+5(1),SENSE+6 STORE LOW ORDER HEAD. @V56BDA8 02363000
  2494. L R2,IOBCSW FAILING CCW + 8. @V56BDA8 02364000
  2495. S R2,=F'8' GET ADDR OF FAILING CCW. @V56BDA8 02365000
  2496. STCM R2,7,ALTTIC+1 STORE IN TIC. @V56BDA8 02366000
  2497. LA R2,READHAR0 CCWS TO READ R0 (PTR TO ALT TRK).@V56BDA8 02367000
  2498. BAL R5,RETRYIO READ R0, THEN RETURN HERE. @V56BDA8 02368000
  2499. L R5,ALTRECUR RTN ADDR OF ORIG STARTIO CALLER. @V56BDA8 02369000
  2500. LA R2,ALTSEEK CCWS (SEEK TO ALTERNATE AND @V56BDA8 02370000
  2501. * SEARCH FOR BACKWARD POINTING R0) 02371000
  2502. * APPENDED IN FRONT OF FAILING CCW. 02372000
  2503. B STARTIO FIRST PART OF USERS CHAN PROG @V56BDA8 02373000
  2504. * RAN OKAY. RESTART 2ND PART AS IF IT WAS 02374000
  2505. * A NEW, SEPARATE, REQUEST. USERS RETURN 02375000
  2506. * ADDR IS IN R5. 02376000
  2507. EJECT 02377000
  2508. ***************************************************************** 02378000
  2509. *. 02379000
  2510. * ROUTINE TO ASSIGN A DASD PAGE ADDRESS 02380000
  2511. * 02381000
  2512. * 1. IF THE LAST DASD ADDRESS IN THIS CYL IS NOT USED 02382000
  2513. * GO TO STEP 3. 02383000
  2514. * 02384000
  2515. * 2. GET THE NEXT AVAILABLE CYLINDER, IF CYL ZERO SET DASD 02385000
  2516. * ADDRESS TO 3, ELSE SET TO ZERO. 02386000
  2517. * 02387000
  2518. * 3. ADD 1 TO DASD ADDRESS AND RETURN TO CALLER. 02388000
  2519. *. 02389000
  2520. ****************************************************************** 02390000
  2521. GETPAGE STM R3,R4,SAVEREGS SAVE REG 02391000
  2522. RET2 LH R3,MAXREC GET THE MAX RECORD COUNT 02392000
  2523. TESTFULL SR R4,R4 02393000
  2524. IC R4,PAGENUM PICK UP POINTER TO LAST PAGE USED 02394000
  2525. CLR R4,R3 WAS THE LAST PAGE USED 02395000
  2526. BL ADDONE NO- BRANCH 02396000
  2527. L R3,ALLOCATE POINT TO THE ALLOCATION TABLE 02397000
  2528. TM DIRFLAG,EDITMODE+ERROR ERROR OR EDIT FLAG ON @VA03013 02398000
  2529. BNZ EDITON2 YES- BRANCH 02399000
  2530. LH R4,RCCW7+6 Set up max size of the table HRC106DK 02400100
  2531. LOOP8 CLI 0(R3),X'04' IS THIS CYLINDER AVAILABUL 02401000
  2532. BE SETON YES- GO GET IT 02402000
  2533. CLI 0(R3),X'FF' IS THIS THE END OF THE LIST 02403000
  2534. LA R3,1(,R3) POINT TO THE NEXT BYTE 02404000
  2535. BE NOSPACE YES- BRANCH (END OF THE TABLE) 02405000
  2536. BCT R4,LOOP8 Loop up to 4096 times HRC106DK 02406100
  2537. NOSPACE BAL R5,ERROR60 GO PRINT THE ERROR 02407000
  2538. EDITON2 MVC DASDCYL(4),=X'3FFF0000' SET UP DUMMEY DASD ADD 02408000
  2539. B RET2 GO SET UP 02409000
  2540. SETON OI 0(R3),X'F0' ALLOCATE THIS CYL 02410000
  2541. SL R3,ALLOCATE CONVERT TO CYL NO 02411000
  2542. STH R3,DASDCYL POINT TO CYL NO 02412000
  2543. LA R4,3 SET R4 TO 3 (FIRST RECORD ON CYL 0) 02413000
  2544. TM DIRFLAG1,OUT3350+OUT3375+OUT3380 3350/75/80? HRC106DK 02414100
  2545. BZ SETON5 No, bypass 3350/3375/3380 init. HRC106DK 02414200
  2546. LA R4,4 INITIALIZE 1ST 3350 PAGE CYL 0 @V304498 02416000
  2547. SETON5 EQU * CONTINUE CYL 0 INITIALIZATION @V304498 02417000
  2548. LTR R3,R3 IS THIS CYL 0 02418000
  2549. BZ ADDONE YES- BRANCH 02419000
  2550. SR R4,R4 NO- SET TO 0 02420000
  2551. ADDONE LA R4,1(,R4) ADD ONE TO PAGE NUMBER 02421000
  2552. STC R4,PAGENUM POINT TO PAGE NUMBER 02422000
  2553. L R2,DASDCYL POINT TO PAGE 02423000
  2554. LM R3,R4,SAVEREGS RETURN REG 02424000
  2555. BR R14 02425000
  2556. EJECT 02426000
  2557. ***************************************************************** 02427000
  2558. *. 02428000
  2559. * ROUTINE TO SCAN CURRANT INPUT BUFFER FOR NEXT FIELD 02429000
  2560. * 02430000
  2561. * 1. IF END OF CARD, COL NUMBER 71, RETURN CC = 1. 02431000
  2562. * 02432000
  2563. * 2. FIND NEXT COLLUM NOT A COMMA OR BLANK, 02433000
  2564. * IF NONE RETURN CC = 1. 02434000
  2565. * 02435000
  2566. * 3. COUNT THE NUMBER OF CHARACTERS UNTIL THE NEXT 02436000
  2567. * BLANK. 02437000
  2568. * 02438000
  2569. * 4. RETURN CC = 0. 02439000
  2570. *. 02440000
  2571. ****************************************************************** 02441000
  2572. SCANCARD STM R3,R4,SAVEREGS SAVE REG 02442000
  2573. L R1,CURPOINT 02443000
  2574. SR R2,R2 SET COUNT TO ZERO 02444000
  2575. LH R3,CURCOUNT GET COUNT OF BYTES LEFT IN BUFFER 02445000
  2576. LTR R3,R3 IS IT ZERO 02446000
  2577. BZ SETCC1 YES END OF INPUT 02447000
  2578. LOOP5 CLI 0(R1),C' ' IS INPUT EQ BLANK 02448000
  2579. BNE UPDATE4 NO- BRANCH 02449000
  2580. UPDATE3 LA R1,1(,R1) UPDATE POINTER TO INPUT 02450000
  2581. BCT R3,LOOP5 BRANCH IF END OF CARD 02451000
  2582. B SETCC1 DO IT AGAIN 02452000
  2583. UPDATE4 TR 0(1,R1),UPCASE ALPHA TRANS - LOWER CASE => UPPER@VA12884 02453100
  2584. LA R2,1(,R1) POINT TO INPUT 02454000
  2585. BCT R3,LOOP6 DECREMENT CURCOUNT AND LOOP @VA03397 02455000
  2586. B SETCC0 SET CC=0 IF CURRENT COUNT ZERO @VA03397 02456000
  2587. LOOP6 CLI 0(R2),C' ' IS INPUT A BLANK 02457000
  2588. BE SETCC0 YES- BRANCH 02458000
  2589. TR 0(1,R2),UPCASE ALPHA TRANS - LOWER CASE => UPPER@VA12884 02459100
  2590. LA R2,1(,R2) POINT TO NEXT INPUT BYTE 02460000
  2591. BCT R3,LOOP6 DO IT AGAIN 02461000
  2592. SETCC0 ST R2,CURPOINT SET UP CURRANT POINTER 02462000
  2593. MVI 0(R2),C' ' SET DILIMITER TO BLANK 02463000
  2594. SR R2,R1 SET UP COUNT 02464000
  2595. TM *,X'00' SET CC = 0 02465000
  2596. RETURN STH R3,CURCOUNT SET UP REMAINING COUNT 02466000
  2597. LM R3,R4,SAVEREGS RETURN REG 02467000
  2598. BR R14 RETURN TO CALLER 02468000
  2599. SETCC1 TM *,X'FF' SET CC = 1 (NO INPUT) 02469000
  2600. ST R1,CURPOINT SET UP CURRANT POINTER 02470000
  2601. B RETURN 02471000
  2602. EJECT 02472000
  2603. ***************************************************************** 02473000
  2604. * 02474000
  2605. * SUBROUTINE TO CONVERT HEXADECIMAL DIGITS TO DECIMAL 02475000
  2606. * 02476000
  2607. ***************************************************************** 02477000
  2608. HEXCONV STM R3,R7,SAVEREGS SAVE REG @V407466 02478000
  2609. LR R6,R1 POINT TO BEGINNING OF OPERAND @V407466 02479000
  2610. LR R7,R2 LENGTH @V407466 02480000
  2611. SR R3,R3 02481000
  2612. LA R5,15 SET UP FOR AND 02482000
  2613. CONVERT TM 0(R1),X'F0' IS IT NUMERIC 02483000
  2614. BO NUMERIC YES- BRANCH 02484000
  2615. BZ ERROR51B NO, ERROR IF ALL BITS OFF @V407466 02485000
  2616. TM 0(R1),X'38' IS IT ALPHA 02486000
  2617. BNZ ERROR51B NO, ERROR IF BITS ON @V407466 02487000
  2618. TM 0(R1),X'07' IS IT G 02488000
  2619. BO ERROR51B YES, ERROR IF BITS ON @V407466 02489000
  2620. IC R4,0(R1) PICK UP ALPHA INPUT BYTE 02490000
  2621. LA R4,9(,R4) ADD 9 TO CONVERT FROM ALPHA INPUT 02491000
  2622. B SAVEIT 02492000
  2623. NUMERIC IC R4,0(,R1) PICK UP NUMERIC INPUT 02493000
  2624. SAVEIT NR R4,R5 ZERO OUT ZONE 02494000
  2625. SLL R3,4 SHIFT TO MAKE ROOM FOR INPUT 02495000
  2626. OR R3,R4 MOVE IN NUMERICS 02496000
  2627. LA R1,1(,R1) POINT AT THE NEXT INPUT BYTE 02497000
  2628. BCT R2,CONVERT DO IT TO EVERY INPUT BYTE 02498000
  2629. LR R2,R3 PLACE CONVERTED DATA INTO R2 02499000
  2630. LM R3,R7,SAVEREGS RETURN REGISTERS @V407466 02500000
  2631. BR R14 RETURN TO CALLER 02501000
  2632. SPACE 3 02502000
  2633. **************************************************************** 02503000
  2634. * 02504000
  2635. * SUBROUTINE TO CONVERT DECIMAL DIGITS TO BINARY 02505000
  2636. * 02506000
  2637. **************************************************************** 02507000
  2638. BINCONV STM R1,R3,SAVEREGS SAVE REGS 02508000
  2639. STM R6,R7,SAVEOPER SAVE CONTENTS OF R6 & R7 @V407466 02509000
  2640. LR R6,R1 SAVE POINT TO BEGIN OF OPERAND @V407466 02510000
  2641. LR R7,R2 FULL LENGTH OF OPERAND @V407466 02511000
  2642. LOOP9 TM 0(R1),X'F0' IS IT NUM 02512000
  2643. BNO ERROR51B NO - ERROR @V407466 02513000
  2644. LA R1,1(,R1) POINT TO THE NEXT BYTE 02514000
  2645. BCT R2,LOOP9 DO IT TO ALL INPUT 02515000
  2646. LM R1,R3,SAVEREGS RETURN REGS 02516000
  2647. BCTR R2,0 SUB 1 FROM COUNT 02517000
  2648. EX R2,PACK PACK DATA INTO WORK1 02518000
  2649. CVB R2,WORK1 SET UP DATA IN R2 02519000
  2650. LM R6,R7,SAVEOPER RESTORE ORIGINAL REGISTERS @V407466 02520000
  2651. BR R14 02521000
  2652. PACK PACK WORK1,0(1,R1) 02522000
  2653. EJECT 02523000
  2654. ***************************************************************** 02524000
  2655. * 02525000
  2656. * SUBROUTINE TO CONVERT DECIMAL DIGITS TO HEXADECIMAL 02526000
  2657. * 02527000
  2658. ***************************************************************** 02528000
  2659. DECCONV STM R3,R5,SAVEREGS SAVE REGS 02529000
  2660. BCTR R1,0 SET UP INPUT AND OUTPUT ADD 02530000
  2661. LA R3,0(R2,R2) DOBBLE THE COUNT 02531000
  2662. LA R3,0(R3,R1) ADD COUNT TO INPUT ADDRESS (ALSO OUTPUT) 02532000
  2663. SR R4,R4 02533000
  2664. LOOP4 IC R4,0(R2,R1) GET BYTE (INPUT + COUNT) 02534000
  2665. N R4,=F'15' ZERO OUT ALL BUT LAST 4 BITS 02535000
  2666. LA R5,DECTABLE(R4) POINT TO BYTE TO BE MOVED 02536000
  2667. MVC 0(1,R3),0(R5) MOVE IN BYTE 02537000
  2668. BCTR R3,0 POINT TO NEXT OUTPUT BYTE 02538000
  2669. IC R4,0(R2,R1) GET BYTE (INPUT + COUNT) 02539000
  2670. SRL R4,4 SET UP ZONE 02540000
  2671. LA R5,DECTABLE(R4) POINT AT BYTE TO BE MOVED 02541000
  2672. MVC 0(1,R3),0(R5) MOVE IN BYTE 02542000
  2673. BCTR R3,0 POINT TO NEXT OUTPUT BYTE 02543000
  2674. BCT R2,LOOP4 DO IT FOR ALL INPUT BYTES 02544000
  2675. LM R3,R5,SAVEREGS RETURN REG 02545000
  2676. BR R14 RETURN TO CALLER 02546000
  2677. SPACE 3 02547000
  2678. ***************************************************************** 02548000
  2679. * 02549000
  2680. * SUBROUTINE TO COMPARE KEYWORDS 02550000
  2681. * 02551000
  2682. ***************************************************************** 02552000
  2683. COMPARE BCTR R2,0 -1 02553000
  2684. EX R2,EXECOMP DO THE COMPARE 02554000
  2685. LA R2,1(,R2) +1 02555000
  2686. BR R14 RETURN WITH THE CC SET 02556000
  2687. EXECOMP CLC 0(0,R3),0(R1) COMPARE R1 TO R3 USING R2 02557000
  2688. EJECT 02558000
  2689. ****************************************************************** 02559000
  2690. *. 02560000
  2691. * MESSAGE WRITER SUBROUTINE 02561000
  2692. * 02562000
  2693. * 1. IF UNDER CMS USE SVC 202 ELSE SET 02563000
  2694. * UP THE CCW AND CALL STARTIO. 02564000
  2695. * 02565000
  2696. * 2. RETURN USING R5. 02566000
  2697. *. 02567000
  2698. ****************************************************************** 02568000
  2699. MSGWRITE CL R12,BAREMAC IS THIS A BARE MACHINE 02569000
  2700. BNE CMS5 02570000
  2701. LA R1,CONIOB POINT TO IOB 02571000
  2702. LH R3,0(,R2) MSG LENGTH INTO R3 @VA01388 02572000
  2703. LA R2,2(,R2) MSG TEXT ADDR INTO R2 @VA01388 02573000
  2704. CLI CPUID,X'FF' IS THIS A VIRTUAL MACHINE? @VA01388 02574000
  2705. BNE NODIAG NO, DON'T EDIT THE MSG @VA01388 02575000
  2706. CLC 0(3,R2),=C'DMK' IS THIS AN ERROR MSG? @VA01388 02576000
  2707. BNE NODIAG NO, DON'T EDIT THE MSG @VA01388 02577000
  2708. DC X'83',X'23',XL2'005C' YES, DO DIAGNOSE TO EDIT @VA01388 02578000
  2709. * MSG ACCORDING TO USER'S EMSG SETTING 02579000
  2710. LTR R3,R3 LENGTH OF 0 (I.E., EMSG OFF)? @VA01388 02580000
  2711. BCR 8,R5 YES, NO MSG TO SEND. JUST RETURN @VA01388 02581000
  2712. NODIAG ST R3,CONCCW+4 BUILD CCWS: LENGTH @VA01388 02582000
  2713. MVI CONCCW+4,X'60' CC + SILI @VA01388 02583000
  2714. ICM R2,8,=X'09' WRITE OP CODE @VA01388 02584000
  2715. ST R2,CONCCW * 02585000
  2716. MVC CONCCW1,SPACECCW * 02586000
  2717. LA R2,CONCCW * 02587000
  2718. B GRAPHID GO TO START I/O ROUTINE (RETURN @V200731 02588000
  2719. * ON R5) 02589000
  2720. CMS5 CLC 2(3,R2),=C'DMK' IS THIS AN ERROR MSG 02590000
  2721. BE CMSERMSG YES- GO TO ERROR MSG ROUTINE 02591000
  2722. LA R1,2(,R2) POINT TO THE MSG 02592000
  2723. LH R2,0(R2) GET THE LENGTH 02593000
  2724. CMS6 STCM R1,7,CONFCB+9 SET UP THE POINTER TO THE MSG IN THE FCB 02594000
  2725. STH R2,CONFCB+14 SET UP THE LENGTH ALSO 02595000
  2726. LA R1,CONFCB POINT TO THE FCB 02596000
  2727. SVC 202 GO TO CMS 02597000
  2728. DC AL4(ERROR2) ERROR RETURN 02598000
  2729. BR R5 RETURN TO THE CALLER 02599000
  2730. CMSERMSG LA R2,1(,R2) POINT TO A ONE BYTE COUNT AND TEXT 02600000
  2731. LINEDIT DISP=ERRMSG,TEXTA=(R2),RENT=NO,DOT=NO 02601000
  2732. BR R5 RETURN TO THE CALLER 02602000
  2733. PRINTBUF OI DIRFLAG,ERROR TURN ON ERROR BIT 02603000
  2734. L R1,CURBUF POINT TO THE CURRENT CARD BUFFER 02604000
  2735. LR R2,R1 * BUILD THE CONCOLE CCW 02605000
  2736. LA R2,79(,R2) * DO NOT PRINT TRAILING 02606000
  2737. LOOP7 CLI 0(R2),C' ' * BLANKS. IF BUFFER IS 02607000
  2738. BNE SETCOUNT * ALL BLANKS RETURN TO 02608000
  2739. BCT R2,LOOP7 * CALLER. (USING R5) 02609000
  2740. SETCOUNT SR R2,R1 * 02610000
  2741. LA R2,1(,R2) * 02611000
  2742. LTR R2,R2 * 02612000
  2743. BCR 12,R5 * 02613000
  2744. CL R12,BAREMAC * 02614000
  2745. BNE CMS6 * 02615000
  2746. ST R2,CONCCW+4 * 02616000
  2747. MVI CONCCW+4,SILI * 02617000
  2748. MVC CONCCW+1(3),CURBUF+1 * 02618000
  2749. MVI CONCCW,X'09' * 02619000
  2750. LA R1,CONIOB * 02620000
  2751. LA R2,CONCCW * 02621000
  2752. B GRAPHID GO TO START I/O ROUTINE (RETURN @V200731 02622000
  2753. * ON R14) 02623000
  2754. CONERROR EQU * @V200731 02624000
  2755. TM IOBCSW+4,ATTN IS THIS AN ATTENTION INTERRUPT ? @V200731 02625000
  2756. BNO CONUNITE NO, GO CHECK FOR UNIT EXECPTION @V200731 02626000
  2757. TM PARM,PARMGRP IS THE GRAPHIC SUPPORT ACTIVE ? @V200731 02627000
  2758. BZ CONUNITE NO, GO CLEAR CARD FLAG @V200731 02628000
  2759. TM PARM,PARMATT IS THIS A ATTENTION REQUEST ? @V200731 02629000
  2760. BCR 1,R5 YES, GO CHECK FOR ATTENTION @V200731 02630000
  2761. * INTERRUPT 02631000
  2762. CONUNITE EQU * @V200731 02632000
  2763. TM IOBCSW+4,UE IS THIS A UNIT EXECPTION ? @V200731 02633000
  2764. BO STARTIO YES- REPEAT 02634000
  2765. TM SENSE,X'80' COMMAND REJECT 02635000
  2766. BO EXIT YES - BAD BAD BAD @VA01388 02636000
  2767. ERRORCT L R4,CONERCT GET THE ERROR COUNT 02637000
  2768. BCT R4,RETCON IS IT ZERO 02638000
  2769. LA R5,EXIT YES- POINT TO EXIT ROUTINE 02639000
  2770. OI DIRFLAG,ERROR TURN ON ERROR FLAG 02640000
  2771. B ERROR55 PRINT OUT ERROR 02641000
  2772. RETCON ST R4,CONERCT SAVE COUNT 02642000
  2773. B IORETURN RETURN TO START IO ROUTINE 02643000
  2774. SPACE 3 02644000
  2775. ***** MESSAGE TABLE 02645000
  2776. SPACE 2 02646000
  2777. ERROR51B LR R1,R6 POINT TO BEGIN OF OPERAND @V407466 02647000
  2778. LR R2,R7 LENGTH INTO R2 @V407466 02648000
  2779. LM R6,R7,SAVEOPER RESTORE ORIG. R6 VALUE @V407466 02649000
  2780. ERROR51 MVI ERROR51A+39,C' ' * BLANK IT OUT 02650000
  2781. MVC ERROR51A+40(11),ERROR51A+39 * 02651000
  2782. CL R2,=F'12' IS IT OVER 12 02652000
  2783. BNH MOVE NO- BRANCH 02653000
  2784. LA R2,12 SET COUNT TO 12 02654000
  2785. MOVE MOVE ERROR51A+39 MOVE IN ERROR WORD 02655000
  2786. BAL R5,PRINTBUF PRINT OUT CARD 02656000
  2787. ERROR51A MSG 'DMKDIR751E INVALID OPERAND - XXXXXXXXXXXX',READ 02657000
  2788. USING UDIRBLOK,R15 @VA01066 02658000
  2789. ERROR52 L R15,DIRPTR ADDRESS LAST USER @VA01066 02659000
  2790. MVC ERROR52A+61(8),UDIRUSER MOVE IN LAST ID @VA01066 02660000
  2791. ERROR52A MSG 'DMKDIR752E STATEMENT SEQUENCE ERROR FOLLOWING USER XXXX*02661000
  2792. XXXX',ERROR52B @VA01066 02662000
  2793. ERROR52B TM DIRFLAG,FLUSH EOF PROCESSING? @VA01066 02663000
  2794. BZ ERROR52C NOPE, BUFFERS ARE OK AS IS @VA01066 02664000
  2795. L R5,CURBUF+4 SET BACK TO BAD RECORD @VA01066 02665000
  2796. ST R5,CURBUF FOR PRINTING @VA01066 02666000
  2797. ERROR52C BAL R5,PRINTBUF WRITE OUT BAD RECORD @VA01066 02667000
  2798. TM DIRFLAG,READEOF DID IT HAPPEN AT EOF? @VA01066 02668000
  2799. BO EXIT YES, FINISH UP @VA01066 02669000
  2800. B READ NO, CONTINUE WITH OUR BUSINESS @VA01066 02670000
  2801. DROP R15 @VA01066 02671000
  2802. ERROR53 BAL R5,PRINTBUF PRINT OUT ERROR CARD 02672000
  2803. MSG 'DMKDIR753E OPERAND MISSING',READ 02673000
  2804. ERROR54 OI DIRFLAG,ERROR TURN ON ERROR FLAG 02674000
  2805. STH R3,ERROR54A+26 SET UP FIELD TO BE CONVERTED 02675000
  2806. LA R1,ERROR54A+26 SET UP POINTER TO FIELD 02676000
  2807. LA R2,2 SET UP COUNT 02677000
  2808. BAL R14,DECCONV 02678000
  2809. ERROR54A MSG 'DMKDIR754E DEV XXXX NOT OPERATIONAL',EXIT 02679000
  2810. ERROR55 MVC ERROR55A+35(8),IOBCSW * SET UP THE CSW 02680000
  2811. LA R1,ERROR55A+35 * 02681000
  2812. LA R2,8 * 02682000
  2813. BAL R14,DECCONV * 02683000
  2814. STH R3,ERROR55A+26 * MOVE IN CONVERTED IO ADDRESS 02684000
  2815. LA R1,ERROR55A+26 * 02685000
  2816. LA R2,2 * 02686000
  2817. BAL R14,DECCONV * 02687000
  2818. LA R1,SNSWORK SET UP SENSE DATA @V2B3729 02688000
  2819. LA R2,32 NUMBER OF SENSE BYTES HRC011DK 02689590
  2820. MVC SNSWORK(32),SENSE MOVE IN SENSE DATA HRC011DK 02690180
  2821. BAL R14,DECCONV CONVERT SENSE DATA @V2B3729 02691000
  2822. MVC ERROR55A+58(12),SNSWORK SENSE TO MSG @V2B3729 02692000
  2823. MVC ERROR55B+6(52),SNSWORK+12 .. HRC011DK 02693490
  2824. CLI SNSCNT,2 ONLY 2 SENSE BYTES PRESENT ? @V2B3729 02694000
  2825. BNE WRMSG55 NO- @V2B3729 02695000
  2826. MVC ERROR55A+62(8),=C' ' BLANK LAST 4 BYTES @V2B3729 02696000
  2827. WRMSG55 ST R5,MSGRET SAVE RETURN ADDRESS @V2B3729 02697000
  2828. LA R5,MSG55B SET NEW RETURN ADDRESS @V2B3729 02698000
  2829. ERROR55A MSG 'DMKDIR755E IO ERROR XXXX CSW XXXXXXXXXXXXXXXX SENSE XXX*02699000
  2830. XXXXXXXXX' 02700000
  2831. MSG55B L R5,MSGRET RESTORE ORIGINAL RETURN ADDRESS @V2B3729 02701000
  2832. CLI SNSCNT,6 BYTE COUNT GREATER THAN 6 @V2B3729 02702000
  2833. BNHR R5 NO, RETURN TO CALLER @V2B3729 02703000
  2834. ERROR55B MSG 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' ,*02704290
  2835. ROOM FOR 32 SENSE BYTES HRC011DK 02704580
  2836. ERROR56 OI DIRFLAG,ERROR 02705000
  2837. MVC ERROR56A+41(8),PROOLD MOVE IN OLD PSW AND CONVERT 02706000
  2838. LA R1,ERROR56A+41 * IT TO DEC 02707000
  2839. LA R2,8 * 02708000
  2840. BAL R14,DECCONV * 02709000
  2841. ERROR56A MSG 'DMKDIR756E PROGRAM CHECK PSW = XXXXXXXXXXXXXXXX',EXIT 02710000
  2842. ERROR57 OI DIRFLAG,ERROR SET ON ERROR BIT 02711000
  2843. MSG 'DMKDIR757E MACHINE CHECK RUN SEREP AND SAVE OUTPUT FOR X02712000
  2844. CE',EXIT 02713000
  2845. ERROR58 BAL R5,PRINTBUF PRINT OUT THE CARD 02714000
  2846. MSG 'DMKDIR758E DUPLICATE UNIT DEFINITION',READ 02715000
  2847. ERROR60 OI DIRFLAG,ERROR TURN ON THE ERROR FLAG 02716000
  2848. MSG 'DMKDIR760E NOT ENOUGH SPACE ALLOCATED FOR DIRECTORY' 02717000
  2849. ERROR61 MVC ERROR61A+35(6),VOLLABLE+4 MOVE IN LABLE 02718000
  2850. MVC ERROR61A+46(6),DASDVSER THIS ONE TO 02719000
  2851. BAL R5,PRINTBUF PRINT INPUT BUFFER 02720000
  2852. ERROR61A MSG 'DMKDIR761E VOLID READ IS XXXXXX NOT XXXXXX',READ 02721000
  2853. ERROR62 MSG 'DMKDIR762E DIRECTORY STATEMENT MISSING',READ 02722000
  2854. ERROR63 MVC ERRORRET,=F'1' SET THE RETURN CODE TO 1 02723000
  2855. MSG 'DMKDIR763E INVALID FILENAME OR FILE NOT FOUND',MSG04 02724000
  2856. ERROR2 AL R15,=F'100' ADD 100 TO THE ERROR RETURN CODE 02725000
  2857. ERROR1 AL R15,=F'100' ADD 100 TO THE ERROR RETURN CODE 02726000
  2858. ST R15,ERRORRET 02727000
  2859. MVC ERROR64+30(8),0(R1) MOVE IN THE CMS ROUTINE NAME 02728000
  2860. ERROR64 MSG 'DMKDIR764E ERROR IN XXXXXXXX',EXIT 02729000
  2861. MSG01 MSG 'EOJ DIRECTORY UPDATED' 02730000
  2862. MSG02 MSG 'VM/370 USER DIRECTORY CREATION PROGRAM RELEASE 6',MSG02A 02731000
  2863. MSG02A MSG 'ENTER CARD READER DEVICE ADDRESS AND OPTIONS',MSGRET 02732000
  2864. MSG03 MSG 'EOJ DIRECTORY UPDATED AND ON LINE',TERM 02733000
  2865. MSG04 MSG 'EOJ DIRECTORY NOT UPDATED',TERM 02734000
  2866. EJECT 02735000
  2867. ****************************************************************** 02736000
  2868. *. 02737000
  2869. * EXIT HOUSEKEEPING ROUTINE 02738000
  2870. * 02739000
  2871. * 1. IF THE ERROR OR EDIT FLAG IS ON GO TO MSG04 . 02740000
  2872. * 02741000
  2873. * 2. MASK OFF THE LAST UDIR AND UMAC BLOCKS. 02742000
  2874. * 02743000
  2875. * 3. WRITE OUT ALL USED BUFFERS. 02744000
  2876. * 02745000
  2877. * 4. REWRITE THE VOL1 AND ALLOCATION RECORDS. 02746000
  2878. * 02747000
  2879. * 5. IF UNDER VM/370 USE DIAG 3C TO SWAP DIRECTORIES. 02748000
  2880. * 02749000
  2881. * 6. PRINT OUT THE PROPRE EOJ MSG. 02750000
  2882. * 02751000
  2883. * 7. IF NOT UNDER CMS LOAD A DISABLED PSW, ELSE 02752000
  2884. * SET UP CMS RETURN CODE AND RETURN TO CMS. 02753000
  2885. *. 02754000
  2886. ****************************************************************** 02755000
  2887. * FREE THE FAST I/O BUFFER IN ALL CASES IF UNDER CMS 02756050
  2888. EXIT DS 0H @VA09965 02756100
  2889. CL R12,BAREMAC UNDER REAL OR VIRT. BARE MACH.? @VA09965 02756150
  2890. BE FIOBF BR IF YES, DON'T FREE BUFFER @VA09965 02756200
  2891. FREEMAIN V,A=FIOGMANS @VA09965 02756250
  2892. SPACE 1 02756300
  2893. FIOBF TM DIRFLAG,ERROR+EDITMODE ERROR OR EDIT FLAG ON @VA09965 02756350
  2894. BNZ MSG04 YES- PRINT OUT ERROR MSG AND EXIT 02757000
  2895. USING UDIRBLOK,RDIR SETUP ADDRESSABILITY FOR UDIRBLOK@V200731 02758000
  2896. L RDIR,DIRPTR GET THE BUFFER ADDRESS FOR @V200731 02759000
  2897. * UDIRBLOK 02760000
  2898. XC UDIRUSER,MASK * MASK OFF THE UDIR AND 02761000
  2899. XC UDIRPASS,MASK * UMAC BLOCK'S 02762000
  2900. XC UMACBLOK+8(8),MASK * 02763000
  2901. XC UMACBLOK+16(8),MASK * 02764000
  2902. XC UMACBLOK+24(8),MASK * 02765000
  2903. XC UMACBLOK+32(8),MASK * 02766000
  2904. XC UMACBLOK+40(8),MASK * 02767000
  2905. SR RDIR,RDIRBUF SET UP POINTER TO LAST UDIRBLOK 02768000
  2906. STH RDIR,2(,RDIRBUF) STORE IT IN FIRST UDIRBLOK 02769000
  2907. ST RDIR,DIRPTR SAVE THE ADDRESS OF THE UDIRBLOK @V200731 02770000
  2908. DROP R15 DROP BASE REGISTER FOR UDIRBLOK @V200731 02771000
  2909. SR R1,R1 * ZERO OUT THE POINTER TO THE NEXT 02772000
  2910. ST R1,4(,RDIRBUF) * UDIR BUFFER 02773000
  2911. L R2,UDIRPAGE GET DASD ADD 02774000
  2912. LR R1,RDIRBUF GET BUFFER ADD 02775000
  2913. BAL R14,WRITE 02776000
  2914. L R2,UMACPAGE GET DASD ADD 02777000
  2915. LR R1,RMACBUF GET BUFFER ADD 02778000
  2916. BAL R14,WRITE 02779000
  2917. L R2,UDEVPAGE GET DASD ADD 02780000
  2918. LTR R2,R2 WAS IT USED 02781000
  2919. BZ SCANALLO YES- BRANCH 02782000
  2920. LR R1,RDEVBUF GET BUFFER ADD 02783000
  2921. BAL R14,WRITE 02784000
  2922. SCANALLO L R3,ALLOCATE 02785000
  2923. LOOP10 CLI 0(R3),X'0C' IS THIS CYLINDER ALLOCATED 02786000
  2924. BNE TESTF4 NO- BRANCH 02787000
  2925. MVI 0(R3),X'04' MARK THIS CYLINDER NOT ALLOCATED 02788000
  2926. TESTF4 CLI 0(R3),X'F4' IS THIS CYLINDER TEMPERALY ALLOCATED 02789000
  2927. BNE TESTFF NO- BRANCH 02790000
  2928. MVI 0(R3),X'0C' MARK THIS CYLINDER ALLOCATED 02791000
  2929. TESTFF CLI 0(R3),X'FF' IS THIS THE END OF THE TABLE 02792000
  2930. LA R3,1(,R3) POINT TO THE NEXT BYTE 02793000
  2931. BNE LOOP10 NO- LOOP 02794000
  2932. LA R1,DASDIOB POINT TO IOB 02795000
  2933. LA R2,RCCW1 POINT TO CCW STRING 02796000
  2934. MVI RCCW4,05 SET UP TO WRITE OUT VOL1 RECORD 02797000
  2935. MVI RCCW7,05 SET UP TO WRITE OUT ALLOCATION RECORD 02798000
  2936. BAL R5,STARTIO WRITE THEM OUT 02799000
  2937. CLI CPUID,X'FF' IS THIS A VIRTUAL MACHINE ? 02800000
  2938. BNE BARE NO, DON'T SWAP DIRECTORIES 02801000
  2939. LA R3,100 SET UP ERROR COUNT 02802000
  2940. LPSW CMSPSW SET PROTECTION KEY AND SYSTEM MASK *02803000
  2941. TO ZERO SO THAT CMS WILL NOT GET SICK *02804000
  2942. AND RETURN TO THE NEXT INSTRUCTION 02805000
  2943. MOVEPSW MVC SAVEPNEW(8),PRONEW SAVE THE PROGRAM CHECK NEW PSW *02806000
  2944. THE DIAG IO WILL PROGRAM CHECK IF THE *02807000
  2945. USER IS NOT CLASS A,B OR C 02808000
  2946. MVC PRONEW(8),RETPSW SET UP THE RETURN PSW 02809000
  2947. LM R1,R2,DASDVSER POINT TO THE VOLUME SERIAL NUMBER 02810000
  2948. LOOP11 DC X'8312003C' DIAG CALL TO VM/370 (USER DIRECTORY *02811000
  2949. DYNAMIC SWAP 'DMKUDRDS' ) 02812000
  2950. MVC PRONEW(8),SAVEPNEW RETURN THE PROGRAN NEW PSW 02813000
  2951. BC 3,RET6 VOLUNE NOT IN THE OWNDLIST OR IO ERROR *02814000
  2952. UNDER CP 02815000
  2953. BZ MSG03 PRINT MSG IF CC = 0 02816000
  2954. BCT R3,LOOP11 TRY 100 TIMES IF THE DIRECTORY IS LOCKED 02817000
  2955. LA R3,5 SET THE CMS RETURN CODE TO 5 02818000
  2956. B RETERROR 02819000
  2957. UNOTABC MVC PRONEW(8),SAVEPNEW RETURN THE PROGRAM NEW PSW THE USER *02820000
  2958. IS NOT CLASS A,B OR C 02821000
  2959. LA R3,4 SET THE CMS RETURM CODE TO 4 02822000
  2960. B RETERROR 02823000
  2961. RET6 LA R3,6 SET THE CMS RETURN CODE TO 6 02824000
  2962. RETERROR ST R3,ERRORRET SAVE THE CMS RETURN CODE 02825000
  2963. BARE BAL R5,MSG01 02826000
  2964. TERM CL R12,BAREMAC IS THIS UNDER CMS 02827000
  2965. BNE CMS8 YES- BRANCH 02828000
  2966. LPSW SVCNEW STOP!!! 02829000
  2967. CMS8 EQU * 02830000
  2968. LA R1,INFCB POINT TO THE FCB 02831000
  2969. MVC 0(8,R1),=CL8'FINIS' CLOSE THE INPUT FILE 02832000
  2970. SVC 202 02833000
  2971. DC AL4(*+4) NO ERROR RETURN 02834000
  2972. LM R14,R15,CMSSAVE GET THE RETURN ADDRESS AND CODE 02835000
  2973. LTR R15,R15 DID I HAVE AN ERROR 02836000
  2974. BCR 7,R14 YES- RETURN WITH IT 02837000
  2975. TM DIRFLAG,ERROR DID I HAVE AN ERROR IN THE CMS X02838000
  2976. INPUT FILE 02839000
  2977. BCR 14,R14 NO- RETURN TO CMS 02840000
  2978. LA R15,2 SET RETURN CODE TO 2 02841000
  2979. BR R14 RETURN TO CMS 02842000
  2980. EJECT 02843000
  2981. LTORG 02844000
  2982. EJECT 02845000
  2983. DECTABLE DC C'0123456789ABCDEF' 02846000
  2984. DS 0H @V60A6B6 02847000
  2985. ADDR1 DC X'5B5F' LINE 22 COL 80 @V60A6B6 02848000
  2986. ADDR2 DC X'5D6B' LINE 24 COL 60 @V60A6B6 02849000
  2987. ADDR3 DC X'D65F' LINE 18 COL 80 @V60A6B6 02850000
  2988. ADDR4 DC X'D86B' LINE 20 COL 60 @V60A6B6 02851000
  2989. ADDR5 DC X'4040' INITIAL AREA FOR CURSOR CHECK @V60A6B6 02852000
  2990. ADDR6 DC X'5B60' LINE 23 COL 01 @V60A6B6 02853000
  2991. ADDR7 DC X'D660' LINE 19 COL 01 @V60A6B6 02854000
  2992. MAXLEN DC F'0000' @V60A6B6 02855000
  2993. LEN3270 DC F'1760' SCREEN SIZE FOR 24 LINE CONSOLE @V60A6B6 02856000
  2994. LEN3278 DC F'1440' SCREEN SIZE FOR 20 LINE CONSOLE @V60A6B6 02857000
  2995. BLANK DC C' ' 02858000
  2996. DIRFLAG DC X'00' 02859000
  2997. ATTNINT EQU X'80' AN ATTENTION INTERRUPT WAS RECEVED 02860000
  2998. ERROR EQU X'40' ERROR BIT 02861000
  2999. EDITMODE EQU X'20' EDIT MODE 02862000
  3000. OUT2314 EQU X'10' OUTPUT UNIT IS A 2314 OR A 2319 02863000
  3001. OUT3330 EQU X'08' OUTPUT UNIT IS A 3330 OR 2305 02864000
  3002. READEOF EQU X'04' END IF FILE ON CARD READER 02865000
  3003. SPECID EQU X'02' SPECIAL USERID FOUND @VM08715 02866000
  3004. FLUSH EQU X'01' LAST BUFFER HAS BEEN FLUSHED @VA01066 02867000
  3005. SPACE 02868000
  3006. DIRFLAG1 DC X'00' DIRECT FLAG BYTE TWO @V2A2029 02869000
  3007. OUT3340 EQU X'80' OUTPUT UNIT IS A 3340 @V2A2029 02870000
  3008. OUT3350 EQU X'40' OUTPUT UNIT IS A 3350 @V304498 02871000
  3009. OUT3375 EQU X'20' Output unit is a 3375 HRC106DK 02871100
  3010. OUT3380 EQU X'10' Output unit is a 3380 HRC106DK 02871200
  3011. SPACE 02872000
  3012. SPACE 02873000
  3013. MODETABL DC C'R ',AL1(UDEVR) MODE TABLE @V407466 02874000
  3014. DC C'W ',AL1(UDEVW) @V407466 02875000
  3015. DC C'M ',AL1(UDEVM) @V407466 02876000
  3016. DC C'RR ',AL1(UDEVRR) @V407466 02877000
  3017. DC C'WR ',AL1(UDEVWR) @V407466 02878000
  3018. DC C'MR ',AL1(UDEVMR) @V407466 02879000
  3019. DC C'MW ',AL1(UDEVMW) @V407466 02880000
  3020. DC C'RV ',AL1(UDEVR) @V407466 02881000
  3021. DC C'WV ',AL1(UDEVW) @V407466 02882000
  3022. DC C'MV ',AL1(UDEVM) @V407466 02883000
  3023. DC C'RRV',AL1(UDEVRR) @V407466 02884000
  3024. DC C'WRV',AL1(UDEVWR) @V407466 02885000
  3025. DC C'MRV',AL1(UDEVMR) @V407466 02886000
  3026. DC C'MWV',AL1(UDEVMW) @V407466 02887000
  3027. VOLID DC CL6'VOLID ' @VA11371 02888010
  3028. RONLY DC CL4'R/O ' @VA11371 02888020
  3029. VIRTC DC CL6'3330V ' @VA11371 02888030
  3030. FONE DC F'1' @V60B6B8 02890000
  3031. SPACE 02891000
  3032. MAXREC DC H'57' MAX RECORD COUNT(DEFAULT - 3330) @VA03013 02892000
  3033. CNOP 2,4 02893000
  3034. SKSERID DC X'0000' 02894000
  3035. SKSERCC DC X'0000' 02895000
  3036. SKSERHH DC X'0000' 02896000
  3037. SKSERR DC X'0000' 02897000
  3038. VOLSKSR DC X'00000000000003' 02898000
  3039. ALLSKSR DC X'00000000000004' 02899000
  3040. DASDERCT DC F'50' 02900000
  3041. CONERCT DC F'5' 02901000
  3042. BAREMAC DC A(DMKDIRCT+2-DMKDIR) 02902000
  3043. CMSSAVE DC A(0) 02903000
  3044. ERRORRET DC A(0) 02904000
  3045. DASDVSER DC CL6' ' OUTPUT VOL SER NO 02905000
  3046. SENSE DC XL32'0' SENSE AREA HRC011DK 02906590
  3047. SNSWORK DC XL67'0' SENSE WORK AREA HRC011DK 02907180
  3048. SNSCNT DC X'00' NUMBER OF SENSE BYTES PRESENT @V2B3729 02908000
  3049. SENRET DC F'0' RETURN ADDRESS OF CALLER @V2B3729 02909000
  3050. WORK1 DS 1D 02910000
  3051. DIRPTR DC A(0) SAVE ADDRESS OF UDIRBLOK @V200731 02911000
  3052. SAVEREGS EQU * 02912000
  3053. POINTERS DC A(BUFFER1) 02913000
  3054. DC A(BUFFER2) 02914000
  3055. DC A(BUFFER3) 02915000
  3056. SAVEOPER DC 1F'0' POINTER TO OPERAND BEGIN @V407466 02916000
  3057. SAVELEN DC 1F'0' POINTER TO OPERAND LENGTH @V407466 02917000
  3058. SAVENAME DC 1F'0' 02918000
  3059. SAVERET DC 1F'0' 02919000
  3060. SAVEERR DC 5F'0' 02920000
  3061. SAVEWREG DC 3F'0' 02921000
  3062. CTCASAVE DC 2F'0' 02922000
  3063. REGSAVE DS 4F @VA02180 02923000
  3064. F4096 DC F'4096' @VA02180 02924000
  3065. ALTRECUR DS F ALTERNATE TRACK R5 SAVEAREA 02925000
  3066. ALTSKAD2 DC XL6'0' 00CCHH ADDR OF ALTERNATE TRACK.@V56BDA8 02926000
  3067. ALTSKADD DC XL7'0' 00CCHH0 ADDR OF DEFECTIVE TRACK.@V56BDA8 02927000
  3068. DS 0D 02928000
  3069. EJECT 02929000
  3070. ********************************************************************** 02930000
  3071. * GRAPHIC SUPPORT CCWS 02931000
  3072. ********************************************************************** 02932000
  3073. CRTWORD CCW X'27',SBACP,SILI+CC,2 SET BAR TO (STATUS WORD) @V200731 02933000
  3074. CCW X'01',CPXYSTAT,SILI+CC,20 WRITE 'RUNNING' ON @V200731 02934000
  3075. * SCREEN 02935000
  3076. CCW X'27',SBAREAD,SILI+CC,2 SET BUFFER ADDR FOR @V200731 02936000
  3077. * WRITE 02937000
  3078. CCW X'01',BLNKZERO,SILI+CC,140 CLEAR INPUT AREA @VM08604 02938000
  3079. CURS3066 CCW X'0F',SBAREAD,SILI+CC,2 REPOSITION CURSOR @V200731 02939000
  3080. CCW X'03',*-*,SILI,3 END OF READ CCW STRING @V200731 02940000
  3081. SPACE 2 02941000
  3082. CRTWORD1 CCW X'01',LAB3270A,SILI+CC,LEN THE CONTROL DATA @VM08630 02942000
  3083. CCW X'03',*-*,SILI,2 @V200731 02943000
  3084. SPACE 2 02944000
  3085. REQREAD CCW X'27',SBACP,SILI+CC,2 SET BUFFER ADDR TO CP X-Y @V200731 02945000
  3086. CCW X'01',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 02946000
  3087. CCW X'08',CURS3066,SILI,1 RESET CURSOR POSITION @V200731 02947000
  3088. SPACE 2 02948000
  3089. REQREAD1 CCW X'01',LAB3270B,SILI+CC,LEN1 THE CONTROL DATA @VM08630 02949000
  3090. CCW X'03',*-*,SILI,2 @V200731 02950000
  3091. SPACE 2 02951000
  3092. ERSE3066 CCW X'07',*-*,SILI+CC,1 ERASE ENTIRE SCREEN @V200731 02952000
  3093. WRTCRTXY CCW X'27',SBADDR,SILI+CC,2 SET CORRECT LINE IN @V200731 02953000
  3094. * BUFFER 02954000
  3095. WRT3066 CCW X'01',*-*,SILI+CC,140 WRITE OUT USER DATA @V200731 02955000
  3096. CCW X'08',CRTWORD,SILI,1 NOW DISPLAY STATUS @V200731 02956000
  3097. SPACE 2 02957000
  3098. ERSE3270 CCW X'05',LAB3270E,SILI+CD,LEN3 ERASE THE SCREEN @V200731 02958000
  3099. CCW X'00',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 02959000
  3100. WRTCRT70 CCW X'01',LAB3270,SILI+CD,4 THE CONTROL DATA @V200731 02960000
  3101. WRTCR70 CCW X'00',*-*,SILI+CD,0 THE WRITE CCW @V200731 02961000
  3102. CCW X'00',LAB3270A+1,SILI+CC,LEN-1 WRITE SCREEN @V200731 02962000
  3103. * STATUS 02963000
  3104. CCW X'03',*-*,SILI,2 @V200731 02964000
  3105. SPACE 2 02965000
  3106. RDMI3066 CCW X'0E',RDMIDATA,SILI+CC,3 READ CCW FOR MI COMMAND@V200731 02966000
  3107. RD3066 CCW X'27',SBAREAD,SILI+CC,2 SET BUFFER ADDR FOR READ@V200731 02967000
  3108. RD3066DA CCW X'06',*-*,SILI+CC,140 READ INPUT DATA @V200731 02968000
  3109. CCW X'08',CURS3066,SILI,1 REPOSITION CURSOR @V200731 02969000
  3110. SPACE 2 02970000
  3111. RDMI3270 CCW X'01',LAB3270D,SILI+CC,4 @V200731 02971000
  3112. RD3270DA CCW X'06',*-*,SILI+CC,0 THE CCW FOR READ @V200731 02972000
  3113. CCW X'03',*-*,SILI,2 @V200731 02973000
  3114. SPACE 2 02974000
  3115. CNCL3270 CCW X'01',LAB3270E,SILI+CD,LEN3 THE CONTROL DATA @V200731 02975000
  3116. CCW X'00',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 02976000
  3117. CCW X'03',*-*,SILI,2 @V200731 02977000
  3118. SPACE 2 02978000
  3119. CNCL3066 CCW X'07',*-*,SILI+CC,1 ERASE SCREEN @V200731 02979000
  3120. CCW X'08',CRTWORD,SILI,1 NOW DISPLAY STATUS @V200731 02980000
  3121. SPACE 2 02981000
  3122. MORECCW1 CCW X'01',LAB3270C,SILI+CC,LEN2 THE CONTROL DATA @V200731 02982000
  3123. CCW X'03',*-*,SILI,2 @V200731 02983000
  3124. SPACE 2 02984000
  3125. ********************************************************************** 02985000
  3126. * FIRST DC ARE ADDRESSES FOR LINES 1 -6 02986000
  3127. * SECOND DC ARE ADDRESSES FOR LINES 17 - 12 02987000
  3128. * THIRD DC ARE ADDRESSES FOR LINES 13 - 18 02988000
  3129. * FOURTH DC ARE ADDRESSES FOR LINES 19 - 24 02989000
  3130. ********************************************************************* 02990000
  3131. SPACE 2 02991000
  3132. TABLE70 DS 0D @V200731 02992000
  3133. DC X'4040C150C260C3F0C540C650' @V200731 02993000
  3134. DC X'C760C8F04A404B504C604DF0' @V200731 02994000
  3135. DC X'4F405050D160D2F0D440D550' @V200731 02995000
  3136. DC X'D660D7F0D9405A505B605CF0' @V200731 02996000
  3137. SPACE 2 02997000
  3138. TABLGRAP EQU * @V200731 02998000
  3139. DC X'0A',AL3(READ66) ADDRESS OF THE READ SECTION @V200731 02999000
  3140. DC X'01',AL3(WRT66) ADDRESS OF THE WRITE SECTION @V200731 03000000
  3141. DC X'09',AL3(WRT66) ADDRESS OF THE WRITE SECTION @V200731 03001000
  3142. DC X'05',AL3(WRT66) ADDRESS OF THE WRITE SECTION @V200731 03002000
  3143. DC X'03',AL3(RETWORD) ADDRESS OF THE RETURN SECTION@V200731 03003000
  3144. SPACE 2 03004000
  3145. * X'5B60' - LINE 23, COL. 1 03005000
  3146. * X'5D6A' - LINE 24, COL. 59 03006000
  3147. SPACE 2 03007000
  3148. ********************************************************************** 03008000
  3149. WC6 EQU X'C2' WRITE CONTROL BIT 6 @V200731 03009000
  3150. AT7 EQU X'C1' ATTRIBUTE BIT 7 @V200731 03010000
  3151. AT2 EQU X'E0' ATTRIBUTE BIT 2 @V200731 03011000
  3152. LAC EQU X'C0' @V200731 03012000
  3153. SF EQU X'1D' START OF FIELD CONTROL @V200731 03013000
  3154. SBA EQU X'11' SET BUFFER ADDRESS @V200731 03014000
  3155. IC EQU X'13' INSERT CURSOR @V200731 03015000
  3156. EUA EQU X'12' ERASE UNPROTECTED @V200731 03016000
  3157. RA EQU X'3C' REPEAT TO ADDRESS @V200731 03017000
  3158. V EQU C'V' VIRTUAL RESERVE/RELEASE @V407466 03018000
  3159. SPACE 2 03019000
  3160. LAB3270A DC AL1(WC6),AL1(SBA),X'5B60',AL1(SF),AL1(AT7) @V200731 03020000
  3161. DC AL1(IC),AL1(EUA),X'5D6B',AL1(SF),AL1(AT2) @V200731 03021000
  3162. RUNLABEL DC CL20'RUNNING' @V200731 03022000
  3163. LEN EQU *-LAB3270A @V200731 03023000
  3164. LAB3270B DC AL1(WC6),AL1(SBA),X'5B60',AL1(SF),AL1(AT7) @V200731 03024000
  3165. DC AL1(IC),AL1(SBA),X'5D6B',AL1(SF),AL1(AT2) @V200731 03025000
  3166. REALABEL DC CL20'CP READ' @V200731 03026000
  3167. LEN1 EQU *-LAB3270B @V200731 03027000
  3168. LAB3270C DC AL1(WC6),AL1(SBA),X'5D6B',AL1(SF),AL1(AT2) @V200731 03028000
  3169. MORLABEL DC CL20'HOLDING' @V200731 03029000
  3170. LEN2 EQU *-LAB3270C @V200731 03030000
  3171. LAB3270D DC AL1(LAC),AL1(SBA),X'5B60' @V200731 03031000
  3172. LAB3270 DC AL1(WC6),AL1(SBA),X'0000' @V200731 03032000
  3173. LAB3270E DC AL1(WC6),AL1(SBA),X'4040',AL1(RA),X'5B60',X'00' @V200731 03033000
  3174. DC AL1(SF),AL1(AT7),AL1(IC),AL1(SBA) @V200731 03034000
  3175. DC X'5D6B',AL1(SF),AL1(AT2) @V200731 03035000
  3176. LEN3 EQU *-LAB3270E @V200731 03036000
  3177. SPACE 2 03037000
  3178. ********************************************************************* 03038000
  3179. PARM DC X'00' THE GRAPHIC FLAG BYTE @V200731 03039000
  3180. PARMATT EQU X'80' ATTENTION REQUEST @V200731 03040000
  3181. PARMGRP EQU X'40' GRAPHIC SUPPORT @V200731 03041000
  3182. PARMREA EQU X'20' READ REQUEST @V200731 03042000
  3183. PARMCLE EQU X'10' CLEAR/ERASE REQUEST @V200731 03043000
  3184. PARM327 EQU X'08' 3270 GRAPHIC @V200731 03044000
  3185. PARMNDA EQU X'04' NO DATA INDICATED @V200731 03045000
  3186. PARM01F EQU X'02' 01F REQUESTED @V200731 03046000
  3187. PARM321 EQU X'01' 3215/3210/1052 @V200731 03047000
  3188. ********************************************************************** 03048000
  3189. SPACE 2 03049000
  3190. ********************************************************************* 03050000
  3191. SBADDR DC AL1(00,00) CURRENT OUTPUT LINE COORDINATES @V200731 03051000
  3192. * FOR THE 03052000
  3193. * 3066 03053000
  3194. SBACP DC AL1(34,60) COORDINATES FOR SCREEN 'STATUS' @V200731 03054000
  3195. * WORD 03055000
  3196. SBAREAD DC AL1(33,00) COORDINATES FOR CURSOR POSITION @V200731 03056000
  3197. RDMIDATA DC XL6'00' READ DATA FROM 'MI' COMMAND @V200731 03057000
  3198. CPXYSTAT DC CL20' ' SCREEN 'STATUS' WORD @V200731 03058000
  3199. BLNKLINE DC XL140'00' CLEAR INPUT AREA FOR DATA @VM08604 03059000
  3200. BLNKZERO DC CL140' ' BLANKS FOR READ AREA @VM08604 03060000
  3201. GRAPHSAV DC 8F'00' SAVE AREA FOR GRAPHIC SUPPORT @V200731 03061000
  3202. SAVEAREA DC 2F'00' SAVE AREA FOR GRAPHIC DATA @V200731 03062000
  3203. * REGISTERS 03063000
  3204. ********************************************************************* 03064000
  3205. SAVEPNEW DC D'0' SAVE AREA FOR THE PROGRAN NEW PSW 03065000
  3206. RETPSW DC X'00040000',A(UNOTABC) PROGRAM CHECK RETURN PSW 03066000
  3207. MASK DC XL8'AAAAAAAAAAAAAAAA' 03067000
  3208. CONWAIT DC X'FF06000000' 03068000
  3209. DC AL3(CONRET) 03069000
  3210. IOWPSW DC X'FF06000000' 03070000
  3211. DC AL3(TESTSTAT) 03071000
  3212. CMSPSW DC X'00040000' 03072000
  3213. DC A(MOVEPSW) 03073000
  3214. READCCW CCW 2,READBUF1,X'20',80 03074000
  3215. CONCCW CCW X'09',MSG02+6,X'60',44 03075000
  3216. CONCCW1 CCW X'0A',READBUF1,X'20',72 03076000
  3217. SNSE4CCW CCW X'E4',SENSE,SILI,7 HRC106DK 03076100
  3218. SENSECCW CCW 04,SENSE,SILI,32 HRC011DK 03077490
  3219. SPACECCW CCW X'09',BLANK,X'20',1 03078000
  3220. CONCCWR CCW X'0A',READBUF1,X'20',72 03079000
  3221. WCCW1 CCW 7,SKSERID,CC,6 03080000
  3222. WCCW2 CCW 49,SKSERID+2,CC,5 03081000
  3223. WCCW3 CCW 8,WCCW2,CC,1 03082000
  3224. WCCW4 CCW 5,BUFFER1,0,4096 03083000
  3225. RCCW1 CCW 7,VOLSKSR,CC,6 03084000
  3226. RCCW2 CCW 49,VOLSKSR+2,CC,5 03085000
  3227. RCCW3 CCW 8,RCCW2,CC,1 03086000
  3228. RCCW4 CCW 6,VOLLABLE,CC,80 03087000
  3229. RCCW5 CCW 49,ALLSKSR+2,CC,5 03088000
  3230. RCCW6 CCW 8,RCCW5,CC,1 03089000
  3231. RCCW7 CCW 6,ALLOCBUF,0,1024 03090000
  3232. DASDERR1 CCW 19,0,CC+SILI,1 03091000
  3233. DASDERR2 CCW 08,*-*,0,0 03092000
  3234. READHAR0 CCW 07,ALTSKADD,CC,6 SEEK @V56BDA8 03093000
  3235. CCW 26,0,CC+SILI+SKIP,5 READ HA @V56BDA8 03094000
  3236. CCW 22,ALTSKAD2+2,SILI,4 READ R0 @V56BDA8 03095000
  3237. ALTSEEK CCW 07,ALTSKAD2,CC+SILI,6 SEEK (TO ALTERNATE) @V56BDA8 03096000
  3238. CCW 49,ALTSKADD+2,CC+SILI,5 SEARCH ID EQ (VERIFY @V56BDA8 03097000
  3239. * BACKWARD POINTING R0) 03098000
  3240. CCW 08,*-8,0,0 TIC *-8 @V56BDA8 03099000
  3241. ALTTIC CCW 08,*-*,0,0 TIC @V56BDA8 03100000
  3242. CONFCB DC CL8'TYPLIN' 03101000
  3243. DC AL1(1) 03102000
  3244. DC AL3(0) 03103000
  3245. DC CL1'B' 03104000
  3246. DC X'00' 03105000
  3247. DC AL2(0) 03106000
  3248. CPUID DC 1F'0' 03107000
  3249. CPUMODEL DC 1F'0' 03108000
  3250. INFCB DC CL8'STATE' 03109000
  3251. DC CL8'USER' 03110000
  3252. DC CL8'DIRECT' 03111000
  3253. DC CL2'* ' 03112000
  3254. DC H'0' 03113000
  3255. INFCBUF DC F'0' 03114000
  3256. DC F'80' 03115000
  3257. DC CL2'F' 03116000
  3258. DC H'1' 03117000
  3259. DC F'0' 03118000
  3260. READIOB DC X'8060' STOP ON ERROR AND REPEAT CCW 03119000
  3261. READADD DC X'000C' 03120000
  3262. DC A(READCCW) 03121000
  3263. DC A(READERR) 03122000
  3264. DC 2F'00' 03123000
  3265. DASDIOB DC X'8060' WAIT FOR DEVICE END 03124000
  3266. DASDADD DC X'0000' 03125000
  3267. DC A(0) 03126000
  3268. DC A(DASDERR) 03127000
  3269. DC 2F'0' 03128000
  3270. CONIOB DC X'A000' LAST IOB 03129000
  3271. CONADD DC X'0009' 03130000
  3272. DC A(CONCCW) 03131000
  3273. DC A(SETUPERR) 03132000
  3274. DC 2F'0' 03133000
  3275. CMDTABLE DC CL8'ABCDEFGH' 03134000
  3276. DC XL8'8040201008040201' 03135000
  3277. LASTCARD DC XL4'00' 03136000
  3278. CURRCARD DC XL4'00' 03137000
  3279. NEXTCARD DC XL4'00' 03138000
  3280. CURPOINT DC A(0) POINTER TO CURRANT SCAN LINE 03139000
  3281. CURCOUNT DC AL2(0) COUNT OF BYTES NOT SCANED IN CURRANT BUFF 03140000
  3282. CURBUF DC A(READBUF1) POINTER TO THE CURRANT INPUT BUFFER 03141000
  3283. NEXTBUF DC A(READBUF2) POINTER TO THE NEXT INPUT BUFFER 03142000
  3284. DIRSIZE DC AL4(UDIRSIZE*8) 03143000
  3285. UDIRPAGE DC A(0) THE DASD ADDRESS OF THE BUFFER PAGE 03144000
  3286. UMACPAGE DC A(0) THE DASD ADDRESS OF THE BUFFER PAGE 03145000
  3287. UDEVPAGE DC A(0) THE DASD ADDRESS OF THE BUFFER PAGE 03146000
  3288. READBUF1 DC CL80' ' CARD INPUT BUFFER 03147000
  3289. READBUF2 DC CL80' ' CARD INPUT BUFFER 03148000
  3290. VOLLABLE DC CL80' ' 03149000
  3291. ALLOCATE DC A(ALLOCBUF) 03150000
  3292. DASDCYL DC X'0000' 03151000
  3293. PAGENUM DC X'FF' 03152000
  3294. DEVCODE DC X'00' 03153000
  3295. SPACE 03153005
  3296. * DEVICE NAMES 03153010
  3297. NAM3138 DC CL8'3138' GRAPHIC DISPLAY ==> 3138 @VA11551 03153015
  3298. NAM3148 DC CL8'3148' GRAPHIC DISPLAY ==> 3148 @VA11551 03153020
  3299. SPACE 2 03153040
  3300. * CONTROL DATA FOR FAST I/O 03153080
  3301. SPACE 1 03153120
  3302. FIOMNMX DC F'800' MINIMUM BUFFER SIZE (BYTES) @VA09965 03153160
  3303. DC F'12000' MAXIMUM BUFFER SIZE (BYTES) @VA09965 03153200
  3304. FIOGMANS DS 0F @VA09965 03153240
  3305. FIOGMAD DC F'0' BUFFER ADDR RETURNED BY GETMAIN @VA09965 03153280
  3306. FIOGMSZ DC F'0' BUFFER SIZE ALLOCATED (BYTES) @VA09965 03153320
  3307. SPACE 1 03153360
  3308. FIORSAV DC 3F'0' SAVE AREA FOR R2 TO R4 @VA09965 03153400
  3309. FIORECCT DC F'0' RECORD COUNT (NO. RECORDS READ) @VA09965 03153440
  3310. FIOCURPT DC F'0' CURRENT RECORD POINTER @VA09965 03153480
  3311. FIOCURCT DC F'0' CURRENT RECORD COUNT @VA09965 03153520
  3312. SPACE 1 03153560
  3313. FIOFLAGS DC X'00' FAST I/O FLAGS @VA09965 03153600
  3314. FIOEOF EQU X'80' FAST I/O EOF @VA09965 03153640
  3315. FIOINIT EQU X'40' FAST I/O INIT. (DONE IF ON) @VA09965 03153680
  3316. SPACE 1 03153720
  3317. * FAST I/O FCB 03153760
  3318. FIOFCB FSCB 'USER DIRECT *' @VA09965 03153800
  3319. SPACE 3 03154000
  3320. SPACE 2 03154040
  3321. *********************************************************************** 03154080
  3322. * TRANSLATE LOWER CASE ALPHABET CHARACTERS TO UPPER CASE * 03154120
  3323. *********************************************************************** 03154160
  3324. UPCASE DC X'000102030405060708090A0B0C0D0E0F' X'00'-X'0F' @VA12884 03154200
  3325. DC X'101112131415161718191A1B1C1D1E1F' X'10'-X'1F' @VA12884 03154240
  3326. DC X'202122232425262728292A2B2C2D2E2F' X'20'-X'2F' @VA12884 03154280
  3327. DC X'303132333435363738393A3B3C3D3E3F' X'30'-X'3F' @VA12884 03154320
  3328. DC X'404142434445464748494A4B4C4D4E4F' X'40'-X'4F' @VA12884 03154360
  3329. DC X'505152535455565758595A5B5C5D5E5F' X'50'-X'5F' @VA12884 03154400
  3330. DC X'606162636465666768696A6B6C6D6E6F' X'60'-X'6F' @VA12884 03154440
  3331. DC X'707172737475767778797A7B7C7D7E7F' X'70'-X'7F' @VA12884 03154480
  3332. DC X'80C1C2C3C4C5C6C7C8C98A8B8C8D8E8F' X'80'-X'8F' @VA12884 03154520
  3333. DC X'90D1D2D3D4D5D6D7D8D99A9B9C9D9E9F' X'90'-X'9F' @VA12884 03154560
  3334. DC X'A0A1E2E3E4E5E6E7E8E9AAABACADAEAF' X'A0'-X'AF' @VA12884 03154600
  3335. DC X'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF' X'B0'-X'BF' @VA12884 03154640
  3336. DC X'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF' X'C0'-X'CF' @VA12884 03154680
  3337. DC X'D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF' X'D0'-X'DF' @VA12884 03154720
  3338. DC X'E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF' X'E0'-X'EF' @VA12884 03154760
  3339. DC X'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF' X'F0'-X'FF' @VA12884 03154800
  3340. DS 0D 03155000
  3341. ENTRY DMKDIRED 03156000
  3342. SPACE 03157000
  3343. DMKDIRED EQU * END OF THE LOAD MODULE FOR CMS 03158000
  3344. SPACE 2 03159000
  3345. ORG DMKDIR+12288 BUFFERS USED TO BUILD DIRECTORY @V200731 03160000
  3346. SPACE 03161000
  3347. BUFFER1 DS XL4096 03162000
  3348. BUFFER2 DS XL4096 03163000
  3349. BUFFER3 DS XL4096 03164000
  3350. SPACE 1 03165000
  3351. ALLOCBUF DS XL4096 HRC106DK 03166100
  3352. SPACE 3 03167000
  3353. BUFFSIZE EQU (*-DMKDIRED)/8 SIZE OF BUFFER WORK AREA 03168000
  3354. EJECT 03169000
  3355. IOB DSECT 03170000
  3356. IOBSTAT DS X'80' STATUS OF IOB 03171000
  3357. IOBOPT DS 1X IOB FLAGS 03172000
  3358. IOBUADD DS 1H UNIT ADDRESS OF DEVICE 03173000
  3359. IOBCCW DS 1F POINTER TO CCW 03174000
  3360. IOBERROR DS A ADDRESS OF IO ERROR ROUTINE 03175000
  3361. IOBCSW DS 2F CSW OF IO ERROR STACKED 03176000
  3362. IOBSIZE EQU *-IOB LENGTH OF IOB. @V56BDA8 03177000
  3363. SPACE 03178000
  3364. * BITS USED IN IOBOPT 03179000
  3365. IOBDEW EQU X'80' WAIT FOR DEVICE END INTERRUPT 03180000
  3366. IOBERST EQU X'40' STOP ON IOERROR AND WAIT FOR NEXT INT 03181000
  3367. IOBEEXIT EQU X'20' REPEAT CCW ON ERROR 03182000
  3368. SPACE 03183000
  3369. * BITS USED IN IOBSTAT 03184000
  3370. IOBST EQU X'80' IO UNIT IS TO BE STARTED 03185000
  3371. IOBSTACK EQU X'40' IOERROR HAS BEEN STACKED 03186000
  3372. IOBLAST EQU X'20' LAST IOB 03187000
  3373. IOBNOPER EQU X'10' DEVICE IS NOT OPERATIONAL 03188000
  3374. SPACE 2 03189000
  3375. NAMETABL DSECT 03190000
  3376. NAMEFLAG DS X'00' FLAGS 03191000
  3377. NAMETYPC DS X'00' DEVICE CODE 03192000
  3378. NAMETYPE DS X'00' DEVICE TYPE 03193000
  3379. NAMEFTR DS X'00' DEVICE FEATURE CODE 03194000
  3380. NAME DS CL8 NAME OF DEVICE OR ROUTINE 03195000
  3381. NAMESIZE EQU *-NAMETABL 03196000
  3382. ORG NAMETYPC 03197000
  3383. NAMEROUT DS AL3 ADDRESS OF ROUTINE 03198000
  3384. SPACE 03199000
  3385. * BITS USED IN NAMEFLAG 03200000
  3386. NAMELAST EQU X'80' LAST ENTRY IN TABLE 03201000
  3387. NAMECON EQU X'40' ENTRY IS A CONSTANT 03202000
  3388. SPACE 03203000
  3389. SPACE 1 03206100
  3390. FSCBD @VA09965 03206200
  3391. EJECT 03207000
  3392. COPY UDIRECT 03208000
  3393. COPY EQU 03209000
  3394. COPY DEVTYPES 03210000
  3395. COPY RBLOKS HRC106DK 03210100
  3396. END DMKDIRCT 03211000
ibm/vm370-lib/cp/dmkdir.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator