5 <DEFINE OC-TTY-OP (OP:ATOM ARGS:LIST
6 "AUX" (STUFF:<OR FALSE LIST> <GETPROP .OP TTY-OC>))
10 <COND (<TYPE? .INS LIST>
13 <COND (<TYPE? .X ARG-NO>
23 <APPLY <1 .INS> .ARGS !<REST .INS>>)>>
27 <COND (<GASSIGNED? OC-TTY-OP> <PUTPROP TTY OC-INDICATOR ,OC-TTY-OP>)>
30 <PUTPROP SET-ECHO-MODE TTY-OC
31 '((MOVE O1* #ARG-NO 1)
32 (MOVE O1* ,OC-CHANNEL-DATA (O1*))
33 (MOVE B* ,OC-TT-RFCUR (O1*))
34 <DO-ECHO-SET #ARG-NO 2>)>
36 <DEFINE DO-ECHO-SET (ARGS:LIST ARGNO
37 "AUX" (ARG <NTH .ARGS <CHTYPE .ARGNO FIX>>) LBL (CHOMP <>))
39 <OCEMIT TRZN B* ,TT-ECO>)
40 (<NOT <TYPE? .ARG ATOM>>
41 <OCEMIT TROE B* ,TT-ECO>)
44 <LOAD-TYPE O* <OBJ-TYP .ARG>>
45 <OCEMIT CAIE O* !<TYPE-CODE FALSE T>>
46 <OCEMIT TRON B* ,TT-ECO>
47 <OCEMIT TRZN B* ,TT-ECO>)>
48 <OCEMIT JRST <SET LBL <GENLBL "NOSFMOD">>>
50 <OCEMIT CAIE O* !<TYPE-CODE FALSE T>>
51 <OCEMIT TRO B* ,TT-ECO>)>
52 <OCEMIT MOVEM B* ,OC-TT-RFCUR '(O1*)>
53 <OCEMIT MOVE A* ,OC-TT-RJFN '(O1*)>
55 <OCEMIT JUMP P* <XJUMP IOERR>>
58 <PUTPROP CLEAR-EOL TTY-OC
59 '((MOVE O2* #ARG-NO 1)
60 (MOVE O1* ,OC-CHANNEL-DATA (O2*))
61 (SKIPE O* ,OC-TT-WBUF (O1*))
62 (SKIPN O* ,OC-TT-WBC (O1*))
64 <CALL-DUMP-WRITE-BUFFER>
66 (MOVE A* ,OC-TT-WJFN (O1*))
69 (OCEMIT JUMP P* <XJUMP IOERR>))>
71 <DEFINE CALL-DUMP-WRITE-BUFFER (ARGS:LIST "AUX" GC)
72 <COND (<AND ,GLUE-MODE <MEMQ DUMP-WRITE-BUFFER ,PRE-NAMES>>
73 <FRAME!-MIMOC (<SET GC <GENLBL "?FRM">> DUMP-WRITE-BUFFER)>)
75 <FRAME!-MIMOC '('DUMP-WRITE-BUFFER)>)>
76 <OCEMIT PUSH ,OC-CHANNEL-DATA-1 '(O2*)>
77 <OCEMIT PUSH ,OC-CHANNEL-DATA '(O2*)>
78 <CALL!-MIMOC (''DUMP-WRITE-BUFFER 1 !<COND (.GC (.GC)) (ELSE ())>)>>
81 <CHANNEL-OP 'TTY 'WRITE-BYTE INCHAN9 CHR24>
83 <CHANNEL-OP 'TTY 'GET-READ-BUFFER INCHAN9 = TEMP43>
85 <DEFINE TTY-GET-READ (TTY OPER "OPTIONAL" NEW
86 "AUX" (DATA <CHANNEL-DATA .TTY>))
87 #DECL ((TTY) CHANNEL (DATA) TTY-CHANNEL (NEW) STRING)
88 <COND (<ASSIGNED? NEW>
94 <CHANNEL-OP 'TTY 'BUFLEN INCHAN9 TEMP43>
96 <DEFINE TTY-BUFLEN (TTY OPER "OPTIONAL" NEW "AUX" (DATA <CHANNEL-DATA .TTY>))
97 #DECL ((TTY) CHANNEL (DATA) TTY-CHANNEL (NEW) FIX)
98 <COND (<ASSIGNED? NEW>
104 <CHANNEL-OP 'TTY 'DOWN-CURSOR INCHAN9>
107 <DEFINE HOME-CURSOR (TTY OPER)
108 #DECL ((TTY) CHANNEL)
110 <DPYOP <CHANNEL-DATA .TTY> ,/VTHOM>>
112 <DEFINE BOTTOM-CURSOR (TTY OPER)
113 #DECL ((TTY) CHANNEL)
115 <DPYOP <CHANNEL-DATA .TTY> ,/VTHMD>>
117 <DEFINE HOR-POS-CURSOR (TTY OPER X)
118 #DECL ((TTY) CHANNEL)
120 <DPYOP <CHANNEL-DATA .TTY> ,/VTHRZ .X>>
122 <DEFINE VER-POS-CURSOR (TTY OPER Y)
123 #DECL ((TTY) CHANNEL)
124 <UPDATE-MC .TTY <> .Y>
125 <DPYOP <CHANNEL-DATA .TTY> ,/VTVRT .Y>>
127 <DEFINE MOVE-CURSOR (TTY OPER X Y "AUX" (CD <CHANNEL-DATA .TTY>))
128 #DECL ((TTY) CHANNEL (CD) TTY-CHANNEL)
129 <UPDATE-MC .TTY .X .Y>
130 ; "Caused by tops-20 bug with binary output"
131 <CALL SYSOP SFPOS <TT-WJFN .CD> -1>
134 <ORB <LSH .Y 18> <ANDB .X *777777*>>>>
136 <DEFINE BACK-CURSOR (TTY OPER "OPTIONAL" (N 1))
137 #DECL ((TTY) CHANNEL (N) FIX)
138 <UPDATE-MC .TTY (<- .N>)>
139 <DPYOP <CHANNEL-DATA .TTY> ,/VTBCK .N>>
141 <DEFINE DOWN-CURSOR (TTY OPER "OPTIONAL" (N 1))
142 #DECL ((TTY) CHANNEL (N) FIX)
143 <UPDATE-MC .TTY <> (.N)>
144 <DPYOP <CHANNEL-DATA .TTY> ,/VTDWN .N>>
146 <DEFINE UP-CURSOR (TTY OPER "OPTIONAL" (N 1))
147 #DECL ((TTY) CHANNEL (N) FIX)
148 <UPDATE-MC .TTY <> (<- .N>)>
149 <DPYOP <CHANNEL-DATA .TTY> ,/VTUP .N>>
151 <DEFINE FORWARD-CURSOR (TTY OPER "OPTIONAL" (N 1))
152 #DECL ((TTY) CHANNEL (N) FIX)
153 <UPDATE-MC .TTY (.N)>
154 <DPYOP <CHANNEL-DATA .TTY> ,/VTFWD .N>>
158 <DEFINE SAVE-CURSOR (TTY OPER)
159 #DECL ((TTY) CHANNEL)
160 <DPYOP <CHANNEL-DATA .TTY> ,/VTSAV>>
162 <DEFINE RESTORE-CURSOR (TTY OPER)
163 #DECL ((TTY) CHANNEL)
164 <DPYOP <CHANNEL-DATA .TTY> ,/VTRES>>
166 <CHANNEL-OP 'TTY 'INSERT-LINE INCHAN9 1>
168 <DEFINE INSERT-LINE (TTY OPER
169 "OPTIONAL" (N 1) (TOP <>) (BOT <>)
170 "AUX" (DATA <CHANNEL-DATA .TTY>))
171 #DECL ((TTY) CHANNEL (N) FIX (TOP BOT) <OR FIX FALSE>
174 (<NOT <OR .TOP .BOT>> <DPYOP .DATA ,/VTLID .N>)
176 <COND (<NOT .TOP> <SET TOP <GET-TTY-PARM .DATA PAGE-Y>>)>
177 <COND (<NOT .BOT> <SET BOT <- <GET-TTY-PARM .DATA PAGE-HEIGHT>
182 <ORB <LSH .TOP 18> <ANDB .BOT *777777*>>>)>>
186 <DEFINE INSERT-CHAR (TTY OPER
187 "OPTIONAL" (N 1) (LEFT <>) (RIGHT <>)
188 "AUX" (DATA <CHANNEL-DATA .TTY>))
189 #DECL ((TTY) CHANNEL (N) FIX (LEFT RIGHT) <OR FIX FALSE>)
190 <COND (<NOT <OR .LEFT .RIGHT>> <DPYOP .DATA ,/VTCID .N>)
192 <COND (<NOT .LEFT> <SET LEFT <GET-TTY-PARM .DATA PAGE-X>>)>
194 <SET RIGHT <- <GET-TTY-PARM .DATA PAGE-WIDTH> 1>>)>
198 <ORB <ANDB .RIGHT *777777000000*> .LEFT>>)>>
201 <CHANNEL-OP 'TTY 'ERASE-CHAR INCHAN9>
204 <DEFINE KILL-CHAR (TTY OPER)
205 #DECL ((TTY) CHANNEL)
206 <DPYOP <CHANNEL-DATA .TTY> ,/VTERA>>
209 <DEFINE ERASE-CHAR (TTY OPER "OPTIONAL" (N 1) "AUX" (SU <CHANNEL-USER .TTY>))
210 #DECL ((TTY) CHANNEL (N) FIX)
211 <UPDATE-MC .TTY (<- .N>)>
212 <DPYOP <CHANNEL-DATA .TTY> ,/VTBEC .N>>
215 <CHANNEL-OP 'TTY 'WRITE-BUFFER INCHAN9 BUF4 END7>