Table of Contents

DMKSSP Source

References

Source Listing

DMKSSP.ASSEMBLE.txt
  1. SSP TITLE 'DMKSSP (CP) VM/370 - RELEASE 6' 00001000
  2. *. 00002000
  3. * MODULE NAME - 00003000
  4. * DMKSSP 00004000
  5. * 00005000
  6. * FUNCTION - 00006000
  7. * STARTER SYSTEM MODULE. THIS MODULE WILL BUILD RCHBOLKS,RCUBLOK 00007000
  8. * AND RDEVBLOKS NECESSARY TO CONFIGURATE A MIMNIMUM CP SYSTEM. 00008000
  9. * FROM THE STARTER SYSTEM A REAL CP SYSTEM WILL BE CONFIGURATED 00009000
  10. * BASED ON THE INSTALLATION'S REALIO DECK. 00010000
  11. * 00011000
  12. * ATTRIBUTES - 00012000
  13. * 00013000
  14. * NON-REENTRANT,NON-RESIDENT 00014000
  15. * DMKSSP01 ENTERED AS A RESULT OF AN IPL OPERATION. 00015000
  16. * 00016000
  17. * ENTRY POINTS - 00017000
  18. * DMKSSP01 - TO CONSTRUCT THE I/O BLOCKS FOR DMKIOS AND OTHER 00018000
  19. * SYSTEM MODULES FOR A MINIMUM SYSTEM'S CONFIGURATION 00019000
  20. * 00020000
  21. * ENTRY CONDITIONS - 00021000
  22. * 00022000
  23. * DMKSAV - GIVES CONTROL TO DMKSSP01 00023000
  24. * IPL DEVICE ADDRESS MUST BE STORED AT LOC X'002' 00024000
  25. * 00025000
  26. * 00026000
  27. * EXIT CONDITIONS - 00027000
  28. * 00028000
  29. * DMKCPINT - TO INITALIZE THE REMAINDER OF THE SYSTEM. 00029000
  30. * REGISTER 10 - MUST HAVE THE IPL DEVICE ADDRESS 00030000
  31. * 00031000
  32. * 00032000
  33. * CALLS TO OTHER ROUTINES - 00033000
  34. * 00034000
  35. * DMKCVTHB - TO CONVERT THE DEVICE ADDRESS TO BINARY. 00035000
  36. * DMKCVTBH - TO CONVERT THE DEVICE ADDRESS TO PRINTABLE HEX 00036000
  37. * CHARACTERS. 00037000
  38. * DMKCPINT - TO CONTINUE SYSTEMS INITALIZATION. 00038000
  39. * 00039000
  40. * 00040000
  41. * ENTERNAL REFERENCES - 00041000
  42. * 00042000
  43. * DMKRIODV - ANCHOR TO THE FIRST REAL DEVICE BLOCK. 00043000
  44. * DMKRIOCU - ANCHOR TO THE FIRST REAL CONTROL UNIT BLOCK. 00044000
  45. * DMKRIOCH - ANCHOR TO THE FIRST REAL CHANNEL BLOCK. 00045000
  46. * DMKRIOCN - ADDRESS OF THE SYSTEMS CONSOLE DEVICE. 00046000
  47. * DMKRIOPR - ADDRESS OF THE SYSTEMS PRINTER DEVICE. 00047000
  48. * DMKRIOPU - ADDRESS OF THE SYSTEMS PUNCH DEVICE. 00048000
  49. * DMKRIORD - ADDRESS OF SYSTEMS READER DEVICE. 00049000
  50. * DMKSYSNU - DISK ADDRESS ON NUCELUS. 00050000
  51. * DMKRIO - ADDRESS OF REAL I/O CONTROL BLOCKS. 00051000
  52. * 00052000
  53. * 00053000
  54. * TABLES / WORK AREAS - 00054000
  55. * 00055000
  56. * NONE - 00056000
  57. * 00057000
  58. * 00058000
  59. * REGISTER USAGE - 00059000
  60. * 00060000
  61. * GPR1 = PARAMETER REGISTER. 00061000
  62. * GPR2 = PARAMETER REGISTER. 00062000
  63. * GPR5 = GENERAL BAL REGISTER. 00063000
  64. * GPR6 = ADDRESS OF RCHBLOK. 00064000
  65. * GPR7 = ADDRESS OF RCUBLOK. 00065000
  66. * GPR8 = ADDRESS OF RDEVBLOK. 00066000
  67. * GPR11 = ADDRESS OF DMKSSP (SECOND BASE REGISTER) 00067000
  68. * GPR12 = ADDRESS OF DMKSSP (BASE REGISTER). 00068000
  69. * 00069000
  70. * 00070000
  71. * OPERATION - 00071000
  72. * 00072000
  73. * THE PURPOSE OF THIS ROUTINE IS TO BUILD THE I/O BLOCKS 00073000
  74. * SO THAT A SYSTEMS GENERATION CAN BE PERFORMED DESCRIBING 00074000
  75. * THE INSTALLATIONS REQUIREMENTS. DMKSSP IS A BOOT STRAP 00075000
  76. * MODULE TO ALLOW ANY SYSTEM TO BE BUILT. REAL I/O BLOCKS 00076000
  77. * ARE BUILT, BUT NOT IN THE STANDARD MANNER. RATHER THEY ARE 00077000
  78. * BUILT DYNAMICLLY OVERLAYING THE REALIO MODULE THAT 00078000
  79. * WERE SHIPPED WITH THE STARTER SYSTEM. HOWEVER, THE SYSTEM WILL 00079000
  80. * FUNCTION THE SAME WAY AS IF THEY WERE BUILT FROM A REALIO 00080000
  81. * MACRO ASSEMBLY. 00081000
  82. * 00082000
  83. * 00083000
  84. * MESSAGES - 00084000
  85. * 00085000
  86. * MESSAGES ARE IN THE FORM OF QUESTAINS PROMPTING THE OPERATOR 00086000
  87. * TO ENTER THE DEVICE ADDRESS AND TYPE OF DEVICE. AT THE 00087000
  88. * COMPLETION OF THE PROMPTING ROUTINE A MESSAGE WILL BE 00088000
  89. * ISSUED STATING THAT " SYSTEMS DEFINITION IS COMPLETE ". 00089000
  90. * 00090000
  91. * 00091000
  92. * THE FOLLOWING MESSAGES ARE ISSUED: 00092000
  93. * 00093000
  94. * ENTER PRINTER ADDRESS (CUU): 00094000
  95. * ENTER DEVICE TYPE (1403,1443,3211,3203) : 00095000
  96. * ENTER PUNCH ADDRESS (CUU): 00096000
  97. * ENTER DEVICE TYPE (2540P,3525): 00097000
  98. * ENTER READER ADDRESS (CUU): 00098000
  99. * ENTER DEVICE TYPE (2501,2540R,3505): 00099000
  100. * ENTER ADDRESS WHERE PID TAPE IS MOUNTED (CUU): 00100000
  101. * ENTER DEVICE TYPE (CUU): 00101000
  102. * ENTER ADDRESS WHERE SCRATCH TAPE IS MOUNTED (CUU): 00102000
  103. * ENTER DEVICE TYPE (2401,2415,2420,3420): 00103000
  104. * ENTER DEVICE ADDRESS WHERE SYSTEM'S RESIDENCE WILL BE BUILT 00104000
  105. * ENTER DEVICE TYPE (2319,2314,3330,3340,3350,3375,3380,2305): 00105100
  106. * *** DO YOU WISH TO RE-DEFINE YOU SYSTEM***(YES,NO): 00106000
  107. * ***ERROR*** DEVICE HAS BEEN ALREADY ALLOCATED 00107000
  108. * *** SYSTEM DEFINITION COMPLETE *** 00108000
  109. * ARE THE ABOVE ENTRIES CORRECT (YES,NO): 00109000
  110. * 00110000
  111. *. 00111000
  112. ********************************************************************* 00112000
  113. EJECT 00113000
  114. DMKSSP CSECT 00114000
  115. EXTRN DMKCVTHB,DMKCPINT,DMKCVTBH 00115000
  116. EXTRN DMKRIODV,DMKRIOCU,DMKRIOCH,DMKRIOCN,DMKRIOPR,DMKRIOPU 00116000
  117. EXTRN DMKRIO,DMKSYSNU 00117000
  118. EXTRN DMKRIORD 00118000
  119. EXTRN DMKSYSTP @V407466 00118100
  120. ENTRY DMKSSP01 @V200731 00119000
  121. USING DMKSSP01+2,R12 SET UP ADDRESSABILITY FOR DMKSSP @V200731 00120000
  122. USING DMKSSP01+4096,R11 SET UP SECOND BASE REGISTER @V200731 00121000
  123. DMKSSP01 EQU * @V200731 00122000
  124. BALR R12,R0 BASE OF DMKSSP @V200731 00123000
  125. LA R12,0(,R12) CLEAR HIGH ORDER BYTE @V200731 00124000
  126. LA R11,4094(,R12) GET THE SECOND BASE ADDRESS @V200731 00125000
  127. USING SAVEAREA,R13 00126000
  128. USING PSA,R0 00127000
  129. SSM DISABLE DISABLE ALL INTERRUPTS @V56BDA8 00127500
  130. MVC IONPSW,IOPSW SET UP NEW I/O PSW @VM08630 00128000
  131. MVC MCNPSW,MCPSW SET UP NEW MACHINE CHECK PSW @VM08630 00129000
  132. MVC PRNPSW,PCPSW SET UP NEW PROGRAM CHECK PSW @VM08630 00130000
  133. LH R3,2 SYSRES DEVICE ADDRESS @V407466 00131100
  134. STH R3,RESTBL SAVE FOR LATER @V407466 00131200
  135. MVI RESTBL+2,CLASDASD MOVE DASD CLASS TO TABLE @V407466 00131300
  136. L R3,=A(DMKSYSTP) PREPARE TO OBTAIN DEVICE @V407466 00131400
  137. MVC RESTBL+3(1),1(R3) TYPE CODE FOR TABLE @V407466 00131500
  138. STIDP CPUID GET CPU MODEL NUMBER @VA03010 00132000
  139. CLI CPUVERSN,X'FF' IS THIS A VIRTUAL MACHINE ? @VA03010 00133000
  140. BNE REALCPU NO, GO SET UP ASSUMED CONSOLE @VA03010 00134000
  141. MVI CONTBL+1,X'09' SET CONSOLE ADDRESS TO (009) @VM08630 00135000
  142. MVI CONTBL+2,CLASTERM SET CLASS TO TERMINAL @VM08630 00136000
  143. MVI CONTBL+3,TYP3210 SET TYPE TO 3210/3215 @VM08630 00137000
  144. B MSGHAND ALL SET FOR VIRTUAL MACHINE @VA03010 00138000
  145. REALCPU MVI CONTBL+2,CLASGRAF SET CLASS TO GRAPHICS @VA03010 00139000
  146. MVI CONTBL+3,TYP3066 SET TYPE TO 3066 @VA03010 00140000
  147. MVI PARM,PARMGRP+PARMCLE SET IND. FOR GRAPHICS @VA03010 00141000
  148. MSGHAND EQU * @VM08936 00142000
  149. LA R9,LNGMSG GET ADDRESS OF SYSTEM HEADER @VM08936 00143000
  150. LA R5,CONINT SPECIAL I/O ERROR ROUTINE FOR @V56BDA8 00143200
  151. * 1ST I/O TO CONSOLE. IT HAS TO DETERMINE 00143400
  152. * THE UNIT ADDRESS OF THE CONSOLE. 00143600
  153. ST R5,IOBERROR PUT ERROR ROUTINE ADDR IN IOB. @V56BDA8 00143800
  154. BAL R5,TYPEMSG GO PRINT THE MESSAGE @VM08936 00144000
  155. LA R5,ERRHAND SWITCH TO NORMAL ERROR HANDLER. @V56BDA8 00145000
  156. ST R5,IOBERROR SAVE ADDRESS OF ERROR HANDLER. @V56BDA8 00146000
  157. L R9,=A(DMKRIOCN) GET POINTER TO CONSOLE ADDRESS @VM08936 00147000
  158. L R9,0(,R9) GET CONSOLE ADDRESS @VM08936 00148000
  159. N R9,XRIGHT16 IS THERE A CONSOLE ADDRESS @VM08936 00149000
  160. BZ MAINLINE NO, GO BUILD REAL I/O DECK @VM08936 00150000
  161. REDEFINE EQU * @VM08630 00151000
  162. LA R9,LNGDEF GET ADDRESS OF SYSTEM DEFINITION @VM08630 00152000
  163. BAL R5,TYPEMSG GO PRINT THE MESSAGE @VM08630 00153000
  164. CLC INPUT(3),=C'NO ' DOES USER WANT A COMPLETE @V200731 00154000
  165. * SYSTEM DEFINITION 00155000
  166. BE XFRINIT NO, GO TO DMKCPI @V200731 00156000
  167. CLC INPUT(4),=C'YES ' DOES USER WANT A COMPLETE @VM08630 00157000
  168. * SYSTEM DEFINITION 00158000
  169. BNE REDEFINE NO, GO ISSUE MESSAGE AGAIN @V200731 00159000
  170. SPACE 1 00160000
  171. MAINLINE LM R6,R8,DEVBLKS LOAD R6-8 WITH ADDR. OF I/O BLOCKS. 00161000
  172. USING RCHBLOK,R6 RCHBLOK IN R6 00162000
  173. USING RCUBLOK,R7 RCUBLOK IN R7 00163000
  174. USING RDEVBLOK,R8 RDEVBLOK IN R8 00164000
  175. ST R7,ALLOCU SAVE STARTING ADDR. OF FIRST RCUBLOK. 00165000
  176. ST R8,ALLODEV SAVE STARTING ADDR. OF FIRST RDEVBLOK. 00166000
  177. CLRCU CR R7,R6 ALL C.U.'S CLEARED YET ? 00167000
  178. BE CLRCHAN YES., BRANCH 00168000
  179. MVC RCUDVTBL(16*2),FFS32 CLEAR DEVICE INDEX TABLE @V200731 00169000
  180. MVC RCUADD,FFS32 OVERLAY CONTROL UNIT ADDRESS @V200731 00170000
  181. MVI RCUTYPE,00 ZERO OUT C.U. TYPE 00171000
  182. SR R0,R0 00172000
  183. LA R1,16 LOAD R1 TO CLEAR 16 CHANNELS @V200735 00173000
  184. ST R0,RCUCHA ZERO CHANNEL PATH FOR C.U. "A" . 00174000
  185. ST R0,RCUCHB ZERO CHANNEL PATH FOR C.U. "B" . 00175000
  186. ST R0,RCUCHC FOR ALTERNATE PATH @V407466 00175100
  187. ST R0,RCUCHD FOR ALTERNATE PATH @V407466 00175200
  188. LA R7,RCUSIZE*8(,R7) BUMP TO GET NEXT C.U. 00176000
  189. B CLRCU CLEAR REMAINING C.U. 00177000
  190. SPACE 1 00178000
  191. CLRCHAN EQU * @V200731 00179000
  192. MVC RCHCUTBL(32*2),FFS32 CLEAR ALL CONTROL UNIT PTRS@V200731 00180000
  193. LA R6,RCHSIZE*8(,R6) INCREMENT TO NEXT RCHBLOK. 00181000
  194. BCT R1,CLRCHAN CONTINUE TO CLEAR ALL RCHBLOKS. 00182000
  195. SPACE 1 00187000
  196. SETCONS LH R1,CONTBL LOAD R1 W/ CONS. ADDR. @V200735 00188000
  197. SR R2,R2 CLEAR REGISTER 2 @VM08630 00189000
  198. ICM R2,3,CONTBL+2 GET CLASS AND TYPE FOR CONS. @VM08630 00190000
  199. BAL R5,SCAN BUILD RCHBLOK,RCUBLOK & RDEVBLOK @VM08630 00191000
  200. B DIEHERE BAD RETURN - LOAD WAIT STATE @VM08630 00192000
  201. LH R1,RESTBL GET SYSTEM RESID. DEVICE ADDR. @VM08630 00193000
  202. ICM R2,3,RESTBL+2 GET CLASS AND TYPE FOR DEVICE @VM08630 00194000
  203. BAL R5,SCAN BUILD RCHBLOK,RCUBLOK & RDEVBLOK @VM08630 00195000
  204. B DIEHERE BAD RETURN - LOAD WAIT STATE @VM08630 00196000
  205. * 00197000
  206. SPACE 1 00198000
  207. * BEGINNING OF PROMPTING ROUTINE********* 00199000
  208. PRTLAB LA R9,PRINTER OPERATOR MUST RESPOND TO @V200735 00200000
  209. * PRINTER QUEST. 00201000
  210. BAL R5,READADDR GO GET PRINTER ADDRESS AND TYPE. 00202000
  211. BAL R5,SCAN LET SCAN BUILD THE BLOCKS. 00203000
  212. B PRTLAB ERROR IF SCAN RETURNS HERE. 00204000
  213. CALL DMKCVTBH 00205000
  214. STCM R1,7,PRTLINE SAVE PRINTER ADDRESS. 00206000
  215. PCHLAB LA R9,PUNCH OPERATOR MUST RESPOND TO PUNCH @V200735 00207000
  216. * QUEST. 00208000
  217. BAL R5,READADDR GO GET PUNCH ADDRESS AND TYPE. 00209000
  218. BAL R5,SCAN LET SCAN BUILD THE BLOCKS. 00210000
  219. B PCHLAB ERROR IF SCAN RETURNS HERE. 00211000
  220. CALL DMKCVTBH 00212000
  221. STCM R1,7,PCHLINE SAVE PUNCH ADDRESS. 00213000
  222. RDRLAB LA R9,READER OPERATOR MUST RESPOND TO READER @V200735 00214000
  223. * QUEST. 00215000
  224. BAL R5,READADDR GET READER ADDRESS AND TYPE. 00216000
  225. BAL R5,SCAN LET SCAN BUILD THE BLOCKS 00217000
  226. B RDRLAB ERROR IF SCAN RETURNS HERE. 00218000
  227. CALL DMKCVTBH 00219000
  228. STCM R1,7,RDRLINE SAVE READER ADDRESS. 00220000
  229. PIDLAB LA R9,PIDTAPE OPERATOR MUST MAKE REPLY. @V200735 00221000
  230. BAL R5,READADDR GO GET ADDRESS AND TYPE OF TAPE DR. 00222000
  231. BAL R5,SCAN GO TO SCAN TO BUILD BLOCKS. 00223000
  232. B PIDLAB ERROR IF SCAN RETURNS HERE. 00224000
  233. CALL DMKCVTBH 00225000
  234. STCM R1,7,PIDLINE SAVE PID TAPE ADDRESS. 00226000
  235. BKUPLAB LA R9,BKUPTAPE OPERATOR MUST MAKE REPLY @V200735 00227000
  236. BAL R5,READADDR GET ADDR. AND TYPE OF SCRATCH TAPE. 00228000
  237. BAL R5,SCAN LET SCAN BUILD THE BLOCKS. 00229000
  238. B BKUPLAB ERROR IF SCAN RETURNS HERE. 00230000
  239. CALL DMKCVTBH 00231000
  240. STCM R1,7,TAPLINE SAVE ADDRESS OF BACKUP TAPE. 00232000
  241. SYSLAB LA R9,SYSRES INFO. FOR NEW SYSTEM RESIDENCE @V200735 00233000
  242. BAL R5,READADDR GET ADDRESS AND TYPE OF NEW SYS-RES.. 00234000
  243. BAL R5,SCAN GO TO SCAN TO BUILD THE BLOCKS. 00235000
  244. B SYSLAB ERROR IF SCAN RETURNS HERE. 00236000
  245. CALL DMKCVTBH 00237000
  246. STCM R1,7,RESLINE SAVE ADDRESS OF NEW SYS-RES. 00238000
  247. *WORKLAB LA R9,WORKPACK TABLE FOR A SCRATCH PACK 00239000
  248. * BAL R5,READADDR GET ADDRESS AND TYPE OF SCRATCH PACK. 00240000
  249. * BAL R5,SCAN LET SCAN BUILD BLOCKS. 00241000
  250. * B WORKLAB ERROR IF SCAN RETURNS HERE. 00242000
  251. * CALL DMKCVTBH 00243000
  252. * STCM R1,7,PACKLINE SAVE ADDRESS OF SCRATCH PACK. 00244000
  253. WORKLAB EQU * **MAY REMOVE LATER ** 00245000
  254. LA R9,BLKLEN GET ADDR. OF BLANK LINE. @V200735 00246000
  255. BAL R5,TYPEMSG PRINT IT. 00247000
  256. LA R9,COMPLEN GET ADDR. OF DEFINATION COMPLETED@V200735 00248000
  257. BAL R5,TYPEMSG PRINT IT. 00249000
  258. LA R9,BLKLEN GET ADDR. OF BLANK LINE @V200735 00250000
  259. BAL R5,TYPEMSG PRINT IT. 00251000
  260. LA R9,PRTLEN GET ADDR. OF PRINTER. @V200735 00252000
  261. BAL R5,TYPEMSG PRINT IT. 00253000
  262. LA R9,PCHLEN GET ADDR. OF PUNCH. @V200735 00254000
  263. BAL R5,TYPEMSG PRINT IT. 00255000
  264. LA R9,RDRLEN GET ADDR. OF READER. @V200735 00256000
  265. BAL R5,TYPEMSG PRINT IT. 00257000
  266. LA R9,PIDLEN GET ADDR. OF PID TAPE. @V200735 00258000
  267. BAL R5,TYPEMSG PRINT IT. 00259000
  268. LA R9,TAPLEN GET ADDR. OF BACKUP TAPE. @V200735 00260000
  269. BAL R5,TYPEMSG PRINT IT. 00261000
  270. LA R9,RESLEN GET ADDR. OF NEW SYS-RES. @V200735 00262000
  271. BAL R5,TYPEMSG PRINT IT. 00263000
  272. LA R9,PACKLEN GET ADDR. OF WORK PACK. @V200735 00264000
  273. * BAL R5,TYPEMSG PRINT IT. 00265000
  274. SPACE 1 00266000
  275. DEFLAB LA R9,LASTLEN ASK OPERATOR IF ANY CHANGES @V200735 00267000
  276. * NECESSARY 00268000
  277. BAL R5,TYPEMSG 00269000
  278. CLC INPUT(4),=C'YES ' DID HE REPLY YES ? 00270000
  279. BE XFRINIT 00271000
  280. CLC INPUT(3),=C'NO ' HE MAY WANT TO REDIFINE AGAIN. 00272000
  281. BE MAINLINE YES., HE DOES. 00273000
  282. B DEFLAB NO, ANSWERED WRONG @VM08630 00274000
  283. SPACE 2 00275000
  284. ********************************************************************** 00276000
  285. * INTERRUPT HANDLER TO DETERMINE THE CONSOLE DEVICE 00277000
  286. * ADDRESS ON THIS SYSTEM. 00278000
  287. ********************************************************************** 00279000
  288. SPACE 1 00280000
  289. CONINT EQU * @VM08630 00281000
  290. NI IOBFLAGS,255-IOBFERP ERR ROUTINE IS RESPONSIBLE@V56BDA8 00281500
  291. * FOR TURNING THIS OFF. 00282000
  292. TM IOBFLAGS,IOBFCC3 IS THE UNIT NOT OPERATIONAL? @V56BDA8 00282500
  293. BO CONPARM YES, GO TEST FOR CORRECT DEVICE @VM08630 00283000
  294. TM IOBCSW+4,UC IS THIS A UNIT CHECK? @V56BDA8 00284000
  295. BZ ERRHAND NO, GO TO ERROR HANDLER @VM08630 00285000
  296. CONPARM EQU * @VM08630 00286000
  297. TM PARM,PARM321 IS THIS A 3215/3210/1052 @VM08630 00288000
  298. BO TESTGRAP NOT 3210, TRY GRAPHICS @VA03010 00289000
  299. CLI CONTBL+3,TYP3278 TRIED 3278 YET? @V60A6B6 00290000
  300. BE TEST3210 TRY IT AS A 3210 NOW @V60A6B6 00290300
  301. CLI CONTBL+3,TYP3277 TRIED 3277 YET? @VA03010 00290600
  302. BE TEST3278 YES, TRY IT AS 3278 @V60A6B6 00291000
  303. MVI CONTBL+3,TYP3277 SET TYPE TO 3277 @V60A6B6 00291080
  304. OI PARM,PARM327 INDICATE 3277 @V60A6B6 00291160
  305. ********************************************************************** 00291240
  306. * THE FOLLOWING WILL ENSURE THAT THE LINE DISPLACEMENT FOR THE DATA * 00291320
  307. * STREAMS FOR THE 3277 WILL BE CORRECT. THIS IS A 24 LINE SCREEN. * 00291400
  308. ********************************************************************** 00291480
  309. MVC LAB3270A+2(2),ADDR1 @V60A6B6 00291560
  310. MVC LAB3270A+8(2),ADDR2 @V60A6B6 00291640
  311. MVC LAB3270B+2(2),ADDR1 @V60A6B6 00291720
  312. MVC LAB3270B+8(2),ADDR2 @V60A6B6 00291800
  313. MVC LAB3270C+2(2),ADDR2 @V60A6B6 00291880
  314. MVC LAB3270D+2(2),ADDR1 @V60A6B6 00291960
  315. MVC LAB3270E+5(2),ADDR1 @V60A6B6 00292040
  316. MVC LAB3270E+12(2),ADDR2 @V60A6B6 00292120
  317. MVC ADDR5,ADDR6 ADDR TO CHECK FOR CURSOR MOVE @V60A6B6 00292200
  318. MVC MAXLEN,LEN3270 @V60A6B6 00292280
  319. B MSGHAND @V60A6B6 00292360
  320. TEST3278 EQU * @V60A6B6 00292440
  321. CLC LAB3270A+2(2),ADDR3 HAVE WE BEEN HERE YET? @V60A6B6 00292520
  322. BE TEST3210 YES NOW TRY IT AS 3210 @V60A6B6 00292600
  323. MVI CONTBL+3,TYP3278 THIS IS THE 3278 @V60A6B6 00292640
  324. ********************************************************************** 00292680
  325. * THE FOLLOWING WILL ENSURE THAT THE LINE DISPLACEMENT FOR THE DATA * 00292760
  326. * STREAMS FOR THE 3278 WILL BE CORRECT. THIS IS A 20 LINE SCREEN. * 00292840
  327. ********************************************************************** 00292920
  328. MVC LAB3270A+2(2),ADDR3 @V60A6B6 00293000
  329. MVC LAB3270A+8(2),ADDR4 @V60A6B6 00293080
  330. MVC LAB3270B+2(2),ADDR3 @V60A6B6 00293160
  331. MVC LAB3270B+8(2),ADDR4 @V60A6B6 00293240
  332. MVC LAB3270C+2(2),ADDR4 @V60A6B6 00293320
  333. MVC LAB3270D+2(2),ADDR3 @V60A6B6 00293400
  334. MVC LAB3270E+5(2),ADDR3 @V60A6B6 00293480
  335. MVC LAB3270E+12(2),ADDR4 @V60A6B6 00293560
  336. MVC ADDR5,ADDR7 ADDR TO CHECK FOR CURSOR MOVE @V60A6B6 00293640
  337. MVC MAXLEN,LEN3278 @V60A6B6 00293720
  338. B MSGHAND TRY THIS COMBO @VA03010 00294000
  339. TESTGRAP EQU * @VA03010 00295000
  340. CLI CONTBL+1,X'1F' TRIED X'01F' YET? @VA03010 00296000
  341. BE SSPLPSW YES, GO WAIT FOR INTERRUPT @VA03010 00297000
  342. MVI CONTBL+1,X'1F' SET ADDRESS TO X'01F' @VA03010 00298000
  343. MVI CONTBL+2,CLASGRAF SET CLASS TO GRAPHICS @VA03010 00299000
  344. MVI CONTBL+3,TYP3066 SET TYPE TO 3066 @VA03010 00300000
  345. MVI PARM,PARMGRP+PARMCLE RESET IND. FOR GRAPHICS @VA03010 00301000
  346. B MSGHAND TRY IT THIS WAY @VA03010 00302000
  347. TEST3210 EQU * @VA03010 00303000
  348. MVI CONTBL+2,CLASTERM SET CLASS TO TERM @VA03010 00304000
  349. MVI CONTBL+3,TYP3210 SET TYPE TO 3210/3215 @VA03010 00305000
  350. MVI PARM,PARM321 RESET IND. FOR TERM @VA03010 00306000
  351. B MSGHAND TRY THIS COMBO @VA03010 00307000
  352. SSPLPSW EQU * @VA03010 00308000
  353. MVI CONTBL+2,CLASGRAF SET CLASS FOR GRAPHICS @VA03010 00309000
  354. MVI CONTBL+3,TYP3066 SET TYPE FOR 3066 @VA03010 00310000
  355. MVI PARM,PARMGRP+PARMCLE RESET IND. FOR GRAPHICS @VA03010 00311000
  356. L R0,IOBERROR SAVE ERROR ROUTINE ADDR IN R0. @V56BDA8 00311800
  357. SR R1,R1 ZERO... @V56BDA8 00312600
  358. ST R1,IOBERROR INDICATES NO ERROR ROUTINE. @V56BDA8 00313400
  359. BAL R14,WAITANY WAIT FOR INTERRUPT (TO IDENTIFY @V56BDA8 00314200
  360. * CONSOLE), THEN RETURN HERE. 00315000
  361. ST R0,IOBERROR RESTORE ADDR OF ERROR ROUTINE. @V56BDA8 00315800
  362. MVC CONTBL(2),IOOPSW+2 GET THE DEVICE ADDRESS @VM08630 00317000
  363. B MSGHAND GO TRY THIS ADDRESS @VM08936 00318000
  364. SPACE 2 00319000
  365. ********************************************************************** 00320000
  366. * ON ENTRY REGISTER 9 CONTAINS ADDRESS OF ARGURMENT LIST 00321000
  367. ********************************************************************** 00322000
  368. SPACE 1 00323000
  369. READADDR EQU * @VM08630 00324000
  370. SLR R2,R2 CLEAR LENGTH REGISTER @V200731 00325000
  371. IC R2,0(,R9) GET LENGTH OF LINE TO OUTPUT @V200731 00326000
  372. LA R4,1(,R9) GET THE DATA ADDRESS @V200731 00327000
  373. OI PARM,PARMNAUT INDICATE NO CARRIAGE RETURN @V200731 00328000
  374. BAL R14,REAWRITE GO TO THE READ/WRITE SECTION @V200731 00329000
  375. MVC INPUT,SPACES CLEAR INPUT AREA TO BLANKS @V200735 00330000
  376. LA R4,INPUT ADDRESS OF INPUT DATA FIELD @V200731 00331000
  377. LA R2,L'INPUT NUMBER OF BYTES ALLOWED TO READ @V200731 00332000
  378. OI PARM,PARMREA SET THE READ INDICATOR @VM08630 00333000
  379. BAL R14,REAWRITE GO TO THE READ/WRITE SECTION @V200731 00334000
  380. OC INPUT,SPACES TRANSLATE TO UPPERCASE @V200731 00335000
  381. CLI INPUT+3,X'40' DID OPERATOR TYPE MORE THAN 3 CHAR'S. 00336000
  382. BNE READADDR YES., RE-ISSUE PRINT LINE. 00337000
  383. LA R0,3 ONLY CHECK FOR 3 CHAR. 00338000
  384. LTR R0,R0 FORCE CONDITION CODE TO NON-ZERO. 00339000
  385. LA R1,INPUT SET R1 TO POINT TO INPUT LINE. 00340000
  386. CALL DMKCVTHB CALL CONVERT TO TRANS THIS DATA. 00341000
  387. BC 7,READADDR IF CONVERT HAS ERROR RE-ISSUE LINE. 00342000
  388. C R1,F4096 ADDR. > THAN X'FFF' @V200735 00343000
  389. BH READADDR YES., BRANCH 00344000
  390. LR R13,R1 SAVE DEVICE ADDRESS IN GPR-13 @V200735 00345000
  391. READTYPE SLR R3,R3 CLEAR @V200735 00346000
  392. IC R3,0(,R9) GET LEMGTH OF 2'ND OUTPUT LINE @V200735 00347000
  393. ALR R3,R9 ADD TO IT THE BEGINNING OF PERM @V200735 00348000
  394. * LIST 00349000
  395. LA R3,1(,R3) BYPASS BYTE THAT REPRESENTS @V200735 00350000
  396. * LENGTH 00351000
  397. LR R9,R3 NOW SAVE NEWLY DEVELOPED ADDRESS @V200735 00352000
  398. SLR R2,R2 CLEAR LENGTH REGISTER @V200731 00353000
  399. SIO2 EQU * @V200731 00354000
  400. IC R2,0(,R9) GET LENGTH OF 2'ND LINE OF OUTPUT@V200731 00355000
  401. LA R4,1(,R9) ADDRESS OF OUTPUT LINE @V200731 00356000
  402. OI PARM,PARMNAUT INDICATE NO CARRIAGE RETURN @V200731 00357000
  403. BAL R14,REAWRITE GO TO THE READ/WRITE SECTION @V200731 00358000
  404. MVC INPUT,SPACES CLEAR INPUT AREA TO BLANKS @V200735 00359000
  405. LA R2,L'INPUT LENGTH OF MAXIMUM BYTE COUNT @V200731 00360000
  406. LA R4,INPUT GET DATA ADDRESS OF INPUT LINE @V200731 00361000
  407. OI PARM,PARMREA SET THE READ INDICATOR @VM08630 00362000
  408. BAL R14,REAWRITE GO TO THE READ/WRITE SECTION @V200731 00363000
  409. SPACE 2 00364000
  410. *********************************************************************** 00365000
  411. ** CHECK FOR PROPER DEVICE TYPE BEFORE RETURNING TO MAIN LINE 00366000
  412. ** CODE. 00367000
  413. *********************************************************************** 00368000
  414. SPACE 1 00369000
  415. SR R3,R3 CLEAR REGISTER 3 @VM08630 00370000
  416. IC R3,0(,R9) FIND END OF PRINTED DATA @VM08630 00371000
  417. ALR R3,R9 MUST ADD BASE ADDRESS TO LENGTH @VM08630 00372000
  418. LA R3,1(,R3) BYPASS LENGTH FIELD @VM08630 00373000
  419. OC INPUT,SPACES TRANSLATE TO UPPERCASE @VM08630 00374000
  420. TRYTYPE EQU * @VM08630 00375000
  421. CLC 0(5,R3),INPUT DOES RESPONE MATCH LIST ARGURMENT@VM08630 00376000
  422. BNE CHKTYPE NO, GO CHECK FOR END OF LIST @VM08630 00377000
  423. CLI 4(R3),X'40' IS THIS A BLANK FIELD ? @VM08630 00378000
  424. BE GOTYPE YES, GO GET DEV. TYPE AND CLASS @VM08630 00379000
  425. CLI INPUT+5,X'40' IS THIS A BLANK FIELD ? @VM08630 00380000
  426. BNE CHKTYPE NO, GO CHECK FOR END OF LIST @VM08630 00381000
  427. GOTYPE EQU * @VM08630 00382000
  428. LH R2,5(,R3) GET DEVICE TYPE AND CLASS @VM08630 00383000
  429. LR R1,R13 GET THE DEVICE ADDRESS @VM08630 00384000
  430. BR R5 RETURN TO INLINE CODE @VM08630 00385000
  431. CHKTYPE EQU * @VM08630 00386000
  432. CLC 0(5,R3),FFS32 END OF LIST FOR DEVICE TYPE @VM08630 00387000
  433. BE SIO2 YES, GO PRINT MESSAGE AGAIN @VM08630 00388000
  434. LA R3,7(,R3) GET ADDR. OF NEXT DEVICE TYPE @VM08630 00389000
  435. B TRYTYPE GO CHECK NEXT DEVICE TYPE @VM08630 00390000
  436. EJECT 00391000
  437. * THE SCAN ROUTINE IS USED TO FIND OR BUILD CONTROL BLOCKS 00392000
  438. * NECESSARY FOR "IOS" TO OPERATE ON THE STARTER SYSTEM. 00393000
  439. * THE FOLLOWING APPLIES TO THIS ROUTINE. 00394000
  440. * 00395000
  441. * 1. LOCATE A RCHBLOK. 00396000
  442. * 2. IF A RCUBLOK IS ALREADY ALLOCATED FIND THE INDEX POINTER 00397000
  443. * TO THE RDEVBLOK. IF A RDEVBLOK ALREADY EXIST'S ISSUE AN 00398000
  444. * ERROR MESSAGE TO THE OPERATOR THAT HE HAS GIVEN US 00399000
  445. * THIS ADDRESS BEFORE. OTHERWISE GET THE NEXT AVAILABLE 00400000
  446. * RDEVBLOK AND STORE ITS ADDRESS DISPLACEMENT INTO 00401000
  447. * RCUBLOK. 00402000
  448. * 3. IF A RCUBLOK IS NOT ALLOCATED IN THE RCHBLOK GET 00403000
  449. * THE NEXT AVAILABLE RCUBLOK AND CHAIN IT TO A RCHBLOK, 00404000
  450. * ALSO LOCATE THE NEXT RDEVBLOK AND CHAIN IT INTO THE 00405000
  451. * RCUBLOK THAT WAS JUST ALLOCATED. 00406000
  452. * 00407000
  453. * 00408000
  454. SCAN EQU * @V200731 00409000
  455. LM R7,R8,FFS32 NULL R7 - R8 BEFORE SCAN TEST @V200731 00410000
  456. LA R6,X'F00' ISOLATE THE CHANNEL BITS 00411000
  457. NR R6,R1 FROM THE DEVICE-ADDRESS 00412000
  458. SRL R6,7 CHANNEL ADDRESS * 2 00413000
  459. A R6,ARIOCT ADD CHANNEL TABLE ADDRESS 00414000
  460. LH R6,0(,R6) LOAD RCHBLOK INDEX 00415000
  461. LTR R6,R6 DOES CHANNEL EXIST ? 00416000
  462. BM DIEHERE DIE IF CHANNEL NOT FOUND @V200735 00417000
  463. A R6,ARIOCH COMPUTE RCHBLOK ADDRESS 00418000
  464. LA R7,X'0F8' ISOLATE THE CONTROL-UNIT BITS 00419000
  465. NR R7,R1 FROM THE DEVICE-ADDRESS 00420000
  466. SRL R7,2 CU ADDRESS * 2 00421000
  467. LH R7,RCHCUTBL(R7) LOAD CONTROL UNIT INDEX 00422000
  468. LTR R7,R7 DOES CONTROL UNIT EXIST ? 00423000
  469. BM TESTRTN NO - ONE WILL BE BUILD 00424000
  470. A R7,ARIOCU COMPUTE RCUBLOK ADDRESS 00425000
  471. LA R8,X'00F' ISOLATE THE DEVICE BITS 00426000
  472. NR R8,R1 FROM THE DEVICE-ADDRESS 00427000
  473. AR R8,R8 DEVICE ADDRESS * 2 00428000
  474. LH R8,RCUDVTBL(R8) LOAD RDEVBLOK INDEX 00429000
  475. LTR R8,R8 DOES DEVICE EXIST ? 00430000
  476. BM TESTRTN NO - ONE WILL BE BUILD 00431000
  477. SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 00432000
  478. A R8,ARIODV COMPUTE RDEVBLOK ADDRESS 00433000
  479. SPACE 00434000
  480. TESTRTN LTR R8,R8 SHOULDN'T HAVE FOUND A RDEVBLOK 00435000
  481. BNM WNGDEV ERROR IF ONE FOUND. 00436000
  482. LTR R7,R7 WAS A RCUBLOK FOUND ? 00437000
  483. BNM GETDEV YES., NO NEED TO BUILD ONE. 00438000
  484. L R7,ALLOCU GET NEXT AVAILABLE RCUBLOK. 00439000
  485. LR R3,R7 SAVE ADDRESS IN R3. 00440000
  486. LA R3,RCUSIZE*8(,R3) MAKE R3 POINT TO NEXT AVAIL. C.U. 00441000
  487. ST R3,ALLOCU SAVE ADDRESS FOR NEXT ENTRY INTO SCAN. 00442000
  488. SPACE 1 00443000
  489. GETDEV L R8,ALLODEV LOAD R8 W/ NEXT AVAILABLE RDEVBLOK ADDR. 00444000
  490. LR R3,R8 SAVE ADDR IN R3 00445000
  491. LA R3,RDEVSIZE*8(,R3) BUMP R3 TO NEXT AVAIL. RDEVBLOK. 00446000
  492. ST R3,ALLODEV SAVE ADDR. FOR NEXT ENTRY INTO SCAN. 00447000
  493. STH R1,RCUADD STORE DEVICE ADDR. IN REAL C.U. BLOCK. 00448000
  494. NC RCUADD,=X'00F8' REMOVE CHAN. AND DEV. BIT PORTION. 00449000
  495. ST R6,RCUCHA STORE ADDRESS OF REAL CHANNEL BLOCK. 00450000
  496. STH R1,RDEVADD STORE DEV. ADDR. IN REAL DEVICE BLOCK. 00451000
  497. NC RDEVADD,=X'000F' REMOVE CHAN. AND C.U. BIT'S. 00452000
  498. ST R7,RDEVCUA STORE ADDRESS OF REAL C.U. BLOCK. 00453000
  499. STH R2,RDEVTYPC PUT IN CLASS/TYPE. 00454000
  500. CLI RDEVTYPC,CLASGRAF GRAPHICS DEVICE? @V60A6B6 00454030
  501. BNE NOTGRAF NO, CAN'T BE A 327X @V60A6B6 00454060
  502. MVI RDEVMDL,X'02' ASSUME MODEL2 3277 @V60A6B6 00454100
  503. L R4,=V(DMKGRTB) ASSUME 3277 TYPE @V60A6B6 00454200
  504. CLI RDEVTYPE,X01 IS THIS A 3278 ?? @V60A6B6 00454300
  505. BNE NON3278 NO MUST BE 3277 TYPE @V60A6B6 00454400
  506. MVI RDEVMDL,X2A NEED A MODEL NUMBER 2A @V60A6B6 00454500
  507. MVI RDEVGRTY,X0C NEED DISPLACEMENT FOR 3278 @V60A6B6 00454600
  508. L R4,=V(DMKGRWTB) GET THE CORRECT GRTBLOK @V60A6B6 00454700
  509. NON3278 EQU * @V60A6B6 00454800
  510. ST R4,RDEVGRTB STORE GRTBLOK IN RDEVBOLK @V60A6B6 00454900
  511. NOTGRAF DS 0H @V60A6B6 00454930
  512. LR R3,R8 LOAD R3 W/ADDR. OF RDEVBLOK. 00455000
  513. S R3,=A(DMKRIODV) FIND THE DISPLACEMENT VALUE. 00456000
  514. SRL R3,3(0) CONVERT TO DOUBLE-WORD INDEX @V200820 00457000
  515. * 00458000
  516. SR R4,R4 00459000
  517. IC R4,RDEVADD+1 PICK UP ONLY DEVICE PORTION OF DEV. ADDR 00460000
  518. SLL R4,1 DOUBLE IT 00461000
  519. STH R3,RCUDVTBL(R4) SAVE DISP. OF RDEVBLOK IN RCUBLOK 00462000
  520. LR R3,R7 LOAD R3 W/ADDR OF RCUBLOK. 00463000
  521. S R3,=A(DMKRIOCU) FIND DISPLACEMENT OF REAL C.U.BLOK 00464000
  522. SR R4,R4 ZERO R4. 00465000
  523. IC R4,RCUADD+1 GET C.U. ADDRESS. 00466000
  524. SRL R4,2 DOUBLE IT. 00467000
  525. STH R3,RCHCUTBL(R4) STORE ADDR. OF RCUBLOK IN RCHBLOK. 00468000
  526. LR R3,R8 LOAD R3 W/ADDR. OF RDEVBLOK. 00469000
  527. S R3,=A(DMKRIODV) CALC DISP. OF RDEVBLOK. 00470000
  528. SRL R3,3(0) CONVERT TO DOUBLE-WORD INDEX @V200820 00471000
  529. CLI RDEVTYPC,CLASTERM CONSOLE A 3210/3215 / @V200735 00472000
  530. BE SAVCON YES - @V200735 00473000
  531. CLI RDEVTYPC,CLASGRAF CONSOLE A 3277/3066 / @V200735 00474000
  532. BE SAVCON YES., BRANCH. 00475000
  533. CLI RDEVTYPC,CLASURO IS IT A UNIT RECORD OUTPUT DEV ?? 00476000
  534. BNE NOTURO NO., BRANCH. 00477000
  535. MVI RDEVCLAS,C'A' MAKE CLASS = A 00478000
  536. TM RDEVTYPE,TYPPUN DEVICE A PUNCH ?? 00479000
  537. BO SAVPCH YES., BRANCH. 00480000
  538. TM RDEVTYPE,TYPPRT DEVICE A PRINTER ? 00481000
  539. BO SAVPRT YES., BRANCH. 00482000
  540. NOTURO CLI RDEVTYPC,CLASURI CLASS EQUAL UNIT RECORD INPUT 00483000
  541. BNE 4(,R5) NO, RETURN 00484000
  542. L R4,=A(DMKRIORD) ADDRESS OF SPOOL PRINTER 00485000
  543. STH R3,4(,R4) 00486000
  544. STH R1,6(,R4) 00487000
  545. BC 15,4(R5) RETURN. 00488000
  546. SAVCON L R4,=A(DMKRIOCN) STORE RE-COMPUTED CONSOLE ADDRESS. 00489000
  547. STH R3,0(,R4) 00490000
  548. STH R1,2(,R4) 00491000
  549. B 4(,R5) RETURN. 00492000
  550. SAVPCH L R4,=A(DMKRIOPU) STORE RE-COMPUTED PUNCH ADDRESS. 00493000
  551. STH R3,4(,R4) 00494000
  552. STH R1,6(,R4) 00495000
  553. B 4(,R5) RETURN. 00496000
  554. SAVPRT L R4,=A(DMKRIOPR) STORE RE-COMPUTED PRINTER ADDRESS. 00497000
  555. STH R3,4(,R4) 00498000
  556. STH R1,6(,R4) 00499000
  557. CLI RDEVTYPE,TYP3800 IS IT A 3800 PRINTER? @V60B9BA 00499100
  558. BNE SAVPRT1 XFER IF NOT @V60B9BA 00499200
  559. MVC RDEVIMAG,=C'IMAG3800' DEFAULT IMAGE LIBRARY @V60B9BA 00499300
  560. MVC RDEVXSEP,=C'GF10' DEFAULT XLATE FOR SEP @V60B9BA 00499400
  561. XC RDEVDELP,RDEVDELP ZERO THE DEL PURGE ANCHOR @VMI0092 00499425
  562. XC RDEVEXTN,RDEVEXTN ZERO THE RSPXBLOK POINTER @VMI0092 00499450
  563. MVC RDEVOVLY,BLANKS BLANK OUT THE OVERLAY @VMI0092 00499475
  564. MVI RDEVFSEP,6 DEFAULT FOR SEP FCB @V60B9BA 00499500
  565. MVI RDEVMAXP,1 DEFAULT SIZE OF DEL PURGE Q@V60B9BA 00499600
  566. MVI RDEVFTR,FTREXTSN EXTENDED SENSE INFO HERE @V60B9BA 00499700
  567. MVI RDEVCURP,22 ASSUME 11-INCH PAPER @VMI0091 00499750
  568. B 4(,R5) RETURN @V60B9BA 00499800
  569. SAVPRT1 DS 0H @V60B9BA 00499900
  570. MVI RDEVFTR,FTRUCS ASSUME IT HAS UCS FEATURE. 00500000
  571. B 4(,R5) RETURN 00501000
  572. * 00502000
  573. * 00503000
  574. TYPEMSG EQU * @V200731 00504000
  575. SLR R2,R2 CLEAR LENGTH REGISTER @V200731 00505000
  576. IC R2,0(,R9) GET LENGTH OF OUTPUT LINE @V200731 00506000
  577. N R2,=F'127' CLEAR HIGH ORDER BIT FOR NO READ @V200731 00507000
  578. LA R4,1(,R9) GET ADDRESS OF OUTPUT DATA @V200731 00508000
  579. TM 0(R9),X'80' IS A READ ALSO REQUESTED @V200731 00509000
  580. BO *+8 NO @V200731 00510000
  581. OI PARM,PARMNAUT SET NO CARRIAGE RETURN @V200731 00511000
  582. BAL R14,REAWRITE GO TO THE READ/WRITE SECTION @V200731 00512000
  583. TM 0(R9),X'80' IS A READ NECESSARY @V200735 00513000
  584. BCR 1,R5 NO - RETURN TO CALLER @V200735 00514000
  585. MVC INPUT,SPACES CLEAR INPUT AREA TO BLANKS @V200731 00515000
  586. LA R2,L'INPUT GET THE LENGTH OF THE INPUT DATA @V200731 00516000
  587. LA R4,INPUT ADDRESS OF DATA INPUT AREA @V200731 00517000
  588. OI PARM,PARMREA SET THE READ INDICATOR @VM08630 00518000
  589. BAL R14,REAWRITE GO TO THE READ/WRITE SECTION @V200731 00519000
  590. OC INPUT,SPACES TRANSLATE TO UPPERCASE BEFORE RETURNING 00520000
  591. BR R5 TO CALLER. 00521000
  592. * 00522000
  593. * 00523000
  594. WNGDEV CLI RDEVTYPC,CLASTAPE IS DEVICE A TAPE DRIVE ? 00524000
  595. BE 4(,R5) IF YES, DON'T PROVIDE ERROR MSG 00525000
  596. LA R9,LNGDEV TELL OPERATOR DEVICE HAS BEEN @V200735 00526000
  597. * ALLOCATED 00527000
  598. B TYPEMSG RETURN FROM "TYPEMSG" WILL CAUSE THE 00528000
  599. * ORIGINAL LINE TO BE RE-ISSUED. 00529000
  600. XFRINIT EQU * @V200731 00530000
  601. L R9,=A(DMKSYSNU) DMKSYSNU IS ADDR. OF NUCELUS @V200731 00536000
  602. * CONSTANT 00537000
  603. LH R9,0(,R9) PICK UP WHERE NUCELUS IS ON 00538000
  604. STH R9,CYL DISK AND PREPARE TO WRITE OUT 00539000
  605. L R2,=A(DMKRIO) GET ADDRESS OF REAL I0O BLOKS 00540000
  606. SRL R2,12 SHIFT 11 FOR INDEX FACTOR, +1... @V56BDA8 00540600
  607. ALR R2,R2 NOW SHIFT BACK TO 11 & BIT31 IS 0@V56BDA8 00541200
  608. LH R3,PAGE2314(R2) HEAD AND RECORD FOR 2314 @V2A2029 00542000
  609. CLI RESTBL+3,TYP2314 DEVICE TYPE 2314 ? @V2A2029 00543000
  610. BE RESHEAD YES, GO SAVE HEAD ID @V2A2029 00544000
  611. LH R3,PAGE3340(R2) HEAD AND RECORD FOR 3340 @V2A2029 00545000
  612. CLI RESTBL+3,TYP3340 DEVICE TYPE 3340 ? @V2A2029 00546000
  613. BE RESHEAD YES, SAVE HEAD ID @V2A2029 00547000
  614. LH R3,PAGE3350(R2) HEAD AND RECORD FOR 3350 @V304498 00548000
  615. CLI RESTBL+3,TYP3350 DEVICE TYPE 3350 ? @V304498 00549000
  616. BE RESHEAD YES, SAVE HEAD ID @V304498 00550000
  617. LH R3,PAGE3375(R2) Head and record for 3375 HRC106DK 00550100
  618. CLI RESTBL+3,TYP3375 device type 3375 ? HRC106DK 00550200
  619. BE RESHEAD Yes, save head id HRC106DK 00550300
  620. LH R3,PAGE3380(R2) Head and record for 3380 HRC106DK 00550400
  621. CLI RESTBL+3,TYP3380 device type 3380 ? HRC106DK 00550500
  622. BE RESHEAD Yes, save head id HRC106DK 00550600
  623. LH R3,PAGE3330(R2) HEAD AND RECORD FOR 3330 @V2A2029 00551000
  624. RESHEAD EQU * @V200731 00552000
  625. STCM R3,3,HEAD+1 STORE IT IN CHANNEL PROGRAM @V200731 00553000
  626. SPACE 00554000
  627. PAGESIO EQU * @V200731 00555000
  628. LA R1,DSKPROG GET THE PAGE THAT CONTAINS @V200731 00556000
  629. * THE REAL I/O DESCRIPTION 00557000
  630. LH R3,2 GET THE DEVICE ADDRESS @V200731 00558000
  631. LA R14,ERRDASD ADDR OF DASD ERR RECOVERY ROUTINE@V56BDA8 00558300
  632. ST R14,IOBERROR PUT IT IN THE IOB. @V56BDA8 00558600
  633. BAL R14,STARTIO GO ISSUE SIO @V200731 00559000
  634. TM IOBFLAGS,IOBFATAL NON-RECOVERABLE ERR ON DASD? @V56BDA8 00559200
  635. BO DIEHERE YES. TERMINATE. @V56BDA8 00559400
  636. LA R14,ERRHAND NORMAL ERROR RECOVERY ROUTINE. @V56BDA8 00559600
  637. ST R14,IOBERROR PUT BACK IN IOB. @V56BDA8 00559800
  638. LR R10,R3 GET THE IPL DEVICE ADDRESS FOR @V200731 00560000
  639. * DMKCPI - IT MUST BE IN REGISTER 10 00561000
  640. L R12,=A(DMKCPINT) GET ADDRESS OF DMKCPI @V200731 00562000
  641. BR R12 GO INITIALIZE VM/370 @V200731 00563000
  642. ******************************************************************** 00564000
  643. EJECT 00565000
  644. ********************************************************************* 00566000
  645. REAWRITE EQU * @V200731 00567000
  646. STM R14,R5,GRAPHSAV SAVE THE REGISTERS @V200731 00568000
  647. LA R14,RETWORD RETURN ADDRESS FROM SIO @VM08630 00569000
  648. LH R3,CONTBL GET THE CONSOLE ADDRESS @VM08630 00570000
  649. CLI CPUVERSN,X'FF' IS THIS A VIRTUAL MACHINE ? @VM08630 00571000
  650. BNE TESTCNS NO, GO TEST CONSOLE ADDRESS @VM08630 00572000
  651. L R3,FFS32 GET ALL FFS @VM08630 00573000
  652. DC X'83350024' GET CONSOLE ADDRESS (VIRTUAL) @VM08630 00574000
  653. BO DIEHERE CONSOLE ADDRESS DOESN'T EXIST @VM08630 00575000
  654. LA R3,0(R3) STRIP HIGH ORDER BYTE @VA10009 00575500
  655. STH R3,CONTBL SAVE VIRTUAL CONSOLE ADDRESS @VM08630 00576000
  656. B CNS3210 GO TO 3210/3215 SUPPORT @VM08630 00577000
  657. TESTCNS EQU * @VM08630 00578000
  658. TM PARM,PARMGRP IS SYSTEM CONSOLE A 3270/3066 @VM08630 00579000
  659. BO GRAPHID YES, GO TO GRAPHIC SUPPORT @VM08630 00580000
  660. CNS3210 EQU * @VM08540 00581000
  661. TM PARM,PARMREA IS THIS A READ REQUEST @V200731 00582000
  662. BZ WRT10 NO, GO TO WRITE SECTION @V200731 00583000
  663. STCM R4,B'0111',RD3210+1 RESOLVE CCW DATA ADDRESS @V200731 00584000
  664. STH R2,RD3210+6 STORE THE CCW COUNT @V200731 00585000
  665. LA R1,RD3210 ADDRESS OF CHANNEL PROGRAM @V200731 00586000
  666. B STARTIO GO DO I/O OPERATION @V200731 00587000
  667. SPACE 00588000
  668. WRT10 EQU * @V200731 00589000
  669. TM PARM,PARMNAUT IS A CARRIAGE RETURN NECESSARY @V200731 00590000
  670. BZ WRT10CR YES, GO GET CCWS @V200731 00591000
  671. STCM R4,B'0111',WRT3210+1 RESOLVE CCW DATA ADDRESS @V200731 00592000
  672. STH R2,WRT3210+6 STORE CCW COUNT @V200731 00593000
  673. LA R1,WRT3210 ADDRESS OF CHANNEL PROGRAM @V200731 00594000
  674. B STARTIO GO TO THE I/O HANDLER @V200731 00595000
  675. WRT10CR EQU * @V200731 00596000
  676. STCM R4,B'0111',WRT3210A+1 RESOLVE CCW DATA ADDRESS @V200731 00597000
  677. STH R2,WRT3210A+6 STORE CCW COUNT @V200731 00598000
  678. LA R1,WRT3210A ADDRESS OF CHANNEL PROGRAM @V200731 00599000
  679. B STARTIO GO TO THE I/O HANDLER @V200731 00600000
  680. GRAPHID EQU * @VM08630 00601000
  681. TM PARM,PARMREA IS THIS A READ REQUEST @V200731 00602000
  682. BZ WRT66 NO, GO TO WRITE SECTION @V200731 00603000
  683. READGRF EQU * @V200731 00604000
  684. LA R14,GRAPHIC0 RETURN ADDRESS FROM I/O HANDLER @V200731 00605000
  685. OI PARM,PARMATT SET THE ATTENTION REQUEST @VM08630 00606000
  686. XC BLNKLINE(140),BLNKLINE CLEAR READ AREA @VM08630 00607000
  687. XC RDMIDATA(3),RDMIDATA CLEAR THE READ DATA FIELD @V200731 00608000
  688. MVC CPXYSTAT(20),REALABEL @V200731 00609000
  689. LA R1,REQREAD GET THE ADDRESS OF THE CHANNEL @V200731 00610000
  690. * PROGRAM 00611000
  691. TM PARM,PARM327 IS THIS A 3270 DEVICE ? @VM08630 00612000
  692. BZ STARTIO NO, GO TO I/O HANDLER @VM08630 00613000
  693. LA R1,REQREAD1 GET THE ADDRESS OF THE CHANNEL @V200731 00614000
  694. * PROGRAM 00615000
  695. B STARTIO GO TO THE I/O HANDLER @V200731 00616000
  696. SPACE 2 00617000
  697. WRT66 EQU * @V200731 00618000
  698. MVC CPXYSTAT(20),RUNLABEL @V200731 00619000
  699. TM PARM,PARM327 IS THIS A 3066 DEVICE ? @VM08630 00620000
  700. BO GRF3270 NO, GO TO 3270 SUPPORT @VM08630 00621000
  701. STCM R4,B'0111',WRT3066+1 GET THE MESSAGE ADDRESS @V200731 00622000
  702. STH R2,WRT3066+6 SAVE THE DATA COUNT IN THE CCW @V200731 00623000
  703. LA R1,WRTCRTXY GET THE ADDRESS OF THE CHANNEL @V200731 00624000
  704. * PROGRAM 00625000
  705. TM PARM,PARMCLE IS THE ERASE INDICATOR ON ? @V200731 00626000
  706. BZ GRAPWRT NO, GO TO SIO SECTION @V200731 00627000
  707. LA R1,ERSE3066 GET THE ADDRESS OF THE CHANNEL @V200731 00628000
  708. * PROGRAM 00629000
  709. MVI SBADDR,X'00' CLEAR LINE POINTER @V200731 00630000
  710. B GRAPWRT GO GET RETURN ADDRESS @V200731 00631000
  711. GRF3270 EQU * @V200731 00632000
  712. SR R14,R14 CLEAR REGISTER 14 @V200731 00633000
  713. LA R1,WRTCRT70 GET THE ADDRESS OF THE CHANNEL @V200731 00634000
  714. * PROGRAM 00635000
  715. TM PARM,PARMCLE IS THE ERASE INDICATOR ON ? @V200731 00636000
  716. BZ NOCL3270 NO, DON'T CLEAR SCREEN @V200731 00637000
  717. MVI SBADDR,X'00' CLEAR LINE POINTER @V200731 00638000
  718. LA R1,ERSE3270 GET THE ADDRESS OF THE CHANNEL @V200731 00639000
  719. * PROGRAM 00640000
  720. NOCL3270 EQU * @V200731 00641000
  721. IC R14,SBADDR GET THE CURRENT LINE POINTER @V200731 00642000
  722. SLL R14,1 SETUP THE INDEX INTO THE TABLE @V200731 00643000
  723. LH R14,TABLE70(R14) GET THE LINE ADDRESS @V200731 00644000
  724. STCM R14,3,LAB3270+2 SAVE THE CURRENT LINE POINTER @V200731 00645000
  725. STCM R4,B'0111',WRTCR70+1 GET THE MESSAGE ADDRESS @V200731 00646000
  726. STH R2,WRTCR70+6 SAVE THE BYTE COUNT IN THE CSW @V200731 00647000
  727. GRAPWRT EQU * @V200731 00648000
  728. LA R14,GRAPHIC1 RETURN ADDRESS FROM I/O HANDLER @V200731 00649000
  729. B STARTIO GO TO THE I/O HANDLER @V200731 00650000
  730. SPACE 2 00651000
  731. GRAPHIC1 EQU * @V200731 00652000
  732. NI PARM,X'FF'-PARMCLE CLEAR THE ERASE INDICATOR @V200731 00653000
  733. SR R5,R5 CLEAR REGISTER 5 @V200731 00654000
  734. IC R5,SBADDR GET THE Y COORDINATE @V200731 00655000
  735. LA R5,1(R5) UPDATE THE Y COORDINATE @V200731 00656000
  736. CH R2,=H'80' IS DATA COUNT LONGER THAN 1 LINE @V200731 00657000
  737. BNH *+8 NO, GO SAVE Y COORDINATE @V200731 00658000
  738. LA R5,1(R5) UPDATE THE Y COORDINATE AGAIN @V200731 00659000
  739. STC R5,SBADDR SAVE THE Y COORDINATE @V200731 00660000
  740. MH R5,=H'80' GET THE BYTE LENGTH @V200731 00661000
  741. L R1,=F'2640' GET THE MAX. LENGTH @V200731 00662000
  742. TM PARM,PARM327 IS THIS A 3066 DEVICE ? @VM08630 00663000
  743. BZ TEST3066 YES, GO TEST FOR END OF CRT @VM08630 00664000
  744. L R1,MAXLEN GET THE MAX. LENGTH FOR 3270/3278@V60A6B6 00665000
  745. TEST3066 EQU * @V200731 00666000
  746. CR R5,R1 IS THE Y COORDINATE AT THE END @V200731 00667000
  747. * OF THE CRT 00668000
  748. BL RETWORD NO, CHECK FOR CMD CHAINING @VA08599 00669000
  749. OI PARM,PARMATT SET THE ATTENTION REQUEST @VM08630 00670000
  750. MVC CPXYSTAT(20),HOLLABEL @V200731 00671000
  751. LA R14,GRAPHIC3 RETURN ADDRESS FROM I/O HANDLER @V200731 00672000
  752. LA R1,CRTWORD GET THE ADDRESS OF THE CHANNEL @V200731 00673000
  753. * PROGRAM 00674000
  754. TM PARM,PARM327 IS THIS A 3066 DEVICE ? @VM08630 00675000
  755. BZ STARTIO YES, GO TO I/O HANDLER @VM08630 00676000
  756. LA R1,HOLDCCW1 GET THE ADDRESS OF THE CHANNEL @V200731 00677000
  757. * PROGRAM 00678000
  758. B STARTIO GO ISSUE SIO @V200731 00679000
  759. GRAPHIC3 EQU * @V200731 00680000
  760. BAL R5,ATTNHAND GO CHECK FOR ATTENTION INTERRUPT @V200731 00681000
  761. NI PARM,X'FF'-PARMATT CLEAR THE ATTENTION REQUEST @VM08630 00682000
  762. CANCEL1 EQU * @V200731 00683000
  763. MVI SBADDR,X'00' SET THE Y COORDINATE TO ZERO @V200731 00684000
  764. MVC CPXYSTAT(20),RUNLABEL CRT DISPLAY RUN STATUS @V200731 00685000
  765. LA R1,CNCL3066 GET THE ADDRESS OF THE CHANNEL @V200731 00686000
  766. * PROGRAM 00687000
  767. TM PARM,PARM327 IS THIS A 3066 DEVICE ? @VM08630 00688000
  768. BZ RETURNCN YES, GO GET RETURN ADDRESS @VM08630 00689000
  769. LA R1,CNCL3270 GET THE ADDRESS OF THE CHANNEL @V200731 00690000
  770. * PROGRAM 00691000
  771. RETURNCN EQU * @V200731 00692000
  772. LA R14,READGRF GET THE ADDRESS OF THE READ @V200731 00693000
  773. * SECTION 00694000
  774. TM PARM,PARMREA IS THIS A READ REQUEST ? @V200731 00695000
  775. BO STARTIO YES, GO TO THE I/O HANDLER @V200731 00696000
  776. LA R14,RETWORD RETURN ADDRESS FROM I/O HANDLER @V200731 00697000
  777. B STARTIO GO TO THE I/O HANDLER @V200731 00698000
  778. SPACE 1 00699000
  779. GRAPHIC0 EQU * @V200731 00700000
  780. BAL R5,ATTNHAND GO CHECK FOR ATTENTION INTERRUPT @V200731 00701000
  781. SPACE 1 00702000
  782. NI PARM,X'FF'-PARMATT CLEAR THE ATTENTION REQUEST @VM08630 00703000
  783. LA R14,RET66MI RETURN ADDRESS FROM I/O HANDLER @V200731 00704000
  784. TM PARM,PARM327 IS THIS A 3066 DEVICE ? @VM08630 00705000
  785. BO GRF3270A NO, GO TO 3270 SUPPORT @VM08630 00706000
  786. STH R2,RD3066DA+6 STORE THE COUNT IN THE CCW @V200731 00707000
  787. STCM R4,B'0111',RD3066DA+1 GET ADDRESS OF READ BUFFER@V200731 00708000
  788. LA R1,RDMI3066 GET ADDRESS OF CHANNEL PROGRAM @V200731 00709000
  789. B STARTIO GO TO THE I/O HANDLER @V200731 00710000
  790. GRF3270A EQU * @V200731 00711000
  791. LR R1,R2 GET THE BYTE COUNT @V200731 00712000
  792. LA R1,6(R1) ADD 6 T0 THE TOTAL COUNT @V200731 00713000
  793. STH R1,RD3270DA+6 STORE THE COUNT IN THE CCW @V200731 00714000
  794. LA R1,BLNKLINE GET THE ADDRESS OF THE BUFFER @V200731 00715000
  795. STCM R1,7,RD3270DA+1 MOVE THE ADDRESS OF THE READ @V200731 00716000
  796. * BUFFER INTO THE CCW 00717000
  797. LA R1,RDMI3270 GET THE ADDRESS OF THE CHANNEL @V200731 00718000
  798. * PROGRAM 00719000
  799. B STARTIO GO TO I/I HANDLER @V200731 00720000
  800. SPACE 2 00721000
  801. RET66MI EQU * @V200731 00722000
  802. MVC CPXYSTAT(20),RUNLABEL CRT DISPLAY RUN STATUS @V200731 00723000
  803. LA R1,CRTWORD GET THE ADDRESS OF THE CHANNEL @V200731 00724000
  804. * PROGRAM 00725000
  805. LA R14,RETINPUT RETURN ADDRESS FROM I/O HANDLER @V200731 00726000
  806. TM PARM,PARM327 IS THIS A 3066 DEVICE ? @VM08630 00727000
  807. BO GRF3270B NO, GO TO 3270 SUPPORT @VM08630 00728000
  808. TM RDMIDATA+2,X'40' DID THE OPERATOR HIT THE @V200731 00729000
  809. * CANCEL KEY 00730000
  810. BO CANCEL1 YES, GO CLEAR SCREEN @V200731 00731000
  811. CLC RDMIDATA(2),SBAREAD DID THE CURSOR MOVE ? @V200731 00732000
  812. BNE STARTIO YES, GO WRITE STATUS @V200731 00733000
  813. OI PARM2,PARMNDA SET INDICATOR FOR NO DATA @VM08630 00734000
  814. B STARTIO GO WRITE OUT STATUS @V200731 00735000
  815. GRF3270B EQU * @V200731 00736000
  816. CLI BLNKLINE,X'6E' DID THE OPERATOR HIT THE CANCEL @V200731 00737000
  817. * KEY 00738000
  818. BE CANCEL1 YES, GO CLEAR SCREEN @V200731 00739000
  819. CLI BLNKLINE,X'6D' DID THE OPERATOR HIT THE CLEAR @V200731 00740000
  820. * KEY 00741000
  821. BE CANCEL1 YES, GO CLEAR SCREEN @V200731 00742000
  822. CLI BLNKLINE,X'6C' DID OPERATOR HIT PA1 KEY @V200731 00743000
  823. BE CANCEL1 YES, GO CLEAR SCREEN @V200731 00744000
  824. OI PARM2,PARMNDA SET INDICATOR FOR NO DATA @VM08630 00745000
  825. CLI BLNKLINE,X'01' DID OPERATOR HIT TEST REQ. ? @VM08630 00746000
  826. BE ENT3270 YES, GO DISPLAY STATUS @VM08630 00747000
  827. CLI BLNKLINE,X'E6' IS THE CARD READER ACTIVE ? @VM08630 00748000
  828. BE ENT3270 YES, GO WRITE STATUS @VM08630 00749000
  829. CLI BLNKLINE+6,X'00' IS DATA IN THE INPUT AREA ? @VM08630 00750000
  830. BNE DATA3270 YES, GO DISPLAY DATA @VM08630 00751000
  831. CLC BLNKLINE+1(2),ADDR5 DID THE CURSOR MOVE ? @V60A6B6 00752000
  832. BE ENT3270 NO, GO WRITE STATUS @VM08630 00753000
  833. DATA3270 EQU * @VM08630 00754000
  834. NI PARM2,X'FF'-PARMNDA CLEAR NO DATA INDICATOR @VM08630 00755000
  835. LR R5,R2 GET THE BYTE COUNT @V200731 00756000
  836. BCTR R5,R0 SUBTRACT ONE FROM COUNT (EX @V200731 00757000
  837. * INSTR.) 00758000
  838. EX R5,MOV3270 MOVE DATA INTO USER'S BUFFER @V200731 00759000
  839. ENT3270 EQU * @V200731 00760000
  840. LA R1,CRTWORD1 GET THE ADDRESS OF THE CHANNEL @V200731 00761000
  841. * PROGRAM 00762000
  842. B STARTIO GO ISSUE SIO @V200731 00763000
  843. SPACE 2 00764000
  844. ********************************************************************* 00765000
  845. MOV3270 MVC 0(0,R4),BLNKLINE+6 MOVE THE DATA INTO THE @V200731 00766000
  846. * USER'S BUFFER 00767000
  847. ********************************************************************* 00768000
  848. SPACE 2 00769000
  849. RETINPUT EQU * @V200731 00770000
  850. TM PARM2,PARMNDA IS NO DATA INDICATED ? @VM08630 00771000
  851. BZ WRT66 NO, GO DISPLAY INPUT DATA ON CRT @V200731 00772000
  852. RETWORD EQU * @V200731 00773000
  853. NI PARM,X'FF'-(PARMREA+PARMCLE+PARMNAUT+PARMATT) @VM08630 00774000
  854. * CLEAR INDICATORS 00775000
  855. NI PARM2,X'FF'-PARMNDA CLEAR NO DATA INDICATOR @VM08630 00776000
  856. LM R14,R5,GRAPHSAV RETURN TO ORIGINAL @V200731 00777000
  857. BR R14 CALLER @V200731 00778000
  858. ********************************************************************* 00779000
  859. EJECT 00779070
  860. *********************************************************************** 00779140
  861. * 00779210
  862. * WAITANY: ROUTINE WAITS FOR THE NEXT I/O INTERRUPT. ANY I/O 00779280
  863. * INTERRUPT, REGARDLESS OF WHICH DEVICE IT IS FROM, SATISFIES 00779350
  864. * THIS ROUTINE. 00779420
  865. * 00779490
  866. *********************************************************************** 00779560
  867. * 00779630
  868. * INPUTS: 00779700
  869. * R15 = ADDRESS OF AN IOB. (ANY IOB ASSOCIATED WITH ANY 00779770
  870. * DEVICE WILL DO; THIS ROUTINE MERELY WANTS SOME IOB 00779840
  871. * FLAGS TO MANIPULATE.) 00779910
  872. * R14 = ADDRESS TO BE RETURNED TO AFTER I/O INTERRUPT OCCURS. 00779980
  873. * IOBERROR = SHOULD NORMALLY CONTAIN 0. IF IT CONTAINS THE 00780050
  874. * ADDRESS OF AN ERROR ROUTINE, THE ERROR ROUTINE WILL 00780120
  875. * ALWAYS BE BRANCHED TO, EVEN WHEN THERE IS NO ERROR 00780190
  876. * STATUS IN THE CSW STORED BY THE INTERRUPT. 00780260
  877. * 00780330
  878. * OUTPUTS: 00780400
  879. * IOOPSW+2 = THE INTERRUPTION CODE (A HALFWORD) IN THE OLD I/O 00780470
  880. * PSW CONTAINS THE UNIT ADDRESS OF THE INTERRUPTING DVC. 00780540
  881. * IOBCSW = CONTENTS OF CSW STORED BY INTERRUPT. 00780610
  882. * SENSE = SENSE BYTES ARE ALWAYS READ INTO THIS AREA, EVEN WHEN 00780680
  883. * THE INTERRUPT DOES NOT SHOW ERROR STATUS IN THE CSW. 00780750
  884. * SENSECNT = HALFWORD CONTAINS NUMBER OF SENSE BYTES THAT WERE 00780820
  885. * ACTUALLY READ INTO 'SENSE' AREA. MAY NOT BE VALID IN 00780890
  886. * THE EVENT OF A CHANNEL ERROR. OTHERWISE, NUMBER IS 00780960
  887. * DETERMINED BY THE PARTICULAR DEVICE, UP TO THE LIMIT 00781030
  888. * IMPOSED BY THE LENGTH OF THE 'SENSE' AREA. 00781100
  889. * IOB = VARIOUS FIELDS OF THE IOB MAY BE MODIFIED. 00781170
  890. * R1 = CONTENTS DESTROYED. 00781240
  891. * R0, R2-R4, R14-R15 = PRESERVED. 00781310
  892. * R5-R13 = PRESERVED UNLESS ROUTINE DESIGNATED BY 'IOBERROR' 00781380
  893. * DESTROYS THEM. 00781450
  894. *********************************************************************** 00781520
  895. SPACE 00781590
  896. **CMNT** USING IOB,R15 00781660
  897. WAITANY OI IOBFLAGS,IOBFWANY INDICATES WAIT FOR ANY INT. @V56BDA8 00781730
  898. SPACE 3 00781800
  899. *********************************************************************** 00781870
  900. * 00781940
  901. * WAITDVC: ROUTINE WAITS FOR AN UNSOLICITED I/O INTERRUPT FROM A 00782010
  902. * PARTICULAR DEVICE. 00782080
  903. * 00782150
  904. *********************************************************************** 00782220
  905. * 00782290
  906. * INPUTS: 00782360
  907. * R15 = ADDRESS OF IOB. 00782430
  908. * R14 = ADDRESS TO BE RETURNED TO AFTER INTERRUPT IS RECEIVED 00782500
  909. * FROM SPECIFIED DEVICE. 00782570
  910. * R3 = LOW ORDER TWO BYTES CONTAIN UNIT ADDRESS OF DEVICE 00782640
  911. * THAT IS TO BE WAITED ON. 00782710
  912. * IOBERROR = SHOULD NORMALLY CONTAIN 0. BUT IT MAY CONTAIN THE 00782780
  913. * ADDRESS OF AN ERROR ROUTINE. IF IT CONTAINS THE 00782850
  914. * ADDRESS OF AN ERROR ROUTINE, THE ERROR ROUTINE IS 00782920
  915. * ONLY GIVEN CONTROL IF THE CSW FROM THE INTERRUPT 00782990
  916. * CONTAINS UC, UE, ATTN, OR ANYTHING IN THE CHANNEL 00783060
  917. * STATUS BYTE OTHER THAN 'INCORRECT LENGTH'. 00783130
  918. * (NOTE: THE INTERFACE WITH THE ERROR ROUTINE HERE IS 00783200
  919. * THE SAME AS DESCRIBED AT THE END OF THE STARTIO RTN.) 00783270
  920. * 00783340
  921. * OUTPUTS: 00783410
  922. * IOBCSW = CONTENTS OF CSW STORED BY THE INTERRUPT. 00783480
  923. * SENSE = SENSE BYTES ARE READ INTO THIS AREA IF IOBCSW SHOWS 00783550
  924. * UC, UE, ATTN, OR ANYTHING IN CHANNEL STATUS BYTE OTHER 00783620
  925. * THAN 'INCORRECT LENGTH'. 00783690
  926. * SENSECNT = HALFWORD CONTAINS NUMBER OF SENSE BYTES THAT WERE 00783760
  927. * ACTUALLY READ INTO 'SENSE' AREA. WILL BE 0 IF NO 00783830
  928. * ERROR. MAY NOT BE VALID AFTER CHANNEL ERROR. 00783900
  929. * OTHERWISE, NUMBER IS DETERMINED BY THE PARTICULAR 00783970
  930. * DEVICE TYPE, UP TO THE LIMIT IMPOSED BY THE LENGTH OF 00784040
  931. * THE 'SENSE' AREA. 00784110
  932. * IOB = VARIOUS FIELDS IN THE IOB MAY BE MODIFIED. 00784180
  933. * R1 = CONTENTS DESTROYED. 00784250
  934. * R0, R2-R4, R14-R15 = PRESERVED. 00784320
  935. * R5-R13 = PRESERVED UNLESS ROUTINE DESIGNATED BY 'IOBERROR' 00784390
  936. * DESTROYS THEM. 00784460
  937. * 00784530
  938. * NOTES: 00784600
  939. * (1) IN ORDER TO BE RECOGNIZED AS AN INTERRUPT THAT IS TO 00784670
  940. * BRING US OUT OF THE WAIT, THE INTERRUPT MUST BE FROM THE 00784740
  941. * SPECIFIED DEVICE AND MUST PROVIDE ONE OR MORE OF THE 00784810
  942. * FOLLOWING STATUS INDICATIONS IN THE CSW: DE, UC, UE, 00784880
  943. * ATTN, OR ANY CHANNEL STATUS EXCEPT INCORRECT LENGTH. 00784950
  944. * 00785020
  945. *********************************************************************** 00785090
  946. SPACE 00785160
  947. WAITDVC SR R1,R1 SIGNAL NO CHNL PROG TO START. @V56BDA8 00785230
  948. SPACE 3 00785300
  949. *********************************************************************** 00785370
  950. * 00785440
  951. * STARTIO: ROUTINE DOES SIO TO SPECIFIED CHANNEL PROGRAM, THEN WAITS 00785510
  952. * FOR COMPLETION BEFORE RETURNING. 00785580
  953. * 00785650
  954. *********************************************************************** 00785720
  955. * 00785790
  956. * INPUTS: 00785860
  957. * R15 = ADDRESS OF IOB. 00785930
  958. * R14 = ADDRESS TO BE RETURNED TO WHEN REQUESTED I/O OPERATION 00786000
  959. * IS COMPLETE. 00786070
  960. * R1 = POINTER TO CHANNEL PROGRAM TO BE EXECUTED. ACTUALLY, 00786140
  961. * THIS WILL USED AS THE CAW; H.O. BYTE IS PROTECT KEY. 00786210
  962. * R3 = LOW ORDER TWO BYTES CONTAIN UNIT ADDRESS OF DEVICE 00786280
  963. * TO BE STARTED. 00786350
  964. * IOBFDEW = BIT FLAG SPECIFYING WHETHER MUST WAIT FOR DE OR CAN 00786420
  965. * ACCEPT CE AS INDICATING COMPLETION OF THE OPERATION. 00786490
  966. * COMMONLY, CE IS USED. NOTE: ERROR CONDITIONS ALWAYS 00786560
  967. * SIGNAL COMPLETION, WITH OR WITHOUT CE OR DE. 00786630
  968. * IOBERROR = ADDRESS OF AN ERROR ROUTINE, OR ZERO. IF ZERO, 00786700
  969. * CONTROL IS ALWAYS RETURNED IMMEDIATELY UPON 00786770
  970. * COMPLETION TO THE LOCATION GIVEN BY R14. IF IOBERROR 00786840
  971. * HAS THE ADDRESS OF AN ERROR ROUTINE AND AN ERROR IS 00786910
  972. * DETECTED AT COMPLETION OF THE I/O OPERATION, THEN THE 00786980
  973. * ERROR ROUTINE IS GIVEN CONTROL. THE ERROR ROUTINE IS 00787050
  974. * ALSO GIVEN CONTROL (WITH INDICATORS SET) IF SIO FINDS 00787120
  975. * THE DEVICE 'NOT OPERATIONAL' (CC=3) OR 'NOT READY'. 00787190
  976. * (NOTE: THE ERROR ROUTINE INTERFACE IS DESCRIBED 00787260
  977. * FOLLOWING THE STARTIO ROUTINE CODE BELOW.) 00787330
  978. * 00787400
  979. * OUTPUTS (WITH ERROR ROUTINE AVAILABLE): 00787470
  980. * IOBFATAL = FLAG INDICATES SUCCESS OR FAILURE. IN THE EVENT 00787540
  981. * OF A NON-RECOVERABLE ERROR, THE ERROR ROUTINE SETS 00787610
  982. * THIS BEFORE EXITING. 00787680
  983. * IOB = VARIOUS FIELDS IN THE IOB MAY BE MODIFIED. 00787750
  984. * R0-R4, R14-R15 = PRESERVED. 00787820
  985. * R5-R13 = PRESERVED UNLESS ROUTINE DESIGNATED BY 'IOBERROR' 00787890
  986. * DESTROYS THEM. 00787960
  987. * 00788030
  988. * OUTPUTS (WITHOUT ERROR ROUTINE AVAILABLE): 00788100
  989. * IOBFCC3 = FLAG INDICATES SIO FOUND DEVICE 'NOT OPERATIONAL'; 00788170
  990. * THE I/O REQUEST WAS NOT EXECUTED. 00788240
  991. * IOBFNRDY = FLAG INDICATES SIO WAS REJECTED BY THE DEVICE 00788310
  992. * BECAUSE OF A 'NOT READY' CONDITION OR SOME OTHER 00788380
  993. * CONDITION SUCH AS 'EQUIPMT CHECK'. I/O NEVER STARTED. 00788450
  994. * IOBCSW = CONTENTS OF CSWS STORED BY THE REQUESTED I/O 00788520
  995. * OPERATION UP TO THE TIME OF COMPLETION (WHICH, RECALL, 00788590
  996. * IS NOT NECESSARILY DE). IF MORE THAN ONE CSW WAS 00788660
  997. * STORED PRIOR TO COMPLETION, THEY ARE 'OR'ED TOGETHER 00788730
  998. * IN IOBCSW. 00788800
  999. * SENSE = SENSE BYTES ARE READ INTO THIS AREA IF IOBCSW SHOWS 00788870
  1000. * UC, UE, ATTN, OR ANYTHING IN CHANNEL STATUS BYTE OTHER 00788940
  1001. * THAN 'INCORRECT LENGTH'. 00789010
  1002. * SENSECNT = HALFWORD CONTAINS NUMBER OF SENSE BYTES THAT WERE 00789080
  1003. * ACTUALLY READ INTO 'SENSE' AREA. WILL BE 0 IF NO 00789150
  1004. * ERROR. MAY NOT BE VALID AFTER CHANNEL ERROR. 00789220
  1005. * OTHERWISE, NUMBER IS DETERMINED BY THE PARTICULAR 00789290
  1006. * DEVICE TYPE, UP TO THE LIMIT IMPOSED BY LENGTH OF 00789360
  1007. * THE 'SENSE' AREA. 00789430
  1008. * IOB = VARIOUS FIELDS OF THE IOB MAY BE MODIFIED. 00789500
  1009. * R0-R15 = PRESERVED. 00789570
  1010. * 00789640
  1011. *********************************************************************** 00789710
  1012. SPACE 00789780
  1013. **CMNT** USING IOB,R15 00789850
  1014. STARTIO STM R14,R4,SIOSAVE SAVE USERREGS, RESTORE WHEN RETRN@V56BDA8 00789920
  1015. RETRYIO DS 0H ENTRY FOR RESTART, POSSIBLY WITH RCVRY CCWS.@V56BDA8 00789990
  1016. NI IOBFLAGS,255-IOBFSTRT-IOBFCC3-IOBFATAL-IOBFNRDY @V56BDA8 00790060
  1017. RESTART DS 0H ENTRY FOR RETRY IF SIO FAILS TO TAKE. @V56BDA8 00790130
  1018. ST R1,IOBRCAW KEEP ADDR OF LAST CHL PRG STARTD.@V56BDA8 00790200
  1019. ST R1,CAW SET UP CAW. @V56BDA8 00790270
  1020. XC CSW,CSW CLEAR CSW. @V56BDA8 00790340
  1021. XC IOBCSW,IOBCSW CLEAR IOB COPY OF CSW. @V56BDA8 00790410
  1022. LTR R1,R1 HAVE CHNL PRG TO START? @V56BDA8 00790480
  1023. BZ SIOCC0 MAKE BELIEVE WE STARTD SOMETHING,@V56BDA8 00790550
  1024. * THEN WAIT FOR UNSOLICITED INTERRUPT ON 00790620
  1025. * THIS DEVICE. 00790690
  1026. SIO 0(R3) @V56BDA8 00790760
  1027. BC 4,CSWSTORE CC=1; SIO STORED A CSW. @V56BDA8 00790830
  1028. BC 2,IOWAIT CC=2; CHNL BUSY, WAIT THEN RETRY.@V56BDA8 00790900
  1029. BC 1,NOTOPER CC=3; DVC OR CHNL NOT OPERATIONAL@V56BDA8 00790970
  1030. SIOCC0 OI IOBFLAGS,IOBFSTRT CC=0; INDICATE SIO 'TOOK'. @V56BDA8 00791040
  1031. IOWAIT LPSW ENABLAB WAIT WITH I/O INTERRUPTS ENABLED.@V56BDA8 00791110
  1032. SPACE 00791180
  1033. CSWSTORE STH R3,IOOPSW+2 MAKE LIKE INTERRUPT OF THIS DVC. @V56BDA8 00791250
  1034. TM CSW+4,BUSY DVC/CU BUSY OR INT. WAS PENDING? @V56BDA8 00791320
  1035. BZ CSWCE NEITHER. GO TEST FOR CE. @V56BDA8 00791390
  1036. TM CSW+4,255-BUSY-SM ANYTHING BESIDES BUSY+SM? @V56BDA8 00791460
  1037. BZ IOWAIT NO. DVC/CU BUSY. WAIT & RETRY. @V56BDA8 00791530
  1038. * 00791600
  1039. * FALL THRU INDICATES SIO CLEARED A PENDING INTERRUPT FROM THIS 00791670
  1040. * DEVICE; THE REQUESTED I/O OPERATION DID NOT GET STARTED. 00791740
  1041. * 00791810
  1042. B IOINT LOOK AT CLRD INT.; RESTART LATER.@V56BDA8 00791880
  1043. SPACE 00791950
  1044. CSWCE TM CSW+4,CE CE INDICATING IMMED. OPERATION? @V56BDA8 00792020
  1045. BZ NOTRDY NO. PERHAPS HAVE UC (DVC NOT @V56BDA8 00792090
  1046. * READY, ETC); TREAT AS ERROR. 00792160
  1047. * 00792230
  1048. * FALL THRU INDICATES AN IMMEDIATE OPERATION WAS STARTED. 00792300
  1049. * 00792370
  1050. OI IOBFLAGS,IOBFSTRT REQUESTED I/O WAS STARTED. @V56BDA8 00792440
  1051. LA R4,8(0,R1) POINT TO IMMEDIATE CCW + 8. @V56BDA8 00792510
  1052. ST R4,CSW MAKE CSW LOOK LIKE I/O INTERRUPT.@V56BDA8 00792580
  1053. SPACE 00792650
  1054. IOINT DS 0H THIS IS THE I/O INTERRUPT HANDLER@V56BDA8 00792720
  1055. TM IOBFLAGS,IOBFWANY WANT INT. FROM ANY OLD DVC? @V56BDA8 00792790
  1056. BO IOERRORA YES, TAKE WHATEVER COMES ALONG. @V56BDA8 00792860
  1057. TM CSW+5,X'BF' ANY CHANNEL ERROR? @V56BDA8 00792930
  1058. BNZ IOERROR YES, CHANNEL ERROR. @V56BDA8 00793000
  1059. TM CSW+4,UC+UE+ATTN UNUSUAL UNIT STATUS? @V56BDA8 00793070
  1060. BNZ IOERROR YES. ERROR ROUTINE MUST HANDLE. @V56BDA8 00793140
  1061. TM IOBFLAGS,IOBFSTRT INT. IS RESPONSE TO OUR SIO? @V56BDA8 00793210
  1062. BZ RESTART NO, SIO FAILED TO START. BUT AN @V56BDA8 00793280
  1063. * INTERRUPT HAS CLEARED, SO MAYBE CHNL, CU, 00793350
  1064. * & DVC ARE AVAILABLE NOW; TRY SIO AGAIN. 00793420
  1065. CH R3,IOOPSW+2 SIO 'TOOK'. IS THIS INT FROM IT?@V56BDA8 00793490
  1066. BNE IOWAIT NO, INT. IS FROM ANOTHER DVC. @V56BDA8 00793560
  1067. ORCSW OC IOBCSW,CSW COPY (MERGE) CSW INTO IOBCSW. @V56BDA8 00793630
  1068. TM CSW+4,CE+DE ANY ENDING STATUS? @V56BDA8 00793700
  1069. BZ IOWAIT NO,WAIT FOR END. (MAYBE GOT CUE?)@V56BDA8 00793770
  1070. **CMNT** TM IOBFLAGS,IOBFDEW REQUESTOR SAID WAIT UNTIL DE? @V56BDA8 00793840
  1071. **CMNT** BZ SIORET NO, EITHER CE OR DE WILL DO. @V56BDA8 00793910
  1072. **CMNT** TM CSW+4,DE HAVE DE YET? @V56BDA8 00793980
  1073. **CMNT** BZ IOWAIT NOT YET. WAIT FOR DE. @V56BDA8 00794050
  1074. SIORET TM IOBFLAGS,IOBFERP ERROR RTN WANTS CONTROL BACK? @V56BDA8 00794120
  1075. BO IOERROR YES. @V56BDA8 00794190
  1076. LM R14,R4,SIOSAVE RESTORE USER REGS. @V56BDA8 00794260
  1077. BR R14 RETURN TO CALLER OF 'STARTIO'. @V56BDA8 00794330
  1078. SPACE 00794400
  1079. IOERRORA LH R3,IOOPSW+2 MAKE LIKE WE WANTED THIS DVC ALL @V56BDA8 00794470
  1080. * ALONG. 00794540
  1081. NI IOBFLAGS,255-IOBFWANY RESET. ONLY WANT 1 INT. @V56BDA8 00794610
  1082. B IOERROR @V56BDA8 00794680
  1083. SPACE 00794750
  1084. NOTOPER OI IOBFLAGS,IOBFCC3+IOBFNRDY SET 'NOT OPER' AND @V56BDA8 00794820
  1085. * (TEMPORARILY) 'NOT READY'. 00794890
  1086. NOTRDY XI IOBFLAGS,IOBFNRDY IF FALL THRU FROM ABOVE, THIS@V56BDA8 00794960
  1087. * RESETS IOBFNRDY TO 0. IF ENTER HERE, 00795030
  1088. * IT SETS IOBFNRDY TO 1. 00795100
  1089. STH R3,IOOPSW+2 @V56BDA8 00795170
  1090. SPACE 00795240
  1091. IOERROR DS 0H ERROR (OR UNUSUAL) STATUS PRESENT@V56BDA8 00795310
  1092. CH R3,IOOPSW+2 IS INTERRUPT FROM OUR DVC? @V56BDA8 00795380
  1093. BNE WRONGDVC NO, DO NOT SAVE CSW. @V56BDA8 00795450
  1094. EX 0,ORCSW COPY (MERGE) CSW INTO IOBCSW @V56BDA8 00795520
  1095. * BEFORE SENSE READ DESTROYS CSW. 00795590
  1096. WRONGDVC DS 0H @V56BDA8 00795660
  1097. * 00795730
  1098. * IN EVERY CASE WE ATTEMPT TO READ SENSE DATA, EVEN IF UC WAS 00795800
  1099. * NOT PRESENTED. READING SENSE WON'T HURT AND MAY HELP: IN THE 00795870
  1100. * CASE OF CHANNEL CHECK, SIMULTANEOUS UC MIGHT HAVE BEEN LOST; 00795940
  1101. * IN CASE OF ATTN OR UE, RECOVERY ROUTINE MIGHT WANT TO EXAMINE 00796010
  1102. * SENSE. EVEN IF IT IS NOT OUR INTERRUPT, WE HAVE TO READ SENSE 00796080
  1103. * TO CLEAR 'CONTINGENT CONNECTION' THAT MIGHT OTHERWISE BLOCK 00796150
  1104. * US AT THE CONTROL UNIT. 00796220
  1105. * 00796290
  1106. XC SENSE,SENSE ZERO AREA FOR SENSE DATA. @V56BDA8 00796360
  1107. LA R4,SENSECCW CCW FOR READING SENSE DATA. @V56BDA8 00796430
  1108. ST R4,CAW SET UP CAW. @V56BDA8 00796500
  1109. LH R4,IOOPSW+2 ADDR OF INTERRUPTING DEVICE. @V56BDA8 00796570
  1110. **CMNT** STCM R4,12,SENSCNT USE HIGH ORDER 0'S TO 0 SENSE CNT@V56BDA8 00796640
  1111. SENSESIO SIO 0(R4) START SENSE READ. @V56BDA8 00796710
  1112. BC 4+2,SENSESIO RETRY WHEN CC=2 OR CC=1. 2 MEANS@V56BDA8 00796780
  1113. * MPX CHNL IS WORKING MOMENTARILY WITH 00796850
  1114. * ANOTHER SUBCHNL (WE KNOW THERE CAN BE NO 00796920
  1115. * ACTIVITY OR INTERRUPT PENDING IN OUR 00796990
  1116. * SUBCHNL). 1 MEANS PENDING DE OR OTHER 00797060
  1117. * INTERRUPT WAS CLEARED FROM THE DVC BY 00797130
  1118. * SIO, SO SENSE READ NEVER STARTED; RETRY. 00797200
  1119. **CMNT** BC 1,ENDSENSE CC=3; SENSE NOT READ, KEEP 0 CNT.@V56BDA8 00797270
  1120. TIO TIO 0(R4) CLEAR ENDING INTERRUPT FROM SENSE@V56BDA8 00797340
  1121. BC 2,TIO LOOP IF CHANNEL STILL BUSY. @V56BDA8 00797410
  1122. **CMNT** LH R4,SENSECCW+6 CALCULATE NUMBER OF SENSE BYTES. @V56BDA8 00797480
  1123. **CMNT** SH R4,CSW+6 @V56BDA8 00797550
  1124. **CMNT** STH R4,SENSCNT @V56BDA8 00797620
  1125. ENDSENSE DS 0H @V56BDA8 00797690
  1126. CH R3,IOOPSW+2 WE MAY HAVE GOTTEN AN UNSOLICITED@V56BDA8 00797760
  1127. * ERROR FROM ANOTHER DVC. 00797830
  1128. BNE IOWAIT IT'S NOT OUR DEVICE. @V56BDA8 00797900
  1129. TM IOBFLAGS,IOBFSTRT+IOBFCC3+IOBFNRDY IF NONE OF @V56BDA8 00797970
  1130. * THESE FLAGS IS SET, THEN SIO WAS BLOCKED 00798040
  1131. * BY A PENDING INTERRUPT. 00798110
  1132. BZ RESTART AN UNKNOWN INTERRUPT WAS CLEARED @V56BDA8 00798180
  1133. * FROM OUR DEVICE BY SIO. WE DISREGARD IT 00798250
  1134. * AND TRY AGAIN TO START. 00798320
  1135. * 00798390
  1136. * FALL THRU MEANS SIO WAS NOT BLOCKED BY PENDING INTERRUPT. SO 00798460
  1137. * I/O WAS EITHER STARTED AND ENDED IN AN ERROR OR WAS BLOCKED 00798530
  1138. * BY DVC 'NOT OPERATIONAL' OR 'NOT READY'. ONE OF THE 3 FLAGS 00798600
  1139. * IOBFSTRT, IOBFCC3, AND IOBFNRDY IS SET AND TELLS WHICH IT WAS. 00798670
  1140. * 00798740
  1141. ICM R4,15,IOBERROR HAVE ERROR RTN FOR THIS REQUEST? @V56BDA8 00798810
  1142. BZ SIORET NO. RETURN IOBCSW, SENSE, ETC. @V56BDA8 00798880
  1143. LH R14,IOBERCNT COUNT OF ERROR RETRIES. @V56BDA8 00798950
  1144. LA R14,1(0,R14) INCREMENT COUNT. @V56BDA8 00799020
  1145. TM IOBFLAGS,IOBFERP IS THIS AN INITIAL ERROR? @V56BDA8 00799090
  1146. BO HADERP NO, THIS WAS A RETRY. @V56BDA8 00799160
  1147. OI IOBFLAGS,IOBFERP ERROR RCVRY IN PROGRESS NOW. @V56BDA8 00799230
  1148. SR R14,R14 RETRY COUNT IS 0 FOR 1ST TIME. @V56BDA8 00799300
  1149. HADERP STH R14,IOBERCNT INCREMENTED (OR 0'ED) RETRY CNT. @V56BDA8 00799370
  1150. BR R4 GO TO ERROR RECOVERY ROUTINE. @V56BDA8 00799440
  1151. **CMNT** DROP R15 @V56BDA8 00799510
  1152. SPACE 3 00799580
  1153. *********************************************************************** 00799650
  1154. * 00799720
  1155. * ERROR ROUTINE INTERFACE: 00799790
  1156. * 00799860
  1157. *********************************************************************** 00799930
  1158. * 00800000
  1159. * THE ADDRESS OF AN ERROR ROUTINE MAY BE SPECIFIED IN 'IOBERROR' 00800070
  1160. * WHEN STARTIO IS CALLED. USUALLY THE ERROR ROUTINE WILL 00800140
  1161. * PROVIDE DEVICE DEPENDENT ERROR RECOVERY. WHEN THE ERROR 00800210
  1162. * ROUTINE GETS CONTROL THE IOBFCC3 AND IOBFNRDY FLAGS MAY 00800280
  1163. * BE TESTED FIRST. IF NEITHER OF THESE TWO FLAGS IS SET, 00800350
  1164. * THEN THE I/O REQUEST DEFINITELY DID GET STARTED. 00800420
  1165. * AFTER THE ERROR ROUTINE ANALYZES THE ERROR, IT RETURNS 00800490
  1166. * CONTROL TO THE STARTIO ROUTINE IN ONE OF TWO WAYS: 00800560
  1167. * (1) IT BRANCHES TO THE 'RETRYIO' LABEL OF STARTIO TO RETRY 00800630
  1168. * EITHER THE SAME CHANNEL PROGRAM OR A RECOVERY CHNL PROG. 00800700
  1169. * (2) IT BRANCHES TO THE 'SIORET' LABEL OF STARTIO TO RETURN 00800770
  1170. * TO THE CALLER OF STARTIO AFTER THE FINAL DISPOSITION OF 00800840
  1171. * THE ERROR HAS BEEN DECIDED (ERROR CORRECTED OR ERROR 00800910
  1172. * IS PERMANENT). 00800980
  1173. * WHEN THE ERROR ROUTINE RECEIVES CONTROL THE IOBFERP FLAG IS 00801050
  1174. * ALREADY SET, AND UNLESS THE ERROR ROUTINE UNSETS IT, THE ERROR 00801120
  1175. * ROUTINE WILL KEEP GETTING CONTROL BACK AFTER EACH BRANCH TO 00801190
  1176. * 'RETRYIO'. (AT COMPLETION OF THE RETRY CHANNEL PROGRAM.) 00801260
  1177. * WHEN THE ERROR ROUTINE RECEIVES CONTROL INITIALLY, THE RETRY 00801330
  1178. * COUNTER (IOBERCNT) IS ZERO AND AFTER EACH RETRY IT IS 00801400
  1179. * AUTOMATICALLY INCREMENTED BY ONE. 00801470
  1180. * 00801540
  1181. * IF THE ERROR ROUTINE UNSETS THE IOBFERP FLAG, THEN THE 00801610
  1182. * ERROR ROUTINE GETS CONTROL BACK AFTER A RETRY ONLY IF THE 00801680
  1183. * RETRY CHANNEL PROGRAM ENDS WITH ANOTHER ERROR. AND IOBERCNT 00801750
  1184. * AUTOMATICALLY STARTS AT ZERO AGAIN. IF THE RETRY CHANNEL 00801820
  1185. * PROGRAM RUNS SUCCESSFULLY (AFTER THE ERROR ROUTINE HAS 00801890
  1186. * UNSET IOBFERP), CONTROL WILL RETURN TO THE CALLER 00801960
  1187. * OF STARTIO. (NOTE: SOONER OR LATER THE ERROR ROUTINE MUST 00802030
  1188. * UNSET THE IOBFERP FLAG; IT IS NOT PERMITTED TO BRANCH TO 00802100
  1189. * SIORET WITH THE FLAG STILL SET.) 00802170
  1190. * 00802240
  1191. * WHEN BRANCHING TO 'RETRYIO', R15 AND R3 MUST CONTAIN THE 00802310
  1192. * SAME VALUES AS WHEN STARTIO WAS ENTERED AND R1 CONTAINS THE 00802380
  1193. * ADDRESS (CAW) OF THE NEW CHANNEL PROGRAM. OR, TO WAIT FOR 00802450
  1194. * AN UNSOLICITED INTERRUPT FROM THIS DEVICE (FOR EXAMPLE, AFTER 00802520
  1195. * THE ERROR ROUTINE DETECTED 'INTERVENTION REQUIRED'), THE ERROR 00802590
  1196. * ROUTINE CAN BRANCH TO 'RETRYIO' WITH 0 IN R1, INDICATING NO 00802660
  1197. * CHANNEL PROGRAM. SUBSEQUENTLY THE UNSOLICITED DE INTERRUPT 00802730
  1198. * WILL CAUSE CONTROL TO RETURN TO THE ERROR ROUTINE (ASSUMING 00802800
  1199. * THE IOBFERP FLAG IS STILL SET). 00802870
  1200. * 00802940
  1201. * WHEN CONTROL RETURNS TO THE ERROR ROUTINE FROM 'RETRYIO', 00803010
  1202. * THE DATA CONCERNING THE ORIGINAL ERROR HAS BEEN LOST. 00803080
  1203. * IOBCSW, IOBRCAW, AND SENSE DATA AND COUNT REFLECT THE 00803150
  1204. * EXECUTION OF THE LAST CHANNEL PROGRAM. 00803220
  1205. * 00803290
  1206. * STARTIO IS RECURSIVE IN A LIMITED WAY AND CAN BE CALLED BY 00803360
  1207. * THE ERROR ROUTINE TO WRITE ERROR MESSAGES (AS LONG AS THE IOB 00803430
  1208. * THAT IS USED IS NOT THE ONE THAT HAD THE ERROR). BUT CERTAIN 00803500
  1209. * FIELDS AND REGISTERS MUST BE SAVED AND RESTORED IF STARTIO 00803570
  1210. * IS TO BE CALLED RECURSIVELY, SO THE FOLLOWING CALLING 00803640
  1211. * SEQUENCE IS SUGGESTED: 00803710
  1212. * MVC SIOSAVE2,SIOSAVE KEEP CONTENT OF STARTIO SAVEAREA 00803780
  1213. * LA R15,BBBBBB IOB OF DVC WHERE MSG IS TO GO. 00803850
  1214. * LA R3,AAAAAA UNIT ADDR OF DVC. 00803920
  1215. * LA R1,CCCCCC ADDR OF CHNL PROG. 00803990
  1216. * BAL R14,STARTIO GO WRITE MSG, THEN RETURN HERE. 00804060
  1217. * LM R14,R4,SIOSAVE2 RESTORE REGISTERS. 00804130
  1218. * STM R14,R4,SIOSAVE AND RESTORE STARTIO SAVE AREA. 00804200
  1219. * IN ADDITION, THE SENSE DATA AND SENSE COUNT WILL HAVE TO BE 00804270
  1220. * SAVED AND RESTORED IF THE ERROR ROUTINE WILL WANT TO LOOK AT 00804340
  1221. * THEM AGAIN AFTER PRINTING THE ERROR MESSAGE. 00804410
  1222. * 00804480
  1223. * INPUTS: 00804550
  1224. * IOBFERP = ALWAYS 1, INDICATING ERROR RECOVERY NOW IN PROGRESS. 00804620
  1225. * IOBFCC3 = IF SET, THEN SIO FOUND THE DVC 'NOT OPERATIONAL', 00804690
  1226. * I.E., SIO GAVE CC=3. 00804760
  1227. * IOBFNRDY = IF SET, SIO WAS REJECTED BY THE DEVICE. PROBABLY 00804830
  1228. * THE DVC WAS 'NOT READY', BUT COULD BE OTHER REASONS 00804900
  1229. * SUCH AS 'EQUIPMT CHK'. IOBCSW & SENSE GIVE DETAILS. 00804970
  1230. * (NOTE: CHNL PROG DID START IF IOBFNRDY & IOBFCC3 =0) 00805040
  1231. * IOBERCNT = RETRY COUNT. CONTAINS 0 WHEN CONTROL IS RECEIVED 00805110
  1232. * HERE ON AN INITIAL ERROR. INCREMENTED BY ONE 00805180
  1233. * AUTOMATICALLY WITH EACH RETRY THEREAFTER. BUT RESET 00805250
  1234. * TO 0 AUTOMATICALLY AFTER A RETRY WITH THE IOBFERP 00805320
  1235. * FLAG TURNED OFF. 00805390
  1236. * IOBCSW = CONTENTS OF CSWS STORED BY THE REQUESTED I/O 00805460
  1237. * OPERATION UP TO THE TIME OF COMPLETION. IF MORE 00805530
  1238. * THAN ONE CSW WAS STORED, THEY ARE 'OR'ED TOGETHER. 00805600
  1239. * SENSE = CONTAINS SENSE DATA. SENSE DATA IS ALWAYS READ JUST 00805670
  1240. * BEFORE AN ERROR ROUTINE IS CALLED, EVEN WHEN THERE 00805740
  1241. * IS NO ERROR STATUS IN THE CSW. 00805810
  1242. * SENSCNT = HALFWORD CONTAINS NUMBER OF SENSE BYTES THAT WERE 00805880
  1243. * ACTUALLY READ INTO 'SENSE' AREA. MAY NOT BE VALID 00805950
  1244. * IN THE EVENT OF A CHANNEL ERROR. OTHERWISE, NUMBER 00806020
  1245. * IS DETERMINED BY THE PARTICULAR DEVICE TYPE, UP TO 00806090
  1246. * THE LIMIT IMPOSED BY LENGTH OF THE 'SENSE' AREA. 00806160
  1247. * IOBRCAW = ADDRESS (CAW) OF THE CHANNEL PROGRAM OF THE LAST 00806230
  1248. * I/O REQUEST OR RETRY. 00806300
  1249. * R3 = UNIT ADDRESS OF THE DEVICE. 00806370
  1250. * R15 = IOB ADDRESS. 00806440
  1251. * R4 = WORK REGISTER. INITIALLY CONTAINS ADDRESS OF THE 00806510
  1252. * ERROR ROUTINE AND COULD SERVE AS A BASE REGISTER 00806580
  1253. * INSTEAD OF A WORK REGISTER. 00806650
  1254. * R0-R2,R14 = WORK REGISTERS. CONTENTS ARE UNDEFINED. 00806720
  1255. * R5-R13 = MUST BE PRESERVED FOR CALLER OF STARTIO. 00806790
  1256. * 00806860
  1257. * OUTPUTS: 00806930
  1258. * IOBFATAL = SET TO 1 MEANS ERROR WAS PERMANENT, RECOVERY WAS 00807000
  1259. * NOT POSSIBLE. 0 MEANS REQUESTED I/O OPERATION WAS 00807070
  1260. * COMPLETED SUCCESSFULLY. 00807140
  1261. * IOBFERP = SET TO 1 MEANS ERROR RECOVERY STILL IN PROGRESS; 00807210
  1262. * ERROR ROUTINE IS TO GET CONTROL BACK AFTER RETRY 00807280
  1263. * EVEN IF SUCCESSFUL. 0 MEANS ERROR ROUTINE GETS 00807350
  1264. * CONTROL ONLY IF THE RETRY FAILS. MUST BE ZEROED IF 00807420
  1265. * BRANCHING TO 'SIORET'. 00807490
  1266. * R1 = IF BRANCHING TO 'RETRYIO', THEN R1 CONTAINS ADDRESS 00807560
  1267. * (CAW) OF A RETRY CHANNEL PROGRAM. OR R1 CAN CONTAIN 00807630
  1268. * 0 TO WAIT FOR AN UNSOLICITED INTERRUPT. 00807700
  1269. * R3 = UNCHANGED. (UNIT ADDRESS OF DEVICE.) 00807770
  1270. * R15 = UNCHANGED. (ADDRESS OF IOB.) 00807840
  1271. * R0,R2,R4,R14 = GARBAGE. (WORK REGISTERS.) 00807910
  1272. * R5-R13 = UNCHANGED. (SHOULD BE PRESERVED FOR THE BENEFIT OF 00807980
  1273. * THE CALLER OF STARTIO.) 00808050
  1274. * IOB = CONTENTS, EXCEPT FOR IOBFATAL AND IOBFERP, CAN BE 00808120
  1275. * REGARDED AS UNDEFINED. 00808190
  1276. * 00808260
  1277. *********************************************************************** 00808330
  1278. EJECT 00808400
  1279. *********************************************************************** 00808470
  1280. * 00808540
  1281. * ERRDASD: DASD I/O ERROR RECOVERY ROUTINE 00808610
  1282. * (ITS INTERFACE IS AS DESCRIBED ABOVE.) 00808680
  1283. * 00808750
  1284. *********************************************************************** 00808820
  1285. ERRDASD OI IOBFLAGS,IOBFATAL LOCAL USE: ASSUME RETRY FAILED@V56BDA8 00808890
  1286. LH R4,IOBERCNT RETRY COUNT. @V56BDA8 00808960
  1287. LTR R4,R4 IS IT INITIAL ERROR (0 RETRIES)? @V56BDA8 00809030
  1288. BZ DASINIT YES, INITIAL ERROR. @V56BDA8 00809100
  1289. TM IOBCSW+5,X'FF' RETRY COMPLETED SUCCESSFULLY? @V56BDA8 00809170
  1290. BNZ DASRFAIL NO. CHANNEL ERROR ON RETRY. @V56BDA8 00809240
  1291. TM IOBCSW+4,255-CE-CUE-DE RETRY WAS SUCCESSFUL? @V56BDA8 00809310
  1292. BNZ DASRFAIL NO. UNUSUAL UNIT STATUS? @V56BDA8 00809380
  1293. NI IOBFLAGS,255-IOBFATAL LOCAL USE: RETRY SUCCEEDED@V56BDA8 00809450
  1294. DASRFAIL DS 0H @V56BDA8 00809520
  1295. ICM R4,15,CONTINAD HAVE A CONTINUATION POINT TO @V56BDA8 00809590
  1296. * PICK UP AT FROM PREVIOUS RETRY? @V56BDA8 00809660
  1297. BCR 7,R4 IF SO, GO THERE NOW. @V56BDA8 00809730
  1298. TM IOBFLAGS,IOBFATAL DID WE DECIDE RETRY SUCCEEDED?@V56BDA8 00809800
  1299. BZ DASXGOOD YES, WE HAVE RECOVERED. @V56BDA8 00809870
  1300. DASINIT XC CONTINAD,CONTINAD ASSUME WE WILL HAVE NO @V56BDA8 00809940
  1301. * CONTINUATION POINT TO PICK UP AT ON 00810010
  1302. * NEXT RETRY. 00810080
  1303. SPACE 00810150
  1304. * DETERMINE IF THE ERROR WAS ONE THAT WE HAVE SPECIAL CODE 00810220
  1305. * TO HANDLE. 00810290
  1306. TM IOBCSW+4,UC IS IT UNIT CHECK? @V56BDA8 00810360
  1307. BZ DASXSAME NO. RETRY SAME CHNL PROGRAM. @V56BDA8 00810430
  1308. TM SENSE,X'40' IS IT INTERVENTION REQUIRED? @V56BDA8 00810500
  1309. BO DASINTQ YES, GO HANDLE. @V56BDA8 00810570
  1310. TM SENSE,X'01' SEEK CHECK? @V56BDA8 00810640
  1311. BO DASEEKCH YES, GO HANDLE. @V56BDA8 00810710
  1312. TM SENSE,X'02' TRACK CONDITION CHECK? @V56BDA8 00810780
  1313. BO DASTRK YES, GO HANDLE. @V56BDA8 00810850
  1314. * 00810920
  1315. * FALL THRU MEANS WE HAVE NO SPECIAL CODE FOR THIS PARTICULAR 00810990
  1316. * ERROR TYPE. SO JUST RETRY THE CHANNEL PROGRAM AS IS. 00811060
  1317. * 00811130
  1318. DASXSAME L R1,IOBRCAW RETRY SAME CHANNEL PROGRAM AGAIN.@V56BDA8 00811200
  1319. DASRETRY CLC IOBERCNT,=H'20' RETRY LIMIT EXCEEDED? @V56BDA8 00811270
  1320. BH DASXBAD YES. TREAT ERROR AS PERMANENT. @V56BDA8 00811340
  1321. B RETRYIO GO RETRY. @V56BDA8 00811410
  1322. SPACE 3 00811480
  1323. DASXGOOD NI IOBFLAGS,255-IOBFATAL INDICATE WE RECOVERED. @V56BDA8 00811550
  1324. DASXBAD NI IOBFLAGS,255-IOBFERP INDICATE END OF ERP. @V56BDA8 00811620
  1325. B SIORET RETURN TO 'STARTIO' ROUTINE. @V56BDA8 00811690
  1326. SPACE 3 00811760
  1327. DASTRK DS 0H HANDLES TRACK CONDITION CHECKS. @V56BDA8 00811830
  1328. * 00811900
  1329. * MUST FIRST DETERMINE CCHH OF LAST SEEK. 00811970
  1330. * 00812040
  1331. L R4,IOBRCAW ADDR OF LAST CHNL PROGRAM. @V56BDA8 00812110
  1332. LA R1,2 COUNT FOR BCT INSTRUCTION. @V56BDA8 00812180
  1333. DASEEKLP CLI 0(R4),X'07' IS FIRST CCW THE SEEK? @V56BDA8 00812250
  1334. BE DASFNDSK YES. IT POINTS TO CCHH. @V56BDA8 00812320
  1335. CLI 0(R4),RCAL MAYBE RECALIBRATE WAS APPENDED? @V56BDA8 00812390
  1336. BNE DASXBAD STRANGE CHNL PROG. GIVE UP. @V56BDA8 00812460
  1337. CLI 8(R4),TIC RECALIBRATE FOLLOWED BY TIC? @V56BDA8 00812530
  1338. BNE DASXBAD STRANGE CHNL PROG. GIVE UP. @V56BDA8 00812600
  1339. L R4,8(0,R4) TIC SHOULD POINT TO SEEK. @V56BDA8 00812670
  1340. BCT R1,DASEEKLP @V56BDA8 00812740
  1341. B DASXBAD STRANGE CHNL PROG. GIVE UP. @V56BDA8 00812810
  1342. SPACE 00812880
  1343. DASFNDSK L R4,0(0,R4) ADDR IN SEEK PTS TO BBCCHH. @V56BDA8 00812950
  1344. MVC DASCCHH1,2(R4) SAVE CCHH OF BAD TRACK. @V56BDA8 00813020
  1345. STCM R4,7,DASHAR0+1 MAKE RCVRY SEEK POINT TO BBCCHH.V56BDA8 00813090
  1346. LA R1,DASHAR0 ADDR OF RCVRY CCWS TO READ HA & @V56BDA8 00813160
  1347. * R0 OF THE DEFECTIVE TRACK. 00813230
  1348. LA R4,DASTRK2 LOCATION TO GET CONTROL... @V56BDA8 00813300
  1349. ST R4,CONTINAD ...AFTER RETRY COMPLETES. @V56BDA8 00813370
  1350. MVC DASFCCW,IOBCSW SAVE ADDR FIELD OF CSW (POINTS @V56BDA8 00813440
  1351. * TO FAILED CCW + 8). 00813510
  1352. B RETRYIO GO RUN RECOVERY CCWS. @V56BDA8 00813580
  1353. SPACE 00813650
  1354. DASTRK2 TM IOBFLAGS,IOBFATAL RECOVERY CCWS RAN OKAY? @V56BDA8 00813720
  1355. BO DASXBAD NO. TREAT AS FATAL. @V56BDA8 00813790
  1356. NI DASHAFLG,X'03' VALIDITY CHECK HA FLAG BYTE. @V56BDA8 00813860
  1357. CLI DASHAFLG,X'02' SHOULD BE 'DEFECTIVE' BIT ONLY. @V56BDA8 00813930
  1358. BNE DASXBAD INVALID. GIVE UP. @V56BDA8 00814000
  1359. CLC DASCCHH1,DASCCHH2 R0 SHOULD NOT POINT TO SELF. @V56BDA8 00814070
  1360. BE DASXBAD INVALID. (NO ALT.) GIVE UP. @V56BDA8 00814140
  1361. L R4,DASFCCW ADDR OF FAILED CCW + 8 (OF THE @V56BDA8 00814210
  1362. * ORIGINAL CHANNEL PROGRAM). 00814280
  1363. SH R4,=H'8' BACK UP TO FAILED CCW. @V56BDA8 00814350
  1364. STCM R4,7,DASALTIC+1 RESTART TIC PTS TO FAILED CCW. @V56BDA8 00814420
  1365. LA R1,DASALTSK RESTART CCWS SEEK TO ALT TRK, @V56BDA8 00814490
  1366. * THEN TIC TO FAILED CCW. 00814560
  1367. NI IOBFLAGS,255-IOBFERP RESTART AS IF THIS IS A @V56BDA8 00814630
  1368. * TOTALLY NEW CHNL PROG; RETRY COUNT 00814700
  1369. * WILL START FROM 0 AGAIN. 00814770
  1370. B RETRYIO GO RESTART. @V56BDA8 00814840
  1371. SPACE 00814910
  1372. DASEEKCH DS 0H HANDLES SEEK CHECKS. @V56BDA8 00814980
  1373. LA R1,DASRECAL WE'LL CHAIN A RECALIB. IN FRONT. @V56BDA8 00815050
  1374. C R1,IOBRCAW ...PROVIDED WE DIDN'T LAST TIME. @V56BDA8 00815120
  1375. BE DASXSAME IT'S THERE ALREADY (AND CHAINING @V56BDA8 00815190
  1376. * IT IN AGAIN WOULD CAUSE A CHNL PRG LOOP). 00815260
  1377. MVC DASRETIC+1(3),IOBRCAW+1 TIC TO FAILED CHNL PRG.@V56BDA8 00815330
  1378. B DASRETRY GO RETRY. @V56BDA8 00815400
  1379. SPACE 00815470
  1380. DASINTQ DS 0H HANDLES INTERVENTION REQUIRED. @V56BDA8 00815540
  1381. MVC DASINTSV,IOBRCAW SAVE ADDR OF FAILED CHNL PRG. @V56BDA8 00815610
  1382. * 00815680
  1383. * SHOULD ISSUE ERROR MSG AT THIS POINT, BUT IT'S TOO MUCH 00815750
  1384. * TROUBLE. JUST HOPE THE USER NOTICES THE RESIDENCE DASD DEVICE 00815820
  1385. * IS 'NOT READY'. IF HE READIES IT, WE WILL WAKE UP FROM THE 00815890
  1386. * WAIT (BELOW) AND RECOVER SUCCESSFULLY. 00815960
  1387. * 00816030
  1388. * NOW WAIT FOR DE INTERRUPT INDICATING DEVICE HAS BEEN READIED. 00816100
  1389. SR R1,R1 INDICATE NO CHNL PRG, JUST WAIT. @V56BDA8 00816170
  1390. LA R4,DASINTQ2 LOCATION TO GET CONTROL... @V56BDA8 00816240
  1391. ST R4,CONTINAD ...AFTER INTERRUPT ARRIVES. @V56BDA8 00816310
  1392. B RETRYIO WAIT FOR INTERRUPT FROM THE @V56BDA8 00816380
  1393. * DEVICE DESIGNATED BY R3. @V56BDA8 00816450
  1394. SPACE 00816520
  1395. DASINTQ2 L R1,DASINTSV ADDR OF ORIG CHNL PRG; RETRY IT. @V56BDA8 00816590
  1396. NI IOBFLAGS,255-IOBFERP RESTART AS IF IT'S A @V56BDA8 00816660
  1397. * TOTALLY NEW CHNL PROG. (0 RETRIES) 00816730
  1398. B RETRYIO GO RESTART. @V56BDA8 00816800
  1399. SPACE 3 00816870
  1400. **************** DATA AREA FOR DASD ERROR RECOVERY RTN **************** 00816940
  1401. DASHAR0 CCW X'07',*-*,CC,6 SEEK TO DEFECTIVE TRACK.@V56BDA8 00817010
  1402. CCW X'1A',DASHAFLG,CC+SILI,1 READ FLAG BYTE OF HA. @V56BDA8 00817080
  1403. CCW X'16',DASCCHH2,SILI,4 READ COUNT OF R0. @V56BDA8 00817150
  1404. DASALTSK CCW X'07',DASBB2,CC,6 SEEK TO ALTERNATE TRACK.@V56BDA8 00817220
  1405. DASALTIC CCW TIC,*-*,0,0 TO INTERRUPTED CHNL PROG@V56BDA8 00817290
  1406. DASRECAL CCW RCAL,0,CC+SILI,1 RCVRY CCWS FOR SEEK CHK.@V56BDA8 00817360
  1407. DASRETIC CCW TIC,*-*,0,0 TIC TO FAILING CHNL PRG.@V56BDA8 00817430
  1408. DASCCHH1 DS F SAVES CCHH ADDR OF DEF. TRACK. @V56BDA8 00817500
  1409. DASBB2 DC X'0000' @V56BDA8 00817570
  1410. DASCCHH2 DS XL4 @V56BDA8 00817640
  1411. DASHAFLG DS XL1 @V56BDA8 00817710
  1412. DASFCCW DS A ADDR OF FAILED CCW+8 (FROM CSW). @V56BDA8 00817780
  1413. ORG DASFCCW DOUBLE UP & SAVE 4 BYTES. @V56BDA8 00817850
  1414. DASINTSV DS A ADDR OF ORIGINAL CHNL PROG. @V56BDA8 00817920
  1415. CONTINAD DS A CONTAINS EITHER 0 OR THE ADDR OF @V56BDA8 00817990
  1416. * A POINT IN THIS ERROR RECOVERY ROUTINE 00818060
  1417. * WHERE WE WANT PROCESSING TO RESUME AFTER 00818130
  1418. * A RETRY. 00818200
  1419. RCAL EQU X'13' SYMBOL FOR RECALIBRATE CCW OPCODE@V56BDA8 00818270
  1420. TIC EQU X'08' SYMBOL FOR TIC CCW OPCODE. @V56BDA8 00818340
  1421. EJECT 00818410
  1422. ********************************************************************** 00819000
  1423. * 00819500
  1424. * ERRHAND: ERROR HANDLER FOR NON-DASD I/O ERROR. 00820000
  1425. * 00820500
  1426. ********************************************************************** 00821000
  1427. SPACE 1 00822000
  1428. ERRHAND EQU * @VM08630 00823000
  1429. NI IOBFLAGS,255-IOBFERP ERROR RTN IS RESPONSIBLE @V56BDA8 00823500
  1430. * FOR TURNING THIS OFF. 00824000
  1431. TM IOBCSW+4,ATTN IS THIS AN ATTENTION INTERRUPT? @V56BDA8 00824500
  1432. BZ CONUNCK NO, GO CHECK FOR UNIT CHECK @VM08630 00825000
  1433. TM PARM,PARMGRP IS THIS A GRAPHIC DEVICE ? @VM08630 00826000
  1434. BZ CONUNCK NO, GO CHECK FOR UNIT EXECPTION @VM08630 00827000
  1435. TM PARM,PARMATT IS THIS AN ATTENTION REQUEST ? @VM08630 00828000
  1436. BO SIORET YES, RETURN TO IN LINE CODE. @V56BDA8 00829000
  1437. CONUNCK EQU * @VM08630 00830000
  1438. L R1,IOBRCAW RETRY SAME CHANNEL PROGRAM. @V56BDA8 00830700
  1439. TM IOBCSW+4,UE IS THIS A UNIT EXCEPTION? @V56BDA8 00831400
  1440. BO RETRYIO YES, RESTART DEVICE. @V56BDA8 00832100
  1441. DIEHERE EQU * @VM08630 00833000
  1442. LPSW BADINPUT INPUT TO SYSTEM INCORRECT @VM08630 00834000
  1443. ********************************************************************* 00835000
  1444. ******************************************************************** 00836000
  1445. SPACE 2 00837000
  1446. ********************************************************************* 00838000
  1447. ATTNHAND EQU * @V200731 00839000
  1448. L R4,GRAPHSAV+24 RESTORE REGISTER 4 @VM08630 00840000
  1449. TM IOBCSW+4,ATTN IS THIS AN ATTENTION INTERRUPT? @V56BDA8 00841000
  1450. BCR 1,R5 YES, RETURN TO IN LINE CODE @VM08630 00842000
  1451. B WAITANY WAITS FOR ANY INTERRUPT. RETURN @V56BDA8 00842200
  1452. * ADDR (TO GRAPHIC0 OR GRAPHIC3) IS STILL 00842400
  1453. * IN R14. GRAPHIC0 OR GRAPHIC3 THEN COMES 00842600
  1454. * HERE AGAIN TO ATTNHAND IMMEDIATELY AND 00842800
  1455. * TESTS DID INTERRUPT HAVE ATTN. IF IT 00843000
  1456. * DIDN'T, WE WAIT AGAIN. NOTE THAT WAITANY 00843200
  1457. * WILL HAVE AN ERROR ROUTINE LOOK AT THE 00843400
  1458. * ATTENTION INTERRUPT BEFORE RETURNING 00843600
  1459. * ON R14. 00843800
  1460. ******************************************************************** 00844000
  1461. EJECT 00844250
  1462. ****************** DATA AREA FOR STARTIO ROUTINE ********************** 00844500
  1463. SENSECNT DS H COUNT OF BYTES IN 'SENSE' FIELD. @V56BDA8 00844750
  1464. SENSECCW CCW X'04',SENSE,SILI,L'SENSE @V56BDA8 00845000
  1465. SENSE DS XL24 SENSE DATA IS READ INTO THIS. @V56BDA8 00845250
  1466. SIOSAVE DS 7F SAVES USER REGS FOR STARTIO. @V56BDA8 00845500
  1467. SPACE 3 00845750
  1468. **CMNT** IOB DSECT @V56BDA8 00846000
  1469. IOBFLAGS DC X'00' BIT FLAGS, EQUATED BELOW, MUST @V56BDA8 00846250
  1470. * BE ZEROES INITIALLY. 00846500
  1471. *------------------ START OF IOBFLAGS BIT EQUATES --------------------- 00846750
  1472. IOBFSTRT EQU X'80' SET TO 1 MEANS REQUESTED I/O @V56BDA8 00847000
  1473. * WAS STARTED. 00847250
  1474. IOBFNRDY EQU X'40' SET TO 1 MEANS SIO WAS BLOCKED BY@V56BDA8 00847500
  1475. * THE DEVICE (DVC NOT READY, ETC). 00847750
  1476. IOBFCC3 EQU X'20' SET TO 1 MEANS DVC 'NOT @V56BDA8 00848000
  1477. * OPERATIONAL' (SIO GAVE CC=3). 00848250
  1478. IOBFERP EQU X'10' SET TO 1 MEANS ERROR RECOVERY IS @V56BDA8 00848500
  1479. * IN PROGRESS. ERROR ROUTINE GETS CONTROL 00848750
  1480. * BACK AFTER EACH I/O RETRY, EVEN IF NO 00849000
  1481. * ERROR. ONLY 'STARTIO' CAN TURN THIS ON. 00849250
  1482. * BUT ERROR ROUTINE MUST EVENTUALLY TURN 00849500
  1483. * IT OFF. 00849750
  1484. IOBFWANY EQU X'08' SET TO 1 MEANS 'WAITANY' WAS @V56BDA8 00850000
  1485. * CALLED AND WE ARE WAITING FOR AN 00850250
  1486. * INTERRUPT FROM ANY DEVICE. 00850500
  1487. IOBFDEW EQU X'04' SET TO 1 MEANS USER WANTS I/O @V56BDA8 00850750
  1488. * OPERATION TO BE REGARDED AS HAVING 00851000
  1489. * COMPLETED WHEN DE STATUS IS PRESENTED 00851250
  1490. * (NORMALLY CE IS REGARDED AS COMPLETION). 00851500
  1491. IOBFATAL EQU X'02' MAY BE SET BY ERROR ROUTINE AND @V56BDA8 00851750
  1492. * RETURNED TO USER TO INDICATE 00852000
  1493. * NON-RECOVERABLE ERROR. 00852250
  1494. *---------------------- END OF BIT EQUATES ---------------------------- 00852500
  1495. IOBRCAW DS F RESTART CAW; PROTECT KEY AND CHNL@V56BDA8 00852750
  1496. * PROGRAM ADDR USED THE LAST TIME EITHER 00853000
  1497. * STARTIO OR RETRYIO WAS GIVEN CONTROL. 00853250
  1498. IOBERROR DS A ADDR OF ERROR RECOVERY RTN OR 0. @V56BDA8 00853500
  1499. DS 0F FOR ALIGNMENT OF IOBCSW. @V56BDA8 00853750
  1500. IOBCSW DS XL8 CSW FROM REQUESTED I/O. RETURNED@V56BDA8 00854000
  1501. * TO CALLER OR PASSED TO ERROR ROUTINE. 00854250
  1502. IOBERCNT DS H ERROR RETRY COUNT. AUTOMATICALLY@V56BDA8 00854500
  1503. * ZEROED WHEN AN INITIAL ERROR CONDITION 00854750
  1504. * IS PASSED TO AN ERROR ROUTINE. IF THE 00855000
  1505. * ERROR ROUTINE GOES TO 'RETRYIO' WITH 00855250
  1506. * THE IOBFERP FLAG SET, THEN THIS COUNTER 00855500
  1507. * IS AUTOMATICALLY INCREMENTED BY ONE EACH 00855750
  1508. * TIME CONTROL IS GIVEN BACK TO THE ERROR 00856000
  1509. * ROUTINE. IF THE ERROR ROUTINE TURNS OFF 00856250
  1510. * THE IOBFERP FLAG THEN THIS COUNT IS 00856500
  1511. * AUTOMATICALLY RESET TO 0 BEFORE THE 00856750
  1512. * ERROR ROUTINE RECEIVES CONTROL AGAIN. 00857000
  1513. SPACE 3 00857250
  1514. ********************************************************************** 00860000
  1515. DISABLE DC X'00' DISABLE ALL INTERRUPTS @VM08630 00861000
  1516. SPACES DC CL6' ' WORK AREA @VM08630 00862000
  1517. INPUT DC CL6' ' WORK AREA @VM08630 00863000
  1518. DS 0D @VM08630 00864000
  1519. BADINPUT DC X'00020000',X'00000027' SYSTEM INPUT INCORRECT @VM08630 00865000
  1520. ENABLAB DC X'FE060000',A(0) ENABLED WAIT STATE. @V56BDA8 00866000
  1521. IOPSW DC X'00040000',A(IOINT) I/O INTERRUPT HANDLER. @V56BDA8 00867000
  1522. MCPSW DC X'00020000',C' MCH' @VM08630 00868000
  1523. PCPSW DC X'00020000',C' PRG' @VM08630 00869000
  1524. SIOERROR DC A(CONINT) FIELD FOR ERROR HANDLER ADDRESS @VM08630 00870000
  1525. CONTBL DC X'00090000' SET UP FOR THE CONSOLE @VM08630 00871000
  1526. RESTBL DC F'00' SET UP FOR THE DASD DEVICE @VM08630 00872000
  1527. DEVBLKS DC V(DMKRIOCH,DMKRIOCU,DMKRIODV) 00873000
  1528. ALLODEV DC A(DMKRIODV) 00874000
  1529. ALLOCU DC A(DMKRIOCU) 00875000
  1530. FFS32 DC 32X'FFFF' CLEAR CONTROL BLOCKS @V200731 00876000
  1531. SPACE 3 00877000
  1532. PRINTER DC AL1(L'PRTADDR) 00878000
  1533. PRTADDR DC C'ENTER PRINTER ADDRESS (CUU):' 00879000
  1534. DC AL1(L'PRTCLS) 00880000
  1535. PRTCLS DC C'ENTER DEVICE TYPE (1403,1443,3211,3203,3800):' @V60B9BA 00881000
  1536. DC C'1403 ',AL1(CLASURO,TYP1403) 00882000
  1537. DC C'1443 ',AL1(CLASURO,TYP1443) 00883000
  1538. DC C'3211 ',AL1(CLASURO,TYP3211) 00884000
  1539. DC C'3203 ',AL1(CLASURO,TYP3203) @V386298 00884100
  1540. DC C'3800 ',AL1(CLASURO,TYP3800) @V60B9BA 00884550
  1541. DC 7X'FF' 00885000
  1542. SPACE 1 00886000
  1543. PUNCH DC AL1(L'PCHADDR) 00887000
  1544. PCHADDR DC C'ENTER PUNCH ADDRESS (CUU):' 00888000
  1545. DC AL1(L'PCHCLS) 00889000
  1546. PCHCLS DC C'ENTER DEVICE TYPE (2540P,3525):' 00890000
  1547. DC C'2540P',AL1(CLASURO,TYP2540P) 00891000
  1548. DC C'3525 ',AL1(CLASURO,TYP3525) 00892000
  1549. DC 7X'FF' 00893000
  1550. SPACE 1 00894000
  1551. READER DC AL1(L'RDRADDR) 00895000
  1552. RDRADDR DC C'ENTER READER ADDRESS (CUU):' 00896000
  1553. DC AL1(L'RDRCLS) 00897000
  1554. RDRCLS DC C'ENTER DEVICE TYPE (2501,2540R,3505):' 00898000
  1555. DC C'2501 ',AL1(CLASURI,TYP2501) 00899000
  1556. DC C'2540R',AL1(CLASURI,TYP2540R) 00900000
  1557. DC C'3505 ',AL1(CLASURI,TYP3505) 00901000
  1558. DC 7X'FF' 00902000
  1559. SPACE 1 00903000
  1560. PIDTAPE DC AL1(L'PIDADDR) 00904000
  1561. PIDADDR DC C'ENTER ADDRESS WHERE PID TAPE IS MOUNTED (CUU):' 00905000
  1562. DC AL1(L'PIDCLS) 00906000
  1563. PIDCLS DC C'ENTER DEVICE TYPE (2401,2415,2420,3420):' 00907000
  1564. DC C'2401 ',AL1(CLASTAPE,TYP2401) 00908000
  1565. DC C'2415 ',AL1(CLASTAPE,TYP2415) 00909000
  1566. DC C'2420 ',AL1(CLASTAPE,TYP2420) 00910000
  1567. DC C'3420 ',AL1(CLASTAPE,TYP3420) 00911000
  1568. DC 7X'FF' 00912000
  1569. SPACE 1 00913000
  1570. BKUPTAPE DC AL1(L'BKUPADDR) 00914000
  1571. BKUPADDR DC C'ENTER ADDRESS WHERE SCRATCH TAPE IS MOUNTED (CUU):' 00915000
  1572. DC AL1(L'BKUPCLS) 00916000
  1573. BKUPCLS DC C'ENTER DEVICE TYPE (2401,2415,2420,3420):' 00917000
  1574. DC C'2401 ',AL1(CLASTAPE,TYP2401) 00918000
  1575. DC C'2415 ',AL1(CLASTAPE,TYP2415) 00919000
  1576. DC C'2420 ',AL1(CLASTAPE,TYP2420) 00920000
  1577. DC C'3420 ',AL1(CLASTAPE,TYP3420) 00921000
  1578. DC 7X'FF' 00922000
  1579. SPACE 1 00923000
  1580. SYSRES DC AL1(L'SYSADDR) 00924000
  1581. SYSADDR DC C'ENTER DEVICE ADDRESS WHERE SYSTEM RESIDENCE WILL BE BUX00925000
  1582. ILT (CUU):' 00926000
  1583. DC AL1(L'SYSCLS+L'SYSDEV) @V2A2029 00927000
  1584. SYSCLS DC C'ENTER DEVICE TYPE ' @V2A2029 00928000
  1585. SYSDEV DC C'(2319,2314,3330,3340,3350,3375,3380,2305):' HRC106DK 00929100
  1586. DC C'2319 ',AL1(CLASDASD,TYP2319) 00930000
  1587. DC C'2314 ',AL1(CLASDASD,TYP2314) 00931000
  1588. DC C'3340 ',AL1(CLASDASD,TYP3340) @V2A2029 00932000
  1589. DC C'3330 ',AL1(CLASDASD,TYP3330) 00933000
  1590. DC C'3350 ',AL1(CLASDASD,TYP3350) @V304498 00934000
  1591. DC C'3375 ',AL1(CLASDASD,TYP3375) HRC106DK 00934100
  1592. DC C'3380 ',AL1(CLASDASD,TYP3380) HRC106DK 00934200
  1593. DC C'2305 ',AL1(CLASDASD,TYP2305) 00935000
  1594. DC 7X'FF' 00936000
  1595. SPACE 1 00937000
  1596. WORKPACK DC AL1(L'WORKADDR) 00938000
  1597. WORKADDR DC C'ENTER ADDRESS WHERE A SCRATCH PACK IS MOUNTED (CUU):' 00939000
  1598. DC AL1(L'WORKCLS) 00940000
  1599. WORKCLS DC C'ENTER DEVICE TYPE (2319,2314,3340,3330):' @V2A2029 00941000
  1600. DC C'2319 ',AL1(CLASDASD,TYP2319) 00942000
  1601. DC C'2314 ',AL1(CLASDASD,TYP2314) 00943000
  1602. DC C'3340 ',AL1(CLASDASD,TYP3340) @V2A2029 00944000
  1603. DC C'3330 ',AL1(CLASDASD,TYP3330) 00945000
  1604. DC 7X'FF' 00946000
  1605. LNGMSG DC AL1(L'STRTMSG+128) @VM08936 00947000
  1606. STRTMSG DC C'VM/370 STARTER SYSTEM RELEASE 6.0' 00948000
  1607. SPACE 2 00949000
  1608. LNGDEF DC AL1(L'DEFINE) 00950000
  1609. DEFINE DC C'***DO YOU WISH TO RE-DEFINE YOUR SYSTEM***(YES,NO):' 00951000
  1610. SPACE 1 00952000
  1611. LNGDEV DC AL1(L'DEVUSED+128) 00953000
  1612. DEVUSED DC C'**ERROR** DEVICE HAS BEEN ALREADY ALLOCATED' 00954000
  1613. SPACE 1 00955000
  1614. COMPLEN DC AL1(L'COMPLINE+128) 00956000
  1615. COMPLINE DC C'***SYSTEM DEFINITION COMPLETED***' 00957000
  1616. SPACE 1 00958000
  1617. LASTLEN DC AL1(L'LASTLINE) 00959000
  1618. LASTLINE DC C'ARE THE ABOVE ENTRIES CORRECT (YES,NO):' 00960000
  1619. SPACE 1 00961000
  1620. BLKLEN DC AL1(L'BLKLINE+128) 00962000
  1621. BLKLINE DC C' ' 00963000
  1622. SPACE 1 00964000
  1623. PRTLEN DC AL1(L'PRTLINE+128) 00965000
  1624. PRTLINE DC C' PRINTER' 00966000
  1625. SPACE 1 00967000
  1626. PCHLEN DC AL1(L'PCHLINE+128) 00968000
  1627. PCHLINE DC C' PUNCH' 00969000
  1628. SPACE 1 00970000
  1629. RDRLEN DC AL1(L'RDRLINE+128) 00971000
  1630. RDRLINE DC C' READER' 00972000
  1631. SPACE 1 00973000
  1632. PIDLEN DC AL1(L'PIDLINE+128) 00974000
  1633. PIDLINE DC C' PID TAPE' 00975000
  1634. SPACE 1 00976000
  1635. TAPLEN DC AL1(L'TAPLINE+128) 00977000
  1636. TAPLINE DC C' SCRATCH TAPE' 00978000
  1637. SPACE 1 00979000
  1638. RESLEN DC AL1(L'RESLINE+128) 00980000
  1639. RESLINE DC C' NEW SYSTEM RESIDENCE' 00981000
  1640. SPACE 1 00982000
  1641. PACKLEN DC AL1(L'PACKLINE+128) 00983000
  1642. PACKLINE DC C' SCRATCH PACK' 00984000
  1643. SPACE 00985000
  1644. SNSAREA DC XL24'00' @V2A2029 00986000
  1645. SPACE 1 00987000
  1646. SPACE 1 00988000
  1647. SKADR DS 0H @V304498 00989000
  1648. BIN DC X'0000' 00990000
  1649. CYL DC X'0000' 00991000
  1650. HEAD DC X'0000' 00992000
  1651. REC DC X'00' 00993000
  1652. SPACE 00994000
  1653. * THE DMKRIO MODULE MUST BE BETWEEN ADDRESS X'3000' AND X'F000' 00995000
  1654. * AND MUST START ON A PAGE BOUNDARY 00996000
  1655. DS 0F 00997000
  1656. * HEAD AND RECORD NUMBER FOR 2314 DEVICE 00998000
  1657. PAGE2314 DC AL1(00,01,00,02,01,03,01,04,02,05) 00999000
  1658. DC AL1(03,06,03,07,04,08,05,09,05,10) 01000000
  1659. DC AL1(06,11,06,12,07,13,08,14,08,15,09,16) 01001000
  1660. SPACE 01002000
  1661. DS 0F @V2A2029 01003000
  1662. * HEAD AND RECORD NUMBER FOR 3340 DEVICE 01004000
  1663. PAGE3340 DC AL1(00,01,00,02,01,03,01,04,02,05) @V2A2029 01005000
  1664. DC AL1(02,06,03,07,03,08,04,09,04,10) @V2A2029 01006000
  1665. DC AL1(05,11,05,12,06,13,06,14,07,15,07,16) @V2A2029 01007000
  1666. SPACE 01008000
  1667. DS 0F 01009000
  1668. * HEAD AND RECORD NUMBER FOR 3330 DEVICE 01010000
  1669. PAGE3330 DC AL1(00,01,00,02,00,03,01,04,01,05) 01011000
  1670. DC AL1(01,06,02,07,02,08,02,09,03,10) 01012000
  1671. DC AL1(03,11,03,12,04,13,04,14,04,15,05,16) @V200731 01013000
  1672. DS 0F @V304498 01014000
  1673. * HEAD AND RECORD NUMBER FOR 3350 DEVICE 01015000
  1674. PAGE3350 DC AL1(00,01,00,02,00,03,00,04,01,05,01,06) @V304498 01016000
  1675. DC AL1(01,07,01,08,02,09,02,10,02,11,02,12) @V304498 01017000
  1676. DC AL1(03,13,03,14,03,15,03,16) @V304498 01018000
  1677. * Head and record number for 3375 device HRC106DK 01018100
  1678. PAGE3375 DC AL1(00,01,00,02,00,03,00,04) HRC106DK 01018150
  1679. DC AL1(00,05,00,06,00,07,00,08) HRC106DK 01018200
  1680. DC AL1(01,09,01,10,01,11,01,12) HRC106DK 01018250
  1681. DC AL1(01,13,01,14,01,15,01,16) HRC106DK 01018300
  1682. * Head and record number for 3380 device HRC106DK 01018350
  1683. PAGE3380 DC AL1(00,01,00,02,00,03,00,04) HRC106DK 01018400
  1684. DC AL1(00,05,00,06,00,07,00,08) HRC106DK 01018450
  1685. DC AL1(00,09,00,10,01,11,01,12) HRC106DK 01018500
  1686. DC AL1(01,13,01,14,01,15,01,16) HRC106DK 01018550
  1687. ******************************************************************** 01019000
  1688. EJECT 01020000
  1689. DS 0H @V60A6B6 01020080
  1690. ADDR1 DC X'5B5F' LOCATION LINE 22, COL 80 @V60A6B6 01020160
  1691. ADDR2 DC X'5D6B' LOCATION LINE 24, COL 60 @V60A6B6 01020240
  1692. ADDR3 DC X'D65F' LOCATION LINE 18, COL 80 @V60A6B6 01020320
  1693. ADDR4 DC X'D86B' LOCATION LINE 20, COL 60 @V60A6B6 01020400
  1694. ADDR5 DC X'4040' INITIALIZED FOR CURSOR CHECK @V60A6B6 01020480
  1695. ADDR6 DC X'5B60' LOCATION LINE 23 COL 01 @V60A6B6 01020560
  1696. ADDR7 DC X'D660' LOCATION LINE 19 COL 01 @V60A6B6 01020640
  1697. MAXLEN DC F'0000' @V60A6B6 01020720
  1698. LEN3270 DC F'1760' SCREEN FOR 3270 = 1760 @V60A6B6 01020800
  1699. LEN3278 DC F'1440' SCREEN FOR 3278 MOD2A = 1440 @V60A6B6 01020880
  1700. ********************************************************************* 01021000
  1701. * CCWS FOR 3215/3210 AND DASD DEVICES 01022000
  1702. ********************************************************************* 01023000
  1703. DS 0D @V200731 01024000
  1704. SPACE 2 01026000
  1705. DSKPROG CCW X'07',SKADR,CC+SILI,6 @V200731 01027000
  1706. CCW X'31',SKADR+2,CC+SILI,5 @V200731 01028000
  1707. CCW X'08',*-8,CC+SILI,1 @V200731 01029000
  1708. CCW X'05',DMKRIO,SILI,4096 @V200731 01030000
  1709. SPACE 2 01031000
  1710. RD3210 CCW X'0A',*-*,SILI+CC,140 READ WITH CARRIAGE RETN. @V200731 01032000
  1711. CCW X'03',*-*,SILI,1 @V200731 01033000
  1712. SPACE 2 01034000
  1713. WRT3210 CCW X'01',*-*,SILI+CC,140 WRITE WITH NO CARRIAGE @V200731 01035000
  1714. * RETN 01036000
  1715. CCW X'03',*-*,SILI,1 @V200731 01037000
  1716. SPACE 2 01038000
  1717. WRT3210A CCW X'09',*-*,SILI+CC,140 WRITE WITH CARRIAGE RETN @V200731 01039000
  1718. CCW X'03',*-*,SILI,1 @V200731 01040000
  1719. SPACE 2 01041000
  1720. ********************************************************************* 01042000
  1721. SPACE 2 01043000
  1722. ********************************************************************** 01044000
  1723. * GRAPHIC SUPPORT CCWS 01045000
  1724. ********************************************************************** 01046000
  1725. CRTWORD CCW X'27',SBACP,SILI+CC,2 SET BAR TO (STATUS WORD) @V200731 01047000
  1726. CCW X'01',CPXYSTAT,SILI+CC,20 WRITE 'RUNNING' ON @V200731 01048000
  1727. * SCREEN 01049000
  1728. CCW X'27',SBAREAD,SILI+CC,2 SET BUFFER ADDR FOR @V200731 01050000
  1729. * WRITE 01051000
  1730. CCW X'01',BLNKZERO,SILI+CC,140 CLEAR INPUT AREA @VM08630 01052000
  1731. CURS3066 CCW X'0F',SBAREAD,SILI+CC,2 REPOSITION CURSOR @V200731 01053000
  1732. CCW X'03',*-*,SILI,3 END OF READ CCW STRING @V200731 01054000
  1733. SPACE 2 01055000
  1734. CRTWORD1 CCW X'01',LAB3270A,SILI+CC,LEN THE CONTROL DATA @VM08630 01056000
  1735. CCW X'03',*-*,SILI,2 @V200731 01057000
  1736. SPACE 2 01058000
  1737. REQREAD CCW X'27',SBACP,SILI+CC,2 SET BUFFER ADDR TO CP X-Y @V200731 01059000
  1738. CCW X'01',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 01060000
  1739. CCW X'08',CURS3066,SILI,1 RESET CURSOR POSITION @V200731 01061000
  1740. SPACE 2 01062000
  1741. REQREAD1 CCW X'01',LAB3270B,SILI+CC,LEN1 THE CONTROL DATA @VM08630 01063000
  1742. CCW X'03',*-*,SILI,2 @V200731 01064000
  1743. SPACE 2 01065000
  1744. ERSE3066 CCW X'07',*-*,SILI+CC,1 ERASE ENTIRE SCREEN @V200731 01066000
  1745. WRTCRTXY CCW X'27',SBADDR,SILI+CC,2 SET CORRECT LINE @V200731 01067000
  1746. WRT3066 CCW X'01',*-*,SILI+CC,140 WRITE OUT USER DATA @V200731 01068000
  1747. CCW X'08',CRTWORD,SILI,1 NOW DISPLAY STATUS @V200731 01069000
  1748. SPACE 2 01070000
  1749. ERSE3270 CCW X'05',LAB3270E,SILI+CD,LEN3 ERASE THE SCREEN @VM08936 01071000
  1750. CCW X'00',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 01072000
  1751. WRTCRT70 CCW X'01',LAB3270,SILI+CD,4 THE CONTROL DATA @V200731 01073000
  1752. WRTCR70 CCW X'00',*-*,SILI+CD,0 THE WRITE CCW @V200731 01074000
  1753. CCW X'00',LAB3270A+1,SILI+CC,LEN-1 WRITE STATUS @V200731 01075000
  1754. CCW X'03',*-*,SILI,2 @V200731 01076000
  1755. SPACE 2 01077000
  1756. RDMI3066 CCW X'0E',RDMIDATA,SILI+CC,3 READ CCW FOR MI COMMAND@V200731 01078000
  1757. RD3066 CCW X'27',SBAREAD,SILI+CC,2 SET BUFFER ADDR FOR READ@V200731 01079000
  1758. RD3066DA CCW X'06',*-*,SILI+CC,140 READ INPUT DATA @V200731 01080000
  1759. CCW X'08',CURS3066,SILI,1 REPOSITION CURSOR @V200731 01081000
  1760. SPACE 2 01082000
  1761. RDMI3270 CCW X'01',LAB3270D,SILI+CC,4 @V200731 01083000
  1762. RD3270DA CCW X'06',*-*,SILI+CC,0 THE CCW FOR READ @V200731 01084000
  1763. CCW X'03',*-*,SILI,2 @V200731 01085000
  1764. SPACE 2 01086000
  1765. CNCL3270 CCW X'01',LAB3270E,SILI+CD,LEN3 THE CONTROL DATA @V200731 01087000
  1766. CCW X'00',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 01088000
  1767. CCW X'03',*-*,SILI,2 @V200731 01089000
  1768. SPACE 2 01090000
  1769. CNCL3066 CCW X'07',*-*,SILI+CC,1 ERASE SCREEN @V200731 01091000
  1770. CCW X'08',CRTWORD,SILI,1 NOW DISPLAY STATUS @V200731 01092000
  1771. SPACE 2 01093000
  1772. HOLDCCW1 CCW X'01',LAB3270C,SILI+CC,LEN2 THE CONTROL DATA @V200731 01094000
  1773. CCW X'03',*-*,SILI,2 @V200731 01095000
  1774. SPACE 2 01096000
  1775. ********************************************************************** 01097000
  1776. ********************************************************************* 01098000
  1777. * FIRST DC ARE ADDRESSES FOR LINES 1 -6 01099000
  1778. * SECOND DC ARE ADDRESSES FOR LINES 7 - 12 01100000
  1779. * THIRD DC ARE ADDRESSES FOR LINES 13 - 18 01101000
  1780. * FOURTH DC ARE ADDRESSES FOR LINES 19 - 24 01102000
  1781. ********************************************************************* 01103000
  1782. SPACE 2 01104000
  1783. TABLE70 DS 0D @V200731 01105000
  1784. DC X'4040C150C260C3F0C540C650' @V200731 01106000
  1785. DC X'C760C8F04A404B504C604DF0' @V200731 01107000
  1786. DC X'4F405050D160D2F0D440D550' @V200731 01108000
  1787. DC X'D660D7F0D9405A505B605CF0' @V200731 01109000
  1788. SPACE 1 01110000
  1789. * X'5B60' - LINE 23, COL. 1 01111000
  1790. * X'5D6A' - LINE 24, COL. 59 01112000
  1791. SPACE 2 01113000
  1792. ********************************************************************** 01114000
  1793. WC6 EQU X'C2' WRITE CONTROL BIT 6 @V200731 01115000
  1794. AT7 EQU X'C1' ATTRIBUTE BIT 7 @V200731 01116000
  1795. AT2 EQU X'E0' ATTRIBUTE BIT 2 @V200731 01117000
  1796. LAC EQU X'C0' @V200731 01118000
  1797. SF EQU X'1D' START OF FIELD CONTROL @V200731 01119000
  1798. SBA EQU X'11' SET BUFFER ADDRESS @V200731 01120000
  1799. IC EQU X'13' INSERT CURSOR @V200731 01121000
  1800. EUA EQU X'12' ERASE UNPROTECTED @V200731 01122000
  1801. RA EQU X'3C' REPEAT TO ADDRESS @V200731 01123000
  1802. *********************************************************************** 01123100
  1803. SPACE 3 01123200
  1804. X01 EQU X'01' INDICATE DEVICE TYPE 3278 @V60A6B6 01123300
  1805. X0C EQU X'0C' DISPLACEMENT FOR 3278 @V60A6B6 01123400
  1806. X2A EQU X'2A' MODEL NUMBER FOR 3278 @V60A6B6 01123500
  1807. SPACE 2 01124000
  1808. LAB3270A DC AL1(WC6),AL1(SBA),X'5B60',AL1(SF),AL1(AT7) @V200731 01125000
  1809. DC AL1(IC),AL1(EUA),X'5D6B',AL1(SF),AL1(AT2) @V200731 01126000
  1810. RUNLABEL DC CL20'RUNNING' @V200731 01127000
  1811. LEN EQU *-LAB3270A @V200731 01128000
  1812. LAB3270B DC AL1(WC6),AL1(SBA),X'5B60',AL1(SF),AL1(AT7) @V200731 01129000
  1813. DC AL1(IC),AL1(SBA),X'5D6B',AL1(SF),AL1(AT2) @V200731 01130000
  1814. REALABEL DC CL20'CP READ' @V200731 01131000
  1815. LEN1 EQU *-LAB3270B @V200731 01132000
  1816. LAB3270C DC AL1(WC6),AL1(SBA),X'5D6B',AL1(SF),AL1(AT2) @V200731 01133000
  1817. HOLLABEL DC CL20'HOLDING' @V200731 01134000
  1818. LEN2 EQU *-LAB3270C @V200731 01135000
  1819. LAB3270D DC AL1(LAC),AL1(SBA),X'5B60' @V200731 01136000
  1820. LAB3270 DC AL1(WC6),AL1(SBA),X'0000' @V200731 01137000
  1821. LAB3270E DC AL1(WC6),AL1(SBA),X'4040',AL1(RA),X'5B60',X'00' @V200731 01138000
  1822. DC AL1(SF),AL1(AT7),AL1(IC),AL1(SBA) @V200731 01139000
  1823. DC X'5D6B',AL1(SF),AL1(AT2) @V200731 01140000
  1824. LEN3 EQU *-LAB3270E @V200731 01141000
  1825. SPACE 2 01142000
  1826. ********************************************************************* 01143000
  1827. PARM DC X'00' THE GRAPHIC FLAG BYTE @V200731 01144000
  1828. PARMATT EQU X'80' ATTENTION REQUEST @VM08630 01145000
  1829. PARMGRP EQU X'40' GRAPHIC SUPPORT @VM08630 01146000
  1830. PARMREA EQU X'20' READ REQUEST @VM08630 01147000
  1831. PARMCLE EQU X'10' CLEAR/ERASE REQUEST @VM08630 01148000
  1832. PARM327 EQU X'08' 3270 GRAPHIC DEVICE @VM08630 01149000
  1833. PARMNAUT EQU X'04' NO CARRIAGE RETURN @VM08630 01150000
  1834. PARM01F EQU X'02' 01F REQUEST @VM08630 01151000
  1835. PARM321 EQU X'01' 3215/3210/1052 @VM08630 01152000
  1836. PARM2 DC X'00' SIO SWITCHES @VM08630 01153000
  1837. PARMNDA EQU X'40' NO DATA INDICATED @VM08630 01155000
  1838. ********************************************************************** 01156000
  1839. SPACE 2 01157000
  1840. ********************************************************************* 01158000
  1841. SBADDR DC AL1(00,00) CURRENT OUTPUT LINE COORDINATES @V200731 01159000
  1842. SBACP DC AL1(34,60) COORDINATES FOR SCREEN 'STATUS' @V200731 01160000
  1843. SBAREAD DC AL1(33,00) COORDINATES FOR CURSOR POSITION @V200731 01161000
  1844. RDMIDATA DC XL3'00' READ DATA FROM 'MI' COMMAND @V200731 01162000
  1845. CPXYSTAT DC CL20' ' SCREEN 'STATUS' WORD @V200731 01163000
  1846. BLNKLINE DC XL140'00' CLEAR INPUT AREA @VM08630 01164000
  1847. BLNKZERO DC CL140' ' BLANKS FOR READ AREA @VM08630 01165000
  1848. GRAPHSAV DC 8F'00' SAVE AREA FOR GRAPHIC SUPPORT @V200731 01166000
  1849. ********************************************************************* 01167000
  1850. EJECT 01168000
  1851. LTORG @V200731 01169000
  1852. EJECT 01170000
  1853. COPY RBLOKS @V200731 01171000
  1854. COPY DEVTYPES 01172000
  1855. COPY EQU 01173000
  1856. COPY SAVE 01174000
  1857. PSA 01175000
  1858. END 01176000