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