				/ area
1:
	tst	(sp)+ / increment sp
1:
	tst	2(r5) / is char count for tty buffer = 0
	beq	1f / yes
	movb	*4(r5),r1 / no, move character pointer to r1
	inc	4(r5) / increment character pointer
	dec	2(r5) / decrement character count
	jsr	r0,passc / place character, whose address is in
			 / r1, in
	br	1b / user buffer area. Then get next character.
1:
	jmp	ret

rcvch:
	mov	4(sp),r2 / 0%8 r2 contains 8xtty number
	mov	$4,r1
	bit	r1,rcsr(r2) / is carrier detection bit on
	bne	1f / yes
	bic	$1,rcsr(r2) / no, clear data terminal ready bit
	rts	r0
1:
	movb	tty+3(r2),0f / make cc offset arg for "getc"
	mov	$240,*$ps / set processor priority = 5
	jsr	r0,getc; 0:.. / get next character off clist
		br 2f / clist empty
	clr	*$ps / set processor priority = 0
	rts	r0
2:
	mov	0b,0f / make "getc" arg an arg for "sleep"
	mov	r5,-(sp) / save tty buffer address on stack
	jsr	r0,sleep; 0:..
	mov	(sp)+,r5
	br	rcvch

ocvt:
	sub	$28.,r1 / 0%2 calculate tty table offset
	mov	r1 ,r2
	asl	r1 / 0%4
	asl	r1 / 0%8
	mov	r1,-(sp)
	add	$6,r2 / calculate clist id  clist offset
	movb	r2,tty+3(r1) / put clist id in tty table
1:
	mov	(sp),r1
	bit	$4,rcsr(r1) / carrier detect bit set
	bne	1f / if so, branch
	mov	$511,rcsr(r1) / set ready, speed, interrupt enable,
			      / supervisor transmit
	movb	tty+3(r1),0f / put clist id in sleep argument
	jsr	r0,sleep; 0:..
	br	1b
1:
	mov	tty+6(r1),r5 / put tty buffer address in r5
	tstb	(r5) / first byte of tty buffer = 0
