Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vax / tty / 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 <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">>
75
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>>>
82
83 <COND (<NOT <GASSIGNED? HEX>>
84 <DEFINE HEX (FROB)
85   #DECL ((FROB) STRING)
86   <REPEAT ((NUM 0) DIG BAS)
87     #DECL ((NUM) FIX)
88     <COND (<EMPTY? .FROB>
89            <RETURN .NUM>)>
90     <COND (<AND <G=? <ASCII <SET DIG <1 .FROB>>>
91                      <ASCII !\0>>
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>>
97                     <SET BAS !\A>>
98                <AND <G=? <ASCII .DIG> <ASCII !\a>>
99                     <L=? <ASCII .DIG> <ASCII !\f>>
100                     <SET BAS !\a>>>
101            <SET NUM <+ <* .NUM 16>
102                        <+ 10 <- <ASCII .DIG> <ASCII .BAS>>>>>)
103           (<RETURN #FALSE ("ILLEGAL DIGIT")>)>
104     <SET FROB <REST .FROB>>>>)>
105
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)>>
124
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>
127                                                       ,IOCPARM-MASK> 16>
128                                   <LSH .X 8> .Y> FIX>>
129 <DEFINE -IOW (X Y T) <CHTYPE <ORB ,IOC-IN <LSH <ANDB <SIZEOF .T> ,IOCPARM-MASK>
130                                                16>
131                                   <LSH .X 8> .Y> FIX>>
132 <DEFINE -IOWR (X Y T) <CHTYPE <ORB ,IOC-INOUT
133                                    <LSH <ANDB <SIZEOF .T> ,IOCPARM-MASK> 16>
134                                    <LSH .X 8> .Y> FIX>>
135
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 "
253
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 "
259
260 <MSETG FIOCLEX  <-IO !\f 1>>    ; "SET EXCLUSIVE USE ON FD "
261 <MSETG FIONCLEX <-IO !\f 2>>    ; "REMOVE EXCLUSIVE USE "
262 ; "ANOTHER LOCAL "
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 "
268
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 "
277
278 ;<MSETG SIOCADDRT <-IOW !\r 10 RTENTRY>>        ; "ADD ROUTE "
279 ;<MSETG SIOCDELRT <-IOW !\r 11 RTENTRY>>        ; "DELETE ROUTE "
280
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 "
288
289 <ENDBLOCK>