Table of Contents

DMKRGB Source

References

Source Listing

DMKRGB.ASSEMBLE.txt
  1. RGB TITLE 'DMKRGB (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. COPY OPTIONS @V305731 00003000
  4. COPY LOCAL @V305731 00004000
  5. EJECT 00005000
  6. ************************************************************* 00006000
  7. * 00007000
  8. * MODULE NAME - 00008000
  9. * 00009000
  10. * DMKRGB 00010000
  11. * 00011000
  12. * CONTENTS - 00012000
  13. * 00013000
  14. * DMKRGBIC - CONTASK INITIALIZATION AND SCHEDULING 00014000
  15. * DMKRGBEN - ENABLE OR DISABLE OF BISYNC LINES & REMOTE STATIONS 00015000
  16. * 00016000
  17. * FUNCTION - 00017000
  18. * 00018000
  19. * THIS MODULE PROVIDES SUPPORT FOR THE 3270 REMOTE DISPLAY 00019000
  20. * AND PRINTER STATIONS. THE MODULE HANDLES INTERRUPTS AND CCW 00020000
  21. * PROCESSING FOR THE REMOTE STATIONS INCLUDING MESSAGE HANDLING 00021000
  22. * AND SCREEN MANAGEMENT. 00022000
  23. SPACE 2 00023000
  24. DMKRGB START , @V305731 00024000
  25. SPACE 1 00025000
  26. USING PSA,R0 @V305731 00026000
  27. USING TRQBLOK,R4 @V305731 00027000
  28. USING CONTASK,R6 @V305731 00028000
  29. USING BSCBLOK,R5 @V305731 00029000
  30. USING RDEVBLOK,R8 @V305731 00030000
  31. USING IOBLOK,R10 @V305731 00031000
  32. USING VMBLOK,R11 @V305731 00032000
  33. USING NICBLOK,R9 @V305731 00033000
  34. SPACE 1 00034000
  35. EXTRN DMKIOSQR,DMKSTKCP,DMKSCHRT,DMKTBLGR @V305731 00035000
  36. EXTRN DMKTBLRG @VA06170 00035100
  37. EXTRN DMKQCNET,DMKRGAIN,DMKBOXBX,DMKIOSHA @V346931 00036100
  38. EXTRN DMKTBMZO @VM03172 00037000
  39. EXTRN DMKTBMTO @V387398 00037100
  40. SPACE 1 00038000
  41. ENTRY DMKRGBIC,DMKRGBEN,DMKRGBSN,DMKRGBMT @V305731 00039000
  42. EXTRN DMKPTRAN @VA07391 00039100
  43. EJECT 00040000
  44. ************************************************************* 00041000
  45. * 00042000
  46. * SUBROUTINE NAME - 00043000
  47. * 00044000
  48. * DMKRGBIC 00045000
  49. * 00046000
  50. * FUNCTION - 00047000
  51. * TO INITIALIZE THE CONTASK FIELDS WHICH COMPRISE THE 00048000
  52. * BINARY SYNCHRONOUS TRANSMISSION PROTOCOL HEADER AND 00049000
  53. * ENDING CHARACTER FOR THE 3270 REMOTE SUPPORT. 00050000
  54. * 00051000
  55. * ATTRIBUTES - 00052000
  56. * 00053000
  57. * SERIALLY REUSEABLE, RESIDENT, ENTERED VIA GOTO 00054000
  58. * 00055000
  59. * ENTRY CONDITIONS - 00056000
  60. * 00057000
  61. * GR 12 = ADDRESS OF DMKRGBIC 00058000
  62. * GR 11 = ADDRESS OF A VALID VMBLOK 00059000
  63. * GR 8 = ADDRESS OF THE LINE RDEVBLOK 00060000
  64. * 00061000
  65. * EXIT CONDITIONS - 00062000
  66. * 00063000
  67. * EXIT IS MADE VIA GOTO DMKDSPCH AFTER STARTING ANY QUEUED 00064000
  68. * CONTASK REQUESTS FOR STATIONS AND PERFORMING OTHER 00065000
  69. * MESSAGE PROCESSING. 00066000
  70. * 00067000
  71. * CALL TO OTHER ROUTINES - 00068000
  72. * 00069000
  73. * DMKFREE - TO ALLOCATE FREE STORAGE FOR CONTASK'S 00070000
  74. * DMKFRET - TO RETURN ALLOCATED STORAGE 00071000
  75. * DMKIOSQR - TO START I/O OPERATION TO BISYNC LINE 00072000
  76. * DMKQCNET - TO RETURN CONTASK AT COMPLETION 00073000
  77. * DMKRGAIN - TO SECONDARY INTERRUPT HANDLER 00074000
  78. * DMKQCNET - RETURN CONTASK 00074200
  79. * DMKRGAIN - TO SECOND LEVEL INTERRUPT HANDLER 00074400
  80. * DMKIOSHA - HALT THE SWITCHED LINE 00074600
  81. * 00075000
  82. * EXTERNAL REFERENCES - 00076000
  83. * 00077000
  84. * DMKBOXBX - GET BUFFER ADDRESSES FOR VM LOGO 00078000
  85. * DMKTBMZO - APL 3270 COMPOUND CHARACTER TABLE 00078100
  86. * DMKTBMTO - TEXT 3270 COMPOUND CHARACTER TABLE 00078200
  87. * 00079000
  88. * TABLES / WORK AREAS - 00080000
  89. * 00081000
  90. * NONE 00082000
  91. * 00083000
  92. * NOTES - 00084000
  93. * 00085000
  94. * DMKRGBIC IS ENTERED VIA CPEXBLOK OR GOTO WHENEVER 00086000
  95. * DMKQCN HAS STACKED A CONTASK ON THE LINE RDEVBLOK, 00087000
  96. * AND THE CONTASK CHAIN WAS PREVIOUSLY EMPTY, OR IF 00088000
  97. * THE CONTASK HAD THE 'PRIORITY' FLAG SET. 00089000
  98. * 00090000
  99. * REGISTER USAGE - 00091000
  100. * 00092000
  101. * GR14,15 LINKAGE REGISTERS 00093000
  102. * GR12,13 MODULE BASE REGISTERS 00094000
  103. * GR11 = VMBLOK ADDRESSABILITY 00095000
  104. * GR10 = IOBLOK ADDRESSABILITY 00096000
  105. * GR 9 = NICBLOK ADDRESSABILITY 00097000
  106. * GR 8 = RDEVBLOK ADDRESSABILITY 00098000
  107. * GR 7 = INTERNAL LINKAGE REGISTER 00099000
  108. * GR 6 = CONTASK ADDRESSABILITY 00100000
  109. * GR 5 = BSCBLOK ADDRESSABILITY 00101000
  110. * GR0-4= WORK REGISTERS 00102000
  111. * 00103000
  112. * OPERATION - 00104000
  113. * 00105000
  114. * I. HANDLE CONTASKS QUEUED OFF RDEVBLOK (RDEVCON) 00106000
  115. * 00107000
  116. * 1. IF THE LINE IS NOT AVAILABLE, EXIT. 00108000
  117. * 00109000
  118. * 2. IF THERE ARE NO MORE CONTASKS TO BE PROCESSED, 00110000
  119. * ATTEMPT TO START OUTPUT TO THE LINE VIA RGSTART. 00111000
  120. * 00112000
  121. * 3. IF THE RESOURCE SPECIFIED BY THE VMTRMID FIELD IN 00113000
  122. * THE VMBLOK (FROM 'CONUSER') IS NOT AVAILABLE, SET 00114000
  123. * RETURN CODE 12 IN THE RESPONSE SAVEAREA (IF ANY), 00115000
  124. * AND RETURN THE CONTASK VIA CALL DMKQCNET. 00116000
  125. * 00117000
  126. * 4. CONTASKS ARE QUEUED OFF THE RESOURCES (NICBLOKS) THAT HAVE 00118000
  127. * THE SAME VMBLOK ADDRESS CONTAINED IN EACH CONTASK. 00119000
  128. * 00120000
  129. * II. HANDLE THE CONTASKS FOR OUTPUT AND INPUT REQUEST (RGSTART) 00121000
  130. * 00122000
  131. * 1. ATTEMPT TO START OUTPUT TO THE BISYNC LINE. IF THE BISYNC 00123000
  132. * LINE IS EITHER NOT READY OR ALREADY BUSY, EXIT. 00124000
  133. * 00125000
  134. * 2. DETERMINE IF THERE IS AN AVAILABLE STATION ON THE 00126000
  135. * CONTROL UNIT BY SCANNING THE ENTIRE NICBLOK LIST LOOKING 00127000
  136. * FOR THE FOLLOWING CONDITIONS: 00128000
  137. * 00129000
  138. * A. THE RESOURCE HAS AT LEAST ONE CONTASK QUEUED OFF THE 00130000
  139. * NICBLOK AND THE STATION IS NOT IN CONTROL MODE. 00131000
  140. * 00132000
  141. * B. IF NO STATIONS ARE AVAILABLE ON THE CONTROL UNIT, 00133000
  142. * THE CCWS ARE SET UP TO DO A GENERAL POLL OPERATION 00134000
  143. * TO THE REMOTE CONTROL UNIT TO READ DATA FROM A 00135000
  144. * STATION VIA A CALL TO DMKIOSQR. 00136000
  145. * 00137000
  146. * 3. THE SYNCHRONIZATION CONTASK IS RETURNED TO THE SYSTEM AND 00138000
  147. * THE NEXT CONTASK (IF ANY) IS PROCESSED FOR THIS STATION. 00139000
  148. * 00140000
  149. * 4. THE DIAGNOSE CONSOLE OUTPUT CONTASK IS PROCESSED IN THE 00141000
  150. * FOLLOWING WAY: 00142000
  151. * 00143000
  152. * A. GET LINE COORDINATE FROM THE CONTASK, SET DIAGNOSE 00144000
  153. * WRITE FLAG IN NICBLOK (NICDIAG), AND STORE THE LINE 00145000
  154. * COORDINATE IN THE NICBLOK (NICCORD). 00146000
  155. * 00147000
  156. * B. BUILD THE CONTROL CONTASK TO WRITE DATA TO THE REMOTE 00148000
  157. * DISPLAY STATION AND GO TO STEP 8. 00149000
  158. * 00150000
  159. * 5. WHEN THE CONTASK IS JUST AN OUTPUT CONTASK AND THE DISPLAY 00151000
  160. * SCREEN IS FULL, RESET TIMER REQUEST (IF PRESENT), BUILD 00152000
  161. * A CONTROL CONTASK TO WRITE THE STATUS MESSAGE (MORE), 00153000
  162. * AND GO TO STEP 8. 00154000
  163. * 00155000
  164. * 6. AN OUTPUT CONTASK AND THE DISPLAY SCREEN IS NOT FULL, 00156000
  165. * SETUP CCWS TO WRITE DATA TO THE DISPLAY STATION AND 00157000
  166. * GO TO STEP 8. 00158000
  167. * 00159000
  168. * 7. ON AN INPUT CONTASK, BUILD THE CCWS TO WRITE THE STATUS 00160000
  169. * (READ) TO THE DISPLAY SCREEN, SET THE STATION IN 00161000
  170. * CONTROL MODE, AND GO TO STEP 8. 00162000
  171. * 00163000
  172. * 8. GET STORAGE NECCESARY TO BUILD AN IOBLOK. THE IOBLOK IS 00164000
  173. * USED TO PERFORM THE PROCESSING OF ALL I/O REQUESTS TO 00165000
  174. * THE STATION AND BISYNC LINE. THE FOLLOWING FUNCTIONS ARE 00166000
  175. * HANDLED: 00167000
  176. * 00168000
  177. * A. SELECTION OF STATIONS 00169000
  178. * B. GENERAL POLLING OF 3270 CONTROL UNIT 00170000
  179. * C. SPECIFIC POLLING OF STATIONS 00171000
  180. * D. WRITING OF DATA TO THE STATIONS 00172000
  181. * 00173000
  182. * 9. DATA CHAINING OF WRITE OPERATIONS ONLY TAKES PLACE IF 00174000
  183. * THE FOLLOWING CONDITIONS DO NOT EXIST: 00175000
  184. * 00176000
  185. * A. A CONTROL TASK 00177000
  186. * B. A DIAGNOSE CONSOLE WRITE REQUEST 00178000
  187. * C. ONLY ONE CONTASK IS QUEUED OFF THE RESOURCE (NICBLOK) 00179000
  188. * D. THE CONTASK REPRESENTS A HIGH PRIORITY MESSAGE 00180000
  189. * E. NON-OUTPUT CONTASKS 00181000
  190. * 00182000
  191. * 10. SET UP CCWS TO WRITE THE STATUS WORD RUNNING (IF NEEDED) 00183000
  192. * AND THE READ CCW TO READ REPLY FROM REMOTE STATION. 00184000
  193. * 00185000
  194. * 11. SET UP IOBLOK BEFORE CALLING DMKIOSQR TO WRITE THE DATA 00186000
  195. * ACROSS BISYNC LINE. 00187000
  196. * 00188000
  197. * NOTES: 00188100
  198. * 00188200
  199. * 3275 SWITCHED OPERATION 00188300
  200. * . INSTEAD OF DOING A POLLING OPERATION AS ON A LEASED LINE 00188400
  201. * THE SUPPORT MUST ALWAYS HAVE A READ UP ON THE SWITCHED LINE. 00188500
  202. * 00188600
  203. * . INSTEAD OF DOING A SELECTION OPERATION AS ON A LEASED LINE 00188700
  204. * THE SUPPORT MUST BID FOR THE LINE BY SENDING AN ENQ 00188800
  205. * CHARACTER TO THE STATION. 00188900
  206. *************************************************************** 00189000
  207. EJECT 00190000
  208. USING DMKRGBIC,R12 @V305731 00191000
  209. DMKRGBIC DS 0D @V305731 00192000
  210. LM R12,R13,RGBBASE SETUP MODULE ADDRESSABILITY @V305731 00193000
  211. USING DMKRGB,R12,R13 @V305731 00194000
  212. SPACE 00195000
  213. SWITCH ENSURE WE ARE ON THE MAIN PROC @VA07391 00195100
  214. TM RDEVSTAT,RDEVDISA+RDEVDED+RDEVNRDY IS LINE AVAIL@V305731 00196000
  215. BNZ GODSPCH NO, GO BACK TO DISPATCHER @V305731 00197000
  216. L R5,RDEVBSC GET ADDRESS OF BSCBLOK @V305731 00198000
  217. SLR R10,R10 CLEAR IOBLOK REGISTER @V305731 00199000
  218. NEXTASK EQU * @V305731 00200000
  219. LA R7,GODSPCH RETURN ADDRESS WHEN DEVICE START @V305731 00201000
  220. L R6,RDEVCON PICK UP POINTER TO CONTASK @V305731 00202000
  221. LTR R6,R6 IS THERE A CONTASK PTR. ? @V305731 00203000
  222. BZ RGSTART TRY TO DO A START I/O TO THE LINE@V305731 00204000
  223. L R1,CONUSER LOAD ADDR OF NEW VMBLOK @V407511 00204100
  224. CR R1,R11 SAME USER @VA07454 00204200
  225. BE NONEED YES, NO NEED TO SWITCH @VA07454 00204300
  226. SWTCHVM OPT=STAY SWITCH VMBLOK LOCKING & CHARGING @V407511 00204600
  227. B NEXTASK MAKE SURE ENVIRON HASN'T CHANGED @VA07454 00204700
  228. NONEED DS 0H @VA07454 00204800
  229. L R1,CONPNT REMOVE FIRST CONTASK FROM CHAIN @V305731 00205000
  230. ST R1,RDEVCON SAVE NEXT CONTASK POINTER @V305731 00206000
  231. LA R7,NEXTASK RETURN ADDR. IF RESOURCE INVALID @V305731 00210000
  232. LH R9,VMTRMID GET RESOURCE ID OF USER @V305731 00211000
  233. N R9,F4095 CLEAR THE LINE CODE PORTION @V305731 00212000
  234. CH R9,RDEVMAX VALIDATE THE RESOURCE ID @V305731 00213000
  235. BH LINEFAL INVALID RESOURCE FOR THIS USER @V305731 00214000
  236. MH R9,=AL2(NICSIZE*8) COMPUTE NICBLOK LIST INDEX @V305731 00215000
  237. AL R9,RDEVNICL INDEX TO THE ACTUAL NICBLOK @V305731 00216000
  238. TM NICSTAT,NICDISA IS RESOURCE AVAILABLE ? @V305731 00217000
  239. BNZ LINEFAL NO, RETURN CONTASK @V305731 00218000
  240. BAL R7,QUEUE QUEUE CONTASK OFF NICBLOK @V305731 00219000
  241. BAL R7,NEXTASK GET NEXT CONTASK FROM RDEVBLOK @V305731 00220000
  242. SPACE 00221000
  243. LINEFAL EQU * @V305731 00222000
  244. LA R2,12(0) SET RETURN CODE FOR USER @V305731 00223000
  245. BAL R3,SETRETN SET RETURN CODE (IF POSSIBLE) @V305731 00224000
  246. L R0,CONPNT GET THE NEXT CONTASK IF ANY @V305731 00225000
  247. ST R0,RDEVCON SET NEXT CONTASK FOR PROCESSING @V305731 00226000
  248. SR R0,R0 CLEAR @V305731 00227000
  249. ST R0,CONPNT CLEAR CONTASK POINTER @V305731 00228000
  250. CALL DMKQCNET RETURN CONTASK @V305731 00229000
  251. BR R7 RETURN @V305731 00230000
  252. SPACE 1 00231000
  253. RGIGNORE EQU * RELEASE IOBLOK & IOERBLOK @V305731 00232000
  254. BAL R7,FRETIOB GO RELEASE STORAGE FOR IOBLOK @V305731 00233000
  255. GODSPCH EQU * EXIT TO THE DISPATCHER @V305731 00234000
  256. GOTO DMKDSPCH @V305731 00235000
  257. SPACE 3 00236000
  258. QUEUE EQU * @V305731 00237000
  259. LA R1,NICQPNT-(CONPNT-CONTASK) INITIAL BACK PTR @V305731 00238000
  260. QUEUECHN EQU * @V305731 00239000
  261. LR R2,R1 SAVE THE BACK POINTER @V305731 00240000
  262. L R1,CONPNT-CONTASK(,R2) GET NEXT CONTASK, IF ANY @V305731 00241000
  263. LTR R1,R1 IS THIS THE END OF THE CHAIN @V305731 00242000
  264. BP QUEUECHN NO, CAN NOT INSERT HERE @V305731 00243000
  265. ST R6,CONPNT-CONTASK(,R2) PUT CONTASK IN CHAIN @V305731 00244000
  266. ST R1,CONPNT SAVE POINTER TO NEXT CONTASK @V305731 00245000
  267. BR R7 RETURN @V305731 00246000
  268. SPACE 2 00247000
  269. SETRETN EQU * @V305731 00248000
  270. TM CONSTAT,CONRESP RESPONSE EXPECTED ? @V305731 00249000
  271. BZR R3 NO, RETURN @V305731 00250000
  272. L R1,CONRETN GET RETURN SAVEAREA ADDRESS @V305731 00251000
  273. ST R2,SAVER2-SAVEAREA(R1) SET RETURN CODE @V305731 00252000
  274. BR R3 RETURN @V305731 00253000
  275. EJECT 00254000
  276. ************************************************************* 00255000
  277. * 00256000
  278. * SUBROUTINE NAME - 00257000
  279. * 00258000
  280. * DMKRGBEN 00259000
  281. * 00260000
  282. * FUNCTION - 00261000
  283. * 00262000
  284. * TO EXECUTE ENABLE OR DISABLE OF BISYNC LINES AND 3270 00263000
  285. * REMOTE STATIONS. 00264000
  286. * 00265000
  287. * ATTRIBUTES - 00266000
  288. * 00267000
  289. * SERIALLY REUSEABLE, RESIDENT, ENTERED VIA SVC 00268000
  290. * 00269000
  291. * ENTRY CONDITIONS - 00270000
  292. * 00271000
  293. * GR13 = ADDRESS OF A STANDARD SAVEAREA 00272000
  294. * GR12 = ADDRESS OF DMKRGBEN 00273000
  295. * GR11 = ADDRESS OF USER VMBLOK 00274000
  296. * GR 9 = ADDRESS OF THE NICBLOK ON SVC ENTRY 00275000
  297. * GR 8 = ADDRESS OF THE LINE RDEVBLOK 00276000
  298. * GR 2 = PARAMETER FIELD 00277000
  299. * GR 0 = INDICATE BISYNC LINE OR REMOTE STATION 00278000
  300. * 00279000
  301. * EXIT CONDITIONS - 00280000
  302. * 00281000
  303. * EXIT IS MADE VIA A GOTO DMKDSPCH 00282000
  304. * CC = 0 -> REQUEST WAS SUCCESSFUL 00283000
  305. * CC = 2 -> EITHER THE SPECIFIED RESOURCE WAS INVALID, 00284000
  306. * THE LINE WAS NOT AVAILABLE, THE RESOURCE WAS 00285000
  307. * NOT AVAILABLE, OR A LINE FAILURE OCCURRED. 00286000
  308. * 00287000
  309. * CALLS TO OTHER ROUTINES - 00288000
  310. * 00289000
  311. * DMKSTKCP - TO STACK A CPEXBLOK FOR A LATER EXIT. 00290000
  312. * DMKFREE - TO ALLOCATE STORAGE FOR THE CONTASK. 00291000
  313. * DMKRGBIC - TO INITIATE I/O TO THE LINE. 00292000
  314. * 00293000
  315. * EXTERNAL REFERENCES - 00294000
  316. * 00295000
  317. * DMKBOXBX - GET BUFFER ADDRESSES FOR VM LOGO 00296000
  318. * 00297000
  319. * TABLES / WORK AREAS - 00298000
  320. * 00299000
  321. * NONE 00300000
  322. * 00301000
  323. * NOTES - 00302000
  324. * 00303000
  325. * NONE 00304000
  326. * 00305000
  327. * REGISTER USAGE - 00306000
  328. * 00307000
  329. * GR14,15 LINKAGE REGISTERS 00308000
  330. * GR13 = SAVEAREA ADDRESSABILITY 00309000
  331. * GR12 = DMKRGB BASE REGISTER 00310000
  332. * GR11 = VMBLOK ADDRESSABILITY 00311000
  333. * GR10 = IOBLOK ADDRESSABILITY (NOT USED) 00312000
  334. * GR 9 = NICBLOK ADDRESSABILITY (SVC ONLY) 00313000
  335. * GR 8 = RDEVBLOK ADDRESSABILITY 00314000
  336. * GR 7 = INTERNAL LINKAGE REGISTER 00315000
  337. * GR 6 = CONTASK ADDRESSABILITY 00316000
  338. * GR 5 = BSCBLOK ADDRESSABILITY 00317000
  339. * GR0-4= WORK REGISTERS 00318000
  340. * 00319000
  341. * OPERATION - 00320000
  342. * 00321000
  343. * 1. IF THE BISYNC LINE IS NOT AVAILABLE, SET RETURN REGISTER 00322000
  344. * TO 12, CONDITION CODE TO 2 AND RETURN TO CALLER. 00323000
  345. * 00324000
  346. * 2. IF THE REQUEST IS FOR ENABLING OR DISABLING THE BISYNC 00325000
  347. * LINE (REGISTER 0 = X'FF' IN LOW ORDER BYTE), THE FOLLOWING 00326000
  348. * FUNCTIONS ARE PERFORMED: 00327000
  349. * 00328000
  350. * A. GET A CONTROL CONTASK, BUILD THE CCWS FOR ENABLE OR 00329000
  351. * DISABLE FUNCTION AND QUEUE IT OFF THE CONTROL UNIT 00330000
  352. * NICBLOK. 00331000
  353. * 00332000
  354. * B. FOR ENABLE FUNCTION, GET STORAGE FOR THE BINARY 00333000
  355. * SYNCHRONOUS COMMUNICATION CONTROL BLOCK, SAVE 00334000
  356. * POINTER TO CONTROL BLOCK IN RDEVBLOK (RDEVBSC) AND 00335000
  357. * GO TO STEP 4. 00336000
  358. * 00337000
  359. * C. FOR DISABLING THE BISYNC LINE, SET UP THE DISABLE CCW 00338100
  360. * AND GO TO STEP 4. IF THIS IS A SWITCHED LINE AND 00338600
  361. * THERE IS AN ACTIVE I/O OPERATION ON THE LINE, CALL 00339100
  362. * DMKIOSHA TO TERMINATE THE I/O OPERATION AND RETURN TO 00339600
  363. * CALLER. 00340100
  364. * 3. FOR ENABLING OR DISABLING THE REMOTE STATIONS 00341000
  365. * (REGISTER 0 = X'00' IN LOW ORDER BYTE), THE FOLLOWING 00342000
  366. * FUNTIONS WILL BE PERFORMED. 00343000
  367. * 00344000
  368. * A. FOR ENABLING THE REMOTE STATION, SET UP THE VM LOGO 00345000
  369. * FOR THE DISPLAY STATION, FORMAT THE REMOTE STATION 00346000
  370. * DISPLAY SCREEN, SET THE RETURN INDEX (X'30') AFTER 00347000
  371. * FORMATTING THE SCREEN TO BUILD A VMBLOK FOR THE VIRTUAL 00348000
  372. * MACHINE USER AND GO TO STEP 4. 00349000
  373. * IF THE STATION IS CONNECTED TO A SWITCHED LINE, ALONG 00349100
  374. * WITH THE ABOVE FUNCTIONS, SET THE INITIAL BIDDING 00349200
  375. * SEQUENCE FLAG. 00349300
  376. * 00350000
  377. * B. FOR DISABLING THE REMOTE STATION, SET UP CCWS TO 00351000
  378. * CLEAR THE REMOTE DISPLAY SCREEN, SET RETURN INDEX 00352000
  379. * (X'1C') AFTER CLEARING THE SCREEN, LOGOFF USER AND 00353000
  380. * GO TO STEP 4. 00354000
  381. * IF THE STATION IS CONNECTED TO A SWITCHED LINE, SET 00354100
  382. * THE RETURN CODE TO ZERO, HALT THE SWITCHED LINE 00354200
  383. * (IF NECESSARY), AND RETURN TO CALLER. 00354300
  384. * 00355000
  385. * 4. IF THE BISYNC LINE IS ALREADY ACTIVE, THEN RETURN 00356000
  386. * TO CALLER. IF THE BISYNC LINE IS NOT ACTIVE, 00357000
  387. * BUILD AND STACK A CPEXBLOK TO RETURN TO CALLER AS SOON 00358000
  388. * AS POSSIBLE, AND THEN GOTO DMKRGBIC TO START UP THE 00359000
  389. * BISYNC LINE. 00360000
  390. * 00361000
  391. ************************************************************** 00362000
  392. EJECT 00363000
  393. USING SAVEAREA,R13 @V305731 00364000
  394. USING DMKRGBEN,R12 @V305731 00365000
  395. DMKRGBEN DS 0D SCHEDULE ENABLE-DISABLE TASK @V305731 00366000
  396. ENTER , @V305731 00367000
  397. L R12,RGBBASE GET THE BASE ADDRESS @V305731 00368000
  398. USING DMKRGB,R12 @V305731 00369000
  399. USING RDEVBLOK,R8 @V305731 00370000
  400. SWITCH ENSURE WE ARE ON THE MAIN PROC @VA07391 00370100
  401. LA R2,12(0) SET THE INVALID RETURN CODE @V305731 00371000
  402. TM RDEVSTAT,RDEVDISA+RDEVDED+RDEVNRDY IS LINE AVAIL@V305731 00372000
  403. BNZ RGFEXIT NO, GO SET CC= 2 @V305731 00373000
  404. OI RDEVSTAT,RDEVRSVD LINE IN USE BY THE SYSTEM @V305731 00374000
  405. L R5,RDEVBSC GET PTR TO BSCBLOK (IF POSSIBLE) @V305731 00375000
  406. SLR R10,R10 CLEAR IOBLOK POINTER @V305731 00376000
  407. LTR R0,R0 IS THIS A LINE REQUEST @V305731 00377000
  408. BNZ LINESUP YES, GO TO LINE SECTION @V305731 00378000
  409. TM NICFLAG,NICDISB DID OPERATOR 'DISABLE' RESOURCE @V305731 00379000
  410. BZ ENTFMT NO, TEST FOR SCREEN FORMATTED @V305731 00380000
  411. BAL R3,GRFCLRT CLEAR SCREEN FOR DISABLE @V305731 00381000
  412. MVI CONLABEL,RTNLOGOF INDICATOR FOR LOGOFF @V305731 00382000
  413. BAL R7,RGFTASK GO SETUP FOR START I/O TO LINE @V305731 00383000
  414. SPACE 00384000
  415. ENTFMT EQU * @V305731 00385000
  416. TM NICFLAG,NICFMT IS SCREEN FORMATTED ? @V305731 00386000
  417. BZ FMTENA NO, GO FORMAT SCREEN @V305731 00387000
  418. BAL R3,GRFCLRT CLEAR VM LOGO FROM SCREEN @V305731 00388000
  419. MVI CONLABEL,RTNBLDVM INDICATOR FOR VMBLOK BUILD @V305731 00389000
  420. BAL R7,RGFTASK GO SETUP FOR START I/O TO LINE @V305731 00390000
  421. FMTENA EQU * @V305731 00391000
  422. BAL R3,INITIAL INITIALIZE THE VM LOGO @V305731 00392000
  423. BAL R3,RGFFMT FORMAT THE DISPLAY SCREEN @V305731 00393000
  424. TM RDEVFTR,FTRDIAL DIAL-UP FEATURE INDICATED? @V346931 00394100
  425. BNO RGFTASK NO, START I/O OPERATION @V346931 00394200
  426. OI BSCFLAG1,BSCINBID INITIAL BID NEEDED @V346931 00394300
  427. XC BSCRESP(RESPLEN),BSCRESP CLEAR RESPONSE BUFFER @V346931 00394400
  428. BAL R7,RGFTASK GO START I/O ON LINE @V346931 00394500
  429. SPACE 1 @V346931 00394600
  430. SPACE 1 00395000
  431. LINESUP EQU * @V305731 00396000
  432. L R9,RDEVNICL GET THE FIRST NICBLOK POINTER @V305731 00397000
  433. BAL R7,CTLTASKB GET A CONTROL CONTASK @V305731 00398000
  434. TM RDEVFLAG,RDEVDISB DID OPERATOR 'DISABLE' LINE @V305731 00399000
  435. BO LINEDIS YES, GO ATTEMPT TO DISABLE LINE @V305731 00400000
  436. BAL R3,BULDBSC GET STORAGE FOR THE BSCBLOK @V305731 00401000
  437. MVC CONCCW1(3*8),DISABLE GET CCWS TO ENABLE LINE @V305731 00402000
  438. MVI CONCCW1+4,SILI+CC INDICATE COMMAND CHAINING @V305731 00403000
  439. BAL R7,RGFTASK GO START I/O OPERATION TO LINE @V305731 00404000
  440. SPACE 00405000
  441. LINEDIS EQU * @V305731 00406000
  442. OI BSCFLAG1,BSCSHUT SYNCRONIZE SHUTDOWN @VA11623 00406050
  443. TM RDEVSTAT,RDEVWAII IS DEVICE BUSY? @V346931 00406100
  444. BZ LINEDIS2 NO, DON'T DO HALT DEVICE @V346931 00406200
  445. ICM R10,B'1111',RDEVAIOB GET ACTIVE IOB IF ANY @V346931 00406300
  446. BZ LINEDIS2 NO ACTIVE IOB, DON'T HALT LINE @V346931 00406400
  447. OI BSCFLAG1,BSCHALT INDICATE HALT I/O DONE @V346931 00406500
  448. CALL DMKIOSHA GO DO HALT DEVICE OPERATION @V346931 00406600
  449. SR R2,R2 SET CC = 0 @V346931 00406700
  450. BAL R7,RGFEXIT GO SET CC = 0 AND EXIT @V346931 00406800
  451. LINEDIS2 EQU * BYPASS HALT I/O @V346931 00406900
  452. MVC CONCCW1(8),DISABLE SETUP CCW TO DISABLE LINE @V305731 00407000
  453. MVI CONPARM,RDEVDISB INDICATE DISABLE FOR HANDLER @V305731 00408000
  454. RGFTASK EQU * @V305731 00409000
  455. SR R2,R2 SET RETURN CODE TO ZERO @V305731 00410000
  456. OI NICFLAG,NICPROCN PROCESS THIS NICBLOK NOW @V305731 00411000
  457. TM RDEVSTAT,RDEVWAII IS THE LINE BUSY @V305731 00412000
  458. BNZ RGFEXIT YES, EXIT @V305731 00413000
  459. LA R4,RGFEXIT1 GET THE EXECUTION ADDRESS @VA11623 00414100
  460. BAL R7,STKCPEX STACK A CPEXBLOK TO DO THE EXIT @V305731 00415000
  461. GOTO DMKRGBIC GO START I/O OPERATION TO LINE @V305731 00416000
  462. SPACE 1 00417000
  463. RGFEXIT1 DS 0H @VA11623 00418100
  464. TM BSCFLAG1,BSCSHUT SHUTDOWN FINISHED? @VA11623 00418200
  465. BNO RGFEXIT YES, TELL DMKNES @VA11623 00418300
  466. LA R4,RGFEXIT1 GET RETURN ADDRESS @VA11623 00418400
  467. BAL R7,STKCPEX WAIT FOR SHUTDOWN TO FINISH @VA11623 00418500
  468. B GODSPCH ... @VA11623 00418600
  469. RGFEXIT DS 0H @VA11623 00418700
  470. ST R2,SAVER2 SAVE RETURN CODE @V305731 00419000
  471. LTR R2,R2 SET CONDITION CODE 2 @V305731 00420000
  472. EXIT , @V305731 00421000
  473. DROP R13 DROP R13 AS SAVEAREA BASE @V305731 00422000
  474. EJECT 00423000
  475. ****************************************************************** 00424000
  476. * THE FOLLOWING SUBROUTINES MUST NOT ADDRESS ANY FIELDS IN 00425000
  477. * THE SECOND 4096 BYTES OF DMKRGB. THESE ARE USED BY 'DMKRGBEN' 00426000
  478. * WHICH HAS LIMITED ADDRESSABILITY RANGE DUE TO THE SAVEAREA 00427000
  479. * REGISTER (GR13). 00428000
  480. * SUBROUTINES 00429000
  481. * CTLTASKB : INITIAL 00430000
  482. * STKCPEX : GRFCLRT 00431000
  483. * DATAMOVE : BULDBSC 00432000
  484. * SETUPCCW : RGFFMT 00433000
  485. * 00434000
  486. * THE SUBROUTINES ABOVE ARE IN BOTH DMKRGB AND DMKRGA. 00435000
  487. * ANY CHANGES MADE TO THESE SUBROUTINES SHOULD ALSO BE MADE 00436000
  488. * TO THE DUPLICATE IN DMKRGA. 00437000
  489. **************************************************************** 00438000
  490. SPACE 2 00439000
  491. CTLTASKB EQU * SET UP BASIC SIZE FOR CONTASK @V305731 00440000
  492. LA R0,CONTSIZE SIZE OF BASIC CONTASK @V305731 00441000
  493. B CTLTASK1 GET STORAGE FOR CONTASK @V305731 00442000
  494. CTLTASK EQU * ALLOCATE AND QUEUE CONTROL TASK @V305731 00443000
  495. LA R0,CONTSIZE+6 ...SIZE OF CONTASK @VA08129 00444100
  496. CTLTASK1 EQU * @V305731 00445000
  497. CALL DMKFREE GET STORAGE FOR CONTASK @V305731 00446000
  498. XC 0(CONTSIZE*8,R1),0(R1) CLEAR THE HEADER @V305731 00447000
  499. LR R6,R1 PUT CONTASK ADDRESS IN REGISTER 6@V305731 00448000
  500. STH R0,CONTSKSZ SAVE THE CONTASK SIZE @V305731 00449000
  501. L R1,NICUSER VMBLOK OF RESOURCE OWNER @V305731 00450000
  502. ST R1,CONUSER SAVE VMBLOK PTR IN CONTASK @V305731 00451000
  503. MVI CONSTAT,CONCNTL INDICATE CONTROL TASK @V305731 00452000
  504. L R1,NICQPNT GET CURRENT CONTASK FROM CHAIN @V305731 00453000
  505. ST R6,NICQPNT PUT THIS TASK FIRST ON CHAIN @V305731 00454000
  506. ST R1,CONPNT PUT CURRENT TASK ON CHAIN @V305731 00455000
  507. BR R7 RETURN @V305731 00456000
  508. SPACE 2 00457000
  509. STKCPEX EQU * @V305731 00458000
  510. LA R0,CPEXSIZE GET SIZE OF CPEXBLOK @V305731 00459000
  511. CALL DMKFREE GET STORAGE FOR CPEXBLOK @V305731 00460000
  512. USING CPEXBLOK,R1 ADDRESSABILITY FOR CPEXBLOK @V305731 00461000
  513. XC CPEXBLOK(16),CPEXBLOK CLEAR THE HEADER @V305731 00462000
  514. LR R15,R4 GET THE EXECUTION ADDRESS @V305731 00463000
  515. STM R15,R14,CPEXADD SAVE ALL REGISTERS @V305731 00464000
  516. CALL DMKSTKCP STACK BLOCK FOR LATER PROCESSING @V305731 00465000
  517. DROP R1 DROP BASE REGISTER FOR CPEXBLOK @V305731 00466000
  518. BR R7 RETURN @V305731 00467000
  519. SPACE 2 00468000
  520. DATAMOVE EQU * MOVE DATA INTO CONTASK @V305731 00469000
  521. LA R14,CONCCW4+4 GET BEGINNING ADDRESS @V305731 00470000
  522. AR R14,R1 UPDATE TO END OF DATA @V305731 00471000
  523. MVI 0(R14),ETX PUT ENDING BISYNC CHAR IN BUFFER @V305731 00472000
  524. DATMOVE EQU * MOVE DATA INTO CONTASK @V305731 00473000
  525. MVC CONCCW4+1(3),SYNCP MOVE BISYNC HEADER INTO DATA @V305731 00474000
  526. BCTR R1,R0 SUBTRACT - EX INSTRUCTION @V305731 00475000
  527. EX R1,DATA MOVE DATA INTO BUFFER AREA @V305731 00476000
  528. BR R7 RETURN @V305731 00477000
  529. SPACE 2 00478000
  530. BULDBSC EQU * @V305731 00479000
  531. L R5,RDEVBSC GET POINTER TO BSCBLOK @V305731 00480000
  532. LTR R5,R5 IS BSCBLOK POINTER ZERO ? @V305731 00481000
  533. BNZR R3 NO, RETURN @V305731 00482000
  534. LA R0,BSCSIZE GET THE SIZE OF THE BSCBLOK @V305731 00483000
  535. CALL DMKFREE GET STORAGE FOR BSCBLOK @V305731 00484000
  536. ST R1,RDEVBSC SAVE BSCBLOK PTR IN RDEVBLOK @V305731 00485000
  537. LR R5,R1 GET BSCBLOK POINTER @V305731 00486000
  538. XC BSCBLOK(BSCSIZE2),BSCBLOK CLEAR HEADER FIELD @V305731 00487000
  539. BR R3 RETURN @V305731 00488000
  540. SPACE 2 00489000
  541. INITIAL EQU * @V305731 00490000
  542. MVI NICCORD,X'01' SET THE Y COORDINATE TO LINE 1 @V305731 00491000
  543. L R1,LOGO GET VM LOGO POINTER @V305731 00492000
  544. LTR R1,R1 IS THERE A POINTER FOR VM LOGO @V305731 00493000
  545. BNZR R3 YES, GO SET UP CCW FOR FORMAT @V305731 00494000
  546. LA R0,99 GET THE SIZE OF THE LOGO @V305731 00495000
  547. CALL DMKFREE GET STORAGE FOR THE LOGO @V305731 00496000
  548. ST R1,LOGO SAVE VM LOGO POINTER @V305731 00497000
  549. STCM R1,7,FMTLOGO+1 SET UP CCW WITH LOGO ADDRESS @V305731 00498000
  550. LR R7,R1 GET VM LOGO POINTER @V305731 00499000
  551. L R1,=A(DMKBOXBX) GET VM LOGO ADDRESS @V305731 00500000
  552. TRANS 2,1,OPT=(BRING,DEFER,SYSTEM),AFFINITY @VA07391 00501100
  553. LA R1,FMTBUF BUFFER ADDRESS TABLE @V305731 00502000
  554. LA R0,16 LOOP COUNT @V305731 00503000
  555. NXTFMT EQU * @V305731 00504000
  556. MVI 0(R7),SBA SET SBA ORDER @V305731 00505000
  557. MVC 1(2,R7),0(R1) MOVE BUFFER ADDRESS @V305731 00506000
  558. MVC 3(46,R7),0(R2) MOVE LOGO LINE TO BUFFER @V305731 00507000
  559. LA R1,2(R1) NEXT BUFFER ADDRESS @V305731 00508000
  560. LA R2,46(R2) NEXT LOGO LINE ADDRESS @V305731 00509000
  561. LA R7,49(R7) NEXT DATA ADDRESS @V305731 00510000
  562. BCT R0,NXTFMT LOOP FOR 16 LINES @V305731 00511000
  563. MVI 0(R7),ETX PUT BSC ENDING CHAR IN BUFFER @V305731 00512000
  564. BR R3 RETURN @V305731 00513000
  565. SPACE 2 00514000
  566. RGFFMT EQU * @V305731 00515000
  567. LA R0,CONTSIZE+7 GET SIZE OF CONTASK @V305731 00516000
  568. BAL R7,CTLTASK1 GET STORAGE FOR CONTROL CONTASK @V305731 00517000
  569. MVI NICSTAT,NICRUNN+NICNTRL SET STATUS IN NICBLOK @V305731 00518000
  570. MVI CONLABEL,RTNFMTDN INDICATOR FOR FORMAT DONE @V305731 00519000
  571. MVC CONCCW1(8*2),FMT77CCW MOVE FORMAT CCWS @V305731 00520000
  572. LA R1,CONCCW4+1 GET BEGINNING ADDRESS OF DATA @V305731 00521000
  573. STCM R1,7,CONCCW1+1 SAVE BEGINNING ADDRESS @V305731 00522000
  574. MVC CONCCW3(8),READCCW1 MOVE IN READ RESPONSE CCW @V305731 00523000
  575. LA R1,BSCRESP GET THE RESPONSE BUFFER ADDRESS @V305731 00524000
  576. STCM R1,7,CONCCW3+1 SAVE ADDRESS OF RESPONSE BUFFER @V305731 00525000
  577. LA R1,FMT77L GET THE LENGTH OF FORMAT DATA @V305731 00526000
  578. LA R2,FMT3277 GET ADDRESS OF FORMAT DATA @V305731 00527000
  579. BAL R7,DATMOVE MOVE DATA INTO BUFFER AREA @V305731 00528000
  580. MVI CONCCW4+3,EWRTCMD SET ERASE/WRITE GRAPHIC CMD @V305731 00529000
  581. BR R3 RETURN @V305731 00530000
  582. SPACE 2 00531000
  583. GRFCLRT EQU * @V305731 00532000
  584. BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 00533000
  585. NI NICFLAG,X'FF'-(NICDIAG+NICALRM) CLEAR FLAGS @V305731 00534000
  586. MVI NICCORD,X'00' SET COORDINATE Y TO ZERO @V305731 00535000
  587. MVI NICSTAT,NICRUNN+NICNTRL SET STATUS IN NICBLOK @V305731 00536000
  588. LA R1,WRT77CCW SET UP CCWS FOR CLEAR FUNCTION @V305731 00537000
  589. BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 00538000
  590. MVI CONCCW1+7,CLR77L+4 SET CCW COUNT FOR CLEAR FUNC.@V305731 00539000
  591. LA R1,CLR77L GET THE LENGTH OF CLEAR DATA @V305731 00540000
  592. LA R2,CLR3277 GET ADDRESS OF CLEAR DATA @V305731 00541000
  593. BAL R7,DATAMOVE MOVE DATA INTO BUFFER AREA @V305731 00542000
  594. BR R3 RETURN @V305731 00543000
  595. SPACE 2 00544000
  596. SETUPCCW EQU * SET UP CCWS FOR BISYNC RESPONSE @V305731 00545000
  597. MVC CONCCW1(8),0(R1) MOVE CCW INTO CONTASK @V305731 00546000
  598. MVI CONCCW1+4,SILI+CC MAKE SURE CMD CHAIN FLAG IS ON@V305731 00547000
  599. LA R1,CONCCW4+1 GET BEGINNING ADDRESS OF DATA @V305731 00548000
  600. STCM R1,7,CONCCW1+1 SAVE BEGINNING ADDRESS @V305731 00549000
  601. MVC CONCCW2(8),READCCW1 GET READ RESPONSE CCW @V305731 00550000
  602. LA R1,BSCRESP GET RESPONSE BUFFER @V305731 00551000
  603. STCM R1,7,CONCCW2+1 SAVE RESPONSE BUFFER ADDRESS @V305731 00552000
  604. BR R7 RETURN @V305731 00553000
  605. SPACE 2 00554000
  606. DS 0D @V305731 00555000
  607. DISABLE DC X'2F',AL3(0),AL1(SILI,X'01'),AL2(1) DISABLE CCW @V305731 00556000
  608. ENABLE1 DC X'23',AL3(SETMODE),AL1(SILI+CC,X'01'),AL2(1) @V305731 00557000
  609. DC X'27',AL3(0),AL1(SILI,X'01'),AL2(1) @V305731 00558000
  610. SPACE 2 00558100
  611. * THESE CCWS ARE USER FOR INITIAL DIAL CONNECTION OPERATION @V346931 00558200
  612. INITBID DC X'01',AL3(RGFEOT),AL1(SILI+CC,X'02'),AL2(1) @V346931 00558300
  613. DC X'01',AL3(RGFENQ),AL1(SILI+CC,X'03'),AL2(1) @V346931 00558400
  614. DC X'02',AL3(0),AL1(SILI,X'05'),AL2(RESPLEN) @V346931 00558500
  615. RESPLEN EQU 6 LENGTH OF READ FOR SELECTION @V346931 00558600
  616. THREECCW EQU (8*3) LENGTH OF THREE CHAINED CCWS @V346931 00558700
  617. SPACE 1 00558800
  618. READCCW1 DC X'02',AL3(0),AL1(SILI,X'0B'),AL2(2) @V305731 00559000
  619. WRT77CCW DC X'01',AL3(0),AL1(SILI+CC,X'10'),AL2(0) @VA13944 00560000
  620. FMT77CCW DC X'01',AL3(0),AL1(SILI+CD,X'10'),AL2(FMT77L+3) @VA13944 00560500
  621. FMTLOGO DC X'01',AL3(0),AL1(SILI+CC,X'10'),AL2(785) @VA13944 00561000
  622. FMT3277 DC AL1(WCC56,SBA,X'40',X'40') @V305731 00564000
  623. FMTON DC CL20'VM/370 ONLINE' @V305731 00565000
  624. DC AL1(SBA,X'5B',X'5F',SF,ATTR7,IC) @V305731 00566000
  625. DC AL1(SBA,X'5D',X'6B',SF,ATTR2) @V305731 00567000
  626. DC CL20'RUNNING' @V305731 00568000
  627. FMT77L EQU *-FMT3277 @V305731 00569000
  628. SPACE 00570000
  629. FMTBUF DC X'C5D1C661C7F1C9C1' @V305731 00571000
  630. DC X'4AD14B614CF14EC1' @V305731 00572000
  631. DC X'4FD15061D1F1D3C1' @V305731 00573000
  632. DC X'D4D1D561D6F1D8C1' @V305731 00574000
  633. SPACE 00575000
  634. CLR3277 DC AL1(WCC6,SBA,X'40',X'40') @V305731 00576000
  635. DC AL1(RA,X'C7',X'5F',X'00') @VA08129 00577100
  636. DC AL1(RA,X'4E',X'7F',X'00') @VA08129 00577200
  637. DC AL1(RA,X'D6',X'5F',X'00') @VA08129 00577300
  638. DC AL1(RA,X'5B',X'5F',X'00') @VA08129 00577400
  639. DC AL1(SF,ATTR7,IC) @V305731 00578000
  640. DC AL1(SBA,X'5D',X'6B',SF,ATTR2) @V305731 00579000
  641. DC CL20'RUNNING' @V305731 00580000
  642. CLR77L EQU *-CLR3277 @V305731 00581000
  643. SPACE 00582000
  644. LOGO DC A(0) ADDRESS OF VM LOGO @V305731 00583000
  645. SETMODE DC X'00' MODE SET FOR 270X TCU @V346931 00584100
  646. RGFINDEQ DC AL1(ENQ,X'05',EOT) ENQ, INDEX & EOT - POLL ENTRY@VA03474 00585100
  647. SYNCP DC AL1(STX,ESC,WRTCMD) BISYNC HEADER @V305731 00586000
  648. DATA MVC CONCCW4+4(*-*),0(R2) MOVE DATA INTO CONTASK @V305731 00587000
  649. EJECT 00588000
  650. LTORG @V305731 00589000
  651. EJECT 00590000
  652. ***************************************************************** 00591000
  653. * NEW ENTRY LABEL USE BY DMKRGA TO RESTART THE I/O 00592000
  654. * OPERATION TO A BISYNC LINE. THIS ENTRY POINT WAS CREATED 00593000
  655. * WHEN DMKRGB WAS SPLIT INTO TWO MODULES. 00594000
  656. ****************************************************************** 00595000
  657. SPACE 2 00596000
  658. USING DMKRGB,R12 ADDRESSABILITY FOR SCAN SECTION @V305731 00597000
  659. DMKRGBSN DS 0D @V305731 00598000
  660. LR R12,R7 GET BASE ADDRESS FOR DMKRGB @V305731 00599000
  661. LM R12,R13,RGBBASE GET BASE ADDRESSES @V305731 00600000
  662. USING DMKRGB,R12,R13 SET UP ADDRESSABILITY @V305731 00601000
  663. SPACE 1 00602000
  664. SWITCH ENSURE WE ARE ON THE MAIN PROC @VA07391 00602100
  665. RGSTART EQU * @V305731 00603000
  666. TM RDEVSTAT,RDEVNRDY+RDEVWAII IS BISYNC LINE AVAIL @V305731 00604000
  667. BNZ GODSPCH NO, GO TO DISPATCHER @V305731 00605000
  668. BAL R7,FRETIOB RELEASE THE IOBLOK & IOERBLOK @V305731 00606000
  669. BAL R3,BULDBSC GET POINTER TO BSCBLOK @VA07175 00607500
  670. L R9,RDEVNICL GET BEGINNING OF NICBLOK LIST @V305731 00608000
  671. LA R2,NICSIZE*8 GET SIZE OF NICBLOK @V305731 00609000
  672. LH R3,RDEVMAX GET HIGHEST RESOURCE ID. @V305731 00610000
  673. MH R3,=AL2(NICSIZE*8) GET THE HIGHEST INDEX VALUE @V305731 00611000
  674. ALR R3,R9 GET THE ENDING ADDRESS @V305731 00612000
  675. TM NICFLAG,NICPROCN IS PROCESS NOW ACTIVE @V305731 00613000
  676. BNZ RNICLST YES, SCAN FOR ACTIVE TASK @V305731 00614000
  677. CL R3,BSCRROBN LAST = CURRENT ? @V305731 00615000
  678. BE RNICLST YES....START WITH FIRST... @V305731 00616000
  679. ICM R9,15,BSCRROBN GET LAST ACTIVE USER @V305731 00617000
  680. BNZ RNEXLST AND SKIP OVER... @V305731 00618000
  681. L R9,RDEVNICL RESTORE NICBLOK START @V305731 00619000
  682. RNICLST EQU * GET ACTIVE CONTASK @V305731 00620000
  683. L R6,NICQPNT POINTER TO CONTASK @V305731 00621000
  684. LTR R6,R6 IS THE POINTER ZERO @V305731 00622000
  685. BNP RNEXLST YES, GET NEXT RESOURCE @V305731 00623000
  686. TM NICFLAG,NICPROCN IS PROCESS FLAG ON ? @V305731 00624000
  687. BO RGFCHAN YES, GO PROCESS CONTASK @V305731 00625000
  688. TM NICSTAT,NICNTRL IS THE RESOURCE IN CONTROL MODE @V305731 00626000
  689. BZ RNCHAIN NO, GO CHECK SCREEN STATUS @V305731 00627000
  690. RNEXLST EQU * @V305731 00628000
  691. BXLE R9,R2,RNICLST GET NEXT NICBLOK @V305731 00629000
  692. SR R9,R9 CLEAR NICBLOK POINTER REGISTER @V305731 00630000
  693. CL R3,BSCRROBN END OF NICBLOK SCAN @V305731 00631000
  694. BE POLLSECT YES, CHECK FOR READS @V305731 00632000
  695. ICM R3,15,BSCRROBN END OF SCAN @V305731 00633000
  696. BZ POLLSECT YES, ALREADY THERE @V305731 00634000
  697. L R9,RDEVNICL GET FIRST NICBLOK POINTER @V305731 00635000
  698. BAL R7,RNICLST SCAN NICBLOKS FOR ACTIVE TASK @V305731 00636000
  699. RGFIOS EQU * @V305731 00637000
  700. LTR R10,R10 IS THERE AN IOBLOK POINTER @V305731 00638000
  701. BZ POLLSECT NO, GO POLL THE LINE @V305731 00639000
  702. BAL R3,SELECTCW GET SELECTION CCWS @V305731 00640000
  703. RESTART EQU * @V305731 00641000
  704. NI BSCFLAG,X'FF'-BSCSCAN CLEAR SECOND SCAN FLAG @V305731 00642000
  705. XC IOBRCNT(2),IOBRCNT CLEAR RETRY COUNT FOR I/O @V305731 00643000
  706. BAL R3,FRETIOER RELEASE THE IOERBLOK @V305731 00644000
  707. L R2,=A(DMKRGAIN) INTERRUPT RETURN ADDRESS @V305731 00645000
  708. ST R2,IOBIRA SAVE INTERRUPT RETURN ADDRESS @V305731 00646000
  709. MVC IOBUSER,NICUSER ASSIGN VMBLOK FOR I/O @VA07391 00647200
  710. ST R9,BSCAUSER SAVE ADDR OF ACTIVE RESOURCE @V305731 00651000
  711. CL R9,RDEVNICL IS THIS THE FIRST NICBLOK @V305731 00652000
  712. BE BYPNICB YES, SKIP SAVING NICBLOK @VM03134 00653000
  713. ST R9,BSCRROBN SAVE ACTIVE NICBLOK @V305731 00654000
  714. BYPNICB EQU * SETUP TO DO START I/O @VM03134 00655000
  715. MVI IOBSTAT,X'00' CLEAR THE STATUS BYTE @V305731 00656000
  716. MVI IOBSPEC,X'00' CLEAR SPECIAL REQUEST @V305731 00657000
  717. NI IOBFLAG,IOBCP+IOBRSTRT LEAVE ON THESE FLAGS @V305731 00658000
  718. OI RDEVSTAT,RDEVWAII LINE IS NOW ACTIVE @V305731 00659000
  719. L R1,NICUSER LOAD ADDR OF NEW VMBLOK @VA07391 00659100
  720. SWTCHVM OPT=STAY SWITCH VMBLOK LOCKING & CHARGINE @VA07391 00659200
  721. CALL DMKIOSQR QUEUE REAL I/O FOR SYSTEM @V305731 00660000
  722. BAL R7,GODSPCH GO TO DISPATCHER @V305731 00661000
  723. SPACE 1 00662000
  724. POLLSECT EQU * @V305731 00663000
  725. TM BSCFLAG,BSCSCAN IS THIS SECOND SCAN OF NICBLOK @V305731 00664000
  726. BZ POLLIOB NO, GO DO POLL OPERATION @V305731 00665000
  727. NI BSCFLAG,X'FF'-BSCSCAN CLEAR SECOND SCAN FLAG @V305731 00666000
  728. BAL R7,GODSPCH GO TO DISPATCHER @V305731 00667000
  729. POLLIOB EQU * @V305731 00668000
  730. BAL R3,BLDIOB GO GET STORAGE FOR IOBLOK @V305731 00669000
  731. BAL R3,GPOLLCW SET UP GENERAL POLLING CCWS @V305731 00670000
  732. BAL R7,SETCAW GO RESTART I/O OPERATION TO LINE @V305731 00671000
  733. SPACE 2 00672000
  734. RNCHAIN EQU * GET THE ACTIVE CONTASK @V305731 00673000
  735. TM NICFLAG,NICFMT IS THE SCREEN FORMATTED @V305731 00674000
  736. BZ RGFMT NO, GO FORMAT SCREEN @V305731 00675000
  737. CLI NICSTAT,NICRUNN IS RUNNING STATE INDICATED ? @V305731 00676000
  738. BE BLDCONT YES, START UP THIS TASK @V305731 00677000
  739. TM NICSTAT,NICREAD IS THERE A READ ACTIVE ? @V305731 00678000
  740. BO READPRI YES, CHECK FOR PRIORITY WRITE @V305731 00679000
  741. TM NICSTAT,NICHOLD IS HOLD ACTIVE ? @V305731 00680000
  742. BZ RNEXLST NO, GO GET NEXT NICBLOK @V305731 00681000
  743. L R1,NICUSER GET USER VMBLOK POINTER @V305731 00682000
  744. TM VMRSTAT-VMBLOK(R1),VMLOGOFF IS LOGOFF ACTIVE @V305731 00683000
  745. BZ RNEXLST NO, GET NEXT NICBLOK @V305731 00684000
  746. BAL R7,PRIOWRIT GO CLEAR DISPLAY SCREEN @V305731 00685000
  747. SPACE 2 00686000
  748. READPRI EQU * HANDLE PRIORITY WRITE REQUEST @V305731 00687000
  749. L R1,CONPNT GET NEXT CONTASK POINTER @V305731 00688000
  750. LTR R1,R1 IS THE POINTER ZERO ? @V305731 00689000
  751. BNP RNEXLST YES, GET NEXT NICBLOK @V305731 00690000
  752. TM CONPARM-CONTASK(R1),PRIORITY BREAK-IN SITUATION @V305731 00691000
  753. BZ RNEXLST NO, GO GET NEXT NICBLOK @V305731 00692000
  754. ST R1,NICQPNT REMOVE THE READ TASK FROM CHAIN @V305731 00693000
  755. NI CONSTAT,X'FF'-CONESCP CONTASK IS NOT ACTIVE @V305731 00694000
  756. READBK EQU * RE-INSERT THE READ CONTASK @V305731 00695000
  757. L R2,CONPNT-CONTASK(,R1) ADDRESS OF NEXT TASK @V305731 00696000
  758. LTR R2,R2 IS THE POINTER ZERO ? @V305731 00697000
  759. BNP READINS YES, INSERT THE READ HERE @V305731 00698000
  760. TM CONPARM-CONTASK(R2),PRIORITY BREAK-IN SITUATION @V305731 00699000
  761. BZ READINS NO, INSERT THE READ HERE @V305731 00700000
  762. LR R1,R2 SAVE THE BACK POINTER @V305731 00701000
  763. BAL R7,READBK TRY AGAIN @V305731 00702000
  764. SPACE 00703000
  765. READINS EQU * RE-CHAIN THE READ CONTASK @V305731 00704000
  766. ST R2,CONPNT POINTER TO NEXT CONTASK @V305731 00705000
  767. ST R6,CONPNT-CONTASK(,R1) PATCH THE FORWARD CHAIN @V305731 00706000
  768. L R6,NICQPNT GET ADDRESS OF FIRST CONTASK @V305731 00707000
  769. SPACE 1 00708000
  770. BLDCONT EQU * START UP CONSOLE REQUEST @V305731 00709000
  771. TM CONSTAT,CONSYNC SYNCHRONIZATION CONTASK @V305731 00710000
  772. BZ OUTCONT NO, GO CHECK OUTPUT CONTASK @V305731 00711000
  773. L R0,CONPNT GET NEXT CONTASK POINTER @V305731 00712000
  774. ST R0,NICQPNT PUT NEXT TASK FIRST @V305731 00713000
  775. SR R0,R0 CLEAR REGISTER 0 @V305731 00714000
  776. ST R0,CONPNT ZERO OUT NEXT POINTER FIELD @V305731 00715000
  777. CALL DMKQCNET RETURN CONTASK @V305731 00716000
  778. LA R2,NICSIZE*8 GET THE SIZE OF THE NICBLOK @V305731 00717000
  779. BAL R7,RNICLST GET NEXT CONTASK FROM RESOURCE @V305731 00718000
  780. SPACE 1 00719000
  781. OUTCONT EQU * @V305731 00720000
  782. TM CONSTAT,CONOUTPT IS THIS AN OUTPUT CONTASK @V305731 00721000
  783. BZ STRTREAD NO, GO CHECK FOR READ CONTASK @V305731 00722000
  784. TM CONDWC,X'40' DIAGNOSE CONSOLE WRITE ?? @VA07542 00723100
  785. BZ CORD NO, CONTINUE NORMALLY @V305731 00724000
  786. TM NICFLAG,NICALRM SCREEN HAVE ALARM MESSAGE ? @V305731 00725000
  787. BO CRTHOLD1 YES, FORCE SCREEN TO HOLD STATUS @V305731 00726000
  788. TM CONDWC,X'80' ERASE BEFORE WRITE ?? @VA07542 00727100
  789. BZ DIAGRUN NO, CLEAR THE INDICATORS @V305731 00728000
  790. DIAGCLR EQU * DIAGNOSE CLEAR SECTION @V305731 00729000
  791. CLI CONDWC,X'FF' ERASE CLEAR DIAGNOSE REQUEST ? @VA07542 00730100
  792. BE CNCLDIAG YES, NO OUTPUT TO DO @V305731 00731000
  793. NI CONDWC,X'7F' TURN OFF ERASE INDICATOR @VA07542 00732100
  794. BAL R7,CRTMORE1 WRITE MORE STATUS BEFORE WRITE @V305731 00733000
  795. SPACE 1 00734000
  796. DIAGRUN EQU * DIAGNOSE RUNNING SECTION @V305731 00735000
  797. NI CONDWC,X'3F' CLEAR DIAGNOSE FLAGS @VA07542 00736100
  798. IC R0,CONDWC GET LINE COORDINATOR @VA07542 00737100
  799. CLI CONDWC,22 DIAGNOSE ISSUED TO THE @VA07542 00738100
  800. BE DIAGSIO INPUT AREA? @VM03094 00739000
  801. CLI CONDWC,23 ...... @VA07542 00740100
  802. BE DIAGSIO IF YES, TAKE SPECIAL PATH @VM03094 00741000
  803. STC R0,NICCORD SET LINE COORDINATE @V305731 00742000
  804. OI NICFLAG,NICDIAG SET DIAGNOSE WRITE FLAG @V305731 00743000
  805. B SETCORD GO GET THE NEXT LINE @V305731 00744000
  806. DIAGSIO EQU * HANDLE WRITING TO INPUT AREA @VM03094 00745000
  807. STC R0,BSCLINE SET LINE COORDINATE @VM03094 00746000
  808. OI NICTMCD,NICSIO SET WRITING TO INPUT FLAG @VM03094 00747000
  809. LA R0,BUFINLTH GET BUFFER SIZE @VM03116 00748000
  810. CH R0,CONCNT IS THIS GREATER THAN COUNT @VM03116 00749000
  811. BNL SETCORD YES, GET NEXT LINE @VM03134 00750000
  812. STH R0,CONCNT SAVE MAX. SIZE OF BUFFER @VM03116 00751000
  813. B SETCORD GO GET THE NEXT LINE @VM03094 00752000
  814. CNCLDIAG EQU * RETURN CONTASK TO SYSTEM @V305731 00753000
  815. SR R2,R2 SET RETURN CODE TO ZERO @V305731 00754000
  816. BAL R3,SETRETN GO SET RETURN CODE (IF POSSIBLE) @V305731 00755000
  817. BAL R3,CONRET RETURN CONTASK @V305731 00756000
  818. PRIOWRIT EQU * CLEAR DISPLAY SCREEN @V305731 00757000
  819. BAL R3,GRFCLRT SET UP THE CLEAR SCREEN CCWS @V305731 00758000
  820. MVI CONLABEL,RTNNOCTL SET RETURN TO NEXT CONTASK @V305731 00759000
  821. BAL R7,RGFCHAN GO GET IOBLOK POINTER @V305731 00760000
  822. SPACE 1 00761000
  823. CORD EQU * DETERMINE STATUS OF THE SCREEN @V305731 00762000
  824. TM NICFLAG,NICDIAG WAS DIAGNOSE USED BEFORE ? @V305731 00763000
  825. BO CRTFULL YES, FORCE TO MORE STATUS @V305731 00764000
  826. LH R1,CONCNT GET BYTE COUNT @V305731 00765000
  827. SR R4,R4 CLEAR REGISTER @V305731 00766000
  828. IC R4,NICCORD GET CURRENT OUTPUT LINE @V305731 00767000
  829. MH R4,=H'80' CONVERT TO BYTE COORDINATES @V305731 00768000
  830. ALR R4,R1 TOTAL BYTES ON SCREEN @V305731 00769000
  831. LA R2,1760 SIZE OF 3270 SCREEN @V305731 00770000
  832. CLR R4,R2 WILL THIS LINE FIT ON SCREEN @V305731 00771000
  833. BH CRTFULL NO, SCREEN FULL @V305731 00772000
  834. SETCORD EQU * SET UP NEXT LINE VALUE @V305731 00773000
  835. SR R0,R0 CLEAR REGISTER FOR DIVIDE @V305731 00774000
  836. AL R1,=F'79' ROUND UP TO NEXT LINE @V305731 00775000
  837. D R0,=F'80' DIVIDE TO GET NUMBER OF LINES @V305731 00776000
  838. LR R4,R1 SAVE NUMBER OF LINES @V305731 00777000
  839. RUNCTL EQU * SET UP CCWS FOR WRITE @V305731 00778000
  840. MVI NICSTAT,NICRUNN+NICNTRL SET RUNNING & CONTROL @V305731 00779000
  841. LH R1,CONCNT LOAD DATA COUNT @VM03040 00780000
  842. LTR R1,R1 IS COUNT VALUE ZERO @VM03040 00781000
  843. BZ NOAPLW YES, BYPASS APL TRANSLATION @VM03040 00782000
  844. L R7,=A(DMKTBLGR) GRAF DEVICE TRANSLATION TABLE @VM03040 00783000
  845. TM NICTMCD,NICTEXT+NICAPL TEXT OR APL TRANSLATION @VA08981 00783050
  846. BNZ USEGRTAB YES, USE DMKTBLGR @VA08981 00783150
  847. L R7,=A(DMKTBLRG) NO - USE TABLE DMKTBLRG @VA06170 00783300
  848. USEGRTAB DS 0H @VA06170 00783400
  849. L R2,NICUSER GET USER VMBLOK POINTER @VM03040 00784000
  850. IC R0,VMTLEND-VMBLOK(R2) GET LOGICAL LINE END @VM03040 00785000
  851. TM NICTMCD,NICSIO IS WRITING TO INPUT FLAG ON ? @VM03094 00786000
  852. BZ BYPINSET NO, BYPASS INSERTING CHARACTER @VM03134 00787000
  853. MVI X'13'(R7),IC INSERT CURSOR CHAR IN TABLE @VM03094 00788000
  854. BYPINSET EQU * SAVE LOGICAL LINE END CHAR. @VM03134 00789000
  855. STC R0,21(,R7) SAVE LCR CHAR IN TRANSLATE TABLE @VM03040 00790000
  856. BCTR R1,R0 SUBSTRACT ONE - EX INSTR. @VM03094 00791000
  857. L R2,CONADDR GET DATA ADDRESS @VM03040 00792000
  858. APLTRT EQU * TRANSLATE DATA TO GRAPHIC CHARS. @VM03040 00793000
  859. CL R1,F256 LESS THAN 256 ? @VM03040 00794000
  860. BL APLTRAN YES, DO LAST PART @V305798 00795000
  861. TR 0(256,R2),0(R7) TRANSLATE DATA @V305798 00796000
  862. LA R2,256(,R2) NEXT DATA POSITION @V305798 00797000
  863. S R1,F256 DECREMENT COUNT @VM03040 00798000
  864. B APLTRT TEST FOR MORE TO DO @V305798 00799000
  865. APLTRAN EQU * TRANSLATE DATA @V305798 00800000
  866. EX R1,TROPUT TRANSLATE LAST PART OF OUTPUT @VM03040 00801000
  867. MVI 21(R7),X'15' STORE LCR CHAR IN TRANS TABLE @V305798 00802000
  868. MVI X'13'(R7),X'40' INSERT BLANK BACK IN TABLE @VM03094 00803000
  869. TM NICTMCD,NICAPL+NICTEXT TRANS ON? @V387398 00804000
  870. BZ NOAPLW NO, BYPASS TRANSLATION @V387398 00804100
  871. L R1,=A(DMKTBMZO) COMPOUND CHARACTERS TABLE @VM03235 00807000
  872. TM NICTMCD,NICTEXT 3270 TEXT CHARACTER SET? @V387398 00807100
  873. BZ WRTRANS NO -> TRANSLATE TABLE ALL SET @V387398 00807200
  874. L R1,=A(DMKTBMTO) TEXT COMPOUND CHARACTER TABLE @V387398 00807300
  875. WRTRANS EQU * @V387398 00807400
  876. TRANS 7,1,OPT=(BRING,DEFER,SYSTEM),AFFINITY @VA07391 00808100
  877. STM R1,R10,BALRSAVE SAVE CURRENT REGISTERS @VA07391 00810100
  878. LH R0,CONTSKSZ GET SIZE OF CURRENT CONTASK @V305798 00811000
  879. AR R0,R0 DOUBLE CONTASK SIZE @V305798 00812000
  880. CALL DMKFREE GET STORAGE FOR NEW CONTASK @V305798 00813000
  881. MVC 0(CONDATA-CONTASK,R1),0(R6) GET HEADER DATA @V305798 00814000
  882. LA R5,CONDATA-CONTASK(,R1) GET POINTER TO DATA AREA@VM03040 00815000
  883. ST R5,CONADDR-CONTASK(,R1) SAVE DATA AREA POINTER @VM03040 00816000
  884. STH R0,CONTSKSZ-CONTASK(,R1) SAVE SIZE OF CONTASK @VM03040 00817000
  885. L R4,CONADDR POINTER TO CURRENT DATA AREA @VM03040 00818000
  886. LA R4,0(,R4) CLEAR HIGH ORDER BYTE @VA08680 00818500
  887. ST R1,BALRSAVE SAVE NEW CONTASK POINTER @VA07391 00819100
  888. LH R3,CONCNT LOAD DATA COUNT @VM03040 00820000
  889. SR R8,R8 CLEAR COUNT REGISTER @V305798 00821000
  890. BAL R10,TRANSTST TRANSLATE & TEST FOR COMP. CHAR. @V305798 00822000
  891. B FRETNEW RELEASE NEW CONTASK STORAGE @V305798 00823000
  892. APLCOMP EQU * PUT FAKE CHAR. BEFORE COMP. CHAR @V305798 00824000
  893. MVI 0(R5),X'1D' PUT FAKE ATTRIBUTE IN AREA @V305798 00825000
  894. STC R2,1(,R5) PUT COMPOUND CHAR. INTO BUFFER @V305798 00826000
  895. LA R5,2(,R5) UPDATE PASS COMPOUND CHARACTER @V305798 00827000
  896. LA R4,1(,R4) UPDATE PASS COMPOUND CHARACTER @V305798 00828000
  897. LA R8,1(,R8) KEEP COUNT OF FAKE ATTR. CHARS @V305798 00829000
  898. SR R3,R1 DECREMENT BYTE COUNT @V305798 00830000
  899. S R3,F1 SUBTRACT ONE - COMPUND CHAR. @V305798 00831000
  900. BNP FRETOLD GET OUT - FINISH @V305798 00832000
  901. BAL R10,TRANSTST TRANSLATE & TEST FOR COMP. CHAR. @V305798 00833000
  902. B FRETOLD RELEASE OLD CONTASK STORAGE @V305798 00834000
  903. B APLCOMP PUT FAKE ATTR. CHAR IN BUFFER @V305798 00835000
  904. FRETNEW EQU * RELEASE NEW CONTASK STORAGE @V305798 00836000
  905. L R1,BALRSAVE GET NEW CONTASK POINTER @VA07391 00837100
  906. LH R0,CONTSKSZ-CONTASK(,R1) GET SIZE OF CONTASK @VM03040 00838000
  907. ST R6,BALRSAVE SAVE OLD/CURRENT CONTASK PTR @VA07391 00839100
  908. B FRETCONT RELEASE NEW CONTASK @V305798 00840000
  909. FRETOLD EQU * RELEASE CURRENT CONTASK STORAGE @V305798 00841000
  910. LR R1,R6 GET CURRENT CONTASK POINTER @V305798 00842000
  911. LH R0,CONTSKSZ GET SIZE OF OLD CONTASK @V305798 00843000
  912. AH R8,CONCNT ADD NUMBER OF FAKE CHAR TO COUNT @V305798 00844000
  913. L R6,BALRSAVE GET POINTER TO NEW CONTASK @VA07391 00845100
  914. STH R8,CONCNT UPDATE DATA COUNT @V305798 00846000
  915. FRETCONT EQU * RELEASE CONTASK @V305798 00847000
  916. CALL DMKFRET RELEASE CONTASK @V305798 00848000
  917. LM R1,R10,BALRSAVE RESTORE REGISTERS @VA07391 00849100
  918. LTR R10,R10 IS THERE AN IOBLOK POINTER @VM03040 00850000
  919. BNZ APLFIRST YES, SAVE PTR. IN PREVIOUS TASK @VM03040 00851000
  920. ST R1,NICQPNT SAVE CONTASK POINTER @VM03040 00852000
  921. LR R6,R1 SET UP CONTASK REGISTER @VM03040 00853000
  922. B APLCONT CONTINUE PROCESSING @V387398 00854000
  923. APLFIRST EQU * SAVE PTR. IN PREVIOUS CONTASK @VM03040 00855000
  924. ST R1,CONPNT-CONTASK(,R3) SAVE CURRENT PTR. @VM03040 00856000
  925. LR R6,R1 SET UP CONTASK REGISTER @VM03040 00857000
  926. APLCONT TM NICTMCD,NICTEXT 3270 TEXT? @V387398 00857010
  927. BZ NOAPLW BR IF NOT @V387398 00857020
  928. LH R0,CONCNT DATA LENGTH @V387398 00857030
  929. L R1,CONADDR POINT TO DATA @V387398 00857040
  930. TXTLP LR R3,R0 REMAINING BYTE COUNT @V387398 00857050
  931. BCTR R3,0 - 1 FOR EXECUTE @V387398 00857060
  932. N R3,F255 MASK @V387398 00857070
  933. EX R3,TXTTRAN TRANSLATE TEXT OUTPUT @V387398 00857080
  934. LA R3,1(,R3) BYTE COUNT JUST TRANSLATED @V387398 00857090
  935. AR R1,R3 POINT TO NEXT BYTE TO TRANSLATE @V387398 00857100
  936. SR R0,R3 BYTES REMAINING @V387398 00857110
  937. BP TXTLP LOOP IF MORE TO TRANSLATE @V387398 00857120
  938. NOAPLW EQU * BYPASS APL TRANSLATION @VM03040 00858000
  939. MVI CONLABEL,RTNRETBF AFTER FINISHING WRITES @VM03040 00859000
  940. BAL R3,WRITSECT GO SET UP WRITE CCWS FOR BISYNC @V305731 00860000
  941. BAL R7,RGFCHAN GO GET IOBLOK POINTER @V305731 00861000
  942. SPACE 1 00862000
  943. STRTREAD EQU * READ CONTASK SECTION @V305731 00863000
  944. BAL R3,READSUB SET UP CCW FOR READ STATUS @V305731 00864000
  945. BAL R7,RGFCHAN GO GET IOBLOK POINTER @V305731 00865000
  946. SPACE 1 00866000
  947. RGFMT EQU * @V305731 00867000
  948. BAL R3,INITIAL INITIALIZE THE VM LOGO @V305731 00868000
  949. BAL R3,RGFFMT FORMAT THE DISPLAY SCREEN @V305731 00869000
  950. BAL R7,RGFCHAN GO GET IOBLOK POINTER @V305731 00870000
  951. SPACE 1 00871000
  952. CRTHOLD1 EQU * SET UP HOLD STATUS CCWS @V305731 00872000
  953. BAL R3,CRTHOLD SET UP CCWS FOR HOLD STATUS @V305731 00873000
  954. BAL R7,RGFCHAN GO GET POINTER TO IOBLOK @V305731 00874000
  955. SPACE 1 00875000
  956. CRTFULL EQU * COME HERE WHEN SCREEN IS FULL @V305731 00876000
  957. LTR R10,R10 IS THERE AN IOBLOK POINTER @V305731 00877000
  958. BZ ALARMSG NO, CHECK FOR ALARM MESSAGE @VM03134 00878000
  959. LR R6,R3 GET ORIGINAL CONTASK POINTER @V305731 00879000
  960. BAL R7,SETWRIT GO SETUP CCWS FOR RUNNING STATUS @V305731 00880000
  961. SPACE 1 00881000
  962. ALARMSG EQU * CHECK FOR ALARM MESSAGE @VM03134 00882000
  963. TM CONPARM,LOGDROP+LOGHOLD LOGOFF REQUEST ACTIVE @V305731 00883000
  964. BNZ CRTMORE1 YES, PUT SCREEN IN MORE STATUS @V305731 00884000
  965. TM NICFLAG,NICALRM ALARM MESSAGE DISPLAYED ? @V305731 00885000
  966. BO CRTHOLD1 YES, GO FORCE HOLD STATUS @V305731 00886000
  967. CRTMORE1 EQU * SET UP MORE STATUS CCWS @V305731 00887000
  968. BAL R7,RSTTMR RESET ANY ACTIVE TIMER REQUEST @V305731 00888000
  969. BAL R3,CRTMORE SET UP CCWS FOR MORE STATUS @V305731 00889000
  970. * B RGFCHAN GO GET IOBLOK POINTER 00890000
  971. RGFCHAN EQU * GET STORAGE FOR IOBLOK @V305731 00891000
  972. NI NICFLAG,X'FF'-NICPROCN CLEAR PROCESS NOW FLAG @V305731 00892000
  973. BAL R3,BLDIOB GO GET STORAGE FOR IOBLOK @V305731 00893000
  974. RGFCHAN1 EQU * @V305731 00894000
  975. LA R1,CONCCW1 START OF CCW STRING @V305731 00895000
  976. OI CONSTAT,CONESCP CONTASK PROCESSED @V305731 00896000
  977. L R4,IOBMISC GET POINTER TO LAST CONTASK @V305731 00897000
  978. LTR R4,R4 IS THE POINTER ZERO ? @V305731 00898000
  979. BP RGFCHN4 YES, ADD TO THE STRING @V305731 00899000
  980. XC BSCRESP(L'BSCRESP),BSCRESP CLEAR RESPONSE AREA @V305731 00900000
  981. ST R1,IOBCAW SET UP THE CAW @V305731 00901000
  982. BAL R7,RGFCHN5 CONTINUE WITH THIS NICBLOK @V305731 00902000
  983. SPACE 1 00903000
  984. RGFCHN4 EQU * ADD TO EXITING CCW STRING @V305731 00904000
  985. MVC CONCCW2-CONTASK(8,R4),TICCCW MOVE TIC CCW @V305731 00905000
  986. MVI CONCCW1+4-CONTASK(R4),SILI+CD SET DATA CHAINING @V305731 00906000
  987. ST R1,CONCCW2-CONTASK(,R4) SAVE PTR TO CCW STRING @V305731 00907000
  988. MVI CONCCW2-CONTASK(R4),X'08' MAKE IT A TIC COMMAND @V305731 00908000
  989. LA R1,CONCCW4+5 BYPASS WCC CHARACTER FOR CHAINING@V305731 00909000
  990. STCM R1,7,CONCCW1+1 SAVE POINTER TO DATA IN CCW @V305731 00910000
  991. LH R1,CONCCW1+6 GET CCW COUNT @V305731 00911000
  992. S R1,F4 SUBTRACT BISYNC HEADER & WCC @V305731 00912000
  993. STH R1,CONCCW1+6 SAVE COUNT VALUE @V305731 00913000
  994. RGFCHN5 EQU * CHECK STATUS OF CONTASK @V305731 00914000
  995. ST R6,IOBMISC SAVE THE LAST CONTASK PTR @V305731 00915000
  996. TM CONSTAT,CONCNTL IS THIS A CONTROL TASK ? @V305731 00916000
  997. BZ NOCONTAK NO, BYPASS CONTROL TEST @V305731 00917000
  998. CLI CONCCW1,X'2F' IS THE DISABLE COMMAND CCW FIRST @V305731 00918000
  999. BE RESTART YES, GO START I/O TO BISYNC LINE @V305731 00919000
  1000. BAL R7,RGFIOS GO QUEUE I/O OPERATION OFF IOBLOK@V305731 00920000
  1001. SPACE 1 00921000
  1002. NOCONTAK EQU * PROCESS NON-CONTROL CONTASK @V305731 00922000
  1003. L R4,CONPNT GET NEXT CONTASK POINTER @V305731 00923000
  1004. LTR R4,R4 IS THE POINTER ZERO ? @V305731 00924000
  1005. BZ SETWRIT YES, GO SET UP CCWS FOR STATUS @V305731 00925000
  1006. TM NICFLAG,NICDIAG IS THIS A DIAGNOSE WRITE @V305731 00926000
  1007. BO SETWRIT YES, GO SET UP CCWS FOR STATUS @V305731 00927000
  1008. TM NICTMCD,NICSIO WAS DIAGNOSE ISSUE TO INPUT AREA @VM03094 00928000
  1009. BO SETWRIT YES, GO SET UP CCWS FOR STATUS @VM03094 00929000
  1010. TM CONSTAT-CONTASK(R4),CONOUTPT A OUTPUT CONTASK @V305731 00930000
  1011. BZ SETWRIT NO, GO SET UP CCWS FOR STATUS @V305731 00931000
  1012. TM CONPARM-CONTASK(R4),ALARM IS THIS AN ALARM MSG @V305731 00932000
  1013. BO SETWRIT YES, GO SET UP CCWS FOR STATUS @V305731 00933000
  1014. TM CONDWC-CONTASK(R4),X'40' IS THIS A DIAGNOSE? @VA07542 00934100
  1015. BO SETWRIT YES, GO SET UP CCWS FOR STATUS @V305731 00935000
  1016. LR R3,R6 SAVE CURRENT CONTASK POINTER @V305731 00936000
  1017. LR R6,R4 PROCESS NEXT OUTPUT CONTASK @V305731 00937000
  1018. BAL R7,CORD GO PROCESS THIS OUTPUT CONTASK @V305731 00938000
  1019. SPACE 1 00939000
  1020. SETWRIT EQU * SET UP CCWS FOR RUNNING STATUS @V305731 00940000
  1021. MVC CONCCW2(8),WRT77RUN GET RUNNING STATUS CCW @V305731 00941000
  1022. MVI CONCCW1+4,SILI+CD SET DATA CHAINING @V305731 00942000
  1023. MVC CONCCW3(8),READCCW1 GET CCW FOR BISYNC RESPONSE @V305731 00943000
  1024. LA R1,BSCRESP GET ADDRESS OF RESPONSE BUFFER @V305731 00944000
  1025. STCM R1,7,CONCCW3+1 SAVE ADDRESS OF RESPONSE BUFFER @V305731 00945000
  1026. BAL R7,RGFIOS GO QUEUE I/O OPERATION OFF IOBLOK@V305731 00946000
  1027. SPACE 2 00947000
  1028. ****************************************************************** 00948000
  1029. * NEW ENTRY LABEL USE BY DMKRGA TO FORMAT THE 3270 DISPLAY 00949000
  1030. * SCREEN. THIS NEW ENTRY POINT WAS CREATED WHEN DMKRGB WAS 00950000
  1031. * SPLIT INTO TWO MODULES. 00951000
  1032. ****************************************************************** 00952000
  1033. SPACE 2 00953000
  1034. USING DMKRGB,R12 SETUP ADDRESSABILITY FOR FORMAT @V305731 00954000
  1035. DMKRGBMT DS 0D @V305731 00955000
  1036. LR R12,R7 GET BASE ADDRESS FOR DMKRGB @V305731 00956000
  1037. LM R12,R13,RGBBASE GET BASE ADDRESSES @V305731 00957000
  1038. USING DMKRGB,R12,R13 SET UP ADDRESSABILITY @V305731 00958000
  1039. BAL R3,INITIAL INITIALIZE THE VM LOGO @V305731 00959000
  1040. BAL R3,RGFFMT FORMAT THE DISPLAY SCREEN @V305731 00960000
  1041. MVI IOBMISC2,IBBWRITE SET UP FOR WRITE OPERATION @V305731 00961000
  1042. LA R1,CONCCW1 PICK UP CHANNEL PROGRAM ADDRESS @V305731 00962000
  1043. ST R1,BSCSPTR .... AND SAVE ADDRESS @V305731 00963000
  1044. BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 00964000
  1045. EJECT 00965000
  1046. RGBBASE DS 0F REMOTE 3270 BASE REGISTER VALUE @V305731 00966000
  1047. DC A(DMKRGB,DMKRGB+4096) @V305731 00967000
  1048. SPACE 2 00968000
  1049. ******************************************************************* 00969000
  1050. * SUBROUTINES FOR 3270 REMOTE SUPPORT 00970000
  1051. * 00971000
  1052. * THE SUBROUTINES ARE DUPLICATES OF SOME IN DMKRGA. 00972000
  1053. * ANY CHANGES MADE TO THESE SUBROUTINES SHOULD ALSO BE MADE 00973000
  1054. * IN DMKRGA. 00974000
  1055. ******************************************************************* 00975000
  1056. SPACE 2 00976000
  1057. SETCAWA EQU * GET START OF CCW STRING @V305731 00977000
  1058. LA R1,CONCCW1 GET BEGINNING ADDR OF CCW STRING @V305731 00978000
  1059. SETCAW EQU * I/O RESTART SECTION @V305731 00979000
  1060. ST R1,IOBCAW SET UP CAW @V305731 00980000
  1061. XC BSCRESP(L'BSCRESP),BSCRESP CLEAR RESPONSE BUFFER@V305731 00981000
  1062. TM IOBMISC2,IBBSPOLL DOING A SPECIFIC POLL? @VA08730 00981100
  1063. BO RESTART YES, GO RESTART THE LINE @VA08730 00981200
  1064. NI IOBMISC2,X'FF'-IBBWRITE TURN OFF WRITE FLAG @VA08730 00981300
  1065. CLI 5(R1),X'10' IS THIS A WRITE TEXT CCW @VA13944 00981400
  1066. BNE RESTART NO, GO RESTART THE LINE @VA08730 00981500
  1067. ST R1,BSCSPTR SAVE WRITE CCW ADDRESS @VA08730 00981600
  1068. MVI IOBMISC2,IBBWRITE INDICATE THIS IS A WRITE @VA08730 00981700
  1069. BAL R7,RESTART GO RESTART I/O OPERATION TO LINE @V305731 00982000
  1070. SPACE 1 00983000
  1071. CONRET EQU * RETURN CONTASK TO SYSTEM @V305731 00984000
  1072. L R0,CONPNT GET NEXT CONTASK (IF ANY) @V305731 00985000
  1073. ST R0,NICQPNT SET NEXT CONTASK FOR PROCESSING @V305731 00986000
  1074. SR R0,R0 CLEAR REGISTER 0 @V305731 00987000
  1075. ST R0,CONPNT CLEAR NEXT POINTER @V305731 00988000
  1076. CALL DMKQCNET RETURN CONTASK @V305731 00989000
  1077. BR R3 RETURN TO IN LINE CODE @V305731 00990000
  1078. SPACE 1 00991000
  1079. RSTTMR EQU * RESET TIMER VALUE @V305731 00992000
  1080. TM NICSTAT,NICTRQ IS A TIMER REQUEST QUEUED @V305731 00993000
  1081. BZR R7 NO, RETURN TO IN LINE CODE @V305731 00994000
  1082. NI NICSTAT,X'FF'-NICTRQ RESET TIMER REQUEST FLAG @V305731 00995000
  1083. L R1,NICATRB GET ADDRESS OF TRQBLOK @V305731 00996000
  1084. CALL DMKSCHRT RESET ACTIVE TIMER REQUEST @V305731 00997000
  1085. BR R7 RETURN TO IN LINE CODE @V305731 00998000
  1086. SPACE 1 00999000
  1087. BLDIOB EQU * GET STORAGE FOR IOBLOK @V305731 01000000
  1088. LTR R10,R10 IS THERE AN IOBLOK POINTER ? @V305731 01001000
  1089. BNZR R3 YES, RETURN @V305731 01002000
  1090. LA R0,IOBSIZE GET IOBLOK SIZES @V305731 01003000
  1091. CALL DMKFREE GET STORAGE FOR IOBLOK @V305731 01004000
  1092. LR R10,R1 SET UP ADDRESSABILITY FOR IOBLOK @V305731 01005000
  1093. XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR IOBLOK @V305731 01006000
  1094. BR R3 RETURN TO IN LINE CODE @V305731 01007000
  1095. SPACE 1 01008000
  1096. FRETIOB EQU * RELEASE IOBLOK & IOERBLOK @V305731 01009000
  1097. LTR R10,R10 IS THERE AN IOBLOK POINTER @V305731 01010000
  1098. BZR R7 NO, RETURN @V305731 01011000
  1099. BAL R3,FRETIOER RELEASE IOERBLOK @V305731 01012000
  1100. LR R1,R10 GET IOBLOK POINTER @V305731 01013000
  1101. LA R0,IOBSIZE GET SIZE OF IOBLOK @V305731 01014000
  1102. CALL DMKFRET RELEASE STORAGE FOR IOBLOK @V305731 01015000
  1103. SR R10,R10 CLEAR IOBLOK POINTER @V305731 01016000
  1104. BR R7 RETURN TO IN LINE CODE @V305731 01017000
  1105. SPACE 1 01018000
  1106. FRETIOER EQU * RELEASE IOERBLOK STORAGE @V305731 01019000
  1107. L R1,IOBIOER GET POINTER TO IOERBLOK @V305731 01020000
  1108. LTR R1,R1 IS POINTER ZERO ? @V305731 01021000
  1109. BZR R3 YES, RETURN @V305731 01022000
  1110. LA R0,IOERSIZE GET SIZE OF IOERBLOK @V305731 01023000
  1111. AH R0,IOEREXT-IOERBLOK(,R1) EXTENSION TO IOERBLOK @V305731 01024000
  1112. CALL DMKFRET RELEASE STORAGE FOR IOERBLOK @V305731 01025000
  1113. SR R0,R0 CLEAR REGISTER 0 @V305731 01026000
  1114. ST R0,IOBIOER CLEAR POINTER TO IOERBLOK @V305731 01027000
  1115. BR R3 RETURN @V305731 01028000
  1116. SPACE 1 01029000
  1117. CRTMORE EQU * SET UP CCWS FOR MORE STATE @V305731 01030000
  1118. BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 01031000
  1119. MVI NICSTAT,NICMORE+NICNTRL INDICATE MORE & CONTROL @V305731 01032000
  1120. MVI CONLABEL,RTNSTMOR SET RETURN TO MORE SECTION @V305731 01033000
  1121. LA R1,WRT77CCW GET ADDRESS OF MORE CCWS @V305731 01034000
  1122. BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 01035000
  1123. MVI CONCCW1+7,MOR77L+4 SET MORE CCW COUNT @V305731 01036000
  1124. LA R1,MOR77L GET LENGTH OF MORE DATA @V305731 01037000
  1125. LA R2,MOR3277 GET ADDRESS OF MORE DATA @V305731 01038000
  1126. BAL R7,DATAMOVE MOVE DATA INTO CONTASK BUFFER @V305731 01039000
  1127. BR R3 RETURN @V305731 01040000
  1128. SPACE 1 01041000
  1129. CRTHOLD EQU * SET UP CCWS FOR HOLD STATE @V305731 01042000
  1130. BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 01043000
  1131. MVI NICSTAT,NICHOLD+NICNTRL INDICATE HOLD & CONTROL @V305731 01044000
  1132. MVI CONLABEL,RTNNOCTL SET RETURN TO NEXT CONTASK @V305731 01045000
  1133. LA R1,WRT77CCW GET ADDRESS OF HOLD CCWS @V305731 01046000
  1134. BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 01047000
  1135. MVI CONCCW1+7,HLD77L+4 SET HOLD CCW COUNT @V305731 01048000
  1136. LA R1,HLD77L GET LENGTH OF HOLD DATA @V305731 01049000
  1137. LA R2,HLD3277 GET ADDRESS OF HOLD DATA @V305731 01050000
  1138. BAL R7,DATAMOVE MOVE DATA INTO CONTASK BUFFER @V305731 01051000
  1139. BR R3 RETURN @V305731 01052000
  1140. SPACE 1 01053000
  1141. WRITSECT EQU * HANDLE WRITE REQUEST @V305731 01054000
  1142. ST R3,TEMPR3 SAVE RETURN ADDRESS @V305731 01055000
  1143. LH R3,CONCNT GET DATA COUNT @V305731 01056000
  1144. LA R1,WRT77CCW GET ADDRESS OF WRITE CCW @V305731 01057000
  1145. BAL R7,SETUPCCW SET UP CCWS FOR BISYNC LINE @V305731 01058000
  1146. MVC CONCCW4+1(3),SYNCP MOVE BISYNC HEADER INTO DATA @V305731 01059000
  1147. MVC CONCCW4+4(4),WRT77D SET DATA @V305731 01060000
  1148. LA R3,WRT77DL+3(R3) TOTAL DATA COUNT @V305731 01061000
  1149. STH R3,CONCCW1+6 SAVE COUNT OF WRITE DATA @V305731 01062000
  1150. SR R3,R3 CLEAR @V305731 01063000
  1151. TM NICTMCD,NICSIO IS WRITING TO INPUT AREA FLAG ON @VM03094 01064000
  1152. BZ WRITAPL NO, BYPASS LINE COORDINATE @VM03094 01065000
  1153. IC R3,BSCLINE GET LINE COORDINATE @VM03094 01066000
  1154. B WRITDIAG GET BUFFER ADDRESS FOR LINE @VM03094 01067000
  1155. WRITAPL EQU * ... @VM03094 01068000
  1156. IC R3,NICCORD GET LINE POSITION @V305731 01069000
  1157. ALR R4,R3 UPDATE LINE COORDINATE @V305731 01070000
  1158. STC R4,NICCORD SAVE NEXT LINE POSITION @V305731 01071000
  1159. WRITDIAG EQU * GET BUFFER ADDRESS FOR LINE @VM03094 01072000
  1160. SLL R3,1 TIMES 2 @V305731 01073000
  1161. LH R3,TBL3277(R3) GET BUFFER ADDRESS @V305731 01074000
  1162. STH R3,CONCCW4+6 SET BUFFER ADDRESS @V305731 01075000
  1163. TM CONPARM,ALARM ALARM WITH MESSAGE ?? @V305731 01076000
  1164. BZ LOADR3 NO, RETURN TO IN LINE CODE @V305731 01077000
  1165. OI NICFLAG,NICALRM SET ALARM MESSAGE INDICATOR @V305731 01078000
  1166. OI CONCCW4+4,WCC5 SET ALARM BIT @V305731 01079000
  1167. LOADR3 EQU * SET UP FOR RETURN @V305731 01080000
  1168. MVI CONLABEL,RTNRETBF SET RETURN TO WRITE FINISH @V305731 01081000
  1169. L R3,TEMPR3 RESTORE RETURN ADDRESS @V305731 01082000
  1170. BR R3 RETURN @V305731 01083000
  1171. SPACE 01084000
  1172. READSUB EQU * SET UP CCWS FOR READ STATE @V305731 01085000
  1173. LR R2,R6 SAVE CONTASK POINTER @V305731 01086000
  1174. BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 01087000
  1175. LA R1,WRT77CCW GET CCWS FOR READ STATE @V305731 01088000
  1176. BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 01089000
  1177. LR R15,R2 GET ORIGINAL CONTASK POINTER @V305731 01090000
  1178. MVI CONCCW1+7,CPR77L+4 SET READ CCW COUNT @V305731 01091000
  1179. LA R1,CPR77L GET LENGTH OF READ DATA @V305731 01092000
  1180. LA R2,CPR3277 GET ADDRESS OF READ DATA @V305731 01093000
  1181. BAL R7,DATAMOVE MOVE DATA INTO BUFFER AREA @V305731 01094000
  1182. TM CONPARM-CONTASK(R15),INHIBIT NON-DISPLAY DATA @V305731 01095000
  1183. BZ BYPATTR NO, BYPASS SETTING ATTRIBUTE BYTE@VM03134 01096000
  1184. MVI CONDATA+1,ATTR457 SET NON-DISPLAY ATTRIBUTE BYTE@V305731 01097000
  1185. BYPATTR EQU * CHECK FOR VIRTUAL MACHINE @VM03134 01098000
  1186. TM CONPARM-CONTASK(R15),VMGENIO A VIRTUAL MACH READ@V305731 01099000
  1187. BZ BYPVMRD NO, BYPASS VM READ DATA @VM03134 01100000
  1188. MVC CONDATA+7(7),VMREADS MOVE VM READ INTO BUFFER @V305731 01101000
  1189. BYPVMRD EQU * SETUP SCREEN STATUS @VM03134 01102000
  1190. MVI NICSTAT,NICREAD+NICNTRL INDICATE READ & CONTROL @V305731 01103000
  1191. OI CONSTAT-CONTASK(R15),CONESCP CONTASK PROCESSED @V305731 01104000
  1192. MVI CONLABEL,RTNNOCTL SET RETURN TO NEXT CONTASK @V305731 01105000
  1193. BR R3 RETURN @V305731 01106000
  1194. SPACE 2 01107000
  1195. TRANSTST EQU * TRANSLATE & TEST FOR COMP. CHAR. @V305798 01108000
  1196. CL R3,F256 LESS THAN 256 ? @V305798 01109000
  1197. BNH APLTST YES, ONLY TRANSLATE & TEST ONCE @V305798 01110000
  1198. TRT 0(256,R4),0(R7) TRANSLATE & TEST DATA @V305798 01111000
  1199. BNZ APLMOVE FOUND COMP. CHAR. - MOVE DATA @V305798 01112000
  1200. MVC 0(256,R5),0(R4) MOVE DATA TO NEW BUFFER @V305798 01113000
  1201. LA R4,256(,R4) UPDATE CURRENT CONTASK BUFFER PTR@V305798 01114000
  1202. LA R5,256(,R5) UPDATE NEW CONTASK BUFFER PTR @V305798 01115000
  1203. S R3,F256 DECREMENT DATA COUNT @V305798 01116000
  1204. BNPR R10 IF ZERO, RETURN TO IN LINE CODE @VM03040 01117000
  1205. B TRANSTST CONTINUE TRANSLATING DATA @V305798 01118000
  1206. APLMOVE EQU * MOVE DATA INTO NEW CONTASK BUFFER@V305798 01119000
  1207. SR R1,R4 GET LENGTH OF DATA @V305798 01120000
  1208. EX R1,MOVEAPL MOVE DATA INTO NEW BUFFER @VM03040 01121000
  1209. AR R5,R1 UPDATE NEW BUFFER POINTER @V305798 01122000
  1210. AR R4,R1 UPDATE CURRENT BUFFER POINTER @V305798 01123000
  1211. B 4(R10) MOVE FAKE ATTR CHAR. INTO BUFFER @V305798 01124000
  1212. SPACE 01125000
  1213. APLTST EQU * TRANSLATE & TEST FOR COMP. CHAR. @V305798 01126000
  1214. BCTR R3,R0 SUBSTRACT ONE - EX INSTR. @VM03040 01127000
  1215. EX R3,TRTTST TRANSLATE & TEST DATA @VM03040 01128000
  1216. LA R3,1(,R3) UPDATE COUNTER - EX INSTR. @VM03040 01129000
  1217. BNZ APLMOVE FOUND COMPOUND CHARACTER @V305798 01130000
  1218. BCTR R3,0 SUBTRACT ONE FOR EXECUTE @VA09182 01131100
  1219. EX R3,MOVEAPL MOVE DATA TO BUFFER @VA09182 01131200
  1220. LA R3,1(,R3) RESET BYTE COUNT @VA09182 01131300
  1221. BR R10 RETURN TO IN LINE CODE @V305798 01132000
  1222. SPACE 1 01133000
  1223. SELECTCW EQU * SET UP CCWS TO SELECT A STATION @V305731 01134000
  1224. TM RDEVFTR,FTRDIAL DIAL-UP FEATURE INDICATED? @V346931 01135100
  1225. BNO NONSW NO, DO SELECTION OPERATION @V346931 01135200
  1226. MVC BSCSCCW1(THREECCW),INITBID INITIAL LINE BID CCWS@V346931 01135300
  1227. B JOINSEL GO SET UP RESPONSE BUFFER @V346931 01135400
  1228. NONSW EQU * NEXT DO SELECTION OPERATION @V346931 01135500
  1229. MVC BSCSCCW1(THREECCW),WRITSEL ADDRESSING CCW STRING@V346931 01135600
  1230. ICM R1,10,NICSELT GET ADDRESSING CHARACTERS @V305731 01138000
  1231. ICM R1,5,NICSELT SET UP DOUBLE ADDRESSING CHARS. @V305731 01139000
  1232. STCM R1,15,BSCSEL SAVE ADDRESS OF REMOTE STATION @V305731 01140000
  1233. MVI BSCSEL+4,ENQ SET UP ADDRESSING ENTRY @V305731 01141000
  1234. LA R1,BSCSEL GET ADDR OF SELECTION ENTRY @V346931 01141100
  1235. STCM R1,B'0111',BSCSCCW2+1 INTO CCW @V346931 01141200
  1236. JOINSEL EQU * SET UP READ RESPONSE BUFFER @V346931 01141300
  1237. LA R1,BSCRESP GET RESPONSE BUFFER POINTER @V305731 01142000
  1238. STCM R1,7,BSCSCCW3+1 SAVE ADDRESS IN CCW @V305731 01143000
  1239. XC BSCRESP(2),BSCRESP CLEAR RESPONSE BUFFER @V305731 01144000
  1240. MVC BSCRCVD(4),RGFACK0 EXPECTED RECVD & SEND RESP. @V305731 01145000
  1241. MVC BSCSPTR(4),IOBCAW SAVE PTR. TO WRITE CCW STRING @V305731 01146000
  1242. MVI IOBMISC2,IBBSELA SET SELECTION INDICATOR @V305731 01147000
  1243. LA R1,BSCSCCW1 GET START OF SELECTION CCW STRING@V305731 01148000
  1244. ST R1,IOBCAW SET UP CAW FIELD @V305731 01149000
  1245. BR R3 RETURN @V305731 01150000
  1246. SPACE 1 01151000
  1247. GPOLLCW EQU * SET UP CCWS FOR GENERAL POLLING @V305731 01152000
  1248. L R9,RDEVNICL GET ADDR OF CONTROL UNIT NICBLOK @V305731 01153000
  1249. TM RDEVFTR,FTRDIAL DIAL-UP FEATURE INDICATED? @V346931 01153100
  1250. BNO POLLCONT NO, DO GENERAL POLLING OPERATION @V346931 01153200
  1251. MVC BSCPCCW1(TWOCCW),S3275EOT WRITE EOT / READ @V346931 01153300
  1252. LA R1,BSCRESP ADDRESS OF RESPONSE BUFFER @V346931 01153400
  1253. STCM R1,B'0111',BSCPCCW2+1 INTO CCW @V346931 01153500
  1254. B JOINPOLL @V346931 01153600
  1255. POLLCONT EQU * SET UP READ BUFFER @V346931 01153700
  1256. MVI IOBMISC2,IBBREAD SET FLAG FOR GENERAL POLLING @V305731 01154000
  1257. MVC BSCPCCW1(8*4),POLCCW GENERAL POLLING CCW STRING @V305731 01155000
  1258. LA R1,BSCREAD GET READ BUFFER ADDRESS @V305731 01156000
  1259. STCM R1,7,BSCPCCW4+1 SAVE ADDRESS OF READ BUFFER @V305731 01157000
  1260. LA R1,BSCSEL GET ADDRESS OF POLLING ENTRY @V305731 01158000
  1261. STCM R1,7,BSCPCCW2+1 SAVE ADDRESS OF POLL ENTRY @V305731 01159000
  1262. ICM R1,10,NICPOLL GET POLLING CHARACTERS @V305731 01160000
  1263. ICM R1,5,NICPOLL SET UP DOUBLE POLLING CHARACTERS @V305731 01161000
  1264. STCM R1,15,BSCSEL SAVE ADDRESS OF REMOTE STATION @V305731 01162000
  1265. MVC BSCSEL+4(3),RGFINDEQ SET UP ENQ, INDEX VAL & EOT@VA03474 01163100
  1266. JOINPOLL EQU * CLEAR READ BUFFER @V346931 01163150
  1267. XC BSCRESP(256),BSCRESP CLEAR READ BUFFER @V346931 01164000
  1268. XC BSCRESP+256(L'BSCRESP+L'BSCREAD-256),BSCRESP+256 X01165000
  1269. THIS SUPPORT CODE APPLIES TO LINE ABOVE @V346931 01165500
  1270. MVC BSCRCVD(4),RGFACK0 SET RECEIVING & SENDING RESP @V305731 01166000
  1271. LA R1,BSCPCCW1 GET START OF POLLING CCW STRING @V305731 01167000
  1272. BR R3 RETURN @V305731 01168000
  1273. EJECT 01169000
  1274. * THE EXECUTE INSTRUCTION USED THE FOLLOWING INSTRUCTIONS 01170000
  1275. TROPUT TR 0(*-*,R2),0(R7) EXECUTED TRANSLATE OUTPUT @V305731 01171000
  1276. TRTTST TRT 0(*-*,R4),0(R7) TRANSLATE THE COMPOUND CHARACTER@V305798 01172000
  1277. MOVEAPL MVC 0(*-*,R5),0(R4) GET REMAINING CHARACTERS @V305798 01173000
  1278. SNGLCHAR EQU 256 OFFSET TO SINGLE CHARACTER XLATE TABLE @V387398 01173100
  1279. TXTTRAN TR 0(*-*,R1),SNGLCHAR(R7) TRANSLATE TEXT OUTPUT @V387398 01173200
  1280. SPACE 1 01174000
  1281. * STORAGE FOR DATA LINK CONTROL CHARACTERS 01175000
  1282. RGFEOT DC AL1(EOT) END OF TRANSMISSION CHARACTER @V305731 01176000
  1283. RGFNAK DC AL1(NAK) NEGATIVE RESPONSE CHARACTER @V305731 01177000
  1284. RGFENQ DC AL1(ENQ) INQUIRY CHARACTER @V305731 01178000
  1285. RGFSONL DC AL1(SOH,X'6C') HEADER FOR NON-TEXT MSG. (SOH %) @V305731 01179000
  1286. RGFWACK DC AL2(WACK) WAIT ACKNOWLEDGE CHARACTER @V305731 01180000
  1287. RGFRVI DC AL2(RVI) REVERSE INTERRUPT CHARACTER @V305731 01181000
  1288. RGFACK0 DC AL2(ACK0) POSITIVE ACKNOWLEDGE 0 CHARACTER @V305731 01182000
  1289. RGFACK1 DC AL2(ACK1) POSITIVE ACKNOWLEDGE 1 CHARACTER @V305731 01183000
  1290. SPACE 1 01184000
  1291. * CCWS FOR POLLING AND SELECTING REMOTE STATIONS 01185000
  1292. DS 0D @V305731 01186000
  1293. WRITSEL DC X'01',AL3(RGFEOT),AL1(SILI+CC,X'02'),AL2(1) @V305731 01187000
  1294. DC X'01',AL3(0),AL1(SILI+CC,X'03'),AL2(5) @V305731 01188000
  1295. DC X'02',AL3(0),AL1(SILI,X'05'),AL2(2) @V305731 01189000
  1296. SPACE 01190000
  1297. POLCCW DC X'01',AL3(RGFEOT),AL1(SILI+CC,X'02'),AL2(1) @V305731 01191000
  1298. DC X'09',AL3(0),AL1(SILI+CC,X'03'),AL2(7) @VA03474 01192100
  1299. DC X'03',AL3(0),AL1(SILI,X'07'),AL2(1) @V305731 01193000
  1300. DC X'02',AL3(0),AL1(SILI,X'0A'),AL2(BSCSIZE1) @V305731 01194000
  1301. SPACE 01195000
  1302. SPACE 2 01195100
  1303. * PSUEDO POLLING CCWS FOR 3275 DIAL OPERATION @V346931 01195200
  1304. S3275EOT DC X'01',AL3(RGFEOT),AL1(SILI+CC,X'02'),AL2(1) @V346931 01195300
  1305. DC X'02',AL3(0),AL1(SILI,X'0D'),AL2(2) @V346931 01195400
  1306. TWOCCW EQU (8*2) LENGTH OF TWO CCWS @V346931 01195500
  1307. SPACE 1 01195600
  1308. TICCCW DC X'08',AL3(0),AL1(SILI,X'00'),AL2(1) @V305731 01196000
  1309. WRT77RUN DC X'00',AL3(RUN3277+1),AL1(SILI+CC,X'10') @VA13944 01197100
  1310. DC AL2(RUN77L-1) @VA08995 01197200
  1311. SPACE 1 01198000
  1312. * 3270 REMOTE DATA AND STATUS MESSAGES 01199000
  1313. WRT77D DC AL1(WCC6,SBA,0,0) @V305731 01200000
  1314. WRT77DL EQU *-WRT77D @V305731 01201000
  1315. SPACE 01202000
  1316. HLD3277 DC AL1(WCC3,SBA,X'5D',X'6B',SF,ATTR2) @VA07171 01203100
  1317. HLDSTAT DC CL20'HOLDING' @V305731 01204000
  1318. HLD77L EQU *-HLD3277 @V305731 01205000
  1319. SPACE 01206000
  1320. MOR3277 DC AL1(WCC3,SBA,X'5D',X'6B',SF,ATTR2) @VA07171 01207100
  1321. MORSTAT DC CL20'MORE...' @V305731 01208000
  1322. MOR77L EQU *-MOR3277 @V305731 01209000
  1323. SPACE 01210000
  1324. RUN3277 DC AL1(WCC6,SBA,X'5B',X'5F',SF,ATTR7) @V305731 01211000
  1325. DC AL1(SBA,X'5D',X'6B',SF,ATTR2) @V305731 01212000
  1326. RUNSTAT DC CL20'RUNNING',AL1(ETX) @V305731 01213000
  1327. RUN77L EQU *-RUN3277 @V305731 01214000
  1328. SPACE 01215000
  1329. CPR3277 DC AL1(WCC6,SBA,X'5B',X'5F',SF,ATTR7) @V305731 01216000
  1330. DC AL1(SBA,X'5D',X'6B',SF,ATTR2) @V305731 01217000
  1331. DC CL20'CP READ' @V305731 01218000
  1332. CPR77L EQU *-CPR3277 @V305731 01219000
  1333. SPACE 01220000
  1334. VMREADS DC CL7'VM READ' @V305731 01221000
  1335. EJECT 01222000
  1336. SPACE 01223000
  1337. * RETURN INDEX VALUE FOR 3270 REMOTE SUPPORT 01224000
  1338. RTNNOCTL EQU X'00' RETURN TO GET NEXT CONTASK @V305731 01225000
  1339. RTNSRTRD EQU X'04' RETURN TO READ SECTION @V305731 01226000
  1340. RTNLGTST EQU X'08' RETURN TO LOGOFF USER @V305731 01227000
  1341. RTNRFCFM EQU X'0C' RETURN TO CONS. FUNCTION PROCESS @V305731 01228000
  1342. RTNSTMOR EQU X'10' RETURN TO MORE SECTION @V305731 01229000
  1343. RTNSETRJ EQU X'14' RETURN TO REJECT SECTION @V305731 01230000
  1344. RTNCPNAT EQU X'18' RETURN TO WRITE STATUS SECTION @V305731 01231000
  1345. RTNLOGOF EQU X'1C' RETURN TO LOGOFF USER SECTION @V305731 01232000
  1346. RTNBLDVM EQU X'20' RETURN TO BUILD VMBLOK SECTION @V305731 01233000
  1347. RTNFMTDN EQU X'24' RETURN TO FORMATS FINISH SECTION @V305731 01234000
  1348. RTNRETBF EQU X'28' RETURN TO WRITE COMPLETED SECTION@V305731 01235000
  1349. RTNRDEXT EQU X'2C' RETURN TO RELEASE READ BUFFER @V305731 01236000
  1350. RTNRVIRP EQU X'30' RETURN TO RVI RESPONSE SECTION @V305731 01237000
  1351. SPACE 1 01238000
  1352. * READ/WRITE OPERATION TYPES 01239000
  1353. IBBSELA EQU X'80' ADDRESSING/SELECTING A STATION @V305731 01240000
  1354. IBBWRITE EQU X'40' WRITE DATA TO A REMOTE STATION @V305731 01241000
  1355. IBBREAD EQU X'20' GENERAL POLLING OF STATIONS @V305731 01242000
  1356. IBBSPOLL EQU X'10' SPECIFIC POLLING TO A STATION @V305731 01243000
  1357. SPACE 1 01244000
  1358. * DATA-LINK CONTROL CHARACTERS FOR 3270 REMOTE SYSTEM 01245000
  1359. SOH EQU X'01' START OF HEADING @V305731 01246000
  1360. STX EQU X'02' START OF TEXT @V305731 01247000
  1361. ETX EQU X'03' END OF TEXT @V305731 01248000
  1362. ETB EQU X'26' END OF BLOCK @V305731 01249000
  1363. ESC EQU X'27' ESCAPE @V305731 01250000
  1364. EOT EQU X'37' END OF TRANSMISSION @V305731 01251000
  1365. ENQ EQU X'2D' ENQUIRY @V305731 01252000
  1366. NAK EQU X'3D' NEGATIVE ACKNOWLEDGMENT @V305731 01253000
  1367. WACK EQU X'106B' WAIT BEFORE TRANSMIT @V305731 01254000
  1368. RVI EQU X'107C' REVERSE INTERRUPT @V305731 01255000
  1369. ACK0 EQU X'1070' EVEN ACKNOWLEDGE @V305731 01256000
  1370. ACK1 EQU X'1061' ODD ACKNOWLEDGE @V305731 01257000
  1371. SPACE 01258000
  1372. * 3270 REMOTE SYSTEM COMMAND CODES 01259000
  1373. WRTCMD EQU X'F1' WRITE COMMAND CODE @V305731 01260000
  1374. EWRTCMD EQU X'F5' ERASE/WRITE COMMAND CODE @V305731 01261000
  1375. COPYCMD EQU X'F7' COPY COMMAND CODE @V305731 01262000
  1376. SPACE 1 01263000
  1377. * 3270 DISPLAY STATION ORDERS 01264000
  1378. SF EQU X'1D' START OF FIELD CONTROL @V305731 01265000
  1379. SBA EQU X'11' SET BUFFER ADDRESS @V305731 01266000
  1380. IC EQU X'13' INSERT CURSOR @V305731 01267000
  1381. RA EQU X'3C' REPEAT TO ADDRESS (CHAR) @V305731 01268000
  1382. EUA EQU X'12' ERASE UNPROTECTED TO ADDRESS @V305731 01269000
  1383. SPACE 1 01270000
  1384. * 3270 WRITE CONTROL CHARACTERS 01271000
  1385. WCC3 EQU X'C2' RESTORE KEYBOARD @VA07171 01271400
  1386. WCC4 EQU X'C6' RESTORE KEYBOARD, ALARM @VA07171 01271800
  1387. WCC5 EQU X'C5' WRITE CONTROL CHAR TO SOUND ALARM@VM03116 01272000
  1388. WCC6 EQU X'C3' W.C.C. TO RESTORE KEYBOARD @VM03116 01273000
  1389. WCC56 EQU X'C7' W.C.C. TO SOUND ALARM & RES. KEY.@VM03116 01274000
  1390. WCC8 EQU X'F8' W.C.C. TO PTR FOR 80-CHAR LINE @VM03116 01275000
  1391. ATTR2 EQU X'60' PROTECTED ATTRIBUTE CHARACTER @VM03116 01276000
  1392. ATTR7 EQU X'C1' MODIFIED DATA TAG ATTRIBUTE CHAR @VM03116 01277000
  1393. ATTR457 EQU X'4D' PROTECTED, NONDISPLAY & MOD. DATA@VM03116 01278000
  1394. SPACE 01279000
  1395. * TABLE OF LINE ADDRESS FOR 3277 DISPLAY STATION 01280000
  1396. TBL3277 DS 0D @V305731 01281000
  1397. DC X'4040C150C260C3F0C540C650C760' @V305731 01282000
  1398. DC X'C8F04A404B504C604DF04F405050' @V305731 01283000
  1399. DC X'D160D2F0D440D550D660D7F0D940' @V305731 01284000
  1400. DC X'5A505B605CF0' @V305731 01285000
  1401. SPACE 01286000
  1402. * MAINTENANCE AREA 01287000
  1403. RGFMAINT DC 8CL6'DMKRGB' THIS AREA IS USED FOR UPDATES @VA06170 01288000
  1404. EJECT 01289000
  1405. LTORG @V305731 01290000
  1406. EJECT 01291000
  1407. COPY NETWORK @V305731 01292000
  1408. EJECT 01293000
  1409. COPY BSCBLOKS @V305731 01294000
  1410. EJECT 01295000
  1411. COPY TIMER @V305731 01296000
  1412. SPACE 2 01297000
  1413. EJECT 01303000
  1414. COPY DEVTYPES @V305731 01304000
  1415. EJECT 01305000
  1416. COPY EQU @V305731 01306000
  1417. EJECT 01307000
  1418. COPY VBLOKS @V305731 01308000
  1419. EJECT 01309000
  1420. COPY RBLOKS @V305731 01310000
  1421. EJECT 01311000
  1422. COPY CONBUF @V305731 01312000
  1423. EJECT 01313000
  1424. COPY IOBLOKS @V305731 01314000
  1425. EJECT 01315000
  1426. COPY IOER @V305731 01316000
  1427. EJECT 01317000
  1428. COPY VMBLOK @V305731 01318000
  1429. EJECT 01319000
  1430. COPY SAVE @V305731 01320000
  1431. EJECT 01321000
  1432. PSA @V305731 01322000
  1433. EJECT 01323000
  1434. END 01324000