Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 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;