URI:
       tsyms - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tsyms (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;