sizeof_1_ = 8; aggr _1_ { 'D' 0 hlength; 'D' 4 llength; }; defn _1_(addr) { complex _1_ addr; print(" hlength ", addr.hlength, "\n"); print(" llength ", addr.llength, "\n"); }; sizeof_2_ = 8; aggr _2_ { 'V' 0 length; { 'D' 0 hlength; 'D' 4 llength; }; }; defn _2_(addr) { complex _2_ addr; print(" length ", addr.length, "\n"); print("_1_ {\n"); _1_(addr+0); print("}\n"); }; UTFmax = 3; Runesync = 128; Runeself = 128; Runeerror = 128; sizeofFconv = 24; aggr Fconv { 'X' 0 out; 'X' 4 eout; 'D' 8 f1; 'D' 12 f2; 'D' 16 f3; 'D' 20 chr; }; defn Fconv(addr) { complex Fconv addr; print(" out ", addr.out\X, "\n"); print(" eout ", addr.eout\X, "\n"); print(" f1 ", addr.f1, "\n"); print(" f2 ", addr.f2, "\n"); print(" f3 ", addr.f3, "\n"); print(" chr ", addr.chr, "\n"); }; sizeofTm = 40; aggr Tm { 'D' 0 sec; 'D' 4 min; 'D' 8 hour; 'D' 12 mday; 'D' 16 mon; 'D' 20 year; 'D' 24 wday; 'D' 28 yday; 'a' 32 zone; 'D' 36 tzoff; }; defn Tm(addr) { complex Tm addr; print(" sec ", addr.sec, "\n"); print(" min ", addr.min, "\n"); print(" hour ", addr.hour, "\n"); print(" mday ", addr.mday, "\n"); print(" mon ", addr.mon, "\n"); print(" year ", addr.year, "\n"); print(" wday ", addr.wday, "\n"); print(" yday ", addr.yday, "\n"); print(" zone ", addr.zone, "\n"); print(" tzoff ", addr.tzoff, "\n"); }; PNPROC = 1; PNGROUP = 2; sizeofLock = 4; aggr Lock { 'D' 0 val; }; defn Lock(addr) { complex Lock addr; print(" val ", addr.val, "\n"); }; sizeofQLp = 12; aggr QLp { 'D' 0 inuse; 'A' QLp 4 next; 'C' 8 state; }; defn QLp(addr) { complex QLp addr; print(" inuse ", addr.inuse, "\n"); print(" next ", addr.next\X, "\n"); print(" state ", addr.state, "\n"); }; sizeofQLock = 16; aggr QLock { Lock 0 lock; 'D' 4 locked; 'A' QLp 8 $head; 'A' QLp 12 $tail; }; defn QLock(addr) { complex QLock addr; print("Lock lock {\n"); Lock(addr.lock); print("}\n"); print(" locked ", addr.locked, "\n"); print(" $head ", addr.$head\X, "\n"); print(" $tail ", addr.$tail\X, "\n"); }; sizeofRWLock = 20; aggr RWLock { Lock 0 lock; 'D' 4 readers; 'D' 8 writer; 'A' QLp 12 $head; 'A' QLp 16 $tail; }; defn RWLock(addr) { complex RWLock addr; print("Lock lock {\n"); Lock(addr.lock); print("}\n"); print(" readers ", addr.readers, "\n"); print(" writer ", addr.writer, "\n"); print(" $head ", addr.$head\X, "\n"); print(" $tail ", addr.$tail\X, "\n"); }; RFNAMEG = 1; RFENVG = 2; RFFDG = 4; RFNOTEG = 8; RFPROC = 16; RFMEM = 32; RFNOWAIT = 64; RFCNAMEG = 1024; RFCENVG = 2048; RFCFDG = 4096; RFREND = 8192; sizeofQid = 8; aggr Qid { 'U' 0 path; 'U' 4 vers; }; defn Qid(addr) { complex Qid addr; print(" path ", addr.path, "\n"); print(" vers ", addr.vers, "\n"); }; sizeofDir = 116; aggr Dir { 'a' 0 name; 'a' 28 uid; 'a' 56 gid; Qid 84 qid; 'U' 92 mode; 'D' 96 atime; 'D' 100 mtime; { 'V' 104 length; { 'D' 104 hlength; 'D' 108 llength; }; }; 'u' 112 type; 'u' 114 dev; }; defn Dir(addr) { complex Dir addr; print(" name ", addr.name, "\n"); print(" uid ", addr.uid, "\n"); print(" gid ", addr.gid, "\n"); print("Qid qid {\n"); Qid(addr.qid); print("}\n"); print(" mode ", addr.mode, "\n"); print(" atime ", addr.atime, "\n"); print(" mtime ", addr.mtime, "\n"); print("_2_ {\n"); _2_(addr+104); print("}\n"); print(" type ", addr.type, "\n"); print(" dev ", addr.dev, "\n"); }; sizeofWaitmsg = 112; aggr Waitmsg { 'a' 0 pid; 'a' 12 time; 'a' 48 msg; }; defn Waitmsg(addr) { complex Waitmsg addr; print(" pid ", addr.pid, "\n"); print(" time ", addr.time, "\n"); print(" msg ", addr.msg, "\n"); }; DBlack = 255; DBlue = 201; DRed = 15; DYellow = 3; DGreen = 192; DWhite = 0; Displaybufsize = 8000; ICOSSCALE = 1024; Borderwidth = 4; Refbackup = 0; Refnone = 1; Refmesg = 2; Endsquare = 0; Enddisc = 1; Endarrow = 2; Endmask = 31; sizeofPoint = 8; aggr Point { 'D' 0 x; 'D' 4 y; }; defn Point(addr) { complex Point addr; print(" x ", addr.x, "\n"); print(" y ", addr.y, "\n"); }; sizeofRectangle = 16; aggr Rectangle { Point 0 min; Point 8 max; }; defn Rectangle(addr) { complex Rectangle addr; print("Point min {\n"); Point(addr.min); print("}\n"); print("Point max {\n"); Point(addr.max); print("}\n"); }; sizeofScreen = 16; aggr Screen { 'X' 0 display; 'D' 4 id; 'X' 8 image; 'X' 12 fill; }; defn Screen(addr) { complex Screen addr; print(" display ", addr.display\X, "\n"); print(" id ", addr.id, "\n"); print(" image ", addr.image\X, "\n"); print(" fill ", addr.fill\X, "\n"); }; sizeofDisplay = 8156; aggr Display { QLock 0 qlock; 'D' 16 dirno; 'D' 20 fd; 'D' 24 reffd; 'D' 28 ctlfd; 'D' 32 imageid; 'D' 36 $local; 'D' 40 ldepth; 'X' 44 error; 'X' 48 devdir; 'X' 52 windir; 'a' 56 oldlabel; 'U' 120 dataqid; 'X' 124 ones; 'X' 128 zeros; 'X' 132 image; 'a' 136 buf; 'X' 8140 bufp; 'X' 8144 defaultfont; 'X' 8148 defaultsubfont; 'X' 8152 windows; }; defn Display(addr) { complex Display addr; print("QLock qlock {\n"); QLock(addr.qlock); print("}\n"); print(" dirno ", addr.dirno, "\n"); print(" fd ", addr.fd, "\n"); print(" reffd ", addr.reffd, "\n"); print(" ctlfd ", addr.ctlfd, "\n"); print(" imageid ", addr.imageid, "\n"); print(" $local ", addr.$local, "\n"); print(" ldepth ", addr.ldepth, "\n"); print(" error ", addr.error\X, "\n"); print(" devdir ", addr.devdir\X, "\n"); print(" windir ", addr.windir\X, "\n"); print(" oldlabel ", addr.oldlabel, "\n"); print(" dataqid ", addr.dataqid, "\n"); print(" ones ", addr.ones\X, "\n"); print(" zeros ", addr.zeros\X, "\n"); print(" image ", addr.image\X, "\n"); print(" buf ", addr.buf, "\n"); print(" bufp ", addr.bufp\X, "\n"); print(" defaultfont ", addr.defaultfont\X, "\n"); print(" defaultsubfont ", addr.defaultsubfont\X, "\n"); print(" windows ", addr.windows\X, "\n"); }; sizeofImage = 56; aggr Image { 'A' Display 0 display; 'D' 4 id; Rectangle 8 r; Rectangle 24 clipr; 'D' 40 ldepth; 'D' 44 repl; 'A' Screen 48 screen; 'A' Image 52 next; }; defn Image(addr) { complex Image addr; print(" display ", addr.display\X, "\n"); print(" id ", addr.id, "\n"); print("Rectangle r {\n"); Rectangle(addr.r); print("}\n"); print("Rectangle clipr {\n"); Rectangle(addr.clipr); print("}\n"); print(" ldepth ", addr.ldepth, "\n"); print(" repl ", addr.repl, "\n"); print(" screen ", addr.screen\X, "\n"); print(" next ", addr.next\X, "\n"); }; sizeofRGB = 12; aggr RGB { 'U' 0 red; 'U' 4 green; 'U' 8 blue; }; defn RGB(addr) { complex RGB addr; print(" red ", addr.red, "\n"); print(" green ", addr.green, "\n"); print(" blue ", addr.blue, "\n"); }; sizeofFontchar = 8; aggr Fontchar { 'D' 0 x; 'b' 4 top; 'b' 5 bottom; 'C' 6 left; 'b' 7 width; }; defn Fontchar(addr) { complex Fontchar addr; print(" x ", addr.x, "\n"); print(" top ", addr.top, "\n"); print(" bottom ", addr.bottom, "\n"); print(" left ", addr.left, "\n"); print(" width ", addr.width, "\n"); }; sizeofSubfont = 16; aggr Subfont { 'X' 0 name; 'd' 4 n; 'b' 6 height; 'C' 7 ascent; 'A' Fontchar 8 info; 'A' Image 12 bits; }; defn Subfont(addr) { complex Subfont addr; print(" name ", addr.name\X, "\n"); print(" n ", addr.n, "\n"); print(" height ", addr.height, "\n"); print(" ascent ", addr.ascent, "\n"); print(" info ", addr.info\X, "\n"); print(" bits ", addr.bits\X, "\n"); }; LOG2NFCACHE = 6; NFCACHE = 64; NFLOOK = 5; NFSUBF = 2; MAXFCACHE = 1029; MAXSUBF = 50; DSUBF = 4; SUBFAGE = 10000; CACHEAGE = 10000; sizeofCachefont = 16; aggr Cachefont { 'u' 0 min; 'u' 2 max; 'D' 4 offset; 'X' 8 name; 'X' 12 subfontname; }; defn Cachefont(addr) { complex Cachefont addr; print(" min ", addr.min, "\n"); print(" max ", addr.max, "\n"); print(" offset ", addr.offset, "\n"); print(" name ", addr.name\X, "\n"); print(" subfontname ", addr.subfontname\X, "\n"); }; sizeofCacheinfo = 8; aggr Cacheinfo { 'u' 0 x; 'b' 2 width; 'C' 3 left; 'u' 4 value; 'u' 6 age; }; defn Cacheinfo(addr) { complex Cacheinfo addr; print(" x ", addr.x, "\n"); print(" width ", addr.width, "\n"); print(" left ", addr.left, "\n"); print(" value ", addr.value, "\n"); print(" age ", addr.age, "\n"); }; sizeofCachesubf = 12; aggr Cachesubf { 'U' 0 age; 'A' Cachefont 4 cf; 'A' Subfont 8 f; }; defn Cachesubf(addr) { complex Cachesubf addr; print(" age ", addr.age, "\n"); print(" cf ", addr.cf\X, "\n"); print(" f ", addr.f\X, "\n"); }; sizeofFont = 52; aggr Font { 'X' 0 name; 'A' Display 4 display; 'd' 8 height; 'd' 10 ascent; 'D' 12 maxldepth; 'd' 16 width; 'd' 18 ldepth; 'd' 20 nsub; 'U' 24 age; 'D' 28 ncache; 'D' 32 nsubf; 'A' Cacheinfo 36 cache; 'A' Cachesubf 40 subf; 'A' Cachefont 44 sub; 'A' Image 48 cacheimage; }; defn Font(addr) { complex Font addr; print(" name ", addr.name\X, "\n"); print(" display ", addr.display\X, "\n"); print(" height ", addr.height, "\n"); print(" ascent ", addr.ascent, "\n"); print(" maxldepth ", addr.maxldepth, "\n"); print(" width ", addr.width, "\n"); print(" ldepth ", addr.ldepth, "\n"); print(" nsub ", addr.nsub, "\n"); print(" age ", addr.age, "\n"); print(" ncache ", addr.ncache, "\n"); print(" nsubf ", addr.nsubf, "\n"); print(" cache ", addr.cache\X, "\n"); print(" subf ", addr.subf\X, "\n"); print(" sub ", addr.sub\X, "\n"); print(" cacheimage ", addr.cacheimage\X, "\n"); }; complex Point ZP; complex Rectangle ZR; complex Display display; complex Font font; complex Image screen; sizeofAlt = 20; aggr Alt { 'X' 0 c; 'X' 4 v; 'D' 8 op; 'X' 12 tag; 'U' 16 q; }; defn Alt(addr) { complex Alt addr; print(" c ", addr.c\X, "\n"); print(" v ", addr.v\X, "\n"); print(" op ", addr.op, "\n"); print(" tag ", addr.tag\X, "\n"); print(" q ", addr.q, "\n"); }; sizeofRef = 4; aggr Ref { 'D' 0 ref; }; defn Ref(addr) { complex Ref addr; print(" ref ", addr.ref, "\n"); }; sizeofCursor = 72; aggr Cursor { Point 0 offset; 'a' 8 clr; 'a' 40 set; }; defn Cursor(addr) { complex Cursor addr; print("Point offset {\n"); Point(addr.offset); print("}\n"); print(" clr ", addr.clr, "\n"); print(" set ", addr.set, "\n"); }; sizeofMouse = 16; aggr Mouse { 'D' 0 buttons; Point 4 xy; 'U' 12 msec; }; defn Mouse(addr) { complex Mouse addr; print(" buttons ", addr.buttons, "\n"); print("Point xy {\n"); Point(addr.xy); print("}\n"); print(" msec ", addr.msec, "\n"); }; sizeofMousectl = 44; aggr Mousectl { { 'D' 0 buttons; Point 4 xy; 'U' 12 msec; }; 'X' 16 c; 'X' 20 reshapec; 'X' 24 file; 'D' 28 mfd; 'D' 32 cfd; 'D' 36 pid; 'A' Image 40 image; }; defn Mousectl(addr) { complex Mousectl addr; print("Mouse {\n"); Mouse(addr+0); print("}\n"); print(" c ", addr.c\X, "\n"); print(" reshapec ", addr.reshapec\X, "\n"); print(" file ", addr.file\X, "\n"); print(" mfd ", addr.mfd, "\n"); print(" cfd ", addr.cfd, "\n"); print(" pid ", addr.pid, "\n"); print(" image ", addr.image\X, "\n"); }; sizeofMenu = 12; aggr Menu { 'X' 0 item; 'X' 4 gen; 'D' 8 lasthit; }; defn Menu(addr) { complex Menu addr; print(" item ", addr.item\X, "\n"); print(" gen ", addr.gen\X, "\n"); print(" lasthit ", addr.lasthit, "\n"); }; sizeofKeyboardctl = 20; aggr Keyboardctl { 'X' 0 c; 'X' 4 file; 'D' 8 consfd; 'D' 12 ctlfd; 'D' 16 pid; }; defn Keyboardctl(addr) { complex Keyboardctl addr; print(" c ", addr.c\X, "\n"); print(" file ", addr.file\X, "\n"); print(" consfd ", addr.consfd, "\n"); print(" ctlfd ", addr.ctlfd, "\n"); print(" pid ", addr.pid, "\n"); }; BACK = 0; HIGH = 1; BORD = 2; TEXT = 3; HTEXT = 4; NCOL = 5; sizeof_3_ = 4; aggr _3_ { 'd' 0 bc; 'd' 2 minwid; }; defn _3_(addr) { complex _3_ addr; print(" bc ", addr.bc, "\n"); print(" minwid ", addr.minwid, "\n"); }; sizeof_4_ = 4; aggr _4_ { 'X' 0 ptr; { 'd' 0 bc; 'd' 2 minwid; }; }; defn _4_(addr) { complex _4_ addr; print(" ptr ", addr.ptr\X, "\n"); print("_3_ {\n"); _3_(addr+0); print("}\n"); }; sizeofFrbox = 12; aggr Frbox { 'D' 0 wid; 'D' 4 nrune; { 'X' 8 ptr; { 'd' 8 bc; 'd' 10 minwid; }; }; }; defn Frbox(addr) { complex Frbox addr; print(" wid ", addr.wid, "\n"); print(" nrune ", addr.nrune, "\n"); print("_4_ {\n"); _4_(addr+8); print("}\n"); }; complex Font font; complex Display display; sizeofFrame = 108; aggr Frame { 'A' Font 0 font; 'A' Display 4 display; 'A' Image 8 b; 'a' 12 cols; Rectangle 32 r; Rectangle 48 entire; 'X' 64 scroll; 'A' Frbox 68 box; 'U' 72 p0; 'U' 76 p1; 'u' 80 nbox; 'u' 82 nalloc; 'u' 84 maxtab; 'u' 86 nchars; 'u' 88 nlines; 'u' 90 maxlines; 'u' 92 lastlinefull; 'u' 94 modified; 'A' Image 96 tick; 'A' Image 100 tickback; 'D' 104 ticked; }; defn Frame(addr) { complex Frame addr; print(" font ", addr.font\X, "\n"); print(" display ", addr.display\X, "\n"); print(" b ", addr.b\X, "\n"); print(" cols ", addr.cols, "\n"); print("Rectangle r {\n"); Rectangle(addr.r); print("}\n"); print("Rectangle entire {\n"); Rectangle(addr.entire); print("}\n"); print(" scroll ", addr.scroll\X, "\n"); print(" box ", addr.box\X, "\n"); print(" p0 ", addr.p0, "\n"); print(" p1 ", addr.p1, "\n"); print(" nbox ", addr.nbox, "\n"); print(" nalloc ", addr.nalloc, "\n"); print(" maxtab ", addr.maxtab, "\n"); print(" nchars ", addr.nchars, "\n"); print(" nlines ", addr.nlines, "\n"); print(" maxlines ", addr.maxlines, "\n"); print(" lastlinefull ", addr.lastlinefull, "\n"); print(" modified ", addr.modified, "\n"); print(" tick ", addr.tick\X, "\n"); print(" tickback ", addr.tickback\X, "\n"); print(" ticked ", addr.ticked, "\n"); }; None = 0; Some = 1; All = 2; Clicktime = 1000; sizeofFlayer = 172; aggr Flayer { Frame 0 f; 'D' 108 origin; 'D' 112 p0; 'D' 116 p1; 'D' 120 click; 'X' 124 textfn; 'D' 128 user0; 'X' 132 user1; Rectangle 136 entire; Rectangle 152 scroll; 'D' 168 visible; }; defn Flayer(addr) { complex Flayer addr; print("Frame f {\n"); Frame(addr.f); print("}\n"); print(" origin ", addr.origin, "\n"); print(" p0 ", addr.p0, "\n"); print(" p1 ", addr.p1, "\n"); print(" click ", addr.click, "\n"); print(" textfn ", addr.textfn\X, "\n"); print(" user0 ", addr.user0, "\n"); print(" user1 ", addr.user1\X, "\n"); print("Rectangle entire {\n"); Rectangle(addr.entire); print("}\n"); print("Rectangle scroll {\n"); Rectangle(addr.scroll); print("}\n"); print(" visible ", addr.visible, "\n"); }; Up = 0; Down = 1; sizeofSection = 12; aggr Section { 'D' 0 nrunes; 'X' 4 text; 'A' Section 8 next; }; defn Section(addr) { complex Section addr; print(" nrunes ", addr.nrunes, "\n"); print(" text ", addr.text\X, "\n"); print(" next ", addr.next\X, "\n"); }; sizeofRasp = 8; aggr Rasp { 'D' 0 nrunes; 'A' Section 4 sect; }; defn Rasp(addr) { complex Rasp addr; print(" nrunes ", addr.nrunes, "\n"); print(" sect ", addr.sect\X, "\n"); }; sizeofText = 876; aggr Text { Rasp 0 rasp; 'd' 8 nwin; 'd' 10 front; 'u' 12 tag; 'C' 14 lock; 'a' 16 l; }; defn Text(addr) { complex Text addr; print("Rasp rasp {\n"); Rasp(addr.rasp); print("}\n"); print(" nwin ", addr.nwin, "\n"); print(" front ", addr.front, "\n"); print(" tag ", addr.tag, "\n"); print(" lock ", addr.lock, "\n"); print(" l ", addr.l, "\n"); }; sizeofReadbuf = 8196; aggr Readbuf { 'd' 0 n; 'a' 2 data; }; defn Readbuf(addr) { complex Readbuf addr; print(" n ", addr.n, "\n"); print(" data ", addr.data, "\n"); }; RHost = 0; RKeyboard = 1; RMouse = 2; RPlumb = 3; RReshape = 4; NRes = 5; complex Cursor bullseye; complex Cursor deadmouse; complex Cursor lockarrow; complex Cursor cursor; complex Flayer which; complex Flayer work; complex Text cmd; complex Mousectl mousectl; complex Keyboardctl keyboardctl; complex Mouse mousep; Tversion = 0; Tstartcmdfile = 1; Tcheck = 2; Trequest = 3; Torigin = 4; Tstartfile = 5; Tworkfile = 6; Ttype = 7; Tcut = 8; Tpaste = 9; Tsnarf = 10; Tstartnewfile = 11; Twrite = 12; Tclose = 13; Tlook = 14; Tsearch = 15; Tsend = 16; Tdclick = 17; Tstartsnarf = 18; Tsetsnarf = 19; Tack = 20; Texit = 21; Tplumb = 22; TMAX = 23; Hversion = 0; Hbindname = 1; Hcurrent = 2; Hnewname = 3; Hmovname = 4; Hgrow = 5; Hcheck0 = 6; Hcheck = 7; Hunlock = 8; Hdata = 9; Horigin = 10; Hunlockfile = 11; Hsetdot = 12; Hgrowdata = 13; Hmoveto = 14; Hclean = 15; Hdirty = 16; Hcut = 17; Hsetpat = 18; Hdelname = 19; Hclose = 20; Hsetsnarf = 21; Hsnarflen = 22; Hack = 23; Hexit = 24; Hplumb = 25; HMAX = 26; sizeofHeader = 4; aggr Header { 'b' 0 type; 'b' 1 count0; 'b' 2 count1; 'a' 3 data; }; defn Header(addr) { complex Header addr; print(" type ", addr.type, "\n"); print(" count0 ", addr.count0, "\n"); print(" count1 ", addr.count1, "\n"); print(" data ", addr.data, "\n"); }; complex Text cmd; complex Cursor cursor; complex Flayer which; complex Flayer work; complex Text threadmain:t; complex Rectangle threadmain:r; complex Flayer threadmain:nwhich; complex Flayer current:nw; complex Text current:t; complex Flayer closeup:l; complex Text closeup:t; complex Text findl:t; complex Flayer duplicate:l; complex Rectangle duplicate:r; complex Font duplicate:f; complex Text duplicate:t; complex Flayer duplicate:nl; complex Rectangle getr:rp; complex Point getr:p; complex Rectangle getr:r; complex Text snarf:t; complex Flayer snarf:l; complex Text cut:t; complex Flayer cut:l; complex Text paste:t; complex Flayer scrorigin:l; complex Text scrorigin:t; complex Rasp raspc:r; complex Rasp ctlw:r; complex Rasp ctlu:r; complex Flayer center:l; complex Text center:t; complex Flayer onethird:l; complex Text onethird:t; complex Rectangle onethird:s; complex Text flushtyping:t; complex Flayer type:l; complex Text type:t; complex Flayer gettext:l; complex Text gettext:t; complex Flayer scrtotal:l;