;*; Updated on 04-Feb-88 at 10:32 pm by Tom Faust; edit time: 0:09:29
QTYP..: SAVE A2,D1,D3
MOV ^O14(SP),A2 ; Get address of text (return address)
CLR D3 ; Flag in/out of high intensity
10$: MOVW #^O177400!11.,D1
TCRT
20$: MOVB (A2)+,D1 ; Get next character
BEQ 40$ ; done at null
CMPB D1,#'_ ; Underline?
BEQ 30$
25$: TTY ; Output the character
CMPB D1,#13. ; A CR?
BNE 20$
MOVB #10.,D1 ; Output an LF too!
BR 25$
30$: COM D3 ; Flag change in intensity
BEQ 10$ ; if zero, set low
MOVW #^O177400!12.,D1 ; else set high
TCRT
BR 20$
40$: MOV A2,D3
INC D3 ; Increment address to find even
BCLR #0,D3
MOV D3,^O14(SP) ; Adjust return address
REST A2,D1,D3
RTN