]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/samterm/syms
merge
[plan9front.git] / sys / src / cmd / samterm / syms
1 sizeof_1_ = 8;
2 aggr _1_
3 {
4         'D' 0 hlength;
5         'D' 4 llength;
6 };
7
8 defn
9 _1_(addr) {
10         complex _1_ addr;
11         print(" hlength ", addr.hlength, "\n");
12         print(" llength ", addr.llength, "\n");
13 };
14
15 sizeof_2_ = 8;
16 aggr _2_
17 {
18         'V' 0 length;
19         {
20         'D' 0 hlength;
21         'D' 4 llength;
22         };
23 };
24
25 defn
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
34 UTFmax = 3;
35 Runesync = 128;
36 Runeself = 128;
37 Runeerror = 128;
38 sizeofFconv = 24;
39 aggr 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
49 defn
50 Fconv(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
60 sizeofTm = 40;
61 aggr 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
75 defn
76 Tm(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
90 PNPROC = 1;
91 PNGROUP = 2;
92 sizeofLock = 4;
93 aggr Lock
94 {
95         'D' 0 val;
96 };
97
98 defn
99 Lock(addr) {
100         complex Lock addr;
101         print(" val     ", addr.val, "\n");
102 };
103
104 sizeofQLp = 12;
105 aggr QLp
106 {
107         'D' 0 inuse;
108         'A' QLp 4 next;
109         'C' 8 state;
110 };
111
112 defn
113 QLp(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
120 sizeofQLock = 16;
121 aggr QLock
122 {
123         Lock 0 lock;
124         'D' 4 locked;
125         'A' QLp 8 $head;
126         'A' QLp 12 $tail;
127 };
128
129 defn
130 QLock(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
140 sizeofRWLock = 20;
141 aggr 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
150 defn
151 RWLock(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
162 RFNAMEG = 1;
163 RFENVG = 2;
164 RFFDG = 4;
165 RFNOTEG = 8;
166 RFPROC = 16;
167 RFMEM = 32;
168 RFNOWAIT = 64;
169 RFCNAMEG = 1024;
170 RFCENVG = 2048;
171 RFCFDG = 4096;
172 RFREND = 8192;
173 sizeofQid = 8;
174 aggr Qid
175 {
176         'U' 0 path;
177         'U' 4 vers;
178 };
179
180 defn
181 Qid(addr) {
182         complex Qid addr;
183         print(" path    ", addr.path, "\n");
184         print(" vers    ", addr.vers, "\n");
185 };
186
187 sizeofDir = 116;
188 aggr 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
208 defn
209 Dir(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
227 sizeofWaitmsg = 112;
228 aggr Waitmsg
229 {
230         'a' 0 pid;
231         'a' 12 time;
232         'a' 48 msg;
233 };
234
235 defn
236 Waitmsg(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
243 DBlack = 255;
244 DBlue = 201;
245 DRed = 15;
246 DYellow = 3;
247 DGreen = 192;
248 DWhite = 0;
249 Displaybufsize = 8000;
250 ICOSSCALE = 1024;
251 Borderwidth = 4;
252 Refbackup = 0;
253 Refnone = 1;
254 Refmesg = 2;
255 Endsquare = 0;
256 Enddisc = 1;
257 Endarrow = 2;
258 Endmask = 31;
259 sizeofPoint = 8;
260 aggr Point
261 {
262         'D' 0 x;
263         'D' 4 y;
264 };
265
266 defn
267 Point(addr) {
268         complex Point addr;
269         print(" x       ", addr.x, "\n");
270         print(" y       ", addr.y, "\n");
271 };
272
273 sizeofRectangle = 16;
274 aggr Rectangle
275 {
276         Point 0 min;
277         Point 8 max;
278 };
279
280 defn
281 Rectangle(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
291 sizeofScreen = 16;
292 aggr Screen
293 {
294         'X' 0 display;
295         'D' 4 id;
296         'X' 8 image;
297         'X' 12 fill;
298 };
299
300 defn
301 Screen(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
309 sizeofDisplay = 8156;
310 aggr 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
335 defn
336 Display(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
363 sizeofImage = 56;
364 aggr 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
376 defn
377 Image(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
393 sizeofRGB = 12;
394 aggr RGB
395 {
396         'U' 0 red;
397         'U' 4 green;
398         'U' 8 blue;
399 };
400
401 defn
402 RGB(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
409 sizeofFontchar = 8;
410 aggr Fontchar
411 {
412         'D' 0 x;
413         'b' 4 top;
414         'b' 5 bottom;
415         'C' 6 left;
416         'b' 7 width;
417 };
418
419 defn
420 Fontchar(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
429 sizeofSubfont = 16;
430 aggr 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
440 defn
441 Subfont(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
451 LOG2NFCACHE = 6;
452 NFCACHE = 64;
453 NFLOOK = 5;
454 NFSUBF = 2;
455 MAXFCACHE = 1029;
456 MAXSUBF = 50;
457 DSUBF = 4;
458 SUBFAGE = 10000;
459 CACHEAGE = 10000;
460 sizeofCachefont = 16;
461 aggr Cachefont
462 {
463         'u' 0 min;
464         'u' 2 max;
465         'D' 4 offset;
466         'X' 8 name;
467         'X' 12 subfontname;
468 };
469
470 defn
471 Cachefont(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
480 sizeofCacheinfo = 8;
481 aggr Cacheinfo
482 {
483         'u' 0 x;
484         'b' 2 width;
485         'C' 3 left;
486         'u' 4 value;
487         'u' 6 age;
488 };
489
490 defn
491 Cacheinfo(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
500 sizeofCachesubf = 12;
501 aggr Cachesubf
502 {
503         'U' 0 age;
504         'A' Cachefont 4 cf;
505         'A' Subfont 8 f;
506 };
507
508 defn
509 Cachesubf(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
516 sizeofFont = 52;
517 aggr 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
536 defn
537 Font(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
556 complex Point ZP;
557 complex Rectangle ZR;
558 complex Display display;
559 complex Font font;
560 complex Image screen;
561 sizeofAlt = 20;
562 aggr Alt
563 {
564         'X' 0 c;
565         'X' 4 v;
566         'D' 8 op;
567         'X' 12 tag;
568         'U' 16 q;
569 };
570
571 defn
572 Alt(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
581 sizeofRef = 4;
582 aggr Ref
583 {
584         'D' 0 ref;
585 };
586
587 defn
588 Ref(addr) {
589         complex Ref addr;
590         print(" ref     ", addr.ref, "\n");
591 };
592
593 sizeofCursor = 72;
594 aggr Cursor
595 {
596         Point 0 offset;
597         'a' 8 clr;
598         'a' 40 set;
599 };
600
601 defn
602 Cursor(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
611 sizeofMouse = 16;
612 aggr Mouse
613 {
614         'D' 0 buttons;
615         Point 4 xy;
616         'U' 12 msec;
617 };
618
619 defn
620 Mouse(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
629 sizeofMousectl = 44;
630 aggr 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
646 defn
647 Mousectl(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
661 sizeofMenu = 12;
662 aggr Menu
663 {
664         'X' 0 item;
665         'X' 4 gen;
666         'D' 8 lasthit;
667 };
668
669 defn
670 Menu(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
677 sizeofKeyboardctl = 20;
678 aggr Keyboardctl
679 {
680         'X' 0 c;
681         'X' 4 file;
682         'D' 8 consfd;
683         'D' 12 ctlfd;
684         'D' 16 pid;
685 };
686
687 defn
688 Keyboardctl(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
697 BACK = 0;
698 HIGH = 1;
699 BORD = 2;
700 TEXT = 3;
701 HTEXT = 4;
702 NCOL = 5;
703 sizeof_3_ = 4;
704 aggr _3_
705 {
706         'd' 0 bc;
707         'd' 2 minwid;
708 };
709
710 defn
711 _3_(addr) {
712         complex _3_ addr;
713         print(" bc      ", addr.bc, "\n");
714         print(" minwid  ", addr.minwid, "\n");
715 };
716
717 sizeof_4_ = 4;
718 aggr _4_
719 {
720         'X' 0 ptr;
721         {
722         'd' 0 bc;
723         'd' 2 minwid;
724         };
725 };
726
727 defn
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
736 sizeofFrbox = 12;
737 aggr 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
750 defn
751 Frbox(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
760 complex Font font;
761 complex Display display;
762 sizeofFrame = 108;
763 aggr 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
788 defn
789 Frame(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
818 None = 0;
819 Some = 1;
820 All = 2;
821 Clicktime = 1000;
822 sizeofFlayer = 172;
823 aggr 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
838 defn
839 Flayer(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
860 Up = 0;
861 Down = 1;
862 sizeofSection = 12;
863 aggr Section
864 {
865         'D' 0 nrunes;
866         'X' 4 text;
867         'A' Section 8 next;
868 };
869
870 defn
871 Section(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
878 sizeofRasp = 8;
879 aggr Rasp
880 {
881         'D' 0 nrunes;
882         'A' Section 4 sect;
883 };
884
885 defn
886 Rasp(addr) {
887         complex Rasp addr;
888         print(" nrunes  ", addr.nrunes, "\n");
889         print(" sect    ", addr.sect\X, "\n");
890 };
891
892 sizeofText = 876;
893 aggr 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
903 defn
904 Text(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
916 sizeofReadbuf = 8196;
917 aggr Readbuf
918 {
919         'd' 0 n;
920         'a' 2 data;
921 };
922
923 defn
924 Readbuf(addr) {
925         complex Readbuf addr;
926         print(" n       ", addr.n, "\n");
927         print(" data    ", addr.data, "\n");
928 };
929
930 RHost = 0;
931 RKeyboard = 1;
932 RMouse = 2;
933 RPlumb = 3;
934 RReshape = 4;
935 NRes = 5;
936 complex Cursor bullseye;
937 complex Cursor deadmouse;
938 complex Cursor lockarrow;
939 complex Cursor cursor;
940 complex Flayer which;
941 complex Flayer work;
942 complex Text cmd;
943 complex Mousectl mousectl;
944 complex Keyboardctl keyboardctl;
945 complex Mouse mousep;
946 Tversion = 0;
947 Tstartcmdfile = 1;
948 Tcheck = 2;
949 Trequest = 3;
950 Torigin = 4;
951 Tstartfile = 5;
952 Tworkfile = 6;
953 Ttype = 7;
954 Tcut = 8;
955 Tpaste = 9;
956 Tsnarf = 10;
957 Tstartnewfile = 11;
958 Twrite = 12;
959 Tclose = 13;
960 Tlook = 14;
961 Tsearch = 15;
962 Tsend = 16;
963 Tdclick = 17;
964 Tstartsnarf = 18;
965 Tsetsnarf = 19;
966 Tack = 20;
967 Texit = 21;
968 Tplumb = 22;
969 TMAX = 23;
970 Hversion = 0;
971 Hbindname = 1;
972 Hcurrent = 2;
973 Hnewname = 3;
974 Hmovname = 4;
975 Hgrow = 5;
976 Hcheck0 = 6;
977 Hcheck = 7;
978 Hunlock = 8;
979 Hdata = 9;
980 Horigin = 10;
981 Hunlockfile = 11;
982 Hsetdot = 12;
983 Hgrowdata = 13;
984 Hmoveto = 14;
985 Hclean = 15;
986 Hdirty = 16;
987 Hcut = 17;
988 Hsetpat = 18;
989 Hdelname = 19;
990 Hclose = 20;
991 Hsetsnarf = 21;
992 Hsnarflen = 22;
993 Hack = 23;
994 Hexit = 24;
995 Hplumb = 25;
996 HMAX = 26;
997 sizeofHeader = 4;
998 aggr Header
999 {
1000         'b' 0 type;
1001         'b' 1 count0;
1002         'b' 2 count1;
1003         'a' 3 data;
1004 };
1005
1006 defn
1007 Header(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
1015 complex Text cmd;
1016 complex Cursor cursor;
1017 complex Flayer which;
1018 complex Flayer work;
1019 complex Text threadmain:t;
1020 complex Rectangle threadmain:r;
1021 complex Flayer threadmain:nwhich;
1022 complex Flayer current:nw;
1023 complex Text current:t;
1024 complex Flayer closeup:l;
1025 complex Text closeup:t;
1026 complex Text findl:t;
1027 complex Flayer duplicate:l;
1028 complex Rectangle duplicate:r;
1029 complex Font duplicate:f;
1030 complex Text duplicate:t;
1031 complex Flayer duplicate:nl;
1032 complex Rectangle getr:rp;
1033 complex Point getr:p;
1034 complex Rectangle getr:r;
1035 complex Text snarf:t;
1036 complex Flayer snarf:l;
1037 complex Text cut:t;
1038 complex Flayer cut:l;
1039 complex Text paste:t;
1040 complex Flayer scrorigin:l;
1041 complex Text scrorigin:t;
1042 complex Rasp raspc:r;
1043 complex Rasp ctlw:r;
1044 complex Rasp ctlu:r;
1045 complex Flayer center:l;
1046 complex Text center:t;
1047 complex Flayer onethird:l;
1048 complex Text onethird:t;
1049 complex Rectangle onethird:s;
1050 complex Text flushtyping:t;
1051 complex Flayer type:l;
1052 complex Text type:t;
1053 complex Flayer gettext:l;
1054 complex Text gettext:t;
1055 complex Flayer scrtotal:l;