home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / b / vmstrm.mar < prev    next >
Text File  |  2020-01-01  |  338KB  |  6,958 lines

  1. ;   0001  0    MODULE KERTRM (IDENT = '3.3.120',
  2. ;   0002  0        ADDRESSING_MODE(EXTERNAL = GENERAL, NONEXTERNAL = GENERAL)
  3. ;   0003  0        ) =
  4. ;   0004  1    BEGIN
  5. ;   0005  1    !<BLF/WIDTH:100>
  6. ;   0006  1     
  7. ;   0007  1    !++
  8. ;   0008  1    ! FACILITY:
  9. ;   0009  1    !
  10. ;   0010  1    !    KERMIT-32 terminal processing.
  11. ;   0011  1    !
  12. ;   0012  1    ! ABSTRACT:
  13. ;   0013  1    !
  14. ;   0014  1    !    This module will do all of the terminal processing for KERMIT-32.
  15. ;   0015  1    !    It contains the output routines for the terminal to send and
  16. ;   0016  1    !    receive messages as well as the routines to output text for debugging.
  17. ;   0017  1    !
  18. ;   0018  1    ! ENVIRONMENT:
  19. ;   0019  1    !
  20. ;   0020  1    !    VAX/VMS user mode.
  21. ;   0021  1    !
  22. ;   0022  1    ! AUTHOR: Robert C. McQueen, CREATION DATE: 25-March-1983
  23. ;   0023  1    !--
  24. ;   0024  1     
  25. ;   0025  1     %SBTTL 'Table of Contents'
  26. ;   0026  1    !
  27. ;   0027  1    ! TABLE OF CONTENTS:
  28. ;   0028  1    !
  29. ;   0029  1     %SBTTL 'Revision History'
  30. ;   0030  1     
  31. ;   0031  1    !++
  32. ;   0032  1    !
  33. ;   0033  1    ! Start of version 1.    25-March-1983
  34. ;   0034  1    !
  35. ;   0035  1    ! 1.0.000    By: Robert C. McQueen        On: 25-March-1983
  36. ;   0036  1    !        Create this module.
  37. ;   0037  1    !
  38. ;   0038  1    ! 1.1.001    By: W. Hom            On: 6-July-83
  39. ;   0039  1    !        Implement CONNECT command.
  40. ;   0040  1    !
  41. ;   0041  1    ! 1.1.002    By: Nick Bush            On: 7-July-83
  42. ;   0042  1    !        Fix RECEIVE QIO to time out correctly.
  43. ;   0043  1    !
  44. ;   0044  1    ! 1.2.003    By: Robert C. McQueen        On: 16-Aug-83
  45. ;   0045  1    !        Get the status correctly for the SS$_TIMEOUT checks.
  46. ;   0046  1    !
  47. ;   0047  1    ! 1.2.004    By: Robert C. McQueen        On: 9-Sept-1983
  48. ;   0048  1    !        Flag if we just opened the terminal, so that we can
  49. ;   0049  1    !        clear the input that is coming into the terminal.  This
  50. ;   0050  1    !        will clear up some of the junk that we get on start up.
  51. ;   0051  1    !
  52. ;   0052  1    ! 2.0.005    Release VAX/VMS Kermit-32 version 2.0
  53. ;   0053  1    !
  54. ;   0054  1    ! 2.0.006    By: Nick Bush            On: 10-Nov-1983
  55. ;   0055  1    !        Fix local echo and IBM mode.
  56. ;   0056  1    !
  57. ;   0057  1    ! 2.0.013    By: Nick Bush            On: 11-Nov-1983
  58. ;   0058  1    !        Make it possible to redirect debugging output to DBG$OUTPUT.
  59. ;   0059  1    !
  60. ;   0060  1    ! 2.0.015    By: Nick Bush            On: 17-Nov-1983
  61. ;   0061  1    !        Always purge typeahead when posting the receive QIO.
  62. ;   0062  1    !        Also eat any received data just before sending a packet.
  63. ;   0063  1    !
  64. ;   0064  1    ! 2.0.020    By: Nick Bush            On: 9-Dec-1983
  65. ;   0065  1    !        Only abort (when remote) if we seen two control-Y's in
  66. ;   0066  1    !        succession.  This way a single glitch does not kill us.
  67. ;   0067  1    !
  68. ;   0068  1    ! 2.0.021    By: Nick Bush            On: 12-Dec-1983
  69. ;   0069  1    !        Add status type-out character (^A), debug toggle
  70. ;   0070  1    !        character (^D), and force timeout character (^M)
  71. ;   0071  1    !        to those accepted during a transfer when we are remote.
  72. ;   0072  1    !
  73. ;   0073  1    ! 2.0.023    By: Nick Bush            On: 16-Dec-1983
  74. ;   0074  1    !        Add a default terminal name for the communications line.
  75. ;   0075  1    !        If KER$COMM is defined, that will be the default.
  76. ;   0076  1    !
  77. ;   0077  1    ! 2.0.027    By: Nick Bush            On: 20-Jan-1983
  78. ;   0078  1    !        Fix reset of parity to use the correct field in the
  79. ;   0079  1    !        IO status block from the IO$_SENSEMODE.  It was using
  80. ;   0080  1    !        the LF fill count instead.
  81. ;   0081  1    !
  82. ;   0082  1    ! 2.0.031    By: Nick Bush            On: 4-Feb-1983
  83. ;   0083  1    !        Change connect code to improve response (hopefully
  84. ;   0084  1    !        without worsening throughput or runtime requirements).
  85. ;   0085  1    !        When either terminal is idle we will be waiting for
  86. ;   0086  1    !        a single character with a larger buffered read queued
  87. ;   0087  1    !        up immediately after it.
  88. ;   0088  1    !
  89. ;   0089  1    ! 2.0.033    By: Nick Bush            On: 6-March-1984
  90. ;   0090  1    !        Change command input and terminal processing so that
  91. ;   0091  1    !        we will always have SYS$OUTPUT and SYS$COMMAND open
  92. ;   0092  1    !        when they are terminals, and will also always have
  93. ;   0093  1    !        the transfer terminal line open.  This makes it
  94. ;   0094  1    !        unnecessary for the user to allocate a dialup line
  95. ;   0095  1    !        in order to go between CONNECT and a transfer command,
  96. ;   0096  1    !        and keep anyone else from grabbing the line between
  97. ;   0097  1    !        commands.
  98. ;   0098  1    !        Also add the command parsing for the rest of the LOCAL/REMOTE
  99. ;   0099  1    !        commands.  This makes use of the fact that we have
  100. ;   0100  1    !        SYS$COMMAND open to allow us to read passwords without echo.
  101. ;   0101  1    !        Commands which should only be done when Kermit is local
  102. ;   0102  1    !        (GET, BYE, etc.) will now give an error if the transfer
  103. ;   0103  1    !        line is the same as the controlling terminal.
  104. ;   0104  1    !        SEND will now check for the files existance before calling
  105. ;   0105  1    !        KERMSG to send it.
  106. ;   0106  1    !
  107. ;   0107  1    ! 2.0.034    By: Nick Bush                On: 7-March-1984
  108. ;   0108  1    !        Default the parity type to be that of the default transfer
  109. ;   0109  1    !        line.  This should make things simpler for systems which use
  110. ;   0110  1    !        parity by default.
  111. ;   0111  1    !
  112. ;   0112  1    ! 2.0.035    By: Nick Bush                On: 8-March-1984
  113. ;   0113  1    !        Add LOG SESSION command to set a log file for CONNECT.
  114. ;   0114  1    !        While we are doing so, clean up the command parsing a little
  115. ;   0115  1    !        so that we don't have as many COPY_xxx routines.
  116. ;   0116  1    !
  117. ;   0117  1    ! 2.0.036    By: Robert C. McQueen            On: 20-March-1984
  118. ;   0118  1    !        Fix call to LOG_OPEN to make the debug log file work.
  119. ;   0119  1    !        Module: KERTRM
  120. ;   0120  1    !
  121. ;   0121  1    ! 2.0.037    By: Robert C. McQueen            On: 20-March-1984
  122. ;   0122  1    !        Fix call to LOG_OPEN for debug log file.
  123. ;   0123  1    !        Module: KERTRM.
  124. ;   0124  1    !
  125. ;   0125  1    ! 2.0.042    By: Nick Bush                On: 26-March-1984
  126. ;   0126  1    !        Fix connect processing to make it easy to type messages
  127. ;   0127  1    !        on the user's terminal while connected.  Use this
  128. ;   0128  1    !        to type messages when log file stopped and started.
  129. ;   0129  1    !        Include the node name in the messages to keep
  130. ;   0130  1    !        users who are running through multiple Kermit's from
  131. ;   0131  1    !        getting confused.
  132. ;   0132  1    !
  133. ;   0133  1    ! 2.0.043    By: Nick Bush                On: 28-March-1984
  134. ;   0134  1    !        Fix SET PARITY ODD to work.  Somehow, the table entry
  135. ;   0135  1    !        had PR_NONE instead of PR_ODD.  Also add status type
  136. ;   0136  1    !        out and help message to connect command.
  137. ;   0137  1    !
  138. ;   0138  1    ! 3.0.045    Start of version 3.
  139. ;   0139  1    !
  140. ;   0140  1    ! 3.0.046    By: Nick Bush                On: 29-March-1984
  141. ;   0141  1    !        Fix debugging log file to correctly set/clear file open
  142. ;   0142  1    !        flag.  Also make log files default to .LOG.
  143. ;   0143  1    !
  144. ;   0144  1    ! 3.1.054    By: Nick Bush                On: 13-July-1984
  145. ;   0145  1    !        Change TERM_OPEN to take an argument which determines
  146. ;   0146  1    !        whether it should post any QIO's.  This makes it unnecessary
  147. ;   0147  1    !        for TERM_CONNECT to cancel the QIO's, and avoids problems
  148. ;   0148  1    !        with DECnet remote terminals.
  149. ;   0149  1    !
  150. ;   0150  1    ! 3.1.060    By: Nick Bush                On: 16-March-1985
  151. ;   0151  1    !        Increase size of terminal name buffers to account for large
  152. ;   0152  1    !        unit numbers (most likely seen with VTA's).
  153. ;   0153  1    !
  154. ;   0154  1    ! 3.1.061    By: Nick Bush                On: 16-March-1985
  155. ;   0155  1    !        Only attempt to set parity back when closing terminal.
  156. ;   0156  1    !
  157. ;   0157  1    ! 3.1.065    By: Nick Bush                On: 10-April-1985
  158. ;   0158  1    !        Split IBM handshaking from parity and local echo.  Allow
  159. ;   0159  1    !        link time setting of IBM_MODE defaults by defining symbols:
  160. ;   0160  1    !
  161. ;   0161  1    !        IBM_MODE_CHARACTER = character value of handshake character
  162. ;   0162  1    !        IBM_MODE_ECHO = 1 for local echo, 2 for no local echo
  163. ;   0163  1    !        IBM_MODE_PARITY = (0 = none), (1 = mark), (2 = even),
  164. ;   0164  1    !            (3 = odd), (4 = space).
  165. ;   0165  1    !
  166. ;   0166  1    !        If not specified, Kermit will continue to use DC1, local echo
  167. ;   0167  1    !        and odd parity for IBM_MODE.
  168. ;   0168  1    !
  169. ;   0169  1    !
  170. ;   0170  1    ! Start of version 3.2 on 8-May-1985
  171. ;   0171  1    !
  172. ;   0172  1    ! 3.2.073    By: Robert McQueen            On: 11-March-1985
  173. ;   0173  1    !        Fix a problem restoring the terminal characteristics under
  174. ;   0174  1    !        VMS 4.x
  175. ;   0175  1    !
  176. ;   0176  1    ! 3.2.100    By: Gregory P. Welsh            On: 1-June-1986
  177. ;   0177  1    !        Added code for Transmit function (COMND_TRANSMIT).
  178. ;   0178  1    !
  179. ;   0179  1    ! Start of version 3.3
  180. ;   0180  1    !
  181. ;   0181  1    ! 3.3.101    By: Robert McQueen            On: 2-July-1986
  182. ;   0182  1    !        Change $TRNLOG system service to be LIB$SYS_TRNLOG and
  183. ;   0183  1    !        handle the errors better.  (LIB$ shouldn't change even if the
  184. ;   0184  1    !        system service does).
  185. ;   0185  1    !
  186. ;   0186  1    ! 3.3.102    By: Robert McQueen            On: 5-July-1986
  187. ;   0187  1    !        Add changes/fixes suggested by Art Guion and David Deley.
  188. ;   0188  1    !        - Turn off FALLBACK terminal characteristics for eightbit
  189. ;   0189  1    !          operations.
  190. ;   0190  1    !        - Decrease IBM timeouts when waiting for a handshake.
  191. ;   0191  1    !
  192. ;   0192  1    ! 3.3.105    By: Robert McQueen            On: 8-July-1986
  193. ;   0193  1    !        Attempt to fix the truncation errors that we now get from
  194. ;   0194  1    !        LINK with BLISS-32 v4.2.  Also do code clean up in VMSTRM and
  195. ;   0195  1    !        VMSFIL.
  196. ;   0196  1    !
  197. ;   0197  1    ! 3.3.115    JHW004        Jonathan H. Welch,    9-May-1988 14:35
  198. ;   0198  1    !        Added the ability to send a break character to
  199. ;   0199  1    !        the outgoing terminal session using the sequence
  200. ;   0200  1    !        esc-chr B.  The break will be sent after the next 
  201. ;   0201  1    !        character arrives.  This is because there must be
  202. ;   0202  1    !        no outstanding I/O on a channel in order to modify
  203. ;   0203  1    !        terminal characteristics (necessary to send a break).
  204. ;   0204  1    !
  205. ;   0205  1    ! 3.3.116    JHW008        Jonathan H. Welch,    12-Apr-1990 12:20
  206. ;   0206  1    !        Added and modified routines in to notify the user if
  207. ;   0207  1    !        SS$_HANGUP occurs on the outgoing terminal line.
  208. ;   0208  1    !
  209. ;   0209  1    ! 3.3.117    JHW012        Jonathan H. Welch,     18-May-1990 7:56
  210. ;   0210  1    !        Modified asn_wth_mbx to obtain the master PID in the
  211. ;   0211  1    !        process tree before asking for JPI$_TERMINAL.  $GETJPI
  212. ;   0212  1    !        was returning a null string for this item when called
  213. ;   0213  1    !        from a subprocess resulting in a "No default terminal 
  214. ;   0214  1    !        line for transfers" message.
  215. ;   0215  1    !
  216. ;   0216  1    ! 3.3.118    JHW013        Jonathan H. Welch,    18-May-1990 13:00
  217. ;   0217  1    !        Extended the buffer size for terminal names from 20 
  218. ;   0218  1    !        characters to 255 to make sure any terminal name can
  219. ;   0219  1    !        be accomodated.
  220. ;   0220  1    !
  221. ;   0221  1    ! 3.3.119    JHW014        Jonathan H. Welch,    5-Jun-1990 12:38
  222. ;   0222  1    !        Modified asn_wth_mbx to add a ':' to the end of the
  223. ;   0223  1    !               terminal name is one is not returned by VMS.
  224. ;   0224  1    !               This will keep LIB$GETDVI from failing with an
  225. ;   0225  1    !               "invalid device name" which results in the kermit
  226. ;   0226  1    !               error "no default terminal line for transfers."
  227. ;   0227  1    !
  228. ;   0228  1    ! 3.3.120    JHW016        Jonathan H. Welch,    17-Oct-1990 9:42
  229. ;   0229  1    !        Modified asn_wth_mbx to work properly in non-interactive mode.
  230. ;   0230  1    !--
  231. ;   0231  1     
  232. ;   0232  1     %SBTTL 'Library files'
  233. ;   0233  1    !
  234. ;   0234  1    ! INCLUDE FILES:
  235. ;   0235  1    !
  236. ;   0236  1    !
  237. ;   0237  1    ! System definitions
  238. ;   0238  1    !
  239. ;   0239  1     
  240. ;   0240  1    LIBRARY 'SYS$LIBRARY:STARLET';
  241. ;   0241  1     
  242. ;   0242  1    !
  243. ;   0243  1    ! KERMIT common definitions
  244. ;   0244  1    !
  245. ;   0245  1     
  246. ;   0246  1    REQUIRE 'KERCOM';
  247. ;   0455  1     
  248. ;   0456  1    REQUIRE 'KERERR';
  249. ;   0522  1     
  250. ;   0523  1     %SBTTL 'Structure definitions -- $GETDVI arguments'
  251. ;   0524  1    !
  252. ;   0525  1    ! $GETDVI interface fields and structure definition
  253. ;   0526  1    !
  254. ;   0527  1     
  255. ;   0528  1    LITERAL
  256. ;   0529  1        ITEM_SIZE = 3;            ! Length of a DVI item list entry
  257. ;   0530  1     
  258. ;   0531  1    !
  259. ;   0532  1    ! Fields for accessing the items in a DVI item list
  260. ;   0533  1    !
  261. ;   0534  1     
  262. ;   0535  1    FIELD
  263. ;   0536  1        ITEM_FIELDS =
  264. ;   0537  1        SET
  265. ;   0538  1        ITEM_BFR_LENGTH = [0, 0, 16, 0],
  266. ;   0539  1        ITEM_ITEM_CODE = [0, 16, 16, 0],
  267. ;   0540  1        ITEM_BFR_ADDRESS = [1, 0, 32, 0],
  268. ;   0541  1        ITEM_RTN_LENGTH = [2, 0, 32, 0]
  269. ;   0542  1        TES;
  270. ;   0543  1     
  271. ;   0544  1    !
  272. ;   0545  1    ! Structure definition for item list
  273. ;   0546  1     
  274. ;   0547  1    STRUCTURE
  275. ;   0548  1        ITEM_LIST [I, O, P, S, E; N] =
  276. ;   0549  1        [(N + 1)*ITEM_SIZE*4]
  277. ;   0550  1        (ITEM_LIST + ((I*ITEM_SIZE) + O)*4)<P, S, E>;
  278. ;   0551  1     
  279. ;   0552  1     %SBTTL 'Structures definitions -- Terminal characteristics'
  280. ;   0553  1    !
  281. ;   0554  1    ! Terminal characteristics words
  282. ;   0555  1    !
  283. ;   0556  1     
  284. ;   0557  1    LITERAL
  285. ;   0558  1        TC$_CHAR_LENGTH = 12;
  286. ;   0559  1     
  287. ;   0560  1    !
  288. ;   0561  1    ! Fields for accessing the items in a characteristic block
  289. ;   0562  1    !
  290. ;   0563  1     
  291. ;   0564  1    FIELD
  292. ;   0565  1        TC$_FIELDS =
  293. ;   0566  1        SET
  294. ;   0567  1        TC$_CLASS = [0, 0, 8, 0],
  295. ;   0568  1        TC$_TYPE = [0, 8, 8, 0],
  296. ;   0569  1        TC$_BFR_SIZE = [0, 16, 16, 0],
  297. ;   0570  1        TC$_PAGE_LEN = [1, 24, 8, 0],
  298. ;   0571  1        TC$_CHAR = [1, 0, 24, 0],
  299. ;   0572  1        TC$_CHAR_2 = [2, 0, 32, 0]
  300. ;   0573  1        TES;
  301. ;   0574  1     
  302. ;   0575  1    !
  303. ;   0576  1    ! Structure definition for item list
  304. ;   0577  1    !
  305. ;   0578  1     
  306. ;   0579  1    STRUCTURE
  307. ;   0580  1        TC$_CHAR_STR [O, P, S, E; N] =
  308. ;   0581  1        [TC$_CHAR_LENGTH]
  309. ;   0582  1        (TC$_CHAR_STR + O*4)<P, S, E>;
  310. ;   0583  1     
  311. ;   0584  1     %SBTTL 'Literals'
  312. ;   0585  1    !
  313. ;   0586  1    ! Literal definitions
  314. ;   0587  1    !
  315. ;   0588  1     
  316. ;   0589  1    LITERAL
  317. ;   0590  1        MAX_NODE_NAME = 255,            ! Size of a node name
  318. ;   0591  1        TERM_NAME_SIZE = 255,            ! Size of a terminal name - be generous
  319. ;   0592  1        RECV_BUFF_SIZE = MAX_MSG + 20,        ! Size of receive buffer
  320. ;   0593  1        GET_DEV_EFN = 7,                ! For GET_DEV_CHAR
  321. ;   0594  1        CONS_O_EFN = 6,                ! Event flag for console output
  322. ;   0595  1        CONS_EFN = 5,                ! Event flag for console input
  323. ;   0596  1        TERM_O_EFN = 4,                ! Event flag for terminal output
  324. ;   0597  1        TIME_EFN = 3,                ! Event flag number for receive timer
  325. ;   0598  1        TERM_EFN = 2;                ! Event flag number to use for Terminal input
  326. ;   0599  1     
  327. ;   0600  1     %SBTTL 'Storage'
  328. ;   0601  1    !
  329. ;   0602  1    ! OWN STORAGE:
  330. ;   0603  1    !
  331. ;   0604  1    !
  332. ;   0605  1    ! Communications routines storage
  333. ;   0606  1    !
  334. ;   0607  1     
  335. ;   0608  1    OWN
  336. ;   0609  1        FORCE_ABORT,                ! Force abort next receive
  337. ;   0610  1        FORCE_TIMEOUT,                ! Force time out on next receive
  338. ;   0611  1        TERM_FIRST_TIME,                ! First time QIO to read done
  339. ;   0612  1        TERM_CHAN,                    ! Channel the terminal is opened on
  340. ;   0613  1        mbx_chan : INITIAL(0),            ! Mailbox channel associated with TERM_CHAN device.
  341. ;   0614  1        new_mbx_chan : INITIAL(0),            ! Mailbox channel associated with new (temporary) TERM_CHAN device.
  342. ;   0615  1        CONS_CHAN,                    ! Channel the console terminal is opened on
  343. ;   0616  1        SYS_OUTPUT_CHAN,                ! Channel to SYS$OUTPUT (if it is a terminal)
  344. ;   0617  1        SYS_OUTPUT_OPEN,                ! SYS$OUTPUT open
  345. ;   0618  1        SYS_OUTPUT_NAME : VECTOR [TERM_NAME_SIZE, BYTE],    ! Text of physical name for SYS$OUTPUT
  346. ;   0619  1        SYS_OUTPUT_DESC : BLOCK [8, BYTE],        ! Descriptor for physical name
  347. ;   0620  1        SYS_COMMAND_CHAN,                ! Channel to SYS$COMMAND if a terminal
  348. ;   0621  1        SYS_COMMAND_OPEN,                ! SYS$COMMAND open
  349. ;   0622  1        SYS_COMMAND_NAME : VECTOR [TERM_NAME_SIZE, BYTE],    ! Text of physical name for SYS$COMMAND
  350. ;   0623  1        SYS_COMMAND_DESC : BLOCK [8, BYTE],        ! Descriptor for physical name
  351. ;   0624  1        TERM_NAME : VECTOR [TERM_NAME_SIZE, BYTE],    ! Text of current transfer terminal name
  352. ;   0625  1        JOB_TERM_NAME : VECTOR [TERM_NAME_SIZE, BYTE],    ! Text of jobs controlling terminal name
  353. ;   0626  1        TERM_OPEN_FLAG,                ! The transfer terminal is open
  354. ;   0627  1        SESSION_FAB : $FAB_DECL,            ! FAB for session logging
  355. ;   0628  1        SESSION_RAB : $RAB_DECL,            ! RAB for session logging
  356. ;   0629  1        SESSION_NAME : VECTOR [MAX_FILE_NAME, BYTE],    ! Actual name of session log file
  357. ;   0630  1        SESSION_OPEN,                ! Session log file open
  358. ;   0631  1        SESSION_LOGGING,                ! Session logging enabled
  359. ;   0632  1        DEBUG_FAB : $FAB_DECL,            ! FAB for debugging
  360. ;   0633  1        DEBUG_RAB : $RAB_DECL,            ! RAB for debugging
  361. ;   0634  1        DEBUG_NAME : VECTOR [MAX_FILE_NAME, BYTE],    ! Name of debugging log file
  362. ;   0635  1        DEBUG_REDIRECTED,                ! Debugging output redirected
  363. ;   0636  1        NODE_NAME : VECTOR [MAX_NODE_NAME, BYTE],    ! Node name text
  364. ;   0637  1        IO_STATUS : VECTOR [4, WORD],        ! IOSB for receive QIO
  365. ;   0638  1        RECV_BUFFER : VECTOR [CH$ALLOCATION (RECV_BUFF_SIZE, CHR_SIZE)],    ! Input buffer
  366. ;   0639  1        OLD_PARITY : BLOCK [8, BYTE],        ! Old IOSB information
  367. ;   0640  1        OLD_TERM_CHAR : TC$_CHAR_STR FIELD (TC$_FIELDS),    ! Old terminal chars
  368. ;   0641  1        NEW_TERM_CHAR : TC$_CHAR_STR FIELD (TC$_FIELDS);    ! New terminal chars
  369. ;   0642  1     
  370. ;   0643  1    GLOBAL
  371. ;   0644  1        NODE_DESC : BLOCK [8, BYTE] PRESET            ! Descriptor for node name
  372. ;   0645  1            ([DSC$B_CLASS ] = DSC$K_CLASS_S,        ! String class
  373. ;   0646  1             [DSC$B_DTYPE ] = DSC$K_DTYPE_T,        ! Text descriptor
  374. ;   0647  1             [DSC$W_LENGTH ] = MAX_NODE_NAME,        ! Maximum length
  375. ;   0648  1             [DSC$A_POINTER ] = NODE_NAME),        ! Address of the item
  376. ;   0649  1        DEBUG_DESC : BLOCK [8, BYTE] PRESET            ! Debugging log file
  377. ;   0650  1             ([DSC$B_CLASS ] = DSC$K_CLASS_S,        !  descriptor
  378. ;   0651  1              [DSC$B_DTYPE ] = DSC$K_DTYPE_T,        ! Standard string descriptor
  379. ;   0652  1              [DSC$W_LENGTH ] = 0,            !  initialially zero length
  380. ;   0653  1              [DSC$A_POINTER ] = DEBUG_NAME),        !  pointing to DEBUG_NAME
  381. ;   0654  1        SESSION_DESC : BLOCK [8, BYTE],        ! Descriptor for session log file name
  382. ;   0655  1        TERM_DESC : BLOCK [8, BYTE],        ! Descriptor for current transfer terminal
  383. ;   0656  1        JOB_TERM_DESC : BLOCK [8, BYTE],        ! Descriptor for controlling terminal (if any)
  384. ;   0657  1        TRANS_DELAY,                                ! The transmit delay      
  385. ;   0658  1        TRANS_ECHO_FLAG,                            ! The transmit echo flag  
  386. ;   0659  1        TERM_FLAG,                    ! Terminal setup for transfer
  387. ;   0660  1        Send_Break_TTY_Flag;            ! Flag to indicate if a break should be sent.
  388. ;   0661  1     
  389. ;   0662  1     %SBTTL 'External routines'
  390. ;   0663  1    !
  391. ;   0664  1    ! EXTERNAL REFERENCES:
  392. ;   0665  1    !
  393. ;   0666  1    !
  394. ;   0667  1    ! System library routines
  395. ;   0668  1    !
  396. ;   0669  1     
  397. ;   0670  1    EXTERNAL ROUTINE
  398. ;   0671  1        LIB$ASN_WTH_MBX : ADDRESSING_MODE (GENERAL),
  399. ;   0672  1        LIB$GETJPI : ADDRESSING_MODE (GENERAL),
  400. ;   0673  1        LIB$GETDVI : ADDRESSING_MODE (GENERAL),
  401. ;   0674  1        LIB$PUT_SCREEN : ADDRESSING_MODE (GENERAL),
  402. ;   0675  1        LIB$PUT_OUTPUT : ADDRESSING_MODE (GENERAL),
  403. ;   0676  1        LIB$EMUL : ADDRESSING_MODE (GENERAL),
  404. ;   0677  1        LIB$ADDX : ADDRESSING_MODE (GENERAL),
  405. ;   0678  1        LIB$SIGNAL : ADDRESSING_MODE (GENERAL),
  406. ;   0679  1        LIB$WAIT : ADDRESSING_MODE (GENERAL);
  407. ;   0680  1     
  408. ;   0681  1    !
  409. ;   0682  1    ! Forward routines:
  410. ;   0683  1    !
  411. ;   0684  1     
  412. ;   0685  1    FORWARD ROUTINE
  413. ;   0686  1        TERM_DUMP : NOVALUE,            ! Routine to type on terminal
  414. ;   0687  1        GET_DEV_CHAR,                ! Get device characteristics
  415. ;   0688  1        Term_Hangup : NOVALUE,
  416. ;   0689  1        Mbx_Ast_Rtn : NOVALUE,
  417. ;   0690  1        asn_wth_mbx,
  418. ;   0691  1        Send_Break_TTY,
  419. ;   0692  1        DO_RECEIVE_QIO,
  420. ;   0693  1        DO_CONS_QIO;
  421. ;   0694  1     
  422. ;   0695  1     %SBTTL 'External storage'
  423. ;   0696  1     
  424. ;   0697  1    !++
  425. ;   0698  1    ! The following is the various external storage locations that are
  426. ;   0699  1    ! referenced from this module.
  427. ;   0700  1    !--
  428. ;   0701  1     
  429. ;   0702  1    !
  430. ;   0703  1    ! KERMSG storage
  431. ;   0704  1    !
  432. ;   0705  1     
  433. ;   0706  1    EXTERNAL
  434. ;   0707  1        PARITY_TYPE,                ! Type of parity being used
  435. ;   0708  1        ECHO_FLAG,                    ! Local echo
  436. ;   0709  1        IBM_CHAR,                    ! IBM mode turn-around character
  437. ;   0710  1        RCV_EOL,                    ! Receive EOL character
  438. ;   0711  1        SEND_TIMEOUT,                ! Receive time out counter
  439. ;   0712  1        CONNECT_FLAG;                ! Flag if communications line is TT:
  440. ;   0713  1     
  441. ;   0714  1    !
  442. ;   0715  1    ! KERMIT storage
  443. ;   0716  1    !
  444. ;   0717  1     
  445. ;   0718  1    EXTERNAL
  446. ;   0719  1        ESCAPE_CHR;                    ! Escape char. for CONNECT.
  447. ;   0720  1     
  448. ;   0721  1     %SBTTL 'Terminal routines -- TERM_INIT - Initialize this module'
  449. ;   0722  1     
  450. ;   0723  1    GLOBAL ROUTINE TERM_INIT : NOVALUE =
  451. ;   0724  1     
  452. ;   0725  1    !++
  453. ;   0726  1    ! FUNCTIONAL DESCRIPTION:
  454. ;   0727  1    !
  455. ;   0728  1    !    This routine will initialize the terminal processing module.  It will
  456. ;   0729  1    !    initialize the various data locations in this module.
  457. ;   0730  1    !
  458. ;   0731  1    ! CALLING SEQUENCE:
  459. ;   0732  1    !
  460. ;   0733  1    !    TERM_INIT();
  461. ;   0734  1    !
  462. ;   0735  1    ! INPUT PARAMETERS:
  463. ;   0736  1    !
  464. ;   0737  1    !    None.
  465. ;   0738  1    !
  466. ;   0739  1    ! IMPLICIT INPUTS:
  467. ;   0740  1    !
  468. ;   0741  1    !    None.
  469. ;   0742  1    !
  470. ;   0743  1    ! OUTPUT PARAMETERS:
  471. ;   0744  1    !
  472. ;   0745  1    !    None.
  473. ;   0746  1    !
  474. ;   0747  1    ! IMPLICIT OUTPUTS:
  475. ;   0748  1    !
  476. ;   0749  1    !    None.
  477. ;   0750  1    !
  478. ;   0751  1    ! COMPLETION CODES:
  479. ;   0752  1    !
  480. ;   0753  1    !    None.
  481. ;   0754  1    !
  482. ;   0755  1    ! SIDE EFFECTS:
  483. ;   0756  1    !
  484. ;   0757  1    !    None.
  485. ;   0758  1    !
  486. ;   0759  1    !--
  487. ;   0760  1     
  488. ;   0761  2        BEGIN
  489. ;   0762  2     
  490. ;   0763  2        LOCAL
  491. ;   0764  2        COUNTER,                ! Counter for logical name translation
  492. ;   0765  2        STATUS,                    ! System call status
  493. ;   0766  2        DEV_TYPE,                ! Device type result
  494. ;   0767  2        RSL_LENGTH : VOLATILE,            ! Resulting length of translation
  495. ;   0768  2        RSL_NAME : BLOCK [TERM_NAME_SIZE, BYTE], ! Translated name
  496. ;   0769  2        RSL_DESC : BLOCK [8, BYTE],        ! Descriptor for translated name
  497. ;   0770  2     
  498. ;   0771  2        NODE_ITEM_LIST : FIELD(ITEM_FIELDS) ITEM_LIST [2] PRESET ! Node name
  499. ;   0772  2              ([0, ITEM_BFR_LENGTH ] = MAX_NODE_NAME,        ! Translation
  500. ;   0773  2               [0, ITEM_ITEM_CODE ] = LNM$_STRING,        ! Item list
  501. ;   0774  2               [0, ITEM_BFR_ADDRESS ] = NODE_NAME,        ! to xlate
  502. ;   0775  2               [0, ITEM_RTN_LENGTH ] = NODE_DESC[DSC$W_LENGTH]), ! SYS$NODE
  503. ;   0776  2     
  504. ;   0777  2        ITMLST : ITEM_LIST [1] FIELD (ITEM_FIELDS) PRESET
  505. ;   0778  2               ([0, ITEM_ITEM_CODE ] = JPI$_TERMINAL,        ! Get terminal name
  506. ;   0779  2            [0, ITEM_BFR_LENGTH ] = TERM_NAME_SIZE - 1, ! Max name size
  507. ;   0780  2            [0, ITEM_BFR_ADDRESS ] = JOB_TERM_NAME + 1, ! Place to store it
  508. ;   0781  2            [0, ITEM_RTN_LENGTH ] = RSL_LENGTH);        ! Resulting length
  509. ;   0782  2     
  510. ;   0783  2    !
  511. ;   0784  2    ! Initialize session log file descriptor
  512. ;   0785  2    !
  513. ;   0786  2        SESSION_DESC [DSC$B_CLASS] = DSC$K_CLASS_S;
  514. ;   0787  2        SESSION_DESC [DSC$B_DTYPE] = DSC$K_DTYPE_T;
  515. ;   0788  2        SESSION_DESC [DSC$W_LENGTH] = 0;
  516. ;   0789  2        SESSION_DESC [DSC$A_POINTER] = SESSION_NAME;
  517. ;   0790  2    !
  518. ;   0791  2    ! Get system node name (if any)
  519. ;   0792  2    !
  520. ;   0793  2        NODE_DESC [DSC$W_LENGTH] = MAX_NODE_NAME;
  521. ; P 0794  2        STATUS = $TRNLNM(ATTR = %REF(LNM$M_CASE_BLIND), 
  522. ; P 0795  2        TABNAM = %ASCID 'LNM$SYSTEM', LOGNAM = %ASCID 'SYS$NODE',
  523. ;   0796  2        ITMLST = NODE_ITEM_LIST);
  524. ;   0797  2     
  525. ;   0798  2        COUNTER = 64;                ! Max number of translations
  526. ;   0799  2     
  527. ;   0800  2        WHILE .STATUS                ! Translation fails
  528. ;   0801  2        AND .COUNTER GTR 0            ! or we do too many translations
  529. ;   0802  2        DO
  530. ;   0803  3        BEGIN
  531. ; P 0804  3        STATUS = $TRNLNM(ATTR = %REF(LNM$M_CASE_BLIND), 
  532. ; P 0805  3            TABNAM = %ASCID 'LNM$SYSTEM', LOGNAM = NODE_DESC, 
  533. ;   0806  3            ITMLST = NODE_ITEM_LIST);
  534. ;   0807  3        COUNTER = .COUNTER - 1;
  535. ;   0808  2        END;
  536. ;   0809  2    !
  537. ;   0810  2    ! If call failed, we don't really know the node name
  538. ;   0811  2    !
  539. ;   0812  3        IF (NOT .STATUS) OR (NODE_NAME[0] EQL 0)
  540. ;   0813  2        THEN
  541. ;   0814  2        NODE_DESC[DSC$W_LENGTH] = 0;
  542. ;   0815  2    !
  543. ;   0816  2    ! Get controlling terminal
  544. ;   0817  2    !
  545. ;   0818  2        JOB_TERM_DESC [DSC$B_CLASS] = DSC$K_CLASS_S;
  546. ;   0819  2        JOB_TERM_DESC [DSC$B_DTYPE] = DSC$K_DTYPE_T;
  547. ;   0820  2        JOB_TERM_DESC [DSC$W_LENGTH] = TERM_NAME_SIZE;
  548. ;   0821  2        JOB_TERM_DESC [DSC$A_POINTER] = JOB_TERM_NAME;
  549. ;   0822  2        JOB_TERM_NAME [0] = %C'_';
  550. ;   0823  2     
  551. ;   0824  2        STATUS = $GETJPIW (ITMLST = ITMLST);
  552. ;   0825  2        JOB_TERM_DESC [DSC$W_LENGTH] = .RSL_LENGTH + 1;
  553. ;   0826  2     
  554. ;   0827  2        IF NOT .STATUS OR .RSL_LENGTH EQL 0 THEN JOB_TERM_DESC [DSC$W_LENGTH] = 0;
  555. ;   0828  2     
  556. ;   0829  2    !
  557. ;   0830  2    ! Open the output device and command device (if they are terminals)
  558. ;   0831  2    !
  559. ;   0832  2        SYS_OUTPUT_DESC [DSC$B_CLASS] = DSC$K_CLASS_S;
  560. ;   0833  2        SYS_OUTPUT_DESC [DSC$B_DTYPE] = DSC$K_DTYPE_T;
  561. ;   0834  2        SYS_OUTPUT_DESC [DSC$W_LENGTH] = TERM_NAME_SIZE;
  562. ;   0835  2        SYS_OUTPUT_DESC [DSC$A_POINTER] = SYS_OUTPUT_NAME;
  563. ;   0836  2        STATUS = GET_DEV_CHAR (%ASCID'SYS$OUTPUT', SYS_OUTPUT_DESC, DEV_TYPE);
  564. ;   0837  2     
  565. ;   0838  2        IF .STATUS AND .DEV_TYPE EQL DC$_TERM
  566. ;   0839  2        THEN
  567. ;   0840  3        BEGIN
  568. ;   0841  3        STATUS = $ASSIGN (CHAN = SYS_OUTPUT_CHAN, DEVNAM = SYS_OUTPUT_DESC);
  569. ;   0842  3     
  570. ;   0843  3        IF .STATUS THEN SYS_OUTPUT_OPEN = TRUE;
  571. ;   0844  3     
  572. ;   0845  2        END;
  573. ;   0846  2     
  574. ;   0847  2        SYS_COMMAND_DESC [DSC$B_CLASS] = DSC$K_CLASS_S;
  575. ;   0848  2        SYS_COMMAND_DESC [DSC$B_DTYPE] = DSC$K_DTYPE_T;
  576. ;   0849  2        SYS_COMMAND_DESC [DSC$W_LENGTH] = TERM_NAME_SIZE;
  577. ;   0850  2        SYS_COMMAND_DESC [DSC$A_POINTER] = SYS_COMMAND_NAME;
  578. ;   0851  2        STATUS = GET_DEV_CHAR (%ASCID'SYS$COMMAND', SYS_COMMAND_DESC, DEV_TYPE);
  579. ;   0852  2     
  580. ;   0853  2        IF .STATUS AND .DEV_TYPE EQL DC$_TERM
  581. ;   0854  2        THEN
  582. ;   0855  3        BEGIN
  583. ;   0856  3        STATUS = $ASSIGN (CHAN = SYS_COMMAND_CHAN, DEVNAM = SYS_COMMAND_DESC);
  584. ;   0857  3     
  585. ;   0858  3        IF .STATUS THEN SYS_COMMAND_OPEN = TRUE;
  586. ;   0859  3     
  587. ;   0860  2        END;
  588. ;   0861  2    !
  589. ;   0862  2    ! Set up the terminal name descriptor
  590. ;   0863  2    !
  591. ;   0864  2        TERM_DESC [DSC$B_CLASS] = DSC$K_CLASS_S;
  592. ;   0865  2        TERM_DESC [DSC$B_DTYPE] = DSC$K_DTYPE_T;
  593. ;   0866  2        TERM_DESC [DSC$A_POINTER] = TERM_NAME;
  594. ;   0867  2        TERM_DESC [DSC$W_LENGTH] = TERM_NAME_SIZE;
  595. ;   0868  2    !
  596. ;   0869  2    ! If KER$COMM is a terminal, then use it as the default.
  597. ;   0870  2    !
  598. ;   0871  2        STATUS = GET_DEV_CHAR (%ASCID'KER$COMM', TERM_DESC, DEV_TYPE);
  599. ;   0872  2     
  600. ;   0873  2        IF NOT .STATUS OR .DEV_TYPE NEQ DC$_TERM
  601. ;   0874  2        THEN
  602. ;   0875  3        BEGIN
  603. ;   0876  3    !
  604. ;   0877  3    ! If KER$COMM is not a terminal (or is not anything), try SYS$INPUT.
  605. ;   0878  3    !
  606. ;   0879  3        TERM_DESC [DSC$W_LENGTH] = TERM_NAME_SIZE;
  607. ;   0880  3        STATUS = GET_DEV_CHAR (%ASCID'SYS$INPUT', TERM_DESC, DEV_TYPE);
  608. ;   0881  3     
  609. ;   0882  3        IF NOT .STATUS OR .DEV_TYPE NEQ DC$_TERM
  610. ;   0883  3        THEN
  611. ;   0884  4            BEGIN
  612. ;   0885  4    !
  613. ;   0886  4    ! If SYS$INPUT is not a terminal, check out SYS$OUTPUT.  We will already have
  614. ;   0887  4    ! it open if it is a terminal.
  615. ;   0888  4    !
  616. ;   0889  4     
  617. ;   0890  4            IF .SYS_OUTPUT_OPEN
  618. ;   0891  4            THEN
  619. ;   0892  5            BEGIN
  620. ;   0893  5            CH$COPY (.SYS_OUTPUT_DESC [DSC$W_LENGTH],
  621. ;   0894  5                CH$PTR (.SYS_OUTPUT_DESC [DSC$A_POINTER]), CHR_NUL, TERM_NAME_SIZE,
  622. ;   0895  5                CH$PTR (TERM_NAME));
  623. ;   0896  5            TERM_DESC [DSC$W_LENGTH] = .SYS_OUTPUT_DESC [DSC$W_LENGTH];
  624. ;   0897  5            END
  625. ;   0898  4            ELSE
  626. ;   0899  5            BEGIN
  627. ;   0900  5    !
  628. ;   0901  5    ! SYS$OUTPUT is not a terminal.  Next we try SYS$COMMAND.  It should already
  629. ;   0902  5    ! be open if it is a valid terminal.
  630. ;   0903  5    !
  631. ;   0904  5     
  632. ;   0905  5            IF .SYS_COMMAND_OPEN
  633. ;   0906  5            THEN
  634. ;   0907  6                BEGIN
  635. ;   0908  6                CH$COPY (.SYS_COMMAND_DESC [DSC$W_LENGTH],
  636. ;   0909  6                CH$PTR (.SYS_COMMAND_DESC [DSC$A_POINTER]), CHR_NUL, TERM_NAME_SIZE,
  637. ;   0910  6                CH$PTR (TERM_NAME));
  638. ;   0911  6                TERM_DESC [DSC$W_LENGTH] = .SYS_OUTPUT_DESC [DSC$W_LENGTH];
  639. ;   0912  6                END
  640. ;   0913  5            ELSE
  641. ;   0914  6                BEGIN
  642. ;   0915  6    !
  643. ;   0916  6    ! Here we start to get desparate.  Nothing we have tried so far was a terminal.
  644. ;   0917  6    ! Try the terminal which is controlling the job which owns this process.
  645. ;   0918  6    !
  646. ;   0919  6                TERM_DESC [DSC$W_LENGTH] = .JOB_TERM_DESC [DSC$W_LENGTH];
  647. ;   0920  6                CH$COPY (.JOB_TERM_DESC [DSC$W_LENGTH],
  648. ;   0921  6                CH$PTR (.JOB_TERM_DESC [DSC$A_POINTER]), CHR_NUL, TERM_NAME_SIZE,
  649. ;   0922  6                CH$PTR (TERM_NAME));
  650. ;   0923  5                END;
  651. ;   0924  5     
  652. ;   0925  4            END;
  653. ;   0926  4     
  654. ;   0927  3            END;
  655. ;   0928  3     
  656. ;   0929  2        END;
  657. ;   0930  2     
  658. ;   0931  2    !
  659. ;   0932  2    ! At this point TERM_DESC should be set up with something resembling
  660. ;   0933  2    ! the phyiscal name of a terminal (unless this is a detached process).
  661. ;   0934  2    ! We can now assign a channel to the terminal and tell the user what the
  662. ;   0935  2    ! default device is.
  663. ;   0936  2    !
  664. ;   0937  2        CH$WCHAR (CHR_NUL, CH$PTR (TERM_NAME, .TERM_DESC [DSC$W_LENGTH]));
  665. ;   0938  2        status = asn_wth_mbx(term_desc, %REF(100), %REF(100), term_chan, mbx_chan);
  666. ;   0939  2        TERM_DUMP (UPLIT BYTE(CHR_CRT, CHR_LFD), 2);
  667. ;   0940  2     
  668. ;   0941  2        IF .STATUS
  669. ;   0942  2        THEN
  670. ;   0943  3        BEGIN
  671. ;   0944  3     
  672. ;   0945  3        BIND
  673. ;   0946  3            DEFTRM_TEXT = %ASCID'Default terminal for transfers is: ';
  674. ;   0947  3     
  675. ;   0948  3        MAP
  676. ;   0949  3            DEFTRM_TEXT : BLOCK [8, BYTE];
  677. ;   0950  3     
  678. ;   0951  3        TERM_OPEN_FLAG = TRUE;
  679. ;   0952  3        TERM_DUMP (.DEFTRM_TEXT [DSC$A_POINTER], .DEFTRM_TEXT [DSC$W_LENGTH]);
  680. ;   0953  3        TERM_DUMP (TERM_NAME, .TERM_DESC [DSC$W_LENGTH]);
  681. ;   0954  3            IF .mbx_chan NEQ 0 THEN Term_Hangup();
  682. ;   0955  3        END
  683. ;   0956  2        ELSE
  684. ;   0957  3        BEGIN
  685. ;   0958  3     
  686. ;   0959  3        BIND
  687. ;   0960  3            NODEFTRM_TEXT = %ASCID'No default terminal line for transfers';
  688. ;   0961  3     
  689. ;   0962  3        MAP
  690. ;   0963  3            NODEFTRM_TEXT : BLOCK [8, BYTE];
  691. ;   0964  3     
  692. ;   0965  3        TERM_OPEN_FLAG = FALSE;
  693. ;   0966  3        TERM_DESC [DSC$W_LENGTH] = 0;
  694. ;   0967  3        TERM_DUMP (.NODEFTRM_TEXT [DSC$A_POINTER], .NODEFTRM_TEXT [DSC$W_LENGTH])
  695. ;   0968  2        END;
  696. ;   0969  2     
  697. ;   0970  2        TERM_DUMP (UPLIT BYTE(CHR_CRT, CHR_LFD), 2);
  698. ;   0971  2    !
  699. ;   0972  2    ! Initialize the flags
  700. ;   0973  2    !
  701. ;   0974  2        TERM_FLAG = FALSE;
  702. ;   0975  2        TRANS_DELAY = '0';   ! init transmit delay to .0 seconds
  703. ;   0976  2    !
  704. ;   0977  2    ! If we really did get the terminal open, then determine what type of
  705. ;   0978  2    ! parity it uses, and default to using that parity.
  706. ;   0979  2    !
  707. ;   0980  2     
  708. ;   0981  2        IF .TERM_OPEN_FLAG
  709. ;   0982  2        THEN
  710. ;   0983  3        BEGIN
  711. ; P 0984  3        STATUS = $QIOW (CHAN = .TERM_CHAN, FUNC = IO$_SENSEMODE, P1 = OLD_TERM_CHAR,
  712. ;   0985  3            P2 = TC$_CHAR_LENGTH, IOSB = OLD_PARITY);
  713. ;   0986  3     
  714. ;   0987  3        IF .STATUS
  715. ;   0988  3        THEN
  716. ;   0989  3     
  717. ;   0990  3            IF (.OLD_PARITY [6, 0, 8, 0] AND TT$M_PARITY) NEQ 0
  718. ;   0991  3            THEN
  719. ;   0992  3     
  720. ;   0993  3            IF (.OLD_PARITY [6, 0, 8, 0] AND TT$M_ODD) NEQ 0
  721. ;   0994  3            THEN
  722. ;   0995  3                PARITY_TYPE = PR_ODD
  723. ;   0996  3            ELSE
  724. ;   0997  3                PARITY_TYPE = PR_EVEN
  725. ;   0998  3     
  726. ;   0999  3            ELSE
  727. ;   1000  3            PARITY_TYPE = PR_NONE;
  728. ;   1001  3     
  729. ;   1002  2        END;
  730. ;   1003  2     
  731. ;   1004  1        END;                    ! End of TERM_INIT
  732.  
  733.  
  734.     .TITLE  KERTRM
  735.     .IDENT  \3.3.120\
  736.  
  737.     .PSECT  $OWN$,NOEXE,2
  738.  
  739. ;FORCE_ABORT
  740. U.1:    .BLKB   4                                       ;                      00000
  741. ;FORCE_TIMEOUT
  742. U.2:    .BLKB   4                                       ;                      00004
  743. ;TERM_FIRST_TIME
  744. U.3:    .BLKB   4                                       ;                      00008
  745. ;TERM_CHAN
  746. U.4:    .BLKB   4                                       ;                      0000C
  747. ;MBX_CHAN
  748. U.5:    .LONG   0                 ;                                              00000000  00010
  749. ;NEW_MBX_CHAN
  750. U.6:    .LONG   0                 ;                                              00000000  00014
  751. ;CONS_CHAN
  752. U.7:    .BLKB   4                                       ;                      00018
  753. ;SYS_OUTPUT_CHAN
  754. U.8:    .BLKB   4                                       ;                      0001C
  755. ;SYS_OUTPUT_OPEN
  756. U.9:    .BLKB   4                                       ;                      00020
  757. ;SYS_OUTPUT_NAME
  758. U.10:    .BLKB   255                                       ;                      00024
  759.     .BLKB   1                                       ;                      00123
  760. ;SYS_OUTPUT_DESC
  761. U.11:    .BLKB   8                                       ;                      00124
  762. ;SYS_COMMAND_CHAN
  763. U.12:    .BLKB   4                                       ;                      0012C
  764. ;SYS_COMMAND_OPEN
  765. U.13:    .BLKB   4                                       ;                      00130
  766. ;SYS_COMMAND_NAME
  767. U.14:    .BLKB   255                                       ;                      00134
  768.     .BLKB   1                                       ;                      00233
  769. ;SYS_COMMAND_DESC
  770. U.15:    .BLKB   8                                       ;                      00234
  771. ;TERM_NAME
  772. U.16:    .BLKB   255                                       ;                      0023C
  773.     .BLKB   1                                       ;                      0033B
  774. ;JOB_TERM_NAME
  775. U.17:    .BLKB   255                                       ;                      0033C
  776.     .BLKB   1                                       ;                      0043B
  777. ;TERM_OPEN_FLAG
  778. U.18:    .BLKB   4                                       ;                      0043C
  779. ;SESSION_FAB
  780. U.19:    .BLKB   80                                       ;                      00440
  781. ;SESSION_RAB
  782. U.20:    .BLKB   68                                       ;                      00490
  783. ;SESSION_NAME
  784. U.21:    .BLKB   132                                       ;                      004D4
  785. ;SESSION_OPEN
  786. U.22:    .BLKB   4                                       ;                      00558
  787. ;SESSION_LOGGING
  788. U.23:    .BLKB   4                                       ;                      0055C
  789. ;DEBUG_FAB
  790. U.24:    .BLKB   80                                       ;                      00560
  791. ;DEBUG_RAB
  792. U.25:    .BLKB   68                                       ;                      005B0
  793. ;DEBUG_NAME
  794. U.26:    .BLKB   132                                       ;                      005F4
  795. ;DEBUG_REDIRECTED
  796. U.27:    .BLKB   4                                       ;                      00678
  797. ;NODE_NAME
  798. U.28:    .BLKB   255                                       ;                      0067C
  799.     .BLKB   1                                       ;                      0077B
  800. ;IO_STATUS
  801. U.29:    .BLKB   8                                       ;                      0077C
  802. ;RECV_BUFFER
  803. U.30:    .BLKB   1024                                       ;                      00784
  804. ;OLD_PARITY
  805. U.31:    .BLKB   8                                       ;                      00B84
  806. ;OLD_TERM_CHAR
  807. U.32:    .BLKB   12                                       ;                      00B8C
  808. ;NEW_TERM_CHAR
  809. U.33:    .BLKB   12                                       ;                      00B98
  810.  
  811.     .PSECT  $GLOBAL$,NOEXE,2
  812.  
  813. NODE_DESC::
  814.     .WORD   255                 ;                                              00FF  00000
  815.     .BYTE   14, 1                 ;                                                01  0E  00002
  816.     .ADDRESS U.28                 ;                                              00000000' 00004
  817. DEBUG_DESC::
  818.     .WORD   0                 ;                                              0000  00008
  819.     .BYTE   14, 1                 ;                                                01  0E  0000A
  820.     .ADDRESS U.26                 ;                                              00000000' 0000C
  821. SESSION_DESC::
  822.     .BLKB   8                                       ;                      00010
  823. TERM_DESC::
  824.     .BLKB   8                                       ;                      00018
  825. JOB_TERM_DESC::
  826.     .BLKB   8                                       ;                      00020
  827. TRANS_DELAY::
  828.     .BLKB   4                                       ;                      00028
  829. TRANS_ECHO_FLAG::
  830.     .BLKB   4                                       ;                      0002C
  831. TERM_FLAG::
  832.     .BLKB   4                                       ;                      00030
  833. SEND_BREAK_TTY_FLAG::
  834.     .BLKB   4                                       ;                      00034
  835.  
  836.     .PSECT  $PLIT$,NOWRT,NOEXE,2
  837.  
  838. P.AAA:    .WORD   255, 2                 ;                                            0002  00FF  00000
  839.     .ADDRESS U.28, NODE_DESC         ;                                        00000000' 00000000' 00004
  840. P.AAB:    .WORD   254, 797             ;                                            031D  00FE  0000C
  841.     .ADDRESS U.17+1                 ;                                              00000000' 00010
  842.     .LONG   0                 ;                                              00000000  00014
  843. P.AAD:    .ASCII  \LNM$SYSTEM\<0><0>         ;                                54  53  59  53  24  4D  4E  4C  00018
  844.                          ;                                      00  00  4D  45  00020
  845. P.AAC:    .LONG   17694730             ;                                              010E000A  00024
  846.     .ADDRESS P.AAD                 ;                                              00000000' 00028
  847. P.AAF:    .ASCII  \SYS$NODE\             ;                                45  44  4F  4E  24  53  59  53  0002C
  848. P.AAE:    .LONG   17694728             ;                                              010E0008  00034
  849.     .ADDRESS P.AAF                 ;                                              00000000' 00038
  850. P.AAH:    .ASCII  \LNM$SYSTEM\<0><0>         ;                                54  53  59  53  24  4D  4E  4C  0003C
  851.                          ;                                      00  00  4D  45  00044
  852. P.AAG:    .LONG   17694730             ;                                              010E000A  00048
  853.     .ADDRESS P.AAH                 ;                                              00000000' 0004C
  854. P.AAJ:    .ASCII  \SYS$OUTPUT\<0><0>         ;                                50  54  55  4F  24  53  59  53  00050
  855.                          ;                                      00  00  54  55  00058
  856. P.AAI:    .LONG   17694730             ;                                              010E000A  0005C
  857.     .ADDRESS P.AAJ                 ;                                              00000000' 00060
  858. P.AAL:    .ASCII  \SYS$COMMAND\<0>         ;                                4D  4D  4F  43  24  53  59  53  00064
  859.                          ;                                      00  44  4E  41  0006C
  860. P.AAK:    .LONG   17694731             ;                                              010E000B  00070
  861.     .ADDRESS P.AAL                 ;                                              00000000' 00074
  862. P.AAN:    .ASCII  \KER$COMM\             ;                                4D  4D  4F  43  24  52  45  4B  00078
  863. P.AAM:    .LONG   17694728             ;                                              010E0008  00080
  864.     .ADDRESS P.AAN                 ;                                              00000000' 00084
  865. P.AAP:    .ASCII  \SYS$INPUT\<0><0><0>         ;                                55  50  4E  49  24  53  59  53  00088
  866.                          ;                                      00  00  00  54  00090
  867. P.AAO:    .LONG   17694729             ;                                              010E0009  00094
  868.     .ADDRESS P.AAP                 ;                                              00000000' 00098
  869. P.AAQ:    .BYTE   13, 10                 ;                                                0A  0D  0009C
  870.     .BLKB   2                                       ;                      0009E
  871. P.AAS:    .ASCII  \Default terminal for transfers is: \<0>
  872.                          ;                                20  74  6C  75  61  66  65  44  000A0
  873.                          ;                          6C  61  6E  69  6D  72  65  74  000A8
  874.                          ;                          61  72  74  20  72  6F  66  20  000B0
  875.                          ;                          69  20  73  72  65  66  73  6E  000B8
  876.                          ;                                      00  20  3A  73  000C0
  877. P.AAR:    .LONG   17694755             ;                                              010E0023  000C4
  878.     .ADDRESS P.AAS                 ;                                              00000000' 000C8
  879. P.AAU:    .ASCII  \No default terminal line for transfers\<0><0>
  880.                          ;                                75  61  66  65  64  20  6F  4E  000CC
  881.                          ;                          69  6D  72  65  74  20  74  6C  000D4
  882.                          ;                          65  6E  69  6C  20  6C  61  6E  000DC
  883.                          ;                          61  72  74  20  72  6F  66  20  000E4
  884.                          ;                          00  00  73  72  65  66  73  6E  000EC
  885. P.AAT:    .LONG   17694758             ;                                              010E0026  000F4
  886.     .ADDRESS P.AAU                 ;                                              00000000' 000F8
  887. P.AAV:    .BYTE   13, 10                 ;                                                0A  0D  000FC
  888.  
  889. FNM_NORMAL==        1
  890. FNM_FULL==        2
  891. FNM_UNTRAN==        4
  892. PR_MIN==        0
  893. PR_NONE==        0
  894. PR_MARK==        1
  895. PR_EVEN==        2
  896. PR_ODD==        3
  897. PR_SPACE==        4
  898. PR_MAX==        4
  899. GC_MIN==        1
  900. GC_EXIT==        1
  901. GC_DIRECTORY==        2
  902. GC_DISK_USAGE==     3
  903. GC_DELETE==        4
  904. GC_TYPE==        5
  905. GC_HELP==        6
  906. GC_LOGOUT==        7
  907. GC_LGN==        8
  908. GC_CONNECT==        9
  909. GC_RENAME==        10
  910. GC_COPY==        11
  911. GC_WHO==        12
  912. GC_SEND_MSG==        13
  913. GC_STATUS==        14
  914. GC_COMMAND==        15
  915. GC_KERMIT==        16
  916. GC_JOURNAL==        17
  917. GC_VARIABLE==        18
  918. GC_PROGRAM==        19
  919. GC_MAX==        19
  920. DP_FULL==        0
  921. DP_HALF==        1
  922. CHK_1CHAR==        49
  923. CHK_2CHAR==        50
  924. CHK_CRC==        51
  925. MAX_MSG==        1002
  926. U.52=            P.AAR
  927. U.54=            P.AAT
  928.     .EXTRN  LIB$ASN_WTH_MBX, LIB$GETJPI, LIB$GETDVI, LIB$PUT_SCREEN, LIB$PUT_OUTPUT, LIB$EMUL
  929.     .EXTRN  LIB$ADDX, LIB$SIGNAL, LIB$WAIT, PARITY_TYPE, ECHO_FLAG, IBM_CHAR, RCV_EOL, SEND_TIMEOUT
  930.     .EXTRN  CONNECT_FLAG, ESCAPE_CHR, SYS$TRNLNM, SYS$GETJPIW, SYS$ASSIGN, SYS$QIOW
  931.  
  932.     .PSECT  $CODE$,NOWRT,2
  933.  
  934.     .ENTRY  TERM_INIT, ^M<R2,R3,R4,R5,R6,R7,-;TERM_INIT, Save R2,R3,R4,R5,R6,R7,-  0723                    0FFC   00000
  935.         R8,R9,R10,R11>             ;R8,R9,R10,R11
  936.     MOVAB   G^U.43, R11             ;U.43, R11                                     5B 00000000V  00  9E   00002
  937.     MOVAB   G^P.AAA, R10             ;P.AAA, R10                                     5A 00000000'  00  9E   00009
  938.     MOVAB   G^TERM_DESC, R9             ;TERM_DESC, R9                                     59 00000000'  00  9E   00010
  939.     MOVAB   G^U.16, R8             ;U.16, R8                                     58 00000000'  00  9E   00017
  940.     MOVAB   -340(SP), SP             ;-340(SP), SP                                     5E     FEAC   CE  9E   0001E
  941.     MOVC5   #12, (R10), #0, #36, 36(SP)     ;#12, P.AAA, #0, #36, NODE_ITEM_LIST  0775            6A         0C  2C   00023
  942.                          ;                                   24         00       00026
  943.                          ;                                    24   AE       00028
  944.     MOVC5   #12, 12(R10), #0, #24, 12(SP)     ;#12, P.AAB, #0, #24, ITMLST           0781       0C   AA         0C  2C   0002A
  945.                          ;                                   18         00       0002E
  946.                          ;                                    0C   AE       00030
  947.     MOVAB   -4(FP), 20(SP)             ;RSL_LENGTH, ITMLST+8                            14   AE    FC   AD  9E   00032
  948.     MOVL    #17694720, -8(R9)         ;#17694720, SESSION_DESC           0788       F8   A9 010E0000   8F  D0   00037
  949.     MOVAB   664(R8), -4(R9)             ;SESSION_NAME, SESSION_DESC+4           0789       FC   A9     0298   C8  9E   0003F
  950.     MOVZBW  #255, -24(R9)             ;#255, NODE_DESC               0793       E8   A9    FF   8F  9B   00045
  951.     PUSHAB  36(SP)                 ;NODE_ITEM_LIST               0796             24   AE  9F   0004A
  952.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   0004D
  953.     PUSHAB  52(R10)                 ;P.AAE                                          34   AA  9F   0004F
  954.     PUSHAB  36(R10)                 ;P.AAC                                          24   AA  9F   00052
  955.     MOVL    #33554432, 20(SP)         ;#33554432, 20(SP)                            14   AE 02000000   8F  D0   00055
  956.     PUSHAB  20(SP)                 ;20(SP)                                      14   AE  9F   0005D
  957.     CALLS   #5, G^SYS$TRNLNM         ;#5, SYS$TRNLNM                      00000000G  00         05  FB   00060
  958.     MOVL    R0, R7                 ;R0, STATUS                                     57         50  D0   00067
  959.     MOVZBL  #64, R2                 ;#64, COUNTER                   0798            52    40   8F  9A   0006A
  960. 1$:    BLBC    R7, 3$                 ;STATUS, 3$                   0800            30         57  E9   0006E
  961.     BLEQ    2$                 ;2$                       0801                  24  15   00071
  962.     PUSHAB  36(SP)                 ;NODE_ITEM_LIST               0806             24   AE  9F   00073
  963.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00076
  964.     PUSHAB  -24(R9)                 ;NODE_DESC                                      E8   A9  9F   00078
  965.     PUSHAB  72(R10)                 ;P.AAG                                          48   AA  9F   0007B
  966.     MOVL    #33554432, 20(SP)         ;#33554432, 20(SP)                            14   AE 02000000   8F  D0   0007E
  967.     PUSHAB  20(SP)                 ;20(SP)                                      14   AE  9F   00086
  968.     CALLS   #5, G^SYS$TRNLNM         ;#5, SYS$TRNLNM                      00000000G  00         05  FB   00089
  969.     MOVL    R0, R7                 ;R0, STATUS                                     57         50  D0   00090
  970.     DECL    R2                 ;COUNTER                   0807                  52  D7   00093
  971.     BRB     1$                 ;1$                                               D7  11   00095
  972. 2$:    BLBC    R7, 3$                 ;STATUS, 3$                   0812            07         57  E9   00097
  973.     MOVAB   1088(R8), R0             ;NODE_NAME, R0                                     50     0440   C8  9E   0009A
  974.     BNEQ    4$                 ;4$                                               03  12   0009F
  975. 3$:    CLRW    -24(R9)                 ;NODE_DESC                   0814             E8   A9  B4   000A1
  976. 4$:    MOVL    #17694975, 8(R9)         ;#17694975, JOB_TERM_DESC           0820       08   A9 010E00FF   8F  D0   000A4
  977.     MOVAB   256(R8), 12(R9)             ;JOB_TERM_NAME, JOB_TERM_DESC+4       0821       0C   A9     0100   C8  9E   000AC
  978.     MOVB    #95, 256(R8)             ;#95, JOB_TERM_NAME               0822     0100   C8    5F   8F  90   000B2
  979.     CLRQ    -(SP)                 ;-(SP)                       0824                  7E  7C   000B8
  980.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   000BA
  981.     PUSHAB  24(SP)                 ;ITMLST                                      18   AE  9F   000BC
  982.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   000BF
  983.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   000C1
  984.     CALLS   #7, G^SYS$GETJPIW         ;#7, SYS$GETJPIW                      00000000G  00         07  FB   000C3
  985.     MOVL    R0, R7                 ;R0, STATUS                                     57         50  D0   000CA
  986.     ADDW3   #1, -4(FP), 8(R9)         ;#1, RSL_LENGTH, JOB_TERM_DESC        0825       FC   AD         01  A1   000CD
  987.                          ;                                    08   A9       000D1
  988.     BLBC    R7, 5$                 ;STATUS, 5$                   0827            05         57  E9   000D3
  989.     TSTL    -4(FP)                 ;RSL_LENGTH                                      FC   AD  D5   000D6
  990.     BNEQ    6$                 ;6$                                               03  12   000D9
  991. 5$:    CLRW    8(R9)                 ;JOB_TERM_DESC                                      08   A9  B4   000DB
  992. 6$:    MOVL    #17694975, -280(R8)         ;#17694975, SYS_OUTPUT_DESC           0834     FEE8   C8 010E00FF   8F  D0   000DE
  993.     MOVAB   -536(R8), -276(R8)         ;SYS_OUTPUT_NAME, SYS_OUTPUT_DESC+4   0835     FEEC   C8     FDE8   C8  9E   000E7
  994.     PUSHAB  8(SP)                 ;DEV_TYPE                   0836             08   AE  9F   000EE
  995.     PUSHAB  -280(R8)             ;SYS_OUTPUT_DESC                                    FEE8   C8  9F   000F1
  996.     PUSHAB  92(R10)                 ;P.AAI                                          5C   AA  9F   000F5
  997.     CALLS   #3, G^U.44             ;#3, U.44                          00000000V  00         03  FB   000F8
  998.     MOVL    R0, R7                 ;R0, STATUS                                     57         50  D0   000FF
  999.     BLBC    R7, 7$                 ;STATUS, 7$                   0838            26         57  E9   00102
  1000.     CMPL    8(SP), #66             ;DEV_TYPE, #66                          00000042   8F    08   AE  D1   00105
  1001.     BNEQ    7$                 ;7$                                               1C  12   0010D
  1002.     CLRQ    -(SP)                 ;-(SP)                       0841                  7E  7C   0010F
  1003.     PUSHAB  -544(R8)             ;SYS_OUTPUT_CHAN                                    FDE0   C8  9F   00111
  1004.     PUSHAB  -280(R8)             ;SYS_OUTPUT_DESC                                    FEE8   C8  9F   00115
  1005.     CALLS   #4, G^SYS$ASSIGN         ;#4, SYS$ASSIGN                      00000000G  00         04  FB   00119
  1006.     MOVL    R0, R7                 ;R0, STATUS                                     57         50  D0   00120
  1007.     BLBC    R7, 7$                 ;STATUS, 7$                   0843            05         57  E9   00123
  1008.     MOVL    #1, -540(R8)             ;#1, SYS_OUTPUT_OPEN                          FDE4   C8         01  D0   00126
  1009. 7$:    MOVL    #17694975, -8(R8)         ;#17694975, SYS_COMMAND_DESC           0849       F8   A8 010E00FF   8F  D0   0012B
  1010.     MOVAB   -264(R8), -4(R8)         ;SYS_COMMAND_NAME, -               0850       FC   A8     FEF8   C8  9E   00133
  1011.                          ;SYS_COMMAND_DESC+4
  1012.     PUSHAB  8(SP)                 ;DEV_TYPE                   0851             08   AE  9F   00139
  1013.     PUSHAB  -8(R8)                 ;SYS_COMMAND_DESC                                  F8   A8  9F   0013C
  1014.     PUSHAB  112(R10)             ;P.AAK                                          70   AA  9F   0013F
  1015.     CALLS   #3, G^U.44             ;#3, U.44                          00000000V  00         03  FB   00142
  1016.     MOVL    R0, R7                 ;R0, STATUS                                     57         50  D0   00149
  1017.     BLBC    R7, 8$                 ;STATUS, 8$                   0853            25         57  E9   0014C
  1018.     CMPL    8(SP), #66             ;DEV_TYPE, #66                          00000042   8F    08   AE  D1   0014F
  1019.     BNEQ    8$                 ;8$                                               1B  12   00157
  1020.     CLRQ    -(SP)                 ;-(SP)                       0856                  7E  7C   00159
  1021.     PUSHAB  -272(R8)             ;SYS_COMMAND_CHAN                                    FEF0   C8  9F   0015B
  1022.     PUSHAB  -8(R8)                 ;SYS_COMMAND_DESC                                  F8   A8  9F   0015F
  1023.     CALLS   #4, G^SYS$ASSIGN         ;#4, SYS$ASSIGN                      00000000G  00         04  FB   00162
  1024.     MOVL    R0, R7                 ;R0, STATUS                                     57         50  D0   00169
  1025.     BLBC    R7, 8$                 ;STATUS, 8$                   0858            05         57  E9   0016C
  1026.     MOVL    #1, -268(R8)             ;#1, SYS_COMMAND_OPEN                          FEF4   C8         01  D0   0016F
  1027. 8$:    MOVL    #17694975, (R9)             ;#17694975, TERM_DESC               0867            69 010E00FF   8F  D0   00174
  1028.     MOVAB   (R8), 4(R9)             ;TERM_NAME, TERM_DESC+4           0866       04   A9         68  9E   0017B
  1029.     PUSHAB  8(SP)                 ;DEV_TYPE                   0871             08   AE  9F   0017F
  1030.     PUSHL   R9                 ;R9                                               59  DD   00182
  1031.     PUSHAB  128(R10)             ;P.AAM                                            0080   CA  9F   00184
  1032.     CALLS   #3, G^U.44             ;#3, U.44                          00000000V  00         03  FB   00188
  1033.     MOVL    R0, R7                 ;R0, STATUS                                     57         50  D0   0018F
  1034.     BLBC    R7, 9$                 ;STATUS, 9$                   0873            0A         57  E9   00192
  1035.     CMPL    8(SP), #66             ;DEV_TYPE, #66                          00000042   8F    08   AE  D1   00195
  1036.     BEQL    13$                 ;13$                                               6C  13   0019D
  1037. 9$:    MOVZBW  #255, (R9)             ;#255, TERM_DESC               0879            69    FF   8F  9B   0019F
  1038.     PUSHAB  8(SP)                 ;DEV_TYPE                   0880             08   AE  9F   001A3
  1039.     PUSHL   R9                 ;R9                                               59  DD   001A6
  1040.     PUSHAB  148(R10)             ;P.AAO                                            0094   CA  9F   001A8
  1041.     CALLS   #3, G^U.44             ;#3, U.44                          00000000V  00         03  FB   001AC
  1042.     MOVL    R0, R7                 ;R0, STATUS                                     57         50  D0   001B3
  1043.     BLBC    R7, 10$                 ;STATUS, 10$                   0882            0A         57  E9   001B6
  1044.     CMPL    8(SP), #66             ;DEV_TYPE, #66                          00000042   8F    08   AE  D1   001B9
  1045.     BEQL    13$                 ;13$                                               48  13   001C1
  1046. 10$:    BLBC    -540(R8), 11$             ;SYS_OUTPUT_OPEN, 11$               0890            17     FDE4   C8  E9   001C3
  1047.     MOVZWL  -280(R8), R6             ;SYS_OUTPUT_DESC, R6               0893            56     FEE8   C8  3C   001C8
  1048.     MOVL    -276(R8), R0             ;SYS_OUTPUT_DESC+4, R0               0894            50     FEEC   C8  D0   001CD
  1049.     MOVC5   R6, (R0), #0, #255, (R8)     ;R6, (R0), #0, #255, TERM_NAME        0895            60         56  2C   001D2
  1050.                          ;                            00FF   8F         00       001D5
  1051.                          ;                                         68       001D9
  1052.     MOVW    R6, (R9)             ;R6, TERM_DESC                   0896            69         56  B0   001DA
  1053.     BRB     13$                 ;13$                                               2C  11   001DD
  1054. 11$:    BLBC    -268(R8), 12$             ;SYS_COMMAND_OPEN, 12$               0905            14     FEF4   C8  E9   001DF
  1055.     MOVL    -4(R8), R0             ;SYS_COMMAND_DESC+4, R0           0909            50    FC   A8  D0   001E4
  1056.     MOVC5   -8(R8), (R0), #0, #255, (R8)     ;SYS_COMMAND_DESC, (R0), #0, #255, -  0910            60    F8   A8  2C   001E8
  1057.                          ;TERM_NAME                        00FF   8F         00       001EC
  1058.                          ;                                         68       001F0
  1059.     MOVW    -280(R8), (R9)             ;SYS_OUTPUT_DESC, TERM_DESC           0911            69     FEE8   C8  B0   001F1
  1060.     BRB     13$                 ;13$                                               13  11   001F6
  1061. 12$:    MOVZWL  8(R9), R0             ;JOB_TERM_DESC, R0               0919            50    08   A9  3C   001F8
  1062.     MOVW    R0, (R9)             ;R0, TERM_DESC                                     69         50  B0   001FC
  1063.     MOVL    12(R9), R1             ;JOB_TERM_DESC+4, R1               0921            51    0C   A9  D0   001FF
  1064.     MOVC5   R0, (R1), #0, #255, (R8)     ;R0, (R1), #0, #255, TERM_NAME        0922            61         50  2C   00203
  1065.                          ;                            00FF   8F         00       00206
  1066.                          ;                                         68       0020A
  1067. 13$:    MOVZWL  (R9), R0             ;TERM_DESC, R0                   0937            50         69  3C   0020B
  1068.     CLRB    (R8)[R0]             ;TERM_NAME[R0]                                         6840  94   0020E
  1069.     PUSHAB  -556(R8)             ;MBX_CHAN                   0938               FDD4   C8  9F   00211
  1070.     PUSHAB  -560(R8)             ;TERM_CHAN                                        FDD0   C8  9F   00215
  1071.     MOVZBL  #100, 12(SP)             ;#100, 12(SP)                                0C   AE    64   8F  9A   00219
  1072.     PUSHAB  12(SP)                 ;12(SP)                                      0C   AE  9F   0021E
  1073.     MOVZBL  #100, 12(SP)             ;#100, 12(SP)                                0C   AE    64   8F  9A   00221
  1074.     PUSHAB  12(SP)                 ;12(SP)                                      0C   AE  9F   00226
  1075.     PUSHL   R9                 ;R9                                               59  DD   00229
  1076.     CALLS   #5, G^U.47             ;#5, U.47                          00000000V  00         05  FB   0022B
  1077.     MOVL    R0, R7                 ;R0, STATUS                                     57         50  D0   00232
  1078.     PUSHL   #2                 ;#2                       0939                  02  DD   00235
  1079.     PUSHAB  156(R10)             ;P.AAQ                                            009C   CA  9F   00237
  1080.     CALLS   #2, (R11)             ;#2, TERM_DUMP                                     6B         02  FB   0023B
  1081.     BLBC    R7, 14$                 ;STATUS, 14$                   0941            28         57  E9   0023E
  1082.     MOVL    #1, 512(R8)             ;#1, TERM_OPEN_FLAG               0951     0200   C8         01  D0   00241
  1083.     MOVZWL  196(R10), -(SP)             ;DEFTRM_TEXT, -(SP)               0952            7E     00C4   CA  3C   00246
  1084.     PUSHL   200(R10)             ;DEFTRM_TEXT+4                                        00C8   CA  DD   0024B
  1085.     CALLS   #2, (R11)             ;#2, TERM_DUMP                                     6B         02  FB   0024F
  1086.     MOVZWL  (R9), -(SP)             ;TERM_DESC, -(SP)               0953            7E         69  3C   00252
  1087.     PUSHL   R8                 ;R8                                               58  DD   00255
  1088.     CALLS   #2, (R11)             ;#2, TERM_DUMP                                     6B         02  FB   00257
  1089.     TSTL    -556(R8)             ;MBX_CHAN                   0954               FDD4   C8  D5   0025A
  1090.     BEQL    15$                 ;15$                                               1B  13   0025E
  1091.     CALLS   #0, G^U.45             ;#0, U.45                          00000000V  00         00  FB   00260
  1092.     BRB     15$                 ;15$                                               12  11   00267
  1093. 14$:    CLRL    512(R8)                 ;TERM_OPEN_FLAG               0965               0200   C8  D4   00269
  1094.     CLRW    (R9)                 ;TERM_DESC                   0966                  69  B4   0026D
  1095.     MOVZWL  244(R10), -(SP)             ;NODEFTRM_TEXT, -(SP)               0967            7E     00F4   CA  3C   0026F
  1096.     PUSHL   248(R10)             ;NODEFTRM_TEXT+4                                    00F8   CA  DD   00274
  1097.     CALLS   #2, (R11)             ;#2, TERM_DUMP                                     6B         02  FB   00278
  1098. 15$:    PUSHL   #2                 ;#2                       0970                  02  DD   0027B
  1099.     PUSHAB  252(R10)             ;P.AAV                                            00FC   CA  9F   0027D
  1100.     CALLS   #2, (R11)             ;#2, TERM_DUMP                                     6B         02  FB   00281
  1101.     CLRL    24(R9)                 ;TERM_FLAG                   0974             18   A9  D4   00284
  1102.     MOVL    #48, 16(R9)             ;#48, TRANS_DELAY               0975       10   A9         30  D0   00287
  1103.     BLBC    512(R8), 18$             ;TERM_OPEN_FLAG, 18$               0981            48     0200   C8  E9   0028B
  1104.     CLRQ    -(SP)                 ;-(SP)                       0985                  7E  7C   00290
  1105.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00292
  1106.     PUSHL   #12                 ;#12                                               0C  DD   00294
  1107.     PUSHAB  2384(R8)             ;OLD_TERM_CHAR                                        0950   C8  9F   00296
  1108.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0029A
  1109.     PUSHAB  2376(R8)             ;OLD_PARITY                                        0948   C8  9F   0029C
  1110.     PUSHL   #39                 ;#39                                               27  DD   002A0
  1111.     PUSHL   -560(R8)             ;TERM_CHAN                                        FDD0   C8  DD   002A2
  1112.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   002A6
  1113.     CALLS   #12, G^SYS$QIOW             ;#12, SYS$QIOW                          00000000G  00         0C  FB   002A8
  1114.     MOVL    R0, R7                 ;R0, STATUS                                     57         50  D0   002AF
  1115.     BLBC    R7, 18$                 ;STATUS, 18$                   0987            23         57  E9   002B2
  1116.     MOVZBL  2382(R8), R0             ;OLD_PARITY+6, R0               0990            50     094E   C8  9A   002B5
  1117.     BBC     #6, R0, 17$             ;#6, R0, 17$                                     50         06  E1   002BA
  1118.                          ;                                         14       002BD
  1119.     TSTB    R0                 ;R0                       0993                  50  95   002BE
  1120.     BGEQ    16$                 ;16$                                               08  18   002C0
  1121.     MOVL    #3, G^PARITY_TYPE         ;#3, PARITY_TYPE               0995 00000000G  00         03  D0   002C2
  1122.     RET                      ;                                               04   002C9
  1123. 16$:    MOVL    #2, G^PARITY_TYPE         ;#2, PARITY_TYPE               0997 00000000G  00         02  D0   002CA
  1124.     RET                      ;                                               04   002D1
  1125. 17$:    CLRL    G^PARITY_TYPE             ;PARITY_TYPE                   1000           00000000G  00  D4   002D2
  1126. 18$:    RET                      ;                       1004                  04   002D8
  1127.  
  1128. ; Routine Size:  729 bytes,    Routine Base:  $CODE$ + 0000
  1129.  
  1130.  
  1131. ;   1005  1     
  1132. ;   1006  1    
  1133. ;   1007  1     %SBTTL 'ASN_WTH_MBX - Assign channel to device and mailbox.'
  1134. ;   1008  1    
  1135. ;   1009  1    global ROUTINE ASN_WTH_MBX(p_device_name, p_message_size, p_buffer_quota, 
  1136. ;   1010  1                               p_device_channel, p_mailbox_channel) =
  1137. ;   1011  1    
  1138. ;   1012  1    !++
  1139. ;   1013  1    ! FUNCTIONAL DESCRIPTION:
  1140. ;   1014  1    !
  1141. ;   1015  1    ! This routine will assign a channel to TERM_DESC and if TERM_DESC is not
  1142. ;   1016  1    ! the users' terminal create and assign a mailbox to receive messages
  1143. ;   1017  1    ! about the outgoing session's state (in particular we're watching for
  1144. ;   1018  1    ! SS$_HANGUP).
  1145. ;   1019  1    !
  1146. ;   1020  1    ! CALLING SEQUENCE:
  1147. ;   1021  1    !
  1148. ;   1022  1    !    STATUS = ASN_WTH_MBX();
  1149. ;   1023  1    !
  1150. ;   1024  1    ! INPUT PARAMETERS:
  1151. ;   1025  1    !
  1152. ;   1026  1    !    None.
  1153. ;   1027  1    !
  1154. ;   1028  1    ! IMPLICIT INPUTS:
  1155. ;   1029  1    !
  1156. ;   1030  1    !    TERM_DESC
  1157. ;   1031  1    !
  1158. ;   1032  1    ! OUPTUT PARAMETERS:
  1159. ;   1033  1    !
  1160. ;   1034  1    !    None.
  1161. ;   1035  1    !
  1162. ;   1036  1    ! IMPLICIT OUTPUTS:
  1163. ;   1037  1    !
  1164. ;   1038  1    !    TERM_CHAN, MBX_CHAN
  1165. ;   1039  1    !
  1166. ;   1040  1    ! COMPLETION CODES:
  1167. ;   1041  1    !
  1168. ;   1042  1    !    Status of LIB$GETJPI, $ASN_WTH_MBX, and/or $ASSIGN
  1169. ;   1043  1    !
  1170. ;   1044  1    ! SIDE EFFECTS:
  1171. ;   1045  1    !
  1172. ;   1046  1    !    A channel is assigned to TERM_CHAN and conditionally a mailbox
  1173. ;   1047  1    !       is created and a channel assigned to it.
  1174. ;   1048  1    !
  1175. ;   1049  1    
  1176. ;   1050  1    
  1177. ;   1051  2    BEGIN
  1178. ;   1052  2    
  1179. ;   1053  2        BIND
  1180. ;   1054  2            buffer_quota = .p_buffer_quota,
  1181. ;   1055  2            device_channel = .p_device_channel,
  1182. ;   1056  2            device_name = .p_device_name,
  1183. ;   1057  2            message_size = .p_message_size,
  1184. ;   1058  2            mailbox_channel = .p_mailbox_channel;
  1185. ;   1059  2    
  1186. ;   1060  2        LOCAL
  1187. ;   1061  2            master_pid,
  1188. ;   1062  2            mode,
  1189. ;   1063  2            sts,
  1190. ;   1064  2            terminal_name : BLOCK [term_name_size, BYTE],
  1191. ;   1065  2            terminal_desc : BLOCK [8, BYTE] PRESET
  1192. ;   1066  2                                          ([DSC$B_CLASS] = DSC$K_CLASS_S,
  1193. ;   1067  2                                           [DSC$B_DTYPE] = DSC$K_DTYPE_T,
  1194. ;   1068  2                                           [DSC$W_LENGTH] = term_name_size,
  1195. ;   1069  2                                           [DSC$A_POINTER] = terminal_name),
  1196. ;   1070  2            temp_name : BLOCK [term_name_size, BYTE],
  1197. ;   1071  2            temp_desc : BLOCK [8, BYTE] PRESET
  1198. ;   1072  2                                      ([DSC$B_CLASS] = DSC$K_CLASS_S,
  1199. ;   1073  2                                       [DSC$B_DTYPE] = DSC$K_DTYPE_T,
  1200. ;   1074  2                                       [DSC$W_LENGTH] = term_name_size,
  1201. ;   1075  2                                       [DSC$A_POINTER] = temp_name);
  1202. ;   1076  2        MAP
  1203. ;   1077  2            device_name : BLOCK [term_name_size, BYTE];
  1204. ;   1078  2    
  1205. ;   1079  2        sts = LIB$GETJPI(%REF(JPI$_MODE),0,0,mode);
  1206. ;   1080  2        if .mode NEQ JPI$K_INTERACTIVE
  1207. ;   1081  2        THEN
  1208. ;   1082  3            $ASSIGN(CHAN = device_channel, DEVNAM = device_name)
  1209. ;   1083  2        ELSE
  1210. ;   1084  3            BEGIN
  1211. ;   1085  3    
  1212. ;   1086  3            sts = LIB$GETJPI(%REF(JPI$_MASTER_PID),0,0,master_pid,0,0);
  1213. ;   1087  3            IF NOT .sts THEN RETURN .sts;
  1214. ;   1088  3    
  1215. ;   1089  3            sts = LIB$GETJPI(%REF(JPI$_TERMINAL),
  1216. ;   1090  3                             master_pid,
  1217. ;   1091  3                             0,
  1218. ;   1092  3                             0,
  1219. ;   1093  3                             temp_desc,
  1220. ;   1094  3                             temp_desc);
  1221. ;   1095  3            IF NOT .sts THEN RETURN .sts;
  1222. ;   1096  4            IF .(.temp_desc[dsc$a_pointer] - 1 +
  1223. ;   1097  3                 .temp_desc[dsc$w_length])<0,8> NEQ %C ':'
  1224. ;   1098  3            THEN
  1225. ;   1099  4                BEGIN
  1226. ;   1100  4                (.temp_desc[dsc$a_pointer] + .temp_desc[dsc$w_length])<0,8> = %C ':';
  1227. ;   1101  4                temp_desc[dsc$w_length] = .temp_desc[dsc$w_length] + 1;
  1228. ;   1102  3                END;
  1229. ;   1103  3    
  1230. ;   1104  3            sts = LIB$GETDVI(%REF(DVI$_DEVNAM),
  1231. ;   1105  3                             0,
  1232. ;   1106  3                             temp_desc,
  1233. ;   1107  3                             0,
  1234. ;   1108  3                             terminal_desc,
  1235. ;   1109  3                             terminal_desc);
  1236. ;   1110  3            IF NOT .sts THEN RETURN .sts;
  1237. ;   1111  3    
  1238. ;   1112  3            IF CH$EQL(.terminal_desc[DSC$W_LENGTH], .terminal_desc[DSC$A_POINTER],
  1239. ;   1113  3                      .device_name[DSC$W_LENGTH], .device_name[DSC$A_POINTER],
  1240. ;   1114  3                      %C' ')
  1241. ;   1115  3            THEN
  1242. ;   1116  4                BEGIN
  1243. ;   1117  4                IF .mailbox_channel NEQ 0 THEN $DASSGN(CHAN = .mailbox_channel);
  1244. ;   1118  4                mailbox_channel = 0;
  1245. ;   1119  5                $ASSIGN(CHAN = device_channel, DEVNAM = device_name)
  1246. ;   1120  4                END
  1247. ;   1121  3            ELSE
  1248. ;   1122  3                LIB$ASN_WTH_MBX(device_name, message_size, buffer_quota, 
  1249. ;   1123  3                                device_channel, mailbox_channel)
  1250. ;   1124  3            END
  1251. ;   1125  1    END;
  1252.  
  1253.  
  1254.  
  1255.     .EXTRN  SYS$DASSGN
  1256.  
  1257. U.47:
  1258.     .ENTRY  ASN_WTH_MBX, ^M<R2,R3,R4,R5>     ;ASN_WTH_MBX, Save R2,R3,R4,R5        1009                    003C   00000
  1259.     MOVAB   G^LIB$GETJPI, R5         ;LIB$GETJPI, R5                                 55 00000000G  00  9E   00002
  1260.     MOVAB   -540(SP), SP             ;-540(SP), SP                                     5E     FDE4   CE  9E   00009
  1261.     MOVL    4(AP), R4             ;P_DEVICE_NAME, R4               1056            54    04   AC  D0   0000E
  1262.     MOVL    #17694975, -264(FP)         ;#17694975, TERMINAL_DESC           1069     FEF8   CD 010E00FF   8F  D0   00012
  1263.     MOVAB   -256(FP), -260(FP)         ;TERMINAL_NAME, TERMINAL_DESC+4                  FEFC   CD     FF00   CD  9E   0001B
  1264.     MOVL    #17694975, 12(SP)         ;#17694975, TEMP_DESC               1075       0C   AE 010E00FF   8F  D0   00022
  1265.     MOVAB   20(SP), 16(SP)             ;TEMP_NAME, TEMP_DESC+4                        10   AE    14   AE  9E   0002A
  1266.     PUSHAB  4(SP)                 ;MODE                       1079             04   AE  9F   0002F
  1267.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00032
  1268.     MOVZWL  #802, 12(SP)             ;#802, 12(SP)                                0C   AE     0322   8F  3C   00034
  1269.     PUSHAB  12(SP)                 ;12(SP)                                      0C   AE  9F   0003A
  1270.     CALLS   #4, (R5)             ;#4, LIB$GETJPI                                 65         04  FB   0003D
  1271.     MOVL    R0, R2                 ;R0, STS                                     52         50  D0   00040
  1272.     CMPL    4(SP), #3             ;MODE, #3                   1080            03    04   AE  D1   00043
  1273.     BEQL    1$                 ;1$                                               03  13   00047
  1274.     BRW     6$                 ;6$                                             0098  31   00049
  1275. 1$:    CLRQ    -(SP)                 ;-(SP)                       1086                  7E  7C   0004C
  1276.     PUSHAB  16(SP)                 ;MASTER_PID                                      10   AE  9F   0004E
  1277.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00051
  1278.     MOVZWL  #805, 20(SP)             ;#805, 20(SP)                                14   AE     0325   8F  3C   00053
  1279.     PUSHAB  20(SP)                 ;20(SP)                                      14   AE  9F   00059
  1280.     CALLS   #6, (R5)             ;#6, LIB$GETJPI                                 65         06  FB   0005C
  1281.     MOVL    R0, R2                 ;R0, STS                                     52         50  D0   0005F
  1282.     BLBC    R2, 3$                 ;STS, 3$                   1087            5C         52  E9   00062
  1283.     PUSHAB  12(SP)                 ;TEMP_DESC                   1094             0C   AE  9F   00065
  1284.     PUSHAB  16(SP)                 ;TEMP_DESC                   1093             10   AE  9F   00068
  1285.     CLRQ    -(SP)                 ;-(SP)                       1091                  7E  7C   0006B
  1286.     PUSHAB  24(SP)                 ;MASTER_PID                   1090             18   AE  9F   0006D
  1287.     MOVZWL  #797, 20(SP)             ;#797, 20(SP)                   1089       14   AE     031D   8F  3C   00070
  1288.     PUSHAB  20(SP)                 ;20(SP)                                      14   AE  9F   00076
  1289.     CALLS   #6, (R5)             ;#6, LIB$GETJPI                                 65         06  FB   00079
  1290.     MOVL    R0, R2                 ;R0, STS                                     52         50  D0   0007C
  1291.     BLBC    R2, 3$                 ;STS, 3$                   1095            3F         52  E9   0007F
  1292.     MOVZWL  12(SP), R0             ;TEMP_DESC, R0                   1097            50    0C   AE  3C   00082
  1293.     ADDL2   16(SP), R0             ;TEMP_DESC+4, R0                                 50    10   AE  C0   00086
  1294.     CMPB    -1(R0), #58             ;-1(R0), #58                                     3A    FF   A0  91   0008A
  1295.     BEQL    2$                 ;2$                                               0E  13   0008E
  1296.     MOVZWL  12(SP), R0             ;TEMP_DESC, R0                   1100            50    0C   AE  3C   00090
  1297.     ADDL2   16(SP), R0             ;TEMP_DESC+4, R0                                 50    10   AE  C0   00094
  1298.     MOVB    #58, (R0)             ;#58, (R0)                                     60         3A  90   00098
  1299.     INCW    12(SP)                 ;TEMP_DESC                   1101             0C   AE  B6   0009B
  1300. 2$:    PUSHAB  -264(FP)             ;TERMINAL_DESC                   1109               FEF8   CD  9F   0009E
  1301.     PUSHAB  -264(FP)             ;TERMINAL_DESC                   1108               FEF8   CD  9F   000A2
  1302.     CLRL    -(SP)                 ;-(SP)                       1107                  7E  D4   000A6
  1303.     PUSHAB  24(SP)                 ;TEMP_DESC                   1106             18   AE  9F   000A8
  1304.     CLRL    -(SP)                 ;-(SP)                       1105                  7E  D4   000AB
  1305.     MOVL    #32, 20(SP)             ;#32, 20(SP)                   1104       14   AE         20  D0   000AD
  1306.     PUSHAB  20(SP)                 ;20(SP)                                      14   AE  9F   000B1
  1307.     CALLS   #6, G^LIB$GETDVI         ;#6, LIB$GETDVI                      00000000G  00         06  FB   000B4
  1308.     MOVL    R0, R2                 ;R0, STS                                     52         50  D0   000BB
  1309.     BLBS    R2, 4$                 ;STS, 4$                   1110            04         52  E8   000BE
  1310. 3$:    MOVL    R2, R0                 ;STS, R0                                     50         52  D0   000C1
  1311.     RET                      ;                                               04   000C4
  1312. 4$:    CMPC5   -264(FP), @-260(FP), #32, (R4), -;TERMINAL_DESC, @TERMINAL_DESC+4, -   1114     FEFC   DD     FEF8   CD  2D   000C5
  1313.         @4(R4)                 ;#32, (R4), @4(R4)                           64         20       000CC
  1314.                          ;                                    04   B4       000CE
  1315.     BNEQ    7$                 ;7$                                               21  12   000D0
  1316.     TSTL    @20(AP)                 ;@P_MAILBOX_CHANNEL               1117             14   BC  D5   000D2
  1317.     BEQL    5$                 ;5$                                               0A  13   000D5
  1318.     PUSHL   @20(AP)                 ;@P_MAILBOX_CHANNEL                                  14   BC  DD   000D7
  1319.     CALLS   #1, G^SYS$DASSGN         ;#1, SYS$DASSGN                      00000000G  00         01  FB   000DA
  1320. 5$:    CLRL    @20(AP)                 ;@P_MAILBOX_CHANNEL               1118             14   BC  D4   000E1
  1321. 6$:    CLRQ    -(SP)                 ;-(SP)                       1119                  7E  7C   000E4
  1322.     PUSHL   16(AP)                 ;P_DEVICE_CHANNEL                                  10   AC  DD   000E6
  1323.     PUSHL   R4                 ;R4                                               54  DD   000E9
  1324.     CALLS   #4, G^SYS$ASSIGN         ;#4, SYS$ASSIGN                      00000000G  00         04  FB   000EB
  1325.     RET                      ;                                               04   000F2
  1326. 7$:    MOVQ    16(AP), -(SP)             ;P_DEVICE_CHANNEL, -(SP)           1122            7E    10   AC  7D   000F3
  1327.     MOVQ    8(AP), -(SP)             ;P_MESSAGE_SIZE, -(SP)                                 7E    08   AC  7D   000F7
  1328.     PUSHL   R4                 ;R4                                               54  DD   000FB
  1329.     CALLS   #5, G^LIB$ASN_WTH_MBX         ;#5, LIB$ASN_WTH_MBX                      00000000G  00         05  FB   000FD
  1330.     RET                      ;                       1125                  04   00104
  1331.  
  1332. ; Routine Size:  261 bytes,    Routine Base:  $CODE$ + 02D9
  1333.  
  1334.  
  1335. ;   1126  1    
  1336. ;   1127  1     %SBTTL 'SET_TRANS_TERM - Set new transfer terminal line'
  1337. ;   1128  1     
  1338. ;   1129  1    GLOBAL ROUTINE SET_TRANS_TERM (NEW_NAME) =
  1339. ;   1130  1     
  1340. ;   1131  1    !++
  1341. ;   1132  1    ! FUNCTIONAL DESCRIPTION:
  1342. ;   1133  1    !
  1343. ;   1134  1    ! This routine will validate the terminal name that a user wishes to set
  1344. ;   1135  1    ! as the transfer line.  If the name is valid, it will store the physical
  1345. ;   1136  1    ! name in TERM_DESC, and open the new terminal line.
  1346. ;   1137  1    !
  1347. ;   1138  1    ! CALLING SEQUENCE:
  1348. ;   1139  1    !
  1349. ;   1140  1    !    STATUS = SET_TRANS_TERM (NEW_NAME);
  1350. ;   1141  1    !
  1351. ;   1142  1    ! INPUT PARAMETERS:
  1352. ;   1143  1    !
  1353. ;   1144  1    !    NEW_NAME - Descriptor for new terminal name.
  1354. ;   1145  1    !
  1355. ;   1146  1    ! IMPLICIT INPUTS:
  1356. ;   1147  1    !
  1357. ;   1148  1    !    TERM_OPEN_FLAG, TERM_CHAN
  1358. ;   1149  1    !
  1359. ;   1150  1    ! OUPTUT PARAMETERS:
  1360. ;   1151  1    !
  1361. ;   1152  1    !    None.
  1362. ;   1153  1    !
  1363. ;   1154  1    ! IMPLICIT OUTPUTS:
  1364. ;   1155  1    !
  1365. ;   1156  1    !    None.
  1366. ;   1157  1    !
  1367. ;   1158  1    ! COMPLETION CODES:
  1368. ;   1159  1    !
  1369. ;   1160  1    !    True/false status value - error code
  1370. ;   1161  1    !
  1371. ;   1162  1    ! SIDE EFFECTS:
  1372. ;   1163  1    !
  1373. ;   1164  1    !    None.
  1374. ;   1165  1    !
  1375. ;   1166  1    !--
  1376. ;   1167  1     
  1377. ;   1168  2        BEGIN
  1378. ;   1169  2     
  1379. ;   1170  2        MAP
  1380. ;   1171  2        NEW_NAME : REF BLOCK [8, BYTE];        ! Descriptor for new name
  1381. ;   1172  2     
  1382. ;   1173  2        LOCAL
  1383. ;   1174  2        NEW_CHAN,                ! Temp for channel to new terminal
  1384. ;   1175  2        RSL_DESC : BLOCK [8, BYTE],        ! Descriptor for physical name
  1385. ;   1176  2        RSL_NAME : VECTOR [TERM_NAME_SIZE, BYTE],    ! String of resulting name
  1386. ;   1177  2        DEV_TYPE,                ! Device type
  1387. ;   1178  2        STATUS;                    ! Random status values
  1388. ;   1179  2     
  1389. ;   1180  2    !
  1390. ;   1181  2    ! Set up descriptor
  1391. ;   1182  2    !
  1392. ;   1183  2        RSL_DESC [DSC$B_CLASS] = DSC$K_CLASS_S;
  1393. ;   1184  2        RSL_DESC [DSC$B_DTYPE] = DSC$K_DTYPE_T;
  1394. ;   1185  2        RSL_DESC [DSC$W_LENGTH] = TERM_NAME_SIZE;    ! Maximum length
  1395. ;   1186  2        RSL_DESC [DSC$A_POINTER] = RSL_NAME;    ! Where to store name
  1396. ;   1187  2        STATUS = GET_DEV_CHAR (.NEW_NAME, RSL_DESC, DEV_TYPE);
  1397. ;   1188  2     
  1398. ;   1189  2        IF NOT .STATUS THEN RETURN .STATUS;
  1399. ;   1190  2     
  1400. ;   1191  2        IF .DEV_TYPE NEQ DC$_TERM THEN RETURN KER_LINTERM;
  1401. ;   1192  2     
  1402. ;   1193  2    !
  1403. ;   1194  2    ! The device is a terminal, now make sure we can get it.
  1404. ;   1195  2    !
  1405. ;   1196  2    ! If we are CONNECTing to the same device and this device is a LAT
  1406. ;   1197  2    ! device then we must deassign our channel to it (in order for things
  1407. ;   1198  2    ! to reset properly).  There is a chance the reassignment will fail.
  1408. ;   1199  2    ! If this happens then we are in a bad state - no valid output device.
  1409. ;   1200  2    !
  1410. ;   1201  2    ! Otherwise keep a channel to either the old or new device at all times.
  1411. ;   1202  2    ! 
  1412. ;   1203  2        IF CH$EQL(.rsl_desc[DSC$W_LENGTH], .rsl_desc[DSC$A_POINTER],
  1413. ;   1204  2                  .term_desc[DSC$W_LENGTH], .term_desc[DSC$A_POINTER],
  1414. ;   1205  2                  %C' ') AND
  1415. ;   1206  2           CH$EQL(4, .rsl_desc[DSC$A_POINTER], 4, UPLIT('_LTA'))
  1416. ;   1207  2    !       (..rsl_desc[DSC$A_POINTER] EQL '_LTA')
  1417. ;   1208  2        THEN
  1418. ;   1209  3            BEGIN
  1419. ;   1210  3            IF .mbx_chan NEQ 0
  1420. ;   1211  3            THEN
  1421. ;   1212  4                BEGIN
  1422. ;   1213  4                $DASSGN (CHAN = .mbx_chan);
  1423. ;   1214  4                mbx_chan = 0;
  1424. ;   1215  3                END;
  1425. ;   1216  3            $DASSGN (CHAN = .TERM_CHAN);
  1426. ;   1217  3            status = asn_wth_mbx(rsl_desc, %REF(100), %REF(100),
  1427. ;   1218  3                                 new_chan, new_mbx_chan);
  1428. ;   1219  3            IF NOT .STATUS THEN RETURN .STATUS;
  1429. ;   1220  3            END
  1430. ;   1221  2        ELSE
  1431. ;   1222  3            BEGIN
  1432. ;   1223  3            status = asn_wth_mbx(rsl_desc, %REF(100), %REF(100),
  1433. ;   1224  3                                 new_chan, new_mbx_chan);
  1434. ;   1225  3            IF NOT .STATUS THEN RETURN .STATUS;
  1435. ;   1226  3    !
  1436. ;   1227  3    ! We have the new terminal.  Deassign the old one and copy the new data
  1437. ;   1228  3    !
  1438. ;   1229  3            $DASSGN (CHAN = .TERM_CHAN);
  1439. ;   1230  3            IF .mbx_chan NEQ 0
  1440. ;   1231  3            THEN
  1441. ;   1232  4                BEGIN
  1442. ;   1233  4                $DASSGN (CHAN = .mbx_chan);
  1443. ;   1234  4                mbx_chan = 0;
  1444. ;   1235  3                END;
  1445. ;   1236  3            CH$COPY (.RSL_DESC [DSC$W_LENGTH], CH$PTR (RSL_NAME), CHR_NUL,
  1446. ;   1237  3                     TERM_NAME_SIZE, CH$PTR (TERM_NAME));
  1447. ;   1238  3            TERM_DESC [DSC$W_LENGTH] = .RSL_DESC [DSC$W_LENGTH];
  1448. ;   1239  2            END;
  1449. ;   1240  2    
  1450. ;   1241  2        TERM_CHAN = .NEW_CHAN;
  1451. ;   1242  2        IF .new_mbx_chan NEQ 0 THEN mbx_chan = .new_mbx_chan;
  1452. ;   1243  2        IF .mbx_chan NEQ 0 THEN Term_Hangup();
  1453. ;   1244  2     
  1454. ;   1245  2    
  1455. ;   1246  2        RETURN KER_NORMAL;
  1456. ;   1247  1        END;                    ! End of SET_TRANS_TERM
  1457.  
  1458.  
  1459.  
  1460.     .PSECT  $PLIT$,NOWRT,NOEXE,2
  1461.  
  1462.     .BLKB   2                                       ;                      000FE
  1463. P.AAW:    .ASCII  \_LTA\                 ;                                            41  54  4C  5F  00100
  1464.  
  1465.  
  1466.  
  1467.     .PSECT  $CODE$,NOWRT,2
  1468.  
  1469.     .ENTRY  SET_TRANS_TERM, ^M<R2,R3,R4,R5,- ;SET_TRANS_TERM, Save R2,R3,R4,R5,-   1129                    03FC   00000
  1470.         R6,R7,R8,R9>             ;R6,R7,R8,R9
  1471.     MOVAB   W^U.47, R9             ;U.47, R9                                     59     FEF5   CF  9E   00002
  1472.     MOVAB   G^TERM_DESC, R8             ;TERM_DESC, R8                                     58 00000000'  00  9E   00007
  1473.     MOVAB   G^SYS$DASSGN, R7         ;SYS$DASSGN, R7                                 57 00000000G  00  9E   0000E
  1474.     MOVAB   G^U.5, R6             ;U.5, R6                                     56 00000000'  00  9E   00015
  1475.     MOVAB   -280(SP), SP             ;-280(SP), SP                                     5E     FEE8   CE  9E   0001C
  1476.     MOVL    #17694975, -8(FP)         ;#17694975, RSL_DESC               1185       F8   AD 010E00FF   8F  D0   00021
  1477.     MOVAB   16(SP), -4(FP)             ;RSL_NAME, RSL_DESC+4               1186       FC   AD    10   AE  9E   00029
  1478.     PUSHAB  8(SP)                 ;DEV_TYPE                   1187             08   AE  9F   0002E
  1479.     PUSHAB  -8(FP)                 ;RSL_DESC                                      F8   AD  9F   00031
  1480.     PUSHL   4(AP)                 ;NEW_NAME                                      04   AC  DD   00034
  1481.     CALLS   #3, G^U.44             ;#3, U.44                          00000000V  00         03  FB   00037
  1482.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   0003E
  1483.     BLBC    R4, 3$                 ;STATUS, 3$                   1189            5E         54  E9   00041
  1484.     CMPL    8(SP), #66             ;DEV_TYPE, #66                   1191 00000042   8F    08   AE  D1   00044
  1485.     BEQL    1$                 ;1$                                               08  13   0004C
  1486.     MOVL    #134316242, R0             ;#134316242, R0                                 50 080180D2   8F  D0   0004E
  1487.     RET                      ;                                               04   00055
  1488. 1$:    MOVL    4(R8), R0             ;TERM_DESC+4, R0               1204            50    04   A8  D0   00056
  1489.     CMPC5   -8(FP), @-4(FP), #32, (R8), (R0) ;RSL_DESC, @RSL_DESC+4, #32, -        1205       FC   BD    F8   AD  2D   0005A
  1490.                          ;TERM_DESC, (R0)                           68         20       0005F
  1491.                          ;                                         60       00061
  1492.     BNEQ    4$                 ;4$                                               40  12   00062
  1493.     CMPL    @-4(FP), G^P.AAW         ;@RSL_DESC+4, P.AAW               1206 00000000'  00    FC   BD  D1   00064
  1494.     BNEQ    4$                 ;4$                                               36  12   0006C
  1495.     MOVL    (R6), R0             ;MBX_CHAN, R0                   1210            50         66  D0   0006E
  1496.     BEQL    2$                 ;2$                                               07  13   00071
  1497.     PUSHL   R0                 ;R0                       1213                  50  DD   00073
  1498.     CALLS   #1, (R7)             ;#1, SYS$DASSGN                                 67         01  FB   00075
  1499.     CLRL    (R6)                 ;MBX_CHAN                   1214                  66  D4   00078
  1500. 2$:    PUSHL   -4(R6)                 ;TERM_CHAN                   1216             FC   A6  DD   0007A
  1501.     CALLS   #1, (R7)             ;#1, SYS$DASSGN                                 67         01  FB   0007D
  1502.     PUSHAB  4(R6)                 ;NEW_MBX_CHAN                   1218             04   A6  9F   00080
  1503.     PUSHAB  16(SP)                 ;NEW_CHAN                                      10   AE  9F   00083
  1504.     MOVZBL  #100, 12(SP)             ;#100, 12(SP)                   1217       0C   AE    64   8F  9A   00086
  1505.     PUSHAB  12(SP)                 ;12(SP)                                      0C   AE  9F   0008B
  1506.     MOVZBL  #100, 12(SP)             ;#100, 12(SP)                                0C   AE    64   8F  9A   0008E
  1507.     PUSHAB  12(SP)                 ;12(SP)                                      0C   AE  9F   00093
  1508.     PUSHAB  -8(FP)                 ;RSL_DESC                                      F8   AD  9F   00096
  1509.     CALLS   #5, (R9)             ;#5, ASN_WTH_MBX                                 69         05  FB   00099
  1510.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   0009C
  1511.     BLBS    R4, 8$                 ;STATUS, 8$                   1219            4A         54  E8   0009F
  1512. 3$:    BRB     5$                 ;5$                                               22  11   000A2
  1513. 4$:    PUSHAB  4(R6)                 ;NEW_MBX_CHAN                   1224             04   A6  9F   000A4
  1514.     PUSHAB  16(SP)                 ;NEW_CHAN                                      10   AE  9F   000A7
  1515.     MOVZBL  #100, 12(SP)             ;#100, 12(SP)                   1223       0C   AE    64   8F  9A   000AA
  1516.     PUSHAB  12(SP)                 ;12(SP)                                      0C   AE  9F   000AF
  1517.     MOVZBL  #100, 12(SP)             ;#100, 12(SP)                                0C   AE    64   8F  9A   000B2
  1518.     PUSHAB  12(SP)                 ;12(SP)                                      0C   AE  9F   000B7
  1519.     PUSHAB  -8(FP)                 ;RSL_DESC                                      F8   AD  9F   000BA
  1520.     CALLS   #5, (R9)             ;#5, ASN_WTH_MBX                                 69         05  FB   000BD
  1521.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   000C0
  1522.     BLBS    R4, 6$                 ;STATUS, 6$                   1225            04         54  E8   000C3
  1523. 5$:    MOVL    R4, R0                 ;STATUS, R0                                     50         54  D0   000C6
  1524.     RET                      ;                                               04   000C9
  1525. 6$:    PUSHL   -4(R6)                 ;TERM_CHAN                   1229             FC   A6  DD   000CA
  1526.     CALLS   #1, (R7)             ;#1, SYS$DASSGN                                 67         01  FB   000CD
  1527.     MOVL    (R6), R0             ;MBX_CHAN, R0                   1230            50         66  D0   000D0
  1528.     BEQL    7$                 ;7$                                               07  13   000D3
  1529.     PUSHL   R0                 ;R0                       1233                  50  DD   000D5
  1530.     CALLS   #1, (R7)             ;#1, SYS$DASSGN                                 67         01  FB   000D7
  1531.     CLRL    (R6)                 ;MBX_CHAN                   1234                  66  D4   000DA
  1532. 7$:    MOVC5   -8(FP), 16(SP), #0, #255, -     ;RSL_DESC, RSL_NAME, #0, #255, -      1237       10   AE    F8   AD  2C   000DC
  1533.         556(R6)                 ;TERM_NAME                        00FF   8F         00       000E1
  1534.                          ;                                      022C   C6       000E5
  1535.     MOVW    -8(FP), (R8)             ;RSL_DESC, TERM_DESC               1238            68    F8   AD  B0   000E8
  1536. 8$:    MOVL    12(SP), -4(R6)             ;NEW_CHAN, TERM_CHAN               1241       FC   A6    0C   AE  D0   000EC
  1537.     MOVL    4(R6), R0             ;NEW_MBX_CHAN, R0               1242            50    04   A6  D0   000F1
  1538.     BEQL    9$                 ;9$                                               03  13   000F5
  1539.     MOVL    R0, (R6)             ;R0, MBX_CHAN                                     66         50  D0   000F7
  1540. 9$:    TSTL    (R6)                 ;MBX_CHAN                   1243                  66  D5   000FA
  1541.     BEQL    10$                 ;10$                                               07  13   000FC
  1542.     CALLS   #0, G^U.45             ;#0, U.45                          00000000V  00         00  FB   000FE
  1543. 10$:    MOVL    #134316043, R0             ;#134316043, R0               1246            50 0801800B   8F  D0   00105
  1544.     RET                      ;                                               04   0010C
  1545.  
  1546. ; Routine Size:  269 bytes,    Routine Base:  $CODE$ + 03DE
  1547.  
  1548.  
  1549. ;   1248  1     
  1550. ;   1249  1     %SBTTL 'TERM_DUMP - This routine will dump text on the terminal'
  1551. ;   1250  1     
  1552. ;   1251  1    GLOBAL ROUTINE TERM_DUMP (BUFFER_ADDRESS, BUFFER_COUNT) : NOVALUE =
  1553. ;   1252  1     
  1554. ;   1253  1    !++
  1555. ;   1254  1    ! FUNCTIONAL DESCRIPTION:
  1556. ;   1255  1    !
  1557. ;   1256  1    !    This routine will dump the text specified on the user's terminal.
  1558. ;   1257  1    !    It will then return to the caller.
  1559. ;   1258  1    !
  1560. ;   1259  1    ! CALLING SEQUENCE:
  1561. ;   1260  1    !
  1562. ;   1261  1    !    TERM_DUMP( TEXT-BUFFER-ADDRESS, COUNT)
  1563. ;   1262  1    !
  1564. ;   1263  1    ! INPUT PARAMETERS:
  1565. ;   1264  1    !
  1566. ;   1265  1    !    TEXT-BUFFER-ADDRESS - Address of the buffer containing the characters.
  1567. ;   1266  1    !
  1568. ;   1267  1    !    COUNT - Count of the characters in the buffer.
  1569. ;   1268  1    !
  1570. ;   1269  1    ! IMPLICIT INPUTS:
  1571. ;   1270  1    !
  1572. ;   1271  1    !    None.
  1573. ;   1272  1    !
  1574. ;   1273  1    ! OUPTUT PARAMETERS:
  1575. ;   1274  1    !
  1576. ;   1275  1    !    None.
  1577. ;   1276  1    !
  1578. ;   1277  1    ! IMPLICIT OUTPUTS:
  1579. ;   1278  1    !
  1580. ;   1279  1    !    None.
  1581. ;   1280  1    !
  1582. ;   1281  1    ! COMPLETION CODES:
  1583. ;   1282  1    !
  1584. ;   1283  1    !    None.
  1585. ;   1284  1    !
  1586. ;   1285  1    ! SIDE EFFECTS:
  1587. ;   1286  1    !
  1588. ;   1287  1    !    None.
  1589. ;   1288  1    !
  1590. ;   1289  1    !--
  1591. ;   1290  1     
  1592. ;   1291  2        BEGIN
  1593. ;   1292  2     
  1594. ;   1293  2        LOCAL
  1595. ;   1294  2        TEXT_DESC : BLOCK [8, BYTE];
  1596. ;   1295  2     
  1597. ;   1296  2        IF NOT .CONNECT_FLAG
  1598. ;   1297  2        THEN
  1599. ;   1298  3        BEGIN
  1600. ;   1299  3     
  1601. ;   1300  3        IF .SYS_OUTPUT_OPEN
  1602. ;   1301  3        THEN
  1603. ; P 1302  3            $QIOW (CHAN = .SYS_OUTPUT_CHAN, EFN = CONS_O_EFN,
  1604. ;   1303  4            FUNC = IO$_WRITEVBLK, P1 = .BUFFER_ADDRESS, P2 = .BUFFER_COUNT, P4 = 0)
  1605. ;   1304  3        ELSE
  1606. ;   1305  4            BEGIN
  1607. ;   1306  4            TEXT_DESC [DSC$B_CLASS] = DSC$K_CLASS_S;
  1608. ;   1307  4            TEXT_DESC [DSC$B_DTYPE] = DSC$K_DTYPE_T;
  1609. ;   1308  4            TEXT_DESC [DSC$W_LENGTH] = .BUFFER_COUNT;
  1610. ;   1309  4            TEXT_DESC [DSC$A_POINTER] = .BUFFER_ADDRESS;
  1611. ;   1310  4            LIB$PUT_OUTPUT (TEXT_DESC);
  1612. ;   1311  3            END;
  1613. ;   1312  3     
  1614. ;   1313  2        END;
  1615. ;   1314  2     
  1616. ;   1315  1        END;                    ! End of TERM_DUMP
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622. U.43:
  1623.     .ENTRY  TERM_DUMP, ^M<>             ;TERM_DUMP, Save nothing           1251                    0000   00000
  1624.     SUBL2   #8, SP                 ;#8, SP                                     5E         08  C2   00002
  1625.     BLBS    G^CONNECT_FLAG, 2$         ;CONNECT_FLAG, 2$               1296            3C 00000000G  00  E8   00005
  1626.     BLBC    G^U.9, 1$             ;U.9, 1$                   1300            1D 00000000'  00  E9   0000C
  1627.     CLRQ    -(SP)                 ;-(SP)                       1303                  7E  7C   00013
  1628.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00015
  1629.     MOVQ    4(AP), -(SP)             ;BUFFER_ADDRESS, -(SP)                                 7E    04   AC  7D   00017
  1630.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0001B
  1631.     MOVQ    #48, -(SP)             ;#48, -(SP)                                     7E         30  7D   0001D
  1632.     PUSHL   G^U.8                 ;U.8                                        00000000'  00  DD   00020
  1633.     PUSHL   #6                 ;#6                                               06  DD   00026
  1634.     CALLS   #12, G^SYS$QIOW             ;#12, SYS$QIOW                          00000000G  00         0C  FB   00028
  1635.     RET                      ;                                               04   0002F
  1636. 1$:    MOVW    #270, 2(SP)             ;#270, TEXT_DESC+2               1307       02   AE     010E   8F  B0   00030
  1637.     MOVW    8(AP), (SP)             ;BUFFER_COUNT, TEXT_DESC           1308            6E    08   AC  B0   00036
  1638.     MOVL    4(AP), 4(SP)             ;BUFFER_ADDRESS, TEXT_DESC+4           1309       04   AE    04   AC  D0   0003A
  1639.     PUSHL   SP                 ;SP                       1310                  5E  DD   0003F
  1640.     CALLS   #1, G^LIB$PUT_OUTPUT         ;#1, LIB$PUT_OUTPUT                      00000000G  00         01  FB   00041
  1641. 2$:    RET                      ;                       1315                  04   00048
  1642.  
  1643. ; Routine Size:  73 bytes,    Routine Base:  $CODE$ + 04EB
  1644.  
  1645.  
  1646. ;   1316  1     
  1647. ;   1317  1     %SBTTL 'DBG_DUMP - This routine will dump text on the terminal'
  1648. ;   1318  1     
  1649. ;   1319  1    GLOBAL ROUTINE DBG_DUMP (BUFFER_ADDRESS, BUFFER_COUNT) : NOVALUE =
  1650. ;   1320  1     
  1651. ;   1321  1    !++
  1652. ;   1322  1    ! FUNCTIONAL DESCRIPTION:
  1653. ;   1323  1    !
  1654. ;   1324  1    !    This routine will dump the text specified on the user's terminal.
  1655. ;   1325  1    !    It will then return to the caller.
  1656. ;   1326  1    !
  1657. ;   1327  1    ! CALLING SEQUENCE:
  1658. ;   1328  1    !
  1659. ;   1329  1    !    DBG_DUMP( TEXT-BUFFER-ADDRESS, COUNT)
  1660. ;   1330  1    !
  1661. ;   1331  1    ! INPUT PARAMETERS:
  1662. ;   1332  1    !
  1663. ;   1333  1    !    TEXT-BUFFER-ADDRESS - Address of the buffer containing the characters.
  1664. ;   1334  1    !
  1665. ;   1335  1    !    COUNT - Count of the characters in the buffer.
  1666. ;   1336  1    !
  1667. ;   1337  1    ! IMPLICIT INPUTS:
  1668. ;   1338  1    !
  1669. ;   1339  1    !    None.
  1670. ;   1340  1    !
  1671. ;   1341  1    ! OUPTUT PARAMETERS:
  1672. ;   1342  1    !
  1673. ;   1343  1    !    None.
  1674. ;   1344  1    !
  1675. ;   1345  1    ! IMPLICIT OUTPUTS:
  1676. ;   1346  1    !
  1677. ;   1347  1    !    None.
  1678. ;   1348  1    !
  1679. ;   1349  1    ! COMPLETION CODES:
  1680. ;   1350  1    !
  1681. ;   1351  1    !    None.
  1682. ;   1352  1    !
  1683. ;   1353  1    ! SIDE EFFECTS:
  1684. ;   1354  1    !
  1685. ;   1355  1    !    None.
  1686. ;   1356  1    !
  1687. ;   1357  1    !--
  1688. ;   1358  1     
  1689. ;   1359  2        BEGIN
  1690. ;   1360  2     
  1691. ;   1361  2        LOCAL
  1692. ;   1362  2        STATUS,                    ! Status from $PUT
  1693. ;   1363  2        TEXT_DESC : BLOCK [8, BYTE];
  1694. ;   1364  2     
  1695. ;   1365  2        IF NOT .CONNECT_FLAG AND NOT .DEBUG_REDIRECTED    ! Check where debugging should go
  1696. ;   1366  2        THEN
  1697. ;   1367  3        BEGIN
  1698. ;   1368  3     
  1699. ;   1369  3        IF .SYS_OUTPUT_OPEN
  1700. ;   1370  3        THEN
  1701. ; P 1371  3            $QIOW (CHAN = .SYS_OUTPUT_CHAN, EFN = CONS_O_EFN,
  1702. ;   1372  4            FUNC = IO$_WRITEVBLK OR IO$M_NOFORMAT, P1 = .BUFFER_ADDRESS, P2 = .BUFFER_COUNT)
  1703. ;   1373  3        ELSE
  1704. ;   1374  4            BEGIN
  1705. ;   1375  4            TEXT_DESC [DSC$B_CLASS] = DSC$K_CLASS_S;
  1706. ;   1376  4            TEXT_DESC [DSC$B_DTYPE] = DSC$K_DTYPE_T;
  1707. ;   1377  4            TEXT_DESC [DSC$W_LENGTH] = .BUFFER_COUNT;
  1708. ;   1378  4            TEXT_DESC [DSC$A_POINTER] = .BUFFER_ADDRESS;
  1709. ;   1379  4            LIB$PUT_OUTPUT (TEXT_DESC);
  1710. ;   1380  3            END;
  1711. ;   1381  3     
  1712. ;   1382  3        END
  1713. ;   1383  2        ELSE
  1714. ;   1384  2     
  1715. ;   1385  2        IF .DEBUG_REDIRECTED
  1716. ;   1386  2        THEN
  1717. ;   1387  3            BEGIN
  1718. ;   1388  3     
  1719. ;   1389  3            EXTERNAL ROUTINE
  1720. ;   1390  3            LOG_CHAR,            ! Routine to write a character to log file
  1721. ;   1391  3            LOG_CLOSE;            ! Routine to close log file
  1722. ;   1392  3     
  1723. ;   1393  3            LOCAL
  1724. ;   1394  3            POINTER;
  1725. ;   1395  3     
  1726. ;   1396  3            POINTER = CH$PTR (.BUFFER_ADDRESS);
  1727. ;   1397  3     
  1728. ;   1398  3            DECR I FROM .BUFFER_COUNT TO 1 DO
  1729. ;   1399  3     
  1730. ;   1400  3            IF NOT LOG_CHAR (CH$RCHAR_A (POINTER), DEBUG_RAB)
  1731. ;   1401  3            THEN
  1732. ;   1402  4                BEGIN
  1733. ;   1403  4                LOG_CLOSE (DEBUG_FAB, DEBUG_RAB);
  1734. ;   1404  4                DEBUG_REDIRECTED = FALSE;
  1735. ;   1405  3                END;
  1736. ;   1406  3     
  1737. ;   1407  2            END;
  1738. ;   1408  2     
  1739. ;   1409  1        END;                    ! End of DBG_DUMP
  1740.  
  1741.  
  1742.  
  1743.     .EXTRN  LOG_CHAR, LOG_CLOSE
  1744.  
  1745.     .ENTRY  DBG_DUMP, ^M<R2,R3,R4>         ;DBG_DUMP, Save R2,R3,R4           1319                    001C   00000
  1746.     MOVAB   G^U.27, R4             ;U.27, R4                                     54 00000000'  00  9E   00002
  1747.     SUBL2   #8, SP                 ;#8, SP                                     5E         08  C2   00009
  1748.     BLBS    G^CONNECT_FLAG, 2$         ;CONNECT_FLAG, 2$               1365            40 00000000G  00  E8   0000C
  1749.     BLBS    (R4), 3$             ;DEBUG_REDIRECTED, 3$                                 40         64  E8   00013
  1750.     BLBC    -1624(R4), 1$             ;SYS_OUTPUT_OPEN, 1$               1369            1F     F9A8   C4  E9   00016
  1751.     CLRQ    -(SP)                 ;-(SP)                       1372                  7E  7C   0001B
  1752.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0001D
  1753.     MOVQ    4(AP), -(SP)             ;BUFFER_ADDRESS, -(SP)                                 7E    04   AC  7D   0001F
  1754.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00023
  1755.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00025
  1756.     MOVZWL  #304, -(SP)             ;#304, -(SP)                                     7E     0130   8F  3C   00027
  1757.     PUSHL   -1628(R4)             ;SYS_OUTPUT_CHAN                                    F9A4   C4  DD   0002C
  1758.     PUSHL   #6                 ;#6                                               06  DD   00030
  1759.     CALLS   #12, G^SYS$QIOW             ;#12, SYS$QIOW                          00000000G  00         0C  FB   00032
  1760.     RET                      ;                                               04   00039
  1761. 1$:    MOVW    #270, 2(SP)             ;#270, TEXT_DESC+2               1376       02   AE     010E   8F  B0   0003A
  1762.     MOVW    8(AP), (SP)             ;BUFFER_COUNT, TEXT_DESC           1377            6E    08   AC  B0   00040
  1763.     MOVL    4(AP), 4(SP)             ;BUFFER_ADDRESS, TEXT_DESC+4           1378       04   AE    04   AC  D0   00044
  1764.     PUSHL   SP                 ;SP                       1379                  5E  DD   00049
  1765.     CALLS   #1, G^LIB$PUT_OUTPUT         ;#1, LIB$PUT_OUTPUT                      00000000G  00         01  FB   0004B
  1766.     RET                      ;                                               04   00052
  1767. 2$:    BLBC    (R4), 6$             ;DEBUG_REDIRECTED, 6$               1385            30         64  E9   00053
  1768. 3$:    MOVL    4(AP), R3             ;BUFFER_ADDRESS, POINTER           1396            53    04   AC  D0   00056
  1769.     ADDL3   #1, 8(AP), R2             ;#1, BUFFER_COUNT, I               1398       08   AC         01  C1   0005A
  1770.                          ;                                         52       0005E
  1771.     BRB     5$                 ;5$                                               22  11   0005F
  1772. 4$:    PUSHAB  -200(R4)             ;DEBUG_RAB                   1400               FF38   C4  9F   00061
  1773.     MOVZBL  (R3)+, -(SP)             ;(POINTER)+, -(SP)                                 7E         83  9A   00065
  1774.     CALLS   #2, G^LOG_CHAR             ;#2, LOG_CHAR                          00000000G  00         02  FB   00068
  1775.     BLBS    R0, 5$                 ;R0, 5$                                     11         50  E8   0006F
  1776.     PUSHAB  -200(R4)             ;DEBUG_RAB                   1403               FF38   C4  9F   00072
  1777.     PUSHAB  -280(R4)             ;DEBUG_FAB                                        FEE8   C4  9F   00076
  1778.     CALLS   #2, G^LOG_CLOSE             ;#2, LOG_CLOSE                          00000000G  00         02  FB   0007A
  1779.     CLRL    (R4)                 ;DEBUG_REDIRECTED               1404                  64  D4   00081
  1780. 5$:    SOBGTR  R2, 4$                 ;I, 4$                       1398            DB         52  F5   00083
  1781. 6$:    RET                      ;                       1409                  04   00086
  1782.  
  1783. ; Routine Size:  135 bytes,    Routine Base:  $CODE$ + 0534
  1784.  
  1785.  
  1786. ;   1410  1     
  1787. ;   1411  1     %SBTTL 'GET_COMMAND - Get a command line'
  1788. ;   1412  1     
  1789. ;   1413  1    GLOBAL ROUTINE GET_COMMAND (CMD_DESC, PROMPT_DESC, CMD_LENGTH, ECHO_FLAG) =
  1790. ;   1414  1     
  1791. ;   1415  1    !++
  1792. ;   1416  1    ! FUNCTIONAL DESCRIPTION:
  1793. ;   1417  1    !
  1794. ;   1418  1    !    This routine will get a command line from SYS$COMMAND:.  If
  1795. ;   1419  1    ! SYS$COMMAND is a terminal, it will do input using a QIO, which will
  1796. ;   1420  1    ! allow input without echo if desired.  If SYS$COMMAND is not a terminal,
  1797. ;   1421  1    ! it will use LIB$GET_COMMAND.
  1798. ;   1422  1    !
  1799. ;   1423  1    ! CALLING SEQUENCE:
  1800. ;   1424  1    !
  1801. ;   1425  1    !    STATUS = GET_COMMAND (CMD_DESC, PROMPT_DESC, CMD_LENGTH, ECHO_FLAG);
  1802. ;   1426  1    !
  1803. ;   1427  1    ! INPUT PARAMETERS:
  1804. ;   1428  1    !
  1805. ;   1429  1    !    CMD_DESC - String descriptor for command being input
  1806. ;   1430  1    !    PROMPT_DESC - String descriptor for prompt
  1807. ;   1431  1    !    ECHO_FLAG - True if input should be echoed, false if not
  1808. ;   1432  1    !
  1809. ;   1433  1    ! IMPLICIT INPUTS:
  1810. ;   1434  1    !
  1811. ;   1435  1    !    SYS_COMMAND_OPEN - Flag whether SYS$COMMAND is open
  1812. ;   1436  1    !    SYS_COMMAND_CHAN - Channel SYS$COMMAND is open on, if open
  1813. ;   1437  1    !
  1814. ;   1438  1    ! OUPTUT PARAMETERS:
  1815. ;   1439  1    !
  1816. ;   1440  1    !    CMD_LENGTH - Actual length of command input
  1817. ;   1441  1    !
  1818. ;   1442  1    ! IMPLICIT OUTPUTS:
  1819. ;   1443  1    !
  1820. ;   1444  1    !    None.
  1821. ;   1445  1    !
  1822. ;   1446  1    ! COMPLETION CODES:
  1823. ;   1447  1    !
  1824. ;   1448  1    !    Returns status value, true unless error has occured.
  1825. ;   1449  1    !
  1826. ;   1450  1    ! SIDE EFFECTS:
  1827. ;   1451  1    !
  1828. ;   1452  1    !    None.
  1829. ;   1453  1    !
  1830. ;   1454  1    !--
  1831. ;   1455  1     
  1832. ;   1456  2        BEGIN
  1833. ;   1457  2     
  1834. ;   1458  2        MAP
  1835. ;   1459  2        CMD_DESC : REF BLOCK [8, BYTE],        ! Where to put input
  1836. ;   1460  2        PROMPT_DESC : REF BLOCK [8, BYTE];    ! Prompt string
  1837. ;   1461  2     
  1838. ;   1462  2        EXTERNAL ROUTINE
  1839. ;   1463  2        TT_CRLF : NOVALUE, ! Type a CRLF
  1840. ;   1464  2        STR$UPCASE : ADDRESSING_MODE (GENERAL),    ! Upcase a string
  1841. ;   1465  2        LIB$GET_COMMAND : ADDRESSING_MODE (GENERAL);    ! Get string from SYS$COMMAND
  1842. ;   1466  2     
  1843. ;   1467  2        LOCAL
  1844. ;   1468  2        QIO_FUNC,                ! Function for QIO
  1845. ;   1469  2        IOSB : VECTOR [4, WORD],        ! IOSB for QIO
  1846. ;   1470  2        STATUS;                    ! Random status values
  1847. ;   1471  2     
  1848. ;   1472  2        IF .SYS_COMMAND_OPEN
  1849. ;   1473  2        THEN
  1850. ;   1474  3        BEGIN
  1851. ;   1475  3        QIO_FUNC = IO$_READPROMPT;        ! Assume just read with prompt
  1852. ;   1476  3     
  1853. ;   1477  3        IF NOT .ECHO_FLAG THEN QIO_FUNC = IO$_READPROMPT OR IO$M_NOECHO;    ! Don't echo input
  1854. ;   1478  3     
  1855. ; P 1479  3        STATUS = $QIOW (CHAN = .SYS_COMMAND_CHAN, FUNC = .QIO_FUNC, IOSB = IOSB,
  1856. ; P 1480  3            P1 = .CMD_DESC [DSC$A_POINTER], P2 = .CMD_DESC [DSC$W_LENGTH],
  1857. ;   1481  3            P5 = .PROMPT_DESC [DSC$A_POINTER], P6 = .PROMPT_DESC [DSC$W_LENGTH]);
  1858. ;   1482  3     
  1859. ;   1483  3        IF NOT .STATUS THEN RETURN .STATUS;
  1860. ;   1484  3     
  1861. ;   1485  3    !
  1862. ;   1486  3    ! If we didn't echo, then dump a CRLF so we look nice
  1863. ;   1487  3    !
  1864. ;   1488  3     
  1865. ;   1489  3        IF NOT .ECHO_FLAG THEN TT_CRLF ();
  1866. ;   1490  3     
  1867. ;   1491  3        IF .IOSB [0]
  1868. ;   1492  3        THEN
  1869. ;   1493  4            BEGIN
  1870. ;   1494  4            .CMD_LENGTH = .IOSB [1];        ! Get actual length input
  1871. ;   1495  4     
  1872. ;   1496  4            IF .IOSB [3] EQL 1 AND .IOSB [2] EQL CHR_CTL_Z THEN RETURN RMS$_EOF;
  1873. ;   1497  4     
  1874. ;   1498  3            END;
  1875. ;   1499  3     
  1876. ;   1500  3    !
  1877. ;   1501  3    ! Upcase the resulting string
  1878. ;   1502  3    !
  1879. ;   1503  3        STATUS = STR$UPCASE (.CMD_DESC, .CMD_DESC);
  1880. ;   1504  3     
  1881. ;   1505  3        IF NOT .STATUS THEN RETURN .STATUS;
  1882. ;   1506  3     
  1883. ;   1507  3        RETURN .IOSB [0];            ! Return resulting status
  1884. ;   1508  2        END;
  1885. ;   1509  2     
  1886. ;   1510  2    !
  1887. ;   1511  2    ! Here if SYS$COMMAND is not open.  Get the command via LIB$GET_COMMAND.
  1888. ;   1512  2    !
  1889. ;   1513  2        RETURN LIB$GET_COMMAND (.CMD_DESC, .PROMPT_DESC, .CMD_LENGTH);
  1890. ;   1514  1        END;                    ! End of GET_COMMAND
  1891.  
  1892.  
  1893.  
  1894.     .EXTRN  TT_CRLF, STR$UPCASE, LIB$GET_COMMAND
  1895.  
  1896.     .ENTRY  GET_COMMAND, ^M<R2,R3>         ;GET_COMMAND, Save R2,R3           1413                    000C   00000
  1897.     SUBL2   #8, SP                 ;#8, SP                                     5E         08  C2   00002
  1898.     BLBC    G^U.13, 6$             ;U.13, 6$                   1472            7D 00000000'  00  E9   00005
  1899.     MOVL    #55, R1                 ;#55, QIO_FUNC                   1475            51         37  D0   0000C
  1900.     BLBS    16(AP), 1$             ;ECHO_FLAG, 1$                   1477            04    10   AC  E8   0000F
  1901.     MOVZBL  #119, R1             ;#119, QIO_FUNC                                 51    77   8F  9A   00013
  1902. 1$:    MOVL    8(AP), R0             ;PROMPT_DESC, R0               1481            50    08   AC  D0   00017
  1903.     MOVZWL  (R0), -(SP)             ;(R0), -(SP)                                     7E         60  3C   0001B
  1904.     PUSHL   4(R0)                 ;4(R0)                                          04   A0  DD   0001E
  1905.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00021
  1906.     MOVL    4(AP), R2             ;CMD_DESC, R2                                     52    04   AC  D0   00023
  1907.     MOVZWL  (R2), -(SP)             ;(R2), -(SP)                                     7E         62  3C   00027
  1908.     PUSHL   4(R2)                 ;4(R2)                                          04   A2  DD   0002A
  1909.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0002D
  1910.     PUSHAB  32(SP)                 ;IOSB                                          20   AE  9F   0002F
  1911.     PUSHL   R1                 ;QIO_FUNC                                           51  DD   00032
  1912.     PUSHL   G^U.12                 ;U.12                                        00000000'  00  DD   00034
  1913.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   0003A
  1914.     CALLS   #12, G^SYS$QIOW             ;#12, SYS$QIOW                          00000000G  00         0C  FB   0003C
  1915.     MOVL    R0, R3                 ;R0, STATUS                                     53         50  D0   00043
  1916.     BLBC    R3, 4$                 ;STATUS, 4$                   1483            38         53  E9   00046
  1917.     BLBS    16(AP), 2$             ;ECHO_FLAG, 2$                   1489            07    10   AC  E8   00049
  1918.     CALLS   #0, G^TT_CRLF             ;#0, TT_CRLF                          00000000G  00         00  FB   0004D
  1919. 2$:    BLBC    (SP), 3$             ;IOSB, 3$                   1491            19         6E  E9   00054
  1920.     MOVZWL  2(SP), @12(AP)             ;IOSB+2, @CMD_LENGTH               1494       0C   BC    02   AE  3C   00057
  1921.     CMPW    6(SP), #1             ;IOSB+6, #1                   1496            01    06   AE  B1   0005C
  1922.     BNEQ    3$                 ;3$                                               0E  12   00060
  1923.     CMPW    4(SP), #26             ;IOSB+4, #26                                     1A    04   AE  B1   00062
  1924.     BNEQ    3$                 ;3$                                               08  12   00066
  1925.     MOVL    #98938, R0             ;#98938, R0                                     50 0001827A   8F  D0   00068
  1926.     RET                      ;                                               04   0006F
  1927. 3$:    PUSHL   R2                 ;R2                       1503                  52  DD   00070
  1928.     PUSHL   R2                 ;R2                                               52  DD   00072
  1929.     CALLS   #2, G^STR$UPCASE         ;#2, STR$UPCASE                      00000000G  00         02  FB   00074
  1930.     MOVL    R0, R3                 ;R0, STATUS                                     53         50  D0   0007B
  1931.     BLBS    R3, 5$                 ;STATUS, 5$                   1505            04         53  E8   0007E
  1932. 4$:    MOVL    R3, R0                 ;STATUS, R0                                     50         53  D0   00081
  1933.     RET                      ;                                               04   00084
  1934. 5$:    MOVZWL  (SP), R0             ;IOSB, R0                   1507            50         6E  3C   00085
  1935.     RET                      ;                                               04   00088
  1936. 6$:    MOVQ    8(AP), -(SP)             ;PROMPT_DESC, -(SP)               1513            7E    08   AC  7D   00089
  1937.     PUSHL   4(AP)                 ;CMD_DESC                                      04   AC  DD   0008D
  1938.     CALLS   #3, G^LIB$GET_COMMAND         ;#3, LIB$GET_COMMAND                      00000000G  00         03  FB   00090
  1939.     RET                      ;                                               04   00097
  1940.  
  1941. ; Routine Size:  152 bytes,    Routine Base:  $CODE$ + 05BB
  1942.  
  1943.  
  1944. ;   1515  1     
  1945. ;   1516  1     %SBTTL 'Communcations line -- TERM_OPEN'
  1946. ;   1517  1     
  1947. ;   1518  1    GLOBAL ROUTINE TERM_OPEN (POST_QIOS) =
  1948. ;   1519  1     
  1949. ;   1520  1    !++
  1950. ;   1521  1    ! FUNCTIONAL DESCRIPTION:
  1951. ;   1522  1    !
  1952. ;   1523  1    !    This routine will assign a channel that is used in the CONNECT
  1953. ;   1524  1    !    processing and to send/receive a file from.
  1954. ;   1525  1    !
  1955. ;   1526  1    ! CALLING SEQUENCE:
  1956. ;   1527  1    !
  1957. ;   1528  1    !    TERM_OPEN(POST_QIOS);
  1958. ;   1529  1    !
  1959. ;   1530  1    ! INPUT PARAMETERS:
  1960. ;   1531  1    !
  1961. ;   1532  1    !    POST_QIOS - True if initial read QIO's should be posted.
  1962. ;   1533  1    !
  1963. ;   1534  1    ! IMPLICIT INPUTS:
  1964. ;   1535  1    !
  1965. ;   1536  1    !    TERM_DESC - Descriptor of a vector of ASCII characters that represent
  1966. ;   1537  1    !    the name of the terminal to use.
  1967. ;   1538  1    !
  1968. ;   1539  1    !    TERM_CHAN - Channel open to terminal if TERM_OPEN_FLAG is true.
  1969. ;   1540  1    !
  1970. ;   1541  1    ! OUTPUT PARAMETERS:
  1971. ;   1542  1    !
  1972. ;   1543  1    !    None.
  1973. ;   1544  1    !
  1974. ;   1545  1    ! IMPLICIT OUTPUTS:
  1975. ;   1546  1    !
  1976. ;   1547  1    !    TERM_CHAN - Channel number of the terminal line we are using.
  1977. ;   1548  1    !
  1978. ;   1549  1    ! COMPLETION CODES:
  1979. ;   1550  1    !
  1980. ;   1551  1    !    SS$_NORMAL or error condition.
  1981. ;   1552  1    !
  1982. ;   1553  1    ! SIDE EFFECTS:
  1983. ;   1554  1    !
  1984. ;   1555  1    !    None.
  1985. ;   1556  1    !
  1986. ;   1557  1    !--
  1987. ;   1558  1     
  1988. ;   1559  2        BEGIN
  1989. ;   1560  2     
  1990. ;   1561  2        EXTERNAL ROUTINE
  1991. ;   1562  2        LOG_FAOL,                ! Write FAOL style text
  1992. ;   1563  2        LOG_OPEN;                ! Open a log file
  1993. ;   1564  2     
  1994. ;   1565  2        EXTERNAL
  1995. ;   1566  2        TRANSACTION_OPEN,
  1996. ;   1567  2        TRANSACTION_DESC : BLOCK [8, BYTE],
  1997. ;   1568  2        TRANSACTION_FAB : $FAB_DECL,
  1998. ;   1569  2        TRANSACTION_RAB : $RAB_DECL;
  1999. ;   1570  2     
  2000. ;   1571  2        LOCAL
  2001. ;   1572  2        STATUS;
  2002. ;   1573  2     
  2003. ;   1574  2    !
  2004. ;   1575  2    ! If the terminal is not open, we must open it first.
  2005. ;   1576  2    !
  2006. ;   1577  2     
  2007. ;   1578  2        IF NOT .TERM_OPEN_FLAG
  2008. ;   1579  2        THEN
  2009. ;   1580  2     
  2010. ;   1581  2        IF .TERM_DESC [DSC$W_LENGTH] GTR 0
  2011. ;   1582  2        THEN
  2012. ;   1583  3            BEGIN
  2013. ;   1584  3            STATUS = SET_TRANS_TERM (TERM_DESC);
  2014. ;   1585  3     
  2015. ;   1586  3            IF NOT .STATUS THEN RETURN .STATUS;
  2016. ;   1587  3     
  2017. ;   1588  3            END
  2018. ;   1589  2        ELSE
  2019. ;   1590  2            RETURN KER_LINTERM;
  2020. ;   1591  2     
  2021. ;   1592  2    !
  2022. ;   1593  2    ! Set up connect flag properly
  2023. ;   1594  2    !
  2024. ;   1595  2     
  2025. ;   1596  2        IF CH$NEQ (.SYS_OUTPUT_DESC [DSC$W_LENGTH], CH$PTR (.SYS_OUTPUT_DESC [DSC$A_POINTER]),
  2026. ;   1597  2            .TERM_DESC [DSC$W_LENGTH], CH$PTR (TERM_NAME), CHR_NUL) OR NOT .SYS_OUTPUT_OPEN
  2027. ;   1598  2        THEN
  2028. ;   1599  2        CONNECT_FLAG = FALSE
  2029. ;   1600  2        ELSE
  2030. ;   1601  2        CONNECT_FLAG = TRUE;
  2031. ;   1602  2     
  2032. ;   1603  2    !
  2033. ;   1604  2    ! If we aren't connected, remember the channel to use for the console I/O
  2034. ;   1605  2    !
  2035. ;   1606  2     
  2036. ;   1607  2        IF NOT .CONNECT_FLAG AND .SYS_OUTPUT_OPEN THEN CONS_CHAN = .SYS_OUTPUT_CHAN;
  2037. ;   1608  2     
  2038. ;   1609  2    !
  2039. ;   1610  2    ! Get current settings for transfer terminal
  2040. ;   1611  2    !
  2041. ; P 1612  2        STATUS = $QIOW (CHAN = .TERM_CHAN, FUNC = IO$_SENSEMODE, P1 = OLD_TERM_CHAR,
  2042. ;   1613  2        P2 = TC$_CHAR_LENGTH, IOSB = OLD_PARITY);
  2043. ;   1614  2     
  2044. ;   1615  2        IF NOT .STATUS
  2045. ;   1616  2        THEN
  2046. ;   1617  3        BEGIN
  2047. ;   1618  3        LIB$SIGNAL (.STATUS);
  2048. ;   1619  3        RETURN .STATUS;
  2049. ;   1620  2        END;
  2050. ;   1621  2     
  2051. ;   1622  2        NEW_TERM_CHAR [TC$_BFR_SIZE] = .OLD_TERM_CHAR [TC$_BFR_SIZE];
  2052. ;   1623  2        NEW_TERM_CHAR [TC$_TYPE] = .OLD_TERM_CHAR [TC$_TYPE];
  2053. ;   1624  2        NEW_TERM_CHAR [TC$_CLASS] = .OLD_TERM_CHAR [TC$_CLASS];
  2054. ;   1625  2        NEW_TERM_CHAR [TC$_PAGE_LEN] = .OLD_TERM_CHAR [TC$_PAGE_LEN];
  2055. ;   1626  3        NEW_TERM_CHAR [TC$_CHAR] = (.OLD_TERM_CHAR [TC$_CHAR] OR TT$M_NOBRDCST) AND NOT (TT$M_CRFILL OR
  2056. ;   1627  2        TT$M_LFFILL OR TT$M_WRAP OR TT$M_NOTYPEAHD);
  2057. ;   1628  2    ! We do not want to use eightbit if using parity
  2058. ;   1629  2     
  2059. ;   1630  2        IF .PARITY_TYPE EQL PR_NONE
  2060. ;   1631  2        THEN
  2061. ;   1632  2        NEW_TERM_CHAR [TC$_CHAR] = .NEW_TERM_CHAR [TC$_CHAR] OR TT$M_EIGHTBIT
  2062. ;   1633  2        ELSE
  2063. ;   1634  2        NEW_TERM_CHAR [TC$_CHAR] = .NEW_TERM_CHAR [TC$_CHAR] AND NOT TT$M_EIGHTBIT;
  2064. ;   1635  2     
  2065. ;   1636  2        NEW_TERM_CHAR [TC$_CHAR_2] = TT2$M_XON OR TT2$M_PASTHRU OR
  2066. ;   1637  2        (.OLD_TERM_CHAR [TC$_CHAR_2] AND NOT TT2$M_FALLBACK);
  2067. ;   1638  2     
  2068. ; P 1639  2        STATUS = $QIOW (CHAN = .TERM_CHAN, FUNC = IO$_SETMODE, P1 = NEW_TERM_CHAR,
  2069. ;   1640  2        P2 = TC$_CHAR_LENGTH, P5 = TT$M_ALTRPAR);
  2070. ;   1641  2     
  2071. ;   1642  2        IF NOT .STATUS
  2072. ;   1643  2        THEN
  2073. ;   1644  3        BEGIN
  2074. ;   1645  3        LIB$SIGNAL (.STATUS);
  2075. ;   1646  3        RETURN .STATUS;
  2076. ;   1647  2        END;
  2077. ;   1648  2     
  2078. ;   1649  2        TERM_FLAG = TRUE;                ! Terminal now open
  2079. ;   1650  2        TERM_FIRST_TIME = TRUE;            ! Flag first time QIO should clear input
  2080. ;   1651  2        FORCE_TIMEOUT = FALSE;            ! Don't timeout for no reason
  2081. ;   1652  2        FORCE_ABORT = FALSE;            ! Don't abort yet
  2082. ;   1653  2    !
  2083. ;   1654  2    ! Now post the initial receive QIO
  2084. ;   1655  2    !
  2085. ;   1656  2     
  2086. ;   1657  2        IF .POST_QIOS                ! Need the QIO's?
  2087. ;   1658  2        THEN
  2088. ;   1659  3        BEGIN
  2089. ;   1660  3        STATUS = DO_RECEIVE_QIO ();
  2090. ;   1661  3     
  2091. ;   1662  3        IF NOT .STATUS
  2092. ;   1663  3        THEN
  2093. ;   1664  4            BEGIN
  2094. ;   1665  4            LIB$SIGNAL (.STATUS);
  2095. ;   1666  4            RETURN KER_RECERR;
  2096. ;   1667  3            END;
  2097. ;   1668  3     
  2098. ;   1669  3    !
  2099. ;   1670  3    ! Also post the QIO for the console
  2100. ;   1671  3    !
  2101. ;   1672  3     
  2102. ;   1673  3        IF NOT .CONNECT_FLAG AND .SYS_OUTPUT_OPEN
  2103. ;   1674  3        THEN
  2104. ;   1675  4            BEGIN
  2105. ;   1676  4            STATUS = DO_CONS_QIO ();
  2106. ;   1677  4     
  2107. ;   1678  4            IF NOT .STATUS
  2108. ;   1679  4            THEN
  2109. ;   1680  5            BEGIN
  2110. ;   1681  5            LIB$SIGNAL (.STATUS);
  2111. ;   1682  5            $CANCEL (CHAN = .TERM_CHAN);
  2112. ;   1683  5            $DASSGN (CHAN = .TERM_CHAN);
  2113. ;   1684  5            RETURN KER_RECERR;
  2114. ;   1685  4            END;
  2115. ;   1686  4     
  2116. ;   1687  3            END;
  2117. ;   1688  3     
  2118. ;   1689  2        END;
  2119. ;   1690  2     
  2120. ;   1691  2    !
  2121. ;   1692  2    ! Open any debugging log file
  2122. ;   1693  2    !
  2123. ;   1694  2     
  2124. ;   1695  2        IF .DEBUG_DESC [DSC$W_LENGTH] GTR 0
  2125. ;   1696  2        THEN
  2126. ;   1697  2     
  2127. ;   1698  2        IF LOG_OPEN (DEBUG_DESC, DEBUG_FAB, DEBUG_RAB)
  2128. ;   1699  2        THEN
  2129. ;   1700  2            DEBUG_REDIRECTED = TRUE
  2130. ;   1701  2        ELSE
  2131. ;   1702  2            DEBUG_REDIRECTED = FALSE
  2132. ;   1703  2     
  2133. ;   1704  2        ELSE
  2134. ;   1705  2        DEBUG_REDIRECTED = FALSE;
  2135. ;   1706  2     
  2136. ;   1707  2        IF .TRANSACTION_DESC [DSC$W_LENGTH] GTR 0
  2137. ;   1708  2        THEN
  2138. ;   1709  2     
  2139. ;   1710  2        IF LOG_OPEN (TRANSACTION_DESC, TRANSACTION_FAB, TRANSACTION_RAB)
  2140. ;   1711  2        THEN
  2141. ;   1712  3            BEGIN
  2142. ;   1713  3            TRANSACTION_OPEN = TRUE;
  2143. ;   1714  3            LOG_FAOL (%ASCID'!-!-!11%D!/!-!%T!_Starting transaction log in file !AS!/',
  2144. ;   1715  3            UPLIT (0, TRANSACTION_DESC), TRANSACTION_RAB);
  2145. ;   1716  3            END
  2146. ;   1717  2        ELSE
  2147. ;   1718  2            TRANSACTION_OPEN = FALSE
  2148. ;   1719  2     
  2149. ;   1720  2        ELSE
  2150. ;   1721  2        TRANSACTION_OPEN = FALSE;
  2151. ;   1722  2     
  2152. ;   1723  2        RETURN KER_NORMAL;
  2153. ;   1724  1        END;                    ! End of TERM_OPEN
  2154.  
  2155.  
  2156.  
  2157.     .PSECT  $PLIT$,NOWRT,NOEXE,2
  2158.  
  2159. P.AAY:    .ASCII  \!-!-!11%D!/!-!%T!_Starting transaction log in file !AS!/\
  2160.                          ;                                25  31  31  21  2D  21  2D  21  00104
  2161.                          ;                          54  25  21  2D  21  2F  21  44  0010C
  2162.                          ;                          69  74  72  61  74  53  5F  21  00114
  2163.                          ;                          73  6E  61  72  74  20  67  6E  0011C
  2164.                          ;                          6C  20  6E  6F  69  74  63  61  00124
  2165.                          ;                          69  66  20  6E  69  20  67  6F  0012C
  2166.                          ;                          2F  21  53  41  21  20  65  6C  00134
  2167. P.AAX:    .LONG   17694776             ;                                              010E0038  0013C
  2168.     .ADDRESS P.AAY                 ;                                              00000000' 00140
  2169. P.AAZ:    .LONG   0                 ;                                              00000000  00144
  2170.     .ADDRESS TRANSACTION_DESC         ;                                              00000000G 00148
  2171.  
  2172.     .EXTRN  LOG_FAOL, LOG_OPEN, TRANSACTION_OPEN, TRANSACTION_DESC, TRANSACTION_FAB, TRANSACTION_RAB
  2173.     .EXTRN  SYS$CANCEL
  2174.  
  2175.     .PSECT  $CODE$,NOWRT,2
  2176.  
  2177.     .ENTRY  TERM_OPEN, ^M<R2,R3,R4,R5,R6,R7,-;TERM_OPEN, Save R2,R3,R4,R5,R6,R7,-  1518                    0FFC   00000
  2178.         R8,R9,R10,R11>             ;R8,R9,R10,R11
  2179.     MOVAB   G^TRANSACTION_DESC, R11         ;TRANSACTION_DESC, R11                                 5B 00000000G  00  9E   00002
  2180.     MOVAB   G^LOG_OPEN, R10             ;LOG_OPEN, R10                                     5A 00000000G  00  9E   00009
  2181.     MOVAB   G^SYS$QIOW, R9             ;SYS$QIOW, R9                                     59 00000000G  00  9E   00010
  2182.     MOVAB   G^LIB$SIGNAL, R8         ;LIB$SIGNAL, R8                                 58 00000000G  00  9E   00017
  2183.     MOVAB   G^CONNECT_FLAG, R7         ;CONNECT_FLAG, R7                                 57 00000000G  00  9E   0001E
  2184.     MOVAB   G^TERM_DESC, R6             ;TERM_DESC, R6                                     56 00000000'  00  9E   00025
  2185.     MOVAB   G^U.33+4, R5             ;U.33+4, R5                                     55 00000000'  00  9E   0002C
  2186.     BLBS    -1888(R5), 2$             ;TERM_OPEN_FLAG, 2$               1578            1C     F8A0   C5  E8   00033
  2187.     TSTW    (R6)                 ;TERM_DESC                   1581                  66  B5   00038
  2188.     BEQL    1$                 ;1$                                               10  13   0003A
  2189.     PUSHL   R6                 ;R6                       1584                  56  DD   0003C
  2190.     CALLS   #1, W^SET_TRANS_TERM         ;#1, SET_TRANS_TERM                          FD48   CF         01  FB   0003E
  2191.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   00043
  2192.     BLBS    R4, 2$                 ;STATUS, 2$                   1586            0B         54  E8   00046
  2193.     BRW     10$                 ;10$                                             00CF  31   00049
  2194. 1$:    MOVL    #134316242, R0             ;#134316242, R0               1590            50 080180D2   8F  D0   0004C
  2195.     RET                      ;                                               04   00053
  2196. 2$:    MOVL    -2676(R5), R0             ;SYS_OUTPUT_DESC+4, R0               1596            50     F58C   C5  D0   00054
  2197.     CMPC5   -2680(R5), (R0), #0, (R6), -     ;SYS_OUTPUT_DESC, (R0), #0, -           1597            60     F588   C5  2D   00059
  2198.         -2400(R5)             ;TERM_DESC, TERM_NAME                           66         00       0005E
  2199.                          ;                                      F6A0   C5       00060
  2200.     BNEQ    3$                 ;3$                                               05  12   00063
  2201.     BLBS    -2940(R5), 4$             ;SYS_OUTPUT_OPEN, 4$                                 04     F484   C5  E8   00065
  2202. 3$:    CLRL    (R7)                 ;CONNECT_FLAG                   1599                  67  D4   0006A
  2203.     BRB     5$                 ;5$                                               03  11   0006C
  2204. 4$:    MOVL    #1, (R7)             ;#1, CONNECT_FLAG               1601            67         01  D0   0006E
  2205. 5$:    BLBS    (R7), 6$             ;CONNECT_FLAG, 6$               1607            0C         67  E8   00071
  2206.     BLBC    -2940(R5), 6$             ;SYS_OUTPUT_OPEN, 6$                                 07     F484   C5  E9   00074
  2207.     MOVL    -2944(R5), -2948(R5)         ;SYS_OUTPUT_CHAN, CONS_CHAN                      F47C   C5     F480   C5  D0   00079
  2208. 6$:    CLRQ    -(SP)                 ;-(SP)                       1613                  7E  7C   00080
  2209.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00082
  2210.     PUSHL   #12                 ;#12                                               0C  DD   00084
  2211.     PUSHAB  -16(R5)                 ;OLD_TERM_CHAR                                      F0   A5  9F   00086
  2212.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00089
  2213.     PUSHAB  -24(R5)                 ;OLD_PARITY                                      E8   A5  9F   0008B
  2214.     PUSHL   #39                 ;#39                                               27  DD   0008E
  2215.     PUSHL   -2960(R5)             ;TERM_CHAN                                        F470   C5  DD   00090
  2216.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00094
  2217.     CALLS   #12, (R9)             ;#12, SYS$QIOW                                     69         0C  FB   00096
  2218.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   00099
  2219.     BLBC    R4, 9$                 ;STATUS, 9$                   1615            77         54  E9   0009C
  2220.     MOVL    -16(R5), -4(R5)             ;OLD_TERM_CHAR, NEW_TERM_CHAR           1624       FC   A5    F0   A5  D0   0009F
  2221.     MOVB    -9(R5), 3(R5)             ;OLD_TERM_CHAR+7, NEW_TERM_CHAR+7     1625       03   A5    F7   A5  90   000A4
  2222.     EXTZV   #0, #24, -12(R5), R0         ;#0, #24, OLD_TERM_CHAR+4, R0           1627            18         00  EF   000A9
  2223.                          ;                                   50    F4   A5       000AC
  2224.     BICL2   #3588, R0             ;#3588, R0                                     50 00000E04   8F  CA   000AF
  2225.     BISL3   #131072, R0, R1             ;#131072, R0, R1                                 50 00020000   8F  C9   000B6
  2226.                          ;                                         51       000BD
  2227.     INSV    R1, #0, #24, (R5)         ;R1, #0, #24, NEW_TERM_CHAR+4                             00         51  F0   000BE
  2228.                          ;                                   65         18       000C1
  2229.     TSTL    G^PARITY_TYPE             ;PARITY_TYPE                   1630           00000000G  00  D5   000C3
  2230.     BNEQ    7$                 ;7$                                               0C  12   000C9
  2231.     EXTZV   #0, #24, (R5), R0         ;#0, #24, NEW_TERM_CHAR+4, R0           1632            18         00  EF   000CB
  2232.                          ;                                   50         65       000CE
  2233.     INSV    #1, #15, #1, R0             ;#1, #15, #1, R0                                 0F         01  F0   000D0
  2234.                          ;                                   50         01       000D3
  2235.     BRB     8$                 ;8$                                               0A  11   000D5
  2236. 7$:    EXTZV   #0, #24, (R5), R0         ;#0, #24, NEW_TERM_CHAR+4, R0           1634            18         00  EF   000D7
  2237.                          ;                                   50         65       000DA
  2238.     INSV    #0, #15, #1, R0             ;#0, #15, #1, R0                                 0F         00  F0   000DC
  2239.                          ;                                   50         01       000DF
  2240. 8$:    INSV    R0, #0, #24, (R5)         ;R0, #0, #24, NEW_TERM_CHAR+4                             00         50  F0   000E1
  2241.                          ;                                   65         18       000E4
  2242.     BICL3   #16384, -8(R5), R0         ;#16384, OLD_TERM_CHAR+8, R0           1637       F8   A5 00004000   8F  CB   000E6
  2243.                          ;                                         50       000EE
  2244.     BISL3   #262176, R0, 4(R5)         ;#262176, R0, NEW_TERM_CHAR+8           1636            50 00040020   8F  C9   000EF
  2245.                          ;                                    04   A5       000F6
  2246.     MOVQ    #32, -(SP)             ;#32, -(SP)                   1640            7E         20  7D   000F8
  2247.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   000FB
  2248.     PUSHL   #12                 ;#12                                               0C  DD   000FD
  2249.     PUSHAB  -4(R5)                 ;NEW_TERM_CHAR                                      FC   A5  9F   000FF
  2250.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00102
  2251.     MOVQ    #35, -(SP)             ;#35, -(SP)                                     7E         23  7D   00104
  2252.     PUSHL   -2960(R5)             ;TERM_CHAN                                        F470   C5  DD   00107
  2253.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   0010B
  2254.     CALLS   #12, (R9)             ;#12, SYS$QIOW                                     69         0C  FB   0010D
  2255.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   00110
  2256.     BLBS    R4, 11$                 ;STATUS, 11$                   1642            09         54  E8   00113
  2257. 9$:    PUSHL   R4                 ;STATUS                   1645                  54  DD   00116
  2258.     CALLS   #1, (R8)             ;#1, LIB$SIGNAL                                 68         01  FB   00118
  2259. 10$:    MOVL    R4, R0                 ;STATUS, R0                   1646            50         54  D0   0011B
  2260.     RET                      ;                                               04   0011E
  2261. 11$:    MOVL    #1, 24(R6)             ;#1, TERM_FLAG                   1649       18   A6         01  D0   0011F
  2262.     MOVL    #1, -2964(R5)             ;#1, TERM_FIRST_TIME               1650     F46C   C5         01  D0   00123
  2263.     CLRQ    -2972(R5)             ;FORCE_ABORT                   1652               F464   C5  7C   00128
  2264.     BLBC    4(AP), 14$             ;POST_QIOS, 14$               1657            4C    04   AC  E9   0012C
  2265.     CALLS   #0, G^U.49             ;#0, U.49                   1660 00000000V  00         00  FB   00130
  2266.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   00137
  2267.     BLBS    R4, 12$                 ;STATUS, 12$                   1662            07         54  E8   0013A
  2268.     PUSHL   R4                 ;STATUS                   1665                  54  DD   0013D
  2269.     CALLS   #1, (R8)             ;#1, LIB$SIGNAL                                 68         01  FB   0013F
  2270.     BRB     13$                 ;13$                       1666                  30  11   00142
  2271. 12$:    BLBS    (R7), 14$             ;CONNECT_FLAG, 14$               1673            35         67  E8   00144
  2272.     BLBC    -2940(R5), 14$             ;SYS_OUTPUT_OPEN, 14$                                 30     F484   C5  E9   00147
  2273.     CALLS   #0, G^U.50             ;#0, U.50                   1676 00000000V  00         00  FB   0014C
  2274.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   00153
  2275.     BLBS    R4, 14$                 ;STATUS, 14$                   1678            23         54  E8   00156
  2276.     PUSHL   R4                 ;STATUS                   1681                  54  DD   00159
  2277.     CALLS   #1, (R8)             ;#1, LIB$SIGNAL                                 68         01  FB   0015B
  2278.     PUSHL   -2960(R5)             ;TERM_CHAN                   1682               F470   C5  DD   0015E
  2279.     CALLS   #1, G^SYS$CANCEL         ;#1, SYS$CANCEL                      00000000G  00         01  FB   00162
  2280.     PUSHL   -2960(R5)             ;TERM_CHAN                   1683               F470   C5  DD   00169
  2281.     CALLS   #1, G^SYS$DASSGN         ;#1, SYS$DASSGN                      00000000G  00         01  FB   0016D
  2282. 13$:    MOVL    #134316266, R0             ;#134316266, R0               1684            50 080180EA   8F  D0   00174
  2283.     RET                      ;                                               04   0017B
  2284. 14$:    TSTW    -16(R6)                 ;DEBUG_DESC                   1695             F0   A6  B5   0017C
  2285.     BEQL    15$                 ;15$                                               18  13   0017F
  2286.     PUSHAB  -1516(R5)             ;DEBUG_RAB                   1698               FA14   C5  9F   00181
  2287.     PUSHAB  -1596(R5)             ;DEBUG_FAB                                        F9C4   C5  9F   00185
  2288.     PUSHAB  -16(R6)                 ;DEBUG_DESC                                      F0   A6  9F   00189
  2289.     CALLS   #3, (R10)             ;#3, LOG_OPEN                                     6A         03  FB   0018C
  2290.     BLBC    R0, 15$                 ;R0, 15$                                     07         50  E9   0018F
  2291.     MOVL    #1, -1316(R5)             ;#1, DEBUG_REDIRECTED               1700     FADC   C5         01  D0   00192
  2292.     BRB     16$                 ;16$                                               04  11   00197
  2293. 15$:    CLRL    -1316(R5)             ;DEBUG_REDIRECTED               1705               FADC   C5  D4   00199
  2294. 16$:    TSTW    (R11)                 ;TRANSACTION_DESC               1707                  6B  B5   0019D
  2295.     BEQL    17$                 ;17$                                               36  13   0019F
  2296.     PUSHAB  G^TRANSACTION_RAB         ;TRANSACTION_RAB               1710           00000000G  00  9F   001A1
  2297.     PUSHAB  G^TRANSACTION_FAB         ;TRANSACTION_FAB                                00000000G  00  9F   001A7
  2298.     PUSHL   R11                 ;R11                                               5B  DD   001AD
  2299.     CALLS   #3, (R10)             ;#3, LOG_OPEN                                     6A         03  FB   001AF
  2300.     BLBC    R0, 17$                 ;R0, 17$                                     22         50  E9   001B2
  2301.     MOVL    #1, G^TRANSACTION_OPEN         ;#1, TRANSACTION_OPEN               1713 00000000G  00         01  D0   001B5
  2302.     PUSHAB  G^TRANSACTION_RAB         ;TRANSACTION_RAB               1715           00000000G  00  9F   001BC
  2303.     PUSHAB  G^P.AAZ                 ;P.AAZ                                        00000000'  00  9F   001C2
  2304.     PUSHAB  G^P.AAX                 ;P.AAX                       1714           00000000'  00  9F   001C8
  2305.     CALLS   #3, G^LOG_FAOL             ;#3, LOG_FAOL                          00000000G  00         03  FB   001CE
  2306.     BRB     18$                 ;18$                                               06  11   001D5
  2307. 17$:    CLRL    G^TRANSACTION_OPEN         ;TRANSACTION_OPEN               1721           00000000G  00  D4   001D7
  2308. 18$:    MOVL    #134316043, R0             ;#134316043, R0               1723            50 0801800B   8F  D0   001DD
  2309.     RET                      ;                                               04   001E4
  2310.  
  2311. ; Routine Size:  485 bytes,    Routine Base:  $CODE$ + 0653
  2312.  
  2313.  
  2314. ;   1725  1     
  2315. ;   1726  1     %SBTTL 'Communications line -- TERM_CLOSE'
  2316. ;   1727  1     
  2317. ;   1728  1    GLOBAL ROUTINE TERM_CLOSE =
  2318. ;   1729  1     
  2319. ;   1730  1    !++
  2320. ;   1731  1    ! FUNCTIONAL DESCRIPTION:
  2321. ;   1732  1    !
  2322. ;   1733  1    !    This routine will deassign the channel that was assigned by
  2323. ;   1734  1    !    TERM_OPEN.
  2324. ;   1735  1    !
  2325. ;   1736  1    ! CALLING SEQUENCE:
  2326. ;   1737  1    !
  2327. ;   1738  1    !    TERM_CLOSE();
  2328. ;   1739  1    !
  2329. ;   1740  1    ! INPUT PARAMETERS:
  2330. ;   1741  1    !
  2331. ;   1742  1    !    None.
  2332. ;   1743  1    !
  2333. ;   1744  1    ! IMPLICIT INPUTS:
  2334. ;   1745  1    !
  2335. ;   1746  1    !    TERM_CHAN - Channel number to deassign.
  2336. ;   1747  1    !
  2337. ;   1748  1    ! OUTPUT PARAMETERS:
  2338. ;   1749  1    !
  2339. ;   1750  1    !    None.
  2340. ;   1751  1    !
  2341. ;   1752  1    ! IMPLICIT OUTPUTS:
  2342. ;   1753  1    !
  2343. ;   1754  1    !    None.
  2344. ;   1755  1    !
  2345. ;   1756  1    ! COMPLETION CODES:
  2346. ;   1757  1    !
  2347. ;   1758  1    !    SS$_NORMAL or error condition.
  2348. ;   1759  1    !
  2349. ;   1760  1    ! SIDE EFFECTS:
  2350. ;   1761  1    !
  2351. ;   1762  1    !    None.
  2352. ;   1763  1    !
  2353. ;   1764  1    !--
  2354. ;   1765  1     
  2355. ;   1766  2        BEGIN
  2356. ;   1767  2     
  2357. ;   1768  2        EXTERNAL ROUTINE
  2358. ;   1769  2        LOG_FAOL,                ! Routine to dump FAOL string
  2359. ;   1770  2        LOG_CLOSE;                ! Routine to close log file
  2360. ;   1771  2     
  2361. ;   1772  2        EXTERNAL
  2362. ;   1773  2        TRANSACTION_OPEN,
  2363. ;   1774  2        TRANSACTION_DESC : BLOCK [8, BYTE],
  2364. ;   1775  2        TRANSACTION_FAB,
  2365. ;   1776  2        TRANSACTION_RAB;
  2366. ;   1777  2     
  2367. ;   1778  2        LOCAL
  2368. ;   1779  2        PAR,                    ! Parity being set
  2369. ;   1780  2        STATUS;                    ! Status returned by system service
  2370. ;   1781  2     
  2371. ;   1782  2        STATUS = $CANCEL (CHAN = .TERM_CHAN);    ! Kill pending QIO
  2372. ;   1783  2     
  2373. ;   1784  2        IF .SYS_OUTPUT_OPEN THEN $CANCEL (CHAN = .CONS_CHAN);
  2374. ;   1785  2     
  2375. ;   1786  2        CONNECT_FLAG = FALSE;
  2376. ;   1787  2        PAR = (.OLD_PARITY [6, 0, 8, 0] AND (TT$M_ODD OR TT$M_PARITY)) OR TT$M_ALTRPAR;
  2377. ;   1788  2                            ! Only set parity
  2378. ; P 1789  2        STATUS = $QIOW (CHAN = .TERM_CHAN, FUNC = IO$_SETMODE, P1 = OLD_TERM_CHAR,
  2379. ;   1790  2        P2 = TC$_CHAR_LENGTH, P4 = .OLD_PARITY [4, 0, 16, 0], P5 = .PAR);
  2380. ;   1791  2     
  2381. ;   1792  2        IF NOT .STATUS
  2382. ;   1793  2        THEN
  2383. ;   1794  3        BEGIN
  2384. ;   1795  3        LIB$SIGNAL (.STATUS);
  2385. ;   1796  3        RETURN .STATUS;
  2386. ;   1797  2        END;
  2387. ;   1798  2     
  2388. ;   1799  2    !
  2389. ;   1800  2    ! Flag terminal parameters are reset
  2390. ;   1801  2    !
  2391. ;   1802  2        TERM_FLAG = FALSE;
  2392. ;   1803  2    !
  2393. ;   1804  2    ! Close the debugging log file
  2394. ;   1805  2    !
  2395. ;   1806  2     
  2396. ;   1807  2        IF .DEBUG_REDIRECTED
  2397. ;   1808  2        THEN
  2398. ;   1809  3        BEGIN
  2399. ;   1810  3        LOG_CLOSE (DEBUG_FAB, DEBUG_RAB);
  2400. ;   1811  3        DEBUG_REDIRECTED = FALSE;
  2401. ;   1812  2        END;
  2402. ;   1813  2     
  2403. ;   1814  2    !
  2404. ;   1815  2    ! Close the transaction log
  2405. ;   1816  2    !
  2406. ;   1817  2     
  2407. ;   1818  2        IF .TRANSACTION_OPEN
  2408. ;   1819  2        THEN
  2409. ;   1820  3        BEGIN
  2410. ;   1821  3        LOG_FAOL (%ASCID'!-!-!11%D!/!-!%T!_Closing transaction log file !AS!/',
  2411. ;   1822  3            UPLIT (0, TRANSACTION_DESC), TRANSACTION_RAB);
  2412. ;   1823  3        LOG_CLOSE (TRANSACTION_FAB, TRANSACTION_RAB);
  2413. ;   1824  3        TRANSACTION_OPEN = FALSE;
  2414. ;   1825  2        END;
  2415. ;   1826  2     
  2416. ;   1827  2    !
  2417. ;   1828  2    ! If all worked, say so
  2418. ;   1829  2    !
  2419. ;   1830  2        RETURN KER_NORMAL
  2420. ;   1831  1        END;                    ! End of TERM_CLOSE
  2421.  
  2422.  
  2423.  
  2424.     .PSECT  $PLIT$,NOWRT,NOEXE,2
  2425.  
  2426. P.ABB:    .ASCII  \!-!-!11%D!/!-!%T!_Closing transaction log file !AS!/\
  2427.                          ;                                25  31  31  21  2D  21  2D  21  0014C
  2428.                          ;                          54  25  21  2D  21  2F  21  44  00154
  2429.                          ;                          6E  69  73  6F  6C  43  5F  21  0015C
  2430.                          ;                          61  73  6E  61  72  74  20  67  00164
  2431.                          ;                          6F  6C  20  6E  6F  69  74  63  0016C
  2432.                          ;                          21  20  65  6C  69  66  20  67  00174
  2433.                          ;                                      2F  21  53  41  0017C
  2434. P.ABA:    .LONG   17694772             ;                                              010E0034  00180
  2435.     .ADDRESS P.ABB                 ;                                              00000000' 00184
  2436. P.ABC:    .LONG   0                 ;                                              00000000  00188
  2437.     .ADDRESS TRANSACTION_DESC         ;                                              00000000G 0018C
  2438.  
  2439.  
  2440.  
  2441.     .PSECT  $CODE$,NOWRT,2
  2442.  
  2443.     .ENTRY  TERM_CLOSE, ^M<R2,R3,R4,R5,R6,-  ;TERM_CLOSE, Save R2,R3,R4,R5,R6,R7   1728                    00FC   00000
  2444.         R7>                 ;
  2445.     MOVAB   G^TRANSACTION_RAB, R7         ;TRANSACTION_RAB, R7                                 57 00000000G  00  9E   00002
  2446.     MOVAB   G^TRANSACTION_OPEN, R6         ;TRANSACTION_OPEN, R6                                 56 00000000G  00  9E   00009
  2447.     MOVAB   G^LOG_CLOSE, R5             ;LOG_CLOSE, R5                                     55 00000000G  00  9E   00010
  2448.     MOVAB   G^SYS$CANCEL, R4         ;SYS$CANCEL, R4                                 54 00000000G  00  9E   00017
  2449.     MOVAB   G^U.4, R3             ;U.4, R3                                     53 00000000'  00  9E   0001E
  2450.     PUSHL   (R3)                 ;TERM_CHAN                   1782                  63  DD   00025
  2451.     CALLS   #1, (R4)             ;#1, SYS$CANCEL                                 64         01  FB   00027
  2452.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   0002A
  2453.     BLBC    20(R3), 1$             ;SYS_OUTPUT_OPEN, 1$               1784            06    14   A3  E9   0002D
  2454.     PUSHL   12(R3)                 ;CONS_CHAN                                      0C   A3  DD   00031
  2455.     CALLS   #1, (R4)             ;#1, SYS$CANCEL                                 64         01  FB   00034
  2456. 1$:    CLRL    G^CONNECT_FLAG             ;CONNECT_FLAG                   1786           00000000G  00  D4   00037
  2457.     MOVZBL  2942(R3), R0             ;OLD_PARITY+6, R0               1787            50     0B7E   C3  9A   0003D
  2458.     BICL2   #-193, R0             ;#-193, R0                                     50 FFFFFF3F   8F  CA   00042
  2459.     BISB2   #32, R0                 ;#32, PAR                                     50         20  88   00049
  2460.     CLRL    -(SP)                 ;-(SP)                       1790                  7E  D4   0004C
  2461.     PUSHL   R0                 ;PAR                                               50  DD   0004E
  2462.     MOVZWL  2940(R3), -(SP)             ;OLD_PARITY+4, -(SP)                                 7E     0B7C   C3  3C   00050
  2463.     MOVQ    #12, -(SP)             ;#12, -(SP)                                     7E         0C  7D   00055
  2464.     PUSHAB  2944(R3)             ;OLD_TERM_CHAR                                        0B80   C3  9F   00058
  2465.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0005C
  2466.     MOVQ    #35, -(SP)             ;#35, -(SP)                                     7E         23  7D   0005E
  2467.     PUSHL   (R3)                 ;TERM_CHAN                                           63  DD   00061
  2468.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00063
  2469.     CALLS   #12, G^SYS$QIOW             ;#12, SYS$QIOW                          00000000G  00         0C  FB   00065
  2470.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   0006C
  2471.     BLBS    R2, 2$                 ;STATUS, 2$                   1792            0D         52  E8   0006F
  2472.     PUSHL   R2                 ;STATUS                   1795                  52  DD   00072
  2473.     CALLS   #1, G^LIB$SIGNAL         ;#1, LIB$SIGNAL                      00000000G  00         01  FB   00074
  2474.     MOVL    R2, R0                 ;STATUS, R0                   1796            50         52  D0   0007B
  2475.     RET                      ;                                               04   0007E
  2476. 2$:    CLRL    G^TERM_FLAG             ;TERM_FLAG                   1802           00000000'  00  D4   0007F
  2477.     BLBC    1644(R3), 3$             ;DEBUG_REDIRECTED, 3$               1807            0F     066C   C3  E9   00085
  2478.     PUSHAB  1444(R3)             ;DEBUG_RAB                   1810               05A4   C3  9F   0008A
  2479.     PUSHAB  1364(R3)             ;DEBUG_FAB                                        0554   C3  9F   0008E
  2480.     CALLS   #2, (R5)             ;#2, LOG_CLOSE                                     65         02  FB   00092
  2481.     CLRL    1644(R3)             ;DEBUG_REDIRECTED               1811               066C   C3  D4   00095
  2482. 3$:    BLBC    (R6), 4$             ;TRANSACTION_OPEN, 4$               1818            22         66  E9   00099
  2483.     PUSHL   R7                 ;R7                       1822                  57  DD   0009C
  2484.     PUSHAB  G^P.ABC                 ;P.ABC                                        00000000'  00  9F   0009E
  2485.     PUSHAB  G^P.ABA                 ;P.ABA                       1821           00000000'  00  9F   000A4
  2486.     CALLS   #3, G^LOG_FAOL             ;#3, LOG_FAOL                          00000000G  00         03  FB   000AA
  2487.     PUSHL   R7                 ;R7                       1823                  57  DD   000B1
  2488.     PUSHAB  G^TRANSACTION_FAB         ;TRANSACTION_FAB                                00000000G  00  9F   000B3
  2489.     CALLS   #2, (R5)             ;#2, LOG_CLOSE                                     65         02  FB   000B9
  2490.     CLRL    (R6)                 ;TRANSACTION_OPEN               1824                  66  D4   000BC
  2491. 4$:    MOVL    #134316043, R0             ;#134316043, R0               1830            50 0801800B   8F  D0   000BE
  2492.     RET                      ;                                               04   000C5
  2493.  
  2494. ; Routine Size:  198 bytes,    Routine Base:  $CODE$ + 0838
  2495.  
  2496.  
  2497. ;   1832  1     
  2498. ;   1833  1     %SBTTL 'Communications line -- SEND'
  2499. ;   1834  1     
  2500. ;   1835  1    GLOBAL ROUTINE SEND (ADDRESS, LENGTH) =
  2501. ;   1836  1     
  2502. ;   1837  1    !++
  2503. ;   1838  1    ! FUNCTIONAL DESCRIPTION:
  2504. ;   1839  1    !
  2505. ;   1840  1    !    This routine will send a stream of 8-bit bytes over the terminal
  2506. ;   1841  1    !    line to the remote KERMIT.  This routine is called from KERMSG.
  2507. ;   1842  1    !
  2508. ;   1843  1    ! CALLING SEQUENCE:
  2509. ;   1844  1    !
  2510. ;   1845  1    !    SEND(Address-of-msg, Length-of-msg);
  2511. ;   1846  1    !
  2512. ;   1847  1    ! INPUT PARAMETERS:
  2513. ;   1848  1    !
  2514. ;   1849  1    !    None.
  2515. ;   1850  1    !
  2516. ;   1851  1    ! IMPLICIT INPUTS:
  2517. ;   1852  1    !
  2518. ;   1853  1    !    TERM_CHAN - Channel number to deassign.
  2519. ;   1854  1    !
  2520. ;   1855  1    ! OUTPUT PARAMETERS:
  2521. ;   1856  1    !
  2522. ;   1857  1    !    None.
  2523. ;   1858  1    !
  2524. ;   1859  1    ! IMPLICIT OUTPUTS:
  2525. ;   1860  1    !
  2526. ;   1861  1    !    None.
  2527. ;   1862  1    !
  2528. ;   1863  1    ! COMPLETION CODES:
  2529. ;   1864  1    !
  2530. ;   1865  1    !    SS$_NORMAL or error condition.
  2531. ;   1866  1    !
  2532. ;   1867  1    ! SIDE EFFECTS:
  2533. ;   1868  1    !
  2534. ;   1869  1    !    None.
  2535. ;   1870  1    !
  2536. ;   1871  1    !--
  2537. ;   1872  1     
  2538. ;   1873  2        BEGIN
  2539. ;   1874  2     
  2540. ;   1875  2        LOCAL
  2541. ;   1876  2        CUR_EFN,                ! Current EFN settings
  2542. ;   1877  2        STATUS;                    ! Status returned by $QIOW
  2543. ;   1878  2     
  2544. ;   1879  2    !
  2545. ;   1880  2    ! If we already got a complete buffer of input we should ignore it.
  2546. ;   1881  2    ! This is because we are probably retransmitting something and the
  2547. ;   1882  2    ! incoming data is the response to the previous copy of this message.
  2548. ;   1883  2    ! If we don't ignore it, we could get into a situation where every message
  2549. ;   1884  2    ! gets transmitted twice.
  2550. ;   1885  2    !
  2551. ;   1886  2        STATUS = $READEF (EFN = TERM_EFN, STATE = CUR_EFN);
  2552. ;   1887  2     
  2553. ;   1888  2        IF (.CUR_EFN AND 1^TERM_EFN) EQL 1 THEN DO_RECEIVE_QIO ();
  2554. ;   1889  2     
  2555. ; P 1890  2        STATUS = $QIOW (CHAN = .TERM_CHAN, EFN = TERM_O_EFN, FUNC = IO$_WRITEVBLK + IO$M_NOFORMAT,
  2556. ;   1891  2        P1 = .ADDRESS, P2 = .LENGTH);
  2557. ;   1892  2     
  2558. ;   1893  2        IF .STATUS EQL SS$_NORMAL
  2559. ;   1894  2        THEN
  2560. ;   1895  2        RETURN KER_NORMAL
  2561. ;   1896  2        ELSE
  2562. ;   1897  3        BEGIN
  2563. ;   1898  3        LIB$SIGNAL (.STATUS);
  2564. ;   1899  3        RETURN .STATUS;
  2565. ;   1900  2        END;
  2566. ;   1901  2     
  2567. ;   1902  1        END;                    ! End of SEND
  2568.  
  2569.  
  2570.  
  2571.     .EXTRN  SYS$READEF
  2572.  
  2573.     .ENTRY  SEND, ^M<R2>             ;SEND, Save R2                   1835                    0004   00000
  2574.     SUBL2   #4, SP                 ;#4, SP                                     5E         04  C2   00002
  2575.     PUSHL   SP                 ;SP                       1886                  5E  DD   00005
  2576.     PUSHL   #2                 ;#2                                               02  DD   00007
  2577.     CALLS   #2, G^SYS$READEF         ;#2, SYS$READEF                      00000000G  00         02  FB   00009
  2578.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   00010
  2579.     BICL3   #-5, (SP), R0             ;#-5, CUR_EFN, R0               1888            6E FFFFFFFB   8F  CB   00013
  2580.                          ;                                         50       0001A
  2581.     CMPL    R0, #1                 ;R0, #1                                     01         50  D1   0001B
  2582.     BNEQ    1$                 ;1$                                               07  12   0001E
  2583.     CALLS   #0, G^U.49             ;#0, U.49                          00000000V  00         00  FB   00020
  2584. 1$:    CLRQ    -(SP)                 ;-(SP)                       1891                  7E  7C   00027
  2585.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00029
  2586.     MOVQ    4(AP), -(SP)             ;ADDRESS, -(SP)                                 7E    04   AC  7D   0002B
  2587.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0002F
  2588.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00031
  2589.     MOVZWL  #304, -(SP)             ;#304, -(SP)                                     7E     0130   8F  3C   00033
  2590.     PUSHL   G^U.4                 ;U.4                                        00000000'  00  DD   00038
  2591.     PUSHL   #4                 ;#4                                               04  DD   0003E
  2592.     CALLS   #12, G^SYS$QIOW             ;#12, SYS$QIOW                          00000000G  00         0C  FB   00040
  2593.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   00047
  2594.     CMPL    R2, #1                 ;STATUS, #1                   1893            01         52  D1   0004A
  2595.     BNEQ    2$                 ;2$                                               08  12   0004D
  2596.     MOVL    #134316043, R0             ;#134316043, R0               1895            50 0801800B   8F  D0   0004F
  2597.     RET                      ;                                               04   00056
  2598. 2$:    PUSHL   R2                 ;STATUS                   1898                  52  DD   00057
  2599.     CALLS   #1, G^LIB$SIGNAL         ;#1, LIB$SIGNAL                      00000000G  00         01  FB   00059
  2600.     MOVL    R2, R0                 ;STATUS, R0                                     50         52  D0   00060
  2601.     RET                      ;                       1899                  04   00063
  2602.  
  2603. ; Routine Size:  100 bytes,    Routine Base:  $CODE$ + 08FE
  2604.  
  2605.  
  2606. ;   1903  1     
  2607. ;   1904  1     %SBTTL 'Communications line -- RECEIVE'
  2608. ;   1905  1     
  2609. ;   1906  1    GLOBAL ROUTINE RECEIVE (ADDRESS, LENGTH) =
  2610. ;   1907  1     
  2611. ;   1908  1    !++
  2612. ;   1909  1    ! FUNCTIONAL DESCRIPTION:
  2613. ;   1910  1    !
  2614. ;   1911  1    !    This routine will receive a stream of 8-bit bytes over the terminal
  2615. ;   1912  1    !    line to the remote KERMIT.  This routine is called from KERMSG.
  2616. ;   1913  1    !    The text that is stored will always contain the control-A as the
  2617. ;   1914  1    !    first character.
  2618. ;   1915  1    !
  2619. ;   1916  1    ! CALLING SEQUENCE:
  2620. ;   1917  1    !
  2621. ;   1918  1    !    RECEIVE(Address-of-msg);
  2622. ;   1919  1    !
  2623. ;   1920  1    ! INPUT PARAMETERS:
  2624. ;   1921  1    !
  2625. ;   1922  1    !    None.
  2626. ;   1923  1    !
  2627. ;   1924  1    ! IMPLICIT INPUTS:
  2628. ;   1925  1    !
  2629. ;   1926  1    !    TERM_CHAN - Channel number to deassign.
  2630. ;   1927  1    !
  2631. ;   1928  1    ! OUTPUT PARAMETERS:
  2632. ;   1929  1    !
  2633. ;   1930  1    !    None.
  2634. ;   1931  1    !
  2635. ;   1932  1    ! IMPLICIT OUTPUTS:
  2636. ;   1933  1    !
  2637. ;   1934  1    !    None.
  2638. ;   1935  1    !
  2639. ;   1936  1    ! COMPLETION CODES:
  2640. ;   1937  1    !
  2641. ;   1938  1    !    SS$_NORMAL or error condition.
  2642. ;   1939  1    !
  2643. ;   1940  1    ! SIDE EFFECTS:
  2644. ;   1941  1    !
  2645. ;   1942  1    !    None.
  2646. ;   1943  1    !
  2647. ;   1944  1    !--
  2648. ;   1945  1     
  2649. ;   1946  2        BEGIN
  2650. ;   1947  2     
  2651. ;   1948  2        EXTERNAL
  2652. ;   1949  2        RCV_SOH;                ! Character to use for start of packet
  2653. ;   1950  2     
  2654. ;   1951  2        LOCAL
  2655. ;   1952  2        QWORD_TIMEOUT : VECTOR [2, LONG],    ! Quad word TIMEOUT value
  2656. ;   1953  2        TIMER_VALUE : VECTOR [2, LONG],        ! Quad word TIME value
  2657. ;   1954  2        OLD_POINTER,                ! Pointer into the message
  2658. ;   1955  2        NEW_POINTER,                ! Other pointer for finding SOH
  2659. ;   1956  2        CUR_LENGTH,                ! Running length while finding SOH
  2660. ;   1957  2        CUR_EFN,                ! Current EFN value
  2661. ;   1958  2        STATUS;                    ! Status returned by $QIO
  2662. ;   1959  2     
  2663. ;   1960  2        OWN
  2664. ;   1961  2        INT_CHR_SEEN;                ! Interrupt character seen last
  2665. ;   1962  2     
  2666. ;   1963  2    !
  2667. ;   1964  2    ! Flag we haven't seen a ^Y yet.  We must get two control-Y's in fairly
  2668. ;   1965  2    ! quick succession (no timeouts in between) in order to give up.
  2669. ;   1966  2    !
  2670. ;   1967  2        INT_CHR_SEEN = FALSE;
  2671. ;   1968  2    !
  2672. ;   1969  2    ! Set up the timer if we have a time out parameter
  2673. ;   1970  2    !
  2674. ;   1971  2     
  2675. ;   1972  2        IF NOT .FORCE_TIMEOUT THEN STATUS = $CLREF (EFN = TIME_EFN);
  2676. ;   1973  2     
  2677. ;   1974  2        IF .SEND_TIMEOUT GTR 0
  2678. ;   1975  2        THEN
  2679. ;   1976  3        BEGIN
  2680. ;   1977  3        STATUS = $CANTIM (REQIDT = TIME_EFN);
  2681. ;   1978  3        STATUS = $GETTIM (TIMADR = TIMER_VALUE);
  2682. ;   1979  3        STATUS = LIB$EMUL (SEND_TIMEOUT, UPLIT (10000000), UPLIT (0), QWORD_TIMEOUT);
  2683. ;   1980  3        STATUS = LIB$ADDX (TIMER_VALUE, QWORD_TIMEOUT, QWORD_TIMEOUT);
  2684. ;   1981  3        STATUS = $SETIMR (DAYTIM = QWORD_TIMEOUT, EFN = TIME_EFN, REQIDT = TIME_EFN);
  2685. ;   1982  2        END;
  2686. ;   1983  2     
  2687. ;   1984  2    !
  2688. ;   1985  2    ! Loop until we get something that is acceptable
  2689. ;   1986  2    !
  2690. ;   1987  2     
  2691. ;   1988  2        WHILE TRUE DO
  2692. ;   1989  3        BEGIN
  2693. ;   1990  3    !
  2694. ;   1991  3    ! Wait for something to happen.  Either the terminal EFN will come up
  2695. ;   1992  3    ! indicating we have some data, or the timer EFN will indicate that
  2696. ;   1993  3    ! the time has run out.
  2697. ;   1994  3    !
  2698. ;   1995  3        STATUS = $WFLOR (EFN = TERM_EFN, MASK = (1^TERM_EFN OR 1^TIME_EFN));
  2699. ;   1996  3        STATUS = $READEF (EFN = TERM_EFN, STATE = CUR_EFN);
  2700. ;   1997  3        FORCE_TIMEOUT = FALSE;            ! Timeout had it chance to happen
  2701. ;   1998  3    !
  2702. ;   1999  3    ! If the terminal EFN is not set, the time must have expired.  Therefore,
  2703. ;   2000  3    ! we have timed out, and need to return that fact.
  2704. ;   2001  3    !
  2705. ;   2002  3     
  2706. ;   2003  3        IF (.CUR_EFN AND 1^TERM_EFN) EQL 0 THEN RETURN KER_TIMEOUT;
  2707. ;   2004  3     
  2708. ;   2005  3    !
  2709. ;   2006  3    ! If we have a request to abort, start it up the chain.
  2710. ;   2007  3    !
  2711. ;   2008  3     
  2712. ;   2009  3        IF .FORCE_ABORT
  2713. ;   2010  3        THEN
  2714. ;   2011  4            BEGIN
  2715. ;   2012  4            STATUS = $CANTIM (REQIDT = TIME_EFN);
  2716. ;   2013  4            RETURN KER_ABORTED;
  2717. ;   2014  3            END;
  2718. ;   2015  3     
  2719. ;   2016  3    !
  2720. ;   2017  3    ! Check if the QIO completed successfully.  If not, we will return
  2721. ;   2018  3    ! an error.
  2722. ;   2019  3    !
  2723. ;   2020  3     
  2724. ;   2021  3        IF NOT .IO_STATUS [0]
  2725. ;   2022  3        THEN
  2726. ;   2023  4            BEGIN
  2727. ;   2024  4            LIB$SIGNAL (.IO_STATUS [0]);
  2728. ;   2025  4            RETURN KER_RECERR;
  2729. ;   2026  3            END;
  2730. ;   2027  3     
  2731. ;   2028  3    !
  2732. ;   2029  3    ! First check for a control-Y as the terminator.  If it was, then
  2733. ;   2030  3    ! just abort now, since the user probably typed it.
  2734. ;   2031  3    !
  2735. ;   2032  3     
  2736. ;   2033  3        IF .CONNECT_FLAG
  2737. ;   2034  3        THEN
  2738. ;   2035  3     
  2739. ;   2036  4            IF (.IO_STATUS [2] EQL CHR_CTL_Y) AND (.RCV_EOL NEQ CHR_CTL_Y)
  2740. ;   2037  3            THEN
  2741. ;   2038  4            BEGIN
  2742. ;   2039  4     
  2743. ;   2040  4            IF .INT_CHR_SEEN AND .IO_STATUS [1] EQL 0
  2744. ;   2041  4            THEN
  2745. ;   2042  5                BEGIN
  2746. ;   2043  5                STATUS = $CANTIM (REQIDT = TIME_EFN);
  2747. ;   2044  5                RETURN KER_ABORTED
  2748. ;   2045  5                END
  2749. ;   2046  4            ELSE
  2750. ;   2047  5                BEGIN
  2751. ;   2048  5                INT_CHR_SEEN = TRUE;
  2752. ;   2049  5                IO_STATUS [1] = 0;        ! Force no input seen
  2753. ;   2050  5                END
  2754. ;   2051  5     
  2755. ;   2052  4            END
  2756. ;   2053  3            ELSE
  2757. ;   2054  3            INT_CHR_SEEN = FALSE;        ! Last character not ^Y
  2758. ;   2055  3     
  2759. ;   2056  3    !
  2760. ;   2057  3    ! Now find the final start of header character in the buffer.  We
  2761. ;   2058  3    ! will only return the text from that point on.  If there is no SOH,
  2762. ;   2059  3    ! then just get another buffer.  It was probably noise on the line.
  2763. ;   2060  3    !
  2764. ;   2061  3        OLD_POINTER = CH$PTR (RECV_BUFFER, 0, CHR_SIZE);
  2765. ;   2062  3        CUR_LENGTH = .IO_STATUS [1];        ! Length without terminating character
  2766. ;   2063  3        NEW_POINTER = CH$FIND_CH (.CUR_LENGTH, .OLD_POINTER, .RCV_SOH);
  2767. ;   2064  3    !
  2768. ;   2065  3    ! If we found a start of header character, then we probably have something
  2769. ;   2066  3    ! to return.  However, first we must find the last start of header, in case
  2770. ;   2067  3    ! something is garbled.
  2771. ;   2068  3    !
  2772. ;   2069  3     
  2773. ;   2070  3        IF NOT CH$FAIL (.NEW_POINTER)
  2774. ;   2071  3        THEN
  2775. ;   2072  4            BEGIN
  2776. ;   2073  4    !
  2777. ;   2074  4    ! Search until we can't find any more start of headers, or until we run
  2778. ;   2075  4    ! out of string to search (last character before EOL is an SOH).
  2779. ;   2076  4    !
  2780. ;   2077  4     
  2781. ;   2078  4            WHILE (.CUR_LENGTH GTR 0) AND ( NOT CH$FAIL (.NEW_POINTER)) DO
  2782. ;   2079  5            BEGIN
  2783. ;   2080  5            CUR_LENGTH = .CUR_LENGTH - CH$DIFF (.NEW_POINTER, .OLD_POINTER);
  2784. ;   2081  5                        ! Adjust the length for the characters we are skipping
  2785. ;   2082  5            OLD_POINTER = .NEW_POINTER;    ! Remember where we start
  2786. ;   2083  5            NEW_POINTER = CH$FIND_CH (.CUR_LENGTH - 1, CH$PLUS (.OLD_POINTER, 1), .RCV_SOH);
  2787. ;   2084  5            ! Find the next SOH (if any)
  2788. ;   2085  4            END;
  2789. ;   2086  4     
  2790. ;   2087  4    !
  2791. ;   2088  4    ! If we have something left of the buffer, move from the SOH until the end
  2792. ;   2089  4    ! into the callers buffer.
  2793. ;   2090  4    !
  2794. ;   2091  4     
  2795. ;   2092  5            IF (.CUR_LENGTH GTR 0)
  2796. ;   2093  4            THEN
  2797. ;   2094  5            BEGIN
  2798. ;   2095  5            .LENGTH = .CUR_LENGTH + 1;
  2799. ;   2096  5     
  2800. ;   2097  5            IF .PARITY_TYPE EQL PR_NONE    ! Have eight-bit?
  2801. ;   2098  5            THEN
  2802. ;   2099  5                CH$MOVE (.CUR_LENGTH + 1, .OLD_POINTER, CH$PTR (.ADDRESS, 0, CHR_SIZE))
  2803. ;   2100  5            ELSE
  2804. ;   2101  6                BEGIN
  2805. ;   2102  6                NEW_POINTER = CH$PTR (.ADDRESS, 0, CHR_SIZE);
  2806. ;   2103  6     
  2807. ;   2104  6                DECR CUR_LENGTH FROM .CUR_LENGTH TO 0 DO
  2808. ;   2105  6                CH$WCHAR_A ((CH$RCHAR_A (OLD_POINTER) AND %O'177'), NEW_POINTER);
  2809. ;   2106  6     
  2810. ;   2107  5                END;
  2811. ;   2108  5     
  2812. ;   2109  5            EXITLOOP
  2813. ;   2110  5            END
  2814. ;   2111  5     
  2815. ;   2112  3            END;                ! End of IF NOT CH$FAIL(.POINTER)
  2816. ;   2113  3     
  2817. ;   2114  3    !
  2818. ;   2115  3    ! If we have gotten here, we have input a buffer without a valid message.
  2819. ;   2116  3    ! Make sure we post the QIO again
  2820. ;   2117  3    !
  2821. ;   2118  3        STATUS = DO_RECEIVE_QIO ();
  2822. ;   2119  3     
  2823. ;   2120  3        IF NOT .STATUS
  2824. ;   2121  3        THEN
  2825. ;   2122  4            BEGIN
  2826. ;   2123  4            LIB$SIGNAL (.STATUS);
  2827. ;   2124  4            RETURN KER_RECERR
  2828. ;   2125  3            END;
  2829. ;   2126  3     
  2830. ;   2127  2        END;                    ! End of WHILE TRUE DO
  2831. ;   2128  2     
  2832. ;   2129  2    !
  2833. ;   2130  2    ! If we have gotten here, we have a valid message to return.
  2834. ;   2131  2    ! Post the QIO so the buffer is available for the next message.
  2835. ;   2132  2    !
  2836. ;   2133  2        STATUS = DO_RECEIVE_QIO ();
  2837. ;   2134  2     
  2838. ;   2135  2        IF NOT .STATUS
  2839. ;   2136  2        THEN
  2840. ;   2137  3        BEGIN
  2841. ;   2138  3        LIB$SIGNAL (.STATUS);
  2842. ;   2139  3        RETURN KER_RECERR
  2843. ;   2140  2        END;
  2844. ;   2141  2     
  2845. ;   2142  2        RETURN KER_NORMAL;                ! Return happy
  2846. ;   2143  1        END;                    ! End of RECEIVE
  2847.  
  2848.  
  2849.  
  2850.     .PSECT  $OWN$,NOEXE,2
  2851.  
  2852. ;INT_CHR_SEEN
  2853. U.72:    .BLKB   4                                       ;                      00BA4
  2854.  
  2855.     .PSECT  $PLIT$,NOWRT,NOEXE,2
  2856.  
  2857. P.ABD:    .LONG   10000000             ;                                              00989680  00190
  2858. P.ABE:    .LONG   0                 ;                                              00000000  00194
  2859.  
  2860.     .EXTRN  RCV_SOH, SYS$CLREF, SYS$CANTIM, SYS$GETTIM, SYS$SETIMR, SYS$WFLOR
  2861.  
  2862.     .PSECT  $CODE$,NOWRT,2
  2863.  
  2864.     .ENTRY  RECEIVE, ^M<R2,R3,R4,R5,R6,R7,-  ;RECEIVE, Save R2,R3,R4,R5,R6,R7,R8,- 1906                    0FFC   00000
  2865.         R8,R9,R10,R11>             ;R9,R10,R11
  2866.     MOVAB   G^SEND_TIMEOUT, R11         ;SEND_TIMEOUT, R11                                 5B 00000000G  00  9E   00002
  2867.     MOVAB   G^U.72, R10             ;U.72, R10                                     5A 00000000'  00  9E   00009
  2868.     SUBL2   #20, SP                 ;#20, SP                                     5E         14  C2   00010
  2869.     CLRL    (R10)                 ;INT_CHR_SEEN                   1967                  6A  D4   00013
  2870.     BLBS    -2976(R10), 1$             ;FORCE_TIMEOUT, 1$               1972            0C     F460   CA  E8   00015
  2871.     PUSHL   #3                 ;#3                                               03  DD   0001A
  2872.     CALLS   #1, G^SYS$CLREF             ;#1, SYS$CLREF                          00000000G  00         01  FB   0001C
  2873.     MOVL    R0, R9                 ;R0, STATUS                                     59         50  D0   00023
  2874. 1$:    TSTL    (R11)                 ;SEND_TIMEOUT                   1974                  6B  D5   00026
  2875.     BLEQ    2$                 ;2$                                               5C  15   00028
  2876.     MOVQ    #3, -(SP)             ;#3, -(SP)                   1977            7E         03  7D   0002A
  2877.     CALLS   #2, G^SYS$CANTIM         ;#2, SYS$CANTIM                      00000000G  00         02  FB   0002D
  2878.     MOVL    R0, R9                 ;R0, STATUS                                     59         50  D0   00034
  2879.     PUSHAB  4(SP)                 ;TIMER_VALUE                   1978             04   AE  9F   00037
  2880.     CALLS   #1, G^SYS$GETTIM         ;#1, SYS$GETTIM                      00000000G  00         01  FB   0003A
  2881.     MOVL    R0, R9                 ;R0, STATUS                                     59         50  D0   00041
  2882.     PUSHAB  12(SP)                 ;QWORD_TIMEOUT                   1979             0C   AE  9F   00044
  2883.     PUSHAB  G^P.ABE                 ;P.ABE                                        00000000'  00  9F   00047
  2884.     PUSHAB  G^P.ABD                 ;P.ABD                                        00000000'  00  9F   0004D
  2885.     PUSHL   R11                 ;R11                                               5B  DD   00053
  2886.     CALLS   #4, G^LIB$EMUL             ;#4, LIB$EMUL                          00000000G  00         04  FB   00055
  2887.     MOVL    R0, R9                 ;R0, STATUS                                     59         50  D0   0005C
  2888.     PUSHAB  12(SP)                 ;QWORD_TIMEOUT                   1980             0C   AE  9F   0005F
  2889.     PUSHAB  16(SP)                 ;QWORD_TIMEOUT                                      10   AE  9F   00062
  2890.     PUSHAB  12(SP)                 ;TIMER_VALUE                                      0C   AE  9F   00065
  2891.     CALLS   #3, G^LIB$ADDX             ;#3, LIB$ADDX                          00000000G  00         03  FB   00068
  2892.     MOVL    R0, R9                 ;R0, STATUS                                     59         50  D0   0006F
  2893.     MOVQ    #3, -(SP)             ;#3, -(SP)                   1981            7E         03  7D   00072
  2894.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00075
  2895.     PUSHAB  24(SP)                 ;QWORD_TIMEOUT                                      18   AE  9F   00077
  2896.     PUSHL   #3                 ;#3                                               03  DD   0007A
  2897.     CALLS   #5, G^SYS$SETIMR         ;#5, SYS$SETIMR                      00000000G  00         05  FB   0007C
  2898.     MOVL    R0, R9                 ;R0, STATUS                                     59         50  D0   00083
  2899. 2$:    PUSHL   #12                 ;#12                       1995                  0C  DD   00086
  2900.     PUSHL   #2                 ;#2                                               02  DD   00088
  2901.     CALLS   #2, G^SYS$WFLOR             ;#2, SYS$WFLOR                          00000000G  00         02  FB   0008A
  2902.     MOVL    R0, R9                 ;R0, STATUS                                     59         50  D0   00091
  2903.     PUSHL   SP                 ;SP                       1996                  5E  DD   00094
  2904.     PUSHL   #2                 ;#2                                               02  DD   00096
  2905.     CALLS   #2, G^SYS$READEF         ;#2, SYS$READEF                      00000000G  00         02  FB   00098
  2906.     MOVL    R0, R9                 ;R0, STATUS                                     59         50  D0   0009F
  2907.     CLRL    -2976(R10)             ;FORCE_TIMEOUT                   1997               F460   CA  D4   000A2
  2908.     BBS     #2, (SP), 3$             ;#2, CUR_EFN, 3$               2003            6E         02  E0   000A6
  2909.                          ;                                         08       000A9
  2910.     MOVL    #134316248, R0             ;#134316248, R0                                 50 080180D8   8F  D0   000AA
  2911.     RET                      ;                                               04   000B1
  2912. 3$:    BLBS    -2980(R10), 5$             ;FORCE_ABORT, 5$               2009            2D     F45C   CA  E8   000B2
  2913.     MOVZWL  -1064(R10), R0             ;IO_STATUS, R0                   2021            50     FBD8   CA  3C   000B7
  2914.     BLBS    R0, 4$                 ;R0, 4$                                     05         50  E8   000BC
  2915.     PUSHL   R0                 ;R0                       2024                  50  DD   000BF
  2916.     BRW     19$                 ;19$                                             00D6  31   000C1
  2917. 4$:    BLBC    G^CONNECT_FLAG, 8$         ;CONNECT_FLAG, 8$               2033            39 00000000G  00  E9   000C4
  2918.     CMPW    -1060(R10), #25             ;IO_STATUS+4, #25               2036            19     FBDC   CA  B1   000CB
  2919.     BNEQ    7$                 ;7$                                               30  12   000D0
  2920.     CMPL    G^RCV_EOL, #25             ;RCV_EOL, #25                                     19 00000000G  00  D1   000D2
  2921.     BEQL    7$                 ;7$                                               27  13   000D9
  2922.     BLBC    (R10), 6$             ;INT_CHR_SEEN, 6$               2040            1B         6A  E9   000DB
  2923.     TSTW    -1062(R10)             ;IO_STATUS+2                                        FBDA   CA  B5   000DE
  2924.     BNEQ    6$                 ;6$                                               15  12   000E2
  2925. 5$:    MOVQ    #3, -(SP)             ;#3, -(SP)                   2043            7E         03  7D   000E4
  2926.     CALLS   #2, G^SYS$CANTIM         ;#2, SYS$CANTIM                      00000000G  00         02  FB   000E7
  2927.     MOVL    R0, R9                 ;R0, STATUS                                     59         50  D0   000EE
  2928.     MOVL    #134316258, R0             ;#134316258, R0               2044            50 080180E2   8F  D0   000F1
  2929.     RET                      ;                                               04   000F8
  2930. 6$:    MOVL    #1, (R10)             ;#1, INT_CHR_SEEN               2048            6A         01  D0   000F9
  2931.     CLRW    -1062(R10)             ;IO_STATUS+2                   2049               FBDA   CA  B4   000FC
  2932.     BRB     8$                 ;8$                                               02  11   00100
  2933. 7$:    CLRL    (R10)                 ;INT_CHR_SEEN                   2054                  6A  D4   00102
  2934. 8$:    MOVAB   -1056(R10), R6             ;RECV_BUFFER, OLD_POINTER           2061            56     FBE0   CA  9E   00104
  2935.     MOVZWL  -1062(R10), R7             ;IO_STATUS+2, CUR_LENGTH           2062            57     FBDA   CA  3C   00109
  2936.     MOVL    G^RCV_SOH, R2             ;RCV_SOH, R2                   2063            52 00000000G  00  D0   0010E
  2937.     LOCC    R2, R7, (R6)             ;R2, CUR_LENGTH, (OLD_POINTER)                          57         52  3A   00115
  2938.                          ;                                         66       00118
  2939.     BNEQ    9$                 ;9$                                               02  12   00119
  2940.     CLRL    R1                 ;R1                                               51  D4   0011B
  2941. 9$:    MOVL    R1, R8                 ;R1, NEW_POINTER                                 58         51  D0   0011D
  2942.     BEQL    16$                 ;16$                       2070                  59  13   00120
  2943. 10$:    TSTL    R7                 ;CUR_LENGTH                   2078                  57  D5   00122
  2944.     BLEQ    12$                 ;12$                                               20  15   00124
  2945.     TSTL    R8                 ;NEW_POINTER                                           58  D5   00126
  2946.     BEQL    12$                 ;12$                                               1C  13   00128
  2947.     SUBL3   R8, R6, R0             ;NEW_POINTER, OLD_POINTER, R0           2080            56         58  C3   0012A
  2948.                          ;                                         50       0012D
  2949.     ADDL2   R0, R7                 ;R0, CUR_LENGTH                                 57         50  C0   0012E
  2950.     MOVL    R8, R6                 ;NEW_POINTER, OLD_POINTER           2082            56         58  D0   00131
  2951.     MOVAB   -1(R7), R0             ;-1(R7), R0                   2083            50    FF   A7  9E   00134
  2952.     LOCC    R2, R0, 1(R6)             ;R2, R0, 1(OLD_POINTER)                             50         52  3A   00138
  2953.                          ;                                    01   A6       0013B
  2954.     BNEQ    11$                 ;11$                                               02  12   0013D
  2955.     CLRL    R1                 ;R1                                               51  D4   0013F
  2956. 11$:    MOVL    R1, R8                 ;R1, NEW_POINTER                                 58         51  D0   00141
  2957.     BRB     10$                 ;10$                                               DC  11   00144
  2958. 12$:    TSTL    R7                 ;CUR_LENGTH                   2092                  57  D5   00146
  2959.     BLEQ    16$                 ;16$                                               31  15   00148
  2960.     MOVAB   1(R7), R0             ;1(R7), R0                   2095            50    01   A7  9E   0014A
  2961.     MOVL    R0, @8(AP)             ;R0, @LENGTH                                08   BC         50  D0   0014E
  2962.     TSTL    G^PARITY_TYPE             ;PARITY_TYPE                   2097           00000000G  00  D5   00152
  2963.     BNEQ    13$                 ;13$                                               07  12   00158
  2964.     MOVC3   R0, (R6), @4(AP)         ;R0, (OLD_POINTER), @ADDRESS           2099            66         50  28   0015A
  2965.                          ;                                    04   BC       0015D
  2966.     BRB     17$                 ;17$                                               2A  11   0015F
  2967. 13$:    MOVL    4(AP), R8             ;ADDRESS, NEW_POINTER               2102            58    04   AC  D0   00161
  2968.     MOVAB   1(R7), R0             ;1(R7), CUR_LENGTH               2104            50    01   A7  9E   00165
  2969.     BRB     15$                 ;15$                                               0B  11   00169
  2970. 14$:    MOVZBL  (R6)+, R1             ;(OLD_POINTER)+, R1               2105            51         86  9A   0016B
  2971.     EXTZV   #0, #7, R1, R2             ;#0, #7, R1, R2                                 07         00  EF   0016E
  2972.                          ;                                   52         51       00171
  2973.     MOVB    R2, (R8)+             ;R2, (NEW_POINTER)+                                 88         52  90   00173
  2974. 15$:    SOBGEQ  R0, 14$                 ;CUR_LENGTH, 14$                                 F2         50  F4   00176
  2975.     BRB     17$                 ;17$                       2109                  10  11   00179
  2976. 16$:    CALLS   #0, G^U.49             ;#0, U.49                   2118 00000000V  00         00  FB   0017B
  2977.     MOVL    R0, R9                 ;R0, STATUS                                     59         50  D0   00182
  2978.     BLBC    R9, 18$                 ;STATUS, 18$                   2120            10         59  E9   00185
  2979.     BRW     2$                 ;2$                                             FEFB  31   00188
  2980. 17$:    CALLS   #0, G^U.49             ;#0, U.49                   2133 00000000V  00         00  FB   0018B
  2981.     MOVL    R0, R9                 ;R0, STATUS                                     59         50  D0   00192
  2982.     BLBS    R9, 20$                 ;STATUS, 20$                   2135            11         59  E8   00195
  2983. 18$:    PUSHL   R9                 ;STATUS                   2138                  59  DD   00198
  2984. 19$:    CALLS   #1, G^LIB$SIGNAL         ;#1, LIB$SIGNAL                      00000000G  00         01  FB   0019A
  2985.     MOVL    #134316266, R0             ;#134316266, R0               2139            50 080180EA   8F  D0   001A1
  2986.     RET                      ;                                               04   001A8
  2987. 20$:    MOVL    #134316043, R0             ;#134316043, R0               2142            50 0801800B   8F  D0   001A9
  2988.     RET                      ;                                               04   001B0
  2989.  
  2990. ; Routine Size:  433 bytes,    Routine Base:  $CODE$ + 0962
  2991.  
  2992.  
  2993. ;   2144  1     
  2994. ;   2145  1     %SBTTL 'Communications line -- IBM_WAIT'
  2995. ;   2146  1     
  2996. ;   2147  1    GLOBAL ROUTINE IBM_WAIT =
  2997. ;   2148  1     
  2998. ;   2149  1    !++
  2999. ;   2150  1    ! FUNCTIONAL DESCRIPTION:
  3000. ;   2151  1    !
  3001. ;   2152  1    !    This routine will wait until the IBM turnaround character
  3002. ;   2153  1    !    is seen on the communications line, or until the timeout
  3003. ;   2154  1    !    parameter is exceeded.
  3004. ;   2155  1    !
  3005. ;   2156  1    ! CALLING SEQUENCE:
  3006. ;   2157  1    !
  3007. ;   2158  1    !    STATUS = IBM_WAIT ();
  3008. ;   2159  1    !
  3009. ;   2160  1    ! INPUT PARAMETERS:
  3010. ;   2161  1    !
  3011. ;   2162  1    !    None.
  3012. ;   2163  1    !
  3013. ;   2164  1    ! IMPLICIT INPUTS:
  3014. ;   2165  1    !
  3015. ;   2166  1    !    TERM_CHAN - Channel number for terminal
  3016. ;   2167  1    !
  3017. ;   2168  1    ! OUTPUT PARAMETERS:
  3018. ;   2169  1    !
  3019. ;   2170  1    !    Status value is returned as routine value.
  3020. ;   2171  1    !
  3021. ;   2172  1    ! IMPLICIT OUTPUTS:
  3022. ;   2173  1    !
  3023. ;   2174  1    !    None.
  3024. ;   2175  1    !
  3025. ;   2176  1    ! COMPLETION CODES:
  3026. ;   2177  1    !
  3027. ;   2178  1    !    SS$_NORMAL or error condition.
  3028. ;   2179  1    !
  3029. ;   2180  1    ! SIDE EFFECTS:
  3030. ;   2181  1    !
  3031. ;   2182  1    !    None.
  3032. ;   2183  1    !
  3033. ;   2184  1    !--
  3034. ;   2185  1     
  3035. ;   2186  2        BEGIN
  3036. ;   2187  2     
  3037. ;   2188  2        LOCAL
  3038. ;   2189  2        QWORD_TIMEOUT : VECTOR [2, LONG],    ! Quad word TIMEOUT value
  3039. ;   2190  2        TIMER_VALUE : VECTOR [2, LONG],        ! Quad word TIME value
  3040. ;   2191  2        CUR_EFN,                ! Current EFN value
  3041. ;   2192  2        STATUS;                    ! Status returned by $QIO
  3042. ;   2193  2     
  3043. ;   2194  2    !
  3044. ;   2195  2    ! Set up the timer if we have a time out parameter
  3045. ;   2196  2    !
  3046. ;   2197  2        STATUS = $CLREF (EFN = TIME_EFN);
  3047. ;   2198  2     
  3048. ;   2199  2        IF .SEND_TIMEOUT GTR 0
  3049. ;   2200  2        THEN
  3050. ;   2201  3        BEGIN
  3051. ;   2202  3        STATUS = $CANTIM (REQIDT = TIME_EFN);
  3052. ;   2203  3        STATUS = $GETTIM (TIMADR = TIMER_VALUE);
  3053. ;   2204  3        STATUS = LIB$EMUL (SEND_TIMEOUT, UPLIT (1000000), UPLIT (0), QWORD_TIMEOUT);
  3054. ;   2205  3        STATUS = LIB$ADDX (TIMER_VALUE, QWORD_TIMEOUT, QWORD_TIMEOUT);
  3055. ;   2206  3        STATUS = $SETIMR (DAYTIM = QWORD_TIMEOUT, EFN = TIME_EFN, REQIDT = TIME_EFN);
  3056. ;   2207  2        END;
  3057. ;   2208  2     
  3058. ;   2209  2    !
  3059. ;   2210  2    ! Loop until we get something that is acceptable
  3060. ;   2211  2    !
  3061. ;   2212  2     
  3062. ;   2213  2        WHILE TRUE DO
  3063. ;   2214  3        BEGIN
  3064. ;   2215  3    !
  3065. ;   2216  3    ! Wait for something to happen.  Either the terminal EFN will come up
  3066. ;   2217  3    ! indicating we have some data, or the timer EFN will indicate that
  3067. ;   2218  3    ! the time has run out.
  3068. ;   2219  3    !
  3069. ;   2220  3        STATUS = $WFLOR (EFN = TERM_EFN, MASK = (1^TERM_EFN OR 1^TIME_EFN));
  3070. ;   2221  3        STATUS = $READEF (EFN = TERM_EFN, STATE = CUR_EFN);
  3071. ;   2222  3    !
  3072. ;   2223  3    ! If the terminal EFN is not set, the time must have expired.  Therefore,
  3073. ;   2224  3    ! pretend we got the character.
  3074. ;   2225  3    !
  3075. ;   2226  3     
  3076. ;   2227  3        IF (.CUR_EFN AND 1^TERM_EFN) EQL 0 THEN RETURN KER_NORMAL;
  3077. ;   2228  3     
  3078. ;   2229  3    !
  3079. ;   2230  3    ! Check if the QIO completed successfully.  If not, we will return
  3080. ;   2231  3    ! an error.
  3081. ;   2232  3    !
  3082. ;   2233  3     
  3083. ;   2234  3        IF NOT .IO_STATUS [0]
  3084. ;   2235  3        THEN
  3085. ;   2236  4            BEGIN
  3086. ;   2237  4            LIB$SIGNAL (.IO_STATUS [0]);
  3087. ;   2238  4            RETURN KER_RECERR;
  3088. ;   2239  3            END;
  3089. ;   2240  3     
  3090. ;   2241  3    !
  3091. ;   2242  3    ! First check for a control-Y as the terminator.  If it was, then
  3092. ;   2243  3    ! just abort now, since the user probably typed it.
  3093. ;   2244  3    !
  3094. ;   2245  3     
  3095. ;   2246  3        IF .CONNECT_FLAG
  3096. ;   2247  3        THEN
  3097. ;   2248  3     
  3098. ;   2249  4            IF (.IO_STATUS [2] EQL CHR_CTL_Y) AND (.RCV_EOL NEQ CHR_CTL_Y)
  3099. ;   2250  3            THEN
  3100. ;   2251  4            BEGIN
  3101. ;   2252  4            STATUS = $CANTIM (REQIDT = TIME_EFN);
  3102. ;   2253  4            RETURN KER_ABORTED
  3103. ;   2254  3            END;
  3104. ;   2255  3     
  3105. ;   2256  3    ! Check if terminator was the turnaround character
  3106. ;   2257  3     
  3107. ;   2258  3        IF (.IO_STATUS [2] EQL .IBM_CHAR) THEN EXITLOOP;
  3108. ;   2259  3     
  3109. ;   2260  3    !
  3110. ;   2261  3    ! Make sure we post the QIO again
  3111. ;   2262  3    !
  3112. ;   2263  3        STATUS = DO_RECEIVE_QIO ();
  3113. ;   2264  3     
  3114. ;   2265  3        IF NOT .STATUS
  3115. ;   2266  3        THEN
  3116. ;   2267  4            BEGIN
  3117. ;   2268  4            LIB$SIGNAL (.STATUS);
  3118. ;   2269  4            RETURN KER_RECERR
  3119. ;   2270  3            END;
  3120. ;   2271  3     
  3121. ;   2272  2        END;                    ! End of WHILE TRUE DO
  3122. ;   2273  2     
  3123. ;   2274  2    !
  3124. ;   2275  2    ! If we have gotten here, we have a valid message to return.
  3125. ;   2276  2    ! Post the QIO so the buffer is available for the next message.
  3126. ;   2277  2    !
  3127. ;   2278  2        STATUS = DO_RECEIVE_QIO ();
  3128. ;   2279  2     
  3129. ;   2280  2        IF NOT .STATUS
  3130. ;   2281  2        THEN
  3131. ;   2282  3        BEGIN
  3132. ;   2283  3        LIB$SIGNAL (.STATUS);
  3133. ;   2284  3        RETURN KER_RECERR
  3134. ;   2285  2        END;
  3135. ;   2286  2     
  3136. ;   2287  2        RETURN KER_NORMAL;                ! Return happy
  3137. ;   2288  1        END;                    ! End of RECEIVE
  3138.  
  3139.  
  3140.  
  3141.     .PSECT  $PLIT$,NOWRT,NOEXE,2
  3142.  
  3143. P.ABF:    .LONG   1000000                 ;                                              000F4240  00198
  3144. P.ABG:    .LONG   0                 ;                                              00000000  0019C
  3145.  
  3146.  
  3147.  
  3148.     .PSECT  $CODE$,NOWRT,2
  3149.  
  3150.     .ENTRY  IBM_WAIT, ^M<R2,R3,R4,R5,R6>     ;IBM_WAIT, Save R2,R3,R4,R5,R6        2147                    007C   00000
  3151.     MOVAB   G^U.49, R6             ;U.49, R6                                     56 00000000V  00  9E   00002
  3152.     MOVAB   G^SYS$CANTIM, R5         ;SYS$CANTIM, R5                                 55 00000000G  00  9E   00009
  3153.     MOVAB   G^SEND_TIMEOUT, R4         ;SEND_TIMEOUT, R4                                 54 00000000G  00  9E   00010
  3154.     MOVAB   G^U.29+4, R3             ;U.29+4, R3                                     53 00000000'  00  9E   00017
  3155.     SUBL2   #20, SP                 ;#20, SP                                     5E         14  C2   0001E
  3156.     PUSHL   #3                 ;#3                       2197                  03  DD   00021
  3157.     CALLS   #1, G^SYS$CLREF             ;#1, SYS$CLREF                          00000000G  00         01  FB   00023
  3158.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   0002A
  3159.     TSTL    (R4)                 ;SEND_TIMEOUT                   2199                  64  D5   0002D
  3160.     BLEQ    1$                 ;1$                                               58  15   0002F
  3161.     MOVQ    #3, -(SP)             ;#3, -(SP)                   2202            7E         03  7D   00031
  3162.     CALLS   #2, (R5)             ;#2, SYS$CANTIM                                 65         02  FB   00034
  3163.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   00037
  3164.     PUSHAB  4(SP)                 ;TIMER_VALUE                   2203             04   AE  9F   0003A
  3165.     CALLS   #1, G^SYS$GETTIM         ;#1, SYS$GETTIM                      00000000G  00         01  FB   0003D
  3166.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   00044
  3167.     PUSHAB  12(SP)                 ;QWORD_TIMEOUT                   2204             0C   AE  9F   00047
  3168.     PUSHAB  G^P.ABG                 ;P.ABG                                        00000000'  00  9F   0004A
  3169.     PUSHAB  G^P.ABF                 ;P.ABF                                        00000000'  00  9F   00050
  3170.     PUSHL   R4                 ;R4                                               54  DD   00056
  3171.     CALLS   #4, G^LIB$EMUL             ;#4, LIB$EMUL                          00000000G  00         04  FB   00058
  3172.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   0005F
  3173.     PUSHAB  12(SP)                 ;QWORD_TIMEOUT                   2205             0C   AE  9F   00062
  3174.     PUSHAB  16(SP)                 ;QWORD_TIMEOUT                                      10   AE  9F   00065
  3175.     PUSHAB  12(SP)                 ;TIMER_VALUE                                      0C   AE  9F   00068
  3176.     CALLS   #3, G^LIB$ADDX             ;#3, LIB$ADDX                          00000000G  00         03  FB   0006B
  3177.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   00072
  3178.     MOVQ    #3, -(SP)             ;#3, -(SP)                   2206            7E         03  7D   00075
  3179.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00078
  3180.     PUSHAB  24(SP)                 ;QWORD_TIMEOUT                                      18   AE  9F   0007A
  3181.     PUSHL   #3                 ;#3                                               03  DD   0007D
  3182.     CALLS   #5, G^SYS$SETIMR         ;#5, SYS$SETIMR                      00000000G  00         05  FB   0007F
  3183.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   00086
  3184. 1$:    PUSHL   #12                 ;#12                       2220                  0C  DD   00089
  3185.     PUSHL   #2                 ;#2                                               02  DD   0008B
  3186.     CALLS   #2, G^SYS$WFLOR             ;#2, SYS$WFLOR                          00000000G  00         02  FB   0008D
  3187.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   00094
  3188.     PUSHL   SP                 ;SP                       2221                  5E  DD   00097
  3189.     PUSHL   #2                 ;#2                                               02  DD   00099
  3190.     CALLS   #2, G^SYS$READEF         ;#2, SYS$READEF                      00000000G  00         02  FB   0009B
  3191.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   000A2
  3192.     BBC     #2, (SP), 7$             ;#2, CUR_EFN, 7$               2227            6E         02  E1   000A5
  3193.                          ;                                         61       000A8
  3194.     MOVZWL  -4(R3), R0             ;IO_STATUS, R0                   2234            50    FC   A3  3C   000A9
  3195.     BLBS    R0, 2$                 ;R0, 2$                                     04         50  E8   000AD
  3196.     PUSHL   R0                 ;R0                       2237                  50  DD   000B0
  3197.     BRB     6$                 ;6$                                               47  11   000B2
  3198. 2$:    BLBC    G^CONNECT_FLAG, 3$         ;CONNECT_FLAG, 3$               2246            1F 00000000G  00  E9   000B4
  3199.     CMPW    (R3), #25             ;IO_STATUS+4, #25               2249            19         63  B1   000BB
  3200.     BNEQ    3$                 ;3$                                               1A  12   000BE
  3201.     CMPL    G^RCV_EOL, #25             ;RCV_EOL, #25                                     19 00000000G  00  D1   000C0
  3202.     BEQL    3$                 ;3$                                               11  13   000C7
  3203.     MOVQ    #3, -(SP)             ;#3, -(SP)                   2252            7E         03  7D   000C9
  3204.     CALLS   #2, (R5)             ;#2, SYS$CANTIM                                 65         02  FB   000CC
  3205.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   000CF
  3206.     MOVL    #134316258, R0             ;#134316258, R0               2253            50 080180E2   8F  D0   000D2
  3207.     RET                      ;                                               04   000D9
  3208. 3$:    CMPZV   #0, #16, (R3), G^IBM_CHAR     ;#0, #16, IO_STATUS+4, IBM_CHAR       2258            10         00  ED   000DA
  3209.                          ;                        00000000G  00         63       000DD
  3210.     BEQL    4$                 ;4$                                               0B  13   000E3
  3211.     CALLS   #0, (R6)             ;#0, DO_RECEIVE_QIO               2263            66         00  FB   000E5
  3212.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   000E8
  3213.     BLBS    R2, 1$                 ;STATUS, 1$                   2265            9B         52  E8   000EB
  3214.     BRB     5$                 ;5$                       2268                  09  11   000EE
  3215. 4$:    CALLS   #0, (R6)             ;#0, DO_RECEIVE_QIO               2278            66         00  FB   000F0
  3216.     MOVL    R0, R2                 ;R0, STATUS                                     52         50  D0   000F3
  3217.     BLBS    R2, 7$                 ;STATUS, 7$                   2280            11         52  E8   000F6
  3218. 5$:    PUSHL   R2                 ;STATUS                   2283                  52  DD   000F9
  3219. 6$:    CALLS   #1, G^LIB$SIGNAL         ;#1, LIB$SIGNAL                      00000000G  00         01  FB   000FB
  3220.     MOVL    #134316266, R0             ;#134316266, R0               2284            50 080180EA   8F  D0   00102
  3221.     RET                      ;                                               04   00109
  3222. 7$:    MOVL    #134316043, R0             ;#134316043, R0               2287            50 0801800B   8F  D0   0010A
  3223.     RET                      ;                                               04   00111
  3224.  
  3225. ; Routine Size:  274 bytes,    Routine Base:  $CODE$ + 0B13
  3226.  
  3227.  
  3228. ;   2289  1     
  3229. ;   2290  1     %SBTTL 'GET_DEV_CHAR - Determine device characteristics'
  3230. ;   2291  1        ROUTINE GET_DEV_CHAR (LOG_NAME_DESC, PHYS_NAME_DESC, DEV_CLASS) =
  3231. ;   2292  1     
  3232. ;   2293  1    !++
  3233. ;   2294  1    ! FUNCTIONAL DESCRIPTION:
  3234. ;   2295  1    !
  3235. ;   2296  1    ! This routine will get the device characteristics from VMS.  It returns
  3236. ;   2297  1    ! both the physical name of the device and the device class.
  3237. ;   2298  1    !
  3238. ;   2299  1    ! CALLING SEQUENCE:
  3239. ;   2300  1    !
  3240. ;   2301  1    !    STATUS = GET_DEV_CHAR (LOG_NAME_DESC, PHYS_NAME_DESC, DEV_CLASS);
  3241. ;   2302  1    !
  3242. ;   2303  1    ! INPUT PARAMETERS:
  3243. ;   2304  1    !
  3244. ;   2305  1    !    LOG_NAME_DESC - Descriptor for logical device for which the device
  3245. ;   2306  1    !            class is desired.
  3246. ;   2307  1    !
  3247. ;   2308  1    ! IMPLICIT INPUTS:
  3248. ;   2309  1    !
  3249. ;   2310  1    !    None.
  3250. ;   2311  1    !
  3251. ;   2312  1    ! OUPTUT PARAMETERS:
  3252. ;   2313  1    !
  3253. ;   2314  1    !    PHYS_NAME_DESC - Descriptor for physical device name
  3254. ;   2315  1    !    DEV_CLASS - Device class for device
  3255. ;   2316  1    !
  3256. ;   2317  1    ! IMPLICIT OUTPUTS:
  3257. ;   2318  1    !
  3258. ;   2319  1    !    None.
  3259. ;   2320  1    !
  3260. ;   2321  1    ! COMPLETION CODES/RETURN VALUE:
  3261. ;   2322  1    !
  3262. ;   2323  1    !    Status value returned from $GETDVI if it fails,
  3263. ;   2324  1    !        KER_NORMAL otherwise.
  3264. ;   2325  1    !
  3265. ;   2326  1    ! SIDE EFFECTS:
  3266. ;   2327  1    !
  3267. ;   2328  1    !    None.
  3268. ;   2329  1    !
  3269. ;   2330  1    !--
  3270. ;   2331  1     
  3271. ;   2332  2        BEGIN
  3272. ;   2333  2     
  3273. ;   2334  2        MAP
  3274. ;   2335  2        PHYS_NAME_DESC : REF BLOCK [8, BYTE];    ! Physical name descriptor
  3275. ;   2336  2     
  3276. ;   2337  2        LOCAL
  3277. ;   2338  2        ITMLST : ITEM_LIST [2] FIELD (ITEM_FIELDS),
  3278. ;   2339  2        PHYS_NAME_LENGTH : VOLATILE,
  3279. ;   2340  2        STATUS;
  3280. ;   2341  2     
  3281. ;   2342  2    !
  3282. ;   2343  2    ! Set up item list for device class
  3283. ;   2344  2    !
  3284. ;   2345  2        ITMLST [0, ITEM_ITEM_CODE] = DVI$_DEVCLASS;
  3285. ;   2346  2        ITMLST [0, ITEM_BFR_LENGTH] = 4;        ! 4 byte result
  3286. ;   2347  2        ITMLST [0, ITEM_BFR_ADDRESS] = .DEV_CLASS;    ! Where to return result
  3287. ;   2348  2        ITMLST [0, ITEM_RTN_LENGTH] = 0;        ! We know how long it is
  3288. ;   2349  2    !
  3289. ;   2350  2    ! Item list entry for device name
  3290. ;   2351  2    !
  3291. ;   2352  2        ITMLST [1, ITEM_ITEM_CODE] = DVI$_DEVNAM;    ! Want the name of the device
  3292. ;   2353  2        ITMLST [1, ITEM_BFR_LENGTH] = .PHYS_NAME_DESC [DSC$W_LENGTH];    ! Max length to return
  3293. ;   2354  2        ITMLST [1, ITEM_BFR_ADDRESS] = .PHYS_NAME_DESC [DSC$A_POINTER];    ! Where to return name
  3294. ;   2355  2        ITMLST [1, ITEM_RTN_LENGTH] = PHYS_NAME_LENGTH;    ! Where to return length
  3295. ;   2356  2    !
  3296. ;   2357  2    ! End the list of items
  3297. ;   2358  2    !
  3298. ;   2359  2        ITMLST [2, ITEM_ITEM_CODE] = 0;
  3299. ;   2360  2        ITMLST [2, ITEM_BFR_LENGTH] = 0;
  3300. ;   2361  2    !
  3301. ;   2362  2    ! Request the information
  3302. ;   2363  2    !
  3303. ;   2364  2        STATUS = $GETDVIW (EFN = GET_DEV_EFN, DEVNAM = .LOG_NAME_DESC, ITMLST = ITMLST);
  3304. ;   2365  2     
  3305. ;   2366  2        IF NOT .STATUS THEN RETURN .STATUS;
  3306. ;   2367  2    !
  3307. ;   2368  2    ! Assign the length and return happy
  3308. ;   2369  2    !
  3309. ;   2370  2        PHYS_NAME_DESC [DSC$W_LENGTH] = .PHYS_NAME_LENGTH;
  3310. ;   2371  2        RETURN KER_NORMAL;
  3311. ;   2372  1        END;                    ! End of GET_DEV_CHAR
  3312.  
  3313.  
  3314.  
  3315.     .EXTRN  SYS$GETDVIW
  3316.  
  3317. ;GET_DEV_CHAR
  3318. U.44:    .WORD   ^M<R2>                 ;Save R2                   2291                    0004   00000
  3319.     SUBL2   #40, SP                 ;#40, SP                                     5E         28  C2   00002
  3320.     MOVL    #262148, 4(SP)             ;#262148, ITMLST               2346       04   AE 00040004   8F  D0   00005
  3321.     MOVL    12(AP), 8(SP)             ;DEV_CLASS, ITMLST+4               2347       08   AE    0C   AC  D0   0000D
  3322.     CLRL    12(SP)                 ;ITMLST+8                   2348             0C   AE  D4   00012
  3323.     MOVW    #32, 18(SP)             ;#32, ITMLST+14               2352       12   AE         20  B0   00015
  3324.     MOVL    8(AP), R2             ;PHYS_NAME_DESC, R2               2353            52    08   AC  D0   00019
  3325.     MOVW    (R2), 16(SP)             ;(R2), ITMLST+12                            10   AE         62  B0   0001D
  3326.     MOVL    4(R2), 20(SP)             ;4(R2), ITMLST+16               2354       14   AE    04   A2  D0   00021
  3327.     MOVAB   (SP), 24(SP)             ;PHYS_NAME_LENGTH, ITMLST+20           2355       18   AE         6E  9E   00026
  3328.     CLRL    28(SP)                 ;ITMLST+24                   2360             1C   AE  D4   0002A
  3329.     CLRQ    -(SP)                 ;-(SP)                       2364                  7E  7C   0002D
  3330.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0002F
  3331.     PUSHAB  20(SP)                 ;ITMLST                                      14   AE  9F   00031
  3332.     PUSHL   4(AP)                 ;LOG_NAME_DESC                                      04   AC  DD   00034
  3333.     MOVQ    #7, -(SP)             ;#7, -(SP)                                     7E         07  7D   00037
  3334.     CALLS   #8, G^SYS$GETDVIW         ;#8, SYS$GETDVIW                      00000000G  00         08  FB   0003A
  3335.     BLBC    R0, 1$                 ;STATUS, 1$                   2366            0A         50  E9   00041
  3336.     MOVW    (SP), (R2)             ;PHYS_NAME_LENGTH, (R2)           2370            62         6E  B0   00044
  3337.     MOVL    #134316043, R0             ;#134316043, R0               2371            50 0801800B   8F  D0   00047
  3338. 1$:    RET                      ;                                               04   0004E
  3339.  
  3340. ; Routine Size:  79 bytes,    Routine Base:  $CODE$ + 0C25
  3341.  
  3342.  
  3343. ;   2373  1     %SBTTL 'Term_Hangup'
  3344. ;   2374  1    global ROUTINE Term_Hangup : NOVALUE =
  3345. ;   2375  1    
  3346. ;   2376  1    !++
  3347. ;   2377  1    ! FUNCTIONAL DESCRIPTION:
  3348. ;   2378  1    !
  3349. ;   2379  1    ! This routine puts a read-attention AST on the mailbox associated with
  3350. ;   2380  1    ! TERM_DESC - the port being used for external communications.  The
  3351. ;   2381  1    ! mailbox will receive 3 types of messages: Unsolicited data, Terminal
  3352. ;   2382  1    ! hangup, and Broadcast messages.  Only Terminal hangup messages are of
  3353. ;   2383  1    ! interest here.
  3354. ;   2384  1    !
  3355. ;   2385  1    !
  3356. ;   2386  1    ! CALLING SEQUENCE:
  3357. ;   2387  1    !
  3358. ;   2388  1    !    TERM_HANGUP();
  3359. ;   2389  1    !
  3360. ;   2390  1    ! INPUT PARAMETERS:
  3361. ;   2391  1    !
  3362. ;   2392  1    !    None.
  3363. ;   2393  1    !
  3364. ;   2394  1    ! IMPLICIT INPUTS:
  3365. ;   2395  1    !
  3366. ;   2396  1    !    MBX_CHAN - The channel to the mailbox associated with TERM_DESC.
  3367. ;   2397  1    !
  3368. ;   2398  1    ! OUPTUT PARAMETERS:
  3369. ;   2399  1    !
  3370. ;   2400  1    !    None.
  3371. ;   2401  1    !
  3372. ;   2402  1    ! IMPLICIT OUTPUTS:
  3373. ;   2403  1    !
  3374. ;   2404  1    !    None.
  3375. ;   2405  1    !
  3376. ;   2406  1    ! COMPLETION CODES:
  3377. ;   2407  1    !
  3378. ;   2408  1    !    Return status from $QIOW
  3379. ;   2409  1    !
  3380. ;   2410  1    ! SIDE EFFECTS:
  3381. ;   2411  1    !
  3382. ;   2412  1    !    A write-attention AST is queued to the mailbox.  The ast routine
  3383. ;   2413  1    !    MBX_AST_RTN will be called if a message is written to the mailbox.
  3384. ;   2414  1    !
  3385. ;   2415  1    !--
  3386. ;   2416  1    
  3387. ;   2417  2        BEGIN
  3388. ;   2418  2    
  3389. ;   2419  2        LOCAL
  3390. ;   2420  2            Function,
  3391. ;   2421  2            Iosb : VECTOR [4, WORD],    ! I/O status block.
  3392. ;   2422  2        Sts;
  3393. ;   2423  2    
  3394. ;   2424  2        Function = IO$_SETMODE + IO$M_WRTATTN;
  3395. ; P 2425  2        Sts = $QIOW(CHAN = .Mbx_Chan,
  3396. ; P 2426  2                    FUNC = .Function,
  3397. ; P 2427  2                    IOSB = Iosb,
  3398. ;   2428  2                    P1 = Mbx_Ast_Rtn);
  3399. ;   2429  2    
  3400. ;   2430  2        IF .sts THEN sts = .Iosb[0];
  3401. ;   2431  2        IF NOT .sts THEN LIB$SIGNAL(.Sts);
  3402. ;   2432  2    
  3403. ;   2433  1        END;
  3404.  
  3405.  
  3406.  
  3407.  
  3408.  
  3409. U.45:
  3410.     .ENTRY  TERM_HANGUP, ^M<>         ;TERM_HANGUP, Save nothing           2374                    0000   00000
  3411.     SUBL2   #8, SP                 ;#8, SP                                     5E         08  C2   00002
  3412.     MOVZWL  #291, R0             ;#291, FUNCTION               2424            50     0123   8F  3C   00005
  3413.     CLRQ    -(SP)                 ;-(SP)                       2428                  7E  7C   0000A
  3414.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0000C
  3415.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   0000E
  3416.     PUSHAB  G^U.46                 ;U.46                                        00000000V  00  9F   00010
  3417.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00016
  3418.     PUSHAB  32(SP)                 ;IOSB                                          20   AE  9F   00018
  3419.     PUSHL   R0                 ;FUNCTION                                           50  DD   0001B
  3420.     PUSHL   G^U.5                 ;U.5                                        00000000'  00  DD   0001D
  3421.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00023
  3422.     CALLS   #12, G^SYS$QIOW             ;#12, SYS$QIOW                          00000000G  00         0C  FB   00025
  3423.     BLBC    R0, 1$                 ;STS, 1$                   2430            06         50  E9   0002C
  3424.     MOVZWL  (SP), R0             ;IOSB, STS                                     50         6E  3C   0002F
  3425.     BLBS    R0, 2$                 ;STS, 2$                   2431            09         50  E8   00032
  3426. 1$:    PUSHL   R0                 ;STS                                               50  DD   00035
  3427.     CALLS   #1, G^LIB$SIGNAL         ;#1, LIB$SIGNAL                      00000000G  00         01  FB   00037
  3428. 2$:    RET                      ;                       2433                  04   0003E
  3429.  
  3430. ; Routine Size:  63 bytes,    Routine Base:  $CODE$ + 0C74
  3431.  
  3432.  
  3433. ;   2434  1     %SBTTL 'Mbx_Ast_Rtn'
  3434. ;   2435  1    ROUTINE Mbx_Ast_Rtn : NOVALUE =
  3435. ;   2436  1     
  3436. ;   2437  1    !++
  3437. ;   2438  1    ! FUNCTIONAL DESCRIPTION:
  3438. ;   2439  1    !
  3439. ;   2440  1    !    This routine is called at AST level whenever a mailbox message
  3440. ;   2441  1    !    arrives in the mailbox associated with TERM_DESC.  If the message
  3441. ;   2442  1    !    is a hangup notification the user will be 1) notified his outgoing
  3442. ;   2443  1    !    connection is no longer present (technically there is no longer
  3443. ;   2444  1    !    a channel to the device represented in TERM_DESC) and 2) 
  3444. ;   2445  1    !
  3445. ;   2446  1    ! CALLING SEQUENCE:
  3446. ;   2447  1    !
  3447. ;   2448  1    !    MBX_AST_RTN();
  3448. ;   2449  1    !
  3449. ;   2450  1    ! INPUT PARAMETERS:
  3450. ;   2451  1    !
  3451. ;   2452  1    !       None.
  3452. ;   2453  1    !
  3453. ;   2454  1    ! IMPLICIT INPUTS:
  3454. ;   2455  1    !
  3455. ;   2456  1    !    TERM_DESC
  3456. ;   2457  1    !    MBX_CHAN - The channel to the mailbox associated with TERM_DESC.
  3457. ;   2458  1    !
  3458. ;   2459  1    ! OUTPUT PARAMETERS:
  3459. ;   2460  1    !
  3460. ;   2461  1    !    None.
  3461. ;   2462  1    !
  3462. ;   2463  1    ! IMPLICIT OUTPUTS:
  3463. ;   2464  1    !
  3464. ;   2465  1    !    MBX_CHAN
  3465. ;   2466  1    !
  3466. ;   2467  1    ! COMPLETION CODES:
  3467. ;   2468  1    !
  3468. ;   2469  1    !    SS$_NORMAL or error condition.
  3469. ;   2470  1    !
  3470. ;   2471  1    ! SIDE EFFECTS:
  3471. ;   2472  1    !
  3472. ;   2473  1    !    A message may be output to the user if his outgoing session is
  3473. ;   2474  1    !    no longer valid.
  3474. ;   2475  1    !
  3475. ;   2476  1    !--
  3476. ;   2477  1    
  3477. ;   2478  2        BEGIN
  3478. ;   2479  2    
  3479. ;   2480  2        LOCAL
  3480. ;   2481  2            Function,
  3481. ;   2482  2            Iosb : VECTOR [4, WORD],
  3482. ;   2483  2            Mbx_Msg : VECTOR [124, BYTE],
  3483. ;   2484  2            Sts;
  3484. ;   2485  2    
  3485. ;   2486  2    
  3486. ;   2487  2        Function = IO$_READVBLK;
  3487. ;   2488  2    
  3488. ; P 2489  2        Sts = $QIOW(CHAN = .Mbx_Chan,
  3489. ; P 2490  2                    FUNC = .Function,
  3490. ; P 2491  2                    IOSB = Iosb,
  3491. ; P 2492  2                    P1 = Mbx_Msg,
  3492. ;   2493  2                    P2 = 100);
  3493. ;   2494  2    
  3494. ;   2495  2        IF .Sts THEN Sts = .Iosb[0];
  3495. ;   2496  2        IF NOT .sts THEN LIB$SIGNAL(.Sts);
  3496. ;   2497  2    
  3497. ;   2498  2        IF .Mbx_Msg<0,16> EQL MSG$_TRMHANGUP
  3498. ;   2499  2        THEN
  3499. ;   2500  3            BEGIN
  3500. ;   2501  3    !        asn_wth_mbx(term_desc, %REF(100), %REF(100), term_chan, mbx_chan);
  3501. ;   2502  3            $DASSGN(CHAN = .mbx_chan);
  3502. ;   2503  3            mbx_chan = 0;
  3503. ;   2504  3            LIB$SIGNAL(SS$_HANGUP)
  3504. ;   2505  3            END
  3505. ;   2506  2        ELSE
  3506. ;   2507  2            Term_Hangup();
  3507. ;   2508  2    
  3508. ;   2509  1        END;
  3509.  
  3510.  
  3511.  
  3512.  
  3513.  
  3514. ;MBX_AST_RTN
  3515. U.46:    .WORD   ^M<R2,R3>             ;Save R2,R3                   2435                    000C   00000
  3516.     MOVAB   G^LIB$SIGNAL, R3         ;LIB$SIGNAL, R3                                 53 00000000G  00  9E   00002
  3517.     MOVAB   G^U.5, R2             ;U.5, R2                                     52 00000000'  00  9E   00009
  3518.     MOVAB   -132(SP), SP             ;-132(SP), SP                                     5E     FF7C   CE  9E   00010
  3519.     MOVL    #49, R0                 ;#49, FUNCTION                   2487            50         31  D0   00015
  3520.     CLRQ    -(SP)                 ;-(SP)                       2493                  7E  7C   00018
  3521.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0001A
  3522.     MOVZBL  #100, -(SP)             ;#100, -(SP)                                     7E    64   8F  9A   0001C
  3523.     PUSHAB  20(SP)                 ;MBX_MSG                                      14   AE  9F   00020
  3524.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00023
  3525.     PUSHAB  -8(FP)                 ;IOSB                                          F8   AD  9F   00025
  3526.     PUSHL   R0                 ;FUNCTION                                           50  DD   00028
  3527.     PUSHL   (R2)                 ;MBX_CHAN                                           62  DD   0002A
  3528.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   0002C
  3529.     CALLS   #12, G^SYS$QIOW             ;#12, SYS$QIOW                          00000000G  00         0C  FB   0002E
  3530.     BLBC    R0, 1$                 ;STS, 1$                   2495            07         50  E9   00035
  3531.     MOVZWL  124(SP), R0             ;IOSB, STS                                     50    7C   AE  3C   00038
  3532.     BLBS    R0, 2$                 ;STS, 2$                   2496            05         50  E8   0003C
  3533. 1$:    PUSHL   R0                 ;STS                                               50  DD   0003F
  3534.     CALLS   #1, (R3)             ;#1, LIB$SIGNAL                                 63         01  FB   00041
  3535. 2$:    CMPW    (SP), #6             ;MBX_MSG, #6                   2498            06         6E  B1   00044
  3536.     BNEQ    3$                 ;3$                                               14  12   00047
  3537.     PUSHL   (R2)                 ;MBX_CHAN                   2502                  62  DD   00049
  3538.     CALLS   #1, G^SYS$DASSGN         ;#1, SYS$DASSGN                      00000000G  00         01  FB   0004B
  3539.     CLRL    (R2)                 ;MBX_CHAN                   2503                  62  D4   00052
  3540.     MOVZWL  #716, -(SP)             ;#716, -(SP)                   2504            7E     02CC   8F  3C   00054
  3541.     CALLS   #1, (R3)             ;#1, LIB$SIGNAL                                 63         01  FB   00059
  3542.     RET                      ;                                               04   0005C
  3543. 3$:    CALLS   #0, W^U.45             ;#0, U.45                   2507     FF5F   CF         00  FB   0005D
  3544.     RET                      ;                       2509                  04   00062
  3545.  
  3546. ; Routine Size:  99 bytes,    Routine Base:  $CODE$ + 0CB3
  3547.  
  3548.  
  3549. ;   2510  1    
  3550. ;   2511  1     %SBTTL 'Send_Break_TTY'
  3551. ;   2512  1    GLOBAL ROUTINE Send_Break_TTY =
  3552. ;   2513  1    
  3553. ;   2514  1    !++
  3554. ;   2515  1    ! FUNCTIONAL DESCRIPTION:
  3555. ;   2516  1    !
  3556. ;   2517  1    ! This routine sends a break to the user's current terminal line.
  3557. ;   2518  1    !
  3558. ;   2519  1    !
  3559. ;   2520  1    ! CALLING SEQUENCE:
  3560. ;   2521  1    !
  3561. ;   2522  1    !    STATUS = Send_Break_TTY ();
  3562. ;   2523  1    !
  3563. ;   2524  1    ! INPUT PARAMETERS:
  3564. ;   2525  1    !
  3565. ;   2526  1    !    None.
  3566. ;   2527  1    !
  3567. ;   2528  1    ! IMPLICIT INPUTS:
  3568. ;   2529  1    !
  3569. ;   2530  1    !    Term_Desc - The current outgoing terminal line.
  3570. ;   2531  1    !
  3571. ;   2532  1    ! OUPTUT PARAMETERS:
  3572. ;   2533  1    !
  3573. ;   2534  1    !    None.
  3574. ;   2535  1    !
  3575. ;   2536  1    ! IMPLICIT OUTPUTS:
  3576. ;   2537  1    !
  3577. ;   2538  1    !    None.
  3578. ;   2539  1    !
  3579. ;   2540  1    ! COMPLETION CODES:
  3580. ;   2541  1    !
  3581. ;   2542  1    !    Return status from $QIOW
  3582. ;   2543  1    !
  3583. ;   2544  1    ! SIDE EFFECTS:
  3584. ;   2545  1    !
  3585. ;   2546  1    !    A break is sent to the user's outgoing terminal line.
  3586. ;   2547  1    !
  3587. ;   2548  1    !--
  3588. ;   2549  1    
  3589. ;   2550  2        BEGIN
  3590. ;   2551  2    
  3591. ;   2552  2        LOCAL
  3592. ;   2553  2            Char : VECTOR [2],        ! Terminal characteristics.
  3593. ;   2554  2            Iosb : VECTOR [4, WORD],    ! I/O status block.
  3594. ;   2555  2            Parity_Flags,
  3595. ;   2556  2            Sts;
  3596. ;   2557  2    
  3597. ; P 2558  2        Sts = $QIOW(CHAN = .Term_Chan,
  3598. ; P 2559  2                    FUNC = IO$_SENSEMODE,
  3599. ; P 2560  2                    IOSB = Iosb,
  3600. ;   2561  2                    P1 = Char);
  3601. ;   2562  2        IF .Sts THEN Sts = .Iosb [0];
  3602. ;   2563  2        IF NOT .Sts THEN RETURN .Sts;
  3603. ;   2564  2    
  3604. ;   2565  2        Parity_Flags<4,16> = .Iosb [3];
  3605. ;   2566  2    
  3606. ; P 2567  2        Sts = $QIOW(CHAN = .Term_Chan,
  3607. ; P 2568  2                    FUNC = IO$_SETMODE,
  3608. ; P 2569  2                    IOSB = Iosb,
  3609. ; P 2570  2                    P1 = Char,
  3610. ;   2571  2                    P5 = (.Parity_Flags OR TT$M_BREAK));
  3611. ;   2572  2        IF .Sts THEN Sts = .Iosb [0];
  3612. ;   2573  2        IF NOT .Sts THEN RETURN .Sts;
  3613. ;   2574  2    
  3614. ;   2575  2        LIB$WAIT(%REF(%E'0.25'));
  3615. ;   2576  2    
  3616. ; P 2577  2        Sts = $QIOW(CHAN = .Term_Chan,
  3617. ; P 2578  2                    FUNC = IO$_SETMODE,
  3618. ; P 2579  2                    IOSB = Iosb,
  3619. ; P 2580  2                    P1 = Char,
  3620. ;   2581  2                    P5 = .Parity_Flags);
  3621. ;   2582  2        IF (.Sts) THEN Sts = .Iosb [0];
  3622. ;   2583  2    
  3623. ;   2584  2        Send_Break_TTY_Flag = 0;
  3624. ;   2585  2    
  3625. ;   2586  2        RETURN .Sts;
  3626. ;   2587  1        END;
  3627.  
  3628.  
  3629.  
  3630.  
  3631.  
  3632. U.48:
  3633.     .ENTRY  SEND_BREAK_TTY, ^M<R2,R3,R4,R5>  ;SEND_BREAK_TTY, Save R2,R3,R4,R5     2512                    003C   00000
  3634.     MOVAB   G^U.4, R5             ;U.4, R5                                     55 00000000'  00  9E   00002
  3635.     MOVAB   G^SYS$QIOW, R4             ;SYS$QIOW, R4                                     54 00000000G  00  9E   00009
  3636.     SUBL2   #20, SP                 ;#20, SP                                     5E         14  C2   00010
  3637.     CLRQ    -(SP)                 ;-(SP)                       2561                  7E  7C   00013
  3638.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00015
  3639.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00017
  3640.     PUSHAB  32(SP)                 ;CHAR                                          20   AE  9F   00019
  3641.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0001C
  3642.     PUSHAB  36(SP)                 ;IOSB                                          24   AE  9F   0001E
  3643.     PUSHL   #39                 ;#39                                               27  DD   00021
  3644.     PUSHL   (R5)                 ;TERM_CHAN                                           65  DD   00023
  3645.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00025
  3646.     CALLS   #12, (R4)             ;#12, SYS$QIOW                                     64         0C  FB   00027
  3647.     MOVL    R0, R2                 ;R0, STS                                     52         50  D0   0002A
  3648.     BLBC    R2, 2$                 ;STS, 2$                   2562            70         52  E9   0002D
  3649.     MOVZWL  4(SP), R2             ;IOSB, STS                                     52    04   AE  3C   00030
  3650.     BLBC    R2, 2$                 ;STS, 2$                   2563            69         52  E9   00034
  3651.     INSV    10(SP), #4, #16, R3         ;IOSB+6, #4, #16, PARITY_FLAGS        2565            04    0A   AE  F0   00037
  3652.                          ;                                   53         10       0003B
  3653.     CLRL    -(SP)                 ;-(SP)                       2571                  7E  D4   0003D
  3654.     BISL3   #2048, R3, -(SP)         ;#2048, PARITY_FLAGS, -(SP)                             53 00000800   8F  C9   0003F
  3655.                          ;                                         7E       00046
  3656.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00047
  3657.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00049
  3658.     PUSHAB  32(SP)                 ;CHAR                                          20   AE  9F   0004B
  3659.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0004E
  3660.     PUSHAB  36(SP)                 ;IOSB                                          24   AE  9F   00050
  3661.     PUSHL   #35                 ;#35                                               23  DD   00053
  3662.     PUSHL   (R5)                 ;TERM_CHAN                                           65  DD   00055
  3663.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00057
  3664.     CALLS   #12, (R4)             ;#12, SYS$QIOW                                     64         0C  FB   00059
  3665.     MOVL    R0, R2                 ;R0, STS                                     52         50  D0   0005C
  3666.     BLBC    R2, 2$                 ;STS, 2$                   2572            3E         52  E9   0005F
  3667.     MOVZWL  4(SP), R2             ;IOSB, STS                                     52    04   AE  3C   00062
  3668.     BLBC    R2, 2$                 ;STS, 2$                   2573            37         52  E9   00066
  3669.     MOVZWL  #16256, (SP)             ;#16256, (SP)                   2575            6E     3F80   8F  3C   00069
  3670.     PUSHL   SP                 ;SP                                               5E  DD   0006E
  3671.     CALLS   #1, G^LIB$WAIT             ;#1, LIB$WAIT                          00000000G  00         01  FB   00070
  3672.     CLRL    -(SP)                 ;-(SP)                       2581                  7E  D4   00077
  3673.     PUSHL   R3                 ;PARITY_FLAGS                                           53  DD   00079
  3674.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0007B
  3675.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   0007D
  3676.     PUSHAB  32(SP)                 ;CHAR                                          20   AE  9F   0007F
  3677.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00082
  3678.     PUSHAB  36(SP)                 ;IOSB                                          24   AE  9F   00084
  3679.     PUSHL   #35                 ;#35                                               23  DD   00087
  3680.     PUSHL   (R5)                 ;TERM_CHAN                                           65  DD   00089
  3681.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   0008B
  3682.     CALLS   #12, (R4)             ;#12, SYS$QIOW                                     64         0C  FB   0008D
  3683.     MOVL    R0, R2                 ;R0, STS                                     52         50  D0   00090
  3684.     BLBC    R2, 1$                 ;STS, 1$                   2582            04         52  E9   00093
  3685.     MOVZWL  4(SP), R2             ;IOSB, STS                                     52    04   AE  3C   00096
  3686. 1$:    CLRL    G^SEND_BREAK_TTY_FLAG         ;SEND_BREAK_TTY_FLAG               2584           00000000'  00  D4   0009A
  3687. 2$:    MOVL    R2, R0                 ;STS, R0                   2586            50         52  D0   000A0
  3688.     RET                      ;                                               04   000A3
  3689.  
  3690. ; Routine Size:  164 bytes,    Routine Base:  $CODE$ + 0D16
  3691.  
  3692.  
  3693. ;   2588  1     %SBTTL 'DO_RECEIVE_QIO'
  3694. ;   2589  1    ROUTINE DO_RECEIVE_QIO =
  3695. ;   2590  1     
  3696. ;   2591  1    !++
  3697. ;   2592  1    ! FUNCTIONAL DESCRIPTION:
  3698. ;   2593  1    !
  3699. ;   2594  1    ! This routine is called to perform a QIO input from the terminal.  This
  3700. ;   2595  1    ! ensures that there is usually a receive buffer pending.
  3701. ;   2596  1    !
  3702. ;   2597  1    ! CALLING SEQUENCE:
  3703. ;   2598  1    !
  3704. ;   2599  1    !    STATUS = DO_RECEIVE_QIO ();
  3705. ;   2600  1    !
  3706. ;   2601  1    ! INPUT PARAMETERS:
  3707. ;   2602  1    !
  3708. ;   2603  1    !    None.
  3709. ;   2604  1    !
  3710. ;   2605  1    ! IMPLICIT INPUTS:
  3711. ;   2606  1    !
  3712. ;   2607  1    !    RCV_EOL - Receive end-of-line character
  3713. ;   2608  1    !
  3714. ;   2609  1    ! OUPTUT PARAMETERS:
  3715. ;   2610  1    !
  3716. ;   2611  1    !    None.
  3717. ;   2612  1    !
  3718. ;   2613  1    ! IMPLICIT OUTPUTS:
  3719. ;   2614  1    !
  3720. ;   2615  1    !    IO_STATUS - IOSB for the QIO
  3721. ;   2616  1    !    RCV_BUFFER - Data input from terminal
  3722. ;   2617  1    !
  3723. ;   2618  1    ! COMPLETION CODES:
  3724. ;   2619  1    !
  3725. ;   2620  1    !    None.
  3726. ;   2621  1    !
  3727. ;   2622  1    ! SIDE EFFECTS:
  3728. ;   2623  1    !
  3729. ;   2624  1    !    TERM_EFN is set when I/O completes
  3730. ;   2625  1    !
  3731. ;   2626  1    !--
  3732. ;   2627  1     
  3733. ;   2628  2        BEGIN
  3734. ;   2629  2     
  3735. ;   2630  2        LOCAL
  3736. ;   2631  2        QIO_FUNC,
  3737. ;   2632  2        TERMINATOR : VECTOR [2, LONG],
  3738. ;   2633  2        STATUS;                    ! For status of QIO call
  3739. ;   2634  2     
  3740. ;   2635  2    !
  3741. ;   2636  2    ! Initialize the terminating characters for the QIO.  Only terminate
  3742. ;   2637  2    ! on the end-of-line character and a control-Y
  3743. ;   2638  2    !
  3744. ;   2639  2        TERMINATOR [0] = 0;
  3745. ;   2640  2        TERMINATOR [1] = 1^.RCV_EOL OR 1^CHR_CTL_Y;
  3746. ;   2641  2     
  3747. ;   2642  2        IF .IBM_CHAR GEQ 0 THEN TERMINATOR [1] = .TERMINATOR [1] OR 1^.IBM_CHAR;
  3748. ;   2643  2     
  3749. ;   2644  2                            ! Need IBM turnaround?
  3750. ;   2645  2    !
  3751. ;   2646  2    ! Initialize the QIO function
  3752. ;   2647  2    ! Always purge typeahead
  3753. ;   2648  2    !
  3754. ;   2649  2        QIO_FUNC = IO$_TTYREADALL OR IO$M_NOECHO OR IO$M_PURGE;
  3755. ; P 2650  2        RETURN $QIO (CHAN = .TERM_CHAN, EFN = TERM_EFN, FUNC = .QIO_FUNC, IOSB = IO_STATUS,
  3756. ;   2651  2            P1 = RECV_BUFFER, P2 = RECV_BUFF_SIZE, P4 = TERMINATOR);
  3757. ;   2652  1        END;                    ! End of DO_RECEIVE_QIO
  3758.  
  3759.  
  3760.  
  3761.     .EXTRN  SYS$QIO
  3762.  
  3763. ;DO_RECEIVE_QIO
  3764. U.49:    .WORD   ^M<R2>                 ;Save R2                   2589                    0004   00000
  3765.     MOVAB   G^U.30, R2             ;U.30, R2                                     52 00000000'  00  9E   00002
  3766.     SUBL2   #4, SP                 ;#4, SP                                     5E         04  C2   00009
  3767.     CLRL    -(SP)                 ;TERMINATOR                   2639                  7E  D4   0000C
  3768.     ASHL    G^RCV_EOL, #1, R0         ;RCV_EOL, #1, R0               2640            01 00000000G  00  78   0000E
  3769.                          ;                                         50       00015
  3770.     BISL3   #33554432, R0, 4(SP)         ;#33554432, R0, TERMINATOR+4                             50 02000000   8F  C9   00016
  3771.                          ;                                    04   AE       0001D
  3772.     MOVL    G^IBM_CHAR, R0             ;IBM_CHAR, R0                   2642            50 00000000G  00  D0   0001F
  3773.     BLSS    1$                 ;1$                                               08  19   00026
  3774.     ASHL    R0, #1, R0             ;R0, #1, R0                                     01         50  78   00028
  3775.                          ;                                         50       0002B
  3776.     BISL2   R0, 4(SP)             ;R0, TERMINATOR+4                            04   AE         50  C8   0002C
  3777. 1$:    MOVZWL  #2170, R0             ;#2170, QIO_FUNC               2649            50     087A   8F  3C   00030
  3778.     CLRQ    -(SP)                 ;-(SP)                       2651                  7E  7C   00035
  3779.     PUSHAB  8(SP)                 ;TERMINATOR                                      08   AE  9F   00037
  3780.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   0003A
  3781.     MOVZWL  #1022, -(SP)             ;#1022, -(SP)                                     7E     03FE   8F  3C   0003C
  3782.     PUSHL   R2                 ;R2                                               52  DD   00041
  3783.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00043
  3784.     PUSHAB  -8(R2)                 ;IO_STATUS                                      F8   A2  9F   00045
  3785.     PUSHL   R0                 ;QIO_FUNC                                           50  DD   00048
  3786.     PUSHL   -1912(R2)             ;TERM_CHAN                                        F888   C2  DD   0004A
  3787.     PUSHL   #2                 ;#2                                               02  DD   0004E
  3788.     CALLS   #12, G^SYS$QIO             ;#12, SYS$QIO                          00000000G  00         0C  FB   00050
  3789.     RET                      ;                       2650                  04   00057
  3790.  
  3791. ; Routine Size:  88 bytes,    Routine Base:  $CODE$ + 0DBA
  3792.  
  3793.  
  3794. ;   2653  1     %SBTTL 'DO_CONS_QIO'
  3795. ;   2654  1    ROUTINE DO_CONS_QIO =
  3796. ;   2655  1     
  3797. ;   2656  1    !++
  3798. ;   2657  1    ! FUNCTIONAL DESCRIPTION:
  3799. ;   2658  1    !
  3800. ;   2659  1    ! This routine is called to perform a QIO input from the terminal.  This
  3801. ;   2660  1    ! ensures that there is usually a receive buffer pending.
  3802. ;   2661  1    !
  3803. ;   2662  1    ! CALLING SEQUENCE:
  3804. ;   2663  1    !
  3805. ;   2664  1    !    STATUS = DO_CONS_QIO ();
  3806. ;   2665  1    !
  3807. ;   2666  1    ! INPUT PARAMETERS:
  3808. ;   2667  1    !
  3809. ;   2668  1    !    None.
  3810. ;   2669  1    !
  3811. ;   2670  1    ! IMPLICIT INPUTS:
  3812. ;   2671  1    !
  3813. ;   2672  1    !    RCV_EOL - Receive end-of-line character
  3814. ;   2673  1    !
  3815. ;   2674  1    ! OUPTUT PARAMETERS:
  3816. ;   2675  1    !
  3817. ;   2676  1    !    None.
  3818. ;   2677  1    !
  3819. ;   2678  1    ! IMPLICIT OUTPUTS:
  3820. ;   2679  1    !
  3821. ;   2680  1    !    IO_STATUS - IOSB for the QIO
  3822. ;   2681  1    !    RCV_BUFFER - Data input from terminal
  3823. ;   2682  1    !
  3824. ;   2683  1    ! COMPLETION CODES:
  3825. ;   2684  1    !
  3826. ;   2685  1    !    None.
  3827. ;   2686  1    !
  3828. ;   2687  1    ! SIDE EFFECTS:
  3829. ;   2688  1    !
  3830. ;   2689  1    !    TERM_EFN is set when I/O completes
  3831. ;   2690  1    !
  3832. ;   2691  1    !--
  3833. ;   2692  1     
  3834. ;   2693  2        BEGIN
  3835. ;   2694  2     
  3836. ;   2695  2        EXTERNAL
  3837. ;   2696  2        ABT_CUR_FILE,
  3838. ;   2697  2        ABT_ALL_FILE,
  3839. ;   2698  2        DEBUG_FLAG,
  3840. ;   2699  2        TYP_STS_FLAG;
  3841. ;   2700  2     
  3842. ;   2701  2        LOCAL
  3843. ;   2702  2        I,                    ! Random index variable
  3844. ;   2703  2        TERMINATOR : VECTOR [2, LONG],        ! Pointer at terminator mask
  3845. ;   2704  2        TERM_MASK : VECTOR [8, LONG],        ! Terminator mask
  3846. ;   2705  2        STATUS;                    ! For status of QIO call
  3847. ;   2706  2     
  3848. ;   2707  2        LITERAL
  3849. ;   2708  2        CONS_BUFF_SIZE = 1;
  3850. ;   2709  2     
  3851. ;   2710  2        OWN
  3852. ;   2711  2        CONS_STATUS : VECTOR [4, WORD],
  3853. ;   2712  2        CONS_BUFFER : VECTOR [CONS_BUFF_SIZE, BYTE];
  3854. ;   2713  2     
  3855. ;   2714  2    !
  3856. ;   2715  2    ! AST routine for console
  3857. ;   2716  2    !
  3858. ;   2717  2        ROUTINE CONS_AST (DUMMY) =
  3859. ;   2718  3        BEGIN
  3860. ;   2719  3     
  3861. ;   2720  3        IF .CONS_STATUS [0]
  3862. ;   2721  3        THEN
  3863. ;   2722  3     
  3864. ;   2723  3            SELECT .CONS_STATUS [2] OF
  3865. ;   2724  3            SET
  3866. ;   2725  3     
  3867. ;   2726  3            [CHR_CTL_Z] :
  3868. ;   2727  3                ABT_ALL_FILE = TRUE;
  3869. ;   2728  3     
  3870. ;   2729  3            [CHR_CTL_X] :
  3871. ;   2730  3                ABT_CUR_FILE = TRUE;
  3872. ;   2731  3     
  3873. ;   2732  3            [CHR_CTL_Y] :
  3874. ;   2733  3                RETURN SS$_NORMAL;
  3875. ;   2734  3     
  3876. ;   2735  3            [CHR_CTL_C] :
  3877. ;   2736  4                BEGIN
  3878. ;   2737  4                FORCE_TIMEOUT = TRUE;
  3879. ;   2738  4                FORCE_ABORT = TRUE;
  3880. ;   2739  3                END;
  3881. ;   2740  3     
  3882. ;   2741  3            [CHR_CTL_D] :
  3883. ;   2742  3                DEBUG_FLAG = NOT .DEBUG_FLAG;
  3884. ;   2743  3     
  3885. ;   2744  3            [CHR_CTL_A] :
  3886. ;   2745  3                TYP_STS_FLAG = TRUE;
  3887. ;   2746  3     
  3888. ;   2747  3            [CHR_CTL_M] :
  3889. ;   2748  3                FORCE_TIMEOUT = TRUE;
  3890. ;   2749  3     
  3891. ;   2750  3            [CHR_CTL_Z, CHR_CTL_X, CHR_CTL_A, CHR_CTL_M, CHR_CTL_C] :
  3892. ;   2751  3    ! Make sure what we did gets noticed, even if we are currently waiting
  3893. ;   2752  3    ! forever for input.
  3894. ;   2753  3     
  3895. ;   2754  3                IF .FORCE_TIMEOUT OR .SEND_TIMEOUT EQL 0 THEN $SETEF (EFN = TIME_EFN);
  3896. ;   2755  3     
  3897. ;   2756  3            TES;
  3898. ;   2757  3     
  3899. ;   2758  3        IF .CONS_STATUS [0] NEQ SS$_CANCEL AND .CONS_STATUS [0] NEQ SS$_ABORT
  3900. ;   2759  3        THEN
  3901. ;   2760  3            RETURN DO_CONS_QIO ()
  3902. ;   2761  3        ELSE
  3903. ;   2762  3            RETURN SS$_NORMAL;
  3904. ;   2763  3     
  3905. ;   2764  2        END;
  3906.  
  3907.  
  3908.  
  3909.     .PSECT  $OWN$,NOEXE,2
  3910.  
  3911. ;CONS_STATUS
  3912. U.75:    .BLKB   8                                       ;                      00BA8
  3913. ;CONS_BUFFER
  3914. U.76:    .BLKB   1                                       ;                      00BB0
  3915.  
  3916.     .EXTRN  ABT_CUR_FILE, ABT_ALL_FILE, DEBUG_FLAG, TYP_STS_FLAG, SYS$SETEF
  3917.  
  3918.     .PSECT  $CODE$,NOWRT,2
  3919.  
  3920. ;CONS_AST
  3921. U.77:    .WORD   ^M<R2,R3>             ;Save R2,R3                   2717                    000C   00000
  3922.     MOVAB   G^DEBUG_FLAG, R3         ;DEBUG_FLAG, R3                                 53 00000000G  00  9E   00002
  3923.     MOVAB   G^U.2, R2             ;U.2, R2                                     52 00000000'  00  9E   00009
  3924.     BLBC    2980(R2), 9$             ;CONS_STATUS, 9$               2720            77     0BA4   C2  E9   00010
  3925.     MOVZWL  2984(R2), R0             ;CONS_STATUS+4, R0               2723            50     0BA8   C2  3C   00015
  3926.     CMPW    R0, #26                 ;R0, #26                   2726            1A         50  B1   0001A
  3927.     BNEQ    1$                 ;1$                                               07  12   0001D
  3928.     MOVL    #1, G^ABT_ALL_FILE         ;#1, ABT_ALL_FILE               2727 00000000G  00         01  D0   0001F
  3929. 1$:    CMPW    R0, #24                 ;R0, #24                   2729            18         50  B1   00026
  3930.     BNEQ    2$                 ;2$                                               07  12   00029
  3931.     MOVL    #1, G^ABT_CUR_FILE         ;#1, ABT_CUR_FILE               2730 00000000G  00         01  D0   0002B
  3932. 2$:    CMPW    R0, #25                 ;R0, #25                   2732            19         50  B1   00032
  3933.     BEQL    10$                 ;10$                                               6E  13   00035
  3934.     CMPW    R0, #3                 ;R0, #3                   2735            03         50  B1   00037
  3935.     BNEQ    3$                 ;3$                                               07  12   0003A
  3936.     MOVL    #1, (R2)             ;#1, FORCE_TIMEOUT               2737            62         01  D0   0003C
  3937.     MOVL    #1, -4(R2)             ;#1, FORCE_ABORT               2738       FC   A2         01  D0   0003F
  3938. 3$:    CMPW    R0, #4                 ;R0, #4                   2741            04         50  B1   00043
  3939.     BNEQ    4$                 ;4$                                               03  12   00046
  3940.     MCOML   (R3), (R3)             ;DEBUG_FLAG, DEBUG_FLAG           2742            63         63  D2   00048
  3941. 4$:    CMPW    R0, #1                 ;R0, #1                   2744            01         50  B1   0004B
  3942.     BNEQ    5$                 ;5$                                               07  12   0004E
  3943.     MOVL    #1, G^TYP_STS_FLAG         ;#1, TYP_STS_FLAG               2745 00000000G  00         01  D0   00050
  3944. 5$:    CMPW    R0, #13                 ;R0, #13                   2747            0D         50  B1   00057
  3945.     BNEQ    6$                 ;6$                                               03  12   0005A
  3946.     MOVL    #1, (R2)             ;#1, FORCE_TIMEOUT               2748            62         01  D0   0005C
  3947. 6$:    CMPW    R0, #1                 ;R0, #1                   2750            01         50  B1   0005F
  3948.     BEQL    7$                 ;7$                                               14  13   00062
  3949.     CMPW    R0, #3                 ;R0, #3                                     03         50  B1   00064
  3950.     BEQL    7$                 ;7$                                               0F  13   00067
  3951.     CMPW    R0, #13                 ;R0, #13                                     0D         50  B1   00069
  3952.     BEQL    7$                 ;7$                                               0A  13   0006C
  3953.     CMPW    R0, #24                 ;R0, #24                                     18         50  B1   0006E
  3954.     BEQL    7$                 ;7$                                               05  13   00071
  3955.     CMPW    R0, #26                 ;R0, #26                                     1A         50  B1   00073
  3956.     BNEQ    9$                 ;9$                                               14  12   00076
  3957. 7$:    BLBS    (R2), 8$             ;FORCE_TIMEOUT, 8$               2754            08         62  E8   00078
  3958.     TSTL    G^SEND_TIMEOUT             ;SEND_TIMEOUT                                    00000000G  00  D5   0007B
  3959.     BNEQ    9$                 ;9$                                               09  12   00081
  3960. 8$:    PUSHL   #3                 ;#3                                               03  DD   00083
  3961.     CALLS   #1, G^SYS$SETEF             ;#1, SYS$SETEF                          00000000G  00         01  FB   00085
  3962. 9$:    MOVZWL  2980(R2), R0             ;CONS_STATUS, R0               2758            50     0BA4   C2  3C   0008C
  3963.     CMPW    R0, #2096             ;R0, #2096                              0830   8F         50  B1   00091
  3964.     BEQL    10$                 ;10$                                               0D  13   00096
  3965.     CMPW    R0, #44                 ;R0, #44                                     2C         50  B1   00098
  3966.     BEQL    10$                 ;10$                                               08  13   0009B
  3967.     CALLS   #0, G^U.50             ;#0, U.50                   2760 00000000V  00         00  FB   0009D
  3968.     RET                      ;                                               04   000A4
  3969. 10$:    MOVL    #1, R0                 ;#1, R0                   2762            50         01  D0   000A5
  3970.     RET                      ;                                               04   000A8
  3971.  
  3972. ; Routine Size:  169 bytes,    Routine Base:  $CODE$ + 0E12
  3973.  
  3974.  
  3975. ;   2765  2    !
  3976. ;   2766  2    ! Start of main portion of DO_CONS_QIO
  3977. ;   2767  2    !
  3978. ;   2768  2        TERMINATOR [0] = 32;            ! Length of terminator mask in bytes
  3979. ;   2769  2        TERMINATOR [1] = TERM_MASK;            ! Address of mask
  3980. ;   2770  2     
  3981. ;   2771  2        INCR I FROM 0 TO 7 DO
  3982. ;   2772  2        TERM_MASK [.I] = -1;            ! All characters are terminators
  3983. ;   2773  2     
  3984. ; P 2774  2        RETURN $QIO (CHAN = .CONS_CHAN, EFN = CONS_EFN, FUNC = IO$_TTYREADALL OR IO$M_NOECHO,
  3985. ; P 2775  2            IOSB = CONS_STATUS, ASTADR = CONS_AST, P1 = CONS_BUFFER, P2 = CONS_BUFF_SIZE,
  3986. ;   2776  2            P4 = TERMINATOR);
  3987. ;   2777  1        END;                    ! End of DO_CONS_QIO
  3988.  
  3989.  
  3990.  
  3991.  
  3992.  
  3993. ;DO_CONS_QIO
  3994. U.50:    .WORD   ^M<R2>                 ;Save R2                   2654                    0004   00000
  3995.     MOVAB   G^U.76, R2             ;U.76, R2                                     52 00000000'  00  9E   00002
  3996.     SUBL2   #40, SP                 ;#40, SP                                     5E         28  C2   00009
  3997.     MOVL    #32, 32(SP)             ;#32, TERMINATOR               2768       20   AE         20  D0   0000C
  3998.     MOVAB   (SP), 36(SP)             ;TERM_MASK, TERMINATOR+4           2769       24   AE         6E  9E   00010
  3999.     CLRL    R0                 ;I                       2771                  50  D4   00014
  4000. 1$:    MNEGL   #1, (SP)[R0]             ;#1, TERM_MASK[I]               2772          6E40         01  CE   00016
  4001.     AOBLEQ  #7, R0, 1$             ;#7, I, 1$                                     50         07  F3   0001A
  4002.                          ;                                         F8       0001D
  4003.     CLRQ    -(SP)                 ;-(SP)                       2776                  7E  7C   0001E
  4004.     PUSHAB  40(SP)                 ;TERMINATOR                                      28   AE  9F   00020
  4005.     MOVQ    #1, -(SP)             ;#1, -(SP)                                     7E         01  7D   00023
  4006.     PUSHL   R2                 ;R2                                               52  DD   00026
  4007.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00028
  4008.     PUSHAB  W^U.77                 ;U.77                                            FF29   CF  9F   0002A
  4009.     PUSHAB  -8(R2)                 ;CONS_STATUS                                      F8   A2  9F   0002E
  4010.     MOVZBL  #122, -(SP)             ;#122, -(SP)                                     7E    7A   8F  9A   00031
  4011.     PUSHL   -2968(R2)             ;CONS_CHAN                                        F468   C2  DD   00035
  4012.     PUSHL   #5                 ;#5                                               05  DD   00039
  4013.     CALLS   #12, G^SYS$QIO             ;#12, SYS$QIO                          00000000G  00         0C  FB   0003B
  4014.     RET                      ;                       2774                  04   00042
  4015.  
  4016. ; Routine Size:  67 bytes,    Routine Base:  $CODE$ + 0EBB
  4017.  
  4018.  
  4019. ;   2778  1     %SBTTL 'TERM_CONNECT'
  4020. ;   2779  1     
  4021. ;   2780  1    GLOBAL ROUTINE TERM_CONNECT =
  4022. ;   2781  1     
  4023. ;   2782  1    !++
  4024. ;   2783  1    ! FUNCTIONAL DESCRIPTION:
  4025. ;   2784  1    !
  4026. ;   2785  1    !    This routine TERM_CONNECT will enable two terminal-like devices,
  4027. ;   2786  1    !    MY_TERM and  TERM_NAME, to communicate with each other.  Anything
  4028. ;   2787  1    !    that the user types on his terminal, MYTERM, will be sent to the
  4029. ;   2788  1    !    other  device,  TERM_NAME,  over the terminal line  TERM_CHAN.
  4030. ;   2789  1    !    Anything that TERM_NAME cares to output will be sent to MYTERM.
  4031. ;   2790  1    !    The main routine TERM_CONNECT performs the initialization.  It
  4032. ;   2791  1    !    opens the input and output files and connects streams.
  4033. ;   2792  1    !
  4034. ;   2793  1    ! CALLING SEQUENCE:
  4035. ;   2794  1    !
  4036. ;   2795  1    !    TERM_CONNECT();
  4037. ;   2796  1    !
  4038. ;   2797  1    ! INPUT PARAMETERS:
  4039. ;   2798  1    !
  4040. ;   2799  1    !    None.
  4041. ;   2800  1    !
  4042. ;   2801  1    ! IMPLICIT INPUTS:
  4043. ;   2802  1    !
  4044. ;   2803  1    !    TERM_DESC - Descriptor of a vector of ASCII characters that represent
  4045. ;   2804  1    !    the name of the terminal to use.
  4046. ;   2805  1    !
  4047. ;   2806  1    ! OUTPUT PARAMETERS:
  4048. ;   2807  1    !
  4049. ;   2808  1    !    None.
  4050. ;   2809  1    !
  4051. ;   2810  1    ! IMPLICIT OUTPUTS:
  4052. ;   2811  1    !
  4053. ;   2812  1    !    TERM_CHAN - Channel number used by the terminal line to TERM_DESC.
  4054. ;   2813  1    !
  4055. ;   2814  1    ! COMPLETION CODES:
  4056. ;   2815  1    !
  4057. ;   2816  1    !    SS$_NORMAL or error condition.
  4058. ;   2817  1    !
  4059. ;   2818  1    ! SIDE EFFECTS:
  4060. ;   2819  1    !
  4061. ;   2820  1    !    None.
  4062. ;   2821  1    !
  4063. ;   2822  1    !--
  4064. ;   2823  1     
  4065. ;   2824  2        BEGIN
  4066. ;   2825  2     
  4067. ;   2826  2        EXTERNAL ROUTINE
  4068. ;   2827  2        LOG_OPEN,                ! Open log file
  4069. ;   2828  2        LOG_CLOSE;                ! Close log file
  4070. ;   2829  2     
  4071. ;   2830  2        LITERAL
  4072. ;   2831  2        OUT_BUFLEN = 80,            ! Max # of char. in output buffer
  4073. ;   2832  2        INP_BUFSIZ = 80,            ! Max # of char. in input buffer
  4074. ;   2833  2        NUM_OUT_BUF = 2,            ! # of output buffers per device
  4075. ;   2834  2        NUM_IN_BUF = 2,                ! # of input buffers per device
  4076. ;   2835  2        MYT = 0,                ! Device MY_TERM
  4077. ;   2836  2        TRM = 1,                ! Device TERM_NAME
  4078. ;   2837  2        OFFSET = 1,                ! IOSB : offset to terminator
  4079. ;   2838  2        EOFSIZ = 3,                ! IOSB : terminator size
  4080. ;   2839  2        T_EFN_DISP = NUM_OUT_BUF,
  4081. ;   2840  2        XITEFN = 2*NUM_OUT_BUF + 1,        ! Exit event flag number
  4082. ;   2841  2        EFN_MASK = (1^XITEFN - 1) AND ( NOT 1);    ! Mask of flags set by CONNECT
  4083. ;   2842  2     
  4084. ;   2843  2        STRUCTURE
  4085. ;   2844  2        IOSB_VECTOR [D, BUFNUM, INFO; NUMBUF] =
  4086. ;   2845  2            [NUMBUF*16]
  4087. ;   2846  2            (IOSB_VECTOR + (D*NUMBUF + BUFNUM)*8 + 2*INFO)<0, 16, 0>,
  4088. ;   2847  2        BUFFER_VECTOR [D, BUFNUM; NUMBUF, BUFSIZ] =
  4089. ;   2848  2            [NUMBUF*BUFSIZ*2 + NUMBUF]
  4090. ;   2849  2            (BUFFER_VECTOR + (D*NUMBUF + BUFNUM)*BUFSIZ + D);
  4091. ;   2850  2     
  4092. ;   2851  2        OWN
  4093. ;   2852  2        BTIMUP : VECTOR [4, WORD],        ! Time limit in binary format
  4094. ;   2853  2        CHANNEL : VECTOR [2, LONG],        ! Contains channel #s
  4095. ;   2854  2        CHR_COUNT : VECTOR [2, WORD] INITIAL (0),    ! # of char. in out buffer
  4096. ;   2855  2        ESC_FLG : INITIAL (FALSE),        ! Was last char. the ESCAPE_CHR
  4097. ;   2856  2        IN_IOSB : IOSB_VECTOR [NUM_IN_BUF],    ! IOSB status block
  4098. ;   2857  2        INP_BUF : BUFFER_VECTOR [NUM_IN_BUF, INP_BUFSIZ],    ! Input buffers
  4099. ;   2858  2        MSG : VECTOR [80, BYTE],        ! Combined escape message
  4100. ;   2859  2        MSG_DES : BLOCK [8, BYTE],        ! Descriptor for message
  4101. ;   2860  2        OUT_BUF : BUFFER_VECTOR [NUM_OUT_BUF, OUT_BUFLEN],    ! Output buffers
  4102. ;   2861  2        OUT_BUFNUM : VECTOR [2, BYTE],        ! Present output buffer
  4103. ;   2862  2        OUT_EFN : VECTOR [2, BYTE],        ! Present event flag #
  4104. ;   2863  2        OUT_PTR : VECTOR [2, LONG],        ! CS-pointer for output buffer
  4105. ;   2864  2        MYT_QIO_FUNC,                ! Function for QIO input for my terminal
  4106. ;   2865  2        ESC_CHR_LEN,                ! Length of escape character message
  4107. ;   2866  2        ESC_CHR_MSG : VECTOR [30, BYTE],    ! Escape character message
  4108. ;   2867  2        STATE;                    ! Used by $READEF to store state of EFs
  4109. ;   2868  2     
  4110. ;   2869  2        BIND
  4111. ;   2870  2        CON_MSG_1 = %ASCID'Connecting to ',
  4112. ;   2871  2        CON_MSG_2 = %ASCID'.  Type ',
  4113. ;   2872  2        CON_MSG_3 = %ASCID'C to return to VAX/VMS Kermit-32]',
  4114. ;   2873  2        CON_MSG_4 = %ASCID'Returning to VAX/VMS Kermit-32]';
  4115. ;   2874  2     
  4116. ;   2875  2        MAP
  4117. ;   2876  2        CON_MSG_1 : BLOCK [8, BYTE],
  4118. ;   2877  2        CON_MSG_2 : BLOCK [8, BYTE],
  4119. ;   2878  2        CON_MSG_3 : BLOCK [8, BYTE],
  4120. ;   2879  2        CON_MSG_4 : BLOCK [8, BYTE];
  4121. ;   2880  2     
  4122. ;   2881  2        BIND
  4123. ;   2882  2        ATIMUP = %ASCID'0 00:00:00.050',    ! Time to wait for more output
  4124. ;   2883  2        MYT_CHAN = CHANNEL [1],
  4125. ;   2884  2        MY_TERM = %ASCID'SYS$INPUT:';
  4126. ;   2885  2     
  4127. ;   2886  2        LABEL
  4128. ;   2887  2        CONN_STREAMS;
  4129. ;   2888  2     
  4130. ;   2889  2        LOCAL
  4131. ;   2890  2        CON_MSG : VECTOR [80, BYTE],
  4132. ;   2891  2        CON_MSG_DESC : BLOCK [8, BYTE],
  4133. ;   2892  2        STATUS;
  4134. ;   2893  2     
  4135. ;   2894  2     %SBTTL 'TERM_CONNECT -- TYPE_OUT_BUF'
  4136. ;   2895  2        ROUTINE TYPE_OUT_BUF (DEV) =
  4137. ;   2896  2     
  4138. ;   2897  2    !++
  4139. ;   2898  2    !    This routine send the contents of the output buffer to the other
  4140. ;   2899  2    !    device.   It also resets the  OUT_PTR  and the CHR_COUNT  and it
  4141. ;   2900  2    !    increments  OUT_EFN  and  OUT_BUFNUM.
  4142. ;   2901  2    !--
  4143. ;   2902  2     
  4144. ;   2903  3        BEGIN
  4145. ;   2904  3     
  4146. ;   2905  3        LOCAL
  4147. ;   2906  3            STATUS;
  4148. ;   2907  3     
  4149. ;   2908  3    !                Check to make sure exit flag not set before $QIO
  4150. ;   2909  3     
  4151. ;   2910  3        IF (STATUS = $READEF (EFN = XITEFN, STATE = STATE)) NEQ SS$_WASCLR
  4152. ;   2911  3        THEN
  4153. ;   2912  4            BEGIN
  4154. ;   2913  4            $SETEF (EFN = .OUT_EFN [.DEV]);
  4155. ;   2914  4            RETURN .STATUS;
  4156. ;   2915  3            END;
  4157. ;   2916  3     
  4158. ;   2917  3        $WAITFR (EFN = .OUT_EFN [.DEV]);
  4159. ;   2918  3        $CLREF (EFN = .OUT_EFN [.DEV]);
  4160. ;   2919  3     
  4161. ;   2920  3        IF $READEF (EFN = XITEFN, STATE = STATE) EQL SS$_WASCLR
  4162. ;   2921  3        THEN
  4163. ; P 2922  3            STATUS = $QIO (CHAN = .CHANNEL [.DEV], EFN = .OUT_EFN [.DEV],
  4164. ; P 2923  3            FUNC = IO$_WRITEVBLK OR IO$M_NOFORMAT, P1 = OUT_BUF [.DEV, .OUT_BUFNUM [.DEV]],
  4165. ;   2924  4            P2 = .CHR_COUNT [.DEV])
  4166. ;   2925  3        ELSE
  4167. ;   2926  4            BEGIN
  4168. ;   2927  4            $SETEF (EFN = .OUT_EFN [.DEV]);
  4169. ;   2928  4            RETURN .STATUS;
  4170. ;   2929  3            END;
  4171. ;   2930  3     
  4172. ;   2931  3        CHR_COUNT [.DEV] = 0;
  4173. ;   2932  3        OUT_EFN [.DEV] = .OUT_EFN [.DEV] + 1;
  4174. ;   2933  3     
  4175. ;   2934  3        IF (OUT_BUFNUM [.DEV] = .OUT_BUFNUM [.DEV] + 1) GEQ NUM_OUT_BUF
  4176. ;   2935  3        THEN
  4177. ;   2936  4            BEGIN
  4178. ;   2937  4            OUT_BUFNUM [.DEV] = 0;
  4179. ;   2938  4            OUT_EFN [.DEV] = .DEV*T_EFN_DISP + 1;
  4180. ;   2939  3            END;
  4181. ;   2940  3     
  4182. ;   2941  3        OUT_PTR [.DEV] = CH$PTR (OUT_BUF [.DEV, .OUT_BUFNUM [.DEV]]);
  4183. ;   2942  3     
  4184. ;   2943  3        IF NOT .STATUS
  4185. ;   2944  3        THEN
  4186. ;   2945  4            BEGIN
  4187. ;   2946  4            LIB$SIGNAL (.STATUS);
  4188. ;   2947  4            $SETEF (EFN = XITEFN);
  4189. ;   2948  3            END;
  4190. ;   2949  3     
  4191. ;   2950  3        RETURN .STATUS;
  4192. ;   2951  2        END;
  4193.  
  4194.  
  4195.  
  4196.     .PSECT  $OWN$,NOEXE,2
  4197.  
  4198.     .BLKB   3                                       ;                      00BB1
  4199. ;BTIMUP
  4200. U.79:    .BLKB   8                                       ;                      00BB4
  4201. ;CHANNEL
  4202. U.80:    .BLKB   8                                       ;                      00BBC
  4203. ;CHR_COUNT
  4204. U.81:    .LONG   0                 ;                                              00000000  00BC4
  4205. ;ESC_FLG
  4206. U.82:    .LONG   0                 ;                                              00000000  00BC8
  4207. ;IN_IOSB
  4208. U.83:    .BLKB   32                                       ;                      00BCC
  4209. ;INP_BUF
  4210. U.84:    .BLKB   322                                       ;                      00BEC
  4211.     .BLKB   2                                       ;                      00D2E
  4212. ;MSG
  4213. U.85:    .BLKB   80                                       ;                      00D30
  4214. ;MSG_DES
  4215. U.86:    .BLKB   8                                       ;                      00D80
  4216. ;OUT_BUF
  4217. U.87:    .BLKB   322                                       ;                      00D88
  4218.     .BLKB   2                                       ;                      00ECA
  4219. ;OUT_BUFNUM
  4220. U.88:    .BLKB   2                                       ;                      00ECC
  4221.     .BLKB   2                                       ;                      00ECE
  4222. ;OUT_EFN
  4223. U.89:    .BLKB   2                                       ;                      00ED0
  4224.     .BLKB   2                                       ;                      00ED2
  4225. ;OUT_PTR
  4226. U.90:    .BLKB   8                                       ;                      00ED4
  4227. ;MYT_QIO_FUNC
  4228. U.91:    .BLKB   4                                       ;                      00EDC
  4229. ;ESC_CHR_LEN
  4230. U.92:    .BLKB   4                                       ;                      00EE0
  4231. ;ESC_CHR_MSG
  4232. U.93:    .BLKB   30                                       ;                      00EE4
  4233.     .BLKB   2                                       ;                      00F02
  4234. ;STATE
  4235. U.94:    .BLKB   4                                       ;                      00F04
  4236.  
  4237.     .PSECT  $PLIT$,NOWRT,NOEXE,2
  4238.  
  4239. P.ABI:    .ASCII  \Connecting to \<0><0>         ;                                69  74  63  65  6E  6E  6F  43  001A0
  4240.                          ;                          00  00  20  6F  74  20  67  6E  001A8
  4241. P.ABH:    .LONG   17694734             ;                                              010E000E  001B0
  4242.     .ADDRESS P.ABI                 ;                                              00000000' 001B4
  4243. P.ABK:    .ASCII  \.  Type \             ;                                20  65  70  79  54  20  20  2E  001B8
  4244. P.ABJ:    .LONG   17694728             ;                                              010E0008  001C0
  4245.     .ADDRESS P.ABK                 ;                                              00000000' 001C4
  4246. P.ABM:    .ASCII  \C to return to VAX/VMS Kermit-32]\<0><0><0>
  4247.                          ;                                74  65  72  20  6F  74  20  43  001C8
  4248.                          ;                          56  20  6F  74  20  6E  72  75  001D0
  4249.                          ;                          4B  20  53  4D  56  2F  58  41  001D8
  4250.                          ;                          32  33  2D  74  69  6D  72  65  001E0
  4251.                          ;                                      00  00  00  5D  001E8
  4252. P.ABL:    .LONG   17694753             ;                                              010E0021  001EC
  4253.     .ADDRESS P.ABM                 ;                                              00000000' 001F0
  4254. P.ABO:    .ASCII  \Returning to VAX/VMS Kermit-32]\<0>
  4255.                          ;                                6E  69  6E  72  75  74  65  52  001F4
  4256.                          ;                          58  41  56  20  6F  74  20  67  001FC
  4257.                          ;                          72  65  4B  20  53  4D  56  2F  00204
  4258.                          ;                          00  5D  32  33  2D  74  69  6D  0020C
  4259. P.ABN:    .LONG   17694751             ;                                              010E001F  00214
  4260.     .ADDRESS P.ABO                 ;                                              00000000' 00218
  4261. P.ABQ:    .ASCII  \0 00:00:00.050\<0><0>         ;                                3A  30  30  3A  30  30  20  30  0021C
  4262.                          ;                          00  00  30  35  30  2E  30  30  00224
  4263. P.ABP:    .LONG   17694734             ;                                              010E000E  0022C
  4264.     .ADDRESS P.ABQ                 ;                                              00000000' 00230
  4265. P.ABS:    .ASCII  \SYS$INPUT:\<0><0>         ;                                55  50  4E  49  24  53  59  53  00234
  4266.                          ;                                      00  00  3A  54  0023C
  4267. P.ABR:    .LONG   17694730             ;                                              010E000A  00240
  4268.     .ADDRESS P.ABS                 ;                                              00000000' 00244
  4269.  
  4270. U.95=            P.ABH
  4271. U.96=            P.ABJ
  4272. U.97=            P.ABL
  4273. U.98=            P.ABN
  4274. U.103=            P.ABP
  4275. U.104=            U.80+4
  4276. U.105=            P.ABR
  4277.     .EXTRN  SYS$WAITFR
  4278.  
  4279.     .PSECT  $CODE$,NOWRT,2
  4280.  
  4281. ;TYPE_OUT_BUF
  4282. U.106:    .WORD   ^M<R2,R3,R4,R5,R6>         ;Save R2,R3,R4,R5,R6               2895                    007C   00000
  4283.     MOVAB   G^SYS$READEF, R6         ;SYS$READEF, R6                                 56 00000000G  00  9E   00002
  4284.     MOVAB   G^U.94, R5             ;U.94, R5                                     55 00000000'  00  9E   00009
  4285.     PUSHL   R5                 ;R5                       2910                  55  DD   00010
  4286.     PUSHL   #5                 ;#5                                               05  DD   00012
  4287.     CALLS   #2, (R6)             ;#2, SYS$READEF                                 66         02  FB   00014
  4288.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   00017
  4289.     CMPL    R4, #1                 ;STATUS, #1                                     01         54  D1   0001A
  4290.     BEQL    1$                 ;1$                                               0B  13   0001D
  4291.     MOVAB   -52(R5), R0             ;OUT_EFN, R0                   2913            50    CC   A5  9E   0001F
  4292.     MOVZBL  @4(AP)[R0], -(SP)         ;@DEV[R0], -(SP)                                 7E    04 BC40  9A   00023
  4293.     BRB     3$                 ;3$                                               6C  11   00028
  4294. 1$:    MOVL    4(AP), R2             ;DEV, R2                   2917            52    04   AC  D0   0002A
  4295.     MOVAB   -52(R5)[R2], R3             ;OUT_EFN[R2], R3                                 53    CC A542  9E   0002E
  4296.     MOVZBL  (R3), -(SP)             ;(R3), -(SP)                                     7E         63  9A   00033
  4297.     CALLS   #1, G^SYS$WAITFR         ;#1, SYS$WAITFR                      00000000G  00         01  FB   00036
  4298.     MOVZBL  (R3), -(SP)             ;(R3), -(SP)                   2918            7E         63  9A   0003D
  4299.     CALLS   #1, G^SYS$CLREF             ;#1, SYS$CLREF                          00000000G  00         01  FB   00040
  4300.     PUSHL   R5                 ;R5                       2920                  55  DD   00047
  4301.     PUSHL   #5                 ;#5                                               05  DD   00049
  4302.     CALLS   #2, (R6)             ;#2, SYS$READEF                                 66         02  FB   0004B
  4303.     CMPL    R0, #1                 ;R0, #1                                     01         50  D1   0004E
  4304.     BNEQ    2$                 ;2$                                               40  12   00051
  4305.     CLRQ    -(SP)                 ;-(SP)                       2924                  7E  7C   00053
  4306.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00055
  4307.     MOVZWL  -832(R5)[R2], -(SP)         ;CHR_COUNT[R2], -(SP)                                 7E     FCC0 C542  3C   00057
  4308.     MOVZBL  -56(R5)[R2], R0             ;OUT_BUFNUM[R2], R0                                 50    C8 A542  9A   0005D
  4309.     MOVAW   (R0)[R2], R0             ;(R0)[R2], R0                                     50       6042  3E   00062
  4310.     MULL2   #80, R0                 ;#80, R0                                     50 00000050   8F  C4   00066
  4311.     MOVAB   -380(R5)[R0], R0         ;OUT_BUF[R0], R0                                 50     FE84 C540  9E   0006D
  4312.     PUSHAB  (R2)[R0]             ;(R2)[R0]                                         6240  9F   00073
  4313.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00076
  4314.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00078
  4315.     MOVZWL  #304, -(SP)             ;#304, -(SP)                                     7E     0130   8F  3C   0007A
  4316.     PUSHL   -840(R5)[R2]             ;CHANNEL[R2]                                        FCB8 C542  DD   0007F
  4317.     MOVZBL  (R3), -(SP)             ;(R3), -(SP)                                     7E         63  9A   00084
  4318.     CALLS   #12, G^SYS$QIO             ;#12, SYS$QIO                          00000000G  00         0C  FB   00087
  4319.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   0008E
  4320.     BRB     4$                 ;4$                                               05  11   00091
  4321. 2$:    MOVZBL  (R3), -(SP)             ;(R3), -(SP)                   2927            7E         63  9A   00093
  4322. 3$:    BRB     6$                 ;6$                                               4B  11   00096
  4323. 4$:    CLRW    -832(R5)[R2]             ;CHR_COUNT[R2]                   2931               FCC0 C542  B4   00098
  4324.     INCB    (R3)                 ;(R3)                       2932                  63  96   0009D
  4325.     MOVAB   -56(R5)[R2], R1             ;OUT_BUFNUM[R2], R1               2934            51    C8 A542  9E   0009F
  4326.     MOVZBL  (R1), R0             ;(R1), R0                                     50         61  9A   000A4
  4327.     INCL    R0                 ;R0                                               50  D6   000A7
  4328.     MOVB    R0, (R1)             ;R0, (R1)                                     61         50  90   000A9
  4329.     CMPL    R0, #2                 ;R0, #2                                     02         50  D1   000AC
  4330.     BLSS    5$                 ;5$                                               0A  19   000AF
  4331.     CLRB    (R1)                 ;(R1)                       2937                  61  94   000B1
  4332.     ASHL    #1, R2, R0             ;#1, R2, R0                   2938            52         01  78   000B3
  4333.                          ;                                         50       000B6
  4334.     ADDB3   #1, R0, (R3)             ;#1, R0, (R3)                                     50         01  81   000B7
  4335.                          ;                                         63       000BA
  4336. 5$:    MOVZBL  (R1), R0             ;(R1), R0                   2941            50         61  9A   000BB
  4337.     MOVAW   (R0)[R2], R0             ;(R0)[R2], R0                                     50       6042  3E   000BE
  4338.     MULL2   #80, R0                 ;#80, R0                                     50 00000050   8F  C4   000C2
  4339.     MOVAB   -380(R5)[R0], R0         ;OUT_BUF[R0], R0                                 50     FE84 C540  9E   000C9
  4340.     ADDL3   R2, R0, -48(R5)[R2]         ;R2, R0, OUT_PTR[R2]                                 50         52  C1   000CF
  4341.                          ;                                    D0 A542       000D2
  4342.     BLBS    R4, 7$                 ;STATUS, 7$                   2943            12         54  E8   000D5
  4343.     PUSHL   R4                 ;STATUS                   2946                  54  DD   000D8
  4344.     CALLS   #1, G^LIB$SIGNAL         ;#1, LIB$SIGNAL                      00000000G  00         01  FB   000DA
  4345.     PUSHL   #5                 ;#5                       2947                  05  DD   000E1
  4346. 6$:    CALLS   #1, G^SYS$SETEF             ;#1, SYS$SETEF                          00000000G  00         01  FB   000E3
  4347. 7$:    MOVL    R4, R0                 ;STATUS, R0                   2950            50         54  D0   000EA
  4348.     RET                      ;                                               04   000ED
  4349.  
  4350. ; Routine Size:  238 bytes,    Routine Base:  $CODE$ + 0EFE
  4351.  
  4352.  
  4353. ;   2952  2     %SBTTL 'TERM_CONNECT -- TIME_UP'
  4354. ;   2953  2        ROUTINE TIME_UP (OUTEFN) : NOVALUE =
  4355. ;   2954  2     
  4356. ;   2955  2    !++
  4357. ;   2956  2    !    AST routine called 0.1 second after first character is input.  It calls
  4358. ;   2957  2    !    TYPE_OUT_BUF to transmit output buffer.
  4359. ;   2958  2    !--
  4360. ;   2959  2     
  4361. ;   2960  3        BEGIN
  4362. ;   2961  3     
  4363. ;   2962  3        LOCAL
  4364. ;   2963  3            DEV;
  4365. ;   2964  3     
  4366. ;   2965  3        IF (.OUTEFN - T_EFN_DISP) LEQ 0
  4367. ;   2966  3        THEN
  4368. ;   2967  3            DEV = 0                ! Device was MY_TERM
  4369. ;   2968  3        ELSE
  4370. ;   2969  3            DEV = 1;                ! Device was TERM_NAME
  4371. ;   2970  3     
  4372. ;   2971  3        TYPE_OUT_BUF (.DEV);
  4373. ;   2972  2        END;                    ! End of TIME_UP
  4374.  
  4375.  
  4376.  
  4377.  
  4378.  
  4379. ;TIME_UP
  4380. U.107:    .WORD   ^M<>                 ;Save nothing                   2953                    0000   00000
  4381.     SUBL3   #2, 4(AP), R0             ;#2, OUTEFN, R0               2965       04   AC         02  C3   00002
  4382.                          ;                                         50       00006
  4383.     BGTR    1$                 ;1$                                               04  14   00007
  4384.     CLRL    R0                 ;DEV                       2967                  50  D4   00009
  4385.     BRB     2$                 ;2$                                               03  11   0000B
  4386. 1$:    MOVL    #1, R0                 ;#1, DEV                   2969            50         01  D0   0000D
  4387. 2$:    PUSHL   R0                 ;DEV                       2971                  50  DD   00010
  4388.     CALLS   #1, W^U.106             ;#1, U.106                              FEFB   CF         01  FB   00012
  4389.     RET                      ;                       2972                  04   00017
  4390.  
  4391. ; Routine Size:  24 bytes,    Routine Base:  $CODE$ + 0FEC
  4392.  
  4393.  
  4394. ;   2973  2     %SBTTL 'TERM_CONNECT -- STORE_INPUT'
  4395. ;   2974  2        ROUTINE STORE_INPUT (DEV, INP_POINTER, NUM_CHR_IN) : NOVALUE =
  4396. ;   2975  2     
  4397. ;   2976  2    !++
  4398. ;   2977  2    !    This routine stores the input buffer in the output buffer and keeps
  4399. ;   2978  2    !    track of the number of characters in the output buffer.  It also
  4400. ;   2979  2    !    calls TYPE_OUT_BUF when the output buffer is full and it sets up
  4401. ;   2980  2    !    the timer routine TIME_UP.
  4402. ;   2981  2    !--
  4403. ;   2982  2     
  4404. ;   2983  3        BEGIN
  4405. ;   2984  3     
  4406. ;   2985  3        EXTERNAL ROUTINE
  4407. ;   2986  3            LOG_CHAR,                ! Routine to log characters
  4408. ;   2987  3            GEN_PARITY;                ! Routine to generate parity
  4409. ;   2988  3     
  4410. ;   2989  3        LOCAL
  4411. ;   2990  3            STATUS;
  4412. ;   2991  3      
  4413. ;   2992  3        IF (STATUS = $READEF (EFN = XITEFN, STATE = STATE)) NEQ SS$_WASCLR THEN RETURN;
  4414. ;   2993  3    
  4415. ;   2994  3        IF .NUM_CHR_IN EQL 0 THEN RETURN .STATUS;
  4416. ;   2995  3     
  4417. ;   2996  3        IF .NUM_CHR_IN + .CHR_COUNT [.DEV] GTR OUT_BUFLEN
  4418. ;   2997  3        THEN
  4419. ;   2998  4            BEGIN
  4420. ;   2999  4    !
  4421. ;   3000  4    ! If we don't have enough room in the buffer for all of the characters, call
  4422. ;   3001  4    ! ourself to dump what will fit, then proceed with what remains.
  4423. ;   3002  4    !
  4424. ;   3003  4     
  4425. ;   3004  4            LOCAL
  4426. ;   3005  4            SAVED_CHR_CNT;            ! Saved character count
  4427. ;   3006  4     
  4428. ;   3007  4            SAVED_CHR_CNT = OUT_BUFLEN - .CHR_COUNT [.DEV];
  4429. ;   3008  4            NUM_CHR_IN = .NUM_CHR_IN - .SAVED_CHR_CNT;
  4430. ;   3009  4            STORE_INPUT (.DEV, .INP_POINTER, .SAVED_CHR_CNT);
  4431. ;   3010  4            INP_POINTER = CH$PLUS (.INP_POINTER, .SAVED_CHR_CNT);
  4432. ;   3011  3            END;
  4433. ;   3012  3     
  4434. ;   3013  3        IF .CHR_COUNT [.DEV] EQL 0
  4435. ;   3014  3        THEN
  4436. ;   3015  4            BEGIN
  4437. ;   3016  4            STATUS = $SETIMR (DAYTIM = BTIMUP, ASTADR = TIME_UP, REQIDT = .OUT_EFN [.DEV]);
  4438. ;   3017  4     
  4439. ;   3018  4            IF NOT .STATUS
  4440. ;   3019  4            THEN
  4441. ;   3020  5            BEGIN
  4442. ;   3021  5            LIB$SIGNAL (.STATUS);
  4443. ;   3022  5            $SETEF (EFN = XITEFN);
  4444. ;   3023  5            RETURN .STATUS;
  4445. ;   3024  4            END;
  4446. ;   3025  4     
  4447. ;   3026  3            END;
  4448. ;   3027  3     
  4449. ;   3028  3    ! We must generate parity for the communications terminal
  4450. ;   3029  3     
  4451. ;   3030  3        IF .DEV EQL 0
  4452. ;   3031  3        THEN
  4453. ;   3032  4            BEGIN
  4454. ;   3033  4     
  4455. ;   3034  4            LOCAL
  4456. ;   3035  4            POINTER;
  4457. ;   3036  4     
  4458. ;   3037  4            POINTER = .INP_POINTER;
  4459. ;   3038  4     
  4460. ;   3039  4            DECR I FROM .NUM_CHR_IN TO 1 DO
  4461. ;   3040  4            CH$WCHAR_A (GEN_PARITY (CH$RCHAR_A (POINTER)), OUT_PTR [.DEV]);
  4462. ;   3041  4     
  4463. ;   3042  4            END
  4464. ;   3043  3        ELSE
  4465. ;   3044  3            OUT_PTR [.DEV] = CH$MOVE (.NUM_CHR_IN, .INP_POINTER, .OUT_PTR [.DEV]);
  4466. ;   3045  3     
  4467. ;   3046  3    !
  4468. ;   3047  3    ! If we want logging, do it now
  4469. ;   3048  3    !
  4470. ;   3049  3     
  4471. ;   3050  3        IF (.DEV EQL 1 OR .ECHO_FLAG) AND .SESSION_OPEN AND .SESSION_LOGGING
  4472. ;   3051  3        THEN
  4473. ;   3052  4            BEGIN
  4474. ;   3053  4     
  4475. ;   3054  4            LOCAL
  4476. ;   3055  4            STATUS,
  4477. ;   3056  4            POINTER;
  4478. ;   3057  4     
  4479. ;   3058  4            POINTER = .INP_POINTER;
  4480. ;   3059  4     
  4481. ;   3060  4            DECR I FROM .NUM_CHR_IN TO 1 DO
  4482. ;   3061  4     
  4483. ;   3062  4            IF NOT LOG_CHAR (CH$RCHAR_A (POINTER), SESSION_RAB)
  4484. ;   3063  4            THEN
  4485. ;   3064  5                BEGIN
  4486. ;   3065  5                SESSION_LOGGING = FALSE;
  4487. ;   3066  5                EXITLOOP;
  4488. ;   3067  4                END;
  4489. ;   3068  4     
  4490. ;   3069  3            END;
  4491. ;   3070  3     
  4492. ;   3071  3        IF (CHR_COUNT [.DEV] = .CHR_COUNT [.DEV] + .NUM_CHR_IN) GEQ OUT_BUFLEN - INP_BUFSIZ
  4493. ;   3072  3        THEN
  4494. ;   3073  4            BEGIN
  4495. ;   3074  4            $CANTIM (REQIDT = .OUT_EFN [.DEV]);
  4496. ;   3075  4            TYPE_OUT_BUF (.DEV);
  4497. ;   3076  3            END;
  4498. ;   3077  3     
  4499. ;   3078  3        RETURN .STATUS;
  4500. ;   3079  2        END;                    ! End of STORE_INPUT
  4501.  
  4502.  
  4503.  
  4504.     .EXTRN  GEN_PARITY
  4505.  
  4506. ;STORE_INPUT
  4507. U.108:    .WORD   ^M<R2,R3,R4,R5,R6,R7,R8,R9,R10>  ;Save R2,R3,R4,R5,R6,R7,R8,R9,R10     2974                    07FC   00000
  4508.     MOVAB   B^U.108, R10             ;U.108, R10                                     5A    FB   AF  9E   00002
  4509.     MOVAB   G^U.89, R9             ;U.89, R9                                     59 00000000'  00  9E   00006
  4510.     PUSHAB  52(R9)                 ;STATE                       2992             34   A9  9F   0000D
  4511.     PUSHL   #5                 ;#5                                               05  DD   00010
  4512.     CALLS   #2, G^SYS$READEF         ;#2, SYS$READEF                      00000000G  00         02  FB   00012
  4513.     MOVL    R0, R3                 ;R0, STATUS                                     53         50  D0   00019
  4514.     CMPL    R3, #1                 ;STATUS, #1                                     01         53  D1   0001C
  4515.     BEQL    1$                 ;1$                                               01  13   0001F
  4516.     RET                      ;                                               04   00021
  4517. 1$:    TSTL    12(AP)                 ;NUM_CHR_IN                   2994             0C   AC  D5   00022
  4518.     BNEQ    2$                 ;2$                                               01  12   00025
  4519.     RET                      ;                                               04   00027
  4520. 2$:    MOVL    4(AP), R7             ;DEV, R7                   2996            57    04   AC  D0   00028
  4521.     MOVAW   -780(R9)[R7], R8         ;CHR_COUNT[R7], R8                                 58     FCF4 C947  3E   0002C
  4522.     MOVZWL  (R8), R0             ;(R8), R0                                     50         68  3C   00032
  4523.     ADDL2   12(AP), R0             ;NUM_CHR_IN, R0                                 50    0C   AC  C0   00035
  4524.     CMPL    R0, #80                 ;R0, #80                          00000050   8F         50  D1   00039
  4525.     BLEQ    3$                 ;3$                                               1D  15   00040
  4526.     MOVZWL  (R8), R2             ;(R8), SAVED_CHR_CNT               3007            52         68  3C   00042
  4527.     SUBL3   R2, #80, R2             ;SAVED_CHR_CNT, #80, SAVED_CHR_CNT           00000050   8F         52  C3   00045
  4528.                          ;                                         52       0004C
  4529.     SUBL2   R2, 12(AP)             ;SAVED_CHR_CNT, NUM_CHR_IN           3008       0C   AC         52  C2   0004D
  4530.     PUSHL   R2                 ;SAVED_CHR_CNT                   3009                  52  DD   00051
  4531.     PUSHL   8(AP)                 ;INP_POINTER                                      08   AC  DD   00053
  4532.     PUSHL   R7                 ;R7                                               57  DD   00056
  4533.     CALLS   #3, (R10)             ;#3, STORE_INPUT                                 6A         03  FB   00058
  4534.     ADDL2   R2, 8(AP)             ;SAVED_CHR_CNT, INP_POINTER           3010       08   AC         52  C0   0005B
  4535. 3$:    TSTW    (R8)                 ;(R8)                       3013                  68  B5   0005F
  4536.     BNEQ    4$                 ;4$                                               2F  12   00061
  4537.     CLRL    -(SP)                 ;-(SP)                       3016                  7E  D4   00063
  4538.     MOVZBL  (R9)[R7], -(SP)             ;OUT_EFN[R7], -(SP)                                 7E       6947  9A   00065
  4539.     PUSHAB  -24(R10)             ;TIME_UP                                      E8   AA  9F   00069
  4540.     PUSHAB  -796(R9)             ;BTIMUP                                        FCE4   C9  9F   0006C
  4541.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00070
  4542.     CALLS   #5, G^SYS$SETIMR         ;#5, SYS$SETIMR                      00000000G  00         05  FB   00072
  4543.     MOVL    R0, R3                 ;R0, STATUS                                     53         50  D0   00079
  4544.     BLBS    R3, 4$                 ;STATUS, 4$                   3018            13         53  E8   0007C
  4545.     PUSHL   R3                 ;STATUS                   3021                  53  DD   0007F
  4546.     CALLS   #1, G^LIB$SIGNAL         ;#1, LIB$SIGNAL                      00000000G  00         01  FB   00081
  4547.     PUSHL   #5                 ;#5                       3022                  05  DD   00088
  4548.     CALLS   #1, G^SYS$SETEF             ;#1, SYS$SETEF                          00000000G  00         01  FB   0008A
  4549.     RET                      ;                       3023                  04   00091
  4550. 4$:    MOVAL   4(R9)[R7], R6             ;OUT_PTR[R7], R6               3040            56    04 A947  DE   00092
  4551.     TSTL    R7                 ;R7                       3030                  57  D5   00097
  4552.     BNEQ    7$                 ;7$                                               20  12   00099
  4553.     MOVL    8(AP), R3             ;INP_POINTER, POINTER               3037            53    08   AC  D0   0009B
  4554.     ADDL3   #1, 12(AP), R2             ;#1, NUM_CHR_IN, I               3039       0C   AC         01  C1   0009F
  4555.                          ;                                         52       000A3
  4556.     BRB     6$                 ;6$                                               10  11   000A4
  4557. 5$:    MOVZBL  (R3)+, -(SP)             ;(POINTER)+, -(SP)               3040            7E         83  9A   000A6
  4558.     CALLS   #1, G^GEN_PARITY         ;#1, GEN_PARITY                      00000000G  00         01  FB   000A9
  4559.     MOVB    R0, @0(R6)             ;R0, @0(R6)                                00   B6         50  90   000B0
  4560.     INCL    (R6)                 ;(R6)                                               66  D6   000B4
  4561. 6$:    SOBGTR  R2, 5$                 ;I, 5$                                         ED         52  F5   000B6
  4562.     BRB     8$                 ;8$                                               0A  11   000B9
  4563. 7$:    MOVC3   12(AP), @8(AP), @0(R6)         ;NUM_CHR_IN, @INP_POINTER, @0(R6)     3044       08   BC    0C   AC  28   000BB
  4564.                          ;                                    00   B6       000C0
  4565.     MOVL    R3, (R6)             ;R3, (R6)                                     66         53  D0   000C2
  4566. 8$:    CMPL    R7, #1                 ;R7, #1                   3050            01         57  D1   000C5
  4567.     BEQL    9$                 ;9$                                               07  13   000C8
  4568.     BLBC    G^ECHO_FLAG, 12$         ;ECHO_FLAG, 12$                                 2F 00000000G  00  E9   000CA
  4569. 9$:    BLBC    -2424(R9), 12$             ;SESSION_OPEN, 12$                                 2A     F688   C9  E9   000D1
  4570.     BLBC    -2420(R9), 12$             ;SESSION_LOGGING, 12$                                 25     F68C   C9  E9   000D6
  4571.     MOVL    8(AP), R3             ;INP_POINTER, POINTER               3058            53    08   AC  D0   000DB
  4572.     ADDL3   #1, 12(AP), R2             ;#1, NUM_CHR_IN, I               3060       0C   AC         01  C1   000DF
  4573.                          ;                                         52       000E3
  4574.     BRB     11$                 ;11$                                               17  11   000E4
  4575. 10$:    PUSHAB  -2624(R9)             ;SESSION_RAB                   3062               F5C0   C9  9F   000E6
  4576.     MOVZBL  (R3)+, -(SP)             ;(POINTER)+, -(SP)                                 7E         83  9A   000EA
  4577.     CALLS   #2, G^LOG_CHAR             ;#2, LOG_CHAR                          00000000G  00         02  FB   000ED
  4578.     BLBS    R0, 11$                 ;R0, 11$                                     06         50  E8   000F4
  4579.     CLRL    -2420(R9)             ;SESSION_LOGGING               3065               F68C   C9  D4   000F7
  4580.     BRB     12$                 ;12$                       3066                  03  11   000FB
  4581. 11$:    SOBGTR  R2, 10$                 ;I, 10$                   3060            E6         52  F5   000FD
  4582. 12$:    MOVZWL  (R8), R0             ;(R8), R0                   3071            50         68  3C   00100
  4583.     ADDL2   12(AP), R0             ;NUM_CHR_IN, R0                                 50    0C   AC  C0   00103
  4584.     MOVW    R0, (R8)             ;R0, (R8)                                     68         50  B0   00107
  4585.     TSTL    R0                 ;R0                                               50  D5   0010A
  4586.     BLSS    13$                 ;13$                                               14  19   0010C
  4587.     CLRL    -(SP)                 ;-(SP)                       3074                  7E  D4   0010E
  4588.     MOVZBL  (R9)[R7], -(SP)             ;OUT_EFN[R7], -(SP)                                 7E       6947  9A   00110
  4589.     CALLS   #2, G^SYS$CANTIM         ;#2, SYS$CANTIM                      00000000G  00         02  FB   00114
  4590.     PUSHL   R7                 ;R7                       3075                  57  DD   0011B
  4591.     CALLS   #1, -262(R10)             ;#1, TYPE_OUT_BUF                          FEFA   CA         01  FB   0011D
  4592. 13$:    RET                      ;                       3078                  04   00122
  4593.  
  4594. ; Routine Size:  291 bytes,    Routine Base:  $CODE$ + 1004
  4595.  
  4596.  
  4597. ;   3080  2     %SBTTL 'TERM_CONNECT -- MYTINP'
  4598. ;   3081  2        ROUTINE MYTINP (INP_BUFNUM) =
  4599. ;   3082  2     
  4600. ;   3083  2    !++
  4601. ;   3084  2    !    This AST routine gets characters from the channel MYT_CHAN and outputs
  4602. ;   3085  2    !    them on the channel TERM_CHAN.  It also checks to see  if  the  exit
  4603. ;   3086  2    !    characters have been typed.  If they have been typed, MYTINP sets the
  4604. ;   3087  2    !    event flag XITEFN.  INP_BUFNUM contains the # of the input buffer.
  4605. ;   3088  2    !--
  4606. ;   3089  2     
  4607. ;   3090  3        BEGIN
  4608. ;   3091  3     
  4609. ;   3092  3        OWN
  4610. ;   3093  3            STATUS,
  4611. ;   3094  3            NUM_CHR_IN;
  4612. ;   3095  3     
  4613. ;   3096  3     %SBTTL 'TERM_CONNECT -- MYTINP -- CHK_FOR_EXIT'
  4614. ;   3097  3        ROUTINE CHK_FOR_EXIT (INP_BUFNUM) =
  4615. ;   3098  3     
  4616. ;   3099  3    !++
  4617. ;   3100  3    !    This routine checks to see if the exit characters have been typed.  It
  4618. ;   3101  3    !    returns TRUE if found and FALSE if not.  If only 1 ESCAPE_CHR found
  4619. ;   3102  3    !    then ESC_FLG is set to TRUE.
  4620. ;   3103  3    !--
  4621. ;   3104  3     
  4622. ;   3105  4            BEGIN
  4623. ;   3106  4            ROUTINE TYPE_MSG (MSG_DESC, OPEN_FLAG, CLOSE_FLAG, CRLF_FLAG) : NOVALUE =
  4624. ;   3107  5            BEGIN
  4625. ;   3108  5     
  4626. ;   3109  5            MAP
  4627. ;   3110  5                MSG_DESC : REF BLOCK [8, BYTE];
  4628. ;   3111  5     
  4629. ;   3112  5            IF .OPEN_FLAG
  4630. ;   3113  5            THEN
  4631. ;   3114  6                BEGIN
  4632. ;   3115  6                STORE_INPUT (TRM, CH$PTR (UPLIT BYTE(%C'[')), 1);
  4633. ;   3116  6     
  4634. ;   3117  6                IF .NODE_DESC [DSC$W_LENGTH] GTR 0
  4635. ;   3118  6                THEN
  4636. ;   3119  6                STORE_INPUT (TRM,
  4637. ;   3120  6                    CH$PTR (.NODE_DESC [DSC$A_POINTER]), .NODE_DESC [DSC$W_LENGTH]);
  4638. ;   3121  6     
  4639. ;   3122  5                END;
  4640. ;   3123  5     
  4641. ;   3124  5            STORE_INPUT (TRM, CH$PTR (.MSG_DESC [DSC$A_POINTER]), .MSG_DESC [DSC$W_LENGTH]);
  4642. ;   3125  5     
  4643. ;   3126  5            IF .CLOSE_FLAG THEN STORE_INPUT (TRM, CH$PTR (UPLIT BYTE(%C']')), 1);
  4644. ;   3127  5     
  4645. ;   3128  5            IF .CRLF_FLAG THEN STORE_INPUT (TRM, CH$PTR (UPLIT BYTE(CHR_CRT, CHR_LFD)), 2);
  4646. ;   3129  5     
  4647. ;   3130  4            END;
  4648.  
  4649.  
  4650.  
  4651.     .PSECT  $OWN$,NOEXE,2
  4652.  
  4653. ;STATUS
  4654. U.110:    .BLKB   4                                       ;                      00F08
  4655. ;NUM_CHR_IN
  4656. U.111:    .BLKB   4                                       ;                      00F0C
  4657.  
  4658.     .PSECT  $PLIT$,NOWRT,NOEXE,2
  4659.  
  4660. P.ABT:    .BYTE   91                 ;                                                5B  00248
  4661. P.ABU:    .BYTE   93                 ;                                                5D  00249
  4662. P.ABV:    .BYTE   13, 10                 ;                                                0A  0D  0024A
  4663.  
  4664.  
  4665.  
  4666.     .PSECT  $CODE$,NOWRT,2
  4667.  
  4668. ;TYPE_MSG
  4669. U.113:    .WORD   ^M<R2,R3>             ;Save R2,R3                   3106                    000C   00000
  4670.     MOVAB   G^P.ABT, R3             ;P.ABT, R3                                     53 00000000'  00  9E   00002
  4671.     MOVAB   W^U.108, R2             ;U.108, R2                                     52     FED0   CF  9E   00009
  4672.     BLBC    8(AP), 1$             ;OPEN_FLAG, 1$                   3112            1F    08   AC  E9   0000E
  4673.     PUSHL   #1                 ;#1                       3115                  01  DD   00012
  4674.     PUSHL   R3                 ;R3                                               53  DD   00014
  4675.     PUSHL   #1                 ;#1                                               01  DD   00016
  4676.     CALLS   #3, (R2)             ;#3, STORE_INPUT                                 62         03  FB   00018
  4677.     MOVZWL  G^NODE_DESC, R0             ;NODE_DESC, R0                   3117            50 00000000'  00  3C   0001B
  4678.     BLEQ    1$                 ;1$                                               0D  15   00022
  4679.     PUSHL   R0                 ;R0                       3119                  50  DD   00024
  4680.     PUSHL   G^NODE_DESC+4             ;NODE_DESC+4                   3120           00000000'  00  DD   00026
  4681.     PUSHL   #1                 ;#1                       3119                  01  DD   0002C
  4682.     CALLS   #3, (R2)             ;#3, STORE_INPUT                                 62         03  FB   0002E
  4683. 1$:    MOVL    4(AP), R0             ;MSG_DESC, R0                   3124            50    04   AC  D0   00031
  4684.     MOVZWL  (R0), -(SP)             ;(R0), -(SP)                                     7E         60  3C   00035
  4685.     PUSHL   4(R0)                 ;4(R0)                                          04   A0  DD   00038
  4686.     PUSHL   #1                 ;#1                                               01  DD   0003B
  4687.     CALLS   #3, (R2)             ;#3, STORE_INPUT                                 62         03  FB   0003D
  4688.     BLBC    12(AP), 2$             ;CLOSE_FLAG, 2$               3126            0A    0C   AC  E9   00040
  4689.     PUSHL   #1                 ;#1                                               01  DD   00044
  4690.     PUSHAB  1(R3)                 ;P.ABU                                          01   A3  9F   00046
  4691.     PUSHL   #1                 ;#1                                               01  DD   00049
  4692.     CALLS   #3, (R2)             ;#3, STORE_INPUT                                 62         03  FB   0004B
  4693. 2$:    BLBC    16(AP), 3$             ;CRLF_FLAG, 3$                   3128            0A    10   AC  E9   0004E
  4694.     PUSHL   #2                 ;#2                                               02  DD   00052
  4695.     PUSHAB  2(R3)                 ;P.ABV                                          02   A3  9F   00054
  4696.     PUSHL   #1                 ;#1                                               01  DD   00057
  4697.     CALLS   #3, (R2)             ;#3, STORE_INPUT                                 62         03  FB   00059
  4698. 3$:    RET                      ;                       3130                  04   0005C
  4699.  
  4700. ; Routine Size:  93 bytes,    Routine Base:  $CODE$ + 1127
  4701.  
  4702.  
  4703. ;   3131  4     
  4704. ;   3132  4            LOCAL
  4705. ;   3133  4            EAT_CHR,            ! Number of input characters to eat
  4706. ;   3134  4            ESC_PTR,
  4707. ;   3135  4            INDEX : INITIAL (0),        ! Displacement of ESC from beginning of buffer
  4708. ;   3136  4            PTR0;                ! Points to beginning of input buffer
  4709. ;   3137  4     
  4710. ;   3138  4            PTR0 = CH$PTR (INP_BUF [MYT, .INP_BUFNUM]);
  4711. ;   3139  4     
  4712. ;   3140  4            IF .ESC_FLG EQL TRUE        ! ESCAPE_CHR was previously typed.
  4713. ;   3141  4            THEN
  4714. ;   3142  5            BEGIN
  4715. ;   3143  5            INDEX = 0;
  4716. ;   3144  5            ESC_PTR = .PTR0;
  4717. ;   3145  5            ESC_FLG = FALSE;
  4718. ;   3146  5            END
  4719. ;   3147  4            ELSE
  4720. ;   3148  4     
  4721. ;   3149  4            IF (ESC_PTR = CH$FIND_CH (.NUM_CHR_IN, .PTR0, .ESCAPE_CHR)) EQL 0
  4722. ;   3150  4            THEN
  4723. ;   3151  4                RETURN FALSE
  4724. ;   3152  4            ELSE
  4725. ;   3153  5                BEGIN
  4726. ;   3154  5                INDEX = CH$DIFF (.PTR0, .ESC_PTR);
  4727. ;   3155  5     
  4728. ;   3156  6                IF .INDEX NEQ (NUM_CHR_IN = .NUM_CHR_IN - 1)
  4729. ;   3157  5                THEN
  4730. ;   3158  6                BEGIN
  4731. ;   3159  6                CH$COPY (.NUM_CHR_IN - .INDEX, CH$PLUS (.ESC_PTR, 1), 0,
  4732. ;   3160  6                    .NUM_CHR_IN - .INDEX, .ESC_PTR);
  4733. ;   3161  6                END
  4734. ;   3162  5                ELSE             ! ESCAPE_CHR was last character.
  4735. ;   3163  6                BEGIN
  4736. ;   3164  6                ESC_FLG = TRUE;
  4737. ;   3165  6                RETURN FALSE;
  4738. ;   3166  5                END;
  4739. ;   3167  5     
  4740. ;   3168  4                END;
  4741. ;   3169  4     
  4742. ;   3170  4            EAT_CHR = 0;            ! No characters to eat
  4743. ;   3171  4     
  4744. ;   3172  4            SELECTONE CH$RCHAR (.ESC_PTR) OF
  4745. ;   3173  4            SET
  4746. ;   3174  4     
  4747. ;   3175  4            ['?'] :
  4748. ;   3176  5                BEGIN
  4749. ;   3177  5                TYPE_MSG (%ASCID'Escape commands are:', TRUE, FALSE, TRUE);
  4750. ;   3178  5                        Type_Msg (%ASCID'    B - Sends a break', FALSE, FALSE, TRUE);
  4751. ;   3179  5                TYPE_MSG (%ASCID'    C - Return to VAX/VMS Kermit-32', FALSE, FALSE, TRUE);
  4752. ;   3180  5                TYPE_MSG (%ASCID'    Q - Suspend logging to session log file (if any)', FALSE,
  4753. ;   3181  5                FALSE, TRUE);
  4754. ;   3182  5                TYPE_MSG (%ASCID'    R - Resume logging to session log file (if any)', FALSE,
  4755. ;   3183  5                FALSE, TRUE);
  4756. ;   3184  5                TYPE_MSG (%ASCID'    S - Show status', FALSE, FALSE, TRUE);
  4757. ;   3185  5                TYPE_MSG (%ASCID'    0 - Send a null', FALSE, FALSE, TRUE);
  4758. ;   3186  5                TYPE_MSG (%ASCID'    ? - Type this text', FALSE, FALSE, TRUE);
  4759. ;   3187  5                TYPE_MSG (%ASCID'    ', FALSE, FALSE, FALSE);
  4760. ;   3188  5                STORE_INPUT (TRM, ESC_CHR_MSG, .ESC_CHR_LEN);
  4761. ;   3189  5                TYPE_MSG (%ASCID' - Send escape character', FALSE, TRUE, TRUE);
  4762. ;   3190  5                EAT_CHR = 1;
  4763. ;   3191  4                END;
  4764. ;   3192  4     
  4765. ;   3193  4            ['B', 'b'] :
  4766. ;   3194  5                        BEGIN
  4767. ;   3195  5                        Send_Break_TTY_Flag = 1;
  4768. ;   3196  5                EAT_CHR = 1;
  4769. ;   3197  4                        END;
  4770. ;   3198  4    
  4771. ;   3199  4            ['C', 'c'] :
  4772. ;   3200  5                BEGIN
  4773. ;   3201  5                NUM_CHR_IN = .INDEX;
  4774. ;   3202  5                RETURN TRUE;
  4775. ;   3203  4                END;
  4776. ;   3204  4     
  4777. ;   3205  4            ['Q', 'q'] :
  4778. ;   3206  5                BEGIN
  4779. ;   3207  5     
  4780. ;   3208  5                BIND
  4781. ;   3209  5                NO_LOG_TEXT = %ASCID'logging already disabled',
  4782. ;   3210  5                STOP_LOG_TEXT = %ASCID'logging disabled';
  4783. ;   3211  5     
  4784. ;   3212  5                IF .SESSION_LOGGING
  4785. ;   3213  5                THEN
  4786. ;   3214  5                TYPE_MSG (STOP_LOG_TEXT, TRUE, TRUE, TRUE)
  4787. ;   3215  5                ELSE
  4788. ;   3216  5                TYPE_MSG (NO_LOG_TEXT, TRUE, TRUE, TRUE);
  4789. ;   3217  5     
  4790. ;   3218  5                SESSION_LOGGING = FALSE;
  4791. ;   3219  5                EAT_CHR = 1;
  4792. ;   3220  4                END;
  4793. ;   3221  4     
  4794. ;   3222  4            ['R', 'r'] :
  4795. ;   3223  5                BEGIN            ! Resume logging
  4796. ;   3224  5     
  4797. ;   3225  5                BIND
  4798. ;   3226  5                NO_LOG_TEXT = %ASCID'no log file to enable',
  4799. ;   3227  5                START_LOG_TEXT = %ASCID'logging enabled';
  4800. ;   3228  5     
  4801. ;   3229  5                SESSION_LOGGING = .SESSION_OPEN;
  4802. ;   3230  5     
  4803. ;   3231  5                IF .SESSION_LOGGING
  4804. ;   3232  5                THEN
  4805. ;   3233  5                TYPE_MSG (START_LOG_TEXT, TRUE, TRUE, TRUE)
  4806. ;   3234  5                ELSE
  4807. ;   3235  5                TYPE_MSG (NO_LOG_TEXT, TRUE, TRUE, TRUE);
  4808. ;   3236  5     
  4809. ;   3237  5                EAT_CHR = 1;
  4810. ;   3238  4                END;
  4811. ;   3239  4     
  4812. ;   3240  4            ['S', 's'] :
  4813. ;   3241  5                BEGIN
  4814. ;   3242  5                TYPE_MSG (%ASCID'Connected to ', TRUE, FALSE, FALSE);
  4815. ;   3243  5                TYPE_MSG (TERM_DESC, FALSE, FALSE, TRUE);
  4816. ;   3244  5                TYPE_MSG (%ASCID'    Escape character: "', FALSE, FALSE, FALSE);
  4817. ;   3245  5                STORE_INPUT (TRM, ESC_CHR_MSG, .ESC_CHR_LEN);
  4818. ;   3246  5                TYPE_MSG (%ASCID'"', FALSE, FALSE, TRUE);
  4819. ;   3247  5                TYPE_MSG (%ASCID'    Local echo: ', FALSE, FALSE, FALSE);
  4820. ;   3248  5     
  4821. ;   3249  5                IF .ECHO_FLAG
  4822. ;   3250  5                THEN
  4823. ;   3251  5                TYPE_MSG (%ASCID'On', FALSE, FALSE, TRUE)
  4824. ;   3252  5                ELSE
  4825. ;   3253  5                TYPE_MSG (%ASCID'Off', FALSE, FALSE, TRUE);
  4826. ;   3254  5     
  4827. ;   3255  5                TYPE_MSG (%ASCID'    Parity: ', FALSE, FALSE, FALSE);
  4828. ;   3256  5     
  4829. ;   3257  5                CASE .PARITY_TYPE FROM PR_MIN TO PR_MAX OF
  4830. ;   3258  5                SET
  4831. ;   3259  5     
  4832. ;   3260  5                [PR_NONE] :
  4833. ;   3261  5                    TYPE_MSG (%ASCID'None', FALSE, FALSE, TRUE);
  4834. ;   3262  5     
  4835. ;   3263  5                [PR_ODD] :
  4836. ;   3264  5                    TYPE_MSG (%ASCID'Odd', FALSE, FALSE, TRUE);
  4837. ;   3265  5     
  4838. ;   3266  5                [PR_EVEN] :
  4839. ;   3267  5                    TYPE_MSG (%ASCID'Even', FALSE, FALSE, TRUE);
  4840. ;   3268  5     
  4841. ;   3269  5                [PR_MARK] :
  4842. ;   3270  5                    TYPE_MSG (%ASCID'Mark', FALSE, FALSE, TRUE);
  4843. ;   3271  5     
  4844. ;   3272  5                [PR_SPACE] :
  4845. ;   3273  5                    TYPE_MSG (%ASCID'Space', FALSE, FALSE, TRUE);
  4846. ;   3274  5                TES;
  4847. ;   3275  5     
  4848. ;   3276  5                TYPE_MSG (%ASCID'    Logging: ', FALSE, FALSE, FALSE);
  4849. ;   3277  5     
  4850. ;   3278  5                IF .SESSION_OPEN GTR 0
  4851. ;   3279  5                THEN
  4852. ;   3280  6                BEGIN
  4853. ;   3281  6                TYPE_MSG (SESSION_DESC, FALSE, FALSE, FALSE);
  4854. ;   3282  6     
  4855. ;   3283  6                IF .SESSION_LOGGING
  4856. ;   3284  6                THEN
  4857. ;   3285  6                    TYPE_MSG (%ASCID' Enabled', FALSE, TRUE, TRUE)
  4858. ;   3286  6                ELSE
  4859. ;   3287  6                    TYPE_MSG (%ASCID' Disabled', FALSE, TRUE, TRUE);
  4860. ;   3288  6     
  4861. ;   3289  6                END
  4862. ;   3290  5                ELSE
  4863. ;   3291  5                TYPE_MSG (%ASCID' None specifed', FALSE, TRUE, TRUE);
  4864. ;   3292  5     
  4865. ;   3293  5                EAT_CHR = 1;        ! Eat the "S"
  4866. ;   3294  4                END;
  4867. ;   3295  4     
  4868. ;   3296  4            [.ESCAPE_CHR] :
  4869. ;   3297  4                CH$WCHAR (.ESCAPE_CHR, .ESC_PTR);    ! Write the escape character
  4870. ;   3298  4     
  4871. ;   3299  4            ['0'] :
  4872. ;   3300  4                CH$WCHAR (CHR_NUL, .ESC_PTR);    ! Write a null
  4873. ;   3301  4     
  4874. ;   3302  4            [OTHERWISE] :
  4875. ;   3303  5                BEGIN            ! Send a bell char. to MY_TERM
  4876. ;   3304  5                STORE_INPUT (TRM, CH$PTR (UPLIT BYTE(CHR_BEL)), 1);
  4877. ;   3305  5                EAT_CHR = 1;        ! Eat the character
  4878. ;   3306  4                END;
  4879. ;   3307  4            TES;
  4880. ;   3308  4     
  4881. ;   3309  4            IF .EAT_CHR GTR 0
  4882. ;   3310  4            THEN
  4883. ;   3311  4     
  4884. ;   3312  4            IF (NUM_CHR_IN = .NUM_CHR_IN - .EAT_CHR) NEQ .INDEX
  4885. ;   3313  4            THEN
  4886. ;   3314  4                CH$COPY (.NUM_CHR_IN - .INDEX, CH$PLUS (.ESC_PTR, .EAT_CHR), CHR_NUL,
  4887. ;   3315  4                .NUM_CHR_IN - .INDEX, .ESC_PTR);
  4888. ;   3316  4     
  4889. ;   3317  4            RETURN FALSE;
  4890. ;   3318  3            END;                ! End of CHK_FOR_EXIT
  4891.  
  4892.  
  4893.  
  4894.     .PSECT  $PLIT$,NOWRT,NOEXE,2
  4895.  
  4896. P.ABX:    .ASCII  \Escape commands are:\         ;                                63  20  65  70  61  63  73  45  0024C
  4897.                          ;                          20  73  64  6E  61  6D  6D  6F  00254
  4898.                          ;                                      3A  65  72  61  0025C
  4899. P.ABW:    .LONG   17694740             ;                                              010E0014  00260
  4900.     .ADDRESS P.ABX                 ;                                              00000000' 00264
  4901. P.ABZ:    .ASCII  <9>\B - Sends a break\<0><0>     ;                                6E  65  53  20  2D  20  42  09  00268
  4902.                          ;                          65  72  62  20  61  20  73  64  00270
  4903.                          ;                                      00  00  6B  61  00278
  4904. P.ABY:    .LONG   17694738             ;                                              010E0012  0027C
  4905.     .ADDRESS P.ABZ                 ;                                              00000000' 00280
  4906. P.ACB:    .ASCII  <9>\C - Return to VAX/VMS Kermit-32\
  4907.                          ;                                74  65  52  20  2D  20  43  09  00284
  4908.                          ;                          56  20  6F  74  20  6E  72  75  0028C
  4909.                          ;                          4B  20  53  4D  56  2F  58  41  00294
  4910.                          ;                          32  33  2D  74  69  6D  72  65  0029C
  4911. P.ACA:    .LONG   17694752             ;                                              010E0020  002A4
  4912.     .ADDRESS P.ACB                 ;                                              00000000' 002A8
  4913. P.ACD:    .ASCII  <9>\Q - Suspend logging to session log file (if any)\<0><0>
  4914.                          ;                                73  75  53  20  2D  20  51  09  002AC
  4915.                          ;                          67  6F  6C  20  64  6E  65  70  002B4
  4916.                          ;                          20  6F  74  20  67  6E  69  67  002BC
  4917.                          ;                          20  6E  6F  69  73  73  65  73  002C4
  4918.                          ;                          65  6C  69  66  20  67  6F  6C  002CC
  4919.                          ;                          79  6E  61  20  66  69  28  20  002D4
  4920.                          ;                                      00  00  29  002DC
  4921.     .ASCII  <0>                 ;                                                00  002DF
  4922. P.ACC:    .LONG   17694769             ;                                              010E0031  002E0
  4923.     .ADDRESS P.ACD                 ;                                              00000000' 002E4
  4924. P.ACF:    .ASCII  <9>\R - Resume logging to session log file (if any)\
  4925.                          ;                                73  65  52  20  2D  20  52  09  002E8
  4926.                          ;                          67  67  6F  6C  20  65  6D  75  002F0
  4927.                          ;                          73  20  6F  74  20  67  6E  69  002F8
  4928.                          ;                          6C  20  6E  6F  69  73  73  65  00300
  4929.                          ;                          20  65  6C  69  66  20  67  6F  00308
  4930.                          ;                          29  79  6E  61  20  66  69  28  00310
  4931. P.ACE:    .LONG   17694768             ;                                              010E0030  00318
  4932.     .ADDRESS P.ACF                 ;                                              00000000' 0031C
  4933. P.ACH:    .ASCII  <9>\S - Show status\         ;                                6F  68  53  20  2D  20  53  09  00320
  4934.                          ;                          73  75  74  61  74  73  20  77  00328
  4935. P.ACG:    .LONG   17694736             ;                                              010E0010  00330
  4936.     .ADDRESS P.ACH                 ;                                              00000000' 00334
  4937. P.ACJ:    .ASCII  <9>\0 - Send a null\         ;                                6E  65  53  20  2D  20  30  09  00338
  4938.                          ;                          6C  6C  75  6E  20  61  20  64  00340
  4939. P.ACI:    .LONG   17694736             ;                                              010E0010  00348
  4940.     .ADDRESS P.ACJ                 ;                                              00000000' 0034C
  4941. P.ACL:    .ASCII  <9>\? - Type this text\<0>     ;                                70  79  54  20  2D  20  3F  09  00350
  4942.                          ;                          74  20  73  69  68  74  20  65  00358
  4943.                          ;                                      00  74  78  65  00360
  4944. P.ACK:    .LONG   17694739             ;                                              010E0013  00364
  4945.     .ADDRESS P.ACL                 ;                                              00000000' 00368
  4946. P.ACN:    .ASCII  <9><0><0><0>             ;                                            00  00  00  09  0036C
  4947. P.ACM:    .LONG   17694721             ;                                              010E0001  00370
  4948.     .ADDRESS P.ACN                 ;                                              00000000' 00374
  4949. P.ACP:    .ASCII  \ - Send escape character\     ;                                20  64  6E  65  53  20  2D  20  00378
  4950.                          ;                          63  20  65  70  61  63  73  65  00380
  4951.                          ;                          72  65  74  63  61  72  61  68  00388
  4952. P.ACO:    .LONG   17694744             ;                                              010E0018  00390
  4953.     .ADDRESS P.ACP                 ;                                              00000000' 00394
  4954. P.ACR:    .ASCII  \logging already disabled\     ;                                20  67  6E  69  67  67  6F  6C  00398
  4955.                          ;                          20  79  64  61  65  72  6C  61  003A0
  4956.                          ;                          64  65  6C  62  61  73  69  64  003A8
  4957. P.ACQ:    .LONG   17694744             ;                                              010E0018  003B0
  4958.     .ADDRESS P.ACR                 ;                                              00000000' 003B4
  4959. P.ACT:    .ASCII  \logging disabled\         ;                                20  67  6E  69  67  67  6F  6C  003B8
  4960.                          ;                          64  65  6C  62  61  73  69  64  003C0
  4961. P.ACS:    .LONG   17694736             ;                                              010E0010  003C8
  4962.     .ADDRESS P.ACT                 ;                                              00000000' 003CC
  4963. P.ACV:    .ASCII  \no log file to enable\<0><0><0> ;                                66  20  67  6F  6C  20  6F  6E  003D0
  4964.                          ;                          65  20  6F  74  20  65  6C  69  003D8
  4965.                          ;                          00  00  00  65  6C  62  61  6E  003E0
  4966. P.ACU:    .LONG   17694741             ;                                              010E0015  003E8
  4967.     .ADDRESS P.ACV                 ;                                              00000000' 003EC
  4968. P.ACX:    .ASCII  \logging enabled\<0>         ;                                20  67  6E  69  67  67  6F  6C  003F0
  4969.                          ;                          00  64  65  6C  62  61  6E  65  003F8
  4970. P.ACW:    .LONG   17694735             ;                                              010E000F  00400
  4971.     .ADDRESS P.ACX                 ;                                              00000000' 00404
  4972. P.ACZ:    .ASCII  \Connected to \<0><0><0>     ;                                65  74  63  65  6E  6E  6F  43  00408
  4973.                          ;                          00  00  00  20  6F  74  20  64  00410
  4974. P.ACY:    .LONG   17694733             ;                                              010E000D  00418
  4975.     .ADDRESS P.ACZ                 ;                                              00000000' 0041C
  4976. P.ADB:    .ASCII  <9>\Escape character: "\     ;                                20  65  70  61  63  73  45  09  00420
  4977.                          ;                          65  74  63  61  72  61  68  63  00428
  4978.                          ;                                      22  20  3A  72  00430
  4979. P.ADA:    .LONG   17694740             ;                                              010E0014  00434
  4980.     .ADDRESS P.ADB                 ;                                              00000000' 00438
  4981. P.ADD:    .ASCII  \"\<0><0><0>             ;                                            00  00  00  22  0043C
  4982. P.ADC:    .LONG   17694721             ;                                              010E0001  00440
  4983.     .ADDRESS P.ADD                 ;                                              00000000' 00444
  4984. P.ADF:    .ASCII  <9>\Local echo: \<0><0><0>     ;                                65  20  6C  61  63  6F  4C  09  00448
  4985.                          ;                          00  00  00  20  3A  6F  68  63  00450
  4986. P.ADE:    .LONG   17694733             ;                                              010E000D  00458
  4987.     .ADDRESS P.ADF                 ;                                              00000000' 0045C
  4988. P.ADH:    .ASCII  \On\<0><0>             ;                                            00  00  6E  4F  00460
  4989. P.ADG:    .LONG   17694722             ;                                              010E0002  00464
  4990.     .ADDRESS P.ADH                 ;                                              00000000' 00468
  4991. P.ADJ:    .ASCII  \Off\<0>             ;                                            00  66  66  4F  0046C
  4992. P.ADI:    .LONG   17694723             ;                                              010E0003  00470
  4993.     .ADDRESS P.ADJ                 ;                                              00000000' 00474
  4994. P.ADL:    .ASCII  <9>\Parity: \<0><0><0>         ;                                3A  79  74  69  72  61  50  09  00478
  4995.                          ;                                      00  00  00  20  00480
  4996. P.ADK:    .LONG   17694729             ;                                              010E0009  00484
  4997.     .ADDRESS P.ADL                 ;                                              00000000' 00488
  4998. P.ADN:    .ASCII  \None\                 ;                                            65  6E  6F  4E  0048C
  4999. P.ADM:    .LONG   17694724             ;                                              010E0004  00490
  5000.     .ADDRESS P.ADN                 ;                                              00000000' 00494
  5001. P.ADP:    .ASCII  \Odd\<0>             ;                                            00  64  64  4F  00498
  5002. P.ADO:    .LONG   17694723             ;                                              010E0003  0049C
  5003.     .ADDRESS P.ADP                 ;                                              00000000' 004A0
  5004. P.ADR:    .ASCII  \Even\                 ;                                            6E  65  76  45  004A4
  5005. P.ADQ:    .LONG   17694724             ;                                              010E0004  004A8
  5006.     .ADDRESS P.ADR                 ;                                              00000000' 004AC
  5007. P.ADT:    .ASCII  \Mark\                 ;                                            6B  72  61  4D  004B0
  5008. P.ADS:    .LONG   17694724             ;                                              010E0004  004B4
  5009.     .ADDRESS P.ADT                 ;                                              00000000' 004B8
  5010. P.ADV:    .ASCII  \Space\<0><0><0>         ;                                00  00  00  65  63  61  70  53  004BC
  5011. P.ADU:    .LONG   17694725             ;                                              010E0005  004C4
  5012.     .ADDRESS P.ADV                 ;                                              00000000' 004C8
  5013. P.ADX:    .ASCII  <9>\Logging: \<0><0>         ;                                67  6E  69  67  67  6F  4C  09  004CC
  5014.                          ;                                      00  00  20  3A  004D4
  5015. P.ADW:    .LONG   17694730             ;                                              010E000A  004D8
  5016.     .ADDRESS P.ADX                 ;                                              00000000' 004DC
  5017. P.ADZ:    .ASCII  \ Enabled\             ;                                64  65  6C  62  61  6E  45  20  004E0
  5018. P.ADY:    .LONG   17694728             ;                                              010E0008  004E8
  5019.     .ADDRESS P.ADZ                 ;                                              00000000' 004EC
  5020. P.AEB:    .ASCII  \ Disabled\<0><0><0>         ;                                65  6C  62  61  73  69  44  20  004F0
  5021.                          ;                                      00  00  00  64  004F8
  5022. P.AEA:    .LONG   17694729             ;                                              010E0009  004FC
  5023.     .ADDRESS P.AEB                 ;                                              00000000' 00500
  5024. P.AED:    .ASCII  \ None specifed\<0><0>         ;                                70  73  20  65  6E  6F  4E  20  00504
  5025.                          ;                          00  00  64  65  66  69  63  65  0050C
  5026. P.AEC:    .LONG   17694734             ;                                              010E000E  00514
  5027.     .ADDRESS P.AED                 ;                                              00000000' 00518
  5028. P.AEE:    .BYTE   7                 ;                                                07  0051C
  5029.  
  5030. U.115=            P.ACQ
  5031. U.116=            P.ACS
  5032. U.117=            P.ACU
  5033. U.118=            P.ACW
  5034.  
  5035.  
  5036.     .PSECT  $CODE$,NOWRT,2
  5037.  
  5038. ;CHK_FOR_EXIT
  5039. U.112:    .WORD   ^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,- ;Save R2,R3,R4,R5,R6,R7,R8,R9,R10,-   3097                    0FFC   00000
  5040.         R11>                 ;R11
  5041.     MOVAB   G^SEND_BREAK_TTY_FLAG, R11     ;SEND_BREAK_TTY_FLAG, R11                             5B 00000000'  00  9E   00002
  5042.     MOVAB   G^U.111, R10             ;U.111, R10                                     5A 00000000'  00  9E   00009
  5043.     MOVAB   B^U.113, R9             ;U.113, R9                                     59    90   AF  9E   00010
  5044.     MOVAB   G^P.ABW, R8             ;P.ABW, R8                                     58 00000000'  00  9E   00014
  5045.     CLRL    R7                 ;INDEX                       3135                  57  D4   0001B
  5046.     MULL3   #80, 4(AP), R0             ;#80, INP_BUFNUM, R0               3138       04   AC 00000050   8F  C5   0001D
  5047.                          ;                                         50       00025
  5048.     MOVAB   -800(R10)[R0], R2         ;INP_BUF[R0], PTR0                                 52     FCE0 CA40  9E   00026
  5049.     CMPL    -836(R10), #1             ;ESC_FLG, #1                   3140            01     FCBC   CA  D1   0002C
  5050.     BNEQ    1$                 ;1$                                               0B  12   00031
  5051.     CLRL    R7                 ;INDEX                       3143                  57  D4   00033
  5052.     MOVL    R2, R6                 ;PTR0, ESC_PTR                   3144            56         52  D0   00035
  5053.     CLRL    -836(R10)             ;ESC_FLG                   3145               FCBC   CA  D4   00038
  5054.     BRB     5$                 ;5$                                               34  11   0003C
  5055. 1$:    LOCC    G^ESCAPE_CHR, (R10), (R2)     ;ESCAPE_CHR, NUM_CHR_IN, (PTR0)       3149            6A 00000000G  00  3A   0003E
  5056.                          ;                                         62       00045
  5057.     BNEQ    2$                 ;2$                                               02  12   00046
  5058.     CLRL    R1                 ;R1                                               51  D4   00048
  5059. 2$:    MOVL    R1, R6                 ;R1, ESC_PTR                                     56         51  D0   0004A
  5060.     BEQL    4$                 ;4$                                               20  13   0004D
  5061.     SUBL3   R6, R2, R7             ;ESC_PTR, PTR0, INDEX               3154            52         56  C3   0004F
  5062.                          ;                                         57       00052
  5063.     SUBL3   #1, (R10), R0             ;#1, NUM_CHR_IN, R0               3156            6A         01  C3   00053
  5064.                          ;                                         50       00056
  5065.     MOVL    R0, (R10)             ;R0, NUM_CHR_IN                                 6A         50  D0   00057
  5066.     CMPL    R7, R0                 ;INDEX, R0                                     50         57  D1   0005A
  5067.     BEQL    3$                 ;3$                                               0B  13   0005D
  5068.     SUBL3   R7, (R10), R0             ;INDEX, NUM_CHR_IN, R0               3159            6A         57  C3   0005F
  5069.                          ;                                         50       00062
  5070.     MOVC3   R0, 1(R6), (R6)             ;R0, 1(ESC_PTR), (ESC_PTR)                        01   A6         50  28   00063
  5071.                          ;                                         66       00067
  5072.     BRB     5$                 ;5$                                               08  11   00068
  5073. 3$:    MOVL    #1, -836(R10)             ;#1, ESC_FLG                   3164     FCBC   CA         01  D0   0006A
  5074. 4$:    BRW     39$                 ;39$                       3165                0250  31   0006F
  5075. 5$:    CLRL    R2                 ;EAT_CHR                   3170                  52  D4   00072
  5076.     CMPB    (R6), #63             ;(ESC_PTR), #63               3175            3F         66  91   00074
  5077.     BNEQ    7$                 ;7$                                               7C  12   00077
  5078.     PUSHL   #1                 ;#1                       3177                  01  DD   00079
  5079.     MOVQ    #1, -(SP)             ;#1, -(SP)                                     7E         01  7D   0007B
  5080.     PUSHL   R8                 ;R8                                               58  DD   0007E
  5081.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   00080
  5082.     PUSHL   #1                 ;#1                       3178                  01  DD   00083
  5083.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00085
  5084.     PUSHAB  28(R8)                 ;P.ABY                                          1C   A8  9F   00087
  5085.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   0008A
  5086.     PUSHL   #1                 ;#1                       3179                  01  DD   0008D
  5087.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0008F
  5088.     PUSHAB  68(R8)                 ;P.ACA                                          44   A8  9F   00091
  5089.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   00094
  5090.     PUSHL   #1                 ;#1                       3181                  01  DD   00097
  5091.     CLRQ    -(SP)                 ;-(SP)                       3180                  7E  7C   00099
  5092.     PUSHAB  128(R8)                 ;P.ACC                                            0080   C8  9F   0009B
  5093.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   0009F
  5094.     PUSHL   #1                 ;#1                       3183                  01  DD   000A2
  5095.     CLRQ    -(SP)                 ;-(SP)                       3182                  7E  7C   000A4
  5096.     PUSHAB  184(R8)                 ;P.ACE                                            00B8   C8  9F   000A6
  5097.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   000AA
  5098.     PUSHL   #1                 ;#1                       3184                  01  DD   000AD
  5099.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   000AF
  5100.     PUSHAB  208(R8)                 ;P.ACG                                            00D0   C8  9F   000B1
  5101.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   000B5
  5102.     PUSHL   #1                 ;#1                       3185                  01  DD   000B8
  5103.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   000BA
  5104.     PUSHAB  232(R8)                 ;P.ACI                                            00E8   C8  9F   000BC
  5105.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   000C0
  5106.     PUSHL   #1                 ;#1                       3186                  01  DD   000C3
  5107.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   000C5
  5108.     PUSHAB  260(R8)                 ;P.ACK                                            0104   C8  9F   000C7
  5109.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   000CB
  5110.     CLRQ    -(SP)                 ;-(SP)                       3187                  7E  7C   000CE
  5111.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   000D0
  5112.     PUSHAB  272(R8)                 ;P.ACM                                            0110   C8  9F   000D2
  5113.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   000D6
  5114.     PUSHL   -44(R10)             ;ESC_CHR_LEN                   3188             D4   AA  DD   000D9
  5115.     PUSHAB  -40(R10)             ;ESC_CHR_MSG                                      D8   AA  9F   000DC
  5116.     PUSHL   #1                 ;#1                                               01  DD   000DF
  5117.     CALLS   #3, -291(R9)             ;#3, STORE_INPUT                          FEDD   C9         03  FB   000E1
  5118.     PUSHL   #1                 ;#1                       3189                  01  DD   000E6
  5119.     PUSHL   #1                 ;#1                                               01  DD   000E8
  5120.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   000EA
  5121.     PUSHAB  304(R8)                 ;P.ACO                                            0130   C8  9F   000EC
  5122. 6$:    CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   000F0
  5123.     BRB     15$                 ;15$                       3190                  52  11   000F3
  5124. 7$:    CMPB    (R6), #66             ;(ESC_PTR), #66               3193       42   8F         66  91   000F5
  5125.     BEQL    8$                 ;8$                                               06  13   000F9
  5126.     CMPB    (R6), #98             ;(ESC_PTR), #98                            62   8F         66  91   000FB
  5127.     BNEQ    9$                 ;9$                                               05  12   000FF
  5128. 8$:    MOVL    #1, (R11)             ;#1, SEND_BREAK_TTY_FLAG           3195            6B         01  D0   00101
  5129.     BRB     15$                 ;15$                       3196                  41  11   00104
  5130. 9$:    CMPB    (R6), #67             ;(ESC_PTR), #67               3199       43   8F         66  91   00106
  5131.     BEQL    10$                 ;10$                                               06  13   0010A
  5132.     CMPB    (R6), #99             ;(ESC_PTR), #99                            63   8F         66  91   0010C
  5133.     BNEQ    11$                 ;11$                                               07  12   00110
  5134. 10$:    MOVL    R7, (R10)             ;INDEX, NUM_CHR_IN               3201            6A         57  D0   00112
  5135.     MOVL    #1, R0                 ;#1, R0                   3202            50         01  D0   00115
  5136.     RET                      ;                                               04   00118
  5137. 11$:    CMPB    (R6), #81             ;(ESC_PTR), #81               3205       51   8F         66  91   00119
  5138.     BEQL    12$                 ;12$                                               06  13   0011D
  5139.     CMPB    (R6), #113             ;(ESC_PTR), #113                            71   8F         66  91   0011F
  5140.     BNEQ    16$                 ;16$                                               25  12   00123
  5141. 12$:    BLBC    -2480(R10), 13$             ;SESSION_LOGGING, 13$               3212            0C     F650   CA  E9   00125
  5142.     PUSHL   #1                 ;#1                       3214                  01  DD   0012A
  5143.     PUSHL   #1                 ;#1                                               01  DD   0012C
  5144.     PUSHL   #1                 ;#1                                               01  DD   0012E
  5145.     PUSHAB  360(R8)                 ;STOP_LOG_TEXT                                        0168   C8  9F   00130
  5146.     BRB     14$                 ;14$                                               0A  11   00134
  5147. 13$:    PUSHL   #1                 ;#1                       3216                  01  DD   00136
  5148.     PUSHL   #1                 ;#1                                               01  DD   00138
  5149.     PUSHL   #1                 ;#1                                               01  DD   0013A
  5150.     PUSHAB  336(R8)                 ;NO_LOG_TEXT                                        0150   C8  9F   0013C
  5151. 14$:    CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   00140
  5152.     CLRL    -2480(R10)             ;SESSION_LOGGING               3218               F650   CA  D4   00143
  5153. 15$:    BRW     37$                 ;37$                       3219                015C  31   00147
  5154. 16$:    CMPB    (R6), #82             ;(ESC_PTR), #82               3222       52   8F         66  91   0014A
  5155.     BEQL    17$                 ;17$                                               06  13   0014E
  5156.     CMPB    (R6), #114             ;(ESC_PTR), #114                            72   8F         66  91   00150
  5157.     BNEQ    20$                 ;20$                                               24  12   00154
  5158. 17$:    MOVL    -2484(R10), -2480(R10)         ;SESSION_OPEN, SESSION_LOGGING        3229     F650   CA     F64C   CA  D0   00156
  5159.     BLBC    -2480(R10), 19$             ;SESSION_LOGGING, 19$               3231            0C     F650   CA  E9   0015D
  5160.     PUSHL   #1                 ;#1                       3233                  01  DD   00162
  5161.     PUSHL   #1                 ;#1                                               01  DD   00164
  5162.     PUSHL   #1                 ;#1                                               01  DD   00166
  5163.     PUSHAB  416(R8)                 ;START_LOG_TEXT                                    01A0   C8  9F   00168
  5164. 18$:    BRB     6$                 ;6$                                               82  11   0016C
  5165. 19$:    PUSHL   #1                 ;#1                       3235                  01  DD   0016E
  5166.     PUSHL   #1                 ;#1                                               01  DD   00170
  5167.     PUSHL   #1                 ;#1                                               01  DD   00172
  5168.     PUSHAB  392(R8)                 ;NO_LOG_TEXT                                        0188   C8  9F   00174
  5169.     BRB     18$                 ;18$                                               F2  11   00178
  5170. 20$:    CMPB    (R6), #83             ;(ESC_PTR), #83               3240       53   8F         66  91   0017A
  5171.     BEQL    21$                 ;21$                                               09  13   0017E
  5172.     CMPB    (R6), #115             ;(ESC_PTR), #115                            73   8F         66  91   00180
  5173.     BEQL    21$                 ;21$                                               03  13   00184
  5174.     BRW     34$                 ;34$                                             00F4  31   00186
  5175. 21$:    CLRQ    -(SP)                 ;-(SP)                       3242                  7E  7C   00189
  5176.     PUSHL   #1                 ;#1                                               01  DD   0018B
  5177.     PUSHAB  440(R8)                 ;P.ACY                                            01B8   C8  9F   0018D
  5178.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   00191
  5179.     PUSHL   #1                 ;#1                       3243                  01  DD   00194
  5180.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00196
  5181.     PUSHAB  -28(R11)             ;TERM_DESC                                      E4   AB  9F   00198
  5182.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   0019B
  5183.     CLRQ    -(SP)                 ;-(SP)                       3244                  7E  7C   0019E
  5184.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   001A0
  5185.     PUSHAB  468(R8)                 ;P.ADA                                            01D4   C8  9F   001A2
  5186.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   001A6
  5187.     PUSHL   -44(R10)             ;ESC_CHR_LEN                   3245             D4   AA  DD   001A9
  5188.     PUSHAB  -40(R10)             ;ESC_CHR_MSG                                      D8   AA  9F   001AC
  5189.     PUSHL   #1                 ;#1                                               01  DD   001AF
  5190.     CALLS   #3, -291(R9)             ;#3, STORE_INPUT                          FEDD   C9         03  FB   001B1
  5191.     PUSHL   #1                 ;#1                       3246                  01  DD   001B6
  5192.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   001B8
  5193.     PUSHAB  480(R8)                 ;P.ADC                                            01E0   C8  9F   001BA
  5194.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   001BE
  5195.     CLRQ    -(SP)                 ;-(SP)                       3247                  7E  7C   001C1
  5196.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   001C3
  5197.     PUSHAB  504(R8)                 ;P.ADE                                            01F8   C8  9F   001C5
  5198.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   001C9
  5199.     BLBC    G^ECHO_FLAG, 22$         ;ECHO_FLAG, 22$               3249            0A 00000000G  00  E9   001CC
  5200.     PUSHL   #1                 ;#1                       3251                  01  DD   001D3
  5201.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   001D5
  5202.     PUSHAB  516(R8)                 ;P.ADG                                            0204   C8  9F   001D7
  5203.     BRB     23$                 ;23$                                               08  11   001DB
  5204. 22$:    PUSHL   #1                 ;#1                       3253                  01  DD   001DD
  5205.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   001DF
  5206.     PUSHAB  528(R8)                 ;P.ADI                                            0210   C8  9F   001E1
  5207. 23$:    CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   001E5
  5208.     CLRQ    -(SP)                 ;-(SP)                       3255                  7E  7C   001E8
  5209.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   001EA
  5210.     PUSHAB  548(R8)                 ;P.ADK                                            0224   C8  9F   001EC
  5211.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   001F0
  5212.     CASEL   G^PARITY_TYPE, #0, #4         ;PARITY_TYPE, #0, #4               3257            00 00000000G  00  CF   001F3
  5213.                          ;                                         04       001FA
  5214. 24$:    .WORD   25$-24$,-             ;25$-24$,-                                   0028       000A       001FB
  5215.         28$-24$,-             ;28$-24$,-                             0014       001E       001FF
  5216.         27$-24$,-             ;27$-24$,-                                   0032       00203
  5217.         26$-24$,-             ;26$-24$,-
  5218.         29$-24$                 ;29$-24$
  5219. 25$:    PUSHL   #1                 ;#1                       3261                  01  DD   00205
  5220.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00207
  5221.     PUSHAB  560(R8)                 ;P.ADM                                            0230   C8  9F   00209
  5222.     BRB     30$                 ;30$                                               26  11   0020D
  5223. 26$:    PUSHL   #1                 ;#1                       3264                  01  DD   0020F
  5224.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00211
  5225.     PUSHAB  572(R8)                 ;P.ADO                                            023C   C8  9F   00213
  5226.     BRB     30$                 ;30$                                               1C  11   00217
  5227. 27$:    PUSHL   #1                 ;#1                       3267                  01  DD   00219
  5228.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0021B
  5229.     PUSHAB  584(R8)                 ;P.ADQ                                            0248   C8  9F   0021D
  5230.     BRB     30$                 ;30$                                               12  11   00221
  5231. 28$:    PUSHL   #1                 ;#1                       3270                  01  DD   00223
  5232.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00225
  5233.     PUSHAB  596(R8)                 ;P.ADS                                            0254   C8  9F   00227
  5234.     BRB     30$                 ;30$                                               08  11   0022B
  5235. 29$:    PUSHL   #1                 ;#1                       3273                  01  DD   0022D
  5236.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0022F
  5237.     PUSHAB  612(R8)                 ;P.ADU                                            0264   C8  9F   00231
  5238. 30$:    CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   00235
  5239.     CLRQ    -(SP)                 ;-(SP)                       3276                  7E  7C   00238
  5240.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   0023A
  5241.     PUSHAB  632(R8)                 ;P.ADW                                            0278   C8  9F   0023C
  5242.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   00240
  5243.     TSTL    -2484(R10)             ;SESSION_OPEN                   3278               F64C   CA  D5   00243
  5244.     BLEQ    32$                 ;32$                                               27  15   00247
  5245.     CLRQ    -(SP)                 ;-(SP)                       3281                  7E  7C   00249
  5246.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   0024B
  5247.     PUSHAB  -36(R11)             ;SESSION_DESC                                      DC   AB  9F   0024D
  5248.     CALLS   #4, (R9)             ;#4, TYPE_MSG                                     69         04  FB   00250
  5249.     BLBC    -2480(R10), 31$             ;SESSION_LOGGING, 31$               3283            0C     F650   CA  E9   00253
  5250.     PUSHL   #1                 ;#1                       3285                  01  DD   00258
  5251.     PUSHL   #1                 ;#1                                               01  DD   0025A
  5252.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   0025C
  5253.     PUSHAB  648(R8)                 ;P.ADY                                            0288   C8  9F   0025E
  5254.     BRB     33$                 ;33$                                               16  11   00262
  5255. 31$:    PUSHL   #1                 ;#1                       3287                  01  DD   00264
  5256.     PUSHL   #1                 ;#1                                               01  DD   00266
  5257.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00268
  5258.     PUSHAB  668(R8)                 ;P.AEA                                            029C   C8  9F   0026A
  5259.     BRB     33$                 ;33$                                               0A  11   0026E
  5260. 32$:    PUSHL   #1                 ;#1                       3291                  01  DD   00270
  5261.     PUSHL   #1                 ;#1                                               01  DD   00272
  5262.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00274
  5263.     PUSHAB  692(R8)                 ;P.AEC                                            02B4   C8  9F   00276
  5264. 33$:    BRW     6$                 ;6$                                             FE73  31   0027A
  5265. 34$:    MOVL    G^ESCAPE_CHR, R0         ;ESCAPE_CHR, R0               3296            50 00000000G  00  D0   0027D
  5266.     CMPZV   #0, #8, (R6), R0         ;#0, #8, (ESC_PTR), R0                                 08         00  ED   00284
  5267.                          ;                                   50         66       00287
  5268.     BNEQ    35$                 ;35$                                               05  12   00289
  5269.     MOVB    R0, (R6)             ;R0, (ESC_PTR)                   3297            66         50  90   0028B
  5270.     BRB     38$                 ;38$                       3172                  19  11   0028E
  5271. 35$:    CMPB    (R6), #48             ;(ESC_PTR), #48               3299            30         66  91   00290
  5272.     BNEQ    36$                 ;36$                                               04  12   00293
  5273.     CLRB    (R6)                 ;(ESC_PTR)                   3300                  66  94   00295
  5274.     BRB     38$                 ;38$                                               10  11   00297
  5275. 36$:    PUSHL   #1                 ;#1                       3304                  01  DD   00299
  5276.     PUSHAB  700(R8)                 ;P.AEE                                            02BC   C8  9F   0029B
  5277.     PUSHL   #1                 ;#1                                               01  DD   0029F
  5278.     CALLS   #3, -291(R9)             ;#3, STORE_INPUT                          FEDD   C9         03  FB   002A1
  5279. 37$:    MOVL    #1, R2                 ;#1, EAT_CHR                   3305            52         01  D0   002A6
  5280. 38$:    TSTL    R2                 ;EAT_CHR                   3309                  52  D5   002A9
  5281.     BLEQ    39$                 ;39$                                               15  15   002AB
  5282.     SUBL3   R2, (R10), R0             ;EAT_CHR, NUM_CHR_IN, R0           3312            6A         52  C3   002AD
  5283.                          ;                                         50       002B0
  5284.     MOVL    R0, (R10)             ;R0, NUM_CHR_IN                                 6A         50  D0   002B1
  5285.     CMPL    R0, R7                 ;R0, INDEX                                     57         50  D1   002B4
  5286.     BEQL    39$                 ;39$                                               09  13   002B7
  5287.     SUBL3   R7, (R10), R0             ;INDEX, NUM_CHR_IN, R0               3314            6A         57  C3   002B9
  5288.                          ;                                         50       002BC
  5289.     MOVC3   R0, (R2)[R6], (R6)         ;R0, (EAT_CHR)[ESC_PTR], (ESC_PTR)                    6246         50  28   002BD
  5290.                          ;                                         66       002C1
  5291. 39$:    CLRL    R0                 ;R0                       3317                  50  D4   002C2
  5292.     RET                      ;                                               04   002C4
  5293.  
  5294. ; Routine Size:  709 bytes,    Routine Base:  $CODE$ + 1184
  5295.  
  5296.  
  5297. ;   3319  3     %SBTTL 'TERM_CONNECT -- MYTINP'
  5298. ;   3320  3    ! Main portion of MYTINP
  5299. ;   3321  3     
  5300. ;   3322  3        IF (STATUS = $READEF (EFN = XITEFN, STATE = STATE)) NEQ SS$_WASCLR THEN RETURN .STATUS;
  5301. ;   3323  3     
  5302. ;   3324  3        NUM_CHR_IN = .IN_IOSB [MYT, .INP_BUFNUM, OFFSET] + .IN_IOSB [MYT, .INP_BUFNUM, EOFSIZ];
  5303. ;   3325  3     
  5304. ;   3326  3        IF .NUM_CHR_IN NEQ 0
  5305. ;   3327  3        THEN
  5306. ;   3328  3     
  5307. ;   3329  3            IF CHK_FOR_EXIT (.INP_BUFNUM)
  5308. ;   3330  3            THEN
  5309. ;   3331  4            BEGIN
  5310. ;   3332  4            $CANTIM ();
  5311. ;   3333  4            $SETEF (EFN = XITEFN);        ! Exit characters typed.  Set flag.
  5312. ;   3334  4            RETURN 1;
  5313. ;   3335  4            END
  5314. ;   3336  3            ELSE
  5315. ;   3337  3            STORE_INPUT (MYT, CH$PTR (INP_BUF [MYT, .INP_BUFNUM]), .NUM_CHR_IN);
  5316. ;   3338  3     
  5317. ;   3339  3                            ! Store char.
  5318. ;   3340  3     
  5319. ;   3341  3        IF (STATUS = $READEF (EFN = XITEFN, STATE = STATE)) EQL SS$_WASCLR
  5320. ;   3342  3        THEN
  5321. ;   3343  3    ! If we got some characters, then queue up the next read for lots of
  5322. ;   3344  3    ! characters with a 0 timeout (get what we can).  Otherwise queue up
  5323. ;   3345  3    ! a read for one character waiting forever.
  5324. ;   3346  3     
  5325. ;   3347  3            IF .NUM_CHR_IN GTR 0 OR .INP_BUFNUM NEQ 0
  5326. ;   3348  3            THEN
  5327. ;   3349  3    ! Queue up a read for the console terminal
  5328. ; P 3350  3            STATUS = $QIO (CHAN = .MYT_CHAN, FUNC = .MYT_QIO_FUNC OR IO$M_TIMED,
  5329. ; P 3351  3                ASTADR = MYTINP, P1 = INP_BUF [MYT, .INP_BUFNUM], P2 = INP_BUFSIZ, P3 = 0,
  5330. ;   3352  4                ASTPRM = .INP_BUFNUM, IOSB = IN_IOSB [MYT, .INP_BUFNUM, 0])
  5331. ;   3353  3            ELSE
  5332. ; P 3354  3            STATUS = $QIO (CHAN = .MYT_CHAN, FUNC = .MYT_QIO_FUNC, ASTADR = MYTINP,
  5333. ; P 3355  3                P1 = INP_BUF [MYT, .INP_BUFNUM], P2 = 1, ASTPRM = .INP_BUFNUM,
  5334. ;   3356  3                IOSB = IN_IOSB [MYT, .INP_BUFNUM, 0]);
  5335. ;   3357  3     
  5336. ;   3358  3        IF NOT .STATUS
  5337. ;   3359  3        THEN
  5338. ;   3360  4            BEGIN
  5339. ;   3361  4            LIB$SIGNAL (.STATUS);
  5340. ;   3362  4            $SETEF (EFN = XITEFN);
  5341. ;   3363  3            END;
  5342. ;   3364  3     
  5343. ;   3365  3        RETURN .STATUS;
  5344. ;   3366  2        END;                    ! End of MYTINP
  5345.  
  5346.  
  5347.  
  5348.  
  5349.  
  5350. ;MYTINP
  5351. U.109:    .WORD   ^M<R2,R3,R4,R5,R6,R7,R8>     ;Save R2,R3,R4,R5,R6,R7,R8           3081                    01FC   00000
  5352.     MOVAB   G^SYS$SETEF, R8             ;SYS$SETEF, R8                                     58 00000000G  00  9E   00002
  5353.     MOVAB   G^SYS$READEF, R7         ;SYS$READEF, R7                                 57 00000000G  00  9E   00009
  5354.     MOVAB   B^U.109, R6             ;U.109, R6                                     56    ED   AF  9E   00010
  5355.     MOVAB   G^U.110, R5             ;U.110, R5                                     55 00000000'  00  9E   00014
  5356.     PUSHAB  -4(R5)                 ;STATE                       3322             FC   A5  9F   0001B
  5357.     PUSHL   #5                 ;#5                                               05  DD   0001E
  5358.     CALLS   #2, (R7)             ;#2, SYS$READEF                                 67         02  FB   00020
  5359.     MOVL    R0, (R5)             ;R0, STATUS                                     65         50  D0   00023
  5360.     CMPL    R0, #1                 ;R0, #1                                     01         50  D1   00026
  5361.     BEQL    1$                 ;1$                                               03  13   00029
  5362.     BRW     8$                 ;8$                                             00CA  31   0002B
  5363. 1$:    MOVL    4(AP), R2             ;INP_BUFNUM, R2               3324            52    04   AC  D0   0002E
  5364.     PUSHAQ  -826(R5)[R2]             ;IN_IOSB+2[R2]                                        FCC6 C542  7F   00032
  5365.     MOVZWL  @(SP)+, R0             ;@(SP)+, R0                                     50         9E  3C   00037
  5366.     PUSHAQ  -822(R5)[R2]             ;IN_IOSB+6[R2]                                        FCCA C542  7F   0003A
  5367.     MOVZWL  @(SP)+, R1             ;@(SP)+, R1                                     51         9E  3C   0003F
  5368.     ADDL3   R1, R0, 4(R5)             ;R1, R0, NUM_CHR_IN                                 50         51  C1   00042
  5369.                          ;                                    04   A5       00045
  5370.     BEQL    3$                 ;3$                       3326                  33  13   00047
  5371.     PUSHL   R2                 ;R2                       3329                  52  DD   00049
  5372.     CALLS   #1, -709(R6)             ;#1, CHK_FOR_EXIT                          FD3B   C6         01  FB   0004B
  5373.     BLBC    R0, 2$                 ;R0, 2$                                     12         50  E9   00050
  5374.     CLRQ    -(SP)                 ;-(SP)                       3332                  7E  7C   00053
  5375.     CALLS   #2, G^SYS$CANTIM         ;#2, SYS$CANTIM                      00000000G  00         02  FB   00055
  5376.     PUSHL   #5                 ;#5                       3333                  05  DD   0005C
  5377.     CALLS   #1, (R8)             ;#1, SYS$SETEF                                     68         01  FB   0005E
  5378.     MOVL    #1, R0                 ;#1, R0                   3334            50         01  D0   00061
  5379.     RET                      ;                                               04   00064
  5380. 2$:    PUSHL   4(R5)                 ;NUM_CHR_IN                   3337             04   A5  DD   00065
  5381.     MULL3   #80, R2, R0             ;#80, R2, R0                                     52 00000050   8F  C5   00068
  5382.                          ;                                         50       0006F
  5383.     PUSHAB  -796(R5)[R0]             ;INP_BUF[R0]                                        FCE4 C540  9F   00070
  5384.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00075
  5385.     CALLS   #3, -1093(R6)             ;#3, STORE_INPUT                          FBBB   C6         03  FB   00077
  5386. 3$:    PUSHAB  -4(R5)                 ;STATE                       3341             FC   A5  9F   0007C
  5387.     PUSHL   #5                 ;#5                                               05  DD   0007F
  5388.     CALLS   #2, (R7)             ;#2, SYS$READEF                                 67         02  FB   00081
  5389.     MOVL    R0, (R5)             ;R0, STATUS                                     65         50  D0   00084
  5390.     CMPL    R0, #1                 ;R0, #1                                     01         50  D1   00087
  5391.     BNEQ    7$                 ;7$                                               58  12   0008A
  5392.     MULL3   #80, R2, R0             ;#80, R2, R0                   3352            52 00000050   8F  C5   0008C
  5393.                          ;                                         50       00093
  5394.     MOVAB   -796(R5)[R0], R4         ;INP_BUF[R0], R4                                 54     FCE4 C540  9E   00094
  5395.     MOVAQ   -828(R5)[R2], R3         ;IN_IOSB[R2], R3                                 53     FCC4 C542  7E   0009A
  5396.     MOVL    -44(R5), R1             ;MYT_QIO_FUNC, R1                                 51    D4   A5  D0   000A0
  5397.     MOVL    -840(R5), R0             ;MYT_CHAN, R0                                     50     FCB8   C5  D0   000A4
  5398.     TSTL    4(R5)                 ;NUM_CHR_IN                   3347             04   A5  D5   000A9
  5399.     BGTR    4$                 ;4$                                               04  14   000AC
  5400.     TSTL    R2                 ;R2                                               52  D5   000AE
  5401.     BEQL    5$                 ;5$                                               18  13   000B0
  5402. 4$:    CLRQ    -(SP)                 ;-(SP)                       3352                  7E  7C   000B2
  5403.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   000B4
  5404.     MOVZBL  #80, -(SP)             ;#80, -(SP)                                     7E    50   8F  9A   000B6
  5405.     PUSHR   #^M<R2,R4>             ;#^M<R2,R4>                                           14  BB   000BA
  5406.     PUSHR   #^M<R3,R6>             ;#^M<R3,R6>                                        0048   8F  BB   000BC
  5407.     BISL3   #128, R1, -(SP)             ;#128, R1, -(SP)                                 51 00000080   8F  C9   000C0
  5408.                          ;                                         7E       000C7
  5409.     BRB     6$                 ;6$                                               0C  11   000C8
  5410. 5$:    CLRQ    -(SP)                 ;-(SP)                       3356                  7E  7C   000CA
  5411.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   000CC
  5412.     PUSHL   #1                 ;#1                                               01  DD   000CE
  5413.     PUSHR   #^M<R2,R4>             ;#^M<R2,R4>                                           14  BB   000D0
  5414.     PUSHR   #^M<R1,R3,R6>             ;#^M<R1,R3,R6>                                        004A   8F  BB   000D2
  5415. 6$:    PUSHL   R0                 ;R0                                               50  DD   000D6
  5416.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   000D8
  5417.     CALLS   #12, G^SYS$QIO             ;#12, SYS$QIO                          00000000G  00         0C  FB   000DA
  5418.     MOVL    R0, (R5)             ;R0, STATUS                                     65         50  D0   000E1
  5419. 7$:    MOVL    (R5), R0             ;STATUS, R0                   3358            50         65  D0   000E4
  5420.     BLBS    R0, 8$                 ;R0, 8$                                     0E         50  E8   000E7
  5421.     PUSHL   R0                 ;R0                       3361                  50  DD   000EA
  5422.     CALLS   #1, G^LIB$SIGNAL         ;#1, LIB$SIGNAL                      00000000G  00         01  FB   000EC
  5423.     PUSHL   #5                 ;#5                       3362                  05  DD   000F3
  5424.     CALLS   #1, (R8)             ;#1, SYS$SETEF                                     68         01  FB   000F5
  5425. 8$:    MOVL    (R5), R0             ;STATUS, R0                   3365            50         65  D0   000F8
  5426.     RET                      ;                                               04   000FB
  5427.  
  5428. ; Routine Size:  252 bytes,    Routine Base:  $CODE$ + 1449
  5429.  
  5430.  
  5431. ;   3367  2     %SBTTL 'TERM_CONNECT -- TRMINP'
  5432. ;   3368  2        ROUTINE TRMINP (INP_BUFNUM) =
  5433. ;   3369  2     
  5434. ;   3370  2    !++
  5435. ;   3371  2    !    This AST routine receives characters from the channel TERM_CHAN and
  5436. ;   3372  2    !    outputs the characters to the channel MYT_CHAN.  INP_BUFNUM contains
  5437. ;   3373  2    !    the number of the input buffer.
  5438. ;   3374  2    !--
  5439. ;   3375  2     
  5440. ;   3376  3        BEGIN
  5441. ;   3377  3     
  5442. ;   3378  3        LOCAL
  5443. ;   3379  3            NUM_CHR_IN,
  5444. ;   3380  3            STATUS;
  5445. ;   3381  3     
  5446. ;   3382  3        IF (STATUS = $READEF (EFN = XITEFN, STATE = STATE)) NEQ SS$_WASCLR THEN RETURN .STATUS;
  5447. ;   3383  3     
  5448. ;   3384  3        NUM_CHR_IN = .IN_IOSB [TRM, .INP_BUFNUM, OFFSET] + .IN_IOSB [TRM, .INP_BUFNUM, EOFSIZ];
  5449. ;   3385  3     
  5450. ;   3386  3        IF .NUM_CHR_IN NEQ 0
  5451. ;   3387  3        THEN
  5452. ;   3388  3            STORE_INPUT (TRM, CH$PTR (INP_BUF [TRM, .INP_BUFNUM]),
  5453. ;   3389  3            .NUM_CHR_IN);
  5454. ;   3390  3     
  5455. ;   3391  3        IF (STATUS = $READEF (EFN = XITEFN, STATE = STATE)) EQL SS$_WASCLR
  5456. ;   3392  3        THEN
  5457. ;   3393  4                BEGIN
  5458. ;   3394  4    
  5459. ;   3395  4    ! Now that there are no pending I/Os we can call the routine to send
  5460. ;   3396  4    ! a break signal to the outgoing terminal line if necessary.
  5461. ;   3397  4    ! Pending I/Os would block the QIO SETMODE instruction from taking
  5462. ;   3398  4    ! place, effectively hanging kermit until the current I/O read
  5463. ;   3399  4    ! completes (if ever).
  5464. ;   3400  4    
  5465. ;   3401  4                IF .Send_Break_TTY_Flag EQL 1
  5466. ;   3402  4                THEN Send_Break_TTY ();
  5467. ;   3403  4    
  5468. ;   3404  4    !
  5469. ;   3405  4    ! If we actually got something input, then queue up a read with a 0
  5470. ;   3406  4    ! timeout for the whole buffer.  Otherwise, queue up a single character
  5471. ;   3407  4    ! read, if this is the first buffer.
  5472. ;   3408  4    !
  5473. ;   3409  4     
  5474. ;   3410  4            IF .NUM_CHR_IN GTR 0 OR .INP_BUFNUM NEQ 0
  5475. ;   3411  4            THEN
  5476. ; P 3412  4            STATUS = $QIO (CHAN = .TERM_CHAN,
  5477. ; P 3413  4                FUNC = IO$_TTYREADALL OR IO$M_NOECHO OR IO$M_TIMED, ASTADR = TRMINP,
  5478. ; P 3414  4                P1 = INP_BUF [TRM, .INP_BUFNUM], P2 = INP_BUFSIZ, P3 = 0,
  5479. ; P 3415  4                IOSB = IN_IOSB [TRM,
  5480. ;   3416  5                .INP_BUFNUM, 0], ASTPRM = .INP_BUFNUM)
  5481. ;   3417  4            ELSE
  5482. ; P 3418  4            STATUS = $QIO (CHAN = .TERM_CHAN, FUNC = IO$_TTYREADALL OR IO$M_NOECHO,
  5483. ; P 3419  4                ASTADR = TRMINP, P1 = INP_BUF [TRM, .INP_BUFNUM], P2 = 1,
  5484. ; P 3420  4                IOSB = IN_IOSB [TRM,
  5485. ;   3421  4                .INP_BUFNUM, 0], ASTPRM = .INP_BUFNUM);
  5486. ;   3422  4    
  5487. ;   3423  3                END;
  5488. ;   3424  3    
  5489. ;   3425  3        IF NOT .STATUS
  5490. ;   3426  3        THEN
  5491. ;   3427  4            BEGIN
  5492. ;   3428  4            LIB$SIGNAL (.STATUS);
  5493. ;   3429  4            $SETEF (EFN = XITEFN);
  5494. ;   3430  3            END;
  5495. ;   3431  3     
  5496. ;   3432  3        RETURN .STATUS;
  5497. ;   3433  2        END;                    ! End of TRMINP
  5498.  
  5499.  
  5500.  
  5501.  
  5502.  
  5503. ;TRMINP
  5504. U.119:    .WORD   ^M<R2,R3,R4,R5,R6,R7,R8>     ;Save R2,R3,R4,R5,R6,R7,R8           3368                    01FC   00000
  5505.     MOVAB   G^SYS$READEF, R8         ;SYS$READEF, R8                                 58 00000000G  00  9E   00002
  5506.     MOVAB   B^U.119, R7             ;U.119, R7                                     57    F4   AF  9E   00009
  5507.     MOVAB   G^U.94, R6             ;U.94, R6                                     56 00000000'  00  9E   0000D
  5508.     PUSHL   R6                 ;R6                       3382                  56  DD   00014
  5509.     PUSHL   #5                 ;#5                                               05  DD   00016
  5510.     CALLS   #2, (R8)             ;#2, SYS$READEF                                 68         02  FB   00018
  5511.     MOVL    R0, R5                 ;R0, STATUS                                     55         50  D0   0001B
  5512.     CMPL    R5, #1                 ;STATUS, #1                                     01         55  D1   0001E
  5513.     BEQL    1$                 ;1$                                               03  13   00021
  5514.     BRW     8$                 ;8$                                             00B4  31   00023
  5515. 1$:    MOVL    4(AP), R2             ;INP_BUFNUM, R2               3384            52    04   AC  D0   00026
  5516.     PUSHAQ  -806(R6)[R2]             ;IN_IOSB+18[R2]                                    FCDA C642  7F   0002A
  5517.     MOVZWL  @(SP)+, R4             ;@(SP)+, NUM_CHR_IN                                 54         9E  3C   0002F
  5518.     PUSHAQ  -802(R6)[R2]             ;IN_IOSB+22[R2]                                    FCDE C642  7F   00032
  5519.     MOVZWL  @(SP)+, R0             ;@(SP)+, R0                                     50         9E  3C   00037
  5520.     ADDL2   R0, R4                 ;R0, NUM_CHR_IN                                 54         50  C0   0003A
  5521.     BEQL    2$                 ;2$                       3386                  16  13   0003D
  5522.     PUSHL   R4                 ;NUM_CHR_IN                   3388                  54  DD   0003F
  5523.     MULL3   #80, R2, R0             ;#80, R2, R0                                     52 00000050   8F  C5   00041
  5524.                          ;                                         50       00048
  5525.     PUSHAB  -631(R6)[R0]             ;INP_BUF+161[R0]                                    FD89 C640  9F   00049
  5526.     PUSHL   #1                 ;#1                                               01  DD   0004E
  5527.     CALLS   #3, -1345(R7)             ;#3, STORE_INPUT                          FABF   C7         03  FB   00050
  5528. 2$:    PUSHL   R6                 ;R6                       3391                  56  DD   00055
  5529.     PUSHL   #5                 ;#5                                               05  DD   00057
  5530.     CALLS   #2, (R8)             ;#2, SYS$READEF                                 68         02  FB   00059
  5531.     MOVL    R0, R5                 ;R0, STATUS                                     55         50  D0   0005C
  5532.     CMPL    R5, #1                 ;STATUS, #1                                     01         55  D1   0005F
  5533.     BNEQ    7$                 ;7$                                               61  12   00062
  5534.     CMPL    G^SEND_BREAK_TTY_FLAG, #1     ;SEND_BREAK_TTY_FLAG, #1           3401            01 00000000'  00  D1   00064
  5535.     BNEQ    3$                 ;3$                                               05  12   0006B
  5536.     CALLS   #0, -2095(R7)             ;#0, SEND_BREAK_TTY               3402     F7D1   C7         00  FB   0006D
  5537. 3$:    MULL3   #80, R2, R0             ;#80, R2, R0                   3416            52 00000050   8F  C5   00072
  5538.                          ;                                         50       00079
  5539.     MOVAB   -631(R6)[R0], R3         ;INP_BUF+161[R0], R3                                 53     FD89 C640  9E   0007A
  5540.     MOVAQ   -808(R6)[R2], R1         ;IN_IOSB+16[R2], R1                                 51     FCD8 C642  7E   00080
  5541.     MOVL    -3832(R6), R0             ;TERM_CHAN, R0                                     50     F108   C6  D0   00086
  5542.     TSTL    R4                 ;NUM_CHR_IN                   3410                  54  D5   0008B
  5543.     BGTR    4$                 ;4$                                               04  14   0008D
  5544.     TSTL    R2                 ;R2                                               52  D5   0008F
  5545.     BEQL    5$                 ;5$                                               14  13   00091
  5546. 4$:    CLRQ    -(SP)                 ;-(SP)                       3416                  7E  7C   00093
  5547.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00095
  5548.     MOVZBL  #80, -(SP)             ;#80, -(SP)                                     7E    50   8F  9A   00097
  5549.     PUSHR   #^M<R2,R3>             ;#^M<R2,R3>                                           0C  BB   0009B
  5550.     PUSHR   #^M<R1,R7>             ;#^M<R1,R7>                                        0082   8F  BB   0009D
  5551.     MOVZBL  #250, -(SP)             ;#250, -(SP)                                     7E    FA   8F  9A   000A1
  5552.     BRB     6$                 ;6$                                               10  11   000A5
  5553. 5$:    CLRQ    -(SP)                 ;-(SP)                       3421                  7E  7C   000A7
  5554.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   000A9
  5555.     PUSHL   #1                 ;#1                                               01  DD   000AB
  5556.     PUSHR   #^M<R2,R3>             ;#^M<R2,R3>                                           0C  BB   000AD
  5557.     PUSHR   #^M<R1,R7>             ;#^M<R1,R7>                                        0082   8F  BB   000AF
  5558.     MOVZBL  #122, -(SP)             ;#122, -(SP)                                     7E    7A   8F  9A   000B3
  5559. 6$:    PUSHL   R0                 ;R0                                               50  DD   000B7
  5560.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   000B9
  5561.     CALLS   #12, G^SYS$QIO             ;#12, SYS$QIO                          00000000G  00         0C  FB   000BB
  5562.     MOVL    R0, R5                 ;R0, STATUS                                     55         50  D0   000C2
  5563. 7$:    BLBS    R5, 8$                 ;STATUS, 8$                   3425            12         55  E8   000C5
  5564.     PUSHL   R5                 ;STATUS                   3428                  55  DD   000C8
  5565.     CALLS   #1, G^LIB$SIGNAL         ;#1, LIB$SIGNAL                      00000000G  00         01  FB   000CA
  5566.     PUSHL   #5                 ;#5                       3429                  05  DD   000D1
  5567.     CALLS   #1, G^SYS$SETEF             ;#1, SYS$SETEF                          00000000G  00         01  FB   000D3
  5568. 8$:    MOVL    R5, R0                 ;STATUS, R0                   3432            50         55  D0   000DA
  5569.     RET                      ;                                               04   000DD
  5570.  
  5571. ; Routine Size:  222 bytes,    Routine Base:  $CODE$ + 1545
  5572.  
  5573.  
  5574. ;   3434  2     %SBTTL 'TERM_CONNECT -- ESC_MSG'
  5575. ;   3435  2        ROUTINE ESC_MSG (ESC_TEXT) =
  5576. ;   3436  3        BEGIN
  5577. ;   3437  3     
  5578. ;   3438  3        MAP
  5579. ;   3439  3            ESC_TEXT : REF VECTOR [, BYTE];
  5580. ;   3440  3     
  5581. ;   3441  3        SELECTONE .ESCAPE_CHR OF
  5582. ;   3442  3            SET
  5583. ;   3443  3     
  5584. ;   3444  3            [CHR_NUL, 0] :
  5585. ;   3445  4            BEGIN
  5586. ;   3446  4     
  5587. ;   3447  4            BIND
  5588. ;   3448  4                NUL_TXT = %ASCID'^@ or control-space on VT-100';
  5589. ;   3449  4     
  5590. ;   3450  4            MAP
  5591. ;   3451  4                NUL_TXT : BLOCK [8, BYTE];
  5592. ;   3452  4     
  5593. ;   3453  4            CH$MOVE (.NUL_TXT [DSC$W_LENGTH], CH$PTR (.NUL_TXT [DSC$A_POINTER]),
  5594. ;   3454  4                CH$PTR (.ESC_TEXT));
  5595. ;   3455  4            RETURN .NUL_TXT [DSC$W_LENGTH];
  5596. ;   3456  3            END;
  5597. ;   3457  3     
  5598. ;   3458  3            [CHR_RS, %O'36'] :
  5599. ;   3459  4            BEGIN
  5600. ;   3460  4     
  5601. ;   3461  4            BIND
  5602. ;   3462  4                RS_TXT = %ASCID'^^ or ^~ on VT-100';
  5603. ;   3463  4     
  5604. ;   3464  4            MAP
  5605. ;   3465  4                RS_TXT : BLOCK [8, BYTE];
  5606. ;   3466  4     
  5607. ;   3467  4            CH$MOVE (.RS_TXT [DSC$W_LENGTH], CH$PTR (.RS_TXT [DSC$A_POINTER]),
  5608. ;   3468  4                CH$PTR (.ESC_TEXT));
  5609. ;   3469  4            RETURN .RS_TXT [DSC$W_LENGTH];
  5610. ;   3470  3            END;
  5611. ;   3471  3     
  5612. ;   3472  3            [CHR_US, %O'37'] :
  5613. ;   3473  4            BEGIN
  5614. ;   3474  4     
  5615. ;   3475  4            BIND
  5616. ;   3476  4                US_TXT = %ASCID'^_ or ^? on VT-100';
  5617. ;   3477  4     
  5618. ;   3478  4            MAP
  5619. ;   3479  4                US_TXT : BLOCK [8, BYTE];
  5620. ;   3480  4     
  5621. ;   3481  4            CH$MOVE (.US_TXT [DSC$W_LENGTH], CH$PTR (.US_TXT [DSC$A_POINTER]),
  5622. ;   3482  4                CH$PTR (.ESC_TEXT));
  5623. ;   3483  4            RETURN .US_TXT [DSC$W_LENGTH];
  5624. ;   3484  3            END;
  5625. ;   3485  3     
  5626. ;   3486  3            [1 TO %O'37'] :
  5627. ;   3487  4            BEGIN
  5628. ;   3488  4            ESC_TEXT [0] = %C'^';
  5629. ;   3489  4            ESC_TEXT [1] = .ESCAPE_CHR + %O'100';
  5630. ;   3490  4            RETURN 2;
  5631. ;   3491  3            END;
  5632. ;   3492  3     
  5633. ;   3493  3            [CHR_DEL, %O'177'] :
  5634. ;   3494  4            BEGIN
  5635. ;   3495  4            ESC_TEXT = 'DEL';
  5636. ;   3496  4            RETURN 3;
  5637. ;   3497  3            END;
  5638. ;   3498  3            TES;
  5639. ;   3499  3     
  5640. ;   3500  3        RETURN 0;                ! No escape character?
  5641. ;   3501  2        END;                    ! End of ESC_MSG
  5642.  
  5643.  
  5644.  
  5645.     .PSECT  $PLIT$,NOWRT,NOEXE,2
  5646.  
  5647.     .BLKB   3                                       ;                      0051D
  5648. P.AEG:    .ASCII  \^@ or control-space on VT-100\<0><0><0>
  5649.                          ;                                6F  63  20  72  6F  20  40  5E  00520
  5650.                          ;                          70  73  2D  6C  6F  72  74  6E  00528
  5651.                          ;                          56  20  6E  6F  20  65  63  61  00530
  5652.                          ;                          00  00  00  30  30  31  2D  54  00538
  5653. P.AEF:    .LONG   17694749             ;                                              010E001D  00540
  5654.     .ADDRESS P.AEG                 ;                                              00000000' 00544
  5655. P.AEI:    .ASCII  \^^ or ^~ on VT-100\<0><0>     ;                                7E  5E  20  72  6F  20  5E  5E  00548
  5656.                          ;                          31  2D  54  56  20  6E  6F  20  00550
  5657.                          ;                                      00  00  30  30  00558
  5658. P.AEH:    .LONG   17694738             ;                                              010E0012  0055C
  5659.     .ADDRESS P.AEI                 ;                                              00000000' 00560
  5660. P.AEK:    .ASCII  \^_ or ^? on VT-100\<0><0>     ;                                3F  5E  20  72  6F  20  5F  5E  00564
  5661.                          ;                          31  2D  54  56  20  6E  6F  20  0056C
  5662.                          ;                                      00  00  30  30  00574
  5663. P.AEJ:    .LONG   17694738             ;                                              010E0012  00578
  5664.     .ADDRESS P.AEK                 ;                                              00000000' 0057C
  5665.  
  5666. U.122=            P.AEF
  5667. U.124=            P.AEH
  5668. U.126=            P.AEJ
  5669.  
  5670.  
  5671.     .PSECT  $CODE$,NOWRT,2
  5672.  
  5673. ;ESC_MSG
  5674. U.120:    .WORD   ^M<R2,R3,R4,R5,R6,R7,R8>     ;Save R2,R3,R4,R5,R6,R7,R8           3435                    01FC   00000
  5675.     MOVAB   G^U.122, R8             ;U.122, R8                                     58 00000000'  00  9E   00002
  5676.     MOVL    G^ESCAPE_CHR, R6         ;ESCAPE_CHR, R6               3441            56 00000000G  00  D0   00009
  5677.     BNEQ    1$                 ;1$                       3444                  09  12   00010
  5678.     MOVZWL  (R8), R7             ;NUL_TXT, R7                   3453            57         68  3C   00012
  5679.     MOVL    4(R8), R0             ;NUL_TXT+4, R0                                     50    04   A8  D0   00015
  5680.     BRB     3$                 ;3$                       3454                  1C  11   00019
  5681. 1$:    CMPL    R6, #30                 ;R6, #30                   3458            1E         56  D1   0001B
  5682.     BNEQ    2$                 ;2$                                               0A  12   0001E
  5683.     MOVZWL  28(R8), R7             ;RS_TXT, R7                   3467            57    1C   A8  3C   00020
  5684.     MOVL    32(R8), R0             ;RS_TXT+4, R0                                     50    20   A8  D0   00024
  5685.     BRB     3$                 ;3$                       3468                  0D  11   00028
  5686. 2$:    CMPL    R6, #31                 ;R6, #31                   3472            1F         56  D1   0002A
  5687.     BNEQ    4$                 ;4$                                               11  12   0002D
  5688.     MOVZWL  56(R8), R7             ;US_TXT, R7                   3481            57    38   A8  3C   0002F
  5689.     MOVL    60(R8), R0             ;US_TXT+4, R0                                     50    3C   A8  D0   00033
  5690. 3$:    MOVC3   R7, (R0), @4(AP)         ;R7, (R0), @ESC_TEXT               3482            60         57  28   00037
  5691.                          ;                                    04   BC       0003A
  5692.     MOVL    R7, R0                 ;R7, R0                   3483            50         57  D0   0003C
  5693.     RET                      ;                                               04   0003F
  5694. 4$:    TSTL    R6                 ;R6                       3486                  56  D5   00040
  5695.     BLEQ    5$                 ;5$                                               17  15   00042
  5696.     CMPL    R6, #31                 ;R6, #31                                     1F         56  D1   00044
  5697.     BGTR    5$                 ;5$                                               12  14   00047
  5698.     MOVL    4(AP), R0             ;ESC_TEXT, R0                   3488            50    04   AC  D0   00049
  5699.     MOVB    #94, (R0)             ;#94, (R0)                                     60    5E   8F  90   0004D
  5700.     ADDB3   #64, R6, 1(R0)             ;#64, R6, 1(R0)               3489            56    40   8F  81   00051
  5701.                          ;                                    01   A0       00055
  5702.     MOVL    #2, R0                 ;#2, R0                   3490            50         02  D0   00057
  5703.     RET                      ;                                               04   0005A
  5704. 5$:    CMPL    R6, #127             ;R6, #127                   3493 0000007F   8F         56  D1   0005B
  5705.     BNEQ    6$                 ;6$                                               0C  12   00062
  5706.     MOVL    #4998468, 4(AP)             ;#4998468, ESC_TEXT               3495       04   AC 004C4544   8F  D0   00064
  5707.     MOVL    #3, R0                 ;#3, R0                   3496            50         03  D0   0006C
  5708.     RET                      ;                                               04   0006F
  5709. 6$:    CLRL    R0                 ;R0                       3500                  50  D4   00070
  5710.     RET                      ;                                               04   00072
  5711.  
  5712. ; Routine Size:  115 bytes,    Routine Base:  $CODE$ + 1623
  5713.  
  5714.  
  5715. ;   3502  2     %SBTTL 'TERM_CONNECT -- COMND_TRANSMIT'
  5716. ;   3503  2     
  5717. ;   3504  2    GLOBAL ROUTINE COMND_TRANSMIT : NOVALUE =       ! and below
  5718. ;   3505  2     
  5719. ;   3506  2    !++
  5720. ;   3507  2    ! FUNCTIONAL DESCRIPTION:
  5721. ;   3508  2    !
  5722. ;   3509  2    !   This routine transmits a file (or files) to the remote side one character
  5723. ;   3510  2    !   at a time.  It can display the numbers of the lines as they are transfered,
  5724. ;   3511  2    !   or echo back to the controling terminal from the remote so that progress of
  5725. ;   3512  2    !   the transmit can be monitored.  It can also delay between 0 and .9 secs
  5726. ;   3513  2    !   after each carriage return for machines that cannot keep up with the
  5727. ;   3514  2    !   transfer.  The file is transmitted blindly (except line feeds are removed)
  5728. ;   3515  2    !   with no error correction or packets.  This is useful for sending files to
  5729. ;   3516  2    !   systems where KERMIT is unavailable.
  5730. ;   3517  2    !
  5731. ;   3518  2    ! CALLING SEQUENCE:
  5732. ;   3519  2    !
  5733. ;   3520  2    !   COMND_TRANSMIT ();
  5734. ;   3521  2    !
  5735. ;   3522  2    ! IMPLICIT INPUTS:
  5736. ;   3523  2    !
  5737. ;   3524  2    !   TRANS_DELAY - time (0.0 - 0.9 seconds) to delay after carriage return is transmitted.
  5738. ;   3525  2    !   TRANS_ECHO_FLAG - flags whether data from remote side is echoed to the console terminal (ON);
  5739. ;   3526  2    !                     or line numbers are printed during transmit.
  5740. ;   3527  2    !
  5741. ;   3528  2    ! IMPLICIT OUTPUTS:
  5742. ;   3529  2    !
  5743. ;   3530  2    !   None
  5744. ;   3531  2    !
  5745. ;   3532  2    ! COMPLETION_CODES:
  5746. ;   3533  2    !
  5747. ;   3534  2    !   Standard status values.
  5748. ;   3535  2    !
  5749. ;   3536  2    ! SIDE EFFECTS:
  5750. ;   3537  2    !
  5751. ;   3538  2    !   Line feed characters are not transmitted.
  5752. ;   3539  2    !--
  5753. ;   3540  2     
  5754. ;   3541  3        BEGIN
  5755. ;   3542  3     
  5756. ;   3543  3        EXTERNAL
  5757. ;   3544  3        FILE_SIZE,
  5758. ;   3545  3        FILE_NAME : VECTOR [CH$ALLOCATION (MAX_FILE_NAME)],
  5759. ;   3546  3        TY_FIL;
  5760. ;   3547  3     
  5761. ;   3548  3        EXTERNAL ROUTINE
  5762. ;   3549  3        FILE_OPEN;
  5763. ;   3550  3     
  5764. ;   3551  3        LOCAL
  5765. ;   3552  3        STATUS,                                             ! KERMIT status values
  5766. ;   3553  3        TRANSMIT_DELAY : VECTOR [CH$ALLOCATION(8)],    ! String for transmit delay
  5767. ;   3554  3        TR_DESC :     BLOCK [8,BYTE];              ! Descriptor for transmit delay
  5768. ;   3555  3     
  5769. ;   3556  3        OWN
  5770. ;   3557  3        SAVE_FILE_NAME : VECTOR [CH$ALLOCATION (MAX_FILE_NAME)],       ! File name
  5771. ;   3558  3        SAVE_FILE_SIZE,                                                ! File size
  5772. ;   3559  3        SAVE_TY_FIL,                                          ! File type out flag
  5773. ;   3560  3        DELAY : VECTOR [2,LONG,SIGNED];  ! Time after transmitting carriage return
  5774. ;   3561  3     
  5775. ;   3562  3        BIND
  5776. ;   3563  3        D_TIME = PLIT('0 ::00.');    ! First part of delta time used to find delay
  5777. ;   3564  3     
  5778. ;   3565  3     %SBTTL 'TERM_CONNECT -- TRANSMIT_FILE'
  5779. ;   3566  3     
  5780. ;   3567  3        ROUTINE TRANSMIT_FILE =       ! and below
  5781. ;   3568  3     
  5782. ;   3569  3        !++
  5783. ;   3570  3        ! FUNCTIONAL DESCRIPTION:
  5784. ;   3571  3        !
  5785. ;   3572  3        ! This routine transmits the current file (that has already been opened) and
  5786. ;   3573  3        ! then opens the next file (if there is one).
  5787. ;   3574  3        !
  5788. ;   3575  3        !--
  5789. ;   3576  4            BEGIN        ! TRANSMIT_FILE
  5790. ;   3577  4     
  5791. ;   3578  4            EXTERNAL
  5792. ;   3579  4              ABT_ALL_FILE,
  5793. ;   3580  4              ABT_CUR_FILE,
  5794. ;   3581  4              SMG$_PASALREXI,                          ! Pasteboard exits for device msg
  5795. ;   3582  4              FLAG_FILE_OPEN;
  5796. ;   3583  4     
  5797. ;   3584  4            EXTERNAL ROUTINE
  5798. ;   3585  4              NEXT_FILE,
  5799. ;   3586  4              FILE_OPEN,
  5800. ;   3587  4              FILE_CLOSE,
  5801. ;   3588  4              TT_TEXT,
  5802. ;   3589  4              TT_CRLF : NOVALUE,
  5803. ;   3590  4              SY_DISMISS : NOVALUE,
  5804. ;   3591  4              SMG$CREATE_PASTEBOARD : ADDRESSING_MODE (GENERAL),
  5805. ;   3592  4              SMG$DELETE_PASTEBOARD : ADDRESSING_MODE (GENERAL);
  5806. ;   3593  4     
  5807. ;   3594  4            LOCAL
  5808. ;   3595  4              STATUS,                                             ! KERMIT status values
  5809. ;   3596  4              ISTAT,                                                ! qiow status values
  5810. ;   3597  4              PASTE_STAT,                                            ! SMG status values
  5811. ;   3598  4              NEW_ID : VECTOR [1, LONG, UNSIGNED];             ! Dummy new pasteboard id
  5812. ;   3599  4     
  5813. ;   3600  4            OWN   
  5814. ;   3601  4              LINE_NUM;                                            ! Line number counter
  5815. ;   3602  4     
  5816. ;   3603  4     %SBTTL 'TERM_CONNECT -- TRANSMIT_CHARACTERS'
  5817. ;   3604  4     
  5818. ;   3605  4              ROUTINE TRANSMIT_CHARACTERS : NOVALUE =       ! and below
  5819. ;   3606  4     
  5820. ;   3607  4          !++
  5821. ;   3608  4          ! FUNCTIONAL DESCRIPTION:
  5822. ;   3609  4          !
  5823. ;   3610  4              ! This routine is a loop that transmits all of the characters in a file,
  5824. ;   3611  4              ! one character per pass.
  5825. ;   3612  4              !
  5826. ;   3613  4              !--
  5827. ;   3614  5              BEGIN        ! TRANSMIT_CHARACTERS
  5828. ;   3615  5      
  5829. ;   3616  5              LITERAL
  5830. ;   3617  5                WAIT_EFN = 22,
  5831. ;   3618  5                CHARACTER_LEN = 1;
  5832. ;   3619  5     
  5833. ;   3620  5              EXTERNAL ROUTINE
  5834. ;   3621  5                GET_FILE,
  5835. ;   3622  5                TT_NUMBER,
  5836. ;   3623  5                TT_OUTPUT : NOVALUE;
  5837. ;   3624  5     
  5838. ;   3625  5              LOCAL
  5839. ;   3626  5                STATUS,                                             ! KERMIT status values
  5840. ;   3627  5                TSTAT,                                               ! timer status values
  5841. ;   3628  5                ISTAT,                                                ! qiow status values
  5842. ;   3629  5                CHARACTER,                             ! Character from get-a-char routine
  5843. ;   3630  5                TERM_IOSB : VECTOR [4, WORD, UNSIGNED];    ! IO status block for term chan
  5844. ;   3631  5    !
  5845. ;   3632  5    ! Begin TRANSMIT_CHARACTERS:
  5846. ;   3633  5    !
  5847. ;   3634  5              DO
  5848. ;   3635  5     
  5849. ;   3636  6                BEGIN        ! Transmit a character
  5850. ;   3637  6    ! Get next character
  5851. ;   3638  6                STATUS = GET_FILE (CHARACTER);                  
  5852. ;   3639  6     
  5853. ;   3640  6                IF .STATUS AND NOT .STATUS EQL KER_EOF AND NOT .CHARACTER EQL CHR_LFD         ! Did we get one?
  5854. ;   3641  6                THEN
  5855. ;   3642  6     
  5856. ;   3643  7                  BEGIN        ! Have a character
  5857. ;   3644  7    ! Write character out transfer terminal:
  5858. ; P 3645  7                    ISTAT = $QIOW (CHAN = .TERM_CHAN, EFN = TERM_O_EFN,
  5859. ; P 3646  7                      FUNC = IO$_WRITEVBLK + IO$M_NOFORMAT,
  5860. ; P 3647  7                      IOSB = TERM_IOSB,
  5861. ;   3648  7                      P1 = CHARACTER, P2 = CHARACTER_LEN);
  5862. ;   3649  7                    IF NOT .ISTAT THEN LIB$SIGNAL (.ISTAT);
  5863. ;   3650  7                    IF NOT .TERM_IOSB THEN LIB$SIGNAL (.TERM_IOSB);
  5864. ;   3651  7                    IF .CHARACTER EQL CHR_CRT 
  5865. ;   3652  7                    THEN
  5866. ;   3653  8                      BEGIN        ! Just transmitted a carriage return
  5867. ;   3654  8     
  5868. ;   3655  8                        IF NOT .DELAY EQL 0
  5869. ;   3656  8                        THEN 
  5870. ;   3657  8    ! Delay desired time:
  5871. ;   3658  9                          BEGIN
  5872. ;   3659  9                            TSTAT = $SETIMR (EFN = WAIT_EFN, DAYTIM = DELAY);
  5873. ;   3660  9                            IF NOT .STATUS THEN LIB$SIGNAL (.TSTAT);
  5874. ;   3661  9                            TSTAT = $WAITFR (EFN = WAIT_EFN);
  5875. ;   3662  9                            IF NOT .STATUS THEN LIB$SIGNAL (.TSTAT);
  5876. ;   3663  8                          END;
  5877. ;   3664  8     
  5878. ;   3665  8                        IF NOT .TRANS_ECHO_FLAG
  5879. ;   3666  8                        THEN
  5880. ;   3667  8    ! Purge term_chan typeahead buffer to get rid of the echoed data and type packet number to console:
  5881. ;   3668  9                          BEGIN
  5882. ; P 3669  9                            TSTAT = $QIOW (CHAN = .TERM_CHAN, FUNC = IO$_READVBLK OR IO$M_PURGE,
  5883. ;   3670  9                              P1 = INP_BUF [TRM, 0], P2 = 0, IOSB = IN_IOSB [TRM, 0, 0]);
  5884. ;   3671  9                            IF NOT .TSTAT THEN LIB$SIGNAL (.TSTAT);
  5885. ;   3672  9                            TT_NUMBER (.LINE_NUM);
  5886. ;   3673  9                            TT_TEXT (UPLIT (%ASCIZ' '));
  5887. ;   3674  9                            TT_OUTPUT ();
  5888. ;   3675  9                            LINE_NUM = .LINE_NUM + 1;
  5889. ;   3676  8                          END;
  5890. ;   3677  8     
  5891. ;   3678  7                      END;        ! Just transmitted a cariage return
  5892. ;   3679  7     
  5893. ;   3680  6                  END;        ! Have a character
  5894. ;   3681  6     
  5895. ;   3682  6                END            ! Transmit a character
  5896. ;   3683  5                  UNTIL NOT .STATUS OR .STATUS EQL KER_EOF OR NOT .ISTAT OR NOT .TERM_IOSB
  5897. ;   3684  5                        OR .FORCE_ABORT OR .ABT_CUR_FILE OR .ABT_ALL_FILE;
  5898. ;   3685  5     
  5899. ;   3686  4          END;        ! End TRANSMIT_CHARACTERS 
  5900.  
  5901.  
  5902.  
  5903.     .PSECT  $OWN$,NOEXE,2
  5904.  
  5905. ;SAVE_FILE_NAME
  5906. U.129:    .BLKB   132                                       ;                      00F10
  5907. ;SAVE_FILE_SIZE
  5908. U.130:    .BLKB   4                                       ;                      00F94
  5909. ;SAVE_TY_FIL
  5910. U.131:    .BLKB   4                                       ;                      00F98
  5911. ;DELAY
  5912. U.132:    .BLKB   8                                       ;                      00F9C
  5913. ;LINE_NUM
  5914. U.135:    .BLKB   4                                       ;                      00FA4
  5915.  
  5916.     .PSECT  $PLIT$,NOWRT,NOEXE,2
  5917.  
  5918.     .LONG   2                 ;                                              00000002  00580
  5919. P.AEL:    .ASCII  \0 ::00.\<0>             ;                                00  2E  30  30  3A  3A  20  30  00584
  5920. P.AEM:    .ASCII  \ \<0><0><0>             ;                                            00  00  00  20  0058C
  5921.  
  5922. U.133=            P.AEL
  5923.     .EXTRN  FILE_SIZE, FILE_NAME, TY_FIL, FILE_OPEN, SMG$_PASALREXI, FLAG_FILE_OPEN, NEXT_FILE
  5924.     .EXTRN  FILE_CLOSE, TT_TEXT, SY_DISMISS, SMG$CREATE_PASTEBOARD, SMG$DELETE_PASTEBOARD, GET_FILE
  5925.     .EXTRN  TT_NUMBER, TT_OUTPUT
  5926.  
  5927.     .PSECT  $CODE$,NOWRT,2
  5928.  
  5929. ;TRANSMIT_CHARACTERS
  5930. U.136:    .WORD   ^M<R2,R3,R4,R5,R6,R7>         ;Save R2,R3,R4,R5,R6,R7           3605                    00FC   00000
  5931.     MOVAB   G^SYS$QIOW, R7             ;SYS$QIOW, R7                                     57 00000000G  00  9E   00002
  5932.     MOVAB   G^LIB$SIGNAL, R6         ;LIB$SIGNAL, R6                                 56 00000000G  00  9E   00009
  5933.     MOVAB   G^U.4, R5             ;U.4, R5                                     55 00000000'  00  9E   00010
  5934.     SUBL2   #12, SP                 ;#12, SP                                     5E         0C  C2   00017
  5935. 1$:    PUSHL   SP                 ;SP                       3638                  5E  DD   0001A
  5936.     CALLS   #1, G^GET_FILE             ;#1, GET_FILE                          00000000G  00         01  FB   0001C
  5937.     MOVL    R0, R3                 ;R0, STATUS                                     53         50  D0   00023
  5938.     BLBS    R3, 2$                 ;STATUS, 2$                   3640            01         53  E8   00026
  5939.     RET                      ;                                               04   00029
  5940. 2$:    CMPL    R3, #134316131             ;STATUS, #134316131                      08018063   8F         53  D1   0002A
  5941.     BEQL    5$                 ;5$                                               39  13   00031
  5942.     CMPL    (SP), #10             ;CHARACTER, #10                                 0A         6E  D1   00033
  5943.     BEQL    5$                 ;5$                                               34  13   00036
  5944.     CLRQ    -(SP)                 ;-(SP)                       3648                  7E  7C   00038
  5945.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   0003A
  5946.     PUSHL   #1                 ;#1                                               01  DD   0003C
  5947.     PUSHAB  20(SP)                 ;CHARACTER                                      14   AE  9F   0003E
  5948.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00041
  5949.     PUSHAB  36(SP)                 ;TERM_IOSB                                      24   AE  9F   00043
  5950.     MOVZWL  #304, -(SP)             ;#304, -(SP)                                     7E     0130   8F  3C   00046
  5951.     PUSHL   (R5)                 ;TERM_CHAN                                           65  DD   0004B
  5952.     PUSHL   #4                 ;#4                                               04  DD   0004D
  5953.     CALLS   #12, (R7)             ;#12, SYS$QIOW                                     67         0C  FB   0004F
  5954.     MOVL    R0, R4                 ;R0, ISTAT                                     54         50  D0   00052
  5955.     BLBS    R4, 3$                 ;ISTAT, 3$                   3649            05         54  E8   00055
  5956.     PUSHL   R4                 ;ISTAT                                               54  DD   00058
  5957.     CALLS   #1, (R6)             ;#1, LIB$SIGNAL                                 66         01  FB   0005A
  5958. 3$:    BLBS    4(SP), 4$             ;TERM_IOSB, 4$                   3650            06    04   AE  E8   0005D
  5959.     PUSHL   4(SP)                 ;TERM_IOSB                                      04   AE  DD   00061
  5960.     CALLS   #1, (R6)             ;#1, LIB$SIGNAL                                 66         01  FB   00064
  5961. 4$:    CMPL    (SP), #13             ;CHARACTER, #13               3651            0D         6E  D1   00067
  5962.     BEQL    6$                 ;6$                                               03  13   0006A
  5963. 5$:    BRW     10$                 ;10$                                             0087  31   0006C
  5964. 6$:    TSTL    3984(R5)             ;DELAY                       3655               0F90   C5  D5   0006F
  5965.     BEQL    8$                 ;8$                                               30  13   00073
  5966.     CLRQ    -(SP)                 ;-(SP)                       3659                  7E  7C   00075
  5967.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00077
  5968.     PUSHAB  3984(R5)             ;DELAY                                            0F90   C5  9F   00079
  5969.     PUSHL   #22                 ;#22                                               16  DD   0007D
  5970.     CALLS   #5, G^SYS$SETIMR         ;#5, SYS$SETIMR                      00000000G  00         05  FB   0007F
  5971.     MOVL    R0, R2                 ;R0, TSTAT                                     52         50  D0   00086
  5972.     BLBS    R3, 7$                 ;STATUS, 7$                   3660            05         53  E8   00089
  5973.     PUSHL   R2                 ;TSTAT                                               52  DD   0008C
  5974.     CALLS   #1, (R6)             ;#1, LIB$SIGNAL                                 66         01  FB   0008E
  5975. 7$:    PUSHL   #22                 ;#22                       3661                  16  DD   00091
  5976.     CALLS   #1, G^SYS$WAITFR         ;#1, SYS$WAITFR                      00000000G  00         01  FB   00093
  5977.     MOVL    R0, R2                 ;R0, TSTAT                                     52         50  D0   0009A
  5978.     BLBS    R3, 8$                 ;STATUS, 8$                   3662            05         53  E8   0009D
  5979.     PUSHL   R2                 ;TSTAT                                               52  DD   000A0
  5980.     CALLS   #1, (R6)             ;#1, LIB$SIGNAL                                 66         01  FB   000A2
  5981. 8$:    BLBS    G^TRANS_ECHO_FLAG, 10$         ;TRANS_ECHO_FLAG, 10$               3665            4A 00000000'  00  E8   000A5
  5982.     CLRQ    -(SP)                 ;-(SP)                       3670                  7E  7C   000AC
  5983.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   000AE
  5984.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   000B0
  5985.     PUSHAB  3201(R5)             ;INP_BUF+161                                        0C81   C5  9F   000B2
  5986.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   000B6
  5987.     PUSHAB  3024(R5)             ;IN_IOSB+16                                        0BD0   C5  9F   000B8
  5988.     MOVZWL  #2097, -(SP)             ;#2097, -(SP)                                     7E     0831   8F  3C   000BC
  5989.     PUSHL   (R5)                 ;TERM_CHAN                                           65  DD   000C1
  5990.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   000C3
  5991.     CALLS   #12, (R7)             ;#12, SYS$QIOW                                     67         0C  FB   000C5
  5992.     MOVL    R0, R2                 ;R0, TSTAT                                     52         50  D0   000C8
  5993.     BLBS    R2, 9$                 ;TSTAT, 9$                   3671            05         52  E8   000CB
  5994.     PUSHL   R2                 ;TSTAT                                               52  DD   000CE
  5995.     CALLS   #1, (R6)             ;#1, LIB$SIGNAL                                 66         01  FB   000D0
  5996. 9$:    PUSHL   3992(R5)             ;LINE_NUM                   3672               0F98   C5  DD   000D3
  5997.     CALLS   #1, G^TT_NUMBER             ;#1, TT_NUMBER                          00000000G  00         01  FB   000D7
  5998.     PUSHAB  G^P.AEM                 ;P.AEM                       3673           00000000'  00  9F   000DE
  5999.     CALLS   #1, G^TT_TEXT             ;#1, TT_TEXT                          00000000G  00         01  FB   000E4
  6000.     CALLS   #0, G^TT_OUTPUT             ;#0, TT_OUTPUT                   3674 00000000G  00         00  FB   000EB
  6001.     INCL    3992(R5)             ;LINE_NUM                   3675               0F98   C5  D6   000F2
  6002. 10$:    BLBC    R3, 11$                 ;STATUS, 11$                   3683            25         53  E9   000F6
  6003.     CMPL    R3, #134316131             ;STATUS, #134316131                      08018063   8F         53  D1   000F9
  6004.     BEQL    11$                 ;11$                                               1C  13   00100
  6005.     BLBC    R4, 11$                 ;ISTAT, 11$                                     19         54  E9   00102
  6006.     BLBC    4(SP), 11$             ;TERM_IOSB, 11$                                 15    04   AE  E9   00105
  6007.     BLBS    -12(R5), 11$             ;FORCE_ABORT, 11$               3684            11    F4   A5  E8   00109
  6008.     BLBS    G^ABT_CUR_FILE, 11$         ;ABT_CUR_FILE, 11$                                 0A 00000000G  00  E8   0010D
  6009.     BLBS    G^ABT_ALL_FILE, 11$         ;ABT_ALL_FILE, 11$                                 03 00000000G  00  E8   00114
  6010.     BRW     1$                 ;1$                                             FEFC  31   0011B
  6011. 11$:    RET                      ;                       3686                  04   0011E
  6012.  
  6013. ; Routine Size:  287 bytes,    Routine Base:  $CODE$ + 1696
  6014.  
  6015.  
  6016. ;   3687  4     !
  6017. ;   3688  4    ! Begin TRANSMIT_FILE: 
  6018. ;   3689  4    !
  6019. ;   3690  4            FLAG_FILE_OPEN = TRUE;
  6020. ;   3691  4            TT_TEXT (UPLIT (%ASCIZ'    File: '));
  6021. ;   3692  4            TT_TEXT (FILE_NAME);                                ! Type out file name
  6022. ;   3693  4            TT_CRLF ();
  6023. ;   3694  4            FILE_SIZE = .SAVE_FILE_SIZE;                  ! Reset the file name size
  6024. ;   3695  4            INCR I FROM 0 TO .FILE_SIZE - 1 DO
  6025. ;   3696  4                FILE_NAME [.I] = .SAVE_FILE_NAME [.I];
  6026. ;   3697  4            TY_FIL = .SAVE_TY_FIL;                             ! Reset type out flag
  6027. ;   3698  4            LINE_NUM = 1;                           ! Initialize line number counter
  6028. ;   3699  4     
  6029. ;   3700  5            IF (STATUS = TERM_OPEN (TRUE))                       ! Open the terminal
  6030. ;   3701  4            THEN
  6031. ;   3702  4     
  6032. ;   3703  5              BEGIN        ! Term open
  6033. ;   3704  5    ! Cancel qio's to term_chan to start from scratch:
  6034. ;   3705  5              STATUS = $CANCEL (CHAN = .TERM_CHAN);
  6035. ;   3706  5              IF NOT .STATUS THEN LIB$SIGNAL (.STATUS);
  6036. ;   3707  5     
  6037. ;   3708  5    ! Test to see if we are supposed to echo from the term_chan to the cons_chan:
  6038. ;   3709  5              IF .TRANS_ECHO_FLAG
  6039. ;   3710  5              THEN
  6040. ;   3711  5     
  6041. ;   3712  6                BEGIN    ! Echo data
  6042. ;   3713  6    ! Clear screen (by creating a default pasteboard using SMG utility):
  6043. ;   3714  6                  SY_DISMISS (3);             ! Wait a bit so user can see file name
  6044. ;   3715  6                  PASTE_STAT = SMG$CREATE_PASTEBOARD (NEW_ID);
  6045. ;   3716  6                  IF NOT .PASTE_STAT THEN LIB$SIGNAL (.PASTE_STAT);
  6046. ;   3717  6     
  6047. ;   3718  6    ! Prepare event flags
  6048. ;   3719  6                  $CLREF (EFN = XITEFN);
  6049. ;   3720  6                  INCR FLAG FROM 1 TO XITEFN - 1 DO
  6050. ;   3721  6                    $SETEF (EFN = .FLAG);
  6051. ;   3722  6                  $SETAST (ENBFLG = 0);               ! Disable AST until after all QIOs
  6052. ;   3723  6     
  6053. ;   3724  6    ! Set up read qio's to echo characters to controling terminal
  6054. ; P 3725  6                  ISTAT = $QIO (CHAN = .TERM_CHAN, FUNC = IO$_TTYREADALL OR IO$M_NOECHO,
  6055. ; P 3726  6                    ASTADR = TRMINP, P1 = INP_BUF [TRM, 0], P2 = INP_BUFSIZ, P3 = 0,
  6056. ;   3727  6                    IOSB = IN_IOSB [TRM, 0, 0], ASTPRM = 0);
  6057. ;   3728  6                  IF NOT .ISTAT THEN LIB$SIGNAL (.ISTAT);
  6058. ;   3729  6                  INCR INP_BUFNUM FROM 1 TO NUM_IN_BUF - 1 DO
  6059. ;   3730  7                    BEGIN
  6060. ; P 3731  7                      ISTAT = $QIO (CHAN = .TERM_CHAN, FUNC = IO$_TTYREADALL OR
  6061. ; P 3732  7                        IO$M_NOECHO OR IO$M_TIMED, ASTADR=TRMINP,
  6062. ; P 3733  7                        P1=INP_BUF[TRM,.INP_BUFNUM], P2=INP_BUFSIZ, P3=0,
  6063. ;   3734  7                        IOSB = IN_IOSB [TRM, .INP_BUFNUM, 0], ASTPRM = .INP_BUFNUM);
  6064. ;   3735  7                      IF NOT .ISTAT THEN LIB$SIGNAL (.ISTAT);
  6065. ;   3736  6                    END;
  6066. ;   3737  6                  $SETAST (ENBFLG = 1);                                     ! Enable AST
  6067. ;   3738  6                END      ! End echo data  
  6068. ;   3739  6     
  6069. ;   3740  5              ELSE         ! No echo; output line number title to console:
  6070. ;   3741  5     
  6071. ;   3742  5                  TT_TEXT (UPLIT (%ASCIZ'    Transmitting line number... '));
  6072. ;   3743  5     
  6073. ;   3744  5    ! Start a loop that handles one character per pass:
  6074. ;   3745  5              TRANSMIT_CHARACTERS ();
  6075. ;   3746  5     
  6076. ;   3747  5    ! Finished transmitting file - close it:
  6077. ;   3748  5              FILE_CLOSE ();
  6078. ;   3749  5              ABT_CUR_FILE = FALSE;
  6079. ;   3750  5              IF .TRANS_ECHO_FLAG THEN SY_DISMISS (1);      ! Wait a bit so user can see the end of the file
  6080. ;   3751  5     
  6081. ;   3752  5    ! Cancel read qio's:
  6082. ;   3753  5              $SETAST (ENBFLG = 0);                                  ! Disable AST's
  6083. ;   3754  5              STATUS = $CANCEL (CHAN = .TERM_CHAN);
  6084. ;   3755  5              IF NOT .STATUS THEN LIB$SIGNAL (.STATUS);
  6085. ;   3756  5              STATUS = $CANCEL (CHAN = .CONS_CHAN);
  6086. ;   3757  5              IF NOT .STATUS THEN LIB$SIGNAL (.STATUS);
  6087. ;   3758  5     
  6088. ;   3759  5    ! Clear screen again if we did it before - ie delete pasteboard if we created one:
  6089. ;   3760  5              IF .TRANS_ECHO_FLAG AND NOT .PASTE_STAT EQL SMG$_PASALREXI 
  6090. ;   3761  5              THEN
  6091. ;   3762  6                BEGIN
  6092. ;   3763  6                PASTE_STAT = SMG$DELETE_PASTEBOARD (NEW_ID);
  6093. ;   3764  6                IF NOT .PASTE_STAT THEN LIB$SIGNAL (.PASTE_STAT);
  6094. ;   3765  6                END
  6095. ;   3766  5              ELSE
  6096. ;   3767  6                BEGIN
  6097. ;   3768  6                TT_CRLF ();
  6098. ;   3769  6                TT_CRLF ();
  6099. ;   3770  5                END;
  6100. ;   3771  5     
  6101. ;   3772  5    ! Post normal qio's that were canceled:
  6102. ;   3773  5              STATUS = DO_CONS_QIO();
  6103. ;   3774  5              IF NOT .STATUS
  6104. ;   3775  5              THEN
  6105. ;   3776  6                BEGIN
  6106. ;   3777  6                LIB$SIGNAL (.STATUS);
  6107. ;   3778  6                RETURN KER_RECERR
  6108. ;   3779  5                END;
  6109. ;   3780  5     
  6110. ;   3781  5              STATUS = DO_RECEIVE_QIO();
  6111. ;   3782  5              IF NOT .STATUS
  6112. ;   3783  5              THEN
  6113. ;   3784  6                BEGIN
  6114. ;   3785  6                LIB$SIGNAL (.STATUS);
  6115. ;   3786  6                RETURN KER_RECERR
  6116. ;   3787  5                END;
  6117. ;   3788  5     
  6118. ;   3789  5    ! Close the console terminal to clean up:
  6119. ;   3790  5              STATUS = TERM_CLOSE ();
  6120. ;   3791  5              IF NOT .STATUS THEN LIB$SIGNAL (.STATUS);
  6121. ;   3792  5              $SETAST (ENBFLG = 1);                                   ! Enable AST's
  6122. ;   3793  4              END;        ! Term open
  6123. ;   3794  4     
  6124. ;   3795  4    ! Determine if there is another file to send.
  6125. ;   3796  4            SAVE_TY_FIL = .TY_FIL;                        ! Save current type out flag
  6126. ;   3797  4            TY_FIL = FALSE;                            ! Supress the type out of names
  6127. ;   3798  4            IF NOT .ABT_ALL_FILE AND NOT .FORCE_ABORT THEN STATUS=NEXT_FILE () ELSE STATUS=KER_NOMORFILES;
  6128. ;   3799  4            TY_FIL = .SAVE_TY_FIL;                           ! Reset the type out flag
  6129. ;   3800  4            ABT_ALL_FILE = FALSE;
  6130. ;   3801  4            FORCE_ABORT = FALSE;
  6131. ;   3802  4            FORCE_TIMEOUT = FALSE;
  6132. ;   3803  4        RETURN .STATUS;
  6133. ;   3804  4     
  6134. ;   3805  3            END;          ! End TRANSMIT_FILE
  6135.  
  6136.  
  6137.  
  6138.     .PSECT  $PLIT$,NOWRT,NOEXE,2
  6139.  
  6140. P.AEN:    .ASCII  \    File: \<0><0>         ;                                65  6C  69  46  20  20  20  20  00590
  6141.                          ;                                      00  00  20  3A  00598
  6142. P.AEO:    .ASCII  \    Transmitting line number... \<0><0><0><0>
  6143.                          ;                                6E  61  72  54  20  20  20  20  0059C
  6144.                          ;                          67  6E  69  74  74  69  6D  73  005A4
  6145.                          ;                          75  6E  20  65  6E  69  6C  20  005AC
  6146.                          ;                          20  2E  2E  2E  72  65  62  6D  005B4
  6147.                          ;                                      00  00  00  00  005BC
  6148.  
  6149.     .EXTRN  SYS$SETAST
  6150.  
  6151.     .PSECT  $CODE$,NOWRT,2
  6152.  
  6153. ;TRANSMIT_FILE
  6154. U.134:    .WORD   ^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,- ;Save R2,R3,R4,R5,R6,R7,R8,R9,R10,-   3567                    0FFC   00000
  6155.         R11>                 ;R11
  6156.     MOVAB   G^TT_TEXT, R11             ;TT_TEXT, R11                                     5B 00000000G  00  9E   00002
  6157.     MOVAB   G^SYS$SETAST, R10         ;SYS$SETAST, R10                                 5A 00000000G  00  9E   00009
  6158.     MOVAB   G^TY_FIL, R9             ;TY_FIL, R9                                     59 00000000G  00  9E   00010
  6159.     MOVAB   W^U.119, R8             ;U.119, R8                                     58     FD75   CF  9E   00017
  6160.     MOVAB   G^LIB$SIGNAL, R7         ;LIB$SIGNAL, R7                                 57 00000000G  00  9E   0001C
  6161.     MOVAB   G^U.4, R6             ;U.4, R6                                     56 00000000'  00  9E   00023
  6162.     SUBL2   #4, SP                 ;#4, SP                                     5E         04  C2   0002A
  6163.     MOVL    #1, G^FLAG_FILE_OPEN         ;#1, FLAG_FILE_OPEN               3690 00000000G  00         01  D0   0002D
  6164.     PUSHAB  G^P.AEN                 ;P.AEN                       3691           00000000'  00  9F   00034
  6165.     CALLS   #1, (R11)             ;#1, TT_TEXT                                     6B         01  FB   0003A
  6166.     PUSHAB  G^FILE_NAME             ;FILE_NAME                   3692           00000000G  00  9F   0003D
  6167.     CALLS   #1, (R11)             ;#1, TT_TEXT                                     6B         01  FB   00043
  6168.     CALLS   #0, G^TT_CRLF             ;#0, TT_CRLF                   3693 00000000G  00         00  FB   00046
  6169.     MOVL    3976(R6), G^FILE_SIZE         ;SAVE_FILE_SIZE, FILE_SIZE           3694 00000000G  00     0F88   C6  D0   0004D
  6170.     MNEGL   #1, R0                 ;#1, I                       3695            50         01  CE   00056
  6171.     BRB     2$                 ;2$                                               0B  11   00059
  6172. 1$:    MOVL    3844(R6)[R0], G^FILE_NAME[R0]     ;SAVE_FILE_NAME[I], FILE_NAME[I]      3696 00000000G0040     0F04 C640  D0   0005B
  6173. 2$:    AOBLSS  G^FILE_SIZE, R0, 1$         ;FILE_SIZE, I, 1$                                 50 00000000G  00  F2   00066
  6174.                          ;                                         ED       0006D
  6175.     MOVL    3980(R6), (R9)             ;SAVE_TY_FIL, TY_FIL               3697            69     0F8C   C6  D0   0006E
  6176.     MOVL    #1, 3992(R6)             ;#1, LINE_NUM                   3698     0F98   C6         01  D0   00073
  6177.     PUSHL   #1                 ;#1                       3700                  01  DD   00078
  6178.     CALLS   #1, -3826(R8)             ;#1, TERM_OPEN                              F10E   C8         01  FB   0007A
  6179.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   0007F
  6180.     BLBS    R4, 3$                 ;STATUS, 3$                                     03         54  E8   00082
  6181.     BRW     21$                 ;21$                                             0195  31   00085
  6182. 3$:    PUSHL   (R6)                 ;TERM_CHAN                   3705                  66  DD   00088
  6183.     CALLS   #1, G^SYS$CANCEL         ;#1, SYS$CANCEL                      00000000G  00         01  FB   0008A
  6184.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   00091
  6185.     BLBS    R4, 4$                 ;STATUS, 4$                   3706            05         54  E8   00094
  6186.     PUSHL   R4                 ;STATUS                                           54  DD   00097
  6187.     CALLS   #1, (R7)             ;#1, LIB$SIGNAL                                 67         01  FB   00099
  6188. 4$:    BLBS    G^TRANS_ECHO_FLAG, 5$         ;TRANS_ECHO_FLAG, 5$               3709            03 00000000'  00  E8   0009C
  6189.     BRW     11$                 ;11$                                             00AF  31   000A3
  6190. 5$:    PUSHL   #3                 ;#3                       3714                  03  DD   000A6
  6191.     CALLS   #1, G^SY_DISMISS         ;#1, SY_DISMISS                      00000000G  00         01  FB   000A8
  6192.     PUSHL   SP                 ;SP                       3715                  5E  DD   000AF
  6193.     CALLS   #1, G^SMG$CREATE_PASTEBOARD     ;#1, SMG$CREATE_PASTEBOARD                  00000000G  00         01  FB   000B1
  6194.     MOVL    R0, R5                 ;R0, PASTE_STAT                                 55         50  D0   000B8
  6195.     BLBS    R5, 6$                 ;PASTE_STAT, 6$               3716            05         55  E8   000BB
  6196.     PUSHL   R5                 ;PASTE_STAT                                           55  DD   000BE
  6197.     CALLS   #1, (R7)             ;#1, LIB$SIGNAL                                 67         01  FB   000C0
  6198. 6$:    PUSHL   #5                 ;#5                       3719                  05  DD   000C3
  6199.     CALLS   #1, G^SYS$CLREF             ;#1, SYS$CLREF                          00000000G  00         01  FB   000C5
  6200.     MOVL    #1, R2                 ;#1, FLAG                   3720            52         01  D0   000CC
  6201. 7$:    PUSHL   R2                 ;FLAG                       3721                  52  DD   000CF
  6202.     CALLS   #1, G^SYS$SETEF             ;#1, SYS$SETEF                          00000000G  00         01  FB   000D1
  6203.     AOBLEQ  #4, R2, 7$             ;#4, FLAG, 7$                                     52         04  F3   000D8
  6204.                          ;                                         F3       000DB
  6205.     CLRL    -(SP)                 ;-(SP)                       3722                  7E  D4   000DC
  6206.     CALLS   #1, (R10)             ;#1, SYS$SETAST                                 6A         01  FB   000DE
  6207.     CLRQ    -(SP)                 ;-(SP)                       3727                  7E  7C   000E1
  6208.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   000E3
  6209.     MOVZBL  #80, -(SP)             ;#80, -(SP)                                     7E    50   8F  9A   000E5
  6210.     PUSHAB  3201(R6)             ;INP_BUF+161                                        0C81   C6  9F   000E9
  6211.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   000ED
  6212.     PUSHL   R8                 ;R8                                               58  DD   000EF
  6213.     PUSHAB  3024(R6)             ;IN_IOSB+16                                        0BD0   C6  9F   000F1
  6214.     MOVZBL  #122, -(SP)             ;#122, -(SP)                                     7E    7A   8F  9A   000F5
  6215.     PUSHL   (R6)                 ;TERM_CHAN                                           66  DD   000F9
  6216.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   000FB
  6217.     CALLS   #12, G^SYS$QIO             ;#12, SYS$QIO                          00000000G  00         0C  FB   000FD
  6218.     MOVL    R0, R3                 ;R0, ISTAT                                     53         50  D0   00104
  6219.     BLBS    R3, 8$                 ;ISTAT, 8$                   3728            05         53  E8   00107
  6220.     PUSHL   R3                 ;ISTAT                                               53  DD   0010A
  6221.     CALLS   #1, (R7)             ;#1, LIB$SIGNAL                                 67         01  FB   0010C
  6222. 8$:    MOVL    #1, R2                 ;#1, INP_BUFNUM               3729            52         01  D0   0010F
  6223. 9$:    CLRQ    -(SP)                 ;-(SP)                       3734                  7E  7C   00112
  6224.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00114
  6225.     MOVZBL  #80, -(SP)             ;#80, -(SP)                                     7E    50   8F  9A   00116
  6226.     MULL3   #80, R2, R0             ;#80, INP_BUFNUM, R0                                 52 00000050   8F  C5   0011A
  6227.                          ;                                         50       00121
  6228.     PUSHAB  3201(R6)[R0]             ;INP_BUF+161[R0]                                    0C81 C640  9F   00122
  6229.     PUSHL   R2                 ;INP_BUFNUM                                           52  DD   00127
  6230.     PUSHL   R8                 ;R8                                               58  DD   00129
  6231.     PUSHAQ  3024(R6)[R2]             ;IN_IOSB+16[INP_BUFNUM]                                0BD0 C642  7F   0012B
  6232.     MOVZBL  #250, -(SP)             ;#250, -(SP)                                     7E    FA   8F  9A   00130
  6233.     PUSHL   (R6)                 ;TERM_CHAN                                           66  DD   00134
  6234.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00136
  6235.     CALLS   #12, G^SYS$QIO             ;#12, SYS$QIO                          00000000G  00         0C  FB   00138
  6236.     MOVL    R0, R3                 ;R0, ISTAT                                     53         50  D0   0013F
  6237.     BLBS    R3, 10$                 ;ISTAT, 10$                   3735            05         53  E8   00142
  6238.     PUSHL   R3                 ;ISTAT                                               53  DD   00145
  6239.     CALLS   #1, (R7)             ;#1, LIB$SIGNAL                                 67         01  FB   00147
  6240. 10$:    AOBLEQ  #1, R2, 9$             ;#1, INP_BUFNUM, 9$               3729            52         01  F3   0014A
  6241.                          ;                                         C4       0014D
  6242.     PUSHL   #1                 ;#1                       3737                  01  DD   0014E
  6243.     CALLS   #1, (R10)             ;#1, SYS$SETAST                                 6A         01  FB   00150
  6244.     BRB     12$                 ;12$                                               09  11   00153
  6245. 11$:    PUSHAB  G^P.AEO                 ;P.AEO                       3742           00000000'  00  9F   00155
  6246.     CALLS   #1, (R11)             ;#1, TT_TEXT                                     6B         01  FB   0015B
  6247. 12$:    CALLS   #0, 337(R8)             ;#0, TRANSMIT_CHARACTERS           3745     0151   C8         00  FB   0015E
  6248.     CALLS   #0, G^FILE_CLOSE         ;#0, FILE_CLOSE               3748 00000000G  00         00  FB   00163
  6249.     CLRL    G^ABT_CUR_FILE             ;ABT_CUR_FILE                   3749           00000000G  00  D4   0016A
  6250.     BLBC    G^TRANS_ECHO_FLAG, 13$         ;TRANS_ECHO_FLAG, 13$               3750            09 00000000'  00  E9   00170
  6251.     PUSHL   #1                 ;#1                                               01  DD   00177
  6252.     CALLS   #1, G^SY_DISMISS         ;#1, SY_DISMISS                      00000000G  00         01  FB   00179
  6253. 13$:    CLRL    -(SP)                 ;-(SP)                       3753                  7E  D4   00180
  6254.     CALLS   #1, (R10)             ;#1, SYS$SETAST                                 6A         01  FB   00182
  6255.     PUSHL   (R6)                 ;TERM_CHAN                   3754                  66  DD   00185
  6256.     CALLS   #1, G^SYS$CANCEL         ;#1, SYS$CANCEL                      00000000G  00         01  FB   00187
  6257.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   0018E
  6258.     BLBS    R4, 14$                 ;STATUS, 14$                   3755            05         54  E8   00191
  6259.     PUSHL   R4                 ;STATUS                                           54  DD   00194
  6260.     CALLS   #1, (R7)             ;#1, LIB$SIGNAL                                 67         01  FB   00196
  6261. 14$:    PUSHL   12(R6)                 ;CONS_CHAN                   3756             0C   A6  DD   00199
  6262.     CALLS   #1, G^SYS$CANCEL         ;#1, SYS$CANCEL                      00000000G  00         01  FB   0019C
  6263.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   001A3
  6264.     BLBS    R4, 15$                 ;STATUS, 15$                   3757            05         54  E8   001A6
  6265.     PUSHL   R4                 ;STATUS                                           54  DD   001A9
  6266.     CALLS   #1, (R7)             ;#1, LIB$SIGNAL                                 67         01  FB   001AB
  6267. 15$:    BLBC    G^TRANS_ECHO_FLAG, 16$         ;TRANS_ECHO_FLAG, 16$               3760            22 00000000'  00  E9   001AE
  6268.     MOVAB   G^SMG$_PASALREXI, R0         ;SMG$_PASALREXI, R0                                 50 00000000G  00  9E   001B5
  6269.     CMPL    R5, R0                 ;PASTE_STAT, R0                                 50         55  D1   001BC
  6270.     BEQL    16$                 ;16$                                               16  13   001BF
  6271.     PUSHL   SP                 ;SP                       3763                  5E  DD   001C1
  6272.     CALLS   #1, G^SMG$DELETE_PASTEBOARD     ;#1, SMG$DELETE_PASTEBOARD                  00000000G  00         01  FB   001C3
  6273.     MOVL    R0, R5                 ;R0, PASTE_STAT                                 55         50  D0   001CA
  6274.     BLBS    R5, 17$                 ;PASTE_STAT, 17$               3764            15         55  E8   001CD
  6275.     PUSHL   R5                 ;PASTE_STAT                                           55  DD   001D0
  6276.     CALLS   #1, (R7)             ;#1, LIB$SIGNAL                                 67         01  FB   001D2
  6277.     BRB     17$                 ;17$                                               0E  11   001D5
  6278. 16$:    CALLS   #0, G^TT_CRLF             ;#0, TT_CRLF                   3768 00000000G  00         00  FB   001D7
  6279.     CALLS   #0, G^TT_CRLF             ;#0, TT_CRLF                   3769 00000000G  00         00  FB   001DE
  6280. 17$:    CALLS   #0, -1674(R8)             ;#0, DO_CONS_QIO               3773     F976   C8         00  FB   001E5
  6281.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   001EA
  6282.     BLBC    R4, 18$                 ;STATUS, 18$                   3774            0B         54  E9   001ED
  6283.     CALLS   #0, -1931(R8)             ;#0, DO_RECEIVE_QIO               3781     F875   C8         00  FB   001F0
  6284.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   001F5
  6285.     BLBS    R4, 19$                 ;STATUS, 19$                   3782            0D         54  E8   001F8
  6286. 18$:    PUSHL   R4                 ;STATUS                   3785                  54  DD   001FB
  6287.     CALLS   #1, (R7)             ;#1, LIB$SIGNAL                                 67         01  FB   001FD
  6288.     MOVL    #134316266, R0             ;#134316266, R0               3786            50 080180EA   8F  D0   00200
  6289.     RET                      ;                                               04   00207
  6290. 19$:    CALLS   #0, -3341(R8)             ;#0, TERM_CLOSE               3790     F2F3   C8         00  FB   00208
  6291.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   0020D
  6292.     BLBS    R4, 20$                 ;STATUS, 20$                   3791            05         54  E8   00210
  6293.     PUSHL   R4                 ;STATUS                                           54  DD   00213
  6294.     CALLS   #1, (R7)             ;#1, LIB$SIGNAL                                 67         01  FB   00215
  6295. 20$:    PUSHL   #1                 ;#1                       3792                  01  DD   00218
  6296.     CALLS   #1, (R10)             ;#1, SYS$SETAST                                 6A         01  FB   0021A
  6297. 21$:    MOVL    (R9), 3980(R6)             ;TY_FIL, SAVE_TY_FIL               3796     0F8C   C6         69  D0   0021D
  6298.     CLRL    (R9)                 ;TY_FIL                   3797                  69  D4   00222
  6299.     BLBS    G^ABT_ALL_FILE, 22$         ;ABT_ALL_FILE, 22$               3798            10 00000000G  00  E8   00224
  6300.     BLBS    -12(R6), 22$             ;FORCE_ABORT, 22$                                 0C    F4   A6  E8   0022B
  6301.     CALLS   #0, G^NEXT_FILE             ;#0, NEXT_FILE                          00000000G  00         00  FB   0022F
  6302.     MOVL    R0, R4                 ;R0, STATUS                                     54         50  D0   00236
  6303.     BRB     23$                 ;23$                                               07  11   00239
  6304. 22$:    MOVL    #134316147, R4             ;#134316147, STATUS                                 54 08018073   8F  D0   0023B
  6305. 23$:    MOVL    3980(R6), (R9)             ;SAVE_TY_FIL, TY_FIL               3799            69     0F8C   C6  D0   00242
  6306.     CLRL    G^ABT_ALL_FILE             ;ABT_ALL_FILE                   3800           00000000G  00  D4   00247
  6307.     CLRQ    -12(R6)                 ;FORCE_ABORT                   3801             F4   A6  7C   0024D
  6308.     MOVL    R4, R0                 ;STATUS, R0                   3803            50         54  D0   00250
  6309.     RET                      ;                                               04   00253
  6310.  
  6311. ; Routine Size:  596 bytes,    Routine Base:  $CODE$ + 17B5
  6312.  
  6313.  
  6314. ;   3806  3     
  6315. ;   3807  3     !
  6316. ;   3808  3    ! Begin COMND_TRANSMIT:
  6317. ;   3809  3    !
  6318. ;   3810  3    ! Initialize variables
  6319. ;   3811  3        CHR_COUNT [0] = 0;
  6320. ;   3812  3        CHR_COUNT [1] = 0;
  6321. ;   3813  3        OUT_BUFNUM [0] = 0;
  6322. ;   3814  3        OUT_BUFNUM [1] = 0;
  6323. ;   3815  3        OUT_EFN [0] = 1;
  6324. ;   3816  3        OUT_EFN [1] = T_EFN_DISP + 1;
  6325. ;   3817  3        OUT_PTR [0] = CH$PTR (OUT_BUF [0, .OUT_BUFNUM [0]]);
  6326. ;   3818  3        OUT_PTR [1] = CH$PTR (OUT_BUF [1, .OUT_BUFNUM [1]]);
  6327. ;   3819  3     
  6328. ;   3820  3    ! Assign channels to devices TERM_NAME and MY_TERM.
  6329. ;   3821  3        STATUS = TERM_OPEN (FALSE);            ! Open terminal, no QIO's
  6330. ;   3822  3     
  6331. ;   3823  3        IF .CONNECT_FLAG                ! Check if TERM_NAME is TT:
  6332. ;   3824  3        THEN
  6333. ;   3825  4        BEGIN
  6334. ;   3826  4        TERM_CLOSE ();
  6335. ;   3827  4        LIB$SIGNAL (KER_CON_SAME);
  6336. ;   3828  4        RETURN KER_CON_SAME;
  6337. ;   3829  3        END;
  6338. ;   3830  3     
  6339. ;   3831  3        IF NOT .STATUS
  6340. ;   3832  3        THEN
  6341. ;   3833  4        BEGIN
  6342. ;   3834  4        LIB$SIGNAL (.STATUS);
  6343. ;   3835  4        RETURN .STATUS;
  6344. ;   3836  3        END;
  6345. ;   3837  3     
  6346. ;   3838  3        IF NOT .SYS_OUTPUT_OPEN            ! Make sure we have terminals
  6347. ;   3839  3        THEN
  6348. ;   3840  4        BEGIN
  6349. ;   3841  4        TERM_CLOSE ();
  6350. ;   3842  4        LIB$SIGNAL (KER_LINTERM);        ! Must both be terminals
  6351. ;   3843  4        RETURN KER_LINTERM;            ! So give up if not
  6352. ;   3844  3        END;
  6353. ;   3845  3     
  6354. ;   3846  3        CHANNEL [0] = .TERM_CHAN;
  6355. ;   3847  3        CHANNEL [1] = .CONS_CHAN;
  6356. ;   3848  3     
  6357. ;   3849  3        IF NOT .STATUS
  6358. ;   3850  3        THEN
  6359. ;   3851  4        BEGIN
  6360. ;   3852  4        TERM_CLOSE ();
  6361. ;   3853  4        LIB$SIGNAL (.STATUS);
  6362. ;   3854  4        RETURN .STATUS;
  6363. ;   3855  3        END;
  6364. ;   3856  3     
  6365. ;   3857  3    ! Have two terminals - Set up delay:
  6366. ;   3858  3        CH$COPY (7,CH$PTR(D_TIME),  1,CH$PTR(TRANS_DELAY), %C ' ', 8,CH$PTR(TRANSMIT_DELAY));
  6367. ;   3859  3        TR_DESC [DSC$B_CLASS] = DSC$K_CLASS_S;
  6368. ;   3860  3        TR_DESC [DSC$B_DTYPE] = DSC$K_DTYPE_T;
  6369. ;   3861  3        TR_DESC [DSC$W_LENGTH] = 8;
  6370. ;   3862  3        TR_DESC [DSC$A_POINTER] = TRANSMIT_DELAY;
  6371. ;   3863  3        STATUS = $BINTIM (TIMBUF=TR_DESC, TIMADR=DELAY);  ! Calculate delta time
  6372. ;   3864  3        IF NOT .STATUS THEN LIB$SIGNAL (.STATUS);
  6373. ;   3865  3     
  6374. ;   3866  3    ! Get the first file and try to open it:
  6375. ;   3867  3        SAVE_TY_FIL = .TY_FIL;                          ! Save current type out flag
  6376. ;   3868  3        TY_FIL = FALSE;                              ! Supress the type out of names
  6377. ;   3869  3        SAVE_FILE_SIZE = .FILE_SIZE;                       ! Save the file name size
  6378. ;   3870  3        INCR I FROM 0 TO .FILE_SIZE - 1 DO
  6379. ;   3871  3            SAVE_FILE_NAME [.I] = .FILE_NAME [.I];
  6380. ;   3872  3     
  6381. ;   3873  3    ! If we can open the file, then transmit it:
  6382. ;   3874  3        IF FILE_OPEN (FNC_READ)
  6383. ;   3875  3        THEN        ! Loop to handle one file at a time:
  6384. ;   3876  3          DO
  6385. ;   3877  3            STATUS = TRANSMIT_FILE ()
  6386. ;   3878  4          UNTIL ( NOT .STATUS) OR (.STATUS EQL KER_NOMORFILES)
  6387. ;   3879  3        ELSE
  6388. ;   3880  3            TY_FIL = .SAVE_TY_FIL;                             ! Reset type out flag
  6389. ;   3881  3     
  6390. ;   3882  2      END;                  ! End COMND_TRANSMIT routine
  6391.  
  6392.  
  6393.  
  6394.     .EXTRN  SYS$BINTIM
  6395.  
  6396.     .ENTRY  COMND_TRANSMIT, ^M<R2,R3,R4,R5,- ;COMND_TRANSMIT, Save R2,R3,R4,R5,-   3504                    07FC   00000
  6397.         R6,R7,R8,R9,R10>         ;R6,R7,R8,R9,R10
  6398.     MOVAB   G^LIB$SIGNAL, R10         ;LIB$SIGNAL, R10                                 5A 00000000G  00  9E   00002
  6399.     MOVAB   G^TY_FIL, R9             ;TY_FIL, R9                                     59 00000000G  00  9E   00009
  6400.     MOVAB   W^TERM_CLOSE, R8         ;TERM_CLOSE, R8                                 58     EE1B   CF  9E   00010
  6401.     MOVAB   G^U.88, R7             ;U.88, R7                                     57 00000000'  00  9E   00015
  6402.     SUBL2   #16, SP                 ;#16, SP                                     5E         10  C2   0001C
  6403.     CLRL    -776(R7)             ;CHR_COUNT                   3811               FCF8   C7  D4   0001F
  6404.     CLRW    (R7)                 ;OUT_BUFNUM                   3813                  67  B4   00023
  6405.     MOVW    #769, 4(R7)             ;#769, OUT_EFN                   3815       04   A7     0301   8F  B0   00025
  6406.     MOVZBL  (R7), R0             ;OUT_BUFNUM, R0               3817            50         67  9A   0002B
  6407.     MULL2   #80, R0                 ;#80, R0                                     50 00000050   8F  C4   0002E
  6408.     MOVAB   -324(R7)[R0], 8(R7)         ;OUT_BUF[R0], OUT_PTR                            08   A7     FEBC C740  9E   00035
  6409.     MOVZBL  1(R7), R0             ;OUT_BUFNUM+1, R0               3818            50    01   A7  9A   0003C
  6410.     MULL2   #80, R0                 ;#80, R0                                     50 00000050   8F  C4   00040
  6411.     MOVAB   -163(R7)[R0], 12(R7)         ;OUT_BUF+161[R0], OUT_PTR+4                        0C   A7     FF5D C740  9E   00047
  6412.     CLRL    -(SP)                 ;-(SP)                       3821                  7E  D4   0004E
  6413.     CALLS   #1, -485(R8)             ;#1, TERM_OPEN                              FE1B   C8         01  FB   00050
  6414.     MOVL    R0, R6                 ;R0, STATUS                                     56         50  D0   00055
  6415.     BLBC    G^CONNECT_FLAG, 1$         ;CONNECT_FLAG, 1$               3823            0B 00000000G  00  E9   00058
  6416.     CALLS   #0, (R8)             ;#0, TERM_CLOSE               3826            68         00  FB   0005F
  6417.     PUSHL   #134316274             ;#134316274                   3827           080180F2   8F  DD   00062
  6418.     BRB     4$                 ;4$                                               29  11   00068
  6419. 1$:    BLBC    R6, 3$                 ;STATUS, 3$                   3831            24         56  E9   0006A
  6420.     BLBS    -3756(R7), 2$             ;SYS_OUTPUT_OPEN, 2$               3838            0B     F154   C7  E8   0006D
  6421.     CALLS   #0, (R8)             ;#0, TERM_CLOSE               3841            68         00  FB   00072
  6422.     PUSHL   #134316242             ;#134316242                   3842           080180D2   8F  DD   00075
  6423.     BRB     4$                 ;4$                                               16  11   0007B
  6424. 2$:    MOVL    -3776(R7), -784(R7)         ;TERM_CHAN, CHANNEL               3846     FCF0   C7     F140   C7  D0   0007D
  6425.     MOVL    -3764(R7), -780(R7)         ;CONS_CHAN, CHANNEL+4               3847     FCF4   C7     F14C   C7  D0   00084
  6426.     BLBS    R6, 5$                 ;STATUS, 5$                   3849            09         56  E8   0008B
  6427.     CALLS   #0, (R8)             ;#0, TERM_CLOSE               3852            68         00  FB   0008E
  6428. 3$:    PUSHL   R6                 ;STATUS                   3853                  56  DD   00091
  6429. 4$:    CALLS   #1, (R10)             ;#1, LIB$SIGNAL                                 6A         01  FB   00093
  6430.     RET                      ;                       3854                  04   00096
  6431. 5$:    MOVC3   #7, G^U.133, 8(SP)         ;#7, U.133, TRANSMIT_DELAY           3858 00000000'  00         07  28   00097
  6432.                          ;                                    08   AE       0009E
  6433.     MOVC3   #1, G^TRANS_DELAY, (R3)         ;#1, TRANS_DELAY, (R3)                      00000000'  00         01  28   000A0
  6434.                          ;                                         63       000A7
  6435.     MOVL    #17694728, (SP)             ;#17694728, TR_DESC               3861            6E 010E0008   8F  D0   000A8
  6436.     MOVAB   8(SP), 4(SP)             ;TRANSMIT_DELAY, TR_DESC+4           3862       04   AE    08   AE  9E   000AF
  6437.     PUSHAB  208(R7)                 ;DELAY                       3863               00D0   C7  9F   000B4
  6438.     PUSHAB  4(SP)                 ;TR_DESC                                      04   AE  9F   000B8
  6439.     CALLS   #2, G^SYS$BINTIM         ;#2, SYS$BINTIM                      00000000G  00         02  FB   000BB
  6440.     MOVL    R0, R6                 ;R0, STATUS                                     56         50  D0   000C2
  6441.     BLBS    R6, 6$                 ;STATUS, 6$                   3864            05         56  E8   000C5
  6442.     PUSHL   R6                 ;STATUS                                           56  DD   000C8
  6443.     CALLS   #1, (R10)             ;#1, LIB$SIGNAL                                 6A         01  FB   000CA
  6444. 6$:    MOVL    (R9), 204(R7)             ;TY_FIL, SAVE_TY_FIL               3867     00CC   C7         69  D0   000CD
  6445.     CLRL    (R9)                 ;TY_FIL                   3868                  69  D4   000D2
  6446.     MOVL    G^FILE_SIZE, R1             ;FILE_SIZE, R1                   3869            51 00000000G  00  D0   000D4
  6447.     MOVL    R1, 200(R7)             ;R1, SAVE_FILE_SIZE                          00C8   C7         51  D0   000DB
  6448.     MNEGL   #1, R0                 ;#1, I                       3870            50         01  CE   000E0
  6449.     BRB     8$                 ;8$                                               0A  11   000E3
  6450. 7$:    MOVL    G^FILE_NAME[R0], 68(R7)[R0]     ;FILE_NAME[I], SAVE_FILE_NAME[I]      3871       44 A740 00000000G0040  D0   000E5
  6451. 8$:    AOBLSS  R1, R0, 7$             ;R1, I, 7$                                     50         51  F2   000EF
  6452.                          ;                                         F2       000F2
  6453.     CLRL    -(SP)                 ;-(SP)                       3874                  7E  D4   000F3
  6454.     CALLS   #1, G^FILE_OPEN             ;#1, FILE_OPEN                          00000000G  00         01  FB   000F5
  6455.     BLBC    R0, 10$                 ;R0, 10$                                     15         50  E9   000FC
  6456. 9$:    CALLS   #0, 3965(R8)             ;#0, TRANSMIT_FILE               3877     0F7D   C8         00  FB   000FF
  6457.     MOVL    R0, R6                 ;R0, STATUS                                     56         50  D0   00104
  6458.     BLBC    R6, 11$                 ;STATUS, 11$                   3878            0F         56  E9   00107
  6459.     CMPL    R6, #134316147             ;STATUS, #134316147                      08018073   8F         56  D1   0010A
  6460.     BNEQ    9$                 ;9$                                               EC  12   00111
  6461.     RET                      ;                                               04   00113
  6462. 10$:    MOVL    204(R7), (R9)             ;SAVE_TY_FIL, TY_FIL               3880            69     00CC   C7  D0   00114
  6463. 11$:    RET                      ;                       3882                  04   00119
  6464.  
  6465. ; Routine Size:  282 bytes,    Routine Base:  $CODE$ + 1A09
  6466.  
  6467.  
  6468. ;   3883  2     %SBTTL 'TERM_CONNECT -- INITIALIZATION'
  6469. ;   3884  2    ! Initialize variables
  6470. ;   3885  2        CHR_COUNT [0] = 0;
  6471. ;   3886  2        CHR_COUNT [1] = 0;
  6472. ;   3887  2        ESC_FLG = FALSE;
  6473. ;   3888  2        OUT_BUFNUM [0] = 0;
  6474. ;   3889  2        OUT_BUFNUM [1] = 0;
  6475. ;   3890  2        OUT_EFN [0] = 1;
  6476. ;   3891  2        OUT_EFN [1] = T_EFN_DISP + 1;
  6477. ;   3892  2        OUT_PTR [0] = CH$PTR (OUT_BUF [0, .OUT_BUFNUM [0]]);
  6478. ;   3893  2        OUT_PTR [1] = CH$PTR (OUT_BUF [1, .OUT_BUFNUM [1]]);
  6479. ;   3894  2        $BINTIM (TIMBUF = ATIMUP, TIMADR = BTIMUP);
  6480. ;   3895  2    !
  6481. ;   3896  2    ! Initialize Connect message
  6482. ;   3897  2    !
  6483. ;   3898  2        ESC_CHR_LEN = ESC_MSG (ESC_CHR_MSG);
  6484. ;   3899  2        CON_MSG_DESC [DSC$B_CLASS] = DSC$K_CLASS_S;
  6485. ;   3900  2        CON_MSG_DESC [DSC$B_DTYPE] = DSC$K_DTYPE_T;
  6486. ;   3901  2        CON_MSG_DESC [DSC$A_POINTER] = CON_MSG;
  6487. ;   3902  2        CON_MSG_DESC [DSC$W_LENGTH] = 1 + .NODE_DESC [DSC$W_LENGTH] + .CON_MSG_1 [DSC$W_LENGTH] +
  6488. ;   3903  2        .TERM_DESC [DSC$W_LENGTH] + .CON_MSG_2 [DSC$W_LENGTH] + .ESC_CHR_LEN + .CON_MSG_3 [DSC$W_LENGTH]
  6489. ;   3904  2        ;
  6490. ;   3905  2        CH$COPY (1, CH$PTR (UPLIT BYTE(%C'[')), .NODE_DESC [DSC$W_LENGTH],
  6491. ;   3906  2        CH$PTR (.NODE_DESC [DSC$A_POINTER]), .CON_MSG_1 [DSC$W_LENGTH],
  6492. ;   3907  2        CH$PTR (.CON_MSG_1 [DSC$A_POINTER]), .TERM_DESC [DSC$W_LENGTH],
  6493. ;   3908  2        CH$PTR (.TERM_DESC [DSC$A_POINTER]), .CON_MSG_2 [DSC$W_LENGTH],
  6494. ;   3909  2        CH$PTR (.CON_MSG_2 [DSC$A_POINTER]), .ESC_CHR_LEN, CH$PTR (ESC_CHR_MSG),
  6495. ;   3910  2        .CON_MSG_3 [DSC$W_LENGTH], CH$PTR (.CON_MSG_3 [DSC$A_POINTER]), CHR_NUL,
  6496. ;   3911  2        .CON_MSG_DESC [DSC$W_LENGTH], CH$PTR (CON_MSG));
  6497. ;   3912  2    !
  6498. ;   3913  2    ! Assign channels to devices TERM_NAME and MY_TERM.
  6499. ;   3914  2    !
  6500. ;   3915  2        STATUS = TERM_OPEN (FALSE);            ![054] Open terminal, no QIO's
  6501. ;   3916  2     
  6502. ;   3917  2        IF .CONNECT_FLAG                ! Check if TERM_NAME is TT:
  6503. ;   3918  2        THEN
  6504. ;   3919  3        BEGIN
  6505. ;   3920  3        TERM_CLOSE ();
  6506. ;   3921  3        LIB$SIGNAL (KER_CON_SAME);
  6507. ;   3922  3        RETURN KER_CON_SAME;
  6508. ;   3923  2        END;
  6509. ;   3924  2     
  6510. ;   3925  2        IF NOT .STATUS
  6511. ;   3926  2        THEN
  6512. ;   3927  3        BEGIN
  6513. ;   3928  3        LIB$SIGNAL (.STATUS);
  6514. ;   3929  3        RETURN .STATUS;
  6515. ;   3930  2        END;
  6516. ;   3931  2     
  6517. ;   3932  2        IF NOT .SYS_OUTPUT_OPEN            ![013] Make sure we have terminals
  6518. ;   3933  2        THEN
  6519. ;   3934  3        BEGIN
  6520. ;   3935  3        TERM_CLOSE ();
  6521. ;   3936  3        LIB$SIGNAL (KER_LINTERM);        ![013] Must both be terminals
  6522. ;   3937  3        RETURN KER_LINTERM;            ![013] So give up if not
  6523. ;   3938  2        END;
  6524. ;   3939  2     
  6525. ;   3940  2    ![054]    STATUS = $CANCEL (CHAN = .TERM_CHAN);    ! Kill all pending QIOs for terminal
  6526. ;   3941  2        CHANNEL [0] = .TERM_CHAN;
  6527. ;   3942  2        CHANNEL [1] = .CONS_CHAN;
  6528. ;   3943  2    ![054]    STATUS = $CANCEL (CHAN = .CONS_CHAN);    ! Kill pending QIOs for console as well
  6529. ;   3944  2    !    STATUS = $ASSIGN (DEVNAM = MY_TERM, CHAN = MYT_CHAN);
  6530. ;   3945  2     
  6531. ;   3946  2        IF NOT .STATUS
  6532. ;   3947  2        THEN
  6533. ;   3948  3        BEGIN
  6534. ;   3949  3        TERM_CLOSE ();
  6535. ;   3950  3        LIB$SIGNAL (.STATUS);
  6536. ;   3951  3        RETURN .STATUS;
  6537. ;   3952  2        END;
  6538. ;   3953  2     
  6539. ;   3954  2    !
  6540. ;   3955  2    ! Open any session logging file
  6541. ;   3956  2    !
  6542. ;   3957  2        SESSION_OPEN = FALSE;            ! Assume not logging
  6543. ;   3958  2        SESSION_LOGGING = FALSE;            !  .  .  .
  6544. ;   3959  2     
  6545. ;   3960  2        IF .SESSION_DESC [DSC$W_LENGTH] GTR 0
  6546. ;   3961  2        THEN
  6547. ;   3962  3        BEGIN
  6548. ;   3963  3        STATUS = LOG_OPEN (SESSION_DESC, SESSION_FAB, SESSION_RAB);
  6549. ;   3964  3     
  6550. ;   3965  3        IF .STATUS
  6551. ;   3966  3        THEN
  6552. ;   3967  4            BEGIN
  6553. ;   3968  4            SESSION_OPEN = TRUE;
  6554. ;   3969  4            SESSION_LOGGING = TRUE;
  6555. ;   3970  3            END;
  6556. ;   3971  3     
  6557. ;   3972  2        END;
  6558. ;   3973  2     
  6559. ;   3974  2    ! Prepare event flags
  6560. ;   3975  2        $CLREF (EFN = XITEFN);
  6561. ;   3976  2     
  6562. ;   3977  2        INCR FLAG FROM 1 TO XITEFN - 1 DO
  6563. ;   3978  2        $SETEF (EFN = .FLAG);
  6564. ;   3979  2     
  6565. ;   3980  2    !
  6566. ;   3981  2    ! Set up proper function for reading from console terminal.  This is done
  6567. ;   3982  2    ! so that the NOECHO flag only gets used if LOCAL_ECHO is OFF.
  6568. ;   3983  2    !
  6569. ;   3984  2        MYT_QIO_FUNC = IO$_TTYREADALL;
  6570. ;   3985  2     
  6571. ;   3986  2        IF NOT .ECHO_FLAG THEN MYT_QIO_FUNC = IO$M_NOECHO OR IO$_TTYREADALL;
  6572. ;   3987  2     
  6573. ;   3988  2    ! Connect streams
  6574. ;   3989  2    CONN_STREAMS :
  6575. ;   3990  3        BEGIN
  6576. ;   3991  3    !                     Send connect message
  6577. ;   3992  3        LIB$PUT_OUTPUT (%ASCID'');
  6578. ;   3993  3        LIB$PUT_OUTPUT (CON_MSG_DESC);
  6579. ;   3994  3        LIB$PUT_OUTPUT (%ASCID'');
  6580. ;   3995  3        $SETAST (ENBFLG = 0);            ! Disable AST until after all QIOs
  6581. ;   3996  3    !
  6582. ;   3997  3    ! The first input for each terminal will be for one character.
  6583. ;   3998  3    ! This read will wait forever for a character.  The subsequent
  6584. ;   3999  3    ! reads will have a timeout of 0 (immediate return).  This
  6585. ;   4000  3    ! gets us good response without using large amounts of run time.
  6586. ;   4001  3    !
  6587. ; P 4002  3        STATUS = $QIO (CHAN = .MYT_CHAN, FUNC = .MYT_QIO_FUNC, ASTADR = MYTINP, P1 = INP_BUF [MYT, 0],
  6588. ;   4003  3        P2 = 1, IOSB = IN_IOSB [MYT, 0, 0], ASTPRM = 0);
  6589. ;   4004  3     
  6590. ;   4005  3        IF NOT .STATUS THEN LEAVE CONN_STREAMS;
  6591. ;   4006  3     
  6592. ; P 4007  3        STATUS = $QIO (CHAN = .TERM_CHAN, FUNC = IO$_TTYREADALL OR IO$M_NOECHO, ASTADR = TRMINP,
  6593. ;   4008  3        P1 = INP_BUF [TRM, 0], P2 = INP_BUFSIZ, P3 = 0, IOSB = IN_IOSB [TRM, 0, 0], ASTPRM = 0);
  6594. ;   4009  3     
  6595. ;   4010  3        IF NOT .STATUS THEN LEAVE CONN_STREAMS;
  6596. ;   4011  3     
  6597. ;   4012  3        INCR INP_BUFNUM FROM 1 TO NUM_IN_BUF - 1 DO
  6598. ;   4013  4        BEGIN
  6599. ;   4014  4    ! Queue up an input for console terminal
  6600. ; P 4015  4        STATUS = $QIO (CHAN = .MYT_CHAN, FUNC = .MYT_QIO_FUNC OR IO$M_TIMED, ASTADR = MYTINP,
  6601. ; P 4016  4            P1 = INP_BUF [MYT, .INP_BUFNUM], P2 = INP_BUFSIZ, P3 = 0,
  6602. ; P 4017  4            IOSB = IN_IOSB [MYT,
  6603. ;   4018  4            .INP_BUFNUM, 0], ASTPRM = .INP_BUFNUM);
  6604. ;   4019  4     
  6605. ;   4020  4        IF NOT .STATUS THEN LEAVE CONN_STREAMS;
  6606. ;   4021  4     
  6607. ; P 4022  4        STATUS = $QIO (CHAN = .TERM_CHAN, FUNC = IO$_TTYREADALL OR IO$M_NOECHO OR IO$M_TIMED,
  6608. ; P 4023  4            ASTADR = TRMINP, P1 = INP_BUF [TRM, .INP_BUFNUM], P2 = INP_BUFSIZ, P3 = 0,
  6609. ;   4024  4            IOSB = IN_IOSB [TRM, .INP_BUFNUM, 0], ASTPRM = .INP_BUFNUM);
  6610. ;   4025  4     
  6611. ;   4026  4        IF NOT .STATUS THEN LEAVE CONN_STREAMS;
  6612. ;   4027  4     
  6613. ;   4028  3        END;
  6614. ;   4029  3     
  6615. ;   4030  3        $SETAST (ENBFLG = 1);            ! Enable AST
  6616. ;   4031  3        $WAITFR (EFN = XITEFN);            ! Wait for exit flag
  6617. ;   4032  3        $WFLAND (EFN = 0, MASK = EFN_MASK);        ! Go when outputs completed
  6618. ;   4033  3        CON_MSG_DESC [DSC$W_LENGTH] = 1 + .NODE_DESC [DSC$W_LENGTH] + .CON_MSG_4 [DSC$W_LENGTH];
  6619. ;   4034  3        CH$COPY (1, CH$PTR (UPLIT BYTE(%C'[')), .NODE_DESC [DSC$W_LENGTH],
  6620. ;   4035  3        CH$PTR (.NODE_DESC [DSC$A_POINTER]), .CON_MSG_4 [DSC$W_LENGTH],
  6621. ;   4036  3        CH$PTR (.CON_MSG_4 [DSC$A_POINTER]), CHR_NUL, .CON_MSG_DESC [DSC$W_LENGTH],
  6622. ;   4037  3        CH$PTR (.CON_MSG_DESC [DSC$A_POINTER]));
  6623. ;   4038  3        LIB$PUT_OUTPUT (CON_MSG_DESC);
  6624. ;   4039  3        LIB$PUT_OUTPUT (%ASCID'');
  6625. ;   4040  2        END;
  6626. ;   4041  2    !
  6627. ;   4042  2    ! Program end -- Close both channels and return with STATUS
  6628. ;   4043  2    !
  6629. ;   4044  2        $CANTIM ();
  6630. ;   4045  2    !
  6631. ;   4046  2    ! Close any log file
  6632. ;   4047  2    !
  6633. ;   4048  2     
  6634. ;   4049  2        IF .SESSION_OPEN THEN LOG_CLOSE (SESSION_FAB, SESSION_RAB);
  6635. ;   4050  2     
  6636. ;   4051  2        SESSION_OPEN = FALSE;
  6637. ;   4052  2    !
  6638. ;   4053  2    ! Call TERM_CLOSE to clean up
  6639. ;   4054  2    !
  6640. ;   4055  2        STATUS = TERM_CLOSE ();
  6641. ;   4056  2     
  6642. ;   4057  2        IF NOT .STATUS THEN LIB$SIGNAL (.STATUS);
  6643. ;   4058  2     
  6644. ;   4059  2        $SETAST (ENBFLG = 1);
  6645. ;   4060  2        RETURN .STATUS;
  6646. ;   4061  1        END;                    ! End of TERM_CONNECT
  6647.  
  6648.  
  6649.  
  6650.     .PSECT  $PLIT$,NOWRT,NOEXE,2
  6651.  
  6652. P.AEP:    .BYTE   91                 ;                                                5B  005C0
  6653.     .BLKB   3                                       ;                      005C1
  6654. P.AER:    .BLKB   0                 ;                                                    005C4
  6655. P.AEQ:    .LONG   17694720             ;                                              010E0000  005C4
  6656.     .ADDRESS P.AER                 ;                                              00000000' 005C8
  6657. P.AET:    .BLKB   0                 ;                                                    005CC
  6658. P.AES:    .LONG   17694720             ;                                              010E0000  005CC
  6659.     .ADDRESS P.AET                 ;                                              00000000' 005D0
  6660. P.AEU:    .BYTE   91                 ;                                                5B  005D4
  6661.     .BLKB   3                                       ;                      005D5
  6662. P.AEW:    .BLKB   0                 ;                                                    005D8
  6663. P.AEV:    .LONG   17694720             ;                                              010E0000  005D8
  6664.     .ADDRESS P.AEW                 ;                                              00000000' 005DC
  6665.  
  6666.     .EXTRN  SYS$WFLAND
  6667.  
  6668.     .PSECT  $CODE$,NOWRT,2
  6669.  
  6670.     .ENTRY  TERM_CONNECT, ^M<R2,R3,R4,R5,R6,-;TERM_CONNECT, Save R2,R3,R4,R5,R6,-  2780                    0FFC   00000
  6671.         R7,R8,R9,R10,R11>         ;R7,R8,R9,R10,R11
  6672.     MOVAB   -116(SP), SP             ;-116(SP), SP                                     5E    8C   AE  9E   00002
  6673.     CLRQ    G^U.81                 ;U.81                       3885           00000000'  00  7C   00006
  6674.     CLRW    G^U.88                 ;U.88                       3888           00000000'  00  B4   0000C
  6675.     MOVW    #769, G^U.89             ;#769, U.89                   3890 00000000'  00     0301   8F  B0   00012
  6676.     MOVZBL  G^U.88, R0             ;U.88, R0                   3892            50 00000000'  00  9A   0001B
  6677.     MULL2   #80, R0                 ;#80, R0                                     50 00000050   8F  C4   00022
  6678.     MOVAB   G^U.87[R0], G^U.90         ;U.87[R0], U.90                      00000000'  00 00000000'0040  9E   00029
  6679.     MOVZBL  G^U.88+1, R0             ;U.88+1, R0                   3893            50 00000000'  00  9A   00035
  6680.     MULL2   #80, R0                 ;#80, R0                                     50 00000050   8F  C4   0003C
  6681.     MOVAB   G^U.87+161[R0], G^U.90+4     ;U.87+161[R0], U.90+4                      00000000'  00 00000000'0040  9E   00043
  6682.     PUSHAB  G^U.79                 ;U.79                       3894           00000000'  00  9F   0004F
  6683.     PUSHAB  G^U.103                 ;U.103                                        00000000'  00  9F   00055
  6684.     CALLS   #2, G^SYS$BINTIM         ;#2, SYS$BINTIM                      00000000G  00         02  FB   0005B
  6685.     PUSHAB  G^U.93                 ;U.93                       3898           00000000'  00  9F   00062
  6686.     CALLS   #1, W^U.120             ;#1, U.120                              FA93   CF         01  FB   00068
  6687.     MOVL    R0, G^U.92             ;R0, U.92                          00000000'  00         50  D0   0006D
  6688.     MOVW    #270, 30(SP)             ;#270, CON_MSG_DESC+2               3900       1E   AE     010E   8F  B0   00074
  6689.     MOVAB   36(SP), 32(SP)             ;CON_MSG, CON_MSG_DESC+4           3901       20   AE    24   AE  9E   0007A
  6690.     MOVZWL  G^NODE_DESC, R7             ;NODE_DESC, R7                   3902            57 00000000'  00  3C   0007F
  6691.     MOVZWL  G^U.95, 24(SP)             ;U.95, 24(SP)                                18   AE 00000000'  00  3C   00086
  6692.     ADDL3   24(SP), R7, R0             ;24(SP), R7, R0                                 57    18   AE  C1   0008E
  6693.                          ;                                         50       00092
  6694.     MOVZWL  G^TERM_DESC, 20(SP)         ;TERM_DESC, 20(SP)               3903       14   AE 00000000'  00  3C   00093
  6695.     ADDL2   20(SP), R0             ;20(SP), R0                                     50    14   AE  C0   0009B
  6696.     MOVZWL  G^U.96, 16(SP)             ;U.96, 16(SP)                                10   AE 00000000'  00  3C   0009F
  6697.     ADDL2   16(SP), R0             ;16(SP), R0                                     50    10   AE  C0   000A7
  6698.     MOVL    G^U.92, R11             ;U.92, R11                                     5B 00000000'  00  D0   000AB
  6699.     ADDL2   R11, R0                 ;R11, R0                                     50         5B  C0   000B2
  6700.     MOVZWL  G^U.97, R6             ;U.97, R6                                     56 00000000'  00  3C   000B5
  6701.     MOVAB   1(R6)[R0], R1             ;1(R6)[R0], R1                                     51    01 A640  9E   000BC
  6702.     MOVW    R1, 28(SP)             ;R1, CON_MSG_DESC                            1C   AE         51  B0   000C1
  6703.     MOVL    G^NODE_DESC+4, 12(SP)         ;NODE_DESC+4, 12(SP)               3906       0C   AE 00000000'  00  D0   000C5
  6704.     MOVL    G^U.95+4, 8(SP)             ;U.95+4, 8(SP)                   3907       08   AE 00000000'  00  D0   000CD
  6705.     MOVL    G^TERM_DESC+4, 4(SP)         ;TERM_DESC+4, 4(SP)               3908       04   AE 00000000'  00  D0   000D5
  6706.     MOVL    G^U.96+4, (SP)             ;U.96+4, (SP)                   3909            6E 00000000'  00  D0   000DD
  6707.     MOVL    G^U.97+4, R10             ;U.97+4, R10                   3910            5A 00000000'  00  D0   000E4
  6708.     MOVZWL  28(SP), R9             ;CON_MSG_DESC, R9               3911            59    1C   AE  3C   000EB
  6709.     MOVAB   36(SP), R8             ;CON_MSG, R8                                     58    24   AE  9E   000EF
  6710.     MOVC5   #1, G^P.AEP, #0, R9, (R8)     ;#1, P.AEP, #0, R9, (R8)                  00000000'  00         01  2C   000F3
  6711.                          ;                                   59         00       000FA
  6712.                          ;                                         68       000FC
  6713.     BGEQ    1$                 ;1$                                               61  18   000FD
  6714.     INCL    R8                 ;R8                                               58  D6   000FF
  6715.     DECL    R9                 ;R9                                               59  D7   00101
  6716.     MOVC5   R7, @12(SP), #0, R9, (R8)     ;R7, @12(SP), #0, R9, (R8)                        0C   BE         57  2C   00103
  6717.                          ;                                   59         00       00107
  6718.                          ;                                         68       00109
  6719.     BGEQ    1$                 ;1$                                               54  18   0010A
  6720.     ADDL2   R7, R8                 ;R7, R8                                     58         57  C0   0010C
  6721.     SUBL2   R7, R9                 ;R7, R9                                     59         57  C2   0010F
  6722.     MOVC5   24(SP), @8(SP), #0, R9, (R8)     ;24(SP), @8(SP), #0, R9, (R8)                        08   BE    18   AE  2C   00112
  6723.                          ;                                   59         00       00117
  6724.                          ;                                         68       00119
  6725.     BGEQ    1$                 ;1$                                               44  18   0011A
  6726.     ADDL2   24(SP), R8             ;24(SP), R8                                     58    18   AE  C0   0011C
  6727.     SUBL2   24(SP), R9             ;24(SP), R9                                     59    18   AE  C2   00120
  6728.     MOVC5   20(SP), @4(SP), #0, R9, (R8)     ;20(SP), @4(SP), #0, R9, (R8)                        04   BE    14   AE  2C   00124
  6729.                          ;                                   59         00       00129
  6730.                          ;                                         68       0012B
  6731.     BGEQ    1$                 ;1$                                               32  18   0012C
  6732.     ADDL2   20(SP), R8             ;20(SP), R8                                     58    14   AE  C0   0012E
  6733.     SUBL2   20(SP), R9             ;20(SP), R9                                     59    14   AE  C2   00132
  6734.     MOVC5   16(SP), @0(SP), #0, R9, (R8)     ;16(SP), @0(SP), #0, R9, (R8)                        00   BE    10   AE  2C   00136
  6735.                          ;                                   59         00       0013B
  6736.                          ;                                         68       0013D
  6737.     BGEQ    1$                 ;1$                                               20  18   0013E
  6738.     ADDL2   16(SP), R8             ;16(SP), R8                                     58    10   AE  C0   00140
  6739.     SUBL2   16(SP), R9             ;16(SP), R9                                     59    10   AE  C2   00144
  6740.     MOVC5   R11, G^U.93, #0, R9, (R8)     ;R11, U.93, #0, R9, (R8)                  00000000'  00         5B  2C   00148
  6741.                          ;                                   59         00       0014F
  6742.                          ;                                         68       00151
  6743.     BGEQ    1$                 ;1$                                               0C  18   00152
  6744.     ADDL2   R11, R8                 ;R11, R8                                     58         5B  C0   00154
  6745.     SUBL2   R11, R9                 ;R11, R9                                     59         5B  C2   00157
  6746.     MOVC5   R6, (R10), #0, R9, (R8)         ;R6, (R10), #0, R9, (R8)                             6A         56  2C   0015A
  6747.                          ;                                   59         00       0015D
  6748.                          ;                                         68       0015F
  6749. 1$:    CLRL    -(SP)                 ;-(SP)                       3915                  7E  D4   00160
  6750.     CALLS   #1, W^TERM_OPEN             ;#1, TERM_OPEN                              E9C9   CF         01  FB   00162
  6751.     MOVL    R0, R10                 ;R0, STATUS                                     5A         50  D0   00167
  6752.     BLBC    G^CONNECT_FLAG, 2$         ;CONNECT_FLAG, 2$               3917            1A 00000000G  00  E9   0016A
  6753.     CALLS   #0, W^TERM_CLOSE         ;#0, TERM_CLOSE               3920     EB9F   CF         00  FB   00171
  6754.     PUSHL   #134316274             ;#134316274                   3921           080180F2   8F  DD   00176
  6755.     CALLS   #1, G^LIB$SIGNAL         ;#1, LIB$SIGNAL                      00000000G  00         01  FB   0017C
  6756.     MOVL    #134316274, R0             ;#134316274, R0               3922            50 080180F2   8F  D0   00183
  6757.     RET                      ;                                               04   0018A
  6758. 2$:    BLBC    R10, 4$                 ;STATUS, 4$                   3925            3F         5A  E9   0018B
  6759.     BLBS    G^U.9, 3$             ;U.9, 3$                   3932            1A 00000000'  00  E8   0018E
  6760.     CALLS   #0, W^TERM_CLOSE         ;#0, TERM_CLOSE               3935     EB7B   CF         00  FB   00195
  6761.     PUSHL   #134316242             ;#134316242                   3936           080180D2   8F  DD   0019A
  6762.     CALLS   #1, G^LIB$SIGNAL         ;#1, LIB$SIGNAL                      00000000G  00         01  FB   001A0
  6763.     MOVL    #134316242, R0             ;#134316242, R0               3937            50 080180D2   8F  D0   001A7
  6764.     RET                      ;                                               04   001AE
  6765. 3$:    MOVL    G^U.4, G^U.80             ;U.4, U.80                   3941 00000000'  00 00000000'  00  D0   001AF
  6766.     MOVL    G^U.7, G^U.80+4             ;U.7, U.80+4                   3942 00000000'  00 00000000'  00  D0   001BA
  6767.     BLBS    R10, 5$                 ;STATUS, 5$                   3946            11         5A  E8   001C5
  6768.     CALLS   #0, W^TERM_CLOSE         ;#0, TERM_CLOSE               3949     EB48   CF         00  FB   001C8
  6769. 4$:    PUSHL   R10                 ;STATUS                   3950                  5A  DD   001CD
  6770.     CALLS   #1, G^LIB$SIGNAL         ;#1, LIB$SIGNAL                      00000000G  00         01  FB   001CF
  6771.     BRW     17$                 ;17$                       3951                0250  31   001D6
  6772. 5$:    CLRQ    G^U.22                 ;U.22                       3957           00000000'  00  7C   001D9
  6773.     TSTW    G^SESSION_DESC             ;SESSION_DESC                   3960           00000000'  00  B5   001DF
  6774.     BEQL    6$                 ;6$                                               2D  13   001E5
  6775.     PUSHAB  G^U.20                 ;U.20                       3963           00000000'  00  9F   001E7
  6776.     PUSHAB  G^U.19                 ;U.19                                        00000000'  00  9F   001ED
  6777.     PUSHAB  G^SESSION_DESC             ;SESSION_DESC                                    00000000'  00  9F   001F3
  6778.     CALLS   #3, G^LOG_OPEN             ;#3, LOG_OPEN                          00000000G  00         03  FB   001F9
  6779.     MOVL    R0, R10                 ;R0, STATUS                                     5A         50  D0   00200
  6780.     BLBC    R10, 6$                 ;STATUS, 6$                   3965            0E         5A  E9   00203
  6781.     MOVL    #1, G^U.22             ;#1, U.22                   3968 00000000'  00         01  D0   00206
  6782.     MOVL    #1, G^U.23             ;#1, U.23                   3969 00000000'  00         01  D0   0020D
  6783. 6$:    PUSHL   #5                 ;#5                       3975                  05  DD   00214
  6784.     CALLS   #1, G^SYS$CLREF             ;#1, SYS$CLREF                          00000000G  00         01  FB   00216
  6785.     MOVL    #1, R2                 ;#1, FLAG                   3977            52         01  D0   0021D
  6786. 7$:    PUSHL   R2                 ;FLAG                       3978                  52  DD   00220
  6787.     CALLS   #1, G^SYS$SETEF             ;#1, SYS$SETEF                          00000000G  00         01  FB   00222
  6788.     AOBLEQ  #4, R2, 7$             ;#4, FLAG, 7$                                     52         04  F3   00229
  6789.                          ;                                         F3       0022C
  6790.     MOVL    #58, G^U.91             ;#58, U.91                   3984 00000000'  00         3A  D0   0022D
  6791.     BLBS    G^ECHO_FLAG, 8$             ;ECHO_FLAG, 8$                   3986            08 00000000G  00  E8   00234
  6792.     MOVZBL  #122, G^U.91             ;#122, U.91                          00000000'  00    7A   8F  9A   0023B
  6793. 8$:    PUSHAB  G^P.AEQ                 ;P.AEQ                       3992           00000000'  00  9F   00243
  6794.     CALLS   #1, G^LIB$PUT_OUTPUT         ;#1, LIB$PUT_OUTPUT                      00000000G  00         01  FB   00249
  6795.     PUSHAB  28(SP)                 ;CON_MSG_DESC                   3993             1C   AE  9F   00250
  6796.     CALLS   #1, G^LIB$PUT_OUTPUT         ;#1, LIB$PUT_OUTPUT                      00000000G  00         01  FB   00253
  6797.     PUSHAB  G^P.AES                 ;P.AES                       3994           00000000'  00  9F   0025A
  6798.     CALLS   #1, G^LIB$PUT_OUTPUT         ;#1, LIB$PUT_OUTPUT                      00000000G  00         01  FB   00260
  6799.     CLRL    -(SP)                 ;-(SP)                       3995                  7E  D4   00267
  6800.     CALLS   #1, G^SYS$SETAST         ;#1, SYS$SETAST                      00000000G  00         01  FB   00269
  6801.     CLRQ    -(SP)                 ;-(SP)                       4003                  7E  7C   00270
  6802.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00272
  6803.     PUSHL   #1                 ;#1                                               01  DD   00274
  6804.     PUSHAB  G^U.84                 ;U.84                                        00000000'  00  9F   00276
  6805.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   0027C
  6806.     PUSHAB  W^U.109                 ;U.109                                            F6A4   CF  9F   0027E
  6807.     PUSHAB  G^U.83                 ;U.83                                        00000000'  00  9F   00282
  6808.     PUSHL   G^U.91                 ;U.91                                        00000000'  00  DD   00288
  6809.     PUSHL   G^U.104                 ;U.104                                        00000000'  00  DD   0028E
  6810.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00294
  6811.     CALLS   #12, G^SYS$QIO             ;#12, SYS$QIO                          00000000G  00         0C  FB   00296
  6812.     MOVL    R0, R10                 ;R0, STATUS                                     5A         50  D0   0029D
  6813.     BLBC    R10, 10$             ;STATUS, 10$                   4005            78         5A  E9   002A0
  6814.     CLRQ    -(SP)                 ;-(SP)                       4008                  7E  7C   002A3
  6815.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   002A5
  6816.     MOVZBL  #80, -(SP)             ;#80, -(SP)                                     7E    50   8F  9A   002A7
  6817.     PUSHAB  G^U.84+161             ;U.84+161                                    00000000'  00  9F   002AB
  6818.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   002B1
  6819.     PUSHAB  W^U.119                 ;U.119                                            F76B   CF  9F   002B3
  6820.     PUSHAB  G^U.83+16             ;U.83+16                                    00000000'  00  9F   002B7
  6821.     MOVZBL  #122, -(SP)             ;#122, -(SP)                                     7E    7A   8F  9A   002BD
  6822.     PUSHL   G^U.4                 ;U.4                                        00000000'  00  DD   002C1
  6823.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   002C7
  6824.     CALLS   #12, G^SYS$QIO             ;#12, SYS$QIO                          00000000G  00         0C  FB   002C9
  6825.     MOVL    R0, R10                 ;R0, STATUS                                     5A         50  D0   002D0
  6826.     BLBC    R10, 11$             ;STATUS, 11$                   4010            7A         5A  E9   002D3
  6827.     MOVL    #1, R2                 ;#1, INP_BUFNUM               4012            52         01  D0   002D6
  6828. 9$:    CLRQ    -(SP)                 ;-(SP)                       4018                  7E  7C   002D9
  6829.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   002DB
  6830.     MOVZBL  #80, -(SP)             ;#80, -(SP)                                     7E    50   8F  9A   002DD
  6831.     MULL3   #80, R2, R3             ;#80, INP_BUFNUM, R3                                 52 00000050   8F  C5   002E1
  6832.                          ;                                         53       002E8
  6833.     PUSHAB  G^U.84[R3]             ;U.84[R3]                                    00000000'0043  9F   002E9
  6834.     PUSHL   R2                 ;INP_BUFNUM                                           52  DD   002F0
  6835.     PUSHAB  W^U.109                 ;U.109                                            F630   CF  9F   002F2
  6836.     PUSHAQ  G^U.83[R2]             ;U.83[INP_BUFNUM]                                00000000'0042  7F   002F6
  6837.     BISL3   #128, G^U.91, -(SP)         ;#128, U.91, -(SP)                      00000000'  00 00000080   8F  C9   002FD
  6838.                          ;                                         7E       00308
  6839.     PUSHL   G^U.104                 ;U.104                                        00000000'  00  DD   00309
  6840.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   0030F
  6841.     CALLS   #12, G^SYS$QIO             ;#12, SYS$QIO                          00000000G  00         0C  FB   00311
  6842.     MOVL    R0, R10                 ;R0, STATUS                                     5A         50  D0   00318
  6843. 10$:    BLBC    R10, 11$             ;STATUS, 11$                   4020            32         5A  E9   0031B
  6844.     CLRQ    -(SP)                 ;-(SP)                       4024                  7E  7C   0031E
  6845.     CLRQ    -(SP)                 ;-(SP)                                               7E  7C   00320
  6846.     MOVZBL  #80, -(SP)             ;#80, -(SP)                                     7E    50   8F  9A   00322
  6847.     PUSHAB  G^U.84+161[R3]             ;U.84+161[R3]                                    00000000'0043  9F   00326
  6848.     PUSHL   R2                 ;INP_BUFNUM                                           52  DD   0032D
  6849.     PUSHAB  W^U.119                 ;U.119                                            F6EF   CF  9F   0032F
  6850.     PUSHAQ  G^U.83+16[R2]             ;U.83+16[INP_BUFNUM]                                00000000'0042  7F   00333
  6851.     MOVZBL  #250, -(SP)             ;#250, -(SP)                                     7E    FA   8F  9A   0033A
  6852.     PUSHL   G^U.4                 ;U.4                                        00000000'  00  DD   0033E
  6853.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00344
  6854.     CALLS   #12, G^SYS$QIO             ;#12, SYS$QIO                          00000000G  00         0C  FB   00346
  6855.     MOVL    R0, R10                 ;R0, STATUS                                     5A         50  D0   0034D
  6856. 11$:    BLBS    R10, 12$             ;STATUS, 12$                   4026            03         5A  E8   00350
  6857.     BRW     14$                 ;14$                                             008D  31   00353
  6858. 12$:    ACBL    #1, #1, R2, 9$             ;#1, #1, INP_BUFNUM, 9$           4012            01         01  F1   00356
  6859.                          ;                                 FF7D         52       00359
  6860.     PUSHL   #1                 ;#1                       4030                  01  DD   0035C
  6861.     CALLS   #1, G^SYS$SETAST         ;#1, SYS$SETAST                      00000000G  00         01  FB   0035E
  6862.     PUSHL   #5                 ;#5                       4031                  05  DD   00365
  6863.     CALLS   #1, G^SYS$WAITFR         ;#1, SYS$WAITFR                      00000000G  00         01  FB   00367
  6864.     PUSHL   #30                 ;#30                       4032                  1E  DD   0036E
  6865.     CLRL    -(SP)                 ;-(SP)                                               7E  D4   00370
  6866.     CALLS   #2, G^SYS$WFLAND         ;#2, SYS$WFLAND                      00000000G  00         02  FB   00372
  6867.     MOVZWL  G^NODE_DESC, R6             ;NODE_DESC, R6                   4033            56 00000000'  00  3C   00379
  6868.     MOVZWL  G^U.98, R7             ;U.98, R7                                     57 00000000'  00  3C   00380
  6869.     MOVAB   1(R7)[R6], R0             ;1(R7)[R6], R0                                     50    01 A746  9E   00387
  6870.     MOVW    R0, 28(SP)             ;R0, CON_MSG_DESC                            1C   AE         50  B0   0038C
  6871.     MOVL    G^NODE_DESC+4, 24(SP)         ;NODE_DESC+4, 24(SP)               4035       18   AE 00000000'  00  D0   00390
  6872.     MOVL    G^U.98+4, R11             ;U.98+4, R11                   4036            5B 00000000'  00  D0   00398
  6873.     MOVZWL  28(SP), R9             ;CON_MSG_DESC, R9                                 59    1C   AE  3C   0039F
  6874.     MOVL    32(SP), R8             ;CON_MSG_DESC+4, R8               4037            58    20   AE  D0   003A3
  6875.     MOVC5   #1, G^P.AEU, #0, R9, (R8)     ;#1, P.AEU, #0, R9, (R8)                  00000000'  00         01  2C   003A7
  6876.                          ;                                   59         00       003AE
  6877.                          ;                                         68       003B0
  6878.     BGEQ    13$                 ;13$                                               19  18   003B1
  6879.     INCL    R8                 ;R8                                               58  D6   003B3
  6880.     DECL    R9                 ;R9                                               59  D7   003B5
  6881.     MOVC5   R6, @24(SP), #0, R9, (R8)     ;R6, @24(SP), #0, R9, (R8)                        18   BE         56  2C   003B7
  6882.                          ;                                   59         00       003BB
  6883.                          ;                                         68       003BD
  6884.     BGEQ    13$                 ;13$                                               0C  18   003BE
  6885.     ADDL2   R6, R8                 ;R6, R8                                     58         56  C0   003C0
  6886.     SUBL2   R6, R9                 ;R6, R9                                     59         56  C2   003C3
  6887.     MOVC5   R7, (R11), #0, R9, (R8)         ;R7, (R11), #0, R9, (R8)                             6B         57  2C   003C6
  6888.                          ;                                   59         00       003C9
  6889.                          ;                                         68       003CB
  6890. 13$:    PUSHAB  28(SP)                 ;CON_MSG_DESC                   4038             1C   AE  9F   003CC
  6891.     CALLS   #1, G^LIB$PUT_OUTPUT         ;#1, LIB$PUT_OUTPUT                      00000000G  00         01  FB   003CF
  6892.     PUSHAB  G^P.AEV                 ;P.AEV                       4039           00000000'  00  9F   003D6
  6893.     CALLS   #1, G^LIB$PUT_OUTPUT         ;#1, LIB$PUT_OUTPUT                      00000000G  00         01  FB   003DC
  6894. 14$:    CLRQ    -(SP)                 ;-(SP)                       4044                  7E  7C   003E3
  6895.     CALLS   #2, G^SYS$CANTIM         ;#2, SYS$CANTIM                      00000000G  00         02  FB   003E5
  6896.     BLBC    G^U.22, 15$             ;U.22, 15$                   4049            13 00000000'  00  E9   003EC
  6897.     PUSHAB  G^U.20                 ;U.20                                        00000000'  00  9F   003F3
  6898.     PUSHAB  G^U.19                 ;U.19                                        00000000'  00  9F   003F9
  6899.     CALLS   #2, G^LOG_CLOSE             ;#2, LOG_CLOSE                          00000000G  00         02  FB   003FF
  6900. 15$:    CLRL    G^U.22                 ;U.22                       4051           00000000'  00  D4   00406
  6901.     CALLS   #0, W^TERM_CLOSE         ;#0, TERM_CLOSE               4055     E904   CF         00  FB   0040C
  6902.     MOVL    R0, R10                 ;R0, STATUS                                     5A         50  D0   00411
  6903.     BLBS    R10, 16$             ;STATUS, 16$                   4057            09         5A  E8   00414
  6904.     PUSHL   R10                 ;STATUS                                           5A  DD   00417
  6905.     CALLS   #1, G^LIB$SIGNAL         ;#1, LIB$SIGNAL                      00000000G  00         01  FB   00419
  6906. 16$:    PUSHL   #1                 ;#1                       4059                  01  DD   00420
  6907.     CALLS   #1, G^SYS$SETAST         ;#1, SYS$SETAST                      00000000G  00         01  FB   00422
  6908. 17$:    MOVL    R10, R0                 ;STATUS, R0                   4060            50         5A  D0   00429
  6909.     RET                      ;                                               04   0042C
  6910.  
  6911. ; Routine Size:  1069 bytes,    Routine Base:  $CODE$ + 1B23
  6912.  
  6913.  
  6914. ;   4062  1     
  6915. ;   4063  1     %SBTTL 'End of KERTRM'
  6916. ;   4064  1    END                        ! End of module
  6917. ;   4065  1     
  6918. ;   4066  0    ELUDOM
  6919.  
  6920.  
  6921.  
  6922.  
  6923.  
  6924.  
  6925. ;                       PSECT SUMMARY
  6926. ;
  6927. ;    Name             Bytes                   Attributes
  6928. ;
  6929. ;  $OWN$                 4008  NOVEC,  WRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)
  6930. ;  $GLOBAL$                   56  NOVEC,  WRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)
  6931. ;  $PLIT$                 1504  NOVEC,NOWRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)
  6932. ;  $CODE$                 8016  NOVEC,NOWRT,  RD ,  EXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)
  6933. ;  .  ABS  .                    0  NOVEC,NOWRT,NORD ,NOEXE,NOSHR,  LCL,  ABS,  CON,NOPIC,ALIGN(0)
  6934.  
  6935.  
  6936.  
  6937.  
  6938. ;                Library Statistics
  6939. ;
  6940. ;                         -------- Symbols --------        Pages    Processing
  6941. ;    File                     Total    Loaded   Percent      Mapped    Time
  6942. ;
  6943. ;  SYS$COMMON:[SYSLIB]STARLET.L32;2         12540        75         0       721          00:00.4
  6944.  
  6945.  
  6946.  
  6947.  
  6948.  
  6949.  
  6950.  
  6951. ;                    COMMAND QUALIFIERS
  6952.  
  6953. ;    BLIS/LIS/MACH=(ASSEM,UNIQUE)/SOURCE=NOHEAD VMSTRM.BLI
  6954.  
  6955. ; Compilation Complete
  6956.  
  6957.     .END
  6958.