sizeof_1_ = 8; aggr _1_ { 'U' 0 lo; 'U' 4 hi; }; defn _1_(addr) { complex _1_ addr; print(" lo ", addr.lo, "\n"); print(" hi ", addr.hi, "\n"); }; sizeofFPdbleword = 8; aggr FPdbleword { 'F' 0 x; { 'U' 0 lo; 'U' 4 hi; }; }; defn FPdbleword(addr) { complex FPdbleword addr; print(" x ", addr.x, "\n"); print("_1_ {\n"); _1_(addr+0); print("}\n"); }; UTFmax = 4; Runesync = 128; Runeself = 128; Runeerror = 65533; Runemax = 1114111; Runemask = 2097151; sizeofFmt = 80; aggr Fmt { 'b' 0 runes; 'Y' 8 start; 'Y' 16 to; 'Y' 24 stop; 'Y' 32 flush; 'Y' 40 farg; 'D' 48 nfmt; 'Y' 56 args; 'D' 64 r; 'D' 68 width; 'D' 72 prec; 'U' 76 flags; }; defn Fmt(addr) { complex Fmt addr; print(" runes ", addr.runes, "\n"); print(" start ", addr.start\Y, "\n"); print(" to ", addr.to\Y, "\n"); print(" stop ", addr.stop\Y, "\n"); print(" flush ", addr.flush\Y, "\n"); print(" farg ", addr.farg\Y, "\n"); print(" nfmt ", addr.nfmt, "\n"); print(" args ", addr.args\Y, "\n"); print(" r ", addr.r, "\n"); print(" width ", addr.width, "\n"); print(" prec ", addr.prec, "\n"); print(" flags ", addr.flags, "\n"); }; FmtWidth = 1; FmtLeft = 2; FmtPrec = 4; FmtSharp = 8; FmtSpace = 16; FmtSign = 32; FmtZero = 64; FmtUnsigned = 128; FmtShort = 256; FmtLong = 512; FmtVLong = 1024; FmtComma = 2048; FmtByte = 4096; FmtFlag = 8192; 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; Profoff = 0; Profuser = 1; Profkernel = 2; Proftime = 3; Profsample = 4; sizeofLock = 8; aggr Lock { 'D' 0 val; }; defn Lock(addr) { complex Lock addr; print(" val ", addr.val, "\n"); }; sizeofQLp = 16; aggr QLp { 'D' 0 inuse; 'D' 4 state; 'A' QLp 8 next; }; defn QLp(addr) { complex QLp addr; print(" inuse ", addr.inuse, "\n"); print(" state ", addr.state, "\n"); print(" next ", addr.next\Y, "\n"); }; sizeofQLock = 32; aggr QLock { Lock 0 lock; 'D' 8 locked; 'A' QLp 16 $head; 'A' QLp 24 $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\Y, "\n"); print(" $tail ", addr.$tail\Y, "\n"); }; sizeofRWLock = 32; aggr RWLock { Lock 0 lock; 'D' 8 readers; 'D' 12 writer; 'A' QLp 16 $head; 'A' QLp 24 $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\Y, "\n"); print(" $tail ", addr.$tail\Y, "\n"); }; sizeofRendez = 24; aggr Rendez { 'A' QLock 0 l; 'A' QLp 8 $head; 'A' QLp 16 $tail; }; defn Rendez(addr) { complex Rendez addr; print(" l ", addr.l\Y, "\n"); print(" $head ", addr.$head\Y, "\n"); print(" $tail ", addr.$tail\Y, "\n"); }; sizeofNetConnInfo = 72; aggr NetConnInfo { 'Y' 0 dir; 'Y' 8 root; 'Y' 16 spec; 'Y' 24 lsys; 'Y' 32 lserv; 'Y' 40 rsys; 'Y' 48 rserv; 'Y' 56 laddr; 'Y' 64 raddr; }; defn NetConnInfo(addr) { complex NetConnInfo addr; print(" dir ", addr.dir\Y, "\n"); print(" root ", addr.root\Y, "\n"); print(" spec ", addr.spec\Y, "\n"); print(" lsys ", addr.lsys\Y, "\n"); print(" lserv ", addr.lserv\Y, "\n"); print(" rsys ", addr.rsys\Y, "\n"); print(" rserv ", addr.rserv\Y, "\n"); print(" laddr ", addr.laddr\Y, "\n"); print(" raddr ", addr.raddr\Y, "\n"); }; RFNAMEG = 1; RFENVG = 2; RFFDG = 4; RFNOTEG = 8; RFPROC = 16; RFMEM = 32; RFNOWAIT = 64; RFCNAMEG = 1024; RFCENVG = 2048; RFCFDG = 4096; RFREND = 8192; RFNOMNT = 16384; sizeofQid = 16; aggr Qid { 'W' 0 path; 'U' 8 vers; 'b' 12 type; }; defn Qid(addr) { complex Qid addr; print(" path ", addr.path, "\n"); print(" vers ", addr.vers, "\n"); print(" type ", addr.type, "\n"); }; sizeofDir = 80; aggr Dir { 'u' 0 type; 'U' 4 dev; Qid 8 qid; 'U' 24 mode; 'U' 28 atime; 'U' 32 mtime; 'V' 40 length; 'Y' 48 name; 'Y' 56 uid; 'Y' 64 gid; 'Y' 72 muid; }; defn Dir(addr) { complex Dir addr; print(" type ", addr.type, "\n"); print(" dev ", addr.dev, "\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(" length ", addr.length, "\n"); print(" name ", addr.name\Y, "\n"); print(" uid ", addr.uid\Y, "\n"); print(" gid ", addr.gid\Y, "\n"); print(" muid ", addr.muid\Y, "\n"); }; sizeofWaitmsg = 24; aggr Waitmsg { 'D' 0 pid; 'a' 4 time; 'Y' 16 msg; }; defn Waitmsg(addr) { complex Waitmsg addr; print(" pid ", addr.pid, "\n"); print(" time ", addr.time, "\n"); print(" msg ", addr.msg\Y, "\n"); }; sizeofIOchunk = 16; aggr IOchunk { 'Y' 0 addr; 'U' 8 len; }; defn IOchunk(addr) { complex IOchunk addr; print(" addr ", addr.addr\Y, "\n"); print(" len ", addr.len, "\n"); }; Nqwds = 2; Nqshift = 5; Nqmask = -1; Nqbits = 64; sizeofChannel = 48; aggr Channel { 'D' 0 s; 'U' 4 f; 'U' 8 n; 'D' 12 e; 'D' 16 freed; 'Y' 24 qentry; 'D' 32 nentry; 'D' 36 closed; 'a' 40 v; }; defn Channel(addr) { complex Channel addr; print(" s ", addr.s, "\n"); print(" f ", addr.f, "\n"); print(" n ", addr.n, "\n"); print(" e ", addr.e, "\n"); print(" freed ", addr.freed, "\n"); print(" qentry ", addr.qentry\Y, "\n"); print(" nentry ", addr.nentry, "\n"); print(" closed ", addr.closed, "\n"); print(" v ", addr.v, "\n"); }; CHANEND = 0; CHANSND = 1; CHANRCV = 2; CHANNOP = 3; CHANNOBLK = 4; sizeofAlt = 48; aggr Alt { 'A' Channel 0 c; 'Y' 8 v; 'D' 16 op; 'Y' 24 err; 'A' Channel 32 tag; 'D' 40 entryno; }; defn Alt(addr) { complex Alt addr; print(" c ", addr.c\Y, "\n"); print(" v ", addr.v\Y, "\n"); print(" op ", addr.op, "\n"); print(" err ", addr.err\Y, "\n"); print(" tag ", addr.tag\Y, "\n"); print(" entryno ", addr.entryno, "\n"); }; sizeofRef = 8; aggr Ref { 'D' 0 ref; }; defn Ref(addr) { complex Ref addr; print(" ref ", addr.ref, "\n"); }; DOpaque = 4294967295; DTransparent = 0; DBlack = 255; DWhite = 4294967295; DRed = 4278190335; DGreen = 16711935; DBlue = 65535; DCyan = 16777215; DMagenta = 4278255615; DYellow = 4294902015; DPaleyellow = 4294945535; DDarkyellow = 4008615679; DDarkgreen = 1149781247; DPalegreen = 2868882175; DMedgreen = 2295105791; DDarkblue = 22015; DPalebluegreen = 2868903935; DPaleblue = 48127; DBluegreen = 8947967; DGreygreen = 1437248255; DPalegreygreen = 2666458879; DYellowgreen = 2576960767; DMedblue = 39423; DGreyblue = 6142975; DPalegreyblue = 1234427391; DPurpleblue = 2290666751; DNotacolor = 4294967040; DNofill = 4294967040; Displaybufsize = 8000; ICOSSCALE = 1024; Borderwidth = 4; Refbackup = 0; Refnone = 1; Refmesg = 2; Endsquare = 0; Enddisc = 1; Endarrow = 2; Endmask = 31; Clear = 0; SinD = 8; DinS = 4; SoutD = 2; DoutS = 1; S = 10; SoverD = 11; SatopD = 9; SxorD = 3; D = 5; DoverS = 7; DatopS = 6; DxorS = 3; Ncomp = 12; CRed = 0; CGreen = 1; CBlue = 2; CGrey = 3; CAlpha = 4; CMap = 5; CIgnore = 6; NChan = 7; GREY1 = 49; GREY2 = 50; GREY4 = 52; GREY8 = 56; CMAP8 = 88; RGB15 = 1627723045; RGB16 = 333349; RGB24 = 530472; RGBA32 = 135800904; ARGB32 = 1208490024; XRGB32 = 1745360936; BGR24 = 2627592; ABGR32 = 1210587144; XBGR32 = 1747458056; 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 = 32; aggr Screen { 'Y' 0 display; 'D' 8 id; 'Y' 16 image; 'Y' 24 fill; }; defn Screen(addr) { complex Screen addr; print(" display ", addr.display\Y, "\n"); print(" id ", addr.id, "\n"); print(" image ", addr.image\Y, "\n"); print(" fill ", addr.fill\Y, "\n"); }; sizeofDisplay = 264; aggr Display { QLock 0 qlock; 'D' 32 locking; 'D' 36 dirno; 'D' 40 fd; 'D' 44 reffd; 'D' 48 ctlfd; 'D' 52 imageid; 'D' 56 $local; 'Y' 64 error; 'Y' 72 devdir; 'Y' 80 windir; 'a' 88 oldlabel; 'U' 152 dataqid; 'Y' 160 white; 'Y' 168 black; 'Y' 176 opaque; 'Y' 184 transparent; 'Y' 192 image; 'Y' 200 buf; 'D' 208 bufsize; 'Y' 216 bufp; 'Y' 224 defaultfont; 'Y' 232 defaultsubfont; 'Y' 240 windows; 'Y' 248 screenimage; 'D' 256 _isnewdisplay; }; defn Display(addr) { complex Display addr; print("QLock qlock {\n"); QLock(addr.qlock); print("}\n"); print(" locking ", addr.locking, "\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(" error ", addr.error\Y, "\n"); print(" devdir ", addr.devdir\Y, "\n"); print(" windir ", addr.windir\Y, "\n"); print(" oldlabel ", addr.oldlabel, "\n"); print(" dataqid ", addr.dataqid, "\n"); print(" white ", addr.white\Y, "\n"); print(" black ", addr.black\Y, "\n"); print(" opaque ", addr.opaque\Y, "\n"); print(" transparent ", addr.transparent\Y, "\n"); print(" image ", addr.image\Y, "\n"); print(" buf ", addr.buf\Y, "\n"); print(" bufsize ", addr.bufsize, "\n"); print(" bufp ", addr.bufp\Y, "\n"); print(" defaultfont ", addr.defaultfont\Y, "\n"); print(" defaultsubfont ", addr.defaultsubfont\Y, "\n"); print(" windows ", addr.windows\Y, "\n"); print(" screenimage ", addr.screenimage\Y, "\n"); print(" _isnewdisplay ", addr._isnewdisplay, "\n"); }; sizeofImage = 80; aggr Image { 'A' Display 0 display; 'D' 8 id; Rectangle 16 r; Rectangle 32 clipr; 'D' 48 depth; 'U' 52 chan; 'D' 56 repl; 'A' Screen 64 screen; 'A' Image 72 next; }; defn Image(addr) { complex Image addr; print(" display ", addr.display\Y, "\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(" depth ", addr.depth, "\n"); print(" chan ", addr.chan, "\n"); print(" repl ", addr.repl, "\n"); print(" screen ", addr.screen\Y, "\n"); print(" next ", addr.next\Y, "\n"); }; sizeofRGB = 16; 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 = 40; aggr Subfont { 'Y' 0 name; 'd' 8 n; 'b' 10 height; 'C' 11 ascent; 'A' Fontchar 16 info; 'A' Image 24 bits; 'D' 32 ref; }; defn Subfont(addr) { complex Subfont addr; print(" name ", addr.name\Y, "\n"); print(" n ", addr.n, "\n"); print(" height ", addr.height, "\n"); print(" ascent ", addr.ascent, "\n"); print(" info ", addr.info\Y, "\n"); print(" bits ", addr.bits\Y, "\n"); print(" ref ", addr.ref, "\n"); }; LOG2NFCACHE = 6; NFCACHE = 64; NFLOOK = 5; NFSUBF = 2; MAXFCACHE = 1029; MAXSUBF = 50; DSUBF = 4; SUBFAGE = 10000; CACHEAGE = 10000; sizeofCachefont = 32; aggr Cachefont { 'U' 0 min; 'U' 4 max; 'D' 8 offset; 'Y' 16 name; 'Y' 24 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\Y, "\n"); print(" subfontname ", addr.subfontname\Y, "\n"); }; sizeofCacheinfo = 16; aggr Cacheinfo { 'u' 0 x; 'b' 2 width; 'C' 3 left; 'U' 4 value; 'u' 8 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 = 24; aggr Cachesubf { 'U' 0 age; 'A' Cachefont 8 cf; 'A' Subfont 16 f; }; defn Cachesubf(addr) { complex Cachesubf addr; print(" age ", addr.age, "\n"); print(" cf ", addr.cf\Y, "\n"); print(" f ", addr.f\Y, "\n"); }; sizeofFont = 72; aggr Font { 'Y' 0 name; 'A' Display 8 display; 'd' 16 height; 'd' 18 ascent; 'd' 20 width; 'd' 22 nsub; 'U' 24 age; 'D' 28 maxdepth; 'D' 32 ncache; 'D' 36 nsubf; 'A' Cacheinfo 40 cache; 'A' Cachesubf 48 subf; 'A' Cachefont 56 sub; 'A' Image 64 cacheimage; }; defn Font(addr) { complex Font addr; print(" name ", addr.name\Y, "\n"); print(" display ", addr.display\Y, "\n"); print(" height ", addr.height, "\n"); print(" ascent ", addr.ascent, "\n"); print(" width ", addr.width, "\n"); print(" nsub ", addr.nsub, "\n"); print(" age ", addr.age, "\n"); print(" maxdepth ", addr.maxdepth, "\n"); print(" ncache ", addr.ncache, "\n"); print(" nsubf ", addr.nsubf, "\n"); print(" cache ", addr.cache\Y, "\n"); print(" subf ", addr.subf\Y, "\n"); print(" sub ", addr.sub\Y, "\n"); print(" cacheimage ", addr.cacheimage\Y, "\n"); }; complex Point ZP; complex Rectangle ZR; complex Display display; complex Font font; complex Image screen; complex Screen _screen; sizeofMemdata = 40; aggr Memdata { 'Y' 0 base; 'Y' 8 bdata; 'D' 16 ref; 'Y' 24 imref; 'D' 32 allocd; }; defn Memdata(addr) { complex Memdata addr; print(" base ", addr.base\Y, "\n"); print(" bdata ", addr.bdata\Y, "\n"); print(" ref ", addr.ref, "\n"); print(" imref ", addr.imref\Y, "\n"); print(" allocd ", addr.allocd, "\n"); }; Frepl = 1; Fsimple = 2; Fgrey = 4; Falpha = 8; Fcmap = 16; Fbytes = 32; sizeofMemimage = 168; aggr Memimage { Rectangle 0 r; Rectangle 16 clipr; 'D' 32 depth; 'D' 36 nchan; 'U' 40 chan; 'Y' 48 cmap; 'A' Memdata 56 data; 'D' 64 zero; 'U' 68 width; 'Y' 72 layer; 'U' 80 flags; 'a' 84 shift; 'a' 112 mask; 'a' 140 nbits; }; defn Memimage(addr) { complex Memimage addr; print("Rectangle r {\n"); Rectangle(addr.r); print("}\n"); print("Rectangle clipr {\n"); Rectangle(addr.clipr); print("}\n"); print(" depth ", addr.depth, "\n"); print(" nchan ", addr.nchan, "\n"); print(" chan ", addr.chan, "\n"); print(" cmap ", addr.cmap\Y, "\n"); print(" data ", addr.data\Y, "\n"); print(" zero ", addr.zero, "\n"); print(" width ", addr.width, "\n"); print(" layer ", addr.layer\Y, "\n"); print(" flags ", addr.flags, "\n"); print(" shift ", addr.shift, "\n"); print(" mask ", addr.mask, "\n"); print(" nbits ", addr.nbits, "\n"); }; sizeofMemcmap = 4864; aggr Memcmap { 'a' 0 cmap2rgb; 'a' 768 rgb2cmap; }; defn Memcmap(addr) { complex Memcmap addr; print(" cmap2rgb ", addr.cmap2rgb, "\n"); print(" rgb2cmap ", addr.rgb2cmap, "\n"); }; sizeofMemsubfont = 32; aggr Memsubfont { 'Y' 0 name; 'd' 8 n; 'b' 10 height; 'C' 11 ascent; 'A' Fontchar 16 info; 'A' Memimage 24 bits; }; defn Memsubfont(addr) { complex Memsubfont addr; print(" name ", addr.name\Y, "\n"); print(" n ", addr.n, "\n"); print(" height ", addr.height, "\n"); print(" ascent ", addr.ascent, "\n"); print(" info ", addr.info\Y, "\n"); print(" bits ", addr.bits\Y, "\n"); }; Simplesrc = 1; Simplemask = 2; Replsrc = 4; Replmask = 8; Fullmask = 16; sizeofMemdrawparam = 104; aggr Memdrawparam { 'A' Memimage 0 dst; Rectangle 8 r; 'A' Memimage 24 src; Rectangle 32 sr; 'A' Memimage 48 mask; Rectangle 56 mr; 'D' 72 op; 'U' 76 state; 'U' 80 mval; 'U' 84 mrgba; 'U' 88 sval; 'U' 92 srgba; 'U' 96 sdval; }; defn Memdrawparam(addr) { complex Memdrawparam addr; print(" dst ", addr.dst\Y, "\n"); print("Rectangle r {\n"); Rectangle(addr.r); print("}\n"); print(" src ", addr.src\Y, "\n"); print("Rectangle sr {\n"); Rectangle(addr.sr); print("}\n"); print(" mask ", addr.mask\Y, "\n"); print("Rectangle mr {\n"); Rectangle(addr.mr); print("}\n"); print(" op ", addr.op, "\n"); print(" state ", addr.state, "\n"); print(" mval ", addr.mval, "\n"); print(" mrgba ", addr.mrgba, "\n"); print(" sval ", addr.sval, "\n"); print(" srgba ", addr.srgba, "\n"); print(" sdval ", addr.sdval, "\n"); }; complex Memimage memwhite; complex Memimage memblack; complex Memimage memopaque; complex Memimage memtransparent; complex Memcmap memdefcmap; sizeofMouse = 24; aggr Mouse { 'D' 0 buttons; Point 8 xy; 'U' 16 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 = 72; aggr Mousectl { { 'D' 0 buttons; Point 8 xy; 'U' 16 msec; }; 'A' Channel 24 c; 'A' Channel 32 resizec; 'Y' 40 file; 'D' 48 mfd; 'D' 52 cfd; 'D' 56 pid; 'A' Image 64 image; }; defn Mousectl(addr) { complex Mousectl addr; print("Mouse {\n"); Mouse(addr+0); print("}\n"); print(" c ", addr.c\Y, "\n"); print(" resizec ", addr.resizec\Y, "\n"); print(" file ", addr.file\Y, "\n"); print(" mfd ", addr.mfd, "\n"); print(" cfd ", addr.cfd, "\n"); print(" pid ", addr.pid, "\n"); print(" image ", addr.image\Y, "\n"); }; sizeofMenu = 24; aggr Menu { 'Y' 0 item; 'Y' 8 gen; 'D' 16 lasthit; }; defn Menu(addr) { complex Menu addr; print(" item ", addr.item\Y, "\n"); print(" gen ", addr.gen\Y, "\n"); print(" lasthit ", addr.lasthit, "\n"); }; sizeofKeyboardctl = 32; aggr Keyboardctl { 'A' Channel 0 c; 'Y' 8 file; 'D' 16 consfd; 'D' 20 ctlfd; 'D' 24 pid; }; defn Keyboardctl(addr) { complex Keyboardctl addr; print(" c ", addr.c\Y, "\n"); print(" file ", addr.file\Y, "\n"); print(" consfd ", addr.consfd, "\n"); print(" ctlfd ", addr.ctlfd, "\n"); print(" pid ", addr.pid, "\n"); }; KF = 61440; Spec = 63488; PF = 63520; Kview = 63488; Khome = 61453; Kup = 61454; Kdown = 63488; Kpgup = 61455; Kprint = 61456; Kleft = 61457; Kright = 61458; Kpgdown = 61459; Kins = 61460; Kalt = 61461; Kshift = 61462; Kctl = 61463; Kend = 61464; Kscroll = 61465; Kscrolloneup = 61472; Kscrollonedown = 61473; Ksoh = 1; Kstx = 2; Ketx = 3; Keof = 4; Kenq = 5; Kack = 6; Kbs = 8; Knack = 21; Ketb = 23; Kdel = 127; Kesc = 27; Kbreak = 63585; Kcaps = 63588; Knum = 63589; Kmiddle = 63590; Kaltgr = 63591; Kmouse = 63744; sizeofPoint2 = 24; aggr Point2 { 'F' 0 x; 'F' 8 y; 'F' 16 w; }; defn Point2(addr) { complex Point2 addr; print(" x ", addr.x, "\n"); print(" y ", addr.y, "\n"); print(" w ", addr.w, "\n"); }; sizeofPoint3 = 32; aggr Point3 { 'F' 0 x; 'F' 8 y; 'F' 16 z; 'F' 24 w; }; defn Point3(addr) { complex Point3 addr; print(" x ", addr.x, "\n"); print(" y ", addr.y, "\n"); print(" z ", addr.z, "\n"); print(" w ", addr.w, "\n"); }; sizeofQuaternion = 32; aggr Quaternion { 'F' 0 r; 'F' 8 i; 'F' 16 j; 'F' 24 k; }; defn Quaternion(addr) { complex Quaternion addr; print(" r ", addr.r, "\n"); print(" i ", addr.i, "\n"); print(" j ", addr.j, "\n"); print(" k ", addr.k, "\n"); }; sizeofRFrame = 72; aggr RFrame { Point2 0 p; Point2 24 bx; Point2 48 by; }; defn RFrame(addr) { complex RFrame addr; print("Point2 p {\n"); Point2(addr.p); print("}\n"); print("Point2 bx {\n"); Point2(addr.bx); print("}\n"); print("Point2 by {\n"); Point2(addr.by); print("}\n"); }; sizeofRFrame3 = 128; aggr RFrame3 { Point3 0 p; Point3 32 bx; Point3 64 by; Point3 96 bz; }; defn RFrame3(addr) { complex RFrame3 addr; print("Point3 p {\n"); Point3(addr.p); print("}\n"); print("Point3 bx {\n"); Point3(addr.bx); print("}\n"); print("Point3 by {\n"); Point3(addr.by); print("}\n"); print("Point3 bz {\n"); Point3(addr.bz); print("}\n"); }; sizeofTriangle3 = 96; aggr Triangle3 { Point3 0 p0; Point3 32 p1; Point3 64 p2; }; defn Triangle3(addr) { complex Triangle3 addr; print("Point3 p0 {\n"); Point3(addr.p0); print("}\n"); print("Point3 p1 {\n"); Point3(addr.p1); print("}\n"); print("Point3 p2 {\n"); Point3(addr.p2); print("}\n"); }; Portho = 0; Ppersp = 1; sizeofVertex = 64; aggr Vertex { Point3 0 p; Point3 32 n; }; defn Vertex(addr) { complex Vertex addr; print("Point3 p {\n"); Point3(addr.p); print("}\n"); print("Point3 n {\n"); Point3(addr.n); print("}\n"); }; sizeofViewport = 80; aggr Viewport { { Point2 0 p; Point2 24 bx; Point2 48 by; }; 'A' Memimage 72 fb; }; defn Viewport(addr) { complex Viewport addr; print("RFrame {\n"); RFrame(addr+0); print("}\n"); print(" fb ", addr.fb\Y, "\n"); }; sizeofCamera = 384; aggr Camera { { Point3 0 p; Point3 32 bx; Point3 64 by; Point3 96 bz; }; Viewport 128 viewport; 'F' 208 fov; 'F' 216 clipn; 'F' 224 clipf; 'a' 232 proj; 'D' 360 ptype; 'Y' 368 updatefb; 'Y' 376 develop; }; defn Camera(addr) { complex Camera addr; print("RFrame3 {\n"); RFrame3(addr+0); print("}\n"); print("Viewport viewport {\n"); Viewport(addr.viewport); print("}\n"); print(" fov ", addr.fov, "\n"); print(" clipn ", addr.clipn, "\n"); print(" clipf ", addr.clipf, "\n"); print(" proj ", addr.proj, "\n"); print(" ptype ", addr.ptype, "\n"); print(" updatefb ", addr.updatefb\Y, "\n"); print(" develop ", addr.develop\Y, "\n"); }; OBJVGeometric = 0; OBJVTexture = 1; OBJVNormal = 2; OBJVParametric = 3; OBJNVERT = 4; OBJEPoint = 0; OBJELine = 1; OBJEFace = 2; OBJECurve = 3; OBJECurve2 = 4; OBJESurface = 5; OBJGGlobal = 0; OBJGSmoothing = 1; OBJGMerging = 2; OBJHTSIZE = 17; sizeof_2_ = 32; aggr _2_ { 'F' 0 x; 'F' 8 y; 'F' 16 z; 'F' 24 w; }; defn _2_(addr) { complex _2_ addr; print(" x ", addr.x, "\n"); print(" y ", addr.y, "\n"); print(" z ", addr.z, "\n"); print(" w ", addr.w, "\n"); }; sizeof_3_ = 24; aggr _3_ { 'F' 0 u; 'F' 8 v; 'F' 16 vv; }; defn _3_(addr) { complex _3_ addr; print(" u ", addr.u, "\n"); print(" v ", addr.v, "\n"); print(" vv ", addr.vv, "\n"); }; sizeof_4_ = 24; aggr _4_ { 'F' 0 i; 'F' 8 j; 'F' 16 k; }; defn _4_(addr) { complex _4_ addr; print(" i ", addr.i, "\n"); print(" j ", addr.j, "\n"); print(" k ", addr.k, "\n"); }; sizeof_5_ = 32; aggr _5_ { { 'F' 0 x; 'F' 8 y; 'F' 16 z; 'F' 24 w; }; { 'F' 0 u; 'F' 8 v; 'F' 16 vv; }; { 'F' 0 i; 'F' 8 j; 'F' 16 k; }; }; defn _5_(addr) { complex _5_ addr; print("_2_ {\n"); _2_(addr+0); print("}\n"); print("_3_ {\n"); _3_(addr+0); print("}\n"); print("_4_ {\n"); _4_(addr+0); print("}\n"); }; sizeofOBJVertex = 32; aggr OBJVertex { { { 'F' 0 x; 'F' 8 y; 'F' 16 z; 'F' 24 w; }; { 'F' 0 u; 'F' 8 v; 'F' 16 vv; }; { 'F' 0 i; 'F' 8 j; 'F' 16 k; }; }; }; defn OBJVertex(addr) { complex OBJVertex addr; print("_5_ {\n"); _5_(addr+0); print("}\n"); }; sizeofOBJVertexArray = 16; aggr OBJVertexArray { 'A' OBJVertex 0 verts; 'D' 8 nvert; }; defn OBJVertexArray(addr) { complex OBJVertexArray addr; print(" verts ", addr.verts\Y, "\n"); print(" nvert ", addr.nvert, "\n"); }; sizeofOBJElem = 24; aggr OBJElem { 'Y' 0 indices; 'D' 8 nindex; 'D' 12 type; 'A' OBJElem 16 next; }; defn OBJElem(addr) { complex OBJElem addr; print(" indices ", addr.indices\Y, "\n"); print(" nindex ", addr.nindex, "\n"); print(" type ", addr.type, "\n"); print(" next ", addr.next\Y, "\n"); }; sizeofOBJObject = 24; aggr OBJObject { 'Y' 0 name; 'A' OBJElem 8 child; 'A' OBJObject 16 next; }; defn OBJObject(addr) { complex OBJObject addr; print(" name ", addr.name\Y, "\n"); print(" child ", addr.child\Y, "\n"); print(" next ", addr.next\Y, "\n"); }; sizeofOBJ = 200; aggr OBJ { 'a' 0 vertdata; 'a' 64 objtab; }; defn OBJ(addr) { complex OBJ addr; print(" vertdata ", addr.vertdata, "\n"); print(" objtab ", addr.objtab, "\n"); }; K↑ = 0; K↓ = 1; K← = 2; K→ = 3; Krise = 4; Kfall = 5; KR↑ = 6; KR↓ = 7; KR← = 8; KR→ = 9; KR↺ = 10; KR↻ = 11; Kcam0 = 12; Kcam1 = 13; Kcam2 = 14; Kcam3 = 15; Kscrshot = 16; Ke = 17; Scamno = 0; Sfov = 1; Scampos = 2; Scambx = 3; Scamby = 4; Scambz = 5; Se = 6; sizeofCamcfg = 128; aggr Camcfg { Point3 0 p; Point3 32 lookat; Point3 64 up; 'F' 96 fov; 'F' 104 clipn; 'F' 112 clipf; 'D' 120 ptype; }; defn Camcfg(addr) { complex Camcfg addr; print("Point3 p {\n"); Point3(addr.p); print("}\n"); print("Point3 lookat {\n"); Point3(addr.lookat); print("}\n"); print("Point3 up {\n"); Point3(addr.up); print("}\n"); print(" fov ", addr.fov, "\n"); print(" clipn ", addr.clipn, "\n"); print(" clipf ", addr.clipf, "\n"); print(" ptype ", addr.ptype, "\n"); }; complex Mousectl mctl; complex Channel drawc; complex Camera maincam; complex Fmt vfmt:f; complex Point2 vfmt:p; complex Fmt Vfmt:f; complex Point3 Vfmt:p; complex Triangle3 depthcmp:ta; complex Triangle3 depthcmp:tb; complex Point3 drawaxis:op; complex Point3 drawaxis:px; complex Point3 drawaxis:py; complex Point3 drawaxis:pz; complex OBJ threadmain:objmesh; MOUSE = 0; RESIZE = 1; DRAW = 2;