From 0373255087377122eeb10e006ffb8aa1b57e611c Mon Sep 17 00:00:00 2001 From: rgl Date: Mon, 3 Feb 2020 22:42:28 +0100 Subject: after a year or so of work, i dare create a proper repo. --- main.acid | 1153 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1153 insertions(+) create mode 100644 main.acid (limited to 'main.acid') diff --git a/main.acid b/main.acid new file mode 100644 index 0000000..67e14e0 --- /dev/null +++ b/main.acid @@ -0,0 +1,1153 @@ +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; +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"); +}; + +sizeofReferenceFrame = 72; +aggr ReferenceFrame +{ + Point2 0 p; + Point2 24 xb; + Point2 48 yb; +}; + +defn +ReferenceFrame(addr) { + complex ReferenceFrame addr; + print("Point2 p {\n"); + Point2(addr.p); + print("}\n"); + print("Point2 xb {\n"); + Point2(addr.xb); + print("}\n"); + print("Point2 yb {\n"); + Point2(addr.yb); + print("}\n"); +}; + +sizeofReferenceFrame3 = 128; +aggr ReferenceFrame3 +{ + Point3 0 p; + Point3 32 xb; + Point3 64 yb; + Point3 96 zb; +}; + +defn +ReferenceFrame3(addr) { + complex ReferenceFrame3 addr; + print("Point3 p {\n"); + Point3(addr.p); + print("}\n"); + print("Point3 xb {\n"); + Point3(addr.xb); + print("}\n"); + print("Point3 yb {\n"); + Point3(addr.yb); + print("}\n"); + print("Point3 zb {\n"); + Point3(addr.zb); + 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"); +}; + +sizeofTriangle = 24; +aggr Triangle +{ + Point 0 p0; + Point 8 p1; + Point 16 p2; +}; + +defn +Triangle(addr) { + complex Triangle addr; + print("Point p0 {\n"); + Point(addr.p0); + print("}\n"); + print("Point p1 {\n"); + Point(addr.p1); + print("}\n"); + print("Point p2 {\n"); + Point(addr.p2); + print("}\n"); +}; + +sizeof_2_ = 16; +aggr _2_ +{ + 'F' 0 n; + 'F' 8 f; +}; + +defn +_2_(addr) { + complex _2_ addr; + print(" n ", addr.n, "\n"); + print(" f ", addr.f, "\n"); +}; + +sizeofCamera = 296; +aggr Camera +{ + { + Point3 0 p; + Point3 32 xb; + Point3 64 yb; + Point3 96 zb; + }; + 'A' Image 128 viewport; + 'F' 136 fov; + _2_ 144 clip; + 'D' 160 ptype; + 'a' 168 proj; +}; + +defn +Camera(addr) { + complex Camera addr; + print("ReferenceFrame3 {\n"); + ReferenceFrame3(addr+0); + print("}\n"); + print(" viewport ", addr.viewport\Y, "\n"); + print(" fov ", addr.fov, "\n"); + print("_2_ clip {\n"); + _2_(addr.clip); + print("}\n"); + print(" ptype ", addr.ptype, "\n"); + print(" proj ", addr.proj, "\n"); +}; + +STACK = 8192; +SEC = 1000; +FPS = 60; +Scamno = 0; +Scampos = 1; +Scambs = 2; +Sfov = 3; +Se = 4; +complex Mousectl mctl; +complex Keyboardctl kctl; +complex ReferenceFrame scrrf; +complex RWLock worldlock; +complex Triangle3 tri; +complex Camera cam0; +complex Camera cam1; +complex Camera cam2; +complex Camera cam3; +complex Camera maincam; +complex Fmt vfmt:f; +complex Point2 vfmt:p; +complex Fmt Vfmt:f; +complex Point3 Vfmt:p; +complex Point3 flatten:p; +complex Point2 toscreen:p; +complex Point fromscreen:p; +complex Triangle redraw:trit; +complex Quaternion key:q; +complex Quaternion key:qtmp; +MOUSE = 0; +KBD = 1; +RESIZE = 2; -- cgit v1.2.3