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)