TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (2)      53  IMMEDIATE CONTROL SEQUENCE ACTION ROUTINES

   (8)     221  TTY$PUTNEXTCHAR - BUFFER CHARACTER 

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page   1

X05                                                                                                                              (1)



                                     0000     1 	.TITLE	TTYCHARI - TERMINAL INPUT CHARACTER ROUTINES

                                     0000     2 	.IDENT	/X05/

                                     0000     3 ;

                                     0000     4 ; COPYRIGHT (C) 1977

                                     0000     5 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

                                     0000     6 ;

                                     0000     7 ; THIS SOFTWARE IS FURNISHED UNDER  A LICENSE FOR USE ONLY  ON  A

                                     0000     8 ; SINGLE COMPUTER SYSTEM AND MAY BE  COPIED ONLY WITH  THE INCLU-

                                     0000     9 ; SION OF  THE  ABOVE  COPYRIGHT NOTICE.  THIS SOFTWARE,  OR  ANY

                                     0000    10 ; OTHER COPIES THEREOF, MAY NOT BE  PROVIDED  OR  OTHERWISE  MADE

                                     0000    11 ; AVAILABLE TO ANY OTHER PERSON EXCEPT  FOR  USE  ON  SUCH SYSTEM

                                     0000    12 ; AND TO  ONE WHO AGREES  TO  THESE LICENSE  TERMS.  TITLE TO AND

                                     0000    13 ; OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.

                                     0000    14 ;

                                     0000    15 ; THE INFORMATION IN THIS SOFTWARE  IS  SUBJECT TO CHANGE WITHOUT

                                     0000    16 ; NOTICE AND SHOULD NOT BE CONSTRUED  AS  A COMMITMENT BY DIGITAL

                                     0000    17 ; EQUIPMENT CORPORATION.

                                     0000    18 ;

                                     0000    19 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS

                                     0000    20 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

                                     0000    21 ;

                                     0000    22 ;++

                                     0000    23 ;

                                     0000    24 ; FACILITY:

                                     0000    25 ;

                                     0000    26 ;	VAX/VMS TERMINAL DRIVER

                                     0000    27 ;

                                     0000    28 ; ABSTRACT:

                                     0000    29 ;

                                     0000    30 ;	THIS MODULE CONTAINS ROUTINES NEEDED FOR CHARACTER INPUT.

                                     0000    31 ;

                                     0000    32 ; AUTHOR:

                                     0000    33 ;

                                     0000    34 ;	R.HEINEN  11-AUG-1976

                                     0000    35 ;--

                                     0000    36 ;

                                     0000    37 ;

                                     0000    38 ; EXTERNAL SYMBOLS

                                     0000    39 ;

                                     0000    40 	$IODEF				; DEFINE I/O FUNCTION CODES

                                     0000    41 	$IPLDEF				; DEFINE IPL'S

                                     0000    42 	$IRPDEF				; DEFINE IRP

                                     0000    43 	$PRDEF				; DEFINE PROCESSOR REGISTERS

                                     0000    44 	$SSDEF				; DEFINE SYSTEM SERVICE STATUS CODES

                                     0000    45 	$UCBDEF				; DEFINE UCB

                                     0000    46 	$TTDEF				; DEFINE TERMINAL CHARACTERISTICS

                                     0000    47 	$TTYDEF				; DEFINE TERMINAL DRIVER SYMBOLS

                                     0000    48 	$TTYUCBDEF			; DEFINE TERMINAL DRIVER SYMBOLS

                                     0000    49 	TTYMACS				; DEFINE TERMINAL MACROS

                                     0000    50  

                                 00000000    51 	.PSECT	WIONONPAGED		; DEFINE NON-PAGED PSECT

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page   2

X05             IMMEDIATE CONTROL SEQUENCE ACTION ROUTINES                                                                       (2)



                                     0000    53 	.SBTTL IMMEDIATE CONTROL SEQUENCE ACTION ROUTINES

                                     0000    54  

                                     0000    55 	.ENABL	LSB

                                     0000    56 ;++

                                     0000    57 ; CONTROLC - SIGNAL CONTROL C INPUT

                                     0000    58 ; CONTROLY - SIGNAL CONTROL Y INPUT

                                     0000    59 ;

                                     0000    60 ; FUNCTIONAL DESCRIPTION:

                                     0000    61 ;

                                     0000    62 ; THIS ROUTINE IS ENTERED WHEN A CONTROL C OR Y IS TYPED.

                                     0000    63 ; THE ACTION IS TO SIGNAL, VIA AN AST, THE HOLDER OF THE AST ENABLE.

                                     0000    64 ; IF NO ENABLE IS PRESENT, AN ATTEMPT IS MADE TO SIGNAL THE JOB CONTROLLER

                                     0000    65 ; IF IT HAS NOT BEEN SIGNALED.

                                     0000    66 ;

                                     0000    67 ; INPUTS:

                                     0000    68 ;

                                     0000    69 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0000    70 ;	R5 = UCB ADDRESS

                                     0000    71 ;

                                     0000    72 ; OUTPUTS:

                                     0000    73 ;

                                     0000    74 ; 	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0000    75 ;	R5 = UCB ADDRESS

                                     0000    76 ;--

                                     0000    77 CONTROLC:				; ENTRY FOR CONTROL C

            54         E0 A5     DE  0000    78 	MOVAL	UCB$L_TT_CTRLC(R5),R4	; GET ADDRESS OF CONTROL C AST LIST

                          64     D5  0004    79 	TSTL	(R4)			; EMPTY?

                          0D     13  0006    80 	BEQL	10$			; IF EQL THEN NO CTRLC

            53       0000'CF     9E  0008    81 	MOVAB	W^TTY$A_CTRLC,R3	; ADDRESS EVENTUAL OUTPUT STRING

         6C A5       0651 8F     3C  000D    82 	MOVZWL	#SS$_CONTROLC,UCB$W_BOFF(R5); SET STATUS AND ZERO COUNT

                          13     11  0013    83 	BRB	15$

                                     0015    84 ;

                                     0015    85 ; CONTROL Y PROCESSING

                                     0015    86 ;

                                     0015    87 CONTROLY:

            54         DC A5     DE  0015    88 10$:	MOVAL	UCB$L_TT_CTRLY(R5),R4	; GET ADDRESS OF CONTROL Y AST LIST

                          64     D5  0019    89 	TSTL	(R4)			; EMPTY LIST?

                          4E     13  001B    90 	BEQL	100$			; IF EQL THEN YES  

            53       0000'CF     9E  001D    91 	MOVAB	W^TTY$A_CTRLY,R3	; ADDRESS EVENTUAL OUTPUT STRING

         6C A5       0611 8F     3C  0022    92 	MOVZWL	#SS$_CONTROLY,UCB$W_BOFF(R5); SET STATUS AND ZERO COUNT

         D8 A5            53     D0  0028    93 15$:	MOVL	R3,UCB$L_TT_MULTI(R5)	; SET UP FOR MULTIECHO

                          FFD1'  30  002C    94 	BSBW	COM$DELATTNAST		; DELIVER ATTENTION ASTS

                          FFCE'  30  002F    95 	BSBW	TTY$PURGE_AHEAD		; PURGE THE TYPEAHEAD

                                     0032    96 	SET_STATE MULTI			;

         3C A5            0E     E5  0036    97 	BBCC	#TT$V_HOLDSCREEN,UCB$L_DEVDEPEND(R5),20$; BR IF NO IN HOLD SCREEN

                          04         003A       

         D8 A5            02     C2  003B    98 	SUBL	#2,UCB$L_TT_MULTI(R5)	; ADJUST STRING ADDRESS TO REMOVE HOLD SCREEN

                          FFBE'  30  003F    99 20$:	BSBW	TTY$STOPIO		; COMPLETE THE I/O

                          4C     11  0042   100 	BRB	CANCEL_CTRLS		; CANCEL CONTROL S AND BEGIN ECHO

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page   3

X05             IMMEDIATE CONTROL SEQUENCE ACTION ROUTINES                                                                       (3)



                                     0044   102 ;++

                                     0044   103 ; CONTROLX - PURGE TYPEAHEAD BECAUSE OF CONTROL X INPUT

                                     0044   104 ;

                                     0044   105 ; FUNCTIONAL DESCRIPTION:

                                     0044   106 ;

                                     0044   107 ; THIS ROUTINE PURGES THE TYPEAHEAD BUFFER AND IF THE REASON IS THAT

                                     0044   108 ; A CONTROL X WAS TYPED DURING A READ THEN A CONTROL U IS INSERTED IN

                                     0044   109 ; THE INPUT STREAM TO PURGE THE CURRENT INPUT LINE.

                                     0044   110 ;

                                     0044   111 ; INPUTS:

                                     0044   112 ;

                                     0044   113 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0044   114 ;	R5 = UCB ADDRESS

                                     0044   115 ;

                                     0044   116 ; OUTPUTS:

                                     0044   117 ;

                                     0044   118 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0044   119 ;	R3 = CONTROL U - IF CONTROL X TYPED DURING READ

                                     0044   120 ;	R5 = UCB ADDRESS

                                     0044   121 ;--

                                     0044   122 CONTROLX:

                          FFB9'  30  0044   123 	BSBW	TTY$PURGE_AHEAD		; PURGE TYPEAHEAD

                                     0047   124 	IF_NOT_STATE READ,75$		; DONE IF NO READ IN PROGRESS

            53            15     9A  004D   125 	MOVZBL	#TTY$C_CTRLU,R3		; FORCE A CONTROL U IN INPUT STREAM

                          19     11  0050   126 	BRB	100$			; CONTINUE AND BUFFER CHARACTER

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page   4

X05             IMMEDIATE CONTROL SEQUENCE ACTION ROUTINES                                                                       (5)



                                     0052   128 

                                     0052   129 ;++

                                     0052   130 ; CONTROLS - STOP OUTPUT TO UNIT

                                     0052   131 ;

                                     0052   132 ; FUNCTIONAL DESCRIPTION:

                                     0052   133 ;

                                     0052   134 ; THIS ROUTINE IS ENTERED WHEN THE USER TYPES A CONTROL S.

                                     0052   135 ; ON UNITS THAT DO NOT HAVE THE TM$_NOTTSYNC CHARACTERISTIC, THE OUTPUT

                                     0052   136 ; IS STOPED BY TURNING THE OUTPUT INTERRUPT ENABLE BIT IN THE UCB

                                     0052   137 ; OFF.

                                     0052   138 ;

                                     0052   139 ; INPUTS:

                                     0052   140 ;

                                     0052   141 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0052   142 ;	R5 = UCB ADDDRESS

                                     0052   143 ;

                                     0052   144 ; OUTPUTS:

                                     0052   145 ;

                                     0052   146 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0052   147 ;	R5 = UCB ADDRESS

                                     0052   148 ;--

                                     0052   149 CONTROLS:

         3C A5            20     B3  0052   150 	BITW	#TT$M_TTSYNC,UCB$L_DEVDEPEND(R5); TERMINAL ALLOWED TO SYNC?

                          13     13  0056   151 	BEQL	100$			; IF EQL THEN NO

                                     0058   152 	IF_STATE BRDCST,75$		; IGNORE IF BROADCAST IN PROGRESS

                                     005E   153 	SET_STATE CTRLS			; STOP OUTPUT

                                     0061   154 75$:					; IGNORE CHARACTER OR RETURN WITH NO OUTPUT

            5E            04     C0  0061   155 	ADDL	#4,SP			; POP RETURN ADDRESS

                                 05  0064   156 	RSB				; AND RETURN TO DRIVER CODE

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page   5

X05             IMMEDIATE CONTROL SEQUENCE ACTION ROUTINES                                                                       (6)



                                     0065   158 ;++

                                     0065   159 ; CONTROLQ - START OUTPUT ON CONTROL S STOPED UNIT

                                     0065   160 ;

                                     0065   161 ; FUNCTIONAL DESCRIPTION:

                                     0065   162 ;

                                     0065   163 ; THIS ROUTINE STARTS OUTPUT ON A UNIT WHICH IS STOPED BECAUSE

                                     0065   164 ; OF CONTROL S.

                                     0065   165 ;

                                     0065   166 ; INPUTS:

                                     0065   167 ;

                                     0065   168 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0065   169 ;	R5 = UCB ADDRESS

                                     0065   170 ;

                                     0065   171 ; OUTPUTS:

                                     0065   172 ;

                                     0065   173 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0065   174 ;	R5 = UCB ADDRESS

                                     0065   175 ;--

                                     0065   176 CONTROLQ:

         3C A5            20     B3  0065   177 	BITW	#TT$M_TTSYNC,UCB$L_DEVDEPEND(R5); TERMINAL ALLOWED TO SYNC?

                          25     12  0069   178 	BNEQ	CANCEL_CTRLS		;

                          53     11  006B   179 100$:	BRB	BUFFER_CHAR		; BUFFER THE CHARACTER NORMALLY

                                     006D   180  

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page   6

X05             IMMEDIATE CONTROL SEQUENCE ACTION ROUTINES                                                                       (7)



                                     006D   182 ;++

                                     006D   183 ; CONTROLO - START OR STOP OUTPUT ON UNIT

                                     006D   184 ;

                                     006D   185 ; FUNCTIONAL DESCRIPTION:

                                     006D   186 ;

                                     006D   187 ; THIS ROUTINE TOGGLES THE OUTPUT ENABLE OF A UNIT.

                                     006D   188 ; OUTPUT IS STOPED UNTIL THE NEXT READ OPERATION, IO$_WRTCANCTRLO

                                     006D   189 ; OR CONTROL O.

                                     006D   190 ;

                                     006D   191 ; INPUTS:

                                     006D   192 ;

                                     006D   193 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     006D   194 ;	R5 = UCB ADDRESS

                                     006D   195 ;

                                     006D   196 ; OUTPUTS:

                                     006D   197 ;

                                     006D   198 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     006D   199 ;	R5 = UCB ADDRESS

                                     006D   200 ;--

                                     006D   201 CONTROLO:

            62       1000 8F     AC  006D   202 	XORW	#<TTY$M_ST_CTRLO>,(R2)	; FLOP CONTROL O BIT

                                     0072   203 	IF_STATE	BRDCST,75$

                                     0078   204 	IF_NOT_STATE CTRLO,CANCEL_CTRLS	; IF NOW CLEAR THEN START OUTPUT

         D8 A5       0000'CF     9E  007E   205 	MOVAB	W^TTY$A_CTRLO,UCB$L_TT_MULTI(R5); INSERT ADDRESS OF STRING

                                     0084   206 	SET_STATE MULTI

                       FE A5     B5  0088   207 	TSTW	UCB$W_TT_CURSOR(R5)	; IF CURSOR AT 0 THEN OUTPUT NEWLINE

                          03     12  008B   208 	BNEQ	CANCEL_CTRLS

                       D8 A5     D7  008D   209 	DECL	UCB$L_TT_MULTI(R5)	; OUTPUT LINE FEED FIRST

                                     0090   210 ;

                                     0090   211 ; RESTART OUTPUT ON STOPED UNIT

                                     0090   212 ;

                                     0090   213 ; ENTRY FROM CONTROLY AND CONTROLC

                                     0090   214 ;

                                     0090   215 CANCEL_CTRLS:

                                     0090   216 	CLR_STATE CTRLS			; RESET CONTROL S STATE

                          00C9   31  0093   217 	BRW	BEGIN_ECHO		; BEGIN OUTPUT

                                     0096   218  

                                     0096   219 	.DSABL	LSB

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page   7

X05             TTY$PUTNEXTCHAR - BUFFER CHARACTER                                                                               (8)



                                     0096   221 	.SBTTL	TTY$PUTNEXTCHAR - BUFFER CHARACTER 

                                     0096   222 ;++

                                     0096   223 ; TTY$PUTNEXTCHAR - BUFFER CHARACTER 

                                     0096   224 ;

                                     0096   225 ; FUNCTIONAL DESCRIPTION:

                                     0096   226 ;

                                     0096   227 ; THIS ROUTINE IS CALLED BY THE DEVICE DEPENDENTINPUT INTERRUPT ROUTINES.

                                     0096   228 ;

                                     0096   229 ; THE STACK IS AS FOLLOWS:

                                     0096   230 ;

                                     0096   231 ;	00(SP) = RETURN TO OUTPUT CHARACTER

                                     0096   232 ;	04(SP) = RETURN TO DISMIS INTERRUPT

                                     0096   233 ;

                                     0096   234 ; THE SECOND RETURN IS TAKEN IF NO OUTPUT IS REQUIRED.

                                     0096   235 ; THE FIRST IS TAKEN IF A CHARACTER HAS BEEN FOUND TO OUTPUT. THE CALLER

                                     0096   236 ; IS RESOPNSIBLE FOR DOING SOMETHING WITH THIS CHARACTER.

                                     0096   237 ;

                                     0096   238 ;

                                     0096   239 ; CHARACTERS RECEIVED ON NON PASSALL UNITS ARE FILTERED FOR IMMEDIATE

                                     0096   240 ; CONTROL SEQUENCES. THESE SEQUENCES REPRESENT:

                                     0096   241 ;

                                     0096   242 ;	CONTROL Y -- 	CAUSES THE TYPEAHEAD BUFFER TO BE PURGED, THE

                                     0096   243 ;		     	ENABLED PROCESS TO RECEIVE AN AST, A "^Y" TO

                                     0096   244 ;			BE OUTPUT AND THE CURRENT OPERATION IF ANY TO

                                     0096   245 ;			BE COMPLETED WITH A ZERO TRANSFER COUNT FOR READ 

                                     0096   246 ;			AND AS IF CONTROL O FOR WRITE.

                                     0096   247 ;

                                     0096   248 ;	CONTROL C --	CAUSES THE RECEIVER OF CONTROL C AST'S OR THE RECEIVER

                                     0096   249 ;			OF CONTROL Y AST'S TO BE SIGNALLED AS IN CONTROL Y.

                                     0096   250 ;

                                     0096   251 ;	CONTROL X -- 	CAUSES THE CONTENTS OF THE TYPEAHEAD BUFFER

                                     0096   252 ;			TO BE PURGED AND A CONTROL U TO BE INSERTED

                                     0096   253 ;			IN THE INPUT STREAM IF A READ IS IN PROGRESS.

                                     0096   254 ;

                                     0096   255 ;	CONTROL S --	CAUSES ALL OUTPUT ON UNIT TO STOP UNTIL

                                     0096   256 ;			CONTROL Q,Y OR C.

                                     0096   257 ;

                                     0096   258 ;	CONTROL Q --	RESETS CONTROL S MODE AND STARTS OUTPUT UP.

                                     0096   259 ;

                                     0096   260 ; SLAVE MODE ( NO UNSOLICITED INPUT ) UNITS MUST HAVE OUTSTANDING

                                     0096   261 ; READS OTHERWISE THE CHARACTER, AFTER CONTROL CHARACTER FILTERING

                                     0096   262 ; IS IGNORED.

                                     0096   263 ;

                                     0096   264 ; INPUTS:

                                     0096   265 ;	R3 = CHARACTER TO BUFFER

                                     0096   266 ;	R5 = UCB

                                     0096   267 ;	R2,R4 ARE AVAILABLE FOR USE

                                     0096   268 ;

                                     0096   269 ; OUTPUTS:	

                                     0096   270 ;

                                     0096   271 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0096   272 ;	R3 = CHARACTER TO OUTPUT IF DIRECT RETURN TAKEN

                                     0096   273 ;	R5 = UCB ADDRESS

                                     0096   274 ;--

                                     0096   275 TTY$PUTNEXTCHAR::

            52         D4 A5     9E  0096   276 	MOVAB	UCB$L_TT_STATE(R5),R2	; ADDRESS STATUS OF UNIT

                                     009A   277 ;

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page   8

X05             TTY$PUTNEXTCHAR - BUFFER CHARACTER                                                                               (8)



                                     009A   278 ; FILTER CHARACTERS FOR PASSALL MODE

                                     009A   279 ;

                                     009A   280 	IF_STATE PASALL,BUFFER_CHAR	; NO CONTROL SEQS IF PASSALL

         3C A5       8000 8F     B3  00A1   281 	BITW	#TT$M_EIGHTBIT,UCB$L_DEVDEPEND(R5); 8BIT TERMINAL?

                          04     12  00A7   282 	BNEQ	5$			; IF NEQ THEN YES

            53         80 8F     8A  00A9   283 	BICB	#^X080,R3		; STRIP PARITY BIT

                                     00AD   284 ;

                                     00AD   285 ; CHECK TO SEE IF THE CHARACTER IS IN THE SPECIAL CHARACTER SET

                                     00AD   286 ;

                                     00AD   287 ; CHECK FOR CONTROL SEQUENCE CHARACTER

                                     00AD   288 ;

                                     00AD   289 5$:	CASE	W^TTY$A_TYPE[R3],TYPE=B,LIMIT=#1@TTY$V_CH_CTRL,-

                                     00AD   290 		<CONTROLC,CONTROLO,CONTROLQ,CONTROLS,CONTROLX,CONTROLY>

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page   9

X05             TTY$PUTNEXTCHAR - BUFFER CHARACTER                                                                               (9)



                                     00C0   292 ;++

                                     00C0   293 ; BUFFER_CHAR - INSERT CHARACTER INTO TYPEAHEAD BUFFER

                                     00C0   294 ;

                                     00C0   295 ; FUNCTIONAL DESCRIPTION:

                                     00C0   296 ;

                                     00C0   297 ; AT THIS POINT WE KNOW THAT THE CHARACTER DOES NOT REPRESENT SOME IMMEDIATE

                                     00C0   298 ; ACTION.

                                     00C0   299 ;

                                     00C0   300 ; INPUTS:

                                     00C0   301 ;

                                     00C0   302 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     00C0   303 ;	R3 = CHARACTER TO BUFFER

                                     00C0   304 ;	R5 = UCB ADDRESS

                                     00C0   305 ;

                                     00C0   306 ; OUTPUTS:

                                     00C0   307 ;

                                     00C0   308 ;	R2,R3,R5 ARE PRESERVED

                                     00C0   309 ;--

                                     00C0   310 BUFFER_CHAR:				; BUFFER CHARACTER

                                     00C0   311 	IF_STATE READ,40$		; IF READ THEN BUFFER CHARACTER

         3C A5            02     E0  00C6   312 	BBS	#TT$V_NOTYPEAHD,UCB$L_DEVDEPEND(R5),5$; IF SLAVED TERMINAL, IGNORE CHARACTER

                          16         00CA       

                       50 A5     B5  00CB   313 	TSTW	UCB$W_REFC(R5)		; UNIT REF COUNT 0?

                          14     13  00CE   314 	BEQL	10$			; IF EQL THEN JOB CONTROLLER POSSIBILITY

                       54 A5     D5  00D0   315 	TSTL	UCB$L_AMB(R5)		; USER ASSOCIATED MAILBOX?

                          46     13  00D3   316 	BEQL	50$			; IF EQL THEN NO

         3C A5            10     E0  00D5   317 	BBS	#TT$V_MBXDSABL,UCB$L_DEVDEPEND(R5),50$; BR IF NOT ENABLED

                          41         00D9       

         5A A5            02     E0  00DA   318 	BBS	#UCB$V_TT_NOTIF,UCB$W_DEVSTS(R5),50$; BR IF ALREADY NOTIFIED

                          3C         00DE       

                          15     11  00DF   319 	BRB	15$			; CONTINUE IN COMMON

                          0084   31  00E1   320 5$:	BRW	DISMIS			; CONTINUE

                                     00E4   321 10$:	IF_STATE	<PASALL,NOECHO>,50$; IF PASSALL OR NOECHO THEN NOT JOBCTRLR

       0000'CF            53     E1  00EB   322 	BBC	R3,W^TTY$A_STANDARD,50$	; IF NOT TERMINATOR THEN NOT FOR JOBCTLRLR

                          2A         00F0       

         5A A5            00     E0  00F1   323 	BBS	#UCB$V_JOB,UCB$W_DEVSTS(R5),50$; IF ALREADY NOTIFIED THEN GO

                          25         00F5       

                                     00F6   324 15$:	SET_STATE UNSOL			; SET UNSOLICTED MESSAGE

                                     00FA   325 	IF_STATE <GETAHD,HANGUP>,50$	; IF EITHER CONDITION THEN GO

                          53     DD  0100   326 	PUSHL	R3			;

                          FEFB'  30  0102   327 	BSBW	TTY$SIGNAL_ATTN		; SIGNAL ATTENTION

                          53   8ED0  0105   328 	POPL	R3

                          11     11  0108   329 	BRB	50$			; AND BUFFER CHARACTER

                                     010A   330 ;

                                     010A   331 ; RESET READ TIMEOUT DUE TIME

                                     010A   332 ;

                                     010A   333 40$:					; 

            54         68 A5     D0  010A   334 	MOVL	UCB$L_SVAPTE(R5),R4	; ADDRESS READ BUFFER BLOCK

            54         0E A4     3C  010E   335 	MOVZWL	TTY$W_RB_TIMOS(R4),R4	; GET THE NUMBER OF SECONDS

   00000000'EF            54     C1  0112   336 	ADDL3	R4,EXE$GL_ABSTIM,UCB$L_TT_RDUE(R5); RESET THE TIME

                       EC A5         0119       

                                     011B   337 ;

                                     011B   338 ; BUFFER CHARACTER IN CIRCULAR TYPEAHEAD BUFFER

                                     011B   339 ;

                                     011B   340 ; TEST TO SEE IF THE NUMBER OF CHARACTERS IN THE TYPEAHEAD IS CRITICAL

                                     011B   341 ;

            3E         F6 A5     B1  011B   342 50$:	CMPW	UCB$W_TT_INAHD(R5),#TTY$C_TYPAHDSIZ-TTY$L_TA_DATA; TYPEAHEAD FULL?

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page  10

X05             TTY$PUTNEXTCHAR - BUFFER CHARACTER                                                                               (9)



                          2F     13  011F   343 	BEQL	75$			; IF EQL THEN YES - TRY TO START SOMETHING

                                     0121   344 ;

                                     0121   345 ; INSERT CHARACTER IN TYPEAHEAD BUFFER

                                     0121   346 ;

            54         E8 A5     D0  0121   347 	MOVL	UCB$L_TT_TYPAHD(R5),R4	; ADDRESS TYPEAHEAD BUFFER

                          10     12  0125   348 	BNEQ	60$			; IF NEQ THEN ALLOCATED

                                     0127   349 	SET_STATE GETAHD		; SET THE STATE

                                     012B   350 	IF_STATE  <UNSOL,HANGUP>,DISMIS; GO - IT WILL BE ALLOCATED

            5E            04     C0  0131   351 	ADDL	#4,SP			; REMOVE DIRECT RETURN

                          FEC9'  31  0134   352 	BRW	TTY$SIGNAL_ATTN		; SIGNAL THE CONDITION

         00 B4            53     90  0137   353 60$:	MOVB	R3,@TTY$L_TA_PUT(R4)	; INSERT CHARACTER IN BUFFER

                          64     D6  013B   354 	INCL	TTY$L_TA_PUT(R4)	; ADJUST POINTER

                                     013D   355 ;

                                     013D   356 ; DO CIRCULAR BUFFER WRAP AROUND CHECKING

                                     013D   357 ;

         0C A4            64     D1  013D   358 	CMPL	TTY$L_TA_PUT(R4),TTY$L_TA_END(R4); WRAP AROUND OCCUR?

                          04     12  0141   359 	BNEQ	70$			; IN NEQ THEN NO

            64         10 A4     9E  0143   360 	MOVAB	TTY$L_TA_DATA(R4),TTY$L_TA_PUT(R4); RESET POINTER

                                     0147   361 ;

                                     0147   362 ; SEE IF THE NUMBER OF CHARACTERS IN THE TYPEAHEAD BUFFER IS CRITICAL.

                                     0147   363 ;

                                     0147   364 ; IF SO, THEN SEND AN XOFF IF APPROP.

                                     0147   365 ;

                                     0147   366 ; NOTE THAT ACBB'S UNSIGNED BRANCH IS NOT APPROPRIATE HERE

                                     0147   367 ;

                       F6 A5     B6  0147   368 70$:	INCW	UCB$W_TT_INAHD(R5)	; ADJUST NUMBER OF BYTES IN TYPEAHEAD

            36         F6 A5     B1  014A   369 	CMPW	UCB$W_TT_INAHD(R5),#TTY$C_TYPAHDSIZ-TTY$L_TA_DATA-8; CRITICAL?

                          09     1B  014E   370 	BLEQU	80$			; IF LEQU THEN OK

                                     0150   371 ;

                                     0150   372 ; TYPEAHEAD BUFFER IS CRITICAL - SEND XOFF

                                     0150   373 ;

                                     0150   374 75$:	SET_STATE <XOFF,TYPFUL>

                          06     11  0157   375 	BRB	BEGIN_ECHO

                                     0159   376 80$:	IF_NOT_STATE READ,DISMIS

                                     015F   377 ;

                                     015F   378 ; BEGIN ECHO ON READ

                                     015F   379 ;

                                     015F   380 BEGIN_ECHO:

                                     015F   381 ;

                                     015F   382 ; START UP OUTPUT IF NOT ALREADY STARTED

                                     015F   383 ;

         58 A5            02     B3  015F   384 	BITW	#UCB$M_INT,UCB$W_STS(R5); INTERRUPT EXPECTED?

                          03     12  0163   385 	BNEQ	DISMIS			; IF NEQ THEN YES

                          FE98'  31  0165   386 	BRW	TTY$GETNEXTCHAR		; FIND THE NEXT CHARACTER FOR THIS UNIT

                                     0168   387 ;

                                     0168   388 ; DISMIS INTERRUPT - NOTHING TO DO

                                     0168   389 ;

            5E            04     C0  0168   390 DISMIS:	ADDL	#4,SP

                                 05  016B   391 	RSB				; RETURN

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page  11

X05             TTY$PUTNEXTCHAR - BUFFER CHARACTER                                                                              (10)



                                     016C   393 	.END

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page  12

SYMBOL TABLE                                                                                                                    (10)



BEGIN_ECHO       0000015F R     03   IO$V_CANCTRLO  = 00000006            IO$_RELEASE    = 00000005            

BIT...         = 00000006            IO$V_COMMOD    = 00000006            IO$_RETCENTER  = 00000007            

BUFFER_CHAR      000000C0 R     03   IO$V_CREATE    = 00000007            IO$_REWIND     = 00000024            

CANCEL_CTRLS     00000090 R     03   IO$V_CTRLCAST  = 00000008            IO$_REWINDOFF  = 00000022            

COM$DELATTNAST   ********   X   03   IO$V_CTRLYAST  = 00000007            IO$_SEARCH     = 00000009            

CONTROLC         00000000 R     03   IO$V_CVTLOW    = 00000008            IO$_SEEK       = 00000002            

CONTROLO         0000006D R     03   IO$V_DATACHECK = 0000000E            IO$_SENSECHAR  = 0000001B            

CONTROLQ         00000065 R     03   IO$V_DELETE    = 00000008            IO$_SENSEMODE  = 00000027            

CONTROLS         00000052 R     03   IO$V_DMOUNT    = 0000000A            IO$_SETCHAR    = 0000001A            

CONTROLX         00000044 R     03   IO$V_DSABLMBX  = 0000000A            IO$_SETMODE    = 00000023            

CONTROLY         00000015 R     03   IO$V_ENABLMBX  = 00000007            IO$_SKIPFILE   = 00000025            

DISMIS           00000168 R     03   IO$V_FCODE     = 00000000            IO$_SKIPRECORD = 00000026            

EXE$GL_ABSTIM    ********   X   03   IO$V_HANGUP    = 00000009            IO$_SPACEFILE  = 00000002            

GBL...         = 00000000            IO$V_INHERLOG  = 0000000B            IO$_SPACERECORD= 00000009            

IO$M_ABORT     = 00000100            IO$V_INHEXTGAP = 0000000C            IO$_STARTSPNDL = 00000019            

IO$M_ACCESS    = 00000040            IO$V_INHRETRY  = 0000000F            IO$_UNLOAD     = 00000001            

IO$M_ATTNAST   = 00000100            IO$V_INHSEEK   = 0000000C            IO$_VIRTUAL    = 0000003F            

IO$M_BINARY    = 00000040            IO$V_INTERRUPT = 00000006            IO$_WRITECHECK = 0000000A            

IO$M_CANCTRLO  = 00000040            IO$V_MOUNT     = 00000009            IO$_WRITECHECKH= 00000018            

IO$M_COMMOD    = 00000040            IO$V_NOECHO    = 00000006            IO$_WRITEHEAD  = 0000000D            

IO$M_CREATE    = 00000080            IO$V_NOFILTR   = 00000009            IO$_WRITELBLK  = 00000020            

IO$M_CTRLCAST  = 00000100            IO$V_NOFORMAT  = 00000008            IO$_WRITEMARK  = 0000001C            

IO$M_CTRLYAST  = 00000080            IO$V_NOW       = 00000006            IO$_WRITEOF    = 00000028            

IO$M_CVTLOW    = 00000100            IO$V_NOWAIT    = 00000007            IO$_WRITEPBLK  = 0000000B            

IO$M_DATACHECK = 00004000            IO$V_PACKED    = 00000007            IO$_WRITETRACKD= 0000000F            

IO$M_DELETE    = 00000100            IO$V_PURGE     = 0000000B            IO$_WRITEVBLK  = 00000030            

IO$M_DMOUNT    = 00000400            IO$V_READATTN  = 00000007            IPL$_ASTDEL    = 00000002            

IO$M_DSABLMBX  = 00000400            IO$V_REVERSE   = 00000006            IPL$_HWCLK     = 00000018            

IO$M_ENABLMBX  = 00000080            IO$V_SHUTDOWN  = 00000007            IPL$_IOPOST    = 00000004            

IO$M_FCODE     = 0000003F            IO$V_STARTUP   = 00000006            IPL$_MAILBOX   = 0000000B            

IO$M_HANGUP    = 00000200            IO$V_SYNCH     = 00000009            IPL$_POWER     = 0000001F            

IO$M_INHERLOG  = 00000800            IO$V_TIMED     = 00000007            IPL$_QUEUEAST  = 00000006            

IO$M_INHEXTGAP = 00001000            IO$V_TRMNOECHO = 0000000C            IPL$_SCHED     = 00000003            

IO$M_INHRETRY  = 00008000            IO$V_WRTATTN   = 00000008            IPL$_SYNCH     = 00000007            

IO$M_INHSEEK   = 00001000            IO$_ACCESS     = 00000032            IPL$_TIMER     = 00000007            

IO$M_INTERRUPT = 00000040            IO$_ACPCONTROL = 00000038            IRP$B_CARCON     00000038            

IO$M_MOUNT     = 00000200            IO$_CREATE     = 00000033            IRP$B_EFN        00000022            

IO$M_NOECHO    = 00000040            IO$_DEACCESS   = 00000034            IRP$B_PRI        00000023            

IO$M_NOFILTR   = 00000200            IO$_DELETE     = 00000035            IRP$B_RMOD       0000000B            

IO$M_NOFORMAT  = 00000100            IO$_DIAGNOSE   = 0000001D            IRP$B_TYPE       0000000A            

IO$M_NOW       = 00000040            IO$_DRVCLR     = 00000004            IRP$C_LENGTH     0000004C            

IO$M_NOWAIT    = 00000080            IO$_ERASETAPE  = 00000006            IRP$K_LENGTH     0000004C            

IO$M_PACKED    = 00000080            IO$_LOGICAL    = 0000002F            IRP$L_AST        00000010            

IO$M_PURGE     = 00000800            IO$_MODIFY     = 00000036            IRP$L_ASTPRM     00000014            

IO$M_READATTN  = 00000080            IO$_MOUNT      = 00000039            IRP$L_DIAGBUF    00000044            

IO$M_REVERSE   = 00000040            IO$_NOP        = 00000000            IRP$L_IOQBL      00000004            

IO$M_SHUTDOWN  = 00000080            IO$_OFFSET     = 00000006            IRP$L_IOQFL      00000000            

IO$M_STARTUP   = 00000040            IO$_PACKACK    = 00000008            IRP$L_IOSB       00000024            

IO$M_SYNCH     = 00000200            IO$_PHYSICAL   = 0000001F            IRP$L_IOST1      00000034            

IO$M_TIMED     = 00000080            IO$_READHEAD   = 0000000E            IRP$L_IOST2      00000038            

IO$M_TRMNOECHO = 00001000            IO$_READLBLK   = 00000021            IRP$L_MEDIA      00000034            

IO$M_WRTATTN   = 00000100            IO$_READPBLK   = 0000000C            IRP$L_PID        0000000C            

IO$S_FCODE     = 00000006            IO$_READPRESET = 00000019            IRP$L_SEGVBN     00000040            

IO$V_ABORT     = 00000008            IO$_READPROMPT = 00000037            IRP$L_SEQNUM     00000048            

IO$V_ACCESS    = 00000006            IO$_READTRACKD = 00000010            IRP$L_SVAPTE     0000002C            

IO$V_ATTNAST   = 00000008            IO$_READVBLK   = 00000031            IRP$L_TT_TERM    00000038            

IO$V_BINARY    = 00000006            IO$_RECAL      = 00000003            IRP$L_UCB        0000001C            

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page  13

SYMBOL TABLE                                                                                                                    (10)



IRP$L_WIND       00000018            PR$_SBIQC      = 00000036            SS$_DEVASSIGN  = 00000848            

IRP$M_BUFIO    = 00000001            PR$_SBIS       = 00000031            SS$_DEVFOREIGN = 00000064            

IRP$M_CHAINED  = 00000020            PR$_SBISC      = 00000032            SS$_DEVICEFULL = 00000850            

IRP$M_COMPLX   = 00000008            PR$_SBITA      = 00000035            SS$_DEVMOUNT   = 0000006C            

IRP$M_DIAGBUF  = 00000080            PR$_SBR        = 0000000C            SS$_DEVNOTALLOC= 00000858            

IRP$M_FUNC     = 00000002            PR$_SCBB       = 00000011            SS$_DEVNOTMBX  = 00000074            

IRP$M_PAGIO    = 00000004            PR$_SID        = 0000003E            SS$_DEVNOTMOUNT= 0000007C            

IRP$M_PHYSIO   = 00000100            PR$_SIRR       = 00000014            SS$_DEVOFFLINE = 00000084            

IRP$M_PRIVIO   = 00000200            PR$_SISR       = 00000015            SS$_DIRFULL    = 00000860            

IRP$M_SWAPIO   = 00000040            PR$_SLR        = 0000000D            SS$_DRVERR     = 0000008C            

IRP$M_VIRTUAL  = 00000010            PR$_SSP        = 00000002            SS$_DUPFILENAME= 00000868            

IRP$S_FCODE    = 00000006            PR$_TBIA       = 00000039            SS$_DUPLNAM    = 00000094            

IRP$S_FMOD     = 0000000A            PR$_TBIS       = 0000003A            SS$_ENDOFFILE  = 00000870            

IRP$S_MODE     = 00000002            PR$_TODR       = 0000001B            SS$_ENDOFTAPE  = 00000878            

IRP$V_BUFIO    = 00000000            PR$_TXCS       = 00000022            SS$_ENDOFUSRLBL= 00000970            

IRP$V_CHAINED  = 00000005            PR$_TXDB       = 00000023            SS$_EXQUOTA    = 0000001C            

IRP$V_COMPLX   = 00000003            PR$_USP        = 00000003            SS$_EXTIDXFILE = 00000880            

IRP$V_DIAGBUF  = 00000007            PR$_WCSA       = 0000002C            SS$_FCPREADERR = 00000888            

IRP$V_FCODE    = 00000000            PR$_WCSD       = 0000002D            SS$_FCPREPSTN  = 00000988            

IRP$V_FMOD     = 00000006            SS$_ABORT      = 0000002C            SS$_FCPREWNDERR= 00000890            

IRP$V_FUNC     = 00000001            SS$_ACCONFLICT = 00000800            SS$_FCPSPACERR = 00000898            

IRP$V_MODE     = 00000000            SS$_ACCVIO     = 0000000C            SS$_FCPWRITERR = 000008A0            

IRP$V_PAGIO    = 00000002            SS$_ARITH      = 00000404            SS$_FILACCERR  = 0000009C            

IRP$V_PHYSIO   = 00000008            SS$_ASTFLT     = 0000040C            SS$_FILALRACC  = 000000A4            

IRP$V_PRIVIO   = 00000009            SS$_BADATTRIB  = 00000034            SS$_FILELOCKED = 000008A8            

IRP$V_SWAPIO   = 00000006            SS$_BADCHKSUM  = 00000808            SS$_FILENUMCHK = 000008B0            

IRP$V_VIRTUAL  = 00000004            SS$_BADESCAPE  = 0000003C            SS$_FILESEQCHK = 000008B8            

IRP$W_ABCNT      0000003C            SS$_BADFILEHDR = 00000810            SS$_FILESTRUCT = 000008C0            

IRP$W_BCNT       00000032            SS$_BADFILENAME= 00000818            SS$_FILNOTACC  = 000000AC            

IRP$W_BOFF       00000030            SS$_BADFILEVER = 00000820            SS$_FILNOTCNTG = 000002AC            

IRP$W_CHAN       00000028            SS$_BADIMGHDR  = 00000044            SS$_FILNOTEXP  = 000000B4            

IRP$W_FUNC       00000020            SS$_BADIRECTORY= 00000828            SS$_FORMAT     = 000000BC            

IRP$W_OBCNT      0000003E            SS$_BADPARAM   = 00000014            SS$_GPTFULL    = 000000C4            

IRP$W_SIZE       00000008            SS$_BADSTACK   = 000002B4            SS$_GSDFULL    = 000000CC            

IRP$W_STS        0000002A            SS$_BEGOFFILE  = 00000938            SS$_GSDNOTXXX  = 000000D4            

IRP$W_TT_PRMPT   0000003C            SS$_BLOCKCNTERR= 00000940            SS$_HANGUP     = 000002CC            

PR$_ACCR       = 00000029            SS$_BREAK      = 00000414            SS$_HEADERFULL = 000008C8            

PR$_ACCS       = 00000028            SS$_BUFFEROVF  = 00000601            SS$_IDXFILEFULL= 000008D0            

PR$_ASTLVL     = 00000013            SS$_BUGCHECK   = 000002A4            SS$_ILLBLKNUM  = 000000DC            

PR$_ESP        = 00000001            SS$_CANCEL     = 00000830            SS$_ILLCNTRFUNC= 000000E4            

PR$_ICCS       = 00000018            SS$_CHANINTLK  = 0000004C            SS$_ILLEFC     = 000000EC            

PR$_ICR        = 0000001A            SS$_CLIFRCEXT  = 00000980            SS$_ILLIOFUNC  = 000000F4            

PR$_IPL        = 00000012            SS$_CMODSUPR   = 0000041C            SS$_ILLLBLAST  = 00000968            

PR$_ISP        = 00000004            SS$_CMODUSER   = 00000424            SS$_ILLPAGCNT  = 000000FC            

PR$_KSP        = 00000000            SS$_COMPAT     = 0000042C            SS$_ILLSEQOP   = 000002DC            

PR$_MAPEN      = 00000038            SS$_CONTINUE   = 00000001            SS$_ILLSER     = 00000104            

PR$_NICR       = 00000019            SS$_CONTROLC   = 00000651            SS$_ILLUSRLBLRD= 00000958            

PR$_P0BR       = 00000008            SS$_CONTROLO   = 00000609            SS$_ILLUSRLBLWT= 00000960            

PR$_P0LR       = 00000009            SS$_CONTROLY   = 00000611            SS$_INCVOLLABEL= 0000010C            

PR$_P1BR       = 0000000A            SS$_CREATED    = 00000619            SS$_INSFARG    = 00000114            

PR$_P1LR       = 0000000B            SS$_CTRLERR    = 00000054            SS$_INSFMEM    = 00000124            

PR$_PCBB       = 00000010            SS$_DATACHECK  = 0000005C            SS$_INSFRAME   = 0000012C            

PR$_RXCS       = 00000020            SS$_DATAOVERUN = 00000838            SS$_INSFWSL    = 0000011C            

PR$_RXDB       = 00000021            SS$_DEBUG      = 0000046C            SS$_IVADDR     = 00000134            

PR$_SBIER      = 00000034            SS$_DEVACTIVE  = 000002C4            SS$_IVCHAN     = 0000013C            

PR$_SBIFS      = 00000030            SS$_DEVALLOC   = 00000840            SS$_IVCHNLSEC  = 0000026C            

PR$_SBIMT      = 00000033            SS$_DEVALRALLOC= 00000641            SS$_IVDEVNAM   = 00000144            

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page  14

SYMBOL TABLE                                                                                                                    (10)



SS$_IVGSDNAM   = 0000014C            SS$_RESULTOVF  = 00000214            TT$M_WRAP      = 00000200            

SS$_IVLOGNAM   = 00000154            SS$_ROPRAND    = 00000454            TT$S_PAGE      = 00000008            

SS$_IVLOGTAB   = 0000015C            SS$_SECTBLFUL  = 0000021C            TT$V_CRFILL    = 0000000A            

SS$_IVPROTECT  = 000002F4            SS$_SSFAIL     = 0000045C            TT$V_EIGHTBIT  = 0000000F            

SS$_IVQUOTAL   = 00000164            SS$_SUPERSEDE  = 00000631            TT$V_ESCAPE    = 00000003            

SS$_IVSECFLG   = 0000016C            SS$_TAPEPOSLOST= 00000224            TT$V_HOLDSCREEN= 0000000E            

SS$_IVSECIDCTL = 000002E4            SS$_TBIT       = 00000464            TT$V_HOSTSYNC  = 00000004            

SS$_IVSSRQ     = 00000174            SS$_TIMEOUT    = 0000022C            TT$V_LFFILL    = 0000000B            

SS$_IVSTSFLG   = 0000017C            SS$_TOOMANYVER = 00000990            TT$V_LOWER     = 00000007            

SS$_IVTIME     = 00000184            SS$_TOOMUCHDATA= 0000029C            TT$V_MBXDSABL  = 00000010            

SS$_LENVIO     = 0000018C            SS$_UNASEFC    = 00000234            TT$V_MECHTAB   = 00000008            

SS$_LKWSETFUL  = 00000194            SS$_UNSAFE     = 0000023C            TT$V_NOBRDCST  = 00000011            

SS$_MBFULL     = 000008D8            SS$_UNWIND     = 00000920            TT$V_NOECHO    = 00000001            

SS$_MBTOOSML   = 0000019C            SS$_UNWINDING  = 00000928            TT$V_NOTYPEAHD = 00000002            

SS$_MCHECK     = 000002BC            SS$_VASFULL    = 00000244            TT$V_ODD       = 00000007            

SS$_MEDOFL     = 000001A4            SS$_VECINUSE   = 0000024C            TT$V_PAGE      = 00000019            

SS$_MSGNOTFND  = 00000621            SS$_VOLINV     = 00000254            TT$V_PARITY    = 00000006            

SS$_MUSTCLOSEFL= 00000948            SS$_WAITUSRLBL = 00000950            TT$V_PASSALL   = 00000000            

SS$_NODATA     = 000001AC            SS$_WASCLR     = 00000001            TT$V_REMOTE    = 0000000D            

SS$_NOHANDLER  = 000008F8            SS$_WASECC     = 00000639            TT$V_SCOPE     = 0000000C            

SS$_NOHOMEBLK  = 000008E0            SS$_WASSET     = 00000009            TT$V_SCRIPT    = 00000006            

SS$_NOIOCHAN   = 000001B4            SS$_WRITLCK    = 0000025C            TT$V_TTSYNC    = 00000005            

SS$_NOLINKS    = 0000027C            TT$C_BAUD_110  = 00000003            TT$V_WRAP      = 00000009            

SS$_NOLOGNAM   = 000001BC            TT$C_BAUD_1200 = 00000008            TT$_LA120      = 00000021            

SS$_NOMBX      = 00000274            TT$C_BAUD_134  = 00000004            TT$_LA36       = 00000020            

SS$_NOMOREFILES= 00000930            TT$C_BAUD_150  = 00000005            TT$_LAX        = 00000020            

SS$_NONEXDRV   = 000001C4            TT$C_BAUD_1800 = 00000009            TT$_UNKNOWN    = 00000000            

SS$_NONEXPR    = 000008E8            TT$C_BAUD_2000 = 0000000A            TT$_VT05       = 00000001            

SS$_NONLOCAL   = 000008F0            TT$C_BAUD_2400 = 0000000B            TT$_VT52       = 00000040            

SS$_NOPRIV     = 00000024            TT$C_BAUD_300  = 00000006            TT$_VT55       = 00000041            

SS$_NORMAL     = 00000001            TT$C_BAUD_3600 = 0000000C            TT$_VT5X       = 00000040            

SS$_NOSIGNAL   = 00000900            TT$C_BAUD_4800 = 0000000D            TTY$A_CTRLC      ********   X   03   

SS$_NOSOLICIT  = 00000284            TT$C_BAUD_50   = 00000001            TTY$A_CTRLO      ********   X   03   

SS$_NOSUCHDEV  = 00000908            TT$C_BAUD_600  = 00000007            TTY$A_CTRLY      ********   X   03   

SS$_NOSUCHFILE = 00000910            TT$C_BAUD_7200 = 0000000E            TTY$A_STANDARD   ********   X   03   

SS$_NOSUCHNODE = 0000028C            TT$C_BAUD_75   = 00000002            TTY$A_TYPE       ********   X   03   

SS$_NOSUCHSEC  = 00000978            TT$C_BAUD_9600 = 0000000F            TTY$B_BD_CNT     00000015            

SS$_NOTAPEOP   = 00000264            TT$M_CRFILL    = 00000400            TTY$B_BD_IPL     00000017            

SS$_NOTFILEDEV = 000001CC            TT$M_EIGHTBIT  = 00008000            TTY$B_BD_REFC    00000016            

SS$_NOTINTBLSZ = 000001D4            TT$M_ESCAPE    = 00000008            TTY$B_BD_TYPE    0000000A            

SS$_NOTLABELMT = 000001DC            TT$M_HOLDSCREEN= 00004000            TTY$B_BD_WHO     00000014            

SS$_NOTNETDEV  = 000002EC            TT$M_HOSTSYNC  = 00000010            TTY$B_TA_TYPE    0000000A            

SS$_NOTRAN     = 00000629            TT$M_LFFILL    = 00000800            TTY$C_BELL     = 00000007            

SS$_NOTSQDEV   = 000001E4            TT$M_LOWER     = 00000080            TTY$C_BLANK    = 00000020            

SS$_OPCCUS     = 00000434            TT$M_MBXDSABL  = 00010000            TTY$C_BS       = 00000008            

SS$_OPCDEC     = 0000043C            TT$M_MECHTAB   = 00000100            TTY$C_CR       = 0000000D            

SS$_OPINCOMPL  = 000002D4            TT$M_NOBRDCST  = 00020000            TTY$C_CTRLC    = 00000003            

SS$_PAGOWNVIO  = 000001EC            TT$M_NOECHO    = 00000002            TTY$C_CTRLO    = 0000000F            

SS$_PAGRDERR   = 00000444            TT$M_NOTYPEAHD = 00000004            TTY$C_CTRLQ    = 00000011            

SS$_PARITY     = 000001F4            TT$M_ODD       = 00000080            TTY$C_CTRLR    = 00000012            

SS$_PARTESCAPE = 000001FC            TT$M_PAGE      = FE000000            TTY$C_CTRLS    = 00000013            

SS$_PFMBSY     = 00000204            TT$M_PARITY    = 00000040            TTY$C_CTRLU    = 00000015            

SS$_PSTFULL    = 0000020C            TT$M_PASSALL   = 00000001            TTY$C_CTRLX    = 00000018            

SS$_RADRMOD    = 0000044C            TT$M_REMOTE    = 00002000            TTY$C_CTRLY    = 00000019            

SS$_REJECT     = 00000294            TT$M_SCOPE     = 00001000            TTY$C_CTRLZ    = 0000001A            

SS$_REMOTE     = 00000649            TT$M_SCRIPT    = 00000040            TTY$C_DELETE   = 0000007F            

SS$_RESIGNAL   = 00000918            TT$M_TTSYNC    = 00000020            TTY$C_DOLLAR   = 00000024            

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page  15

SYMBOL TABLE                                                                                                                    (10)



TTY$C_DS_ACTIVE= 00000001            TTY$M_ST_ESC   = 00080000            TTY$V_ST_XOFF  = 00000001            

TTY$C_DS_ATTN1 = 00000002            TTY$M_ST_ESC_O = 08000000            TTY$V_ST_XON   = 00000000            

TTY$C_DS_ATTN2 = 00000003            TTY$M_ST_FILL  = 00000008            TTY$W_BD_SIZE    00000008            

TTY$C_DS_ATTN3 = 00000004            TTY$M_ST_GETAHD= 02000000            TTY$W_RB_ORGHOR  0000000C            

TTY$C_DS_HANG  = 00000005            TTY$M_ST_HANGUP= 01000000            TTY$W_RB_SIZE    00000008            

TTY$C_DS_HANG2 = 00000006            TTY$M_ST_MULTI = 00000040            TTY$W_RB_TIMOS   0000000E            

TTY$C_DS_IDLE  = 00000000            TTY$M_ST_NL    = 00200000            TTY$W_TA_SIZE    00000008            

TTY$C_DS_RESET = 00000007            TTY$M_ST_NOECHO= 00008000            TTY$W_WB_SIZE    00000008            

TTY$C_ESCAPE   = 0000001B            TTY$M_ST_NOFLTR= 00040000            UCB$B_AMOD       00000053            

TTY$C_FC_N_SET = 00000004            TTY$M_ST_PASALL= 00004000            UCB$B_CEX        00000077            

TTY$C_FC_READ  = 00000000            TTY$M_ST_PROMPT= 00020000            UCB$B_CM1        0000004A            

TTY$C_FC_SETC  = 00000003            TTY$M_ST_READ  = 00000800            UCB$B_CM2        0000004B            

TTY$C_FC_SETM  = 00000002            TTY$M_ST_SENDLF= 00000020            UCB$B_DEVCLASS   00000038            

TTY$C_FC_WRITE = 00000001            TTY$M_ST_SKIPLF= 00800000            UCB$B_DEVTYPE    00000039            

TTY$C_FF       = 0000000C            TTY$M_ST_TYPFUL= 00400000            UCB$B_DIPL       00000052            

TTY$C_HIGHIPL  = 00000016            TTY$M_ST_UNSOL = 04000000            UCB$B_DX_SCTCNT  FFFFFFFE            

TTY$C_LF       = 0000000A            TTY$M_ST_WRITE = 00000100            UCB$B_DX_SPARE   FFFFFFFF            

TTY$C_LOWA     = 00000061            TTY$M_ST_WRTALL= 00010000            UCB$B_ERTCNT     00000070            

TTY$C_LOWZ     = 0000007B            TTY$M_ST_XOFF  = 00000002            UCB$B_ERTMAX     00000071            

TTY$C_NL       = 00000080            TTY$M_ST_XON   = 00000001            UCB$B_ESCAPE     0000004B            

TTY$C_ONE      = 00000031            TTY$PURGE_AHEAD  ********   X   03   UCB$B_FEX        00000076            

TTY$C_PLUS     = 0000002B            TTY$PUTNEXTCHAR  00000096 RG    03   UCB$B_FIPL       0000000B            

TTY$C_SCRIPT   = 00000060            TTY$Q_BD_LINK    00000000            UCB$B_LOCSRV     0000003C            

TTY$C_TAB      = 00000009            TTY$SIGNAL_ATTN  ********   X   03   UCB$B_OFFNDX     00000090            

TTY$C_TYPAHDSIZ= 0000004E            TTY$STOPIO       ********   X   03   UCB$B_OFFRTC     00000091            

TTY$C_VT       = 0000000B            TTY$S_A        = 0000000E            UCB$B_REMSRV     0000003D            

TTY$C_XOFF     = 00000013            TTY$V_A        = 00000000            UCB$B_SECTORS    0000003C            

TTY$C_XON      = 00000011            TTY$V_CH_CTRL  = 00000005            UCB$B_SLAVE      00000074            

TTY$C_ZERO     = 00000030            TTY$V_CH_CTRL2 = 00000007            UCB$B_SPR        00000075            

TTY$GETNEXTCHAR  ********   X   03   TTY$V_CH_LOWER = 00000006            UCB$B_STATE      00000052            

TTY$L_BD_DATA    00000018            TTY$V_CH_SPEC  = 00000004            UCB$B_TRACKS     0000003D            

TTY$L_BD_FORK    0000000C            TTY$V_ST_BADESC= 00000014            UCB$B_TT_BRDPT   FFFFFFFC            

TTY$L_BD_MIN     00000028            TTY$V_ST_BRDCST= 00000007            UCB$B_TT_CRFILL  FFFFFFF9            

TTY$L_BD_UCB     00000010            TTY$V_ST_CTRLO = 0000000C            UCB$B_TT_DIAL    FFFFFFF3            

TTY$L_RB_DATA    00000010            TTY$V_ST_CTRLR = 0000000A            UCB$B_TT_ESC     FFFFFFF2            

TTY$L_RB_NXT     00000000            TTY$V_ST_CTRLS = 00000002            UCB$B_TT_ESC_O   FFFFFFFD            

TTY$L_RB_UVA     00000004            TTY$V_ST_CURSOR= 00000004            UCB$B_TT_FILL    FFFFFFF8            

TTY$L_TA_DATA    00000010            TTY$V_ST_DEL   = 0000000D            UCB$B_TT_LFFILL  FFFFFFFA            

TTY$L_TA_END     0000000C            TTY$V_ST_EOL   = 00000009            UCB$B_TT_LINE    FFFFFFF1            

TTY$L_TA_GET     00000004            TTY$V_ST_ESC   = 00000013            UCB$B_TT_SPARE   FFFFFFF0            

TTY$L_TA_PUT     00000000            TTY$V_ST_ESC_O = 0000001B            UCB$B_TT_SPEED   FFFFFFFB            

TTY$L_WB_DATA    0000000C            TTY$V_ST_FILL  = 00000003            UCB$B_TYPE       0000000A            

TTY$L_WB_END     00000004            TTY$V_ST_GETAHD= 00000019            UCB$B_VERTSZ     0000003F            

TTY$L_WB_NXT     00000000            TTY$V_ST_HANGUP= 00000018            UCB$C_LENGTH     00000074            

TTY$M_A        = 00003FFF            TTY$V_ST_MULTI = 00000006            UCB$C_LOGLNK   = 00000001            

TTY$M_CH_CTRL  = 00000020            TTY$V_ST_NL    = 00000015            UCB$K_LENGTH     00000074            

TTY$M_CH_CTRL2 = 00000080            TTY$V_ST_NOECHO= 0000000F            UCB$L_AMB        00000054            

TTY$M_CH_LOWER = 00000040            TTY$V_ST_NOFLTR= 00000012            UCB$L_ASTQBL     00000010            

TTY$M_CH_SPEC  = 00000010            TTY$V_ST_PASALL= 0000000E            UCB$L_ASTQFL     0000000C            

TTY$M_ST_BADESC= 00100000            TTY$V_ST_PROMPT= 00000011            UCB$L_CPID       0000005C            

TTY$M_ST_BRDCST= 00000080            TTY$V_ST_READ  = 0000000B            UCB$L_CRB        00000020            

TTY$M_ST_CTRLO = 00001000            TTY$V_ST_SENDLF= 00000005            UCB$L_DDB        00000024            

TTY$M_ST_CTRLR = 00000400            TTY$V_ST_SKIPLF= 00000017            UCB$L_DEVCHAR    00000034            

TTY$M_ST_CTRLS = 00000004            TTY$V_ST_TYPFUL= 00000016            UCB$L_DEVDEPEND  0000003C            

TTY$M_ST_CURSOR= 00000010            TTY$V_ST_UNSOL = 0000001A            UCB$L_DPC        0000007C            

TTY$M_ST_DEL   = 00002000            TTY$V_ST_WRITE = 00000008            UCB$L_DUETIM     0000005C            

TTY$M_ST_EOL   = 00000200            TTY$V_ST_WRTALL= 00000010            UCB$L_DX_BFPNT   FFFFFFF4            

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page  16

SYMBOL TABLE                                                                                                                    (10)



UCB$L_DX_BUF     FFFFFFF0            UCB$M_TT_NOTIF = 00000004            UCB$W_DEVSTS     0000005A            

UCB$L_DX_RXDB    FFFFFFF8            UCB$M_TT_ODD   = 00000020            UCB$W_DSTADDR    00000018            

UCB$L_EMB        00000078            UCB$M_TT_PARTY = 00000010            UCB$W_DX_BCR     FFFFFFFC            

UCB$L_FIRST      00000014            UCB$M_TT_SPEED = 0000000F            UCB$W_EC1        0000008C            

UCB$L_FPC        0000000C            UCB$M_TT_TIMO  = 00000002            UCB$W_EC2        0000008E            

UCB$L_FQBL       00000004            UCB$M_VALID    = 00000800            UCB$W_ERRCNT     00000072            

UCB$L_FQFL       00000000            UCB$S_LNKPRI   = 00000002            UCB$W_FUNC       00000084            

UCB$L_FR3        00000010            UCB$S_LTYPE    = 00000002            UCB$W_MB_SEED    FFFFFFFC            

UCB$L_FR4        00000014            UCB$S_TT_ODD   = 00000001            UCB$W_MSGCNT     00000016            

UCB$L_IOQBL      00000044            UCB$S_TT_PARTY = 00000001            UCB$W_MSGMAX     00000014            

UCB$L_IOQFL      00000040            UCB$S_TT_SPEED = 00000004            UCB$W_NT_CHAN    0000007C            

UCB$L_IRP        0000004C            UCB$T_PARTNER    0000000C            UCB$W_OFFSET     00000086            

UCB$L_LINK       0000002C            UCB$V_BACKP    = 00000005            UCB$W_REFC       00000050            

UCB$L_LOGADR     00000064            UCB$V_BSY      = 00000008            UCB$W_SIZE       00000008            

UCB$L_MAXBLOCK   00000080            UCB$V_CANCEL   = 00000003            UCB$W_SRCADDR    0000001A            

UCB$L_MEDIA      00000088            UCB$V_DEADMO   = 0000000A            UCB$W_STS        00000058            

UCB$L_NT_DATSSB  00000074            UCB$V_DELMBX   = 00000001            UCB$W_TT_CURSOR  FFFFFFFE            

UCB$L_NT_INTSSB  00000078            UCB$V_DIAGBUF  = 00000001            UCB$W_TT_HOLD    FFFFFFF4            

UCB$L_OPCNT      00000060            UCB$V_DX_WRITE = 00000003            UCB$W_TT_INAHD   FFFFFFF6            

UCB$L_OWNUIC     0000001C            UCB$V_ECC      = 00000000            UCB$W_UNIT       00000048            

UCB$L_PID        00000028            UCB$V_ERLOGIP  = 00000002            UCB$W_VPROT      0000001A            

UCB$L_RQBL       00000004            UCB$V_INT      = 00000001            W              = 00000008            

UCB$L_RQFL       00000000            UCB$V_INTTYPE  = 00000007            X              = 00000000            

UCB$L_SVAPTE     00000068            UCB$V_JOB      = 00000000            Z              = 00000001            

UCB$L_SVPN       00000064            UCB$V_LNKPRI   = 00000006            

UCB$L_TTCHAR     0000003C            UCB$V_LTYPE    = 00000000            

UCB$L_TT_BRDCST  FFFFFFE4            UCB$V_MOUNTING = 00000009            

UCB$L_TT_CTRLC   FFFFFFE0            UCB$V_MSGACK   = 00000004            

UCB$L_TT_CTRLY   FFFFFFDC            UCB$V_MSGFLO   = 00000003            

UCB$L_TT_MULTI   FFFFFFD8            UCB$V_NOCNVRT  = 00000002            

UCB$L_TT_RDUE    FFFFFFEC            UCB$V_NT_BFROVF= 00000002            

UCB$L_TT_STATE   FFFFFFD4            UCB$V_NT_BREAK = 00000005            

UCB$L_TT_TYPAHD  FFFFFFE8            UCB$V_NT_NAME  = 00000004            

UCB$L_VCB        00000030            UCB$V_NT_NONTR = 00000006            

UCB$M_BSY      = 00000100            UCB$V_NT_SDP   = 00000003            

UCB$M_CANCEL   = 00000008            UCB$V_ONLINE   = 00000004            

UCB$M_DEADMO   = 00000400            UCB$V_POWER    = 00000005            

UCB$M_DELMBX   = 00000002            UCB$V_PRMMBX   = 00000000            

UCB$M_DIAGBUF  = 00000002            UCB$V_SEGFLO   = 00000002            

UCB$M_DX_WRITE = 00000008            UCB$V_TIM      = 00000000            

UCB$M_ECC      = 00000001            UCB$V_TIMOUT   = 00000006            

UCB$M_ERLOGIP  = 00000004            UCB$V_TT_NOTIF = 00000002            

UCB$M_INT      = 00000002            UCB$V_TT_ODD   = 00000005            

UCB$M_INTTYPE  = 00000080            UCB$V_TT_PARTY = 00000004            

UCB$M_JOB      = 00000001            UCB$V_TT_SPEED = 00000000            

UCB$M_MOUNTING = 00000200            UCB$V_TT_TIMO  = 00000001            

UCB$M_NOCNVRT  = 00000004            UCB$V_VALID    = 0000000B            

UCB$M_NT_BFROVF= 00000004            UCB$W_BCNT       0000006E            

UCB$M_NT_BREAK = 00000020            UCB$W_BCR        00000092            

UCB$M_NT_NAME  = 00000010            UCB$W_BOFF       0000006C            

UCB$M_NT_NONTR = 00000040            UCB$W_BUFQUO     00000018            

UCB$M_NT_SDP   = 00000008            UCB$W_BYTESTOGO  0000003E            

UCB$M_ONLINE   = 00000010            UCB$W_CHARGE     0000004A            

UCB$M_POWER    = 00000020            UCB$W_CYLINDERS  0000003E            

UCB$M_PRMMBX   = 00000001            UCB$W_DA         00000088            

UCB$M_TIM      = 00000001            UCB$W_DC         0000008A            

UCB$M_TIMOUT   = 00000040            UCB$W_DEVBUFSIZ  0000003A            

TTYCHARI        - TERMINAL INPUT CHARACTER ROUTINES              22-AUG-1978 00:01:49   VAX-11 MACRO X0.3-11               Page  17

PROGRAM SECTION SYNOPSIS                                                                                                        (10)







PROGRAM SECTION SYNOPSIS



.  ABS  .        00000000      00     NOPIC   USR   CON   ABS   LCL NOSHR NOEXE NORD  NOWRT BYTE  

. BLANK .        00000000      01     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

$ABS$            FFFFFFFF      02     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  

WIONONPAGED      0000016C      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

4216. BYTES LEFT IN FREE MEMORY POOL.

2478. BYTES OF RECLAIMED MEMORY.

OBJ$:TTYCHARI,LIS$:TTYCHARI/-SP=LIB$:LIB/ML,SRC$:TTYCHARI

9 MLB DIR RDS - 1144 GETS TO DEFINE 20 MACROS. 99 INTER. FILE WRITES. 

