7 <EVAL-WHEN ("SUBSYSTEM" "MIMC") <L-FLOAD "UMC-DEFS.MUD">>
9 <MSETG X-DEFAULT-KEYMAP "VSKEYMAP">
11 <REPEAT (INCHAN VECTOR NM2 FIX (STRING '["NORMAL" X-NORMAL-KEYMAP
12 "FUNCTION" X-FUNCTION-KEYMAP]))
14 <COND (<SET INCHAN <GEN-OPEN ,X-DEFAULT-KEYMAP "READ" "BINARY" DISK>>
15 <SET VECTOR <IVECTOR <CHANNEL-OP .INCHAN READ-BYTE> <>>>
16 <SET FIX <CHANNEL-OP .INCHAN READ-BYTE>>
17 <REPEAT ((UVECTOR <STACK <IUVECTOR 6>>))
18 <COND (<0? <CHANNEL-OP .INCHAN READ-BUFFER .UVECTOR>>
20 <PUT .VECTOR <- <1 .UVECTOR> .FIX -1>
21 <CHTYPE <SUBSTRUC .UVECTOR 1 5> KEY>>>
23 <MSETG <2 .STRING> [.FIX .VECTOR]>)
25 <MSETG <2 .STRING> <>>)>
26 <COND (<EMPTY? <SET STRING <REST .STRING 2>>>
29 ; "Input packet types"
34 <MSETG X-UNKNOWN-REQUEST 1>
36 <MSETG X-NO-SUCH-WINDOW 3>
37 <MSETG X-BAD-PIXMAP 4>
38 <MSETG X-BAD-BITMAP 5>
39 <MSETG X-BAD-CURSOR 6>
43 <MSETG X-ALREADY-GRABBED 10>
44 <MSETG X-BAD-ACCESS 11>
45 <MSETG X-BAD-ALLOC 12>
47 <MSETG VS-ERRORS ["Bad request code"
48 "Parameter out of range"
49 "Parameter not a window"
50 "Parameter not a pixmap"
51 "Parameter not a bitmap"
52 "Parameter not a cursor"
53 "Parameter not a font"
55 "Pixmap shape invalid for tiling"
56 "Mouse/button already grabbed"
57 "Access control violation"
58 "Insufficient resources"]>
62 <MSETG KEY-RELEASED 2>
63 <MSETG BUTTON-PRESSED 4>
64 <MSETG BUTTON-RELEASED 8>
65 <MSETG ENTER-WINDOW 16>
66 <MSETG LEAVE-WINDOW 32>
67 <MSETG MOUSE-MOVED 64>
68 <MSETG EXPOSE-WINDOW 128>
69 <MSETG EXPOSE-REGION 256>
70 <MSETG EXPOSE-COPY 512>
71 <MSETG RIGHT-DOWN-MOTION 1024>
72 <MSETG MIDDLE-DOWN-MOTION 2048>
73 <MSETG LEFT-DOWN-MOTION 4096>
74 <MSETG UNMAP-WINDOW 8192>
75 <MSETG MOTION-BITS <+ ,MOUSE-MOVED ,RIGHT-DOWN-MOTION ,MIDDLE-DOWN-MOTION
80 <MSETG X-CONTROL-MASK <HEX "4000">>
81 <MSETG X-META-MASK <HEX "2000">>
82 <MSETG X-SHIFT-MASK <HEX "1000">>
83 <MSETG X-SHIFT-LOCK-MASK <HEX "800">>
84 <MSETG X-LEFT-MASK <HEX "400">>
85 <MSETG X-MIDDLE-MASK <HEX "200">>
86 <MSETG X-RIGHT-MASK <HEX "100">>
88 ; "There are three kinds of keys--shift keys, function keys, and normal keys.
89 Shifts are shift, shift-lock, control, and symbol; function keys are everything
91 <MSETG KEY-MIN-SHIFT 174>
92 <MSETG KEY-MAX-SHIFT 177>
94 <MSETG KEY-MIN-FCN 86>
95 <MSETG KEY-MAX-FCN 170>
97 <MSETG KEY-MIN-NORM 188>
98 <MSETG KEY-MAX-NORM 251>
101 <DEFINE DEFINE-BYTE (NAME WHICH "AUX" OFFS)
102 <SET OFFS </ <+ .WHICH 3> 4>>
104 (<FEATURE? "COMPILER">
105 <EVAL <FORM DEFMAC .NAME (<FORM QUOTE P> "OPTIONAL" <FORM QUOTE NEW>)
107 (<FORM ASSIGNED? NEW>
112 <FORM FORM .OFFS '.P>
113 <BITS 8 <* <MOD <- .WHICH 1> 4> 8>>
117 <FORM FORM .OFFS '.P>
118 <BITS 8 <* <MOD <- .WHICH 1> 4> 8>>>)>>>)
120 <EVAL <FORM DEFINE .NAME (P "OPTIONAL" NEW)
121 <FORM COND (<FORM ASSIGNED? NEW>
123 <FORM PUTBITS <FORM .OFFS '.P>
124 <BITS 8 <* <MOD <- .WHICH 1> 4> 8>>
129 <BITS 8 <* <MOD <- .WHICH 1> 4> 8>>>)>>>)>>
131 <DEFINE DEFINE-WORD (NAME WHICH "OPTIONAL" (SIZE WORD)
132 "AUX" OFFS LEFT? (LONG? <>) (COMPILER? <>))
133 #DECL ((NAME) ATOM (WHICH) FIX)
134 <COND (<==? .SIZE WORD>
135 <SET OFFS </ <+ .WHICH 1> 2>>
136 <SET LEFT? <0? <MOD .WHICH 2>>>)
138 <COND (<0? <MOD .WHICH 2>>
139 <ERROR LONG-WORD-STARTS-IN-LEFT-HALF .NAME
140 .WHICH DEFINE-WORD>)>
141 <SET OFFS </ <+ .WHICH 1> 2>>
145 <SETG .NAME <OFFSET .OFFS UVECTOR>>
149 (<FEATURE? "COMPILER">
152 (<FORM QUOTE P> "OPTIONAL" <FORM QUOTE NEW>)
154 (<FORM ASSIGNED? NEW>
161 <FORM FORM .OFFS '.P>
166 <FORM FORM .OFFS '.P>
173 <FORM FORM LHW <FORM FORM .OFFS '.P>>)
175 <FORM FORM RHW <FORM FORM .OFFS '.P>>)>))
176 <FORM FORM COND (<FORM FORM 0?
177 <FORM FORM ANDB ''.TEMP
181 <FORM FORM PUTLHW ''.TEMP -1>)>>)>>>)
183 <EVAL <FORM DEFINE .NAME (P "OPTIONAL" NEW "AUX" TEMP)
184 <FORM COND (<FORM ASSIGNED? NEW>
187 <FORM PUTLHW <FORM .OFFS '.P>
190 <FORM PUTRHW <FORM .OFFS '.P>
203 <FORM LHW <FORM .OFFS '.P>>)
205 <FORM RHW <FORM .OFFS '.P>>)>>
207 <FORM PUTLHW '.TEMP -1>)
211 (<GASSIGNED? DEFINE-WORD>
212 ; "Fields of input packet"
213 <DEFINE-WORD I-LPAR0 3 LONG>
214 <DEFINE-WORD I-LPAR1 5 LONG>
215 <DEFINE-WORD I-LPAR2 7 LONG>
216 <DEFINE-WORD I-LPAR3 9 LONG>
217 <DEFINE-WORD I-LPAR4 11 LONG>
219 <DEFINE-WORD I-SPAR0 3>
220 <DEFINE-WORD I-SPAR1 4>
221 <DEFINE-WORD I-SPAR2 5>
222 <DEFINE-WORD I-SPAR3 6>
223 <DEFINE-WORD I-SPAR4 7>
224 <DEFINE-WORD I-SPAR5 8>
225 <DEFINE-WORD I-SPAR6 9>
226 <DEFINE-WORD I-SPAR7 10>
227 <DEFINE-WORD I-SPAR8 11>
228 <DEFINE-WORD I-SPAR9 12>
230 <DEFINE-BYTE I-BPAR0 5>
231 <DEFINE-BYTE I-BPAR1 6>
232 <DEFINE-BYTE I-BPAR2 7>
233 <DEFINE-BYTE I-BPAR3 8>
234 <DEFINE-BYTE I-BPAR4 9>
235 <DEFINE-BYTE I-BPAR5 10>
236 <DEFINE-BYTE I-BPAR6 11>
237 <DEFINE-BYTE I-BPAR7 12>
238 <DEFINE-BYTE I-BPAR8 13>
239 <DEFINE-BYTE I-BPAR9 14>
240 <DEFINE-BYTE I-BPAR10 15>
241 <DEFINE-BYTE I-BPAR11 16>
242 <DEFINE-BYTE I-BPAR12 17>
243 <DEFINE-BYTE I-BPAR13 18>
244 <DEFINE-BYTE I-BPAR14 19>
245 <DEFINE-BYTE I-BPAR15 20>
246 <DEFINE-BYTE I-BPAR16 21>
247 <DEFINE-BYTE I-BPAR17 22>
248 <DEFINE-BYTE I-BPAR18 23>
249 <DEFINE-BYTE I-BPAR19 24>
251 <MSETG VSERR-REQNUM ,I-LPAR0>
252 <MSETG VSERR-ERRCODE ,I-BPAR4>
253 <MSETG VSERR-REQCODE ,I-BPAR5>
254 <MSETG VSERR-REQFUNC ,I-BPAR6>
255 <MSETG VSERR-WINDOW ,I-LPAR2>
257 <DEFINE-WORD VSI-CODE 1 LONG>
258 <MSETG VSI-WINDOW ,I-LPAR0>
259 <MSETG VSI-TIME ,I-SPAR2>
260 <SETG VSI-DETAIL ,I-SPAR3>
261 <SETG VSI-X ,I-SPAR4>
262 <SETG VSI-Y ,I-SPAR5>
263 <MSETG VSI-SUBWINDOW ,I-LPAR3>
264 <MSETG VSI-LOC ,I-LPAR4>
265 <SETG VSI-TOP ,I-SPAR8>
266 <SETG VSI-LEFT ,I-SPAR9>
268 <SETG I-ERRCODE ,I-BPAR4>
270 ; "Fields of output packet"
271 <DEFINE-BYTE O-CODE 1>
272 <DEFINE-BYTE O-FCN 2>
273 <DEFINE-WORD O-FUNC&CODE 1>
274 <DEFINE-WORD O-MASK 2>
275 <DEFINE-WORD O-FUNC-CODE-MASK 1 LONG>
276 <DEFINE-WORD O-WINDOW 3 LONG>
278 <DEFINE-BYTE O-BPAR0 9>
279 <DEFINE-BYTE O-BPAR1 10>
280 <DEFINE-BYTE O-BPAR2 11>
281 <DEFINE-BYTE O-BPAR3 12>
282 <DEFINE-BYTE O-BPAR4 13>
283 <DEFINE-BYTE O-BPAR5 14>
284 <DEFINE-BYTE O-BPAR6 15>
285 <DEFINE-BYTE O-BPAR7 16>
286 <DEFINE-BYTE O-BPAR8 17>
287 <DEFINE-BYTE O-BPAR9 18>
288 <DEFINE-BYTE O-BPAR10 19>
289 <DEFINE-BYTE O-BPAR11 20>
290 <DEFINE-BYTE O-BPAR12 21>
291 <DEFINE-BYTE O-BPAR13 22>
292 <DEFINE-BYTE O-BPAR14 23>
293 <DEFINE-BYTE O-BPAR15 24>
295 <DEFINE-WORD O-SPAR0 5>
296 <DEFINE-WORD O-SPAR1 6>
297 <DEFINE-WORD O-SPAR2 7>
298 <DEFINE-WORD O-SPAR3 8>
299 <DEFINE-WORD O-SPAR4 9>
300 <DEFINE-WORD O-SPAR5 10>
301 <DEFINE-WORD O-SPAR6 11>
302 <DEFINE-WORD O-SPAR7 12>
304 <DEFINE-WORD O-LPAR0 5 LONG>
305 <DEFINE-WORD O-LPAR1 7 LONG>
306 <DEFINE-WORD O-LPAR2 9 LONG>
307 <DEFINE-WORD O-LPAR3 11 LONG>)>
313 <MSETG VWM-CURSOR 16>
314 <MSETG VWM-DEFAULT <+ ,VWM-PAGE ,VWM-WRAP ,VWM-ITS ,VWM-CURSOR>>
315 <MSETG VWM-INVERT 32>
317 <DEFMAC TEST-VW-MODE ('MODE "ARGS" STUFF)
318 <FORM NOT <FORM 0? <FORM ANDB .MODE !.STUFF>>>>
320 <DEFMAC UPDATE-MC ('CH 'X "OPTIONAL" 'Y "AUX" (L ()))
321 <COND (<AND <ASSIGNED? X> .X <OR <NOT <STRUCTURED? .X>>
323 <SET L (<COND (<TYPE? .X LIST>
324 <FORM MC-HPOS '.SU <FORM + <FORM MC-HPOS '.SU>
326 (<FORM MC-HPOS '.SU .X>)>)>)>
327 <COND (<AND <ASSIGNED? Y> .Y <OR <NOT <STRUCTURED? .Y>>
329 <SET L (<COND (<TYPE? .Y LIST>
330 <FORM MC-VPOS '.SU <FORM + <FORM MC-VPOS '.SU>
332 (<FORM MC-VPOS '.SU .Y>)> !.L)>)>
333 <COND (<NOT <EMPTY? .L>>
334 <FORM BIND ((SU <FORM CHANNEL-USER .CH>))
335 <FORM COND (<FORM TYPE? '.SU MUD-CHAN> !.L)>>)>>