	bic	$!177,r3 / to make it teletype code and then clear
			 / bits 7-15 of r3

3:
	mov	(sp),r2 / r2 contains 8xtty number
	bit	$4,rcsr(r2) / is carrier present for tty
	beq	starxmt / no carrier flush
	mov	r1,-(sp) / yes, place character to be output on stack
	cmp	r1,$11 / is character "ht"
	bne	3f / no
	bitb	$2,tty+4(r2) / is tab to space flag for tty set
			     / (bit 1 of byte 5 in "tty" buffer area)
	beq	3f / no
	mov	$240,(sp) / yes, change character to space
3:
	mov	(sp)+,tcbr(r2) / place char to be output in tty output
			       / buffer
	add	$tty+1,r2 / place addr of 2nd byte of "tty" buf
	jmp	1f-2(r3) / area in r2 (which is the column count) and
			 / then
	incb	(r2) / normal / jmp to location determined by digits
		     / 0 and 1 of character's entry in "partab" which
		     / is now in r3
1:	rts	r0 / non-printing
	br	1f / bs  
	br	2f / nl (line feed)  
	br	3f / tab (horizontal tab)
	br	4f / vert (vertical tab)
	br	5f / cr

1:
	decb	(r2) / col decrement column count in byte 2 of "tty"
		     / area
	bge	1f / if count >=0 return to calling routine
	clrb	(r2) / col set column count = 0
	br	1f
2:
	bit	$1,r1 / is bit 0 of ASCII char = 1 (char = lf)
	bne	2f / yes
	bitb	$20,3(r2) / cr flag is bit 4 of 5th byte of "tty"
			  / area = 1
	beq	2f / no (only lf to be handled)
	movb	$15,1(r2) / place "cr" in 3rd byte of "tty" area
			  / (character leftover after "lf" )
2:
	movb	(r2),r3 / place present column count in r3
	beq	1f / return to calling routine if count = 0
	clrb	(r2) / col clear column count
	asr	r3
	asr	r3
	asr	r3
	asr	r3 / delay = col/16
	add	$3,r3 / start to determine tout entry for tty output
	br	2f
3:
	bitb	$2,3(r2) / is bit 1 of 5th byte of "tty" area = 1
			 / (tab to space bit set)
