Table of Contents

DMKRSE Source

References

Source Listing

DMKRSE.ASSEMBLE.txt
  1. RSE TITLE 'DMKRSE (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE INPUT SERIALIZATION @V200820 00002000
  3. *. 00003000
  4. * 00004000
  5. * MODULE NAME - 00005000
  6. * 00006000
  7. * DMKRSERR 00007000
  8. * 00008000
  9. * FUNCTION - 00009000
  10. * 00010000
  11. * TO RETRY AND ATTEMPT RECOVERY FOR REAL UNIT RECORD DEVICE 00011000
  12. * IO ERRORS. 00012000
  13. * ALSO TO RECORD HARDWARE ENVIRONMENTAL DATA FOR A 3800. 00012500
  14. * 00013000
  15. * ATTRIBUTES - 00014000
  16. * 00015000
  17. * REENTRANT, PAGEABLE, CALLED VIA SVC FROM DMKRSPER 00016000
  18. * 00017000
  19. * ENTRY POINTS - 00018000
  20. * 00019000
  21. * DMKRSERR - ENTRY POINT FOR REAL SPOOL ERROR 00020000
  22. * DMKRSESD - COLLECT 3800 ENVIRONMENTAL SENSE DATA 00020500
  23. * 00021000
  24. * ENTRY CONDITIONS - 00022000
  25. * 00023000
  26. * GPR8 = ADDRESS OF THE RDEVBLOK FOR THE FAILING DEVICE 00024000
  27. * GPR10 = ADDRESS OF THE IOBLOK 00025000
  28. * GPR11 = ADDRESS OF USER VMBLOK 00026000
  29. * GPR12 = DMKRSERR BASE ADDRESS 00027000
  30. * GPR13 = ADDRESS OF STANDARD SAVEAREA 00028000
  31. * 00029000
  32. * EXIT CONDITIONS - 00030000
  33. * 00031000
  34. * THE IOBLOK IS RETURNED TO THE CALLER (DMKIOS) WITH, 00032000
  35. * 1. THE RESTART FLAG SET, IN WHICH CASE THE OPERATION IS 00033000
  36. * RESTARTED, STARTING AT THE ADDRESS IN IOBRCAW. 2. THE FATAL 00034000
  37. * FLAG SET, INDICATING AN UNRECOVERABLE CONDITION. 3. RESTART, 00035000
  38. * FATAL AND ERROR ROUTINE IN CONTROL FLAGS OFF, IN WHICH CASE 00036000
  39. * THE IOBLOK IS RETURN TO THE ADDRESS IN IOBIRA VIA DMKIOS. 00037000
  40. * 00038000
  41. * CALLS TO OTHER ROUTINES - 00039000
  42. * 00040000
  43. * DMKMSWR - TO WRITE ERROR MESSAGES 00041000
  44. * DMKFRET - TO RETURN STORAGE 00042000
  45. * DMKIOEST - TO UPDATE STATISTICAL COUNTERS 00042100
  46. * DMKIOESD - FORMAT 3800 HARDWARE ENVIRONMENTAL COUNTERS 00042250
  47. * DMKERMSG - SEND MESSAGES TO THE OPERATOR 00042400
  48. * DMKIOSQR - TO DO THE BUFFER UNLOAD FOR A 3800 00042550
  49. * DMKIOESD - RECORD RESULTS OF BUFFER UNLOAD FOR FE 00042700
  50. * DMKCVTBH - CONVERT ERROR MESSAGE DATA TO PRINTABLE HEX 00042850
  51. * 00043000
  52. * EXTERNAL REFERENCES - 00044000
  53. * 00045000
  54. * DMKRSP83 - 3811 CONTROL UNIT RESET CCW 00046000
  55. * DMKRSPPR - ANCHOR FOR PRINTER FILE CHAIN 00046500
  56. * 00047000
  57. * TABLES /WORKAREAS - 00048000
  58. * 00049000
  59. * NONE 00050000
  60. * 00051000
  61. EJECT 00052000
  62. * 00053000
  63. * REGISTER USAGE - 00054000
  64. * 00055000
  65. * GPR1 = ADDRESS OF RESTART CAW 00056000
  66. * GPR2,3,4 = WORK REGISTERS 00057000
  67. * GPR5 = INTERNAL SUBROUTINE LINKAGE 00058000
  68. * GPR7 = ADDRESS OF IOERBLOK 00059000
  69. * GPR8 = ADDRESS OF RDEVBLOK 00060000
  70. * GPR10 = ADDRESS OF IOBLOK 00061000
  71. * GPR11 = ADDRESS OF VMBLOK 00062000
  72. * GPR12 = DMKRSE MODULE BASE ADDRESS 00063000
  73. * GPR13 = ADDRESS OF SAVEAREA 00064000
  74. * 00065000
  75. * NOTE - 00066000
  76. * 00067000
  77. * NONE - 00068000
  78. * 00069000
  79. * OPERATION - 00070000
  80. * 00071000
  81. * 1. FIRST ERROR ENTRY - THE ADDRESS OF THE IO ERROR BLOCK 00072000
  82. * (IOERBLOK) IS LOCATED IN THE IOBLOK(IOBIOER). THE 00073000
  83. * ADDRESS OF THE IOERBLOK IS MOVED TO THE RDEVBLOK 00074000
  84. * (RDEVIOER) AND THE IOBIOER IS ZEROED. THE IOB RESTART 00075000
  85. * COUNT IS UPDATED BY ONE, AT THIS POINT THE STATISTICAL 00076000
  86. * DATA COUNTERS ARE UPDATED THEN THE IOERBLOK IS CHECKED 00076100
  87. * FOR THE TYPE OF ERROR. 00076200
  88. * THE STATISTICAL COUNTERS ARE UPDATED VIA A CALL TO 00076550
  89. * DMKIOEST. FOR A 3800 PRINTER, A PARAMETER LIST WILL 00076900
  90. * HAVE TO BE PASSED INDICATING WHICH COUNTERS TO UPDATE. 00077250
  91. * FOR ALL OTHER SPOOLING DEVICES NO PARAMETER IS PASSED. 00077600
  92. * 00078000
  93. * 2. RETRY ERROR ENTRY - THE ADDRESS OF THE FIRST ERROR 00079000
  94. * IOERBLOK IS LOCATED IN THE RDEVBLOK (RDEVIOER), AND 00080000
  95. * IN THE IOBLOK (IOBIOER), IF AN ERROR, WILL BE 00081000
  96. * THE ADDRESS OF THE NEW IOERBLOK. TWO TYES OF ENTRIES - 00082000
  97. * 00083000
  98. * (A) DEVICE END INTERRUPT FROM OPERATOR INTERVENTION, 00084000
  99. * THE IOBLOK IS POSTED WITH THE RESTART FLAG AND 00085000
  100. * ALLOW IOS TO RESTART THE OPERATION. 00086000
  101. * (B) CHANNEL AND DEVICE END INTERRUPT FROM ERP 00087000
  102. * INITIATED CCW'S TO OBTAINED OBR INFORMATION. 00088000
  103. * 00089000
  104. * 3. CONDITION CODE 3 ON SIO - MARK THE IOBLOK 00090000
  105. * AS FATAL ERROR AND ALLOW IOS TO RETURN THE IOBLOK 00091000
  106. * TO THE USER. 00092000
  107. * 00093000
  108. * 4. CHANNEL CONTROL AND INTERFACE CONTROL CHECK - 00094000
  109. * TAKE APPROPIATE ACTION AS GROVEN BY THE TERMINATION 00095000
  110. * AND/OR SEQUENCE CODE IN THE EXTENDED CHANNEL STATUS 00096000
  111. * (ECSW). THE ACTION TAKEN IS DEVICE DEPENDENT AND IS AS 00097000
  112. * FOLLOWS. 00098000
  113. * 00099000
  114. * CODE ACTION 00100000
  115. * 00101000
  116. * (0) NO RETRY - THE DEVICE IS UNABLE TO RECOVERY FROM THIS 00102000
  117. * ERROR CONDITION. MARK THE ERROR AS FATAL AND 00103000
  118. * ALLOW IOS TO RETURN THE IOBLOK TO THE USER. 00104000
  119. * (4) RETRY ONCE - RETRY THE CCW AT WHICH THE ERROR 00105000
  120. * ACCURRED. IF RETRY FAILS, POST THE ERROR AS 00106000
  121. * FATAL AND ALLOW IOS TO RETURN THE IOBLOK TO THE 00107000
  122. * USER. 00108000
  123. * (8) IGNORE - TREAT THIS CONDITION AS COMPLETE WITHOUT 00109000
  124. * ERROR. RESTART THE OPERATION WITH THE NEXT CCW. 00110000
  125. * (12) RETRY WITH OPERATOR INTERVENTION - RETRY MAY BE 00111000
  126. * POSSIBLE WITH OPERATOR INTERVENTION. GIVE CHANNEL 00112000
  127. * ERROR ACTION MESSAGE AND RESTART THE OPERATION 00113000
  128. * WHEN OPERATOR INTERVENTION IS COMPLETE. 00114000
  129. * 00115000
  130. * 5. CHANNEL DATA CHECK - RETRY THE OPERATION ONCE, 00116000
  131. * IF RETRY FAILS, POST THE ERROR AS FATAL, AND 00117000
  132. * ALLOW IOS TO RETURN THE IOBLOK TO THE USER. 00118000
  133. * 6. UNITCHECK ERRORS - RECOVERY PROCEDURES FOR UNITCHECK 00119000
  134. * ERRORS ARE DEVICE DEPENDENT, BUT GENERALLY SPEAKING, THE 00120000
  135. * FOLLOWING ACTIONS ARE TAKEN.- 00121000
  136. * (A) COMMAND REJECT - THE OPERATION IS MARK FATAL ERROR IN 00122000
  137. * THE IOBLOK, ERROR MESSAGE DMKRSE500I IS ISSUED 00123000
  138. * AND ALLOW IOS TO RETURN THE IOBLOK TO THE USER. 00124000
  139. * 00125000
  140. * (B) INTERVENTION REQUIRED - ONE OF TWO ACTIONS IS TAKEN, 00126000
  141. * DEPENDENT ON THE DEVICE TYPE. 00127000
  142. * (1) OPERATOR INTERVENTION - LOCATE THE RESTART CCW 00128000
  143. * ADDRESS AND STORE IN IOBRCAW. CALL DMKMSWR 00129000
  144. * TO GIVE ERROR MESSAGE DMKRSE501A (INT REQ), 00130000
  145. * RETURN TO IOS WITH IOBERP SET, INDICATING 00131000
  146. * DEVICE END INTERRUPT PENDING FROM DEVICE. 00132000
  147. * 00133000
  148. * WHEN DEVICE END INTERRUPT IS RECEIVED, THE 00134000
  149. * OPERATION IS RESTARTED AT THE CCW ADDRESS 00135000
  150. * LOCATED IN IOBRCAW. 00136000
  151. * 00137000
  152. * (2) FATAL ERROR - OPERATION FOR WHICH INTERVENTION 00138000
  153. * REQUIRED IS FATAL, SUCH AS LOADBUF COMMAND, POST 00139000
  154. * IOBLOK AS FATAL, GIVE ERROR MESSAGE DMKRSE501I 00140000
  155. * (INT REQ) AND ALLOW IOS TO RETURN THE IOBLOK TO 00141000
  156. * THE USER. 00142000
  157. * 00143000
  158. * 00144000
  159. * (C) BUSOUT CHECK - THE OPERATION IS RETRYED ONCE, IF THE 00145000
  160. * RETRY FAILS, GIVE ERROR MESSAGE DMKRSE502I, POST 00146000
  161. * ERROR AS FATAL AND ALLOW IOS TO RETURN THE IOBLOK 00147000
  162. * TO THE USER. 00148000
  163. * 00149000
  164. * (D) EQUIPMENT CHECK - ONE OF THREE ACTIONS WILL BE 00150000
  165. * TAKEN. (DEVICE DEPENDENT) 00151000
  166. * (1) EQUIPMENT CHECKS REQUIRING OPERATOR INTERVENTION, 00152000
  167. * LOCATE THE RESTART CCW, STORE ITS ADDRESS 00153000
  168. * IN IOBRCAW. GIVE ERROR MESSAGE DMKRSE503A (EQUIP 00154000
  169. * CK), RETURN TO IOS WITH IOBERP FLAG SET, TO 00155000
  170. * WAIT FOR DEVICE END INTERRUPT FROM THE 00156000
  171. * DEVICE. WHEN DEVICE END INTERRUPT IS 00157000
  172. * RECEIVED FROM OPERATOR INTERVENTION 00158000
  173. * COMPLETE, INDICATE RESTART AND ALLOW 00159000
  174. * TO RESTART THE OPERATION. 00160000
  175. * (2) RETRY ONCE - EQUIPMENT CHECKS NOT REQUIRING 00161000
  176. * OPERATOR INTERVENTION AND CAN BE RETRYED. 00162000
  177. * LOCATE AND SET UP THE RESTART CCW ADDRESS 00163000
  178. * FOR THE FAILING CCW, RETURN TO IOS TO 00164000
  179. * RESTART THE OPERATION. IF RETRY FAILS, 00165000
  180. * GIVE ERROR MESSAGE DMKRSE503I (EQUIP CK), 00166000
  181. * POST THE ERROR AS FATAL AND RETURN THE 00167000
  182. * IOBLOK TO THE USER VIA IOS. 00168000
  183. * 00169000
  184. * (3) FATAL EQUIPMENT CHECKS - EQUIPMENT CHECKS 00170000
  185. * WHICH CAN NOT BE RETRYED OR NEED 00171000
  186. * OPERATOR INTERVENTION, POST THE ERROR AS 00172000
  187. * FATAL, GIVE ERROR MESSAGE DMKRSE503I AND 00173000
  188. * ALLOW IOS TO RETURN THE IOBLOK TO THE USER. 00174000
  189. * 00175000
  190. * (E) DATA CHECKS - DEVICE DEPENDENT - DATA CHECKS 00176000
  191. * REQUIRING OPERATOR INTERVENTION, SET UP 00177000
  192. * RESTART CCW ADDRESS, GIVE MESSAGE DMKRSE504A, AND 00178000
  193. * RETURN TO IOS TO WAIT FOR DEVICE END INTERRUPT. 00179000
  194. * WHEN DEVICE END INTERRUPT IS RECEIVED FROM 00180000
  195. * OPERATOR INTERVENTION COMPLETE, RETURN TO IOS 00181000
  196. * ALLOW IOS TO RESTART THE OPERATION. 00182000
  197. * 00183000
  198. * DATA CHECKS NOT REQUIRING OPERATOR INTERVENTION, 00184000
  199. * SET UP THE RESTART CCW ADDRESS, RETRY THE 00185000
  200. * OPERATION, IF RETRY FAILS, POST THE ERROR AS 00186000
  201. * FATAL, GIVE ERROR MESSAGE DMKRSE504I (DATA CK) 00187000
  202. * AND ALLOW IOS TO RETURN THE IOBLOK TO THE USER. 00188000
  203. * (F) BUFFER PARITY CHECK - LOCATE THE RESTART CCW 00189000
  204. * ADDRESS, RETRY THE OPERATION ONCE, IF 00190000
  205. * REQUIRED (DEVICE DEPENDENT), OTHERWISE POST 00191000
  206. * ERROR AS FATAL, GIVE ERROR MESSAGE DMKRSE529I 00192000
  207. * (PARITY CK) AND ALLOW IOS TO RETURN THE 00193000
  208. * IOBLOK TO THE USER. 00194000
  209. * 00195000
  210. * (G) PROGRAM CONTROLLED INTERRUPT AND PROTECTION CHECKS 00196000
  211. * POSTED AS FATAL ERROR, GIVE ERROR MESSAGE 00197000
  212. * DMKRSE520I (CHAN ERROR) AND ALLOW IOS 00198000
  213. * TO RETURN THE IOBLOK TO THE USER. 00199000
  214. * 00200000
  215. * (H) ERRORS NOT STATED OR EXCEPTION WILL BE GIVEN BY 00201000
  216. * DEVICE TYPE. 00202000
  217. * 00203000
  218. * (I) 2501 READER - 00204000
  219. * OVERRUN CHECK - LOCATE THE RESTART CCW ADDRESS, 00205000
  220. * GIVE ERROR ACTION MESSAGE DMKRSE505A (OVERRUN 00206000
  221. * CK), RETURN TO IOS TO WAIT FOR OPERATOR 00207000
  222. * INTERVENTION. WHEN OPERATOR INTERVENTION IS 00208000
  223. * COMPLETE, RETURN TO IOS TO RESTART THE DEVICE. 00209000
  224. * 00210000
  225. * (J) 1403-1443-3211-3203 PRINTERS 00211000
  226. * CHANNEL 9 - LOCATE THE NEXT CCW ADDRESS 00212000
  227. * AND RETURN TO IOS TO RESTART THE DEVICE. 00213000
  228. * 00214000
  229. * (K) 2520-2540 PUNCHES 00215000
  230. * EQUIPMENT CHECKS - THE CCW ADDRESS IS LOCATED 00216000
  231. * TO REPUNCH THE LAST TWO CARDS ON THE FIRST 00217000
  232. * EQUIPMENT CHECK, RESTART THE OPERATION, IF RETRY 00218000
  233. * FAILS, RETRY THE FAILING CCW, AFTER 20 00219000
  234. * CONSECUTIVE RETRIES, POST ERROR AS FATAL, 00220000
  235. * GIVE ERROR MESSAGE DMKRSE503I (EQUIP CK) AND ALLOW 00221000
  236. * IOS TO RETURN THE IOBLOK TO THE USER. 00222000
  237. * 00223000
  238. * (L) 3505 READER 00224000
  239. * FORMAT CHECK - THIS ERROR SHOULD NOT 00225000
  240. * ACCURR SINCE SPOOLING DOES NOT USE OMR OR RCE, 00226000
  241. * POST THE ERROR AS FATAL, GIVE ERROR MESSAGE 00227000
  242. * DMKRSE525I (FORMAT CK), AND ALLOW IOS TO 00228000
  243. * RETURN THE IOBLOK TO THE USER. 00229000
  244. * 00230000
  245. * (M) 3505 READER AND 3525 PUNCH - 00231000
  246. * PERMANENT ERROR CHECK - THE OPERATOR HAS 00232000
  247. * PRESSED THE PERMANENT ERROR KEY AND MAKE THE 00233000
  248. * DEVICE READY. POST THE ERROR AS FATAL, 00234000
  249. * GIVE ERROR MESSAGE DMKRSE508I (PERM CK), AND 00235000
  250. * ALLOW IOS TO RETURN THE IOBLOK TO THE USER. 00236000
  251. * 00237000
  252. * (N) 3211 PRINTER 00238000
  253. * CANCEL KEY - POST THE ERROR AS FATAL, GIVE 00239000
  254. * ERROR MESSAGE DMKRSE503I (EQUIP CK), AND ALLOW 00240000
  255. * IOS TO RETURN THE IOBLOK TO THE USER. 00241000
  256. * 00242000
  257. * OUTBOARD RECORDING DATA - THE STANDARD UNIT CHECK 00243000
  258. * RECORD IS RECORDED ON THE IO ERROR RECORDING 00244000
  259. * CYLINDER BY DMKIOE VIA DMKIOS. ADDITIONAL 00245000
  260. * INFORMATION IS REQUIRED FOR CERTAIN ERROR 00246000
  261. * CONDITIONS. 00247000
  262. * 1. THE CONTENTS OF THE FCB BUFFER. 00248000
  263. * 2. THE CONTENTS OF THE UCS BUFFER. 00249000
  264. * 3. THE CHECK DATA FOR THE PRINT LINE BUFFER. 00250000
  265. * 4. THE CONTENTS OF THE PRINT LINE BUFFER. 00251000
  266. * 5. THE FIRST TEN CHARACTERS IN ERROR. 00252000
  267. * THE INFORMATION IS OBTAINED AND STORED 00253000
  268. * IN THE OBR3211 EXTENTION OF THE IOERBLOK. 00254000
  269. * 00255000
  270. * (O) 3203 PRINTER 00255150
  271. * CANCEL KEY - NONE EXISTS ON THIS PRINTER. 00255300
  272. * 00255450
  273. * OUTBOARD RECORDING DATA - SAME AS 3211 00255600
  274. * PRINTER (ABOVE) 00255750
  275. * 00256000
  276. * (P) 3800 PRINTING SUBSYSTEM 00256030
  277. * CANCEL KEY - SAME AS FOR A 3211 00256060
  278. * 00256090
  279. * INTERVENTION REQD - ISSUE MESSAGE DMKRSE242I VIA 00256120
  280. * CALL TO DMKERMSG. IF 'SYSTEM RESTART' IS 00256150
  281. * ALSO INDICATED DO THAT FUNCTION AND THEN 00256180
  282. * RETURN TO IOS WITH IOBERP SET. 00256210
  283. * 00256240
  284. * SYSTEM RESTART REQUIRED - THIS INDICATES THAT 00256270
  285. * THE PAGE BUFFER HAS POSSIBLY BEEN DESTROYED. 00256300
  286. * ISSUE MESSAGE DMKRSE255I SHOWING THE PAGE 00256330
  287. * BACKUP COUNT AND HOLD AND REQUEUE EACH 00256360
  288. * FILE ON THE DELAYED PURGE QUEUE ISSUING 00256390
  289. * DMKRSE252I FOR EACH ONE SO REQUEUED 00256420
  290. * 00256450
  291. * EQUIPMENT CHECK (INTERNAL ERROR LOG FULL) - 00256480
  292. * CALL DMKRSESD TO DO THE 'SENSE ERROR LOG' 00256510
  293. * WHICH WILL CLEAR THE EQUIPMENT CHECK AND 00256540
  294. * THEN RESTART THE CCW CHAIN. 00256570
  295. * 00256600
  296. * LOAD CHECK - IF IT IS AN FCB-FORMST MISMATCH, 00256630
  297. * AND DMKTCS IS IN CONTROL, INDICATE THAT FACT 00256660
  298. * BY PLACING 'FCBM' IN IOBMISC2. IF ANY OTHER 00256690
  299. * CHECK INDICATING BAD LOAD MODULES, PLACE 00256720
  300. * 'BADM' IN IOBMISC2. OTHERWISE IGNORE LD CHK. 00256750
  301. * 00256780
  302. * OUTBOARD RECORDING DATA - SAME AS 3211 00256810
  303. * 00257000
  304. * 00 - INTERFACE DISCONNECT 00258000
  305. * 01 - STOP OR STACK OR NORMAL TERMINATION 00259000
  306. * 10 - SELECTIVE RESET 00260000
  307. * 11 - SYSTEM RESET 00261000
  308. * 00262000
  309. * 8. SEQUENCE CODE BITS 5,6 AND 7 OF BYTE 3 00263000
  310. * 00264000
  311. * 000 - A CHANNEL DETECTED ERROR ACCURRED DURING THE 00265000
  312. * OF A TEST I/O INSTRUCTION. 00266000
  313. * 00267000
  314. * 001 - COMMAND OUT WITH A NON-ZERO COMMAND BYTE 00268000
  315. * ON BUS OUT HAS BEEN SENT BY THE CHANNEL, 00269000
  316. * BUT DEVICE STATUS HAS NOT YET BEEN ANALYZED 00270000
  317. * BY THE CHANNEL. 00271000
  318. * 00272000
  319. * 010 - THE COMMAND HAS BEEN ACCEPTED BY THE DEVICE BUT NO 00273000
  320. * DATA HAS BEEN TRANSFERRED. 00274000
  321. * 00275000
  322. * 011 - AT LEAST ONE BYTE OF DATA HAS BEEN TRANSFERRED 00276000
  323. * OVER THE INTERFACE. 00277000
  324. * 00278000
  325. * 100 - THE COMMAND IN THE CURRENT CCW HAS EITHER NOT YET 00279000
  326. * BEEN SENT TO THE DEVICE OR ELSE WAS SENT BUT NOT 00280000
  327. * ACCEPTED BY THE DEVICE. 00281000
  328. * 00282000
  329. * 101 - THE COMMAND HAS BEEN ACCEPTED, BUT DATA TRANSFER IS 00283000
  330. * UNPREDICTABLE. 00284000
  331. * 00285000
  332. * 110 - RESERVED. 00286000
  333. * 00287000
  334. * 111 - RESERVED. 00288000
  335. * 00289000
  336. * RESPONSE - 00290000
  337. * 00291000
  338. * NONE 00292000
  339. * 00293000
  340. * ERROR MESSAGES - 00294000
  341. * 00295000
  342. * DMKRSE242I PRT (CUU) INT REQD, STATUS CODE=(SENSEBYTE4) 00295200
  343. * DMKRSE255I PRT (CUU) PAGE BUFFER DESTROYED, BACKUP 00295400
  344. * PAGE COUNT = (COUNT) 00295600
  345. * DMKRSE252I PRT (CUU) FILE (SPLID) REQUEUED AND HELD 00295800
  346. * DMKRSE500I (TYPE) (CCU) CMD REJECT CMD=(CM) SNS=(SENSE) 00296000
  347. * DMKRSE501A (TYPE) (CCU) INT REQ 00297000
  348. * DMKRSE501I (TYPE) (CCU) INT REQ CMD=(CM) SNS=(SENSE) 00298000
  349. * DMKRSE502I (TYPE) (CCU) BUSOUT CK CMD=(CM) SNS=(SENSE) 00299000
  350. * DMKRSE503I (TYPE) (CCU) EQUIP CK CMD=(CM) SNS=(SENSE) 00300000
  351. * DMKRSE503A (TYPE) (CCU) EQUIP CK CMD=(CM) SNS=(SENSE) 00301000
  352. * DMKRSE504A (TYPE) (CCU) DATA CK CMD=(CM) SNS=(SENSE) 00302000
  353. * DMKRSE504I (TYPE) (CCU) DATA CK CMD=(CM) SNS=(SENSE) 00303000
  354. * DMKRSE505A (TYPE) (CCU) OVERRUN CK CMD=(CM) SNS=(SENSE) 00304000
  355. * DMKRSE508I (TYPE) (CCU) PERM ERROR CMD=(CM) SNS=(SENSE) 00305000
  356. * DMKRSE520I (TYPE) (CCU) CHAN ERROR CMD=(CM) SNS=(SENSE) 00306000
  357. * DMKRSE520A (TYPE) (CCU) CHAN ERROR CMD=(CM) SNS=(SENSE) 00307000
  358. * DMKRSE521I (TYPE) (CCU) NO DEVICE CMD=(CM) SNS=(SENSE) 00308000
  359. * DMKRSE524I (TYPE) (CCU) LOAD-CHECK CMD=(CM) SNS=(SENSE) 00309000
  360. * DMKRSE525I (TYPE) (CCU) FORMAT CK CMD=(CM) SNS=(SENSE) 00310000
  361. * DMKRSE529I (TYPE) (CCU) PARITY CK CMD=(CM) SNS=(SENSE) 00311000
  362. * 00312000
  363. *. 00313000
  364. EJECT 00314000
  365. COPY OPTIONS 00315000
  366. COPY LOCAL OPTIONS 00316000
  367. EJECT 00317000
  368. DMKRSE CSECT 00318000
  369. SPACE 2 00319000
  370. ID DC CL8'DMKRSE' MODULE NAME 00320000
  371. SPACE 2 00321000
  372. EXTRN DMKRSP83,DMKMSWR 00322000
  373. EXTRN DMKIOEST STATISTICAL COUNTER UPDATE @VA03757 00322100
  374. EXTRN DMKIOSQR @V60B9BA 00322200
  375. EXTRN DMKIOESD @V60B9BA 00322300
  376. EXTRN DMKERMSG @V60B9BA 00322400
  377. EXTRN DMKCVTBH @V60B9BA 00322500
  378. EXTRN DMKCVTBD @V60B9BA 00322600
  379. EXTRN DMKRSPPR @V60B9BA 00322700
  380. SPACE 3 00323000
  381. USING PSA,R0 00324000
  382. USING IOERBLOK,R7 00325000
  383. USING RDEVBLOK,R8 00326000
  384. USING IOBLOK,R10 00327000
  385. USING VMBLOK,R11 00328000
  386. USING SAVEAREA,R13 00329000
  387. SPACE 3 00330000
  388. DMKRSERR RELOC 00331000
  389. SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @V4075A0 00331100
  390. SPACE 00332000
  391. SR R0,R0 .. 00333000
  392. L R7,RDEVIOER SET BASE FOR IOERBLOK 00334000
  393. LTR R7,R7 FIRST TIME FOR THIS ERROR ? 00335000
  394. BZ FIRST YES -- IOERBLOK ON RDEVBLOK 00336000
  395. BAL R5,UPDTCSW UPDATE IOERCSW 00337000
  396. ICM R15,B'1111',IOBIOER DOES 2ND IOERBLOK EXIST ? @VA01254 00338000
  397. BZ FIRST0 NO, GO TEST XOB FLAG @VA01254 00339000
  398. TM IOERCSW+5-IOERBLOK(R15),IFCC+CCC+CDC IS CHANNEL @VA01254 00340000
  399. * ERROR INDICATED ? 00341000
  400. BNZ FIRSTDE YES, GO CHAIN IOERBLOK @VA01254 00342000
  401. FIRST0 EQU * @VA01254 00343000
  402. TM IOERFLG1,IOERXERP GETTING DATA FOR XOBR3211 @V386298 00343600
  403. * OR XOBR3203 ?? 00344200
  404. BO UNITCHK YES -- 00345000
  405. TM IOERFLG1,IOERDEPD DEVICE END PENDING FOR THIS DEVICE 00346000
  406. BZ FIRST NO -- TREAT AS FIRST ERROR 00347000
  407. OI IOERFLG1,IOERDERD SET DEVICE END RECEIVED 00348000
  408. FIRSTDE EQU * @VA01254 00349000
  409. LTR R15,R15 DOES 2ND IOERBLOK EXIST ? @VA01254 00350000
  410. BZ EXITDE NO - USE THIS DEVICE END 00351000
  411. ST R15,RDEVIOER CHAIN NEW IOERBLOK FIRST 00352000
  412. ST R7,0(R15) .. 00353000
  413. LR R7,R15 ADDRESS OF NEW IOERBLOK 00354000
  414. ST R0,IOBIOER CLEAR POINTER 00355000
  415. BAL R5,UPDTCSW UPDATE IOERCSW 00356000
  416. TM IOERCSW+5,IFCC+CCC+CDC IS CHANNEL ERROR @VA01254 00357000
  417. * INDICATED ? 00358000
  418. BNZ FATAL ERROR ON ERROR RECOVERY @VA01254 00359000
  419. CLI RDEVTYPE,TYP3800 IS THIS A 3800 PRINTER? @VA11761 00359100
  420. BNE TST3211 NO, GO SEE IF IT IS A 3211 @VA11761 00359110
  421. TM IOERDATA,EQCHK POSSIBLE CANCEL KEY? @VA11761 00359120
  422. BO ER3800A1 YES, TEST FOR CANCEL KEY @VA11761 00359130
  423. TST3211 DS 0H @VA11761 00359140
  424. CLI RDEVTYPE,TYP3211 3211 PRINTER ? @VA00701 00360000
  425. BNE EXITDE NO -- BRANCH @VA00701 00361000
  426. TM IOERDATA+1,X'02' CANCEL KEY ? (3211) @VA00701 00362000
  427. BZ EXITDE NO -- BRANCH @VA00701 00363000
  428. B FATAL ERROR ON ERROR RECOVERY @VA00701 00364000
  429. SPACE 00365000
  430. FIRST L R7,IOBIOER LOAD NEW IOERBLOK 00366000
  431. LTR R7,R7 IS THERE ONE ?? 00367000
  432. BZ FATAL1 NO -- FATAL ERROR 00368000
  433. BAL R5,UPDTCSW UPDATE IOERCSW 00369000
  434. CLC =C'LOADBUF',VMCOMND LOADBUF COMMAND ?? 00370000
  435. BE FIRST1 YES -- RDEVSPL MISSING FOR COMMAND 00371000
  436. ICM R9,B'1111',RDEVSPL ACTIVE FILE ?? 00372000
  437. BZ EREXIT1 NO -- FORGET IT 00373000
  438. FIRST1 LH R1,IOBRCNT UPDATE RESTART COUNT 00374000
  439. LA R1,1(R1) BY ONE 00375000
  440. STH R1,IOBRCNT AND STORE 00376000
  441. L R1,RDEVIOER CHAIN NEW IOERBLOK TO 00377000
  442. ST R7,RDEVIOER RDEVBLOK 00378000
  443. ST R1,IOERPNT .. 00379000
  444. LTR R1,R1 REALLY FIRST TIME ?? @VA03757 00379050
  445. BNZ NOCALL NO, FORGET UPDATING SDR COUNTERS @VA03757 00379100
  446. CLI RDEVTYPE,TYP3505 3505/3525 DEVICES ??? @VA03757 00379150
  447. BE NOCALL YES, FORGET SDR @VA03757 00379200
  448. NI IOERFLG3,X'FF'-IOERREAD RESET FLAG @VA03757 00379250
  449. TM IOERDATA,X'08' DATA CHECK PRESENT ?? @VA03757 00379300
  450. BZ SDRSTAT NO @VA03757 00379350
  451. BAL R5,RDOPCK GO CHECK FOR READ FLAG @VA03757 00379400
  452. SPACE 1 00379450
  453. SDRSTAT EQU * @VA03757 00379500
  454. SLR R1,R1 CLEAR PARAMETER REG @VA03757 00379550
  455. CLI RDEVTYPE,TYP3800 IS IT A 3800 ? @V60B9BA 00379600
  456. BNE NOPARM XFER IF NOT @V60B9BA 00379650
  457. LA R0,PARMLEN LENGTH OF AREA IN DBLWDS @V60B9BA 00379700
  458. CALL DMKFREE GET A STORAGE AREA @V60B9BA 00379750
  459. MVC 0(L'PARM3800,R1),PARM3800 MOVE IN PROTOTYPE @V60B9BA 00379800
  460. TM IOERCSW+5,CDC CHANNEL DATA CHECK @V60B9BA 00379850
  461. BZ *+8 XFER IF NOT @V60B9BA 00379900
  462. MVI 2(R1),X'2F' INCREMENT THIS COUNTER @V60B9BA 00379950
  463. TM IOERCSW+5,CCC CHANNEL CONTROL CHECK ? @V60B9BA 00380000
  464. BZ *+8 XFER IF NOT @V60B9BA 00380050
  465. MVI 3(R1),X'2F' INCREMENT THIS COUNTER @V60B9BA 00380100
  466. TM IOERCSW+5,IFCC INTERFACE CONTROL CHECK ? @V60B9BA 00380150
  467. BZ *+8 XFER IF NOT @V60B9BA 00380200
  468. MVI 4(R1),X'2F' INCREMENT COUNTER @V60B9BA 00380250
  469. CLI IOERDATA+4,X'32' CFS MISFOLD ? @V60B9BA 00380300
  470. BNE *+8 XFER IF NOT @V60B9BA 00380350
  471. MVI 5(R1),X'2F' INCREMENT COUNTER @V60B9BA 00380400
  472. CLI IOERDATA+4,X'42' BTS STACKER CHECK ? @V60B9BA 00380450
  473. BNE *+8 XFER IF NOT @V60B9BA 00380500
  474. MVI 6(R1),X'2F' INCREMENT COUNTER @V60B9BA 00380550
  475. CLI IOERDATA+4,X'41' NO BURST CHECK ? @V60B9BA 00380600
  476. BNE *+8 XFER IF NOT @V60B9BA 00380650
  477. MVI 7(R1),X'2F' INCREMENT COUNTER @V60B9BA 00380700
  478. SR R0,R0 ZERO OUT R0 @V60B9BA 00380750
  479. NOPARM CALL DMKIOEST,AFFINITY @V60B9BA 00380800
  480. LTR R1,R1 WAS A PARAMETER PASSED? @VA09395 00380810
  481. BZ NOCALL XFER IF NOT @VA09395 00380818
  482. LA R0,PARMLEN GET LENGTH TO FRET @VA09395 00380826
  483. CALL DMKFRET FRET THE PARM AREA @VA09395 00380834
  484. SR R0,R0 CLEAR REGISTER 0 @VA09395 00380842
  485. NOCALL EQU * @VA03757 00380850
  486. SPACE 1 00380900
  487. ST R0,IOBIOER CLEAR IOERBLOK POINTER IN IOB 00380950
  488. TM IOBSTAT,IOBCC3 WAS IT CONDITION CODE 3 ON SIO 00381000
  489. BO FATAL1 YES -- FATAL ERROR 00382000
  490. TM IOERCSW+5,IFCC+CCC INTERFACE OR CHANNEL CONTROL CHECK ? 00383000
  491. BNZ CHANERR YES -- CHECK FOR TYPE OF RESTART 00384000
  492. TM IOERCSW+5,CDC CHANNEL DATA CHECK ?? 00385000
  493. BO RETRY1 YES -- RETRY ONCE 00386000
  494. TM IOBCSW+5,CHC CHAINING CHECK ?? 00387000
  495. BO RETRY1 YES - RETRY ONCE 00388000
  496. TM IOBCSW+4,ATTN+CUE+SM TEST IMPOSSIBLE CONDITIONS 00389000
  497. BNZ RETRY1 RETRY ONCE 00390000
  498. SPACE 00391000
  499. SPACE 00392000
  500. TM RDEVFLAG,RDEVTERM+RDEVBACK+RDEVRSTR FLUSH - BACKSPACE 00393000
  501. * OR BACKSPACE FILE ?? 00394000
  502. BZ TESTUC NO -- CHECK FOR UNIT CHECK 00395000
  503. CLC =C'SEP ',IOBMISC2 PRINTING OR PUNCHING SEPARATOR DATA 00396000
  504. BE TESTTERM @VA10631 00397100
  505. CLC =C'TCS ',IOBMISC2 SETTING UP A 3800 ? @V60B9BA 00397300
  506. BNE EXITDE NO -- EXIT FOR IMM BACKSPAC @V60B9BA 00397600
  507. TESTTERM DS 0H @VA10631 00397700
  508. TM RDEVFLAG,RDEVTERM FLUSH REQUESTED ? 00398000
  509. BO FATAL1 YES -- 00399000
  510. TESTUC TM IOERCSW+4,UC UNIT CHECK ?? 00400000
  511. BZ FATAL NO -- FATAL ERROR ALL OTHERS @VW01227 00401000
  512. CLI IOERDATA,X'00' ANY SENSE INFORMATION ?? @VA00701 00402000
  513. BE RETRY1 NO -- RETRY THE OPERATION ONCE @VA00701 00403000
  514. SPACE 00404000
  515. SPACE 2 00405000
  516. UNITCHK EQU * HERE TO TEST SENSE INFORMATION ON UNIT CHECK 00406000
  517. CLI RDEVTYPE,TYP3505 3525 PUNCH OR 3505 READER ?? 00407000
  518. BE ERR35XX YES -- 00408000
  519. TM RDEVTYPC,CLASURO OUTPUT DEVICE ?? 00409000
  520. BO TSTURO YES -- 00410000
  521. * 00411000
  522. * ERROR RECOVERY FOR 2540 AND 2501 READERS 00412000
  523. * 00413000
  524. TM IOERDATA,EQCHK EQUIPMENT CHECK ?? 00414000
  525. BO DELAY2 YES -- OPERATOR INTERVENTION 00415000
  526. * REQUIRED 00416000
  527. TM IOERDATA,INTREQ INTERVENTION REQUIRED ??? 00417000
  528. BO DELAY YES -- WAIT FOR IT 00418000
  529. TM IOERDATA,BUSOUT BUSOUT CHECK ??? 00419000
  530. BO RETRY1 YES -- RETRY ONCE 00420000
  531. TM IOERDATA,DATACHK+4 DATA CHECK ?? OVERRUN ?? 00421000
  532. BNZ DELAY2 YES -- OPERATOR INTERVENTION 00422000
  533. B FATAL1 ALL OTHERS FATAL ERROR 00423000
  534. SPACE 00424000
  535. SPACE 00425000
  536. TSTURO EQU * OUTPUT DEVICES 00426000
  537. TM RDEVTYPE,TYP3211 IS IT A 3203/3211 PRINTER?? @V386298 00426700
  538. BO ERR3211 YES--BRANCH INTO EXISTING @V386298 00427400
  539. * 3211 ERROR LOGIC 00428100
  540. CLI RDEVTYPE,TYP3800 IS IT A 3800 PRINTER ? @V60B9BA 00428400
  541. BE ERR3800 XFER IF SO @V60B9BA 00428700
  542. SPACE 00429000
  543. TM IOERDATA,INTREQ+EQCHK INTERVENTION AND @VA00701 00430000
  544. * EQUIPMENT CK 00431000
  545. BNO TESTTYPE NO -- CHECK FOR PUNCH OR PRINTER @VA00701 00432000
  546. TM IOBSTAT,IOBCC1 STATUS STORED ON INITIAL @VA00701 00433000
  547. * SELECTION 00434000
  548. BO DELAY2 YES -- FOR OPERATOR ACTION @VA00701 00435000
  549. TESTTYPE TM RDEVTYPE,TYPPUN 2540P ?? PUNCH @VA00701 00436000
  550. BO TSTPUN YES - 00437000
  551. * 00438000
  552. * 1403 AND 1443 PRINTER ERROR ROUTINE 00439000
  553. * 00440000
  554. TM IOERDATA,EQCHK EQUIPMENT CHECK ?? 00441000
  555. BO RETRY1 YES -- RETRY ONCE 00442000
  556. CLI RDEVTYPE,TYP1443 1443 PRINTER 00443000
  557. BE TSTPRTNR YES -- GO TEST FOR INTERVENTION 00444000
  558. TM IOERDATA,4 UCS GEN STOR PARITY ERROR ?? (1403) 00445000
  559. BO FATAL YES -- FATAL ERROR 00446000
  560. TSTPRTNR TM IOERDATA,INTREQ INTERVENTION REQUIRED ?? 00447000
  561. BO DELAY YES -- WAIT FOR IT 00448000
  562. TM IOERDATA,BUSOUT BUSOUT CHECK ?? 00449000
  563. BO RETRY1 YES -- RETRY ONCE 00450000
  564. TM IOERDATA,1 CHANNEL 9 ??? 00451000
  565. BO IGNORE YES -- IGNORE 00452000
  566. CLI RDEVTYPE,TYP1443 1443 PRINTER ?? 00453000
  567. BE FATAL1 YES -- FATAL ERROR 00454000
  568. TM IOERDATA,DATACHK DATA CHECK ??? (1403) 00455000
  569. BO NXTDELAY YES -- GET NEXT CCW 00456000
  570. B FATAL1 FATAL ERROR ALL OTHERS 00457000
  571. SPACE 00458000
  572. TSTPUN EQU * HERE FOR 2540 AND 2520 PUNCH 00459000
  573. TM IOERDATA,EQCHK EQUIPMENT CHECK ??? 00460000
  574. BZ TSTPUNNR NO -- 00461000
  575. BAL R5,GETRCAW GET RESTART CAW 00462000
  576. CLI IOBRCNT,X'14' 20 CONTINOUS ERRORS ??? 00463000
  577. BH FATAL YES -- 00464000
  578. B RETRY RETRY THE OPERATION 00465000
  579. TSTPUNNR TM IOERDATA,INTREQ INTERVENTION REQUIRED ?? 00466000
  580. BO DELAY YES -- WAIT FOR IT 00467000
  581. TM IOERDATA,BUSOUT BUSOUT CHECK ??? 00468000
  582. BO RETRY1 YES -- RETRY ONCE 00469000
  583. B FATAL1 COMMAND REJECT AND ALL OTHERS 00470000
  584. SPACE 00471000
  585. SPACE 3 00472000
  586. NXTDELAY EQU * HERE TO GET NEXT CCW AND OPERATOR 00473000
  587. * INTERVENTION 00474000
  588. CLC =C'SEP ',IOBMISC2 SEPARATOR ROUTINE ? 00475000
  589. BE FATAL YES - FATAL ERROR CONDITION 00476000
  590. CLC =C'TCS ',IOBMISC2 3800 SETUP ROUTINE ? @V60B9BA 00476300
  591. BE FATAL YES - FATAL ERROR @V60B9BA 00476600
  592. BAL R5,IGNORE1 GET NEXT CCW 00477000
  593. B DELAY3 AND GIVE INTERVENTION MESSAGE 00478000
  594. SPACE 2 00479000
  595. DELAY EQU * HERE TO SET UP FOR DE FROM DEVICE AFTER OPERATOR 00480000
  596. * HAS READIED IT FOLLOWING AN ERROR 00481000
  597. OI IOERFLG1,IOERPEND INDICATE DEVICE END AND SHORT 00482000
  598. * MESSAGE 00483000
  599. OI IOERFLG2,IOERCEMD DO NOT RECORD ERROR 00484000
  600. DELAY2 BAL R5,GETRCAW GET RESTART CAW 00485000
  601. DELAY3 TM VMOSTAT,VMCF CONSOLE FUNCTION ? @VW01227 00486000
  602. BZ DELAY4 NO -- @VW01227 00487000
  603. CLC =C'LOADBUF',VMCOMND LOADBUFF COMMAND ? @VW01227 00488000
  604. BE FATAL YES - DON'T HANG USER @VW01227 00489000
  605. DELAY4 CLI IOBRCNT,X'14' 20 CONTINOUS ERRORS ? @VW01227 00490000
  606. BH FATAL YES -- FATAL ERROR 00491000
  607. ST R1,IOBRCAW SET UP RESTART CCW 00492000
  608. OI IOERFLG1,IOERDEPD SET DEVICE END PENDING 00493000
  609. MVI IOERIND3,IOERACT INDICATE OPERATOR ACTION 00494000
  610. CLI RDEVTYPE,TYP3800 IS IT A 3800 PRINTER ? @V60B9BA 00494300
  611. BNE DELAY4A XFER IF NOT (PRINT MSG) @VA09266 00494500
  612. TM SAVEWRK1,X'80' 3800 MSG PRINTED? @VA09266 00494700
  613. BO DELAY4B XFER IF SO @VA09266 00494900
  614. DELAY4A BAL R5,MSGERR INFORM OPERATOR @VA09266 00495100
  615. DELAY4B TM IOERFLG1,IOERDERD DEVICE END RECEIVED ?? @VA09266 00495300
  616. BO EXITDE YES -- WHILE PRINTING MSG @VA00701 00497000
  617. NI IOBFLAG,X'FF'-IOBRSTRT RESET RESTART FLAG 00498000
  618. NI IOBSTAT,X'FF'-IOBFATAL RESET FATAL FLAG 00499000
  619. OI RDEVSTAT,RDEVNRDY INDICATE INTERVENTION REQUIRED 00500000
  620. B EREXIT EXIT 00501000
  621. SPACE 3 00502000
  622. IGNORE1 EQU * HERE TO GET NEXT CCW 00503000
  623. SR R1,R1 CLEAR CCW ADDRESS REG 00504000
  624. ICM R1,B'0111',IOERCSW+1 POINT TO NEXT CCW 00505000
  625. CLI 0(R1),X'08' IS IT A TIC ?? 00506000
  626. BNE *+8 NO - USE THIS CCW 00507000
  627. ICM R1,B'0111',1(R1) GET TRANSFER ADDRESS 00508000
  628. BZ FATAL1 RESTART ADDRESS INVALID @VA00701 00509000
  629. ST R1,IOBRCAW STORE RESTART CAW 00510000
  630. BR R5 RETURN TO CALLER 00511000
  631. SPACE 00512000
  632. IGNORE EQU * HERE TO IGNORE THE ERROR 00513000
  633. OI IOERFLG2,IOERCEMD DO NOT RECORD IOERBLOK 00514000
  634. IGNORE2 BAL R5,IGNORE1 GET NEXT CCW 00515000
  635. EXITDE NI IOBFLAG,X'FF'-(IOBERP+IOBRSTRT) RESET FLAGS 00516000
  636. NI RDEVSTAT,X'FF'-RDEVNRDY RESET INTERVENTION REQUIRED FLAG 00517000
  637. NI IOERFLG1,X'FF'-IOERPEND RESET PENDING FLAG 00518000
  638. CLC =C'SEP ',IOBMISC2 PRINTING SEPARATOR PAGE 00519000
  639. BE RETRYDE YES -- DO NOT FLUSH OR BACKSPACE 00520000
  640. CLC =C'TCS ',IOBMISC2 SETTING UP THE 3800 PRINTER @V60B9BA 00520300
  641. BE RETRYDE YES - DON'T FLSH OR BACKSPAC@V60B9BA 00520600
  642. TM RDEVFLAG,RDEVTERM+RDEVBACK+RDEVRSTR FLUSH OR BACKSPACE 00521000
  643. BZ RETRYDE NO -- 00522000
  644. OI IOBCSW+4,CE FORCE CHANNEL END FOR DMKRSP 00523000
  645. MVC IOBCSW(4),IOBRCAW SET CSW FOR DMKRSP BACKSPACE 00524000
  646. OI IOERFLG2,IOERCEMD DO NOT RECORD IOERBLOK 00525000
  647. B EREXIT1 00526000
  648. SPACE 3 00527000
  649. RETRY1 EQU * HERE TO DO IMMEDIATE RETRY 00528000
  650. BAL R5,GETRCAW GO CALCULATE RESTART CAW 00529000
  651. CLI IOBRCNT,X'01' RETRYED ONCE ?? 00530000
  652. BH FATAL YES -- FATAL ERROR 00531000
  653. RETRY ST R1,IOBRCAW PUT RESTART CAW IN IOBLOK 00532000
  654. RETRYDE OI IOBFLAG,IOBRSTRT REQUEST RESTART 00533000
  655. NI IOBFLAG,X'FF'-IOBERP RESET ERP INCONTROL 00534000
  656. B EREXIT2 AND EXIT TO IOS 00535000
  657. SPACE 2 00536000
  658. FATAL1 LTR R7,R7 IOERBLOK PRESENT ?? @VA00701 00537000
  659. BZ *+8 NO - @VA00701 00538000
  660. OI IOERFLG2,IOERCEMD DO NOT RECORD THIS ERROR @VA00701 00539000
  661. SPACE 00540000
  662. FATAL EQU * HERE TO INDICATE FATAL ERROR TO IOSUPP 00541000
  663. OI IOBSTAT,IOBFATAL SET FATAL FLAG 00542000
  664. NI RDEVSTAT,X'FF'-RDEVNRDY RESET NOT READY FLAG 00543000
  665. LTR R7,R7 IOERBLOK PRESENT ?? 00544000
  666. BZ EREXIT1 NO - FORGET MESSAGE 00545000
  667. NI IOERFLG1,X'FF'-IOERPEND FORCE LONG MESSAGE FORMAT 00546000
  668. MVI IOERIND3,IOERINFO ACTION CODE OF I 00547000
  669. BAL R5,MSGERR NOTIFY OPERATOR 00548000
  670. EREXIT1 EQU * 00549000
  671. NI IOBFLAG,X'FF'-(IOBRSTRT+IOBERP) RESET FLAGS 00550000
  672. CLI RDEVTYPE,TYP3211 3211 PRINTER ?? 00551000
  673. BNE EREXIT2 NO -- 00552000
  674. TM IOBSTAT,IOBFATAL FATAL I/O ERROR ?? 00553000
  675. BZ EREXIT2 NO -- 00554000
  676. LTR R7,R7 IOERBLOK PRESENT ?? 00555000
  677. BZ EREXIT2 NO - EXIT 00556000
  678. TM IOERCSW+5,IFCC+CCC+CDC IS CHANNEL ERROR @VA01254 00557000
  679. * INDICATED ? 00558000
  680. BNZ EREXIT2 YES, GO EXIT @VA01254 00559000
  681. TM IOERDATA+1,X'80' COMMAND RETRY ?? 00560000
  682. BZ EREXIT2 NO -- 00561000
  683. CLI RDEVTYPE,TYP3203 IS IT A 3203 PRINTER ?? @V386298 00561300
  684. BE EREXIT2 YES--DON'T DO A RESET @V386298 00561600
  685. L R1,=A(DMKRSP83) ADDRESS OF 3211 CONTROL UNIT 00562000
  686. ST R1,IOBRCAW RESET CCW AND STORE IN RESTART CAW 00563000
  687. OI IOBFLAG,IOBRSTRT INDICATE RESTART 00564000
  688. EREXIT2 MVI IOBRCNT+1,X'00' RESET COUNT TO ZERO 00565000
  689. SPACE 3 00566000
  690. EREXIT EQU * EXIT FROM RSERR 00567000
  691. ICM R1,B'1111',IOBIOER ADDRESS OF IOERBLOK 00568000
  692. BZ EXIT NO -- 00569000
  693. TM IOERCSW+5-IOERBLOK(R1),IFCC+CCC+CDC IS CHANNEL @VA01254 00570000
  694. * ERROR INDICATED ? 00571000
  695. BZ CKEND NO, GO FRET IOERBLOK @VA01254 00572000
  696. LR R3,R1 SAVE IOERBLOK POINTER @VA01254 00573000
  697. L R1,IOERCCRA-IOERBLOK(R3) CHANNEL REC ADDR @V508690 00574500
  698. L R0,IOERCCRL-IOERBLOK(R3) CHANNEL REC LENGTH @V508690 00575500
  699. CALL DMKFRET RELEASE STORAGE @VA01254 00578000
  700. LR R1,R3 GET IOERBLOK POINTER @VA01254 00579000
  701. CKEND EQU * @VA01254 00580000
  702. LA R0,IOERSIZE SIZE OF BLOK 00581000
  703. AH R0,IOEREXT-IOERBLOK(,R1) ADD LENGTH OF EXTENSION 00582000
  704. CALL DMKFRET FRET IOERBLOK 00583000
  705. XC IOBIOER(4),IOBIOER CLEAR POINTER IN IOBLOK 00584000
  706. EXIT EQU * 00585000
  707. LTR R7,R7 IOERBLOK PRESENT ?? 00586000
  708. BZ *+8 NO - 00587000
  709. NI IOERFLG1,X'FF'-IOERERP RESET DMKRSERR IN CONTROL 00588000
  710. SVC 16 RETURN TO CALLER'S CALLER (DMKIOS) 00589000
  711. EXIT 00590000
  712. EJECT 00590050
  713. RDOPCK EQU * @VA03757 00590100
  714. TM RDEVTYPC,CLASURI INPUT DEVICE ?? @VA03757 00590150
  715. BZR R5 NO, RETURN TO IN LINE CODE @VA03757 00590200
  716. L R1,IOERCSW GET FAILING CCW PLUS 8 @VA03757 00590250
  717. LA R1,0(,R1) CLEAR HI-ORDER BYTE @VA03757 00590300
  718. S R1,F8 GET FAILING CCW ADDRESS @VA03757 00590350
  719. BM NOTREAD NO CCW @VA03757 00590400
  720. TM 0(R1),X'01' CONTROL OP @VA03757 00590450
  721. BO NOTREAD YES @VA03757 00590500
  722. OI IOERFLG3,IOERREAD MUST BE READ OP @VA03757 00590550
  723. NOTREAD EQU * @VA03757 00590600
  724. BR R5 RETURN TO IN LINE CODE @VA03757 00590650
  725. SPACE 2 00590700
  726. SPACE 3 00591000
  727. GETRCAW EQU * HERE TO CALCULATE RESTART CAW 00592000
  728. IC R0,IOBRCNT GET ERROR RETRY COUNT 00593000
  729. AL R0,F1 UPDATE BY ONE 00594000
  730. STC R0,IOBRCNT AND STORE 00595000
  731. L R1,IOBCAW POINT TO 1ST CCW IN BUFFER 00596000
  732. TM IOBFLAG,IOBRSTRT IS THIS A RESTART CONDITION ?? 00597000
  733. BZ *+8 NO - IOBRCAW NOT VALID 00598000
  734. L R1,IOBRCAW YES - USE RESTART CAW 00599000
  735. LTR R1,R1 VALID RESTART CAW ? @VA00701 00600000
  736. BZ FATAL1 NO - FATAL ERROR @VA00701 00601000
  737. TM IOBSTAT,IOBCC1 STATUS STORED ON INITIAL SELECTION? 00602000
  738. BCR 1,R5 YES -- RESTART AT 1ST CCW 00603000
  739. L R1,IOERCSW GET ADDRESS OF LAST USED CCW+8 00604000
  740. LA R1,0(R1) CLEAR HIGH BYTE 00605000
  741. LTR R1,R1 CCW ADDRESS PRESENT 00606000
  742. BNZ CSWOK YES -- OK 00607000
  743. ICM R1,B'1111',IOBRCAW NO - USE RESTART CAW @VA00701 00608000
  744. BZ FATAL1 INVALID IOBRCAW ADDRESS @VA00701 00609000
  745. BR R5 .. 00610000
  746. CSWOK S R1,F8 AND POINT TO CCW 00611000
  747. CL R1,IOBRCAW ERROR ON SAME CCW ?? 00612000
  748. BE *+8 YES -- 00613000
  749. MVI IOBRCNT,X'01' SET RETRY COUNT TO ONE 00614000
  750. CLI RDEVTYPC,CLASURI INPUT DEVICE ?? 00615000
  751. BCR 8,R5 YES - CAW IS CORRECT 00616000
  752. CLI RDEVTYPE,TYP2520P STAND ALONE 2520 PUNCH ?? 00617000
  753. BCR 8,R5 YES CAW IS CORRECT FOR 2520 @VA05776 00618000
  754. CLI RDEVTYPE,TYP2540P IS IT 2540 PUNCH ?? 00619000
  755. BCR 7,R5 NO -- CAW IS CORRECT 00620000
  756. TM IOERDATA,EQCHK WAS IT EQUIPMENT CHECK ON PUNCH? 00621000
  757. BCR 8,R5 NO -- CAW IS CORRECT 00622000
  758. * IF ERROR IS ON SAME CCW RESTART WITH THAT CCW 00623000
  759. CL R1,IOBRCAW IS ERROR ON SAME CCW ? 00624000
  760. BCR 8,R5 YES - CAW IS CORRECT 00625000
  761. * HERE ON EQUIPMENT CHECK ON WRITE TO PUNCH -- EQUIPMENT CHECK 00626000
  762. * IS FOR PREVIOUS CARD PUNCHED -- MUST BACK UP AND REPUNCH 00627000
  763. SPACE 00628000
  764. TM RDEVFLAG,RDEVACNT PUNCHING ACCOUNTING CARDS ?? 00629000
  765. BZ TSTSEP NO TEST FOR SEPARATOR CARD 00630000
  766. L R1,ACNTBACK-ACNTBLOK(R1) GET ADDRESS OF PREVIOUS CCW 00631000
  767. LTR R1,R1 BACK CHAIN ADDRESS ZEROES ?? 00632000
  768. BNZ *+8 NO -- GOOD RESTART ADDRESS 00633000
  769. L R1,IOBCAW RESTART WITH IOB CAW 00634000
  770. BR R5 RETURN TO CALLER 00635000
  771. SPACE 00636000
  772. TSTSEP CLC IOBMISC2(4),=C'SEP ' PUNCHING SEPARATOR CARDS 00637000
  773. BNE NORMERR NO -- NORMAL ERROR 00638000
  774. S R1,F8 BACK UP TO PREVIOUS CCW 00639000
  775. CL R1,IOBCAW ADDRESS BELOW IOB CAW ?? 00640000
  776. BNL *+8 NO -- GOOD RESTART ADDRESS 00641000
  777. L R1,IOBCAW YES - RESTART WITH IOBCAW 00642000
  778. BR R5 RETURN TO CALLER 00643000
  779. SPACE 00644000
  780. NORMERR L R1,8(R1) PICK UP TIC ADDRESS 00645000
  781. S R1,F4 BACK UP FOUR TO BACK POINTER 00646000
  782. LA R1,0(R1) CLEAR TIC OP-CODE 00647000
  783. L R1,0(R1) ADDRESS OF -2 BUFFER CCW 00648000
  784. LTR R1,R1 VALID ADDRESS ?? 00649000
  785. BZ FATAL NO - CAN'T RESTART 00650000
  786. SPACE 2 00651000
  787. UPDTCSW EQU * HERE TO UPDATE IOERCSW ON CONDITION CODE 1 00652000
  788. TM IOBSTAT,IOBCC1 STATUS STORED ON SIO ?? 00653000
  789. BCR 8,R5 NO -- FULL CSW PRESENT 00654000
  790. UPDTCSW1 CLC IOERCSW+1(3),ZEROES CCW ADDRESS PRESENT IN CSW ?? 00655000
  791. BCR 7,R5 YES -- 00656000
  792. L R15,IOBCAW GET CAW 00657000
  793. TM IOBFLAG,IOBRSTRT WAS THIS A RESTART ?? 00658000
  794. BZ *+8 NO -- USE IOBCAW 00659000
  795. L R15,IOBRCAW RESTART - USE IOBRCAW 00660000
  796. LTR R15,R15 ADDRESS PRESENT ? 00661000
  797. BCR 8,R5 NO - RETURN TO CALLER 00662000
  798. AL R15,F8 UPDATE TO CCW + 8 00663000
  799. STCM R15,B'0111',IOERCSW+1 FILL IN CSW FOR CONDITION 1 00664000
  800. BR R5 RETURN TO CALLER 00665000
  801. SPACE 2 00666000
  802. SPACE 3 00667000
  803. MSGERR EQU * HERE TO NOTIFY OPERATOR OF IO ERROR OR ACTION 00668000
  804. NI IOERIND3,X'FF'-(IOERIGN+IOERETRY) RESET FLAGS 00669000
  805. * 00670000
  806. * MATCH MESSAGE NUMBER TO ERROR 00671000
  807. * 00672000
  808. MVI IOERNUM,21 NO DEVICE MESSAGE 00673000
  809. TM IOBSTAT,IOBCC3 CONDITION CODE 3 00674000
  810. BO IDFOUND YES -- 00675000
  811. MVI IOERNUM,20 CHANNEL ERROR MESSAGE 00676000
  812. TM IOBCSW+5,CDC+CCC+IFCC+CHC+PRGC+PRTC+PCI CHANNEL ERRORS ? 00677000
  813. BNZ IDFOUND YES -- 00678000
  814. SR R1,R1 CLEAR REG 00679000
  815. MVI IOERNUM,3 EQUIPMENT CHECK MESSAGE 00680000
  816. ICM R1,B'0001',IOERDATA FIRST SENSE BYTE 00681000
  817. BZ IDFOUND FORCE CHANNEL CHECK MESSAGE 00682000
  818. IC R14,RDEVTYPE DEVICE TYPE 00683000
  819. LA R15,MSGTABLE-3 ADDRESS OF MESSAGE TABLE 00684000
  820. IDLOOP A R15,F3 POINT TO NEXT ENTRY 00685000
  821. EX R14,TMTYPE CORRECT DEVICE TYPE ?? 00686000
  822. BNO IDLOOP NO -- 00687000
  823. EX R1,TMERR ERROR MATCH ?? 00688000
  824. BZ IDLOOP NO -- 00689000
  825. MVC IOERNUM(1),2(R15) MOVE IN MSG ID 00690000
  826. IDFOUND ICM R0,B'1110',ID+3 INSERT MODULE ID 00691000
  827. CLI IOERNUM,1 INTERVENTION REQ MSG ? @VA00701 00692000
  828. BE *+8 YES - SHORT OR LONG MSG FORMAT @VA00701 00693000
  829. NI IOERFLG1,X'FF'-IOERPEND FORCE LONG MSG FORMAT @VA00701 00694000
  830. CALL DMKMSWR,AFFINITY @V4075A0 00695100
  831. BR R5 00696000
  832. SPACE 3 00697000
  833. ERR35XX EQU * HERE FOR 3505 AND 3525 ERROR RECOVERY 00698000
  834. TM IOERDATA,1 PERMANENT ERROR ?? 00699000
  835. BO FATAL1 YES -- 00700000
  836. SPACE 00701000
  837. SENSE1 TM IOERDATA+1,X'80' PERMANENT ERROR ?? 00702000
  838. BO FATAL1 YES -- FATAL ERROR 00703000
  839. TM IOERDATA+1,X'10' RETRY AFTER INTERVENTION REQ ?? 00704000
  840. BZ RETRY1 NO -- RETRY ONCE 00705000
  841. TM IOERDATA,EQCHK EQUIPMENT CHECK ? 00706000
  842. BO DELAY2 YES -- 00707000
  843. TM IOERDATA,INTREQ INTERVENTION REQUIRED ?? 00708000
  844. BO DELAY YES - 00709000
  845. B DELAY2 -- 00710000
  846. SPACE 2 00711000
  847. ERR3211 EQU * HERE TO GET 3211 OR 3203 PRINTER ERROR @V386298 00712000
  848. * INFORMATION FOR ERROR RECORDING 00713000
  849. SPACE 00714000
  850. LA R5,GETDATA SET UP RETURN ADDRESS 00715000
  851. CLI IOEREXT+1,XOBREXT OBR3211 BLOK PRESENT ?? 00716000
  852. BCR 8,R5 YES -- 00717000
  853. XC SAVEWRK1(4),SAVEWRK1 CLEAR SAVEWRK1 AREA 00718000
  854. TM IOERDATA,DATACHK DATA CHECK ERROR ?? 00719000
  855. BZ TEST1 NO -- 00720000
  856. * 00721000
  857. * PROCESS ROUTINES RT1, RT2, RT3 AND RT5 FOR UCSB DATA 00722000
  858. * 00723000
  859. MVI SAVEWRK1,XOBRRT1+XOBRRT2+XOBRRT3+XOBRRT5 00724000
  860. TM IOERDATA+1,X'10' LINE PLACEMENT ERROR ?? FCB 00725000
  861. BCR 8,R5 NO -- ALL SET UP FOR UCSB ERROR 00726000
  862. MVI SAVEWRK1,XOBRRT6 DO ROUTINE RT6 FOR FCB ERROR 00727000
  863. BR R5 GO GET ERROR DATA 00728000
  864. SPACE 00729000
  865. TEST1 TM IOERDATA,X'22' LOAD CHECK ? BUS CHECK ? 00730000
  866. BZ TEST2 NO -- 00731000
  867. L R6,IOERCSW LOCATE CCW OP-CODE 00732000
  868. LA R6,0(R6) .. 00733000
  869. SL R6,F8 .. 00734000
  870. BC 6,TEST2 NO ADDRESS CHECK NEXT 00735000
  871. MVI SAVEWRK1,XOBRRT6 ROUTINE FOR FCB DATA 00736000
  872. CLI 0(R6),X'63' LOAD FCB OP-CODE ?? 00737000
  873. BCR 8,R5 YES -- 00738000
  874. MVI SAVEWRK1,XOBRRT5 ROUTINE FOR UCSB DATA 00739000
  875. CLI 0(R6),X'FB' LOAD UCSB OP-CODE 00740000
  876. BCR 8,R5 YES - 00741000
  877. TM IOERDATA+3,X'A0' FCB OR UCSB PARITY CHECK ? 00742000
  878. BNZ TEST3 YES -- 00743000
  879. MVI SAVEWRK1,XOBRRT1+XOBRRT2+XOBRRT3 ROUTINE 1 2 3 00744000
  880. BR R5 .. 00745000
  881. SPACE 00746000
  882. TEST2 TM IOERDATA+1,X'02' MECHANICAL MOTION ERROR ?? 00747000
  883. BZ TEST3 NO -- 00748000
  884. * 00749000
  885. * SET UP FOR ROUTINES RT1, RT2, RT3, RT4, AND RT5 00750000
  886. * 00751000
  887. MVI SAVEWRK1,XOBRRT1+XOBRRT2+XOBRRT3+XOBRRT4+XOBRRT5 00752000
  888. BR R5 GET ERROR DATA 00753000
  889. SPACE 00754000
  890. TEST3 MVI SAVEWRK1,XOBRRT5 ROUTINE 5 00755000
  891. TM IOERDATA+3,X'80' UCSB PARITY ??? 00756000
  892. BCR 1,R5 YES -- GET ERROR DATA 00757000
  893. MVI SAVEWRK1,XOBRRT6 ROUTINE 6 00758000
  894. TM IOERDATA+3,X'20' FCB PARITY ?? 00759000
  895. BCR 1,R5 YES -- GET FCB DATA 00760000
  896. * ROUTINES 1, 2, AND 3. 00761000
  897. MVI SAVEWRK1,XOBRRT1+XOBRRT2+XOBRRT3 00762000
  898. TM IOERDATA+3,X'58' PLB PARITY ? COIL PROTECT ? 00763000
  899. * HAMMER FILE CHECK ? 00764000
  900. BCR 7,R5 YES -- 00765000
  901. TM IOERDATA,X'04' BUFFER PARITY CHECK ?? 00766000
  902. BZ TEST3211 NO -- DO NORMAL RECORDING 00767000
  903. MVI SAVEWRK1,XOBRRT6 ROUTINE FOR FCB DATA 00768000
  904. TM IOERDATA+1,X'10' PRINT LINE PLACEMENT ?? 00769000
  905. BCR 1,R5 YES -- GET FCB DATA 00770000
  906. MVI SAVEWRK1,XOBRRT5 ROUTINE FOR UCSB DATA 00771000
  907. SPACE 2 00772000
  908. GETDATA EQU * HERE TO SET CCW TO GET ERROR DATA FROM PRINTER 00773000
  909. SPACE 00774000
  910. OI IOERFLG1,IOERXERP INDICATE ERP GETTING OBR DATA 00775000
  911. CLI IOEREXT+1,XOBREXT XOBR3211 BLOK PRESENT ?? 00776000
  912. BE RT1 YES -- CONTINUAL 00777000
  913. LA R0,XOBRSIZE SIZE OF XOBR3211 BLOK 00778000
  914. CALL DMKFREE GET STORAGE 00779000
  915. LA R0,XOBREXT SIZE OF XOBR3211 BLOK 00780000
  916. STH R0,IOEREXT SAVE LENGTH 00781000
  917. LR R9,R1 SAVE ADDRESS 00782000
  918. LR R0,R9 CLEAR XOBR3211 00783000
  919. LA R1,XOBRSIZE*8 .. 00784000
  920. SR R14,R14 .. 00785000
  921. SR R15,15 .. 00786000
  922. MVCL R0,R14 CLEAR AREA 00787000
  923. SPACE 00788000
  924. LR R1,R7 OLD IOERBLOK ADDRESS 00789000
  925. LR R7,R9 ADDRESS OF NEW IOERBLOK EXT 00790000
  926. MVC 0(IOERSIZE*8,R7),0(R1) COPY IOERBLOK 00791000
  927. ST R7,RDEVIOER SAVE NEW IOERBLOK ADDRESS 00792000
  928. LA R0,IOERSIZE SIZE OF NORMAL IOERBLOK 00793000
  929. CALL DMKFRET FRET OLD BLOCK 00794000
  930. SPACE 00795000
  931. MVC XOBRSTAT(1),SAVEWRK1 SAVE ERROR ROUTINE STATUS 00796000
  932. MVC XOBRMIS2(4),IOBRCAW SAVE RESTART CAW 00797000
  933. MVC XOBRMIS1(2),IOBFLAG SAVE IOBFLAG AND STAT 00798000
  934. LA R9,4 NUMBER OF CCWS 00799000
  935. LA R14,CKRDCCW ADDRESS OF FIRST CCW 00800000
  936. LA R15,XOBRCCW1 ADDRESS OF AREA IN IOERBLOK EXT 00801000
  937. GETCCW LM R5,R6,0(R14) GET CCW 00802000
  938. ALR R5,R7 UPDATE DATA ADDRESS 00803000
  939. STM R5,R6,0(R15) STORE CCW IN XOBRCCW AREA 00804000
  940. A R14,F8 UPDATE FROM AND TO ADDRESS 00805000
  941. A R15,F8 .. 00806000
  942. BCT R9,GETCCW DO FOUR CCWS 00807000
  943. SPACE 2 00808000
  944. RT1 EQU * HERE TO READ CHECK PRINT LINE BUFFER INFORMATION 00809000
  945. ICM R9,B'1111',IOBIOER ERROR BLOK PRESENT ?? 00810000
  946. BZ RT1A NO -- 00811000
  947. MVC IOERPNT-IOERBLOK(4,R9),IOERPNT CHAIN NEW IOERBLOK 00812000
  948. ST R9,IOERPNT 2ND IN CHAIN 00813000
  949. SR R5,R5 AND CLEAR 00814000
  950. ST R5,IOBIOER IOB POINTER TO ERROR BLOK 00815000
  951. XR R7,R9 UPDATE IOERCSW 00816000
  952. XR R9,R7 .. 00817000
  953. XR R7,R9 .. 00818000
  954. BAL R5,UPDTCSW1 UPDATE IOERCSW NOT CC=1 00819000
  955. LR R7,R9 RESTORE ADDRESS OF IOERBLOK 00820000
  956. RT1A TM XOBRSTAT,XOBRRT1 THIS ROUTINE SCHEDULED ?? 00821000
  957. BZ RT2 NO -- 00822000
  958. NI XOBRSTAT,X'FF'-XOBRRT1 RESET ROUTINE FLAG 00823000
  959. LA R1,XOBRCCW1 ADDRESS OF CHECK READ CCW 00824000
  960. B ERROBR AND EXIT TO IOS 00825000
  961. SPACE 00826000
  962. RT2 EQU * HERE TO READ PRINT LINE BUFFER DATA 00827000
  963. TM XOBRSTAT,XOBRRT2 THIS ROUTINE SCHEDULED ? 00828000
  964. BZ RT3 NO - 00829000
  965. LA R1,XOBRCCW2 ADDRESS OF PLB READ CCW 00830000
  966. NI XOBRSTAT,X'FF'-XOBRRT2 RESET ROUTINE FLAG 00831000
  967. OI XOBRFLAG,XOBRT3 INDICATE BUFFER TYPE 3 INFORMATION 00832000
  968. B ERROBR AND EXIT TO IOS 00833000
  969. SPACE 00834000
  970. RT3 EQU * HERE TO LOCATE THE FIRST CHARACTER IN ERROR 00835000
  971. TM XOBRSTAT,XOBRRT3 THIS ROUTINE SCHEDULED ? 00836000
  972. BZ RT5 NO -- 00837000
  973. LA R5,XOBR512 ADDRESS OF PRINT LINE BUFFER DATA 00838000
  974. LA R6,XOBR150 ADDRESS OF CHECK PLB DATA 00839000
  975. LA R0,1 CONSTANT OF 1 00840000
  976. LA R1,150 LENGTH OF BUFFER DATA 00841000
  977. CLI RDEVTYPE,TYP3203 IS IT A 3203 PRINTER ?? @V386298 00841200
  978. BNE CHARERR NO--CHECK 3211 PLB ERRORS @V386298 00841400
  979. LA R1,132 3203 PLB LENGTH @V386298 00841600
  980. CHARERR EQU * @V386298 00841800
  981. LA R14,10 NUMBER OF ERROR CHARACTER NEEDED 00842000
  982. LA R15,XOBR010 AREA TO PUT ERROR CHARACTERS 00843000
  983. RT3LP TM XOBRSTAT,XOBRRT4 ROUTINE 4 SCHEDULED ?? 00844000
  984. BO RT4A YES -- 00845000
  985. TM 0(R6),X'02' PRINT ERROR CHECK FOR THIS POSITION? 00846000
  986. BO RT3AA YES -- RECORD IT 00847000
  987. B RT3A CHECK NEXT 00848000
  988. RT4A EQU * @V386298 00848250
  989. CLI RDEVTYPE,TYP3203 IS IT A 3203 PRINTER ?? @V386298 00848500
  990. BNE RT4A3211 NO--CHECK 3211 PLB ERRORS @V386298 00848750
  991. TM 0(R6),PLB3203 CHECK 3203 PLB FOR ERRORS @V3M4036 00849000
  992. BO RT3A YES--DO NOT RECORD @V386298 00849250
  993. B RT3AA NO--MOVE ERROR CHAR. @V386298 00849500
  994. RT4A3211 TM 0(R6),X'04' CHECK 3211 PLB FOR ERRORS @V386298 00849750
  995. BO RT3A YES - DO NOT RECORD 00850000
  996. RT3AA MVC 0(1,R15),0(R5) MOVE ERROR CHARACTER TO XOBR010 00851000
  997. AR R15,R0 ADD ONE TO XOBR010 ADDRESS REG 00852000
  998. BCT R14,*+8 DO ONLY 10 CHARACTERS 00853000
  999. B RT3B ALL DONE - 00854000
  1000. SPACE 00855000
  1001. RT3A BCT R1,*+8 END OF PLB DATA (150/132)?? @V386298 00856000
  1002. B RT3B YES -- 00857000
  1003. AR R6,R0 UPDATE PRINT LINE DATA ADDRESS 00858000
  1004. AR R5,R0 UPDATE CHECK DATA ADDRESS 00859000
  1005. B RT3LP AND CONTINUAL 00860000
  1006. SPACE 00861000
  1007. RT3B NI XOBRSTAT,X'FF'-(XOBRRT3+XOBRRT4) RESET FLAGS 00862000
  1008. XC XOBR512(150),XOBR512 CLEAR AREA FOR UCSB DATA 00863000
  1009. SPACE 00864000
  1010. RT5 EQU * HERE TO READ UCSB DATA 00865000
  1011. TM XOBRSTAT,XOBRRT5 THIS ROUTINE SCHEDULED ? 00866000
  1012. BZ RT6 NO - 00867000
  1013. NI XOBRSTAT,X'FF'-XOBRRT5 RESET ROUTINE 5 FLAG 00868000
  1014. LA R1,XOBRCCW3 ADDRESS OF READ UCSB CCW 00869000
  1015. OI XOBRFLAG,XOBRT1 INDICATE BUFFER TYPE 1 INFORMATION 00870000
  1016. B ERROBR AND EXIT TO IOS 00871000
  1017. SPACE 00872000
  1018. RT6 EQU * HERE TO READ FCB INFORMATION 00873000
  1019. TM XOBRSTAT,XOBRRT6 THIS ROUTINE SCHEDULED 00874000
  1020. BZ ENDOBR NO -- 00875000
  1021. NI XOBRSTAT,X'FF'-XOBRRT6 RESET FLAG 00876000
  1022. LA R1,XOBRCCW4 ADDRESS OF READ FCB CCW 00877000
  1023. OI XOBRFLAG,XOBRT2 INDICATE BUFFER TYPE 2 INFORMATION 00878000
  1024. SPACE 00879000
  1025. ERROBR ST R1,IOBRCAW SET RESTART CCW ADDRESS 00880000
  1026. OI IOBFLAG,IOBRSTRT+IOBERP SET RESTART FLAG AND ERROR 00881000
  1027. * ROUTINE IN CONTROL 00882000
  1028. B EREXIT EXIT TO IOS 00883000
  1029. SPACE 00884000
  1030. ENDOBR EQU * HERE IF ALL DONE GETTING OBR DATA 00885000
  1031. NI IOERFLG1,X'FF'-IOERXERP RESET OBR FLAG 00886000
  1032. MVC IOBRCAW(4),XOBRMIS2 RESTORE RESTART CAW 00887000
  1033. MVC IOBFLAG(2),XOBRMIS1 RESTORE FLAG AND STAT 00888000
  1034. SPACE 00889000
  1035. TEST3211 EQU * HERE FOR 3211/3203 PRINTER ERROR RECOVERY 00890000
  1036. TM IOERDATA,EQCHK EQUIPMENT CHECK ?? 00891000
  1037. BZ BUS32 NO -- 00892000
  1038. SPACE 00893000
  1039. TM IOERDATA+1,X'80' COMMAND RETRY ?? 00894000
  1040. BO RETRY1 YES - RETRY ONCE 00895000
  1041. SPACE 00896000
  1042. TM IOERDATA+1,X'70' BYTE 1 BITS 1 2 3 00897000
  1043. BNZ NXTDELAY YES -- WAIT FOR DEVICE END 00898000
  1044. TM IOERDATA+1,X'02' BYTE 1 - BIT 6 MECHANICAL MOTION 00899000
  1045. BO FATAL YES - FATAL ERROR 00900000
  1046. B DELAY2 WAIT FOR DEVICE END 00901000
  1047. SPACE 00902000
  1048. BUS32 TM IOERDATA,BUSOUT BUSOUT CHECK ?? 00903000
  1049. BO RETRY1 YES -- RETRY ONCE 00904000
  1050. TM IOERDATA,DATACHK DATA CHECK ERROR ??? 00905000
  1051. BO NXTDELAY YES -- WAIT FOR DEVICE END 00906000
  1052. TM IOERDATA,X'04' BUFFER PARITY CHECK ?? 00907000
  1053. BO FATAL YES -- 00908000
  1054. TM IOERDATA,CMDREJ COMMAND REJECT ?? 00909000
  1055. BO FATAL1 YES -- FATAL ERROR 00910000
  1056. SPACE 00911000
  1057. TM IOERDATA,X'02' LOAD CHECK ?? 00912000
  1058. BO RETRY1 YES -- RETRY ONCE 00913000
  1059. TM IOERDATA,X'40' INTERVENTION REQUIRED ?? 00914000
  1060. BO DELAY YES -- 00915000
  1061. TM IOERDATA+1,4 COMMAND SUPPRESSED ??? 00916000
  1062. BO RETRY1 YES - RETRY ONCE 00917000
  1063. TM IOERDATA,X'01' CHANNEL 9 ?? 00918000
  1064. BO IGNORE YES, IGNORE, RESTART WITH NEXT 00918050
  1065. B RETRY1 ... 00918090
  1066. SPACE 3 00918130
  1067. ERR3800 EQU * HERE FOR 3800 PRINTER ERROR RECOVERY @V60B9BA 00918170
  1068. MVI SAVEWRK1,X'00' RESET LOCAL 3800 FLAG BYTE @VA09266 00918200
  1069. TM IOERDATA,EQCHK EQUIPMENT CHECK ? @V60B9BA 00918250
  1070. BZ ER3800B XFER IF NOT @V60B9BA 00918290
  1071. TM IOERDATA+1,X'20' ERROR LOG FULL ? @V60B9BA 00918330
  1072. BZ ER3800A1 XFER IF NOT @V60B9BA 00918370
  1073. ST R10,SAVEWRK2 SAVE THE CURRENT IOBLOK @V60B9BA 00918410
  1074. LA R0,IOBSIZE GET DUMMY IOB @V60B9BA 00918450
  1075. CALL DMKFREE GET THE STORAGE @V60B9BA 00918490
  1076. XC 0(IOBSIZE*8,R1),0(R1) CLEAR THE DUMMY IOB @V60B9BA 00918530
  1077. LR R10,R1 NEED THE ADDRESSIBILITY @V60B9BA 00918570
  1078. XC RDEVIOER,RDEVIOER CLEAR IOERBLOK @V60B9BA 00918610
  1079. XC RDEVAIOB,RDEVAIOB CLEAR ACTIVE IO BLOCK @V60B9BA 00918650
  1080. NI RDEVSTAT,X'FF'-RDEVBUSY RESET DEVICE BUSY @V60B9BA 00918690
  1081. CALL DMKRSESD DO & RECORD SENSE ERROR LOG @V60B9BA 00918730
  1082. CALL DMKFRET RETURN STORAGE FOR DUM IOB @V60B9BA 00918770
  1083. L R10,SAVEWRK2 RESTORE ORIGINAL IOBLOK @V60B9BA 00918810
  1084. ST R7,RDEVIOER RESTORE ORIG IOERBLOK @V60B9BA 00918850
  1085. ST R10,RDEVAIOB RESTORE ACTIVE IOBLOK @V60B9BA 00918890
  1086. OI RDEVSTAT,RDEVBUSY SET DEVICE BUSY @V60B9BA 00918930
  1087. B RETRY1 RETRY THE CCW ONCE @V60B9BA 00918970
  1088. SPACE 00919010
  1089. ER3800A1 TM IOERDATA+1,X'10' CANCEL KEY ? @V60B9BA 00919050
  1090. BO REQUEUE REQUEUE THE FILE @VA11761 00919100
  1091. SPACE 00919130
  1092. * IT MUST BE A HARDWARE OR PERMANENT ERROR 00919170
  1093. SPACE 00919210
  1094. TM IOERDATA+3,X'08' SYSTEM RESTART REQUIRED @VA13713 00919260
  1095. BO REQUEUE XFER IF SO @V60B9BA 00919290
  1096. SPACE 00919330
  1097. DELAY38A TM IOERDATA+1,X'10' CANCEL KEY? @VA11761 00919340
  1098. BO FATAL1 @VA11761 00919345
  1099. DELAY38 LH R1,IOBRADD GET PRINTER ADDRESS @V60B9BA 00919370
  1100. OI SAVEWRK1,X'80' 3800 MSG HAS BEEN PRINTED @VA09266 00919385
  1101. CALL DMKCVTBH CONVERT TO PRINTABLE HEX @V60B9BA 00919410
  1102. STCM R1,B'0111',SAVEWRK2 SAVE IT IN DATA AREA @V60B9BA 00919450
  1103. MVI SAVEWRK2+3,X'00' DELIMITER FOR DMKERMSG @V60B9BA 00919490
  1104. SR R1,R1 SET UP FOR STATUS BYTE @V60B9BA 00919530
  1105. IC R1,IOERDATA+4 STATUS CODE @V60B9BA 00919570
  1106. CALL DMKCVTBH CONVERT TO PRINTABLE HEX @V60B9BA 00919610
  1107. STCM R1,B'0011',SAVEWRK3 PUT IT IN DATA AREA @V60B9BA 00919650
  1108. LA R0,6 LENGTH OF DATA @V60B9BA 00919690
  1109. ICM R0,B'1110',ID+3 MODULE ID @V60B9BA 00919730
  1110. LA R1,SAVEWRK2 ADDRESS OF THE DATA @V60B9BA 00919770
  1111. LA R2,242 BINARY MESSAGE NUMBER @V60B9BA 00919810
  1112. ICM R2,B'1100',=X'B0C9' RETURN, OPERATOR, ALARM @V60B9BA 00919850
  1113. * AND INFORMATION MESSAGE 00919890
  1114. CALL DMKERMSG GO TYPE THE MESSAGE @V60B9BA 00919930
  1115. TM IOERDATA,EQCHK EQUIPMENT CHECK ? @V60B9BA 00919970
  1116. BO DELAY2 RECORD ERROR IF SO @V60B9BA 00920010
  1117. TM IOERDATA+3,X'08' SYSTEM RESTART REQUIRED @VA13713 00920060
  1118. BO DELAY2 RECORD ERROR IF SO @V60B9BA 00920090
  1119. B DELAY WAIT FOR DE - DON'T RECORD @V60B9BA 00920130
  1120. SPACE 00920170
  1121. ER3800B TM IOERDATA,CMDREJ COMMAND REJECT ? @V60B9BA 00920210
  1122. BO FATAL1 YES - FATAL ERROR @V60B9BA 00920250
  1123. TM IOERDATA,BUSOUT BUS OUT CHECK ? @V60B9BA 00920290
  1124. BO RETRY1 RETRY OPERATION ONCE @V60B9BA 00920330
  1125. TM IOERDATA,DATACHK DATA CHECK @V60B9BA 00920370
  1126. BO NXTDELAY YES - GET NEXT CCW @V60B9BA 00920410
  1127. TM IOERDATA,INTREQ INTERVENTION REQUIRED ? @V60B9BA 00920450
  1128. BZ ER3800C XFER IF NOT @V60B9BA 00920490
  1129. TM IOERDATA+3,X'08' SYSTEM RESTART REQUIRED ? @V60B9BA 00920530
  1130. BO REQUEUE REUEUE DELAY PURGE IF SO @V60B9BA 00920570
  1131. B DELAY38 SEND MESSAGE OTHERWISE @V60B9BA 00920610
  1132. SPACE 00920650
  1133. ER3800C TM IOERDATA,X'01' CHANNEL 9 ? @V60B9BA 00920690
  1134. BO IGNORE YES-IGNORE & RSTRT NEXT CCW @V60B9BA 00920730
  1135. TM IOERDATA,X'02' LOAD CHECK ? @V60B9BA 00920770
  1136. BZ FATAL FATAL ERROR IF NOT @V60B9BA 00920810
  1137. SPACE 00920850
  1138. * LOAD CHECK - SEND INFO BACK TO DMKTCS 00920890
  1139. SPACE 00920930
  1140. CLC =C'TCS ',IOBMISC2 3800 SETUP IN CONTROL ? @V60B9BA 00920970
  1141. BNE FATAL1 FATAL ERROR IF NOT @V60B9BA 00921010
  1142. MVC IOBMISC2(2),=C'LD' TELL TCS IT'S A LOAD CHECK @V60B9BA 00921050
  1143. MVC IOBMISC2+2(2),IOERDATA+1 TELL HIM WHAT KIND @V60B9BA 00921090
  1144. B EREXIT1 RETURN WITH NO FATAL ERROR @V60B9BA 00921130
  1145. * AND NO RESTART @V60B9BA 00921170
  1146. SPACE 00921210
  1147. *. 00921250
  1148. * THE SYSTEM RESTART BIT IS ON. THE PAGE BUFFER MUST HAVE 00921290
  1149. * BEEN DESTROYED. WE MUST TAKE ALL THE FILES THAT WERE ON 00921330
  1150. * THE DELAY PURGE QUEUE AND REQUEUE THEM ONTO THE PRINTER 00921370
  1151. * OR PUNCH CHAIN. WE SEND MESSAGES DMKRSE255I AND DMKRSE252I 00921410
  1152. * INFORMING THE OPERATOR OF WHAT JUST OCCURRED. 00921450
  1153. *. 00921490
  1154. SPACE 00921530
  1155. REQUEUE LH R1,IOBRADD PRINTER ADDRESS FOR MESSAGE @V60B9BA 00921570
  1156. CALL DMKCVTBH CONVERT TO PRINTABLE HEX @V60B9BA 00921610
  1157. STCM R1,B'0111',SAVEWRK2 STORE PRINTER ADDRESS @V60B9BA 00921650
  1158. MVI SAVEWRK2+3,X'00' DELIMITER FOR DMKERMSG @V60B9BA 00921690
  1159. TM IOERDATA+1,X'10' CANCEL KEY? @VA11761 00921700
  1160. BO REQLOOP @VA11761 00921705
  1161. LH R1,IOERDATA+20 PAGE BACKUP COUNT @V60B9BA 00921730
  1162. CALL DMKCVTBD CONVERT TO DECIMAL @V60B9BA 00921770
  1163. ST R1,SAVEWRK3 SAVE IT FOR DMKERMSG @V60B9BA 00921810
  1164. LA R0,8 LENGTH OF DATA @V60B9BA 00921850
  1165. ICM R0,B'1110',ID+3 MODULE ID @V60B9BA 00921890
  1166. LA R1,SAVEWRK2 ADDR OF DATA AREA @V60B9BA 00921930
  1167. LA R2,255 MESSAGE NUMBER @VMI0027 00921970
  1168. ICM R2,B'1100',=X'B0C9' RTN, OP, ALARM, INFO MSG @V60B9BA 00922010
  1169. CALL DMKERMSG SEND THE MESSAGE @V60B9BA 00922050
  1170. SPACE 00922090
  1171. *. 00922130
  1172. * WE NOW TAKE EACH SPOOL FILE THAT IS ON THE DELAYED 00922170
  1173. * PURGE QUEUE AND REQUEUE IT ON ITS ORIGINAL 00922210
  1174. * QUEUE (PRINTER). IN ADDITION, EACH SUCH FILE 00922250
  1175. * IS PLACED IN 'SYSTEM HOLD'. FINALLY, THE OPERATOR IS 00922290
  1176. * SENT DMKRSE252I FOR EACH FILE INFORMING HIM OF WHAT WAS DONE. 00922330
  1177. *. 00922370
  1178. SPACE 00922410
  1179. REQLOOP L R4,RDEVDELP FIRST FILE ON DEL PUR Q @V60B9BA 00922450
  1180. LTR R4,R4 ANY MORE LEFT ? @V60B9BA 00922490
  1181. BZ DELAY38A @VA11761 00922535
  1182. USING SFBLOK,R4 TEMPORARY ADDRESSIBILITY @V60B9BA 00922570
  1183. MVC RDEVDELP,SFBPNT TAKE IT OFF DEL PURGE QUEUE @V60B9BA 00922610
  1184. L R1,=A(DMKRSPPR) PRINTER CHAIN START @V60B9BA 00922650
  1185. OI SFBFLAG,SFBRECER+SFBSHOLD INDICATE ALLOCATION @V60B9BA 00922690
  1186. * INCOMPLETE AND SYSTEM HOLD @V60B9BA 00922730
  1187. L R2,0(,R1) SAVE PTR TO FIRST ON CHAIN @V60B9BA 00922770
  1188. ST R4,0(,R1) RECHAIN DEL PURGE FILE @V60B9BA 00922810
  1189. ST R2,SFBPNT CHAIN OTHER FILE BEHIND IT @V60B9BA 00922850
  1190. SPACE 00922890
  1191. * TELL OPERATOR ABOUT IT. PRINTER ADDR IS IN SAVEWRK2 00922930
  1192. SPACE 00922970
  1193. LH R1,SFBFILID GET SPOOL FILE NUMBER @V60B9BA 00923010
  1194. CALL DMKCVTBD CONVERT TO EBCDIC DECIMAL @V60B9BA 00923050
  1195. ST R1,SAVEWRK3 PUT IT IN DATA AREA @V60B9BA 00923090
  1196. LA R0,8 LENGTH OF DATA AREA @V60B9BA 00923130
  1197. ICM R0,B'1110',ID+3 MODULE ID @V60B9BA 00923170
  1198. LA R1,SAVEWRK2 ADDRESS OF DATA AREA @V60B9BA 00923210
  1199. LA R2,252 MESSAGE NUMBER @V60B9BA 00923250
  1200. ICM R2,B'1100',=X'B0C9' RTN, OP, ALARM, INFO MSG @V60B9BA 00923290
  1201. CALL DMKERMSG TYPE THE MESSAGE @V60B9BA 00923330
  1202. B REQLOOP DO FOR NEXT FILE ON QUEUE @V60B9BA 00923370
  1203. DROP R4 NO LONGER NEEDED @V60B9BA 00923410
  1204. SPACE 3 00923450
  1205. CHANERR EQU * HERE FOR INTERFACE OR CHAN CON CK 00923490
  1206. SPACE 00923530
  1207. * R1 = ADDR OF FAILING CCW 00923570
  1208. * R2 = DEVICE ACTION TABLE ADDR 00923610
  1209. * R3 = TERMINATION CODE 00923650
  1210. * R4 = SEQUENCE CODE 00923690
  1211. * R15 = BRANCH INDEX OUT OF TERMINATION SEQUENCE ROUTINE 00928000
  1212. SPACE 00929000
  1213. TM IOBSTAT,IOBCC1 CONDITION CODE 1 ON SIO ? 00930000
  1214. BO RETRY1 YES -- RETRY ONCE 00931000
  1215. SR R1,R1 LOCATE FAILING CCW 00932000
  1216. ICM R1,B'0111',IOERCSW+1 CCW ADDRESS + 8 00933000
  1217. BZ FATAL CCW ADDRESS MISSING - FATAL 00934000
  1218. S R1,F8 POINT TO FAILING CCW 00935000
  1219. SPACE 00936000
  1220. SR R3,R3 CLEAR TERMINATION REG 00937000
  1221. SR R4,R4 CLEAR SEQUENCE REG 00938000
  1222. LA R2,SENSEALL ADDRESS OF SENSE ACTION TABLE 00939000
  1223. CLI 0(R1),X'04' FAILING CCW A SENSE COMMAND ? 00940000
  1224. BE TERMSEQ YES -- LOCATE ACTION CODE 00941000
  1225. SPACE 00942000
  1226. * POSSIBLE READER OP-CODES FOR SPOOLING - 02 42 00943000
  1227. CLI RDEVTYPE,TYP2501 2501 READER ? 00944000
  1228. BNE CH3505 NO -- 00945000
  1229. LA R2,RD2501 POINT TO READ ACTION TABLE 00946000
  1230. B TERMSEQ GO LOCATE ACTION CODE 00947000
  1231. SPACE 00948000
  1232. CH3505 CLI RDEVTYPE,TYP3505 3505 READER ? 3525 PUNCH ? 00949000
  1233. BNE CH2540 NO -- 00950000
  1234. LA R2,RD3505 POINT TO READ ACTION TABLE 00951000
  1235. TM RDEVTYPC,CLASURI 3505 READER ? 00952000
  1236. BO *+8 YES - 00953000
  1237. LA R2,WC3525 POINT TO PUNCH ACTION TABLE 00954000
  1238. B TERMSEQ GO LOCATE ACTION CODE 00955000
  1239. SPACE 00956000
  1240. CH2540 EQU * HERE FOR 2540 READER AND 2540 PUNCH 00957000
  1241. CLI RDEVTYPE,TYP2540R 2540 READER ? 2540 PUNCH ? 00958000
  1242. BNE CH1443 NO -- 00959000
  1243. LA R2,RD2540 POINT TO READ 2540 ACTION TABLE 00960000
  1244. B SEQONLY GO LOCATE ACTION CODE 00961000
  1245. SPACE 00962000
  1246. CH1443 CLC =C'LOADBUF',VMCOMND LOADBUF COMMAND INPROCESS ? 00963000
  1247. BE FATAL YES - CAN NOT RESTART 00964000
  1248. CLI RDEVTYPE,TYP1443 1443 PRINTER ? 00965000
  1249. BNE CH1403 NO - 00966000
  1250. LA R2,C1443 CONTROL ACTION TABLE 00967000
  1251. TM 0(R1),X'03' CONTROL OP CODE ? 00968000
  1252. BO SEQONLY YES -- LOCATE ACTION CODE 00969000
  1253. BZ FATAL NOT PRINT OR CONTROL 00970000
  1254. LA R2,PC1443 PRINT, PRINT AND CONTROL TABLE 00971000
  1255. B SEQONLY LOCATE ACTION CODE 00972000
  1256. SPACE 00973000
  1257. CH1403 CLI RDEVTYPE,TYP1403 1403 PRINTER ? 00974000
  1258. BNE CH3211 NO - 00975000
  1259. LA R2,P1403 PRINT ACTION TABLE 00976000
  1260. CLI 0(R1),X'01' PRINT OP-CODE ? 00977000
  1261. BE SEQONLY YES -- LOCATE ACTION CODE 00978000
  1262. LA R2,PC1403 PRINT, PRINT AND CONTROL TABLE 00979000
  1263. B SEQONLY LOCATE ACTION CODE 00980000
  1264. SPACE 00981000
  1265. CH3211 EQU * 00981700
  1266. TM RDEVTYPE,TYP3211 IS IT A 3203/3211 PRINTER?? @V386298 00982400
  1267. BNO CH3800 NO--CHECK 3800 @V60B9BA 00983100
  1268. LA R2,P3211 PRINT ACTION TABLE 00984000
  1269. CLI 0(R1),X'01' PRINT OP-CODE ? 00985000
  1270. BE SEQONLY YES -- LOCATE ACTION CODE 00986000
  1271. LA R2,C3211 CONTROL ACTION TABLE 00987000
  1272. TM 0(R1),X'03' CONTROL OP-CODE ? 00988000
  1273. BO SEQONLY YES - LOCATE ACTION CODE 00989000
  1274. LA R2,PC3211 PRINT AND CONTROL TABLE 00990000
  1275. B SEQONLY LOCATE ACTION CODE 00991000
  1276. SPACE 00992000
  1277. CH3800 CLI RDEVTYPE,TYP3800 IS IT 3800 PRINTER ? @V60B9BA 00992100
  1278. BNE CH2520 NO, TRY 2520 @V60B9BA 00992200
  1279. LA R2,L3800 SENSE CONTROL TABLE @V60B9BA 00992300
  1280. IC R4,0(R1) SEE IF ONE OF THE SENSE @V60B9BA 00992400
  1281. N R4,F15 .. OP CODES @V60B9BA 00992500
  1282. CLM R4,B'0001',=X'04' IS IT ? @V60B9BA 00992600
  1283. BE SEQONLY LOCATE ACTION CODE IF SO @V60B9BA 00992700
  1284. LA R2,PC3800 PRINT AND CONTROL TABLE @V60B9BA 00992800
  1285. B SEQONLY LOCATE ACTION CODE @V60B9BA 00992900
  1286. SPACE 00993000
  1287. CH2520 CLI RDEVTYPE,TYP2520P 2520 PUNCH ?? 00994000
  1288. BNE FATAL NO --UNKNOWN - FATAL ERROR 00995000
  1289. LA R2,WC2520 WRITE WITH CONTROL TABLE 00996000
  1290. SPACE 2 00997000
  1291. TERMSEQ EQU * HERE TO LOCATE CORRECT ACTION CODE 00998000
  1292. SPACE 00999000
  1293. * R1 = ADDRESS OF FAILING CCW 01000000
  1294. * R2 = ADDRESS OF ACTION TABLE 01001000
  1295. * R3 = USED FOR TERMINATION CODE 01002000
  1296. * R4 = USED FOR SEQUENCE CODE 01003000
  1297. * R15 = EXIT BRANCH INDEX CODE 01004000
  1298. * IOERECSW EQU IOERCSW 01005000
  1299. SPACE 01006000
  1300. IC R3,IOERECSW+3 GET TERMINATION CODE BITS 0 AND 1 01007000
  1301. SRL R3,6 SHIFT TERMINATION CODE TO BITS 6 - 7 01008000
  1302. SLL R3,3 TERMINATION CODE TIME TABLE 01009000
  1303. * ENTRY LENGTH (8) 01010000
  1304. AR R2,R3 POINT TO CORRECT TABLE ENTRY 01011000
  1305. SPACE 01012000
  1306. SEQONLY EQU * ENTRY HERE WHEN TERM CODES 00 01 10 01013000
  1307. * HAVE SAME SEQUENCE ACTION CODES 01014000
  1308. IC R4,IOERECSW+3 GET SEQUENCE CODE FROM ECSW 01015000
  1309. N R4,F7 SAVE ONLY SEQUENCE CODE (BITS 5,6,7) 01016000
  1310. SR R15,R15 CLEAR INDEX REG 01017000
  1311. IC R15,0(R2,R4) PICK UP ACTION INDEX CODE 01018000
  1312. B *+4(R15) BRANCH TO CORRECT ACTION FOR ERROR 01019000
  1313. B FATAL ACTION CODE 0 FATAL CHANNEL ERROR 01020000
  1314. B RETRY1 ACTION CODE 4 RETRY THE OPERATION 01021000
  1315. B IGNORECH ACTION CODE 8 IGNORE THE ERROR 01022000
  1316. B DELAY2 ACTION CODE 12 OPERATOR INTERVENTION 01023000
  1317. * REQUIRED 01024000
  1318. SPACE 01025000
  1319. IGNORECH TM 4(R1),CC COMMAND CHAINING ?? 01026000
  1320. BO IGNORE YES - RESTART WITH NEXT CCW 01027000
  1321. MVC IOBCSW+4(2),=AL1(CE+DE,0) FORCE GOOD CSW 01028000
  1322. B EREXIT1 RETURN TO DMKRSPEX VIA IOS 01029000
  1323. EJECT 01030000
  1324. *. 01030010
  1325. * 01030020
  1326. * ENTRY POINT - 01030030
  1327. * 01030040
  1328. * DMKRSESD - FORMAT HARDWARE ENVIRONMENTAL COUNTERS FOR A 3800 01030050
  1329. * 01030060
  1330. * OPERATION - 01030070
  1331. * 01030080
  1332. * CALLED FROM DMKCPS, DMKCCW AND DMKRSERR TO RECORD 01030090
  1333. * THE HARDWARE ENVIRONMENTAL DATA PRESENT IN THE 01030100
  1334. * 3800 INTERNAL ERROR LOG. 01030110
  1335. * ISSUE THE 'SENSE ERROR LOG' CCW AND IF NO ERRORS OCCUR, 01030120
  1336. * A CALL IS MADE TO DMKIOESD TO RECORD THE DATA FOR 01030130
  1337. * FIELD ENGINEERING USE. 01030140
  1338. * 01030150
  1339. *. 01030160
  1340. SPACE 01030170
  1341. DMKRSESD RELOC , @V60B9BA 01030180
  1342. LR R1,R11 CHARGE USER @V60B9BA 01030190
  1343. ST R1,IOBUSER ..... INTO IOBLOK @V60B9BA 01030200
  1344. LA R7,136/8 NO OF EXTRA WDS IN IOERBLOK @V60B9BA 01030210
  1345. LA R0,IOERSIZE+136/8 FOR A 3800 GET EXTRA SPACE @V60B9BA 01030220
  1346. CALL DMKFREE NOW GET EXTRA-SIZE IOERBLOK @V60B9BA 01030230
  1347. DROP R7 DROP IT TEMPORARILY @V60B9BA 01030240
  1348. USING IOERBLOK,R1 (VERY BRIEFLY) @V60B9BA 01030250
  1349. XC IOERBLOK(IOERSIZE*8),IOERBLOK CLEAR THE IT @V60B9BA 01030260
  1350. STH R7,IOEREXT STORE EXTRA SIZE OF BLOCK @V60B9BA 01030270
  1351. DROP R1 @V60B9BA 01030280
  1352. LR R7,R1 NOW NORMAL IOERBLOK ADDRESSABILIT@V60B9BA 01030290
  1353. USING IOERBLOK,R7 ... @V60B9BA 01030300
  1354. TM RDEVFTR,FTREXTSN DOES DEVICE HAVE BUFFERS ? @V60B9BA 01030490
  1355. BZ FRETIOER IF NOT, DO NOT ISSUE BUFFER UNLOA@V60B9BA 01030500
  1356. LM R0,R1,UNLD3800 GET THE RIGHT CCW TO UNLOAD BFR @V60B9BA 01030510
  1357. ALR R0,R7 POINT TO IOERDATA @V60B9BA 01030520
  1358. STM R0,R1,SAVEWRK4 SAVE THE CCW @V60B9BA 01030530
  1359. STH R1,IOERLEN SAVE SENSE LENGTH FOR ERROR RECOR@V60B9BA 01030540
  1360. MVC SAVEWRK6(8),LOADSNS DUMMY SENSE CCW @V60B9BA 01030550
  1361. LA R1,READBUF LOAD R1 W/ INTERRUPT RETURN ADDRE@V60B9BA 01030560
  1362. ST R1,IOBIRA STORE IT IN THE IOBLOK. @V60B9BA 01030570
  1363. LA R4,SAVEWRK4 BFR UNLOAD CCWS @V60B9BA 01030580
  1364. ST R4,IOBCAW SET CAW ADDR IN IOBLOK @V60B9BA 01030590
  1365. ST R13,IOBMISC SAVE R13 ACROSS I/O @V60B9BA 01030600
  1366. STM R7,R8,SAVEWRK2 SAVE PTR TO IOERBLOK AND RDEVBLOK@V60B9BA 01030610
  1367. CALL DMKIOSQR CALL IOS FOR BUFFER UNLOAD OPERAT@V60B9BA 01030620
  1368. GOTO DMKDSPCH WAIT FOR I/O TO COMPLETE. @V60B9BA 01030630
  1369. SPACE 01030640
  1370. READBUF DS 0H CONNECTOR @V60B9BA 01030650
  1371. USING *,R12 @V60B9BA 01030660
  1372. S R12,=A(READBUF-DMKRSE) NORMAL ADDRESSIBILITY @V60B9BA 01030670
  1373. USING DMKRSE,R12 @V60B9BA 01030680
  1374. L R13,IOBMISC RESTORE ADDRESS OF STD WORKAREA @V60B9BA 01030690
  1375. LM R7,R8,SAVEWRK2 RESTORE ADD OF IOERBLOK & RDEVBLO@V60B9BA 01030700
  1376. TM IOBSTAT,IOBFATAL+IOBCC3 WAS THERE AN ERROR COND@V60B9BA 01030710
  1377. BNZ FRETIOER IF YES, EXIT @V60B9BA 01030720
  1378. ST R7,IOBIOER STORE ADDRESS OF IOERBLOK FOR REC@V60B9BA 01030730
  1379. CALL DMKIOESD RECORD THIS RECORD. @V60B9BA 01030740
  1380. B CKIOB RELEASE ANY MOVE IOERBLOKS @V60B9BA 01030750
  1381. SPACE 01030760
  1382. FRETIOER LA R0,IOERSIZE SIZE OF 1 IOERBLOK @V60B9BA 01030770
  1383. AH R0,IOEREXT INCLUDE EXTRA SIZE (IF ANY) @V60B9BA 01030780
  1384. LR R1,R7 LOCATION OF IOERBLOK. @V60B9BA 01030790
  1385. CALL DMKFRET FRET THIS STORAGE @V60B9BA 01030800
  1386. SPACE 01030810
  1387. * THIS ROUTINE WILL CHECK FOR A SECOND IOERBLOK . IF ONE WAS 01030820
  1388. * OBTAINED STORAGE WILL BE GIVEN BACK TO THE SYSTEM. 01030830
  1389. * 01030840
  1390. CKIOB L R1,IOBIOER GET ADDR. OF 2'ND IOERBLOK @V60B9BA 01030850
  1391. LA R1,0(R1) CLEAR HI BYTE @V60B9BA 01030860
  1392. LTR R1,R1 WAS BLOCK REALY OBTAINED ? @V60B9BA 01030870
  1393. BZ NOTUSED BRANCH IF NO. @V60B9BA 01030880
  1394. TM IOERCSW+5-IOERBLOK(R1),IFCC+CCC+CDC IS CHANNEL @V60B9BA 01030890
  1395. * ERROR 01030900
  1396. * INDICATED ? 01030910
  1397. BZ CKEND2 NO, GO FRET IOERBLOK @V60B9BA 01030920
  1398. LR R3,R1 SAVE THE IOERBLOK POINTER @V60B9BA 01030930
  1399. L R1,IOERCCRA-IOERBLOK(R3) CHANNEL REC ADDR @V60B9BA 01030940
  1400. L R0,IOERCCRL-IOERBLOK(R3) CHANNEL REC LENGTH @V60B9BA 01030950
  1401. CALL DMKFRET RELEASE STORAGE @V60B9BA 01030960
  1402. LR R1,R3 GET IOERBLOK POINTER @V60B9BA 01030970
  1403. CKEND2 EQU * @V60B9BA 01030980
  1404. LA R0,IOERSIZE LOAD IOERBLOK SIZE. @V60B9BA 01030990
  1405. AH R0,IOEREXT-IOERBLOK(,R1) INCLUDE EXTRA SIZE (IF @V60B9BA 01031000
  1406. CALL DMKFRET @V60B9BA 01031010
  1407. NOTUSED MVC IOBIOER,ZEROES CLEAR ADDRESS IN IOBLOK IN CASE @V60B9BA 01031020
  1408. SPACE 01031030
  1409. RETNSHUT EXIT EXIT TO CALLER. @V60B9BA 01031040
  1410. SPACE 3 01031050
  1411. EJECT 01031060
  1412. TMTYPE TM 0(R15),0 EXCUTE TM 01032000
  1413. TMERR TM 1(R15),0 EXCUTE TM 01033000
  1414. CKRDCCW CCW X'06',XOBR150-IOERBLOK,SILI,150 CHECK READ CCW 01034000
  1415. PLBCCW CCW X'02',XOBR512-IOERBLOK,SILI,150 READ PLB 01035000
  1416. UCSBCCW CCW X'0A',XOBR512-IOERBLOK,SILI,512 READ UCSB DATA 01036000
  1417. FCBCCW CCW X'12',XOBR180-IOERBLOK,SILI,180 READ FCB DATA 01037000
  1418. SPACE 01037250
  1419. UNLD3800 CCW X'24',IOERDATA-IOERBLOK,CC+SILI,136 3800 UNLD @V60B9BA 01037500
  1420. LOADSNS CCW X'04',*-*,SILI+SKIP,1 DUMMY SENSE CCW @V60B9BA 01037750
  1421. SPACE 01038000
  1422. MSGTABLE DC X'FF1003' EQUIPMENT CHECK 01039000
  1423. DC X'FF0804' DATA CHECK 01040000
  1424. DC X'FF2002' BUS OUT CHECK 01041000
  1425. DC X'FF8000' COMMAND REJECT 01042000
  1426. DC X'FF4001' INTERVENTION REQUIRED 01043000
  1427. DC X'43041D' PARITY (3211 1403 3203) @V386298 01044000
  1428. DC X'420218' LOAD CHECK (3211 3203) @V386298 01045000
  1429. DC X'840219' FORMAT CHECK (35XX) 01046000
  1430. DC X'840108' PERMANENT ERROR (35XX) 01047000
  1431. DC X'810405' OVERRUN (2501) 01048000
  1432. DC X'FFFF03' ALL OTHERS EQUIPMENT CHECK 01049000
  1433. DS 0H 01050000
  1434. EJECT 01051000
  1435. * 01052000
  1436. * SEQUENCE CODE 000,001,010,011,100,101,110,111 01053000
  1437. * 01054000
  1438. SENSEALL DC AL1(0,4,4,4,4,4,0,0) TERM CODE 00 01055000
  1439. DC AL1(0,0,4,4,0,4,0,0) TERM CODE 01 01056000
  1440. DC AL1(0,4,4,4,4,4,0,0) TERM CODE 10 01057000
  1441. SPACE 01058000
  1442. RD2501 DC AL1(0,4,12,12,4,12,0,0) TERM CODE 00 01059000
  1443. DC AL1(0,0,12,12,0,12,0,0) TERM CODE 01 01060000
  1444. DC AL1(0,4,12,12,4,12,0,0) TERM CODE 10 01061000
  1445. SPACE 01062000
  1446. SPACE 01063000
  1447. RD3505 DC AL1(0,4,4,4,4,12,0,0) TERM CODE 00 01064000
  1448. DC AL1(0,0,4,4,0,04,0,0) TERM CODE 01 01065000
  1449. DC AL1(0,4,4,4,4,12,0,0) TERM CODE 10 01066000
  1450. SPACE 01067000
  1451. WC3525 DC AL1(0,4,4,4,4,0,0,0) TERM CODE 00 01068000
  1452. DC AL1(0,0,4,4,0,4,0,0) TERM CODE 01 01069000
  1453. DC AL1(0,4,4,4,4,0,0,0) TERM CODE 10 01070000
  1454. SPACE 01071000
  1455. C3211 EQU * TERM 00 01 10 01072000
  1456. C1443 EQU * TERM 00 01 10 01073000
  1457. PC1403 EQU * TERM 00 01 10 01074000
  1458. C1403 EQU * TERM 00 01 10 01075000
  1459. RD2540 EQU * TERM 00 01 10 01076000
  1460. WC2540 EQU * TERM 00 01 10 01077000
  1461. PLB3203 EQU X'10' MASK FOR 3203 PLB @V3M4036 01077150
  1462. SPACE 1 01077300
  1463. * ALL TERM CODES WHICH APPLY TO THE 3211 PRINTER ALSO 01077450
  1464. * APPLY TO THE 3203 PRINTER 01077600
  1465. SPACE 1 01077750
  1466. DC AL1(0,0,0,0,4,0,0,0) TERM CODE 00 01 10 01078000
  1467. SPACE 01079000
  1468. PC3800 EQU * TERM CODE 00 01 10 @V60B9BA 01080000
  1469. PC1443 EQU * TERM CODE 00 01 10 01080500
  1470. P1443 DC AL1(0,4,4,0,4,0,0,0) TERM CODE 00 01 10 01081000
  1471. SPACE 01082000
  1472. L3800 EQU * TERM CODE 00 01 10 @V60B9BA 01082500
  1473. P1403 DC AL1(0,4,4,4,4,4,0,0) TERM CODE 00 01 10 01083000
  1474. SPACE 01084000
  1475. P3211 DC AL1(0,4,4,4,4,4,0,0) TERM CODE 00 01 10 01085000
  1476. SPACE 01086000
  1477. PC3211 DC AL1(0,0,0,0,4,4,0,0) TERM CODE 00 01 10 01087000
  1478. SPACE 01088000
  1479. WC2520 DC AL1(0,4,12,12,4,12,0,0) TERM CODE 00 01089000
  1480. DC AL1(0,0,12,12,0,12,0,0) TERM CODE 01 01090000
  1481. DC AL1(0,4,04,04,0,04,0,0) TERM CODE 10 01091000
  1482. SPACE 3 01092000
  1483. PARMLEN EQU 2 NUM OF DBLWDS FOR 3800 PARM FIELD @V60B9BA 01092250
  1484. PARM3800 DC X'04040F0F0F0F0F0FFF' 3800 COUNTERS @V60B9BA 01092500
  1485. SPACE 2 01092750
  1486. LTORG 01093000
  1487. EJECT 01094000
  1488. PSA 01095000
  1489. COPY VMBLOK 01096000
  1490. COPY RBLOKS 01097000
  1491. COPY SAVE 01098000
  1492. COPY EQU 01099000
  1493. COPY DEVTYPES 01100000
  1494. COPY SPOOL @V60B9BA 01100500
  1495. COPY IOBLOKS 01101000
  1496. COPY IOER 01102000
  1497. COPY ACCOUNT 01103000
  1498. END 01104000