| 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; |