1 ; "TTYCHARS, SGTTY, TTYDEV, AND IOCTL.H"
9 <MSETG TTYCHARS-SIZE 14>
37 "ttychars offsets (don't seem to be any ioctls to play with these"
54 <MSETG T-INTRC 1> ; "INTERRUPT "
55 <MSETG T-QUITC 2> ; "QUIT "
56 <MSETG T-STARTC 3> ; "START OUTPUT "
57 <MSETG T-STOPC 4> ; "STOP OUTPUT "
58 <MSETG T-EOFC 5> ; "END-OF-FILE "
59 <MSETG T-BRKC 6> ; "INPUT DELIMITER (LIKE NL) "
62 <MSETG T-SUSPC 1> ; "STOP PROCESS SIGNAL "
63 <MSETG T-DSUSPC 2> ; "DELAYED STOP PROCESS SIGNAL "
64 <MSETG T-RPRNTC 3> ; "REPRINT LINE "
65 <MSETG T-FLUSHC 4> ; "FLUSH OUTPUT (TOGGLES) "
66 <MSETG T-WERASC 5> ; "WORD ERASE "
67 <MSETG T-LNEXTC 6> ; "LITERAL NEXT CHARACTER "
69 <MSETG LTCHAR-DEFAULTS <STRING <ASCII 26> ;"Char Cntl-Z"
70 <ASCII 25> ;"Char Cntl-Y"
71 <ASCII 18> ;"Char Cntl-R"
72 <ASCII 15> ;"Char Cntl-O"
73 <ASCII 23> ;"Char Cntl-W"
74 <ASCII 22> ;"Char Cntl-V">>
76 <MSETG TCHAR-DEFAULTS <STRING <ASCII 7> ;"Char Bell"
77 <ASCII 1> ;"Char Cntl-A"
78 <ASCII 19> ;"Char Cntl-S"
79 <ASCII 17> ;"Char Cntl-Q"
80 <ASCII 4> ;"Char Cntl-D"
81 <CHTYPE -1 CHARACTER>>>
83 <COND (<NOT <GASSIGNED? HEX>>
86 <REPEAT ((NUM 0) DIG BAS)
90 <COND (<AND <G=? <ASCII <SET DIG <1 .FROB>>>
92 <L=? <ASCII .DIG> <ASCII !\9>>>
93 <SET NUM <+ <* .NUM 16>
94 <- <ASCII .DIG> <ASCII !\0>>>>)
95 (<OR <AND <G=? <ASCII .DIG> <ASCII !\A>>
96 <L=? <ASCII .DIG> <ASCII !\F>>
98 <AND <G=? <ASCII .DIG> <ASCII !\a>>
99 <L=? <ASCII .DIG> <ASCII !\f>>
101 <SET NUM <+ <* .NUM 16>
102 <+ 10 <- <ASCII .DIG> <ASCII .BAS>>>>>)
103 (<RETURN #FALSE ("ILLEGAL DIGIT")>)>
104 <SET FROB <REST .FROB>>>>)>
106 ; "IOCTL'S HAVE THE COMMAND ENCODED IN THE LOWER WORD,
107 AND THE SIZE OF ANY IN OR OUT PARAMETERS IN THE UPPER
108 WORD. THE HIGH 2 BITS OF THE UPPER WORD ARE USED
109 TO ENCODE THE IN/OUT STATUS OF THE PARAMETER; FOR NOW
110 WE RESTRICT PARAMETERS TO AT MOST 128 BYTES."
111 <MSETG IOCPARM-MASK <HEX "7F">> ; "PARAMETERS MUST BE < 128 BYTES "
112 <MSETG IOC-VOID <HEX "20000000">> ; "NO PARAMETERS "
113 <MSETG IOC-OUT <HEX "40000000">> ; "COPY OUT PARAMETERS "
114 <MSETG IOC-IN <HEX "80000000">> ; "COPY IN PARAMETERS "
115 <MSETG IOC-INOUT <ORB ,IOC-IN ,IOC-OUT>>
116 ; "THE <HEX "20000000"> IS SO WE CAN DISTINGUISH NEW IOCTL'S FROM OLD "
117 <DEFINE SIZEOF (FROB)
118 <COND (<==? .FROB CHAR> ,CHAR-SIZE)
119 (<==? .FROB INT> ,INT-SIZE)
120 (<==? .FROB TCHARS> ,TCHARS-SIZE)
121 (<==? .FROB LTCHARS> ,LTCHARS-SIZE)
122 (<==? .FROB TTYCHARS> ,TTYCHARS-SIZE)
123 (<==? .FROB SGTTYB> ,SGTTYB-SIZE)>>
125 <DEFINE -IO (X Y) <CHTYPE <ORB ,IOC-VOID <LSH .X 8> .Y> FIX>>
126 <DEFINE -IOR (X Y T) <CHTYPE <ORB ,IOC-OUT <LSH <ANDB <SIZEOF .T>
129 <DEFINE -IOW (X Y T) <CHTYPE <ORB ,IOC-IN <LSH <ANDB <SIZEOF .T> ,IOCPARM-MASK>
132 <DEFINE -IOWR (X Y T) <CHTYPE <ORB ,IOC-INOUT
133 <LSH <ANDB <SIZEOF .T> ,IOCPARM-MASK> 16>
136 ; "TTY IOCTL COMMANDS"
137 <MSETG TIOCGETD <-IOR !\t 0 INT>> ; "GET LINE DISCIPLINE "
138 <MSETG TIOCSETD <-IOW !\t 1 INT>> ; "SET LINE DISCIPLINE "
139 <MSETG TIOCHPCL <-IO !\t 2>> ; "HANG UP ON LAST CLOSE "
140 <MSETG TIOCMODG <-IOR !\t 3 INT>> ; "GET MODEM CONTROL STATE "
141 <MSETG TIOCMODS <-IOW !\t 4 INT>> ; "SET MODEM CONTROL STATE "
142 <MSETG TIOCM-LE *0001*> ; "LINE ENABLE "
143 <MSETG TIOCM-DTR *0002*> ; "DATA TERMINAL READY "
144 <MSETG TIOCM-RTS *0004*> ; "REQUEST TO SEND "
145 <MSETG TIOCM-ST *0010*> ; "SECONDARY TRANSMIT "
146 <MSETG TIOCM-SR *0020*> ; "SECONDARY RECEIVE "
147 <MSETG TIOCM-CTS *0040*> ; "CLEAR TO SEND "
148 <MSETG TIOCM-CAR *0100*> ; "CARRIER DETECT "
149 <MSETG TIOCM-CD TIOCM-CAR>
150 <MSETG TIOCM-RNG *0200*> ; "RING "
151 <MSETG TIOCM-RI TIOCM-RNG>
152 <MSETG TIOCM-DSR *0400*> ; "DATA SET READY "
153 <MSETG TIOCGETP <-IOR !\t 8 SGTTYB>>; "GET PARAMETERS -- GTTY "
154 <MSETG TIOCSETP <-IOW !\t 9 SGTTYB>>; "SET PARAMETERS -- STTY "
155 <MSETG TIOCSETN <-IOW !\t 10 SGTTYB>>; "AS ABOVE BUT NO FLUSHTTY "
156 <MSETG TIOCEXCL <-IO !\t 13>> ; "SET EXCLUSIVE USE OF TTY "
157 <MSETG TIOCNXCL <-IO !\t 14>> ; "RESET EXCLUSIVE USE OF TTY "
158 <MSETG TIOCFLUSH <-IOW !\t 16 INT>> ; "FLUSH BUFFERS "
159 <MSETG TIOCSETC <-IOW !\t 17 TCHARS>>; "SET SPECIAL CHARACTERS "
160 <MSETG TIOCGETC <-IOR !\t 18 TCHARS>>; "GET SPECIAL CHARACTERS "
161 <MSETG TANDEM <HEX "00000001">> ; "SEND STOPC ON OUT Q FULL "
162 <MSETG CBREAK <HEX "00000002">> ; "HALF-COOKED MODE "
163 <MSETG LCASE <HEX "00000004">> ; "SIMULATE LOWER CASE "
164 <MSETG ECHO <HEX "00000008">> ; "ECHO INPUT "
165 <MSETG CRMOD <HEX "00000010">> ; "MAP \R TO \R\N ON OUTPUT "
166 <MSETG RAW <HEX "00000020">> ; "NO I/O PROCESSING "
167 <MSETG ODDP <HEX "00000040">> ; "GET/SEND ODD PARITY "
168 <MSETG EVENP <HEX "00000080">> ; "GET/SEND EVEN PARITY "
169 <MSETG ANYP <HEX "000000C0">> ; "GET ANY PARITY/SEND NONE "
170 <MSETG NLDELAY <HEX "00000300">> ; "\N DELAY "
171 <MSETG NL0 <HEX "00000000">>
172 <MSETG NL1 <HEX "00000100">> ; "TTY 37 "
173 <MSETG NL2 <HEX "00000200">> ; "VT05 "
174 <MSETG NL3 <HEX "00000300">>
175 <MSETG TBDELAY <HEX "00000C00">> ; "HORIZONTAL TAB DELAY "
176 <MSETG TAB0 <HEX "00000000">>
177 <MSETG TAB1 <HEX "00000400">> ; "TTY 37 "
178 <MSETG TAB2 <HEX "00000800">>
179 <MSETG XTABS <HEX "00000C00">> ; "EXPAND TABS ON OUTPUT "
180 <MSETG CRDELAY <HEX "00003000">> ; "\R DELAY "
181 <MSETG CR0 <HEX "00000000">>
182 <MSETG CR1 <HEX "00001000">> ; "TN 300 "
183 <MSETG CR2 <HEX "00002000">> ; "TTY 37 "
184 <MSETG CR3 <HEX "00003000">> ; "CONCEPT 100 "
185 <MSETG VTDELAY <HEX "00004000">> ; "VERTICAL TAB DELAY "
186 <MSETG FF0 <HEX "00000000">>
187 <MSETG FF1 <HEX "00004000">> ; "TTY 37 "
188 <MSETG BSDELAY <HEX "00008000">> ; "\B DELAY "
189 <MSETG BS0 <HEX "00000000">>
190 <MSETG BS1 <HEX "00008000">>
191 <MSETG ALLDELAY <CHTYPE <ORB ,NLDELAY ,TBDELAY ,CRDELAY ,VTDELAY ,BSDELAY> FIX>>
192 <MSETG CRTBS <HEX "00010000">> ; "DO BACKSPACING FOR CRT "
193 <MSETG PRTERA <HEX "00020000">> ; "\ ... / ERASE "
194 <MSETG CRTERA <HEX "00040000">> ; "" \B " TO WIPE OUT CHAR "
195 <MSETG TILDE <HEX "00080000">> ; "HAZELTINE TILDE KLUDGE "
196 <MSETG MDMBUF <HEX "00100000">> ; "START/STOP OUTPUT ON CARRIER INTR "
197 <MSETG LITOUT <HEX "00200000">> ; "LITERAL OUTPUT "
198 <MSETG TOSTOP <HEX "00400000">> ; "SIGSTOP ON BACKGROUND OUTPUT "
199 <MSETG FLUSHO <HEX "00800000">> ; "FLUSH OUTPUT TO TERMINAL "
200 <MSETG NOHANG <HEX "01000000">> ; "NO SIGHUP ON CARRIER DROP "
201 <MSETG L001000 <HEX "02000000">>
202 <MSETG CRTKIL <HEX "04000000">> ; "KILL LINE WITH " \B " "
203 <MSETG L004000 <HEX "08000000">>
204 <MSETG CTLECH <HEX "10000000">> ; "ECHO CONTROL CHARS AS ^X "
205 <MSETG PENDIN <HEX "20000000">> ; "TP->T-RAWQ NEEDS REREAD "
206 <MSETG DECCTQ <HEX "40000000">> ; "ONLY ^Q STARTS AFTER ^S "
207 <MSETG NOFLSH <HEX "80000000">> ; "NO OUTPUT FLUSH ON SIGNAL "
208 ; "LOCALS FROM 127 DOWN "
209 <MSETG TIOCLBIS <-IOW !\t 127 INT>> ; "BIS LOCAL MODE BITS "
210 <MSETG TIOCLBIC <-IOW !\t 126 INT>> ; "BIC LOCAL MODE BITS "
211 <MSETG TIOCLSET <-IOW !\t 125 INT>> ; "SET ENTIRE LOCAL MODE WORD "
212 <MSETG TIOCLGET <-IOR !\t 124 INT>> ; "GET LOCAL MODES "
213 <MSETG LCRTBS <LSH ,CRTBS 16>>
214 <MSETG LPRTERA <LSH ,PRTERA 16>>
215 <MSETG LCRTERA <LSH ,CRTERA 16>>
216 <MSETG LTILDE <LSH ,TILDE 16>>
217 <MSETG LMDMBUF <LSH ,MDMBUF 16>>
218 <MSETG LLITOUT <LSH ,LITOUT 16>>
219 <MSETG LTOSTOP <LSH ,TOSTOP 16>>
220 <MSETG LFLUSHO <LSH ,FLUSHO 16>>
221 <MSETG LNOHANG <LSH ,NOHANG 16>>
222 <MSETG LCRTKIL <LSH ,CRTKIL 16>>
223 <MSETG LCTLECH <LSH ,CTLECH 16>>
224 <MSETG LPENDIN <LSH ,PENDIN 16>>
225 <MSETG LDECCTQ <LSH ,DECCTQ 16>>
226 <MSETG LNOFLSH <LSH ,NOFLSH 16>>
227 <MSETG TIOCSBRK <-IO !\t 123>> ; "SET BREAK BIT "
228 <MSETG TIOCCBRK <-IO !\t 122>> ; "CLEAR BREAK BIT "
229 <MSETG TIOCSDTR <-IO !\t 121>> ; "SET DATA TERMINAL READY "
230 <MSETG TIOCCDTR <-IO !\t 120>> ; "CLEAR DATA TERMINAL READY "
231 <MSETG TIOCGPGRP <-IOR !\t 119 INT>> ; "GET PGRP OF TTY "
232 <MSETG TIOCSPGRP <-IOW !\t 118 INT>> ; "SET PGRP OF TTY "
233 <MSETG TIOCSLTC <-IOW !\t 117 LTCHARS>>; "SET LOCAL SPECIAL CHARS "
234 <MSETG TIOCGLTC <-IOR !\t 116 LTCHARS>>; "GET LOCAL SPECIAL CHARS "
235 <MSETG TIOCOUTQ <-IOR !\t 115 INT>> ; "OUTPUT QUEUE SIZE "
236 <MSETG TIOCSTI <-IOW !\t 114 CHAR>> ; "SIMULATE TERMINAL INPUT "
237 <MSETG TIOCNOTTY <-IO !\t 113>> ; "VOID TTY ASSOCIATION "
238 <MSETG TIOCPKT <-IOW !\t 112 INT>> ; "PTY: SET/CLEAR PACKET MODE "
239 <MSETG TIOCPKT-DATA <HEX "00">> ; "DATA PACKET "
240 <MSETG TIOCPKT-FLUSHREAD <HEX "01">> ; "FLUSH PACKET "
241 <MSETG TIOCPKT-FLUSHWRITE <HEX "02">> ; "FLUSH PACKET "
242 <MSETG TIOCPKT-STOP <HEX "04">> ; "STOP OUTPUT "
243 <MSETG TIOCPKT-START <HEX "08">> ; "START OUTPUT "
244 <MSETG TIOCPKT-NOSTOP <HEX "10">> ; "NO MORE ^S,^Q "
245 <MSETG TIOCPKT-DOSTOP <HEX "20">> ; "NOW DO ^S ^Q "
246 <MSETG TIOCSTOP <-IO !\t 111>> ; "STOP OUTPUT LIKE ^S "
247 <MSETG TIOCSTART <-IO !\t 110>> ; "START OUTPUT LIKE ^Q "
248 <MSETG TIOCMSET <-IOW !\t 109 INT>> ; "SET ALL MODEM BITS "
249 <MSETG TIOCMBIS <-IOW !\t 108 INT>> ; "BIS MODEM BITS "
250 <MSETG TIOCMBIC <-IOW !\t 107 INT>> ; "BIC MODEM BITS "
251 <MSETG TIOCMGET <-IOR !\t 106 INT>> ; "GET ALL MODEM BITS "
252 <MSETG TIOCREMOTE <-IO !\t 105>> ; "REMOTE INPUT EDITING "
254 <MSETG OTTYDISC *0*> ; "OLD V7 STD TTY DRIVER "
255 <MSETG NETLDISC 1> ; "LINE DISCIP FOR BERK NET "
256 <MSETG NTTYDISC 2> ; "NEW TTY DISCIPLINE "
257 <MSETG TABLDISC 3> ; "HITACHI TABLET DISCIPLINE "
258 <MSETG NTABLDISC 4> ; "GTCO TABLET DISCIPLINE "
260 <MSETG FIOCLEX <-IO !\f 1>> ; "SET EXCLUSIVE USE ON FD "
261 <MSETG FIONCLEX <-IO !\f 2>> ; "REMOVE EXCLUSIVE USE "
263 <MSETG FIONREAD <-IOR !\f 127 INT>> ; "GET # BYTES TO READ "
264 <MSETG FIONBIO <-IOW !\f 126 INT>> ; "SET/CLEAR NON-BLOCKING I/O "
265 <MSETG FIOASYNC <-IOW !\f 125 INT>> ; "SET/CLEAR ASYNC I/O "
266 <MSETG FIOSETOWN <-IOW !\f 124 INT>> ; "SET OWNER "
267 <MSETG FIOGETOWN <-IOR !\f 123 INT>> ; "GET OWNER "
269 ; "SOCKET I/O CONTROLS "
270 <MSETG SIOCSHIWAT <-IOW !\s 0 INT>> ; "SET HIGH WATERMARK "
271 <MSETG SIOCGHIWAT <-IOR !\s 1 INT>> ; "GET HIGH WATERMARK "
272 <MSETG SIOCSLOWAT <-IOW !\s 2 INT>> ; "SET LOW WATERMARK "
273 <MSETG SIOCGLOWAT <-IOR !\s 3 INT>> ; "GET LOW WATERMARK "
274 <MSETG SIOCATMARK <-IOR !\s 7 INT>> ; "AT OOB MARK? "
275 <MSETG SIOCSPGRP <-IOW !\s 8 INT>> ; "SET PROCESS GROUP "
276 <MSETG SIOCGPGRP <-IOR !\s 9 INT>> ; "GET PROCESS GROUP "
278 ;<MSETG SIOCADDRT <-IOW !\r 10 RTENTRY>> ; "ADD ROUTE "
279 ;<MSETG SIOCDELRT <-IOW !\r 11 RTENTRY>> ; "DELETE ROUTE "
281 ;<MSETG SIOCSIFADDR <-IOW !\i 12 IFREQ>> ; "SET IFNET ADDRESS "
282 ;<MSETG SIOCGIFADDR <-IOWR !\i 13 IFREQ>> ; "GET IFNET ADDRESS "
283 ;<MSETG SIOCSIFDSTADDR <-IOW !\i 14 IFREQ>> ; "SET P-P ADDRESS "
284 ;<MSETG SIOCGIFDSTADDR <-IOWR !\i 15 IFREQ>> ; "GET P-P ADDRESS "
285 ;<MSETG SIOCSIFFLAGS <-IOW !\i 16 IFREQ>> ; "SET IFNET FLAGS "
286 ;<MSETG SIOCGIFFLAGS <-IOWR !\i 17 IFREQ>> ; "GET IFNET FLAGS "
287 ;<MSETG SIOCGIFCONF <-IOWR !\i 20 IFCONF>> ; "GET IFNET LIST "