3 <INCLUDE "VSDEFS" "VSTYPES">
5 <USE "NEWSTRUC" "VSBASE">
7 <GDECL (OPLIST) <LIST [REST ATOM OP]>>
12 OP-REPLY? <OR ATOM FALSE>
13 OP-ARGS <VECTOR [REST ANY]>
14 OP-STUFF? <OR ATOM FALSE>
15 OP-FORCE? <OR ATOM FALSE>>
19 <DEFINE COP ("TUPLE" STUFF "AUX" (REPLY?:<SPECIAL ATOM> STRING))
22 <DEFINE FOP ("TUPLE" STUFF "AUX" (FORCE?:<SPECIAL ATOM> T))
25 <DEFINE SOP (NAME CODE REPLY?:<SPECIAL ATOM> "TUPLE" STUFF)
26 <OP .NAME .CODE !.STUFF>>
28 <DEFINE ROP ("TUPLE" STUFF "AUX" (REPLY?:<SPECIAL ATOM> T))
37 <NEWTYPE COUNT-STRING FIX>
39 <MSETG SEND-PACKET-WORD-LENGTH 6>
41 <DEFINE OP (NAME CODE "TUPLE" ARGDESC "AUX" (REPLY? <AND <ASSIGNED? REPLY?>
43 (FORCE? <AND <ASSIGNED? FORCE?> .FORCE?>)
44 (SCT 0) (STUFF? <>) (STYPE <>) AVEC)
48 <FUNCTION (X "AUX" NUM)
55 (<MEMQ .X '[B S L CS CB]>
57 <COND (<NOT <0? <MOD .SCT 4>>>
58 <SET SCT <* </ <+ .SCT 4> 4> 4>>)>
59 <SET NUM <CHTYPE </ .SCT 4> LONG>>
62 <SET NUM <CHTYPE .SCT BYTE>>
65 <COND (<NOT <0? <MOD .SCT 2>>>
66 <SET SCT <+ .SCT 1>>)>
67 <SET NUM <CHTYPE </ .SCT 2> SHORT>>
68 <SET SCT <+ .SCT 2>>)>
69 <COND (<MEMQ .X '[CS CB]>
71 <SET NUM <CHTYPE .NUM COUNT-STRING>>)
73 <SET NUM <CHTYPE .NUM COUNT>>)>
80 <SETG OPLIST (.NAME <CHTYPE [.NAME .CODE .REPLY? .AVEC .STUFF? .FORCE?] OP>
85 <SOP X-CREATE-WINDOW 1 LONG F W S S S S L L>
86 <SOP X-CREATE-TRANSPARENCY 2 LONG W S S S S>
87 <FOP X-DESTROY-WINDOW 3 W>
88 <FOP X-DESTROY-SUBWINDOWS 4 W>
89 <FOP X-MAP-WINDOW 5 W>
90 <FOP X-MAP-SUBWINDOWS 6 W>
91 <FOP X-UNMAP-WINDOW 7 W>
92 <FOP X-UNMAP-SUBWINDOWS 8 W>
93 <FOP X-UNMAP-TRANSPARENT 9 W>
94 <FOP X-RAISE-WINDOW 10 W>
95 <FOP X-LOWER-WINDOW 11 W>
96 <FOP X-CIRC-WINDOW-UP 12 W>
97 <FOP X-MOVE-WINDOW 13 W S S>
98 <FOP X-CHANGE-WINDOW 14 W S S>
99 <FOP X-CONFIGURE-WINDOW 15 W S S S S>
100 <FOP X-CHANGE-BACKGROUND 16 W L>
101 <FOP X-CHANGE-BORDER 17 W L>
102 <OP X-TILE-MODE 18 F W>
103 <OP X-CLIPMODE 19 F W>
104 <ROP X-QUERY-WINDOW 20 W>
105 <OP X-STORE-NAME 21 W CS>
106 <COP X-FETCH-NAME 22 W>
107 <OP X-SET-ICON-WINDOW 23 W L>
108 <OP X-SET-RESIZE-HINT 24 W S S S S>
109 <ROP X-GET-RESIZE-HINT 25 W>
110 <FOP X-DEFINE-CURSOR 26 W L>
111 <FOP X-SELECT-INPUT 27 W L>
112 <SOP X-GRAB-MOUSE 28 ERROR W L L>
113 <SOP X-GRAB-BUTTON 29 ERROR M W L L>
114 <ROP X-QUERY-MOUSE 30 W>
115 <ROP X-INTERPRET-LOCATOR 31 W L>
116 <FOP X-WARP-MOUSE 32 W S S>
117 <FOP X-FOCUS-KEYBOARD 33 F W>
118 <FOP X-CIRC-WINDOW-DOWN 34 W>
120 <OP X-PIX-FILL 41 F M W S S S S S L>
121 <OP X-TILE-FILL 42 F M W S S S S L L>
122 <OP X-PIXMAP-PUT 43 F M W S S S S L S S>
123 <OP X-PIXMAP-BITS-PUT 44 F M W S S S S S L>
124 <OP X-BITMAP-BITS-PUT 45 F M W S S S S S S L>
125 <OP X-COPY-AREA 46 F M W S S S S S S>
126 <OP X-TEXT 47 F M W S S L S S S B B STUFF>
127 <OP X-TEXT-MASK 48 F M W S S L S S B B STUFF>
128 <OP X-LINE 49 F M W S S S S S B B>
129 <OP X-DRAW 50 F M W S S B B S S S S S STUFF>
130 <OP X-DRAW-FILLED 51 F M W S S L STUFF>
131 <SOP X-PIXMAP-SAVE 52 LONG W S S S S>
132 <COP X-PIXMAP-GET 53 F W S S S S>
134 <FOP X-UNGRAB-MOUSE 81 W>
135 <FOP X-UNGRAB-BUTTON 82 M W>
136 <SOP X-GET-COLOR 83 SHORT W S S S>
137 <SOP X-GET-COLOR-CELLS 84 SHORT F W S S>
138 <OP X-FREE-COLORS 85 M W S STUFF>
139 <OP X-STORE-COLORS 86 W S STUFF>
140 <ROP X-QUERY-COLOR 87 W S>
141 <SOP X-GET-FONT 88 LONG W S STUFF>
142 <OP X-FREE-FONT 89 W L>
143 <ROP X-QUERY-FONT 90 W L>
144 <COP X-CHAR-WIDTHS 91 W L STUFF>
145 <SOP X-STRING-WIDTH 92 SHORT W L CS>
146 <COP X-FONT-WIDTHS 93 W L>
147 <SOP X-STORE-BITMAP 94 LONG W S S STUFF>
148 <OP X-FREE-BITMAP 95 W L>
149 <SOP X-CHAR-BITMAP 96 LONG W L S>
150 <SOP X-STORE-PIXMAP 97 LONG F W S S STUFF>
151 <OP X-FREE-PIXMAP 98 W L>
152 <SOP X-MAKE-PIXMAP 99 LONG W L S S>
153 <SOP X-QUERY-SHAPE 100 LONG F W S S>
154 <SOP X-STORE-CURSOR 101 LONG F W L S S L S S>
155 <OP X-FREE-CURSOR 102 W L>
156 <FOP X-MOUSE-CONTROL 103 W S S>
157 <FOP X-FEEP-CONTROL 104 F W>
159 <FOP X-SHIFT-LOCK 106 F W>
160 <FOP X-KEY-CLICK 107 F W>
161 <FOP X-AUTO-REPEAT 108 F W>
162 <FOP X-SCREEN-SAVER 109 W S S>
163 <FOP X-STORE-BYTES 110 F W S STUFF>
164 <COP X-FETCH-BYTES 111 F W>
165 <COP X-ROTATE-CUTS 112 F W>
166 <OP X-ADD-HOST 113 W L>
167 <OP X-REMOVE-HOST 114 W L>
168 <COP X-GET-HOSTS 115 W>)>
170 <DEFMAC VSOP ('VS100 NAME "ARGS" ARGS "AUX" L OD ALIST AAL
171 (COUNTER <>) (ARGL .ARGS) (FARGL <>) (AUXL ())
172 RES (VALDECL <>) REPLY?)
173 <COND (<SET L <MEMQ .NAME ,OPLIST>>
175 <SET ALIST (<FORM O-FUNC&CODE '.PACKET <OP-CODE .OD>>)>
177 <REPEAT ((ADESC <OP-ARGS .OD>) D TEMP (GOT-FUNC? <>))
178 <COND (<EMPTY? .ADESC>
179 <COND (<AND <NOT <OP-STUFF? .OD>>
180 <NOT <EMPTY? .ARGL>>>
181 <ERROR TOO-MANY-ARGUMENTS-TO-VSOP .NAME .OD
184 <COND (<EMPTY? .ARGL>
185 <ERROR TOO-FEW-ARGUMENTS-TO-VSOP .NAME .OD .ARGS>)>
186 <COND (<TYPE? <SET D <1 .ADESC>> FIX>
187 <COND (<==? .D ,ARG-FUNC>
188 <SET GOT-FUNC? <1 .ARGL>>
190 <FORM O-FUNC&CODE '.PACKET
191 <COMBINE-BYTES <OP-CODE .OD> .GOT-FUNC?>>>)
192 (<==? .D ,ARG-WINDOW>
193 <SET AAL <REST <PUTREST .AAL
194 (<FORM O-WINDOW '.PACKET
197 <COND (<NOT .GOT-FUNC?>
199 <FORM O-FUNC-CODE-MASK
201 <COMBINE <OP-CODE .OD> <1 .ARGL>>>>)
204 <FORM O-FUNC-CODE-MASK
206 <COMBINE-FCM <OP-CODE .OD>
210 <ERROR BAD-VSOP-DESCRIPTOR .OD .D>)>)
212 <SET AAL <REST <PUTREST .AAL
214 <+ <CHTYPE .D FIX> 1>>
218 <COND (<AND <0? <MOD <CHTYPE .D FIX> 2>>
219 <NOT <EMPTY? <REST .ADESC>>>
220 <NOT <EMPTY? <REST .ARGL>>>
221 <TYPE? <2 .ADESC> SHORT>>
226 <+ </ <CHTYPE .D FIX> 2>
229 <COMBINE <1 .ARGL> <2 .ARGL>>>)>>>
230 <SET ARGL <REST .ARGL>>
231 <SET ADESC <REST .ADESC>>)
237 <+ <CHTYPE .D FIX> 1>>
241 <PROG ((OFFS <TUPLE .D <> <> <>>)
242 (ARGS <TUPLE <1 .ARGL> <> <> <>>) (CCT 1))
243 <COND (<AND <0? <MOD <CHTYPE .D FIX> 4>>
244 <NOT <EMPTY? <REST .ADESC>>>
245 <NOT <EMPTY? <REST .ARGL>>>
246 <TYPE? <2 .ADESC> SHORT BYTE>>
250 <COND (<AND <TYPE? <2 .ADESC> BYTE>
251 <NOT <EMPTY? <REST .ADESC 2>>>
252 <NOT <EMPTY? <REST .ARGL 2>>>
253 <TYPE? <3 .ADESC> SHORT BYTE>>
257 <COND (<AND <TYPE? <3 .ADESC> BYTE>
258 <NOT <EMPTY? <REST .ADESC 3>>>
259 <NOT <EMPTY? <REST .ARGL 3>>>
260 <TYPE? <4 .ADESC> BYTE>>
263 <4 .ARGS <4 .ARGL>>)>)>)
264 (<AND <0? <MOD <CHTYPE .D FIX> 2>>
265 <NOT <EMPTY? <REST .ADESC>>>
266 <NOT <EMPTY? <REST .ARGL>>>
267 <TYPE? <2 .ADESC> BYTE>>
274 (<FORM <NTH ,BYTE-MACS
275 <+ <CHTYPE .D FIX> 1>>
282 (<COMBINE-HAIRY .OFFS .ARGS .CCT
291 <SET ARGL <REST .ARGL <- .CCT 1>>>
292 <SET ADESC <REST .ADESC <- .CCT 1>>>)>>)
293 (<TYPE? .D COUNT COUNT-STRING>
294 <SET COUNTER (.D <1 .ARGL>)>)
296 <ERROR BAD-DESCRIPTOR .OD>)>
297 <SET ARGL <REST .ARGL>>
298 <SET ADESC <REST .ADESC>>>
299 <COND (<==? <OP-REPLY? .OD> T>
300 <SET VALDECL '<OR FALSE UVECTOR>>
302 (<==? <OP-REPLY? .OD> ERROR>
303 <SET VALDECL '<OR ATOM FALSE>>
305 (<==? <OP-REPLY? .OD> STRING>
306 <SET VALDECL '<OR STRING FALSE>>
309 <SET VALDECL '<OR FIX FALSE>>
310 <COND (<==? <OP-REPLY? .OD> LONG>
316 <COND (<NOT .COUNTER>
317 <COND (<==? <LENGTH .ARGL> 1>
318 <COND (<TYPE? <1 .ARGL> STRING UVECTOR>
319 <SET ARGL (<1 .ARGL> <LENGTH <1 .ARGL>>)>)
321 <SET FARGL <1 .ARGL>>
322 <SET ARGL ('.FROB <FORM LENGTH '.FROB>)>)>)>
323 <SET AUXL (('PACKET:UVECTOR ',SEND-PACKET))>
325 <SET AUXL ((FROB .FARGL) !.AUXL)>)>
329 <FORM VSB-SEND .VS100 <COND (.REPLY? T)
332 .REPLY? '.PACKET ,SEND-PACKET-WORD-LENGTH
335 <SET AUXL (('PACKET:UVECTOR ',SEND-PACKET))>
340 <+ <CHTYPE <1 .COUNTER> FIX> 1>>
343 <FORM VSB-SEND .VS100
347 '.PACKET ,SEND-PACKET-WORD-LENGTH
348 !<COND (<==? <LENGTH .ARGL> 1>
349 (<1 .ARGL> <2 .COUNTER>))
351 <COND (.VALDECL <CHTYPE [.RES .VALDECL] ADECL>)
354 <ERROR NO-SUCH-VSOP!-ERRORS .NAME VSOP>)>>
356 <DEFINE COMBINE-FCM (CODE FUNC MASK "AUX" FC)
357 <SET FC <COMBINE-BYTES .CODE .FUNC>>
360 <DEFINE COMBINE-HAIRY (OFFS:<PRIMTYPE VECTOR> ARGS:<PRIMTYPE VECTOR> CCT:FIX
362 <SET OFFS <SUBSTRUC .OFFS 0 .CCT <REST .OFFS <- <LENGTH .OFFS> .CCT>>>>
363 <SET ARGS <SUBSTRUC .ARGS 0 .CCT <REST .ARGS <- <LENGTH .ARGS> .CCT>>>>
366 <1 .V <REDUCE <1 .V>>>>
368 <COND (<AND <TYPE? <1 .OFFS> BYTE>
369 <TYPE? <2 .OFFS> SHORT>>
370 <1 .OFFS <CHTYPE </ <CHTYPE <1 .OFFS> FIX> 2> SHORT>>
371 <FORM .LMAC '.PACKET <COMBINE <1 .ARGS> <2 .ARGS>>>)
373 <FORM .SMAC '.PACKET <COMBINE-BYTES <1 .ARGS> <2 .ARGS>>>)
375 <COND (<TYPE? <3 .OFFS> SHORT>
376 <FORM .LMAC '.PACKET <COMBINE <COMBINE-BYTES <1 .ARGS>
380 <FORM .LMAC '.PACKET <COMBINE <COMBINE-BYTES <1 .ARGS>
382 <COMBINE-BYTES <3 .ARGS> 0>>>)>)
384 <FORM .LMAC '.PACKET <COMBINE <COMBINE-BYTES <1 .ARGS> <2 .ARGS>>
385 <COMBINE-BYTES <3 .ARGS> <4 .ARGS>>>>)>>
387 <DEFINE COMBINE-BYTES (X Y)
388 <COND (<AND <TYPE? .X FIX>
390 <PUTBITS .X <BITS 8 8> .Y>)
398 <FORM PUTBITS .X <BITS 8 8> .Y>)>>
400 <DEFINE COMBINE (X Y)
403 <COND (<AND <TYPE? .X FIX>
410 <FORM PUTLHW .X .Y>)>>
413 <COND (<TYPE? .X FIX> .X)
415 <COND (<TYPE? .X GVAL>)
416 (<AND <TYPE? .X FORM>
420 <SET X <CHTYPE <2 .X> GVAL>>)>
421 <COND (<AND <TYPE? .X GVAL>
422 <MANIFEST? <CHTYPE .X ATOM>>>
426 <SETG LONGS [O-LPAR0 O-LPAR1 O-LPAR2 O-LPAR3]>
427 <SETG SHORTS [O-SPAR0 O-SPAR1 O-SPAR2 O-SPAR3 O-SPAR4 O-SPAR5 O-SPAR6
429 <SETG BYTE-MACS [O-BPAR0 O-BPAR1 O-BPAR2 O-BPAR3 O-BPAR4 O-BPAR5 O-BPAR6
430 O-BPAR7 O-BPAR8 O-BPAR9 O-BPAR10 O-BPAR11 O-BPAR12 O-BPAR13