plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

syms (17698B)


      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;