Table of Contents

DMKDIA Source

References

Source Listing

DMKDIA.ASSEMBLE.txt
  1. DIA TITLE 'DMKDIA (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF SYSIN 00002000
  3. COPY OPTIONS 00003000
  4. COPY LOCAL 00004000
  5. *. 00005000
  6. * MODULE NAME - 00006000
  7. * 00007000
  8. * DMKDIA 00008000
  9. * 00009000
  10. * CONTENTS - 00010000
  11. * 00011000
  12. * DMKDIAL - 'DIAL' A VIRTUAL MULTI-ACCESS SYSTEM 00012000
  13. *. 00016000
  14. SPACE 2 00017000
  15. DMKDIA START 00018000
  16. SPACE 00019000
  17. DC CL8'DMKDIA' PAGEABLE MODULE IDENTIFIER 00020000
  18. SPACE 00021000
  19. USING PSA,R0 00022000
  20. USING VMBLOK,R11 00023000
  21. USING SAVEAREA,R13 00024000
  22. SPACE 00025000
  23. EXTRN DMKCVTBH,DMKCVTHB,DMKCVTBD @V240820 00026000
  24. EXTRN DMKSCNFD,DMKSCNRD,DMKSCNRU @V240820 00027000
  25. EXTRN DMKSCNVU,DMKSCNAU,DMKSCNVD @V240820 00028000
  26. EXTRN DMKIOSQR,DMKIOSHA,DMKERMSG @V240820 00029000
  27. EXTRN DMKSCNRN @VA13704 00030000
  28. EXTRN DMKSTKIO @VA13704 00030700
  29. EXTRN DMKVIOIN,DMKRNHND @VA13704 00031400
  30. EXTRN DMKQCNCL,DMKQCNWT @V407510 00033000
  31. EXTRN DMKCVTAB @VA04301 00033100
  32. EXTRN DMKSCHRT,DMKDIBDR @VA13704 00033200
  33. EXTRN DMKQCNSY SYNCHRONIZE CONTASKS @VA11241 00033600
  34. SPACE 00034000
  35. EXTRN DMKSYSCK,DMKSYSND @VA13704 00035000
  36. ENTRY DMKDIAIR @VA05089 00035500
  37. EJECT 00036000
  38. *. 00037000
  39. * SUBROUTINE NAME - 00038000
  40. * 00039000
  41. * DMKDIAL - 'DIAL' A VIRTUAL MULTI-ACCESS SYSTEM 00040000
  42. * 00041000
  43. * FUNCTION - 00042000
  44. * 00043000
  45. * TO ATTACH A USER'S TERMINAL AS A DEDICATED DEVICE TO AN 00044000
  46. * EXISTING VIRTUAL 270X TERMINAL LINE IN THE VIRTUAL 00045000
  47. * MACHINE ADDRESSED BY THE COMMAND LINE. 00046000
  48. * 00047000
  49. * COMMAND LINE FORMAT - 00048000
  50. * 00049000
  51. * +--------+-------------------+ 00050000
  52. * | | | 00051000
  53. * | DIAL | USERID <VADD> | 00052000
  54. * | | | 00053000
  55. * +--------+-------------------+ 00054000
  56. * 00055000
  57. * ENTRY CONDITIONS - 00056000
  58. * 00057000
  59. * GPR 2 = 0 00058000
  60. * GPR 9 = ADDRESS OF COMMAND BUFFER 00059000
  61. * GPR 11 = ADDRESS OF USER'S VMBLOK 00060000
  62. * GPR 12 = ADDRESS OF DMKDIAL 00061000
  63. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00062000
  64. * 00063000
  65. * EXIT CONDITIONS - 00064000
  66. * 00065000
  67. * IF THE COMMAND LINE WAS IN ERROR, OR IF THE CONNECT 00066000
  68. * COULD NOT BE MADE, RETURNS TO CP370 WITH THE USER NOT 00067000
  69. * YET LOGGED IN OR DIALED TO ANY SYSTEM. 00068000
  70. * 00069000
  71. * IF THE DIAL WAS COMPLETED, EXITS WITH THE SPECIFIED 00070000
  72. * CONNECTION MADE, GPR 11 = VMBLOK OF DIAL-ED SYSTEM 00071000
  73. * 00072000
  74. * CALLS TO OTHER ROUTINES - 00073000
  75. * 00074000
  76. * DMKSCNFD 00075000
  77. * DMKSCNRN 00076000
  78. * DMKSCNRD 00077000
  79. * DMKSCNVU 00078000
  80. * DMKSCNAU 00079000
  81. * DMKQCNWT 00080000
  82. * DMKQCNSY 00080500
  83. * DMKDSPCH 00081000
  84. * DMKCVTBH 00082000
  85. * DMKCVTBD 00083000
  86. * DMKCVTHB 00084000
  87. * DMKIOSQR 00085000
  88. * DMKFREE 00086000
  89. * DMKFRET 00087000
  90. * 00088000
  91. EJECT 00089000
  92. * EXTERNAL REFERENCES - 00090000
  93. * 00091000
  94. * DMKSYSND - NUMBER OF DIALED USERS 00092000
  95. * DMKVIOIN - INTERRUPT RETURN FOR DEDICATED DEVICES 00093000
  96. * 00094000
  97. * TABLES / WORK AREAS - NONE 00095000
  98. * 00096000
  99. * REGISTER USAGE - 00097000
  100. * 00098000
  101. * GPR 6 = ADDRESS OF VCHBLOK 00099000
  102. * GPR 7 = ADDRESS OF VCUBLOK 00100000
  103. * GPR 8 = ADDRESS OF VDEVBLOK 00101000
  104. * GPR 9 = ADDRESS OF COMMAND BUFFER 00102000
  105. * GPR 11 = ADDRESS OF USER'S VMBLOK 00103000
  106. * GPR 12 = BASE REGISTER 00104000
  107. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00105000
  108. * 00106000
  109. * NOTES - NONE 00107000
  110. * 00108000
  111. * OPERATION - 00109000
  112. * 00110000
  113. * 1. CHECKS COMMAND LINE (VIA DMKSCNFD) FOR PRESENCE OF 00111000
  114. * SPECIFIED USERID (ERROR MESSAGE AND RETURN IF NOT PRESENT). 00112000
  115. * CHECKS FOR SPECIFIED USERID ON RUNNING SYSTEM VIA DMKSCNAU 00113000
  116. * (ERROR MESSAGE AND RETURN IF NOT ON SYSTEM). 00114000
  117. * CHECKS THAT SPECIFIED USERID HAS ENABLED COMMUNICATIONS 00115000
  118. * LINES AVAILABLE FOR USE (ERROR MESSAGE AND RETURN IF NOT). 00116000
  119. * 00117000
  120. * 2. IF ALL OF THE ABOVE CHECKS ARE SUCCESSFUL, CONNECTS 00118000
  121. * RDEVBLOK OF THE DIAL-ER'S TERMINAL TO THE VDEVBLOK 00119000
  122. * OF THE SLECTED LINE. AFTER THE DIAL VERIFICATION MESSAGE 00120000
  123. * IS COMPLETE, THE DIAL-ER'S VMBLOK IS REMOVED FROM THE 00121000
  124. * VMBLOK CHAIN AND RETURNED TO FREE STORAGE VIA DMKFRET. 00122000
  125. * THE IOBLOK FOR THE VIRTUAL ENABLE SEQUENCE IS PICKED 00123000
  126. * UP FROM THE VDEVBLOK AND STARTED VIA DMKIOSQR. RETURN 00124000
  127. * IS MADE TO DMKCFM WITH THE VMBLOK OF THE DIAL-ED SYSTEM 00125000
  128. * IN GPR 11 . 00126000
  129. * 00127000
  130. * RESPONSES - 00128000
  131. * 00129000
  132. * 'DIALED TO USERID AT CCU' 00130000
  133. * 00131000
  134. * 'LINE RADDR DIALED TO USERID DIALED= NNN' 00132000
  135. * 00133000
  136. * ERROR MESSAGES - 00134000
  137. * 00135000
  138. * DMKDIA011E INVALID DEVICE TYPE - $USERID$ VADDR 00136000
  139. * DMKDIA020E USERID MISSING OR INVALID 00137000
  140. * DMKDIA022E VADDR MISSING OR INVALID 00138000
  141. * DMKDIA045E $USERID$ NOT LOGGED ON 00139000
  142. * DMKDIA047E $USERID$ VADDR DOES NOT EXIST 00140000
  143. * DMKDIA055E LINE(S) NOT AVAILABLE ON $USERID$ 00141000
  144. * DMKDIA056E LINE VADDR BUSY ON $USERID$ 00142000
  145. * DMKDIA098E DEV RID MODE SWITCH NOT POSSIBLE 00143000
  146. *. 00144000
  147. * DMKDIA707E DIAL FUNCTION NOT AVAILABLE 00145000
  148. EJECT 00146000
  149. DMKDIAL RELOC , "DIAL USERID <VADD>" 00147000
  150. XC SAVEWRK1(4),SAVEWRK1 CLEAR WORK AREAS @V240820 00148000
  151. XC SAVEWRK2(8*4),SAVEWRK2 . . . @V240820 00149000
  152. L R1,VMDELAY GET DELAY. @VA12101 00149100
  153. LTR R1,R1 IS THERE A DELAY? @VA12101 00149110
  154. BZ NOTRQ NO, CONTINUE. @VA12101 00149120
  155. CALL DMKSCHRT UNCHAIN IT. @VA12101 00149130
  156. LA R0,TRQBSIZE GET SIZE. @VA12101 00149140
  157. CALL DMKFRET @VA12101 00149150
  158. SR R1,R1 CLEAR REG. @VA12101 00149160
  159. ST R1,VMDELAY ZERO VMDELAY. @VA12101 00149170
  160. NOTRQ EQU * @VA12101 00149180
  161. LM R0,R1,SAVER0 RESTORE REGS. @VA12101 00149190
  162. SPACE 00150000
  163. CALL DMKSCNFD GET USERID FROM COMMAND LINE 00151000
  164. BNZ NOUSRID NOT SPECIFIED - ERROR 00152000
  165. CALL DMKSCNAU FIND VMBLOK OF DIAL-ED USER 00153000
  166. BC 2,NOUSRID USERID FIELD IS INVALID 00154000
  167. BC 5,NOTLOGD HE'S NOT THERE, OR WON'T BE SOON 00155000
  168. SWITCH SWITCH TO MAIN PROCESSOR @V407510 00155100
  169. ST R1,SAVEWRK5 SAVE DIAL-ED VMBLOK ADDRESS @V240820 00156000
  170. L R6,VMTERM RDEVBLOK ADDRESS OF DIALER @V240820 00157000
  171. USING RDEVBLOK,R6 @V240820 00158000
  172. TM RDEVADD,RDEVLDEV Is this an LDEV? HRC065DK 00158100
  173. BZ NOTLDEV No, normal process then HRC065DK 00158200
  174. PUSH USING HRC065DK 00158300
  175. USING LDEVBLOK,R6 HRC065DK 00158400
  176. C R1,LDEVUSER LDEV user trying to DIALHRC065DK 00158500
  177. BE ERROR66 creator machine? Yes..HRC065DK 00158600
  178. POP USING LDEVBLOK HRC065DK 00158700
  179. NOTLDEV EQU * HRC065DK 00158800
  180. ST R6,SAVEWRK8 SAVE THE ADDRESS FOR LATER @V240820 00159000
  181. SPACE 00160000
  182. MVI SAVEWRK1,GRAPHIC ASSUME GRAPHIC TERMINAL @V240820 00161000
  183. TM RDEVTYPC,CLASGRAF GRAPHIC TERMINAL (327X) ? HRC101DK 00162190
  184. BZ NOTTYP32 NO, TRY NEXT TYPE HRC101DK 00162380
  185. TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3277/3278 ? HRC101DK 00162570
  186. BZ DIA707 NO, SEND NOT SUPPORTED MSG. HRC101DK 00162760
  187. B DIALSWP YES, GO DIAL @VA08433 00163400
  188. SPACE 00164000
  189. NOTTYP32 EQU * @VA08433 00164500
  190. MVI SAVEWRK1,STRTSTP TRY FOR 270X TERMINAL NEXT @V240820 00165000
  191. CLI RDEVTYPC,CLASTERM START-STOP TERMINAL ? @V240820 00166000
  192. BE DIALTYP YES - GET ADAPTER TYPE @V240820 00167000
  193. SPACE 00168000
  194. MVI SAVEWRK1,NCPTERM MUST BE AN NCP TERMINAL @V240820 00169000
  195. BAL R14,DIALNIC GET ADDRESS OF NICBLOK (NCP TERM)@V240820 00170000
  196. USING NICBLOK,R15 @V240820 00171000
  197. SH R15,=AL2(NICSIZE*8) BACK UP TO PREVIOUS NICBLOK @V240820 00172000
  198. TM NICTYPE,NICLINE THIS MUST BE THE LINE BLOCK @V240820 00173000
  199. BZ BADSWCH NO -- CAN'T SWITCH MULTIDROP@V240820 00174000
  200. TM NICSTAT,NICSWEP IS THE LINE SWITCHABLE ? @V240820 00175000
  201. BZ BADSWCH NO -- CANNOT USE 'DIAL' @V240820 00176000
  202. LH R1,NICEPAD CHECK OUT THE EMULATOR ADDRESS @V240820 00177000
  203. CALL DMKSCNRU TRY TO FIND REAL DEVICE BLOCKS @V240820 00178000
  204. BC 4+2,BADSWCH CHANNEL OR CTL UNIT NOT FOUND @V240820 00179000
  205. BC 8,DIALNCP DEVICE BLOCK IS ALREADY ACTIVE @V240820 00180000
  206. L R6,SAVEWRK8 RECOVER BASE RDEVBLOK ADDRESS @V240820 00181000
  207. ICM R1,15,RDEVEPDV TEST FOR DYNAMIC RDEVBLOK CHAIN @V240820 00182000
  208. BZ BADSWCH NONE AVAILABLE -- ERROR @V240820 00183000
  209. ST R1,SAVEWRK7 SAVE THE DUMMY RDEVBLOK ADDRESS @V240820 00184000
  210. L R1,RDEVEPDV-RDEVBLOK(,R1) REMOVE IT FROM CHAIN @V240820 00185000
  211. ST R1,RDEVEPDV . . . @V240820 00186000
  212. OI SAVEWRK1,DYNABLK DYNAMIC BLOCK IS RESERVED @V240820 00187000
  213. EJECT 00188000
  214. DIALNCP EQU * CHECK OUT INTERFACE ADAPTER TYPE @V240820 00189000
  215. L R15,SAVEWRK9 RECOVER NICBLOK ADDRESS @V240820 00190000
  216. LA R5,TYPIBM1 ASSUME IT'S A 2741 OR 1050 @V240820 00191000
  217. TM NICTYPE,NICCIBM SELECTRIC-BASED TERMINAL ? @V240820 00192000
  218. BO DIALSWP YES - GUESS WAS CORRECT @V240820 00193000
  219. LA R5,TYPTELE2 MUST BE A TELEGRAPH ADAPTER @V240820 00194000
  220. B DIALSWP . . . @V240820 00195000
  221. DROP R15 @V240820 00196000
  222. SPACE 2 00197000
  223. DIALTYP EQU * GET ADAPTER TYPE FOR 270X TERM @V240820 00198000
  224. CLI RDEVTYPE,TYPBSC IS THIS A 3270 REMOTE LINE @VM01092 00199000
  225. BE DIA707 YES, SEND NOT SUPPORTED MSG. @VM01092 00200000
  226. CLI RDEVTYPE,TYP3210 @VA05138 00200300
  227. BE DIA707 @VA05138 00200600
  228. IC R5,RDEVTYPE PICK UP THE DEVICE TYPE @V240820 00201000
  229. N R5,F240 HIGH-ORDER FOUR BITS = ADAPTER @V240820 00202000
  230. DROP R6 @V240820 00203000
  231. SPACE 2 00204000
  232. DIALSWP EQU * CHECK FOR ADDITIONAL OPERAND @V240820 00205000
  233. BAL R14,SWPUSER SWITCH TO DIAL-ED VMBLOK @V240820 00206000
  234. OI SAVEWRK1,FIRSTAD FORCE USE OF 'REMOTE' SLOTS @V240820 00207000
  235. LA R6,DIALNAD RETURN IF NO OPERAND @V240820 00208000
  236. BAL R10,SCANCVT SCAN FOR ADDRESS AND CONVERT IT @V240820 00209000
  237. USING VDEVBLOK,R8 @V240820 00210000
  238. SPACE 00211000
  239. TM SAVEWRK1,GRAPHIC DIAL VIA GRAPHIC TERMINAL ? @V240820 00212000
  240. BZ DIALINE NO -- CHECK ADAPTER TYPE @V240820 00213000
  241. TM VDEVTYPC,CLASGRAF CORRECT VIRTUAL DEVICE TYPE HRC101DK 00214590
  242. BZ BADVADD NO -- ERROR HRC101DK 00215180
  243. TM VDEVTYPE,TYP3277+TYP3278 MUST BE A 3277/3278 HRC101DK 00215770
  244. BZ BADVADD NO -- HRC101DK 00216360
  245. TM VDEVFLAG,VDEVDIAL IS IT AVAILABLE? @VA05772 00217100
  246. BO LINBUSY SO SORRY @VA05772 00217200
  247. TM VDEVSTAT,VDEVDED ALREADY IN USE ? @V200820 00218000
  248. BO LINBUSY YES - ERROR @V200820 00219000
  249. B DIALGOT LOOKS O.K. FROM HERE @V200820 00220000
  250. SPACE 2 00221000
  251. DIALINE EQU * DIAL FROM START/STOP TERMINAL @V200820 00222000
  252. CLI VDEVTYPC,CLASTERM TERMINAL TYPE DEVICE ? @V200820 00223000
  253. BNE BADVADD NO @V200820 00224000
  254. CLM R5,1,VDEVTYPE CORRECT ADAPTER TYPE ? 00225000
  255. BNE BADVADD NO 00226000
  256. TM VDEVFLAG,VDEVDIAL IS THIS LINE IS USE ? 00227000
  257. BO LINBUSY YES 00228000
  258. TM VDEVFLAG,VDEVENAB IS IT ENABLED ? 00229000
  259. BZ NOLINES LINE IS NOT AVAILABLE 00230000
  260. B DIALGOT EVERYTHING IS ALL RIGHT 00231000
  261. EJECT 00232000
  262. DIALNAD EQU * FIND AN ENABLED VIRTUAL LINE 00233000
  263. LA R14,2(0) BXLE INDEX 00234000
  264. LA R15,31(0) ... LIMIT 00235000
  265. SLR R2,R2 VMCHTBL INDEX 00236000
  266. DIALSCH EQU * SCAN VIRTUAL CHANNELS 00237000
  267. LH R6,VMCHTBL(R2) FIND A CHANNEL 00238000
  268. LTR R6,R6 ... 00239000
  269. BM DLNXTCH NOT ACTIVE - TRY NEXT 00240000
  270. A R6,VMCHSTRT ADD IN CHANNEL BASE 00241000
  271. USING VCHBLOK,R6 @V240820 00242000
  272. SLR R3,R3 VCHCUTBL INDEX 00243000
  273. DIALSCU EQU * SCAN VIRTUAL CONTROL UNITS 00244000
  274. LH R7,VCHCUTBL(R3) FIND A CONTROL UNIT 00245000
  275. LTR R7,R7 ... 00246000
  276. BM DLNXTCU NOT ACTIVE - TRY NEXT 00247000
  277. A R7,VMCUSTRT ADD IN CONTROL-UNIT BASE 00248000
  278. USING VCUBLOK,R7 @V240820 00249000
  279. SLR R4,R4 VCUDVTBL INDEX 00250000
  280. DIALSDV EQU * SCAN VIRTUAL DEVICES 00251000
  281. LH R8,VCUDVTBL(R4) FIND A DEVICE 00252000
  282. LTR R8,R8 ... 00253000
  283. BM DLNXTDV NOT ACTIVE - TRY NEXT 00254000
  284. AL R8,VMDVSTRT ADD IN DEVICE BASE 00255000
  285. USING VDEVBLOK,R8 @V240820 00256000
  286. SPACE 00257000
  287. TM VDEVSTAT,VDEVDED IS IT DEDICATED ?? @V200730 00258000
  288. BO DLNXTDV YES, KEEP LOOKING @V200730 00259000
  289. SPACE 00260000
  290. TM SAVEWRK1,GRAPHIC DIAL VIA GRAPHIC TERMINAL ? @V240820 00261000
  291. BZ DIALTRM NO -- MUST BE TERMINAL TYPE @V240820 00262000
  292. TM VDEVTYPC,CLASGRAF IS THIS A GRAPHIC DEVICE ? HRC101DK 00263590
  293. BZ DLNXTDV NO -- SKIP TO NEXT DEVICE HRC101DK 00264180
  294. TM VDEVTYPE,TYP3277+TYP3278 3277 OR 3278 ? HRC101DK 00264770
  295. BZ DLNXTDV NOPE - CONTINUE HRC101DK 00265360
  296. TM VDEVFLAG,VDEVDIAL IS IT AVAILABLE? @VA05772 00266100
  297. BO DLNXTDV SO SORRY @VA05772 00266200
  298. B DIALGOT FOUND THE VIRTUAL DEVICE @V200820 00267000
  299. SPACE 00268000
  300. DIALTRM EQU * CHECK FOR AVAILABLE TERMINAL @V200820 00269000
  301. CLI VDEVTYPC,CLASTERM TERMINAL-CLASS UNIT? @V200820 00270000
  302. BNE DLNXTDV NO - CONTINUE 00271000
  303. CLM R5,1,VDEVTYPE CORRECT ADAPTER TYPE? 00272000
  304. BNE DLNXTDV NO - CONTINUE 00273000
  305. TM VDEVFLAG,VDEVENAB+VDEVDIAL IS LINE AVAILABLE @V240820 00274000
  306. BM DIALGOT YES - TAKE IT AWAY @V240820 00275000
  307. SPACE 00276000
  308. DLNXTDV BXLE R4,R14,DIALSDV ... DEVICES 00277000
  309. DLNXTCU BXLE R3,R14,DIALSCU ... CONTROL UNITS 00278000
  310. DLNXTCH BXLE R2,R14,DIALSCH ... CHANNELS 00279000
  311. B NOLINES NO LINES AVAILABLE 00280000
  312. EJECT 00281000
  313. DIALGOT EQU * FOUND AN AVAILABLE LINE 00282000
  314. OI VDEVFLAG,VDEVDIAL THIS LINE NOW IN USE 00283000
  315. LH R1,VDEVADD BUILD VIRTUAL DEVICE ADDRESS @V240820 00284000
  316. AH R1,VCUADD . . . @V240820 00285000
  317. AH R1,VCHADD . . . @V240820 00286000
  318. STH R1,SAVEWRK2+2 SAVE IT FOR LATER USE @V240820 00287000
  319. CALL DMKCVTBH CONVERT IT FOR MESSAGES @V240820 00288000
  320. ICM R1,8,BLANKS INSERT A BLANK HIGH-ORDER @V240820 00289000
  321. ST R1,SAVEWRK4 PUT IT DOWN HERE @V240820 00290000
  322. BAL R14,SWPCALL BACK TO CALLER'S VMBLOK 00291000
  323. SPACE 00292000
  324. USING RDEVBLOK,R8 USE THE RDEVBLOK FOR A WHILE 00293000
  325. L R8,VMTERM RDEVBLOK ADDRESS TO GR8 @V240820 00294000
  326. LA R0,MSGSIZE MESSAGE BUFFER 00295000
  327. CALL DMKFREE ... 00296000
  328. LR R4,R1 @V200820 00297000
  329. ST R4,SAVEWRK6 SAVE THE BUFFER ADDRESS @V240820 00298000
  330. OI SAVEWRK1,MSGFRET REMEMBER TO RELEASE BUFFER @V240820 00299000
  331. USING MSGDIAL,R4 @V200820 00300000
  332. MVI MSGDIAL,X'40' CLEAR THE BUFFER 00301000
  333. MVC MSGDIAL+1(MSGSIZE*8-1),MSGDIAL 00302000
  334. TM SAVEWRK1,NCPTERM DIAL THROUGH THE 370X NCP ? @V240820 00303000
  335. BO DIALMSG YES - SET UP MESSAGE HEADER @V240820 00304000
  336. TM RDEVADD,RDEVLDEV Is this an LDEV? HRC065DK 00304100
  337. BO DIALDEV Yes HRC065DK 00304200
  338. SPACE 00305000
  339. CALL DMKSCNRN GET DEVICE NAME @V200730 00306000
  340. ST R1,MSGDIAL SET DEVICE NAME IN MESSAGE @V240820 00307000
  341. CALL DMKSCNRD GET REAL ADDRESS IN 'CCU' FORM @V240820 00308000
  342. LR R6,R1 SAVE IN GR6 FOR LATER USE @V240820 00309000
  343. CALL DMKCVTBH 00310000
  344. STCM R1,B'0111',MSGRADD THIS IS FOR THE OPERATOR 00311000
  345. B DIALSND GO FINISH OFF THE MESSAGE @V240820 00312000
  346. DIALDEV EQU * HRC065DK 00312100
  347. LH R1,RDEVADD Get the LDEV address HRC065DK 00312200
  348. N R1,F4095 Keep only the dev num HRC065DK 00312300
  349. CALL DMKCVTBH Make it displayable HRC065DK 00312400
  350. STCM R1,7,MSGRADD Put dev addr in message HRC065DK 00312500
  351. MVI MSGRADD-1,C'L' Move in LDEV indicator HRC065DK 00312600
  352. MVC MSGDIAL(3),=CL3'GRF' Use short GRAF name HRC065DK 00312700
  353. B DIALSND Go display msg HRC065DK 00312800
  354. EJECT 00313000
  355. DIALMSG EQU * FORMAT MSG FOR NCP TERMINAL @V240820 00314000
  356. LH R1,SAVEWRK1+2 TERMINAL RESOURCE REFERENCE @V240820 00315000
  357. CALL DMKCVTBH CONVERT IT FOR OUTPUT @V240820 00316000
  358. L R0,=C'DEV ' NCP TERMINAL IS A 'DEV' @V240820 00317000
  359. STM R0,R1,MSGDIAL SET TYPE, RADDR IN MESSAGE @V240820 00318000
  360. SPACE 00319000
  361. DIALSND EQU * @V240820 00320000
  362. MVC MSGFLD1(10),=C'DIALED TO ' 00321000
  363. L R1,SAVEWRK5 VMBLOK FOR DIAL-ED SYSTEM @V240820 00322000
  364. MVC MSGUSER(8),VMUSER-VMBLOK(R1) MOVE IN USERID @V240820 00323000
  365. MVC MSGVADD(3),SAVEWRK4+1 THIS IS FOR THE USER @V240820 00324000
  366. TM SAVEWRK1,GRAPHIC GRAPHICS DEVICE ? @VA09164 00324200
  367. BNO NOTGR NO @VA09164 00324400
  368. OI RDEVSTA3,RDEVDIIP DO NOT ALLOW ATTN @VA09164 00324600
  369. NOTGR EQU * @VA09164 00324800
  370. LA R0,MSGVADD+4-MSGFLD1 LENGTH OF USER MSG 00325000
  371. LA R1,MSGFLD1 00326000
  372. CALL DMKQCNWT,PARM=0,AFFINITY WRITE MESSAGE & WAIT @V407510 00327100
  373. SPACE 00328000
  374. CH R2,=H'12' LINE DROP WHILE TYPING ? 00329000
  375. BE UNDIAL YES - GO NO FURTHER 00330000
  376. TM SAVEWRK1,NCPTERM DIAL VIA THE 370X NCP/PEP ? @V240820 00331000
  377. BO DIALPEP YES - SWITCH LINE TO EP-MODE@V240820 00332000
  378. OI VMMLVL2,VMMDIAL NO MORE MESSAGES TO TERMINAL@VA11241 00332010
  379. CALL DMKQCNSY SYNCHRONIZE THE TERMINAL @VA11241 00332020
  380. SPACE 00333000
  381. ICM R10,15,RDEVAIOB IS THERE AN ACTIVE IOBLOK ? @V240820 00334000
  382. BNZ DIALSIO YES - STEAL IT @V240820 00335000
  383. LA R0,IOBSIZE WE NEED AN IOBLOK NOW @V200820 00336000
  384. CALL DMKFREE . . . @V200820 00337000
  385. LR R10,R1 @V200820 00338000
  386. USING IOBLOK,R10 @V200820 00339000
  387. XC 0(IOBSIZE*8,R10),0(R10) CLEAR IT @V200820 00340000
  388. STH R6,IOBRADD SET REAL DEVICE ADDRESS @V200820 00341000
  389. MVI IOBFLAG,IOBCP CP-GENERATED I/O @V200820 00342000
  390. ST R10,IOBLINK FORCE LINK TO ITSELF @V200820 00343000
  391. DIALSIO EQU * SETUP REMAINDER OF IOBLOK FIELDS @V200820 00345000
  392. LA R1,DMKDIAIR STEAL THE INTERRUPT @VA05089 00346000
  393. ST R1,IOBIRA ...TO CLEAR UP ACTIVE I/O 00347000
  394. ST R11,IOBUSER DON'T LOSE THE VMBLOK, EITHER 00348000
  395. ST R13,IOBMISC PRESERVE THE SAVEAREA 00349000
  396. TM SAVEWRK1,GRAPHIC GRAPHIC DEVICE DIALING ? @V240820 00350000
  397. BO SKIPHIO YES - GO FINISH CONNECTION @V240820 00351000
  398. ST R10,RDEVAIOB CONNECT IOBLOK TO RDEVBLOK @VA13362 00351100
  399. CALL DMKIOSHA RESET ACTIVE I/O FOR THE LINE @V240820 00352000
  400. GOTO DMKDSPCH ...UNTIL THE INTERRUPT COMES IN 00353000
  401. DROP R4,R6,R7,R8 @V240820 00354000
  402. EJECT 00355000
  403. USING DMKDIAIR,R12 ADDRESSABILITY FROM DMKDSPCH @VA05089 00356000
  404. DMKDIAIR DS 0D INTERRUPT RETURN ADDRESS @VA05089 00357000
  405. SL R12,=A(DMKDIAIR-DMKDIA) ADJUST TO BASE @VA05089 00358000
  406. USING DMKDIA,R12 NORMAL ADDRESSABILITY AGAIN 00359000
  407. L R13,IOBMISC GET MY SAVEAREA BACK 00360000
  408. DIALIOB EQU * @V200820 00361000
  409. L R1,IOBIOER GET ERROR BLOK IF ANY 00362000
  410. LTR R1,R1 TEST FOR ERROR 00363000
  411. BZ FRTIOB NONE, CONT 00364000
  412. LA R0,IOERSIZE GET SIZE 00365000
  413. USING IOERBLOK,R1 00366000
  414. AH R0,IOEREXT ADD EXTRA SIZE (IF ANY) OF IOERBLOK 00367000
  415. CALL DMKFRET FRET 00368000
  416. FRTIOB DS 0H 00369000
  417. LR R1,R10 00370000
  418. LA R0,IOBSIZE 00371000
  419. CALL DMKFRET RELEASE THE IOBLOK 00372000
  420. L R8,SAVEWRK8 DIALING RDEVBLOK ADDRESS @V240820 00373000
  421. CALL DMKQCNCL FLUSH ANY CONTASK STACK @V240820 00374000
  422. B SKIPHIO GO COMPLETE DIAL-ING 00375000
  423. DROP R1,R10 @V240820 00376000
  424. EJECT 00377000
  425. USING RDEVBLOK,R8 @V240820 00378000
  426. DIALPEP EQU * SWITCH LINE MODE FOR PEP DIAL @V240820 00379000
  427. L R9,SAVEWRK9 TERMINAL NICBLOK ADDRESS @V240820 00380000
  428. USING NICBLOK,R9 . . . @V240820 00381000
  429. OI NICSTAT,NICDISA STOP ACCEPTING CONTASK'S @V240820 00382000
  430. L R4,RDEVCON CURRENT CONTASK STACK, IF ANY @V240820 00383000
  431. MVC RDEVCON(4),NICQPNT MOVE TASK CHAIN TO RDEVBLOK @V240820 00384000
  432. XC NICQPNT(4),NICQPNT CLEAR THE NICBLOK CHAIN @V240820 00385000
  433. CALL DMKQCNCL FLUSH THE CONTASK STACK FIRST @V240820 00386000
  434. ST R4,RDEVCON RESTORE PREVIOUS CONTASK CHAIN @V240820 00387000
  435. LA R0,CRESDQ RESET DEVICE QUEUE IN THE 370X @V240820 00388000
  436. BAL R10,PEPCNTL ISSUE COMMAND, WAIT FOR RESPONSE @V240820 00389000
  437. LA R0,CRESIMD RESET IMMEDIATE FOR ACTIVE I/O @V240820 00390000
  438. BAL R10,PEPCNTL ISSUE COMMAND, WAIT FOR IT @V240820 00391000
  439. LA R0,CCDESMD COPY DEVICE DESTINATION MODE @V240820 00392000
  440. CALL DMKRNHND,PARM=0 WAIT FOR THE RETURNED DATA @V240820 00393000
  441. BNZ UNDIAL BAIL OUT - SOMETHING WENT WRONG @V240820 00394000
  442. LR R4,R1 MINI-CONTASK TO GR4 @V240820 00395000
  443. USING CONCCW3,R4 . . . @V240820 00396000
  444. CLI CONSYSR,X'60' COMPLETED SUCCESSFULLY ? @V240820 00397000
  445. BNE NCPFAIL NO -- RELEASE STORAGE AND EXIT @V240820 00398000
  446. NI CONDATA+1,255-X'02' TURN OFF MONITOR MODE FLAG @V240820 00399000
  447. LH R2,CONDCNT LENGTH OF DESTINATION MODE DATA @V240820 00400000
  448. LA R1,CONDATA POINT TO THE DATA FIELD @V240820 00401000
  449. LA R0,CSETDSM SET DEVICE DESTINATION MODE @V240820 00402000
  450. CALL DMKRNHND SEND COMMAND, WAIT FOR RESPON@V240820 00403000
  451. BNZ NCPFAIL BAIL OUT NOW @V240820 00404000
  452. BAL R10,FRTMINI RELEASE THE PREVIOUS RESPONSE @V240820 00405000
  453. LR R4,R1 CURRENT RESPONSE TO GR4 @V240820 00406000
  454. CLI CONSYSR,X'60' SET MODE COMPLETED O.K. ? @V240820 00407000
  455. BNE NCPFAIL NOPE - BAIL OUT @V240820 00408000
  456. BAL R10,FRTMINI RELEASE THE MINI-CONTASK @V240820 00409000
  457. MVC NICUSER(4),ASYSVM RESET NICBLOK VMBLOK PTR @V240820 00410000
  458. OI NICSTAT,NICDISA TEMPORARILY OFFLINE @V240820 00411000
  459. NI NICFLAG,255-NICSESN NO ACTIVE USER @V240820 00412000
  460. SH R9,=AL2(NICSIZE*8) BACK UP TO THE LINE NICBLOK @V240820 00413000
  461. TM NICSTAT,NICLTRC IS LINE TRACE ACTIVE ? @V240820 00414000
  462. BZ DIALSWT NO -- TRY THE MODE SWITCH @V240820 00415000
  463. LA R0,CTRMLTR TERMINATE NCP LINE TRACE @V240820 00416000
  464. CALL DMKRNHND,PARM=0 ISSUE THE CONTROL COMMAND @V240820 00417000
  465. BNZ DROPUSR BAIL OUT NOW @V240820 00418000
  466. BAL R10,FRETASK RELEASE THE RESPONSE AREA @V240820 00419000
  467. NI NICSTAT,255-NICLTRC LINE TRACE NO LONGER ACTIVE @V240820 00420000
  468. EJECT 00421000
  469. DIALSWT EQU * @V240820 00422000
  470. LA R0,CSWLMEP SWITCH LINE MODE TO EMULATION @V240820 00423000
  471. CALL DMKRNHND,PARM=0 WAIT FOR COMPLETION @V240820 00424000
  472. BNZ DROPUSR BAIL OUT IF THE NCP DIED @V240820 00425000
  473. LR R4,R1 RESPONSE AREA TO GR4 @V240820 00426000
  474. CLI CONSYSR,X'60' WAS THE MODE SWITCH SUCCESSFUL ? @V240820 00427000
  475. BE *+8 YES - TRULY AMAZING ! @V240820 00428000
  476. OI SAVEWRK1,EPABORT ABORT THE CONNECTION ASAP @V240820 00429000
  477. BAL R10,FRTMINI RELEASE THE RESPONSE CONTASK @V240820 00430000
  478. SPACE 00431000
  479. OI NICSTAT,NICEPMD INTERFACE NOW AN E.P. LINE @V240820 00432000
  480. OI RDEVFLAG,RDEVEPLN EMULATOR LINE NOW IN USE @V240820 00433000
  481. LH R1,NICEPAD EMULATION SUB-CHANNEL ADDRESS @V240820 00434000
  482. CALL DMKSCNRU LOCATE RCHBLOK, RCUBLOK, ETC. @V240820 00435000
  483. BZ SETRDEV DEVICE BLOCK ALREADY CONNECTED @V240820 00436000
  484. L R8,SAVEWRK7 RESERVED DYNAMIC RDEVBLOK @V240820 00437000
  485. USING RCHBLOK,R6 @V240820 00438000
  486. USING RCUBLOK,R7 @V240820 00439000
  487. SPACE 00440000
  488. LA R2,X'00F8' MASK FOR CONTROL UNIT ADDRESS @V240820 00441000
  489. N R2,NICEPAD-2 EXTRACT CONTROL UNIT ADDRESS @V240820 00442000
  490. SRL R2,2(0) SHIFT FOR RCHCUTBL INDEX @V240820 00443000
  491. LH R7,RCHCUTBL(R2) DISPLACEMENT TO RCUBLOK @V240820 00444000
  492. LTR R7,R7 IS THIS ONE AN ACTIVE SLOT ? @V240820 00445000
  493. BNM *+8 YES - O.K. TO INSERT DEVICE @V240820 00446000
  494. LH R7,RCHCUTBL-2(R2) BACK UP TO PREVIOUS SLOT @V240820 00447000
  495. AL R7,ARIOCU GR7 = PHYSICAL CONTROL UNIT BLOCK@V240820 00448000
  496. LA R2,X'000F' MASK FOR DEVICE ADDRESS ALONE @V240820 00449000
  497. N R2,NICEPAD-2 EXTRACT THE DEVICE ADDRESS @V240820 00450000
  498. STH R2,RDEVADD SET THE RDEVBLOK ADDRESS FIELD @V240820 00451000
  499. SLL R2,1(0) SHIFT FOR RCUDVTBL INDEX @V240820 00452000
  500. LR R1,R8 RDEVBLOK ADDRESS TO GR1 @V240820 00453000
  501. SL R1,ARIODV COMPUTE DISPLACEMENT TO RDEVBLOK @V240820 00454000
  502. SRL R1,3(0) . . .IN DOUBLE-WORDS @V240820 00455000
  503. STH R1,RCUDVTBL(R2) CONNECT THE RDEVBLOK @V240820 00456000
  504. ST R7,RDEVCUA . . . @V240820 00457000
  505. EJECT 00458000
  506. SETRDEV EQU * SETUP RDEVBLOK FOR DYNAMIC DIAL @V240820 00459000
  507. MVI RDEVSTAT,RDEVDED DEVICE IS NOW DEDICATED @V240820 00460000
  508. MVI RDEVFLAG,RDEVEPMD LINE SWITCHED FROM NCP MODE @V240820 00461000
  509. MVI RDEVTYPC,CLASTERM TERMINAL CLASS DEVICE @V240820 00462000
  510. NI SAVEWRK1,255-DYNABLK DYNAMIC BLOCK IN USE @V240820 00463000
  511. L R4,SAVEWRK8 370X BASE RDEVBLOK TO GR4 @V240820 00464000
  512. ST R8,SAVEWRK8 ACTUAL RDEVBLOK TO SAVEWRK8 @V240820 00465000
  513. MVC RDEVCYL(2),NICNAME SAVE LINE RESOURCE I.D. @V240820 00466000
  514. L R9,SAVEWRK9 TERMINAL NICBLOK ADDRESS AGAIN @V240820 00467000
  515. MVI RDEVTYPE,TYPIBM1 ASSUME IBM TYPE 1 ADAPTER @V240820 00468000
  516. TM NICTYPE,NICTELE TELEGRAPH TERMINAL TYPE ? @V240820 00469000
  517. BZ *+8 NO -- CORRECT AS IS @V240820 00470000
  518. MVI RDEVTYPE,TYPTELE2 SET TO TELEGRAPH TERMINAL @V240820 00471000
  519. LR R8,R4 BASE RDEVBLOK TO GR8 @V240820 00472000
  520. CALL DMKSCNRD GET 'CCU' ADDRESS IN GR1 @V240820 00473000
  521. L R8,SAVEWRK8 BACK TO DYNAMIC RDEVBLOK @V240820 00474000
  522. STH R1,RDEVBASE SET THE BASE ADDRESS @V240820 00475000
  523. TM SAVEWRK1,EPABORT WAS THE SWITCH SUCCESSFUL ? @V240820 00476000
  524. BZ SKIPHIO YES - O.K. TO CONTINUE @V240820 00477000
  525. BAL R9,FRETVMB DUMP THE CALLER'S VMBLOK @V240820 00478000
  526. L R1,SAVEWRK5 GET ADDRESS OF DIALED VMBLOK @V407510 00479100
  527. SWTCHVM SWITCH TO DIALED SYSTEM @V407510 00479200
  528. ST R11,SAVER11 DON'T RELOAD OLD VMBLOK ADDRESS @V240820 00480000
  529. LH R1,SAVEWRK2+2 VIRTUAL LINE ADDRESS @V240820 00481000
  530. CALL DMKSCNVU RE-ACCESS THE VIRTUAL BLOCKS @V240820 00482000
  531. USING VDEVBLOK,R8 @V240820 00483000
  532. MVC VDEVREAL(4),SAVEWRK8 SET VDEVREAL CORRECTLY @V240820 00484000
  533. CALL DMKDIBDR DROP THE DIALED CONNECTION @VA13704 00485000
  534. OI VDEVFLAG,VDEVENAB LINE IS STILL ENABLED @V240820 00486000
  535. B DIALEXT RETURN TO DMKCFM - WE BLEW IT @V240820 00487000
  536. DROP R8 @V240820 00488000
  537. EJECT 00489000
  538. PEPCNTL EQU * ISSUE CONTROL COMMAND FOR PEP @V240820 00490000
  539. CALL DMKRNHND,PARM=0 EXECUTE THE COMMAND @V240820 00491000
  540. BNZ UNDIAL BAIL OUT - SOMETHING WENT WRONG @V240820 00492000
  541. B FRETASK FRET THE RESPONSE CONTASK @V240820 00493000
  542. SPACE 00494000
  543. FRTMINI EQU * RELEASE THE MINI-CONTASK @V240820 00495000
  544. ST R1,BALR1 SAVE REGISTER ONE AT ENTRY @V240820 00496000
  545. LTR R1,R4 IS THERE A MINI-TASK TO FRET ? @V240820 00497000
  546. BZ FRETRET NO -- JUST EXIT @V240820 00498000
  547. FRETASK EQU * @V240820 00499000
  548. LH R0,0(0,R1) SIZE OF MINI-TASK IN DBL-WDS @V240820 00500000
  549. CALL DMKFRET RETURN THE FREE STORAGE @V240820 00501000
  550. SLR R4,R4 CLEAR MINI-TASK POINTER REGISTER @V240820 00502000
  551. FRETRET EQU * @V240820 00503000
  552. L R1,BALR1 RESTORE REGISTER R1 @V240820 00504000
  553. BR R10 . . . @V240820 00505000
  554. SPACE 2 00506000
  555. DROPUSR EQU * GET RID OF THE DIALING USER @V240820 00507000
  556. BAL R9,FRETVMB RELEASE CALLER'S VMBLOK @V240820 00508000
  557. NCPFAIL EQU * RELEASE STORAGE AND BAIL OUT @V240820 00509000
  558. BAL R10,FRTMINI RELEASE MINI-CONTASK RESPONSE @V240820 00510000
  559. SPACE 00511000
  560. UNDIAL EQU * THE DIAL-ING USER QUIT BEFORE DIAL WAS COMPLETE 00512000
  561. L R1,SAVEWRK5 GET DIALED VMBLOK @V407510 00513100
  562. SWTCHVM SWITCH TO DIALED SYSTEM @V407510 00513200
  563. ST R11,SAVER11 DO NOT RELOAD OLD VMBLOK ADDRESS 00514000
  564. TM SAVEWRK1,MSGFRET IS THERE A MESSAGE BUFFER ? @V240820 00515000
  565. BZ UNDIALL NO -- DON'T TRY TO FRET IT @V240820 00516000
  566. L R1,SAVEWRK6 MESSAGE BUFFER ADDRESS @V240820 00517000
  567. LA R0,MSGSIZE ...SIZE 00518000
  568. CALL DMKFRET RELEASE THE BUFFER 00519000
  569. UNDIALL EQU * @V240820 00520000
  570. LH R1,SAVEWRK2+2 RECOVER VIRTUAL DEVICE ADDRESS @V240820 00521000
  571. CALL DMKSCNVU LOCATE VDEVBLOK AGAIN 00522000
  572. BNZ DLABORT SKIP RESET IF BLOCK NOT FOUND @V240820 00523000
  573. NI VDEVFLAG-VDEVBLOK(R8),255-VDEVDIAL ABORT DIAL @V240820 00524000
  574. DLABORT EQU * RELEASE DYNAMIC RDEVBLOK, IF ANY @V240820 00525000
  575. TM SAVEWRK1,DYNABLK DID WE RESERVE AN RDEVBLOK ?@V240820 00526000
  576. BZ DIALOUT NO -- JUST EXIT NOW @V240820 00527000
  577. L R8,SAVEWRK8 DIALING RDEVBLOK (FROM VMTERM) @V240820 00528000
  578. USING RDEVBLOK,R8 @V240820 00529000
  579. L R1,SAVEWRK7 RESERVED DYNAMIC RDEVBLOK ADDRESS@V240820 00530000
  580. SWITCH SWITCH TO MAIN PROCESSOR @V407510 00530100
  581. MVC RDEVEPDV-RDEVBLOK(4,R1),RDEVEPDV ADD TO CHAIN @V240820 00531000
  582. ST R1,RDEVEPDV . . . @V240820 00532000
  583. B DIALOUT EXIT FORTHWITH @V240820 00533000
  584. EJECT 00534000
  585. SKIPHIO EQU * ADJUST NUMBER OF DIALED USERS, ETC. 00535000
  586. L R2,=A(DMKSYSND) NUMBER OF DIALED USERS 00536000
  587. L R1,0(0,R2) ... 00537000
  588. LA R1,1(0,R1) INCREMENT 00538000
  589. ST R1,0(0,R2) ... 00539000
  590. CALL DMKCVTBD CONVERT FOR PRINTING 00540000
  591. L R4,SAVEWRK6 MESSAGE BUFFER ADDRESS @V240820 00541000
  592. USING MSGDIAL,R4 . . . @V240820 00542000
  593. MVC MSGVADD(8),=C'DIALED= ' 00543000
  594. STCM R1,B'0111',MSGNDIL 00544000
  595. LA R0,MSGSIZE*8 00545000
  596. LR R1,R4 @V200820 00546000
  597. LA R3,MSGSIZE NO. OF DBL-WDS FOR FRET 00547000
  598. CALL DMKQCNWT,PARM=NORET+DFRET+OPERATOR 00548000
  599. NI SAVEWRK1,255-MSGFRET BUFFER IS NOW GONE @V240820 00549000
  600. DROP R4 @V200820 00550000
  601. SPACE 00551000
  602. BAL R9,FRETVMB RELEASE DIAL-ER'S VMBLOK 00552000
  603. L R1,ASYSVM POINT AT SYSTEM VMBLOK @VA11612 00552100
  604. ST R1,RDEVUSER SET RDEVUSER TO SYSTEM @VA11612 00552200
  605. L R1,SAVEWRK5 GET SAVED VMBLOK ADDRESS @V407510 00553100
  606. SWTCHVM SWITCH TO SAVED VMBLOK @V407510 00553200
  607. ST R11,SAVER11 DO NOT RE-LOAD VMBLOK OF DIAL-ER 00554000
  608. L R9,SAVEWRK8 RDEVBLOK IN R9 @VA09164 00554400
  609. USING RDEVBLOK,R9 @VA09164 00554900
  610. NI RDEVSTA3,255-RDEVDIIP TURN OFF DIAL IN PROGRESS @VA09164 00555400
  611. * FINISH UP VIRTUAL-TO-REAL LINKAGE 00556000
  612. LH R1,SAVEWRK2+2 VIRTUAL ADDRESS OF DIALED LINE @V240820 00557000
  613. SWITCH SWITCH TO MAIN PROCESSOR @V407510 00557100
  614. CALL DMKSCNVU SCAN AGAIN JUST IN CASE 00558000
  615. BNZ DIABORT DEVICE NO LONGER THERE @VA05115 00558500
  616. USING VDEVBLOK,R8 00559000
  617. OI RDEVSTAT,RDEVDED DEDICATED 00562000
  618. ST R9,VDEVREAL VIRTUAL POINTER TO REAL @V240820 00563000
  619. OI VDEVSTAT,VDEVDED DEVICE DEDICATED @V200730 00564000
  620. ST R11,RDEVUSER REAL DEVICE USER 00565000
  621. STH R1,RDEVATT REAL 'ATTACHED AS' ADDRESS 00566000
  622. L R15,=A(DMKSYSCK) @VM08883 00567000
  623. STCK 0(R15) STORE TOD CLOCK VALUE @VM08883 00568000
  624. BC 12,CLOCKOK IS CLOCK FUNCTIONING? @VA04301 00568250
  625. GOTO DMKCVTAB CLOCK DAMAGED...ABEND CVT001 @VA04301 00568500
  626. CLOCKOK EQU * @VA04301 00568750
  627. MVC RDEVTMAT,0(R15) REMEMBER TIME ATTACHED @VM08883 00569000
  628. LH R1,RDEVTYPC FORCE EQUAL TYPES 00570000
  629. STH R1,VDEVTYPC ... 00571000
  630. TM SAVEWRK1,GRAPHIC GRAPHIC TERMINAL DIALING ? @V240820 00572000
  631. BO GRAFDEV YES - DIFFERENT HANDLING @V240820 00573000
  632. EJECT 00574000
  633. USING IOBLOK,R10 @V240820 00575000
  634. L R10,VDEVIOB ENABLE IOBLOK 00576000
  635. LTR R10,R10 IS THERE AN IOB? @VA11314 00576100
  636. BNZ IOBGOOD YES, CONTINUE ON @VA11314 00576200
  637. CALL DMKDIBDR NO, USE DROP ROUTINE... @VA13704 00576300
  638. B DIALOUT ... AND GET OUT. @VA11314 00576400
  639. IOBGOOD DS 0H @VA11314 00576500
  640. ST R11,IOBUSER MAKE SURE THIS IS CORRECT @V240820 00577000
  641. LR R8,R9 REAL DEVICE BLOCK TO GR8 00578000
  642. L R1,IOBRCAW ENABLE CCW ADDRESS FROM DMKDIASM @V240820 00579000
  643. MVI 0(R1),X'01' CHANGE TO A WRITE CIRCLE-C @V240820 00580000
  644. TM SAVEWRK1,NCPTERM DIALING FROM AN NCP LINE ? @V240820 00581000
  645. BZ *+8 NO -- CORRECT AS IT STANDS @V240820 00582000
  646. MVI 0(R1),X'27' THE NCP NEEDS A REAL ENABLE @V240820 00583000
  647. CALL DMKIOSQR START REAL ENABLE 00584000
  648. SPACE 2 00585000
  649. DIALEXT EQU * DIALED CONNECTION IS COMPLETE @V240820 00586000
  650. L R15,SAVERETN RETURN ADDRESS (IN DMKCFM) @V240820 00587000
  651. LA R15,12(R15) SET TO RUN DIALED USER @V200730 00588000
  652. ST R15,SAVERETN SET RETURN @V200730 00589000
  653. DIALOUT EQU * @V240820 00590000
  654. EXIT @V200730 00591000
  655. EJECT 00592000
  656. USING IOBLOK,R10 @V200730 00593000
  657. GRAFDEV EQU * DEVICE END FROM VIRTUAL POWER-ON @V240820 00594000
  658. ST R11,IOBUSER SET USER OF BLOK @V200730 00595000
  659. L R1,=A(DMKVIOIN) INTERRUPT RETURN ADDRESS @V200730 00596000
  660. ST R1,IOBIRA SET IT @V200730 00597000
  661. LH R1,SAVEWRK2+2 VIRTUAL DEVICE ADDRESS @V240820 00598000
  662. STH R1,IOBVADD SET VIRT ADDRESS @V200730 00599000
  663. MVC IOBCSW(8),ZEROES CLEAR OUT THE CSW @V200820 00600000
  664. MVI IOBCSW+4,DE DEVICE END FROM POWER ON @V200730 00601000
  665. CALL DMKSTKIO STACK IOBLOK @V200730 00602000
  666. SLR R0,R0 @V200820 00603000
  667. ST R0,RDEVAIOB CLEAR IOBLOK PTR IN RDEVBLOK @V200820 00604000
  668. L R1,RDEVAIRA TRQBLOK ADDRESS FOR 3277, 3066 @V240820 00605000
  669. LTR R1,R1 IS THERE A TRQBLOK NOW ? @V240820 00606000
  670. BZ DIALEXT NO -- JUST EXIT @V240820 00607000
  671. LA R0,TRQBSIZE+CRTEXT EXTRA DBL-WD FOR GRAPHICS HRC101DK 00608490
  672. CALL DMKFRET RETURN TRQBLOK TO FREE STORAGE @V240820 00609000
  673. SLR R0,R0 @V240820 00610000
  674. ST R0,RDEVAIRA CLEAR OUT TRQBLOK POINTER @V240820 00611000
  675. B DIALEXT DIAL COMMAND IS COMPLETE @V240820 00612000
  676. DROP R8,R9,R10 @V240820 00613000
  677. DIABORT EQU * @VA05115 00613050
  678. L R9,SAVEWRK8 DIALING REAL DEVICE BLOK @VA05115 00613100
  679. USING RDEVBLOK,R9 @VA05115 00613150
  680. LR R1,R10 ADDR OF IOBLOK @VA05115 00613200
  681. LA R0,IOBSIZE SIZE OF IOBLOK @VA05115 00613250
  682. CALL DMKFRET RETURN IOBLOK TO FREE STORAGE @VA05115 00613300
  683. SLR R0,R0 CLEAR REG 0 @VA05115 00613350
  684. ST R0,RDEVAIOB CLEAR ACTIVE IOB PTR @VA05115 00613400
  685. L R1,RDEVAIRA TRQBLOK PTR @VA05115 00613450
  686. LTR R1,R1 ANY THERE? @VA05115 00613500
  687. BZ DIALOUT NO--JUST EXIT @VA05115 00613550
  688. LA R0,TRQBSIZE+CRTEXT EXTRA-WD FOR GRAPHICS HRC101DK 00613610
  689. CALL DMKFRET RETURN TRQBLOK TO FREE STORAGE @VA05115 00613650
  690. SLR R0,R0 ZERO REG0 @VA05115 00613700
  691. ST R0,RDEVAIRA CLEAR TRQBLOK PTR @VA05115 00613750
  692. B DIALOUT EXIT @VA05115 00613800
  693. DROP R9 @VA05514 00613850
  694. SPACE 2 00614000
  695. USING RDEVBLOK,R6 ADDRESSABILITY FROM EARLIER USE @V240820 00615000
  696. DIALNIC EQU * FIND NICBLOK FOR AN NCP TERMINAL @V240820 00616000
  697. LH R15,VMTRMID TERMINAL RESOURCE REFERENCE @V240820 00617000
  698. STH R15,SAVEWRK1+2 SAVE IT HERE FOR LATER USE @V240820 00618000
  699. N R15,F4095 STRIP OFF THE DEVICE CODE @V240820 00619000
  700. MH R15,=AL2(NICSIZE*8) DISPLACEMENT TO THE NICBLOK @V240820 00620000
  701. AL R15,RDEVNICL COMPUTE ACTUAL NICBLOK ADDRESS @V240820 00621000
  702. ST R15,SAVEWRK9 SAVE ADDRESS FOR LATER USE @V240820 00622000
  703. BR R14 . . . @V240820 00623000
  704. DROP R6 @V240820 00624000
  705. EJECT 00625000
  706. * 00626000
  707. * MESSAGE MODEL FOR USER AND OPERATOR RESPONSES 00627000
  708. * 00628000
  709. SPACE 00629000
  710. MSGDIAL DSECT 00630000
  711. DC C'LINE ' REAL DEVICE TYPE 00631000
  712. MSGRADD DC C'XXX ' " " " ADDRESS 00632000
  713. MSGFLD1 DC C'DIALED TO ' ACTIVITY CUE 00633000
  714. MSGUSER DC C'$USERID$ ' DIAL-ED USER 00634000
  715. MSGVADD DC C'XXX ' DIAL-ED VIRTUAL ADDRESS 00635000
  716. ORG MSGVADD ...OR... 00636000
  717. DC C'DIALED= ' OPERATOR INFO 00637000
  718. MSGNDIL DC C'NNN' NO. OF DIALED USERS 00638000
  719. ORG 00639000
  720. MSGSIZE EQU (*-MSGDIAL+7)/8 BUFFER LENGTH 00640000
  721. SPACE 2 00641000
  722. * EQUATES USED IN 'SAVEWRK1' FLAG BYTE: @V240820 00642000
  723. GRAPHIC EQU X'80' DIAL VIA GRAPHIC TERMINAL @V240820 00643000
  724. STRTSTP EQU X'40' DIAL VIA 270X/EMULATOR TERMINAL @V240820 00644000
  725. NCPTERM EQU X'20' DIAL VIA PEP/NCP TERMINAL @V240820 00645000
  726. FIRSTAD EQU X'10' FIRST ADDRESS HAS BEEN SCANNED @V240820 00646000
  727. DYNABLK EQU X'08' DYNAMIC RDEVBLOK IS RESERVED @V240820 00647000
  728. MSGFRET EQU X'04' MESSAGE BUFFER IS IN USE @V240820 00648000
  729. CTCWRAP EQU X'02' 'COUPLE' FOR TWO LOCAL CTCA'S @VA02003 00649000
  730. EPABORT EQU X'01' SWITCH TO EP-MODE FAILED @V240820 00650000
  731. SPACE 2 00651000
  732. DMKDIA CSECT , RE-ENTER PROGRAM CSECT 00652000
  733. EJECT 00653000
  734. * 00893000
  735. * REMOVE VMBLOK FROM CHAIN OF ACTIVE VMBLOKS 00894000
  736. * RETURN VMBLOK TO FREE STORAGE 00895000
  737. * 00896000
  738. FRETVMB EQU * REMOVE + FRET VMBLOK 00897000
  739. L R2,ASYSVM THIS IS THE CHAIN ANCHOR 00898000
  740. CL R11,RUNUSER THIS IS EXTREMELY UNLIKELY 00899000
  741. BNE FRETVM0 CHECK LASTUSER @V407510 00900100
  742. ST R2,RUNUSER DON'T POINT AT FRET'ED BLOCK 00901000
  743. B FRETVM1 START FREEING BLOK @V407510 00901100
  744. FRETVM0 DS 0H @V407510 00901200
  745. CL R11,LASTUSER SAME AS LASTUSER? @V407510 00901300
  746. BNE FRETVM1 NO, START FREEING BLOK @V407510 00901400
  747. ST R2,LASTUSER DON'T POINT AT FRET'ED BLOK @V407510 00901500
  748. FRETVM1 EQU * HANDLE CHAIN ANCHOR PROBLEMS 00902000
  749. L R3,VMPNT-VMBLOK(0,R2) FIRST USER AFTER ANCHOR 00903000
  750. L R4,VMPNT USER AFTER OUR VMBLOK 00904000
  751. CLR R4,R11 IF HE POINTS TO HIMSELF... 00905000
  752. BNE FRETVM2 NO - GREAT 00906000
  753. SLR R5,R5 ...ZERO ANCHOR BECAUSE NOBODY IS LEFT 00907000
  754. B FRETVM3 ... 00908000
  755. FRETVM2 EQU * NOW CHASE THE VMBLOK CHAIN 00909000
  756. LR R5,R3 PREVIOUS BLOCK 00910000
  757. L R3,VMPNT-VMBLOK(,R3) NEXT ONE... 00911000
  758. CLR R3,R11 POINTED TO US THIS TIME ? 00912000
  759. BNE FRETVM2 NO - KEEP CHASING 00913000
  760. ST R4,VMPNT-VMBLOK(,R5) TAKE US OUT OF CHAIN 00914000
  761. FRETVM3 EQU * NOW MOVE THE CHAIN ANCHOR JUST IN CASE 00915000
  762. ST R5,VMPNT-VMBLOK(,R2) ...WE DELETED FIRST USER 00916000
  763. XR R2,R11 EXCHANGE R11 & R2 @V4M0204 00917100
  764. XR R11,R2 R11 = SYSTEM VMBLOK @V4M0204 00917200
  765. XR R2,R11 R2 = VMBLOK TO BE FRET'D @V4M0204 00917300
  766. CHARGE START CHARGE SYSTEM VMBLOK @V4M0204 00917400
  767. L R1,VMDELAY-VMBLOK(,R2) @VA11836 00917410
  768. LTR R1,R1 DO WE HAVE ONE? @VA08708 00917415
  769. BZ FRETVM3A NO - DO NOT TRY TO FRET TRQ @VA08708 00917420
  770. CLC TRQBFPNT-TRQBLOK(4,R1),ZEROES HAS THE TRQ BEEN @VA08708 00917425
  771. * QUED? 00917430
  772. BE FRETTRQ NO - GO FRET IT @VA08708 00917435
  773. CALL DMKSCHRT YES - RESET IT THEN FRET IT @VA08708 00917440
  774. FRETTRQ LA R0,TRQBSIZE LOAD TRQ SIZE FOR FRET @VA08708 00917445
  775. CALL DMKFRET NOW GIVE IT BACK @VA08708 00917450
  776. FRETVM3A EQU * @VA08708 00917455
  777. L R1,VMDFTPNT-VMBLOK(,R2) GET DEFERRED POINTER @V4M0204 00917500
  778. LTR R1,R1 DOES ONE EXIST? @V4M0204 00917600
  779. BZ FRETVM4 NO, FRET VMBLOK @V4M0204 00917700
  780. LA R0,CPEXSIZE GET SIZE OF DEFERRED BLOK @V4M0204 00917800
  781. CALL DMKFRET FREE DEFERRED TASK BLOK @V4M0204 00917900
  782. FRETVM4 DS 0H @V4M0204 00918000
  783. LR R1,R2 GET ADDRESS OF VMBLOK @V4M0204 00918100
  784. LA R0,VMBSIZE BLOCK SIZE = HUGE 00920000
  785. MVI VMUSER-VMBLOK+7(R1),X'00' NULLIFY USERID @VA13441 00920500
  786. CALL DMKFRET RELEASE THE VMBLOK 00921000
  787. BR R9 RETURN TO CALLER 00923000
  788. EJECT 01179000
  789. SWPUSER EQU * SWITCH TO OBJECTIVE VMBLOK 01409000
  790. ST R14,SAVEWRK6 SAVE R14 ACROSS CHARGE @V4M0116 01409050
  791. CHARGE SWITCH,SAVEWRK5 CHARGE 'OTHER' VMBLOK @V407510 01410100
  792. L R14,SAVEWRK6 RESTORE REG 14 @V4M0116 01410150
  793. BR R14 01413000
  794. SPACE 01414000
  795. SWPCALL EQU * SWITCH TO CALLER'S VMBLOK 01415000
  796. ST R14,SAVEWRK6 SAVE R14 ACROSS CHARGE @V4M0116 01415050
  797. CHARGE SWITCH,SAVER11 CHARGE CALLER @V407510 01416100
  798. L R14,SAVEWRK6 RESTORE REG 14 @V4M0116 01416150
  799. BR R14 01419000
  800. SPACE 2 01420000
  801. SCANCVT EQU * SCAN AND CONVERT DEVICE ADDRESS @V240820 01421000
  802. CALL DMKSCNFD SCAN FOR THE NEXT OPERAND @V240820 01422000
  803. BNZR R6 ERROR EXIT IF NOT FOUND @V240820 01423000
  804. CL R0,F3 THREE CHARACTERS MAXIMUM @V240820 01424000
  805. BH INVVADD INVALID VADDR @V240820 01425000
  806. CALL DMKCVTHB CONVERT ADDRESS TO BINARY @V240820 01426000
  807. BNZ INVVADD CONVERT FAILED - INVALID @V240820 01427000
  808. MAXDV R15 GET MAXIMUM VALID ADDRESS IN GR15@V240820 01428000
  809. CLR R1,R15 IS THE DEVICE ADDRESS POSSIBLE ? @V240820 01429000
  810. BH INVVADD NO -- KICK IT OUT @V240820 01430000
  811. LR R6,R1 REMEMBER ADDRESS FOR DMKSCNVU @V240820 01431000
  812. CALL DMKCVTBH RE-CONVERT IT FOR MESSAGES @V240820 01432000
  813. ICM R1,8,BLANKS GET A HIGH-ORDER BLANK @V240820 01433000
  814. TM SAVEWRK1,FIRSTAD IS THIS THE FIRST PASS ? @V240820 01434000
  815. BO SCANTWO NO -- USE REMOTE SLOTS @V240820 01435000
  816. OI SAVEWRK1,FIRSTAD REMEMBER THE FIRST PASS @V240820 01436000
  817. STH R6,SAVEWRK2 SAVE 'LOCAL' DEVICE ADDRESS @V240820 01437000
  818. ST R1,SAVEWRK3 SAVE EBCDIC EQUIVALENT OF ADDRESS@V240820 01438000
  819. B SCANSCN TRY TO FIND THE VIRTUAL BLOCKS @V240820 01439000
  820. SCANTWO EQU * SAVE VALUES FOR REMOTE DEVICE @V240820 01440000
  821. STH R6,SAVEWRK2+2 SLOT FOR REMOTE VIRTUAL ADDRESS @V240820 01441000
  822. ST R1,SAVEWRK4 SLOT FOR EBCDIC EQUIVALENT @V240820 01442000
  823. SCANSCN EQU * FIND THE VIRTUAL BLOCKS @V240820 01443000
  824. LR R1,R6 ADDRESS BACK TO GR1 @V240820 01444000
  825. CALL DMKSCNVU SCAN FOR THE DEVICE @V240820 01445000
  826. BNZ UNKNOWN DEVICE DOES NOT EXIST @V240820 01446000
  827. BR R10 RETURN INTERNALLY @V240820 01447000
  828. EJECT 01448000
  829. UNKNWN2 EQU * DEV VADDR DOES NOT EXIST 01449000
  830. LA R2,040(,0) MSG= DMKDIA040E 01450000
  831. B VADONLY SET UP VARIABLE DATA 01451000
  832. SPACE 01452000
  833. VADONLY EQU * SET VARIABLE 'VADDR' 01455000
  834. CALL DMKCVTBH CONVERT 01456000
  835. STCM R1,B'0111',SAVEWRK2 01457000
  836. LA R0,3 LENGTH 01458000
  837. B MSGSEND 01459000
  838. SPACE 01460000
  839. NOUSRID EQU * USERID MISSING OR INVALID 01461000
  840. LA R2,020(,0) MSG= DMKDIA020E 01462000
  841. B MSGONLY NO EXTRA DATA NEEDED 01463000
  842. SPACE 01464000
  843. NOTLOGD EQU * USERID NOT LOGGED ON 01465000
  844. MVC SAVEWRK2(8),BALRSAVE USERID LEFT BY 'SCNAU' 01466000
  845. LA R0,8 DATA LENGTH 01467000
  846. LA R2,045(,0) MSG= DMKDIA045E 01468000
  847. B MSGSEND 01469000
  848. ERROR66 EQU * Cant connect to host VM HRC065DK 01469100
  849. LA R2,66 MSG=DMKDIA066E HRC065DK 01469200
  850. B MSGONLY Go write the msg HRC065DK 01469300
  851. SPACE 01470000
  852. INVVADD EQU * VIRTUAL ADDRESS MISSING OR INVALID 01471000
  853. LA R2,022(,0) MSG= DMKDIA022E 01472000
  854. B MSGONLY NO EXTRA DATA NEEDED 01473000
  855. SPACE 01474000
  856. NOLINES EQU * NO LINES AVAILABLE ON USERID 01475000
  857. LA R0,8 DATA LENGTH 01476000
  858. LA R1,VMUSER ...USERID 01477000
  859. LA R2,055(,0) MSG= DMKDIA055E 01478000
  860. B MSGSEND+4 01479000
  861. SPACE 01480000
  862. LINBUSY EQU * LINE SPECIFIED IS BUSY 01485000
  863. LA R2,056(,0) MSG= DMKDIA056E 01486000
  864. VADDUSR EQU * SET VARIABLES 'VADDR USERID' 01487000
  865. CALL DMKSCNVD GET DEVICE ADDRESS IN 'CCU' FORM 01488000
  866. CALL DMKCVTBH CONVERT TO HEX 01489000
  867. STCM R1,B'0111',SAVEWRK2 01490000
  868. MVI SAVEWRK2+3,X'00' DELIMITER 01491000
  869. MVC SAVEWRK3(8),VMUSER SECOND FIELD 01492000
  870. LA R0,12 DATA LENGTH 01493000
  871. B MSGSEND SEND ERROR MSG AND EXIT @VA03704 01494000
  872. EJECT 01495000
  873. BADSWCH EQU * DMKDIA098E MODE SWITCH IMPOSSIBLE@V240820 01496000
  874. LH R1,SAVEWRK1+2 TERMINAL RESOURCE REFERENCE @V240820 01497000
  875. CALL DMKCVTBH CONVERT IT FOR OUTPUT MSG @V240820 01498000
  876. ST R1,SAVEWRK2 . . . @V240820 01499000
  877. LA R0,4 DATA LENGTH @V240820 01500000
  878. LA R2,098(0) MSG= DMKDIA098E @V240820 01501000
  879. B MSGSEND SEND ERROR MESSAGE AND EXIT @V240820 01502000
  880. SPACE 01503000
  881. BADVADD EQU * VIRTUAL DEVICE IS NOT A LINE 01504000
  882. LA R2,011(,0) MSG= DMKDIA011E 01505000
  883. B USRVADD SET UP VARIABLE STRING 01506000
  884. SPACE 01507000
  885. UNKNOWN EQU * USERID VADDR DOES NOT EXIST 01508000
  886. CH R1,SAVEWRK2 IS THIS THE LOCAL DEVICE ? @VA02009 01509000
  887. BE UNKNWN2 YES - DIFFERENT MESSAGE @V240820 01510000
  888. LA R2,047(,0) MSG= DMKDIA047E 01511000
  889. USRVADD EQU * SET VARIABLES 'USERID VADDR' 01512000
  890. MVC SAVEWRK2(8),VMUSER 01513000
  891. MVI SAVEWRK4,X'00' DELIMITER 01514000
  892. LA R0,12 01515000
  893. B MSGSEND 01516000
  894. DIA707 EQU * DMKDIA707E DIAL FUNCTION NOT... @VM01092 01517000
  895. SR R0,R0 LENGTH OF TEXT @VM01092 01518000
  896. LA R2,707(0) GET MESSAGE NUMBER @VM01092 01519000
  897. B MSGSEND SEND ERROR MESSAGE AND EXIT @VM01092 01520000
  898. SPACE 01521000
  899. MSGONLY EQU * NO DATA TO BE ADDED TO MESSAGE 01522000
  900. SLR R0,R0 01523000
  901. SLR R1,R1 01524000
  902. B MSGSEND+4 01525000
  903. SPACE 01526000
  904. MSGSEND EQU * SEND ERROR MSG TO USER 01527000
  905. LA R1,SAVEWRK2 POINT TO START OF VARIABLE DATA 01528000
  906. BAL R14,SWPCALL BACK TO CALLER'S VMBLOK 01529000
  907. ICM R0,B'1110',DMKDIA+3 MODULE IDENTIFIER 01530000
  908. ST R2,SAVER2 PASS RETURN CODE BACK TO DMKCFM @V240820 01531000
  909. LA R14,707(0) @VA09464 01531100
  910. CR R14,R2 DOES R2 CONTAIN 707 MESSAGE ? @VA09464 01531200
  911. BNE MSGBLD NO, DON'T PUT'A' IN MESSAGE @VA09464 01531300
  912. ICM R2,4,=X'C1' DMKDIA707A @VA09464 01531400
  913. MSGBLD ICM R2,8,=X'80' RETURN HERE AFTER ERROR MESSAGE @VA09464 01532100
  914. CALL DMKERMSG BUILD + TYPE ERROR MESSAGE 01533000
  915. B DLABORT CHECK FOR CLEAN-UP WORK TO DO @V240820 01534000
  916. EJECT 01535000
  917. LTORG 01536000
  918. EJECT 01537000
  919. COPY VCTCA VIRTUAL CHANNEL-TO-CHANNEL ADAPTER BLOCKS 01538000
  920. COPY TIMER @V200730 01539000
  921. COPY NETWORK @V240820 01540000
  922. COPY BTUCMD @V240820 01541000
  923. COPY EQU 01542000
  924. COPY DEVTYPES 01543000
  925. PSA 01544000
  926. COPY SAVE 01545000
  927. COPY VMBLOK 01546000
  928. COPY RBLOKS 01547000
  929. COPY VBLOKS 01548000
  930. COPY IOBLOKS 01549000
  931. COPY IOER 01550000
  932. END DMKDIA 01551000