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