TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (2)      54  TTY$GETNXETCHAR - GET NEXT CHARACTER FOR OUTPUT

   (3)     101  OUTPUT STATE ACTION ROUTINES

   (8)     284  MOVEREADATA - MOVE CHARACTER FROM TYPEAHEAD TO 

   (11)    497  DELETE CHARACTER ROUTINE

   (12)    604  FORMAT_CHAR - FORMAT CHARACTER FOR OUTPUT

   (13)    672  OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR I

   (25)   1131  ESCAPE SEQUENCE ACTION ROUTINES

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page   1

X05                                                                                                                              (1)



                                     0000     1 	.TITLE	TTYCHARO - TERMINAL DRIVER CHARACTER OUTPUT 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 ; FACILITY:

                                     0000    24 ;

                                     0000    25 ;	VAX/VMS TERMINAL DRIVER

                                     0000    26 ;

                                     0000    27 ; ABSTRACT:

                                     0000    28 ;

                                     0000    29 ;	THIS MODULE CONTAINS ROUTINES USED FOR THE OUTPUT OF CHARACTERS.

                                     0000    30 ;

                                     0000    31 ; AUTHOR:

                                     0000    32 ;

                                     0000    33 ;	R.HEINEN 11-AUG-1976

                                     0000    34 ;--

                                     0000    35 ;

                                     0000    36 ; EXTERNAL SYMBOLS

                                     0000    37 ;

                                     0000    38 	$CRBDEF				; DEFINE CRB

                                     0000    39 	$IODEF				; DEFINE I/O FUNCTION CODES

                                     0000    40 	$IPLDEF				; DEFINE IPL'S

                                     0000    41 	$IRPDEF				; DEFINE IRP

                                     0000    42 	$PRDEF				; DEFINE PROCESSOR REGISTERS

                                     0000    43 	$PRIDEF				; DEFINE PRIORITY CLASSES

                                     0000    44 	$RSNDEF				; DEFINE RESOURCE NUMBERS

                                     0000    45 	$UCBDEF				; DEFINE UCB

                                     0000    46 	$TTYDEF				; DEFINE TERMINAL DRIVER SYMBOLS

                                     0000    47 	$TTDEF				; DEFINE TERMINAL CHARACTERISTICS

                                     0000    48 	$TTYUCBDEF			; DEFINE TERMINAL DRIVER SYMBOLS

                                     0000    49 	$VECDEF				; DEFINE CRB VECTOR

                                     0000    50 	TTYMACS				; DEFINE TERMINAL MACROS

                                     0000    51  

                                 00000000    52 	.PSECT	WIONONPAGED		; DEFINE NON-PAGED PSECT

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page   2

X05             TTY$GETNXETCHAR - GET NEXT CHARACTER FOR OUTPUT                                                                  (2)



                                     0000    54 	.SBTTL	TTY$GETNXETCHAR - GET NEXT CHARACTER FOR OUTPUT ON UNIT

                                     0000    55 ;++

                                     0000    56 ; TTY$GETNEXTCHAR - GET NEXT CHARACTER FOR OUTPUT ON UNIT

                                     0000    57 ;

                                     0000    58 ; FUNCTIONAL DESCRIPTION:

                                     0000    59 ;

                                     0000    60 ; THIS ROUTINE RETURNS DIRECTLY WITH THE NEXT CHARACTER TO BE OUTPUT ON THE UNIT.

                                     0000    61 ; IF NO CHARACTER IS AVAILABLE, THE DIRECT RETURN IS IGNORED AND THE SECONDARY RETUR

                                     0000    62 ; TAKEN.

                                     0000    63 ;

                                     0000    64 ; INPUTS:

                                     0000    65 ;

                                     0000    66 ;	R5 = UCB ADDRESS

                                     0000    67 ; 

                                     0000    68 ; OUTPUTS:

                                     0000    69 ;

                                     0000    70 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0000    71 ;	R3 = CHARACTER TO OUTPUT 

                                     0000    72 ;	R5 = UCB ADDRESS

                                     0000    73 ;--

                                     0000    74 TTY$GETNEXTCHAR::

            52         D4 A5     9E  0000    75 	MOVAB	UCB$L_TT_STATE(R5),R2	; ADDRESS STATE OF UNIT

                                     0004    76 ;

                                     0004    77 ; GET CURRENT STATE OF THE OUTPUT

                                     0004    78 ;

                                     0004    79 GETNEXTCHAR:				; INTERNAL ENTRY

            0C            00     EA  0004    80 	FFS	#0,#TTY$V_ST_READ+1,(R2),R4; GET THE NEXT MOST IMPORTANT OUTPUT STATE

            54            62         0007       

                                     0009    81 	CASE	R4,TYPE=B,<-		; ENTER THAT STATE'S ROUTINE

                                     0009    82 	XON,-				; SEND XON

                                     0009    83 	XOFF,-				; SEND XOFF

                                     0009    84 	INTEXIT,-			; CONTROL S

                                     0009    85 	FILLING,-			; FILL IN PROGESS

                                     0009    86 	CURSOROVRFLOW,-			; CURSOR OVERFLOW

                                     0009    87 	SENDLINEFEED,-			; LINE FEED TO BE INSERTED

                                     0009    88 	MULTIECHOING,-			; MULTI ECHO IS PROGRESS

                                     0009    89 	BRDCST,-			; BROADCAST IN PROGRESS

                                     0009    90 	WRITING,-			; WRITE IN PROGRESS

                                     0009    91 	EOLSEEN,-			; EOL SEEN

                                     0009    92 	CONTROLR,-			; CONTROL R IN PROGRESS

                                     0009    93 	MOVEREADATA>			; READ IN PROGRESS

                                     0025    94 ;

                                     0025    95 ; EXIT INTERRUPT

                                     0025    96 ;

                                     0025    97 INTEXIT:				; EXIT INTERRUPT

            5E            04     C0  0025    98 	ADDL	#4,SP			; POP DIRECT RETURN

                                 05  0028    99 	RSB				; RETURN

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page   3

X05             OUTPUT STATE ACTION ROUTINES                                                                                     (3)



                                     0029   101 	.SBTTL OUTPUT STATE ACTION ROUTINES

                                     0029   102 ;++

                                     0029   103 ; FILLING - CONTINUE FILL OUTPUT

                                     0029   104 ;

                                     0029   105 ; FUNCTIONAL DESCRIPTION:

                                     0029   106 ;

                                     0029   107 ; THIS ROUTINE IS ENTERED WHILE THE TRM$V_FILL STATE IS ON.

                                     0029   108 ; THE FILL COUNT IS DECREMENTED AND IF NON 0 A FILL IS OUTPUT

                                     0029   109 ; IF THE COUNT GOES TO 0 THEN THE FILL STATE IS CLEARED.

                                     0029   110 ;

                                     0029   111 ; INPUTS:

                                     0029   112 ;

                                     0029   113 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0029   114 ;	R5 = UCB ADDRESS

                                     0029   115 ;

                                     0029   116 ; OUTPUTS:

                                     0029   117 ;

                                     0029   118 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0029   119 ;	R3 = 0

                                     0029   120 ;	R5 = UCB ADDRESS

                                     0029   121 ;--

                                     0029   122 FILLING:				; OUTPUT CONTINUING FILLS

                       F8 A5     97  0029   123 	DECB	UCB$B_TT_FILL(R5)	; ADJUST FILL COUNT

                          03     12  002C   124 	BNEQ	25$			; IF NEQ THEN NOT DONE YET

                                     002E   125 	CLR_STATE FILL			; SET CONDITION OFF

                          53     D4  0031   126 25$:	CLRL	R3			; SET FILL CHARACTER

                          0363   31  0033   127 	BRW	OUTPUTANDWAIT		; OUTPUT THE CHARACTER

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page   4

X05             OUTPUT STATE ACTION ROUTINES                                                                                     (4)



                                     0036   129 ;++

                                     0036   130 ; WRITING - CONTINUE WRITE I/O OUTPUT

                                     0036   131 ;

                                     0036   132 ; FUNCTIONAL DESCRIPTION:

                                     0036   133 ;

                                     0036   134 ; THIS ROUTINE IS ENTERED WHEN ALL EXTRA OUTPUT IS COMPLETE

                                     0036   135 ; AND A WRITE OPERATION IS IN PROGRESS.

                                     0036   136 ;

                                     0036   137 ; THE NEXT AVAILABLE CHARACTER IS EXTRACTED FROM THE USER BUFFER

                                     0036   138 ; AND GIVEN TO THE ECHO FORMAT ROUTINES TO OUTPUT CORRECTLY.

                                     0036   139 ;

                                     0036   140 ; IF CONTROL O HAS STOPED THE OUTPUT THE OPERATION IS COMPLETED.

                                     0036   141 ; IF NO CHARACTER IS AVAILABLE THEN THE OUTPUT IS COMPLETED

                                     0036   142 ;

                                     0036   143 ; INPUTS:

                                     0036   144 ;

                                     0036   145 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0036   146 ;	R5 = UCB ADDRESS

                                     0036   147 ;

                                     0036   148 ; OUTPUTS:

                                     0036   149 ;

                                     0036   150 ;	R2 = ADDRESS OF THE TERMINAL STATE VECTOR

                                     0036   151 ;	R3 = CHARACTER TO OUTPUT IF ANY

                                     0036   152 ;	R5 = UCB ADDRESS

                                     0036   153 ;--

                                     0036   154 WRITING:

            54         68 A5     D0  0036   155 	MOVL	UCB$L_SVAPTE(R5),R4	; ADDRESS BUFFER BLOCK

                                     003A   156 	IF_STATE CTRLO,60$		; COMPLETE I/O OF CONTROL O

         04 A4            64     D1  0040   157 	CMPL	TTY$L_WB_NXT(R4),TTY$L_WB_END(R4); DONE?

                          09     1E  0044   158 	BGEQU	50$			; IF GEQU THEN YES

            53         00 B4     9A  0046   159 	MOVZBL	@TTY$L_WB_NXT(R4),R3	; GET THE NEXT CHARACTER

                          64     D6  004A   160 	INCL	TTY$L_WB_NXT(R4)	; ADJUST CHARACTER POINTER

                          02EC   31  004C   161 	BRW	FORMAT_CHAR		; FORMAT CHARACTER FOR OUTPUT

                                     004F   162 ;

                                     004F   163 ; WRITE I/O DONE

                                     004F   164 ;

         6C A5         00'8F     9B  004F   165 50$:	MOVZBW	#SS$_NORMAL,UCB$W_BOFF(R5); SET STATUS

                          06     11  0054   166 	BRB	70$			; CONTINUE

                                     0056   167 ;

                                     0056   168 ; CONTROL O TYPED OR CONTROL Y OR C

                                     0056   169 ;

         6C A5       0000'8F     B0  0056   170 60$:	MOVW	#SS$_CONTROLO,UCB$W_BOFF(R5); SET STATUS

         04 A4            64     C3  005C   171 70$:	SUBL3	TTY$L_WB_NXT(R4),TTY$L_WB_END(R4),R4; GET NUMBER NOT PUT OUT

                          54         0060       

         6E A5            54     A2  0061   172 	SUBW	R4,UCB$W_BCNT(R5)	; AND ADJUST TRANSFER COUNT

                          FF98'  30  0065   173 	BSBW	TTY$WRITEDONE		; DO I/O DONE

                          FF99   31  0068   174 	BRW	GETNEXTCHAR		; CONTINUE

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page   5

X05             OUTPUT STATE ACTION ROUTINES                                                                                     (5)



                                     006B   176 ;++

                                     006B   177 ; EOLSEEN - END OF LINE SEEN

                                     006B   178 ;

                                     006B   179 ; FUNCTIONAL DESCRIPTION:

                                     006B   180 ;

                                     006B   181 ; THIS ROUTINE IS ENTERED AFTER AN END OF LINE CHARACTER HAS

                                     006B   182 ; TERMINATED A READ RECORD AND THE ECHO OF THAT CHARACTER IS COMPLETE.

                                     006B   183 ;

                                     006B   184 ; THE ACTION IS TO COMPLETE THE READ OPERATION AND IF NECESSARY,

                                     006B   185 ; SEND AN XOFF.

                                     006B   186 ;

                                     006B   187 ; INPUTS:

                                     006B   188 ;

                                     006B   189 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     006B   190 ;	R5 = UCB ADDRESS

                                     006B   191 ;

                                     006B   192 ; OUTPUTS:

                                     006B   193 ;

                                     006B   194 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     006B   195 ;	R5 = UCB ADDRESS

                                     006B   196 ;--

                                     006B   197 EOLSEEN:				; END READ OPERATION

         6C A5         00'8F     9B  006B   198 	MOVZBW	#SS$_NORMAL,UCB$W_BOFF(R5); SET STATUS

                          FF8D'  30  0070   199 	BSBW	TTY$READONE		; COMPLETE THE I/O

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page   6

X05             OUTPUT STATE ACTION ROUTINES                                                                                     (6)



                                     0073   201 	.ENABL	LSB

                                     0073   202  

                                     0073   203 ;++

                                     0073   204 ; XOFF - SEND XOFF

                                     0073   205 ; XON - SEND XON

                                     0073   206 ;

                                     0073   207 ; FUNCTIONAL DESCRIPTION:

                                     0073   208 ;

                                     0073   209 ; THIS ROUTINE IS USED TO COMPLETE THE SENDING OF AN XON OR XOFF

                                     0073   210 ; AS A RESULT OF THE STATE BIT BEING SET ACCORDINGLY.

                                     0073   211 ;

                                     0073   212 ; INPUTS:

                                     0073   213 ;

                                     0073   214 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0073   215 ;	R5 = UCB ADDRESS

                                     0073   216 ;

                                     0073   217 ; OUTPUTS:

                                     0073   218 ;

                                     0073   219 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0073   220 ;	R3 = XON OR XOFF

                                     0073   221 ;	R5 = UCB ADDRESS

                                     0073   222 ;--

                                     0073   223 XOFF:					; OUTPUT AN XOFF

                                     0073   224 	CLR_STATE XOFF

                                     0076   225 	IF_NOT_STATE TYPFUL,10$		; IF NOT TYPEAHEAD FUL THEN BR

         3C A5            04     E0  007D   226 	BBS	#TT$V_HOSTSYNC,UCB$L_DEVDEPEND(R5),10$; IF HOST SYNC THEN XOFF

                          05         0081       

            53            07     9A  0082   227 	MOVZBL	#TTY$C_BELL,R3		; OTHERWISE BELL

                          26     11  0085   228 	BRB	25$			; CONTINUE

            53            13     9A  0087   229 10$:	MOVZBL	#TTY$C_XOFF,R3		; SET THE CHARACTER

                          19     11  008A   230 	BRB	20$			; AND CONTINUE

                                     008C   231 XON:					; SEND AN XON

                                     008C   232 	CLR_STATE <XON,TYPFUL>

            53            11     9A  0093   233 	MOVZBL	#TTY$C_XON,R3		; SET XON CHARACTER

         3C A5            06     E1  0096   234 	BBC	#TT$V_SCRIPT,UCB$L_DEVDEPEND(R5),20$; BR IF NOT SCRIPT TERMINAL

                          0A         009A       

         D8 A5       0000'CF     9E  009B   235 	MOVAB	W^TTY$A_SCRIPT,UCB$L_TT_MULTI(R5); SET MULTI ECHO STRING

                                     00A1   236 	SET_STATE MULTI			; BEGIN MULTI ECHO

         3C A5            04     E0  00A5   237 20$:	BBS	#TT$V_HOSTSYNC,UCB$L_DEVDEPEND(R5),25$; BR IF NOT NEEDED

                          03         00A9       

                          FF57   31  00AA   238 	BRW	GETNEXTCHAR		;

                          02E9   31  00AD   239 25$:	BRW	OUTPUTANDWAIT		; OUTPUT CHARACTER

                                     00B0   240  

                                     00B0   241 	.DSABL	LSB

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page   7

X05             OUTPUT STATE ACTION ROUTINES                                                                                     (7)



                                     00B0   243 ;++

                                     00B0   244 ; CONTROLR - CONTINUE OUTPUT AFTER A CONTROL R

                                     00B0   245 ;

                                     00B0   246 ; FUNCTIONAL DESCRIPTION:

                                     00B0   247 ;

                                     00B0   248 ; THIS ROUTINE OUTPUTS THE DATA CONTAINED IN THE READ OPERATION

                                     00B0   249 ; BUFFERED I/O BLOCK. 

                                     00B0   250 ;

                                     00B0   251 ; INPUTS:

                                     00B0   252 ;

                                     00B0   253 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     00B0   254 ;	R5 = UCB ADDRESS

                                     00B0   255 ;

                                     00B0   256 ; OUTPUTS:

                                     00B0   257 ;

                                     00B0   258 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     00B0   259 ;	R3 = CHARACTER TO OUTPUT IF ANY

                                     00B0   260 ;	R5 = UCB ADDRESS

                                     00B0   261 ;--

                                     00B0   262 CONTROLR:				; CONTINUE CONTROL R OUTPUT

                                     00B0   263 ;

                                     00B0   264 ; CONTINUE CONTROL R OUTPUT

                                     00B0   265 ;

            54         6C A5     3C  00B0   266 	MOVZWL	UCB$W_BOFF(R5),R4	; GET PROMPT SIZE

            53         6E A5     3C  00B4   267 	MOVZWL	UCB$W_BCNT(R5),R3	; GET CURRENT NUMBER OF BUFFERED CHARACTERS

            53            54     C0  00B8   268 	ADDL	R4,R3			; CALC TOTAL

            54         68 A5     D0  00BB   269 	MOVL	UCB$L_SVAPTE(R5),R4	; ADDRESS READ BUFFER BLOCK

            53            54     C0  00BF   270 	ADDL	R4,R3			; POINT TO LAST CHARACTER IN READ BUFFER

            64            53     D1  00C2   271 	CMPL	R3,TTY$L_RB_NXT(R4)	; DONE?

                          0F     13  00C5   272 	BEQL	120$			; IF EQL THEN YES

                                     00C7   273 	IF_STATE CTRLO,120$		; ALSO DONE IF CONTROL O

            53         00 B4     9A  00CD   274 	MOVZBL	@TTY$L_RB_NXT(R4),R3	; GET NEXT CHARACTER

                          64     D6  00D1   275 	INCL	TTY$L_RB_NXT(R4)	; ADJUST POINTER

                          0265   31  00D3   276 	BRW	FORMAT_CHAR		; OUTPUT READ DATA

                                     00D6   277 ;

                                     00D6   278 ; END OF CONTROL R

                                     00D6   279 ;

                                     00D6   280 120$:	CLR_STATE <CTRLR,CTRLO>

            64            53     D0  00DA   281 	MOVL	R3,TTY$L_RB_NXT(R4)	; RESET PUT POINTER IN READ BUFFER

                          AD     11  00DD   282 	BRB	XON

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page   8

X05             MOVEREADATA - MOVE CHARACTER FROM TYPEAHEAD TO                                                                   (8)



                                     00DF   284 	.SBTTL MOVEREADATA - MOVE CHARACTER FROM TYPEAHEAD TO READ BUFFER

                                     00DF   285 ;++

                                     00DF   286 ; MOVEREADATA -- MOVE CHARACTER FROM TYPEAHEAD BUFFER TO READ BUFFER

                                     00DF   287 ;

                                     00DF   288 ; FUNCTIONAL DESCRIPTION:

                                     00DF   289 ;

                                     00DF   290 ; THIS ROUTINE MOVES A CHARACTER FROM THE TYPEAHEAD BUFFER AND STARTS

                                     00DF   291 ; THE ECHO. 

                                     00DF   292 ;

                                     00DF   293 ; NON-IMMEDIATE ACTION CONTROL SEQUENCES ARE HANDLED HERE.

                                     00DF   294 ;

                                     00DF   295 ; BEFORE RETURNING A CHARACTER FOR ECHO IT IS CONVERTED TO ITS

                                     00DF   296 ; MULTIPLE ECHO STRING IF APPROPRIATE. IN THIS CASE THE CHARACTER

                                     00DF   297 ; RETURNED IS THE FIRST OF THE MULTIPLE ECHO CHARACTERS.

                                     00DF   298 ;

                                     00DF   299 ; INPUTS:

                                     00DF   300 ;	R5 = UCB ADDRESS

                                     00DF   301 ;

                                     00DF   302 ; STACK:

                                     00DF   303 ;	00(SP) = RETURN TO OUTPUT CHARACTER

                                     00DF   304 ;	04(SP) = RETURN TO DISMISS INTERRUPT

                                     00DF   305 ;

                                     00DF   306 ; OUTPUTS:

                                     00DF   307 ;

                                     00DF   308 ;	R3 = CHARACTER IF ANY

                                     00DF   309 ;	R5 = UCB ADDRESS

                                     00DF   310 ;--

                                     00DF   311 MOVEREADATA:				;

                       F6 A5     B5  00DF   312 	TSTW	UCB$W_TT_INAHD(R5)	; ANY TYPEAHEAD DATA?

                          1F     13  00E2   313 	BEQL	35$			; IF EQL THEN NO

                                     00E4   314 ;

                                     00E4   315 ; MOVE CHARACTER OUT OF TYPEAHEAD BUFFER

                                     00E4   316 ;

            54         E8 A5     D0  00E4   317 	MOVL	UCB$L_TT_TYPAHD(R5),R4	; ADDRESS TYPEAHEAD BUFFER

            53         04 B4     9A  00E8   318 	MOVZBL	@TTY$L_TA_GET(R4),R3	; GET THE CHARACTER

                                     00EC   319 ;

                                     00EC   320 ; SEE IF DELETE SEQUENCE SHOULD BE TERMINATED

                                     00EC   321 ;

                                     00EC   322 	IF_NOT_STATE DEL,50$		; IN DELETE STATE?

         7F 8F            53     91  00F2   323 	CMPB	R3,#TTY$C_DELETE	; IS THIS CHARACTER A DELETE?

                          20     13  00F6   324 	BEQL	50$			; IF YES THEN GO ON

                                     00F8   325 	CLR_STATE DEL			; TERMINATE DELETE SEQUENCE

                                     00FC   326 ;

                                     00FC   327 ; TERMINATE DELETE SEQUENCE IF NOT IN NO-ECHO

                                     00FC   328 ;

            53         5C 8F     9A  00FC   329 	MOVZBL	#^A/\/,R3		; SET OUTPUT CHARACTER

                          0238   31  0100   330 	BRW	FORMAT_CHAR		; FORMAT THE CHARACTER

                                     0103   331 ;

                                     0103   332 ; TYPEAHEAD BUFFER EXHAUSTED

                                     0103   333 ;

            62            16     E5  0103   334 35$:	BBCC	#TTY$V_ST_TYPFUL,(R2),40$; BR IF TYPAHEAD BUFFER NOT FULL

                          03         0106       

                          FF82   31  0107   335 	BRW	XON			; IF IT WAS FULL THEN XON

                                     010A   336 ;

                                     010A   337 ; DISMIS INTERRUPT

                                     010A   338 ;

            5E            04     C0  010A   339 40$:	ADDL	#4,SP			;

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page   9

X05             MOVEREADATA - MOVE CHARACTER FROM TYPEAHEAD TO                                                                   (8)



                                 05  010D   340 	RSB

                                     010E   341 ;

                                     010E   342 ; ALTMODE - CHANGE ^O176 TO ALT IF NOT LOWER CASE TERMINAL

                                     010E   343 ;

         3C A5            07     E0  010E   344 45$:	BBS	#TT$V_LOWER,UCB$L_DEVDEPEND(R5),150$; IF LOWER CASE THEN 175 IS ACCEPTED

                          2F         0112       

            53            1B     9A  0113   345 	MOVZBL	#TTY$C_ESCAPE,R3	; CHANGE CHARACTER TO ESCAPE OTHERWISE

                          2A     11  0116   346 	BRB	150$			; CONTINUE

                                     0118   347 ;

                                     0118   348 ; ACTUALLY REMOVE CHARACTER FROM BUFFER

                                     0118   349 ;

                       04 A4     D6  0118   350 50$:	INCL	TTY$L_TA_GET(R4)	; ADJUST GET POINTER

                       F6 A5     B7  011B   351 	DECW	UCB$W_TT_INAHD(R5)	; ADJUST NUMBER OF TYPEAHEAD CHARACTERS

                                     011E   352 ;

                                     011E   353 ; CHECK FOR BUFFER WRAP AROUND

                                     011E   354 ;

         04 A4         0C A4     D1  011E   355 	CMPL	TTY$L_TA_END(R4),TTY$L_TA_GET(R4); POINTER PAST END?

                          05     12  0123   356 	BNEQ	60$			; IF NEQ THEN NO

         04 A4         10 A4     9E  0125   357 	MOVAB	TTY$L_TA_DATA(R4),TTY$L_TA_GET(R4); RESET POINTER

                                     012A   358 ;

                                     012A   359 ; SKIP TESTS FOR SECOND CONTROL SEQUENCE SET IF PASSALL

                                     012A   360 ;

                                     012A   361 60$:	IF_STATE <PASALL,NOFLTR>,150$	; 

                                     0132   362 	CASE	W^TTY$A_TYPE[R3],TYPE=B,LIMIT=#1@TTY$V_CH_CTRL2,-

                                     0132   363 		<CTRLR,CTRLU,45$,DELCHAR>

                                     0142   364 ;

                                     0142   365 ; INSERT THE CHARACTER

                                     0142   366 ;

                          51     DD  0142   367 150$:	PUSHL	R1			; GET A REGISTER

            51         4C A5     D0  0144   368 	MOVL	UCB$L_IRP(R5),R1	; ADDRESS PACKET

                                     0148   369 	IF_STATE	<PASALL,ESC>,155$; IF PASSALL OR ESC THEN NO CONVERT

         3C A5            07     E1  0150   370 	BBC	#TT$V_LOWER,UCB$L_DEVDEPEND(R5),153$; BR IF NO LOWER CASR ON UNIT

                          05         0154       

         20 A1            08     E1  0155   371 	BBC	#IO$V_CVTLOW,IRP$W_FUNC(R1),155$; BR IF NOT CONVERT LOW

                          0A         0159       

       0000'CF43          06     E1  015A   372 153$:	BBC	#TTY$V_CH_LOWER,W^TTY$A_TYPE[R3],155$; BR IF NOT LOWER CHARACTER

                          03         0160       

            53            20     AA  0161   373 	BICW	#^X020,R3		; CONVERT TO UPPER CASE

            54         68 A5     D0  0164   374 155$:	MOVL	UCB$L_SVAPTE(R5),R4	; ADDRESS READ BUFFER BLOCK

         00 B4            53     90  0168   375 	MOVB	R3,@TTY$L_RB_NXT(R4)	; INSERT CHARACTER

                          64     D6  016C   376 	INCL	TTY$L_RB_NXT(R4)	; ADJUST POINTER

                                     016E   377 ;

                                     016E   378 ; PROCESS ESCAPE SEQUENCES AND ESCAPES

                                     016E   379 ;

         3C A5            03     E1  016E   380 	BBC	#TT$V_ESCAPE,UCB$L_DEVDEPEND(R5),200$; BR IF NOT ESCAPE TERMINAL

                          56         0172       

                                     0173   381 	IF_STATE ESC,160$		; ALREADY IN ESCAPE SEQUENCE?

            1B            53     91  0179   382 	CMPB	R3,#TTY$C_ESCAPE	; ESCAPE CHARACTER?

                          4B     12  017C   383 	BNEQ	200$			; CONTINUE NORMALLY

                       F2 A5     94  017E   384 	CLRB	UCB$B_TT_ESC(R5)	; SET FIRST SYNTAX RULE

                                     0181   385 	SET_STATE ESC			; BEGIN ESCAPE SEQUENCE

         34 A1            53     9B  0185   386 	MOVZBW	R3,IRP$L_MEDIA(R1)	; SET TERMINATOR CHARACTER

                          38     11  0189   387 	BRB	195$			; INSERT ESCAPE IN BUFFER

                                     018B   388 ;

                                     018B   389 ; ESCAPE SEQUENCE IN PROGRESS - CHECK SYNTAX

                                     018B   390 ;

            54         F2 A5     9A  018B   391 160$:	MOVZBL	UCB$B_TT_ESC(R5),R4	; GET SYNTAX RULE

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  10

X05             MOVEREADATA - MOVE CHARACTER FROM TYPEAHEAD TO                                                                   (8)



       0000'CF44          53     91  018F   392 165$:	CMPB	R3,W^TTY$A_ESCAPE[R4]	; CHECK RANGE OF CHARACTER

                          1C     1F  0195   393 	BLSSU	190$			; IF LSSU THEN NOT THIS RULE

       0001'CF44          53     91  0197   394 	CMPB	R3,W^TTY$A_ESCAPE+1[R4]	; LOWER THAN HIGH LIMIT?

                          14     1A  019D   395 	BGTRU	190$			; LOOK TO NEXT RULE

         F2 A5       0002'CF44   90  019F   396 	MOVB	W^TTY$A_ESCAPE+2[R4],UCB$B_TT_ESC(R5); SAVE NEXT RULE

                          1B     12  01A6   397 	BNEQ	195$			; IF NEQ THEN CONTINUE

                                     01A8   398 ;

                                     01A8   399 ; ESCAPE SEQUENCE OVER

                                     01A8   400 

                                     01A8   401 ;

                                     01A8   402 170$:	CLR_STATE ESC	

                                     01AC   403 ;

                                     01AC   404 ; THE CHARACTER COUNT IS INCORRECT BY THE SIZE OF THE ESCAPE STRING

                                     01AC   405 ;

         6E A5         36 A1     A2  01AC   406 185$:	SUBW	IRP$L_MEDIA+2(R1),UCB$W_BCNT(R5); ADJUST BYTE COUNT F

                          3D     11  01B1   407 	BRB	222$			; AND EXIT ROUTINE

                                     01B3   408 ;

                                     01B3   409 ; CONTINUE ESCAPE SEQUENCE

                                     01B3   410 ;

            54            03     C0  01B3   411 190$:	ADDL	#3,R4			; POINT TO NEXT RULE

                     0000'CF44   95  01B6   412 	TSTB	W^TTY$A_ESCAPE[R4]	; ANY NEXT RULE?

                          D2     12  01BB   413 	BNEQ	165$			; IF NEQ THEN YES

                                     01BD   414 ;

                                     01BD   415 ; ESCAPE SYNTAX ERROR

                                     01BD   416 ;

                                     01BD   417 	SET_STATE BADESC		; SET BAD ESCAPE

                          E5     11  01C1   418 	BRB	170$			; AND SEQUENCE IS OVER

                                     01C3   419 ;

                                     01C3   420 ; ESCAPE SEQUENCE CHARACTER IS IN THE BUFFER - COUNT IT

                                     01C3   421 ;

         36 A1            01     A0  01C3   422 195$:	ADDW	#1,IRP$L_MEDIA+2(R1)	; ADJUST SIZE OF TERMINATOR STRING

                          05     11  01C7   423 	BRB	210$			; AND PLACE CHARACTER IN BUFFER

                                     01C9   424 ;

                                     01C9   425 ; NON ESCAPE SEQUENCE TERMINATION TEST

                                     01C9   426 ;

         38 B1            53     E0  01C9   427 200$:	BBS	R3,@IRP$B_CARCON(R1),220$; BR IF TERMINATOR

                          15         01CD       

                                     01CE   428 ;

                                     01CE   429 ; TEST FOR BUFFER FULL - NOTE THAT THIS CAN NOT BE DONE WITH A "ACBW".

                                     01CE   430 ;

                       6E A5     B6  01CE   431 210$:	INCW	UCB$W_BCNT(R5)		; ADD TO COUNT

         32 A1         6E A5     B1  01D1   432 	CMPW	UCB$W_BCNT(R5),IRP$W_BCNT(R1); TEST BUFFER FULL

                          26     1F  01D6   433 	BLSSU	230$			; IF LSS THEN NOT FULL

                                     01D8   434 	IF_STATE ESC,185$		; SPECIAL END IF ESC SEQ DOES NOT FIT

                       34 A1     D4  01DE   435 	CLRL	IRP$L_MEDIA(R1)		; SET TERMINATOR CHARACTER AS 0

                          17     11  01E1   436 	BRB	225$			; AND CONTINUE

                                     01E3   437 ;

                                     01E3   438 ; TERMINATOR FOUND OR BUFFER FULL - SET "END OF LINE"

                                     01E3   439 ;

         34 A1            53     B0  01E3   440 220$:	MOVW	R3,IRP$L_MEDIA(R1)	; SAVE LAST CHARACTER FOR STATUS

         36 A1            01     A0  01E7   441 	ADDW	#1,IRP$L_MEDIA+2(R1)	; ADJUST TERMINATOR SIZE

         20 A1            0C     E1  01EB   442 	BBC	#IO$V_TRMNOECHO,IRP$W_FUNC(R1),225$; BR IF NOT TERM NOECHO

                          0A         01EF       

                                     01F0   443 222$:	SET_STATE	EOL		; SET END OF LINE

            51            8E     D0  01F4   444 	MOVL	(SP)+,R1		; RESTORE R1

                          FE71   31  01F7   445 	BRW	EOLSEEN			; DONE

                                     01FA   446 225$:	SET_STATE	EOL

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  11

X05             MOVEREADATA - MOVE CHARACTER FROM TYPEAHEAD TO                                                                   (8)



            51            8E     D0  01FE   447 230$:	MOVL	(SP)+,R1		; RESTORE REGISTERS

                                     0201   448 ;

                                     0201   449 ; TEST FOR ECHO NEEDS

                                     0201   450 ;

                                     0201   451 	IF_STATE	<NOECHO,ESC>,240$; IF NOECHO OR ESC THEN CONTINUE

                          012F   31  0209   452 	BRW	FORMAT_CHAR		;

                          FDF5   31  020C   453 240$:	BRW	GETNEXTCHAR		; VECTOR TO TRANSFER MORE CHARACTERS

                                     020F   454  

                                     020F   455 	.ENABL	LSB

                                     020F   456 ;

                                     020F   457 ; CONTROL U PROCESSING

                                     020F   458 ;

                                     020F   459 CTRLU:	IF_NOT_STATE ESC,10$		; IF IN ESCAPE SEQUENCE THEN DELETE ESCAPE

                          0042   30  0215   460 	BSBW	DELESCAPE		; DELETE THE ESCAPE SEQUENCE

                       6E A5     B4  0218   461 10$:	CLRW	UCB$W_BCNT(R5)		; GET NO BUFFERED CHARACTERS

         68 A5            10     C1  021B   462 	ADDL3	#TTY$L_RB_DATA,UCB$L_SVAPTE(R5),@UCB$L_SVAPTE(R5); ADJUST POINTER

                       68 B5         021F       

                                     0221   463 	IF_STATE NOECHO,12$		; DONE IF NO ECHO

            54       0000'CF     9E  0228   464 	MOVAB	W^TTY$A_CTRLU,R4	; ADDRESS MULTIECHO STRING

                                     022D   465 	IF_STATE PROMPT,20$		; IF PROMPT THEN TREAT SPECIAL

                          22     11  0233   466 	BRB	40$			; CONTINUE

            54         6C A5     3C  0235   467 12$:	MOVZWL	UCB$W_BOFF(R5),R4	; GET PROMPT SIZE

         68 A5            54     C1  0239   468 	ADDL3	R4,UCB$L_SVAPTE(R5),@UCB$L_SVAPTE(R5); ADJUST POINTERFOR NOECHO

                       68 B5         023D       

                          FE9D   31  023F   469 15$:	BRW	MOVEREADATA		;

                                     0242   470 ;

                                     0242   471 ; CONTROL R PROCESSING

                                     0242   472 ;

                                     0242   473 CTRLR:	IF_STATE <ESC>,15$		; DONE IF ESCAPE

         68 A5            10     C1  0248   474 	ADDL3	#TTY$L_RB_DATA,UCB$L_SVAPTE(R5),@UCB$L_SVAPTE(R5);RESET POINTER

                       68 B5         024C       

            54       0000'CF     9E  024E   475 	MOVAB	W^TTY$A_CTRLR,R4	; ADDRESS MULTIECHO STRING

                                     0253   476 20$:	SET_STATE	CTRLR		; SET CONTROL R STATE

                          02FD   31  0257   477 40$:	BRW	STRTMULTI		; START ECHO

                                     025A   478  

                                     025A   479 	.DSABL	LSB

                                     025A   480 ;

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  12

X05             MOVEREADATA - MOVE CHARACTER FROM TYPEAHEAD TO                                                                  (10)



                                     025A   482 

                                     025A   483 ;

                                     025A   484 ; DELETE AN ESCAPE SEQUENCE IN PROGRESS

                                     025A   485 ;

                                     025A   486 ; THIS ROUTINE IS USED BY THE CONTROL U AND DELETE LOGIC TO RESET

                                     025A   487 ; AND DELETE THE ESCAPE SEQUENCE IN PROGRESS

                                     025A   488 ;

                                     025A   489 DELESCAPE:				; DELETE CURRENT ESCAPE SEQUENCE

            54         4C A5     D0  025A   490 	MOVL	UCB$L_IRP(R5),R4	; GET ADDRESS OF PACKET

            54         34 A4     3C  025E   491 	MOVZWL	IRP$L_MEDIA(R4),R4	; GET THE SIZE OF THE SEQUENCE

         6E A5            54     A2  0262   492 	SUBW	R4,UCB$W_BCNT(R5)	; ADJUST TRANSFER SIZE FOR SEQUENCE

         68 B5            54     A2  0266   493 	SUBW	R4,@UCB$L_SVAPTE(R5)	; ADJUST DATA POINTER

                                     026A   494 	CLR_STATE <ESC,BADESC>

                                 05  026E   495 10$:	RSB				; RETURN

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  13

X05             DELETE CHARACTER ROUTINE                                                                                        (11)



                                     026F   497 	.SBTTL	DELETE CHARACTER ROUTINE

                                     026F   498 ;++

                                     026F   499 ; DELCHAR - DELETE CHARACTER ROUTINE

                                     026F   500 ;

                                     026F   501 ; FUNCTIONAL DESCRIPTION:

                                     026F   502 ;

                                     026F   503 ; THIS ROUTINE DELETES THE LAST TYPED CHARACTER FROM THE READ BUFFER.

                                     026F   504 ; THEN IT SETS UP THE PROPER ECHO SEQUENCE FOR THE DELETED CHARACTER.

                                     026F   505 ;

                                     026F   506 ; INPUTS:

                                     026F   507 ;

                                     026F   508 ;	R2 = ADDRESS OF TTY STATE VECTOR

                                     026F   509 ;	R5 = UCB ADDRESS

                                     026F   510 ;

                                     026F   511 ; OUTPUTS:

                                     026F   512 ;

                                     026F   513 ;	R2 = ADDRESS OF TTY STATE VECTOR

                                     026F   514 ;	R5 = UCB ADDRESS

                                     026F   515 ;--

                                     026F   516 DELCHAR:				;

                       6E A5     B5  026F   517 	TSTW	UCB$W_BCNT(R5)		; ANY DATA?

                          62     13  0272   518 	BEQL	30$			; IF EQL THEN NO

                                     0274   519 ;

                                     0274   520 ; IF ESCAPE SEQUENCE IN PROGRESS THEN DELETE ENTIRE STRING

                                     0274   521 ;

                                     0274   522 	IF_STATE ESC,25$		; DELETE ESCAPE SEQUENCE

                       6E A5     B7  027A   523 	DECW	UCB$W_BCNT(R5)		; ADJUST COUNT OF DATA CHARACTERS

            54         68 A5     D0  027D   524 	MOVL	UCB$L_SVAPTE(R5),R4	; ADDRESS READ BUFFER BLOCK

                          64     D7  0281   525 	DECL	TTY$L_RB_NXT(R4)	; ADJUST POINTER WORD

            53         00 B4     9A  0283   526 	MOVZBL	@TTY$L_RB_NXT(R4),R3	; GET THE CHARACTER

                                     0287   527 	IF_STATE NOECHO,30$		;

                                     028E   528 ;

                                     028E   529 ; TEST FOR SPECIAL DELETES

                                     028E   530 ;

            09            53     91  028E   531 	CMPB	R3,#TTY$C_TAB		; TAB?

                          46     12  0291   532 	BNEQ	55$			; IF NEQ THEN OUTPUT JUST THE CHARACTER

         3C A5            0C     E1  0293   533 	BBC	#TT$V_SCOPE,UCB$L_DEVDEPEND(R5),75$; BR IF NOT SCOPE

                          78         0297       

                                     0298   534 ;

                                     0298   535 ; DELETE A TAB ON A SCOPE

                                     0298   536 ;

            53            64     D0  0298   537 	MOVL	(R4),R3			; POINT TO END OF DATA

            54         10 A4     9E  029B   538 	MOVAB	TTY$L_RB_DATA(R4),R4	; POINT TO DATA START

                          7E     D4  029F   539 	CLRL	-(SP)			; SET UP CURSOR COUNTER

            54            53     D1  02A1   540 10$:	CMPL	R3,R4			; BUFFER START?

                          19     13  02A4   541 	BEQL	15$			; THEN REFERENCE POINT FOUND

            0D            73     91  02A6   542 	CMPB	-(R3),#TTY$C_CR		; CARRIAGE RETURN?

                          18     13  02A9   543 	BEQL	20$			; IF EQL THEN REFERENCE POINT FOUND

            09            63     91  02AB   544 	CMPB	(R3),#TTY$C_TAB		; TAB?

                          13     13  02AE   545 	BEQL	20$			; IF EQL THEN REFERENCE POINT FOUND

            20            63     91  02B0   546 	CMPB	(R3),#TTY$C_BLANK	; CURSOR CHANGE CHARACTER?

                          EC     1F  02B3   547 	BLSSU	10$			; IF LSSU THEN NO

                          6E     D6  02B5   548 	INCL	(SP)			; ADJUST FAKE CURSOR

         3A A5            6E     B1  02B7   549 	CMPW	(SP),UCB$W_DEVBUFSIZ(R5); WRAP AROUND OCCUR?

                          06     13  02BB   550 	BEQL	20$			; IF EQL THEN REF POINT FOUND

                          E2     11  02BD   551 	BRB	10$			; CONTINUE

            6E         FC A4     A0  02BF   552 15$:	ADDW	TTY$W_RB_ORGHOR-TTY$L_RB_DATA(R4),(SP); IF BUFFER START FOUND, ASSUME INIT

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  14

X05             DELETE CHARACTER ROUTINE                                                                                        (11)



            8E   FFFFFFF8 8F     CB  02C3   553 20$:	BICL3	#^X0FFFFFFF8,(SP)+,R4	; GET MOD 8 OF CURSOR

                          54         02CA       

            54       0000'CF44   9E  02CB   554 	MOVAB	W^TTY$A_DELCRTTAB[R4],R4; ADDRESS DELETE STRING

                          38     11  02D1   555 	BRB	70$			; START THE OUTPUT

                          FF84   30  02D3   556 25$:	BSBW	DELESCAPE		; DELETE ESCAPE SEQUENCE

                          FE06   31  02D6   557 30$:	BRW	MOVEREADATA		; VECTOR TO CONTINUE

                                     02D9   558 ;

                                     02D9   559 ; NORMAL CHARACTER DELETE

                                     02D9   560 ;

                                     02D9   561 55$:	

            20            53     91  02D9   562 	CMPB	R3,#TTY$C_BLANK		; NON PRINTING CHARACTERS GET NO RUBOUT

                          F8     1F  02DC   563 	BLSSU	30$			; EXIT ROUTINE

         3C A5            0C     E1  02DE   564 	BBC	#TT$V_SCOPE,UCB$L_DEVDEPEND(R5),75$; BR IF NOT SCOPE

                          2D         02E2       

                                     02E3   565 ;

                                     02E3   566 ; IF THE CURSOR IS AT THE LEFT MARGIN AND DATA IS PRESENT,

                                     02E3   567 ; FORCE A CONTROL R IN STEAD OF A BACKSPACE.

                                     02E3   568 ;

                       FE A5     B5  02E3   569 	TSTW	UCB$W_TT_CURSOR(R5)	; CURSOR AT LEFT MARGIN?

                          14     12  02E6   570 	BNEQ	66$			; BR IF NORMAL BACKSPACE NEEDED

                                     02E8   571 ;

                                     02E8   572 ; FORCE CONTROL R FOR RUBOUT RESPONSE

                                     02E8   573 ;

                                     02E8   574 60$:	

                       6E A5     B5  02E8   575 	TSTW	UCB$W_BCNT(R5)		; DATA PRESENT?

                          E9     13  02EB   576 	BEQL	30$			; IF NO DATA THEN NO RESPONSE

         68 A5            10     C1  02ED   577 	ADDL3	#TTY$L_RB_DATA,UCB$L_SVAPTE(R5),@UCB$L_SVAPTE(R5); SET UP INITIAL POINTER

                       68 B5         02F1       

                                     02F3   578 	SET_STATE <CTRLR,NL>		;

                          FDB4   31  02F9   579 65$:	BRW	CONTROLR		; START CONTROL R OUTPUT

                                     02FC   580 ;

                                     02FC   581 ; NORMAL BACKSPACE RUBOUT RESPONSE

                                     02FC   582 ;

            53            20     9A  02FC   583 66$:	MOVZBL	#TTY$C_BLANK,R3		; ASSUME SPACE IS FIRST CHARACTER

         3A A5         FE A5     B1  02FF   584 	CMPW	UCB$W_TT_CURSOR(R5),UCB$W_DEVBUFSIZ(R5); AND EXTREME RIGHT?

                          23     13  0304   585 	BEQL	100$			; IF YES THEN ONLY OUTPUT SPACE

                                     0306   586 ;

                                     0306   587 ; DELETE IS IN MID SCREEN

                                     0306   588 ;

            54       0001'CF     9E  0306   589 	MOVAB	W^TTY$A_BACKSPACE+1,R4	; ADDRESS BACKSPACE STRING

            53            08     9A  030B   590 70$:	MOVZBL	#TTY$C_BS,R3		; START STRING WITH BACKSPACE

                          0F     11  030E   591 	BRB	90$			; START OUTPUT

            62            0D     E2  0310   592 75$:	BBSS	#TTY$V_ST_DEL,(R2),95$	; IF NOT FIRST TIME THEN OUTPUT CHARACTER

                          13         0313       

            54         18 A5     9E  0314   593 	MOVAB	UCB$W_BUFQUO(R5),R4	; ADDRESS STRING SPACE

            64            53     9B  0318   594 	MOVZBW	R3,(R4)			; AND PUT THE CHARACTERS THERE

                                     031B   595 ;

                                     031B   596 ; OUTPUT "\" TO START OR END DELETE SEQUENCE

                                     031B   597 ;

            53         5C 8F     90  031B   598 80$:	MOVB	#^A@\@,R3		; FOR FIRST TIME OUTPUT "\"

         D8 A5            54     D0  031F   599 90$:	MOVL	R4,UCB$L_TT_MULTI(R5)	; ADDRESS STRING

                                     0323   600 	SET_STATE MULTI			;

                          12     11  0327   601 95$:	BRB	FORMAT_CHAR		; START UP OUTPUT

                          006D   31  0329   602 100$:	BRW	OUTPUTANDWAIT		; VECTOR FOR SPACE ONLY RESPONSE

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  15

X05             FORMAT_CHAR - FORMAT CHARACTER FOR OUTPUT                                                                       (12)



                                     032C   604 	.SBTTL	FORMAT_CHAR - FORMAT CHARACTER FOR OUTPUT

                                     032C   605  

                                     032C   606 	.ENABL	LSB

                                     032C   607 ;++

                                     032C   608 ; FORMAT_CHAR - FIND PROPER OUTPUT FOR SPECIFIED CHARACTER

                                     032C   609 ;

                                     032C   610 ; FUNCTIONAL DESCRIPTION:

                                     032C   611 ;

                                     032C   612 ; THIS ROUTINE TRANSLATES THE SPECIFIED CHARACTER FOR OUTPUT

                                     032C   613 ; ON THE TARGET UNIT. THE OUTPUT OF THE SEQUENCE IS EITHER

                                     032C   614 ; THE ORIGIONAL CHARACTER OR A STARTUP OF THE PROPER MULTIECHO

                                     032C   615 ; STRING. CURSOR ADJUSTMENT IS ALSO DONE HERE FOR PRINTING

                                     032C   616 ; CHARACTERS AND FORM CHARACTERS. IT IS POSSIBLE FOR THE RESULT TO BE NO OUTPUT.

                                     032C   617 ;

                                     032C   618 ; SEE EACH SPECIAL CHARACTER ROUTINE FOR MORE DETAILS ON ECHOING.

                                     032C   619 ;

                                     032C   620 ; INPUTS:

                                     032C   621 ;

                                     032C   622 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     032C   623 ;	R3 = CHARACTER TO TRANSLATE

                                     032C   624 ;	R5 = UCB ADDRESS

                                     032C   625 ;

                                     032C   626 ; OUTPUTS:

                                     032C   627 ;

                                     032C   628 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     032C   629 ;	R3 = CHARACTER TO OUTPUT NEXT IF ANY

                                     032C   630 ;	R5 = UCB ADDRESS

                                     032C   631 ;--

                                     032C   632 5$:	IF_NOT_STATE <ESC_O>,OUTPUTANDWAIT; BR IF NOT OUTPUT ESC

                       FD A5     97  0332   633 	DECB	UCB$B_TT_ESC_O(R5)	; ADJUST SEQUENCE SIZE

                          62     12  0335   634 	BNEQ	OUTPUTANDWAIT		; IF NEQ THEN OK

            62            1B     E4  0337   635 	BBSC	#TTY$V_ST_ESC_O,(R2),OUTPUTANDWAIT; CLEAR STATE AND BR ALWAYS

                          5E         033A       

                                     033B   636 FORMAT_CHAR:

                                     033B   637 	IF_STATE <PASALL,ESC_O,WRTALL>,5$	; BR IF FORMAT NOT NEEDED

                                     0345   638 	CASE	W^TTY$A_TYPE[R3],LIMIT=#1@TTY$V_CH_SPEC,TYPE=B,<-		

                                     0345   639 			BSPACE,-

                                     0345   640 			TAB,-

                                     0345   641 			LINEFEED,-

                                     0345   642 			VTAB,-

                                     0345   643 			FORM,-

                                     0345   644 			CARRIAGE,-

                                     0345   645 			CTRLZ,-

                                     0345   646 			ESCAPE>

         3C A5            07     E0  035C   647 	BBS	#TT$V_LOWER,UCB$L_DEVDEPEND(R5),UPCURSOR; BR IF LOWER TERMINAL

                          0A         0360       

       0000'CF43          06     E1  0361   648 	BBC	#TTY$V_CH_LOWER,W^TTY$A_TYPE[R3],UPCURSOR; BR IF NOT LOWER CHAR

                          03         0367       

            53            20     8A  0368   649 	BICB	#^X020,R3		; CONVERT TO UPPER CASE

                                     036B   650 UPCURSOR:				; ADJUST CURSOR AND OUTPUT

            20            53     91  036B   651 	CMPB	R3,#^A/ /		; CURSOR UP?

                          29     19  036E   652 	BLSS	OUTPUTANDWAIT		; IF LSSU THEN NO

         7F 8F            53     91  0370   653 	CMPB	R3,#TTY$C_DELETE	; DELETE?

                          23     13  0374   654 	BEQL	OUTPUTANDWAIT

                                     0376   655 ;

                                     0376   656 ; NOTE THAT BECAUSE OF ACBB DOING A BLEQ IT IS NOT APPROPRIATE HERE

                                     0376   657 ;

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  16

X05             FORMAT_CHAR - FORMAT CHARACTER FOR OUTPUT                                                                       (12)



                       FE A5     B6  0376   658 	INCW	UCB$W_TT_CURSOR(R5)	; ADJUST CURSOR

            54         3A A5     3C  0379   659 	MOVZWL	UCB$W_DEVBUFSIZ(R5),R4	; GET WIDTH OF UNIT

                          15     13  037D   660 	BEQL	25$			; IF EQL THEN DON'T CARE

            54         FE A5     B1  037F   661 	CMPW	UCB$W_TT_CURSOR(R5),R4	; OVER RUN?

                          0F     1F  0383   662 	BLSSU	25$			; IF LSSU THEN NO

         3C A5            09     E0  0385   663 	BBS	#TT$V_WRAP,UCB$L_DEVDEPEND(R5),10$; BR IF WRAP ENABLED

                          07         0389       

                          08     13  038A   664 	BEQL	25$			; IF EQL THEN AT END OF LINE AND OK

                       FE A5     B7  038C   665 	DECW	UCB$W_TT_CURSOR(R5)	; SET CURSOR TO MAX AND DROP CHARACTER

                          78     11  038F   666 	BRB	DROP			;

                                     0391   667 10$:	SET_STATE	CURSOR		; SET CURSOR OVERFLOWED

                                     0394   668 25$:	CLR_STATE	<NL,SKIPLF>	; SET NOT AT NEWLINE

                                     0399   669  

                                     0399   670 	.DSABL	LSB

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  17

X05             OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR I                                                                 (13)



                                     0399   672 	.SBTTL	OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR INTERRUPT

                                     0399   673 ;++

                                     0399   674 ; OUTPUTANDWAIT - OUTPUT A CHARACTER AND WAIT INTERRUPT

                                     0399   675 ;

                                     0399   676 ; FUNCTIONAL DESCRIPTION:

                                     0399   677 ;

                                     0399   678 ; THIS ROUTINE IS USED BY THE OUTPUT INTERRUPT ROUTINES TO RETURN

                                     0399   679 ; TO THE DEVICE DEPENDENT CODE TO OUTPUT A CHARACTER. THEIR RETURN

                                     0399   680 ; CAUSES THE UNIT TO ENTER A WAIT FOR INTERRUPT STATE.

                                     0399   681 ;

                                     0399   682 ; INPUTS:

                                     0399   683 ;

                                     0399   684 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0399   685 ;	R3 = CHARACTER TO OUTPUT

                                     0399   686 ;	R5 = UCB ADDRESS

                                     0399   687 ;

                                     0399   688 ; OUTPUTS:

                                     0399   689 ;

                                     0399   690 ;	THE UNIT IS PLACED IN A WAIT FOR INTERRUPT STATE

                                     0399   691 ;

                                     0399   692 ;	R5 = UCB ADDRESS

                                     0399   693 ;--

                                     0399   694 OUTPUTANDWAIT:				; OUTPUT CHARACTER AND WAIT ENTRY

                          9E     16  0399   695 	JSB	@(SP)+			; CALL DRIVER AS CO-ROUTINE

                                     039B   696 	DSBINT				; SET TO POWER FAIL LEVEL

         58 A5            05     E5  03A1   697 	BBCC	#UCB$V_POWER,UCB$W_STS(R5),10$; BR IF NOT POWER PROBLEM

                          07         03A5       

            54         20 A5     D0  03A6   698 	MOVL	UCB$L_CRB(R5),R4	; GET ADDRESSS OF THE CRB

                       2C B4     16  03AA   699 	JSB	@CRB$L_INTD+VEC$L_TT_ILINE(R4); INIT LINE

   00000000'EF            05     C1  03AD   700 10$:	ADDL3	#5,EXE$GL_ABSTIM,UCB$L_DUETIM(R5); SET FUTURE TIMEOUT

                       5C A5         03B4       

         58 A5            03     C8  03B6   701 	BISL	#UCB$M_INT!UCB$M_TIM,UCB$W_STS(R5); ENABLE TIMER AND INTERRUPT

         58 A5       0040 8F     AA  03BA   702 	BICW	#UCB$M_TIMOUT,UCB$W_STS(R5); CLEAR TIMEOUT

                                     03C0   703 	ENBINT				; ENABLE INTERRUPTS

                                 05  03C3   704 	RSB				; AND RETURN

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  18

X05             OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR I                                                                 (14)



                                     03C4   706 	.ENABL	LSB

                                     03C4   707 ;++

                                     03C4   708 ; CURSOROVRFLOW - INSERT A NEWLINE IN THE OUTPUT STREAM

                                     03C4   709 ;

                                     03C4   710 ; FUNCTIONAL DESCRIPTION:

                                     03C4   711 ;

                                     03C4   712 ; THIS ROUTINE IS ENTERED TO INJECT A CR/LF IN THE OUTPUT

                                     03C4   713 ; STREAM REGARDLESS OF THE CURRENT STATE.

                                     03C4   714 ;

                                     03C4   715 ; INPUTS:

                                     03C4   716 ;

                                     03C4   717 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     03C4   718 ;	R5 = UCB ADDRESS

                                     03C4   719 ;

                                     03C4   720 ; OUTPUTS:

                                     03C4   721 ;

                                     03C4   722 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     03C4   723 ;	R3 = TTY$C_CR

                                     03C4   724 ;	R5 = UCB ADDRESS

                                     03C4   725 ;--

                                     03C4   726 CURSOROVRFLOW:				;

                                     03C4   727 	CLR_STATE CURSOR		; CLEAR THE CONDITION

            53            0D     9A  03C7   728 	MOVZBL	#TTY$C_CR,R3		; SET FIRST CHARACTER IS CARRIAGE RETURN

                          1A     11  03CA   729 	BRB	110$			; CONTINUE WITH CARRIAGE RETURN CODE

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  19

X05             OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR I                                                                 (15)



                                     03CC   731 ;++

                                     03CC   732 ; CARRIAGE - FORMAT FOR CARRIAGE RETURN

                                     03CC   733 ;

                                     03CC   734 ; FUNCTIONAL DESCRIPTION:

                                     03CC   735 ;

                                     03CC   736 ; THIS ROUTINE SETS UP THE PROPER FILL FOR A CARRIAGE RETURN ON

                                     03CC   737 ; THE TARGET UNIT.

                                     03CC   738 ;

                                     03CC   739 ; INPUTS:

                                     03CC   740 ;

                                     03CC   741 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     03CC   742 ;	R3 = TTY$C_CR

                                     03CC   743 ;	R5 = UCB ADDRESS

                                     03CC   744 ;

                                     03CC   745 ; OUTPUTS:

                                     03CC   746 ;

                                     03CC   747 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     03CC   748 ;	R3 = TTY$C_CR

                                     03CC   749 ;	R5 = UCB ADDRESS

                                     03CC   750 ;--

                                     03CC   751 CARRIAGE:				;

                                     03CC   752 	IF_NOT_STATE READ,115$		; IF NOT READ THEN NO SPECIAL STATES

                                     03D2   753 	IF_NOT_STATE CTRLR,110$		; 

            54         6C A5     3C  03D8   754 	MOVZWL	UCB$W_BOFF(R5),R4	; GET PROMPT SIZE

            54         68 A5     C0  03DC   755 	ADDL	UCB$L_SVAPTE(R5),R4	; CALC ADDRESS OF PROMPT END

            54         68 B5     D1  03E0   756 	CMPL	@UCB$L_SVAPTE(R5),R4	; IS THIS CR PAST END OF PROMPT?

                          0E     1F  03E4   757 	BLSSU	115$			; IF LSSU THEN NO AUTO LINE FEED

                                     03E6   758 110$:	IF_STATE	SKIPLF,115$	; IF SKIP LF ALREADY SET THEN NO LF'S

                                     03ED   759 	SET_STATE <SENDLF,SKIPLF>	; SET STATE TO FORCE LF AND SKIP NEXT REAL ONE

                                     03F4   760 ;

                                     03F4   761 ; OPTIMIZE THE CARRIAGE RETURN OUTPUT IF CURSOR IS AT 0

                                     03F4   762 ;

                       FE A5     B5  03F4   763 115$:	TSTW	UCB$W_TT_CURSOR(R5)	; CURSOR ALREADY AT 0?

                          10     13  03F7   764 	BEQL	DROP			; IF EQL THEN NO CR NEEDED

                       FE A5     B4  03F9   765 	CLRW	UCB$W_TT_CURSOR(R5)	; RESET HORIZON

         F8 A5         F9 A5     90  03FC   766 	MOVB	UCB$B_TT_CRFILL(R5),UCB$B_TT_FILL(R5); SET UP FILL

                          03     13  0401   767 	BEQL	120$			; IF EQL THEN OUTPUT

                                     0403   768 	SET_STATE FILL			; OTHERWISE OUTPUT

                          FF90   31  0406   769 120$:	BRW	OUTPUTANDWAIT

                          FBF8   31  0409   770 DROP:	BRW	GETNEXTCHAR		; CONTINUE IN NEXT LOGICAL STATE

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  20

X05             OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR I                                                                 (16)



                                     040C   772 ;++

                                     040C   773 ; SENDLINEFEED - INSERT LINE FEED IN OUTPUT STREAM

                                     040C   774 ;

                                     040C   775 ; FUNCTIONAL DESCRIPTION:

                                     040C   776 ;

                                     040C   777 ; THIS ROUTINE IS USED TO INSERT A LINE FEED IN THE OUTPUT STREAM.

                                     040C   778 ;

                                     040C   779 ; INPUTS:

                                     040C   780 ;

                                     040C   781 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     040C   782 ;	R5 = UCB ADDRESS

                                     040C   783 ;

                                     040C   784 ; OUTPUTS:

                                     040C   785 ;

                                     040C   786 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     040C   787 ;	R3 = TTY$C_LF

                                     040C   788 ;	R5 = UCB ADDRESS

                                     040C   789 ;--

                                     040C   790 SENDLINEFEED:				; SEND OUT A LINE FEED

                                     040C   791 	CLR_STATE SENDLF		; CLEAR CONDITION

            53            0A     9A  040F   792 	MOVZBL	#TTY$C_LF,R3		; SET TO OUTPUT LINE FEED

                          04     11  0412   793 	BRB	200$			; CONTINUE IN LINE FEED CODE

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  21

X05             OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR I                                                                 (17)



                                     0414   795 ;++

                                     0414   796 ; LINEFEED - FORMAT LINE FEED FOR TARGET UNIT

                                     0414   797 ;

                                     0414   798 ; FUNCTIONAL DESCRIPTION:

                                     0414   799 ;

                                     0414   800 ; THIS ROUTINE SETS UP THE PROPER FILL FOR A LINE FEED ON THE TARGET

                                     0414   801 ; UNIT AND ADJUSTS THE CURSOR AND VERTICLE LINE COUNT.

                                     0414   802 ;

                                     0414   803 ; INPUTS:

                                     0414   804 ;

                                     0414   805 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0414   806 ;	R3 = TTY$C_LF

                                     0414   807 ;	R5 = UCB ADDRESS

                                     0414   808 ;

                                     0414   809 ; OUTPUTS:

                                     0414   810 ;

                                     0414   811 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0414   812 ;	R3 = TTY$C_LF

                                     0414   813 ;	R5 = UCB ADDRESS

                                     0414   814 ;--

                                     0414   815 LINEFEED:

            62            17     E4  0414   816 	BBSC	#TTY$V_ST_SKIPLF,(R2),DROP; SKIP AND SET OFF SKIP CONDITION

                          F1         0417       

                                     0418   817 ;

                                     0418   818 ; NOTE THAT BECAUSE OF ACBB'S SIGNED BRANCH IT IS NOT APPROPRIATE HERE.

                                     0418   819 ;

                       FE A5     B5  0418   820 200$:	TSTW	UCB$W_TT_CURSOR(R5)	; LINE FEED AT CURSOR 0 IS NEWLINE

                          04     12  041B   821 	BNEQ	210$			; IF NEQ THEN NO NL POSSIBLE

                                     041D   822 	SET_STATE NL			; SET NEW LINE

                       F1 A5     96  0421   823 210$:	INCB	UCB$B_TT_LINE(R5)	; ADJUST VERTICLE COUNT

         3F A5         F1 A5     91  0424   824 	CMPB	UCB$B_TT_LINE(R5),UCB$L_DEVDEPEND+3(R5);

                          03     1F  0429   825 	BLSSU	215$			; IF LSSU THEN NO PAGE CROSS

                       F1 A5     94  042B   826 	CLRB	UCB$B_TT_LINE(R5)	; RESET VERTICLE POSITION IF PAGE CROSS

                                     042E   827 215$:	IF_NOT_STATE WRITE,220$		; BR IF NOT WRITE

            54         4C A5     D0  0434   828 	MOVL	UCB$L_IRP(R5),R4	; ADDRESS CURRENT PACKET

                       34 A4     B6  0438   829 	INCW	IRP$L_MEDIA(R4)		; COUNT LINE

         F8 A5         FA A5     90  043B   830 220$:	MOVB	UCB$B_TT_LFFILL(R5),UCB$B_TT_FILL(R5); INSERT TO CAUSE FILL

                          03     13  0440   831 	BEQL	225$			; OUTPUT IF NO FILL NEEDED

                                     0442   832 	SET_STATE FILL			; OUTPUT FILL CHARACTERS

                          FF51   31  0445   833 225$:	BRW	OUTPUTANDWAIT

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  22

X05             OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR I                                                                 (18)



                                     0448   835 ;++

                                     0448   836 ; ESCAPE - FORMAT A ESCAPE BASED ON OPERATION AND TARGET UNIT

                                     0448   837 ;

                                     0448   838 ; FUNCTIONAL DESCRIPTION:

                                     0448   839 ;

                                     0448   840 ; THIS ROUTINE FORMATS ESCAPES.

                                     0448   841 ;

                                     0448   842 ; READ OPERATION:

                                     0448   843 ;

                                     0448   844 ;	A "$" IS ECHOED IF THE ESCAPE IS A TERMINATOR.

                                     0448   845 ;

                                     0448   846 ; WRITE OPERATION:

                                     0448   847 ;

                                     0448   848 ;	THE ESCAPE IS OUTPUT. ON TERMINALS WITH THE CHARACTERISTIC TT$M_ESCAPE,

                                     0448   849 ;	THE REMAINDER OF THE SEQUENCE IS CHECKED FOR EFFECT ON THE CURSOR

                                     0448   850 ;	POSITION.

                                     0448   851 ;

                                     0448   852 ; INPUTS:

                                     0448   853 ;

                                     0448   854 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0448   855 ;	R3 = ESCAPE

                                     0448   856 ;	R5 = UCB ADDRESS

                                     0448   857 ;

                                     0448   858 ; OUTPUTS:

                                     0448   859 ;

                                     0448   860 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0448   861 ;	R3 = ESCAPE OR "$"

                                     0448   862 ;	R5 = UCB ADDRESS

                                     0448   863 ;--

                                     0448   864 ESCAPE:					; OUTPUT ESCAPE STRING

                                     0448   865 	IF_NOT_STATE EOL,250$		; ALSO IF NOT TERMINATOR

            53            24     9A  044E   866 	MOVZBL	#TTY$C_DOLLAR,R3	; OTHERWISE ECHO DOLLAR SIGN

                          FF17   31  0451   867 	BRW	UPCURSOR		; ADJUST CURSOR AND OUTPUT

                                     0454   868 ;

                                     0454   869 ; OUTPUT ESCAPE ON WRITE OR CONTROL R

                                     0454   870 ;

         3C A5            03     E0  0454   871 250$:	BBS	#TT$V_ESCAPE,UCB$L_DEVDEPEND(R5),255$; BR IF ESCAPE TERMINAL

                          0E         0458       

         39 A5         40 8F     91  0459   872 	CMPB	#TT$_VT5X,UCB$B_DEVTYPE(R5); VT5X TERMINAL?

                          73     1A  045E   873 	BGTRU	300$			; IF GTRU THEN NO

         39 A5         60 8F     91  0460   874 	CMPB	#TT$_VT5X+32,UCB$B_DEVTYPE(R5);

                          6C     1B  0465   875 	BLEQU	300$			; IF LEQU THEN NO

            54         68 A5     D0  0467   876 255$:	MOVL	UCB$L_SVAPTE(R5),R4	; ADDRESS WRITE BUFFER OR READ BUFFER

            7E            50     7D  046B   877 	MOVQ	R0,-(SP)		; SAVE REGISTERS

            7E            53     D0  046E   878 	MOVL	R3,-(SP)		;

                       CD'AF     9F  0471   879 	PUSHAB	B^290$			; SET UP RETURN

                                     0474   880 	IF_NOT_STATE READ,260$		; IF NOT READ THEN WRITE

                                     047A   881 	IF_NOT_STATE CTRLR,280$		; IF NOT CTRLR THEN CAN'T DO

         6E A5         6C A5     A1  0480   882 	ADDW3	UCB$W_BOFF(R5),UCB$W_BCNT(R5),R3; GET OFFSET IN BLOCK TO DATA END

                          53         0485       

            53            53     3C  0486   883 	MOVZWL	R3,R3			; CLEAR UPPER WORD

            53            54     C0  0489   884 	ADDL	R4,R3			;

            53            64     C2  048C   885 	SUBL	TTY$L_RB_NXT(R4),R3	; CALC SIZE

                          0B     11  048F   886 	BRB	270$			; CONTINUE IN COMMON

                                     0491   887 260$:	IF_NOT_STATE	WRITE,280$	; BR IF NOT IN WRITE EITHER

         04 A4            64     C3  0497   888 	SUBL3	TTY$L_WB_NXT(R4),TTY$L_WB_END(R4),R3; GET REMAINING STRING SIZE

                          53         049B       

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  23

X05             OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR I                                                                 (18)



                          2E     13  049C   889 270$:	BEQL	280$			; IF EQL THEN NO SEQUENCE

            50       0000'CF     9A  049E   890 	MOVZBL	W^TTY$A_ESC_OUT,R0	; GET THE SIZE

            50         00 B4     3A  04A3   891 	LOCC	@TTY$L_WB_NXT(R4),R0,W^TTY$A_ESC_OUT+1; FIND CHARACTER

                     0001'CF         04A7       

                                     04AA   892 ;

                                     04AA   893 ; ENTER ACTION ROUTINE BASED ON POSITION IN TABLE

                                     04AA   894 ;

                                     04AA   895 ; ACTION ROUTINES ARE BELOW

                                     04AA   896 ;

                                     04AA   897 	CASE	TYPE=B,LIMIT=#1,R0,<-

                                     04AA   898 		ESC_SING,ESC_SING,ESC_SING,ESC_SING,- ; ESCAPE F,G,K,Z

                                     04AA   899 		ESC_SING,ESC_SING,ESC_SING,ESC_SING,- ; ESCAPE >,=,\,[

                                     04AA   900 		ESC_Y,-			; ESC Y

                                     04AA   901 		ESC_I,-			; ESC I

                                     04AA   902 		ESC_H,-			; ESC H

                                     04AA   903 		ESC_D,-			; ESC D

                                     04AA   904 		ESC_C,-			; ESC C

                                     04AA   905 		ESC_B,-			; ESC B

                                     04AA   906 		ESC_A,-			; ESC A

                                     04AA   907 		>

                                 05  04CC   908 280$:	RSB

            53            8E     D0  04CD   909 290$:	MOVL	(SP)+,R3

            50            8E     7D  04D0   910 	MOVQ	(SP)+,R0

                          FEC3   31  04D3   911 300$:	BRW	OUTPUTANDWAIT		; OUTPUT THE CHARACTER

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  24

X05             OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR I                                                                 (19)



                                     04D6   913 ;++

                                     04D6   914 ; CTRLZ - OUTPUT A CONTROL Z BASED ON THE OPERATION

                                     04D6   915 ;

                                     04D6   916 ; FUNCTIONAL DESCRIPTION:

                                     04D6   917 ;

                                     04D6   918 ; IF THE CURRENT OPERATION IS A READ AND THE ^Z IS A TERMINATOR THE ECHO ^Z.

                                     04D6   919 ;

                                     04D6   920 ; INPUTS:

                                     04D6   921 ;

                                     04D6   922 ; 	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     04D6   923 ;	R3 = CONTROL Z

                                     04D6   924 ;	R5 = UCB ADDRESS

                                     04D6   925 ;

                                     04D6   926 ; OUTPUTS:

                                     04D6   927 ;

                                     04D6   928 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     04D6   929 ;	R3 = CONTROL Z

                                     04D6   930 ;	R4 = ADDRESS OF THE MULTIECHO STRING FOR CONTROL Z IF APPROP.

                                     04D6   931 ;	R5 = UCB ADDRESS

                                     04D6   932 ;--

                                     04D6   933 CTRLZ:					; CONTROL Z

                                     04D6   934 	IF_NOT_STATE READ,300$		; OUTPUT 26(8) IF NOT READ

                                     04DC   935 	IF_NOT_STATE EOL,300$		; ^Z IF TERMINATOR

            54       0000'CF     9E  04E2   936 	MOVAB	W^TTY$A_CTRLZ,R4	; ADDRESS MULTIECHO STRING

                          6E     11  04E7   937 	BRB	STRTMULTI		; START OUTPUT

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  25

X05             OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR I                                                                 (20)



                                     04E9   939 ;++

                                     04E9   940 ; BACKSPACE - OUTPUT A BACKSPACE

                                     04E9   941 ;

                                     04E9   942 ; FUNCTIONAL DESCRI@PTION:

                                     04E9   943 ;

                                     04E9   944 ; THIS ROUTINE OUTPUTS A BACKSPACE ON  A TERMINAL.

                                     04E9   945 ; SEVERAL CONDITIONS EXIST:

                                     04E9   946 ;

                                     04E9   947 ; MULTIPLE ECHO IS PROGRESS --

                                     04E9   948 ;

                                     04E9   949 ;		DECREMENT THE CURSOR AND CONTINUE.

                                     04E9   950 ;

                                     04E9   951 ; HORIZON = 0 -- DO NOTHING.

                                     04E9   952 ;

                                     04E9   953 ; READ IN PROGRESS AND NO DATA -- DO NOTHING.

                                     04E9   954 ;

                                     04E9   955 ; READ IN PROGRESS AND DATA -- OUTPUT A BS/SPACE/BS STRING.

                                     04E9   956 ;

                                     04E9   957 ; WRITE IN PROGRESS -- OUTPUT BS.

                                     04E9   958 ;

                                     04E9   959 ; INPUTS:

                                     04E9   960 ;

                                     04E9   961 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     04E9   962 ;	R3 = TTY$C_BS

                                     04E9   963 ;	R5 = UCB ADDRESS

                                     04E9   964 ;

                                     04E9   965 ; OUTPUTS:

                                     04E9   966 ;

                                     04E9   967 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     04E9   968 ;	R3 = TTY$C_BS

                                     04E9   969 ;	R4 = ADDRESS OF THE BS/SPACE/BS STRING IF APPROP.

                                     04E9   970 ;	R5 = UCB ADDRESS

                                     04E9   971 ;--

                                     04E9   972 BSPACE:					; BACKSPACE

                                     04E9   973 	IF_STATE MULTI,430$		; IF MULTI STATE THE OUTPUT

                                     04EF   974 ;

                                     04EF   975 ; IF THE HORIZON IS ZERO THEN NOOP

                                     04EF   976 ;

                       FE A5     B5  04EF   977 	TSTW	UCB$W_TT_CURSOR(R5)	; ANY CHARACTERS?

                          17     13  04F2   978 	BEQL	435$			; IF EQL THEN NO

                                     04F4   979 ;

                                     04F4   980 ; IF NOT IN READ THEN OUTPUT DIRECTLY

                                     04F4   981 ;

                                     04F4   982 	IF_NOT_STATE READ,430$		;

                                     04FA   983 ;

                                     04FA   984 ; IF IN READ THEN ECHO BS/SPACE/BS IF ANY PRESENT DATA

                                     04FA   985 ;

                       6E A5     B5  04FA   986 	TSTW	UCB$W_BCNT(R5)		; ANY DATA YET?

                          0C     13  04FD   987 	BEQL	435$			; IF EQL THEN NO OUTPUT

         D8 A5       0001'CF     9E  04FF   988 	MOVAB	W^TTY$A_BACKSPACE+1,UCB$L_TT_MULTI(R5); ADDRESS MULTIECHO STRING

                                     0505   989 ;

                                     0505   990 ; WRITE OF A BACKSPACE

                                     0505   991 ;

                       FE A5     B7  0505   992 430$:	DECW	UCB$W_TT_CURSOR(R5)	; ADJUST HORIZON

                          FE8E   31  0508   993 	BRW	OUTPUTANDWAIT		; OUTPUT THE CHARACTER

                          FAF6   31  050B   994 435$:	BRW	GETNEXTCHAR		; CONTINUE

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  26

X05             OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR I                                                                 (21)



                                     050E   996 ;++

                                     050E   997 ; VTAB - OUTPUT A VERTICLE TAB

                                     050E   998 ; FORM - OUTPUT A FORM FEED

                                     050E   999 ;

                                     050E  1000 ; FUNCTIONAL DESCRIPTION:

                                     050E  1001 ;

                                     050E  1002 ; THIS ROUTINE SETS UP THE PROPER OUTPUT STRING FOR A VTAB OF FORM FEED

                                     050E  1003 ; ON THE TARGET UNIT.  VTAB TRANSLATES TO 4 LINE FEEDS. AND FORM FEED

                                     050E  1004 ; TO MULTIPLE LINE FEEDS BASED ON THE PRESENCE OF MECHANICAL HELP

                                     050E  1005 ; AND THE CURRENT VERTICLE LINE POSITION. TO AVOID THE NECESSITY

                                     050E  1006 ; FOR A LARGE NUMBER OF LF DATA BYTES THE FORM FEED CAUSES A MULTI

                                     050E  1007 ; ECHO STRING OF 4 LINE FEEDS FOLLOWED BY ANOTHER FORM FEED TO BE

                                     050E  1008 ; OUTPUT UNTIL A PAGE CROSS TAKES PLACE.

                                     050E  1009 ;

                                     050E  1010 ; INPUTS:

                                     050E  1011 ;

                                     050E  1012 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     050E  1013 ;	R3 = C_VTAB OR C_FF

                                     050E  1014 ;	R5 = UCB ADDRESS

                                     050E  1015 ;

                                     050E  1016 ; OUTPUTS:

                                     050E  1017 ;

                                     050E  1018 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     050E  1019 ;	R5 = UCB ADDRESS

                                     050E  1020 ;--

            54       0000'CF     9E  050E  1021 VTAB:	MOVAB	W^TTY$A_VTAB,R4		; SET UP OUTPUT

                          42     11  0513  1022 	BRB	STRTMULTI		; START MULTIPLE OUTPUT

                                     0515  1023 ;

                                     0515  1024 ; FORM FEED

                                     0515  1025 ;

                          54     D4  0515  1026 FORM:	CLRL	R4			; CLEAR A REGISTER

         3F A5         F1 A5     83  0517  1027 	SUBB3	UCB$B_TT_LINE(R5),UCB$L_DEVDEPEND+3(R5),R4; GET NUMBER TO END OF PAGE

                          54         051C       

            04            54     91  051D  1028 	CMPB	R4,#4			; OUTPUT THE LF'S IN GROUPS OF 8

                          0C     1A  0520  1029 	BGTRU	520$			; IF GTRU THEN MORE THAN 4 TO OUTPUT

            04            54     C3  0522  1030 510$:	SUBL3	R4,#4,R4		; ADJUST FOR OFFSET FROM 4

                          54         0525       

            54       0000'CF44   9E  0526  1031 	MOVAB	W^TTY$A_VTAB[R4],R4	; GET THE ADDRESS OF THE STRING

                          29     11  052C  1032 	BRB	STRTMULTI		; START OUTPUT

            54       0000'CF     9E  052E  1033 520$:	MOVAB	W^TTY$A_LONGFORM,R4	; GET ADDRESS TO STRING

                          22     11  0533  1034 	BRB	STRTMULTI		;

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  27

X05             OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR I                                                                 (22)



                                     0535  1036 ;++

                                     0535  1037 ; TAB - OUTPUT A TAB ON THE TARGET TERMINAL BASED ON CURSOR POSITION

                                     0535  1038 ;

                                     0535  1039 ; FUNCTIONAL DESCRIPTION:

                                     0535  1040 ;

                                     0535  1041 ; THIS ROUTINE IS ENTERED TO OUTPUT A TAB ON THE TARGET UNIT.

                                     0535  1042 ; IF THE TERMINAL HAS MECHANICAL TAB THEN THE TAB GOES DIRECT.

                                     0535  1043 ; OTHERWISE, THE CURSOR POSITION IS USED TO CALC. HOW MANY BLANKS

                                     0535  1044 ; TO OUTPUT TO MOVE THE CURSOR TO THE NEXT TAB STOP.

                                     0535  1045 ;

                                     0535  1046 ; INPUTS:

                                     0535  1047 ;

                                     0535  1048 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0535  1049 ;	R3 = TTY$C_TAB

                                     0535  1050 ;	R5 = UCB ADDRESS

                                     0535  1051 ;

                                     0535  1052 ; OUTPUTS:

                                     0535  1053 ;

                                     0535  1054 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0535  1055 ;	R3 = TTY$C_TAB

                                     0535  1056 ;	R4 = ADDRESS OF TAB MULTIECHO STRING IF APPROP.

                                     0535  1057 ;	R5 = UCB ADDRESS

                                     0535  1058 ;--

            03            00     EF  0535  1059 TAB:	EXTZV	#0,#3,UCB$W_TT_CURSOR(R5),R4; GET HORIZON POINTER

            54         FE A5         0538       

         3C A5            08     E0  053B  1060 	BBS	#TT$V_MECHTAB,UCB$L_DEVDEPEND(R5),530$; OUTPUT IF MECHANICAL HELP

                          08         053F       

            54       0000'CF44   9E  0540  1061 	MOVAB	W^TTY$A_TAB[R4],R4	; ADDRESS STRING TO OUTPUT

                          0F     11  0546  1062 	BRB	STRTMULTI		; START MULTIPLE OUTPUT

                                     0548  1063 ;

                                     0548  1064 ; MECHANICAL TAB TERMINAL

                                     0548  1065 ;

                                     0548  1066 ; THIS ROUTINE ASSUMES THAT THE TABS ARE SET ON 8'S

                                     0548  1067 ;

         FE A5            54     AA  0548  1068 530$:	BICW	R4,UCB$W_TT_CURSOR(R5)	; SETUP CURSOR STOP ON 8

         FE A5            08     A0  054C  1069 	ADDW	#8,UCB$W_TT_CURSOR(R5)	;

                                     0550  1070 	CLR_STATE NL

                          FE42   31  0554  1071 	BRW	OUTPUTANDWAIT		;

                                     0557  1072  

                                     0557  1073 	.DSABL	LSB

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  28

X05             OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR I                                                                 (23)



                                     0557  1075 ;++

                                     0557  1076 ; STRTMULTI - START MULTIECHO ON UNIT

                                     0557  1077 ;

                                     0557  1078 ; FUNCTIONAL DESCRIPTION:

                                     0557  1079 ;

                                     0557  1080 ; THIS ROUTINE STARTS A SPECIFIED MULTIECHO STRING OUT ON A UNIT.

                                     0557  1081 ; THE FIRST CHARACTER IS PICKED OUT AND THE ADDRESS OF THE REMAINDER

                                     0557  1082 ; IS PLACED IN UCB$L_MULTIECHO FOLLOWED BY THE SETTING OF THE MULTIECHO

                                     0557  1083 ; IN PROGRESS STATE.

                                     0557  1084 ;

                                     0557  1085 ; INPUTS:

                                     0557  1086 ;

                                     0557  1087 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0557  1088 ;	R4 = ADDRESS OF THE MULTIECHO STRING

                                     0557  1089 ;	R5 = UCB ADDRESS

                                     0557  1090 ;

                                     0557  1091 ; OUTPUTS:

                                     0557  1092 ;

                                     0557  1093 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0557  1094 ;	R3 = FIRST CHARACTER

                                     0557  1095 ;	R5 = UCB ADDRESS

                                     0557  1096 ;--

                                     0557  1097 STRTMULTI:

                                     0557  1098 	SET_STATE MULTI			; SET THE STATE

         D8 A5            54     D0  055B  1099 	MOVL	R4,UCB$L_TT_MULTI(R5)	; INSERT ADDRESS TO REMAINDER

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  29

X05             OUTPUTANDWAIT - OUTPUT CHARACTER AND WAIT FOR I                                                                 (24)



                                     055F  1101 ;++

                                     055F  1102 ; MULTIECHOING - CONTINUE MULTIECHO STRING OUTPUT

                                     055F  1103 ;

                                     055F  1104 ; FUNCTIONAL DESCRIPTION:

                                     055F  1105 ;

                                     055F  1106 ; THIS ROUTINE IS ENTERED WHEN TTY$V_ST_MULTI IS SET. THE NEXT

                                     055F  1107 ; CHARACTER IN THE STRING ADDRESSED BY UCB$L_MULTIECHO IS OUTPUT.

                                     055F  1108 ; IF THE NEXT CHARACTER IS ZERO THEN THE STRING OUTPUT IS COMPLETE

                                     055F  1109 ; AND THE MULTIECHO CONDITION IS RESET FOLLOWED BY A RETURN TO

                                     055F  1110 ; THE OUTPUT STATE ANALYSIS ROUTINE IN GETNEXTCHAR.

                                     055F  1111 ;

                                     055F  1112 ; INPUTS:

                                     055F  1113 ;

                                     055F  1114 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     055F  1115 ;	R5 = UCB ADDRESS

                                     055F  1116 ;

                                     055F  1117 ; OUTPUTS:

                                     055F  1118 ;

                                     055F  1119 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     055F  1120 ;	R3 = CHARACTER TO OUTPUT ( FALL THROUGH TO ECHOFORMAT )

                                     055F  1121 ;	R5 = UCB ADDRESS

                                     055F  1122 ;--

                                     055F  1123 MULTIECHOING:				; CONTINUE STRING MULTI ECHO

            53         D8 B5     9A  055F  1124 	MOVZBL	@UCB$L_TT_MULTI(R5),R3	; GET NEXT MULTI ECHO CHARACTER

                          07     12  0563  1125 	BNEQ	10$			; IF NEQ THEN CONTINUE

                                     0565  1126 	CLR_STATE MULTI			; RESET STATE

                          FA98   31  0569  1127 	BRW	GETNEXTCHAR		; CONTINUE

                       D8 A5     D6  056C  1128 10$:	INCL	UCB$L_TT_MULTI(R5)	; ADJUST POINTER

                          FDC9   31  056F  1129 	BRW	FORMAT_CHAR		;

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  30

X05             ESCAPE SEQUENCE ACTION ROUTINES                                                                                 (25)



                                     0572  1131 	.SBTTL	ESCAPE SEQUENCE ACTION ROUTINES

                                     0572  1132 ;++

                                     0572  1133 ; ESCAPE SEQUENCE ACTION ROUTINES

                                     0572  1134 ;

                                     0572  1135 ; THESE ROUTINES ARE ENTERED ON ESCAPE SEQUENCE OUTPUT.

                                     0572  1136 ;

                                     0572  1137 ; INPUTS:

                                     0572  1138 ;

                                     0572  1139 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     0572  1140 ;	R3 = SIZE OF REMIANING OUTPUT

                                     0572  1141 ;	R4 = ADDRESS OF THE OUTPUT BUFFER BLOCK

                                     0572  1142 ;	R5 = UCB ADDRESS

                                     0572  1143 ;

                                     0572  1144 ; OUTPUTS:

                                     0572  1145 ;

                                     0572  1146 ;	R5 = UCB ADDRESS

                                     0572  1147 ;

                                     0572  1148 ; R0,R1,R3 ARE AVAILABLE FOR USE

                                     0572  1149 ;

                                     0572  1150 ;--

                                     0572  1151 ESC_I:					; CURSOR UP

                       F1 A5     95  0572  1152 ESC_A:	TSTB	UCB$B_TT_LINE(R5)	; TOP OF SCREEN?

                          2D     13  0575  1153 	BEQL	ESC_SING		; IF EQL THEN YES

                       F1 A5     97  0577  1154 	DECB	UCB$B_TT_LINE(R5)	; MOVE CURSOR UP

                          28     11  057A  1155 	BRB	ESC_SING

                                     057C  1156 ESC_B:					; MOVE CURSOR DOWN

         3F A5         F1 A5     91  057C  1157 	CMPB	UCB$B_TT_LINE(R5),UCB$L_DEVDEPEND+3(R5); AT BOTTOM?

                          21     1E  0581  1158 	BGEQU	ESC_SING		; IF GEQU THEN YES

                       F1 A5     96  0583  1159 	INCB	UCB$B_TT_LINE(R5)	; MOVE CURSOR DOWN

                          1C     11  0586  1160 	BRB	ESC_SING

                                     0588  1161 ESC_C:					; MOVE CURSOR RIGHT

         3A A5         FE A5     B1  0588  1162 	CMPW	UCB$W_TT_CURSOR(R5),UCB$W_DEVBUFSIZ(R5); AT RIGHT?

                          15     1E  058D  1163 	BGEQU	ESC_SING		; IF GEQU THEN YES

                       FE A5     B6  058F  1164 	INCW	UCB$W_TT_CURSOR(R5)	; MOVE RIGHT

                          10     11  0592  1165 	BRB	ESC_SING

                                     0594  1166 ESC_D:					; MOVE CURSOR LEFT

                       FE A5     B5  0594  1167 	TSTW	UCB$W_TT_CURSOR(R5)	; AT LEFT?

                          0B     13  0597  1168 	BEQL	ESC_SING		; IF EQL THEN YES

                       FE A5     B7  0599  1169 	DECW	UCB$W_TT_CURSOR(R5)	; ADJUST

                          06     11  059C  1170 	BRB	ESC_SING

                                     059E  1171 ESC_H:					; HOME

                       FE A5     94  059E  1172 	CLRB	UCB$W_TT_CURSOR(R5)	;

                       F1 A5     94  05A1  1173 	CLRB	UCB$B_TT_LINE(R5)	;

                                     05A4  1174 ESC_SING:				; SET STATE FOR NO FORMAT

                                     05A4  1175 	SET_STATE ESC_O			; SET THE STATE

         FD A5            01     90  05A8  1176 	MOVB	#1,UCB$B_TT_ESC_O(R5)	;

                                 05  05AC  1177 	RSB

                                     05AD  1178 ESC_Y:					; DIRECT CURSOR ADDRESS

            53            03     D1  05AD  1179 	CMPL	#3,R3			; ENTIRE SEQUENCE PRESENT?

                          2E     1A  05B0  1180 	BGTRU	20$			; IF GTRU THEN NO

                                     05B2  1181 	SET_STATE ESC_O

         FD A5            03     90  05B6  1182 	MOVB	#3,UCB$B_TT_ESC_O(R5)	; SET SIZE OF SEQUENCE

            64            01     C1  05BA  1183 	ADDL3	#1,TTY$L_WB_NXT(R4),R4	; GET ADDRESS OF LINE POS

                          54         05BD       

            84            20     83  05BE  1184 	SUBB3	#^A/ /,(R4)+,R3		; GET VALUE

                          53         05C1       

         3F A5            53     91  05C2  1185 	CMPB	R3,UCB$L_DEVDEPEND+3(R5); IN RANGE?

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  31

X05             ESCAPE SEQUENCE ACTION ROUTINES                                                                                 (25)



                          04     1A  05C6  1186 	BGTRU	10$			; IF GTRU THEN NO CHANGE (NOT VT50)

         F1 A5            53     90  05C8  1187 	MOVB	R3,UCB$B_TT_LINE(R5)	; SET LINE 

            64            20     83  05CC  1188 10$:	SUBB3	#^A/ /,(R4),R3		; GET VALUE

                          53         05CF       

         FE A5            53     9B  05D0  1189 	MOVZBW	R3,UCB$W_TT_CURSOR(R5)	; SET NEW CURSOR

         3A A5         FE A5     B1  05D4  1190 	CMPW	UCB$W_TT_CURSOR(R5),UCB$W_DEVBUFSIZ(R5); IN RANGE?

                          05     1B  05D9  1191 	BLEQU	20$			; IF LEQU THEN CORRECT

         FE A5         3A A5     B0  05DB  1192 	MOVW	UCB$W_DEVBUFSIZ(R5),UCB$W_TT_CURSOR(R5); SET MAX

                                 05  05E0  1193 20$:	RSB

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  32

X05             ESCAPE SEQUENCE ACTION ROUTINES                                                                                 (27)



                                     05E1  1196 ;++

                                     05E1  1197 ; BRDCST - CONTINUE IN PROGRESS BROADCAST 

                                     05E1  1198 ;

                                     05E1  1199 ; FUNCTIONAL DESCRIPTION:

                                     05E1  1200 ;

                                     05E1  1201 ; THIS ROUTINE IS ENTERED WHEN THE BROADCAST STATE IS SET TO RETURN THE NEXT

                                     05E1  1202 ; CHARACTER IN THE BROADCAST MESSAGE. IF THE BROADCAST MESSAGE IS DONE THE NEXT

                                     05E1  1203 ; APPROPRIATE BROADCAST MESSAGE IS BEGUN. IF NO MORE BROADCASTS EXIST, THEN NORMAL

                                     05E1  1204 ; PROCESSING IS RESTORED.

                                     05E1  1205 ;

                                     05E1  1206 ; INPUTS:

                                     05E1  1207 ;

                                     05E1  1208 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     05E1  1209 ;	R5 = UCB ADDRESS

                                     05E1  1210 ;

                                     05E1  1211 ; OUTPUTS:

                                     05E1  1212 ;

                                     05E1  1213 ;	R2,R5 ARE PRESERVED.

                                     05E1  1214 ;--

                                     05E1  1215 BRDCST:					; CONTINUE BROADCAST

            54         E4 A5     D0  05E1  1216 	MOVL	UCB$L_TT_BRDCST(R5),R4	; GET ADDRESS OF THE CURRENT BLOCK

            53         FC A5     9A  05E5  1217 	MOVZBL	UCB$B_TT_BRDPT(R5),R3	; GET MESSAGE OFFSET

         15 A4            53     91  05E9  1218 	CMPB	R3,TTY$B_BD_CNT(R4)	; DONE?

                          22     1A  05ED  1219 	BGTRU	20$			; IF GTRU THEN DONE

                          0B     13  05EF  1220 	BEQL	10$			; IF EQL THEN  RESET MODE

            53         18 A443   9A  05F1  1221 	MOVZBL	TTY$L_BD_DATA(R4)[R3],R3; GET THE NEXT CHARACTER

                       FC A5     96  05F6  1222 	INCB	UCB$B_TT_BRDPT(R5)	; ADJUST POINTER

                          FD3F   31  05F9  1223 	BRW	FORMAT_CHAR		; OUTPUT THE CHARACTER

         3C A5            0E     E1  05FC  1224 10$:	BBC	#TT$V_HOLDSCREEN,UCB$L_DEVDEPEND(R5),20$; IF NOT HOLD SCREEN THEN CONTINUE

                          10         0600       

                       FC A5     96  0601  1225 	INCB	UCB$B_TT_BRDPT(R5)	; RESET FOR NEXT CHECK

         D8 A5       0000'CF     9E  0604  1226 	MOVAB	W^TTY$A_HLDSCREEN,UCB$L_TT_MULTI(R5); SET UP NEW HOLD SCREEN

                                     060A  1227 	SET_STATE MULTI			; SET MULTI OUTPUT STATE

                          FF46   31  060E  1228 	BRW	STRTMULTI		; CONTINUE

                                     0611  1229 ;

                                     0611  1230 ; COMPLETE THIS MESSAGE 

                                     0611  1231 ;

                          007B   30  0611  1232 20$:	BSBW	COMPLETE_BRDCST

            53   00000000'EF     9E  0614  1233 	MOVAB	IOC$GQ_BRDCST,R3	; ADDRESS BROADCAST LIST HEAD

            54            64     D0  061B  1234 70$:	MOVL	(R4),R4			; LINK TO NEXT

            54            53     D1  061E  1235 75$:	CMPL	R3,R4			; AT LIST HEAD?

                          1D     13  0621  1236 	BEQL	120$			; IF EQL THEN YES

                                     0623  1237 	CASE	TYPE=B,TTY$B_BD_WHO(R4),<80$,85$,90$>

         10 A4            55     D1  062E  1238 80$:	CMPL	R5,TTY$L_BD_UCB(R4)	; THIS UNIT?

                          E7     12  0632  1239 	BNEQ	70$			; CONTINUE IN NEQ

                          05     11  0634  1240 	BRB	90$			; START THIS BROADCAST

                       50 A5     B5  0636  1241 85$:	TSTW	UCB$W_REFC(R5)		; IN USE?

                          E0     13  0639  1242 	BEQL	70$			; IF EQL THEN NO

                          6C     10  063B  1243 90$:	BSBB	TTY$STRT_BRDCST		; SET UP THE BROADCAST

                          F9C4   31  063D  1244 	BRW	GETNEXTCHAR		; AND BEGIN AGAIN

                                     0640  1245 ;

                                     0640  1246 ; NO MORE BROADCASTS

                                     0640  1247 ;

                                     0640  1248 120$:	IF_NOT_STATE READ,130$		; BR IF READ NOT IN PROGRESS

                                     0646  1249 	IF_STATE <PASALL,NOECHO>,160$	; CONTINUE IF PASSALL OR NOECHO

         D8 A5       0002'CF     9E  064D  1250 	MOVAB	W^TTY$A_CTRLU+2,UCB$L_TT_MULTI(R5); SET MULTIPLE STATE

                                     0653  1251 	SET_STATE <CTRLR,MULTI>

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  33

X05             ESCAPE SEQUENCE ACTION ROUTINES                                                                                 (27)



         68 A5            10     C1  0658  1252 	ADDL3	#TTY$L_RB_DATA,UCB$L_SVAPTE(R5),@UCB$L_SVAPTE(R5)

                       68 B5         065C       

                          28     11  065E  1253 	BRB	160$			; CONTINUE

                                     0660  1254 130$:	IF_NOT_STATE WRITE,140$		; IF NOT WRITE THEN CONTINUE

                                     0666  1255 	IF_STATE WRTALL,160$		; IF PASSALL THEN NO RESTART

                       6E A5     B4  066C  1256 	CLRW	UCB$W_BCNT(R5)		; RESET BYTE COUNT

         68 A5            0C     C1  066F  1257 	ADDL3	#TTY$L_WB_DATA,UCB$L_SVAPTE(R5),@UCB$L_SVAPTE(R5)

                       68 B5         0673       

                          11     11  0675  1258 	BRB	160$			; 

            53         40 B5     0F  0677  1259 140$:	REMQUE	@UCB$L_IOQFL(R5),R3	; GET ADDRESS OF THE NEXT PACKET

                          05     1D  067B  1260 	BVS	155$			; IF V-SET THEN NONE

                          F980'  30  067D  1261 	BSBW	IOC$INITIATE		; INITIATE THE I/O

                          06     11  0680  1262 	BRB	160$			; START OPERATION

         58 A5       0100 8F     AA  0682  1263 155$:	BICW	#UCB$M_BSY,UCB$W_STS(R5); SET NOT BUSY

                                     0688  1264 160$:	CLR_STATE BRDCST		; RESET BROADCAST STATE

                          F971   31  068C  1265 	BRW	TTY$GETNEXTCHAR		; CONTINUE

                                     068F  1266 ;

                                     068F  1267 ; COMPLETE BROADCAST SUBROUTINE

                                     068F  1268 ;

                                     068F  1269 COMPLETE_BRDCST:			; COMPLETE BROADCAST

                       16 A4     97  068F  1270 	DECB	TTY$B_BD_REFC(R4)	; ADJUST REF COUNT

                          14     12  0692  1271 	BNEQ	40$			; IF NEQ THEN THIS ONE IS NOT DONE

                          34     BB  0694  1272 	PUSHR	#^M<R2,R4,R5>		; SAVE CRUTIAL REGS

            55         0C A4     9E  0696  1273 	MOVAB	TTY$L_BD_FORK(R4),R5	; ADDRESS FORK BLOCK

                       A6'AF     9F  069A  1274 	PUSHAB	B^20$			; SET RETURN ADDRESS

                                     069D  1275 	FORK				; CREATE FORK TO RELEASE RESOURCE

                                     06A0  1276 ;

                                     06A0  1277 ; RELEASE BREAKTHROUGH RESOURCE FORK ROUTINE

                                     06A0  1278 ;

            50            06     9A  06A0  1279 	MOVZBL	#RSN$_BRKTHRU,R0	; SET RESOURCE NUMBER

                          F95A'  31  06A3  1280 	BRW	SCH$RAVAIL		; DELCARE RESOURCE

                          34     BA  06A6  1281 20$:	POPR	#^M<R2,R4,R5>		; RESTORE REGISTERS

                                 05  06A8  1282 40$:	RSB				; RETURN

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  34

X05             ESCAPE SEQUENCE ACTION ROUTINES                                                                                 (28)



                                     06A9  1284 ;++

                                     06A9  1285 ; TTY$STRT_BRDCST - START BROADCAST OPERATION

                                     06A9  1286 ;

                                     06A9  1287 ; FUNCTIPONAL DESCRIPTION:

                                     06A9  1288 ;

                                     06A9  1289 ; THIS ROUTINE SETS UP THE STATE TO BEGIN A BROADCAST OPERATION

                                     06A9  1290 ;

                                     06A9  1291 ; INPUTS:

                                     06A9  1292 ;

                                     06A9  1293 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     06A9  1294 ;	R4 = ADDRESS OF THE BLOCK TO START

                                     06A9  1295 ;	R5 = UCB ADDRESS

                                     06A9  1296 ;

                                     06A9  1297 ; OUTPUTS:

                                     06A9  1298 ;

                                     06A9  1299 ;	R2,R4,R5 ARE PRESERVED

                                     06A9  1300 ;--

                                     06A9  1301 TTY$STRT_BRDCST::			; START BROADCAST OPERATION

         E4 A5            54     D0  06A9  1302 	MOVL	R4,UCB$L_TT_BRDCST(R5)	; SAVE BLOCK ADDRESS

                       FC A5     94  06AD  1303 	CLRB	UCB$B_TT_BRDPT(R5)	; START AT FIRST CHARACTER

                                     06B0  1304 	SET_STATE BRDCST		; SET STATE

                                     06B4  1305 	CLR_STATE CTRLS			; SET NO CONTROL S STATE

         3C A5            0E     E1  06B7  1306 	BBC	#TT$V_HOLDSCREEN,UCB$L_DEVDEPEND(R5),10$; BR IF NOT IN HOLD SCREEN

                          0A         06BB       

         D8 A5       0000'CF     9E  06BC  1307 	MOVAB	W^TTY$A_RLSCREEN,UCB$L_TT_MULTI(R5); RELEASE THE SCREEN

                                     06C2  1308 	SET_STATE MULTI			;

                                 05  06C6  1309 10$:	RSB				; RETURN

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  35

X05             ESCAPE SEQUENCE ACTION ROUTINES                                                                                 (29)



                                     06C7  1311 ;++

                                     06C7  1312 ; TTY$STOP_BRDCST - STOP ALL BROADCASTS ON THIS UNIT

                                     06C7  1313 ;

                                     06C7  1314 ; FUNCTIONAL DESCRIPTION:

                                     06C7  1315 ;

                                     06C7  1316 ; THIS ROUTINE FLUSHES ALL PENDING BROADCAST MESSAGES FOR THIS UNIT.

                                     06C7  1317 ;

                                     06C7  1318 ; INPUTS:

                                     06C7  1319 ;

                                     06C7  1320 ;	R2 = ADDRESS OF THE UNIT STATE VECTOR

                                     06C7  1321 ;	R5 = UCB ADDRESS

                                     06C7  1322 ;

                                     06C7  1323 ; OUTPUTS:

                                     06C7  1324 ;

                                     06C7  1325 ;	R2,R5 ARE PRESERVED.

                                     06C7  1326 ;--

                                     06C7  1327 TTY$STOP_BRDCST::			; STOP BROADCASTS ON UNIT

            54         E4 A5     D0  06C7  1328 	MOVL	UCB$L_TT_BRDCST(R5),R4	; GET ADDRESS OF THE CURRENT BLOCK

                 00000000'EF     9F  06CB  1329 	PUSHAB	IOC$GQ_BRDCST		; SAVE LIST HEAD ADDRESS

                                     06D1  1330 10$:	CLR_STATE BRDCST

                          FFB7   30  06D5  1331 	BSBW	COMPLETE_BRDCST		; COMPLETE THIS ONE

            54            64     D0  06D8  1332 15$:	MOVL	(R4),R4			; LINK TO NEXT BLOCK

            6E            54     D1  06DB  1333 	CMPL	R4,(SP)			; DONE?

                          1A     13  06DE  1334 	BEQL	40$			; IF EQL THEN YES

                                     06E0  1335 	CASE	TYPE=B,TTY$B_BD_WHO(R4),<25$,30$,10$>	; SEE IF THIS IS APPROPRIATE

         10 A4            55     D1  06EB  1336 25$:	CMPL	R5,TTY$L_BD_UCB(R4)	; THIS UNIT?

                          E0     13  06EF  1337 	BEQL	10$			; IF EQL THEN COMPLETE

                          E5     11  06F1  1338 	BRB	15$			; OTHERWISE CONTINUE

                       50 A5     B5  06F3  1339 30$:	TSTW	UCB$W_REFC(R5)		; REF COUNT 0?

                          D9     12  06F6  1340 	BNEQ	10$			; IF NEQ THEN COMPLETE

                          DE     11  06F8  1341 	BRB	15$			; 

                          8E     D5  06FA  1342 40$:	TSTL	(SP)+			; REMOVE LIST HEAD ADDRESS

                                 05  06FC  1343 	RSB				; RETURN

                                     06FD  1344  

                                     06FD  1345 	.END

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  36

SYMBOL TABLE                                                                                                                    (29)



BIT...         = 00000008            IO$M_DELETE    = 00000100            IO$V_PURGE     = 0000000B            

BRDCST           000005E1 R     03   IO$M_DMOUNT    = 00000400            IO$V_READATTN  = 00000007            

BSPACE           000004E9 R     03   IO$M_DSABLMBX  = 00000400            IO$V_REVERSE   = 00000006            

CARRIAGE         000003CC R     03   IO$M_ENABLMBX  = 00000080            IO$V_SHUTDOWN  = 00000007            

COMPLETE_BRDCST  0000068F R     03   IO$M_FCODE     = 0000003F            IO$V_STARTUP   = 00000006            

CONTROLR         000000B0 R     03   IO$M_HANGUP    = 00000200            IO$V_SYNCH     = 00000009            

CRB$B_MASK       0000000E            IO$M_INHERLOG  = 00000800            IO$V_TIMED     = 00000007            

CRB$B_TT_ATTN    00000004            IO$M_INHEXTGAP = 00001000            IO$V_TRMNOECHO = 0000000C            

CRB$B_TT_EXPEC   00000005            IO$M_INHRETRY  = 00008000            IO$V_WRTATTN   = 00000008            

CRB$B_TYPE       0000000A            IO$M_INHSEEK   = 00001000            IO$_ACCESS     = 00000032            

CRB$C_LENGTH     00000028            IO$M_INTERRUPT = 00000040            IO$_ACPCONTROL = 00000038            

CRB$K_LENGTH     00000028            IO$M_MOUNT     = 00000200            IO$_CREATE     = 00000033            

CRB$L_INTD       00000014            IO$M_NOECHO    = 00000040            IO$_DEACCESS   = 00000034            

CRB$L_LINK       00000010            IO$M_NOFILTR   = 00000200            IO$_DELETE     = 00000035            

CRB$L_TT_DIAL    00000000            IO$M_NOFORMAT  = 00000100            IO$_DIAGNOSE   = 0000001D            

CRB$L_WQBL       00000004            IO$M_NOW       = 00000040            IO$_DRVCLR     = 00000004            

CRB$L_WQFL       00000000            IO$M_NOWAIT    = 00000080            IO$_ERASETAPE  = 00000006            

CRB$M_BSY      = 00000001            IO$M_PACKED    = 00000080            IO$_LOGICAL    = 0000002F            

CRB$V_BSY      = 00000000            IO$M_PURGE     = 00000800            IO$_MODIFY     = 00000036            

CRB$W_REFC       0000000C            IO$M_READATTN  = 00000080            IO$_MOUNT      = 00000039            

CRB$W_SIZE       00000008            IO$M_REVERSE   = 00000040            IO$_NOP        = 00000000            

CTRLR            00000242 R     03   IO$M_SHUTDOWN  = 00000080            IO$_OFFSET     = 00000006            

CTRLU            0000020F R     03   IO$M_STARTUP   = 00000040            IO$_PACKACK    = 00000008            

CTRLZ            000004D6 R     03   IO$M_SYNCH     = 00000200            IO$_PHYSICAL   = 0000001F            

CURSOROVRFLOW    000003C4 R     03   IO$M_TIMED     = 00000080            IO$_READHEAD   = 0000000E            

DELCHAR          0000026F R     03   IO$M_TRMNOECHO = 00001000            IO$_READLBLK   = 00000021            

DELESCAPE        0000025A R     03   IO$M_WRTATTN   = 00000100            IO$_READPBLK   = 0000000C            

DROP             00000409 R     03   IO$S_FCODE     = 00000006            IO$_READPRESET = 00000019            

EOLSEEN          0000006B R     03   IO$V_ABORT     = 00000008            IO$_READPROMPT = 00000037            

ESCAPE           00000448 R     03   IO$V_ACCESS    = 00000006            IO$_READTRACKD = 00000010            

ESC_A            00000572 R     03   IO$V_ATTNAST   = 00000008            IO$_READVBLK   = 00000031            

ESC_B            0000057C R     03   IO$V_BINARY    = 00000006            IO$_RECAL      = 00000003            

ESC_C            00000588 R     03   IO$V_CANCTRLO  = 00000006            IO$_RELEASE    = 00000005            

ESC_D            00000594 R     03   IO$V_COMMOD    = 00000006            IO$_RETCENTER  = 00000007            

ESC_H            0000059E R     03   IO$V_CREATE    = 00000007            IO$_REWIND     = 00000024            

ESC_I            00000572 R     03   IO$V_CTRLCAST  = 00000008            IO$_REWINDOFF  = 00000022            

ESC_SING         000005A4 R     03   IO$V_CTRLYAST  = 00000007            IO$_SEARCH     = 00000009            

ESC_Y            000005AD R     03   IO$V_CVTLOW    = 00000008            IO$_SEEK       = 00000002            

EXE$FORK         ********   X   03   IO$V_DATACHECK = 0000000E            IO$_SENSECHAR  = 0000001B            

EXE$GL_ABSTIM    ********   X   03   IO$V_DELETE    = 00000008            IO$_SENSEMODE  = 00000027            

FILLING          00000029 R     03   IO$V_DMOUNT    = 0000000A            IO$_SETCHAR    = 0000001A            

FORM             00000515 R     03   IO$V_DSABLMBX  = 0000000A            IO$_SETMODE    = 00000023            

FORMAT_CHAR      0000033B R     03   IO$V_ENABLMBX  = 00000007            IO$_SKIPFILE   = 00000025            

GBL...         = 00000000            IO$V_FCODE     = 00000000            IO$_SKIPRECORD = 00000026            

GETNEXTCHAR      00000004 R     03   IO$V_HANGUP    = 00000009            IO$_SPACEFILE  = 00000002            

INTEXIT          00000025 R     03   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            

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  37

SYMBOL TABLE                                                                                                                    (29)



IO$_WRITEVBLK  = 00000030            IRP$V_PHYSIO   = 00000008            PRI$_IOCOM     = 00000001            

IOC$GQ_BRDCST    ********   X   03   IRP$V_PRIVIO   = 00000009            PRI$_NULL      = 00000000            

IOC$INITIATE     ********   X   03   IRP$V_SWAPIO   = 00000006            PRI$_RESAVL    = 00000002            

IPL$_ASTDEL    = 00000002            IRP$V_VIRTUAL  = 00000004            PRI$_TICOM     = 00000004            

IPL$_HWCLK     = 00000018            IRP$W_ABCNT      0000003C            PRI$_TIMER     = 00000002            

IPL$_IOPOST    = 00000004            IRP$W_BCNT       00000032            PRI$_TOCOM     = 00000003            

IPL$_MAILBOX   = 0000000B            IRP$W_BOFF       00000030            RSN$_ASTWAIT   = 00000001            

IPL$_POWER     = 0000001F            IRP$W_CHAN       00000028            RSN$_BRKTHRU   = 00000006            

IPL$_QUEUEAST  = 00000006            IRP$W_FUNC       00000020            RSN$_MAILBOX   = 00000002            

IPL$_SCHED     = 00000003            IRP$W_OBCNT      0000003E            RSN$_NPDYNMEM  = 00000003            

IPL$_SYNCH     = 00000007            IRP$W_SIZE       00000008            RSN$_PGDYNMEM  = 00000005            

IPL$_TIMER     = 00000007            IRP$W_STS        0000002A            RSN$_PGFILE    = 00000004            

IRP$B_CARCON     00000038            IRP$W_TT_PRMPT   0000003C            SCH$RAVAIL       ********   X   03   

IRP$B_EFN        00000022            LINEFEED         00000414 R     03   SENDLINEFEED     0000040C R     03   

IRP$B_PRI        00000023            MOVEREADATA      000000DF R     03   SS$_CONTROLO     ********   X   03   

IRP$B_RMOD       0000000B            MULTIECHOING     0000055F R     03   SS$_NORMAL       ********   X   03   

IRP$B_TYPE       0000000A            OUTPUTANDWAIT    00000399 R     03   STRTMULTI        00000557 R     03   

IRP$C_LENGTH     0000004C            PR$_ACCR       = 00000029            TAB              00000535 R     03   

IRP$K_LENGTH     0000004C            PR$_ACCS       = 00000028            TT$C_BAUD_110  = 00000003            

IRP$L_AST        00000010            PR$_ASTLVL     = 00000013            TT$C_BAUD_1200 = 00000008            

IRP$L_ASTPRM     00000014            PR$_ESP        = 00000001            TT$C_BAUD_134  = 00000004            

IRP$L_DIAGBUF    00000044            PR$_ICCS       = 00000018            TT$C_BAUD_150  = 00000005            

IRP$L_IOQBL      00000004            PR$_ICR        = 0000001A            TT$C_BAUD_1800 = 00000009            

IRP$L_IOQFL      00000000            PR$_IPL        = 00000012            TT$C_BAUD_2000 = 0000000A            

IRP$L_IOSB       00000024            PR$_ISP        = 00000004            TT$C_BAUD_2400 = 0000000B            

IRP$L_IOST1      00000034            PR$_KSP        = 00000000            TT$C_BAUD_300  = 00000006            

IRP$L_IOST2      00000038            PR$_MAPEN      = 00000038            TT$C_BAUD_3600 = 0000000C            

IRP$L_MEDIA      00000034            PR$_NICR       = 00000019            TT$C_BAUD_4800 = 0000000D            

IRP$L_PID        0000000C            PR$_P0BR       = 00000008            TT$C_BAUD_50   = 00000001            

IRP$L_SEGVBN     00000040            PR$_P0LR       = 00000009            TT$C_BAUD_600  = 00000007            

IRP$L_SEQNUM     00000048            PR$_P1BR       = 0000000A            TT$C_BAUD_7200 = 0000000E            

IRP$L_SVAPTE     0000002C            PR$_P1LR       = 0000000B            TT$C_BAUD_75   = 00000002            

IRP$L_TT_TERM    00000038            PR$_PCBB       = 00000010            TT$C_BAUD_9600 = 0000000F            

IRP$L_UCB        0000001C            PR$_RXCS       = 00000020            TT$M_CRFILL    = 00000400            

IRP$L_WIND       00000018            PR$_RXDB       = 00000021            TT$M_EIGHTBIT  = 00008000            

IRP$M_BUFIO    = 00000001            PR$_SBIER      = 00000034            TT$M_ESCAPE    = 00000008            

IRP$M_CHAINED  = 00000020            PR$_SBIFS      = 00000030            TT$M_HOLDSCREEN= 00004000            

IRP$M_COMPLX   = 00000008            PR$_SBIMT      = 00000033            TT$M_HOSTSYNC  = 00000010            

IRP$M_DIAGBUF  = 00000080            PR$_SBIQC      = 00000036            TT$M_LFFILL    = 00000800            

IRP$M_FUNC     = 00000002            PR$_SBIS       = 00000031            TT$M_LOWER     = 00000080            

IRP$M_PAGIO    = 00000004            PR$_SBISC      = 00000032            TT$M_MBXDSABL  = 00010000            

IRP$M_PHYSIO   = 00000100            PR$_SBITA      = 00000035            TT$M_MECHTAB   = 00000100            

IRP$M_PRIVIO   = 00000200            PR$_SBR        = 0000000C            TT$M_NOBRDCST  = 00020000            

IRP$M_SWAPIO   = 00000040            PR$_SCBB       = 00000011            TT$M_NOECHO    = 00000002            

IRP$M_VIRTUAL  = 00000010            PR$_SID        = 0000003E            TT$M_NOTYPEAHD = 00000004            

IRP$S_FCODE    = 00000006            PR$_SIRR       = 00000014            TT$M_ODD       = 00000080            

IRP$S_FMOD     = 0000000A            PR$_SISR       = 00000015            TT$M_PAGE      = FE000000            

IRP$S_MODE     = 00000002            PR$_SLR        = 0000000D            TT$M_PARITY    = 00000040            

IRP$V_BUFIO    = 00000000            PR$_SSP        = 00000002            TT$M_PASSALL   = 00000001            

IRP$V_CHAINED  = 00000005            PR$_TBIA       = 00000039            TT$M_REMOTE    = 00002000            

IRP$V_COMPLX   = 00000003            PR$_TBIS       = 0000003A            TT$M_SCOPE     = 00001000            

IRP$V_DIAGBUF  = 00000007            PR$_TODR       = 0000001B            TT$M_SCRIPT    = 00000040            

IRP$V_FCODE    = 00000000            PR$_TXCS       = 00000022            TT$M_TTSYNC    = 00000020            

IRP$V_FMOD     = 00000006            PR$_TXDB       = 00000023            TT$M_WRAP      = 00000200            

IRP$V_FUNC     = 00000001            PR$_USP        = 00000003            TT$S_PAGE      = 00000008            

IRP$V_MODE     = 00000000            PR$_WCSA       = 0000002C            TT$V_CRFILL    = 0000000A            

IRP$V_PAGIO    = 00000002            PR$_WCSD       = 0000002D            TT$V_EIGHTBIT  = 0000000F            

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  38

SYMBOL TABLE                                                                                                                    (29)



TT$V_ESCAPE    = 00000003            TTY$C_CTRLX    = 00000018            TTY$M_ST_CTRLR = 00000400            

TT$V_HOLDSCREEN= 0000000E            TTY$C_CTRLY    = 00000019            TTY$M_ST_CTRLS = 00000004            

TT$V_HOSTSYNC  = 00000004            TTY$C_CTRLZ    = 0000001A            TTY$M_ST_CURSOR= 00000010            

TT$V_LFFILL    = 0000000B            TTY$C_DELETE   = 0000007F            TTY$M_ST_DEL   = 00002000            

TT$V_LOWER     = 00000007            TTY$C_DOLLAR   = 00000024            TTY$M_ST_EOL   = 00000200            

TT$V_MBXDSABL  = 00000010            TTY$C_DS_ACTIVE= 00000001            TTY$M_ST_ESC   = 00080000            

TT$V_MECHTAB   = 00000008            TTY$C_DS_ATTN1 = 00000002            TTY$M_ST_ESC_O = 08000000            

TT$V_NOBRDCST  = 00000011            TTY$C_DS_ATTN2 = 00000003            TTY$M_ST_FILL  = 00000008            

TT$V_NOECHO    = 00000001            TTY$C_DS_ATTN3 = 00000004            TTY$M_ST_GETAHD= 02000000            

TT$V_NOTYPEAHD = 00000002            TTY$C_DS_HANG  = 00000005            TTY$M_ST_HANGUP= 01000000            

TT$V_ODD       = 00000007            TTY$C_DS_HANG2 = 00000006            TTY$M_ST_MULTI = 00000040            

TT$V_PAGE      = 00000019            TTY$C_DS_IDLE  = 00000000            TTY$M_ST_NL    = 00200000            

TT$V_PARITY    = 00000006            TTY$C_DS_RESET = 00000007            TTY$M_ST_NOECHO= 00008000            

TT$V_PASSALL   = 00000000            TTY$C_ESCAPE   = 0000001B            TTY$M_ST_NOFLTR= 00040000            

TT$V_REMOTE    = 0000000D            TTY$C_FC_N_SET = 00000004            TTY$M_ST_PASALL= 00004000            

TT$V_SCOPE     = 0000000C            TTY$C_FC_READ  = 00000000            TTY$M_ST_PROMPT= 00020000            

TT$V_SCRIPT    = 00000006            TTY$C_FC_SETC  = 00000003            TTY$M_ST_READ  = 00000800            

TT$V_TTSYNC    = 00000005            TTY$C_FC_SETM  = 00000002            TTY$M_ST_SENDLF= 00000020            

TT$V_WRAP      = 00000009            TTY$C_FC_WRITE = 00000001            TTY$M_ST_SKIPLF= 00800000            

TT$_LA120      = 00000021            TTY$C_FF       = 0000000C            TTY$M_ST_TYPFUL= 00400000            

TT$_LA36       = 00000020            TTY$C_HIGHIPL  = 00000016            TTY$M_ST_UNSOL = 04000000            

TT$_LAX        = 00000020            TTY$C_LF       = 0000000A            TTY$M_ST_WRITE = 00000100            

TT$_UNKNOWN    = 00000000            TTY$C_LOWA     = 00000061            TTY$M_ST_WRTALL= 00010000            

TT$_VT05       = 00000001            TTY$C_LOWZ     = 0000007B            TTY$M_ST_XOFF  = 00000002            

TT$_VT52       = 00000040            TTY$C_NL       = 00000080            TTY$M_ST_XON   = 00000001            

TT$_VT55       = 00000041            TTY$C_ONE      = 00000031            TTY$Q_BD_LINK    00000000            

TT$_VT5X       = 00000040            TTY$C_PLUS     = 0000002B            TTY$READONE      ********   X   03   

TTY$A_BACKSPACE  ********   X   03   TTY$C_SCRIPT   = 00000060            TTY$STOP_BRDCST  000006C7 RG    03   

TTY$A_CTRLR      ********   X   03   TTY$C_TAB      = 00000009            TTY$STRT_BRDCST  000006A9 RG    03   

TTY$A_CTRLU      ********   X   03   TTY$C_TYPAHDSIZ= 0000004E            TTY$S_A        = 0000000E            

TTY$A_CTRLZ      ********   X   03   TTY$C_VT       = 0000000B            TTY$V_A        = 00000000            

TTY$A_DELCRTTAB  ********   X   03   TTY$C_XOFF     = 00000013            TTY$V_CH_CTRL  = 00000005            

TTY$A_ESCAPE     ********   X   03   TTY$C_XON      = 00000011            TTY$V_CH_CTRL2 = 00000007            

TTY$A_ESC_OUT    ********   X   03   TTY$C_ZERO     = 00000030            TTY$V_CH_LOWER = 00000006            

TTY$A_HLDSCREEN  ********   X   03   TTY$GETNEXTCHAR  00000000 RG    03   TTY$V_CH_SPEC  = 00000004            

TTY$A_LONGFORM   ********   X   03   TTY$L_BD_DATA    00000018            TTY$V_ST_BADESC= 00000014            

TTY$A_RLSCREEN   ********   X   03   TTY$L_BD_FORK    0000000C            TTY$V_ST_BRDCST= 00000007            

TTY$A_SCRIPT     ********   X   03   TTY$L_BD_MIN     00000028            TTY$V_ST_CTRLO = 0000000C            

TTY$A_TAB        ********   X   03   TTY$L_BD_UCB     00000010            TTY$V_ST_CTRLR = 0000000A            

TTY$A_TYPE       ********   X   03   TTY$L_RB_DATA    00000010            TTY$V_ST_CTRLS = 00000002            

TTY$A_VTAB       ********   X   03   TTY$L_RB_NXT     00000000            TTY$V_ST_CURSOR= 00000004            

TTY$B_BD_CNT     00000015            TTY$L_RB_UVA     00000004            TTY$V_ST_DEL   = 0000000D            

TTY$B_BD_IPL     00000017            TTY$L_TA_DATA    00000010            TTY$V_ST_EOL   = 00000009            

TTY$B_BD_REFC    00000016            TTY$L_TA_END     0000000C            TTY$V_ST_ESC   = 00000013            

TTY$B_BD_TYPE    0000000A            TTY$L_TA_GET     00000004            TTY$V_ST_ESC_O = 0000001B            

TTY$B_BD_WHO     00000014            TTY$L_TA_PUT     00000000            TTY$V_ST_FILL  = 00000003            

TTY$B_TA_TYPE    0000000A            TTY$L_WB_DATA    0000000C            TTY$V_ST_GETAHD= 00000019            

TTY$C_BELL     = 00000007            TTY$L_WB_END     00000004            TTY$V_ST_HANGUP= 00000018            

TTY$C_BLANK    = 00000020            TTY$L_WB_NXT     00000000            TTY$V_ST_MULTI = 00000006            

TTY$C_BS       = 00000008            TTY$M_A        = 00003FFF            TTY$V_ST_NL    = 00000015            

TTY$C_CR       = 0000000D            TTY$M_CH_CTRL  = 00000020            TTY$V_ST_NOECHO= 0000000F            

TTY$C_CTRLC    = 00000003            TTY$M_CH_CTRL2 = 00000080            TTY$V_ST_NOFLTR= 00000012            

TTY$C_CTRLO    = 0000000F            TTY$M_CH_LOWER = 00000040            TTY$V_ST_PASALL= 0000000E            

TTY$C_CTRLQ    = 00000011            TTY$M_CH_SPEC  = 00000010            TTY$V_ST_PROMPT= 00000011            

TTY$C_CTRLR    = 00000012            TTY$M_ST_BADESC= 00100000            TTY$V_ST_READ  = 0000000B            

TTY$C_CTRLS    = 00000013            TTY$M_ST_BRDCST= 00000080            TTY$V_ST_SENDLF= 00000005            

TTY$C_CTRLU    = 00000015            TTY$M_ST_CTRLO = 00001000            TTY$V_ST_SKIPLF= 00000017            

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  39

SYMBOL TABLE                                                                                                                    (29)



TTY$V_ST_TYPFUL= 00000016            UCB$L_DEVCHAR    00000034            UCB$M_ONLINE   = 00000010            

TTY$V_ST_UNSOL = 0000001A            UCB$L_DEVDEPEND  0000003C            UCB$M_POWER    = 00000020            

TTY$V_ST_WRITE = 00000008            UCB$L_DPC        0000007C            UCB$M_PRMMBX   = 00000001            

TTY$V_ST_WRTALL= 00000010            UCB$L_DUETIM     0000005C            UCB$M_TIM      = 00000001            

TTY$V_ST_XOFF  = 00000001            UCB$L_DX_BFPNT   FFFFFFF4            UCB$M_TIMOUT   = 00000040            

TTY$V_ST_XON   = 00000000            UCB$L_DX_BUF     FFFFFFF0            UCB$M_TT_NOTIF = 00000004            

TTY$WRITEDONE    ********   X   03   UCB$L_DX_RXDB    FFFFFFF8            UCB$M_TT_ODD   = 00000020            

TTY$W_BD_SIZE    00000008            UCB$L_EMB        00000078            UCB$M_TT_PARTY = 00000010            

TTY$W_RB_ORGHOR  0000000C            UCB$L_FIRST      00000014            UCB$M_TT_SPEED = 0000000F            

TTY$W_RB_SIZE    00000008            UCB$L_FPC        0000000C            UCB$M_TT_TIMO  = 00000002            

TTY$W_RB_TIMOS   0000000E            UCB$L_FQBL       00000004            UCB$M_VALID    = 00000800            

TTY$W_TA_SIZE    00000008            UCB$L_FQFL       00000000            UCB$S_LNKPRI   = 00000002            

TTY$W_WB_SIZE    00000008            UCB$L_FR3        00000010            UCB$S_LTYPE    = 00000002            

UCB$B_AMOD       00000053            UCB$L_FR4        00000014            UCB$S_TT_ODD   = 00000001            

UCB$B_CEX        00000077            UCB$L_IOQBL      00000044            UCB$S_TT_PARTY = 00000001            

UCB$B_CM1        0000004A            UCB$L_IOQFL      00000040            UCB$S_TT_SPEED = 00000004            

UCB$B_CM2        0000004B            UCB$L_IRP        0000004C            UCB$T_PARTNER    0000000C            

UCB$B_DEVCLASS   00000038            UCB$L_LINK       0000002C            UCB$V_BACKP    = 00000005            

UCB$B_DEVTYPE    00000039            UCB$L_LOGADR     00000064            UCB$V_BSY      = 00000008            

UCB$B_DIPL       00000052            UCB$L_MAXBLOCK   00000080            UCB$V_CANCEL   = 00000003            

UCB$B_DX_SCTCNT  FFFFFFFE            UCB$L_MEDIA      00000088            UCB$V_DEADMO   = 0000000A            

UCB$B_DX_SPARE   FFFFFFFF            UCB$L_NT_DATSSB  00000074            UCB$V_DELMBX   = 00000001            

UCB$B_ERTCNT     00000070            UCB$L_NT_INTSSB  00000078            UCB$V_DIAGBUF  = 00000001            

UCB$B_ERTMAX     00000071            UCB$L_OPCNT      00000060            UCB$V_DX_WRITE = 00000003            

UCB$B_ESCAPE     0000004B            UCB$L_OWNUIC     0000001C            UCB$V_ECC      = 00000000            

UCB$B_FEX        00000076            UCB$L_PID        00000028            UCB$V_ERLOGIP  = 00000002            

UCB$B_FIPL       0000000B            UCB$L_RQBL       00000004            UCB$V_INT      = 00000001            

UCB$B_LOCSRV     0000003C            UCB$L_RQFL       00000000            UCB$V_INTTYPE  = 00000007            

UCB$B_OFFNDX     00000090            UCB$L_SVAPTE     00000068            UCB$V_JOB      = 00000000            

UCB$B_OFFRTC     00000091            UCB$L_SVPN       00000064            UCB$V_LNKPRI   = 00000006            

UCB$B_REMSRV     0000003D            UCB$L_TTCHAR     0000003C            UCB$V_LTYPE    = 00000000            

UCB$B_SECTORS    0000003C            UCB$L_TT_BRDCST  FFFFFFE4            UCB$V_MOUNTING = 00000009            

UCB$B_SLAVE      00000074            UCB$L_TT_CTRLC   FFFFFFE0            UCB$V_MSGACK   = 00000004            

UCB$B_SPR        00000075            UCB$L_TT_CTRLY   FFFFFFDC            UCB$V_MSGFLO   = 00000003            

UCB$B_STATE      00000052            UCB$L_TT_MULTI   FFFFFFD8            UCB$V_NOCNVRT  = 00000002            

UCB$B_TRACKS     0000003D            UCB$L_TT_RDUE    FFFFFFEC            UCB$V_NT_BFROVF= 00000002            

UCB$B_TT_BRDPT   FFFFFFFC            UCB$L_TT_STATE   FFFFFFD4            UCB$V_NT_BREAK = 00000005            

UCB$B_TT_CRFILL  FFFFFFF9            UCB$L_TT_TYPAHD  FFFFFFE8            UCB$V_NT_NAME  = 00000004            

UCB$B_TT_DIAL    FFFFFFF3            UCB$L_VCB        00000030            UCB$V_NT_NONTR = 00000006            

UCB$B_TT_ESC     FFFFFFF2            UCB$M_BSY      = 00000100            UCB$V_NT_SDP   = 00000003            

UCB$B_TT_ESC_O   FFFFFFFD            UCB$M_CANCEL   = 00000008            UCB$V_ONLINE   = 00000004            

UCB$B_TT_FILL    FFFFFFF8            UCB$M_DEADMO   = 00000400            UCB$V_POWER    = 00000005            

UCB$B_TT_LFFILL  FFFFFFFA            UCB$M_DELMBX   = 00000002            UCB$V_PRMMBX   = 00000000            

UCB$B_TT_LINE    FFFFFFF1            UCB$M_DIAGBUF  = 00000002            UCB$V_SEGFLO   = 00000002            

UCB$B_TT_SPARE   FFFFFFF0            UCB$M_DX_WRITE = 00000008            UCB$V_TIM      = 00000000            

UCB$B_TT_SPEED   FFFFFFFB            UCB$M_ECC      = 00000001            UCB$V_TIMOUT   = 00000006            

UCB$B_TYPE       0000000A            UCB$M_ERLOGIP  = 00000004            UCB$V_TT_NOTIF = 00000002            

UCB$B_VERTSZ     0000003F            UCB$M_INT      = 00000002            UCB$V_TT_ODD   = 00000005            

UCB$C_LENGTH     00000074            UCB$M_INTTYPE  = 00000080            UCB$V_TT_PARTY = 00000004            

UCB$C_LOGLNK   = 00000001            UCB$M_JOB      = 00000001            UCB$V_TT_SPEED = 00000000            

UCB$K_LENGTH     00000074            UCB$M_MOUNTING = 00000200            UCB$V_TT_TIMO  = 00000001            

UCB$L_AMB        00000054            UCB$M_NOCNVRT  = 00000004            UCB$V_VALID    = 0000000B            

UCB$L_ASTQBL     00000010            UCB$M_NT_BFROVF= 00000004            UCB$W_BCNT       0000006E            

UCB$L_ASTQFL     0000000C            UCB$M_NT_BREAK = 00000020            UCB$W_BCR        00000092            

UCB$L_CPID       0000005C            UCB$M_NT_NAME  = 00000010            UCB$W_BOFF       0000006C            

UCB$L_CRB        00000020            UCB$M_NT_NONTR = 00000040            UCB$W_BUFQUO     00000018            

UCB$L_DDB        00000024            UCB$M_NT_SDP   = 00000008            UCB$W_BYTESTOGO  0000003E            

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  40

SYMBOL TABLE                                                                                                                    (29)



UCB$W_CHARGE     0000004A            

UCB$W_CYLINDERS  0000003E            

UCB$W_DA         00000088            

UCB$W_DC         0000008A            

UCB$W_DEVBUFSIZ  0000003A            

UCB$W_DEVSTS     0000005A            

UCB$W_DSTADDR    00000018            

UCB$W_DX_BCR     FFFFFFFC            

UCB$W_EC1        0000008C            

UCB$W_EC2        0000008E            

UCB$W_ERRCNT     00000072            

UCB$W_FUNC       00000084            

UCB$W_MB_SEED    FFFFFFFC            

UCB$W_MSGCNT     00000016            

UCB$W_MSGMAX     00000014            

UCB$W_NT_CHAN    0000007C            

UCB$W_OFFSET     00000086            

UCB$W_REFC       00000050            

UCB$W_SIZE       00000008            

UCB$W_SRCADDR    0000001A            

UCB$W_STS        00000058            

UCB$W_TT_CURSOR  FFFFFFFE            

UCB$W_TT_HOLD    FFFFFFF4            

UCB$W_TT_INAHD   FFFFFFF6            

UCB$W_UNIT       00000048            

UCB$W_VPROT      0000001A            

UPCURSOR         0000036B R     03   

VEC$B_DATAPATH   00000013            

VEC$B_NUMREG     00000012            

VEC$L_ADP        00000014            

VEC$L_IDB        00000008            

VEC$L_INITIAL    0000000C            

VEC$L_TT_DISC    00000020            

VEC$L_TT_ILINE   00000018            

VEC$L_TT_STRTIO  0000001C            

VEC$M_MAPLOCK  = 00008000            

VEC$M_PATHLOCK = 00000080            

VEC$Q_DISPATCH   00000000            

VEC$S_DATAPATH = 00000007            

VEC$S_MAPREG   = 0000000F            

VEC$V_DATAPATH = 00000000            

VEC$V_MAPLOCK  = 0000000F            

VEC$V_MAPREG   = 00000000            

VEC$V_PATHLOCK = 00000007            

VEC$W_MAPREG     00000010            

VTAB             0000050E R     03   

W              = 00000080            

WRITING          00000036 R     03   

X              = 00000000            

XOFF             00000073 R     03   

XON              0000008C R     03   

Z              = 00000000            





PROGRAM SECTION SYNOPSIS



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

TTYCHARO        - TERMINAL DRIVER CHARACTER OUTPUT ROUTINES      22-AUG-1978 00:02:38   VAX-11 MACRO X0.3-11               Page  41

PROGRAM SECTION SYNOPSIS                                                                                                        (29)



. 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      000006FD      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

6744. BYTES LEFT IN FREE MEMORY POOL.

336. BYTES OF RECLAIMED MEMORY.

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

12 MLB DIR RDS - 1036 GETS TO DEFINE 26 MACROS. 111 INTER. FILE WRITES. 

