Table of Contents

DMSSCR Source

References

Source Listing

DMSSCR.ASSEMBLE.txt
  1. SCR TITLE 'DMSSCR (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. *************************************************************** 00004000
  5. * MODULE NAME: 00005000
  6. * 00006000
  7. * DMSSCR 00007000
  8. * 00008000
  9. * FUNCTION: 00009000
  10. * 00010000
  11. * LOAD DISPLAY BUFFERS AND CREATE A PARAMETER LIST FOR 00011000
  12. * MODULE DMSGIO. 00012000
  13. * 00013000
  14. * ATTRIBUTES: 00014000
  15. * 00015000
  16. * EXECUTES IN USER AREA AS PART OF EDIT LOAD MODULE. 00016000
  17. * 00017000
  18. * ENTRY POINT: 00018000
  19. * 00019000
  20. * DMSSCR 00020000
  21. * 00021000
  22. * ENTRY CONDITIONS: 00022000
  23. * 00023000
  24. * GPR 14 CONTAINS A RETURN ADDRESS. 00024000
  25. * 00025000
  26. * EXIT CONDITIONS: 00026000
  27. * 00027000
  28. * NORMAL .. GPR 15 = 0 00028000
  29. * 00029000
  30. * ERROR .. GPR 15 = 4 ERROR WRITING TO SCREEN 00030000
  31. * 00031000
  32. * CALLS TO OTHER ROUTINES: 00032000
  33. * 00033000
  34. * DMSGIO 00034000
  35. * 00035000
  36. * EXTERNAL REFERENCES: 00036000
  37. * 00037000
  38. * CONTROL BLOCKS IN DMSEDI 00038000
  39. * 00039000
  40. * BLOC 00040000
  41. * PTRCONS 00041000
  42. * SCRINFO 00042000
  43. * 00043000
  44. * OUTPUT: 00044000
  45. * 00045000
  46. * DISPLAY BUFFERS ARE FILLED AND MAINTAINED BY THIS 00046000
  47. * MODULE. THE DATA ADDRESS TO BE WRITTEN, THE LENGTH 00047000
  48. * OF DATA, AND THE PHYSICAL LINE TO WRITE TO IS PASSED 00048000
  49. * BY THIS MODULE TO DMSGIO. 00049000
  50. * 00050000
  51. * 00051000
  52. * OPERATION: 00052000
  53. * 00053000
  54. * UPON ENTRY TO THIS ROUTINE THE TWO BYTES LABELLED 00054000
  55. * SCRFLGS, AND SCRFLG2 WILL BE SET TO INDICATE THE 00055000
  56. * FOLLOWING: 00056000
  57. * 00057000
  58. * SCRFLGS= X'80' REWRITE THE STATUS AREA 00058000
  59. * 00059000
  60. * SCRFLGS= X'40' WRITE THE CURRENT LINE TO LINE 9 OF ALL DISPLAYS 00060000
  61. * EXCEPT 3278 MOD 2A WHICH IS LINE 7 00061000
  62. * 00062000
  63. * SCRFLGS= X'20' WRITE FROM THE CURRENT LINE DOWN TO THE 00063000
  64. * BOTTOM OF THE OUTPUT AREA. 00064000
  65. * 00065000
  66. * SCRFLGS= X'02' WRITE FROM CURRENT LINE UP TO TOP 00066000
  67. * 00067000
  68. * 00068000
  69. * SCRFLG2= X'80' CAUSE CP MORE STATUS. ISSUED WITH A 00069000
  70. * COMPLETE WRITE REQUEST. 00070000
  71. * 00071000
  72. * SCRFLG2= X'40' CAUSE AN EFFECTIVE OPERATOR CANCEL. 00072000
  73. * 00073000
  74. * SCAFLG2= X'04' WRITE LAST COMMAND TO INPUT AREA 00074000
  75. * 00075000
  76. * 00076000
  77. * DMSSCR USES THE FLAG BITS TO LOAD A DISPLAY BUFFER 00077000
  78. * AREA WHICH IS LOCATED IN USER FREE STORAGE. THIS AREA 00078000
  79. * WAS OBTAINED BY DMSEDX DURING INITIALIZATION. 00079000
  80. * 00080000
  81. * FILEID INFORMATION IS OBTAINED FROM CONTROL BLOCKS 00081000
  82. * IN DMSEDI. EDITOR STATUS IS DETERMINED BY FLAG BITS 00082000
  83. * IN DMSEDI INDICATING 'NEW FILE','EDIT MODE',OR 00083000
  84. * 'INPUT MODE'. 00084000
  85. * 00085000
  86. * THE LENGTH AND ADDRESS OF A MESSAGE TO BE WRITTEN 00086000
  87. * ARE LOCATED IN REGISTERS 0 AND 1 RESPECTIVELY AT 00087000
  88. * ENTRY TO THIS MODULE. 00088000
  89. * 00089000
  90. * THE TRUNCATION COLUMN IS USED TO DETERMINE THE 00090000
  91. * LENGTH OF THE CURRENT LINE TO BE PLACED IN THE INPUT 00091000
  92. * AREA BUFFER. IN THE CASE OF A DISPLAY CHANGE COMMAND 00092000
  93. * WITH LINEMODE IN EFFECT, THE LINE NUMBER IS NOT 00093000
  94. * WRITTEN IN THE INPUT AREA WITH THE REST OF THE DATA. 00094000
  95. * IT IS THEREBY PROTECTED FROM ALTERATION BY THE USER. 00095000
  96. * 00096000
  97. * LOADING OUTPUT AREA BUFFERS 00097000
  98. * 00098000
  99. * THE OUTPUT BUFFERS ARE ALWAYS LOADED SO THAT LINE 9 00099000
  100. * OF THE DISPLAY ALWAYS CONTAINS THE CURRENT LINE UNLESS 00100000
  101. * IT IS A 3278 MOD 2A THEN IT IS LINE 7. IF 00101000
  102. * THE VERIFICATION COLUMN IS GREATER THAN 80, TWO LINES 00102000
  103. * MAY BE USED TO DISPLAY THE RECORD. 00103000
  104. * TRAILING BLANKS IN A RECORD ARE IGNORED IN DETERMIN- 00104000
  105. * ING WHETHER OR NOT A RECORD WILL REQUIRE TWO DISPLAY 00105000
  106. * LINES. 00106000
  107. * THE CURRENT LINE IS THE FIRST TO BE LOADED INTO THE 00107000
  108. * BUFFER AREA. 00108000
  109. * ENOUGH RECORDS FOLLOWING THE CURRENT LINE TO FILL 00109000
  110. * THE REMAINING LOWER OUTPUT BUFFER AREA ARE THEN 00110000
  111. * LOADED. 00111000
  112. * THEN THE LINES PRECEDING THE CURRENT LINE ARE 00112000
  113. * LOADED IN REVERSE ORDER, THAT IS, LINE 8, LINE 7, ETC, 00113000
  114. * THROUGH LINE 2. 00114000
  115. * IN THE CASE OF TOP OF FILE OR END OF FILE BEING 00115000
  116. * ENCOUNTEREDIN LOADING THE BUFFER AREA, THE REMAINING 00116000
  117. * BUFFER LINES IN THE OUTPUT AREA ARE PADDED WITH 00117000
  118. * BLANKS. 00118000
  119. * 00119000
  120. * WHEN THE REQUESTED BUFFERS HAVE BEEN LOADED A 00120000
  121. * PARAMETER LIST IS GENERATED USING THE UPPER AND LOWER 00121000
  122. * LIMITS OF THE WRITE REQUEST TO CALCULATE THE NUMBER 00122000
  123. * OF BYTES TO BE WRITTEN. A CALL IS MADE TO DMSGIO FOR 00123000
  124. * ISSUANCE OF THE CP DIAGNOSE TO WRITE TO THE DISPLAY. 00124000
  125. * 00125000
  126. * UPON RETURN FROM DMSGIO, DMSSCR RETURNS TO THE CALLER 00126000
  127. * WITH CP'S DIAGNOSE RETURN CODE IN REGISTER 15. 00127000
  128. * 00128000
  129. * 00129000
  130. *************************************************************** 00130000
  131. *. 00131000
  132. SPACE 2 00132000
  133. EJECT 00133000
  134. DMSSCR START 0 00134000
  135. USING DMSSCR,R15 TEMP ADDRESSABILITY 00135000
  136. USING EDCB,R13 @V305614 00136000
  137. STM R0,R14,SAVEAR SAVE INCOMING REGISTERS @V2D3913 00137000
  138. LR R12,R15 CHANGE BASE 00138000
  139. DROP R15 00139000
  140. USING DMSSCR,R12 NEW ADDRESSABILITY 00140000
  141. L R11,SCRBUFAD GET ADR OF BUFFER 00141000
  142. USING SCRBUF,R11 00142000
  143. MVI FLAGLOC,X'00' RESET GIO PLIST @V2D3913 00143000
  144. MVC HOLDFLAG(1),SCRFLGS FOR BETTER PAGING @V2D3913 00144000
  145. NI UTILFLAG,255-TWOLINES RESET UTILFLAG CAREFULLY @V2D3913 00145000
  146. TM HOLDFLAG,WRSTATB CALL TO REWRITE STATUS LINE @V2D3913 00146000
  147. BNO CLRMSG NO, KEEP CHECKING @V2D3913 00147000
  148. EJECT 00148000
  149. FILLHED MVI BUF0,X'40' PREPARE TO CLEAR 00149000
  150. MVC BUF0+1(79),BUF0 BLANK OUT THE STATUS BUFFER @V2D3913 00150000
  151. MVC NAME(8),FNAME PLUG NAME 00151000
  152. MVC TYPE(8),FTYPE PLUG TYPE 00152000
  153. MVC MODE(2),FMODE PLUG MODE 00153000
  154. MVC LVL,EDITLVL 00153010
  155. L R5,ITEM GET RECORD LENGTH 00154000
  156. CVD R5,DECLTH CONVERT TO DECIMAL 00155000
  157. MVC EDMSK,PATRN MASK FOR EDIT OP 00156000
  158. ED EDMSK,DECLTH+6 EDIT LENGTH FIELD 00157000
  159. MVC LTH(3),EDMSK+1 MOVE TO BUFFER 00158000
  160. MVC SFV(1),FV PLUG FORMAT 00159000
  161. MVC ZN,=C'ZONE=' 00159010
  162. MVC VER,=C'VERFY=' 00159020
  163. MVC CSE,=C'CASE=' 00159030
  164. MVC TNCC,=C'TRUNC=' 00159040
  165. MVI ZNH,C'-' 00159050
  166. MVI VERH,C'-' 00159060
  167. MVI CASE,C'U' 00159070
  168. CLI CASESW,C'U' IS IT? 00159080
  169. BE *+8 SKIP IS SO 00159090
  170. MVI CASE,C'M' NOPE MOVE M 00159100
  171. LH R5,ZONE1 GET FIRST ZONE CHAR 00159110
  172. LA R5,1(0,R5) BUMP 00159120
  173. CVD R5,DECLTH CONVERT TO DECIMAL 00159130
  174. MVC EDMSK,PATRN MASK FOR EDIT OP 00159140
  175. ED EDMSK,DECLTH+6 EDIT LENGTH FIELD 00159150
  176. MVC ZNS(3),EDMSK+1 MOVE TO BUFFER 00159160
  177. LH R5,ZONE2 GET END OF ZONE 00159170
  178. CVD R5,DECLTH CONVERT TO DECIMAL 00159180
  179. MVC EDMSK,PATRN MASK FOR EDIT OP 00159190
  180. ED EDMSK,DECLTH+6 EDIT LENGTH FIELD 00159200
  181. MVC ZNE(3),EDMSK+1 AND MOVE TO HEADER LINE 00159210
  182. LH R5,TRUNCOL 00159220
  183. CVD R5,DECLTH CONVERT TO DECIMAL 00159230
  184. MVC EDMSK,PATRN MASK FOR EDIT OP 00159240
  185. ED EDMSK,DECLTH+6 EDIT LENGTH FIELD 00159250
  186. MVC TNC(3),EDMSK+1 AND MOVE TO HEADER LINE 00159260
  187. LH R5,VERCOL1 00159270
  188. CVD R5,DECLTH 00159280
  189. MVC EDMSK,PATRN 00159290
  190. ED EDMSK,DECLTH+6 00159300
  191. MVC VERS(3),EDMSK+1 00159310
  192. LH R5,VERCOL2 00159320
  193. CVD R5,DECLTH 00159330
  194. MVC EDMSK,PATRN 00159340
  195. ED EDMSK,DECLTH+6 00159350
  196. MVC VERE(3),EDMSK+1 00159360
  197. MVC STAT(5),EDMSG ASSUME EDIT MODE 00160010
  198. TM FLAG2,NUFILE BUT, TEST FOR NEW FILE @V2D3913 00161000
  199. BNO NOTNU NO...BR 00162000
  200. MVC STAT(5),NEWFMSG ASSUME EDIT MODE 00163010
  201. NI FLAG2,255-NUFILE RESET NEW FLAG 00164000
  202. B CLRMSG GO CLEAR MSG LINE 00165000
  203. NOTNU TM FLAG2,INMODE INPUT MODE ? 00166000
  204. BNO CLRMSG NO, IT WAS EDIT MODE @V2D3913 00167000
  205. MVC STAT(5),INPMSG ASSUME EDIT MODE 00168010
  206. CLRMSG MVI BUF1,X'40' GET A BLANK @V2D3913 00169000
  207. MVC BUF1+1(79),BUF1 CLEAR THE MESSAGE BUFFER @V2D3913 00170000
  208. TM HOLDFLAG,WRMSGB MESSAGE TO WRITE ? @V2D3913 00171000
  209. BNO NOSPEC NO ... BR @V2D3913 00172000
  210. MVC BUF1(5),RTPTR SET LEFT POINTERS @V2D3913 00173000
  211. LA R4,MSGTXT POINT TO LINE ADDR @V2D3913 00174000
  212. LA R5,74 LENGTH OF REMAINING LINE @V2D3913 00175000
  213. L R7,SAVEAR GET INCOMING R0 (MSG LN) @V2D3913 00176000
  214. L R6,SAVEAR+4 GET INCOMING R1 (MSG ADDR) @V2D3913 00177000
  215. BAL R15,MOVESEG MOVE THE MESSAGE @V2D3913 00178000
  216. OI UTILFLAG,MSG FLAG THAT MESSAGE IS IN BUFFER @V2D3913 00179000
  217. NOSPEC LA R1,80 LINE LENGTH OF 80 00180000
  218. CLI TYPSCR,X'05' 3278 MODEL 5? HRC073DS 00180100
  219. BNE *+8 No HRC073DS 00180200
  220. LA R1,132 Else line length is 132 HRC073DS 00180300
  221. L R2,PTR2 GET CL POINTER @V2D3913 00181000
  222. SLR R10,R10 ZERO ALTERNATE SIZE INDEX REG. @V60A6B6 00182000
  223. SPACE 00183000
  224. *********************************************************************** 00184000
  225. ** THE FOLLOWING CODE CHANGES THE MODEL NUMBER OF 3278 MOD 2A TO 6 73DS 00185000
  226. ** IN TYPSCR SO THAT THE DISPLACMENT OF 16 (6-2*4=16) INTO SCRPRMSZ73DS 00186000
  227. ** CAN BE ESTABLISHED. IF THE ACTUAL MODEL NUMBER OF 6 IS EVER USED73DS 00187000
  228. ** THIS CODE MUST BE CHANGED HERE. ** 00188000
  229. *********************************************************************** 00189000
  230. SPACE 00190000
  231. CLI TYPSCR,MODEL2A IS THIS A 3278 MODEL 2A? @V60A6B6 00191000
  232. BNE NOT2A NO NOT TODAY @V60A6B6 00192000
  233. MVI TYPSCR,6 MOVE 6 FOR INDEX TO MODEL 2A HRC073DS 00193000
  234. IC R10,TYPSCR LOAD UP THE MODEL NUMBER @V60A6B6 00194000
  235. SH R10,TWO COMPUTE SCREEN SIZE INDEX @V60A6B6 00195000
  236. MH R10,FOUR . . . @V60A6B6 00196000
  237. B INDEXSET @V60A6B6 00197000
  238. NOT2A EQU * 00198000
  239. IC R10,TYPSCR LOAD THE MODEL NUMBER @V60A6B6 00199000
  240. SH R10,TWO COMPUTE SCREEN SIZE INDEX @V60A6B6 00200000
  241. MH R10,FOUR . . . @V60A6B6 00201000
  242. INDEXSET EQU * 00202000
  243. L R10,SCRPRMSZ(R10) AND CALCULATE FIELD OFFSET @V60A6B6 00203000
  244. LA R10,SCRPARMS(R10) GET CORRECT TABLE OF SIZES @V60A6B6 00204000
  245. USING SCRSIZES,R10 ADDRESSABILITY TO THIS TABLE @V60A6B6 00205000
  246. TM SCRFLG2,CANCB CANCEL REQUEST ? @V2D3913 00206000
  247. BO CANCOP YES ... BR @V2D3913 00207000
  248. TM SCRFLG2,WRCLINB WRITE CL TO INPUT AREA ? @V2D3913 00208000
  249. BO WRCLIN YES 00209000
  250. TM SCRFLG2,CMDINB WRITE LAST CMND TO INPUT AREA ? @V2D3913 00210000
  251. BO WRLAST YES 00211000
  252. TM HOLDFLAG,WRCLB+WRCLDNB+WRCLUPB AREA SPECIFIED ?@V2D3913 00212000
  253. BNZ FILLBUFF YES, THEN DO IT @V2D3913 00213000
  254. B FINDHIGH ELSE BUFFER IS SET @V2D3913 00214000
  255. EJECT 00215000
  256. WRCLIN EQU * WRITE CL INTO INPUT AREA 00216000
  257. BAL R15,CMPRESS COMPRESS INPUT LINE TO ALLOW @V2D3914 00217000
  258. LR R3,R7 KEYBOARD INSERTIONS @V2D3914 00218000
  259. LH R7,TRUNCOL GET TRUNCATION COLUMN 00219000
  260. LA R6,8(,R2) GET LINE ADDR 00220000
  261. TM FLAG,LEFT+RIGHT LINEMODE ON ? 00221000
  262. BZ INPUTLD NO...BR 00222000
  263. TM FLAG,RIGHT LINEMODE RIGHT ? 00223000
  264. BO RTLINE YES...BR 00224000
  265. MVC SCLNO(8),8(R2) SAVE SEQ NUMBER 00225000
  266. LA R6,14(,R2) SKIP SEQ NUMBER 00226000
  267. TM FLAG,LINE8 LONG SEQ NUMBER ? 00227000
  268. BNO LENCALC NO...BR 00228000
  269. LA R6,16(,R2) SKIP LONG SEQ NUMB 00229000
  270. LENCALC LA R7,8(R7,R2) TRUNC END ADDRESS 00230000
  271. SR R7,R6 CAL INPUT TEXT LGTH 00231000
  272. BNM INPUTLD COULD END UP MINUS @V305614 00232000
  273. SR R7,R7 IF SO, CALL IT ZERO LENGTH @V305614 00233000
  274. B INPUTLD LOAD BUFFER 00234000
  275. RTLINE EQU * 00235000
  276. MVC SCLNO(5),83(R2) SAVE RIGHT SEQ NUMB 00236000
  277. B INPUTLD LOAD INPUT BUFFER 00237000
  278. SPACE 1 00238000
  279. WRLAST EQU * WRITE LAST COMMAND TO INPUT 00239000
  280. LA R6,TABLIN ADR OF SAVED COMMAND @V305614 00240000
  281. LA R3,161 FORCE LENGTH REGISTER USAGE @V305614 00241000
  282. LH R7,SAVCNT LENGTH OF SAVED COMMAND 00242000
  283. INPUTLD LH R4,INOFFSET GET INPUT BUFFER OFFSET @V60A6B6 00243000
  284. LA R4,BUF0(R4) GET INPUT BUFFER ADDR @V60A6B6 00244000
  285. LA R5,136 INPUT AREA LENGTH 00245000
  286. CR R3,R7 DO THIS FOR 3270 CHARACTER @V305614 00246000
  287. BNL INLD1 INSERTION @V305614 00247000
  288. LR R7,R3 TRANSFER LOWER NUMBER @V305614 00248000
  289. INLD1 LR R3,R5 KEEP INPUT LENGTH HERE ALSO @V305614 00249000
  290. ICM R7,B'1000',PAD0 FOR PAD CHARACTER 00250000
  291. MVCL R4,R6 PADDED COMMAND IN INPUT BUFFER 00251000
  292. LH R4,INPUTNUM POINT TO LINE NUMBER @V60A6B6 00252000
  293. B SETRANGE BUILD GIO PLIST @V2D3913 00253000
  294. SPACE 1 00254000
  295. CANCOP EQU * @V2D3913 00255000
  296. MVI FLAGLOC,X'02' SET FLAG FOR GIO PLIST @V2D3913 00256000
  297. LR R3,R1 LENGTH INTO R3 @V2D3913 00257000
  298. LH R4,CLNUMBER LINE PTR FOR FORM'S SAKE @V60A6B6 00258000
  299. B SETRANGE FINISH BUILDING PLIST @V2D3913 00259000
  300. EJECT 00260000
  301. *************************************************************** 00261000
  302. * 00262000
  303. * COMMON ENTRY TO FILL BUFFERS 00263000
  304. * 00264000
  305. *************************************************************** 00265000
  306. SPACE 1 00266000
  307. FILLBUFF EQU * @V2D3913 00267000
  308. LH R4,CLOFFSET GET CL BUFFER OFFSET @V60A6B6 00268000
  309. LA R4,BUF0(R4) GET CL BUFFER ADDR @V60A6B6 00269000
  310. TM TWITCH,TOPSW+EOF ENDRANGE ? @V2D3913 00270000
  311. BNZ CLONE YES ... BR @V2D3913 00271000
  312. BAL R15,CMPRESS ELSE TRUNC TRAILING BLANKS @V2D3913 00272000
  313. BAL R15,MOVELINE AND MOVE DATA TO BUFFER @V2D3913 00273000
  314. L R2,0(,R2) PICK UP NEXT LINE POINTER @V2D3913 00274000
  315. TM UTILFLAG,TWOLINES CL LENGTH > 80 ? @V2D3913 00275000
  316. BO CLTWO YES ... BR @V2D3913 00276000
  317. SPACE 1 00277000
  318. CLONE TM TWITCH,TOPSW AT TOP OF FILE ? @V2D3914 00278000
  319. BNO CLONE1 NO ... BR @V2D3914 00279000
  320. L R2,0(,R2) POINT TO LINE 1 @V2D3914 00280000
  321. LA R4,80(,R4) SET BUFFER POINTER @V60A6B6 00281000
  322. CLI TYPSCR,X'05' 3278 MODEL 5? HRC073DS 00281300
  323. BNE CLONE1 No HRC073DS 00281400
  324. LA R4,52(,R4) Else incr length total by 132 HRC073DS 00281500
  325. CLONE1 TM UTILFLAG,CLGT80B PREVIOUS CL > 80 ? @V2D3913 00282000
  326. BNO CLSET NO ... BR @V2D3913 00283000
  327. NI UTILFLAG,255-CLGT80B RESET FLAG FOR NEXT CALL @V2D3913 00284000
  328. B SETDOWN AND CONTINUE @V2D3913 00285000
  329. SPACE 1 00286000
  330. CLTWO TM UTILFLAG,CLGT80B PREVIOUS CL > 80 ? @V2D3913 00287000
  331. BO CLSET YES, ALL DONE FOR NOW @V2D3913 00288000
  332. OI UTILFLAG,CLGT80B FLAG FOR NEXT CALL THEN @V2D3913 00289000
  333. SETDOWN OI HOLDFLAG,WRCLDNB JUST CHANGE LOWER HALF @V2D3913 00290000
  334. SPACE 1 00291000
  335. CLSET LH R3,INOFFSET GET END OF BUFFER OFFSET @V60A6B6 00292000
  336. LA R3,BUF0(R3) POINT TO END OF BUFFER @V60A6B6 00293000
  337. TM TWITCH,EOF EOF ? @V2D3913 00294000
  338. BO DISPEOF HANDLE SEPARATELY @V2D3913 00295000
  339. TM HOLDFLAG,WRCLDNB WRITE CL DOWN ? @V2D3913 00296000
  340. BO FILLDOWN YES ... BR @V2D3913 00297000
  341. CHECKUP LA R3,BUF2 POINT TO START OF BUFFER @V2D3913 00298000
  342. LH R4,CLOFFSET GET CL OFFSET VALUE @V60A6B6 00299000
  343. LA R4,BUF0(R4) AND POINT TO CL BUFFER @V60A6B6 00300000
  344. TM TWITCH,TOPSW TOF ? @V2D3913 00301000
  345. BO DISPTOF YES, HANDLE SEPARATELY @V2D3913 00302000
  346. TM HOLDFLAG,WRCLUPB WRITE CL UP ? @V2D3913 00303000
  347. BO FILLUP YES ... BR @V2D3913 00304000
  348. B FINDHIGH NOW SET UP GIO PLIST @V2D3913 00305000
  349. EJECT 00306000
  350. *************************************************************** 00307000
  351. * 00308000
  352. * ROUTINE TO FILL BUFFERS DOWN FROM SOME STARTING POINT 00309000
  353. * 00310000
  354. *************************************************************** 00311000
  355. SPACE 1 00312000
  356. FILLDOWN EQU * @V2D3913 00313000
  357. LTR R2,R2 NOW POINTING TO END OF FILE ? @V2D3913 00314000
  358. BZ DISPEOF YES, HANDLE SEPARATELY @V2D3913 00315000
  359. BAL R15,CMPRESS COMPRESS TRAILING BLANKS @V2D3913 00316000
  360. BAL R15,MOVELINE NOW MOVE LINE TO BUFFER @V2D3913 00317000
  361. L R2,0(,R2) ADVANCE TO NEXT INPUT LINE @V2D3913 00318000
  362. CR R3,R4 END OF DISPLAY BUFFER ? @V2D3913 00319000
  363. BH FILLDOWN NO, BR @V2D3913 00320000
  364. B CHECKUP LOWER DISPLAY FINISHED @V2D3913 00321000
  365. SPACE 1 00322000
  366. DISPEOF EQU * @V2D3913 00323000
  367. SR R3,R4 CALC DISTANCE TO END OF BUFFER @V2D3913 00324000
  368. LR R5,R3 LENGTH INTO PROPER REG @V2D3913 00325000
  369. LA R6,EOFREC POINT TO SUBSTITUTE DATA @V2D3913 00326000
  370. LA R7,4 INDICATE ITS TRUE LENGTH @V2D3913 00327000
  371. BAL R15,MOVESEG FILL LOWER BUFFER AS REQUIRED @V2D3913 00328000
  372. B CHECKUP NOW CHECK UPPER BUFFER @V2D3913 00329000
  373. EJECT 00330000
  374. *************************************************************** 00331000
  375. * 00332000
  376. * ROUTINE TO FILL BUFFERS UP FROM SOME STARTING POINT 00333000
  377. * 00334000
  378. *************************************************************** 00335000
  379. SPACE 1 00336000
  380. FILLUP EQU * @V2D3913 00337000
  381. L R2,PTR2 REFRESH CL POINTER @V2D3913 00338000
  382. LA R14,PTR1 DETERMINE ITS UPPER BOUND @V2D3913 00339000
  383. TM TWITCH,EOF AT END OF FILE ? @V2D3913 00340000
  384. BO UPL1 YES ... BR @V2D3913 00341000
  385. SPACE 1 00342000
  386. UPLOOP EQU * @V2D3913 00343000
  387. L R2,4(,R2) BACK UP ONE DATA LINE @V2D3913 00344000
  388. UPL1 SR R4,R1 BACK UP ONE DISPLAY BUFFER @V2D3913 00345000
  389. CR R4,R3 END OF BUFFER (UPWARD) ? @V2D3913 00346000
  390. BL FINDHIGH YES, FILL OUT GIO PLIST @V2D3913 00347000
  391. CR R14,R2 TOP OF FILE ? @V2D3913 00348000
  392. BE DISPTOF YES, HANDLE SEPARATELY @V2D3913 00349000
  393. BAL R15,CMPRESS COMPRESS TRAILING BLANKS @V2D3913 00350000
  394. BNL UPONE BR IF DATA = OR < 80 @V2D3913 00351000
  395. SR R4,R1 BACK UP ONE MORE BUFFER @V2D3913 00352000
  396. UPONE CR R4,R3 BUFFER POOL EXHAUSTED ? @V2D3913 00353000
  397. BNL UPMOVE NO ... BR @V2D3913 00354000
  398. SR R7,R1 DERIVE TRAILING DATA LENGTH @V2D3913 00355000
  399. AR R6,R1 AND ITS STARTING POINT @V2D3913 00356000
  400. AR R4,R1 READJUST BUFFER POINTER @V2D3913 00357000
  401. NI UTILFLAG,255-TWOLINES RESET SIGNAL @V2D3913 00358000
  402. UPMOVE BAL R15,MOVELINE MOVE DATA TO THE BUFFER @V2D3913 00359000
  403. SR R4,R1 BACK UP ANOTHER BUFFER @V2D3913 00360000
  404. TM UTILFLAG,TWOLINES BOUBLE BUFFER REQUIRED ? @V2D3913 00361000
  405. BNO UPLOOP NO ... BR @V2D3913 00362000
  406. NI UTILFLAG,255-TWOLINES RESET SIGNAL @V2D3913 00363000
  407. SR R4,R1 BUT READJUST BUFFER PTR DOWNWARD @V2D3913 00364000
  408. B UPLOOP KEEP ON MOVING @V2D3913 00365000
  409. SPACE 1 00366000
  410. DISPTOF EQU * @V2D3913 00367000
  411. LA R6,TOPMSG POINT TO SUBSTITUTE DATA @V2D3913 00368000
  412. LA R7,4 AND INDICATE ITS LENGTH @V2D3913 00369000
  413. NI UTILFLAG,255-TWOLINES TURN THIS OFF @V2D3914 00370000
  414. BAL R15,MOVELINE FILL BUFFER @V2D3913 00371000
  415. LR R5,R4 MOVE POINTER TO PROPER REG @V2D3913 00372000
  416. LR R4,R3 POINT TO TOP OF SCREEN @V2D3913 00373000
  417. SR R5,R1 BACK UP ONE BUFFER @V2D3913 00374000
  418. SR R5,R3 CALC LENGTH TO BE BLANKED @V2D3913 00375000
  419. LA R7,1 GET LENGTH INDICATOR @V2D3913 00376000
  420. LA R6,PAD ... FOR A BLANK @V2D3913 00377000
  421. BAL R15,MOVESEG BLANK UPPER SCREEN AS REQUIRED @V2D3913 00378000
  422. B FINDHIGH FILL OUT GIO PLIST @V2D3913 00379000
  423. EJECT 00380000
  424. ************************************************************** 00381000
  425. * THE CMPRESS ROUTINE COMPRESSES TRAILING BLANKS OF A 00382000
  426. * RECORD AND PASSES BACK THE LENGTH OF ACTUAL DATA IN 00383000
  427. * REGISTER 7. IT ALSO SETS THE CONDITION CODE AS FOLLOWS: 00384000
  428. * CC0 = COMPRESSED RECORD LENGTH IS EQUAL TO 80. 00385000
  429. * CC1 = COMPRESSED RECORD LENGTH IS GREATER THAN 80. 00386000
  430. * CC2 = COMPRESSED RECORD LENGTH IS LESS THAN 80. 00387000
  431. ************************************************************** 00388000
  432. CMPRESS EQU * @V2D3914 00389000
  433. NI UTILFLAG,255-TWOLINES RESET SIGNAL @V2D3913 00390000
  434. TM SCRFLGS,WRMSGB IS THIS WRITE MESSAGE? @VA04851 00391000
  435. BO GETVER BRANCH IF YES, USE VERIF. @VA04851 00392000
  436. TM CHNGFLAG,DTYPE IS THIS DISPLAY CHANGE? @VA04851 00393000
  437. BNO GETVER BRANCH IF NOT @VA04851 00394000
  438. SR R5,R5 INDICATE BEGINNING OF LINE @VA04851 00395000
  439. LH R7,TRUNCOL GET END OF CHANGEABLE LINE @VA04851 00396000
  440. B SETUP @VA04851 00397000
  441. GETVER EQU * @VA04851 00398000
  442. LH R7,VERLEN GET VERIFY LENGTH @V2D3914 00399000
  443. LH R5,VERCOL1 INDEX TO VERIFY FRONT @V2D3914 00400000
  444. BCTR R5,R0 DECREMENT FOR INDEX @V2D3914 00401000
  445. SETUP EQU * @VA04851 00402000
  446. LA R6,8(R5,R2) POINT TO FRONT OF VERIFY @V2D3914 00403000
  447. LR R0,R1 GET LINE LENGTH @V2D3914 00404000
  448. LA R9,0(R7,R6) SET BACK POINTER @V305614 00405000
  449. SHIFT BCTR R9,R0 SHIFT CHARACTER POINTER @V305614 00406000
  450. CLI 0(R9),BLANK BLANK CHARACTER ? @V305066 00407000
  451. BNE SIGNIFX GET OUT IF SIGNIFICANT CHAR. @V2D3914 00408000
  452. BCT R7,SHIFT DECREMENT LENGTH AND LOOP @V2D3914 00409000
  453. LA R7,1 MAKE NULL LINE LENGTH = 1 @V2D3914 00410000
  454. SIGNIFX CR R0,R7 SET CONDITION CODE @V2D3914 00411000
  455. BNLR R15 BR, IF < 81 @V2D3913 00412000
  456. OI UTILFLAG,TWOLINES ELSE SET SIGNAL @V2D3913 00413000
  457. BR R15 RETURN @V2D3913 00414000
  458. SPACE 3 00415000
  459. *************************************************************** 00416000
  460. * 00417000
  461. * MOVELINE & MOVESEG ACTUALLY MOVE DATA INTO BUFFERS 00418000
  462. * 00419000
  463. *************************************************************** 00420000
  464. MOVELINE LR R5,R1 ASSUME MOVING 80 BYTES @V2D3913 00421000
  465. TM UTILFLAG,TWOLINES TWO LINES PERCHANCE ? @V2D3913 00422000
  466. BNO MOVESEG NO, ALL SET @V2D3913 00423000
  467. AR R5,R1 BETTER DOUBLE THE COUNT @V2D3913 00424000
  468. MOVESEG ICM R7,B'1000',PAD GET BLANK FOR PADDING @V2D3913 00425000
  469. MVCL R4,R6 MOVE THE DATA (PAD AS REQUIRED) @V2D3913 00426000
  470. BR R15 RETURN @V2D3913 00427000
  471. EJECT 00428000
  472. *************************************************************** 00429000
  473. * 00430000
  474. * ROUTINE TO DETERMINE EXTENT OF DISPLAY REQUESTED 00431000
  475. * 00432000
  476. *************************************************************** 00433000
  477. SPACE 1 00434000
  478. FINDHIGH EQU * @V2D3913 00435000
  479. LA R15,FINDLOW SET THE EXIT VECTOR @V2D3913 00436000
  480. LH R4,CLNUMBER AND SET UPPER LIMIT TO CL BUFFER @V60A6B6 00437000
  481. LR R3,R4 SET LOWER LIMIT TO CURRENT BUFFER@V2D3913 00438000
  482. TM HOLDFLAG,WRSTATB DID WE WRITE STATUS ? @V2D3913 00439000
  483. BNO X1 NO ... BR @V2D3913 00440000
  484. SR R4,R4 SET BUF0 AS UPPER LIMIT @V2D3913 00441000
  485. BR R15 GO CHECK LOWER LIMIT @V2D3913 00442000
  486. X1 TM HOLDFLAG,WRMSGB DID WE WRITE A MESSAGE ? @V2D3913 00443000
  487. BNO X2 NO ... BR @V2D3913 00444000
  488. LA R4,1 SET BUF1 AS UPPER LIMIT @V2D3913 00445000
  489. BR R15 GO CHECK LOWER LIMIT @V2D3913 00446000
  490. X2 TM HOLDFLAG,WRCLUPB WRITE CURRENT LINE UP ? @V2D3913 00447000
  491. BNO X3 NO ... BR @V2D3913 00448000
  492. LA R4,2 SET BUF2 AS UPPER LIMIT @V2D3913 00449000
  493. BR R15 GO CHECK LOWER LIMIT @V2D3913 00450000
  494. X3 TM HOLDFLAG,WRCLB+WRCLDNB WRITE CL OR CL DOWN ? @V2D3913 00451000
  495. BNZR R15 YES, THEN LIMIT IS CORRECT @V2D3913 00452000
  496. SR R15,R15 JUST A LONG FORM NOP, THEN @V2D3913 00453000
  497. B SCROUT GET OUT @V2D3913 00454000
  498. SPACE 1 00455000
  499. FINDLOW LA R15,VERHIGH RESET THE EXIT VECTOR @V2D3913 00456000
  500. TM HOLDFLAG,WRCLDNB WAS IT CL DOWN ? @V2D3913 00457000
  501. BNO Y1 NO ... BR @V2D3913 00458000
  502. LH R3,LLNUMBER SET LAST LINE AS LOWER LIMIT @V60A6B6 00459000
  503. BR R15 GO VERIFY DERIVED LIMITS @V2D3913 00460000
  504. Y1 TM HOLDFLAG,WRCLB+WRCLUPB WRITE CL OR CL UP ? @V2D3913 00461000
  505. BZ Y2 NO ... BR @V2D3913 00462000
  506. TM UTILFLAG,CLGT80B CL LONGER THAN 80 ? @V2D3913 00463000
  507. BZR R15 NO ... BR @V2D3913 00464000
  508. LH R3,CLNXTNUM SET LINE AFTER CL AS LOWER LIMIT @V60A6B6 00465000
  509. BR R15 GO VERIFY DERIVED LIMITS @V2D3913 00466000
  510. Y2 LA R3,1 LOW LIMIT MUST BE BUF1 @V2D3913 00467000
  511. TM HOLDFLAG,WRMSGB DID WE WRITE A MESSAGE ? @V2D3913 00468000
  512. BOR R15 YES, THEN BUF1 IS CORRECT @V2D3913 00469000
  513. SR R3,R3 APPARENTLY ONLY WROTE STATUS @V2D3913 00470000
  514. EJECT 00471000
  515. VERHIGH LA R15,GETRANGE RESET EXIT VECTOR @V2D3913 00472000
  516. TM HOLDFLAG,WRMSGB DID WE WRITE A MESSAGE ? @V2D3913 00473000
  517. BOR R15 YES, NO ADJUSTMENT NEEDED @V2D3913 00474000
  518. TM UTILFLAG,MSG MSG WRITTEN LAST TIME THRU ? @V2D3913 00475000
  519. BZR R15 NO, THINGS ARE STILL GREAT @V2D3913 00476000
  520. NI UTILFLAG,255-MSG RESET MESSAGE FLAG @V2D3913 00477000
  521. LA R5,1 PICK POINTER INDICATOR FOR BUF1 @V2D3913 00478000
  522. LTR R4,R4 UPPER LIMIT INCLUDE BUF1 ? @V2D3913 00479000
  523. BZ VERLOW YES ... BR @V2D3913 00480000
  524. LR R4,R5 RESET UPPER LIMIT TO BUF1 @V2D3913 00481000
  525. VERLOW LTR R3,R3 LOWER LIMIT INCLUDE BUF1 ? @V2D3913 00482000
  526. BNZR R15 YES ... BR @V2D3913 00483000
  527. LR R3,R5 RESET LOWER LIMIT TO BUF1 @V2D3913 00484000
  528. EJECT 00485000
  529. GETRANGE EQU * @V2D3913 00486000
  530. LA R3,1(,R3) EXTEND LOWER LIMIT FOR COMPUTE @V2D3913 00487000
  531. SR R3,R4 DERIVE RANGE (NUMBER OF LINES) @V2D3913 00488000
  532. MR R2,R1 DERIVE LENGTH (NUMBER OF BYTES) @V2D3913 00489000
  533. SPACE 1 00490000
  534. SETRANGE EQU * @V2D3913 00491000
  535. CH R4,CLNUMBER ARE WE ON LINE 9 00491100
  536. BNE NOTCUR 00491200
  537. S R3,=F'1' 00491300
  538. MVI FLAGLOC,X'04' YES SET HILIGHT 00491400
  539. NOTCUR EQU * 00491500
  540. STH R3,NUMLOC PUT LENGTH INTO GIO-PLIST @V2D3913 00492000
  541. STH R4,LINELOC PUT START LINE INTO GIO-PLIST @V2D3913 00493000
  542. MR R0,R4 DERIVE INDEX INTO SCREEN BUFFER @V2D3913 00494000
  543. LA R4,BUF0(R1) RESOLVE INTO BUFFER STARTING ADDR@V2D3913 00495000
  544. ST R4,BUFFLOC PUT BUFFER ADDR INTO GIO-PLIST @V2D3913 00496000
  545. TM SCRFLG2,MOREB SHOULD WE CAUSE 'MORE' STATUS ? @V2D3913 00497000
  546. BNO WRITEM NO ... BR @V2D3913 00498000
  547. MVI FLAGLOC,X'01' SET FLAG IN GIO-PLIST @V2D3913 00499000
  548. SPACE 1 00500000
  549. WRITEM EQU * @V2D3913 00501000
  550. LA R1,GIOPLIST POINT TO THE GIO-PLIST @V2D3913 00502000
  551. L R15,=V(DMSGIO) GET ADDR OF I/O ROUTINE @V2D3913 00503000
  552. BALR R14,R15 WRITE THE SCREEN @V2D3913 00504000
  553. LTR R15,R15 HOW DID WE DO ? @V2D3913 00505000
  554. BZ SCROUT JUST FINE @V2D3913 00506000
  555. EJECT 00507000
  556. DMSERR NUM=117,LET=S,TEXT='ERROR WRITING TO DISPLAY TERMINAL',X00508000
  557. CSECT=EDI @VA01693 00509000
  558. LA R15,4 SET RETURN AND @VA01693 00510000
  559. SCROUT LTR R15,R15 SET CONDITION CODE @VA01693 00511000
  560. LM R0,R14,SAVEAR RESTORE REGS 00512000
  561. BR R14 RETURN 00513000
  562. EJECT 00514000
  563. * CONSTANTS USED IN DMSSCR 00515000
  564. SPACE 1 00516000
  565. TWO DC H'2' CONSTANT TO COMPUTE SCREEN INDEX @V60A6B6 00517000
  566. FOUR DC H'4' CONSTANT TO COMPUTE SCREEN INDEX @V60A6B6 00518000
  567. FIVE EQU X'05' CONSTANT TO COMPURE SCREEN INDEX @V60A6B6 00519000
  568. MODEL2A EQU X'2A' @V60A6B6 00520000
  569. PATRN DC X'40202020' @V2D3913 00521000
  570. NEWFMSG DC CL5'NEW ' 00524010
  571. INPMSG DC CL5'INPUT' 00524020
  572. EDMSG DC CL5'EDIT ' 00524030
  573. EOFREC DC C'EOF:' 00525000
  574. TOPMSG DC C'TOF:' 00526000
  575. RTPTR DC CL5'>>>>>' 00527000
  576. SPACE 1 00528000
  577. PAD DC C' ' @V2D3913 00529000
  578. PAD0 DC X'00' @V2D3913 00530000
  579. LTORG @VA04193 00531000
  580. SPACE 00532000
  581. ************************************************************ 00533000
  582. * THE FOLLOWING DCS ESTABLISH A TABLE TO FIND THE CORRECT * 00534000
  583. * SCREEN SIZE FOR THE TERMINALS/CONSOLES THAT MAY BE USED. * 00535000
  584. ************************************************************ 00536000
  585. SCRPARMS DC H'09,10,21,22,0720,1760' - 3277 @V60A6B6 00537000
  586. SCRPRMLG EQU *-SCRPARMS @V60A6B6 00538000
  587. DC H'12,13,29,30,0960,2400' - 3278 MODEL 3 HRC104DS 00539690
  588. DC H'18,19,40,41,1440,3280' - 3278 MODEL 4 HRC104DS 00540380
  589. DC H'11,12,24,25,1452,3300' - 3278 MODEL 5 HRC073DS 00541000
  590. DC H'07,08,17,18,0560,1440' - 3278 MODEL 2A HRC104DS 00541070
  591. SCRPRMSZ DC A(0,SCRPRMLG,SCRPRMLG*2,SCRPRMLG*3) @V60A6B6 00542000
  592. SPACE 2 00543000
  593. SPACE 2 00544000
  594. SCRBUF DSECT 00545000
  595. BUF0 EQU * 00546000
  596. STAT DS CL5 00547010
  597. DS CL1 00547020
  598. LVL DS CL1 00547030
  599. DS CL1 00547040
  600. NAME DS CL8 00549000
  601. DS C 00550000
  602. TYPE DS CL8 00551000
  603. DS C 00552000
  604. MODE DS CL2 00553000
  605. DS CL2 00554000
  606. SFV DS C 00555000
  607. DS C 00556000
  608. LTH DS CL3 00557000
  609. DS C 00558010
  610. ZN DS CL5 00558020
  611. ZNS DS CL3 00558030
  612. ZNH DS C 00558040
  613. ZNE DS CL3 00558050
  614. DS C 00558060
  615. VER DS CL6 00558070
  616. VERS DS CL3 00558080
  617. VERH DS C 00558090
  618. VERE DS CL3 00558100
  619. DS C 00558110
  620. CSE DS CL5 00558120
  621. CASE DS C 00558130
  622. DS C 00558140
  623. TNCC DS CL6 00558150
  624. TNC DS CL3 00558160
  625. BUF1 EQU * 00559000
  626. PTLFT DS CL6 00560000
  627. MSGTXT DS CL74 00561000
  628. BUF2 DS CL80 @V60A6B6 00562000
  629. SPACE 2 00563000
  630. SCRSIZES DSECT @V60A6B6 00564000
  631. CLNUMBER DS H @V60A6B6 00565000
  632. CLNXTNUM DS H @V60A6B6 00566000
  633. LLNUMBER DS H @V60A6B6 00567000
  634. INPUTNUM DS H @V60A6B6 00568000
  635. CLOFFSET DS H @V60A6B6 00569000
  636. INOFFSET DS H @V60A6B6 00570000
  637. EJECT 00571000
  638. ********************************************************** 00572000
  639. * 00573000
  640. * EQUATES FOR SCRFLGS & HOLDFLAG 00574000
  641. * 00575000
  642. *********************************************************** 00576000
  643. WRCLUPB EQU X'02' WRITE CL UP @V2D3914 00577000
  644. WRMSGB EQU X'10' @V2D3913 00578000
  645. WRCLDNB EQU X'20' WRITE CL DOWN 00579000
  646. WRCLB EQU X'40' WRITE CL ONLY 00580000
  647. WRSTATB EQU X'80' @V2D3913 00581000
  648. WRFULLB EQU WRCLDNB+WRCLUPB @V2D3913 00582000
  649. WRTOPB EQU WRSTATB+WRFULLB @V2D3913 00583000
  650. ********************************************************** 00584000
  651. * 00585000
  652. * EQUATES FOR SCRFLG2 00586000
  653. * 00587000
  654. ********************************************************** 00588000
  655. MOREB EQU X'80' CAUSE MORE STATUS 00589000
  656. CANCB EQU X'40' CAUSE CANCEL OP 00590000
  657. WRCLINB EQU X'08' @V2D3913 00591000
  658. CMDINB EQU X'04' @V2D3913 00592000
  659. ***************************************************************@VA04851 00593000
  660. * @VA04851 00594000
  661. * EQUATES FOR CHNGFLAG @VA04851 00595000
  662. * @VA04851 00596000
  663. ***************************************************************@VA04851 00597000
  664. DTYPE EQU X'04' @VA04851 00598000
  665. ********************************************************* 00599000
  666. * 00600000
  667. * EQUATES FOR FLAG 00601000
  668. * 00602000
  669. ********************************************************** 00603000
  670. LINE8 EQU X'10' 8 CHARACTER LINE NUMBER 00604000
  671. LEFT EQU X'40' LINEMODE LEFT 00605000
  672. RIGHT EQU X'80' LINEMODE RIGHT 00606000
  673. ************************************************************* 00607000
  674. * 00608000
  675. * EQUATES FOR FLAG2 00609000
  676. * 00610000
  677. ************************************************************** 00611000
  678. LONGSW EQU X'02' LONG IS SET 00612000
  679. TUBE EQU X'04' CONSOLE IS DISPLAY TYPE 00613000
  680. NUFILE EQU X'08' NEW FILE 00614000
  681. INMODE EQU X'10' INPUT MODE IN EFFECT 00615000
  682. ************************************************** 00616000
  683. * 00617000
  684. * MISCELANEOUS EQUATES 00618000
  685. * 00619000
  686. ************************************************** 00620000
  687. BLANK EQU X'40' ... @V305614 00621000
  688. EDCB @V305614 00622000
  689. ************************************************************ 00623000
  690. * 00624000
  691. * EQUATES FOR TWITCH 00625000
  692. * 00626000
  693. *********************************************************** 00627000
  694. TOPSW EQU X'01' TOP OF FILE 00628000
  695. EOF EQU X'02' END OF FILE 00629000
  696. *************************************************************** 00630000
  697. * 00631000
  698. * EQUATES FOR UTILFLAG 00632000
  699. * 00633000
  700. *************************************************************** 00634000
  701. CLGT80B EQU X'01' LENGTH > 80 BYTES @VA08152 00635000
  702. MSG EQU X'02' MESSAGE IN BUFFER @VA08152 00636000
  703. TWOLINES EQU X'04' LENGTH > 80 BYTES @VA08152 00637000
  704. LINSEQ EQU X'08' NO SPACE FOR LINEMODE INPUT @VA08152 00638000
  705. EJECT 00639000
  706. NUCON 00640000
  707. REGEQU 00641000
  708. END 00642000