syms 17 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055
  1. sizeof_1_ = 8;
  2. aggr _1_
  3. {
  4. 'D' 0 hlength;
  5. 'D' 4 llength;
  6. };
  7. defn
  8. _1_(addr) {
  9. complex _1_ addr;
  10. print(" hlength ", addr.hlength, "\n");
  11. print(" llength ", addr.llength, "\n");
  12. };
  13. sizeof_2_ = 8;
  14. aggr _2_
  15. {
  16. 'V' 0 length;
  17. {
  18. 'D' 0 hlength;
  19. 'D' 4 llength;
  20. };
  21. };
  22. defn
  23. _2_(addr) {
  24. complex _2_ addr;
  25. print(" length ", addr.length, "\n");
  26. print("_1_ {\n");
  27. _1_(addr+0);
  28. print("}\n");
  29. };
  30. UTFmax = 3;
  31. Runesync = 128;
  32. Runeself = 128;
  33. Runeerror = 128;
  34. sizeofFconv = 24;
  35. aggr Fconv
  36. {
  37. 'X' 0 out;
  38. 'X' 4 eout;
  39. 'D' 8 f1;
  40. 'D' 12 f2;
  41. 'D' 16 f3;
  42. 'D' 20 chr;
  43. };
  44. defn
  45. Fconv(addr) {
  46. complex Fconv addr;
  47. print(" out ", addr.out\X, "\n");
  48. print(" eout ", addr.eout\X, "\n");
  49. print(" f1 ", addr.f1, "\n");
  50. print(" f2 ", addr.f2, "\n");
  51. print(" f3 ", addr.f3, "\n");
  52. print(" chr ", addr.chr, "\n");
  53. };
  54. sizeofTm = 40;
  55. aggr Tm
  56. {
  57. 'D' 0 sec;
  58. 'D' 4 min;
  59. 'D' 8 hour;
  60. 'D' 12 mday;
  61. 'D' 16 mon;
  62. 'D' 20 year;
  63. 'D' 24 wday;
  64. 'D' 28 yday;
  65. 'a' 32 zone;
  66. 'D' 36 tzoff;
  67. };
  68. defn
  69. Tm(addr) {
  70. complex Tm addr;
  71. print(" sec ", addr.sec, "\n");
  72. print(" min ", addr.min, "\n");
  73. print(" hour ", addr.hour, "\n");
  74. print(" mday ", addr.mday, "\n");
  75. print(" mon ", addr.mon, "\n");
  76. print(" year ", addr.year, "\n");
  77. print(" wday ", addr.wday, "\n");
  78. print(" yday ", addr.yday, "\n");
  79. print(" zone ", addr.zone, "\n");
  80. print(" tzoff ", addr.tzoff, "\n");
  81. };
  82. PNPROC = 1;
  83. PNGROUP = 2;
  84. sizeofLock = 4;
  85. aggr Lock
  86. {
  87. 'D' 0 val;
  88. };
  89. defn
  90. Lock(addr) {
  91. complex Lock addr;
  92. print(" val ", addr.val, "\n");
  93. };
  94. sizeofQLp = 12;
  95. aggr QLp
  96. {
  97. 'D' 0 inuse;
  98. 'A' QLp 4 next;
  99. 'C' 8 state;
  100. };
  101. defn
  102. QLp(addr) {
  103. complex QLp addr;
  104. print(" inuse ", addr.inuse, "\n");
  105. print(" next ", addr.next\X, "\n");
  106. print(" state ", addr.state, "\n");
  107. };
  108. sizeofQLock = 16;
  109. aggr QLock
  110. {
  111. Lock 0 lock;
  112. 'D' 4 locked;
  113. 'A' QLp 8 $head;
  114. 'A' QLp 12 $tail;
  115. };
  116. defn
  117. QLock(addr) {
  118. complex QLock addr;
  119. print("Lock lock {\n");
  120. Lock(addr.lock);
  121. print("}\n");
  122. print(" locked ", addr.locked, "\n");
  123. print(" $head ", addr.$head\X, "\n");
  124. print(" $tail ", addr.$tail\X, "\n");
  125. };
  126. sizeofRWLock = 20;
  127. aggr RWLock
  128. {
  129. Lock 0 lock;
  130. 'D' 4 readers;
  131. 'D' 8 writer;
  132. 'A' QLp 12 $head;
  133. 'A' QLp 16 $tail;
  134. };
  135. defn
  136. RWLock(addr) {
  137. complex RWLock addr;
  138. print("Lock lock {\n");
  139. Lock(addr.lock);
  140. print("}\n");
  141. print(" readers ", addr.readers, "\n");
  142. print(" writer ", addr.writer, "\n");
  143. print(" $head ", addr.$head\X, "\n");
  144. print(" $tail ", addr.$tail\X, "\n");
  145. };
  146. RFNAMEG = 1;
  147. RFENVG = 2;
  148. RFFDG = 4;
  149. RFNOTEG = 8;
  150. RFPROC = 16;
  151. RFMEM = 32;
  152. RFNOWAIT = 64;
  153. RFCNAMEG = 1024;
  154. RFCENVG = 2048;
  155. RFCFDG = 4096;
  156. RFREND = 8192;
  157. sizeofQid = 8;
  158. aggr Qid
  159. {
  160. 'U' 0 path;
  161. 'U' 4 vers;
  162. };
  163. defn
  164. Qid(addr) {
  165. complex Qid addr;
  166. print(" path ", addr.path, "\n");
  167. print(" vers ", addr.vers, "\n");
  168. };
  169. sizeofDir = 116;
  170. aggr Dir
  171. {
  172. 'a' 0 name;
  173. 'a' 28 uid;
  174. 'a' 56 gid;
  175. Qid 84 qid;
  176. 'U' 92 mode;
  177. 'D' 96 atime;
  178. 'D' 100 mtime;
  179. {
  180. 'V' 104 length;
  181. {
  182. 'D' 104 hlength;
  183. 'D' 108 llength;
  184. };
  185. };
  186. 'u' 112 type;
  187. 'u' 114 dev;
  188. };
  189. defn
  190. Dir(addr) {
  191. complex Dir addr;
  192. print(" name ", addr.name, "\n");
  193. print(" uid ", addr.uid, "\n");
  194. print(" gid ", addr.gid, "\n");
  195. print("Qid qid {\n");
  196. Qid(addr.qid);
  197. print("}\n");
  198. print(" mode ", addr.mode, "\n");
  199. print(" atime ", addr.atime, "\n");
  200. print(" mtime ", addr.mtime, "\n");
  201. print("_2_ {\n");
  202. _2_(addr+104);
  203. print("}\n");
  204. print(" type ", addr.type, "\n");
  205. print(" dev ", addr.dev, "\n");
  206. };
  207. sizeofWaitmsg = 112;
  208. aggr Waitmsg
  209. {
  210. 'a' 0 pid;
  211. 'a' 12 time;
  212. 'a' 48 msg;
  213. };
  214. defn
  215. Waitmsg(addr) {
  216. complex Waitmsg addr;
  217. print(" pid ", addr.pid, "\n");
  218. print(" time ", addr.time, "\n");
  219. print(" msg ", addr.msg, "\n");
  220. };
  221. DBlack = 255;
  222. DBlue = 201;
  223. DRed = 15;
  224. DYellow = 3;
  225. DGreen = 192;
  226. DWhite = 0;
  227. Displaybufsize = 8000;
  228. ICOSSCALE = 1024;
  229. Borderwidth = 4;
  230. Refbackup = 0;
  231. Refnone = 1;
  232. Refmesg = 2;
  233. Endsquare = 0;
  234. Enddisc = 1;
  235. Endarrow = 2;
  236. Endmask = 31;
  237. sizeofPoint = 8;
  238. aggr Point
  239. {
  240. 'D' 0 x;
  241. 'D' 4 y;
  242. };
  243. defn
  244. Point(addr) {
  245. complex Point addr;
  246. print(" x ", addr.x, "\n");
  247. print(" y ", addr.y, "\n");
  248. };
  249. sizeofRectangle = 16;
  250. aggr Rectangle
  251. {
  252. Point 0 min;
  253. Point 8 max;
  254. };
  255. defn
  256. Rectangle(addr) {
  257. complex Rectangle addr;
  258. print("Point min {\n");
  259. Point(addr.min);
  260. print("}\n");
  261. print("Point max {\n");
  262. Point(addr.max);
  263. print("}\n");
  264. };
  265. sizeofScreen = 16;
  266. aggr Screen
  267. {
  268. 'X' 0 display;
  269. 'D' 4 id;
  270. 'X' 8 image;
  271. 'X' 12 fill;
  272. };
  273. defn
  274. Screen(addr) {
  275. complex Screen addr;
  276. print(" display ", addr.display\X, "\n");
  277. print(" id ", addr.id, "\n");
  278. print(" image ", addr.image\X, "\n");
  279. print(" fill ", addr.fill\X, "\n");
  280. };
  281. sizeofDisplay = 8156;
  282. aggr Display
  283. {
  284. QLock 0 qlock;
  285. 'D' 16 dirno;
  286. 'D' 20 fd;
  287. 'D' 24 reffd;
  288. 'D' 28 ctlfd;
  289. 'D' 32 imageid;
  290. 'D' 36 $local;
  291. 'D' 40 ldepth;
  292. 'X' 44 error;
  293. 'X' 48 devdir;
  294. 'X' 52 windir;
  295. 'a' 56 oldlabel;
  296. 'U' 120 dataqid;
  297. 'X' 124 ones;
  298. 'X' 128 zeros;
  299. 'X' 132 image;
  300. 'a' 136 buf;
  301. 'X' 8140 bufp;
  302. 'X' 8144 defaultfont;
  303. 'X' 8148 defaultsubfont;
  304. 'X' 8152 windows;
  305. };
  306. defn
  307. Display(addr) {
  308. complex Display addr;
  309. print("QLock qlock {\n");
  310. QLock(addr.qlock);
  311. print("}\n");
  312. print(" dirno ", addr.dirno, "\n");
  313. print(" fd ", addr.fd, "\n");
  314. print(" reffd ", addr.reffd, "\n");
  315. print(" ctlfd ", addr.ctlfd, "\n");
  316. print(" imageid ", addr.imageid, "\n");
  317. print(" $local ", addr.$local, "\n");
  318. print(" ldepth ", addr.ldepth, "\n");
  319. print(" error ", addr.error\X, "\n");
  320. print(" devdir ", addr.devdir\X, "\n");
  321. print(" windir ", addr.windir\X, "\n");
  322. print(" oldlabel ", addr.oldlabel, "\n");
  323. print(" dataqid ", addr.dataqid, "\n");
  324. print(" ones ", addr.ones\X, "\n");
  325. print(" zeros ", addr.zeros\X, "\n");
  326. print(" image ", addr.image\X, "\n");
  327. print(" buf ", addr.buf, "\n");
  328. print(" bufp ", addr.bufp\X, "\n");
  329. print(" defaultfont ", addr.defaultfont\X, "\n");
  330. print(" defaultsubfont ", addr.defaultsubfont\X, "\n");
  331. print(" windows ", addr.windows\X, "\n");
  332. };
  333. sizeofImage = 56;
  334. aggr Image
  335. {
  336. 'A' Display 0 display;
  337. 'D' 4 id;
  338. Rectangle 8 r;
  339. Rectangle 24 clipr;
  340. 'D' 40 ldepth;
  341. 'D' 44 repl;
  342. 'A' Screen 48 screen;
  343. 'A' Image 52 next;
  344. };
  345. defn
  346. Image(addr) {
  347. complex Image addr;
  348. print(" display ", addr.display\X, "\n");
  349. print(" id ", addr.id, "\n");
  350. print("Rectangle r {\n");
  351. Rectangle(addr.r);
  352. print("}\n");
  353. print("Rectangle clipr {\n");
  354. Rectangle(addr.clipr);
  355. print("}\n");
  356. print(" ldepth ", addr.ldepth, "\n");
  357. print(" repl ", addr.repl, "\n");
  358. print(" screen ", addr.screen\X, "\n");
  359. print(" next ", addr.next\X, "\n");
  360. };
  361. sizeofRGB = 12;
  362. aggr RGB
  363. {
  364. 'U' 0 red;
  365. 'U' 4 green;
  366. 'U' 8 blue;
  367. };
  368. defn
  369. RGB(addr) {
  370. complex RGB addr;
  371. print(" red ", addr.red, "\n");
  372. print(" green ", addr.green, "\n");
  373. print(" blue ", addr.blue, "\n");
  374. };
  375. sizeofFontchar = 8;
  376. aggr Fontchar
  377. {
  378. 'D' 0 x;
  379. 'b' 4 top;
  380. 'b' 5 bottom;
  381. 'C' 6 left;
  382. 'b' 7 width;
  383. };
  384. defn
  385. Fontchar(addr) {
  386. complex Fontchar addr;
  387. print(" x ", addr.x, "\n");
  388. print(" top ", addr.top, "\n");
  389. print(" bottom ", addr.bottom, "\n");
  390. print(" left ", addr.left, "\n");
  391. print(" width ", addr.width, "\n");
  392. };
  393. sizeofSubfont = 16;
  394. aggr Subfont
  395. {
  396. 'X' 0 name;
  397. 'd' 4 n;
  398. 'b' 6 height;
  399. 'C' 7 ascent;
  400. 'A' Fontchar 8 info;
  401. 'A' Image 12 bits;
  402. };
  403. defn
  404. Subfont(addr) {
  405. complex Subfont addr;
  406. print(" name ", addr.name\X, "\n");
  407. print(" n ", addr.n, "\n");
  408. print(" height ", addr.height, "\n");
  409. print(" ascent ", addr.ascent, "\n");
  410. print(" info ", addr.info\X, "\n");
  411. print(" bits ", addr.bits\X, "\n");
  412. };
  413. LOG2NFCACHE = 6;
  414. NFCACHE = 64;
  415. NFLOOK = 5;
  416. NFSUBF = 2;
  417. MAXFCACHE = 1029;
  418. MAXSUBF = 50;
  419. DSUBF = 4;
  420. SUBFAGE = 10000;
  421. CACHEAGE = 10000;
  422. sizeofCachefont = 16;
  423. aggr Cachefont
  424. {
  425. 'u' 0 min;
  426. 'u' 2 max;
  427. 'D' 4 offset;
  428. 'X' 8 name;
  429. 'X' 12 subfontname;
  430. };
  431. defn
  432. Cachefont(addr) {
  433. complex Cachefont addr;
  434. print(" min ", addr.min, "\n");
  435. print(" max ", addr.max, "\n");
  436. print(" offset ", addr.offset, "\n");
  437. print(" name ", addr.name\X, "\n");
  438. print(" subfontname ", addr.subfontname\X, "\n");
  439. };
  440. sizeofCacheinfo = 8;
  441. aggr Cacheinfo
  442. {
  443. 'u' 0 x;
  444. 'b' 2 width;
  445. 'C' 3 left;
  446. 'u' 4 value;
  447. 'u' 6 age;
  448. };
  449. defn
  450. Cacheinfo(addr) {
  451. complex Cacheinfo addr;
  452. print(" x ", addr.x, "\n");
  453. print(" width ", addr.width, "\n");
  454. print(" left ", addr.left, "\n");
  455. print(" value ", addr.value, "\n");
  456. print(" age ", addr.age, "\n");
  457. };
  458. sizeofCachesubf = 12;
  459. aggr Cachesubf
  460. {
  461. 'U' 0 age;
  462. 'A' Cachefont 4 cf;
  463. 'A' Subfont 8 f;
  464. };
  465. defn
  466. Cachesubf(addr) {
  467. complex Cachesubf addr;
  468. print(" age ", addr.age, "\n");
  469. print(" cf ", addr.cf\X, "\n");
  470. print(" f ", addr.f\X, "\n");
  471. };
  472. sizeofFont = 52;
  473. aggr Font
  474. {
  475. 'X' 0 name;
  476. 'A' Display 4 display;
  477. 'd' 8 height;
  478. 'd' 10 ascent;
  479. 'D' 12 maxldepth;
  480. 'd' 16 width;
  481. 'd' 18 ldepth;
  482. 'd' 20 nsub;
  483. 'U' 24 age;
  484. 'D' 28 ncache;
  485. 'D' 32 nsubf;
  486. 'A' Cacheinfo 36 cache;
  487. 'A' Cachesubf 40 subf;
  488. 'A' Cachefont 44 sub;
  489. 'A' Image 48 cacheimage;
  490. };
  491. defn
  492. Font(addr) {
  493. complex Font addr;
  494. print(" name ", addr.name\X, "\n");
  495. print(" display ", addr.display\X, "\n");
  496. print(" height ", addr.height, "\n");
  497. print(" ascent ", addr.ascent, "\n");
  498. print(" maxldepth ", addr.maxldepth, "\n");
  499. print(" width ", addr.width, "\n");
  500. print(" ldepth ", addr.ldepth, "\n");
  501. print(" nsub ", addr.nsub, "\n");
  502. print(" age ", addr.age, "\n");
  503. print(" ncache ", addr.ncache, "\n");
  504. print(" nsubf ", addr.nsubf, "\n");
  505. print(" cache ", addr.cache\X, "\n");
  506. print(" subf ", addr.subf\X, "\n");
  507. print(" sub ", addr.sub\X, "\n");
  508. print(" cacheimage ", addr.cacheimage\X, "\n");
  509. };
  510. complex Point ZP;
  511. complex Rectangle ZR;
  512. complex Display display;
  513. complex Font font;
  514. complex Image screen;
  515. sizeofAlt = 20;
  516. aggr Alt
  517. {
  518. 'X' 0 c;
  519. 'X' 4 v;
  520. 'D' 8 op;
  521. 'X' 12 tag;
  522. 'U' 16 q;
  523. };
  524. defn
  525. Alt(addr) {
  526. complex Alt addr;
  527. print(" c ", addr.c\X, "\n");
  528. print(" v ", addr.v\X, "\n");
  529. print(" op ", addr.op, "\n");
  530. print(" tag ", addr.tag\X, "\n");
  531. print(" q ", addr.q, "\n");
  532. };
  533. sizeofRef = 4;
  534. aggr Ref
  535. {
  536. 'D' 0 ref;
  537. };
  538. defn
  539. Ref(addr) {
  540. complex Ref addr;
  541. print(" ref ", addr.ref, "\n");
  542. };
  543. sizeofCursor = 72;
  544. aggr Cursor
  545. {
  546. Point 0 offset;
  547. 'a' 8 clr;
  548. 'a' 40 set;
  549. };
  550. defn
  551. Cursor(addr) {
  552. complex Cursor addr;
  553. print("Point offset {\n");
  554. Point(addr.offset);
  555. print("}\n");
  556. print(" clr ", addr.clr, "\n");
  557. print(" set ", addr.set, "\n");
  558. };
  559. sizeofMouse = 16;
  560. aggr Mouse
  561. {
  562. 'D' 0 buttons;
  563. Point 4 xy;
  564. 'U' 12 msec;
  565. };
  566. defn
  567. Mouse(addr) {
  568. complex Mouse addr;
  569. print(" buttons ", addr.buttons, "\n");
  570. print("Point xy {\n");
  571. Point(addr.xy);
  572. print("}\n");
  573. print(" msec ", addr.msec, "\n");
  574. };
  575. sizeofMousectl = 44;
  576. aggr Mousectl
  577. {
  578. {
  579. 'D' 0 buttons;
  580. Point 4 xy;
  581. 'U' 12 msec;
  582. };
  583. 'X' 16 c;
  584. 'X' 20 reshapec;
  585. 'X' 24 file;
  586. 'D' 28 mfd;
  587. 'D' 32 cfd;
  588. 'D' 36 pid;
  589. 'A' Image 40 image;
  590. };
  591. defn
  592. Mousectl(addr) {
  593. complex Mousectl addr;
  594. print("Mouse {\n");
  595. Mouse(addr+0);
  596. print("}\n");
  597. print(" c ", addr.c\X, "\n");
  598. print(" reshapec ", addr.reshapec\X, "\n");
  599. print(" file ", addr.file\X, "\n");
  600. print(" mfd ", addr.mfd, "\n");
  601. print(" cfd ", addr.cfd, "\n");
  602. print(" pid ", addr.pid, "\n");
  603. print(" image ", addr.image\X, "\n");
  604. };
  605. sizeofMenu = 12;
  606. aggr Menu
  607. {
  608. 'X' 0 item;
  609. 'X' 4 gen;
  610. 'D' 8 lasthit;
  611. };
  612. defn
  613. Menu(addr) {
  614. complex Menu addr;
  615. print(" item ", addr.item\X, "\n");
  616. print(" gen ", addr.gen\X, "\n");
  617. print(" lasthit ", addr.lasthit, "\n");
  618. };
  619. sizeofKeyboardctl = 20;
  620. aggr Keyboardctl
  621. {
  622. 'X' 0 c;
  623. 'X' 4 file;
  624. 'D' 8 consfd;
  625. 'D' 12 ctlfd;
  626. 'D' 16 pid;
  627. };
  628. defn
  629. Keyboardctl(addr) {
  630. complex Keyboardctl addr;
  631. print(" c ", addr.c\X, "\n");
  632. print(" file ", addr.file\X, "\n");
  633. print(" consfd ", addr.consfd, "\n");
  634. print(" ctlfd ", addr.ctlfd, "\n");
  635. print(" pid ", addr.pid, "\n");
  636. };
  637. BACK = 0;
  638. HIGH = 1;
  639. BORD = 2;
  640. TEXT = 3;
  641. HTEXT = 4;
  642. NCOL = 5;
  643. sizeof_3_ = 4;
  644. aggr _3_
  645. {
  646. 'd' 0 bc;
  647. 'd' 2 minwid;
  648. };
  649. defn
  650. _3_(addr) {
  651. complex _3_ addr;
  652. print(" bc ", addr.bc, "\n");
  653. print(" minwid ", addr.minwid, "\n");
  654. };
  655. sizeof_4_ = 4;
  656. aggr _4_
  657. {
  658. 'X' 0 ptr;
  659. {
  660. 'd' 0 bc;
  661. 'd' 2 minwid;
  662. };
  663. };
  664. defn
  665. _4_(addr) {
  666. complex _4_ addr;
  667. print(" ptr ", addr.ptr\X, "\n");
  668. print("_3_ {\n");
  669. _3_(addr+0);
  670. print("}\n");
  671. };
  672. sizeofFrbox = 12;
  673. aggr Frbox
  674. {
  675. 'D' 0 wid;
  676. 'D' 4 nrune;
  677. {
  678. 'X' 8 ptr;
  679. {
  680. 'd' 8 bc;
  681. 'd' 10 minwid;
  682. };
  683. };
  684. };
  685. defn
  686. Frbox(addr) {
  687. complex Frbox addr;
  688. print(" wid ", addr.wid, "\n");
  689. print(" nrune ", addr.nrune, "\n");
  690. print("_4_ {\n");
  691. _4_(addr+8);
  692. print("}\n");
  693. };
  694. complex Font font;
  695. complex Display display;
  696. sizeofFrame = 108;
  697. aggr Frame
  698. {
  699. 'A' Font 0 font;
  700. 'A' Display 4 display;
  701. 'A' Image 8 b;
  702. 'a' 12 cols;
  703. Rectangle 32 r;
  704. Rectangle 48 entire;
  705. 'X' 64 scroll;
  706. 'A' Frbox 68 box;
  707. 'U' 72 p0;
  708. 'U' 76 p1;
  709. 'u' 80 nbox;
  710. 'u' 82 nalloc;
  711. 'u' 84 maxtab;
  712. 'u' 86 nchars;
  713. 'u' 88 nlines;
  714. 'u' 90 maxlines;
  715. 'u' 92 lastlinefull;
  716. 'u' 94 modified;
  717. 'A' Image 96 tick;
  718. 'A' Image 100 tickback;
  719. 'D' 104 ticked;
  720. };
  721. defn
  722. Frame(addr) {
  723. complex Frame addr;
  724. print(" font ", addr.font\X, "\n");
  725. print(" display ", addr.display\X, "\n");
  726. print(" b ", addr.b\X, "\n");
  727. print(" cols ", addr.cols, "\n");
  728. print("Rectangle r {\n");
  729. Rectangle(addr.r);
  730. print("}\n");
  731. print("Rectangle entire {\n");
  732. Rectangle(addr.entire);
  733. print("}\n");
  734. print(" scroll ", addr.scroll\X, "\n");
  735. print(" box ", addr.box\X, "\n");
  736. print(" p0 ", addr.p0, "\n");
  737. print(" p1 ", addr.p1, "\n");
  738. print(" nbox ", addr.nbox, "\n");
  739. print(" nalloc ", addr.nalloc, "\n");
  740. print(" maxtab ", addr.maxtab, "\n");
  741. print(" nchars ", addr.nchars, "\n");
  742. print(" nlines ", addr.nlines, "\n");
  743. print(" maxlines ", addr.maxlines, "\n");
  744. print(" lastlinefull ", addr.lastlinefull, "\n");
  745. print(" modified ", addr.modified, "\n");
  746. print(" tick ", addr.tick\X, "\n");
  747. print(" tickback ", addr.tickback\X, "\n");
  748. print(" ticked ", addr.ticked, "\n");
  749. };
  750. None = 0;
  751. Some = 1;
  752. All = 2;
  753. Clicktime = 1000;
  754. sizeofFlayer = 172;
  755. aggr Flayer
  756. {
  757. Frame 0 f;
  758. 'D' 108 origin;
  759. 'D' 112 p0;
  760. 'D' 116 p1;
  761. 'D' 120 click;
  762. 'X' 124 textfn;
  763. 'D' 128 user0;
  764. 'X' 132 user1;
  765. Rectangle 136 entire;
  766. Rectangle 152 scroll;
  767. 'D' 168 visible;
  768. };
  769. defn
  770. Flayer(addr) {
  771. complex Flayer addr;
  772. print("Frame f {\n");
  773. Frame(addr.f);
  774. print("}\n");
  775. print(" origin ", addr.origin, "\n");
  776. print(" p0 ", addr.p0, "\n");
  777. print(" p1 ", addr.p1, "\n");
  778. print(" click ", addr.click, "\n");
  779. print(" textfn ", addr.textfn\X, "\n");
  780. print(" user0 ", addr.user0, "\n");
  781. print(" user1 ", addr.user1\X, "\n");
  782. print("Rectangle entire {\n");
  783. Rectangle(addr.entire);
  784. print("}\n");
  785. print("Rectangle scroll {\n");
  786. Rectangle(addr.scroll);
  787. print("}\n");
  788. print(" visible ", addr.visible, "\n");
  789. };
  790. Up = 0;
  791. Down = 1;
  792. sizeofSection = 12;
  793. aggr Section
  794. {
  795. 'D' 0 nrunes;
  796. 'X' 4 text;
  797. 'A' Section 8 next;
  798. };
  799. defn
  800. Section(addr) {
  801. complex Section addr;
  802. print(" nrunes ", addr.nrunes, "\n");
  803. print(" text ", addr.text\X, "\n");
  804. print(" next ", addr.next\X, "\n");
  805. };
  806. sizeofRasp = 8;
  807. aggr Rasp
  808. {
  809. 'D' 0 nrunes;
  810. 'A' Section 4 sect;
  811. };
  812. defn
  813. Rasp(addr) {
  814. complex Rasp addr;
  815. print(" nrunes ", addr.nrunes, "\n");
  816. print(" sect ", addr.sect\X, "\n");
  817. };
  818. sizeofText = 876;
  819. aggr Text
  820. {
  821. Rasp 0 rasp;
  822. 'd' 8 nwin;
  823. 'd' 10 front;
  824. 'u' 12 tag;
  825. 'C' 14 lock;
  826. 'a' 16 l;
  827. };
  828. defn
  829. Text(addr) {
  830. complex Text addr;
  831. print("Rasp rasp {\n");
  832. Rasp(addr.rasp);
  833. print("}\n");
  834. print(" nwin ", addr.nwin, "\n");
  835. print(" front ", addr.front, "\n");
  836. print(" tag ", addr.tag, "\n");
  837. print(" lock ", addr.lock, "\n");
  838. print(" l ", addr.l, "\n");
  839. };
  840. sizeofReadbuf = 8196;
  841. aggr Readbuf
  842. {
  843. 'd' 0 n;
  844. 'a' 2 data;
  845. };
  846. defn
  847. Readbuf(addr) {
  848. complex Readbuf addr;
  849. print(" n ", addr.n, "\n");
  850. print(" data ", addr.data, "\n");
  851. };
  852. RHost = 0;
  853. RKeyboard = 1;
  854. RMouse = 2;
  855. RPlumb = 3;
  856. RReshape = 4;
  857. NRes = 5;
  858. complex Cursor bullseye;
  859. complex Cursor deadmouse;
  860. complex Cursor lockarrow;
  861. complex Cursor cursor;
  862. complex Flayer which;
  863. complex Flayer work;
  864. complex Text cmd;
  865. complex Mousectl mousectl;
  866. complex Keyboardctl keyboardctl;
  867. complex Mouse mousep;
  868. Tversion = 0;
  869. Tstartcmdfile = 1;
  870. Tcheck = 2;
  871. Trequest = 3;
  872. Torigin = 4;
  873. Tstartfile = 5;
  874. Tworkfile = 6;
  875. Ttype = 7;
  876. Tcut = 8;
  877. Tpaste = 9;
  878. Tsnarf = 10;
  879. Tstartnewfile = 11;
  880. Twrite = 12;
  881. Tclose = 13;
  882. Tlook = 14;
  883. Tsearch = 15;
  884. Tsend = 16;
  885. Tdclick = 17;
  886. Tstartsnarf = 18;
  887. Tsetsnarf = 19;
  888. Tack = 20;
  889. Texit = 21;
  890. Tplumb = 22;
  891. TMAX = 23;
  892. Hversion = 0;
  893. Hbindname = 1;
  894. Hcurrent = 2;
  895. Hnewname = 3;
  896. Hmovname = 4;
  897. Hgrow = 5;
  898. Hcheck0 = 6;
  899. Hcheck = 7;
  900. Hunlock = 8;
  901. Hdata = 9;
  902. Horigin = 10;
  903. Hunlockfile = 11;
  904. Hsetdot = 12;
  905. Hgrowdata = 13;
  906. Hmoveto = 14;
  907. Hclean = 15;
  908. Hdirty = 16;
  909. Hcut = 17;
  910. Hsetpat = 18;
  911. Hdelname = 19;
  912. Hclose = 20;
  913. Hsetsnarf = 21;
  914. Hsnarflen = 22;
  915. Hack = 23;
  916. Hexit = 24;
  917. Hplumb = 25;
  918. HMAX = 26;
  919. sizeofHeader = 4;
  920. aggr Header
  921. {
  922. 'b' 0 type;
  923. 'b' 1 count0;
  924. 'b' 2 count1;
  925. 'a' 3 data;
  926. };
  927. defn
  928. Header(addr) {
  929. complex Header addr;
  930. print(" type ", addr.type, "\n");
  931. print(" count0 ", addr.count0, "\n");
  932. print(" count1 ", addr.count1, "\n");
  933. print(" data ", addr.data, "\n");
  934. };
  935. complex Text cmd;
  936. complex Cursor cursor;
  937. complex Flayer which;
  938. complex Flayer work;
  939. complex Text threadmain:t;
  940. complex Rectangle threadmain:r;
  941. complex Flayer threadmain:nwhich;
  942. complex Flayer current:nw;
  943. complex Text current:t;
  944. complex Flayer closeup:l;
  945. complex Text closeup:t;
  946. complex Text findl:t;
  947. complex Flayer duplicate:l;
  948. complex Rectangle duplicate:r;
  949. complex Font duplicate:f;
  950. complex Text duplicate:t;
  951. complex Flayer duplicate:nl;
  952. complex Rectangle getr:rp;
  953. complex Point getr:p;
  954. complex Rectangle getr:r;
  955. complex Text snarf:t;
  956. complex Flayer snarf:l;
  957. complex Text cut:t;
  958. complex Flayer cut:l;
  959. complex Text paste:t;
  960. complex Flayer scrorigin:l;
  961. complex Text scrorigin:t;
  962. complex Rasp raspc:r;
  963. complex Rasp ctlw:r;
  964. complex Rasp ctlu:r;
  965. complex Flayer center:l;
  966. complex Text center:t;
  967. complex Flayer onethird:l;
  968. complex Text onethird:t;
  969. complex Rectangle onethird:s;
  970. complex Text flushtyping:t;
  971. complex Flayer type:l;
  972. complex Text type:t;
  973. complex Flayer gettext:l;
  974. complex Text gettext:t;
  975. complex Flayer scrtotal:l;