ENTRY TTOPEN,NOECHO,XECHO,NOCRLF,INCH,INP SEARCH UUOSYM,MACTEN TTOPEN: OPEN 0,ADDR ; open the channel OUTSTR ERRMSG ; if can't open, output error message POPJ 17,0 XWD -1,0 ; ONE ARG ARGBLK: XWD 100,0 ; INTEGER INTO AC 0 ADDR: XWD 0,0 SIXBIT/TTY/ XWD 0,0 ERRMSG: ASCIZ /?Can't open TTY/ NOECHO: SETSTS 0,IO.SUP SETSTS 0,IO.LEM POPJ 17,0 XECHO: SETSTS 0,IO.SUP SETSTS 0,IO.LEM POPJ 17,0 ;subroutine NOCRLF will do the same thing as the monitor ;command "SET TTY NO CRLF" NOCRLF: MOVNI 1,1 TRMNO. 1, ; get terminal # JRST NOOUT ;error exit MOVEM 1,CRLARG+1 ; put # in second word of TRMARG MOVEI 1,1 MOVEM 1,CRLARG+2 MOVE 2,[XWD 3,CRLARG] TRMOP. 2, ; set tty no crlf JRST OPOUT ;error exit POPJ 17, CRLARG: EXP .TOSET+.TONFC BLOCK 2 INCH: SETSTS 0,.IOPIM ; enter Packed Image Mode MOVNI 1,1 TRMNO. 1,0 ; get terminal # JRST NOOUT ;error exit MOVEM 1,TRMARG+1 ; put # in second word of TRMARG MOVE 2,[XWD 3,TRMARG] TRMOP. 2,0 ; set up breaks for PIM JRST OPOUT ;error exit INCHRW 0 ; input character MOVEM 0,@0(16) CAIE 0,33 ;if ESC, get next char JRST EX ;otherwise, exit INCHRW 0 MOVEM 0,@1(16) CAIE 0,77 ;if ?, get next char (alternate keypad) JRST EX ;otherwise exit INCHRW 0 MOVEM 0,@2(16) EX: SETSTS 0,.IOASC ; back to regular ASCII POPJ 17,0 NOOUT: OUTSTR [ASCIZ /?TRMNO Didn't work/] EXIT OPOUT: OUTSTR [ASCIZ /?TRMOP Didn't work/] EXIT OUT: OUTSTR [ASCIZ/Control-C out/] EXIT TRMARG: EXP .TOSET+.TOPBS BLOCK 1 EXP 0 INP: INCHRW 0 POPJ 17,0 END