xref: /plan9/sys/src/cmd/samterm/syms (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1sizeof_1_ = 8;
2aggr _1_
3{
4	'D' 0 hlength;
5	'D' 4 llength;
6};
7
8defn
9_1_(addr) {
10	complex _1_ addr;
11	print("	hlength	", addr.hlength, "\n");
12	print("	llength	", addr.llength, "\n");
13};
14
15sizeof_2_ = 8;
16aggr _2_
17{
18	'V' 0 length;
19	{
20	'D' 0 hlength;
21	'D' 4 llength;
22	};
23};
24
25defn
26_2_(addr) {
27	complex _2_ addr;
28	print("	length	", addr.length, "\n");
29	print("_1_ {\n");
30		_1_(addr+0);
31	print("}\n");
32};
33
34UTFmax = 3;
35Runesync = 128;
36Runeself = 128;
37Runeerror = 128;
38sizeofFconv = 24;
39aggr Fconv
40{
41	'X' 0 out;
42	'X' 4 eout;
43	'D' 8 f1;
44	'D' 12 f2;
45	'D' 16 f3;
46	'D' 20 chr;
47};
48
49defn
50Fconv(addr) {
51	complex Fconv addr;
52	print("	out	", addr.out\X, "\n");
53	print("	eout	", addr.eout\X, "\n");
54	print("	f1	", addr.f1, "\n");
55	print("	f2	", addr.f2, "\n");
56	print("	f3	", addr.f3, "\n");
57	print("	chr	", addr.chr, "\n");
58};
59
60sizeofTm = 40;
61aggr Tm
62{
63	'D' 0 sec;
64	'D' 4 min;
65	'D' 8 hour;
66	'D' 12 mday;
67	'D' 16 mon;
68	'D' 20 year;
69	'D' 24 wday;
70	'D' 28 yday;
71	'a' 32 zone;
72	'D' 36 tzoff;
73};
74
75defn
76Tm(addr) {
77	complex Tm addr;
78	print("	sec	", addr.sec, "\n");
79	print("	min	", addr.min, "\n");
80	print("	hour	", addr.hour, "\n");
81	print("	mday	", addr.mday, "\n");
82	print("	mon	", addr.mon, "\n");
83	print("	year	", addr.year, "\n");
84	print("	wday	", addr.wday, "\n");
85	print("	yday	", addr.yday, "\n");
86	print("	zone	", addr.zone, "\n");
87	print("	tzoff	", addr.tzoff, "\n");
88};
89
90PNPROC = 1;
91PNGROUP = 2;
92sizeofLock = 4;
93aggr Lock
94{
95	'D' 0 val;
96};
97
98defn
99Lock(addr) {
100	complex Lock addr;
101	print("	val	", addr.val, "\n");
102};
103
104sizeofQLp = 12;
105aggr QLp
106{
107	'D' 0 inuse;
108	'A' QLp 4 next;
109	'C' 8 state;
110};
111
112defn
113QLp(addr) {
114	complex QLp addr;
115	print("	inuse	", addr.inuse, "\n");
116	print("	next	", addr.next\X, "\n");
117	print("	state	", addr.state, "\n");
118};
119
120sizeofQLock = 16;
121aggr QLock
122{
123	Lock 0 lock;
124	'D' 4 locked;
125	'A' QLp 8 $head;
126	'A' QLp 12 $tail;
127};
128
129defn
130QLock(addr) {
131	complex QLock addr;
132	print("Lock lock {\n");
133	Lock(addr.lock);
134	print("}\n");
135	print("	locked	", addr.locked, "\n");
136	print("	$head	", addr.$head\X, "\n");
137	print("	$tail	", addr.$tail\X, "\n");
138};
139
140sizeofRWLock = 20;
141aggr RWLock
142{
143	Lock 0 lock;
144	'D' 4 readers;
145	'D' 8 writer;
146	'A' QLp 12 $head;
147	'A' QLp 16 $tail;
148};
149
150defn
151RWLock(addr) {
152	complex RWLock addr;
153	print("Lock lock {\n");
154	Lock(addr.lock);
155	print("}\n");
156	print("	readers	", addr.readers, "\n");
157	print("	writer	", addr.writer, "\n");
158	print("	$head	", addr.$head\X, "\n");
159	print("	$tail	", addr.$tail\X, "\n");
160};
161
162RFNAMEG = 1;
163RFENVG = 2;
164RFFDG = 4;
165RFNOTEG = 8;
166RFPROC = 16;
167RFMEM = 32;
168RFNOWAIT = 64;
169RFCNAMEG = 1024;
170RFCENVG = 2048;
171RFCFDG = 4096;
172RFREND = 8192;
173sizeofQid = 8;
174aggr Qid
175{
176	'U' 0 path;
177	'U' 4 vers;
178};
179
180defn
181Qid(addr) {
182	complex Qid addr;
183	print("	path	", addr.path, "\n");
184	print("	vers	", addr.vers, "\n");
185};
186
187sizeofDir = 116;
188aggr Dir
189{
190	'a' 0 name;
191	'a' 28 uid;
192	'a' 56 gid;
193	Qid 84 qid;
194	'U' 92 mode;
195	'D' 96 atime;
196	'D' 100 mtime;
197	{
198	'V' 104 length;
199	{
200	'D' 104 hlength;
201	'D' 108 llength;
202	};
203	};
204	'u' 112 type;
205	'u' 114 dev;
206};
207
208defn
209Dir(addr) {
210	complex Dir addr;
211	print("	name	", addr.name, "\n");
212	print("	uid	", addr.uid, "\n");
213	print("	gid	", addr.gid, "\n");
214	print("Qid qid {\n");
215	Qid(addr.qid);
216	print("}\n");
217	print("	mode	", addr.mode, "\n");
218	print("	atime	", addr.atime, "\n");
219	print("	mtime	", addr.mtime, "\n");
220	print("_2_ {\n");
221		_2_(addr+104);
222	print("}\n");
223	print("	type	", addr.type, "\n");
224	print("	dev	", addr.dev, "\n");
225};
226
227sizeofWaitmsg = 112;
228aggr Waitmsg
229{
230	'a' 0 pid;
231	'a' 12 time;
232	'a' 48 msg;
233};
234
235defn
236Waitmsg(addr) {
237	complex Waitmsg addr;
238	print("	pid	", addr.pid, "\n");
239	print("	time	", addr.time, "\n");
240	print("	msg	", addr.msg, "\n");
241};
242
243DBlack = 255;
244DBlue = 201;
245DRed = 15;
246DYellow = 3;
247DGreen = 192;
248DWhite = 0;
249Displaybufsize = 8000;
250ICOSSCALE = 1024;
251Borderwidth = 4;
252Refbackup = 0;
253Refnone = 1;
254Refmesg = 2;
255Endsquare = 0;
256Enddisc = 1;
257Endarrow = 2;
258Endmask = 31;
259sizeofPoint = 8;
260aggr Point
261{
262	'D' 0 x;
263	'D' 4 y;
264};
265
266defn
267Point(addr) {
268	complex Point addr;
269	print("	x	", addr.x, "\n");
270	print("	y	", addr.y, "\n");
271};
272
273sizeofRectangle = 16;
274aggr Rectangle
275{
276	Point 0 min;
277	Point 8 max;
278};
279
280defn
281Rectangle(addr) {
282	complex Rectangle addr;
283	print("Point min {\n");
284	Point(addr.min);
285	print("}\n");
286	print("Point max {\n");
287	Point(addr.max);
288	print("}\n");
289};
290
291sizeofScreen = 16;
292aggr Screen
293{
294	'X' 0 display;
295	'D' 4 id;
296	'X' 8 image;
297	'X' 12 fill;
298};
299
300defn
301Screen(addr) {
302	complex Screen addr;
303	print("	display	", addr.display\X, "\n");
304	print("	id	", addr.id, "\n");
305	print("	image	", addr.image\X, "\n");
306	print("	fill	", addr.fill\X, "\n");
307};
308
309sizeofDisplay = 8156;
310aggr Display
311{
312	QLock 0 qlock;
313	'D' 16 dirno;
314	'D' 20 fd;
315	'D' 24 reffd;
316	'D' 28 ctlfd;
317	'D' 32 imageid;
318	'D' 36 $local;
319	'D' 40 ldepth;
320	'X' 44 error;
321	'X' 48 devdir;
322	'X' 52 windir;
323	'a' 56 oldlabel;
324	'U' 120 dataqid;
325	'X' 124 ones;
326	'X' 128 zeros;
327	'X' 132 image;
328	'a' 136 buf;
329	'X' 8140 bufp;
330	'X' 8144 defaultfont;
331	'X' 8148 defaultsubfont;
332	'X' 8152 windows;
333};
334
335defn
336Display(addr) {
337	complex Display addr;
338	print("QLock qlock {\n");
339	QLock(addr.qlock);
340	print("}\n");
341	print("	dirno	", addr.dirno, "\n");
342	print("	fd	", addr.fd, "\n");
343	print("	reffd	", addr.reffd, "\n");
344	print("	ctlfd	", addr.ctlfd, "\n");
345	print("	imageid	", addr.imageid, "\n");
346	print("	$local	", addr.$local, "\n");
347	print("	ldepth	", addr.ldepth, "\n");
348	print("	error	", addr.error\X, "\n");
349	print("	devdir	", addr.devdir\X, "\n");
350	print("	windir	", addr.windir\X, "\n");
351	print("	oldlabel	", addr.oldlabel, "\n");
352	print("	dataqid	", addr.dataqid, "\n");
353	print("	ones	", addr.ones\X, "\n");
354	print("	zeros	", addr.zeros\X, "\n");
355	print("	image	", addr.image\X, "\n");
356	print("	buf	", addr.buf, "\n");
357	print("	bufp	", addr.bufp\X, "\n");
358	print("	defaultfont	", addr.defaultfont\X, "\n");
359	print("	defaultsubfont	", addr.defaultsubfont\X, "\n");
360	print("	windows	", addr.windows\X, "\n");
361};
362
363sizeofImage = 56;
364aggr Image
365{
366	'A' Display 0 display;
367	'D' 4 id;
368	Rectangle 8 r;
369	Rectangle 24 clipr;
370	'D' 40 ldepth;
371	'D' 44 repl;
372	'A' Screen 48 screen;
373	'A' Image 52 next;
374};
375
376defn
377Image(addr) {
378	complex Image addr;
379	print("	display	", addr.display\X, "\n");
380	print("	id	", addr.id, "\n");
381	print("Rectangle r {\n");
382	Rectangle(addr.r);
383	print("}\n");
384	print("Rectangle clipr {\n");
385	Rectangle(addr.clipr);
386	print("}\n");
387	print("	ldepth	", addr.ldepth, "\n");
388	print("	repl	", addr.repl, "\n");
389	print("	screen	", addr.screen\X, "\n");
390	print("	next	", addr.next\X, "\n");
391};
392
393sizeofRGB = 12;
394aggr RGB
395{
396	'U' 0 red;
397	'U' 4 green;
398	'U' 8 blue;
399};
400
401defn
402RGB(addr) {
403	complex RGB addr;
404	print("	red	", addr.red, "\n");
405	print("	green	", addr.green, "\n");
406	print("	blue	", addr.blue, "\n");
407};
408
409sizeofFontchar = 8;
410aggr Fontchar
411{
412	'D' 0 x;
413	'b' 4 top;
414	'b' 5 bottom;
415	'C' 6 left;
416	'b' 7 width;
417};
418
419defn
420Fontchar(addr) {
421	complex Fontchar addr;
422	print("	x	", addr.x, "\n");
423	print("	top	", addr.top, "\n");
424	print("	bottom	", addr.bottom, "\n");
425	print("	left	", addr.left, "\n");
426	print("	width	", addr.width, "\n");
427};
428
429sizeofSubfont = 16;
430aggr Subfont
431{
432	'X' 0 name;
433	'd' 4 n;
434	'b' 6 height;
435	'C' 7 ascent;
436	'A' Fontchar 8 info;
437	'A' Image 12 bits;
438};
439
440defn
441Subfont(addr) {
442	complex Subfont addr;
443	print("	name	", addr.name\X, "\n");
444	print("	n	", addr.n, "\n");
445	print("	height	", addr.height, "\n");
446	print("	ascent	", addr.ascent, "\n");
447	print("	info	", addr.info\X, "\n");
448	print("	bits	", addr.bits\X, "\n");
449};
450
451LOG2NFCACHE = 6;
452NFCACHE = 64;
453NFLOOK = 5;
454NFSUBF = 2;
455MAXFCACHE = 1029;
456MAXSUBF = 50;
457DSUBF = 4;
458SUBFAGE = 10000;
459CACHEAGE = 10000;
460sizeofCachefont = 16;
461aggr Cachefont
462{
463	'u' 0 min;
464	'u' 2 max;
465	'D' 4 offset;
466	'X' 8 name;
467	'X' 12 subfontname;
468};
469
470defn
471Cachefont(addr) {
472	complex Cachefont addr;
473	print("	min	", addr.min, "\n");
474	print("	max	", addr.max, "\n");
475	print("	offset	", addr.offset, "\n");
476	print("	name	", addr.name\X, "\n");
477	print("	subfontname	", addr.subfontname\X, "\n");
478};
479
480sizeofCacheinfo = 8;
481aggr Cacheinfo
482{
483	'u' 0 x;
484	'b' 2 width;
485	'C' 3 left;
486	'u' 4 value;
487	'u' 6 age;
488};
489
490defn
491Cacheinfo(addr) {
492	complex Cacheinfo addr;
493	print("	x	", addr.x, "\n");
494	print("	width	", addr.width, "\n");
495	print("	left	", addr.left, "\n");
496	print("	value	", addr.value, "\n");
497	print("	age	", addr.age, "\n");
498};
499
500sizeofCachesubf = 12;
501aggr Cachesubf
502{
503	'U' 0 age;
504	'A' Cachefont 4 cf;
505	'A' Subfont 8 f;
506};
507
508defn
509Cachesubf(addr) {
510	complex Cachesubf addr;
511	print("	age	", addr.age, "\n");
512	print("	cf	", addr.cf\X, "\n");
513	print("	f	", addr.f\X, "\n");
514};
515
516sizeofFont = 52;
517aggr Font
518{
519	'X' 0 name;
520	'A' Display 4 display;
521	'd' 8 height;
522	'd' 10 ascent;
523	'D' 12 maxldepth;
524	'd' 16 width;
525	'd' 18 ldepth;
526	'd' 20 nsub;
527	'U' 24 age;
528	'D' 28 ncache;
529	'D' 32 nsubf;
530	'A' Cacheinfo 36 cache;
531	'A' Cachesubf 40 subf;
532	'A' Cachefont 44 sub;
533	'A' Image 48 cacheimage;
534};
535
536defn
537Font(addr) {
538	complex Font addr;
539	print("	name	", addr.name\X, "\n");
540	print("	display	", addr.display\X, "\n");
541	print("	height	", addr.height, "\n");
542	print("	ascent	", addr.ascent, "\n");
543	print("	maxldepth	", addr.maxldepth, "\n");
544	print("	width	", addr.width, "\n");
545	print("	ldepth	", addr.ldepth, "\n");
546	print("	nsub	", addr.nsub, "\n");
547	print("	age	", addr.age, "\n");
548	print("	ncache	", addr.ncache, "\n");
549	print("	nsubf	", addr.nsubf, "\n");
550	print("	cache	", addr.cache\X, "\n");
551	print("	subf	", addr.subf\X, "\n");
552	print("	sub	", addr.sub\X, "\n");
553	print("	cacheimage	", addr.cacheimage\X, "\n");
554};
555
556complex Point ZP;
557complex Rectangle ZR;
558complex Display display;
559complex Font font;
560complex Image screen;
561sizeofAlt = 20;
562aggr Alt
563{
564	'X' 0 c;
565	'X' 4 v;
566	'D' 8 op;
567	'X' 12 tag;
568	'U' 16 q;
569};
570
571defn
572Alt(addr) {
573	complex Alt addr;
574	print("	c	", addr.c\X, "\n");
575	print("	v	", addr.v\X, "\n");
576	print("	op	", addr.op, "\n");
577	print("	tag	", addr.tag\X, "\n");
578	print("	q	", addr.q, "\n");
579};
580
581sizeofRef = 4;
582aggr Ref
583{
584	'D' 0 ref;
585};
586
587defn
588Ref(addr) {
589	complex Ref addr;
590	print("	ref	", addr.ref, "\n");
591};
592
593sizeofCursor = 72;
594aggr Cursor
595{
596	Point 0 offset;
597	'a' 8 clr;
598	'a' 40 set;
599};
600
601defn
602Cursor(addr) {
603	complex Cursor addr;
604	print("Point offset {\n");
605	Point(addr.offset);
606	print("}\n");
607	print("	clr	", addr.clr, "\n");
608	print("	set	", addr.set, "\n");
609};
610
611sizeofMouse = 16;
612aggr Mouse
613{
614	'D' 0 buttons;
615	Point 4 xy;
616	'U' 12 msec;
617};
618
619defn
620Mouse(addr) {
621	complex Mouse addr;
622	print("	buttons	", addr.buttons, "\n");
623	print("Point xy {\n");
624	Point(addr.xy);
625	print("}\n");
626	print("	msec	", addr.msec, "\n");
627};
628
629sizeofMousectl = 44;
630aggr Mousectl
631{
632	{
633	'D' 0 buttons;
634	Point 4 xy;
635	'U' 12 msec;
636	};
637	'X' 16 c;
638	'X' 20 reshapec;
639	'X' 24 file;
640	'D' 28 mfd;
641	'D' 32 cfd;
642	'D' 36 pid;
643	'A' Image 40 image;
644};
645
646defn
647Mousectl(addr) {
648	complex Mousectl addr;
649	print("Mouse {\n");
650		Mouse(addr+0);
651	print("}\n");
652	print("	c	", addr.c\X, "\n");
653	print("	reshapec	", addr.reshapec\X, "\n");
654	print("	file	", addr.file\X, "\n");
655	print("	mfd	", addr.mfd, "\n");
656	print("	cfd	", addr.cfd, "\n");
657	print("	pid	", addr.pid, "\n");
658	print("	image	", addr.image\X, "\n");
659};
660
661sizeofMenu = 12;
662aggr Menu
663{
664	'X' 0 item;
665	'X' 4 gen;
666	'D' 8 lasthit;
667};
668
669defn
670Menu(addr) {
671	complex Menu addr;
672	print("	item	", addr.item\X, "\n");
673	print("	gen	", addr.gen\X, "\n");
674	print("	lasthit	", addr.lasthit, "\n");
675};
676
677sizeofKeyboardctl = 20;
678aggr Keyboardctl
679{
680	'X' 0 c;
681	'X' 4 file;
682	'D' 8 consfd;
683	'D' 12 ctlfd;
684	'D' 16 pid;
685};
686
687defn
688Keyboardctl(addr) {
689	complex Keyboardctl addr;
690	print("	c	", addr.c\X, "\n");
691	print("	file	", addr.file\X, "\n");
692	print("	consfd	", addr.consfd, "\n");
693	print("	ctlfd	", addr.ctlfd, "\n");
694	print("	pid	", addr.pid, "\n");
695};
696
697BACK = 0;
698HIGH = 1;
699BORD = 2;
700TEXT = 3;
701HTEXT = 4;
702NCOL = 5;
703sizeof_3_ = 4;
704aggr _3_
705{
706	'd' 0 bc;
707	'd' 2 minwid;
708};
709
710defn
711_3_(addr) {
712	complex _3_ addr;
713	print("	bc	", addr.bc, "\n");
714	print("	minwid	", addr.minwid, "\n");
715};
716
717sizeof_4_ = 4;
718aggr _4_
719{
720	'X' 0 ptr;
721	{
722	'd' 0 bc;
723	'd' 2 minwid;
724	};
725};
726
727defn
728_4_(addr) {
729	complex _4_ addr;
730	print("	ptr	", addr.ptr\X, "\n");
731	print("_3_ {\n");
732		_3_(addr+0);
733	print("}\n");
734};
735
736sizeofFrbox = 12;
737aggr Frbox
738{
739	'D' 0 wid;
740	'D' 4 nrune;
741	{
742	'X' 8 ptr;
743	{
744	'd' 8 bc;
745	'd' 10 minwid;
746	};
747	};
748};
749
750defn
751Frbox(addr) {
752	complex Frbox addr;
753	print("	wid	", addr.wid, "\n");
754	print("	nrune	", addr.nrune, "\n");
755	print("_4_ {\n");
756		_4_(addr+8);
757	print("}\n");
758};
759
760complex Font font;
761complex Display display;
762sizeofFrame = 108;
763aggr Frame
764{
765	'A' Font 0 font;
766	'A' Display 4 display;
767	'A' Image 8 b;
768	'a' 12 cols;
769	Rectangle 32 r;
770	Rectangle 48 entire;
771	'X' 64 scroll;
772	'A' Frbox 68 box;
773	'U' 72 p0;
774	'U' 76 p1;
775	'u' 80 nbox;
776	'u' 82 nalloc;
777	'u' 84 maxtab;
778	'u' 86 nchars;
779	'u' 88 nlines;
780	'u' 90 maxlines;
781	'u' 92 lastlinefull;
782	'u' 94 modified;
783	'A' Image 96 tick;
784	'A' Image 100 tickback;
785	'D' 104 ticked;
786};
787
788defn
789Frame(addr) {
790	complex Frame addr;
791	print("	font	", addr.font\X, "\n");
792	print("	display	", addr.display\X, "\n");
793	print("	b	", addr.b\X, "\n");
794	print("	cols	", addr.cols, "\n");
795	print("Rectangle r {\n");
796	Rectangle(addr.r);
797	print("}\n");
798	print("Rectangle entire {\n");
799	Rectangle(addr.entire);
800	print("}\n");
801	print("	scroll	", addr.scroll\X, "\n");
802	print("	box	", addr.box\X, "\n");
803	print("	p0	", addr.p0, "\n");
804	print("	p1	", addr.p1, "\n");
805	print("	nbox	", addr.nbox, "\n");
806	print("	nalloc	", addr.nalloc, "\n");
807	print("	maxtab	", addr.maxtab, "\n");
808	print("	nchars	", addr.nchars, "\n");
809	print("	nlines	", addr.nlines, "\n");
810	print("	maxlines	", addr.maxlines, "\n");
811	print("	lastlinefull	", addr.lastlinefull, "\n");
812	print("	modified	", addr.modified, "\n");
813	print("	tick	", addr.tick\X, "\n");
814	print("	tickback	", addr.tickback\X, "\n");
815	print("	ticked	", addr.ticked, "\n");
816};
817
818None = 0;
819Some = 1;
820All = 2;
821Clicktime = 1000;
822sizeofFlayer = 172;
823aggr Flayer
824{
825	Frame 0 f;
826	'D' 108 origin;
827	'D' 112 p0;
828	'D' 116 p1;
829	'D' 120 click;
830	'X' 124 textfn;
831	'D' 128 user0;
832	'X' 132 user1;
833	Rectangle 136 entire;
834	Rectangle 152 scroll;
835	'D' 168 visible;
836};
837
838defn
839Flayer(addr) {
840	complex Flayer addr;
841	print("Frame f {\n");
842	Frame(addr.f);
843	print("}\n");
844	print("	origin	", addr.origin, "\n");
845	print("	p0	", addr.p0, "\n");
846	print("	p1	", addr.p1, "\n");
847	print("	click	", addr.click, "\n");
848	print("	textfn	", addr.textfn\X, "\n");
849	print("	user0	", addr.user0, "\n");
850	print("	user1	", addr.user1\X, "\n");
851	print("Rectangle entire {\n");
852	Rectangle(addr.entire);
853	print("}\n");
854	print("Rectangle scroll {\n");
855	Rectangle(addr.scroll);
856	print("}\n");
857	print("	visible	", addr.visible, "\n");
858};
859
860Up = 0;
861Down = 1;
862sizeofSection = 12;
863aggr Section
864{
865	'D' 0 nrunes;
866	'X' 4 text;
867	'A' Section 8 next;
868};
869
870defn
871Section(addr) {
872	complex Section addr;
873	print("	nrunes	", addr.nrunes, "\n");
874	print("	text	", addr.text\X, "\n");
875	print("	next	", addr.next\X, "\n");
876};
877
878sizeofRasp = 8;
879aggr Rasp
880{
881	'D' 0 nrunes;
882	'A' Section 4 sect;
883};
884
885defn
886Rasp(addr) {
887	complex Rasp addr;
888	print("	nrunes	", addr.nrunes, "\n");
889	print("	sect	", addr.sect\X, "\n");
890};
891
892sizeofText = 876;
893aggr Text
894{
895	Rasp 0 rasp;
896	'd' 8 nwin;
897	'd' 10 front;
898	'u' 12 tag;
899	'C' 14 lock;
900	'a' 16 l;
901};
902
903defn
904Text(addr) {
905	complex Text addr;
906	print("Rasp rasp {\n");
907	Rasp(addr.rasp);
908	print("}\n");
909	print("	nwin	", addr.nwin, "\n");
910	print("	front	", addr.front, "\n");
911	print("	tag	", addr.tag, "\n");
912	print("	lock	", addr.lock, "\n");
913	print("	l	", addr.l, "\n");
914};
915
916sizeofReadbuf = 8196;
917aggr Readbuf
918{
919	'd' 0 n;
920	'a' 2 data;
921};
922
923defn
924Readbuf(addr) {
925	complex Readbuf addr;
926	print("	n	", addr.n, "\n");
927	print("	data	", addr.data, "\n");
928};
929
930RHost = 0;
931RKeyboard = 1;
932RMouse = 2;
933RPlumb = 3;
934RReshape = 4;
935NRes = 5;
936complex Cursor bullseye;
937complex Cursor deadmouse;
938complex Cursor lockarrow;
939complex Cursor cursor;
940complex Flayer which;
941complex Flayer work;
942complex Text cmd;
943complex Mousectl mousectl;
944complex Keyboardctl keyboardctl;
945complex Mouse mousep;
946Tversion = 0;
947Tstartcmdfile = 1;
948Tcheck = 2;
949Trequest = 3;
950Torigin = 4;
951Tstartfile = 5;
952Tworkfile = 6;
953Ttype = 7;
954Tcut = 8;
955Tpaste = 9;
956Tsnarf = 10;
957Tstartnewfile = 11;
958Twrite = 12;
959Tclose = 13;
960Tlook = 14;
961Tsearch = 15;
962Tsend = 16;
963Tdclick = 17;
964Tstartsnarf = 18;
965Tsetsnarf = 19;
966Tack = 20;
967Texit = 21;
968Tplumb = 22;
969TMAX = 23;
970Hversion = 0;
971Hbindname = 1;
972Hcurrent = 2;
973Hnewname = 3;
974Hmovname = 4;
975Hgrow = 5;
976Hcheck0 = 6;
977Hcheck = 7;
978Hunlock = 8;
979Hdata = 9;
980Horigin = 10;
981Hunlockfile = 11;
982Hsetdot = 12;
983Hgrowdata = 13;
984Hmoveto = 14;
985Hclean = 15;
986Hdirty = 16;
987Hcut = 17;
988Hsetpat = 18;
989Hdelname = 19;
990Hclose = 20;
991Hsetsnarf = 21;
992Hsnarflen = 22;
993Hack = 23;
994Hexit = 24;
995Hplumb = 25;
996HMAX = 26;
997sizeofHeader = 4;
998aggr Header
999{
1000	'b' 0 type;
1001	'b' 1 count0;
1002	'b' 2 count1;
1003	'a' 3 data;
1004};
1005
1006defn
1007Header(addr) {
1008	complex Header addr;
1009	print("	type	", addr.type, "\n");
1010	print("	count0	", addr.count0, "\n");
1011	print("	count1	", addr.count1, "\n");
1012	print("	data	", addr.data, "\n");
1013};
1014
1015complex Text cmd;
1016complex Cursor cursor;
1017complex Flayer which;
1018complex Flayer work;
1019complex Text threadmain:t;
1020complex Rectangle threadmain:r;
1021complex Flayer threadmain:nwhich;
1022complex Flayer current:nw;
1023complex Text current:t;
1024complex Flayer closeup:l;
1025complex Text closeup:t;
1026complex Text findl:t;
1027complex Flayer duplicate:l;
1028complex Rectangle duplicate:r;
1029complex Font duplicate:f;
1030complex Text duplicate:t;
1031complex Flayer duplicate:nl;
1032complex Rectangle getr:rp;
1033complex Point getr:p;
1034complex Rectangle getr:r;
1035complex Text snarf:t;
1036complex Flayer snarf:l;
1037complex Text cut:t;
1038complex Flayer cut:l;
1039complex Text paste:t;
1040complex Flayer scrorigin:l;
1041complex Text scrorigin:t;
1042complex Rasp raspc:r;
1043complex Rasp ctlw:r;
1044complex Rasp ctlu:r;
1045complex Flayer center:l;
1046complex Text center:t;
1047complex Flayer onethird:l;
1048complex Text onethird:t;
1049complex Rectangle onethird:s;
1050complex Text flushtyping:t;
1051complex Flayer type:l;
1052complex Text type:t;
1053complex Flayer gettext:l;
1054complex Text gettext:t;
1055complex Flayer scrtotal:l;
1056